@kanso-protocol/mcp 4.1.0 → 4.2.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 (3) hide show
  1. package/README.md +2 -2
  2. package/manifest.json +261 -180
  3. package/package.json +1 -1
package/manifest.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
- "generatedAt": "2026-06-07T09:04:04.925Z",
3
- "version": "4.1.0",
2
+ "generatedAt": "2026-06-07T11:53:36.026Z",
3
+ "version": "4.2.0",
4
4
  "totals": {
5
5
  "components": 59,
6
6
  "patterns": 22,
@@ -61,7 +61,8 @@
61
61
  "className": "KpAccordionItemComponent",
62
62
  "selector": "kp-accordion-item",
63
63
  "layer": "components",
64
- "package": "@kanso-protocol/accordion",
64
+ "package": "@kanso-protocol/ui",
65
+ "import": "@kanso-protocol/ui/accordion",
65
66
  "description": "Kanso Protocol — AccordionItem (atom)\n\nExpandable row: a clickable trigger with title / optional description /\nchevron, and a content panel that renders when `[expanded]` is true.\nDrive `[expanded]` from a parent — either manually or via\n`<kp-accordion>` which coordinates single/multi behavior.",
66
67
  "examples": [],
67
68
  "inputs": [
@@ -128,7 +129,7 @@
128
129
  ],
129
130
  "keyboardPatterns": [],
130
131
  "docsUrl": "https://gregnblack.github.io/kanso-protocol/?path=/docs/components-accordion--docs",
131
- "sourcePath": "packages/components/accordion/src/accordion-item.component.ts",
132
+ "sourcePath": "packages/ui/accordion/src/accordion-item.component.ts",
132
133
  "figma": {
133
134
  "fileKey": "ahRfe4BdMAyoK0I3lnicp6",
134
135
  "nodeId": "3805:11103",
@@ -148,7 +149,8 @@
148
149
  "className": "KpAccordionComponent",
149
150
  "selector": "kp-accordion",
150
151
  "layer": "components",
151
- "package": "@kanso-protocol/accordion",
152
+ "package": "@kanso-protocol/ui",
153
+ "import": "@kanso-protocol/ui/accordion",
152
154
  "description": "Kanso Protocol — Accordion\n\nContainer for `<kp-accordion-item>` children. Coordinates the\nexpand/collapse behavior via `[mode]`:\n - `single` — only one item can be open; expanding a new one collapses the previous.\n - `multi` — any number of items can be open simultaneously.\n\nCascades `size` to every projected item so callers set it once on\nthe container. Set `[showOuterBorder]=\"true\"` to wrap the group in\na 1px border with rounded corners (for standalone accordions on\nflat surfaces). Otherwise only the per-item bottom borders show.",
153
155
  "examples": [],
154
156
  "inputs": [
@@ -180,7 +182,7 @@
180
182
  ],
181
183
  "keyboardPatterns": [],
182
184
  "docsUrl": "https://gregnblack.github.io/kanso-protocol/?path=/docs/components-accordion--docs",
183
- "sourcePath": "packages/components/accordion/src/accordion.component.ts",
185
+ "sourcePath": "packages/ui/accordion/src/accordion.component.ts",
184
186
  "figma": {
185
187
  "fileKey": "ahRfe4BdMAyoK0I3lnicp6",
186
188
  "nodeId": "3805:11103",
@@ -200,7 +202,8 @@
200
202
  "className": "KpAlertComponent",
201
203
  "selector": "kp-alert",
202
204
  "layer": "components",
203
- "package": "@kanso-protocol/alert",
205
+ "package": "@kanso-protocol/ui",
206
+ "import": "@kanso-protocol/ui/alert",
204
207
  "description": "Kanso Protocol — Alert\n\nIn-page banner for statuses, errors, warnings, and short messages. 3 sizes ×\n4 appearances (subtle / solid / outline / left-accent) × 6 color roles, plus\nan optional leading icon, an action slot (inline right or stacked below),\nand a close button.",
205
208
  "examples": [
206
209
  "<kp-alert color=\"success\" title=\"Changes saved\" description=\"Profile updated.\">\n <svg kpAlertIcon .../>\n</kp-alert>\n\n<kp-alert color=\"warning\" appearance=\"left-accent\" title=\"Review required\"\n description=\"3 items need your approval.\">\n <button kpButton kpAlertAction size=\"sm\" variant=\"subtle\">Review</button>\n</kp-alert>"
@@ -263,7 +266,7 @@
263
266
  ],
264
267
  "keyboardPatterns": [],
265
268
  "docsUrl": "https://gregnblack.github.io/kanso-protocol/?path=/docs/components-alert--docs",
266
- "sourcePath": "packages/components/alert/src/alert.component.ts",
269
+ "sourcePath": "packages/ui/alert/src/alert.component.ts",
267
270
  "figma": {
268
271
  "fileKey": "ahRfe4BdMAyoK0I3lnicp6",
269
272
  "nodeId": "3805:11044",
@@ -283,7 +286,8 @@
283
286
  "className": "KpAvatarComponent",
284
287
  "selector": "kp-avatar",
285
288
  "layer": "components",
286
- "package": "@kanso-protocol/avatar",
289
+ "package": "@kanso-protocol/ui",
290
+ "import": "@kanso-protocol/ui/avatar",
287
291
  "description": "Kanso Protocol — Avatar\n\nUser-facing identity surface: image / initials / icon. Six sizes\n× two shapes, seven color appearances, optional presence status\ndot and ring (for stacks).\n\nContent precedence: `src` → image, else `initials` → initials,\nelse projected `<svg>` / default user glyph.",
288
292
  "examples": [
289
293
  "<kp-avatar size=\"md\" initials=\"GB\"/>\n<kp-avatar size=\"lg\" src=\"/me.jpg\" [showStatus]=\"true\" status=\"online\"/>\n<kp-avatar size=\"xl\" shape=\"square\" appearance=\"neutral\">\n <svg><!-- company glyph --></svg>\n</kp-avatar>"
@@ -362,7 +366,7 @@
362
366
  ],
363
367
  "keyboardPatterns": [],
364
368
  "docsUrl": "https://gregnblack.github.io/kanso-protocol/?path=/docs/components-avatar--docs",
365
- "sourcePath": "packages/components/avatar/src/avatar.component.ts",
369
+ "sourcePath": "packages/ui/avatar/src/avatar.component.ts",
366
370
  "figma": {
367
371
  "fileKey": "ahRfe4BdMAyoK0I3lnicp6",
368
372
  "nodeId": "3805:11139",
@@ -382,7 +386,8 @@
382
386
  "className": "KpAvatarGroupComponent",
383
387
  "selector": "kp-avatar-group",
384
388
  "layer": "components",
385
- "package": "@kanso-protocol/avatar-group",
389
+ "package": "@kanso-protocol/ui",
390
+ "import": "@kanso-protocol/ui/avatar-group",
386
391
  "description": "Kanso Protocol — AvatarGroup\n\nOverlapping stack of Avatars with an optional \"+N\" count chip.\nItems after `max` collapse into the count; `total` drives the\ndisplayed number (\"+N\" = `total - visible.length`).\n\nEach avatar is rendered with `showRing=true` so the overlap\nreads cleanly against any background.",
387
392
  "examples": [
388
393
  "<kp-avatar-group size=\"sm\" [items]=\"members\" [max]=\"4\" [total]=\"members.length\"/>"
@@ -414,7 +419,7 @@
414
419
  ],
415
420
  "keyboardPatterns": [],
416
421
  "docsUrl": "https://gregnblack.github.io/kanso-protocol/?path=/docs/components-avatargroup--docs",
417
- "sourcePath": "packages/components/avatar-group/src/avatar-group.component.ts",
422
+ "sourcePath": "packages/ui/avatar-group/src/avatar-group.component.ts",
418
423
  "figma": {
419
424
  "fileKey": "ahRfe4BdMAyoK0I3lnicp6",
420
425
  "nodeId": "3805:11139",
@@ -434,7 +439,8 @@
434
439
  "className": "KpBadgeComponent",
435
440
  "selector": "kp-badge",
436
441
  "layer": "components",
437
- "package": "@kanso-protocol/badge",
442
+ "package": "@kanso-protocol/ui",
443
+ "import": "@kanso-protocol/ui/badge",
438
444
  "description": "Kanso Protocol — Badge\n\nCompact label for statuses, tags, and counters. 3 sizes × 4 appearances\n× 6 color roles. A leading dot and a leading icon are independent\noptional slots; the dot appearance drops the background and border so\nthe dot becomes the only colour cue.",
439
445
  "examples": [
440
446
  "<kp-badge color=\"success\">Active</kp-badge>\n<kp-badge appearance=\"dot\" color=\"warning\" [showLeadingDot]=\"true\">Away</kp-badge>\n<kp-badge pill [closable]=\"true\" color=\"neutral\" appearance=\"subtle\" (close)=\"remove()\">Design</kp-badge>\n<kp-badge size=\"xs\" color=\"danger\" [count]=\"true\">12</kp-badge>"
@@ -497,7 +503,7 @@
497
503
  ],
498
504
  "keyboardPatterns": [],
499
505
  "docsUrl": "https://gregnblack.github.io/kanso-protocol/?path=/docs/components-badge--docs",
500
- "sourcePath": "packages/components/badge/src/badge.component.ts",
506
+ "sourcePath": "packages/ui/badge/src/badge.component.ts",
501
507
  "figma": {
502
508
  "fileKey": "ahRfe4BdMAyoK0I3lnicp6",
503
509
  "nodeId": "3805:11040",
@@ -517,7 +523,8 @@
517
523
  "className": "KpBreadcrumbItemComponent",
518
524
  "selector": "kp-breadcrumb-item",
519
525
  "layer": "components",
520
- "package": "@kanso-protocol/breadcrumbs",
526
+ "package": "@kanso-protocol/ui",
527
+ "import": "@kanso-protocol/ui/breadcrumbs",
521
528
  "description": "Kanso Protocol — BreadcrumbItem (atom)\n\nSingle breadcrumb cell. Renders as an `<a>` for `type=\"link\"` with an\n`href`, a `<button>` for `type=\"link\"` without one, a plain `<span>`\nfor `type=\"current\"`, or a `<button>` for `type=\"ellipsis\"`\n(clickable — callers typically open a Popover / DropdownMenu from it).\n\nProjects a leading icon via `[kpBreadcrumbIcon]`. Size is usually set\nby the parent `<kp-breadcrumbs>`.",
522
529
  "examples": [
523
530
  "<kp-breadcrumb-item type=\"link\" href=\"/projects\">\n <svg kpBreadcrumbIcon .../>\n Projects\n</kp-breadcrumb-item>"
@@ -575,7 +582,7 @@
575
582
  "Home"
576
583
  ],
577
584
  "docsUrl": "https://gregnblack.github.io/kanso-protocol/?path=/docs/components-breadcrumbs--docs",
578
- "sourcePath": "packages/components/breadcrumbs/src/breadcrumb-item.component.ts",
585
+ "sourcePath": "packages/ui/breadcrumbs/src/breadcrumb-item.component.ts",
579
586
  "figma": {
580
587
  "fileKey": "ahRfe4BdMAyoK0I3lnicp6",
581
588
  "nodeId": "3805:11072",
@@ -595,7 +602,8 @@
595
602
  "className": "KpBreadcrumbSeparatorComponent",
596
603
  "selector": "kp-breadcrumb-separator",
597
604
  "layer": "components",
598
- "package": "@kanso-protocol/breadcrumbs",
605
+ "package": "@kanso-protocol/ui",
606
+ "import": "@kanso-protocol/ui/breadcrumbs",
599
607
  "description": "Kanso Protocol — BreadcrumbSeparator (atom)\n\nVisual glue between `<kp-breadcrumb-item>`s. Inert — not announced by\nscreen readers. Ships with three variants: a gray chevron, a gray\nslash, and a small accent-colored dot.",
600
608
  "examples": [],
601
609
  "inputs": [
@@ -620,7 +628,7 @@
620
628
  ],
621
629
  "keyboardPatterns": [],
622
630
  "docsUrl": "https://gregnblack.github.io/kanso-protocol/?path=/docs/components-breadcrumbs--docs",
623
- "sourcePath": "packages/components/breadcrumbs/src/breadcrumb-separator.component.ts",
631
+ "sourcePath": "packages/ui/breadcrumbs/src/breadcrumb-separator.component.ts",
624
632
  "figma": {
625
633
  "fileKey": "ahRfe4BdMAyoK0I3lnicp6",
626
634
  "nodeId": "3805:11072",
@@ -640,7 +648,8 @@
640
648
  "className": "KpBreadcrumbsAutoComponent",
641
649
  "selector": "kp-breadcrumbs-auto",
642
650
  "layer": "components",
643
- "package": "@kanso-protocol/breadcrumbs",
651
+ "package": "@kanso-protocol/ui",
652
+ "import": "@kanso-protocol/ui/breadcrumbs",
644
653
  "description": "Kanso Protocol — BreadcrumbsAuto\n\nDrop-in replacement for the composable `<kp-breadcrumbs>` API that\nbuilds its trail from the Angular router state. Walks the current\n`ActivatedRouteSnapshot` tree from root to leaf, picks every route\nthat defines `data.breadcrumb`, and renders the full path\nautomatically — updating on every `NavigationEnd`.\n\nThe last collected entry becomes `type=\"current\"`; everything before\nit is `type=\"link\"` with an `href` built from the accumulated URL\nsegments. If you need richer content (icons, ellipsis collapsing),\nfall back to the manual `<kp-breadcrumbs>` composition.",
645
654
  "examples": [
646
655
  "// route config\nconst routes = [\n { path: '', data: { breadcrumb: 'Home' } },\n { path: 'projects', data: { breadcrumb: 'Projects' }, children: [\n { path: ':id', data: { breadcrumb: (r) => r.paramMap.get('id') ?? 'Detail' } }\n ]}\n];\n\n// template — anywhere inside a routed component\n<kp-breadcrumbs-auto size=\"md\" separator=\"chevron\"/>"
@@ -675,7 +684,7 @@
675
684
  "Home"
676
685
  ],
677
686
  "docsUrl": "https://gregnblack.github.io/kanso-protocol/?path=/docs/components-breadcrumbs--docs",
678
- "sourcePath": "packages/components/breadcrumbs/src/breadcrumbs-auto.component.ts",
687
+ "sourcePath": "packages/ui/breadcrumbs/src/breadcrumbs-auto.component.ts",
679
688
  "figma": {
680
689
  "fileKey": "ahRfe4BdMAyoK0I3lnicp6",
681
690
  "nodeId": "3805:11072",
@@ -695,7 +704,8 @@
695
704
  "className": "KpBreadcrumbsComponent",
696
705
  "selector": "kp-breadcrumbs",
697
706
  "layer": "components",
698
- "package": "@kanso-protocol/breadcrumbs",
707
+ "package": "@kanso-protocol/ui",
708
+ "import": "@kanso-protocol/ui/breadcrumbs",
699
709
  "description": "Kanso Protocol — Breadcrumbs (container)\n\nSemantic `<nav aria-label=\"Breadcrumb\">` with an ordered list of items\nand separators. Cascades `size` to every projected `<kp-breadcrumb-item>`\nand `<kp-breadcrumb-separator>` so callers set it in one place.\n\nThe component is intentionally composable — callers include items\nand separators in the order they want them rendered. This keeps it\ncompatible with whatever routing/data source you use and makes the\noverflow `...` affordance trivial (just drop an `<kp-breadcrumb-item\ntype=\"ellipsis\">` between items).",
700
710
  "examples": [
701
711
  "<kp-breadcrumbs size=\"md\" ariaLabel=\"Breadcrumb\">\n <kp-breadcrumb-item type=\"link\" href=\"/\">\n <svg kpBreadcrumbIcon .../>\n </kp-breadcrumb-item>\n <kp-breadcrumb-separator type=\"chevron\"/>\n <kp-breadcrumb-item type=\"link\" label=\"Projects\" href=\"/projects\"/>\n <kp-breadcrumb-separator type=\"chevron\"/>\n <kp-breadcrumb-item type=\"current\" label=\"Button\"/>\n</kp-breadcrumbs>"
@@ -722,7 +732,7 @@
722
732
  ],
723
733
  "keyboardPatterns": [],
724
734
  "docsUrl": "https://gregnblack.github.io/kanso-protocol/?path=/docs/components-breadcrumbs--docs",
725
- "sourcePath": "packages/components/breadcrumbs/src/breadcrumbs.component.ts",
735
+ "sourcePath": "packages/ui/breadcrumbs/src/breadcrumbs.component.ts",
726
736
  "figma": {
727
737
  "fileKey": "ahRfe4BdMAyoK0I3lnicp6",
728
738
  "nodeId": "3805:11072",
@@ -742,7 +752,8 @@
742
752
  "className": "KpButtonComponent",
743
753
  "selector": "button[kpButton]",
744
754
  "layer": "components",
745
- "package": "@kanso-protocol/button",
755
+ "package": "@kanso-protocol/ui",
756
+ "import": "@kanso-protocol/ui/button",
746
757
  "description": "Kanso Protocol — Button\n\nAttribute-selector on a real native `<button>`. Gets `type` / `form` /\n`name` / `value` / `formaction` / native disabled / Enter+Space /\nform submission / HTML5 validation for free.",
747
758
  "examples": [
748
759
  "<button kpButton size=\"md\" variant=\"default\" color=\"primary\">Click me</button>\n<button kpButton type=\"submit\" color=\"primary\">Save</button>\n<button kpButton variant=\"outline\" color=\"danger\" [loading]=\"true\">Delete</button>"
@@ -808,7 +819,7 @@
808
819
  ],
809
820
  "keyboardPatterns": [],
810
821
  "docsUrl": "https://gregnblack.github.io/kanso-protocol/?path=/docs/components-button--docs",
811
- "sourcePath": "packages/components/button/src/button.component.ts",
822
+ "sourcePath": "packages/ui/button/src/button.component.ts",
812
823
  "figma": {
813
824
  "fileKey": "ahRfe4BdMAyoK0I3lnicp6",
814
825
  "nodeId": "3805:10993",
@@ -828,7 +839,8 @@
828
839
  "className": "KpIconButtonComponent",
829
840
  "selector": "kp-icon-button",
830
841
  "layer": "components",
831
- "package": "@kanso-protocol/button",
842
+ "package": "@kanso-protocol/ui",
843
+ "import": "@kanso-protocol/ui/button",
832
844
  "description": "Kanso Protocol — IconButton (atom)",
833
845
  "examples": [
834
846
  "(still works in 4.x but logs a deprecation notice on first use)\n<kp-icon-button size=\"sm\" ariaLabel=\"Close\" (click)=\"close()\">\n<svg viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\">\n<path d=\"M18 6 6 18M6 6l12 12\" stroke=\"currentColor\"\n stroke-width=\"2\" stroke-linecap=\"round\"/>\n</svg>\n</kp-icon-button>"
@@ -867,7 +879,7 @@
867
879
  ],
868
880
  "keyboardPatterns": [],
869
881
  "docsUrl": "https://gregnblack.github.io/kanso-protocol/?path=/docs/components-button--docs",
870
- "sourcePath": "packages/components/button/src/icon-button.component.ts",
882
+ "sourcePath": "packages/ui/button/src/icon-button.component.ts",
871
883
  "figma": {
872
884
  "fileKey": "ahRfe4BdMAyoK0I3lnicp6",
873
885
  "nodeId": "3805:10993",
@@ -887,7 +899,8 @@
887
899
  "className": "KpCardComponent",
888
900
  "selector": "kp-card",
889
901
  "layer": "components",
890
- "package": "@kanso-protocol/card",
902
+ "package": "@kanso-protocol/ui",
903
+ "import": "@kanso-protocol/ui/card",
891
904
  "description": "Kanso Protocol — Card\n\nUniversal container with optional header (title + description +\naction), body, and footer. Each section toggles via boolean inputs;\ndividers can be added between sections for visual grouping.\n\nSet `appearance=\"elevated\"` for a shadowed surface, `\"muted\"` for a\ngray background with dimmed text (secondary / preview content),\n`\"subtle\"` for a gray background with full-strength text and no\nborder (primary content visually separated from the page), or\n`\"outline\"` for a transparent panel with just a border. Setting\n`[clickable]=\"true\"` adds a hover state and emits `(cardClick)` —\nwire it to navigate, expand, or run any action.",
892
905
  "examples": [],
893
906
  "inputs": [
@@ -972,7 +985,7 @@
972
985
  ],
973
986
  "keyboardPatterns": [],
974
987
  "docsUrl": "https://gregnblack.github.io/kanso-protocol/?path=/docs/components-card--docs",
975
- "sourcePath": "packages/components/card/src/card.component.ts",
988
+ "sourcePath": "packages/ui/card/src/card.component.ts",
976
989
  "figma": {
977
990
  "fileKey": "ahRfe4BdMAyoK0I3lnicp6",
978
991
  "nodeId": "3805:11091",
@@ -992,7 +1005,8 @@
992
1005
  "className": "KpCheckboxComponent",
993
1006
  "selector": "kp-checkbox",
994
1007
  "layer": "components",
995
- "package": "@kanso-protocol/checkbox",
1008
+ "package": "@kanso-protocol/ui",
1009
+ "import": "@kanso-protocol/ui/checkbox",
996
1010
  "description": "Kanso Protocol — Checkbox\n\nWraps a real native `<input type=\"checkbox\">` inside a styled `<label>`.\nForm submission, FormData, `<label for>` association, password manager\nautofill, native indeterminate, Space-toggle, and HTML5 validation\n(`required`) all work without polyfills.",
997
1011
  "examples": [
998
1012
  "<kp-checkbox [(checked)]=\"isChecked\" size=\"md\">Remember me</kp-checkbox>\n<kp-checkbox [indeterminate]=\"true\">Select all</kp-checkbox>\n<form><kp-checkbox name=\"agree\" value=\"yes\" required>I agree</kp-checkbox></form>"
@@ -1085,7 +1099,7 @@
1085
1099
  ],
1086
1100
  "keyboardPatterns": [],
1087
1101
  "docsUrl": "https://gregnblack.github.io/kanso-protocol/?path=/docs/components-checkbox--docs",
1088
- "sourcePath": "packages/components/checkbox/src/checkbox.component.ts",
1102
+ "sourcePath": "packages/ui/checkbox/src/checkbox.component.ts",
1089
1103
  "figma": {
1090
1104
  "fileKey": "ahRfe4BdMAyoK0I3lnicp6",
1091
1105
  "nodeId": "3805:11001",
@@ -1105,7 +1119,8 @@
1105
1119
  "className": "KpComboboxComponent",
1106
1120
  "selector": "kp-combobox",
1107
1121
  "layer": "components",
1108
- "package": "@kanso-protocol/combobox",
1122
+ "package": "@kanso-protocol/ui",
1123
+ "import": "@kanso-protocol/ui/combobox",
1109
1124
  "description": "Kanso Protocol — Combobox\n\nSelect with an embedded text input for filtering. Type to narrow the\ndropdown list; pick an option with click, `Enter`, or `Tab`. Supports\nsingle and multi selection. Matches Input's size ramp so it composes\nwith other form controls.",
1110
1125
  "examples": [
1111
1126
  "<kp-combobox [options]=\"countries\" [(ngModel)]=\"country\"/>\n<kp-combobox [multiple]=\"true\" [options]=\"tags\" [(ngModel)]=\"picked\"/>"
@@ -1194,7 +1209,7 @@
1194
1209
  "Backspace"
1195
1210
  ],
1196
1211
  "docsUrl": "https://gregnblack.github.io/kanso-protocol/?path=/docs/components-combobox--docs",
1197
- "sourcePath": "packages/components/combobox/src/combobox.component.ts",
1212
+ "sourcePath": "packages/ui/combobox/src/combobox.component.ts",
1198
1213
  "figma": {
1199
1214
  "fileKey": "ahRfe4BdMAyoK0I3lnicp6",
1200
1215
  "nodeId": "3805:11115",
@@ -1214,7 +1229,8 @@
1214
1229
  "className": "KpCommandPaletteComponent",
1215
1230
  "selector": "kp-command-palette",
1216
1231
  "layer": "components",
1217
- "package": "@kanso-protocol/command-palette",
1232
+ "package": "@kanso-protocol/ui",
1233
+ "import": "@kanso-protocol/ui/command-palette",
1218
1234
  "description": "Kanso Protocol — CommandPalette\n\nModal command launcher (⌘K-style). Composes `<kp-dialog>` (chromeless)\nwith an internal input + grouped result list. Keyboard navigation:\n`↑` / `↓` highlight, `Enter` select, `Esc` close. The component owns\nthe open state when `[shortcut]` is set — the global keydown listener\ntoggles `open` on the configured combo (default `mod+k`).\n\nThe consumer supplies `[groups]`. Filtering is the consumer's job —\nthe component re-emits `(filterChange)` on every input keystroke.",
1219
1235
  "examples": [
1220
1236
  "<kp-command-palette\n [(open)]=\"paletteOpen\"\n [groups]=\"results\"\n [shortcut]=\"{ combo: 'mod+k' }\"\n (filterChange)=\"onFilter($event)\"\n (itemSelect)=\"run($event)\"\n/>"
@@ -1280,7 +1296,7 @@
1280
1296
  },
1281
1297
  {
1282
1298
  "name": "itemSelect",
1283
- "payload": "import(\"/home/runner/work/kanso-protocol/kanso-protocol/packages/components/command-palette/src/command-palette.component\").KpCommandItem"
1299
+ "payload": "import(\"/home/runner/work/kanso-protocol/kanso-protocol/packages/ui/command-palette/src/command-palette.component\").KpCommandItem"
1284
1300
  }
1285
1301
  ],
1286
1302
  "ariaRole": null,
@@ -1297,7 +1313,7 @@
1297
1313
  "Enter"
1298
1314
  ],
1299
1315
  "docsUrl": "https://gregnblack.github.io/kanso-protocol/?path=/docs/components-commandpalette--docs",
1300
- "sourcePath": "packages/components/command-palette/src/command-palette.component.ts",
1316
+ "sourcePath": "packages/ui/command-palette/src/command-palette.component.ts",
1301
1317
  "figma": {
1302
1318
  "fileKey": "ahRfe4BdMAyoK0I3lnicp6",
1303
1319
  "nodeId": "4111:11234",
@@ -1317,7 +1333,8 @@
1317
1333
  "className": "KpDatePickerComponent",
1318
1334
  "selector": "kp-date-picker",
1319
1335
  "layer": "components",
1320
- "package": "@kanso-protocol/datepicker",
1336
+ "package": "@kanso-protocol/ui",
1337
+ "import": "@kanso-protocol/ui/datepicker",
1321
1338
  "description": "Kanso Protocol — DatePicker\n\nInput-triggered calendar popup. `mode=\"single\"` picks one date, `mode=\"range\"`\npicks a pair `[start, end]`. Panel portals to `<body>` so it escapes any\noverflow / transform on ancestors.\n\nShares Input's size ramp and visual state vocabulary.",
1322
1339
  "examples": [],
1323
1340
  "inputs": [
@@ -1403,7 +1420,7 @@
1403
1420
  "outputs": [
1404
1421
  {
1405
1422
  "name": "valueChange",
1406
- "payload": "import(\"/home/runner/work/kanso-protocol/kanso-protocol/packages/components/datepicker/src/datepicker.component\").KpDatePickerValue"
1423
+ "payload": "import(\"/home/runner/work/kanso-protocol/kanso-protocol/packages/ui/datepicker/src/datepicker.component\").KpDatePickerValue"
1407
1424
  },
1408
1425
  {
1409
1426
  "name": "openChange",
@@ -1432,7 +1449,7 @@
1432
1449
  "Space"
1433
1450
  ],
1434
1451
  "docsUrl": "https://gregnblack.github.io/kanso-protocol/?path=/docs/components-datepicker--docs",
1435
- "sourcePath": "packages/components/datepicker/src/datepicker.component.ts",
1452
+ "sourcePath": "packages/ui/datepicker/src/datepicker.component.ts",
1436
1453
  "figma": {
1437
1454
  "fileKey": "ahRfe4BdMAyoK0I3lnicp6",
1438
1455
  "nodeId": "3805:11119",
@@ -1452,7 +1469,8 @@
1452
1469
  "className": "KpDialogComponent",
1453
1470
  "selector": "kp-dialog",
1454
1471
  "layer": "components",
1455
- "package": "@kanso-protocol/dialog",
1472
+ "package": "@kanso-protocol/ui",
1473
+ "import": "@kanso-protocol/ui/dialog",
1456
1474
  "description": "Kanso Protocol — Dialog\n\nWraps a real native `<dialog>` element. Focus trap, top-layer\nstacking, ESC-to-close, body-scroll inertness, and `::backdrop`\nstyling are all browser-native. Composition is slot-driven:\n`[kpDialogHeroIcon]` / `[kpDialogBody]` / `[kpDialogFooter]`.",
1457
1475
  "examples": [
1458
1476
  "<kp-dialog\n [(open)]=\"deleteOpen\"\n size=\"sm\"\n title=\"Delete repository?\"\n [showDescription]=\"true\"\n description=\"This action cannot be undone.\"\n (closed)=\"deleteOpen = false\"\n/>"
@@ -1557,7 +1575,7 @@
1557
1575
  ],
1558
1576
  "keyboardPatterns": [],
1559
1577
  "docsUrl": "https://gregnblack.github.io/kanso-protocol/?path=/docs/components-dialog--docs",
1560
- "sourcePath": "packages/components/dialog/src/dialog.component.ts",
1578
+ "sourcePath": "packages/ui/dialog/src/dialog.component.ts",
1561
1579
  "figma": {
1562
1580
  "fileKey": "ahRfe4BdMAyoK0I3lnicp6",
1563
1581
  "nodeId": "3805:11083",
@@ -1577,7 +1595,8 @@
1577
1595
  "className": "KpDividerComponent",
1578
1596
  "selector": "kp-divider",
1579
1597
  "layer": "components",
1580
- "package": "@kanso-protocol/divider",
1598
+ "package": "@kanso-protocol/ui",
1599
+ "import": "@kanso-protocol/ui/divider",
1581
1600
  "description": "Kanso Protocol — Divider\n\nThin line separator. Horizontal by default; set `orientation=\"vertical\"`\nfor an inline vertical rule. Horizontal dividers can carry an optional\nlabel via `[label]` (or projected default content) with configurable\nposition — center / start / end.\n\nVertical dividers are label-less by design (visually awkward).",
1582
1601
  "examples": [],
1583
1602
  "inputs": [
@@ -1611,7 +1630,7 @@
1611
1630
  "sizeRamp": [],
1612
1631
  "keyboardPatterns": [],
1613
1632
  "docsUrl": "https://gregnblack.github.io/kanso-protocol/?path=/docs/components-divider--docs",
1614
- "sourcePath": "packages/components/divider/src/divider.component.ts",
1633
+ "sourcePath": "packages/ui/divider/src/divider.component.ts",
1615
1634
  "figma": {
1616
1635
  "fileKey": "ahRfe4BdMAyoK0I3lnicp6",
1617
1636
  "nodeId": "3805:11087",
@@ -1631,7 +1650,8 @@
1631
1650
  "className": "KpDrawerComponent",
1632
1651
  "selector": "kp-drawer",
1633
1652
  "layer": "components",
1634
- "package": "@kanso-protocol/drawer",
1653
+ "package": "@kanso-protocol/ui",
1654
+ "import": "@kanso-protocol/ui/drawer",
1635
1655
  "description": "Kanso Protocol — Drawer\n\nSide panel that slides in from any of four edges. Same composition\nmodel as Dialog (header / body / footer slots, controlled\n`[(open)]` state, focus trap on open, Esc + backdrop close), but\nanchored to a screen edge instead of centered.\n\nUse it for: settings panels, filter sidebars, mobile bottom sheets,\ntop notification trays. Body content scrolls when it overflows the\npanel; the panel itself stays fixed-size per `size` × `side`.",
1636
1656
  "examples": [],
1637
1657
  "inputs": [
@@ -1747,7 +1767,7 @@
1747
1767
  "Escape"
1748
1768
  ],
1749
1769
  "docsUrl": "https://gregnblack.github.io/kanso-protocol/?path=/docs/components-drawer--docs",
1750
- "sourcePath": "packages/components/drawer/src/drawer.component.ts",
1770
+ "sourcePath": "packages/ui/drawer/src/drawer.component.ts",
1751
1771
  "figma": {
1752
1772
  "fileKey": "ahRfe4BdMAyoK0I3lnicp6",
1753
1773
  "nodeId": "3805:11099",
@@ -1767,7 +1787,8 @@
1767
1787
  "className": "KpEmptyStateComponent",
1768
1788
  "selector": "kp-empty-state",
1769
1789
  "layer": "components",
1770
- "package": "@kanso-protocol/empty-state",
1790
+ "package": "@kanso-protocol/ui",
1791
+ "import": "@kanso-protocol/ui/empty-state",
1771
1792
  "description": "Kanso Protocol — EmptyState\n\nCentered placeholder for empty lists, missing data, or zero-result\nscreens. Composes a circular illustration container, title,\ndescription, and an actions row. Project the illustration via\n`[kpEmptyStateIcon]` and footer buttons via `[kpEmptyStateActions]`.",
1772
1793
  "examples": [],
1773
1794
  "inputs": [
@@ -1811,7 +1832,7 @@
1811
1832
  ],
1812
1833
  "keyboardPatterns": [],
1813
1834
  "docsUrl": "https://gregnblack.github.io/kanso-protocol/?path=/docs/components-emptystate--docs",
1814
- "sourcePath": "packages/components/empty-state/src/empty-state.component.ts",
1835
+ "sourcePath": "packages/ui/empty-state/src/empty-state.component.ts",
1815
1836
  "figma": {
1816
1837
  "fileKey": "ahRfe4BdMAyoK0I3lnicp6",
1817
1838
  "nodeId": "3805:11095",
@@ -1831,7 +1852,8 @@
1831
1852
  "className": "KpFileUploadComponent",
1832
1853
  "selector": "kp-file-upload",
1833
1854
  "layer": "components",
1834
- "package": "@kanso-protocol/file-upload",
1855
+ "package": "@kanso-protocol/ui",
1856
+ "import": "@kanso-protocol/ui/file-upload",
1835
1857
  "description": "Kanso Protocol — FileUpload (dropzone)\n\nClick-to-browse + drag-and-drop. Constraints:\n`[accept]` MIME / extension list, `[maxSize]` bytes per file,\n`[maxFiles]` total count, `[multiple]` toggle.\n\nEmits `(filesAdded)` for accepted files (the consumer owns the upload\nloop and reports back via `setProgress` / `setStatus`) and\n`(filesRejected)` for the rest. Selected files are tracked in `files`\nso the UI can show a status list with progress + remove.",
1836
1858
  "examples": [
1837
1859
  "<kp-file-upload\n [multiple]=\"true\"\n accept=\"image/*,.pdf\"\n [maxSize]=\"5 * 1024 * 1024\"\n [maxFiles]=\"10\"\n (filesAdded)=\"upload($event)\"\n (filesRejected)=\"warn($event)\"\n (fileRemoved)=\"cancel($event)\"\n/>"
@@ -1913,15 +1935,15 @@
1913
1935
  "outputs": [
1914
1936
  {
1915
1937
  "name": "filesAdded",
1916
- "payload": "import(\"/home/runner/work/kanso-protocol/kanso-protocol/packages/components/file-upload/src/file-upload.component\").KpUploadFile[]"
1938
+ "payload": "import(\"/home/runner/work/kanso-protocol/kanso-protocol/packages/ui/file-upload/src/file-upload.component\").KpUploadFile[]"
1917
1939
  },
1918
1940
  {
1919
1941
  "name": "filesRejected",
1920
- "payload": "import(\"/home/runner/work/kanso-protocol/kanso-protocol/packages/components/file-upload/src/file-upload.component\").KpFileRejection[]"
1942
+ "payload": "import(\"/home/runner/work/kanso-protocol/kanso-protocol/packages/ui/file-upload/src/file-upload.component\").KpFileRejection[]"
1921
1943
  },
1922
1944
  {
1923
1945
  "name": "fileRemoved",
1924
- "payload": "import(\"/home/runner/work/kanso-protocol/kanso-protocol/packages/components/file-upload/src/file-upload.component\").KpUploadFile"
1946
+ "payload": "import(\"/home/runner/work/kanso-protocol/kanso-protocol/packages/ui/file-upload/src/file-upload.component\").KpUploadFile"
1925
1947
  }
1926
1948
  ],
1927
1949
  "ariaRole": null,
@@ -1932,7 +1954,7 @@
1932
1954
  ],
1933
1955
  "keyboardPatterns": [],
1934
1956
  "docsUrl": "https://gregnblack.github.io/kanso-protocol/?path=/docs/components-fileupload--docs",
1935
- "sourcePath": "packages/components/file-upload/src/file-upload.component.ts",
1957
+ "sourcePath": "packages/ui/file-upload/src/file-upload.component.ts",
1936
1958
  "figma": {
1937
1959
  "fileKey": "ahRfe4BdMAyoK0I3lnicp6",
1938
1960
  "nodeId": "4110:11270",
@@ -1952,7 +1974,8 @@
1952
1974
  "className": "KpFormFieldComponent",
1953
1975
  "selector": "kp-form-field",
1954
1976
  "layer": "components",
1955
- "package": "@kanso-protocol/form-field",
1977
+ "package": "@kanso-protocol/ui",
1978
+ "import": "@kanso-protocol/ui/form-field",
1956
1979
  "description": "Kanso Protocol — FormField\n\nWraps any form control with a label, optional/required marker, and a\nfooter that renders either a helper text (rest state) or a validation\nerror message (when the projected control is invalid and was touched\nor dirty).\n\n**Auto-error mode.** Project any Angular form control — `[formControl]`,\n`[formControlName]`, `ngModel`, or a custom directive that implements\n`ControlValueAccessor`. FormField finds the `NgControl` via content\nprojection, subscribes to its status/value changes, and surfaces the\nerror from `control.errors` using a lookup against the validation\nmessage registry (see `KP_VALIDATION_MESSAGES`). Per-field messages\noverride the registry via the `[errors]` input.\n\n**Manual mode.** Pass `[error]=\"true\"` + a custom `[helper]` text if\nyou want full control over the error display (e.g. when the validation\nstate lives outside Angular Forms).",
1957
1980
  "examples": [
1958
1981
  "Auto-error from a reactive FormControl:\n<kp-form-field label=\"Email\" required=\"required-asterisk\">\n<kp-input [formControl]=\"email\" />\n</kp-form-field>",
@@ -2007,7 +2030,7 @@
2007
2030
  "sizeRamp": [],
2008
2031
  "keyboardPatterns": [],
2009
2032
  "docsUrl": "https://gregnblack.github.io/kanso-protocol/?path=/docs/components-formfield--docs",
2010
- "sourcePath": "packages/components/form-field/src/form-field.component.ts",
2033
+ "sourcePath": "packages/ui/form-field/src/form-field.component.ts",
2011
2034
  "figma": {
2012
2035
  "fileKey": "ahRfe4BdMAyoK0I3lnicp6",
2013
2036
  "nodeId": "3805:11016",
@@ -2027,7 +2050,8 @@
2027
2050
  "className": "KpIconComponent",
2028
2051
  "selector": "kp-icon",
2029
2052
  "layer": "components",
2030
- "package": "@kanso-protocol/icon",
2053
+ "package": "@kanso-protocol/ui",
2054
+ "import": "@kanso-protocol/ui/icon",
2031
2055
  "description": "Kanso Protocol — Icon Component\n\nRenders Tabler Icons SVGs inline with stroke-width auto-tuned per size.\nThe same `name` strings work in code and Figma (the `tabler/{name}` master\ncomponents on the Foundations » Tabler Icons page mirror this set).",
2032
2056
  "examples": [
2033
2057
  "<kp-icon name=\"search\" size=\"md\" />\n<kp-icon name=\"star-filled\" size=\"sm\" />\n<kp-icon [name]=\"dynamicName\" size=\"lg\" />\n\nNeed an icon outside the default set? Register at startup:\n\n KP_ICON_REGISTRY.register('my-logo', '<svg viewBox=\"0 0 24 24\">…</svg>');"
@@ -2038,7 +2062,7 @@
2038
2062
  "sizeRamp": [],
2039
2063
  "keyboardPatterns": [],
2040
2064
  "docsUrl": "https://gregnblack.github.io/kanso-protocol/?path=/docs/components-icon--docs",
2041
- "sourcePath": "packages/components/icon/src/icon.component.ts",
2065
+ "sourcePath": "packages/ui/icon/src/icon.component.ts",
2042
2066
  "codeConnect": {
2043
2067
  "npm": "@kanso-protocol/icon",
2044
2068
  "primaryClass": "KpIconComponent",
@@ -2053,7 +2077,8 @@
2053
2077
  "className": "KpInputComponent",
2054
2078
  "selector": "kp-input",
2055
2079
  "layer": "components",
2056
- "package": "@kanso-protocol/input",
2080
+ "package": "@kanso-protocol/ui",
2081
+ "import": "@kanso-protocol/ui/input",
2057
2082
  "description": "Kanso Protocol — Input Component\n\nAnatomy: Container → Content → Elements (icon-left, input, icon-right)\nSupports: 5 sizes × 7 states (rest/hover/active/focus/disabled/loading/error)\nFloating Label: available for lg and xl sizes",
2058
2083
  "examples": [
2059
2084
  "<kp-input size=\"md\" placeholder=\"Enter text\"></kp-input>\n<kp-input size=\"lg\" label=\"Email\" [floatingLabel]=\"true\"></kp-input>"
@@ -2131,7 +2156,7 @@
2131
2156
  ],
2132
2157
  "keyboardPatterns": [],
2133
2158
  "docsUrl": "https://gregnblack.github.io/kanso-protocol/?path=/docs/components-input--docs",
2134
- "sourcePath": "packages/components/input/src/input.component.ts",
2159
+ "sourcePath": "packages/ui/input/src/input.component.ts",
2135
2160
  "figma": {
2136
2161
  "fileKey": "ahRfe4BdMAyoK0I3lnicp6",
2137
2162
  "nodeId": "3805:10997",
@@ -2151,7 +2176,8 @@
2151
2176
  "className": "KpMarkdownViewerComponent",
2152
2177
  "selector": "kp-markdown-viewer",
2153
2178
  "layer": "components",
2154
- "package": "@kanso-protocol/markdown-viewer",
2179
+ "package": "@kanso-protocol/ui",
2180
+ "import": "@kanso-protocol/ui/markdown-viewer",
2155
2181
  "description": "Kanso Protocol — MarkdownViewer\n\nRead-only markdown renderer. Pairs with `<kp-rich-text-editor>` (which\nis HTML-only) for repos / docs / READMEs / changelog viewers.\n\nDefault parser is `marked` (already a dev-dep transitive in many Angular\nsetups; declared here as a runtime dep so the component is self-contained).\nPass `[parser]` to swap in `markdown-it`, `remark`, or a custom parser\nwhen you need plugin support beyond CommonMark + GFM.\n\nOutput is sanitized via `DomSanitizer.bypassSecurityTrustHtml` only when\n`[trusted]=true`. With `trusted=false` (default) the inner HTML goes\nthrough Angular's automatic sanitization, which strips `<script>`,\ninline event handlers, and `javascript:` URLs.",
2156
2182
  "examples": [
2157
2183
  "<kp-markdown-viewer\n size=\"md\"\n [content]=\"readme\"\n/>",
@@ -2192,7 +2218,7 @@
2192
2218
  ],
2193
2219
  "keyboardPatterns": [],
2194
2220
  "docsUrl": "https://gregnblack.github.io/kanso-protocol/?path=/docs/components-markdownviewer--docs",
2195
- "sourcePath": "packages/components/markdown-viewer/src/markdown-viewer.component.ts",
2221
+ "sourcePath": "packages/ui/markdown-viewer/src/markdown-viewer.component.ts",
2196
2222
  "figma": {
2197
2223
  "fileKey": "ahRfe4BdMAyoK0I3lnicp6",
2198
2224
  "nodeId": "4109:11282",
@@ -2212,7 +2238,8 @@
2212
2238
  "className": "KpDropdownMenuComponent",
2213
2239
  "selector": "kp-dropdown-menu",
2214
2240
  "layer": "components",
2215
- "package": "@kanso-protocol/menu",
2241
+ "package": "@kanso-protocol/ui",
2242
+ "import": "@kanso-protocol/ui/menu",
2216
2243
  "description": "Kanso Protocol — DropdownMenu\n\nFloating panel container for menu items. Projects any menu content:\nMenuItem, MenuDivider, MenuSectionLabel.\n\nOptional Search at the top and Footer with 1–2 full-width buttons at the bottom.",
2217
2244
  "examples": [
2218
2245
  "<kp-dropdown-menu\n [hasSearch]=\"true\"\n [hasFooter]=\"true\"\n [showCancel]=\"true\"\n primaryLabel=\"Apply\"\n cancelLabel=\"Cancel\"\n (primary)=\"apply()\"\n (cancel)=\"close()\">\n <kp-menu-item label=\"Profile\"/>\n</kp-dropdown-menu>"
@@ -2279,7 +2306,7 @@
2279
2306
  "sizeRamp": [],
2280
2307
  "keyboardPatterns": [],
2281
2308
  "docsUrl": "https://gregnblack.github.io/kanso-protocol/?path=/docs/components-menu--docs",
2282
- "sourcePath": "packages/components/menu/src/dropdown-menu.component.ts",
2309
+ "sourcePath": "packages/ui/menu/src/dropdown-menu.component.ts",
2283
2310
  "figma": {
2284
2311
  "fileKey": "ahRfe4BdMAyoK0I3lnicp6",
2285
2312
  "nodeId": "3805:11020",
@@ -2299,7 +2326,8 @@
2299
2326
  "className": "KpMenuDividerComponent",
2300
2327
  "selector": "kp-menu-divider",
2301
2328
  "layer": "components",
2302
- "package": "@kanso-protocol/menu",
2329
+ "package": "@kanso-protocol/ui",
2330
+ "import": "@kanso-protocol/ui/menu",
2303
2331
  "description": "Kanso Protocol — MenuDivider\n\nThin horizontal separator between groups of menu items.",
2304
2332
  "examples": [],
2305
2333
  "inputs": [],
@@ -2308,7 +2336,7 @@
2308
2336
  "sizeRamp": [],
2309
2337
  "keyboardPatterns": [],
2310
2338
  "docsUrl": "https://gregnblack.github.io/kanso-protocol/?path=/docs/components-menu--docs",
2311
- "sourcePath": "packages/components/menu/src/menu-divider.component.ts",
2339
+ "sourcePath": "packages/ui/menu/src/menu-divider.component.ts",
2312
2340
  "figma": {
2313
2341
  "fileKey": "ahRfe4BdMAyoK0I3lnicp6",
2314
2342
  "nodeId": "3805:11020",
@@ -2328,7 +2356,8 @@
2328
2356
  "className": "KpMenuItemComponent",
2329
2357
  "selector": "kp-menu-item",
2330
2358
  "layer": "components",
2331
- "package": "@kanso-protocol/menu",
2359
+ "package": "@kanso-protocol/ui",
2360
+ "import": "@kanso-protocol/ui/menu",
2332
2361
  "description": "Kanso Protocol — MenuItem\n\nSingle option inside a DropdownMenu. Supports 3 sizes, optional icon slot,\ndescription (lg), shortcut/chevron trailing, and selected/danger variants.\n\nProjection slots:\n [kpMenuItemLeading] — slot before label (e.g. Checkbox/Radio)\n [kpMenuItemIcon] — icon left slot\n [kpMenuItemTrailing] — custom trailing content (overrides shortcut/chevron)",
2333
2362
  "examples": [
2334
2363
  "<kp-menu-item label=\"Edit\" shortcut=\"⌘E\">\n <svg kpMenuItemIcon>...</svg>\n</kp-menu-item>"
@@ -2398,7 +2427,7 @@
2398
2427
  ],
2399
2428
  "keyboardPatterns": [],
2400
2429
  "docsUrl": "https://gregnblack.github.io/kanso-protocol/?path=/docs/components-menu--docs",
2401
- "sourcePath": "packages/components/menu/src/menu-item.component.ts",
2430
+ "sourcePath": "packages/ui/menu/src/menu-item.component.ts",
2402
2431
  "figma": {
2403
2432
  "fileKey": "ahRfe4BdMAyoK0I3lnicp6",
2404
2433
  "nodeId": "3805:11020",
@@ -2418,7 +2447,8 @@
2418
2447
  "className": "KpMenuSectionLabelComponent",
2419
2448
  "selector": "kp-menu-section-label",
2420
2449
  "layer": "components",
2421
- "package": "@kanso-protocol/menu",
2450
+ "package": "@kanso-protocol/ui",
2451
+ "import": "@kanso-protocol/ui/menu",
2422
2452
  "description": "Kanso Protocol — MenuSectionLabel\n\nSmall uppercase heading used to group items inside a DropdownMenu.",
2423
2453
  "examples": [],
2424
2454
  "inputs": [
@@ -2434,7 +2464,7 @@
2434
2464
  "sizeRamp": [],
2435
2465
  "keyboardPatterns": [],
2436
2466
  "docsUrl": "https://gregnblack.github.io/kanso-protocol/?path=/docs/components-menu--docs",
2437
- "sourcePath": "packages/components/menu/src/menu-section-label.component.ts",
2467
+ "sourcePath": "packages/ui/menu/src/menu-section-label.component.ts",
2438
2468
  "figma": {
2439
2469
  "fileKey": "ahRfe4BdMAyoK0I3lnicp6",
2440
2470
  "nodeId": "3805:11020",
@@ -2454,7 +2484,8 @@
2454
2484
  "className": "KpNumberStepperComponent",
2455
2485
  "selector": "kp-number-stepper",
2456
2486
  "layer": "components",
2457
- "package": "@kanso-protocol/number-stepper",
2487
+ "package": "@kanso-protocol/ui",
2488
+ "import": "@kanso-protocol/ui/number-stepper",
2458
2489
  "description": "Kanso Protocol — NumberStepper Component\n\nNumeric input with − and + controls integrated into one rounded container.\nMirrors Input's size grammar so a NumberStepper sits flush next to an Input\nof the same size in a form row.",
2459
2490
  "examples": [
2460
2491
  "<kp-number-stepper [(ngModel)]=\"qty\" [min]=\"0\" [max]=\"10\"/>\n<kp-number-stepper size=\"lg\" [(ngModel)]=\"weight\" suffix=\"kg\"/>"
@@ -2526,7 +2557,7 @@
2526
2557
  ],
2527
2558
  "keyboardPatterns": [],
2528
2559
  "docsUrl": "https://gregnblack.github.io/kanso-protocol/?path=/docs/components-numberstepper--docs",
2529
- "sourcePath": "packages/components/number-stepper/src/number-stepper.component.ts",
2560
+ "sourcePath": "packages/ui/number-stepper/src/number-stepper.component.ts",
2530
2561
  "figma": {
2531
2562
  "fileKey": "ahRfe4BdMAyoK0I3lnicp6",
2532
2563
  "nodeId": "3805:11032",
@@ -2546,7 +2577,8 @@
2546
2577
  "className": "KpPaginationItemComponent",
2547
2578
  "selector": "kp-pagination-item",
2548
2579
  "layer": "components",
2549
- "package": "@kanso-protocol/pagination",
2580
+ "package": "@kanso-protocol/ui",
2581
+ "import": "@kanso-protocol/ui/pagination",
2550
2582
  "description": "Kanso Protocol — PaginationItem (atom)\n\nSingle cell in a pagination strip. Renders as a page-pill for\n`type=\"page\"` (rounded-square with size-specific radius), a\nchevron/text-nav button for `type=\"nav\"`, or a static `…`\nellipsis for `type=\"ellipsis\"`.\n\nUsually driven by the parent `<kp-pagination>`. You can drop items\nstandalone if you're assembling a bespoke pagination layout, but for\nthe common case let the container compute the range and emit events.",
2551
2583
  "examples": [],
2552
2584
  "inputs": [
@@ -2619,7 +2651,7 @@
2619
2651
  ],
2620
2652
  "keyboardPatterns": [],
2621
2653
  "docsUrl": "https://gregnblack.github.io/kanso-protocol/?path=/docs/components-pagination--docs",
2622
- "sourcePath": "packages/components/pagination/src/pagination-item.component.ts",
2654
+ "sourcePath": "packages/ui/pagination/src/pagination-item.component.ts",
2623
2655
  "figma": {
2624
2656
  "fileKey": "ahRfe4BdMAyoK0I3lnicp6",
2625
2657
  "nodeId": "3805:11076",
@@ -2639,7 +2671,8 @@
2639
2671
  "className": "KpPaginationComponent",
2640
2672
  "selector": "kp-pagination",
2641
2673
  "layer": "components",
2642
- "package": "@kanso-protocol/pagination",
2674
+ "package": "@kanso-protocol/ui",
2675
+ "import": "@kanso-protocol/ui/pagination",
2643
2676
  "description": "Kanso Protocol — Pagination\n\nPage-strip with prev/next nav, page pills, and optional \"Showing X of Y\" +\nitems-per-page selector. Computes the truncation range itself — callers\nonly provide `currentPage`, `totalPages`, and (if wanted) items-per-page\nstate and listen for `(pageChange)` / `(itemsPerPageChange)`.",
2644
2677
  "examples": [
2645
2678
  "<kp-pagination\n [currentPage]=\"page\"\n [totalPages]=\"20\"\n [showItemsInfo]=\"true\"\n [itemsPerPage]=\"pageSize\"\n [itemsTotal]=\"total\"\n [showItemsPerPage]=\"true\"\n (pageChange)=\"page = $event\"\n (itemsPerPageChange)=\"pageSize = $event\"\n/>"
@@ -2748,7 +2781,7 @@
2748
2781
  ],
2749
2782
  "keyboardPatterns": [],
2750
2783
  "docsUrl": "https://gregnblack.github.io/kanso-protocol/?path=/docs/components-pagination--docs",
2751
- "sourcePath": "packages/components/pagination/src/pagination.component.ts",
2784
+ "sourcePath": "packages/ui/pagination/src/pagination.component.ts",
2752
2785
  "figma": {
2753
2786
  "fileKey": "ahRfe4BdMAyoK0I3lnicp6",
2754
2787
  "nodeId": "3805:11076",
@@ -2768,7 +2801,8 @@
2768
2801
  "className": "KpPopoverComponent",
2769
2802
  "selector": "kp-popover",
2770
2803
  "layer": "components",
2771
- "package": "@kanso-protocol/popover",
2804
+ "package": "@kanso-protocol/ui",
2805
+ "import": "@kanso-protocol/ui/popover",
2772
2806
  "description": "Kanso Protocol — Popover\n\nFloating panel with optional header / body / footer and an optional\ndirectional arrow (4 sides × 3 anchors). Visual chrome only —\npositioning, show/hide and portaling are the caller's responsibility.\n\nThe host container uses `filter: drop-shadow()` so the shadow follows\nthe combined silhouette of body + arrow, and grows automatically with\ncontent.",
2773
2807
  "examples": [
2774
2808
  "<kp-popover size=\"md\" arrowPosition=\"top-center\"\n title=\"Delete this item?\" description=\"This action cannot be undone.\"\n [closable]=\"true\" (close)=\"cancel()\">\n <button kpButton kpPopoverFooter size=\"sm\" variant=\"ghost\">Cancel</button>\n <button kpButton kpPopoverFooter size=\"sm\" color=\"danger\">Delete</button>\n</kp-popover>"
@@ -2851,7 +2885,7 @@
2851
2885
  "Space"
2852
2886
  ],
2853
2887
  "docsUrl": "https://gregnblack.github.io/kanso-protocol/?path=/docs/components-popover--docs",
2854
- "sourcePath": "packages/components/popover/src/popover.component.ts",
2888
+ "sourcePath": "packages/ui/popover/src/popover.component.ts",
2855
2889
  "figma": {
2856
2890
  "fileKey": "ahRfe4BdMAyoK0I3lnicp6",
2857
2891
  "nodeId": "3805:11052",
@@ -2871,7 +2905,8 @@
2871
2905
  "className": "KpPopoverDirective",
2872
2906
  "selector": "[kpPopover]",
2873
2907
  "layer": "components",
2874
- "package": "@kanso-protocol/popover",
2908
+ "package": "@kanso-protocol/ui",
2909
+ "import": "@kanso-protocol/ui/popover",
2875
2910
  "description": "Kanso Protocol — Popover directive.\n\nAttaches a floating panel to any element. The panel content is a\n`TemplateRef`, so you control its markup completely (a menu, a form,\na `<kp-popover>` chrome component, anything).\n\nTriggers:\n- `click` (default) — toggle on click; close on outside-click / Escape\n- `hover` — open on mouseenter, close on mouseleave (with a small grace delay)\n- `manual` — only `open()` / `close()` / `toggle()` from a template ref\n\nPositioned against the trigger with viewport-edge flipping (shared math\nwith the tooltip directive). Renders into the nearest open `<dialog>`\n(so it sits above modals) or `document.body`.",
2876
2911
  "examples": [
2877
2912
  "<button [kpPopover]=\"menuTpl\">Actions</button>\n<ng-template #menuTpl>\n <kp-popover [closable]=\"false\">\n <button kpButton variant=\"ghost\">Edit</button>\n <button kpButton variant=\"ghost\" color=\"danger\">Delete</button>\n </kp-popover>\n</ng-template>",
@@ -2925,7 +2960,7 @@
2925
2960
  "Escape"
2926
2961
  ],
2927
2962
  "docsUrl": "https://gregnblack.github.io/kanso-protocol/?path=/docs/components-popover--docs",
2928
- "sourcePath": "packages/components/popover/src/popover.directive.ts",
2963
+ "sourcePath": "packages/ui/popover/src/popover.directive.ts",
2929
2964
  "figma": {
2930
2965
  "fileKey": "ahRfe4BdMAyoK0I3lnicp6",
2931
2966
  "nodeId": "3805:11052",
@@ -2945,7 +2980,8 @@
2945
2980
  "className": "KpProgressCircularComponent",
2946
2981
  "selector": "kp-progress-circular",
2947
2982
  "layer": "components",
2948
- "package": "@kanso-protocol/progress",
2983
+ "package": "@kanso-protocol/ui",
2984
+ "import": "@kanso-protocol/ui/progress",
2949
2985
  "description": "Kanso Protocol — ProgressCircular\n\nCircular determinate or indeterminate progress, drawn as two SVG\ncircles — a full track ring and a stroked arc that sweeps clockwise\nfrom 12 o'clock.",
2950
2986
  "examples": [
2951
2987
  "<kp-progress-circular [value]=\"65\" color=\"primary\" [showValue]=\"true\"/>\n<kp-progress-circular [indeterminate]=\"true\" size=\"md\"/>"
@@ -3001,7 +3037,7 @@
3001
3037
  "Space"
3002
3038
  ],
3003
3039
  "docsUrl": "https://gregnblack.github.io/kanso-protocol/?path=/docs/components-progress--docs",
3004
- "sourcePath": "packages/components/progress/src/progress-circular.component.ts",
3040
+ "sourcePath": "packages/ui/progress/src/progress-circular.component.ts",
3005
3041
  "figma": {
3006
3042
  "fileKey": "ahRfe4BdMAyoK0I3lnicp6",
3007
3043
  "nodeId": "3805:11056",
@@ -3021,7 +3057,8 @@
3021
3057
  "className": "KpProgressLinearComponent",
3022
3058
  "selector": "kp-progress-linear",
3023
3059
  "layer": "components",
3024
- "package": "@kanso-protocol/progress",
3060
+ "package": "@kanso-protocol/ui",
3061
+ "import": "@kanso-protocol/ui/progress",
3025
3062
  "description": "Kanso Protocol — ProgressLinear\n\nHorizontal determinate or indeterminate progress bar, with an optional\nlabel/value pair either stacked above or sitting inline to the right.",
3026
3063
  "examples": [
3027
3064
  "<kp-progress-linear [value]=\"45\" color=\"success\" [showLabel]=\"true\" label=\"Uploading\"/>\n<kp-progress-linear [indeterminate]=\"true\" color=\"primary\"/>"
@@ -3086,7 +3123,7 @@
3086
3123
  ],
3087
3124
  "keyboardPatterns": [],
3088
3125
  "docsUrl": "https://gregnblack.github.io/kanso-protocol/?path=/docs/components-progress--docs",
3089
- "sourcePath": "packages/components/progress/src/progress-linear.component.ts",
3126
+ "sourcePath": "packages/ui/progress/src/progress-linear.component.ts",
3090
3127
  "figma": {
3091
3128
  "fileKey": "ahRfe4BdMAyoK0I3lnicp6",
3092
3129
  "nodeId": "3805:11056",
@@ -3106,7 +3143,8 @@
3106
3143
  "className": "KpProgressSegmentedComponent",
3107
3144
  "selector": "kp-progress-segmented",
3108
3145
  "layer": "components",
3109
- "package": "@kanso-protocol/progress",
3146
+ "package": "@kanso-protocol/ui",
3147
+ "import": "@kanso-protocol/ui/progress",
3110
3148
  "description": "Kanso Protocol — ProgressSegmented\n\nStepper-style progress: a row of pill-shaped segments, each filled when\nits step is complete. Use for multi-step flows (Details → Review →\nConfirm → Done) where the user can see both total and current step at a\nglance.",
3111
3149
  "examples": [
3112
3150
  "<kp-progress-segmented [total]=\"4\" [current]=\"2\"\n [showLabels]=\"true\" [labels]=\"['Details','Payment','Review','Done']\"\n [showStepCounter]=\"true\"/>"
@@ -3177,7 +3215,7 @@
3177
3215
  ],
3178
3216
  "keyboardPatterns": [],
3179
3217
  "docsUrl": "https://gregnblack.github.io/kanso-protocol/?path=/docs/components-progress--docs",
3180
- "sourcePath": "packages/components/progress/src/progress-segmented.component.ts",
3218
+ "sourcePath": "packages/ui/progress/src/progress-segmented.component.ts",
3181
3219
  "figma": {
3182
3220
  "fileKey": "ahRfe4BdMAyoK0I3lnicp6",
3183
3221
  "nodeId": "3805:11056",
@@ -3197,7 +3235,8 @@
3197
3235
  "className": "KpRadioGroupComponent",
3198
3236
  "selector": "kp-radio-group",
3199
3237
  "layer": "components",
3200
- "package": "@kanso-protocol/radio",
3238
+ "package": "@kanso-protocol/ui",
3239
+ "import": "@kanso-protocol/ui/radio",
3201
3240
  "description": "Kanso Protocol — Radio Group\n\nContainer that coordinates a set of kp-radio elements. Selecting one\nautomatically deselects the others. Integrates with Reactive/Template forms.",
3202
3241
  "examples": [
3203
3242
  "<kp-radio-group [(value)]=\"selected\" name=\"plan\">\n <kp-radio value=\"free\">Free</kp-radio>\n <kp-radio value=\"pro\">Pro</kp-radio>\n <kp-radio value=\"team\">Team</kp-radio>\n</kp-radio-group>"
@@ -3238,7 +3277,7 @@
3238
3277
  "sizeRamp": [],
3239
3278
  "keyboardPatterns": [],
3240
3279
  "docsUrl": "https://gregnblack.github.io/kanso-protocol/?path=/docs/components-radio--docs",
3241
- "sourcePath": "packages/components/radio/src/radio-group.component.ts",
3280
+ "sourcePath": "packages/ui/radio/src/radio-group.component.ts",
3242
3281
  "figma": {
3243
3282
  "fileKey": "ahRfe4BdMAyoK0I3lnicp6",
3244
3283
  "nodeId": "3805:11005",
@@ -3258,7 +3297,8 @@
3258
3297
  "className": "KpRadioComponent",
3259
3298
  "selector": "kp-radio",
3260
3299
  "layer": "components",
3261
- "package": "@kanso-protocol/radio",
3300
+ "package": "@kanso-protocol/ui",
3301
+ "import": "@kanso-protocol/ui/radio",
3262
3302
  "description": "Kanso Protocol — Radio\n\nWraps a real native `<input type=\"radio\">` inside a styled `<label>`.\nInside a `<kp-radio-group>`, radios share a `name` and the browser\nenforces single-selection natively (no manual deselection logic).\nIn a `<form>`, FormData picks up the checked radio's value.",
3263
3303
  "examples": [
3264
3304
  "<kp-radio-group [(value)]=\"selected\" name=\"plan\">\n <kp-radio value=\"free\">Free</kp-radio>\n <kp-radio value=\"pro\">Pro</kp-radio>\n</kp-radio-group>"
@@ -3339,7 +3379,7 @@
3339
3379
  ],
3340
3380
  "keyboardPatterns": [],
3341
3381
  "docsUrl": "https://gregnblack.github.io/kanso-protocol/?path=/docs/components-radio--docs",
3342
- "sourcePath": "packages/components/radio/src/radio.component.ts",
3382
+ "sourcePath": "packages/ui/radio/src/radio.component.ts",
3343
3383
  "figma": {
3344
3384
  "fileKey": "ahRfe4BdMAyoK0I3lnicp6",
3345
3385
  "nodeId": "3805:11005",
@@ -3359,7 +3399,8 @@
3359
3399
  "className": "KpRichTextEditorComponent",
3360
3400
  "selector": "kp-rich-text-editor",
3361
3401
  "layer": "components",
3362
- "package": "@kanso-protocol/rich-text-editor",
3402
+ "package": "@kanso-protocol/ui",
3403
+ "import": "@kanso-protocol/ui/rich-text-editor",
3363
3404
  "description": "Kanso Protocol — Rich Text Editor\n\nToolbar + editable surface built on TipTap (headless ProseMirror).\nValue shape: HTML string. ControlValueAccessor ready, so it plugs into\nReactive / Template-driven forms the same way as `<kp-input>`.\n\nToolbar groups:\n · history — undo / redo\n · inline marks — bold · italic · underline · strikethrough · code\n · blocks — H1 · H2 · H3 · blockquote · code-block · horizontal rule\n · lists — bullet · ordered\n · alignment — left · center · right\n · link — prompts for URL (future: popover with input)\n · image — emits `(imageUpload)` so the host app handles storage",
3364
3405
  "examples": [
3365
3406
  "<kp-rich-text-editor\n [(ngModel)]=\"content\"\n placeholder=\"Write your post…\"\n (imageUpload)=\"uploadAndResolve($event)\" />"
@@ -3416,7 +3457,7 @@
3416
3457
  "Escape"
3417
3458
  ],
3418
3459
  "docsUrl": "https://gregnblack.github.io/kanso-protocol/?path=/docs/components-richtexteditor--docs",
3419
- "sourcePath": "packages/components/rich-text-editor/src/rich-text-editor.component.ts",
3460
+ "sourcePath": "packages/ui/rich-text-editor/src/rich-text-editor.component.ts",
3420
3461
  "figma": {
3421
3462
  "fileKey": "ahRfe4BdMAyoK0I3lnicp6",
3422
3463
  "nodeId": "3849:11648",
@@ -3436,7 +3477,8 @@
3436
3477
  "className": "KpSegmentedControlComponent",
3437
3478
  "selector": "kp-segmented-control",
3438
3479
  "layer": "components",
3439
- "package": "@kanso-protocol/segmented-control",
3480
+ "package": "@kanso-protocol/ui",
3481
+ "import": "@kanso-protocol/ui/segmented-control",
3440
3482
  "description": "Kanso Protocol — SegmentedControl\n\nPill-style switcher backed by real native `<input type=\"radio\">` group.\nBrowser handles mutual-exclusion + arrow-key navigation; in a `<form>`\nthe checked radio's value goes into FormData. The visual \"pill\" is a\nseparate absolutely-positioned element that animates to the selected\nsegment.",
3441
3483
  "examples": [
3442
3484
  "<kp-segmented-control\n [options]=\"[{value:'day',label:'Day'},{value:'week',label:'Week'}]\"\n [(ngModel)]=\"period\">\n</kp-segmented-control>"
@@ -3489,7 +3531,7 @@
3489
3531
  ],
3490
3532
  "keyboardPatterns": [],
3491
3533
  "docsUrl": "https://gregnblack.github.io/kanso-protocol/?path=/docs/components-segmentedcontrol--docs",
3492
- "sourcePath": "packages/components/segmented-control/src/segmented-control.component.ts",
3534
+ "sourcePath": "packages/ui/segmented-control/src/segmented-control.component.ts",
3493
3535
  "figma": {
3494
3536
  "fileKey": "ahRfe4BdMAyoK0I3lnicp6",
3495
3537
  "nodeId": "3805:11036",
@@ -3509,7 +3551,8 @@
3509
3551
  "className": "KpSelectComponent",
3510
3552
  "selector": "kp-select",
3511
3553
  "layer": "components",
3512
- "package": "@kanso-protocol/select",
3554
+ "package": "@kanso-protocol/ui",
3555
+ "import": "@kanso-protocol/ui/select",
3513
3556
  "description": "Kanso Protocol — Select Component\n\nCombines an Input-style trigger with a DropdownMenu panel. Supports\nsingle and multiple selection, floating label (lg/xl), clear button,\nand the standard 7-state model shared with Input.",
3514
3557
  "examples": [
3515
3558
  "<kp-select size=\"md\" placeholder=\"Pick one\" [options]=\"countries\" [(ngModel)]=\"country\"/>\n<kp-select [multiple]=\"true\" [options]=\"tags\" [(ngModel)]=\"picked\"/>"
@@ -3600,7 +3643,7 @@
3600
3643
  "Escape"
3601
3644
  ],
3602
3645
  "docsUrl": "https://gregnblack.github.io/kanso-protocol/?path=/docs/components-select--docs",
3603
- "sourcePath": "packages/components/select/src/select.component.ts",
3646
+ "sourcePath": "packages/ui/select/src/select.component.ts",
3604
3647
  "figma": {
3605
3648
  "fileKey": "ahRfe4BdMAyoK0I3lnicp6",
3606
3649
  "nodeId": "3805:11028",
@@ -3620,7 +3663,8 @@
3620
3663
  "className": "KpSkeletonComponent",
3621
3664
  "selector": "kp-skeleton",
3622
3665
  "layer": "components",
3623
- "package": "@kanso-protocol/skeleton",
3666
+ "package": "@kanso-protocol/ui",
3667
+ "import": "@kanso-protocol/ui/skeleton",
3624
3668
  "description": "Kanso Protocol — Skeleton\n\nStatic placeholder shown while real content is loading. Six shape\npresets cover the common patterns (line, circle, rectangle, avatar,\nbutton, card) with a size ramp. `animated` toggles the shimmer\ngradient — on by default.\n\nComposition: project children for complex placeholders. For simple\nskeletons, just drop `<kp-skeleton shape=\"line\" size=\"md\"/>` and\noptionally override `[width]` to fit the real content width.",
3625
3669
  "examples": [],
3626
3670
  "inputs": [
@@ -3666,7 +3710,7 @@
3666
3710
  ],
3667
3711
  "keyboardPatterns": [],
3668
3712
  "docsUrl": "https://gregnblack.github.io/kanso-protocol/?path=/docs/components-skeleton--docs",
3669
- "sourcePath": "packages/components/skeleton/src/skeleton.component.ts",
3713
+ "sourcePath": "packages/ui/skeleton/src/skeleton.component.ts",
3670
3714
  "figma": {
3671
3715
  "fileKey": "ahRfe4BdMAyoK0I3lnicp6",
3672
3716
  "nodeId": "3805:11107",
@@ -3686,7 +3730,8 @@
3686
3730
  "className": "KpSliderComponent",
3687
3731
  "selector": "kp-slider",
3688
3732
  "layer": "components",
3689
- "package": "@kanso-protocol/slider",
3733
+ "package": "@kanso-protocol/ui",
3734
+ "import": "@kanso-protocol/ui/slider",
3690
3735
  "description": "Kanso Protocol — Slider\n\nNumeric range input with a draggable thumb on a horizontal track.\n`mode=\"single\"` exposes one thumb; `mode=\"range\"` exposes two.\n\nPointer drag, arrow-key stepping, track-click targeting, and a full\nControlValueAccessor for reactive / template-driven forms. In range\nmode, `ngModel` is a `[number, number]` tuple; in single mode, a plain\n`number`.",
3691
3736
  "examples": [],
3692
3737
  "inputs": [
@@ -3778,7 +3823,7 @@
3778
3823
  "outputs": [
3779
3824
  {
3780
3825
  "name": "valueChange",
3781
- "payload": "import(\"/home/runner/work/kanso-protocol/kanso-protocol/packages/components/slider/src/slider.component\").KpSliderValue"
3826
+ "payload": "import(\"/home/runner/work/kanso-protocol/kanso-protocol/packages/ui/slider/src/slider.component\").KpSliderValue"
3782
3827
  }
3783
3828
  ],
3784
3829
  "ariaRole": null,
@@ -3798,7 +3843,7 @@
3798
3843
  "PageDown"
3799
3844
  ],
3800
3845
  "docsUrl": "https://gregnblack.github.io/kanso-protocol/?path=/docs/components-slider--docs",
3801
- "sourcePath": "packages/components/slider/src/slider.component.ts",
3846
+ "sourcePath": "packages/ui/slider/src/slider.component.ts",
3802
3847
  "figma": {
3803
3848
  "fileKey": "ahRfe4BdMAyoK0I3lnicp6",
3804
3849
  "nodeId": "3805:11111",
@@ -3818,7 +3863,8 @@
3818
3863
  "className": "KpTableCellDirective",
3819
3864
  "selector": "ng-template[kpTableCell]",
3820
3865
  "layer": "components",
3821
- "package": "@kanso-protocol/table",
3866
+ "package": "@kanso-protocol/ui",
3867
+ "import": "@kanso-protocol/ui/table",
3822
3868
  "description": "`<ng-template kpTableCell=\"columnId\" let-row let-i=\"index\">` — custom cell renderer per column.",
3823
3869
  "examples": [],
3824
3870
  "inputs": [
@@ -3834,7 +3880,7 @@
3834
3880
  "sizeRamp": [],
3835
3881
  "keyboardPatterns": [],
3836
3882
  "docsUrl": "https://gregnblack.github.io/kanso-protocol/?path=/docs/components-table--docs",
3837
- "sourcePath": "packages/components/table/src/table.component.ts",
3883
+ "sourcePath": "packages/ui/table/src/table.component.ts",
3838
3884
  "figma": {
3839
3885
  "fileKey": "ahRfe4BdMAyoK0I3lnicp6",
3840
3886
  "nodeId": "3805:11131",
@@ -3854,7 +3900,8 @@
3854
3900
  "className": "KpTableHeaderDirective",
3855
3901
  "selector": "ng-template[kpTableHeader]",
3856
3902
  "layer": "components",
3857
- "package": "@kanso-protocol/table",
3903
+ "package": "@kanso-protocol/ui",
3904
+ "import": "@kanso-protocol/ui/table",
3858
3905
  "description": "`<ng-template kpTableHeader=\"columnId\">` — custom header renderer per column.",
3859
3906
  "examples": [],
3860
3907
  "inputs": [
@@ -3870,7 +3917,7 @@
3870
3917
  "sizeRamp": [],
3871
3918
  "keyboardPatterns": [],
3872
3919
  "docsUrl": "https://gregnblack.github.io/kanso-protocol/?path=/docs/components-table--docs",
3873
- "sourcePath": "packages/components/table/src/table.component.ts",
3920
+ "sourcePath": "packages/ui/table/src/table.component.ts",
3874
3921
  "figma": {
3875
3922
  "fileKey": "ahRfe4BdMAyoK0I3lnicp6",
3876
3923
  "nodeId": "3805:11131",
@@ -3890,7 +3937,8 @@
3890
3937
  "className": "KpTableComponent",
3891
3938
  "selector": "kp-table",
3892
3939
  "layer": "components",
3893
- "package": "@kanso-protocol/table",
3940
+ "package": "@kanso-protocol/ui",
3941
+ "import": "@kanso-protocol/ui/table",
3894
3942
  "description": "Kanso Protocol — Table\n\nData-driven table with a columns schema, sortable headers, optional\nrow selection, striped / bordered variants, and template-per-column\ncell rendering via `<ng-template kpTableCell=\"id\">`.",
3895
3943
  "examples": [
3896
3944
  "<kp-table [columns]=\"cols\" [data]=\"rows\" [selectable]=\"true\" [(selected)]=\"picked\">\n <ng-template kpTableCell=\"status\" let-row>\n <kp-badge [color]=\"row.active ? 'success' : 'neutral'\">\n {{ row.active ? 'Active' : 'Inactive' }}\n </kp-badge>\n </ng-template>\n</kp-table>"
@@ -3964,7 +4012,7 @@
3964
4012
  },
3965
4013
  {
3966
4014
  "name": "sortChange",
3967
- "payload": "import(\"/home/runner/work/kanso-protocol/kanso-protocol/packages/components/table/src/table.component\").KpTableSort | null"
4015
+ "payload": "import(\"/home/runner/work/kanso-protocol/kanso-protocol/packages/ui/table/src/table.component\").KpTableSort | null"
3968
4016
  },
3969
4017
  {
3970
4018
  "name": "rowClick",
@@ -3979,7 +4027,7 @@
3979
4027
  ],
3980
4028
  "keyboardPatterns": [],
3981
4029
  "docsUrl": "https://gregnblack.github.io/kanso-protocol/?path=/docs/components-table--docs",
3982
- "sourcePath": "packages/components/table/src/table.component.ts",
4030
+ "sourcePath": "packages/ui/table/src/table.component.ts",
3983
4031
  "figma": {
3984
4032
  "fileKey": "ahRfe4BdMAyoK0I3lnicp6",
3985
4033
  "nodeId": "3805:11131",
@@ -3999,7 +4047,8 @@
3999
4047
  "className": "KpTabComponent",
4000
4048
  "selector": "button[kpTab]",
4001
4049
  "layer": "components",
4002
- "package": "@kanso-protocol/tabs",
4050
+ "package": "@kanso-protocol/ui",
4051
+ "import": "@kanso-protocol/ui/tabs",
4003
4052
  "description": "Kanso Protocol — Tab (atom)\n\nAttribute-selector on a real native `<button role=\"tab\">`. Sits inside\na `<kp-tabs role=\"tablist\">`. Native button gives Enter+Space\nactivation, focus-visible, and disabled. Arrow-key navigation between\ntabs is owned by the parent `<kp-tabs>` via roving tabindex.",
4004
4053
  "examples": [
4005
4054
  "<button kpTab label=\"Inbox\" [selected]=\"current === 'inbox'\" (click)=\"current='inbox'\">\n <svg kpTabIcon .../>\n <kp-badge kpTabBadge>12</kp-badge>\n</button>"
@@ -4050,7 +4099,7 @@
4050
4099
  ],
4051
4100
  "keyboardPatterns": [],
4052
4101
  "docsUrl": "https://gregnblack.github.io/kanso-protocol/?path=/docs/components-tabs--docs",
4053
- "sourcePath": "packages/components/tabs/src/tab.component.ts",
4102
+ "sourcePath": "packages/ui/tabs/src/tab.component.ts",
4054
4103
  "figma": {
4055
4104
  "fileKey": "ahRfe4BdMAyoK0I3lnicp6",
4056
4105
  "nodeId": "3805:11068",
@@ -4070,7 +4119,8 @@
4070
4119
  "className": "KpTabsComponent",
4071
4120
  "selector": "kp-tabs",
4072
4121
  "layer": "components",
4073
- "package": "@kanso-protocol/tabs",
4122
+ "package": "@kanso-protocol/ui",
4123
+ "import": "@kanso-protocol/ui/tabs",
4074
4124
  "description": "Kanso Protocol — Tabs (container)\n\nHorizontal strip of `<button kpTab>` children with a shared bottom border.\nCascades `size` and `fullWidth` down to every projected `<button kpTab>`\nautomatically, so callers only set those two inputs in one place.\n\nA `[kpTabsMore]` slot projects an optional \"More ▾\" affordance to the\nright of the strip — useful when tabs overflow and you want a dropdown\nto hold the rest.",
4075
4125
  "examples": [
4076
4126
  "<kp-tabs size=\"md\" [fullWidth]=\"false\">\n <button kpTab label=\"Overview\" [selected]=\"tab === 'overview'\" (selectedChange)=\"tab = 'overview'\"></button>\n <button kpTab label=\"Activity\" [selected]=\"tab === 'activity'\" (selectedChange)=\"tab = 'activity'\"></button>\n <button kpTab label=\"Settings\" [selected]=\"tab === 'settings'\" (selectedChange)=\"tab = 'settings'\"></button>\n\n <button kpTabsMore>More ▾</button>\n</kp-tabs>"
@@ -4103,7 +4153,7 @@
4103
4153
  "End"
4104
4154
  ],
4105
4155
  "docsUrl": "https://gregnblack.github.io/kanso-protocol/?path=/docs/components-tabs--docs",
4106
- "sourcePath": "packages/components/tabs/src/tabs.component.ts",
4156
+ "sourcePath": "packages/ui/tabs/src/tabs.component.ts",
4107
4157
  "figma": {
4108
4158
  "fileKey": "ahRfe4BdMAyoK0I3lnicp6",
4109
4159
  "nodeId": "3805:11068",
@@ -4123,7 +4173,8 @@
4123
4173
  "className": "KpTextareaComponent",
4124
4174
  "selector": "kp-textarea",
4125
4175
  "layer": "components",
4126
- "package": "@kanso-protocol/textarea",
4176
+ "package": "@kanso-protocol/ui",
4177
+ "import": "@kanso-protocol/ui/textarea",
4127
4178
  "description": "Kanso Protocol — Textarea Component\n\nMulti-line text input. Shares Input's size/state grammar; adds a resize handle\nand optional character counter for length-constrained fields.",
4128
4179
  "examples": [
4129
4180
  "<kp-textarea [(ngModel)]=\"bio\" placeholder=\"Tell us about yourself\"></kp-textarea>\n<kp-textarea size=\"lg\" [maxLength]=\"500\" [showCounter]=\"true\"></kp-textarea>"
@@ -4199,7 +4250,7 @@
4199
4250
  ],
4200
4251
  "keyboardPatterns": [],
4201
4252
  "docsUrl": "https://gregnblack.github.io/kanso-protocol/?path=/docs/components-textarea--docs",
4202
- "sourcePath": "packages/components/textarea/src/textarea.component.ts",
4253
+ "sourcePath": "packages/ui/textarea/src/textarea.component.ts",
4203
4254
  "figma": {
4204
4255
  "fileKey": "ahRfe4BdMAyoK0I3lnicp6",
4205
4256
  "nodeId": "3805:11024",
@@ -4219,7 +4270,8 @@
4219
4270
  "className": "KpTimePickerComponent",
4220
4271
  "selector": "kp-time-picker",
4221
4272
  "layer": "components",
4222
- "package": "@kanso-protocol/timepicker",
4273
+ "package": "@kanso-protocol/ui",
4274
+ "import": "@kanso-protocol/ui/timepicker",
4223
4275
  "description": "Kanso Protocol — TimePicker\n\nInput-triggered picker for hour / minute (optional second). Panel has\nscrollable columns per unit plus Now / Cancel / Apply footer — picks\nare staged in a draft until Apply, so accidental clicks don't commit.\n\nValue on the wire is always canonical 24-hour `HH:mm` or `HH:mm:ss`;\ndisplay switches between 12h and 24h via `format`.",
4224
4276
  "examples": [],
4225
4277
  "inputs": [
@@ -4281,7 +4333,7 @@
4281
4333
  "outputs": [
4282
4334
  {
4283
4335
  "name": "valueChange",
4284
- "payload": "import(\"/home/runner/work/kanso-protocol/kanso-protocol/packages/components/timepicker/src/timepicker.component\").KpTimePickerValue"
4336
+ "payload": "import(\"/home/runner/work/kanso-protocol/kanso-protocol/packages/ui/timepicker/src/timepicker.component\").KpTimePickerValue"
4285
4337
  },
4286
4338
  {
4287
4339
  "name": "openChange",
@@ -4298,7 +4350,7 @@
4298
4350
  "Escape"
4299
4351
  ],
4300
4352
  "docsUrl": "https://gregnblack.github.io/kanso-protocol/?path=/docs/components-timepicker--docs",
4301
- "sourcePath": "packages/components/timepicker/src/timepicker.component.ts",
4353
+ "sourcePath": "packages/ui/timepicker/src/timepicker.component.ts",
4302
4354
  "figma": {
4303
4355
  "fileKey": "ahRfe4BdMAyoK0I3lnicp6",
4304
4356
  "nodeId": "3805:11123",
@@ -4318,7 +4370,8 @@
4318
4370
  "className": "KpToastHostComponent",
4319
4371
  "selector": "kp-toast-host",
4320
4372
  "layer": "components",
4321
- "package": "@kanso-protocol/toast",
4373
+ "package": "@kanso-protocol/ui",
4374
+ "import": "@kanso-protocol/ui/toast",
4322
4375
  "description": "Kanso Protocol — ToastHost\n\nPortaled container that renders the active toast queue in one corner\nof the viewport. Drop one (or several, one per corner) anywhere in\nthe app — toasts render via this host, not inline.",
4323
4376
  "examples": [
4324
4377
  "<kp-toast-host position=\"top-right\" size=\"md\"/>"
@@ -4357,7 +4410,7 @@
4357
4410
  ],
4358
4411
  "keyboardPatterns": [],
4359
4412
  "docsUrl": "https://gregnblack.github.io/kanso-protocol/?path=/docs/components-toast--docs",
4360
- "sourcePath": "packages/components/toast/src/toast-host.component.ts",
4413
+ "sourcePath": "packages/ui/toast/src/toast-host.component.ts",
4361
4414
  "figma": {
4362
4415
  "fileKey": "ahRfe4BdMAyoK0I3lnicp6",
4363
4416
  "nodeId": "3805:11127",
@@ -4377,7 +4430,8 @@
4377
4430
  "className": "KpToggleComponent",
4378
4431
  "selector": "kp-toggle",
4379
4432
  "layer": "components",
4380
- "package": "@kanso-protocol/toggle",
4433
+ "package": "@kanso-protocol/ui",
4434
+ "import": "@kanso-protocol/ui/toggle",
4381
4435
  "description": "Kanso Protocol — Toggle (Switch)\n\nWraps a real native `<input type=\"checkbox\" role=\"switch\">` inside a\nstyled `<label>`. Form submission, FormData, `<label for>` association,\nSpace-toggle, and HTML5 validation all work natively.",
4382
4436
  "examples": [
4383
4437
  "<kp-toggle [(on)]=\"isOn\" size=\"md\">Notifications</kp-toggle>\n<form><kp-toggle name=\"notif\" value=\"1\" required>Enable</kp-toggle></form>"
@@ -4458,7 +4512,7 @@
4458
4512
  ],
4459
4513
  "keyboardPatterns": [],
4460
4514
  "docsUrl": "https://gregnblack.github.io/kanso-protocol/?path=/docs/components-toggle--docs",
4461
- "sourcePath": "packages/components/toggle/src/toggle.component.ts",
4515
+ "sourcePath": "packages/ui/toggle/src/toggle.component.ts",
4462
4516
  "figma": {
4463
4517
  "fileKey": "ahRfe4BdMAyoK0I3lnicp6",
4464
4518
  "nodeId": "3805:11009",
@@ -4478,7 +4532,8 @@
4478
4532
  "className": "KpClipboardCopyDirective",
4479
4533
  "selector": "[kpClipboardCopy]",
4480
4534
  "layer": "components",
4481
- "package": "@kanso-protocol/tooltip",
4535
+ "package": "@kanso-protocol/ui",
4536
+ "import": "@kanso-protocol/ui/tooltip",
4482
4537
  "description": "Kanso Protocol — Clipboard-copy directive.\n\nClick the host element to copy text to the clipboard; a brief tooltip\nhint (\"Copied\") appears for `kpClipboardDuration` ms. Reuses the\ntooltip's visual chrome + the shared overlay positioning.",
4483
4538
  "examples": [
4484
4539
  "<code [kpClipboardCopy]=\"snippet\">{{ snippet }}</code>",
@@ -4530,7 +4585,7 @@
4530
4585
  "sizeRamp": [],
4531
4586
  "keyboardPatterns": [],
4532
4587
  "docsUrl": "https://gregnblack.github.io/kanso-protocol/?path=/docs/components-tooltip--docs",
4533
- "sourcePath": "packages/components/tooltip/src/clipboard-copy.directive.ts",
4588
+ "sourcePath": "packages/ui/tooltip/src/clipboard-copy.directive.ts",
4534
4589
  "figma": {
4535
4590
  "fileKey": "ahRfe4BdMAyoK0I3lnicp6",
4536
4591
  "nodeId": "3805:11048",
@@ -4550,7 +4605,8 @@
4550
4605
  "className": "KpTooltipDirective",
4551
4606
  "selector": "[kpTooltip]",
4552
4607
  "layer": "components",
4553
- "package": "@kanso-protocol/tooltip",
4608
+ "package": "@kanso-protocol/ui",
4609
+ "import": "@kanso-protocol/ui/tooltip",
4554
4610
  "description": "Kanso Protocol — Tooltip directive.\n\nAttaches a styled hint to any element. Auto-shows on hover and focus,\nhides on leave / blur / Escape. Positioned against the trigger with\nviewport-edge flipping. Renders into the nearest open `<dialog>` (so it\nsits above modals) or `document.body`.",
4555
4611
  "examples": [
4556
4612
  "<button [kpTooltip]=\"'Copy link'\" kpTooltipShortcut=\"⌘C\">Copy</button>",
@@ -4607,7 +4663,7 @@
4607
4663
  "Escape"
4608
4664
  ],
4609
4665
  "docsUrl": "https://gregnblack.github.io/kanso-protocol/?path=/docs/components-tooltip--docs",
4610
- "sourcePath": "packages/components/tooltip/src/tooltip.directive.ts",
4666
+ "sourcePath": "packages/ui/tooltip/src/tooltip.directive.ts",
4611
4667
  "figma": {
4612
4668
  "fileKey": "ahRfe4BdMAyoK0I3lnicp6",
4613
4669
  "nodeId": "3805:11048",
@@ -4627,7 +4683,8 @@
4627
4683
  "className": "KpTreeComponent",
4628
4684
  "selector": "kp-tree",
4629
4685
  "layer": "components",
4630
- "package": "@kanso-protocol/tree",
4686
+ "package": "@kanso-protocol/ui",
4687
+ "import": "@kanso-protocol/ui/tree",
4631
4688
  "description": "Kanso Protocol — Tree\n\nRecursive list of nested nodes. Click the chevron to toggle expansion;\nclick the label to select. Optional `showCheckboxes` renders a\ncheckbox per node with tri-state propagation (child check flips\nparent indeterminate / checked).\n\nExpansion and selection state is owned internally but mirrored via\n`[(expanded)]` / `[(selected)]` / `[(checked)]` two-way bindings so\ncallers can drive or persist it.",
4632
4689
  "examples": [],
4633
4690
  "inputs": [
@@ -4689,7 +4746,7 @@
4689
4746
  },
4690
4747
  {
4691
4748
  "name": "nodeClick",
4692
- "payload": "import(\"/home/runner/work/kanso-protocol/kanso-protocol/packages/components/tree/src/tree.component\").KpTreeNode"
4749
+ "payload": "import(\"/home/runner/work/kanso-protocol/kanso-protocol/packages/ui/tree/src/tree.component\").KpTreeNode"
4693
4750
  }
4694
4751
  ],
4695
4752
  "ariaRole": null,
@@ -4708,7 +4765,7 @@
4708
4765
  "Space"
4709
4766
  ],
4710
4767
  "docsUrl": "https://gregnblack.github.io/kanso-protocol/?path=/docs/components-tree--docs",
4711
- "sourcePath": "packages/components/tree/src/tree.component.ts",
4768
+ "sourcePath": "packages/ui/tree/src/tree.component.ts",
4712
4769
  "figma": {
4713
4770
  "fileKey": "ahRfe4BdMAyoK0I3lnicp6",
4714
4771
  "nodeId": "3805:11135",
@@ -4728,7 +4785,8 @@
4728
4785
  "className": "KpVirtualRowDirective",
4729
4786
  "selector": "[kpVirtualRow]",
4730
4787
  "layer": "components",
4731
- "package": "@kanso-protocol/virtual-list",
4788
+ "package": "@kanso-protocol/ui",
4789
+ "import": "@kanso-protocol/ui/virtual-list",
4732
4790
  "description": "Marker directive — pairs the row template with `<kp-virtual-list>`.",
4733
4791
  "examples": [
4734
4792
  "<kp-virtual-list ...>\n <ng-template kpVirtualRow let-item let-i=\"index\">\n <div>row {{ i }}: {{ item.name }}</div>\n </ng-template>\n</kp-virtual-list>"
@@ -4739,7 +4797,7 @@
4739
4797
  "sizeRamp": [],
4740
4798
  "keyboardPatterns": [],
4741
4799
  "docsUrl": "https://gregnblack.github.io/kanso-protocol/?path=/docs/components-virtuallist--docs",
4742
- "sourcePath": "packages/components/virtual-list/src/virtual-list.component.ts",
4800
+ "sourcePath": "packages/ui/virtual-list/src/virtual-list.component.ts",
4743
4801
  "codeConnect": {
4744
4802
  "npm": "@kanso-protocol/virtual-list",
4745
4803
  "primaryClass": "KpVirtualListComponent",
@@ -4754,7 +4812,8 @@
4754
4812
  "className": "KpVirtualListComponent",
4755
4813
  "selector": "kp-virtual-list",
4756
4814
  "layer": "components",
4757
- "package": "@kanso-protocol/virtual-list",
4815
+ "package": "@kanso-protocol/ui",
4816
+ "import": "@kanso-protocol/ui/virtual-list",
4758
4817
  "description": "Kanso Protocol — VirtualList\n\nWindow-mode virtual scroller for **fixed-height rows**. Renders only the\nrows currently visible in the viewport (plus a configurable `[overscan]`\nbuffer). Lets the consumer hand any item shape via a projected\n`<ng-template kpVirtualRow let-item let-i=\"index\">`.\n\nWhy fixed-height: keeps the math O(1) per scroll event (`scrollTop /\nitemHeight`), no measurement pass, no layout thrash. Variable-height\nsupport is on the roadmap (`KpVariableVirtualListComponent`); for now,\nsize each row to a uniform height.\n\nUse this for tables / message lists / log views with thousands of rows.\nBelow ~100 rows just render them — virtualization adds complexity for\nnegligible gain.",
4759
4818
  "examples": [
4760
4819
  "<kp-virtual-list\n [items]=\"rows\"\n [itemHeight]=\"40\"\n [viewportHeight]=\"480\"\n [overscan]=\"6\"\n (rangeChange)=\"onRange($event)\"\n>\n <ng-template kpVirtualRow let-row let-i=\"index\">\n <div class=\"row\" [class.row--alt]=\"i % 2\">{{ row.name }}</div>\n </ng-template>\n</kp-virtual-list>"
@@ -4794,14 +4853,14 @@
4794
4853
  "outputs": [
4795
4854
  {
4796
4855
  "name": "rangeChange",
4797
- "payload": "import(\"/home/runner/work/kanso-protocol/kanso-protocol/packages/components/virtual-list/src/virtual-list.component\").KpVirtualRange"
4856
+ "payload": "import(\"/home/runner/work/kanso-protocol/kanso-protocol/packages/ui/virtual-list/src/virtual-list.component\").KpVirtualRange"
4798
4857
  }
4799
4858
  ],
4800
4859
  "ariaRole": null,
4801
4860
  "sizeRamp": [],
4802
4861
  "keyboardPatterns": [],
4803
4862
  "docsUrl": "https://gregnblack.github.io/kanso-protocol/?path=/docs/components-virtuallist--docs",
4804
- "sourcePath": "packages/components/virtual-list/src/virtual-list.component.ts",
4863
+ "sourcePath": "packages/ui/virtual-list/src/virtual-list.component.ts",
4805
4864
  "codeConnect": {
4806
4865
  "npm": "@kanso-protocol/virtual-list",
4807
4866
  "primaryClass": "KpVirtualListComponent",
@@ -4818,7 +4877,8 @@
4818
4877
  "className": "KpAppShellComponent",
4819
4878
  "selector": "kp-app-shell",
4820
4879
  "layer": "patterns",
4821
- "package": "@kanso-protocol/app-shell",
4880
+ "package": "@kanso-protocol/ui",
4881
+ "import": "@kanso-protocol/ui/app-shell",
4822
4882
  "description": "Kanso Protocol — AppShell\n\nRoot application template. Composes Header + Sidebar + Main + Footer\nwith a single layout input driving placement. All sections are\nprojection slots — drop in real `<kp-header>`, `<kp-sidebar>`,\n`<kp-banner>`, etc. instances.\n\nSlots:\n- `[kpAppShellHeader]` — topbar\n- `[kpAppShellBanner]` — under header, spans full width\n- `[kpAppShellSidebar]` — side nav (left / right / hidden depending on `layout`)\n- `[kpAppShellBody]` — main content; scrolls independently\n- `[kpAppShellFooter]` — optional footer strip",
4823
4883
  "examples": [
4824
4884
  "<kp-app-shell layout=\"sidebar-left\">\n <kp-header kpAppShellHeader [navItems]=\"nav\"/>\n <kp-sidebar kpAppShellSidebar [sections]=\"sections\"/>\n <div kpAppShellBody>\n <kp-page-header title=\"Dashboard\"/>\n <!-- … -->\n </div>\n</kp-app-shell>"
@@ -4860,7 +4920,7 @@
4860
4920
  "sizeRamp": [],
4861
4921
  "keyboardPatterns": [],
4862
4922
  "docsUrl": "https://gregnblack.github.io/kanso-protocol/?path=/docs/patterns-appshell--docs",
4863
- "sourcePath": "packages/patterns/app-shell/src/app-shell.component.ts",
4923
+ "sourcePath": "packages/ui/app-shell/src/app-shell.component.ts",
4864
4924
  "figma": {
4865
4925
  "fileKey": "ahRfe4BdMAyoK0I3lnicp6",
4866
4926
  "nodeId": "3822:7265",
@@ -4880,7 +4940,8 @@
4880
4940
  "className": "KpBannerComponent",
4881
4941
  "selector": "kp-banner",
4882
4942
  "layer": "patterns",
4883
- "package": "@kanso-protocol/banner",
4943
+ "package": "@kanso-protocol/ui",
4944
+ "import": "@kanso-protocol/ui/banner",
4884
4945
  "description": "Kanso Protocol — Banner\n\nGlobal top strip under the app Header. Used for system messages:\ntrial status, maintenance, payment alerts, feature launches.\nReuses alert semantic tokens (subtle appearance) so color roles\nmatch Alert / Toast.\n\nSlot: `[kpBannerAction]` for a trailing CTA (typically `<button kpButton size=\"sm\">`).",
4885
4946
  "examples": [
4886
4947
  "<kp-banner color=\"warning\" title=\"Your trial ends in 3 days\">\n <button kpButton kpBannerAction size=\"sm\">Upgrade</button>\n</kp-banner>"
@@ -4936,7 +4997,7 @@
4936
4997
  ],
4937
4998
  "keyboardPatterns": [],
4938
4999
  "docsUrl": "https://gregnblack.github.io/kanso-protocol/?path=/docs/patterns-banner--docs",
4939
- "sourcePath": "packages/patterns/banner/src/banner.component.ts",
5000
+ "sourcePath": "packages/ui/banner/src/banner.component.ts",
4940
5001
  "figma": {
4941
5002
  "fileKey": "ahRfe4BdMAyoK0I3lnicp6",
4942
5003
  "nodeId": "3822:7272",
@@ -4956,7 +5017,8 @@
4956
5017
  "className": "KpContainerComponent",
4957
5018
  "selector": "kp-container",
4958
5019
  "layer": "patterns",
4959
- "package": "@kanso-protocol/container",
5020
+ "package": "@kanso-protocol/ui",
5021
+ "import": "@kanso-protocol/ui/container",
4960
5022
  "description": "Kanso Protocol — Container\n\nResponsive content wrapper. Caps child width at one of four\npreset breakpoints and applies horizontal padding. Pure layout\nprimitive — no colors, borders, or spacing on its own axis.",
4961
5023
  "examples": [
4962
5024
  "<kp-container width=\"medium\" padding=\"md\">\n <h1>Settings</h1>\n <kp-card>…</kp-card>\n</kp-container>"
@@ -4980,7 +5042,7 @@
4980
5042
  "sizeRamp": [],
4981
5043
  "keyboardPatterns": [],
4982
5044
  "docsUrl": "https://gregnblack.github.io/kanso-protocol/?path=/docs/patterns-container--docs",
4983
- "sourcePath": "packages/patterns/container/src/container.component.ts",
5045
+ "sourcePath": "packages/ui/container/src/container.component.ts",
4984
5046
  "figma": {
4985
5047
  "fileKey": "ahRfe4BdMAyoK0I3lnicp6",
4986
5048
  "nodeId": "3822:7280",
@@ -5000,7 +5062,8 @@
5000
5062
  "className": "KpFilterBarComponent",
5001
5063
  "selector": "kp-filter-bar",
5002
5064
  "layer": "patterns",
5003
- "package": "@kanso-protocol/filter-bar",
5065
+ "package": "@kanso-protocol/ui",
5066
+ "import": "@kanso-protocol/ui/filter-bar",
5004
5067
  "description": "Kanso Protocol — FilterBar\n\nHorizontal strip of active filter chips (closable Badges in pill\nstyle) with an \"Add filter\" affordance on the left and optional\n\"Save filter\" / \"Clear all\" actions on the right. Sits under a\nTableToolbar or any filterable view.\n\nChips come from `[filters]`. Emit `removeFilter(id)` / `addFilter`\n/ `saveFilter` / `clearAll` — state management lives outside.",
5005
5068
  "examples": [
5006
5069
  "<kp-filter-bar\n [filters]=\"[{ id:'s', label:'Status: Active', color:'primary' }]\"\n (removeFilter)=\"drop($event)\"\n (addFilter)=\"openPicker()\"\n (clearAll)=\"reset()\">\n</kp-filter-bar>"
@@ -5053,7 +5116,7 @@
5053
5116
  "sizeRamp": [],
5054
5117
  "keyboardPatterns": [],
5055
5118
  "docsUrl": "https://gregnblack.github.io/kanso-protocol/?path=/docs/patterns-filterbar--docs",
5056
- "sourcePath": "packages/patterns/filter-bar/src/filter-bar.component.ts",
5119
+ "sourcePath": "packages/ui/filter-bar/src/filter-bar.component.ts",
5057
5120
  "figma": {
5058
5121
  "fileKey": "ahRfe4BdMAyoK0I3lnicp6",
5059
5122
  "nodeId": "3822:7288",
@@ -5073,7 +5136,8 @@
5073
5136
  "className": "KpFormSectionComponent",
5074
5137
  "selector": "kp-form-section",
5075
5138
  "layer": "patterns",
5076
- "package": "@kanso-protocol/form-section",
5139
+ "package": "@kanso-protocol/ui",
5140
+ "import": "@kanso-protocol/ui/form-section",
5077
5141
  "description": "Kanso Protocol — FormSection\n\nOne titled block of a form with a description and the related\nfields. Two layouts:\n- `inline` — title + description on the left, fields on the right\n (the classic \"settings page\" layout).\n- `stacked` — title + description on top, fields below (good for\n narrow viewports and onboarding wizards).\n\nPure container — drop your `<kp-form-field>` / `<kp-input>` /\n`<kp-toggle>` etc. as children. Bottom divider is optional and on\nby default so consecutive sections separate cleanly.",
5078
5142
  "examples": [
5079
5143
  "<kp-form-section title=\"Personal information\"\n description=\"This information will be displayed publicly.\">\n <kp-form-field label=\"First name\"><kp-input/></kp-form-field>\n <kp-form-field label=\"Last name\"><kp-input/></kp-form-field>\n <kp-form-field label=\"Email\"><kp-input type=\"email\"/></kp-form-field>\n</kp-form-section>"
@@ -5125,7 +5189,7 @@
5125
5189
  ],
5126
5190
  "keyboardPatterns": [],
5127
5191
  "docsUrl": "https://gregnblack.github.io/kanso-protocol/?path=/docs/patterns-formsection--docs",
5128
- "sourcePath": "packages/patterns/form-section/src/form-section.component.ts",
5192
+ "sourcePath": "packages/ui/form-section/src/form-section.component.ts",
5129
5193
  "figma": {
5130
5194
  "fileKey": "ahRfe4BdMAyoK0I3lnicp6",
5131
5195
  "nodeId": "3822:7296",
@@ -5145,7 +5209,8 @@
5145
5209
  "className": "KpGridComponent",
5146
5210
  "selector": "kp-grid",
5147
5211
  "layer": "patterns",
5148
- "package": "@kanso-protocol/grid",
5212
+ "package": "@kanso-protocol/ui",
5213
+ "import": "@kanso-protocol/ui/grid",
5149
5214
  "description": "Kanso Protocol — Grid\n\nResponsive `display: grid` wrapper. Equal-width columns, preset\ngap scale. Independent row-gap via `gapRow` when columns need\ntighter vertical rhythm than horizontal.",
5150
5215
  "examples": [
5151
5216
  "<kp-grid [columns]=\"3\" gap=\"md\">\n <kp-card/><kp-card/><kp-card/>\n</kp-grid>"
@@ -5175,7 +5240,7 @@
5175
5240
  "sizeRamp": [],
5176
5241
  "keyboardPatterns": [],
5177
5242
  "docsUrl": "https://gregnblack.github.io/kanso-protocol/?path=/docs/patterns-grid--docs",
5178
- "sourcePath": "packages/patterns/grid/src/grid.component.ts",
5243
+ "sourcePath": "packages/ui/grid/src/grid.component.ts",
5179
5244
  "figma": {
5180
5245
  "fileKey": "ahRfe4BdMAyoK0I3lnicp6",
5181
5246
  "nodeId": "3822:7304",
@@ -5195,7 +5260,8 @@
5195
5260
  "className": "KpHeaderComponent",
5196
5261
  "selector": "kp-header",
5197
5262
  "layer": "patterns",
5198
- "package": "@kanso-protocol/header",
5263
+ "package": "@kanso-protocol/ui",
5264
+ "import": "@kanso-protocol/ui/header",
5199
5265
  "description": "Kanso Protocol — Header (Topbar)\n\nApp topbar pattern. Three-section layout (left / center / right)\nwith optional logo, inline nav, search slot, notifications,\ntheme toggle, CTA, and user menu. Data-driven; projection slots\nfor logo, search, and extra actions.\n\nSlots:\n- `[kpHeaderLogo]` — replace the default logo mark + title\n- `[kpHeaderSearch]` — render custom search UI in the center slot\n (takes precedence over `[showSearch]` placeholder)\n- `[kpHeaderActions]` — extra action buttons before the user menu",
5200
5266
  "examples": [
5201
5267
  "<kp-header\n size=\"md\"\n [navItems]=\"nav\"\n [userName]=\"me.name\"\n [userInitials]=\"me.initials\"\n userRole=\"Admin\"\n [showSearch]=\"true\"\n [showNotifications]=\"true\"\n notificationsCount=\"3\"\n/>"
@@ -5336,7 +5402,7 @@
5336
5402
  ],
5337
5403
  "keyboardPatterns": [],
5338
5404
  "docsUrl": "https://gregnblack.github.io/kanso-protocol/?path=/docs/patterns-header--docs",
5339
- "sourcePath": "packages/patterns/header/src/header.component.ts",
5405
+ "sourcePath": "packages/ui/header/src/header.component.ts",
5340
5406
  "figma": {
5341
5407
  "fileKey": "ahRfe4BdMAyoK0I3lnicp6",
5342
5408
  "nodeId": "3822:7312",
@@ -5356,7 +5422,8 @@
5356
5422
  "className": "KpNavItemComponent",
5357
5423
  "selector": "kp-nav-item",
5358
5424
  "layer": "patterns",
5359
- "package": "@kanso-protocol/nav-item",
5425
+ "package": "@kanso-protocol/ui",
5426
+ "import": "@kanso-protocol/ui/nav-item",
5360
5427
  "description": "Kanso Protocol — NavItem\n\nAtomic nav row for Sidebar. Supports 3 sizes, 4 states, nested\ndepth (left padding), optional icon / badge / chevron, and an\n\"active\" left accent bar.\n\nSlots:\n- `[kpNavItemIcon]` — leading icon\n- `[kpNavItemBadge]` — trailing badge (e.g. `<kp-badge>`)",
5361
5428
  "examples": [
5362
5429
  "<kp-nav-item size=\"md\" [active]=\"true\" label=\"Dashboard\">\n <svg kpNavItemIcon>…</svg>\n</kp-nav-item>"
@@ -5443,7 +5510,7 @@
5443
5510
  ],
5444
5511
  "keyboardPatterns": [],
5445
5512
  "docsUrl": "https://gregnblack.github.io/kanso-protocol/?path=/docs/patterns-navitem--docs",
5446
- "sourcePath": "packages/patterns/nav-item/src/nav-item.component.ts",
5513
+ "sourcePath": "packages/ui/nav-item/src/nav-item.component.ts",
5447
5514
  "figma": {
5448
5515
  "fileKey": "ahRfe4BdMAyoK0I3lnicp6",
5449
5516
  "nodeId": "3822:7320",
@@ -5463,7 +5530,8 @@
5463
5530
  "className": "KpNotificationCenterComponent",
5464
5531
  "selector": "kp-notification-center",
5465
5532
  "layer": "patterns",
5466
- "package": "@kanso-protocol/notification-center",
5533
+ "package": "@kanso-protocol/ui",
5534
+ "import": "@kanso-protocol/ui/notification-center",
5467
5535
  "description": "Kanso Protocol — NotificationCenter\n\nPanel with header + optional filters + list of notifications +\noptional footer (\"View all\"). Three states: with-items / empty /\nloading. Typically anchored to the bell icon in Header via\nDropdownMenu / Popover positioning.",
5468
5536
  "examples": [
5469
5537
  "<kp-notification-center\n state=\"with-items\"\n [notifications]=\"items\"\n [showFilters]=\"true\"\n unreadCount=\"3\"\n/>"
@@ -5517,7 +5585,7 @@
5517
5585
  },
5518
5586
  {
5519
5587
  "name": "itemClick",
5520
- "payload": "import(\"/home/runner/work/kanso-protocol/kanso-protocol/packages/patterns/notification-center/src/notification-center.component\").KpNotification"
5588
+ "payload": "import(\"/home/runner/work/kanso-protocol/kanso-protocol/packages/ui/notification-center/src/notification-center.component\").KpNotification"
5521
5589
  },
5522
5590
  {
5523
5591
  "name": "filterChange",
@@ -5532,7 +5600,7 @@
5532
5600
  "sizeRamp": [],
5533
5601
  "keyboardPatterns": [],
5534
5602
  "docsUrl": "https://gregnblack.github.io/kanso-protocol/?path=/docs/patterns-notificationcenter--docs",
5535
- "sourcePath": "packages/patterns/notification-center/src/notification-center.component.ts",
5603
+ "sourcePath": "packages/ui/notification-center/src/notification-center.component.ts",
5536
5604
  "figma": {
5537
5605
  "fileKey": "ahRfe4BdMAyoK0I3lnicp6",
5538
5606
  "nodeId": "3822:7327",
@@ -5552,7 +5620,8 @@
5552
5620
  "className": "KpNotificationItemComponent",
5553
5621
  "selector": "kp-notification-item",
5554
5622
  "layer": "patterns",
5555
- "package": "@kanso-protocol/notification-center",
5623
+ "package": "@kanso-protocol/ui",
5624
+ "import": "@kanso-protocol/ui/notification-center",
5556
5625
  "description": "",
5557
5626
  "examples": [],
5558
5627
  "inputs": [
@@ -5615,7 +5684,7 @@
5615
5684
  "sizeRamp": [],
5616
5685
  "keyboardPatterns": [],
5617
5686
  "docsUrl": "https://gregnblack.github.io/kanso-protocol/?path=/docs/patterns-notificationcenter--docs",
5618
- "sourcePath": "packages/patterns/notification-center/src/notification-item.component.ts",
5687
+ "sourcePath": "packages/ui/notification-center/src/notification-item.component.ts",
5619
5688
  "figma": {
5620
5689
  "fileKey": "ahRfe4BdMAyoK0I3lnicp6",
5621
5690
  "nodeId": "3822:7327",
@@ -5635,7 +5704,8 @@
5635
5704
  "className": "KpPageErrorComponent",
5636
5705
  "selector": "kp-page-error",
5637
5706
  "layer": "patterns",
5638
- "package": "@kanso-protocol/page-error",
5707
+ "package": "@kanso-protocol/ui",
5708
+ "import": "@kanso-protocol/ui/page-error",
5639
5709
  "description": "Kanso Protocol — PageError\n\nFull-page error state for 404, 500, offline, and access-denied\nscenarios. Composes an illustration, optional hero error code,\ntitle + description, and primary/secondary action slots.\n\nTitles/descriptions/icon default to the `type` preset; override\nany of them via individual inputs.\n\nSlots:\n- `[kpPageErrorPrimary]` — primary CTA (Button, default)\n- `[kpPageErrorSecondary]` — secondary CTA (Button, ghost)",
5640
5710
  "examples": [
5641
5711
  "<kp-page-error type=\"404\">\n <button kpButton kpPageErrorPrimary>Go home</button>\n <button kpButton kpPageErrorSecondary variant=\"ghost\">Report broken link</button>\n</kp-page-error>"
@@ -5689,7 +5759,7 @@
5689
5759
  "sizeRamp": [],
5690
5760
  "keyboardPatterns": [],
5691
5761
  "docsUrl": "https://gregnblack.github.io/kanso-protocol/?path=/docs/patterns-pageerror--docs",
5692
- "sourcePath": "packages/patterns/page-error/src/page-error.component.ts",
5762
+ "sourcePath": "packages/ui/page-error/src/page-error.component.ts",
5693
5763
  "figma": {
5694
5764
  "fileKey": "ahRfe4BdMAyoK0I3lnicp6",
5695
5765
  "nodeId": "3822:7334",
@@ -5709,7 +5779,8 @@
5709
5779
  "className": "KpPageHeaderComponent",
5710
5780
  "selector": "kp-page-header",
5711
5781
  "layer": "patterns",
5712
- "package": "@kanso-protocol/page-header",
5782
+ "package": "@kanso-protocol/ui",
5783
+ "import": "@kanso-protocol/ui/page-header",
5713
5784
  "description": "Kanso Protocol — PageHeader\n\nContent-area header. Three sizes, optional breadcrumbs, back button,\ndescription, actions slot, tabs slot, and bottom divider.\n\nSlots (all optional):\n- `[kpPageHeaderBreadcrumbs]` — Breadcrumbs instance\n- `[kpPageHeaderTitle]` — custom title (e.g. title + inline Badge)\n- `[kpPageHeaderActions]` — action buttons on the right\n- `[kpPageHeaderTabs]` — Tabs instance under the header",
5714
5785
  "examples": [
5715
5786
  "<kp-page-header\n size=\"md\"\n title=\"All projects\"\n description=\"12 active projects\"\n [showActions]=\"true\"\n>\n <kp-breadcrumbs kpPageHeaderBreadcrumbs [items]=\"crumbs\"/>\n <div kpPageHeaderActions>\n <button kpButton appearance=\"ghost\">Import</button>\n <button kpButton>Create</button>\n </div>\n</kp-page-header>"
@@ -5790,7 +5861,7 @@
5790
5861
  ],
5791
5862
  "keyboardPatterns": [],
5792
5863
  "docsUrl": "https://gregnblack.github.io/kanso-protocol/?path=/docs/patterns-pageheader--docs",
5793
- "sourcePath": "packages/patterns/page-header/src/page-header.component.ts",
5864
+ "sourcePath": "packages/ui/page-header/src/page-header.component.ts",
5794
5865
  "figma": {
5795
5866
  "fileKey": "ahRfe4BdMAyoK0I3lnicp6",
5796
5867
  "nodeId": "3822:7341",
@@ -5810,7 +5881,8 @@
5810
5881
  "className": "KpRowComponent",
5811
5882
  "selector": "kp-row",
5812
5883
  "layer": "patterns",
5813
- "package": "@kanso-protocol/row",
5884
+ "package": "@kanso-protocol/ui",
5885
+ "import": "@kanso-protocol/ui/row",
5814
5886
  "description": "Kanso Protocol — Row\n\nHorizontal Auto Layout wrapper with a preset gap scale, cross-axis\nalignment, and main-axis justification. Optional wrap on overflow.",
5815
5887
  "examples": [
5816
5888
  "<kp-row gap=\"sm\" justify=\"end\">\n <button kpButton appearance=\"ghost\">Cancel</button>\n <button kpButton>Save</button>\n</kp-row>"
@@ -5846,7 +5918,7 @@
5846
5918
  "sizeRamp": [],
5847
5919
  "keyboardPatterns": [],
5848
5920
  "docsUrl": "https://gregnblack.github.io/kanso-protocol/?path=/docs/patterns-row--docs",
5849
- "sourcePath": "packages/patterns/row/src/row.component.ts",
5921
+ "sourcePath": "packages/ui/row/src/row.component.ts",
5850
5922
  "figma": {
5851
5923
  "fileKey": "ahRfe4BdMAyoK0I3lnicp6",
5852
5924
  "nodeId": "3825:7273",
@@ -5866,7 +5938,8 @@
5866
5938
  "className": "KpSearchBarComponent",
5867
5939
  "selector": "kp-search-bar",
5868
5940
  "layer": "patterns",
5869
- "package": "@kanso-protocol/search-bar",
5941
+ "package": "@kanso-protocol/ui",
5942
+ "import": "@kanso-protocol/ui/search-bar",
5870
5943
  "description": "Kanso Protocol — SearchBar\n\nTwo variants:\n- `inline` — a simple search input with optional ⌘K shortcut hint,\n good for header search or page filters.\n- `command-palette` — a self-contained panel: input + grouped\n results with shortcuts + footer helper keys. Typically rendered\n inside a Dialog/Overlay.\n\nThe component is presentational; filtering results, opening the\npalette via ⌘K, and committing selection are all consumer\nresponsibilities.",
5871
5944
  "examples": [
5872
5945
  "<!-- Inline in Header -->\n<kp-search-bar variant=\"inline\" size=\"md\" [showShortcutHint]=\"true\" (search)=\"onSearch($event)\"/>\n\n<!-- Command Palette (inside a Dialog) -->\n<kp-search-bar variant=\"command-palette\" [groups]=\"results\" (itemClick)=\"run($event)\"/>"
@@ -5926,7 +5999,7 @@
5926
5999
  },
5927
6000
  {
5928
6001
  "name": "itemClick",
5929
- "payload": "import(\"/home/runner/work/kanso-protocol/kanso-protocol/packages/patterns/search-bar/src/search-bar.component\").KpSearchResultItem"
6002
+ "payload": "import(\"/home/runner/work/kanso-protocol/kanso-protocol/packages/ui/search-bar/src/search-bar.component\").KpSearchResultItem"
5930
6003
  }
5931
6004
  ],
5932
6005
  "ariaRole": null,
@@ -5937,7 +6010,7 @@
5937
6010
  ],
5938
6011
  "keyboardPatterns": [],
5939
6012
  "docsUrl": "https://gregnblack.github.io/kanso-protocol/?path=/docs/patterns-searchbar--docs",
5940
- "sourcePath": "packages/patterns/search-bar/src/search-bar.component.ts",
6013
+ "sourcePath": "packages/ui/search-bar/src/search-bar.component.ts",
5941
6014
  "figma": {
5942
6015
  "fileKey": "ahRfe4BdMAyoK0I3lnicp6",
5943
6016
  "nodeId": "3822:7356",
@@ -5957,7 +6030,8 @@
5957
6030
  "className": "KpSettingsPanelComponent",
5958
6031
  "selector": "kp-settings-panel",
5959
6032
  "layer": "patterns",
5960
- "package": "@kanso-protocol/settings-panel",
6033
+ "package": "@kanso-protocol/ui",
6034
+ "import": "@kanso-protocol/ui/settings-panel",
5961
6035
  "description": "Kanso Protocol — SettingsPanel\n\nCard-shaped container for a group of related settings. Title +\ndescription in the header, then a column of `<kp-settings-row>`\nchildren. The card border and header are optional — turn them off\nto inline a panel inside another container.\n\nUse one panel per topical group (Notifications / Privacy / Billing).",
5962
6036
  "examples": [
5963
6037
  "<kp-settings-panel title=\"Notifications\"\n description=\"Manage how you receive updates and alerts.\">\n <kp-settings-row title=\"Email notifications\">\n <kp-toggle [on]=\"true\"/>\n </kp-settings-row>\n <kp-settings-row title=\"Push notifications\" [showDivider]=\"false\">\n <kp-toggle [on]=\"false\"/>\n </kp-settings-row>\n</kp-settings-panel>"
@@ -6009,7 +6083,7 @@
6009
6083
  ],
6010
6084
  "keyboardPatterns": [],
6011
6085
  "docsUrl": "https://gregnblack.github.io/kanso-protocol/?path=/docs/patterns-settingspanel--docs",
6012
- "sourcePath": "packages/patterns/settings-panel/src/settings-panel.component.ts",
6086
+ "sourcePath": "packages/ui/settings-panel/src/settings-panel.component.ts",
6013
6087
  "figma": {
6014
6088
  "fileKey": "ahRfe4BdMAyoK0I3lnicp6",
6015
6089
  "nodeId": "3822:7364",
@@ -6029,7 +6103,8 @@
6029
6103
  "className": "KpSettingsRowComponent",
6030
6104
  "selector": "kp-settings-row",
6031
6105
  "layer": "patterns",
6032
- "package": "@kanso-protocol/settings-panel",
6106
+ "package": "@kanso-protocol/ui",
6107
+ "import": "@kanso-protocol/ui/settings-panel",
6033
6108
  "description": "Kanso Protocol — SettingsRow\n\nOne row inside a `<kp-settings-panel>`. Title + optional description\non the left, a Control slot on the right (toggle, select, input,\nbutton, badge — anything you project in). Bottom divider on by\ndefault; consumers usually turn it off on the last row of a panel.",
6034
6109
  "examples": [
6035
6110
  "<kp-settings-row title=\"Email notifications\"\n description=\"Receive an email when something important happens.\">\n <kp-toggle [on]=\"true\"/>\n</kp-settings-row>"
@@ -6075,7 +6150,7 @@
6075
6150
  ],
6076
6151
  "keyboardPatterns": [],
6077
6152
  "docsUrl": "https://gregnblack.github.io/kanso-protocol/?path=/docs/patterns-settingspanel--docs",
6078
- "sourcePath": "packages/patterns/settings-panel/src/settings-row.component.ts",
6153
+ "sourcePath": "packages/ui/settings-panel/src/settings-row.component.ts",
6079
6154
  "figma": {
6080
6155
  "fileKey": "ahRfe4BdMAyoK0I3lnicp6",
6081
6156
  "nodeId": "3822:7364",
@@ -6095,7 +6170,8 @@
6095
6170
  "className": "KpSidebarComponent",
6096
6171
  "selector": "kp-sidebar",
6097
6172
  "layer": "patterns",
6098
- "package": "@kanso-protocol/sidebar",
6173
+ "package": "@kanso-protocol/ui",
6174
+ "import": "@kanso-protocol/ui/sidebar",
6099
6175
  "description": "Kanso Protocol — Sidebar\n\nApp side navigation container. Expanded (240) or collapsed (64).\nData-driven sections, each with its own label and NavItems.\nOptional logo, search slot, user footer with Avatar.\n\nSlots:\n- `[kpSidebarLogo]` — custom logo area\n- `[kpSidebarSearch]` — search field above sections\n- each NavItem icon is rendered via `iconTemplateRef` if provided\n (otherwise a generic placeholder)",
6100
6176
  "examples": [
6101
6177
  "<kp-sidebar\n widthState=\"expanded\"\n [sections]=\"nav\"\n userName=\"Greg Black\"\n userInitials=\"GB\"\n userEmail=\"greg@example.com\"\n/>"
@@ -6171,11 +6247,11 @@
6171
6247
  "outputs": [
6172
6248
  {
6173
6249
  "name": "toggle",
6174
- "payload": "import(\"/home/runner/work/kanso-protocol/kanso-protocol/packages/patterns/sidebar/src/sidebar.component\").KpSidebarWidth"
6250
+ "payload": "import(\"/home/runner/work/kanso-protocol/kanso-protocol/packages/ui/sidebar/src/sidebar.component\").KpSidebarWidth"
6175
6251
  },
6176
6252
  {
6177
6253
  "name": "itemClick",
6178
- "payload": "import(\"/home/runner/work/kanso-protocol/kanso-protocol/packages/patterns/sidebar/src/sidebar.component\").KpSidebarNavItem"
6254
+ "payload": "import(\"/home/runner/work/kanso-protocol/kanso-protocol/packages/ui/sidebar/src/sidebar.component\").KpSidebarNavItem"
6179
6255
  },
6180
6256
  {
6181
6257
  "name": "userMenuClick",
@@ -6186,7 +6262,7 @@
6186
6262
  "sizeRamp": [],
6187
6263
  "keyboardPatterns": [],
6188
6264
  "docsUrl": "https://gregnblack.github.io/kanso-protocol/?path=/docs/patterns-sidebar--docs",
6189
- "sourcePath": "packages/patterns/sidebar/src/sidebar.component.ts",
6265
+ "sourcePath": "packages/ui/sidebar/src/sidebar.component.ts",
6190
6266
  "figma": {
6191
6267
  "fileKey": "ahRfe4BdMAyoK0I3lnicp6",
6192
6268
  "nodeId": "3822:7372",
@@ -6206,7 +6282,8 @@
6206
6282
  "className": "KpStackComponent",
6207
6283
  "selector": "kp-stack",
6208
6284
  "layer": "patterns",
6209
- "package": "@kanso-protocol/stack",
6285
+ "package": "@kanso-protocol/ui",
6286
+ "import": "@kanso-protocol/ui/stack",
6210
6287
  "description": "Kanso Protocol — Stack\n\nVertical Auto Layout wrapper with a preset gap scale and cross-axis\nalignment. Semantic counterpart to `<div style=\"display:flex;flex-direction:column\">`.",
6211
6288
  "examples": [
6212
6289
  "<kp-stack gap=\"md\">\n <kp-input/>\n <kp-input/>\n <button kpButton>Save</button>\n</kp-stack>"
@@ -6230,7 +6307,7 @@
6230
6307
  "sizeRamp": [],
6231
6308
  "keyboardPatterns": [],
6232
6309
  "docsUrl": "https://gregnblack.github.io/kanso-protocol/?path=/docs/patterns-stack--docs",
6233
- "sourcePath": "packages/patterns/stack/src/stack.component.ts",
6310
+ "sourcePath": "packages/ui/stack/src/stack.component.ts",
6234
6311
  "figma": {
6235
6312
  "fileKey": "ahRfe4BdMAyoK0I3lnicp6",
6236
6313
  "nodeId": "3825:7265",
@@ -6250,7 +6327,8 @@
6250
6327
  "className": "KpStatCardComponent",
6251
6328
  "selector": "kp-stat-card",
6252
6329
  "layer": "patterns",
6253
- "package": "@kanso-protocol/stat-card",
6330
+ "package": "@kanso-protocol/ui",
6331
+ "import": "@kanso-protocol/ui/stat-card",
6254
6332
  "description": "Kanso Protocol — StatCard\n\nSingle-metric tile with label, big value, optional icon, optional\ntrend (direction + delta + description), optional sparkline placeholder.\nDesigned to live in a dashboard grid.\n\nSlot: `[kpStatCardSparkline]` — drop in your real chart (e.g. recharts);\nthe placeholder shows a styled rectangle when empty.",
6255
6333
  "examples": [
6256
6334
  "<kp-stat-card label=\"Total revenue\" value=\"$12,482\" trendValue=\"+12.5%\" trendDescription=\"from last month\"/>"
@@ -6332,7 +6410,7 @@
6332
6410
  ],
6333
6411
  "keyboardPatterns": [],
6334
6412
  "docsUrl": "https://gregnblack.github.io/kanso-protocol/?path=/docs/patterns-statcard--docs",
6335
- "sourcePath": "packages/patterns/stat-card/src/stat-card.component.ts",
6413
+ "sourcePath": "packages/ui/stat-card/src/stat-card.component.ts",
6336
6414
  "figma": {
6337
6415
  "fileKey": "ahRfe4BdMAyoK0I3lnicp6",
6338
6416
  "nodeId": "3822:7387",
@@ -6352,7 +6430,8 @@
6352
6430
  "className": "KpTableToolbarComponent",
6353
6431
  "selector": "kp-table-toolbar",
6354
6432
  "layer": "patterns",
6355
- "package": "@kanso-protocol/table-toolbar",
6433
+ "package": "@kanso-protocol/ui",
6434
+ "import": "@kanso-protocol/ui/table-toolbar",
6356
6435
  "description": "Kanso Protocol — TableToolbar\n\nPanel that sits above a data table. Two modes:\n- `default` — search + filter/sort + right-side actions (density, columns,\n export, create).\n- `bulk-select` — swaps to a selection summary with bulk actions\n (export / tag / move / delete).\n\nComposes SearchBar, Button, Badge. Action slots are boolean toggles so\nyou can dial the toolbar from minimal (\"search + create\") up to a full\nadmin bar without touching templates.",
6357
6436
  "examples": [
6358
6437
  "<kp-table-toolbar\n [showFilter]=\"true\"\n [activeFilterCount]=\"2\"\n (createClick)=\"openCreate()\">\n</kp-table-toolbar>"
@@ -6458,7 +6537,7 @@
6458
6537
  },
6459
6538
  {
6460
6539
  "name": "densityChange",
6461
- "payload": "import(\"/home/runner/work/kanso-protocol/kanso-protocol/packages/patterns/table-toolbar/src/table-toolbar.component\").KpTableToolbarDensity"
6540
+ "payload": "import(\"/home/runner/work/kanso-protocol/kanso-protocol/packages/ui/table-toolbar/src/table-toolbar.component\").KpTableToolbarDensity"
6462
6541
  },
6463
6542
  {
6464
6543
  "name": "columnsClick",
@@ -6497,7 +6576,7 @@
6497
6576
  "sizeRamp": [],
6498
6577
  "keyboardPatterns": [],
6499
6578
  "docsUrl": "https://gregnblack.github.io/kanso-protocol/?path=/docs/patterns-tabletoolbar--docs",
6500
- "sourcePath": "packages/patterns/table-toolbar/src/table-toolbar.component.ts",
6579
+ "sourcePath": "packages/ui/table-toolbar/src/table-toolbar.component.ts",
6501
6580
  "figma": {
6502
6581
  "fileKey": "ahRfe4BdMAyoK0I3lnicp6",
6503
6582
  "nodeId": "3822:7395",
@@ -6517,7 +6596,8 @@
6517
6596
  "className": "KpThemeToggleComponent",
6518
6597
  "selector": "kp-theme-toggle",
6519
6598
  "layer": "patterns",
6520
- "package": "@kanso-protocol/theme-toggle",
6599
+ "package": "@kanso-protocol/ui",
6600
+ "import": "@kanso-protocol/ui/theme-toggle",
6521
6601
  "description": "Kanso Protocol — ThemeToggle\n\nThree presentations for switching between light / dark / system\nthemes:\n- `icon` — single icon button that cycles\n- `segmented` — three inline icon segments, one selected\n- `dropdown` — ghost button showing the current theme label; opens a menu\n\nThe component emits `themeChange` when the user selects a value;\nkeeping the chosen theme (including `system`) up to the consumer.",
6522
6602
  "examples": [
6523
6603
  "<kp-theme-toggle\n variant=\"segmented\"\n [showLabel]=\"true\"\n [currentTheme]=\"theme()\"\n (themeChange)=\"theme.set($event)\"\n/>"
@@ -6551,7 +6631,7 @@
6551
6631
  "outputs": [
6552
6632
  {
6553
6633
  "name": "themeChange",
6554
- "payload": "import(\"/home/runner/work/kanso-protocol/kanso-protocol/packages/patterns/theme-toggle/src/theme-toggle.component\").KpThemeValue"
6634
+ "payload": "import(\"/home/runner/work/kanso-protocol/kanso-protocol/packages/ui/theme-toggle/src/theme-toggle.component\").KpThemeValue"
6555
6635
  },
6556
6636
  {
6557
6637
  "name": "dropdownClick",
@@ -6568,7 +6648,7 @@
6568
6648
  "Escape"
6569
6649
  ],
6570
6650
  "docsUrl": "https://gregnblack.github.io/kanso-protocol/?path=/docs/patterns-themetoggle--docs",
6571
- "sourcePath": "packages/patterns/theme-toggle/src/theme-toggle.component.ts",
6651
+ "sourcePath": "packages/ui/theme-toggle/src/theme-toggle.component.ts",
6572
6652
  "figma": {
6573
6653
  "fileKey": "ahRfe4BdMAyoK0I3lnicp6",
6574
6654
  "nodeId": "3822:7403",
@@ -6588,7 +6668,8 @@
6588
6668
  "className": "KpUserMenuComponent",
6589
6669
  "selector": "kp-user-menu",
6590
6670
  "layer": "patterns",
6591
- "package": "@kanso-protocol/user-menu",
6671
+ "package": "@kanso-protocol/ui",
6672
+ "import": "@kanso-protocol/ui/user-menu",
6592
6673
  "description": "Kanso Protocol — UserMenu\n\nPreset dropdown shown from the user Avatar in Header. User block\nat top, main menu, optional theme toggle + help links, Sign out.\n\nSlots:\n- `[kpUserMenuItems]` — main menu items (Profile / Settings / Billing / Team)\n- `[kpUserMenuHelp]` — help links\n- `[kpUserMenuTheme]` — theme toggle row (e.g. a SegmentedControl)",
6593
6674
  "examples": [
6594
6675
  "<kp-user-menu\n userName=\"Greg Black\"\n userInitials=\"GB\"\n userEmail=\"greg@example.com\"\n [showPlanBadge]=\"true\"\n planName=\"Pro\"\n>\n <div kpUserMenuItems>\n <kp-menu-item icon=\"user\" label=\"Profile\" (click$)=\"goto('profile')\"/>\n ...\n </div>\n</kp-user-menu>"
@@ -6662,7 +6743,7 @@
6662
6743
  ],
6663
6744
  "keyboardPatterns": [],
6664
6745
  "docsUrl": "https://gregnblack.github.io/kanso-protocol/?path=/docs/patterns-usermenu--docs",
6665
- "sourcePath": "packages/patterns/user-menu/src/user-menu.component.ts",
6746
+ "sourcePath": "packages/ui/user-menu/src/user-menu.component.ts",
6666
6747
  "figma": {
6667
6748
  "fileKey": "ahRfe4BdMAyoK0I3lnicp6",
6668
6749
  "nodeId": "3822:7411",