@stephen-netu/design-system 0.2.0 → 0.2.2

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 (198) hide show
  1. package/dist/b0-app-shell/clarification-overlay/ClarificationOverlay.svelte +10 -2
  2. package/dist/b0-app-shell/clarification-overlay/ClarificationOverlay.svelte.d.ts.map +1 -1
  3. package/dist/b0-app-shell/{command-bar/CommandBar.svelte → global-command-bar/GlobalCommandBar.svelte} +75 -75
  4. package/dist/b0-app-shell/{command-bar/CommandBar.svelte.d.ts → global-command-bar/GlobalCommandBar.svelte.d.ts} +6 -6
  5. package/dist/b0-app-shell/global-command-bar/GlobalCommandBar.svelte.d.ts.map +1 -0
  6. package/dist/b0-app-shell/index.d.ts +1 -1
  7. package/dist/b0-app-shell/index.d.ts.map +1 -1
  8. package/dist/b0-app-shell/index.js +1 -1
  9. package/dist/d0-data-viz/CheckpointPill.svelte +7 -2
  10. package/dist/d0-data-viz/CheckpointPill.svelte.d.ts.map +1 -1
  11. package/dist/d0-data-viz/theme-integration.d.ts +3 -3
  12. package/dist/d0-data-viz/theme-integration.js +3 -3
  13. package/dist/d0-data-viz/theme-integration.test.js +41 -0
  14. package/dist/demos/BspSizingInfographic.svelte +3 -32
  15. package/dist/editor/CodeEditor.test.js +38 -0
  16. package/dist/editor/FindReplaceDialog.svelte +32 -32
  17. package/dist/editor/MarkdownEditor.svelte +71 -58
  18. package/dist/editor/MarkdownEditor.svelte.d.ts.map +1 -1
  19. package/dist/editor/MarkdownEditor.test.js +38 -0
  20. package/dist/editor/components/CorrectionTooltip.svelte +0 -1
  21. package/dist/editor/extensions/expansion.d.ts.map +1 -1
  22. package/dist/editor/extensions/expansion.js +16 -10
  23. package/dist/entity-graph-view/WorldView.svelte +1 -1
  24. package/dist/fabric/ai/ChatPanel.svelte +31 -31
  25. package/dist/fabric/ai/ResearchPanel.svelte +6 -3
  26. package/dist/fabric/ai/ResearchPanel.svelte.d.ts.map +1 -1
  27. package/dist/fabric/index.d.ts +4 -5
  28. package/dist/fabric/index.d.ts.map +1 -1
  29. package/dist/fabric/index.js +3 -3
  30. package/dist/fabric/input/{CommandBar.svelte → AppHeaderBar.svelte} +13 -13
  31. package/dist/fabric/input/{CommandBar.svelte.d.ts → AppHeaderBar.svelte.d.ts} +5 -5
  32. package/dist/fabric/input/AppHeaderBar.svelte.d.ts.map +1 -0
  33. package/dist/fabric/input/{CommandBar.test.js → AppHeaderBar.test.js} +9 -9
  34. package/dist/fabric/input/index.d.ts +2 -2
  35. package/dist/fabric/input/index.d.ts.map +1 -1
  36. package/dist/fabric/input/index.js +1 -1
  37. package/dist/fabric/layout/KanbanBoard.svelte +25 -155
  38. package/dist/fabric/layout/KanbanBoard.svelte.d.ts +2 -26
  39. package/dist/fabric/layout/KanbanBoard.svelte.d.ts.map +1 -1
  40. package/dist/fabric/layout/KanbanBoard.test.js +125 -10
  41. package/dist/fabric/layout/KanbanCard.svelte +27 -223
  42. package/dist/fabric/layout/KanbanCard.svelte.d.ts +2 -19
  43. package/dist/fabric/layout/KanbanCard.svelte.d.ts.map +1 -1
  44. package/dist/fabric/layout/KanbanColumn.svelte +41 -275
  45. package/dist/fabric/layout/KanbanColumn.svelte.d.ts +2 -22
  46. package/dist/fabric/layout/KanbanColumn.svelte.d.ts.map +1 -1
  47. package/dist/fabric/layout/index.d.ts +2 -5
  48. package/dist/fabric/layout/index.d.ts.map +1 -1
  49. package/dist/fabric/layout/index.js +1 -1
  50. package/dist/g0-generative/renderer/OpenUIRenderer.svelte +3 -3
  51. package/dist/index.d.ts.map +1 -1
  52. package/dist/index.js +4 -2
  53. package/dist/l0-layout/SectionSplitter.svelte +5 -5
  54. package/dist/l0-layout/block-writer/BlockItem.svelte +6 -4
  55. package/dist/l0-layout/card/CompactCard.svelte +4 -3
  56. package/dist/l0-layout/grant/GrantCard.svelte +15 -5
  57. package/dist/l0-layout/grant/GrantCard.svelte.d.ts.map +1 -1
  58. package/dist/l0-layout/index.d.ts +2 -0
  59. package/dist/l0-layout/index.d.ts.map +1 -1
  60. package/dist/l0-layout/index.js +1 -0
  61. package/dist/l0-layout/kanban/KanbanBoard.svelte +246 -29
  62. package/dist/l0-layout/kanban/KanbanBoard.svelte.d.ts +28 -2
  63. package/dist/l0-layout/kanban/KanbanBoard.svelte.d.ts.map +1 -1
  64. package/dist/l0-layout/kanban/KanbanCard.svelte +175 -150
  65. package/dist/l0-layout/kanban/KanbanCard.svelte.d.ts +16 -18
  66. package/dist/l0-layout/kanban/KanbanCard.svelte.d.ts.map +1 -1
  67. package/dist/l0-layout/kanban/KanbanColumn.svelte +152 -78
  68. package/dist/l0-layout/kanban/KanbanColumn.svelte.d.ts +28 -7
  69. package/dist/l0-layout/kanban/KanbanColumn.svelte.d.ts.map +1 -1
  70. package/dist/l0-layout/kanban/index.d.ts +6 -0
  71. package/dist/l0-layout/kanban/index.d.ts.map +1 -0
  72. package/dist/l0-layout/kanban/index.js +3 -0
  73. package/dist/n0-node-graph/Node.svelte +2 -2
  74. package/dist/n0-node-graph/NodePalette.svelte +2 -2
  75. package/dist/n1-flow-canvas/graph-state.test.js +69 -0
  76. package/dist/n1-flow-canvas/utils.test.js +116 -0
  77. package/dist/n3-force-graph/GraphTooltip.svelte +2 -2
  78. package/dist/n4-adaptive-manifold/AdaptiveManifold.svelte +12 -11
  79. package/dist/n4-adaptive-manifold/AdaptiveManifold.svelte.d.ts.map +1 -1
  80. package/dist/n4-adaptive-manifold/classifier.test.js +104 -0
  81. package/dist/n4-adaptive-manifold/n4-tokens.css +2 -2
  82. package/dist/p0-primitives/ThemeProvider.svelte +10 -11
  83. package/dist/p0-primitives/ThemeProvider.svelte.d.ts +1 -1
  84. package/dist/p0-primitives/ThemeProvider.svelte.d.ts.map +1 -1
  85. package/dist/p0-primitives/canvas-theme.d.ts +12 -0
  86. package/dist/p0-primitives/canvas-theme.d.ts.map +1 -1
  87. package/dist/p0-primitives/canvas-theme.js +10 -0
  88. package/dist/p0-primitives/index.d.ts +2 -1
  89. package/dist/p0-primitives/index.d.ts.map +1 -1
  90. package/dist/p0-primitives/index.js +1 -0
  91. package/dist/p0-primitives/theme-context.d.ts +9 -0
  92. package/dist/p0-primitives/theme-context.d.ts.map +1 -0
  93. package/dist/p0-primitives/theme-context.js +8 -0
  94. package/dist/p0-primitives/tokens/tokens.css +22 -11
  95. package/dist/p0-primitives/utils/index.d.ts +2 -2
  96. package/dist/p0-primitives/utils/index.d.ts.map +1 -1
  97. package/dist/s0-state/SyncStatus.svelte +1 -1
  98. package/dist/s0-state/ThemeStore.svelte.d.ts +3 -2
  99. package/dist/s0-state/ThemeStore.svelte.d.ts.map +1 -1
  100. package/dist/s0-state/ThemeStore.svelte.js +20 -1
  101. package/dist/s0-state/index.d.ts +0 -1
  102. package/dist/s0-state/index.d.ts.map +1 -1
  103. package/dist/s0-state/index.js +1 -0
  104. package/dist/s0-state/modal-stack-store.svelte.d.ts +25 -0
  105. package/dist/s0-state/modal-stack-store.svelte.d.ts.map +1 -1
  106. package/dist/s0-state/modal-stack-store.svelte.js +19 -0
  107. package/dist/showcase/Showcase.svelte +43 -34
  108. package/dist/showcase/Showcase.svelte.d.ts.map +1 -1
  109. package/dist/spatial/BspTilingCanvas.svelte +7 -5
  110. package/dist/spatial/BspTilingCanvas.svelte.d.ts +1 -0
  111. package/dist/spatial/BspTilingCanvas.svelte.d.ts.map +1 -1
  112. package/dist/spatial/BspTilingSimulation.test.js +88 -0
  113. package/dist/spatial/CameraController.test.js +120 -0
  114. package/dist/spatial/ForceCanvas.svelte +20 -13
  115. package/dist/spatial/ForceCanvas.svelte.d.ts +1 -0
  116. package/dist/spatial/ForceCanvas.svelte.d.ts.map +1 -1
  117. package/dist/spatial/ForceSimulation.svelte.d.ts.map +1 -1
  118. package/dist/spatial/ForceSimulation.svelte.js +32 -21
  119. package/dist/spatial/LodRenderer.svelte +16 -1
  120. package/dist/spatial/LodRenderer.svelte.d.ts +1 -0
  121. package/dist/spatial/LodRenderer.svelte.d.ts.map +1 -1
  122. package/dist/spatial/SnapZoomCamera.svelte +25 -13
  123. package/dist/spatial/SnapZoomCamera.svelte.d.ts +1 -0
  124. package/dist/spatial/SnapZoomCamera.svelte.d.ts.map +1 -1
  125. package/dist/spatial/ZoneTiler.svelte +5 -2
  126. package/dist/spatial/ZoneTiler.svelte.d.ts +1 -0
  127. package/dist/spatial/ZoneTiler.svelte.d.ts.map +1 -1
  128. package/dist/spatial/d3-types.d.ts +31 -0
  129. package/dist/spatial/d3-types.d.ts.map +1 -0
  130. package/dist/spatial/d3-types.js +19 -0
  131. package/dist/ssr-import-clean.test.js +37 -0
  132. package/dist/t0-transport/fs.d.ts +12 -0
  133. package/dist/t0-transport/fs.d.ts.map +1 -0
  134. package/dist/t0-transport/fs.js +55 -0
  135. package/dist/t0-transport/index.d.ts +1 -0
  136. package/dist/t0-transport/index.d.ts.map +1 -1
  137. package/dist/t0-transport/index.js +1 -0
  138. package/dist/t0-transport/invoke.d.ts.map +1 -1
  139. package/dist/t0-transport/invoke.js +5 -2
  140. package/dist/t0-transport/quality.d.ts +12 -3
  141. package/dist/t0-transport/quality.d.ts.map +1 -1
  142. package/dist/t0-transport/quality.js +17 -4
  143. package/dist/t0-transport/substrate.svelte.d.ts +27 -0
  144. package/dist/t0-transport/substrate.svelte.d.ts.map +1 -0
  145. package/dist/t0-transport/substrate.svelte.js +49 -0
  146. package/dist/u0-primitives/LockIndicator.svelte +1 -1
  147. package/dist/u0-primitives/VerticalToolbar.svelte +1 -1
  148. package/dist/u0-primitives/accordion/Accordion.svelte +10 -9
  149. package/dist/u0-primitives/accordion/Accordion.svelte.d.ts +0 -7
  150. package/dist/u0-primitives/accordion/Accordion.svelte.d.ts.map +1 -1
  151. package/dist/u0-primitives/accordion/Accordion.test.js +5 -5
  152. package/dist/u0-primitives/badge/Badge.test.js +10 -10
  153. package/dist/u0-primitives/badge/ValidityBadge.test.js +9 -9
  154. package/dist/u0-primitives/button/Button.svelte +3 -1
  155. package/dist/u0-primitives/button/Button.svelte.d.ts +1 -0
  156. package/dist/u0-primitives/button/Button.svelte.d.ts.map +1 -1
  157. package/dist/u0-primitives/button/Button.test.js +11 -11
  158. package/dist/u0-primitives/card/Card.svelte +26 -20
  159. package/dist/u0-primitives/card/Card.svelte.d.ts.map +1 -1
  160. package/dist/u0-primitives/command-palette/CommandPalette.svelte +27 -0
  161. package/dist/u0-primitives/command-palette/CommandPalette.svelte.d.ts.map +1 -1
  162. package/dist/u0-primitives/command-palette/commandStore.svelte.d.ts.map +1 -1
  163. package/dist/u0-primitives/command-palette/commandStore.svelte.js +2 -1
  164. package/dist/u0-primitives/dropdown/Dropdown.test.js +1 -1
  165. package/dist/u0-primitives/index.d.ts +2 -0
  166. package/dist/u0-primitives/index.d.ts.map +1 -1
  167. package/dist/u0-primitives/index.js +1 -0
  168. package/dist/u0-primitives/input/Input.svelte +9 -0
  169. package/dist/u0-primitives/input/Input.svelte.d.ts.map +1 -1
  170. package/dist/u0-primitives/input/Input.test.js +1 -1
  171. package/dist/u0-primitives/modal/Modal.svelte +46 -23
  172. package/dist/u0-primitives/modal/Modal.svelte.d.ts.map +1 -1
  173. package/dist/u0-primitives/modal/Modal.test.js +63 -15
  174. package/dist/u0-primitives/rsvp/RsvpReader.svelte +8 -8
  175. package/dist/u0-primitives/rsvp/RsvpReader.svelte.d.ts.map +1 -1
  176. package/dist/u0-primitives/steps/Steps.svelte +2 -2
  177. package/dist/u0-primitives/surface-state/SurfaceState.svelte +190 -0
  178. package/dist/u0-primitives/surface-state/SurfaceState.svelte.d.ts +15 -0
  179. package/dist/u0-primitives/surface-state/SurfaceState.svelte.d.ts.map +1 -0
  180. package/dist/u0-primitives/toggle/Toggle.svelte +12 -2
  181. package/dist/u0-primitives/tooltip/Tooltip.test.js +12 -12
  182. package/dist/v0-diagrams/MarkmapDiagram.test.js +49 -0
  183. package/dist/v0-diagrams/MermaidDiagram.svelte +21 -9
  184. package/dist/v0-diagrams/MermaidDiagram.svelte.d.ts.map +1 -1
  185. package/dist/v0-diagrams/MermaidDiagram.test.js +40 -0
  186. package/package.json +51 -24
  187. package/src/n4-adaptive-manifold/n4-tokens.css +2 -2
  188. package/src/p0-primitives/tokens/tokens.css +22 -11
  189. package/src/p0-primitives/tokens/tokens.json +13 -2
  190. package/dist/b0-app-shell/command-bar/CommandBar.svelte.d.ts.map +0 -1
  191. package/dist/fabric/input/CommandBar.svelte.d.ts.map +0 -1
  192. package/dist/stores/vaultStore.svelte +0 -14
  193. package/dist/stores/vaultStore.svelte.d.ts +0 -24
  194. package/dist/stores/vaultStore.svelte.d.ts.map +0 -1
  195. package/dist/tauri/index.d.ts +0 -3
  196. package/dist/tauri/index.d.ts.map +0 -1
  197. package/dist/tauri/index.js +0 -11
  198. package/dist/types/tauri.d.ts +0 -18
@@ -265,8 +265,8 @@
265
265
  display: flex;
266
266
  flex-direction: column;
267
267
  height: 100%;
268
- background: var(--bg-panel, #1a1a1a);
269
- color: var(--text-primary, #e0e0e0);
268
+ background: var(--color-bg-panel, #1a1a1a);
269
+ color: var(--color-text-primary, #e0e0e0);
270
270
  }
271
271
 
272
272
  .chat-header {
@@ -275,14 +275,14 @@
275
275
  justify-content: space-between;
276
276
  padding: 12px 16px;
277
277
  border-bottom: 1px solid var(--border-subtle, #2a2a2a);
278
- background: var(--bg-panel, #1a1a1a);
278
+ background: var(--color-bg-panel, #1a1a1a);
279
279
  }
280
280
 
281
281
  .chat-title {
282
282
  font-size: 14px;
283
283
  font-weight: 600;
284
284
  margin: 0;
285
- color: var(--text-primary, #e0e0e0);
285
+ color: var(--color-text-primary, #e0e0e0);
286
286
  }
287
287
 
288
288
  .clear-btn {
@@ -293,7 +293,7 @@
293
293
  background: transparent;
294
294
  border: none;
295
295
  border-radius: var(--radius-sm, 4px);
296
- color: var(--text-tertiary, #6b6b6b);
296
+ color: var(--color-text-tertiary, #6b6b6b);
297
297
  cursor: pointer;
298
298
  transition: all 0.15s ease;
299
299
  }
@@ -329,13 +329,13 @@
329
329
 
330
330
  .empty-text {
331
331
  font-size: 14px;
332
- color: var(--text-secondary, #a0a0a0);
332
+ color: var(--color-text-secondary, #a0a0a0);
333
333
  margin: 0 0 4px 0;
334
334
  }
335
335
 
336
336
  .empty-hint {
337
337
  font-size: 12px;
338
- color: var(--text-tertiary, #6b6b6b);
338
+ color: var(--color-text-tertiary, #6b6b6b);
339
339
  margin: 0;
340
340
  }
341
341
 
@@ -360,14 +360,14 @@
360
360
  }
361
361
 
362
362
  .message.user .message-bubble {
363
- background: var(--accent-primary, var(--color-accent));
363
+ background: var(--color-accent);
364
364
  color: white;
365
365
  border-bottom-right-radius: 4px;
366
366
  }
367
367
 
368
368
  .message.assistant .message-bubble {
369
- background: var(--bg-panel-elevated, #252525);
370
- color: var(--text-primary, #e0e0e0);
369
+ background: var(--color-bg-panel-elevated, #252525);
370
+ color: var(--color-text-primary, #e0e0e0);
371
371
  border: 1px solid var(--border-subtle, #2a2a2a);
372
372
  border-bottom-left-radius: 4px;
373
373
  }
@@ -413,7 +413,7 @@
413
413
  display: inline-block;
414
414
  width: 2px;
415
415
  height: 1em;
416
- background: var(--accent-primary, var(--color-accent));
416
+ background: var(--color-accent);
417
417
  margin-left: 2px;
418
418
  animation: blink 1s infinite;
419
419
  vertical-align: middle;
@@ -438,10 +438,10 @@
438
438
  align-items: center;
439
439
  gap: var(--space-1);
440
440
  padding: 4px 8px;
441
- background: var(--accent-subtle, var(--color-accent-muted));
442
- border: 1px solid var(--accent-primary, var(--color-accent));
441
+ background: var(--color-accent-subtle);
442
+ border: 1px solid var(--color-accent);
443
443
  border-radius: var(--radius-xl, 12px);
444
- color: var(--accent-primary, var(--color-accent));
444
+ color: var(--color-accent);
445
445
  font-size: 11px;
446
446
  cursor: pointer;
447
447
  transition: all 0.15s ease;
@@ -449,7 +449,7 @@
449
449
  }
450
450
 
451
451
  .citation-chip:hover {
452
- background: var(--accent-primary, var(--color-accent));
452
+ background: var(--color-accent);
453
453
  color: white;
454
454
  }
455
455
 
@@ -472,9 +472,9 @@
472
472
  transform: translateX(-50%);
473
473
  width: 220px;
474
474
  padding: 10px 12px;
475
- background: var(--bg-panel-elevated, #252525);
475
+ background: var(--color-bg-panel-elevated, #252525);
476
476
  border: 1px solid var(--border-subtle, #2a2a2a);
477
- border-left: 3px solid var(--accent-primary, var(--color-accent));
477
+ border-left: 3px solid var(--color-accent);
478
478
  border-radius: var(--radius-md, 6px);
479
479
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);
480
480
  z-index: 10;
@@ -495,13 +495,13 @@
495
495
  margin: 0 0 6px 0;
496
496
  font-size: 11px;
497
497
  line-height: 1.5;
498
- color: var(--text-primary, #e0e0e0);
498
+ color: var(--color-text-primary, #e0e0e0);
499
499
  font-family: var(--font-mono, 'JetBrains Mono', monospace);
500
500
  }
501
501
 
502
502
  .citation-popover-source {
503
503
  font-size: 10px;
504
- color: var(--text-tertiary, #6b6b6b);
504
+ color: var(--color-text-tertiary, #6b6b6b);
505
505
  font-style: italic;
506
506
  }
507
507
 
@@ -518,7 +518,7 @@
518
518
  .input-container {
519
519
  padding: 12px 16px;
520
520
  border-top: 1px solid var(--border-subtle, #2a2a2a);
521
- background: var(--bg-panel, #1a1a1a);
521
+ background: var(--color-bg-panel, #1a1a1a);
522
522
  }
523
523
 
524
524
  .input-wrapper {
@@ -530,21 +530,21 @@
530
530
  .chat-input {
531
531
  flex: 1;
532
532
  padding: 10px 14px;
533
- background: var(--bg-panel-elevated, #252525);
533
+ background: var(--color-bg-panel-elevated, #252525);
534
534
  border: 1px solid var(--border-subtle, #2a2a2a);
535
535
  border-radius: var(--radius-xl, 20px);
536
- color: var(--text-primary, #e0e0e0);
536
+ color: var(--color-text-primary, #e0e0e0);
537
537
  font-size: 13px;
538
538
  outline: none;
539
539
  transition: border-color 0.15s ease;
540
540
  }
541
541
 
542
542
  .chat-input:focus {
543
- border-color: var(--accent-primary, var(--color-accent));
543
+ border-color: var(--color-accent);
544
544
  }
545
545
 
546
546
  .chat-input::placeholder {
547
- color: var(--text-tertiary, #6b6b6b);
547
+ color: var(--color-text-tertiary, #6b6b6b);
548
548
  }
549
549
 
550
550
  .chat-input:disabled {
@@ -559,7 +559,7 @@
559
559
  width: 36px;
560
560
  height: 36px;
561
561
  padding: 0;
562
- background: var(--accent-primary, var(--color-accent));
562
+ background: var(--color-accent);
563
563
  border: none;
564
564
  border-radius: 50%;
565
565
  color: white;
@@ -569,7 +569,7 @@
569
569
  }
570
570
 
571
571
  .send-btn:hover:not(:disabled) {
572
- background: var(--accent-hover, #c9894f);
572
+ background: var(--color-accent-hover, #c9894f);
573
573
  transform: scale(1.05);
574
574
  }
575
575
 
@@ -584,7 +584,7 @@
584
584
  align-items: center;
585
585
  justify-content: space-between;
586
586
  padding: 8px 12px;
587
- background: var(--accent-subtle, var(--color-accent-subtle));
587
+ background: var(--color-accent-subtle, var(--color-accent-subtle));
588
588
  border-bottom: 1px solid var(--border-focus, var(--color-accent-muted));
589
589
  gap: var(--space-2);
590
590
  }
@@ -593,7 +593,7 @@
593
593
  display: flex;
594
594
  align-items: center;
595
595
  gap: var(--space-15);
596
- color: var(--accent-primary, var(--color-accent));
596
+ color: var(--color-accent);
597
597
  font-size: 12px;
598
598
  font-weight: 500;
599
599
  white-space: nowrap;
@@ -617,10 +617,10 @@
617
617
  .context-chip {
618
618
  font-size: 11px;
619
619
  padding: 2px 8px;
620
- background: var(--bg-panel-elevated, #252525);
620
+ background: var(--color-bg-panel-elevated, #252525);
621
621
  border: 1px solid var(--border-subtle, #2a2a2a);
622
622
  border-radius: var(--radius-lg, 10px);
623
- color: var(--text-secondary, #a0a0a0);
623
+ color: var(--color-text-secondary, #a0a0a0);
624
624
  white-space: nowrap;
625
625
  overflow: hidden;
626
626
  text-overflow: ellipsis;
@@ -635,7 +635,7 @@
635
635
  background: transparent;
636
636
  border: none;
637
637
  border-radius: var(--radius-sm, 4px);
638
- color: var(--text-tertiary, #6b6b6b);
638
+ color: var(--color-text-tertiary, #6b6b6b);
639
639
  cursor: pointer;
640
640
  transition: all 0.15s ease;
641
641
  flex-shrink: 0;
@@ -261,7 +261,9 @@
261
261
  >
262
262
  {entry.title}
263
263
  </a>
264
- <ExternalLink class="external-icon" size={12} />
264
+ <span class="external-icon">
265
+ <ExternalLink size={12} />
266
+ </span>
265
267
  </div>
266
268
  <p class="result-snippet">{entry.snippet}</p>
267
269
  <div class="result-footer">
@@ -437,6 +439,7 @@
437
439
  margin: 0 0 8px;
438
440
  display: -webkit-box;
439
441
  -webkit-line-clamp: 2;
442
+ line-clamp: 2;
440
443
  -webkit-box-orient: vertical;
441
444
  overflow: hidden;
442
445
  }
@@ -490,9 +493,9 @@
490
493
  gap: var(--space-15);
491
494
  padding: 6px 16px;
492
495
  background: none;
493
- border: 1px solid var(--color-danger, #e53935);
496
+ border: 1px solid var(--color-error, #e53935);
494
497
  border-radius: var(--radius-sm, 0.25rem);
495
- color: var(--color-danger, #e53935);
498
+ color: var(--color-error, #e53935);
496
499
  font-size: 12px;
497
500
  cursor: pointer;
498
501
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ResearchPanel.svelte.d.ts","sourceRoot":"","sources":["../../../src/fabric/ai/ResearchPanel.svelte.ts"],"names":[],"mappings":"AAeE,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;CACpB;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAKD,UAAU,KAAK;IAEb,OAAO,EAAE,mBAAmB,GAAG,IAAI,CAAC;IACpC,QAAQ,EAAE,oBAAoB,GAAG,IAAI,CAAC;IACtC,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAGvB,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACzE,gBAAgB,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAChG,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,OAAO,EAAE,MAAM,IAAI,CAAC;IAGpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAuNH,QAAA,MAAM,aAAa,2CAAwC,CAAC;AAC5D,KAAK,aAAa,GAAG,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC;AACtD,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"ResearchPanel.svelte.d.ts","sourceRoot":"","sources":["../../../src/fabric/ai/ResearchPanel.svelte.ts"],"names":[],"mappings":"AAeE,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;CACpB;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAKD,UAAU,KAAK;IAEb,OAAO,EAAE,mBAAmB,GAAG,IAAI,CAAC;IACpC,QAAQ,EAAE,oBAAoB,GAAG,IAAI,CAAC;IACtC,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAGvB,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACzE,gBAAgB,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAChG,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,OAAO,EAAE,MAAM,IAAI,CAAC;IAGpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAyNH,QAAA,MAAM,aAAa,2CAAwC,CAAC;AAC5D,KAAK,aAAa,GAAG,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC;AACtD,eAAe,aAAa,CAAC"}
@@ -5,21 +5,20 @@
5
5
  * Following ADR-2026-04-12-leap-substrate-refactor-001
6
6
  *
7
7
  * Import from specific subpaths for tree-shaking:
8
- * import { Button } from '@kos/design-system/fabric/u0-primitives';
8
+ * import { Button } from '@kos/design-system/u0-primitives';
9
9
  * import { GlassBox } from '@kos/design-system/fabric/layout';
10
10
  *
11
11
  * Or use the barrel import for convenience:
12
- * import { GlassBox, ActivityRail, FileTree, KanbanBoard, KanbanColumn, KanbanCard, CommandBar, KeyboardShortcuts, ChatPanel, ToastContainer, StatusBar } from '@kos/design-system/fabric';
12
+ * import { GlassBox, ActivityRail, KanbanBoard, KanbanColumn, KanbanCard, AppHeaderBar, KeyboardShortcuts, ChatPanel, ToastContainer, StatusBar } from '@kos/design-system/fabric';
13
13
  */
14
14
  export { GlassBox, KanbanBoard, KanbanColumn, KanbanCard, CollapsiblePanel } from './layout';
15
15
  export type { CardData, ColumnData, PanelPosition, PanelMode, PanelSnap } from './layout';
16
- export type { KanbanBoardProps, KanbanColumnProps, KanbanCardProps } from './layout';
17
16
  export { ActivityRail } from './navigation';
18
17
  export type { RailItem, RailItemType } from './navigation';
19
18
  export type { FileEntry } from './data';
20
- export { CommandBar, KeyboardShortcuts } from './input';
19
+ export { AppHeaderBar, KeyboardShortcuts } from './input';
21
20
  export type { ShortcutBinding, ShortcutGroup } from './input';
22
- export type { CommandBarProps } from './input';
21
+ export type { AppHeaderBarProps } from './input';
23
22
  export { ChatPanel, ResearchPanel } from './ai';
24
23
  export type { Message, Citation, ContextCard } from './ai';
25
24
  export { ToastContainer, StatusBar } from './feedback';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/fabric/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC7F,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,aAAa,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAC1F,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAGrF,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,YAAY,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAG3D,YAAY,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAGxC,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AACxD,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC9D,YAAY,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAG/C,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,MAAM,CAAC;AAChD,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,MAAM,CAAC;AAG3D,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvD,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AACvE,YAAY,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/fabric/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC7F,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,aAAa,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAG1F,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,YAAY,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAG3D,YAAY,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAGxC,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAC1D,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC9D,YAAY,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAGjD,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,MAAM,CAAC;AAChD,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,MAAM,CAAC;AAG3D,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvD,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AACvE,YAAY,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC"}
@@ -5,18 +5,18 @@
5
5
  * Following ADR-2026-04-12-leap-substrate-refactor-001
6
6
  *
7
7
  * Import from specific subpaths for tree-shaking:
8
- * import { Button } from '@kos/design-system/fabric/u0-primitives';
8
+ * import { Button } from '@kos/design-system/u0-primitives';
9
9
  * import { GlassBox } from '@kos/design-system/fabric/layout';
10
10
  *
11
11
  * Or use the barrel import for convenience:
12
- * import { GlassBox, ActivityRail, FileTree, KanbanBoard, KanbanColumn, KanbanCard, CommandBar, KeyboardShortcuts, ChatPanel, ToastContainer, StatusBar } from '@kos/design-system/fabric';
12
+ * import { GlassBox, ActivityRail, KanbanBoard, KanbanColumn, KanbanCard, AppHeaderBar, KeyboardShortcuts, ChatPanel, ToastContainer, StatusBar } from '@kos/design-system/fabric';
13
13
  */
14
14
  // Layout
15
15
  export { GlassBox, KanbanBoard, KanbanColumn, KanbanCard, CollapsiblePanel } from './layout';
16
16
  // Navigation
17
17
  export { ActivityRail } from './navigation';
18
18
  // Input
19
- export { CommandBar, KeyboardShortcuts } from './input';
19
+ export { AppHeaderBar, KeyboardShortcuts } from './input';
20
20
  // AI
21
21
  export { ChatPanel, ResearchPanel } from './ai';
22
22
  // Feedback
@@ -1,7 +1,7 @@
1
1
  <script lang="ts">
2
2
  /**
3
- * CommandBar - Fabric Component
4
- *
3
+ * AppHeaderBar Fabric application header.
4
+ *
5
5
  * Application header with vault selection and shortcuts.
6
6
  * Decoupled from shell stores - uses props/callbacks for all state.
7
7
  *
@@ -36,18 +36,18 @@
36
36
  .command-bar {
37
37
  display: flex;
38
38
  align-items: center;
39
- height: 40px;
40
- padding: 0 12px;
39
+ height: 2.5rem;
40
+ padding: 0 var(--space-3);
41
41
  background: var(--color-bg-canvas);
42
- border-top: 2px solid var(--border-default);
43
- border-bottom: 2px solid var(--border-default);
42
+ border-top: var(--border-width-default) solid var(--border-default);
43
+ border-bottom: var(--border-width-default) solid var(--border-default);
44
44
  gap: var(--space-3);
45
45
  }
46
46
 
47
47
  .app-name {
48
48
  font-weight: 600;
49
49
  color: var(--color-text-primary);
50
- font-size: 14px;
50
+ font-size: var(--text-sm);
51
51
  font-family: var(--font-mono);
52
52
  letter-spacing: 0.05em;
53
53
  }
@@ -58,12 +58,12 @@
58
58
 
59
59
  .cmd-btn {
60
60
  background: transparent;
61
- border: 2px solid var(--border-subtle);
61
+ border: var(--border-width-default) solid var(--border-subtle);
62
62
  border-radius: 0; /* Military sharp edges */
63
63
  color: var(--color-text-secondary);
64
64
  cursor: pointer;
65
- font-size: 13px;
66
- padding: 4px 8px;
65
+ font-size: 0.8125rem;
66
+ padding: var(--space-1) var(--space-2);
67
67
  transition: border-color 0.15s, color 0.15s, background 0.15s;
68
68
  font-family: var(--font-mono);
69
69
  text-transform: uppercase;
@@ -78,11 +78,11 @@
78
78
  }
79
79
 
80
80
  .mode-label {
81
- font-size: 12px;
81
+ font-size: var(--text-xs);
82
82
  color: var(--color-text-tertiary);
83
- padding: 2px 8px;
83
+ padding: var(--space-05) var(--space-2);
84
84
  background: var(--color-bg-panel);
85
- border: 2px solid var(--border-subtle);
85
+ border: var(--border-width-default) solid var(--border-subtle);
86
86
  border-radius: 0;
87
87
  font-family: var(--font-mono);
88
88
  text-transform: uppercase;
@@ -1,5 +1,5 @@
1
1
  /**
2
- * CommandBar - Fabric Component
2
+ * AppHeaderBar Fabric application header.
3
3
  *
4
4
  * Application header with vault selection and shortcuts.
5
5
  * Decoupled from shell stores - uses props/callbacks for all state.
@@ -17,7 +17,7 @@ export interface Props {
17
17
  /** Callback when keybind settings clicked */
18
18
  onopenkeybindsettings?: () => void;
19
19
  }
20
- declare const CommandBar: import("svelte").Component<Props, {}, "">;
21
- type CommandBar = ReturnType<typeof CommandBar>;
22
- export default CommandBar;
23
- //# sourceMappingURL=CommandBar.svelte.d.ts.map
20
+ declare const AppHeaderBar: import("svelte").Component<Props, {}, "">;
21
+ type AppHeaderBar = ReturnType<typeof AppHeaderBar>;
22
+ export default AppHeaderBar;
23
+ //# sourceMappingURL=AppHeaderBar.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AppHeaderBar.svelte.d.ts","sourceRoot":"","sources":["../../../src/fabric/input/AppHeaderBar.svelte.ts"],"names":[],"mappings":"AAGE;;;;;;;;GAQG;AACH,MAAM,WAAW,KAAK;IACpB,0BAA0B;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,8BAA8B;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2CAA2C;IAC3C,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B,6CAA6C;IAC7C,qBAAqB,CAAC,EAAE,MAAM,IAAI,CAAC;CACpC;AAoBH,QAAA,MAAM,YAAY,2CAAwC,CAAC;AAC3D,KAAK,YAAY,GAAG,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC;AACpD,eAAe,YAAY,CAAC"}
@@ -1,27 +1,27 @@
1
1
  import { afterEach, describe, it, expect, vi } from 'vitest';
2
2
  import { cleanup, render, fireEvent } from '@testing-library/svelte';
3
- import CommandBar from './CommandBar.svelte';
4
- describe('CommandBar', () => {
3
+ import AppHeaderBar from './AppHeaderBar.svelte';
4
+ describe('AppHeaderBar', () => {
5
5
  afterEach(() => cleanup());
6
6
  it('renders the app name', () => {
7
- const { container } = render(CommandBar, { appName: 'TEST_APP' });
7
+ const { container } = render(AppHeaderBar, { appName: 'TEST_APP' });
8
8
  expect(container.querySelector('.app-name')?.textContent).toBe('TEST_APP');
9
9
  });
10
10
  it('renders SELECT VAULT button', () => {
11
- const { container } = render(CommandBar, { appName: 'TEST_APP' });
11
+ const { container } = render(AppHeaderBar, { appName: 'TEST_APP' });
12
12
  const buttons = container.querySelectorAll('button');
13
13
  const found = Array.from(buttons).some(b => b.textContent?.trim() === 'SELECT VAULT');
14
14
  expect(found).toBe(true);
15
15
  });
16
16
  it('renders SHORTCUTS button', () => {
17
- const { container } = render(CommandBar, { appName: 'TEST_APP' });
17
+ const { container } = render(AppHeaderBar, { appName: 'TEST_APP' });
18
18
  const buttons = container.querySelectorAll('button');
19
19
  const found = Array.from(buttons).some(b => b.textContent?.trim() === 'SHORTCUTS');
20
20
  expect(found).toBe(true);
21
21
  });
22
22
  it('calls onselectvault when SELECT VAULT is clicked', async () => {
23
23
  const handler = vi.fn();
24
- const { container } = render(CommandBar, { appName: 'TEST_APP', onselectvault: handler });
24
+ const { container } = render(AppHeaderBar, { appName: 'TEST_APP', onselectvault: handler });
25
25
  const buttons = Array.from(container.querySelectorAll('button'));
26
26
  const btn = buttons.find(b => b.textContent?.trim() === 'SELECT VAULT');
27
27
  await fireEvent.click(btn);
@@ -29,18 +29,18 @@ describe('CommandBar', () => {
29
29
  });
30
30
  it('calls onopenkeybindsettings when SHORTCUTS is clicked', async () => {
31
31
  const handler = vi.fn();
32
- const { container } = render(CommandBar, { appName: 'TEST_APP', onopenkeybindsettings: handler });
32
+ const { container } = render(AppHeaderBar, { appName: 'TEST_APP', onopenkeybindsettings: handler });
33
33
  const buttons = Array.from(container.querySelectorAll('button'));
34
34
  const btn = buttons.find(b => b.textContent?.trim() === 'SHORTCUTS');
35
35
  await fireEvent.click(btn);
36
36
  expect(handler).toHaveBeenCalledTimes(1);
37
37
  });
38
38
  it('renders mode label (uppercased) when modeLabel is provided', () => {
39
- const { container } = render(CommandBar, { appName: 'TEST_APP', modeLabel: 'edit' });
39
+ const { container } = render(AppHeaderBar, { appName: 'TEST_APP', modeLabel: 'edit' });
40
40
  expect(container.querySelector('.mode-label')?.textContent).toBe('EDIT');
41
41
  });
42
42
  it('does NOT render mode label when modeLabel is not provided', () => {
43
- const { container } = render(CommandBar, { appName: 'TEST_APP' });
43
+ const { container } = render(AppHeaderBar, { appName: 'TEST_APP' });
44
44
  expect(container.querySelector('.mode-label')).toBeNull();
45
45
  });
46
46
  });
@@ -6,8 +6,8 @@
6
6
  * @package @kos/design-system/fabric/input
7
7
  * @adr 2026-04-12-leap-substrate-refactor-001
8
8
  */
9
- export { default as CommandBar } from './CommandBar.svelte';
10
- export type { Props as CommandBarProps } from './CommandBar.svelte';
9
+ export { default as AppHeaderBar } from './AppHeaderBar.svelte';
10
+ export type { Props as AppHeaderBarProps } from './AppHeaderBar.svelte';
11
11
  export { default as KeyboardShortcuts } from './KeyboardShortcuts.svelte';
12
12
  export type { ShortcutBinding, ShortcutGroup } from './KeyboardShortcuts.svelte';
13
13
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/fabric/input/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC5D,YAAY,EAAE,KAAK,IAAI,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACpE,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC1E,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/fabric/input/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAChE,YAAY,EAAE,KAAK,IAAI,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AACxE,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC1E,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC"}
@@ -6,5 +6,5 @@
6
6
  * @package @kos/design-system/fabric/input
7
7
  * @adr 2026-04-12-leap-substrate-refactor-001
8
8
  */
9
- export { default as CommandBar } from './CommandBar.svelte';
9
+ export { default as AppHeaderBar } from './AppHeaderBar.svelte';
10
10
  export { default as KeyboardShortcuts } from './KeyboardShortcuts.svelte';
@@ -1,158 +1,28 @@
1
1
  <script lang="ts">
2
- /**
3
- * KanbanBoard - Fabric Component
4
- *
5
- * Multi-column kanban board with drag-drop support.
6
- * Decoupled from shell stores - uses props/callbacks for all state.
7
- *
8
- * @package @kos/design-system/fabric/layout
9
- * @adr 2026-04-12-leap-substrate-refactor-001
10
- */
11
- import type { ColumnData } from './KanbanColumn.svelte';
12
- import type { CardData } from './KanbanCard.svelte';
13
-
14
- interface ColumnState {
15
- column: ColumnData;
16
- cards: CardData[];
17
- isDropTarget?: boolean;
18
- isCollapsed?: boolean;
19
- }
20
-
21
- export interface Props {
22
- columns: ColumnState[];
23
- onCardMove?: (cardId: string, sourceColumnId: string, targetColumnId: string) => void;
24
- onCardClick?: (card: CardData) => void;
25
- onAddCard?: (columnId: string) => void;
26
- onAddColumn?: () => void;
27
- onColumnMenuClick?: (columnId: string) => void;
28
- title?: string;
29
- }
30
-
31
- let { columns, onCardMove, onCardClick, onAddCard, onAddColumn, onColumnMenuClick, title }: Props = $props();
32
-
33
- let draggedCardId = $state<string | null>(null);
34
- let activeDropColumn = $state<string | null>(null);
35
-
36
- function handleCardDragStart(card: CardData) {
37
- draggedCardId = card.id;
38
- }
39
-
40
- function handleCardDragEnd() {
41
- draggedCardId = null;
42
- activeDropColumn = null;
43
- }
44
-
45
- function handleDragOver(columnId: string) {
46
- if (draggedCardId && columnId !== activeDropColumn) {
47
- activeDropColumn = columnId;
48
- }
49
- }
50
-
51
- function handleDragLeave(columnId: string) {
52
- if (activeDropColumn === columnId) {
53
- activeDropColumn = null;
54
- }
55
- }
56
-
57
- function handleDrop(targetColumnId: string, cardId: string) {
58
- if (!draggedCardId) return;
59
-
60
- const sourceColumn = columns.find(c =>
61
- c.cards.some(card => card.id === cardId)
62
- );
63
-
64
- if (sourceColumn && sourceColumn.column.id !== targetColumnId) {
65
- onCardMove?.(cardId, sourceColumn.column.id, targetColumnId);
66
- }
67
-
68
- draggedCardId = null;
69
- activeDropColumn = null;
70
- }
2
+ import KanbanBoard from '../../l0-layout/kanban/KanbanBoard.svelte';
3
+ import type { Props } from '../../l0-layout/kanban/KanbanBoard.svelte';
4
+
5
+ let {
6
+ columns,
7
+ onCardMove,
8
+ onCardClick,
9
+ onAddCard,
10
+ onAddColumn,
11
+ onColumnMenuClick,
12
+ title,
13
+ header,
14
+ class: className = '',
15
+ }: Props = $props();
71
16
  </script>
72
17
 
73
- {#await import('./KanbanColumn.svelte') then { default: KanbanColumn }}
74
- <div class="kanban-board" role="region" aria-label="{title || 'Kanban board'}">
75
- {#if title}
76
- <header class="board-header">
77
- <h2 class="board-title">{title}</h2>
78
- <button
79
- class="add-column-btn"
80
- onclick={() => onAddColumn?.()}
81
- >
82
- + Add Column
83
- </button>
84
- </header>
85
- {/if}
86
-
87
- <div class="board-content" role="list">
88
- {#each columns as columnState (columnState.column.id)}
89
- <KanbanColumn
90
- column={columnState.column}
91
- cards={columnState.cards}
92
- isDropTarget={activeDropColumn === columnState.column.id}
93
- isCollapsed={columnState.isCollapsed}
94
- onCardClick={onCardClick}
95
- onCardDragStart={handleCardDragStart}
96
- onCardDragEnd={handleCardDragEnd}
97
- onDrop={handleDrop}
98
- onDragOver={handleDragOver}
99
- onDragLeave={handleDragLeave}
100
- onAddCard={onAddCard}
101
- onMenuClick={onColumnMenuClick}
102
- />
103
- {/each}
104
- </div>
105
- </div>
106
- {/await}
107
-
108
- <style>
109
- .kanban-board {
110
- display: flex;
111
- flex-direction: column;
112
- height: 100%;
113
- overflow: hidden;
114
- background: var(--color-bg-root, #111111);
115
- }
116
-
117
- .board-header {
118
- display: flex;
119
- align-items: center;
120
- justify-content: space-between;
121
- padding: 16px 20px;
122
- border-bottom: 1px solid var(--border-subtle, rgba(255,255,255,0.06));
123
- flex-shrink: 0;
124
- }
125
-
126
- .board-title {
127
- font-size: 18px;
128
- font-weight: 600;
129
- color: var(--color-text-primary, #f2efe9);
130
- margin: 0;
131
- }
132
-
133
- .add-column-btn {
134
- padding: 8px 16px;
135
- background: transparent;
136
- border: 1px solid var(--border-default, #333333);
137
- border-radius: var(--radius-md, 0.375rem);
138
- color: var(--color-text-secondary, #a09880);
139
- font-size: 13px;
140
- cursor: pointer;
141
- transition: border-color 0.15s, color 0.15s;
142
- }
143
-
144
- .add-column-btn:hover {
145
- border-color: var(--color-accent, var(--color-accent));
146
- color: var(--color-accent, var(--color-accent));
147
- }
148
-
149
- .board-content {
150
- display: flex;
151
- gap: var(--space-4);
152
- padding: 16px 20px;
153
- overflow-x: auto;
154
- overflow-y: hidden;
155
- flex: 1;
156
- align-items: flex-start;
157
- }
158
- </style>
18
+ <KanbanBoard
19
+ {columns}
20
+ {onCardMove}
21
+ {onCardClick}
22
+ {onAddCard}
23
+ {onAddColumn}
24
+ {onColumnMenuClick}
25
+ {title}
26
+ {header}
27
+ class={className}
28
+ />