@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,103 @@
1
+ <script lang="ts">
2
+ // Ambient Primitives Demo — visual check for the marketing/docs-surface
3
+ // primitives added alongside src/p0-primitives/tokens/ambient.css:
4
+ // gradient text, ambient glow, LiveDot, ThemeSwatchGroup, WindowFrame,
5
+ // StackedCard, scroll-reveal, and ParticleAssembleMark. None of these
6
+ // are wired into console/product chrome — this page is the opt-in demo.
7
+
8
+ import '../p0-primitives/tokens/ambient.css';
9
+ import LiveDot from '../u0-primitives/live-dot/LiveDot.svelte';
10
+ import ThemeSwatchGroup from '../u0-primitives/theme-swatch-group/ThemeSwatchGroup.svelte';
11
+ import WindowFrame from '../u0-primitives/window-frame/WindowFrame.svelte';
12
+ import StackedCard from '../l0-layout/card/StackedCard.svelte';
13
+ import ParticleAssembleMark from '../spatial/ParticleAssembleMark.svelte';
14
+ import { reveal } from '../p0-primitives/utils/reveal';
15
+
16
+ // Example seed list — a taste call for whoever wires this into a real
17
+ // page; swap freely. Each swatch sets --accent-primary directly, no
18
+ // parallel palette authoring.
19
+ const swatches = [
20
+ { hex: '#b87333', label: 'Brass (default)' },
21
+ { hex: '#4fa8a2', label: 'Teal' },
22
+ { hex: '#d4a04c', label: 'Amber' },
23
+ { hex: '#8b7fb0', label: 'Violet' },
24
+ { hex: '#c14a4a', label: 'Crimson' }
25
+ ];
26
+
27
+ let accent = $state('#b87333');
28
+
29
+ $effect(() => {
30
+ document.documentElement.style.setProperty('--accent-primary', accent);
31
+ });
32
+
33
+ // A simple generic mark (diamond over a triangle) — deliberately not
34
+ // Mesa's actual logomark. ParticleAssembleMark accepts any polygon set.
35
+ const shapes = [
36
+ { points: [[100, 10], [190, 100], [100, 190], [10, 100]] as [number, number][], tone: 'primary' as const },
37
+ { points: [[100, 70], [140, 130], [60, 130]] as [number, number][], tone: 'secondary' as const }
38
+ ];
39
+ </script>
40
+
41
+ <div class="demo bg-ambient-glow">
42
+ <section use:reveal>
43
+ <h2 class="text-gradient-accent">Ambient primitives</h2>
44
+ <p>Opt-in marketing/docs-surface additions — import <code>ambient.css</code> explicitly.</p>
45
+ </section>
46
+
47
+ <section use:reveal={{ delayMs: 80 }}>
48
+ <h3>ThemeSwatchGroup</h3>
49
+ <ThemeSwatchGroup {swatches} bind:value={accent} />
50
+ </section>
51
+
52
+ <section use:reveal={{ delayMs: 120 }}>
53
+ <h3>LiveDot</h3>
54
+ <div class="row">
55
+ <LiveDot variant="cleared" aria-label="Cleared" />
56
+ <LiveDot variant="pending" aria-label="Pending" />
57
+ <LiveDot variant="blocked" aria-label="Blocked" />
58
+ <LiveDot variant="degraded" aria-label="Degraded" pulse={false} />
59
+ </div>
60
+ </section>
61
+
62
+ <section use:reveal={{ delayMs: 160 }}>
63
+ <h3>WindowFrame</h3>
64
+ <WindowFrame title="PROPERTY SEARCH">
65
+ <p>Slotted content renders here.</p>
66
+ </WindowFrame>
67
+ </section>
68
+
69
+ <section use:reveal={{ delayMs: 200 }}>
70
+ <h3>StackedCard</h3>
71
+ <StackedCard>
72
+ <p>Front-sheet content, two decorative sheets behind it.</p>
73
+ </StackedCard>
74
+ </section>
75
+
76
+ <section use:reveal={{ delayMs: 240 }}>
77
+ <h3>ParticleAssembleMark</h3>
78
+ <ParticleAssembleMark
79
+ {shapes}
80
+ viewBoxWidth={200}
81
+ viewBoxHeight={200}
82
+ width={160}
83
+ height={160}
84
+ primaryColor={accent}
85
+ secondaryColor="var(--color-text-primary)"
86
+ />
87
+ </section>
88
+ </div>
89
+
90
+ <style>
91
+ .demo {
92
+ display: flex;
93
+ flex-direction: column;
94
+ gap: var(--space-8);
95
+ padding: var(--space-8);
96
+ }
97
+
98
+ .row {
99
+ display: flex;
100
+ gap: var(--space-4);
101
+ align-items: center;
102
+ }
103
+ </style>
@@ -0,0 +1,5 @@
1
+ import '../p0-primitives/tokens/ambient.css';
2
+ declare const AmbientPrimitivesDemo: import("svelte").Component<Record<string, never>, {}, "">;
3
+ type AmbientPrimitivesDemo = ReturnType<typeof AmbientPrimitivesDemo>;
4
+ export default AmbientPrimitivesDemo;
5
+ //# sourceMappingURL=AmbientPrimitivesDemo.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AmbientPrimitivesDemo.svelte.d.ts","sourceRoot":"","sources":["../../src/demos/AmbientPrimitivesDemo.svelte.ts"],"names":[],"mappings":"AAQA,OAAO,qCAAqC,CAAC;AA6F7C,QAAA,MAAM,qBAAqB,2DAAwC,CAAC;AACpE,KAAK,qBAAqB,GAAG,UAAU,CAAC,OAAO,qBAAqB,CAAC,CAAC;AACtE,eAAe,qBAAqB,CAAC"}
@@ -158,7 +158,7 @@
158
158
  margin: 0 auto;
159
159
  font-family: system-ui, sans-serif;
160
160
  color: var(--color-text-primary, #e8e4dc);
161
- background: var(--color-bg, #1a1918);
161
+ background: var(--color-bg-canvas, #1a1918);
162
162
  min-height: 100vh;
163
163
  overflow-y: auto;
164
164
  }
@@ -168,26 +168,6 @@
168
168
  margin-bottom: 32px;
169
169
  }
170
170
 
171
- .debug {
172
- margin-top: 16px;
173
- padding: 12px;
174
- background: var(--color-accent-subtle);
175
- border: 1px solid var(--color-accent, var(--color-accent));
176
- border-radius: 6px;
177
- font-family: monospace;
178
- font-size: 12px;
179
- text-align: left;
180
- }
181
-
182
- .debug ul {
183
- margin: 8px 0;
184
- padding-left: 20px;
185
- }
186
-
187
- .debug li {
188
- margin: 2px 0;
189
- }
190
-
191
171
  h2 {
192
172
  margin: 0 0 8px 0;
193
173
  font-size: 24px;
@@ -318,22 +298,11 @@
318
298
  width: 100%;
319
299
  }
320
300
 
321
- .mini-title {
322
- font-weight: bold;
323
- margin-bottom: 2px;
324
- }
325
-
326
301
  .mini-lines {
327
302
  color: var(--color-text-muted, #706858);
328
303
  font-size: 10px;
329
304
  }
330
305
 
331
- .preview-header {
332
- font-weight: bold;
333
- margin-bottom: 4px;
334
- font-size: 11px;
335
- }
336
-
337
306
  .preview-body {
338
307
  color: var(--color-text-secondary, #a89b8c);
339
308
  font-size: 10px;
@@ -350,6 +319,7 @@
350
319
  overflow: hidden;
351
320
  display: -webkit-box;
352
321
  -webkit-line-clamp: 2;
322
+ line-clamp: 2;
353
323
  -webkit-box-orient: vertical;
354
324
  }
355
325
 
@@ -358,6 +328,7 @@
358
328
  overflow: hidden;
359
329
  display: -webkit-box;
360
330
  -webkit-line-clamp: 6;
331
+ line-clamp: 6;
361
332
  -webkit-box-orient: vertical;
362
333
  }
363
334
 
@@ -6,6 +6,7 @@
6
6
  // - NO collapse button (content flows naturally)
7
7
 
8
8
  import { NodepadBlock, type EnchantedBlockData } from '../x0-enchanted-blocks';
9
+ import { debug } from '../p0-primitives/debug';
9
10
 
10
11
  // Mock blocks as EnchantedBlockData (not wrapped in TaskView)
11
12
  const mockBlocks: EnchantedBlockData[] = [
@@ -72,7 +73,7 @@ The block should just flow naturally—no collapse buttons needed.`,
72
73
  block.content = newContent;
73
74
  block.modifiedAt = Date.now();
74
75
  }
75
- console.log(`Changed ${id}: ${newContent.slice(0, 30)}...`);
76
+ debug.log(`Changed ${id}: ${newContent.slice(0, 30)}...`);
76
77
  }
77
78
 
78
79
  function handleTypeChange(id: string, newType: string) {
@@ -1 +1 @@
1
- {"version":3,"file":"NodepadBlocksShowcase.svelte.d.ts","sourceRoot":"","sources":["../../src/demos/NodepadBlocksShowcase.svelte.ts"],"names":[],"mappings":"AA2HA,QAAA,MAAM,qBAAqB,2DAAwC,CAAC;AACpE,KAAK,qBAAqB,GAAG,UAAU,CAAC,OAAO,qBAAqB,CAAC,CAAC;AACtE,eAAe,qBAAqB,CAAC"}
1
+ {"version":3,"file":"NodepadBlocksShowcase.svelte.d.ts","sourceRoot":"","sources":["../../src/demos/NodepadBlocksShowcase.svelte.ts"],"names":[],"mappings":"AA6HA,QAAA,MAAM,qBAAqB,2DAAwC,CAAC;AACpE,KAAK,qBAAqB,GAAG,UAAU,CAAC,OAAO,qBAAqB,CAAC,CAAC;AACtE,eAAe,qBAAqB,CAAC"}
@@ -2,4 +2,5 @@ export { default as NodepadBlocksShowcase } from './NodepadBlocksShowcase.svelte
2
2
  export { default as BspZoneDemo } from './BspZoneDemo.svelte';
3
3
  export { default as BspSizingInfographic } from './BspSizingInfographic.svelte';
4
4
  export { default as ControlRoomDemo } from './ControlRoomDemo.svelte';
5
+ export { default as AmbientPrimitivesDemo } from './AmbientPrimitivesDemo.svelte';
5
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/demos/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAClF,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAChF,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,0BAA0B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/demos/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAClF,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAChF,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,gCAAgC,CAAC"}
@@ -4,3 +4,4 @@ export { default as NodepadBlocksShowcase } from './NodepadBlocksShowcase.svelte
4
4
  export { default as BspZoneDemo } from './BspZoneDemo.svelte';
5
5
  export { default as BspSizingInfographic } from './BspSizingInfographic.svelte';
6
6
  export { default as ControlRoomDemo } from './ControlRoomDemo.svelte';
7
+ export { default as AmbientPrimitivesDemo } from './AmbientPrimitivesDemo.svelte';
@@ -14,12 +14,13 @@
14
14
  import { expansion } from './extensions/expansion';
15
15
  import { autocomplete } from './extensions/autocomplete';
16
16
  import { spellcheck } from './extensions/spellcheck';
17
+ import CorrectionTooltip from './components/CorrectionTooltip.svelte';
18
+ import { resolveAccentRamp } from '../p0-primitives/canvas-theme.js';
17
19
  import type { CompletionSource } from './extensions/autocomplete';
18
- import type { SpellCheckDictionary } from './extensions/spellcheck';
20
+ import type { SpellCheckCorrection, SpellCheckDictionary } from './extensions/spellcheck';
19
21
 
20
22
  interface Props {
21
23
  content: string;
22
- /** Source hint — file path or URL, used for language detection */
23
24
  source?: string;
24
25
  isActive: boolean;
25
26
  onContentChange?: (content: string) => void;
@@ -28,12 +29,18 @@
28
29
  spellCheckDictionary?: SpellCheckDictionary;
29
30
  }
30
31
 
32
+ interface ActiveCorrection extends SpellCheckCorrection {
33
+ from: number;
34
+ to: number;
35
+ }
36
+
31
37
  let { content, source = '', isActive, onContentChange, onBlur, completionSource, spellCheckDictionary }: Props = $props();
32
38
 
33
39
  let container: HTMLElement | null = $state(null);
34
40
  let view: EditorView | null = null;
35
41
  let skipSync = false;
36
42
  let detectedLang = $state('text');
43
+ let activeCorrection = $state<ActiveCorrection | null>(null);
37
44
 
38
45
  // Detect language from source path/extension or content shebang
39
46
  async function detectLanguageExtension(): Promise<Extension> {
@@ -85,33 +92,72 @@
85
92
  return [];
86
93
  }
87
94
 
88
- // Loge dark theme (matches MarkdownEditor)
89
- const logeTheme = EditorView.theme({
90
- '&': { background: 'transparent', height: '100%', color: '#e8e0d0' },
91
- '.cm-scroller': {
92
- fontFamily: 'var(--font-mono, monospace)',
93
- fontSize: '11px',
94
- lineHeight: '1.6',
95
- overflow: 'auto',
96
- },
97
- '.cm-content': { padding: '6px 8px', caretColor: '#b87333' },
98
- '.cm-cursor': { borderLeftColor: '#b87333' },
99
- '.cm-focused': { outline: 'none' },
100
- '.cm-selectionBackground, ::selection': { background: 'rgba(184,115,51,0.2)' },
101
- '.cm-gutters': {
102
- background: '#1a1a1a',
103
- borderRight: '1px solid #2a2a2a',
104
- color: '#5a5248',
105
- fontSize: '10px',
106
- },
107
- '.cm-lineNumbers .cm-gutterElement': { padding: '0 6px 0 4px' },
108
- '.cm-activeLine': { background: 'rgba(184,115,51,0.05)' },
109
- '.cm-activeLineGutter': { background: 'rgba(184,115,51,0.08)' },
110
- }, { dark: true });
95
+ async function handleCorrectionClick(
96
+ correction: SpellCheckCorrection,
97
+ _view: EditorView,
98
+ from: number,
99
+ to: number
100
+ ) {
101
+ activeCorrection = { ...correction, from, to };
102
+ }
103
+
104
+ function handleAcceptCorrection(suggestion: string) {
105
+ if (!activeCorrection || !view) return;
106
+ view.dispatch({
107
+ changes: { from: activeCorrection.from, to: activeCorrection.to, insert: suggestion },
108
+ });
109
+ activeCorrection = null;
110
+ }
111
+
112
+ function handleAddWordToDictionary() {
113
+ if (!activeCorrection) return;
114
+ spellCheckDictionary?.addWord(activeCorrection.original);
115
+ activeCorrection = null;
116
+ }
117
+
118
+ function handleDismissCorrection() {
119
+ activeCorrection = null;
120
+ }
121
+
122
+ // Loge dark theme — built from runtime CSS tokens so the user's accent
123
+ // and any overriding ThemeProvider are respected. Constructed in onMount
124
+ // where the DOM is available for getComputedStyle.
125
+ function buildLogeTheme(): Extension {
126
+ const acc = resolveAccentRamp(document.documentElement);
127
+ const cs = getComputedStyle(document.documentElement);
128
+ const rv = (p: string, fb: string) => cs.getPropertyValue(p).trim() || fb;
129
+ return EditorView.theme({
130
+ '&': { background: 'transparent', height: '100%', color: rv('--color-text-primary', '#e7e9eb') },
131
+ '.cm-scroller': {
132
+ fontFamily: 'var(--font-mono, monospace)',
133
+ fontSize: '11px',
134
+ lineHeight: '1.6',
135
+ overflow: 'auto',
136
+ },
137
+ '.cm-content': { padding: '6px 8px', caretColor: acc.solid },
138
+ '.cm-cursor': { borderLeftColor: acc.solid },
139
+ '.cm-focused': { outline: 'none' },
140
+ '.cm-selectionBackground, ::selection': { background: acc.alpha(0.2) },
141
+ '.cm-gutters': {
142
+ background: rv('--color-bg-app', '#0a0b0c'),
143
+ borderRight: `1px solid ${rv('--border-default', '#262b30')}`,
144
+ color: rv('--color-text-tertiary', '#646b72'),
145
+ fontSize: '10px',
146
+ },
147
+ '.cm-lineNumbers .cm-gutterElement': { padding: '0 6px 0 4px' },
148
+ '.cm-activeLine': { background: acc.alpha(0.05) },
149
+ '.cm-activeLineGutter': { background: acc.alpha(0.08) },
150
+ }, { dark: true });
151
+ }
152
+ // Placeholder until onMount — replaced before EditorView construction.
153
+ let logeTheme: Extension = [];
111
154
 
112
155
  onMount(async () => {
113
156
  if (!container) return;
114
157
 
158
+ // Build theme now that DOM is available — accent reads --accent-primary.
159
+ logeTheme = buildLogeTheme();
160
+
115
161
  const langExtension = await detectLanguageExtension();
116
162
 
117
163
  const onEscape = keymap.of([{
@@ -131,10 +177,11 @@
131
177
  autoFormat(),
132
178
  expansion(),
133
179
  ...(completionSource ? [autocomplete({ source: completionSource })] : []),
134
- ...(spellCheckDictionary ? [spellcheck(spellCheckDictionary)] : []),
180
+ ...(spellCheckDictionary ? spellcheck(spellCheckDictionary, { onCorrectionClick: handleCorrectionClick }) : []),
135
181
  EditorView.updateListener.of((update: ViewUpdate) => {
136
182
  if (update.docChanged) {
137
183
  skipSync = true;
184
+ activeCorrection = null;
138
185
  onContentChange?.(update.state.doc.toString());
139
186
  }
140
187
  }),
@@ -170,6 +217,16 @@
170
217
  {/if}
171
218
  </div>
172
219
 
220
+ {#if activeCorrection}
221
+ <CorrectionTooltip
222
+ correction={{ original: activeCorrection.original, suggestions: activeCorrection.suggestions }}
223
+ position={activeCorrection.position}
224
+ onAccept={handleAcceptCorrection}
225
+ onDismiss={handleDismissCorrection}
226
+ onAddToDictionary={handleAddWordToDictionary}
227
+ />
228
+ {/if}
229
+
173
230
  <style>
174
231
  .code-editor {
175
232
  width: 100%;
@@ -2,7 +2,6 @@ import type { CompletionSource } from './extensions/autocomplete';
2
2
  import type { SpellCheckDictionary } from './extensions/spellcheck';
3
3
  interface Props {
4
4
  content: string;
5
- /** Source hint — file path or URL, used for language detection */
6
5
  source?: string;
7
6
  isActive: boolean;
8
7
  onContentChange?: (content: string) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"CodeEditor.svelte.d.ts","sourceRoot":"","sources":["../../src/editor/CodeEditor.svelte.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAGlE,UAAU,KAAK;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,kEAAkE;IAClE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;CAC7C;AAuKH,QAAA,MAAM,UAAU,2CAAwC,CAAC;AACzD,KAAK,UAAU,GAAG,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC;AAChD,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"CodeEditor.svelte.d.ts","sourceRoot":"","sources":["../../src/editor/CodeEditor.svelte.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,KAAK,EAAwB,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAGxF,UAAU,KAAK;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;CAC7C;AA4NH,QAAA,MAAM,UAAU,2CAAwC,CAAC;AACzD,KAAK,UAAU,GAAG,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC;AAChD,eAAe,UAAU,CAAC"}
@@ -0,0 +1,38 @@
1
+ import { describe, it, expect, vi, afterEach } from 'vitest';
2
+ import { render, cleanup } from '@testing-library/svelte';
3
+ import CodeEditor from './CodeEditor.svelte';
4
+ afterEach(() => {
5
+ cleanup();
6
+ });
7
+ describe('editor/CodeEditor', () => {
8
+ it('exports a valid Svelte component', () => {
9
+ expect(CodeEditor).toBeDefined();
10
+ expect(typeof CodeEditor).toBe('function');
11
+ });
12
+ it('renders editor container', () => {
13
+ const { container } = render(CodeEditor, {
14
+ content: 'const x = 1;',
15
+ source: 'test.ts',
16
+ isActive: true,
17
+ });
18
+ expect(container.querySelector('.code-editor')).not.toBeNull();
19
+ });
20
+ it('renders with text content', () => {
21
+ const { container } = render(CodeEditor, {
22
+ content: 'hello world',
23
+ source: '',
24
+ isActive: false,
25
+ });
26
+ expect(container.querySelector('.code-editor')).not.toBeNull();
27
+ });
28
+ it('calls onContentChange when content changes', async () => {
29
+ const onContentChange = vi.fn();
30
+ const { container } = render(CodeEditor, {
31
+ content: 'initial',
32
+ source: 'test.ts',
33
+ isActive: true,
34
+ onContentChange,
35
+ });
36
+ expect(container.querySelector('.code-editor')).not.toBeNull();
37
+ });
38
+ });
@@ -0,0 +1,117 @@
1
+ <script lang="ts">
2
+ /**
3
+ * ExternalChangeDialog — shown when the open file is modified on disk outside
4
+ * the editor. The parent owns the open/close state and the reload/keep logic;
5
+ * this component is purely presentational.
6
+ */
7
+ interface Props {
8
+ onReload: () => void;
9
+ onKeepCurrent: () => void;
10
+ }
11
+
12
+ let { onReload, onKeepCurrent }: Props = $props();
13
+ </script>
14
+
15
+ <div class="dialog-overlay">
16
+ <div class="dialog">
17
+ <div class="dialog-header">
18
+ <h3>File Changed Externally</h3>
19
+ </div>
20
+ <div class="dialog-body">
21
+ <p>This file has been modified outside of Atelier.</p>
22
+ <p>Would you like to reload it from disk, or keep your current changes?</p>
23
+ </div>
24
+ <div class="dialog-footer">
25
+ <button class="action-btn" onclick={onKeepCurrent}>
26
+ Keep Current
27
+ </button>
28
+ <button class="action-btn primary" onclick={onReload}>
29
+ Reload from Disk
30
+ </button>
31
+ </div>
32
+ </div>
33
+ </div>
34
+
35
+ <style>
36
+ .dialog-overlay {
37
+ position: fixed;
38
+ inset: 0;
39
+ background: rgba(0, 0, 0, 0.7);
40
+ display: flex;
41
+ align-items: center;
42
+ justify-content: center;
43
+ z-index: 1000;
44
+ }
45
+
46
+ .dialog {
47
+ background: var(--color-bg-panel, #1a1a1a);
48
+ border: 1px solid var(--border-subtle, #2a2a2a);
49
+ border-radius: var(--radius-lg, 8px);
50
+ min-width: 400px;
51
+ max-width: 500px;
52
+ box-shadow: var(--shadow-lg, 0 10px 40px rgba(0,0,0,0.5));
53
+ }
54
+
55
+ .dialog-header {
56
+ padding: 16px 20px;
57
+ border-bottom: 1px solid var(--border-subtle, #2a2a2a);
58
+ }
59
+
60
+ .dialog-header h3 {
61
+ margin: 0;
62
+ font-size: 16px;
63
+ font-weight: 600;
64
+ color: var(--color-text-primary, #f5f2eb);
65
+ }
66
+
67
+ .dialog-body {
68
+ padding: 20px;
69
+ }
70
+
71
+ .dialog-body p {
72
+ margin: 0 0 12px 0;
73
+ color: var(--color-text-secondary, #a0a0a0);
74
+ font-size: 14px;
75
+ line-height: 1.5;
76
+ }
77
+
78
+ .dialog-body p:last-child {
79
+ margin-bottom: 0;
80
+ }
81
+
82
+ .dialog-footer {
83
+ display: flex;
84
+ justify-content: flex-end;
85
+ gap: var(--space-3);
86
+ padding: 16px 20px;
87
+ border-top: 1px solid var(--border-subtle, #2a2a2a);
88
+ }
89
+
90
+ /* Button styles mirror MarkdownEditor's .action-btn — scoped styles do not
91
+ cross component boundaries, so the dialog carries its own copy. */
92
+ .action-btn {
93
+ padding: 6px 12px;
94
+ border: 1px solid var(--border-subtle, #2a2a2a);
95
+ background: var(--color-bg-panel-elevated, #252525);
96
+ color: var(--color-text-secondary, #a0a0a0);
97
+ border-radius: var(--radius-sm, 4px);
98
+ cursor: pointer;
99
+ font-size: 13px;
100
+ transition: all 0.15s ease;
101
+ }
102
+
103
+ .action-btn:hover {
104
+ background: var(--border-subtle);
105
+ color: var(--color-text-primary, #f5f2eb);
106
+ }
107
+
108
+ .action-btn.primary {
109
+ background: var(--color-accent);
110
+ color: white;
111
+ border-color: var(--color-accent);
112
+ }
113
+
114
+ .action-btn.primary:hover {
115
+ background: var(--color-accent-hover, #c9843d);
116
+ }
117
+ </style>
@@ -0,0 +1,13 @@
1
+ /**
2
+ * ExternalChangeDialog — shown when the open file is modified on disk outside
3
+ * the editor. The parent owns the open/close state and the reload/keep logic;
4
+ * this component is purely presentational.
5
+ */
6
+ interface Props {
7
+ onReload: () => void;
8
+ onKeepCurrent: () => void;
9
+ }
10
+ declare const ExternalChangeDialog: import("svelte").Component<Props, {}, "">;
11
+ type ExternalChangeDialog = ReturnType<typeof ExternalChangeDialog>;
12
+ export default ExternalChangeDialog;
13
+ //# sourceMappingURL=ExternalChangeDialog.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExternalChangeDialog.svelte.d.ts","sourceRoot":"","sources":["../../src/editor/ExternalChangeDialog.svelte.ts"],"names":[],"mappings":"AAGE;;;;GAIG;AACH,UAAU,KAAK;IACb,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,aAAa,EAAE,MAAM,IAAI,CAAC;CAC3B;AA+BH,QAAA,MAAM,oBAAoB,2CAAwC,CAAC;AACnE,KAAK,oBAAoB,GAAG,UAAU,CAAC,OAAO,oBAAoB,CAAC,CAAC;AACpE,eAAe,oBAAoB,CAAC"}