@stephen-netu/design-system 0.2.0 → 0.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (198) hide show
  1. package/dist/b0-app-shell/clarification-overlay/ClarificationOverlay.svelte +10 -2
  2. package/dist/b0-app-shell/clarification-overlay/ClarificationOverlay.svelte.d.ts.map +1 -1
  3. package/dist/b0-app-shell/{command-bar/CommandBar.svelte → global-command-bar/GlobalCommandBar.svelte} +75 -75
  4. package/dist/b0-app-shell/{command-bar/CommandBar.svelte.d.ts → global-command-bar/GlobalCommandBar.svelte.d.ts} +6 -6
  5. package/dist/b0-app-shell/global-command-bar/GlobalCommandBar.svelte.d.ts.map +1 -0
  6. package/dist/b0-app-shell/index.d.ts +1 -1
  7. package/dist/b0-app-shell/index.d.ts.map +1 -1
  8. package/dist/b0-app-shell/index.js +1 -1
  9. package/dist/d0-data-viz/CheckpointPill.svelte +7 -2
  10. package/dist/d0-data-viz/CheckpointPill.svelte.d.ts.map +1 -1
  11. package/dist/d0-data-viz/theme-integration.d.ts +3 -3
  12. package/dist/d0-data-viz/theme-integration.js +3 -3
  13. package/dist/d0-data-viz/theme-integration.test.js +41 -0
  14. package/dist/demos/BspSizingInfographic.svelte +3 -32
  15. package/dist/editor/CodeEditor.test.js +38 -0
  16. package/dist/editor/FindReplaceDialog.svelte +32 -32
  17. package/dist/editor/MarkdownEditor.svelte +71 -58
  18. package/dist/editor/MarkdownEditor.svelte.d.ts.map +1 -1
  19. package/dist/editor/MarkdownEditor.test.js +38 -0
  20. package/dist/editor/components/CorrectionTooltip.svelte +0 -1
  21. package/dist/editor/extensions/expansion.d.ts.map +1 -1
  22. package/dist/editor/extensions/expansion.js +16 -10
  23. package/dist/entity-graph-view/WorldView.svelte +1 -1
  24. package/dist/fabric/ai/ChatPanel.svelte +31 -31
  25. package/dist/fabric/ai/ResearchPanel.svelte +6 -3
  26. package/dist/fabric/ai/ResearchPanel.svelte.d.ts.map +1 -1
  27. package/dist/fabric/index.d.ts +4 -5
  28. package/dist/fabric/index.d.ts.map +1 -1
  29. package/dist/fabric/index.js +3 -3
  30. package/dist/fabric/input/{CommandBar.svelte → AppHeaderBar.svelte} +13 -13
  31. package/dist/fabric/input/{CommandBar.svelte.d.ts → AppHeaderBar.svelte.d.ts} +5 -5
  32. package/dist/fabric/input/AppHeaderBar.svelte.d.ts.map +1 -0
  33. package/dist/fabric/input/{CommandBar.test.js → AppHeaderBar.test.js} +9 -9
  34. package/dist/fabric/input/index.d.ts +2 -2
  35. package/dist/fabric/input/index.d.ts.map +1 -1
  36. package/dist/fabric/input/index.js +1 -1
  37. package/dist/fabric/layout/KanbanBoard.svelte +25 -155
  38. package/dist/fabric/layout/KanbanBoard.svelte.d.ts +2 -26
  39. package/dist/fabric/layout/KanbanBoard.svelte.d.ts.map +1 -1
  40. package/dist/fabric/layout/KanbanBoard.test.js +125 -10
  41. package/dist/fabric/layout/KanbanCard.svelte +27 -223
  42. package/dist/fabric/layout/KanbanCard.svelte.d.ts +2 -19
  43. package/dist/fabric/layout/KanbanCard.svelte.d.ts.map +1 -1
  44. package/dist/fabric/layout/KanbanColumn.svelte +41 -275
  45. package/dist/fabric/layout/KanbanColumn.svelte.d.ts +2 -22
  46. package/dist/fabric/layout/KanbanColumn.svelte.d.ts.map +1 -1
  47. package/dist/fabric/layout/index.d.ts +2 -5
  48. package/dist/fabric/layout/index.d.ts.map +1 -1
  49. package/dist/fabric/layout/index.js +1 -1
  50. package/dist/g0-generative/renderer/OpenUIRenderer.svelte +3 -3
  51. package/dist/index.d.ts.map +1 -1
  52. package/dist/index.js +4 -2
  53. package/dist/l0-layout/SectionSplitter.svelte +5 -5
  54. package/dist/l0-layout/block-writer/BlockItem.svelte +6 -4
  55. package/dist/l0-layout/card/CompactCard.svelte +4 -3
  56. package/dist/l0-layout/grant/GrantCard.svelte +15 -5
  57. package/dist/l0-layout/grant/GrantCard.svelte.d.ts.map +1 -1
  58. package/dist/l0-layout/index.d.ts +2 -0
  59. package/dist/l0-layout/index.d.ts.map +1 -1
  60. package/dist/l0-layout/index.js +1 -0
  61. package/dist/l0-layout/kanban/KanbanBoard.svelte +246 -29
  62. package/dist/l0-layout/kanban/KanbanBoard.svelte.d.ts +28 -2
  63. package/dist/l0-layout/kanban/KanbanBoard.svelte.d.ts.map +1 -1
  64. package/dist/l0-layout/kanban/KanbanCard.svelte +175 -150
  65. package/dist/l0-layout/kanban/KanbanCard.svelte.d.ts +16 -18
  66. package/dist/l0-layout/kanban/KanbanCard.svelte.d.ts.map +1 -1
  67. package/dist/l0-layout/kanban/KanbanColumn.svelte +152 -78
  68. package/dist/l0-layout/kanban/KanbanColumn.svelte.d.ts +28 -7
  69. package/dist/l0-layout/kanban/KanbanColumn.svelte.d.ts.map +1 -1
  70. package/dist/l0-layout/kanban/index.d.ts +6 -0
  71. package/dist/l0-layout/kanban/index.d.ts.map +1 -0
  72. package/dist/l0-layout/kanban/index.js +3 -0
  73. package/dist/n0-node-graph/Node.svelte +2 -2
  74. package/dist/n0-node-graph/NodePalette.svelte +2 -2
  75. package/dist/n1-flow-canvas/graph-state.test.js +69 -0
  76. package/dist/n1-flow-canvas/utils.test.js +116 -0
  77. package/dist/n3-force-graph/GraphTooltip.svelte +2 -2
  78. package/dist/n4-adaptive-manifold/AdaptiveManifold.svelte +12 -11
  79. package/dist/n4-adaptive-manifold/AdaptiveManifold.svelte.d.ts.map +1 -1
  80. package/dist/n4-adaptive-manifold/classifier.test.js +104 -0
  81. package/dist/n4-adaptive-manifold/n4-tokens.css +2 -2
  82. package/dist/p0-primitives/ThemeProvider.svelte +10 -11
  83. package/dist/p0-primitives/ThemeProvider.svelte.d.ts +1 -1
  84. package/dist/p0-primitives/ThemeProvider.svelte.d.ts.map +1 -1
  85. package/dist/p0-primitives/canvas-theme.d.ts +12 -0
  86. package/dist/p0-primitives/canvas-theme.d.ts.map +1 -1
  87. package/dist/p0-primitives/canvas-theme.js +10 -0
  88. package/dist/p0-primitives/index.d.ts +2 -1
  89. package/dist/p0-primitives/index.d.ts.map +1 -1
  90. package/dist/p0-primitives/index.js +1 -0
  91. package/dist/p0-primitives/theme-context.d.ts +9 -0
  92. package/dist/p0-primitives/theme-context.d.ts.map +1 -0
  93. package/dist/p0-primitives/theme-context.js +8 -0
  94. package/dist/p0-primitives/tokens/tokens.css +22 -11
  95. package/dist/p0-primitives/utils/index.d.ts +2 -2
  96. package/dist/p0-primitives/utils/index.d.ts.map +1 -1
  97. package/dist/s0-state/SyncStatus.svelte +1 -1
  98. package/dist/s0-state/ThemeStore.svelte.d.ts +3 -2
  99. package/dist/s0-state/ThemeStore.svelte.d.ts.map +1 -1
  100. package/dist/s0-state/ThemeStore.svelte.js +20 -1
  101. package/dist/s0-state/index.d.ts +0 -1
  102. package/dist/s0-state/index.d.ts.map +1 -1
  103. package/dist/s0-state/index.js +1 -0
  104. package/dist/s0-state/modal-stack-store.svelte.d.ts +25 -0
  105. package/dist/s0-state/modal-stack-store.svelte.d.ts.map +1 -1
  106. package/dist/s0-state/modal-stack-store.svelte.js +19 -0
  107. package/dist/showcase/Showcase.svelte +43 -34
  108. package/dist/showcase/Showcase.svelte.d.ts.map +1 -1
  109. package/dist/spatial/BspTilingCanvas.svelte +7 -5
  110. package/dist/spatial/BspTilingCanvas.svelte.d.ts +1 -0
  111. package/dist/spatial/BspTilingCanvas.svelte.d.ts.map +1 -1
  112. package/dist/spatial/BspTilingSimulation.test.js +88 -0
  113. package/dist/spatial/CameraController.test.js +120 -0
  114. package/dist/spatial/ForceCanvas.svelte +20 -13
  115. package/dist/spatial/ForceCanvas.svelte.d.ts +1 -0
  116. package/dist/spatial/ForceCanvas.svelte.d.ts.map +1 -1
  117. package/dist/spatial/ForceSimulation.svelte.d.ts.map +1 -1
  118. package/dist/spatial/ForceSimulation.svelte.js +32 -21
  119. package/dist/spatial/LodRenderer.svelte +16 -1
  120. package/dist/spatial/LodRenderer.svelte.d.ts +1 -0
  121. package/dist/spatial/LodRenderer.svelte.d.ts.map +1 -1
  122. package/dist/spatial/SnapZoomCamera.svelte +25 -13
  123. package/dist/spatial/SnapZoomCamera.svelte.d.ts +1 -0
  124. package/dist/spatial/SnapZoomCamera.svelte.d.ts.map +1 -1
  125. package/dist/spatial/ZoneTiler.svelte +5 -2
  126. package/dist/spatial/ZoneTiler.svelte.d.ts +1 -0
  127. package/dist/spatial/ZoneTiler.svelte.d.ts.map +1 -1
  128. package/dist/spatial/d3-types.d.ts +31 -0
  129. package/dist/spatial/d3-types.d.ts.map +1 -0
  130. package/dist/spatial/d3-types.js +19 -0
  131. package/dist/ssr-import-clean.test.js +37 -0
  132. package/dist/t0-transport/fs.d.ts +12 -0
  133. package/dist/t0-transport/fs.d.ts.map +1 -0
  134. package/dist/t0-transport/fs.js +55 -0
  135. package/dist/t0-transport/index.d.ts +1 -0
  136. package/dist/t0-transport/index.d.ts.map +1 -1
  137. package/dist/t0-transport/index.js +1 -0
  138. package/dist/t0-transport/invoke.d.ts.map +1 -1
  139. package/dist/t0-transport/invoke.js +5 -2
  140. package/dist/t0-transport/quality.d.ts +12 -3
  141. package/dist/t0-transport/quality.d.ts.map +1 -1
  142. package/dist/t0-transport/quality.js +17 -4
  143. package/dist/t0-transport/substrate.svelte.d.ts +27 -0
  144. package/dist/t0-transport/substrate.svelte.d.ts.map +1 -0
  145. package/dist/t0-transport/substrate.svelte.js +49 -0
  146. package/dist/u0-primitives/LockIndicator.svelte +1 -1
  147. package/dist/u0-primitives/VerticalToolbar.svelte +1 -1
  148. package/dist/u0-primitives/accordion/Accordion.svelte +10 -9
  149. package/dist/u0-primitives/accordion/Accordion.svelte.d.ts +0 -7
  150. package/dist/u0-primitives/accordion/Accordion.svelte.d.ts.map +1 -1
  151. package/dist/u0-primitives/accordion/Accordion.test.js +5 -5
  152. package/dist/u0-primitives/badge/Badge.test.js +10 -10
  153. package/dist/u0-primitives/badge/ValidityBadge.test.js +9 -9
  154. package/dist/u0-primitives/button/Button.svelte +3 -1
  155. package/dist/u0-primitives/button/Button.svelte.d.ts +1 -0
  156. package/dist/u0-primitives/button/Button.svelte.d.ts.map +1 -1
  157. package/dist/u0-primitives/button/Button.test.js +11 -11
  158. package/dist/u0-primitives/card/Card.svelte +26 -20
  159. package/dist/u0-primitives/card/Card.svelte.d.ts.map +1 -1
  160. package/dist/u0-primitives/command-palette/CommandPalette.svelte +27 -0
  161. package/dist/u0-primitives/command-palette/CommandPalette.svelte.d.ts.map +1 -1
  162. package/dist/u0-primitives/command-palette/commandStore.svelte.d.ts.map +1 -1
  163. package/dist/u0-primitives/command-palette/commandStore.svelte.js +2 -1
  164. package/dist/u0-primitives/dropdown/Dropdown.test.js +1 -1
  165. package/dist/u0-primitives/index.d.ts +2 -0
  166. package/dist/u0-primitives/index.d.ts.map +1 -1
  167. package/dist/u0-primitives/index.js +1 -0
  168. package/dist/u0-primitives/input/Input.svelte +9 -0
  169. package/dist/u0-primitives/input/Input.svelte.d.ts.map +1 -1
  170. package/dist/u0-primitives/input/Input.test.js +1 -1
  171. package/dist/u0-primitives/modal/Modal.svelte +46 -23
  172. package/dist/u0-primitives/modal/Modal.svelte.d.ts.map +1 -1
  173. package/dist/u0-primitives/modal/Modal.test.js +63 -15
  174. package/dist/u0-primitives/rsvp/RsvpReader.svelte +8 -8
  175. package/dist/u0-primitives/rsvp/RsvpReader.svelte.d.ts.map +1 -1
  176. package/dist/u0-primitives/steps/Steps.svelte +2 -2
  177. package/dist/u0-primitives/surface-state/SurfaceState.svelte +190 -0
  178. package/dist/u0-primitives/surface-state/SurfaceState.svelte.d.ts +15 -0
  179. package/dist/u0-primitives/surface-state/SurfaceState.svelte.d.ts.map +1 -0
  180. package/dist/u0-primitives/toggle/Toggle.svelte +12 -2
  181. package/dist/u0-primitives/tooltip/Tooltip.test.js +12 -12
  182. package/dist/v0-diagrams/MarkmapDiagram.test.js +49 -0
  183. package/dist/v0-diagrams/MermaidDiagram.svelte +21 -9
  184. package/dist/v0-diagrams/MermaidDiagram.svelte.d.ts.map +1 -1
  185. package/dist/v0-diagrams/MermaidDiagram.test.js +40 -0
  186. package/package.json +51 -24
  187. package/src/n4-adaptive-manifold/n4-tokens.css +2 -2
  188. package/src/p0-primitives/tokens/tokens.css +22 -11
  189. package/src/p0-primitives/tokens/tokens.json +13 -2
  190. package/dist/b0-app-shell/command-bar/CommandBar.svelte.d.ts.map +0 -1
  191. package/dist/fabric/input/CommandBar.svelte.d.ts.map +0 -1
  192. package/dist/stores/vaultStore.svelte +0 -14
  193. package/dist/stores/vaultStore.svelte.d.ts +0 -24
  194. package/dist/stores/vaultStore.svelte.d.ts.map +0 -1
  195. package/dist/tauri/index.d.ts +0 -3
  196. package/dist/tauri/index.d.ts.map +0 -1
  197. package/dist/tauri/index.js +0 -11
  198. package/dist/types/tauri.d.ts +0 -18
@@ -1,278 +1,44 @@
1
1
  <script lang="ts">
2
- /**
3
- * KanbanColumn - Fabric Component
4
- *
5
- * Droppable column for kanban cards with header and scrollable content.
6
- * Decoupled from shell stores - uses props/callbacks for all state.
7
- *
8
- * @package @kos/design-system/fabric/layout
9
- * @adr 2026-04-12-leap-substrate-refactor-001
10
- */
11
- import { Plus, MoreHorizontal } from '@lucide/svelte';
12
- import type { CardData } from './KanbanCard.svelte';
13
-
14
- export interface ColumnData {
15
- id: string;
16
- title: string;
17
- color?: string;
18
- limit?: number;
19
- }
20
-
21
- export interface Props {
22
- column: ColumnData;
23
- cards: CardData[];
24
- isDropTarget?: boolean;
25
- isCollapsed?: boolean;
26
- onCardClick?: (card: CardData) => void;
27
- onCardDragStart?: (card: CardData) => void;
28
- onCardDragEnd?: (card: CardData) => void;
29
- onDrop?: (columnId: string, cardId: string) => void;
30
- onDragOver?: (columnId: string) => void;
31
- onDragLeave?: (columnId: string) => void;
32
- onAddCard?: (columnId: string) => void;
33
- onToggleCollapse?: (columnId: string) => void;
34
- onMenuClick?: (columnId: string) => void;
35
- }
36
-
37
- let { column, cards, isDropTarget, isCollapsed, onCardClick, onCardDragStart, onCardDragEnd, onDrop, onDragOver, onDragLeave, onAddCard, onToggleCollapse, onMenuClick }: Props = $props();
38
-
39
- let dragCounter = $state(0);
40
-
41
- function handleDragOver(e: DragEvent) {
42
- e.preventDefault();
43
- if (e.dataTransfer) e.dataTransfer.dropEffect = 'move';
44
- onDragOver?.(column.id);
45
- }
46
-
47
- function handleDragEnter() {
48
- dragCounter++;
49
- }
50
-
51
- function handleDragLeave() {
52
- dragCounter--;
53
- if (dragCounter === 0) {
54
- onDragLeave?.(column.id);
55
- }
56
- }
57
-
58
- function handleDrop(e: DragEvent) {
59
- e.preventDefault();
60
- dragCounter = 0;
61
-
62
- const cardId = e.dataTransfer?.getData('application/kanban-card');
63
- if (cardId) {
64
- onDrop?.(column.id, cardId);
65
- }
66
- }
67
-
68
- function handleCardDragStart(card: CardData, e: DragEvent) {
69
- if (e.dataTransfer) {
70
- e.dataTransfer.setData('application/kanban-card', card.id);
71
- e.dataTransfer.effectAllowed = 'move';
72
- }
73
- onCardDragStart?.(card);
74
- }
75
-
76
- const cardCount = $derived(cards.length);
77
- const atLimit = $derived(column.limit ? cardCount >= column.limit : false);
2
+ import KanbanColumn from '../../l0-layout/kanban/KanbanColumn.svelte';
3
+ import type { Props } from '../../l0-layout/kanban/KanbanColumn.svelte';
4
+
5
+ let {
6
+ column,
7
+ isDropTarget = false,
8
+ isCollapsed = false,
9
+ isMoveTarget = false,
10
+ onCardClick,
11
+ onCardDragStart,
12
+ onCardDragEnd,
13
+ onDrop,
14
+ onDragOver,
15
+ onDragLeave,
16
+ onAddCard,
17
+ onMenuClick,
18
+ onCardKeyDown,
19
+ moveMode = false,
20
+ children,
21
+ actions,
22
+ class: className = '',
23
+ }: Props = $props();
78
24
  </script>
79
25
 
80
- <div
81
- class="kanban-column"
82
- class:drop-target={isDropTarget}
83
- class:collapsed={isCollapsed}
84
- class:at-limit={atLimit}
85
- ondragover={handleDragOver}
86
- ondragenter={handleDragEnter}
87
- ondragleave={handleDragLeave}
88
- ondrop={handleDrop}
89
- role="region"
90
- aria-label="Column: {column.title}"
91
- >
92
- <div class="column-header">
93
- <div
94
- class="column-color"
95
- style="background: {column.color || 'var(--color-accent, var(--color-accent))'}"
96
- ></div>
97
- <button
98
- class="column-title-btn"
99
- onclick={() => onToggleCollapse?.(column.id)}
100
- aria-expanded={!isCollapsed}
101
- >
102
- <span class="column-title">{column.title}</span>
103
- <span class="card-count" class:limit-near={atLimit}>
104
- {cardCount}{column.limit ? `/${column.limit}` : ''}
105
- </span>
106
- </button>
107
- <button
108
- class="menu-btn"
109
- onclick={() => onMenuClick?.(column.id)}
110
- aria-label="Column menu"
111
- >
112
- <MoreHorizontal size={16} />
113
- </button>
114
- </div>
115
-
116
- {#if !isCollapsed}
117
- <div class="column-content" role="list">
118
- {#each cards as card (card.id)}
119
- {#await import('./KanbanCard.svelte') then { default: KanbanCard }}
120
- <KanbanCard
121
- {card}
122
- onClick={onCardClick}
123
- onDragStart={(c) => handleCardDragStart(c, event as unknown as DragEvent)}
124
- onDragEnd={onCardDragEnd}
125
- />
126
- {/await}
127
- {/each}
128
- </div>
129
-
130
- <button
131
- class="add-card-btn"
132
- onclick={() => onAddCard?.(column.id)}
133
- disabled={atLimit}
134
- >
135
- <Plus size={14} />
136
- Add card
137
- </button>
138
- {/if}
139
- </div>
140
-
141
- <style>
142
- .kanban-column {
143
- display: flex;
144
- flex-direction: column;
145
- width: 280px;
146
- min-width: 280px;
147
- max-height: 100%;
148
- background: var(--color-bg-canvas, #1a1a1a);
149
- border: 1px solid var(--border-subtle, rgba(255,255,255,0.06));
150
- border-radius: var(--radius-lg, 0.5rem);
151
- transition: border-color 0.15s, box-shadow 0.15s;
152
- }
153
-
154
- .kanban-column.drop-target {
155
- border-color: var(--color-accent, var(--color-accent));
156
- box-shadow: 0 0 0 2px var(--color-accent-muted);
157
- }
158
-
159
- .kanban-column.collapsed {
160
- width: auto;
161
- min-width: unset;
162
- }
163
-
164
- .kanban-column.at-limit {
165
- border-color: var(--color-warning, rgba(243, 156, 18, 0.3));
166
- }
167
-
168
- .column-header {
169
- display: flex;
170
- align-items: center;
171
- gap: var(--space-2);
172
- padding: 12px;
173
- border-bottom: 1px solid var(--border-subtle, rgba(255,255,255,0.06));
174
- }
175
-
176
- .column-color {
177
- width: 12px;
178
- height: 12px;
179
- border-radius: var(--radius-sm, 0.25rem);
180
- flex-shrink: 0;
181
- }
182
-
183
- .column-title-btn {
184
- flex: 1;
185
- display: flex;
186
- align-items: center;
187
- justify-content: space-between;
188
- gap: var(--space-2);
189
- background: none;
190
- border: none;
191
- cursor: pointer;
192
- padding: 4px;
193
- border-radius: var(--radius-sm, 0.25rem);
194
- color: inherit;
195
- text-align: left;
196
- }
197
-
198
- .column-title-btn:hover {
199
- background: rgba(255,255,255,0.05);
200
- }
201
-
202
- .column-title {
203
- font-size: 13px;
204
- font-weight: 600;
205
- color: var(--color-text-primary, #f2efe9);
206
- }
207
-
208
- .card-count {
209
- font-size: 11px;
210
- padding: 2px 6px;
211
- background: var(--color-bg-panel, #222222);
212
- border-radius: var(--radius-sm, 0.25rem);
213
- color: var(--color-text-tertiary, #706858);
214
- }
215
-
216
- .card-count.limit-near {
217
- color: var(--color-warning, #f39c12);
218
- background: rgba(243, 156, 18, 0.1);
219
- }
220
-
221
- .menu-btn {
222
- background: none;
223
- border: none;
224
- color: var(--color-text-tertiary, #706858);
225
- cursor: pointer;
226
- padding: 4px;
227
- border-radius: var(--radius-sm, 0.25rem);
228
- display: flex;
229
- align-items: center;
230
- justify-content: center;
231
- opacity: 0;
232
- transition: opacity 0.15s, background 0.15s;
233
- }
234
-
235
- .kanban-column:hover .menu-btn {
236
- opacity: 1;
237
- }
238
-
239
- .menu-btn:hover {
240
- background: rgba(255,255,255,0.05);
241
- color: var(--color-text-secondary, #a09880);
242
- }
243
-
244
- .column-content {
245
- flex: 1;
246
- overflow-y: auto;
247
- padding: 12px;
248
- display: flex;
249
- flex-direction: column;
250
- gap: var(--space-2);
251
- }
252
-
253
- .add-card-btn {
254
- margin: 0 12px 12px;
255
- padding: 8px 12px;
256
- background: transparent;
257
- border: 1px dashed var(--border-default, #333333);
258
- border-radius: var(--radius-md, 0.375rem);
259
- color: var(--color-text-tertiary, #706858);
260
- font-size: 12px;
261
- cursor: pointer;
262
- display: flex;
263
- align-items: center;
264
- justify-content: center;
265
- gap: var(--space-15);
266
- transition: border-color 0.15s, color 0.15s;
267
- }
268
-
269
- .add-card-btn:hover:not(:disabled) {
270
- border-color: var(--color-accent, var(--color-accent));
271
- color: var(--color-accent, var(--color-accent));
272
- }
273
-
274
- .add-card-btn:disabled {
275
- opacity: 0.5;
276
- cursor: not-allowed;
277
- }
278
- </style>
26
+ <KanbanColumn
27
+ {column}
28
+ {isDropTarget}
29
+ {isCollapsed}
30
+ {isMoveTarget}
31
+ {onCardClick}
32
+ {onCardDragStart}
33
+ {onCardDragEnd}
34
+ {onDrop}
35
+ {onDragOver}
36
+ {onDragLeave}
37
+ {onAddCard}
38
+ {onMenuClick}
39
+ {onCardKeyDown}
40
+ {moveMode}
41
+ {children}
42
+ {actions}
43
+ class={className}
44
+ />
@@ -1,25 +1,5 @@
1
- import type { CardData } from './KanbanCard.svelte';
2
- export interface ColumnData {
3
- id: string;
4
- title: string;
5
- color?: string;
6
- limit?: number;
7
- }
8
- export interface Props {
9
- column: ColumnData;
10
- cards: CardData[];
11
- isDropTarget?: boolean;
12
- isCollapsed?: boolean;
13
- onCardClick?: (card: CardData) => void;
14
- onCardDragStart?: (card: CardData) => void;
15
- onCardDragEnd?: (card: CardData) => void;
16
- onDrop?: (columnId: string, cardId: string) => void;
17
- onDragOver?: (columnId: string) => void;
18
- onDragLeave?: (columnId: string) => void;
19
- onAddCard?: (columnId: string) => void;
20
- onToggleCollapse?: (columnId: string) => void;
21
- onMenuClick?: (columnId: string) => void;
22
- }
1
+ import KanbanColumn from '../../l0-layout/kanban/KanbanColumn.svelte';
2
+ import type { Props } from '../../l0-layout/kanban/KanbanColumn.svelte';
23
3
  declare const KanbanColumn: import("svelte").Component<Props, {}, "">;
24
4
  type KanbanColumn = ReturnType<typeof KanbanColumn>;
25
5
  export default KanbanColumn;
@@ -1 +1 @@
1
- {"version":3,"file":"KanbanColumn.svelte.d.ts","sourceRoot":"","sources":["../../../src/fabric/layout/KanbanColumn.svelte.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAGlD,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,KAAK;IACpB,MAAM,EAAE,UAAU,CAAC;IACnB,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAC;IACvC,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAC;IAC3C,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAC;IACzC,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACpD,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,WAAW,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9C,WAAW,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;CAC1C;AAqFH,QAAA,MAAM,YAAY,2CAAwC,CAAC;AAC3D,KAAK,YAAY,GAAG,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC;AACpD,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"KanbanColumn.svelte.d.ts","sourceRoot":"","sources":["../../../src/fabric/layout/KanbanColumn.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,YAAY,MAAM,4CAA4C,CAAC;AACtE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,4CAA4C,CAAC;AA+BxE,QAAA,MAAM,YAAY,2CAAwC,CAAC;AAC3D,KAAK,YAAY,GAAG,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC;AACpD,eAAe,YAAY,CAAC"}
@@ -8,13 +8,10 @@
8
8
  */
9
9
  export { default as GlassBox } from './GlassBox.svelte';
10
10
  export { default as KanbanBoard } from './KanbanBoard.svelte';
11
- export type { Props as KanbanBoardProps } from './KanbanBoard.svelte';
12
11
  export { default as KanbanColumn } from './KanbanColumn.svelte';
13
- export type { Props as KanbanColumnProps } from './KanbanColumn.svelte';
14
12
  export { default as KanbanCard } from './KanbanCard.svelte';
15
- export type { Props as KanbanCardProps } from './KanbanCard.svelte';
16
- export type { CardData } from './KanbanCard.svelte';
17
- export type { ColumnData } from './KanbanColumn.svelte';
13
+ export type { ColumnData } from '../../l0-layout/kanban/KanbanColumn.svelte';
14
+ export type { CardData } from '../../l0-layout/kanban/KanbanCard.svelte';
18
15
  export { default as CollapsiblePanel } from './CollapsiblePanel.svelte';
19
16
  export type { PanelPosition, PanelMode, PanelSnap } from './CollapsiblePanel.svelte';
20
17
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/fabric/layout/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAGxD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC9D,YAAY,EAAE,KAAK,IAAI,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACtE,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAChE,YAAY,EAAE,KAAK,IAAI,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AACxE,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC5D,YAAY,EAAE,KAAK,IAAI,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACpE,YAAY,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AACpD,YAAY,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAGxD,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AACxE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/fabric/layout/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAGxD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC5D,YAAY,EAAE,UAAU,EAAE,MAAM,4CAA4C,CAAC;AAC7E,YAAY,EAAE,QAAQ,EAAE,MAAM,0CAA0C,CAAC;AAGzE,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AACxE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC"}
@@ -7,7 +7,7 @@
7
7
  * @adr 2026-04-12-leap-substrate-refactor-001
8
8
  */
9
9
  export { default as GlassBox } from './GlassBox.svelte';
10
- // Kanban
10
+ // Kanban — canonical l0-layout components re-exported for fabric compatibility (F-24)
11
11
  export { default as KanbanBoard } from './KanbanBoard.svelte';
12
12
  export { default as KanbanColumn } from './KanbanColumn.svelte';
13
13
  export { default as KanbanCard } from './KanbanCard.svelte';
@@ -23,7 +23,7 @@
23
23
  // Registry mapping component names to Svelte components
24
24
  const componentRegistry = $derived(buildRegistry(library));
25
25
 
26
- function buildRegistry(library: ComponentLibrary): Map<string, typeof import('svelte').SvelteComponent> {
26
+ function buildRegistry(library: ComponentLibrary): Map<string, import('svelte').Component<Record<string, unknown>>> {
27
27
  // TODO: Implement component registration from library schemas
28
28
  // This requires mapping ComponentLibrary schemas to actual Svelte imports
29
29
  // Example: if (library.hasComponent('Card')) registry.set('Card', CardComponent);
@@ -35,12 +35,12 @@
35
35
  return node.type === 'element';
36
36
  }
37
37
 
38
- function getComponent(name: string): typeof import('svelte').SvelteComponent | null {
38
+ function getComponent(name: string): import('svelte').Component<Record<string, unknown>> | null {
39
39
  return componentRegistry.get(name) || null;
40
40
  }
41
41
 
42
42
  function renderElement(element: OpenUIElement): {
43
- component: typeof import('svelte').SvelteComponent | null;
43
+ component: import('svelte').Component<Record<string, unknown>> | null;
44
44
  props: Record<string, unknown>;
45
45
  children: string[];
46
46
  grandchildren: string[];
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAOA,OAAO,YAAY,CAAC;AAEpB,OAAO,4CAA4C,CAAC;AACpD,OAAO,+BAA+B,CAAC;AACvC,OAAO,6BAA6B,CAAC;AAGrC,cAAc,gBAAgB,CAAC;AAE/B,cAAc,iBAAiB,CAAC;AAEhC,cAAc,iBAAiB,CAAC;AAEhC,cAAc,aAAa,CAAC;AAE5B,cAAc,gBAAgB,CAAC;AAE/B,cAAc,YAAY,CAAC;AAE3B,cAAc,gBAAgB,CAAC;AAE/B,cAAc,YAAY,CAAC;AAE3B,cAAc,eAAe,CAAC;AAE9B,cAAc,iBAAiB,CAAC;AAEhC,cAAc,aAAa,CAAC;AAE5B,cAAc,YAAY,CAAC;AAG3B,YAAY,EACV,SAAS,EACT,SAAS,EACT,aAAa,EACb,UAAU,EACV,YAAY,EACZ,QAAQ,EACR,SAAS,EACT,aAAa,EACb,aAAa,EACb,eAAe,GAChB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAOA,OAAO,YAAY,CAAC;AAEpB,OAAO,4CAA4C,CAAC;AACpD,OAAO,+BAA+B,CAAC;AACvC,OAAO,6BAA6B,CAAC;AAGrC,cAAc,gBAAgB,CAAC;AAE/B,cAAc,iBAAiB,CAAC;AAEhC,cAAc,iBAAiB,CAAC;AAEhC,cAAc,aAAa,CAAC;AAE5B,cAAc,gBAAgB,CAAC;AAE/B,cAAc,YAAY,CAAC;AAE3B,cAAc,gBAAgB,CAAC;AAE/B,cAAc,YAAY,CAAC;AAE3B,cAAc,eAAe,CAAC;AAE9B,cAAc,iBAAiB,CAAC;AAGhC,cAAc,aAAa,CAAC;AAG5B,cAAc,YAAY,CAAC;AAG3B,YAAY,EACV,SAAS,EACT,SAAS,EACT,aAAa,EACb,UAAU,EACV,YAAY,EACZ,QAAQ,EACR,SAAS,EACT,aAAa,EACb,aAAa,EACb,eAAe,GAChB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC"}
package/dist/index.js CHANGED
@@ -29,9 +29,11 @@ export * from './f0-forms';
29
29
  export * from './d0-data-viz';
30
30
  // N0 Node Graph — Visual composition primitives (SVG DAG, <100 nodes)
31
31
  export * from './n0-node-graph';
32
- // Epistemic types — Assay, Allay, Expert, Provenance
32
+ // Epistemic types — public LEAP plugin contracts for assay, allay,
33
+ // expert identity, and provenance metadata.
33
34
  export * from './epistemic';
34
- // Platform — cross-boundary protocols (HUD, etc.)
35
+ // Platform protocols public LEAP shell/plugin boundary metadata,
36
+ // including HUD contribution and indicator contracts.
35
37
  export * from './platform';
36
38
  export { EDGE_REVEAL_STAGGER_MS } from './n1-flow-canvas/types.js';
37
39
  export { nodeHitTest, domEventToCanvasCoords, parseMentionEdges, parseGroupedSequenceEdges } from './n1-flow-canvas/utils.js';
@@ -52,7 +52,7 @@
52
52
  justify-content: center;
53
53
  cursor: ns-resize;
54
54
  background: var(--color-bg-panel, #222);
55
- border-top: 1px solid var(--border-color, #333);
55
+ border-top: 1px solid var(--color-border, #333);
56
56
  flex-shrink: 0;
57
57
  user-select: none;
58
58
  transition: background 0.1s, border-top-color 0.1s;
@@ -60,8 +60,8 @@
60
60
 
61
61
  .section-splitter:hover,
62
62
  .section-splitter--active {
63
- background: color-mix(in srgb, var(--accent-primary, var(--color-accent)) 10%, var(--color-bg-panel, #222));
64
- border-top-color: var(--accent-primary, var(--color-accent));
63
+ background: color-mix(in srgb, var(--color-accent) 10%, var(--color-bg-panel, #222));
64
+ border-top-color: var(--color-accent);
65
65
  }
66
66
 
67
67
  /* Three-line grip — center line via element, top/bottom via box-shadow */
@@ -77,7 +77,7 @@
77
77
 
78
78
  .section-splitter:hover .section-splitter__grip,
79
79
  .section-splitter--active .section-splitter__grip {
80
- background: var(--accent-primary, var(--color-accent));
81
- box-shadow: 0 -4px 0 var(--accent-primary, var(--color-accent)), 0 4px 0 var(--accent-primary, var(--color-accent));
80
+ background: var(--color-accent);
81
+ box-shadow: 0 -4px 0 var(--color-accent), 0 4px 0 var(--color-accent);
82
82
  }
83
83
  </style>
@@ -128,10 +128,12 @@
128
128
  overflow: hidden;
129
129
  }
130
130
 
131
- .ds-tiny-indicator.ds-phase-seed { border-left: 3px solid var(--color-phase-seed, #8fbc8f); }
132
- .ds-tiny-indicator.ds-phase-sprout { border-left: 3px solid var(--color-phase-sprout, #90ee90); }
133
- .ds-tiny-indicator.ds-phase-flower { border-left: 3px solid var(--color-phase-flower, #ffa500); }
134
- .ds-tiny-indicator.ds-phase-scelle { border-left: 3px solid var(--color-phase-scelle, #ff4500); }
131
+ /* Phase colors follow PHASE_CONFIG (block-writer-types.ts) */
132
+ .ds-tiny-indicator.ds-phase-seed { border-left: 3px solid var(--color-warning); }
133
+ .ds-tiny-indicator.ds-phase-sprout { border-left: 3px solid var(--color-info); }
134
+ .ds-tiny-indicator.ds-phase-go { border-left: 3px solid var(--color-success); }
135
+ .ds-tiny-indicator.ds-phase-freeze { border-left: 3px solid var(--color-accent); }
136
+ .ds-tiny-indicator.ds-phase-compost { border-left: 3px solid var(--color-neutral); }
135
137
 
136
138
  .ds-tiny-id {
137
139
  font-family: var(--font-mono, monospace);
@@ -78,11 +78,11 @@
78
78
  </Card>
79
79
 
80
80
  <style>
81
- .ds-compact-card {
81
+ :global(.ds-compact-card) {
82
82
  transition: box-shadow var(--transition-normal);
83
83
  }
84
84
 
85
- .ds-compact-card:hover {
85
+ :global(.ds-compact-card:hover) {
86
86
  box-shadow: var(--shadow-card-hover);
87
87
  }
88
88
 
@@ -104,11 +104,12 @@
104
104
  }
105
105
 
106
106
  /* Hide overflow preview text when not hovered */
107
- .ds-compact-card:hover .ds-card-preview {
107
+ :global(.ds-compact-card:hover) .ds-card-preview {
108
108
  max-height: 4.5rem; /* ~3 lines */
109
109
  overflow: hidden;
110
110
  text-overflow: ellipsis;
111
111
  display: -webkit-box;
112
112
  -webkit-line-clamp: 3;
113
+ line-clamp: 3;
113
114
  }
114
115
  </style>
@@ -47,15 +47,23 @@
47
47
  let cardClasses = $derived(
48
48
  `ds-grant-card ${className}${isInteractive ? ' is-interactive' : ''}${selected ? ' is-selected' : ''}`
49
49
  );
50
+ let cardAttrs = $derived(isInteractive ? {
51
+ role: 'button',
52
+ tabindex: 0,
53
+ onclick,
54
+ onkeydown: (e: KeyboardEvent) => {
55
+ if (e.key === 'Enter' || e.key === ' ') {
56
+ e.preventDefault();
57
+ onclick?.(new MouseEvent('click'));
58
+ }
59
+ },
60
+ 'aria-pressed': selected
61
+ } : {});
50
62
  </script>
51
63
 
52
64
  <div
53
65
  class={cardClasses}
54
- role={isInteractive ? 'button' : 'region'}
55
- tabindex={isInteractive ? 0 : undefined}
56
- onclick={onclick}
57
- onkeydown={isInteractive ? (e) => { if (e.key === 'Enter' || e.key === ' ') { e.preventDefault(); onclick?.(new MouseEvent('click')); } } : undefined}
58
- aria-pressed={isInteractive ? selected : undefined}
66
+ {...cardAttrs}
59
67
  >
60
68
  <div class="ds-grant-card-header">
61
69
  <h3 class="ds-grant-card-title" title={title}>{title}</h3>
@@ -129,6 +137,7 @@
129
137
  flex: 1;
130
138
  display: -webkit-box;
131
139
  -webkit-line-clamp: 2;
140
+ line-clamp: 2;
132
141
  -webkit-box-orient: vertical;
133
142
  overflow: hidden;
134
143
  }
@@ -156,6 +165,7 @@
156
165
  margin: 0;
157
166
  display: -webkit-box;
158
167
  -webkit-line-clamp: 3;
168
+ line-clamp: 3;
159
169
  -webkit-box-orient: vertical;
160
170
  overflow: hidden;
161
171
  line-height: 1.4;
@@ -1 +1 @@
1
- {"version":3,"file":"GrantCard.svelte.d.ts","sourceRoot":"","sources":["../../../src/l0-layout/grant/GrantCard.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAIpC,UAAU,KAAK;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,IAAI,CAAC;IAClC,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAuEH,QAAA,MAAM,SAAS,2CAAwC,CAAC;AACxD,KAAK,SAAS,GAAG,UAAU,CAAC,OAAO,SAAS,CAAC,CAAC;AAC9C,eAAe,SAAS,CAAC"}
1
+ {"version":3,"file":"GrantCard.svelte.d.ts","sourceRoot":"","sources":["../../../src/l0-layout/grant/GrantCard.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAIpC,UAAU,KAAK;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,IAAI,CAAC;IAClC,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAmFH,QAAA,MAAM,SAAS,2CAAwC,CAAC;AACxD,KAAK,SAAS,GAAG,UAAU,CAAC,OAAO,SAAS,CAAC,CAAC;AAC9C,eAAe,SAAS,CAAC"}
@@ -4,6 +4,8 @@ export { default as KanbanViewLayout } from './kanban/KanbanViewLayout.svelte';
4
4
  export { default as KanbanBoard } from './kanban/KanbanBoard.svelte';
5
5
  export { default as KanbanColumn } from './kanban/KanbanColumn.svelte';
6
6
  export { default as KanbanCard } from './kanban/KanbanCard.svelte';
7
+ export type { ColumnData } from './kanban/KanbanColumn.svelte';
8
+ export type { CardData } from './kanban/KanbanCard.svelte';
7
9
  export { default as SnapPanel } from './SnapPanel.svelte';
8
10
  export { default as VirtualGrid } from './VirtualGrid.svelte';
9
11
  export type { PanelPosition, PanelMode, PanelSnap } from './SnapPanel.svelte';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/l0-layout/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAChF,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAC/E,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAGnE,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC9D,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC9E,YAAY,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAGrD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAClE,YAAY,EACV,UAAU,EACV,cAAc,EACd,UAAU,EACV,SAAS,EACT,UAAU,GACX,MAAM,qBAAqB,CAAC;AAG7B,cAAc,sBAAsB,CAAC;AAGrC,OAAO,EACL,WAAW,EACX,SAAS,EACT,WAAW,EACX,YAAY,EACZ,oBAAoB,EACpB,YAAY,EACZ,cAAc,EACd,oBAAoB,GACrB,MAAM,yBAAyB,CAAC;AAEjC,YAAY,EACV,YAAY,EACZ,eAAe,EACf,iBAAiB,EACjB,iBAAiB,EACjB,YAAY,EACZ,WAAW,GACZ,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAGhF,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAGtE,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,iCAAiC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/l0-layout/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAChF,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAE/E,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACnE,YAAY,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC/D,YAAY,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAG3D,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC9D,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC9E,YAAY,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAGrD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAClE,YAAY,EACV,UAAU,EACV,cAAc,EACd,UAAU,EACV,SAAS,EACT,UAAU,GACX,MAAM,qBAAqB,CAAC;AAG7B,cAAc,sBAAsB,CAAC;AAGrC,OAAO,EACL,WAAW,EACX,SAAS,EACT,WAAW,EACX,YAAY,EACZ,oBAAoB,EACpB,YAAY,EACZ,cAAc,EACd,oBAAoB,GACrB,MAAM,yBAAyB,CAAC;AAEjC,YAAY,EACV,YAAY,EACZ,eAAe,EACf,iBAAiB,EACjB,iBAAiB,EACjB,YAAY,EACZ,WAAW,GACZ,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAGhF,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAGtE,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,iCAAiC,CAAC"}
@@ -2,6 +2,7 @@
2
2
  export { default as WorkspaceLayout } from './workspace/WorkspaceLayout.svelte';
3
3
  export { default as ChatViewLayout } from './chat-view/ChatViewLayout.svelte';
4
4
  export { default as KanbanViewLayout } from './kanban/KanbanViewLayout.svelte';
5
+ // Kanban — canonical l0-layout surface (F-24)
5
6
  export { default as KanbanBoard } from './kanban/KanbanBoard.svelte';
6
7
  export { default as KanbanColumn } from './kanban/KanbanColumn.svelte';
7
8
  export { default as KanbanCard } from './kanban/KanbanCard.svelte';