@jungherz-de/notionkit-elements 1.0.0 β†’ 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (84) hide show
  1. package/README.md +73 -20
  2. package/dist/components/nk-ai-input-row.js +1 -1
  3. package/dist/components/nk-ai-msg.js +1 -1
  4. package/dist/components/nk-ai-thread.js +1 -1
  5. package/dist/components/nk-app.js +1 -1
  6. package/dist/components/nk-avatar-group.js +1 -1
  7. package/dist/components/nk-banner.js +1 -1
  8. package/dist/components/nk-block-host.js +1 -1
  9. package/dist/components/nk-board-view.js +1 -1
  10. package/dist/components/nk-breadcrumb.js +1 -1
  11. package/dist/components/nk-btn.js +1 -1
  12. package/dist/components/nk-callout.js +1 -1
  13. package/dist/components/nk-check.js +1 -1
  14. package/dist/components/nk-cmdk.js +1 -1
  15. package/dist/components/nk-code.js +1 -1
  16. package/dist/components/nk-comment.js +1 -1
  17. package/dist/components/nk-comments.js +1 -1
  18. package/dist/components/nk-danger-zone.js +1 -1
  19. package/dist/components/nk-database.js +1 -1
  20. package/dist/components/nk-divider.js +1 -1
  21. package/dist/components/nk-emoji-picker.js +1 -1
  22. package/dist/components/nk-empty.js +1 -1
  23. package/dist/components/nk-field.js +1 -1
  24. package/dist/components/nk-filter-bar.js +1 -1
  25. package/dist/components/nk-heading.js +1 -1
  26. package/dist/components/nk-input.js +2 -2
  27. package/dist/components/nk-kbd.js +1 -1
  28. package/dist/components/nk-member-list.js +1 -1
  29. package/dist/components/nk-member-row.js +1 -1
  30. package/dist/components/nk-mention.js +1 -1
  31. package/dist/components/nk-menu-item.js +1 -1
  32. package/dist/components/nk-menu.js +1 -1
  33. package/dist/components/nk-modal.js +1 -1
  34. package/dist/components/nk-model-card.js +1 -1
  35. package/dist/components/nk-page-actions.js +1 -1
  36. package/dist/components/nk-page-cover.js +1 -1
  37. package/dist/components/nk-page-title.js +1 -1
  38. package/dist/components/nk-page.js +1 -1
  39. package/dist/components/nk-pop.js +1 -1
  40. package/dist/components/nk-profile-row.js +1 -1
  41. package/dist/components/nk-progress.js +1 -1
  42. package/dist/components/nk-quote.js +1 -1
  43. package/dist/components/nk-radio.js +1 -1
  44. package/dist/components/nk-section-label.js +1 -1
  45. package/dist/components/nk-segmented.js +1 -1
  46. package/dist/components/nk-select.js +2 -2
  47. package/dist/components/nk-settings-pane.js +1 -1
  48. package/dist/components/nk-settings-user.js +1 -1
  49. package/dist/components/nk-sidebar.js +1 -1
  50. package/dist/components/nk-skeleton.js +1 -1
  51. package/dist/components/nk-slider.js +1 -1
  52. package/dist/components/nk-stat.js +1 -1
  53. package/dist/components/nk-stats.js +1 -1
  54. package/dist/components/nk-switch.js +1 -1
  55. package/dist/components/nk-synced.js +1 -1
  56. package/dist/components/nk-tab-bar-item.js +83 -0
  57. package/dist/components/nk-tab-bar.js +83 -0
  58. package/dist/components/nk-tab.js +1 -1
  59. package/dist/components/nk-table-view.js +1 -1
  60. package/dist/components/nk-tabs.js +1 -1
  61. package/dist/components/nk-tag.js +1 -1
  62. package/dist/components/nk-template-btn.js +1 -1
  63. package/dist/components/nk-textarea.js +2 -2
  64. package/dist/components/nk-theme-toggle.js +1 -1
  65. package/dist/components/nk-toast.js +1 -1
  66. package/dist/components/nk-todo.js +1 -1
  67. package/dist/components/nk-toggle.js +1 -1
  68. package/dist/components/nk-topbar.js +1 -1
  69. package/dist/components/nk-tree-item.js +1 -1
  70. package/dist/components/nk-tree.js +1 -1
  71. package/dist/components/nk-workspace-switcher.js +1 -1
  72. package/dist/components/shared/base-BavgHsS-.js +347 -0
  73. package/dist/notionkit-elements.esm.js +197 -7
  74. package/dist/notionkit-elements.js +198 -6
  75. package/dist/notionkit-elements.min.js +1 -1
  76. package/package.json +3 -3
  77. package/src/base.js +31 -1
  78. package/src/components/forms/nk-input.js +1 -1
  79. package/src/components/forms/nk-select.js +1 -1
  80. package/src/components/forms/nk-textarea.js +1 -1
  81. package/src/components/shell/nk-tab-bar-item.js +82 -0
  82. package/src/components/shell/nk-tab-bar.js +82 -0
  83. package/src/index.js +2 -0
  84. package/dist/components/shared/base-6gEcoatG.js +0 -317
package/README.md CHANGED
@@ -1,18 +1,69 @@
1
+ <h1 align="center">🧩 NotionKit Elements</h1>
2
+
1
3
  <p align="center">
2
- <img src="https://img.shields.io/badge/version-1.0.0-2383e2?style=flat-square" alt="Version">
3
- <a href="https://www.npmjs.com/package/@jungherz-de/notionkit-elements"><img src="https://img.shields.io/npm/v/@jungherz-de/notionkit-elements?style=flat-square&color=529cca" alt="npm"></a>
4
- <a href="CHANGELOG.md"><img src="https://img.shields.io/badge/changelog-v1.0.0-9065b0?style=flat-square" alt="Changelog"></a>
5
- <img src="https://img.shields.io/badge/license-MIT-448361?style=flat-square" alt="MIT">
4
+ <a href="https://www.npmjs.com/package/@jungherz-de/notionkit-elements"><img src="https://img.shields.io/badge/version-1.1.0-2383e2?style=flat-square" alt="Version"></a>
5
+ <a href="#"><img src="https://img.shields.io/badge/vanilla_JS-no_dependencies-448361?style=flat-square" alt="Vanilla JS"></a>
6
+ <a href="#"><img src="https://img.shields.io/badge/elements-70-529cca?style=flat-square" alt="70 Elements"></a>
7
+ <a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-9065b0?style=flat-square" alt="MIT License"></a>
8
+ <a href="CHANGELOG.md"><img src="https://img.shields.io/badge/changelog-v1.1.0-lightgrey?style=flat-square" alt="Changelog"></a>
9
+ <a href="https://www.npmjs.com/package/@jungherz-de/notionkit-elements"><img src="https://img.shields.io/badge/npm-%40jungherz--de%2Fnotionkit--elements-cb3837?style=flat-square&logo=npm" alt="npm"></a>
6
10
  </p>
7
11
 
8
- # NotionKit Elements
12
+ <p align="center">
13
+ <strong>Drop-in Web Components for <a href="https://github.com/JUNGHERZ/NotionKit">NotionKit CSS</a></strong><br>
14
+ 70 vanilla JavaScript custom elements wrapping NotionKit's calm, document-centric workspace look.<br>
15
+ Shadow DOM &middot; Native form participation &middot; Pixel parity with the class markup &middot; Zero dependencies.
16
+ </p>
17
+
18
+ <p align="center">
19
+ <a href="https://notionkit-elements.jungherz.com/">🌐 Live Demo</a> &nbsp;&middot;&nbsp;
20
+ <a href="https://notionkit-elements.jungherz.com/docs.html">πŸ“– Documentation</a> &nbsp;&middot;&nbsp;
21
+ <a href="https://notionkit-elements.jungherz.com/showcase.html">🎨 Showcase</a> &nbsp;&middot;&nbsp;
22
+ <a href="https://notionkit.jungherz.com/">πŸ““ NotionKit CSS</a> &nbsp;&middot;&nbsp;
23
+ <a href="https://notionkit-web.jungherz.com/">πŸš€ NotionKit Web</a> &nbsp;&middot;&nbsp;
24
+ <a href="SKILL.md">πŸ€– SKILL.md</a>
25
+ </p>
26
+
27
+ ---
28
+
29
+ ## ✨ What is NotionKit Elements?
30
+
31
+ NotionKit Elements is the companion library to [NotionKit CSS](https://github.com/JUNGHERZ/NotionKit). It provides **70 Web Components** – from buttons and form controls over the sidebar, page tree and page shell to the settings modal, ⌘K palette, database views and AI thread – that encapsulate the class markup of the foundation into simple, declarative custom elements.
9
32
 
10
- Vanilla-JS Web Components for the [NotionKit](https://notionkit.jungherz.com) CSS foundation – 68 `<nk-*>` custom elements with Shadow DOM, automatic light/dark sync, native form participation and pixel parity with the class markup. Same word stem as the CSS classes: `.nk-callout` becomes `<nk-callout>`, a modifier class becomes an attribute, a state class becomes a boolean attribute.
33
+ It is the **app layer** of the NotionKit family – three layers, one design language: [NotionKit](https://notionkit.jungherz.com) is the pure-CSS foundation, NotionKit Elements wraps it into web components for application UIs, and [NotionKit Web](https://notionkit-web.jungherz.com) is the Astro template for complete websites on top of the same foundation. The word stem stays the same across the layers: `.nk-callout` becomes `<nk-callout>`, a modifier class becomes an attribute, a state class becomes a boolean attribute.
11
34
 
12
- - **Docs:** https://notionkit-elements.jungherz.com/docs.html – attributes, slots, events, before/after against the class markup
13
- - **Showcase:** https://notionkit-elements.jungherz.com/showcase.html – every element live, both themes, brand switch
14
- - **Demo app:** https://notionkit-elements.jungherz.com/app.html – the NotionKit reference app, elements only
15
- - **AI reference:** [SKILL.md](SKILL.md) – copy-paste markup, six app skeletons, rules and common mistakes
35
+ ```html
36
+ <!-- Before: 6 elements, 6 classes -->
37
+ <div class="nk-field">
38
+ <div>
39
+ <div class="f-label">Email notifications</div>
40
+ <div class="f-desc">Shown next to your comments.</div>
41
+ </div>
42
+ <div class="f-control"><button class="nk-switch" role="switch" aria-checked="true"></button></div>
43
+ </div>
44
+
45
+ <!-- After: 2 elements, 0 classes -->
46
+ <nk-field label="Email notifications" desc="Shown next to your comments.">
47
+ <nk-switch checked></nk-switch>
48
+ </nk-field>
49
+ ```
50
+
51
+ ---
52
+
53
+ ## 🎯 Why NotionKit Elements?
54
+
55
+ | Feature | Details |
56
+ |---|---|
57
+ | 🎯 **Pixel parity** | Every element renders identically to its class markup – verified by a Playwright pixel test in light and dark; the reference app differs by 0.00 % from the class version |
58
+ | πŸ”Œ **Shadow DOM** | Each root adopts the NotionKit *components* sheet via `adoptedStyleSheets`; tokens are inherited from the document, so one `:root { --nk-accent: … }` re-brands everything |
59
+ | 🧩 **70 Elements** | Forms, content blocks, app shell & tree, page shell, overlays (modal, ⌘K palette, menus, popover, emoji picker, toast), database table & board, comments, AI thread |
60
+ | πŸŽ›οΈ **Form participation** | Input, textarea, select, switch, check, radio, slider, segmented and model card work natively with `<form>` via `ElementInternals`; radios group across shadow roots |
61
+ | πŸŒ— **Theme sync** | One observer mirrors `data-theme` on `<html>` into every element |
62
+ | πŸͺΆ **Lightweight** | 167 KB minified / 33 KB gzipped (IIFE, foundation sheet included), no external dependencies |
63
+ | πŸ“¦ **Four bundle shapes** | IIFE, minified IIFE, ESM, and per-component ESM entries with a shared chunk |
64
+ | πŸ€– **AI-ready** | `SKILL.md` with copy-paste markup, six app skeletons and the rules – an agent given only that file built a working app in the release test |
65
+
66
+ ---
16
67
 
17
68
  ## Quick start
18
69
 
@@ -20,8 +71,8 @@ Vanilla-JS Web Components for the [NotionKit](https://notionkit.jungherz.com) CS
20
71
  <!DOCTYPE html>
21
72
  <html lang="en" data-theme="light">
22
73
  <head>
23
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@jungherz-de/notionkit@1.1.1/notionkit.min.css">
24
- <script src="https://cdn.jsdelivr.net/npm/@jungherz-de/notionkit-elements@1.0.0/dist/notionkit-elements.min.js"></script>
74
+ <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@jungherz-de/notionkit@1.2.0/notionkit.min.css">
75
+ <script src="https://cdn.jsdelivr.net/npm/@jungherz-de/notionkit-elements@1.1.0/dist/notionkit-elements.min.js"></script>
25
76
  </head>
26
77
  <body class="nk-body">
27
78
  <nk-field label="Display name" desc="Shown next to your comments">
@@ -42,7 +93,7 @@ import '@jungherz-de/notionkit-elements'; // everyt
42
93
  import '@jungherz-de/notionkit-elements/components/nk-btn.js'; // or one element (shared code is one extra chunk)
43
94
  ```
44
95
 
45
- Two prerequisites, always: `notionkit.css` on the document (the peer dependency, `>= 1.0.0`; 1.1.1 is what the elements are built and tested against) and `class="nk-body"` on `<body>`. The elements ship no visual CSS of their own – every rule comes from the foundation. The bundle injects the design tokens once as `@layer notionkit-defaults`, so any plain `:root { --nk-accent: … }` of yours re-brands every element in both themes.
96
+ Two prerequisites, always: `notionkit.css` on the document (the peer dependency, `>= 1.2.0`; 1.2.0 brings the `.nk-tab-bar` rules and is what the elements are built and tested against) and `class="nk-body"` on `<body>`. The elements ship no visual CSS of their own – every rule comes from the foundation. The bundle injects the design tokens once as `@layer notionkit-defaults`, so any plain `:root { --nk-accent: … }` of yours re-brands every element in both themes.
46
97
 
47
98
  ## Elements
48
99
 
@@ -50,7 +101,7 @@ Two prerequisites, always: `notionkit.css` on the document (the peer dependency,
50
101
  |---|---|
51
102
  | Forms & controls | `nk-btn` `nk-input` `nk-textarea` `nk-select` `nk-switch` `nk-check` `nk-radio` `nk-slider` `nk-field` |
52
103
  | Content | `nk-tag` `nk-progress` `nk-callout` `nk-divider` `nk-heading` `nk-toggle` `nk-todo` `nk-kbd` `nk-code` `nk-quote` |
53
- | App shell & navigation | `nk-app` `nk-sidebar` `nk-workspace-switcher` `nk-section-label` `nk-tree` `nk-tree-item` `nk-topbar` `nk-breadcrumb` `nk-theme-toggle` |
104
+ | App shell & navigation | `nk-app` `nk-sidebar` `nk-workspace-switcher` `nk-section-label` `nk-tree` `nk-tree-item` `nk-topbar` `nk-breadcrumb` `nk-theme-toggle` `nk-tab-bar` `nk-tab-bar-item` |
54
105
  | Page shell & blocks | `nk-page` `nk-page-cover` `nk-page-title` `nk-page-actions` `nk-block-host` `nk-banner` `nk-empty` `nk-skeleton` `nk-synced` `nk-tabs` `nk-tab` `nk-segmented` `nk-stats` `nk-stat` `nk-avatar-group` `nk-mention` `nk-template-btn` `nk-model-card` `nk-profile-row` `nk-danger-zone` `nk-member-list` `nk-member-row` |
55
106
  | Overlays | `nk-modal` `nk-settings-pane` `nk-settings-user` `nk-cmdk` `nk-menu` `nk-menu-item` `nk-pop` `nk-emoji-picker` `nk-toast` |
56
107
  | Data & collaboration | `nk-database` `nk-table-view` `nk-board-view` `nk-filter-bar` `nk-comments` `nk-comment` `nk-ai-thread` `nk-ai-msg` `nk-ai-input-row` (+ the exported `renderPropertyCell()`) |
@@ -81,10 +132,12 @@ npm run check:coverage && npm run check:versions
81
132
 
82
133
  ## The NotionKit family
83
134
 
84
- | Layer | Package |
85
- |---|---|
86
- | **NotionKit** – CSS foundation | [`@jungherz-de/notionkit`](https://github.com/JUNGHERZ/NotionKit) |
87
- | **NotionKit Elements** – this package | `@jungherz-de/notionkit-elements` |
88
- | NotionKit Web – Astro template | planned |
135
+ | Layer | Repository | Website |
136
+ |---|---|---|
137
+ | **NotionKit** – CSS foundation | [`JUNGHERZ/NotionKit`](https://github.com/JUNGHERZ/NotionKit) | [notionkit.jungherz.com](https://notionkit.jungherz.com) |
138
+ | **NotionKit Elements** – Web Components (this package) | [`JUNGHERZ/NotionKit-Elements`](https://github.com/JUNGHERZ/NotionKit-Elements) | [notionkit-elements.jungherz.com](https://notionkit-elements.jungherz.com) |
139
+ | **NotionKit Web** – Astro template for complete websites | [`JUNGHERZ/NotionKit-Web`](https://github.com/JUNGHERZ/NotionKit-Web) | [notionkit-web.jungherz.com](https://notionkit-web.jungherz.com) |
140
+
141
+ npm: [`@jungherz-de/notionkit`](https://www.npmjs.com/package/@jungherz-de/notionkit) Β· [`@jungherz-de/notionkit-elements`](https://www.npmjs.com/package/@jungherz-de/notionkit-elements)
89
142
 
90
- MIT Β· Jungherz GmbH
143
+ MIT Β· [Jungherz GmbH](https://www.jungherz.com)
@@ -1,4 +1,4 @@
1
- import { N as NkElement } from './shared/base-6gEcoatG.js';
1
+ import { N as NkElement } from './shared/base-BavgHsS-.js';
2
2
 
3
3
  // <nk-ai-input-row placeholder="Ask Mona something …"></nk-ai-input-row>
4
4
  // β†’ <div class="nk-ai-input-row"><span>✨</span><input><button class="nk-ai-send">↑</button></div>
@@ -1,4 +1,4 @@
1
- import { N as NkElement } from './shared/base-6gEcoatG.js';
1
+ import { N as NkElement } from './shared/base-BavgHsS-.js';
2
2
 
3
3
  // <nk-ai-msg role="user" name="You" avatar="MK">Summarise the open tasks.</nk-ai-msg>
4
4
  // <nk-ai-msg role="assistant" name="Mona" badge="Β· AI" avatar="✨">
@@ -1,4 +1,4 @@
1
- import { N as NkElement } from './shared/base-6gEcoatG.js';
1
+ import { N as NkElement } from './shared/base-BavgHsS-.js';
2
2
 
3
3
  // <nk-ai-thread><nk-ai-msg …>…</nk-ai-msg>…</nk-ai-thread> β†’ <div class="nk-ai-thread">
4
4
  class NkAiThread extends NkElement {
@@ -1,4 +1,4 @@
1
- import { N as NkElement } from './shared/base-6gEcoatG.js';
1
+ import { N as NkElement } from './shared/base-BavgHsS-.js';
2
2
 
3
3
  // <nk-app>
4
4
  // <nk-sidebar slot="sidebar">…</nk-sidebar>
@@ -1,4 +1,4 @@
1
- import { N as NkElement } from './shared/base-6gEcoatG.js';
1
+ import { N as NkElement } from './shared/base-BavgHsS-.js';
2
2
 
3
3
  // <nk-avatar-group more="+2">
4
4
  // <span class="mini-avatar" style="background:#448361">SL</span>…
@@ -1,4 +1,4 @@
1
- import { N as NkElement } from './shared/base-6gEcoatG.js';
1
+ import { N as NkElement } from './shared/base-BavgHsS-.js';
2
2
 
3
3
  // <nk-banner variant="info">ℹ️ <span>Text</span><span slot="action">Open</span></nk-banner>
4
4
  // β†’ <div class="nk-banner info">…<span class="b-action">Open</span></div>
@@ -1,4 +1,4 @@
1
- import { N as NkElement } from './shared/base-6gEcoatG.js';
1
+ import { N as NkElement } from './shared/base-BavgHsS-.js';
2
2
 
3
3
  // <nk-block-host handle><p>Editable content lives here.</p></nk-block-host>
4
4
  // β†’ <div class="nk-block-host"><span class="nk-block-handle">β Ώ</span>…</div>
@@ -1,4 +1,4 @@
1
- import { N as NkElement } from './shared/base-6gEcoatG.js';
1
+ import { N as NkElement } from './shared/base-BavgHsS-.js';
2
2
  import { t as tagFor, r as renderPropertyCell } from './shared/property-cell-Dn91uFkf.js';
3
3
 
4
4
  // <nk-board-view name="board" label="β–€ Board" group-by="status" new-row></nk-board-view>
@@ -1,4 +1,4 @@
1
- import { N as NkElement } from './shared/base-6gEcoatG.js';
1
+ import { N as NkElement } from './shared/base-BavgHsS-.js';
2
2
 
3
3
  // <nk-breadcrumb>
4
4
  // <a href="/overview">πŸ“Š Project overview</a>
@@ -1,4 +1,4 @@
1
- import { N as NkElement } from './shared/base-6gEcoatG.js';
1
+ import { N as NkElement } from './shared/base-BavgHsS-.js';
2
2
 
3
3
  // <nk-btn variant="primary" small>Save</nk-btn> β†’ <button class="nk-btn primary small">
4
4
  // <nk-btn href="/docs" variant="secondary">Docs</nk-btn> β†’ <a class="nk-btn secondary">
@@ -1,4 +1,4 @@
1
- import { N as NkElement } from './shared/base-6gEcoatG.js';
1
+ import { N as NkElement } from './shared/base-BavgHsS-.js';
2
2
 
3
3
  // <nk-callout icon="πŸ’‘">text</nk-callout>
4
4
  // <nk-callout><span slot="icon">πŸ“Œ</span>text</nk-callout>
@@ -1,4 +1,4 @@
1
- import { a as NkFormElement } from './shared/base-6gEcoatG.js';
1
+ import { a as NkFormElement } from './shared/base-BavgHsS-.js';
2
2
 
3
3
  // <nk-check name="mail" value="weekly" checked>Weekly digest</nk-check>
4
4
  // β†’ <label class="nk-check"><input type="checkbox"> Weekly digest</label>
@@ -1,4 +1,4 @@
1
- import { N as NkElement } from './shared/base-6gEcoatG.js';
1
+ import { N as NkElement } from './shared/base-BavgHsS-.js';
2
2
  import { l as lockScroll, i as inertOutside, u as unlockScroll } from './shared/focus-DXrK9oLe.js';
3
3
 
4
4
  // Subsequence scoring for the command palette: every query character must
@@ -1,4 +1,4 @@
1
- import { N as NkElement } from './shared/base-6gEcoatG.js';
1
+ import { N as NkElement } from './shared/base-BavgHsS-.js';
2
2
 
3
3
  // Minimal HTML highlighter emitting the .tag / .attr hooks .nk-code styles.
4
4
  // Mirrors tools/highlight.mjs in the NotionKit foundation – no third-party
@@ -1,4 +1,4 @@
1
- import { N as NkElement } from './shared/base-6gEcoatG.js';
1
+ import { N as NkElement } from './shared/base-BavgHsS-.js';
2
2
 
3
3
  // <nk-comment author="Sara Lindt" time="1 hr ago" avatar="SL" color="#448361">The board view feels close.</nk-comment>
4
4
  // β†’ <div class="nk-comment"><span class="mini-avatar">SL</span><div><div class="c-head"><b>Sara Lindt</b> Β· 1 hr ago</div><div class="c-body">…</div></div></div>
@@ -1,4 +1,4 @@
1
- import { N as NkElement } from './shared/base-6gEcoatG.js';
1
+ import { N as NkElement } from './shared/base-BavgHsS-.js';
2
2
 
3
3
  // <nk-comments placeholder="Comment …" send-label="Send">
4
4
  // <nk-comment …>…</nk-comment>
@@ -1,4 +1,4 @@
1
- import { N as NkElement } from './shared/base-6gEcoatG.js';
1
+ import { N as NkElement } from './shared/base-BavgHsS-.js';
2
2
 
3
3
  // <nk-danger-zone title="Danger zone">…</nk-danger-zone>
4
4
  // β†’ <div class="nk-danger-zone"><div class="dz-title">Danger zone</div>…</div>
@@ -1,4 +1,4 @@
1
- import { N as NkElement } from './shared/base-6gEcoatG.js';
1
+ import { N as NkElement } from './shared/base-BavgHsS-.js';
2
2
 
3
3
  // <nk-database id="db" view="table" add-view>
4
4
  // <nk-table-view name="table" label="β–¦ Table" count></nk-table-view>
@@ -1,4 +1,4 @@
1
- import { N as NkElement } from './shared/base-6gEcoatG.js';
1
+ import { N as NkElement } from './shared/base-BavgHsS-.js';
2
2
 
3
3
  // <nk-divider></nk-divider> β†’ <hr class="nk-divider">
4
4
  class NkDivider extends NkElement {
@@ -1,4 +1,4 @@
1
- import { N as NkElement } from './shared/base-6gEcoatG.js';
1
+ import { N as NkElement } from './shared/base-BavgHsS-.js';
2
2
 
3
3
  // Built-in emoji set for <nk-emoji-picker>: eight categories, names for
4
4
  // search. Override with `picker.emojis = [{ char, name, cat }]`.
@@ -1,4 +1,4 @@
1
- import { N as NkElement } from './shared/base-6gEcoatG.js';
1
+ import { N as NkElement } from './shared/base-BavgHsS-.js';
2
2
 
3
3
  // <nk-empty icon="πŸ—‚οΈ" title="No entries yet" desc="Create the first one."><nk-btn variant="primary" small>οΌ‹ New</nk-btn></nk-empty>
4
4
  // β†’ <div class="nk-empty"><div class="e-icon">πŸ—‚οΈ</div><div class="e-title">…</div><div class="e-desc">…</div>…</div>
@@ -1,4 +1,4 @@
1
- import { N as NkElement } from './shared/base-6gEcoatG.js';
1
+ import { N as NkElement } from './shared/base-BavgHsS-.js';
2
2
 
3
3
  // <nk-field label="Display name" desc="Shown next to your comments">
4
4
  // <nk-input value="Marcel"></nk-input>
@@ -1,4 +1,4 @@
1
- import { N as NkElement } from './shared/base-6gEcoatG.js';
1
+ import { N as NkElement } from './shared/base-BavgHsS-.js';
2
2
 
3
3
  // <nk-filter-bar search placeholder="Search rows …"></nk-filter-bar>
4
4
  // bar.filters = [{ key: 'status', label: 'Status: Done', value: 'done' }];
@@ -1,4 +1,4 @@
1
- import { N as NkElement } from './shared/base-6gEcoatG.js';
1
+ import { N as NkElement } from './shared/base-BavgHsS-.js';
2
2
 
3
3
  // <nk-heading level="2">Section</nk-heading> β†’ <h2 class="nk-heading">
4
4
  // The heading level is real markup (h1–h4), so the outline stays honest.
@@ -1,4 +1,4 @@
1
- import { a as NkFormElement } from './shared/base-6gEcoatG.js';
1
+ import { a as NkFormElement } from './shared/base-BavgHsS-.js';
2
2
 
3
3
  // <nk-input name="title" value="…" placeholder="…" wide></nk-input> β†’ <input class="nk-input wide">
4
4
  // Takes part in the surrounding <form> through ElementInternals.
@@ -21,7 +21,7 @@ class NkInput extends NkFormElement {
21
21
 
22
22
  _forward(attr) {
23
23
  if (BOOLEANS.includes(attr)) {
24
- this._input[attr === 'readonly' ? 'readOnly' : attr] = this.getBoolAttr(attr);
24
+ this._input[attr === 'readonly' ? 'readOnly' : attr] = this.getBoolAttr(attr) || (attr === 'disabled' && !!this._formDisabled);
25
25
  return;
26
26
  }
27
27
  const v = this.getAttribute(attr);
@@ -1,4 +1,4 @@
1
- import { N as NkElement } from './shared/base-6gEcoatG.js';
1
+ import { N as NkElement } from './shared/base-BavgHsS-.js';
2
2
 
3
3
  // <nk-kbd>⌘</nk-kbd> <nk-kbd>K</nk-kbd> β†’ <kbd class="nk-kbd">
4
4
  class NkKbd extends NkElement {
@@ -1,4 +1,4 @@
1
- import { N as NkElement } from './shared/base-6gEcoatG.js';
1
+ import { N as NkElement } from './shared/base-BavgHsS-.js';
2
2
 
3
3
  // <nk-member-list><nk-member-row …></nk-member-row>…</nk-member-list>
4
4
  // β†’ <div class="nk-member-list">…</div>; the last row gets `last` (no border).
@@ -1,4 +1,4 @@
1
- import { N as NkElement } from './shared/base-6gEcoatG.js';
1
+ import { N as NkElement } from './shared/base-BavgHsS-.js';
2
2
 
3
3
  // <nk-member-row name="Sara Lindt" mail="sara@…" avatar="SL" color="#448361">
4
4
  // <nk-select slot="role" compact>…</nk-select>
@@ -1,4 +1,4 @@
1
- import { N as NkElement } from './shared/base-6gEcoatG.js';
1
+ import { N as NkElement } from './shared/base-BavgHsS-.js';
2
2
 
3
3
  // <nk-mention type="person"><span slot="avatar" class="mini-avatar" style="background:#448361">SL</span>Sara Lindt</nk-mention>
4
4
  // <nk-mention type="page">πŸ“„ Onboarding</nk-mention> <nk-mention type="date">πŸ“… May 20</nk-mention>
@@ -1,4 +1,4 @@
1
- import { N as NkElement } from './shared/base-6gEcoatG.js';
1
+ import { N as NkElement } from './shared/base-BavgHsS-.js';
2
2
 
3
3
  // <nk-menu-item icon="✏️" shortcut="⌘E" value="rename">Rename</nk-menu-item>
4
4
  // <nk-menu-item type="separator"></nk-menu-item> <nk-menu-item type="label">Danger</nk-menu-item>
@@ -1,4 +1,4 @@
1
- import { N as NkElement } from './shared/base-6gEcoatG.js';
1
+ import { N as NkElement } from './shared/base-BavgHsS-.js';
2
2
 
3
3
  // <nk-menu>
4
4
  // <nk-menu-item type="label">Page</nk-menu-item>
@@ -1,4 +1,4 @@
1
- import { N as NkElement } from './shared/base-6gEcoatG.js';
1
+ import { N as NkElement } from './shared/base-BavgHsS-.js';
2
2
  import { l as lockScroll, i as inertOutside, f as firstFocusable, u as unlockScroll } from './shared/focus-DXrK9oLe.js';
3
3
 
4
4
  // <nk-modal id="settings">
@@ -1,4 +1,4 @@
1
- import { a as NkFormElement } from './shared/base-6gEcoatG.js';
1
+ import { a as NkFormElement } from './shared/base-BavgHsS-.js';
2
2
 
3
3
  // <nk-model-card name="model" value="gpt" title="Mona Pro" desc="Best for long documents" selected></nk-model-card>
4
4
  // β†’ <div class="nk-model-card selected"><div class="m-radio"></div><div><div class="m-name">…</div><div class="m-desc">…</div></div></div>
@@ -1,4 +1,4 @@
1
- import { N as NkElement } from './shared/base-6gEcoatG.js';
1
+ import { N as NkElement } from './shared/base-BavgHsS-.js';
2
2
 
3
3
  // <nk-page-actions><span>πŸ‘€ Ada</span><span>πŸ“… 12 May</span><span>🏷️ <nk-tag color="purple">Design</nk-tag></span></nk-page-actions>
4
4
  // β†’ <div class="nk-page-meta">…</div> – the meta row under the title
@@ -1,4 +1,4 @@
1
- import { N as NkElement } from './shared/base-6gEcoatG.js';
1
+ import { N as NkElement } from './shared/base-BavgHsS-.js';
2
2
 
3
3
  // <nk-page-cover slot="cover"></nk-page-cover> β†’ the token gradient
4
4
  // <nk-page-cover slot="cover" src="cover.jpg"></nk-page-cover> β†’ an image
@@ -1,4 +1,4 @@
1
- import { N as NkElement } from './shared/base-6gEcoatG.js';
1
+ import { N as NkElement } from './shared/base-BavgHsS-.js';
2
2
 
3
3
  // <nk-page-title>NotionKit MVP</nk-page-title> β†’ <h1 class="nk-page-title">
4
4
  // <nk-page-title editable placeholder="Untitled">…</nk-page-title>
@@ -1,4 +1,4 @@
1
- import { N as NkElement } from './shared/base-6gEcoatG.js';
1
+ import { N as NkElement } from './shared/base-BavgHsS-.js';
2
2
 
3
3
  // <nk-page icon="πŸš€" cover>
4
4
  // <nk-page-title>NotionKit MVP</nk-page-title>
@@ -1,4 +1,4 @@
1
- import { N as NkElement } from './shared/base-6gEcoatG.js';
1
+ import { N as NkElement } from './shared/base-BavgHsS-.js';
2
2
 
3
3
  // <nk-pop placement="bottom-start">
4
4
  // <nk-btn slot="trigger" variant="secondary">Options</nk-btn>
@@ -1,4 +1,4 @@
1
- import { N as NkElement } from './shared/base-6gEcoatG.js';
1
+ import { N as NkElement } from './shared/base-BavgHsS-.js';
2
2
 
3
3
  // <nk-profile-row avatar="MK"><nk-btn variant="secondary" small>Change photo</nk-btn></nk-profile-row>
4
4
  // β†’ <div class="nk-profile-row"><div class="big-avatar">MK</div>…</div>
@@ -1,4 +1,4 @@
1
- import { N as NkElement } from './shared/base-6gEcoatG.js';
1
+ import { N as NkElement } from './shared/base-BavgHsS-.js';
2
2
 
3
3
  // <nk-progress value="72" label="72%"></nk-progress>
4
4
  // The bar is `.nk-progress > i` β€” a child combinator, so both nodes live here.
@@ -1,4 +1,4 @@
1
- import { N as NkElement } from './shared/base-6gEcoatG.js';
1
+ import { N as NkElement } from './shared/base-BavgHsS-.js';
2
2
 
3
3
  // <nk-quote cite="Ada Lovelace">The Analytical Engine weaves…</nk-quote>
4
4
  // .q-cite has no ::slotted() twin, so the citation is rendered here.
@@ -1,4 +1,4 @@
1
- import { a as NkFormElement } from './shared/base-6gEcoatG.js';
1
+ import { a as NkFormElement } from './shared/base-BavgHsS-.js';
2
2
 
3
3
  // <nk-radio name="style" value="concise" checked>Concise</nk-radio>
4
4
  // β†’ <label class="nk-check"><input type="radio"> Concise</label>
@@ -1,4 +1,4 @@
1
- import { N as NkElement } from './shared/base-6gEcoatG.js';
1
+ import { N as NkElement } from './shared/base-BavgHsS-.js';
2
2
 
3
3
  // <nk-section-label addable>Favourites</nk-section-label>
4
4
  // β†’ <div class="nk-section-label">Favourites <span class="plus">οΌ‹</span></div>
@@ -1,4 +1,4 @@
1
- import { a as NkFormElement } from './shared/base-6gEcoatG.js';
1
+ import { a as NkFormElement } from './shared/base-BavgHsS-.js';
2
2
 
3
3
  // <nk-segmented name="range" value="week">
4
4
  // <button value="week">Week</button><button value="month">Month</button>
@@ -1,4 +1,4 @@
1
- import { a as NkFormElement } from './shared/base-6gEcoatG.js';
1
+ import { a as NkFormElement } from './shared/base-BavgHsS-.js';
2
2
 
3
3
  // <nk-select name="role" value="editor">
4
4
  // <option value="viewer">Viewer</option>
@@ -27,7 +27,7 @@ class NkSelect extends NkFormElement {
27
27
  name ? this._select.setAttribute('name', name) : this._select.removeAttribute('name');
28
28
  const label = this.getAttribute('aria-label');
29
29
  label ? this._select.setAttribute('aria-label', label) : this._select.removeAttribute('aria-label');
30
- this._select.disabled = this.getBoolAttr('disabled');
30
+ this._select.disabled = this.getBoolAttr('disabled') || !!this._formDisabled;
31
31
  this._select.required = this.getBoolAttr('required');
32
32
  this._select.classList.toggle('compact', this.getBoolAttr('compact'));
33
33
  }
@@ -1,4 +1,4 @@
1
- import { N as NkElement } from './shared/base-6gEcoatG.js';
1
+ import { N as NkElement } from './shared/base-BavgHsS-.js';
2
2
 
3
3
  // <nk-settings-pane name="profile" label="My profile" icon="πŸ‘€" group="Account" title="My profile" active>…</nk-settings-pane>
4
4
  // β†’ <section class="nk-settings-pane active"><h2>My profile</h2>…</section>
@@ -1,4 +1,4 @@
1
- import { N as NkElement } from './shared/base-6gEcoatG.js';
1
+ import { N as NkElement } from './shared/base-BavgHsS-.js';
2
2
 
3
3
  // <nk-settings-user slot="user" name="Marcel Karas" mail="marcel@…" avatar="MK"></nk-settings-user>
4
4
  // β†’ <div class="nk-settings-user"><div class="avatar">MK</div><div class="u-text"><div class="name">…</div><div class="mail">…</div></div></div>
@@ -1,4 +1,4 @@
1
- import { N as NkElement } from './shared/base-6gEcoatG.js';
1
+ import { N as NkElement } from './shared/base-BavgHsS-.js';
2
2
 
3
3
  // <nk-sidebar slot="sidebar">
4
4
  // <nk-workspace-switcher slot="workspace" name="Acme"></nk-workspace-switcher>
@@ -1,4 +1,4 @@
1
- import { N as NkElement } from './shared/base-6gEcoatG.js';
1
+ import { N as NkElement } from './shared/base-BavgHsS-.js';
2
2
 
3
3
  // <nk-skeleton height="18" width="60%"></nk-skeleton>
4
4
  // <nk-skeleton lines="3" widths="100%,85%,40%"></nk-skeleton>
@@ -1,4 +1,4 @@
1
- import { a as NkFormElement } from './shared/base-6gEcoatG.js';
1
+ import { a as NkFormElement } from './shared/base-BavgHsS-.js';
2
2
 
3
3
  // <nk-slider name="size" min="12" max="18" value="14" show-value></nk-slider>
4
4
  // β†’ <input type="range" class="nk-slider"> <div class="nk-slider-value">14</div>
@@ -1,4 +1,4 @@
1
- import { N as NkElement } from './shared/base-6gEcoatG.js';
1
+ import { N as NkElement } from './shared/base-BavgHsS-.js';
2
2
 
3
3
  // <nk-stat label="Active pages" value="128" delta="β–² 12 this week" trend="up"></nk-stat>
4
4
  // β†’ <div class="nk-stat"><div class="s-label">…</div><div class="s-value">…</div><div class="s-delta up">…</div></div>
@@ -1,4 +1,4 @@
1
- import { N as NkElement } from './shared/base-6gEcoatG.js';
1
+ import { N as NkElement } from './shared/base-BavgHsS-.js';
2
2
 
3
3
  // <nk-stats><nk-stat …></nk-stat>…</nk-stats> β†’ <div class="nk-stats">
4
4
  class NkStats extends NkElement {
@@ -1,4 +1,4 @@
1
- import { a as NkFormElement } from './shared/base-6gEcoatG.js';
1
+ import { a as NkFormElement } from './shared/base-BavgHsS-.js';
2
2
 
3
3
  // <nk-switch name="notify" checked></nk-switch>
4
4
  // β†’ <button class="nk-switch" role="switch" aria-checked="true">
@@ -1,4 +1,4 @@
1
- import { N as NkElement } from './shared/base-6gEcoatG.js';
1
+ import { N as NkElement } from './shared/base-BavgHsS-.js';
2
2
 
3
3
  // <nk-synced badge="⟳ 3 places">…</nk-synced>
4
4
  // β†’ <div class="nk-synced"><span class="synced-badge">⟳ 3 places</span>…</div>