Showcase

Every component in the library, one after another, with nothing else on the page. Flip the theme in the top right to check both palettes.

App shell & layout

PRD 5.1

App shell .nk-app

📊 Project overview

Product roadmap

A short lead paragraph sets up the page in a calmer, larger type size before the body copy begins.

html<div class="nk-sidebar-backdrop open"></div>   <!-- phones: the drawer's scrim -->
<aside class="nk-sidebar open">…</aside>         <!-- slides in over the page -->
<button class="nk-topbar-btn nk-sidebar-toggle" aria-label="Menu">☰</button>
jscollapseBtn.addEventListener('click', () => {            // the « in .nk-sidebar-head
  sidebar.classList.add('collapsed');                      // slides out on the desktop
  sidebarToggle.classList.add('collapsed');                // the ☰ in the topbar brings it back
});

Workspace switcher .nk-workspace

A
Acme Inc⌄

Topbar .nk-topbar

📊 Project overview/🚀 Roadmap
Last edited 2 min ago

Tab bar (mobile) .nk-tab-bar

html<nav class="nk-tab-bar fixed">…</nav><div class="nk-tab-bar-spacer"></div>

Breadcrumb .nk-breadcrumb

📊 Project overview/ 📚 Knowledge base/ 🚀 Roadmap

Section label .nk-section-label

📊Project overview

Page shell & document

PRD 5.3

Page column & page options .nk-page

🚀

Product roadmap

👤 Ada Lovelace📅 Created 12 May 2026

A short lead paragraph sets up the page in a calmer, larger type size before the body copy begins.

Page properties .nk-props

◉Status
In progress
👤Owner
ALAda Lovelace
📅Due
2 June 2026
✉️Address
support+design@notionkit.example.com · Verified
🏷️Tags
Design systemCSS
▰Progress
65 %

Cover .nk-cover

Headings & lead .nk-heading

✅ How this works

A short lead paragraph sets up the page in a calmer, larger type size before the body copy begins.

Content elements

PRD 5.4

Callout .nk-callout

💡
Core idea: a callout carries one thought that should not be missed. Keep it to a sentence or two.

To-do .nk-todo

Toggle .nk-toggle

What is not included?
The text editor itself. NotionKit ships the optical shell; you mount TipTap, BlockNote or Novel inside it.

Quote & divider .nk-quote

Design is not just what it looks like. Design is how it works.— Steve Jobs

Inline mentions .nk-mention

SLSara Lindt 📄 Knowledge base 📅 20 May

Code .nk-code

html<div class="nk-callout"> <span class="c-icon">💡</span> </div>

Inline: --nk-accent

Prose .nk-prose

Release notes

Rendered Markdown takes the document look from one class: headings, lists, links, code, quotes and tables.

  • Paragraphs and lists keep Notion’s spacing
  • Sizes follow the page – 16px, or 14px with small
The editor adapter reads the same rules.
ClassFor
fullFull width
smallSmall text

Class only, on purpose: ::slotted() reaches the slotted node and never a paragraph inside it, so a <nk-prose> element could not style its content. Put the class on a light-DOM container, also inside NotionKit Elements.

Database views

PRD 5.5

View tabs .nk-db-tabs

▦ Table4
▤ Board
🖼 Gallery

Toolbar & filter pills .nk-db-toolbar

▦ Table
▤ Board
☰ List

Table view .nk-table

📄Name◉Status 👤Owner📅Due 📊Progress#Effort (h)
🚀 RoadmapThree open questionsDone SLSara 12.05.2026 100 %6.0
🎨 Design systemIn progress TWTom 20.05.2026 65 %12.5
📣 LaunchPlanned MKMia 02.06.2026 10 %3.25
+ New page

Tags .nk-tag

Not started Archive Planned Review Done In progress Design system Idea Blocked

Progress bar .nk-progress

65 %

20 %
80 %

Progress

40 %

Board view .nk-board

Planned1
🖥 Board view
TW28.05.
In progress1
🎨 Design system
Done1
🚀 Roadmap
12.05.

Calendar view .nk-calendar-view

May 2026
W
Mon
Tue
Wed
Thu
Fri
Sat
Sun
18
27
28
29
30
1
2
3
19
4
5
6
7
8
9
10
20
11
12
13
14
15
16
17
21
18
19
20
21
22
23
24
22
25
26
27
28
29
30
31

Forms & settings

PRD 5.6

Inputs, textarea, select .nk-input

Copy field .nk-copy-field

https://monahilft.notionkit.app
ntn_••••••••••••••••••••
ntn_••••••••••••••••••••
jsbtn.addEventListener('click', async () => {
  await navigator.clipboard.writeText(field.querySelector('.cf-value').textContent);
  btn.classList.add('copied');   // green for a moment
  setTimeout(() => btn.classList.remove('copied'), 1500);
});

Date picker .nk-calendar

June 2026
WMoTuWeThFrSaSu 23 24 25 26 27 28
June 2026
WMoTuWeThFrSaSu 23 24 25 26 27 28

Buttons .nk-btn

Switch .nk-switch

Compact view
Reduces spacing in the sidebar and lists.
Reduce motion

Checkbox & radio .nk-check

Slider .nk-slider

Text size: 100 %

Field row .nk-field

Display name
How you appear in the workspace.
Email
About me

Field grid .nk-fields

Name
Email
Status

Profile row & picture .nk-profile-row

AL

Model card .nk-model-card

Mona StandardRecommended
A balanced model for everyday work. Fast, calm, dependable.
Mona Deep
A balanced model for everyday work. Fast, calm, dependable.

Danger zone .nk-danger-zone

⚠️ Danger zone
Delete
Irreversibly removes all pages, databases and members.

Member rows .nk-member-row

AL
Ada Lovelace
ada@acme.com
TW
Tom Weber
tom@acme.com

Overlays & menus

PRD 5.8

Popover base .nk-pop

Actions
✏️Rename

Emoji picker .nk-emoji-grid

🚀📊💡✅🎨📚🗂️🔍📥⚙️🧩🌙☀️📅👤💬
🕐😀🐶🍎⚽🚗💡

Context menu .nk-menu

Pages
✏️Rename⌘⇧R
📄Duplicate⌘D
🔗Copy link⌘L
🔡Small text
🗑Move to trash
html<div class="nk-pop nk-menu floating sheet open" style="position:fixed; top:48px; right:12px">…</div>

Command palette .nk-cmdk

🔍
Pages
📊Project overview
📚Knowledge base
Actions
+New page⌘N
⚙️Open settings⌘,

Palette: no results .nk-cmdk-empty

🔍
No results for “xyzzy”

Sheet .nk-sheet

Side peek .nk-peek

jsrow.addEventListener('click', () => peek.classList.add('open'));        // a row opens beside the table
closeBtn.addEventListener('click', () => peek.classList.remove('open'));
document.addEventListener('keydown', e => { if (e.key === 'Escape') peek.classList.remove('open'); });
handle.addEventListener('pointermove', e =>                  // .pk-resize, with pointer capture
  document.documentElement.style.setProperty('--nk-peek-width', innerWidth - e.clientX + 'px'));
app.classList.toggle('peek-inset', open);                     // the page moves aside

Dialog .nk-dialog

Move “Product roadmap” to trash?
The page and its sub-pages can be restored from Trash for 30 days.
html<div class="nk-dialog-backdrop open">
  <div class="nk-dialog wide" role="dialog" aria-modal="true" aria-labelledby="t">
    <div class="dl-title" id="t">New view</div>
    <div class="dl-body">
      <div class="nk-field stacked"><div><div class="f-label">Name</div></div><div class="f-control"><input class="nk-input"></div></div>
    </div>
    <div class="dl-actions"><button class="nk-btn secondary">Cancel</button><button class="nk-btn primary">Create</button></div>
  </div>
</div>

Toast .nk-toast

✓ Settings saved
🗑️ Moved to trash

Tooltip .nk-tooltip

Collaboration & AI

PRD 5.10

Comment thread .nk-comments

SL
Sara Lindt · 1 hr ago
The board view already feels very close to the original. 👍

AI thread .nk-ai-thread

AL
You
Summarise the open tasks for this project.
What is still open on this page?
🤖
Mona · AI
Two tasks are open: the table view sits at 65 %, the board with drag and drop is planned.

Editor adapter

PRD 5.11

Block host .nk-block-host

Core idea: a callout carries one thought that should not be missed. Keep it to a sentence or two.
⠿
Type “/” for commands …

This preview is the static shell only — the + / ⠿ rail here does nothing. The working version, with slash menu, drag & drop and block menu, is the live editor in the docs.

Slash menu & bubble toolbar .nk-slash-menu

Basic blocks
H1
Heading 1
Big section heading
☑
To-do list
Track tasks with a checkbox
</>
Code block
Capture a snippet

Static markup for the look. The live, keyboard-driven version runs in the docs editor — type / there.