@r2digisolutions/components 0.1.7 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (324) hide show
  1. package/dist/components/atoms/IconButton/IconButton.svelte +1 -1
  2. package/dist/components/atoms/MediaKindIcon/MediaKindIcon.stories.js +8 -0
  3. package/dist/components/atoms/MediaKindIcon/MediaKindIcon.svelte +122 -0
  4. package/dist/components/atoms/MediaKindIcon/MediaKindIcon.svelte.d.ts +11 -0
  5. package/dist/components/atoms/MediaKindIcon/MediaKindIconStory.svelte +12 -0
  6. package/dist/components/atoms/MediaKindIcon/MediaKindIconStory.svelte.d.ts +18 -0
  7. package/dist/components/atoms/PanKnob/PanKnob.stories.d.ts +9 -0
  8. package/dist/components/atoms/PanKnob/PanKnob.stories.js +8 -0
  9. package/dist/components/atoms/PanKnob/PanKnob.svelte +218 -0
  10. package/dist/components/atoms/PanKnob/PanKnob.svelte.d.ts +19 -0
  11. package/dist/components/atoms/PanKnob/PanKnobStory.svelte +15 -0
  12. package/dist/components/atoms/PanKnob/PanKnobStory.svelte.d.ts +3 -0
  13. package/dist/components/atoms/Playhead/Playhead.stories.js +8 -0
  14. package/dist/components/atoms/Playhead/Playhead.svelte +59 -0
  15. package/dist/components/atoms/Playhead/Playhead.svelte.d.ts +13 -0
  16. package/dist/components/atoms/Playhead/PlayheadStory.svelte +9 -0
  17. package/dist/components/atoms/Playhead/PlayheadStory.svelte.d.ts +18 -0
  18. package/dist/components/atoms/TimeRuler/TimeRuler.stories.js +8 -0
  19. package/dist/components/atoms/TimeRuler/TimeRuler.svelte +58 -0
  20. package/dist/components/atoms/TimeRuler/TimeRuler.svelte.d.ts +10 -0
  21. package/dist/components/atoms/TimeRuler/TimeRulerStory.svelte +7 -0
  22. package/dist/components/atoms/TimeRuler/TimeRulerStory.svelte.d.ts +18 -0
  23. package/dist/components/atoms/Tooltip/Tooltip.svelte +1 -1
  24. package/dist/components/atoms/TrimHandle/TrimHandle.stories.js +8 -0
  25. package/dist/components/atoms/TrimHandle/TrimHandle.svelte +63 -0
  26. package/dist/components/atoms/TrimHandle/TrimHandle.svelte.d.ts +12 -0
  27. package/dist/components/atoms/TrimHandle/TrimHandleStory.svelte +11 -0
  28. package/dist/components/atoms/TrimHandle/TrimHandleStory.svelte.d.ts +18 -0
  29. package/dist/components/molecules/AiAssistPanel/AiAssistPanel.stories.d.ts +9 -0
  30. package/dist/components/molecules/AiAssistPanel/AiAssistPanel.stories.js +8 -0
  31. package/dist/components/molecules/AiAssistPanel/AiAssistPanel.svelte +102 -0
  32. package/dist/components/molecules/AiAssistPanel/AiAssistPanel.svelte.d.ts +20 -0
  33. package/dist/components/molecules/AiAssistPanel/AiAssistPanelStory.svelte +34 -0
  34. package/dist/components/molecules/AiAssistPanel/AiAssistPanelStory.svelte.d.ts +3 -0
  35. package/dist/components/molecules/BulkActionBar/BulkActionBar.svelte +97 -61
  36. package/dist/components/molecules/BulkActionBar/BulkActionBar.svelte.d.ts +2 -0
  37. package/dist/components/molecules/BulkEditPanel/BulkEditPanel.stories.js +8 -0
  38. package/dist/components/molecules/BulkEditPanel/BulkEditPanel.svelte +117 -0
  39. package/dist/components/molecules/BulkEditPanel/BulkEditPanel.svelte.d.ts +23 -0
  40. package/dist/components/molecules/BulkEditPanel/BulkEditPanelStory.svelte +18 -0
  41. package/dist/components/molecules/BulkEditPanel/BulkEditPanelStory.svelte.d.ts +18 -0
  42. package/dist/components/molecules/CanvasElementsPanel/CanvasElementsPanel.stories.js +8 -0
  43. package/dist/components/molecules/CanvasElementsPanel/CanvasElementsPanel.svelte +858 -0
  44. package/dist/components/molecules/CanvasElementsPanel/CanvasElementsPanel.svelte.d.ts +43 -0
  45. package/dist/components/molecules/CanvasElementsPanel/CanvasElementsPanelStory.svelte +7 -0
  46. package/dist/components/molecules/CanvasElementsPanel/CanvasElementsPanelStory.svelte.d.ts +18 -0
  47. package/dist/components/molecules/CanvasInspector/CanvasInspector.stories.d.ts +9 -0
  48. package/dist/components/molecules/CanvasInspector/CanvasInspector.stories.js +8 -0
  49. package/dist/components/molecules/CanvasInspector/CanvasInspector.svelte +1140 -0
  50. package/dist/components/molecules/CanvasInspector/CanvasInspector.svelte.d.ts +28 -0
  51. package/dist/components/molecules/CanvasInspector/CanvasInspectorStory.svelte +20 -0
  52. package/dist/components/molecules/CanvasInspector/CanvasInspectorStory.svelte.d.ts +3 -0
  53. package/dist/components/molecules/ColorPicker/ColorPicker.svelte +1 -1
  54. package/dist/components/molecules/ColumnVisibilityMenu/ColumnVisibilityMenu.stories.d.ts +9 -0
  55. package/dist/components/molecules/ColumnVisibilityMenu/ColumnVisibilityMenu.stories.js +8 -0
  56. package/dist/components/molecules/ColumnVisibilityMenu/ColumnVisibilityMenu.svelte +108 -0
  57. package/dist/components/molecules/ColumnVisibilityMenu/ColumnVisibilityMenu.svelte.d.ts +18 -0
  58. package/dist/components/molecules/ColumnVisibilityMenu/ColumnVisibilityMenuStory.svelte +15 -0
  59. package/dist/components/molecules/ColumnVisibilityMenu/ColumnVisibilityMenuStory.svelte.d.ts +3 -0
  60. package/dist/components/molecules/ConflictResolver/ConflictResolver.stories.js +8 -0
  61. package/dist/components/molecules/ConflictResolver/ConflictResolver.svelte +73 -0
  62. package/dist/components/molecules/ConflictResolver/ConflictResolver.svelte.d.ts +16 -0
  63. package/dist/components/molecules/ConflictResolver/ConflictResolverStory.svelte +11 -0
  64. package/dist/components/molecules/ConflictResolver/ConflictResolverStory.svelte.d.ts +18 -0
  65. package/dist/components/molecules/ContextMenu/ContextMenu.svelte +204 -60
  66. package/dist/components/molecules/ContextMenu/ContextMenu.svelte.d.ts +9 -0
  67. package/dist/components/molecules/ExpressionEditor/ExpressionEditor.stories.d.ts +9 -0
  68. package/dist/components/molecules/ExpressionEditor/ExpressionEditor.stories.js +8 -0
  69. package/dist/components/molecules/ExpressionEditor/ExpressionEditor.svelte +56 -0
  70. package/dist/components/molecules/ExpressionEditor/ExpressionEditor.svelte.d.ts +12 -0
  71. package/dist/components/molecules/ExpressionEditor/ExpressionEditorStory.svelte +12 -0
  72. package/dist/components/molecules/ExpressionEditor/ExpressionEditorStory.svelte.d.ts +3 -0
  73. package/dist/components/molecules/FilterList/FilterList.stories.d.ts +9 -0
  74. package/dist/components/molecules/FilterList/FilterList.stories.js +8 -0
  75. package/dist/components/molecules/FilterList/FilterList.svelte +101 -0
  76. package/dist/components/molecules/FilterList/FilterList.svelte.d.ts +18 -0
  77. package/dist/components/molecules/FilterList/FilterListStory.svelte +31 -0
  78. package/dist/components/molecules/FilterList/FilterListStory.svelte.d.ts +3 -0
  79. package/dist/components/molecules/MediaAssetBrowser/MediaAssetBrowser.stories.d.ts +9 -0
  80. package/dist/components/molecules/MediaAssetBrowser/MediaAssetBrowser.stories.js +8 -0
  81. package/dist/components/molecules/MediaAssetBrowser/MediaAssetBrowser.svelte +94 -0
  82. package/dist/components/molecules/MediaAssetBrowser/MediaAssetBrowser.svelte.d.ts +15 -0
  83. package/dist/components/molecules/MediaAssetBrowser/MediaAssetBrowserStory.svelte +18 -0
  84. package/dist/components/molecules/MediaAssetBrowser/MediaAssetBrowserStory.svelte.d.ts +3 -0
  85. package/dist/components/molecules/MediaAssetCard/MediaAssetCard.stories.js +8 -0
  86. package/dist/components/molecules/MediaAssetCard/MediaAssetCard.svelte +50 -0
  87. package/dist/components/molecules/MediaAssetCard/MediaAssetCard.svelte.d.ts +11 -0
  88. package/dist/components/molecules/MediaAssetCard/MediaAssetCardStory.svelte +13 -0
  89. package/dist/components/molecules/MediaAssetCard/MediaAssetCardStory.svelte.d.ts +18 -0
  90. package/dist/components/molecules/MediaLayerItem/MediaLayerItem.stories.js +8 -0
  91. package/dist/components/molecules/MediaLayerItem/MediaLayerItem.svelte +380 -0
  92. package/dist/components/molecules/MediaLayerItem/MediaLayerItem.svelte.d.ts +33 -0
  93. package/dist/components/molecules/MediaLayerItem/MediaLayerItemStory.svelte +14 -0
  94. package/dist/components/molecules/MediaLayerItem/MediaLayerItemStory.svelte.d.ts +18 -0
  95. package/dist/components/molecules/MediaLayerList/MediaLayerList.stories.d.ts +9 -0
  96. package/dist/components/molecules/MediaLayerList/MediaLayerList.stories.js +8 -0
  97. package/dist/components/molecules/MediaLayerList/MediaLayerList.svelte +399 -0
  98. package/dist/components/molecules/MediaLayerList/MediaLayerList.svelte.d.ts +37 -0
  99. package/dist/components/molecules/MediaLayerList/MediaLayerListStory.svelte +24 -0
  100. package/dist/components/molecules/MediaLayerList/MediaLayerListStory.svelte.d.ts +3 -0
  101. package/dist/components/molecules/MediaStage/MediaStage.stories.d.ts +9 -0
  102. package/dist/components/molecules/MediaStage/MediaStage.stories.js +8 -0
  103. package/dist/components/molecules/MediaStage/MediaStage.svelte +1498 -0
  104. package/dist/components/molecules/MediaStage/MediaStage.svelte.d.ts +45 -0
  105. package/dist/components/molecules/MediaStage/MediaStageStory.svelte +35 -0
  106. package/dist/components/molecules/MediaStage/MediaStageStory.svelte.d.ts +3 -0
  107. package/dist/components/molecules/MediaTimeline/MediaTimeline.stories.d.ts +9 -0
  108. package/dist/components/molecules/MediaTimeline/MediaTimeline.stories.js +8 -0
  109. package/dist/components/molecules/MediaTimeline/MediaTimeline.svelte +131 -0
  110. package/dist/components/molecules/MediaTimeline/MediaTimeline.svelte.d.ts +19 -0
  111. package/dist/components/molecules/MediaTimeline/MediaTimelineStory.svelte +20 -0
  112. package/dist/components/molecules/MediaTimeline/MediaTimelineStory.svelte.d.ts +3 -0
  113. package/dist/components/molecules/MixerChannel/MixerChannel.stories.d.ts +9 -0
  114. package/dist/components/molecules/MixerChannel/MixerChannel.stories.js +8 -0
  115. package/dist/components/molecules/MixerChannel/MixerChannel.svelte +92 -0
  116. package/dist/components/molecules/MixerChannel/MixerChannel.svelte.d.ts +11 -0
  117. package/dist/components/molecules/MixerChannel/MixerChannelStory.svelte +13 -0
  118. package/dist/components/molecules/MixerChannel/MixerChannelStory.svelte.d.ts +3 -0
  119. package/dist/components/molecules/NodeGraph/GraphBlueprintNode.svelte +454 -0
  120. package/dist/components/molecules/NodeGraph/GraphBlueprintNode.svelte.d.ts +8 -0
  121. package/dist/components/molecules/NodeGraph/GraphFlowBridge.svelte +26 -0
  122. package/dist/components/molecules/NodeGraph/GraphFlowBridge.svelte.d.ts +22 -0
  123. package/dist/components/molecules/NodeGraph/NodeGraph.stories.d.ts +12 -0
  124. package/dist/components/molecules/NodeGraph/NodeGraph.stories.js +9 -0
  125. package/dist/components/molecules/NodeGraph/NodeGraph.svelte +1409 -0
  126. package/dist/components/molecules/NodeGraph/NodeGraph.svelte.d.ts +33 -0
  127. package/dist/components/molecules/NodeGraph/NodeGraphStory.svelte +90 -0
  128. package/dist/components/molecules/NodeGraph/NodeGraphStory.svelte.d.ts +3 -0
  129. package/dist/components/molecules/NodePalette/NodePalette.stories.js +8 -0
  130. package/dist/components/molecules/NodePalette/NodePalette.svelte +86 -0
  131. package/dist/components/molecules/NodePalette/NodePalette.svelte.d.ts +11 -0
  132. package/dist/components/molecules/NodePalette/NodePaletteStory.svelte +11 -0
  133. package/dist/components/molecules/NodePalette/NodePaletteStory.svelte.d.ts +18 -0
  134. package/dist/components/molecules/Poll/Poll.stories.d.ts +1 -1
  135. package/dist/components/molecules/ProgramMonitor/ProgramMonitor.stories.js +8 -0
  136. package/dist/components/molecules/ProgramMonitor/ProgramMonitor.svelte +72 -0
  137. package/dist/components/molecules/ProgramMonitor/ProgramMonitor.svelte.d.ts +12 -0
  138. package/dist/components/molecules/ProgramMonitor/ProgramMonitorStory.svelte +16 -0
  139. package/dist/components/molecules/ProgramMonitor/ProgramMonitorStory.svelte.d.ts +18 -0
  140. package/dist/components/molecules/PropertyField/PropertyField.svelte +57 -3
  141. package/dist/components/molecules/PropertyField/PropertyField.svelte.d.ts +10 -0
  142. package/dist/components/molecules/PropertyField/PropertyFieldStory.svelte +21 -0
  143. package/dist/components/molecules/PropertyGroup/PropertyGroup.svelte +1 -1
  144. package/dist/components/molecules/QueryBuilder/QueryBuilder.stories.d.ts +9 -0
  145. package/dist/components/molecules/QueryBuilder/QueryBuilder.stories.js +8 -0
  146. package/dist/components/molecules/QueryBuilder/QueryBuilder.svelte +52 -0
  147. package/dist/components/molecules/QueryBuilder/QueryBuilder.svelte.d.ts +18 -0
  148. package/dist/components/molecules/QueryBuilder/QueryBuilderStory.svelte +62 -0
  149. package/dist/components/molecules/QueryBuilder/QueryBuilderStory.svelte.d.ts +3 -0
  150. package/dist/components/molecules/RelationPicker/RelationPicker.stories.d.ts +9 -0
  151. package/dist/components/molecules/RelationPicker/RelationPicker.stories.js +8 -0
  152. package/dist/components/molecules/RelationPicker/RelationPicker.svelte +180 -0
  153. package/dist/components/molecules/RelationPicker/RelationPicker.svelte.d.ts +24 -0
  154. package/dist/components/molecules/RelationPicker/RelationPickerStory.svelte +16 -0
  155. package/dist/components/molecules/RelationPicker/RelationPickerStory.svelte.d.ts +3 -0
  156. package/dist/components/molecules/SchemaFieldBuilder/SchemaFieldBuilder.stories.d.ts +9 -0
  157. package/dist/components/molecules/SchemaFieldBuilder/SchemaFieldBuilder.stories.js +8 -0
  158. package/dist/components/molecules/SchemaFieldBuilder/SchemaFieldBuilder.svelte +154 -0
  159. package/dist/components/molecules/SchemaFieldBuilder/SchemaFieldBuilder.svelte.d.ts +12 -0
  160. package/dist/components/molecules/SchemaFieldBuilder/SchemaFieldBuilderStory.svelte +16 -0
  161. package/dist/components/molecules/SchemaFieldBuilder/SchemaFieldBuilderStory.svelte.d.ts +3 -0
  162. package/dist/components/molecules/SecretField/SecretField.stories.d.ts +9 -0
  163. package/dist/components/molecules/SecretField/SecretField.stories.js +8 -0
  164. package/dist/components/molecules/SecretField/SecretField.svelte +58 -0
  165. package/dist/components/molecules/SecretField/SecretField.svelte.d.ts +15 -0
  166. package/dist/components/molecules/SecretField/SecretFieldStory.svelte +8 -0
  167. package/dist/components/molecules/SecretField/SecretFieldStory.svelte.d.ts +3 -0
  168. package/dist/components/molecules/SplitPane/SplitPane.svelte +96 -37
  169. package/dist/components/molecules/SplitPane/SplitPane.svelte.d.ts +10 -2
  170. package/dist/components/molecules/TableToolbar/TableToolbar.svelte.d.ts +1 -1
  171. package/dist/components/molecules/Terminal/Terminal.stories.js +20 -0
  172. package/dist/components/molecules/Terminal/Terminal.svelte +238 -0
  173. package/dist/components/molecules/Terminal/Terminal.svelte.d.ts +19 -0
  174. package/dist/components/molecules/Terminal/TerminalStory.svelte +47 -0
  175. package/dist/components/molecules/Terminal/TerminalStory.svelte.d.ts +6 -0
  176. package/dist/components/molecules/TimelineClip/TimelineClip.stories.js +8 -0
  177. package/dist/components/molecules/TimelineClip/TimelineClip.svelte +116 -0
  178. package/dist/components/molecules/TimelineClip/TimelineClip.svelte.d.ts +15 -0
  179. package/dist/components/molecules/TimelineClip/TimelineClipStory.svelte +18 -0
  180. package/dist/components/molecules/TimelineClip/TimelineClipStory.svelte.d.ts +18 -0
  181. package/dist/components/molecules/TimelineTrack/TimelineTrack.stories.js +8 -0
  182. package/dist/components/molecules/TimelineTrack/TimelineTrack.svelte +56 -0
  183. package/dist/components/molecules/TimelineTrack/TimelineTrack.svelte.d.ts +16 -0
  184. package/dist/components/molecules/TimelineTrack/TimelineTrackStory.svelte +35 -0
  185. package/dist/components/molecules/TimelineTrack/TimelineTrackStory.svelte.d.ts +18 -0
  186. package/dist/components/molecules/TraceWaterfall/TraceWaterfall.stories.js +8 -0
  187. package/dist/components/molecules/TraceWaterfall/TraceWaterfall.svelte +158 -0
  188. package/dist/components/molecules/TraceWaterfall/TraceWaterfall.svelte.d.ts +18 -0
  189. package/dist/components/molecules/TraceWaterfall/TraceWaterfallStory.svelte +55 -0
  190. package/dist/components/molecules/TraceWaterfall/TraceWaterfallStory.svelte.d.ts +18 -0
  191. package/dist/components/molecules/TrackHeader/TrackHeader.stories.d.ts +9 -0
  192. package/dist/components/molecules/TrackHeader/TrackHeader.stories.js +8 -0
  193. package/dist/components/molecules/TrackHeader/TrackHeader.svelte +54 -0
  194. package/dist/components/molecules/TrackHeader/TrackHeader.svelte.d.ts +9 -0
  195. package/dist/components/molecules/TrackHeader/TrackHeaderStory.svelte +10 -0
  196. package/dist/components/molecules/TrackHeader/TrackHeaderStory.svelte.d.ts +3 -0
  197. package/dist/components/molecules/TransportControls/TransportControls.stories.d.ts +9 -0
  198. package/dist/components/molecules/TransportControls/TransportControls.stories.js +8 -0
  199. package/dist/components/molecules/TransportControls/TransportControls.svelte +53 -0
  200. package/dist/components/molecules/TransportControls/TransportControls.svelte.d.ts +12 -0
  201. package/dist/components/molecules/TransportControls/TransportControlsStory.svelte +18 -0
  202. package/dist/components/molecules/TransportControls/TransportControlsStory.svelte.d.ts +3 -0
  203. package/dist/components/molecules/VersionHistoryPanel/VersionHistoryPanel.stories.js +8 -0
  204. package/dist/components/molecules/VersionHistoryPanel/VersionHistoryPanel.svelte +117 -0
  205. package/dist/components/molecules/VersionHistoryPanel/VersionHistoryPanel.svelte.d.ts +20 -0
  206. package/dist/components/molecules/VersionHistoryPanel/VersionHistoryPanelStory.svelte +36 -0
  207. package/dist/components/molecules/VersionHistoryPanel/VersionHistoryPanelStory.svelte.d.ts +18 -0
  208. package/dist/components/molecules/VideoPlayer/VideoPlayer.stories.d.ts +1 -1
  209. package/dist/components/molecules/VideoTrackHeader/VideoTrackHeader.stories.d.ts +9 -0
  210. package/dist/components/molecules/VideoTrackHeader/VideoTrackHeader.stories.js +8 -0
  211. package/dist/components/molecules/VideoTrackHeader/VideoTrackHeader.svelte +59 -0
  212. package/dist/components/molecules/VideoTrackHeader/VideoTrackHeader.svelte.d.ts +9 -0
  213. package/dist/components/molecules/VideoTrackHeader/VideoTrackHeaderStory.svelte +10 -0
  214. package/dist/components/molecules/VideoTrackHeader/VideoTrackHeaderStory.svelte.d.ts +3 -0
  215. package/dist/components/molecules/WaveformRegion/WaveformRegion.stories.js +8 -0
  216. package/dist/components/molecules/WaveformRegion/WaveformRegion.svelte +82 -0
  217. package/dist/components/molecules/WaveformRegion/WaveformRegion.svelte.d.ts +13 -0
  218. package/dist/components/molecules/WaveformRegion/WaveformRegionStory.svelte +17 -0
  219. package/dist/components/molecules/WaveformRegion/WaveformRegionStory.svelte.d.ts +18 -0
  220. package/dist/components/molecules/WidgetCanvas/WidgetCanvas.svelte +13 -4
  221. package/dist/components/molecules/WidgetCanvas/WidgetCanvas.svelte.d.ts +3 -1
  222. package/dist/components/molecules/WidgetCanvas/widgetCanvasContext.d.ts +2 -0
  223. package/dist/components/molecules/WidgetFrame/WidgetFrame.svelte +206 -37
  224. package/dist/components/molecules/WidgetFrame/WidgetFrame.svelte.d.ts +31 -0
  225. package/dist/components/organisms/AudioEditor/AudioEditor.stories.d.ts +12 -0
  226. package/dist/components/organisms/AudioEditor/AudioEditor.stories.js +9 -0
  227. package/dist/components/organisms/AudioEditor/AudioEditor.svelte +273 -0
  228. package/dist/components/organisms/AudioEditor/AudioEditor.svelte.d.ts +13 -0
  229. package/dist/components/organisms/AudioEditor/AudioEditorStory.svelte +10 -0
  230. package/dist/components/organisms/AudioEditor/AudioEditorStory.svelte.d.ts +3 -0
  231. package/dist/components/organisms/BlogEditor/BlogEditor.stories.d.ts +12 -0
  232. package/dist/components/organisms/BlogEditor/BlogEditor.stories.js +9 -0
  233. package/dist/components/organisms/BlogEditor/BlogEditor.svelte +1208 -0
  234. package/dist/components/organisms/BlogEditor/BlogEditor.svelte.d.ts +16 -0
  235. package/dist/components/organisms/BlogEditor/BlogEditorStory.svelte +144 -0
  236. package/dist/components/organisms/BlogEditor/BlogEditorStory.svelte.d.ts +3 -0
  237. package/dist/components/organisms/BlogEditor/DemoBlogCard.svelte +28 -0
  238. package/dist/components/organisms/BlogEditor/DemoBlogCard.svelte.d.ts +10 -0
  239. package/dist/components/organisms/BlogEditor/DemoBlogStats.svelte +34 -0
  240. package/dist/components/organisms/BlogEditor/DemoBlogStats.svelte.d.ts +11 -0
  241. package/dist/components/organisms/BlogEditor/DemoBlogWidget.svelte +13 -0
  242. package/dist/components/organisms/BlogEditor/DemoBlogWidget.svelte.d.ts +8 -0
  243. package/dist/components/organisms/BlogRenderer/BlogRenderer.stories.js +8 -0
  244. package/dist/components/organisms/BlogRenderer/BlogRenderer.svelte +469 -0
  245. package/dist/components/organisms/BlogRenderer/BlogRenderer.svelte.d.ts +14 -0
  246. package/dist/components/organisms/BlogRenderer/BlogRendererStory.svelte +20 -0
  247. package/dist/components/organisms/BlogRenderer/BlogRendererStory.svelte.d.ts +18 -0
  248. package/dist/components/organisms/BlueprintEditor/BlueprintEditor.stories.d.ts +12 -0
  249. package/dist/components/organisms/BlueprintEditor/BlueprintEditor.stories.js +9 -0
  250. package/dist/components/organisms/BlueprintEditor/BlueprintEditor.svelte +1012 -0
  251. package/dist/components/organisms/BlueprintEditor/BlueprintEditor.svelte.d.ts +16 -0
  252. package/dist/components/organisms/BlueprintEditor/BlueprintEditorStory.svelte +76 -0
  253. package/dist/components/organisms/BlueprintEditor/BlueprintEditorStory.svelte.d.ts +3 -0
  254. package/dist/components/organisms/CanvasEditor/CanvasEditor.stories.d.ts +12 -0
  255. package/dist/components/organisms/CanvasEditor/CanvasEditor.stories.js +9 -0
  256. package/dist/components/organisms/CanvasEditor/CanvasEditor.svelte +1680 -0
  257. package/dist/components/organisms/CanvasEditor/CanvasEditor.svelte.d.ts +18 -0
  258. package/dist/components/organisms/CanvasEditor/CanvasEditorStory.svelte +329 -0
  259. package/dist/components/organisms/CanvasEditor/CanvasEditorStory.svelte.d.ts +3 -0
  260. package/dist/components/organisms/DashboardBuilderPage/DashboardBuilderPage.svelte.d.ts +1 -1
  261. package/dist/components/organisms/DesktopShell/DesktopShell.svelte.d.ts +1 -1
  262. package/dist/components/organisms/EditorShell/EditorShell.svelte +123 -28
  263. package/dist/components/organisms/EditorShell/EditorShell.svelte.d.ts +21 -1
  264. package/dist/components/organisms/FileUploader/FileUploader.svelte +77 -15
  265. package/dist/components/organisms/FileUploader/FileUploader.svelte.d.ts +11 -0
  266. package/dist/components/organisms/ImportWizard/ImportWizard.stories.js +8 -0
  267. package/dist/components/organisms/ImportWizard/ImportWizard.svelte +209 -0
  268. package/dist/components/organisms/ImportWizard/ImportWizard.svelte.d.ts +22 -0
  269. package/dist/components/organisms/ImportWizard/ImportWizardStory.svelte +16 -0
  270. package/dist/components/organisms/ImportWizard/ImportWizardStory.svelte.d.ts +18 -0
  271. package/dist/components/organisms/VideoEditor/VideoEditor.stories.d.ts +12 -0
  272. package/dist/components/organisms/VideoEditor/VideoEditor.stories.js +9 -0
  273. package/dist/components/organisms/VideoEditor/VideoEditor.svelte +308 -0
  274. package/dist/components/organisms/VideoEditor/VideoEditor.svelte.d.ts +13 -0
  275. package/dist/components/organisms/VideoEditor/VideoEditorStory.svelte +10 -0
  276. package/dist/components/organisms/VideoEditor/VideoEditorStory.svelte.d.ts +3 -0
  277. package/dist/components/templates/AudioEditorTemplate/AudioEditorTemplate.stories.d.ts +12 -0
  278. package/dist/components/templates/AudioEditorTemplate/AudioEditorTemplate.stories.js +9 -0
  279. package/dist/components/templates/AudioEditorTemplate/AudioEditorTemplate.svelte +22 -0
  280. package/dist/components/templates/AudioEditorTemplate/AudioEditorTemplate.svelte.d.ts +13 -0
  281. package/dist/components/templates/AudioEditorTemplate/AudioEditorTemplateStory.svelte +8 -0
  282. package/dist/components/templates/AudioEditorTemplate/AudioEditorTemplateStory.svelte.d.ts +3 -0
  283. package/dist/components/templates/CanvasEditorTemplate/CanvasEditorTemplate.stories.d.ts +12 -0
  284. package/dist/components/templates/CanvasEditorTemplate/CanvasEditorTemplate.stories.js +9 -0
  285. package/dist/components/templates/CanvasEditorTemplate/CanvasEditorTemplate.svelte +32 -0
  286. package/dist/components/templates/CanvasEditorTemplate/CanvasEditorTemplate.svelte.d.ts +17 -0
  287. package/dist/components/templates/CanvasEditorTemplate/CanvasEditorTemplateStory.svelte +21 -0
  288. package/dist/components/templates/CanvasEditorTemplate/CanvasEditorTemplateStory.svelte.d.ts +3 -0
  289. package/dist/components/templates/VideoEditorTemplate/VideoEditorTemplate.stories.d.ts +12 -0
  290. package/dist/components/templates/VideoEditorTemplate/VideoEditorTemplate.stories.js +9 -0
  291. package/dist/components/templates/VideoEditorTemplate/VideoEditorTemplate.svelte +22 -0
  292. package/dist/components/templates/VideoEditorTemplate/VideoEditorTemplate.svelte.d.ts +13 -0
  293. package/dist/components/templates/VideoEditorTemplate/VideoEditorTemplateStory.svelte +8 -0
  294. package/dist/components/templates/VideoEditorTemplate/VideoEditorTemplateStory.svelte.d.ts +3 -0
  295. package/dist/index.d.ts +83 -1
  296. package/dist/index.js +60 -0
  297. package/dist/types/xyflow-svelte.d.ts +62 -0
  298. package/dist/utils/audioProject.d.ts +19 -0
  299. package/dist/utils/audioProject.js +70 -0
  300. package/dist/utils/blogDocument.d.ts +175 -0
  301. package/dist/utils/blogDocument.js +220 -0
  302. package/dist/utils/blueprintRuntime.d.ts +34 -0
  303. package/dist/utils/blueprintRuntime.js +289 -0
  304. package/dist/utils/canvasDocument.d.ts +239 -0
  305. package/dist/utils/canvasDocument.js +443 -0
  306. package/dist/utils/canvasExport.d.ts +10 -0
  307. package/dist/utils/canvasExport.js +469 -0
  308. package/dist/utils/canvasHierarchy.d.ts +189 -0
  309. package/dist/utils/canvasHierarchy.js +674 -0
  310. package/dist/utils/canvasHistory.d.ts +19 -0
  311. package/dist/utils/canvasHistory.js +48 -0
  312. package/dist/utils/canvasWidget.d.ts +81 -0
  313. package/dist/utils/canvasWidget.js +597 -0
  314. package/dist/utils/mediaTime.d.ts +16 -0
  315. package/dist/utils/mediaTime.js +57 -0
  316. package/dist/utils/mediaTracks.d.ts +61 -0
  317. package/dist/utils/mediaTracks.js +102 -0
  318. package/dist/utils/nodeGraph.d.ts +354 -0
  319. package/dist/utils/nodeGraph.js +1453 -0
  320. package/dist/utils/queryBridge.d.ts +18 -0
  321. package/dist/utils/queryBridge.js +118 -0
  322. package/dist/utils/videoSequence.d.ts +13 -0
  323. package/dist/utils/videoSequence.js +63 -0
  324. package/package.json +5 -2
@@ -1,7 +1,7 @@
1
1
  <script lang="ts">
2
2
  import { onDestroy } from 'svelte';
3
3
 
4
- type FileKind = 'image' | 'pdf' | 'doc' | 'other';
4
+ type FileKind = 'image' | 'video' | 'audio' | 'pdf' | 'doc' | 'other';
5
5
  type UploaderVariant = 'multiple' | 'single' | 'avatar';
6
6
  type UploaderView = 'list' | 'grid';
7
7
 
@@ -22,10 +22,21 @@
22
22
  variant?: UploaderVariant;
23
23
  view?: UploaderView;
24
24
  showViewToggle?: boolean;
25
+ /** When false, only the dropzone is shown (parent owns the file list). */
26
+ showFileList?: boolean;
25
27
  maxSizeMb?: number;
26
28
  disabled?: boolean;
29
+ /**
30
+ * External preview URL for `single` / `avatar` when no File is selected yet
31
+ * (e.g. existing remote image in an editor inspector).
32
+ */
33
+ src?: string;
34
+ /** Display name when using `src` without a File */
35
+ srcName?: string;
27
36
  class?: string;
28
37
  onchange?: (files: File[]) => void;
38
+ /** Fired when the user clears the current file / src preview */
39
+ onclear?: () => void;
29
40
  }
30
41
 
31
42
  let {
@@ -36,10 +47,14 @@
36
47
  variant = 'multiple',
37
48
  view = $bindable('list'),
38
49
  showViewToggle = true,
50
+ showFileList = true,
39
51
  maxSizeMb = 10,
40
52
  disabled = false,
53
+ src = '',
54
+ srcName = '',
41
55
  class: className = '',
42
- onchange
56
+ onchange,
57
+ onclear
43
58
  }: FileUploaderProps = $props();
44
59
 
45
60
  let isDragging = $state(false);
@@ -51,6 +66,13 @@
51
66
  const isMultiple = $derived(variant === 'multiple');
52
67
  const hasFile = $derived(fileList.length > 0);
53
68
  const primaryFile = $derived(fileList[0] as FileItem | undefined);
69
+ const externalSrc = $derived(src?.trim() || '');
70
+ const showSinglePreview = $derived(
71
+ variant === 'single' && (!!primaryFile || !!externalSrc)
72
+ );
73
+ const singlePreviewUrl = $derived(primaryFile?.previewUrl || externalSrc);
74
+ const singlePreviewName = $derived(primaryFile?.name || srcName || 'Media');
75
+ const singlePreviewMeta = $derived(primaryFile?.sizeFormatted || '');
54
76
 
55
77
  const labelId = $derived(`${id}-label`);
56
78
  const helperId = $derived(`${id}-helper`);
@@ -61,6 +83,13 @@
61
83
  variant === 'avatar' && (!accept || accept === '*') ? 'image/*' : accept
62
84
  );
63
85
 
86
+ const singleIsVideo = $derived(
87
+ primaryFile?.kind === 'video' ||
88
+ (!primaryFile &&
89
+ !!externalSrc &&
90
+ (resolvedAccept.includes('video') || /\.(mp4|webm|mov|m4v)(\?|$)/i.test(externalSrc)))
91
+ );
92
+
64
93
  function formatBytes(bytes: number): string {
65
94
  if (bytes === 0) return '0 B';
66
95
  const k = 1024;
@@ -71,6 +100,8 @@
71
100
 
72
101
  function getFileKind(file: File): FileKind {
73
102
  if (file.type.startsWith('image/')) return 'image';
103
+ if (file.type.startsWith('video/')) return 'video';
104
+ if (file.type.startsWith('audio/')) return 'audio';
74
105
  if (file.type === 'application/pdf' || file.name.toLowerCase().endsWith('.pdf')) return 'pdf';
75
106
  if (
76
107
  file.type.includes('document') ||
@@ -86,6 +117,8 @@
86
117
  if (kind === 'pdf') return 'PDF';
87
118
  if (kind === 'doc') return 'DOC';
88
119
  if (kind === 'image') return 'IMG';
120
+ if (kind === 'video') return 'VID';
121
+ if (kind === 'audio') return 'AUD';
89
122
  return 'FILE';
90
123
  }
91
124
 
@@ -93,6 +126,8 @@
93
126
  if (kind === 'pdf') return 'bg-red-50 text-red-600 dark:bg-red-950/50 dark:text-red-300';
94
127
  if (kind === 'doc') return 'bg-sky-50 text-sky-700 dark:bg-sky-950/50 dark:text-sky-300';
95
128
  if (kind === 'image') return 'bg-brand-50 text-brand-700 dark:bg-brand-950/50 dark:text-brand-300';
129
+ if (kind === 'video') return 'bg-violet-50 text-violet-700 dark:bg-violet-950/50 dark:text-violet-300';
130
+ if (kind === 'audio') return 'bg-emerald-50 text-emerald-700 dark:bg-emerald-950/50 dark:text-emerald-300';
96
131
  return 'bg-surface-overlay text-secondary';
97
132
  }
98
133
 
@@ -141,13 +176,14 @@
141
176
  }
142
177
 
143
178
  const kind = getFileKind(file);
179
+ const needsUrl = kind === 'image' || kind === 'video' || kind === 'audio';
144
180
  nextItems.push({
145
181
  file,
146
182
  id: `${file.name}-${file.size}-${file.lastModified}-${Math.random().toString(36).slice(2, 7)}`,
147
183
  name: file.name,
148
184
  sizeFormatted: formatBytes(file.size),
149
185
  kind,
150
- previewUrl: kind === 'image' ? URL.createObjectURL(file) : undefined
186
+ previewUrl: needsUrl ? URL.createObjectURL(file) : undefined
151
187
  });
152
188
  }
153
189
 
@@ -172,6 +208,10 @@
172
208
  }
173
209
 
174
210
  onchange?.(fileList.map((item) => item.file));
211
+ if (!showFileList && isMultiple) {
212
+ revokePreviews(fileList);
213
+ fileList = [];
214
+ }
175
215
  if (fileInputNode) fileInputNode.value = '';
176
216
  }
177
217
 
@@ -181,6 +221,17 @@
181
221
  fileList = fileList.filter((item) => item.id !== id);
182
222
  errorMessage = '';
183
223
  onchange?.(fileList.map((item) => item.file));
224
+ if (fileList.length === 0) onclear?.();
225
+ }
226
+
227
+ function clearSingle() {
228
+ if (primaryFile) {
229
+ removeFile(primaryFile.id);
230
+ return;
231
+ }
232
+ errorMessage = '';
233
+ onchange?.([]);
234
+ onclear?.();
184
235
  }
185
236
 
186
237
  function clearAll() {
@@ -516,7 +567,7 @@
516
567
  </div>
517
568
 
518
569
  <!-- Single variant: preview card with edit -->
519
- {:else if variant === 'single' && primaryFile}
570
+ {:else if showSinglePreview}
520
571
  <div
521
572
  class={[
522
573
  'overflow-hidden rounded-xl border border-border bg-surface-elevated shadow-sm',
@@ -530,11 +581,20 @@
530
581
  aria-labelledby={label ? labelId : undefined}
531
582
  >
532
583
  <div class="relative aspect-video bg-surface-overlay">
533
- {#if primaryFile.previewUrl}
534
- <img src={primaryFile.previewUrl} alt="" class="h-full w-full object-cover" />
584
+ {#if singlePreviewUrl}
585
+ {#if singleIsVideo}
586
+ <video
587
+ src={singlePreviewUrl}
588
+ class="h-full w-full object-cover"
589
+ muted
590
+ playsinline
591
+ ></video>
592
+ {:else}
593
+ <img src={singlePreviewUrl} alt="" class="h-full w-full object-cover" />
594
+ {/if}
535
595
  {:else}
536
596
  <div class="flex h-full w-full flex-col items-center justify-center gap-2">
537
- {@render fileBadge(primaryFile.kind, 'h-14 w-14 rounded-xl text-xs')}
597
+ {@render fileBadge(primaryFile?.kind ?? 'other', 'h-14 w-14 rounded-xl text-xs')}
538
598
  </div>
539
599
  {/if}
540
600
 
@@ -556,9 +616,9 @@
556
616
  </button>
557
617
  <button
558
618
  type="button"
559
- onclick={() => removeFile(primaryFile.id)}
619
+ onclick={clearSingle}
560
620
  class="inline-flex items-center justify-center rounded-lg bg-white/95 p-1.5 text-secondary shadow-sm backdrop-blur transition hover:bg-white hover:text-red-600 dark:bg-slate-900/95 dark:hover:bg-slate-900 dark:hover:text-red-400"
561
- aria-label={`Remove ${primaryFile.name}`}
621
+ aria-label={`Remove ${singlePreviewName}`}
562
622
  >
563
623
  <svg class="h-3.5 w-3.5" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2">
564
624
  <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12" />
@@ -570,8 +630,10 @@
570
630
 
571
631
  <div class="flex items-center justify-between gap-3 border-t border-border px-4 py-3">
572
632
  <div class="min-w-0">
573
- <p class="truncate text-sm font-medium text-primary">{primaryFile.name}</p>
574
- <p class="text-xs text-secondary">{primaryFile.sizeFormatted}</p>
633
+ <p class="truncate text-sm font-medium text-primary">{singlePreviewName}</p>
634
+ {#if singlePreviewMeta}
635
+ <p class="text-xs text-secondary">{singlePreviewMeta}</p>
636
+ {/if}
575
637
  </div>
576
638
  {#if helperText}
577
639
  <p id={helperId} class="shrink-0 text-xs text-secondary">{helperText}</p>
@@ -579,8 +641,8 @@
579
641
  </div>
580
642
  </div>
581
643
 
582
- <!-- Default / empty single: dropzone -->
583
- {:else}
644
+ <!-- Dropzone: hide the big one when multiple already has files (compact “add more” below) -->
645
+ {:else if !(isMultiple && hasFile && showFileList)}
584
646
  {@render dropzone()}
585
647
  {/if}
586
648
 
@@ -588,8 +650,8 @@
588
650
  <p id={errorId} class="text-xs text-red-600 dark:text-red-400" role="alert">{errorMessage}</p>
589
651
  {/if}
590
652
 
591
- <!-- Multiple file cards -->
592
- {#if isMultiple && hasFile}
653
+ <!-- Multiple file cards (optional — MediaAssetBrowser owns its own grid) -->
654
+ {#if isMultiple && hasFile && showFileList}
593
655
  {#if view === 'grid'}
594
656
  <ul class="grid grid-cols-2 gap-2.5 sm:grid-cols-3" aria-label="Selected files">
595
657
  {#each fileList as item (item.id)}
@@ -8,10 +8,21 @@ interface FileUploaderProps {
8
8
  variant?: UploaderVariant;
9
9
  view?: UploaderView;
10
10
  showViewToggle?: boolean;
11
+ /** When false, only the dropzone is shown (parent owns the file list). */
12
+ showFileList?: boolean;
11
13
  maxSizeMb?: number;
12
14
  disabled?: boolean;
15
+ /**
16
+ * External preview URL for `single` / `avatar` when no File is selected yet
17
+ * (e.g. existing remote image in an editor inspector).
18
+ */
19
+ src?: string;
20
+ /** Display name when using `src` without a File */
21
+ srcName?: string;
13
22
  class?: string;
14
23
  onchange?: (files: File[]) => void;
24
+ /** Fired when the user clears the current file / src preview */
25
+ onclear?: () => void;
15
26
  }
16
27
  declare const FileUploader: import("svelte").Component<FileUploaderProps, {}, "view">;
17
28
  type FileUploader = ReturnType<typeof FileUploader>;
@@ -0,0 +1,8 @@
1
+ import ImportWizardStory from './ImportWizardStory.svelte';
2
+ const meta = {
3
+ title: 'Organisms/ImportWizard',
4
+ component: ImportWizardStory,
5
+ tags: ['autodocs']
6
+ };
7
+ export default meta;
8
+ export const Default = {};
@@ -0,0 +1,209 @@
1
+ <script lang="ts">
2
+ import Wizard from '../Wizard/Wizard.svelte';
3
+ import DropZone from '../../molecules/DropZone/DropZone.svelte';
4
+ import Select from '../../molecules/Select/Select.svelte';
5
+ import Button from '../../atoms/Button/Button.svelte';
6
+ import type { StepItem } from '../../molecules/Stepper/Stepper.svelte';
7
+
8
+ export interface ImportColumn {
9
+ id: string;
10
+ label: string;
11
+ }
12
+
13
+ export interface ImportMapping {
14
+ source: string;
15
+ target: string;
16
+ }
17
+
18
+ export interface ImportResult {
19
+ rows: Record<string, string>[];
20
+ headers: string[];
21
+ mapping: ImportMapping[];
22
+ }
23
+
24
+ interface ImportWizardProps {
25
+ columns?: ImportColumn[];
26
+ class?: string;
27
+ onimport?: (result: ImportResult) => void;
28
+ oncancel?: () => void;
29
+ }
30
+
31
+ let {
32
+ columns = [],
33
+ class: className = '',
34
+ onimport,
35
+ oncancel
36
+ }: ImportWizardProps = $props();
37
+
38
+ const steps: StepItem[] = [
39
+ { id: 'upload', label: 'Upload', description: 'CSV or TSV file' },
40
+ { id: 'map', label: 'Map columns', description: 'Match fields' },
41
+ { id: 'confirm', label: 'Confirm', description: 'Review & import' }
42
+ ];
43
+
44
+ let current = $state(0);
45
+ let files = $state<File[]>([]);
46
+ let headers = $state<string[]>([]);
47
+ let rows = $state<Record<string, string>[]>([]);
48
+ let mapping = $state<ImportMapping[]>([]);
49
+ let parseError = $state('');
50
+
51
+ function parseCsv(text: string): { headers: string[]; rows: Record<string, string>[] } {
52
+ const lines = text
53
+ .replace(/^\uFEFF/, '')
54
+ .split(/\r?\n/)
55
+ .filter((l) => l.trim().length);
56
+ if (!lines.length) return { headers: [], rows: [] };
57
+ const delim = lines[0].includes('\t') ? '\t' : ',';
58
+ const split = (line: string) =>
59
+ line.split(delim).map((c) => c.replace(/^"|"$/g, '').trim());
60
+ const hdrs = split(lines[0]);
61
+ const parsed = lines.slice(1).map((line) => {
62
+ const cells = split(line);
63
+ const row: Record<string, string> = {};
64
+ hdrs.forEach((h, i) => {
65
+ row[h] = cells[i] ?? '';
66
+ });
67
+ return row;
68
+ });
69
+ return { headers: hdrs, rows: parsed };
70
+ }
71
+
72
+ async function loadFile(list: File[]) {
73
+ files = list;
74
+ parseError = '';
75
+ const file = list[0];
76
+ if (!file) {
77
+ headers = [];
78
+ rows = [];
79
+ mapping = [];
80
+ return;
81
+ }
82
+ try {
83
+ const text = await file.text();
84
+ const parsed = parseCsv(text);
85
+ headers = parsed.headers;
86
+ rows = parsed.rows;
87
+ mapping = headers.map((h) => {
88
+ const match = columns.find(
89
+ (c) => c.id === h || c.label.toLowerCase() === h.toLowerCase()
90
+ );
91
+ return { source: h, target: match?.id ?? '' };
92
+ });
93
+ } catch {
94
+ parseError = 'Could not parse file';
95
+ headers = [];
96
+ rows = [];
97
+ }
98
+ }
99
+
100
+ function setTarget(source: string, target: string) {
101
+ mapping = mapping.map((m) => (m.source === source ? { ...m, target } : m));
102
+ }
103
+
104
+ function mappedPreview(): Record<string, string>[] {
105
+ return rows.slice(0, 5).map((row) => {
106
+ const out: Record<string, string> = {};
107
+ for (const m of mapping) {
108
+ if (!m.target) continue;
109
+ out[m.target] = row[m.source] ?? '';
110
+ }
111
+ return out;
112
+ });
113
+ }
114
+
115
+ function finish() {
116
+ onimport?.({ rows, headers, mapping: mapping.filter((m) => m.target) });
117
+ }
118
+
119
+ const canNext = $derived(
120
+ current === 0 ? headers.length > 0 && !parseError : current === 1 ? mapping.some((m) => m.target) : true
121
+ );
122
+
123
+ const targetOptions = $derived([
124
+ { value: '', label: '— skip —' },
125
+ ...columns.map((c) => ({ value: c.id, label: c.label }))
126
+ ]);
127
+ </script>
128
+
129
+ <div class={['w-full max-w-2xl', className]} data-import-wizard>
130
+ <Wizard
131
+ {steps}
132
+ bind:current
133
+ {canNext}
134
+ finishLabel="Import"
135
+ eyebrow="Import"
136
+ onfinish={finish}
137
+ onback={() => {
138
+ if (current === 0) oncancel?.();
139
+ }}
140
+ >
141
+ {#snippet children(step)}
142
+ {#if step === 0}
143
+ <div class="flex flex-col gap-3">
144
+ <DropZone
145
+ bind:files
146
+ multiple={false}
147
+ accept=".csv,.tsv,text/csv,text/tab-separated-values"
148
+ label="Drop CSV / TSV here"
149
+ hint="or click to browse"
150
+ onchange={loadFile}
151
+ ondropfiles={loadFile}
152
+ />
153
+ {#if parseError}
154
+ <p class="text-sm text-red-600">{parseError}</p>
155
+ {:else if headers.length}
156
+ <p class="text-xs text-muted">
157
+ Detected {headers.length} columns · {rows.length} rows
158
+ </p>
159
+ {/if}
160
+ </div>
161
+ {:else if step === 1}
162
+ <div class="flex flex-col gap-2">
163
+ {#each mapping as m (m.source)}
164
+ <div class="grid grid-cols-[1fr_auto_1fr] items-center gap-2">
165
+ <code class="truncate rounded-lg bg-surface-overlay px-2 py-1.5 text-xs">{m.source}</code>
166
+ <span class="text-xs text-muted">→</span>
167
+ <Select
168
+ value={m.target}
169
+ options={targetOptions}
170
+ onchange={(v) => setTarget(m.source, v)}
171
+ size="sm"
172
+ />
173
+ </div>
174
+ {/each}
175
+ </div>
176
+ {:else}
177
+ <div class="flex flex-col gap-3">
178
+ <p class="text-sm text-secondary">
179
+ Ready to import <strong>{rows.length}</strong> rows with
180
+ <strong>{mapping.filter((m) => m.target).length}</strong> mapped fields.
181
+ </p>
182
+ <div class="overflow-auto rounded-xl border border-border">
183
+ <table class="min-w-full text-left text-xs">
184
+ <thead class="bg-surface-overlay text-muted">
185
+ <tr>
186
+ {#each mapping.filter((m) => m.target) as m (m.target)}
187
+ <th class="px-2 py-1.5 font-medium">{m.target}</th>
188
+ {/each}
189
+ </tr>
190
+ </thead>
191
+ <tbody>
192
+ {#each mappedPreview() as row, i (i)}
193
+ <tr class="border-t border-border">
194
+ {#each mapping.filter((m) => m.target) as m (m.target)}
195
+ <td class="px-2 py-1.5 text-primary">{row[m.target]}</td>
196
+ {/each}
197
+ </tr>
198
+ {/each}
199
+ </tbody>
200
+ </table>
201
+ </div>
202
+ {#if oncancel}
203
+ <Button variant="ghost" size="sm" onclick={() => oncancel?.()}>Cancel</Button>
204
+ {/if}
205
+ </div>
206
+ {/if}
207
+ {/snippet}
208
+ </Wizard>
209
+ </div>
@@ -0,0 +1,22 @@
1
+ export interface ImportColumn {
2
+ id: string;
3
+ label: string;
4
+ }
5
+ export interface ImportMapping {
6
+ source: string;
7
+ target: string;
8
+ }
9
+ export interface ImportResult {
10
+ rows: Record<string, string>[];
11
+ headers: string[];
12
+ mapping: ImportMapping[];
13
+ }
14
+ interface ImportWizardProps {
15
+ columns?: ImportColumn[];
16
+ class?: string;
17
+ onimport?: (result: ImportResult) => void;
18
+ oncancel?: () => void;
19
+ }
20
+ declare const ImportWizard: import("svelte").Component<ImportWizardProps, {}, "">;
21
+ type ImportWizard = ReturnType<typeof ImportWizard>;
22
+ export default ImportWizard;
@@ -0,0 +1,16 @@
1
+ <script lang="ts">
2
+ import ImportWizard from './ImportWizard.svelte';
3
+
4
+ const columns = [
5
+ { id: 'name', label: 'Name' },
6
+ { id: 'email', label: 'Email' },
7
+ { id: 'role', label: 'Role' }
8
+ ];
9
+ </script>
10
+
11
+ <div class="p-6">
12
+ <ImportWizard
13
+ {columns}
14
+ onimport={(r) => console.log('import', r)}
15
+ />
16
+ </div>
@@ -0,0 +1,18 @@
1
+ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
2
+ new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
3
+ $$bindings?: Bindings;
4
+ } & Exports;
5
+ (internal: unknown, props: {
6
+ $$events?: Events;
7
+ $$slots?: Slots;
8
+ }): Exports & {
9
+ $set?: any;
10
+ $on?: any;
11
+ };
12
+ z_$$bindings?: Bindings;
13
+ }
14
+ declare const ImportWizardStory: $$__sveltets_2_IsomorphicComponent<Record<string, never>, {
15
+ [evt: string]: CustomEvent<any>;
16
+ }, {}, {}, string>;
17
+ type ImportWizardStory = InstanceType<typeof ImportWizardStory>;
18
+ export default ImportWizardStory;
@@ -0,0 +1,12 @@
1
+ import type { StoryObj } from '@storybook/svelte';
2
+ declare const meta: {
3
+ title: string;
4
+ component: import("svelte").Component<Record<string, never>, {}, "">;
5
+ tags: string[];
6
+ parameters: {
7
+ layout: string;
8
+ };
9
+ };
10
+ export default meta;
11
+ type Story = StoryObj<typeof meta>;
12
+ export declare const Default: Story;
@@ -0,0 +1,9 @@
1
+ import VideoEditorStory from './VideoEditorStory.svelte';
2
+ const meta = {
3
+ title: 'Organisms/VideoEditor',
4
+ component: VideoEditorStory,
5
+ tags: ['autodocs'],
6
+ parameters: { layout: 'fullscreen' }
7
+ };
8
+ export default meta;
9
+ export const Default = {};