Components

After launching your customized CreatorKit instance, you can start integrating its features into your existing websites, or if you're also in need of a fast, beautiful website we highly recommend the Razor SSG template which is already configured to include CreatorKit's components.

The components are included using a declarative progressive markup so that it doesn't affect the behavior of the website if the CreatorKit is down or unresponsive.

Enabling CreatorKit Components

To utilize CreatorKit's Components in your website you'll need to initialize the components you want to use by embedding this script at the bottom of your page, e.g. in Footer.cshtml:

<script type="module">
@{ var components = HostContext.DebugMode 
     ? "https://localhost:5003/mjs/components" 
     : "https://creatorkit.netcore.io/mjs/components"; }

import { mail } from '@components/mail.mjs'
import { post } from '@components/post.mjs'

mail('[data-mail]')
post('[data-post]')
</script>

Where mail() will scan the document for declarative data-mail for any Mailing List components to create, likewise post() does the same for any Thread/Post components.

The @components URL lets you load Components from your localhost:5001 instance during development and your public CreatorKit instance in production which you'll need to replace creatorkit.netcore.io to use.

Post Voting and Comments

You can enable voting for individual posts or pages with and Thread comments by including the PostComments component with:

<div data-post="PostComments""></div>

Which when loaded will render a thread like icon where users can up vote posts or pages and either Sign In/Sign Up buttons for unauthenticated users or a comment box for Signed in Users:

PostComments Properties

The available PostComments properties for customizing its behavior include:

defineProps<{
    hide?: "threadLikes"|"threadLikes"[]
    commentLink?: { href: string, label: string }
}>()

Component Properties

Any component properties can be either declared inline using data-props, e.g:

<div data-post="PostComments" data-props="{
    hide: 'threadLikes', 
    commentLink: { 
        href: '/community-rules',
        label: 'read the community rules'
    } 
}"></div>

Where it will hide the Thread Like icon and include a link to your /community-rules page inside each comment box.

Alternatively properties can instead be populated in the mail() and post() initialize functions:

<script type="module">
@{ var components = HostContext.DebugMode
     ? "https://localhost:5001/mjs/components"
     : "https://creatorkit.netcore.io/mjs/components"; }

mail('[data-mail]', { 
    mailingLists:['MonthlyNewsletter'] 
})

post('[data-post]', {
    commentLink: { 
        href: '/community-rules',
        label: 'read the community rules'
    } 
})
</script>

Mailing List Components

JoinMailingList

The JoinMailingList component can be added anywhere you want to accept Mailing List subscriptions on your website, e.g:

<div data-mail="JoinMailingList" data-props="{ submitLabel:'Join our newsletter' }"></div>

Which you can style as needed as this template wraps in a Newsletter.cshtml Tailwind component that's displayed on the Home Page.

JoinMailingList Properties

Which allows for the following customizations:

defineProps<{
    //= MonthlyNewsletter
    mailingLists?: "TestGroup"     | "MonthlyNewsletter" | "BlogPostReleases" |
                   "VideoReleases" | "ProductReleases"   | "YearlyUpdates" 
    placeholder?: string    //= Enter your email
    submitLabel?: string    //= Subscribe
    thanksHeading?: string  //= Thanks for signing up!
    thanksMessage?: string  //= To complete sign up, look for the verification...
    thanksIcon?: { svg?:string, uri?:string, alt?:string, cls?:string }
}>

MailPreferences

The MailPreferences component manages a users Mailing List subscriptions which you can be linked in your Email footers for users wishing to manage or unsubscribe from mailing list emails.

It can be include in any HTML or Markdown page as Razor SSG does in its mail-preferences.md:

<div data-mail="MailPreferences"></div>

Where if it's unable to locate the user will ask the user for their email:

Alternatively the page can jump directly to a contacts Mailing Lists by including a ?ref query string parameter of the Contact's External Ref, e.g: /mail-preferences?ref={‎{ExternalRef}‎}

You can also add &unsubscribe=1 to optimize the page for users wishing to Unsubscribe where it will also display an Unsubscribe button to subscribe to all mailing lists.

MailPreferences Properties

Most of the copy used in the MailPreferences component can be overridden with:

defineProps<{
    emailPrompt?: string            //= Enter your email to manage your email...
    submitEmailLabel?: string       //= Submit
    updatedHeading?: string         //= Updated!
    updatedMessage?: string         //= Your email preferences have been saved.
    unsubscribePrompt?: string      //= Unsubscribe from all future email...
    unsubscribeHeading?: string     //= Updated!
    unsubscribeMessage?: string     //= You've been unsubscribed from all email...
    submitLabel?: string            //= Save Changes
    submitUnsubscribeLabel?: string //= Unsubscribe
}>()

Tailwind Styles

CreatorKit's components are styled with tailwind classes which will also need to be included in your website. For Tailwind projects we recommend copying a concatenation of all Components from /CreatorKit/wwwroot/tailwind/all.components.txt and include it in your project where the tailwind CLI can find it so any classes used are included in your App's Tailwind .css bundle.

In Razor SSG projects this is already being copied in its postinstall.js

If you're not using Tailwind, websites will need to reference your CreatorKit's instance Tailwind .css bundle instead, e.g:

<link rel="stylesheet" href="https://creatorkit.netcore.io/css/app.css">