@stephen-netu/design-system 0.2.1 → 0.5.1

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 (359) 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/BarChart.test.js +53 -0
  10. package/dist/d0-data-viz/CheckpointBar.test.js +83 -0
  11. package/dist/d0-data-viz/CheckpointPill.svelte +8 -3
  12. package/dist/d0-data-viz/CheckpointPill.svelte.d.ts.map +1 -1
  13. package/dist/d0-data-viz/CheckpointPill.test.js +78 -0
  14. package/dist/d0-data-viz/ConnectionHealth.test.js +70 -0
  15. package/dist/d0-data-viz/MetricCard.test.js +57 -0
  16. package/dist/d0-data-viz/SparkLine.test.js +47 -0
  17. package/dist/d0-data-viz/StorageMap.test.js +63 -0
  18. package/dist/d0-data-viz/Timeline.test.js +62 -0
  19. package/dist/d0-data-viz/WorldLineTimeline.test.js +99 -0
  20. package/dist/d0-data-viz/checkpoint-types.js +1 -1
  21. package/dist/d0-data-viz/storage-map-types.d.ts.map +1 -1
  22. package/dist/d0-data-viz/storage-map-types.js +6 -3
  23. package/dist/d0-data-viz/theme-integration.d.ts +3 -3
  24. package/dist/d0-data-viz/theme-integration.js +4 -4
  25. package/dist/d0-data-viz/theme-integration.test.js +41 -0
  26. package/dist/demos/AmbientPrimitivesDemo.svelte +103 -0
  27. package/dist/demos/AmbientPrimitivesDemo.svelte.d.ts +5 -0
  28. package/dist/demos/AmbientPrimitivesDemo.svelte.d.ts.map +1 -0
  29. package/dist/demos/BspSizingInfographic.svelte +3 -32
  30. package/dist/demos/NodepadBlocksShowcase.svelte +2 -1
  31. package/dist/demos/NodepadBlocksShowcase.svelte.d.ts.map +1 -1
  32. package/dist/demos/index.d.ts +1 -0
  33. package/dist/demos/index.d.ts.map +1 -1
  34. package/dist/demos/index.js +1 -0
  35. package/dist/editor/CodeEditor.svelte +83 -26
  36. package/dist/editor/CodeEditor.svelte.d.ts +0 -1
  37. package/dist/editor/CodeEditor.svelte.d.ts.map +1 -1
  38. package/dist/editor/CodeEditor.test.js +38 -0
  39. package/dist/editor/ExternalChangeDialog.svelte +117 -0
  40. package/dist/editor/ExternalChangeDialog.svelte.d.ts +13 -0
  41. package/dist/editor/ExternalChangeDialog.svelte.d.ts.map +1 -0
  42. package/dist/editor/FindReplaceDialog.svelte +32 -32
  43. package/dist/editor/MarkdownEditor.svelte +105 -605
  44. package/dist/editor/MarkdownEditor.svelte.d.ts +1 -1
  45. package/dist/editor/MarkdownEditor.svelte.d.ts.map +1 -1
  46. package/dist/editor/MarkdownEditor.test.js +38 -0
  47. package/dist/editor/codemirror-config.d.ts +36 -0
  48. package/dist/editor/codemirror-config.d.ts.map +1 -0
  49. package/dist/editor/codemirror-config.js +87 -0
  50. package/dist/editor/components/CorrectionTooltip.svelte +180 -160
  51. package/dist/editor/components/CorrectionTooltip.svelte.d.ts +7 -23
  52. package/dist/editor/components/CorrectionTooltip.svelte.d.ts.map +1 -1
  53. package/dist/editor/extensions/autocomplete.d.ts +2 -2
  54. package/dist/editor/extensions/autocomplete.d.ts.map +1 -1
  55. package/dist/editor/extensions/autocomplete.test.js +121 -0
  56. package/dist/editor/extensions/spellcheck.d.ts +21 -3
  57. package/dist/editor/extensions/spellcheck.d.ts.map +1 -1
  58. package/dist/editor/extensions/spellcheck.js +51 -9
  59. package/dist/editor/extensions/spellcheck.test.js +168 -0
  60. package/dist/editor/extensions/types.d.ts +2 -1
  61. package/dist/editor/extensions/types.d.ts.map +1 -1
  62. package/dist/editor/index.d.ts +2 -1
  63. package/dist/editor/index.d.ts.map +1 -1
  64. package/dist/editor/index.js +1 -0
  65. package/dist/editor/markdown-preview.d.ts +9 -0
  66. package/dist/editor/markdown-preview.d.ts.map +1 -0
  67. package/dist/editor/markdown-preview.js +19 -0
  68. package/dist/editor/markdown-preview.test.js +38 -0
  69. package/dist/editor/useCodeMirror.d.ts +23 -0
  70. package/dist/editor/useCodeMirror.d.ts.map +1 -0
  71. package/dist/editor/useCodeMirror.js +40 -0
  72. package/dist/editor/useFilePersistence.d.ts +32 -0
  73. package/dist/editor/useFilePersistence.d.ts.map +1 -0
  74. package/dist/editor/useFilePersistence.js +117 -0
  75. package/dist/entity-graph-view/WorldView.svelte +1 -1
  76. package/dist/fabric/ai/ChatPanel.svelte +84 -85
  77. package/dist/fabric/ai/ChatPanel.svelte.d.ts.map +1 -1
  78. package/dist/fabric/ai/ResearchPanel.svelte +35 -25
  79. package/dist/fabric/ai/ResearchPanel.svelte.d.ts.map +1 -1
  80. package/dist/fabric/data/FileTree.svelte +195 -0
  81. package/dist/fabric/data/FileTree.svelte.d.ts +19 -0
  82. package/dist/fabric/data/FileTree.svelte.d.ts.map +1 -0
  83. package/dist/fabric/data/FileTree.test.js +127 -0
  84. package/dist/fabric/data/index.d.ts +5 -9
  85. package/dist/fabric/data/index.d.ts.map +1 -1
  86. package/dist/fabric/data/index.js +4 -1
  87. package/dist/fabric/index.d.ts +5 -5
  88. package/dist/fabric/index.d.ts.map +1 -1
  89. package/dist/fabric/index.js +5 -3
  90. package/dist/fabric/input/{CommandBar.svelte → AppHeaderBar.svelte} +13 -13
  91. package/dist/fabric/input/{CommandBar.svelte.d.ts → AppHeaderBar.svelte.d.ts} +5 -5
  92. package/dist/fabric/input/AppHeaderBar.svelte.d.ts.map +1 -0
  93. package/dist/fabric/input/{CommandBar.test.js → AppHeaderBar.test.js} +9 -9
  94. package/dist/fabric/input/KeyboardShortcuts.svelte +23 -21
  95. package/dist/fabric/input/index.d.ts +2 -2
  96. package/dist/fabric/input/index.d.ts.map +1 -1
  97. package/dist/fabric/input/index.js +1 -1
  98. package/dist/fabric/layout/CollapsiblePanel.svelte +8 -10
  99. package/dist/fabric/layout/KanbanBoard.svelte +25 -155
  100. package/dist/fabric/layout/KanbanBoard.svelte.d.ts +2 -26
  101. package/dist/fabric/layout/KanbanBoard.svelte.d.ts.map +1 -1
  102. package/dist/fabric/layout/KanbanBoard.test.js +125 -10
  103. package/dist/fabric/layout/KanbanCard.svelte +27 -223
  104. package/dist/fabric/layout/KanbanCard.svelte.d.ts +2 -19
  105. package/dist/fabric/layout/KanbanCard.svelte.d.ts.map +1 -1
  106. package/dist/fabric/layout/KanbanColumn.svelte +41 -275
  107. package/dist/fabric/layout/KanbanColumn.svelte.d.ts +2 -22
  108. package/dist/fabric/layout/KanbanColumn.svelte.d.ts.map +1 -1
  109. package/dist/fabric/layout/index.d.ts +2 -5
  110. package/dist/fabric/layout/index.d.ts.map +1 -1
  111. package/dist/fabric/layout/index.js +1 -1
  112. package/dist/fabric/navigation/ActivityRail.svelte +3 -5
  113. package/dist/fabric/navigation/ActivityRail.svelte.d.ts.map +1 -1
  114. package/dist/g0-generative/components/Text.svelte +38 -0
  115. package/dist/g0-generative/components/Text.svelte.d.ts +9 -0
  116. package/dist/g0-generative/components/Text.svelte.d.ts.map +1 -0
  117. package/dist/g0-generative/index.d.ts +1 -0
  118. package/dist/g0-generative/index.d.ts.map +1 -1
  119. package/dist/g0-generative/index.js +1 -0
  120. package/dist/g0-generative/library/ComponentLibrary.d.ts +4 -0
  121. package/dist/g0-generative/library/ComponentLibrary.d.ts.map +1 -1
  122. package/dist/g0-generative/library/ComponentLibrary.js +10 -0
  123. package/dist/g0-generative/library/ComponentLibrary.test.js +135 -0
  124. package/dist/g0-generative/renderer/OpenUIRenderer.svelte +16 -56
  125. package/dist/g0-generative/renderer/OpenUIRenderer.svelte.d.ts.map +1 -1
  126. package/dist/g0-generative/renderer/OpenUIRenderer.test.js +143 -0
  127. package/dist/g0-geo/SovereignMap.svelte +13 -13
  128. package/dist/g0-geo/SovereignMap.svelte.d.ts.map +1 -1
  129. package/dist/index.d.ts +0 -1
  130. package/dist/index.d.ts.map +1 -1
  131. package/dist/index.js +7 -3
  132. package/dist/l0-layout/SectionSplitter.svelte +5 -5
  133. package/dist/l0-layout/block-writer/BlockContent.svelte +23 -22
  134. package/dist/l0-layout/block-writer/BlockContent.svelte.d.ts.map +1 -1
  135. package/dist/l0-layout/block-writer/BlockContent.test.js +47 -0
  136. package/dist/l0-layout/block-writer/BlockItem.svelte +6 -4
  137. package/dist/l0-layout/block-writer/markdown.js +11 -11
  138. package/dist/l0-layout/block-writer/markdown.test.js +81 -0
  139. package/dist/l0-layout/card/CompactCard.svelte +4 -3
  140. package/dist/l0-layout/card/StackedCard.svelte +87 -0
  141. package/dist/l0-layout/card/StackedCard.svelte.d.ts +9 -0
  142. package/dist/l0-layout/card/StackedCard.svelte.d.ts.map +1 -0
  143. package/dist/l0-layout/card/StackedCard.test.js +29 -0
  144. package/dist/l0-layout/grant/GrantCard.svelte +15 -5
  145. package/dist/l0-layout/grant/GrantCard.svelte.d.ts.map +1 -1
  146. package/dist/l0-layout/index.d.ts +3 -0
  147. package/dist/l0-layout/index.d.ts.map +1 -1
  148. package/dist/l0-layout/index.js +2 -0
  149. package/dist/l0-layout/kanban/KanbanBoard.svelte +246 -29
  150. package/dist/l0-layout/kanban/KanbanBoard.svelte.d.ts +28 -2
  151. package/dist/l0-layout/kanban/KanbanBoard.svelte.d.ts.map +1 -1
  152. package/dist/l0-layout/kanban/KanbanCard.svelte +175 -150
  153. package/dist/l0-layout/kanban/KanbanCard.svelte.d.ts +16 -18
  154. package/dist/l0-layout/kanban/KanbanCard.svelte.d.ts.map +1 -1
  155. package/dist/l0-layout/kanban/KanbanColumn.svelte +152 -78
  156. package/dist/l0-layout/kanban/KanbanColumn.svelte.d.ts +28 -7
  157. package/dist/l0-layout/kanban/KanbanColumn.svelte.d.ts.map +1 -1
  158. package/dist/l0-layout/kanban/index.d.ts +6 -0
  159. package/dist/l0-layout/kanban/index.d.ts.map +1 -0
  160. package/dist/l0-layout/kanban/index.js +3 -0
  161. package/dist/n0-node-graph/Node.svelte +2 -2
  162. package/dist/n0-node-graph/NodePalette.svelte +2 -2
  163. package/dist/n1-flow-canvas/FlowCanvas.svelte +50 -6
  164. package/dist/n1-flow-canvas/FlowCanvas.svelte.d.ts.map +1 -1
  165. package/dist/n1-flow-canvas/graph-state.test.js +69 -0
  166. package/dist/n1-flow-canvas/index.d.ts +2 -0
  167. package/dist/n1-flow-canvas/index.d.ts.map +1 -1
  168. package/dist/n1-flow-canvas/index.js +1 -0
  169. package/dist/n1-flow-canvas/pipeline-adapter.d.ts +37 -0
  170. package/dist/n1-flow-canvas/pipeline-adapter.d.ts.map +1 -0
  171. package/dist/n1-flow-canvas/pipeline-adapter.js +160 -0
  172. package/dist/n1-flow-canvas/utils.test.js +116 -0
  173. package/dist/n2-manifold-disk/ManifoldDisk.svelte +62 -35
  174. package/dist/n2-manifold-disk/ManifoldDisk.svelte.d.ts.map +1 -1
  175. package/dist/n3-force-graph/GraphTooltip.svelte +2 -2
  176. package/dist/n4-adaptive-manifold/AdaptiveManifold.svelte +34 -29
  177. package/dist/n4-adaptive-manifold/AdaptiveManifold.svelte.d.ts.map +1 -1
  178. package/dist/n4-adaptive-manifold/classifier.test.js +104 -0
  179. package/dist/n4-adaptive-manifold/n4-tokens.css +2 -2
  180. package/dist/n4-adaptive-manifold/types.d.ts +3 -0
  181. package/dist/n4-adaptive-manifold/types.d.ts.map +1 -1
  182. package/dist/p0-primitives/ThemeProvider.svelte +38 -18
  183. package/dist/p0-primitives/ThemeProvider.svelte.d.ts +6 -1
  184. package/dist/p0-primitives/ThemeProvider.svelte.d.ts.map +1 -1
  185. package/dist/p0-primitives/canvas-theme.d.ts +33 -1
  186. package/dist/p0-primitives/canvas-theme.d.ts.map +1 -1
  187. package/dist/p0-primitives/canvas-theme.js +82 -17
  188. package/dist/p0-primitives/debug.d.ts +6 -0
  189. package/dist/p0-primitives/debug.d.ts.map +1 -0
  190. package/dist/p0-primitives/debug.js +21 -0
  191. package/dist/p0-primitives/index.d.ts +2 -1
  192. package/dist/p0-primitives/index.d.ts.map +1 -1
  193. package/dist/p0-primitives/index.js +1 -0
  194. package/dist/p0-primitives/theme-context.d.ts +9 -0
  195. package/dist/p0-primitives/theme-context.d.ts.map +1 -0
  196. package/dist/p0-primitives/theme-context.js +8 -0
  197. package/dist/p0-primitives/theme.d.ts.map +1 -1
  198. package/dist/p0-primitives/theme.js +11 -31
  199. package/dist/p0-primitives/tokens/ambient.css +76 -0
  200. package/dist/p0-primitives/tokens/tokens.css +140 -34
  201. package/dist/p0-primitives/utils/index.d.ts +4 -2
  202. package/dist/p0-primitives/utils/index.d.ts.map +1 -1
  203. package/dist/p0-primitives/utils/index.js +1 -0
  204. package/dist/p0-primitives/utils/reveal.d.ts +15 -0
  205. package/dist/p0-primitives/utils/reveal.d.ts.map +1 -0
  206. package/dist/p0-primitives/utils/reveal.js +29 -0
  207. package/dist/p0-primitives/utils/reveal.test.js +95 -0
  208. package/dist/s0-state/SyncStatus.svelte +2 -2
  209. package/dist/s0-state/ThemeStore.svelte.d.ts +3 -2
  210. package/dist/s0-state/ThemeStore.svelte.d.ts.map +1 -1
  211. package/dist/s0-state/ThemeStore.svelte.js +20 -1
  212. package/dist/s0-state/index.d.ts +2 -2
  213. package/dist/s0-state/index.d.ts.map +1 -1
  214. package/dist/s0-state/index.js +3 -0
  215. package/dist/s0-state/modal-stack-store.svelte.d.ts +27 -2
  216. package/dist/s0-state/modal-stack-store.svelte.d.ts.map +1 -1
  217. package/dist/s0-state/modal-stack-store.svelte.js +21 -2
  218. package/dist/showcase/Showcase.svelte +43 -34
  219. package/dist/showcase/Showcase.svelte.d.ts.map +1 -1
  220. package/dist/spatial/BspTilingCanvas.svelte +5 -5
  221. package/dist/spatial/BspTilingSimulation.test.js +88 -0
  222. package/dist/spatial/CameraController.test.js +120 -0
  223. package/dist/spatial/ForceCanvas.svelte +18 -13
  224. package/dist/spatial/ForceCanvas.svelte.d.ts.map +1 -1
  225. package/dist/spatial/ForceSimulation.svelte.d.ts.map +1 -1
  226. package/dist/spatial/ForceSimulation.svelte.js +33 -22
  227. package/dist/spatial/LodRenderer.svelte +14 -1
  228. package/dist/spatial/LodRenderer.svelte.d.ts.map +1 -1
  229. package/dist/spatial/ParticleAssembleMark.svelte +285 -0
  230. package/dist/spatial/ParticleAssembleMark.svelte.d.ts +24 -0
  231. package/dist/spatial/ParticleAssembleMark.svelte.d.ts.map +1 -0
  232. package/dist/spatial/SnapZoomCamera.svelte +23 -13
  233. package/dist/spatial/SnapZoomCamera.svelte.d.ts.map +1 -1
  234. package/dist/spatial/ZoneTiler.svelte +3 -2
  235. package/dist/spatial/ZoneTiler.test.js +90 -0
  236. package/dist/spatial/d3-types.d.ts +31 -0
  237. package/dist/spatial/d3-types.d.ts.map +1 -0
  238. package/dist/spatial/d3-types.js +19 -0
  239. package/dist/spatial/index.js +1 -0
  240. package/dist/spatial/particle-assemble-math.d.ts +22 -0
  241. package/dist/spatial/particle-assemble-math.d.ts.map +1 -0
  242. package/dist/spatial/particle-assemble-math.js +26 -0
  243. package/dist/spatial/particle-assemble-math.test.js +56 -0
  244. package/dist/ssr-import-clean.test.js +37 -0
  245. package/dist/t0-transport/fs.d.ts +12 -0
  246. package/dist/t0-transport/fs.d.ts.map +1 -0
  247. package/dist/t0-transport/fs.js +55 -0
  248. package/dist/t0-transport/index.d.ts +1 -0
  249. package/dist/t0-transport/index.d.ts.map +1 -1
  250. package/dist/t0-transport/index.js +1 -0
  251. package/dist/t0-transport/invoke.d.ts.map +1 -1
  252. package/dist/t0-transport/invoke.js +5 -2
  253. package/dist/t0-transport/quality.d.ts +12 -3
  254. package/dist/t0-transport/quality.d.ts.map +1 -1
  255. package/dist/t0-transport/quality.js +17 -4
  256. package/dist/t0-transport/substrate.svelte.d.ts +27 -0
  257. package/dist/t0-transport/substrate.svelte.d.ts.map +1 -0
  258. package/dist/t0-transport/substrate.svelte.js +55 -0
  259. package/dist/u0-primitives/LockIndicator.svelte +17 -15
  260. package/dist/u0-primitives/VerticalToolbar.svelte +25 -22
  261. package/dist/u0-primitives/accordion/Accordion.svelte +14 -12
  262. package/dist/u0-primitives/accordion/Accordion.svelte.d.ts +0 -7
  263. package/dist/u0-primitives/accordion/Accordion.svelte.d.ts.map +1 -1
  264. package/dist/u0-primitives/accordion/Accordion.test.js +5 -5
  265. package/dist/u0-primitives/animated-icon/AnimatedIcon.svelte +3 -3
  266. package/dist/u0-primitives/animated-icon/AnimatedIcon.test.js +82 -0
  267. package/dist/u0-primitives/avatar/Avatar.svelte +14 -14
  268. package/dist/u0-primitives/avatar/Avatar.test.js +81 -0
  269. package/dist/u0-primitives/badge/Badge.svelte +6 -4
  270. package/dist/u0-primitives/badge/Badge.test.js +10 -10
  271. package/dist/u0-primitives/badge/ValidityBadge.svelte +4 -27
  272. package/dist/u0-primitives/badge/ValidityBadge.test.js +9 -9
  273. package/dist/u0-primitives/button/Button.svelte +18 -13
  274. package/dist/u0-primitives/button/Button.svelte.d.ts +1 -0
  275. package/dist/u0-primitives/button/Button.svelte.d.ts.map +1 -1
  276. package/dist/u0-primitives/button/Button.test.js +11 -11
  277. package/dist/u0-primitives/card/Card.svelte +60 -32
  278. package/dist/u0-primitives/card/Card.svelte.d.ts.map +1 -1
  279. package/dist/u0-primitives/card/Card.test.js +86 -0
  280. package/dist/u0-primitives/command-palette/CommandPalette.svelte +75 -43
  281. package/dist/u0-primitives/command-palette/CommandPalette.svelte.d.ts.map +1 -1
  282. package/dist/u0-primitives/command-palette/CommandPalette.test.js +202 -0
  283. package/dist/u0-primitives/command-palette/commandStore.svelte.d.ts.map +1 -1
  284. package/dist/u0-primitives/command-palette/commandStore.svelte.js +2 -1
  285. package/dist/u0-primitives/dropdown/Dropdown.svelte +20 -25
  286. package/dist/u0-primitives/dropdown/Dropdown.test.js +1 -1
  287. package/dist/u0-primitives/grant-badge/GrantStatusBadge.svelte +2 -2
  288. package/dist/u0-primitives/index.d.ts +8 -0
  289. package/dist/u0-primitives/index.d.ts.map +1 -1
  290. package/dist/u0-primitives/index.js +9 -0
  291. package/dist/u0-primitives/input/Input.svelte +85 -23
  292. package/dist/u0-primitives/input/Input.svelte.d.ts +2 -10
  293. package/dist/u0-primitives/input/Input.svelte.d.ts.map +1 -1
  294. package/dist/u0-primitives/input/Input.test.js +82 -2
  295. package/dist/u0-primitives/live-dot/LiveDot.svelte +56 -0
  296. package/dist/u0-primitives/live-dot/LiveDot.svelte.d.ts +11 -0
  297. package/dist/u0-primitives/live-dot/LiveDot.svelte.d.ts.map +1 -0
  298. package/dist/u0-primitives/live-dot/LiveDot.test.js +41 -0
  299. package/dist/u0-primitives/live-dot/index.d.ts +3 -0
  300. package/dist/u0-primitives/live-dot/index.d.ts.map +1 -0
  301. package/dist/u0-primitives/live-dot/index.js +1 -0
  302. package/dist/u0-primitives/modal/Modal.svelte +64 -38
  303. package/dist/u0-primitives/modal/Modal.svelte.d.ts.map +1 -1
  304. package/dist/u0-primitives/modal/Modal.test.js +63 -15
  305. package/dist/u0-primitives/rsvp/RsvpReader.svelte +8 -8
  306. package/dist/u0-primitives/rsvp/RsvpReader.svelte.d.ts.map +1 -1
  307. package/dist/u0-primitives/spinner/Spinner.svelte +11 -79
  308. package/dist/u0-primitives/spinner/Spinner.svelte.d.ts.map +1 -1
  309. package/dist/u0-primitives/steps/Steps.svelte +20 -21
  310. package/dist/u0-primitives/surface-state/SurfaceState.svelte +190 -0
  311. package/dist/u0-primitives/surface-state/SurfaceState.svelte.d.ts +15 -0
  312. package/dist/u0-primitives/surface-state/SurfaceState.svelte.d.ts.map +1 -0
  313. package/dist/u0-primitives/tabs/Tabs.svelte +13 -11
  314. package/dist/u0-primitives/theme-swatch-group/ThemeSwatchGroup.svelte +94 -0
  315. package/dist/u0-primitives/theme-swatch-group/ThemeSwatchGroup.svelte.d.ts +16 -0
  316. package/dist/u0-primitives/theme-swatch-group/ThemeSwatchGroup.svelte.d.ts.map +1 -0
  317. package/dist/u0-primitives/theme-swatch-group/ThemeSwatchGroup.test.js +48 -0
  318. package/dist/u0-primitives/theme-swatch-group/index.d.ts +3 -0
  319. package/dist/u0-primitives/theme-swatch-group/index.d.ts.map +1 -0
  320. package/dist/u0-primitives/theme-swatch-group/index.js +1 -0
  321. package/dist/u0-primitives/toggle/Toggle.svelte +22 -13
  322. package/dist/u0-primitives/tooltip/Tooltip.svelte +9 -9
  323. package/dist/u0-primitives/tooltip/Tooltip.test.js +12 -12
  324. package/dist/u0-primitives/web-components/button-component.d.ts +5 -1
  325. package/dist/u0-primitives/web-components/button-component.d.ts.map +1 -1
  326. package/dist/u0-primitives/web-components/button-component.js +72 -33
  327. package/dist/u0-primitives/web-components/index.d.ts +3 -0
  328. package/dist/u0-primitives/web-components/index.d.ts.map +1 -0
  329. package/dist/u0-primitives/web-components/index.js +2 -0
  330. package/dist/u0-primitives/web-components/input-component.d.ts +5 -1
  331. package/dist/u0-primitives/web-components/input-component.d.ts.map +1 -1
  332. package/dist/u0-primitives/web-components/input-component.js +56 -39
  333. package/dist/u0-primitives/web-components/web-components.test.js +96 -0
  334. package/dist/u0-primitives/window-frame/WindowFrame.svelte +87 -0
  335. package/dist/u0-primitives/window-frame/WindowFrame.svelte.d.ts +10 -0
  336. package/dist/u0-primitives/window-frame/WindowFrame.svelte.d.ts.map +1 -0
  337. package/dist/u0-primitives/window-frame/WindowFrame.test.js +31 -0
  338. package/dist/u0-primitives/window-frame/index.d.ts +3 -0
  339. package/dist/u0-primitives/window-frame/index.d.ts.map +1 -0
  340. package/dist/u0-primitives/window-frame/index.js +1 -0
  341. package/dist/v0-diagrams/MarkmapDiagram.test.js +49 -0
  342. package/dist/v0-diagrams/MermaidDiagram.svelte +21 -9
  343. package/dist/v0-diagrams/MermaidDiagram.svelte.d.ts.map +1 -1
  344. package/dist/v0-diagrams/MermaidDiagram.test.js +40 -0
  345. package/dist/x0-enchanted-blocks/components/NodepadBlock.svelte +11 -2
  346. package/dist/x0-enchanted-blocks/components/NodepadBlock.svelte.d.ts.map +1 -1
  347. package/package.json +57 -15
  348. package/src/n4-adaptive-manifold/n4-tokens.css +2 -2
  349. package/src/p0-primitives/tokens/ambient.css +76 -0
  350. package/src/p0-primitives/tokens/tokens.css +140 -34
  351. package/src/p0-primitives/tokens/tokens.json +55 -26
  352. package/dist/b0-app-shell/command-bar/CommandBar.svelte.d.ts.map +0 -1
  353. package/dist/fabric/input/CommandBar.svelte.d.ts.map +0 -1
  354. package/dist/stores/vaultStore.svelte +0 -14
  355. package/dist/stores/vaultStore.svelte.d.ts +0 -24
  356. package/dist/stores/vaultStore.svelte.d.ts.map +0 -1
  357. package/dist/tauri/index.d.ts +0 -3
  358. package/dist/tauri/index.d.ts.map +0 -1
  359. package/dist/tauri/index.js +0 -11
@@ -0,0 +1,195 @@
1
+ <script lang="ts">
2
+ /**
3
+ * FileTree - Fabric Component
4
+ *
5
+ * Hierarchical file browser tree with expand/collapse and selection.
6
+ * Decoupled from shell stores — uses props/callbacks for all state.
7
+ *
8
+ * @package @stephen-netu/design-system/fabric/data
9
+ */
10
+ import Self from './FileTree.svelte';
11
+ import { ChevronRight, FileText, Folder } from '@lucide/svelte';
12
+
13
+ export interface FileEntry {
14
+ id: string;
15
+ name: string;
16
+ type: 'file' | 'directory';
17
+ path: string;
18
+ children?: FileEntry[];
19
+ isExpanded?: boolean;
20
+ isSelected?: boolean;
21
+ }
22
+
23
+ interface Props {
24
+ items: FileEntry[];
25
+ onFileSelect: (entry: FileEntry) => void;
26
+ onDirectoryToggle?: (entry: FileEntry, expanded: boolean) => void;
27
+ class?: string;
28
+ }
29
+
30
+ let { items, onFileSelect, onDirectoryToggle, class: className = '' }: Props = $props();
31
+
32
+ let expandedPaths = $state<Set<string>>(new Set());
33
+ let selectedPath = $state<string | null>(null);
34
+
35
+ function handleToggle(entry: FileEntry) {
36
+ if (entry.type !== 'directory') return;
37
+
38
+ const next = new Set(expandedPaths);
39
+ if (next.has(entry.path)) {
40
+ next.delete(entry.path);
41
+ } else {
42
+ next.add(entry.path);
43
+ }
44
+ expandedPaths = next;
45
+ onDirectoryToggle?.(entry, next.has(entry.path));
46
+ }
47
+
48
+ function handleSelect(entry: FileEntry) {
49
+ if (entry.type === 'file') {
50
+ selectedPath = entry.path;
51
+ }
52
+ onFileSelect(entry);
53
+ }
54
+
55
+ function isExpanded(entry: FileEntry): boolean {
56
+ return entry.isExpanded ?? expandedPaths.has(entry.path);
57
+ }
58
+
59
+ function isSelected(entry: FileEntry): boolean {
60
+ return entry.isSelected ?? selectedPath === entry.path;
61
+ }
62
+
63
+ function handleChevronKeydown(entry: FileEntry, e: KeyboardEvent) {
64
+ if (e.key === 'Enter' || e.key === ' ') {
65
+ e.stopPropagation();
66
+ e.preventDefault();
67
+ handleToggle(entry);
68
+ }
69
+ }
70
+ </script>
71
+
72
+ <div class="file-tree {className}">
73
+ {#each items as entry (entry.id)}
74
+ <div class="file-tree__node">
75
+ <button
76
+ class="file-tree__row"
77
+ class:file-tree__row--directory={entry.type === 'directory'}
78
+ class:file-tree__row--selected={isSelected(entry)}
79
+ onclick={() => handleSelect(entry)}
80
+ aria-expanded={entry.type === 'directory' ? isExpanded(entry) : undefined}
81
+ aria-current={isSelected(entry) ? 'true' : undefined}
82
+ >
83
+ {#if entry.type === 'directory'}
84
+ <span
85
+ class="file-tree__chevron"
86
+ class:file-tree__chevron--open={isExpanded(entry)}
87
+ onclick={(e) => { e.stopPropagation(); handleToggle(entry); }}
88
+ onkeydown={(e) => handleChevronKeydown(entry, e)}
89
+ role="button"
90
+ tabindex="0"
91
+ aria-label={isExpanded(entry) ? 'Collapse directory' : 'Expand directory'}
92
+ >
93
+ <ChevronRight size={12} />
94
+ </span>
95
+ <Folder size={14} class="file-tree__icon file-tree__icon--folder" />
96
+ {:else}
97
+ <span class="file-tree__spacer"></span>
98
+ <FileText size={14} class="file-tree__icon file-tree__icon--file" />
99
+ {/if}
100
+ <span class="file-tree__name">{entry.name}</span>
101
+ </button>
102
+
103
+ {#if entry.type === 'directory' && entry.children && isExpanded(entry)}
104
+ <div class="file-tree__children" role="group">
105
+ <Self items={entry.children} {onFileSelect} {onDirectoryToggle} />
106
+ </div>
107
+ {/if}
108
+ </div>
109
+ {/each}
110
+ </div>
111
+
112
+ <style>
113
+ .file-tree {
114
+ font-size: 13px;
115
+ line-height: 1.4;
116
+ color: var(--color-text-primary);
117
+ user-select: none;
118
+ }
119
+
120
+ .file-tree__node {
121
+ margin: 0;
122
+ }
123
+
124
+ .file-tree__row {
125
+ display: flex;
126
+ align-items: center;
127
+ gap: var(--space-1);
128
+ width: 100%;
129
+ padding: 2px 8px;
130
+ background: transparent;
131
+ border: none;
132
+ border-radius: 0;
133
+ color: var(--color-text-secondary);
134
+ cursor: pointer;
135
+ text-align: left;
136
+ font: inherit;
137
+ transition: background var(--transition-fast, 110ms) linear, color var(--transition-fast, 110ms) linear;
138
+ }
139
+
140
+ .file-tree__row:hover {
141
+ background: var(--color-bg-panel);
142
+ color: var(--color-text-primary);
143
+ }
144
+
145
+ .file-tree__row--selected {
146
+ background: var(--color-accent-subtle);
147
+ color: var(--color-accent);
148
+ box-shadow: inset 2px 0 0 var(--color-accent);
149
+ }
150
+
151
+ .file-tree__chevron {
152
+ display: flex;
153
+ align-items: center;
154
+ justify-content: center;
155
+ width: 14px;
156
+ height: 14px;
157
+ color: var(--color-text-tertiary);
158
+ cursor: pointer;
159
+ transition: transform var(--transition-fast, 110ms) linear;
160
+ flex-shrink: 0;
161
+ }
162
+
163
+ .file-tree__chevron--open {
164
+ transform: rotate(90deg);
165
+ color: var(--color-accent);
166
+ }
167
+
168
+ .file-tree__spacer {
169
+ display: block;
170
+ width: 14px;
171
+ flex-shrink: 0;
172
+ }
173
+
174
+ .file-tree__icon {
175
+ flex-shrink: 0;
176
+ }
177
+
178
+ .file-tree__icon--folder {
179
+ color: var(--color-accent-muted, var(--color-accent));
180
+ }
181
+
182
+ .file-tree__icon--file {
183
+ color: var(--color-text-tertiary);
184
+ }
185
+
186
+ .file-tree__name {
187
+ overflow: hidden;
188
+ text-overflow: ellipsis;
189
+ white-space: nowrap;
190
+ }
191
+
192
+ .file-tree__children {
193
+ padding-left: 16px;
194
+ }
195
+ </style>
@@ -0,0 +1,19 @@
1
+ export interface FileEntry {
2
+ id: string;
3
+ name: string;
4
+ type: 'file' | 'directory';
5
+ path: string;
6
+ children?: FileEntry[];
7
+ isExpanded?: boolean;
8
+ isSelected?: boolean;
9
+ }
10
+ interface Props {
11
+ items: FileEntry[];
12
+ onFileSelect: (entry: FileEntry) => void;
13
+ onDirectoryToggle?: (entry: FileEntry, expanded: boolean) => void;
14
+ class?: string;
15
+ }
16
+ declare const FileTree: import("svelte").Component<Props, {}, "">;
17
+ type FileTree = ReturnType<typeof FileTree>;
18
+ export default FileTree;
19
+ //# sourceMappingURL=FileTree.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FileTree.svelte.d.ts","sourceRoot":"","sources":["../../../src/fabric/data/FileTree.svelte.ts"],"names":[],"mappings":"AAeE,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,SAAS,EAAE,CAAC;IACvB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,UAAU,KAAK;IACb,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,YAAY,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;IACzC,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;IAClE,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AA+EH,QAAA,MAAM,QAAQ,2CAAwC,CAAC;AACvD,KAAK,QAAQ,GAAG,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC;AAC5C,eAAe,QAAQ,CAAC"}
@@ -0,0 +1,127 @@
1
+ import { afterEach, describe, it, expect, vi } from 'vitest';
2
+ import { cleanup, render, fireEvent } from '@testing-library/svelte';
3
+ import FileTree from './FileTree.svelte';
4
+ const mockItems = [
5
+ {
6
+ id: '1',
7
+ name: 'src',
8
+ type: 'directory',
9
+ path: '/src',
10
+ children: [
11
+ { id: '2', name: 'index.ts', type: 'file', path: '/src/index.ts' },
12
+ {
13
+ id: '3',
14
+ name: 'components',
15
+ type: 'directory',
16
+ path: '/src/components',
17
+ children: [
18
+ { id: '4', name: 'Button.svelte', type: 'file', path: '/src/components/Button.svelte' },
19
+ ],
20
+ },
21
+ ],
22
+ },
23
+ { id: '5', name: 'README.md', type: 'file', path: '/README.md' },
24
+ ];
25
+ describe('FileTree', () => {
26
+ afterEach(() => cleanup());
27
+ it('renders top-level items', () => {
28
+ const { container } = render(FileTree, { props: { items: mockItems, onFileSelect: vi.fn() } });
29
+ expect(container.textContent).toContain('src');
30
+ expect(container.textContent).toContain('README.md');
31
+ });
32
+ it('shows children when directory is expanded via chevron click', async () => {
33
+ const { container } = render(FileTree, { props: { items: mockItems, onFileSelect: vi.fn() } });
34
+ const chevron = container.querySelector('.file-tree__chevron');
35
+ expect(chevron).not.toBeNull();
36
+ await fireEvent.click(chevron);
37
+ expect(container.textContent).toContain('index.ts');
38
+ expect(container.textContent).toContain('components');
39
+ });
40
+ it('hides children when directory is collapsed', async () => {
41
+ const { container } = render(FileTree, { props: { items: mockItems, onFileSelect: vi.fn() } });
42
+ const chevron = container.querySelector('.file-tree__chevron');
43
+ await fireEvent.click(chevron);
44
+ expect(container.textContent).toContain('index.ts');
45
+ await fireEvent.click(chevron);
46
+ expect(container.textContent).not.toContain('index.ts');
47
+ });
48
+ it('calls onFileSelect when a file row is clicked', async () => {
49
+ const onFileSelect = vi.fn();
50
+ const { container } = render(FileTree, { props: { items: mockItems, onFileSelect } });
51
+ const chevron = container.querySelector('.file-tree__chevron');
52
+ await fireEvent.click(chevron);
53
+ const fileRows = container.querySelectorAll('.file-tree__row');
54
+ const fileRow = Array.from(fileRows).find(r => r.textContent?.includes('index.ts'));
55
+ expect(fileRow).not.toBeNull();
56
+ await fireEvent.click(fileRow);
57
+ expect(onFileSelect).toHaveBeenCalledTimes(1);
58
+ expect(onFileSelect).toHaveBeenCalledWith(expect.objectContaining({ id: '2', name: 'index.ts' }));
59
+ });
60
+ it('applies selected class to the clicked file row', async () => {
61
+ const { container } = render(FileTree, { props: { items: mockItems, onFileSelect: vi.fn() } });
62
+ const chevron = container.querySelector('.file-tree__chevron');
63
+ await fireEvent.click(chevron);
64
+ const readmeRow = Array.from(container.querySelectorAll('.file-tree__row'))
65
+ .find(r => r.textContent?.includes('README.md'));
66
+ await fireEvent.click(readmeRow);
67
+ expect(readmeRow.classList.contains('file-tree__row--selected')).toBe(true);
68
+ });
69
+ it('calls onDirectoryToggle when a directory is expanded', async () => {
70
+ const onDirectoryToggle = vi.fn();
71
+ const { container } = render(FileTree, {
72
+ props: { items: mockItems, onFileSelect: vi.fn(), onDirectoryToggle },
73
+ });
74
+ const chevron = container.querySelector('.file-tree__chevron');
75
+ await fireEvent.click(chevron);
76
+ expect(onDirectoryToggle).toHaveBeenCalledTimes(1);
77
+ expect(onDirectoryToggle).toHaveBeenCalledWith(expect.objectContaining({ id: '1', name: 'src' }), true);
78
+ });
79
+ it('applies custom class name', () => {
80
+ const { container } = render(FileTree, {
81
+ props: { items: mockItems, onFileSelect: vi.fn(), class: 'custom-class' },
82
+ });
83
+ const el = container.querySelector('.file-tree');
84
+ expect(el?.classList.contains('custom-class')).toBe(true);
85
+ });
86
+ it('supports externally controlled isExpanded on directory items', () => {
87
+ const itemsWithExpanded = [
88
+ {
89
+ id: '1',
90
+ name: 'src',
91
+ type: 'directory',
92
+ path: '/src',
93
+ isExpanded: true,
94
+ children: [
95
+ { id: '2', name: 'index.ts', type: 'file', path: '/src/index.ts' },
96
+ ],
97
+ },
98
+ ];
99
+ const { container } = render(FileTree, { props: { items: itemsWithExpanded, onFileSelect: vi.fn() } });
100
+ expect(container.textContent).toContain('index.ts');
101
+ });
102
+ it('supports externally controlled isSelected on file items', () => {
103
+ const itemsWithSelected = [
104
+ { id: '5', name: 'README.md', type: 'file', path: '/README.md', isSelected: true },
105
+ ];
106
+ const { container } = render(FileTree, { props: { items: itemsWithSelected, onFileSelect: vi.fn() } });
107
+ const row = container.querySelector('.file-tree__row--selected');
108
+ expect(row).not.toBeNull();
109
+ expect(row.textContent).toContain('README.md');
110
+ });
111
+ it('calls onDirectoryToggle with false when collapsing a directory', async () => {
112
+ const onDirectoryToggle = vi.fn();
113
+ const { container } = render(FileTree, {
114
+ props: { items: mockItems, onFileSelect: vi.fn(), onDirectoryToggle },
115
+ });
116
+ const chevron = container.querySelector('.file-tree__chevron');
117
+ await fireEvent.click(chevron);
118
+ await fireEvent.click(chevron);
119
+ expect(onDirectoryToggle).toHaveBeenCalledTimes(2);
120
+ expect(onDirectoryToggle).toHaveBeenLastCalledWith(expect.objectContaining({ id: '1', name: 'src' }), false);
121
+ });
122
+ it('sets aria-expanded on directory rows', () => {
123
+ const { container } = render(FileTree, { props: { items: mockItems, onFileSelect: vi.fn() } });
124
+ const dirRow = container.querySelector('[aria-expanded]');
125
+ expect(dirRow).not.toBeNull();
126
+ });
127
+ });
@@ -2,14 +2,10 @@
2
2
  * Fabric Data Components
3
3
  *
4
4
  * Data visualization and management components.
5
+ *
6
+ * @package @stephen-netu/design-system/fabric/data
7
+ * @adr 2026-04-12-leap-substrate-refactor-001
5
8
  */
6
- export interface FileEntry {
7
- id: string;
8
- name: string;
9
- type: 'file' | 'directory';
10
- path: string;
11
- children?: FileEntry[];
12
- isExpanded?: boolean;
13
- isSelected?: boolean;
14
- }
9
+ export { default as FileTree } from './FileTree.svelte';
10
+ export type { FileEntry } from './FileTree.svelte';
15
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/fabric/data/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,SAAS,EAAE,CAAC;IACvB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/fabric/data/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AACxD,YAAY,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC"}
@@ -2,5 +2,8 @@
2
2
  * Fabric Data Components
3
3
  *
4
4
  * Data visualization and management components.
5
+ *
6
+ * @package @stephen-netu/design-system/fabric/data
7
+ * @adr 2026-04-12-leap-substrate-refactor-001
5
8
  */
6
- export {};
9
+ export { default as FileTree } from './FileTree.svelte';
@@ -5,21 +5,21 @@
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';
18
+ export { FileTree } from './data';
19
19
  export type { FileEntry } from './data';
20
- export { CommandBar, KeyboardShortcuts } from './input';
20
+ export { AppHeaderBar, KeyboardShortcuts } from './input';
21
21
  export type { ShortcutBinding, ShortcutGroup } from './input';
22
- export type { CommandBarProps } from './input';
22
+ export type { AppHeaderBarProps } from './input';
23
23
  export { ChatPanel, ResearchPanel } from './ai';
24
24
  export type { Message, Citation, ContextCard } from './ai';
25
25
  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,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAClC,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,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
  // Layout
15
15
  export { GlassBox, KanbanBoard, KanbanColumn, KanbanCard, CollapsiblePanel } from './layout';
16
16
  // Navigation
17
17
  export { ActivityRail } from './navigation';
18
+ // Data
19
+ export { FileTree } from './data';
18
20
  // Input
19
- export { CommandBar, KeyboardShortcuts } from './input';
21
+ export { AppHeaderBar, KeyboardShortcuts } from './input';
20
22
  // AI
21
23
  export { ChatPanel, ResearchPanel } from './ai';
22
24
  // 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
  });