@r2digisolutions/components 0.1.7 → 0.3.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 (350) 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 +98 -0
  15. package/dist/components/atoms/Playhead/Playhead.svelte.d.ts +21 -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 +117 -0
  20. package/dist/components/atoms/TimeRuler/TimeRuler.svelte.d.ts +17 -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/TimelineGrid/TimelineGrid.stories.js +8 -0
  24. package/dist/components/atoms/TimelineGrid/TimelineGrid.svelte +39 -0
  25. package/dist/components/atoms/TimelineGrid/TimelineGrid.svelte.d.ts +11 -0
  26. package/dist/components/atoms/TimelineGrid/TimelineGridStory.svelte +7 -0
  27. package/dist/components/atoms/TimelineGrid/TimelineGridStory.svelte.d.ts +18 -0
  28. package/dist/components/atoms/Tooltip/Tooltip.svelte +1 -1
  29. package/dist/components/atoms/TrimHandle/TrimHandle.stories.js +8 -0
  30. package/dist/components/atoms/TrimHandle/TrimHandle.svelte +63 -0
  31. package/dist/components/atoms/TrimHandle/TrimHandle.svelte.d.ts +12 -0
  32. package/dist/components/atoms/TrimHandle/TrimHandleStory.svelte +11 -0
  33. package/dist/components/atoms/TrimHandle/TrimHandleStory.svelte.d.ts +18 -0
  34. package/dist/components/molecules/AiAssistPanel/AiAssistPanel.stories.d.ts +9 -0
  35. package/dist/components/molecules/AiAssistPanel/AiAssistPanel.stories.js +8 -0
  36. package/dist/components/molecules/AiAssistPanel/AiAssistPanel.svelte +102 -0
  37. package/dist/components/molecules/AiAssistPanel/AiAssistPanel.svelte.d.ts +20 -0
  38. package/dist/components/molecules/AiAssistPanel/AiAssistPanelStory.svelte +34 -0
  39. package/dist/components/molecules/AiAssistPanel/AiAssistPanelStory.svelte.d.ts +3 -0
  40. package/dist/components/molecules/BulkActionBar/BulkActionBar.svelte +97 -61
  41. package/dist/components/molecules/BulkActionBar/BulkActionBar.svelte.d.ts +2 -0
  42. package/dist/components/molecules/BulkEditPanel/BulkEditPanel.stories.js +8 -0
  43. package/dist/components/molecules/BulkEditPanel/BulkEditPanel.svelte +117 -0
  44. package/dist/components/molecules/BulkEditPanel/BulkEditPanel.svelte.d.ts +23 -0
  45. package/dist/components/molecules/BulkEditPanel/BulkEditPanelStory.svelte +18 -0
  46. package/dist/components/molecules/BulkEditPanel/BulkEditPanelStory.svelte.d.ts +18 -0
  47. package/dist/components/molecules/CanvasElementsPanel/CanvasElementsPanel.stories.js +8 -0
  48. package/dist/components/molecules/CanvasElementsPanel/CanvasElementsPanel.svelte +858 -0
  49. package/dist/components/molecules/CanvasElementsPanel/CanvasElementsPanel.svelte.d.ts +43 -0
  50. package/dist/components/molecules/CanvasElementsPanel/CanvasElementsPanelStory.svelte +7 -0
  51. package/dist/components/molecules/CanvasElementsPanel/CanvasElementsPanelStory.svelte.d.ts +18 -0
  52. package/dist/components/molecules/CanvasInspector/CanvasInspector.stories.d.ts +9 -0
  53. package/dist/components/molecules/CanvasInspector/CanvasInspector.stories.js +8 -0
  54. package/dist/components/molecules/CanvasInspector/CanvasInspector.svelte +1140 -0
  55. package/dist/components/molecules/CanvasInspector/CanvasInspector.svelte.d.ts +28 -0
  56. package/dist/components/molecules/CanvasInspector/CanvasInspectorStory.svelte +20 -0
  57. package/dist/components/molecules/CanvasInspector/CanvasInspectorStory.svelte.d.ts +3 -0
  58. package/dist/components/molecules/ColorPicker/ColorPicker.svelte +46 -5
  59. package/dist/components/molecules/ColorPicker/ColorPicker.svelte.d.ts +2 -0
  60. package/dist/components/molecules/ColumnVisibilityMenu/ColumnVisibilityMenu.stories.d.ts +9 -0
  61. package/dist/components/molecules/ColumnVisibilityMenu/ColumnVisibilityMenu.stories.js +8 -0
  62. package/dist/components/molecules/ColumnVisibilityMenu/ColumnVisibilityMenu.svelte +108 -0
  63. package/dist/components/molecules/ColumnVisibilityMenu/ColumnVisibilityMenu.svelte.d.ts +18 -0
  64. package/dist/components/molecules/ColumnVisibilityMenu/ColumnVisibilityMenuStory.svelte +15 -0
  65. package/dist/components/molecules/ColumnVisibilityMenu/ColumnVisibilityMenuStory.svelte.d.ts +3 -0
  66. package/dist/components/molecules/ConflictResolver/ConflictResolver.stories.js +8 -0
  67. package/dist/components/molecules/ConflictResolver/ConflictResolver.svelte +73 -0
  68. package/dist/components/molecules/ConflictResolver/ConflictResolver.svelte.d.ts +16 -0
  69. package/dist/components/molecules/ConflictResolver/ConflictResolverStory.svelte +11 -0
  70. package/dist/components/molecules/ConflictResolver/ConflictResolverStory.svelte.d.ts +18 -0
  71. package/dist/components/molecules/ContextMenu/ContextMenu.svelte +237 -66
  72. package/dist/components/molecules/ContextMenu/ContextMenu.svelte.d.ts +9 -0
  73. package/dist/components/molecules/ExpressionEditor/ExpressionEditor.stories.d.ts +9 -0
  74. package/dist/components/molecules/ExpressionEditor/ExpressionEditor.stories.js +8 -0
  75. package/dist/components/molecules/ExpressionEditor/ExpressionEditor.svelte +56 -0
  76. package/dist/components/molecules/ExpressionEditor/ExpressionEditor.svelte.d.ts +12 -0
  77. package/dist/components/molecules/ExpressionEditor/ExpressionEditorStory.svelte +12 -0
  78. package/dist/components/molecules/ExpressionEditor/ExpressionEditorStory.svelte.d.ts +3 -0
  79. package/dist/components/molecules/FilterList/FilterList.stories.d.ts +9 -0
  80. package/dist/components/molecules/FilterList/FilterList.stories.js +8 -0
  81. package/dist/components/molecules/FilterList/FilterList.svelte +101 -0
  82. package/dist/components/molecules/FilterList/FilterList.svelte.d.ts +18 -0
  83. package/dist/components/molecules/FilterList/FilterListStory.svelte +31 -0
  84. package/dist/components/molecules/FilterList/FilterListStory.svelte.d.ts +3 -0
  85. package/dist/components/molecules/MediaAssetBrowser/MediaAssetBrowser.stories.d.ts +9 -0
  86. package/dist/components/molecules/MediaAssetBrowser/MediaAssetBrowser.stories.js +8 -0
  87. package/dist/components/molecules/MediaAssetBrowser/MediaAssetBrowser.svelte +109 -0
  88. package/dist/components/molecules/MediaAssetBrowser/MediaAssetBrowser.svelte.d.ts +20 -0
  89. package/dist/components/molecules/MediaAssetBrowser/MediaAssetBrowserStory.svelte +18 -0
  90. package/dist/components/molecules/MediaAssetBrowser/MediaAssetBrowserStory.svelte.d.ts +3 -0
  91. package/dist/components/molecules/MediaAssetCard/MediaAssetCard.stories.js +8 -0
  92. package/dist/components/molecules/MediaAssetCard/MediaAssetCard.svelte +50 -0
  93. package/dist/components/molecules/MediaAssetCard/MediaAssetCard.svelte.d.ts +11 -0
  94. package/dist/components/molecules/MediaAssetCard/MediaAssetCardStory.svelte +13 -0
  95. package/dist/components/molecules/MediaAssetCard/MediaAssetCardStory.svelte.d.ts +18 -0
  96. package/dist/components/molecules/MediaLayerItem/MediaLayerItem.stories.js +8 -0
  97. package/dist/components/molecules/MediaLayerItem/MediaLayerItem.svelte +380 -0
  98. package/dist/components/molecules/MediaLayerItem/MediaLayerItem.svelte.d.ts +33 -0
  99. package/dist/components/molecules/MediaLayerItem/MediaLayerItemStory.svelte +14 -0
  100. package/dist/components/molecules/MediaLayerItem/MediaLayerItemStory.svelte.d.ts +18 -0
  101. package/dist/components/molecules/MediaLayerList/MediaLayerList.stories.d.ts +9 -0
  102. package/dist/components/molecules/MediaLayerList/MediaLayerList.stories.js +8 -0
  103. package/dist/components/molecules/MediaLayerList/MediaLayerList.svelte +399 -0
  104. package/dist/components/molecules/MediaLayerList/MediaLayerList.svelte.d.ts +37 -0
  105. package/dist/components/molecules/MediaLayerList/MediaLayerListStory.svelte +24 -0
  106. package/dist/components/molecules/MediaLayerList/MediaLayerListStory.svelte.d.ts +3 -0
  107. package/dist/components/molecules/MediaStage/MediaStage.stories.d.ts +9 -0
  108. package/dist/components/molecules/MediaStage/MediaStage.stories.js +8 -0
  109. package/dist/components/molecules/MediaStage/MediaStage.svelte +1498 -0
  110. package/dist/components/molecules/MediaStage/MediaStage.svelte.d.ts +45 -0
  111. package/dist/components/molecules/MediaStage/MediaStageStory.svelte +35 -0
  112. package/dist/components/molecules/MediaStage/MediaStageStory.svelte.d.ts +3 -0
  113. package/dist/components/molecules/MediaTimeline/MediaTimeline.stories.d.ts +9 -0
  114. package/dist/components/molecules/MediaTimeline/MediaTimeline.stories.js +8 -0
  115. package/dist/components/molecules/MediaTimeline/MediaTimeline.svelte +441 -0
  116. package/dist/components/molecules/MediaTimeline/MediaTimeline.svelte.d.ts +39 -0
  117. package/dist/components/molecules/MediaTimeline/MediaTimelineStory.svelte +20 -0
  118. package/dist/components/molecules/MediaTimeline/MediaTimelineStory.svelte.d.ts +3 -0
  119. package/dist/components/molecules/MixerChannel/MixerChannel.stories.d.ts +9 -0
  120. package/dist/components/molecules/MixerChannel/MixerChannel.stories.js +8 -0
  121. package/dist/components/molecules/MixerChannel/MixerChannel.svelte +92 -0
  122. package/dist/components/molecules/MixerChannel/MixerChannel.svelte.d.ts +11 -0
  123. package/dist/components/molecules/MixerChannel/MixerChannelStory.svelte +13 -0
  124. package/dist/components/molecules/MixerChannel/MixerChannelStory.svelte.d.ts +3 -0
  125. package/dist/components/molecules/NodeGraph/GraphBlueprintNode.svelte +454 -0
  126. package/dist/components/molecules/NodeGraph/GraphBlueprintNode.svelte.d.ts +8 -0
  127. package/dist/components/molecules/NodeGraph/GraphFlowBridge.svelte +26 -0
  128. package/dist/components/molecules/NodeGraph/GraphFlowBridge.svelte.d.ts +22 -0
  129. package/dist/components/molecules/NodeGraph/NodeGraph.stories.d.ts +12 -0
  130. package/dist/components/molecules/NodeGraph/NodeGraph.stories.js +9 -0
  131. package/dist/components/molecules/NodeGraph/NodeGraph.svelte +1409 -0
  132. package/dist/components/molecules/NodeGraph/NodeGraph.svelte.d.ts +33 -0
  133. package/dist/components/molecules/NodeGraph/NodeGraphStory.svelte +90 -0
  134. package/dist/components/molecules/NodeGraph/NodeGraphStory.svelte.d.ts +3 -0
  135. package/dist/components/molecules/NodePalette/NodePalette.stories.js +8 -0
  136. package/dist/components/molecules/NodePalette/NodePalette.svelte +86 -0
  137. package/dist/components/molecules/NodePalette/NodePalette.svelte.d.ts +11 -0
  138. package/dist/components/molecules/NodePalette/NodePaletteStory.svelte +11 -0
  139. package/dist/components/molecules/NodePalette/NodePaletteStory.svelte.d.ts +18 -0
  140. package/dist/components/molecules/PdfViewer/PdfViewer.svelte.d.ts +1 -1
  141. package/dist/components/molecules/Poll/Poll.stories.d.ts +1 -1
  142. package/dist/components/molecules/ProgramMonitor/ProgramMonitor.stories.js +8 -0
  143. package/dist/components/molecules/ProgramMonitor/ProgramMonitor.svelte +794 -0
  144. package/dist/components/molecules/ProgramMonitor/ProgramMonitor.svelte.d.ts +25 -0
  145. package/dist/components/molecules/ProgramMonitor/ProgramMonitorStory.svelte +16 -0
  146. package/dist/components/molecules/ProgramMonitor/ProgramMonitorStory.svelte.d.ts +18 -0
  147. package/dist/components/molecules/PropertyField/PropertyField.svelte +57 -3
  148. package/dist/components/molecules/PropertyField/PropertyField.svelte.d.ts +10 -0
  149. package/dist/components/molecules/PropertyField/PropertyFieldStory.svelte +21 -0
  150. package/dist/components/molecules/PropertyGroup/PropertyGroup.svelte +1 -1
  151. package/dist/components/molecules/QueryBuilder/QueryBuilder.stories.d.ts +9 -0
  152. package/dist/components/molecules/QueryBuilder/QueryBuilder.stories.js +8 -0
  153. package/dist/components/molecules/QueryBuilder/QueryBuilder.svelte +52 -0
  154. package/dist/components/molecules/QueryBuilder/QueryBuilder.svelte.d.ts +18 -0
  155. package/dist/components/molecules/QueryBuilder/QueryBuilderStory.svelte +62 -0
  156. package/dist/components/molecules/QueryBuilder/QueryBuilderStory.svelte.d.ts +3 -0
  157. package/dist/components/molecules/RelationPicker/RelationPicker.stories.d.ts +9 -0
  158. package/dist/components/molecules/RelationPicker/RelationPicker.stories.js +8 -0
  159. package/dist/components/molecules/RelationPicker/RelationPicker.svelte +180 -0
  160. package/dist/components/molecules/RelationPicker/RelationPicker.svelte.d.ts +24 -0
  161. package/dist/components/molecules/RelationPicker/RelationPickerStory.svelte +16 -0
  162. package/dist/components/molecules/RelationPicker/RelationPickerStory.svelte.d.ts +3 -0
  163. package/dist/components/molecules/SchemaFieldBuilder/SchemaFieldBuilder.stories.d.ts +9 -0
  164. package/dist/components/molecules/SchemaFieldBuilder/SchemaFieldBuilder.stories.js +8 -0
  165. package/dist/components/molecules/SchemaFieldBuilder/SchemaFieldBuilder.svelte +154 -0
  166. package/dist/components/molecules/SchemaFieldBuilder/SchemaFieldBuilder.svelte.d.ts +12 -0
  167. package/dist/components/molecules/SchemaFieldBuilder/SchemaFieldBuilderStory.svelte +16 -0
  168. package/dist/components/molecules/SchemaFieldBuilder/SchemaFieldBuilderStory.svelte.d.ts +3 -0
  169. package/dist/components/molecules/SecretField/SecretField.stories.d.ts +9 -0
  170. package/dist/components/molecules/SecretField/SecretField.stories.js +8 -0
  171. package/dist/components/molecules/SecretField/SecretField.svelte +58 -0
  172. package/dist/components/molecules/SecretField/SecretField.svelte.d.ts +15 -0
  173. package/dist/components/molecules/SecretField/SecretFieldStory.svelte +8 -0
  174. package/dist/components/molecules/SecretField/SecretFieldStory.svelte.d.ts +3 -0
  175. package/dist/components/molecules/SplitPane/SplitPane.svelte +99 -40
  176. package/dist/components/molecules/SplitPane/SplitPane.svelte.d.ts +10 -2
  177. package/dist/components/molecules/TableToolbar/TableToolbar.svelte.d.ts +1 -1
  178. package/dist/components/molecules/Terminal/Terminal.stories.js +20 -0
  179. package/dist/components/molecules/Terminal/Terminal.svelte +238 -0
  180. package/dist/components/molecules/Terminal/Terminal.svelte.d.ts +19 -0
  181. package/dist/components/molecules/Terminal/TerminalStory.svelte +47 -0
  182. package/dist/components/molecules/Terminal/TerminalStory.svelte.d.ts +6 -0
  183. package/dist/components/molecules/TimelineClip/TimelineClip.stories.js +8 -0
  184. package/dist/components/molecules/TimelineClip/TimelineClip.svelte +193 -0
  185. package/dist/components/molecules/TimelineClip/TimelineClip.svelte.d.ts +18 -0
  186. package/dist/components/molecules/TimelineClip/TimelineClipStory.svelte +18 -0
  187. package/dist/components/molecules/TimelineClip/TimelineClipStory.svelte.d.ts +18 -0
  188. package/dist/components/molecules/TimelineTrack/TimelineTrack.stories.js +8 -0
  189. package/dist/components/molecules/TimelineTrack/TimelineTrack.svelte +126 -0
  190. package/dist/components/molecules/TimelineTrack/TimelineTrack.svelte.d.ts +27 -0
  191. package/dist/components/molecules/TimelineTrack/TimelineTrackStory.svelte +35 -0
  192. package/dist/components/molecules/TimelineTrack/TimelineTrackStory.svelte.d.ts +18 -0
  193. package/dist/components/molecules/TraceWaterfall/TraceWaterfall.stories.js +8 -0
  194. package/dist/components/molecules/TraceWaterfall/TraceWaterfall.svelte +158 -0
  195. package/dist/components/molecules/TraceWaterfall/TraceWaterfall.svelte.d.ts +18 -0
  196. package/dist/components/molecules/TraceWaterfall/TraceWaterfallStory.svelte +55 -0
  197. package/dist/components/molecules/TraceWaterfall/TraceWaterfallStory.svelte.d.ts +18 -0
  198. package/dist/components/molecules/TrackHeader/TrackHeader.stories.d.ts +9 -0
  199. package/dist/components/molecules/TrackHeader/TrackHeader.stories.js +8 -0
  200. package/dist/components/molecules/TrackHeader/TrackHeader.svelte +54 -0
  201. package/dist/components/molecules/TrackHeader/TrackHeader.svelte.d.ts +9 -0
  202. package/dist/components/molecules/TrackHeader/TrackHeaderStory.svelte +10 -0
  203. package/dist/components/molecules/TrackHeader/TrackHeaderStory.svelte.d.ts +3 -0
  204. package/dist/components/molecules/TransportControls/TransportControls.stories.d.ts +9 -0
  205. package/dist/components/molecules/TransportControls/TransportControls.stories.js +8 -0
  206. package/dist/components/molecules/TransportControls/TransportControls.svelte +135 -0
  207. package/dist/components/molecules/TransportControls/TransportControls.svelte.d.ts +24 -0
  208. package/dist/components/molecules/TransportControls/TransportControlsStory.svelte +40 -0
  209. package/dist/components/molecules/TransportControls/TransportControlsStory.svelte.d.ts +3 -0
  210. package/dist/components/molecules/VersionHistoryPanel/VersionHistoryPanel.stories.js +8 -0
  211. package/dist/components/molecules/VersionHistoryPanel/VersionHistoryPanel.svelte +117 -0
  212. package/dist/components/molecules/VersionHistoryPanel/VersionHistoryPanel.svelte.d.ts +20 -0
  213. package/dist/components/molecules/VersionHistoryPanel/VersionHistoryPanelStory.svelte +36 -0
  214. package/dist/components/molecules/VersionHistoryPanel/VersionHistoryPanelStory.svelte.d.ts +18 -0
  215. package/dist/components/molecules/VideoAnimationsPanel/VideoAnimationsPanel.stories.js +8 -0
  216. package/dist/components/molecules/VideoAnimationsPanel/VideoAnimationsPanel.svelte +213 -0
  217. package/dist/components/molecules/VideoAnimationsPanel/VideoAnimationsPanel.svelte.d.ts +22 -0
  218. package/dist/components/molecules/VideoAnimationsPanel/VideoAnimationsPanelStory.svelte +7 -0
  219. package/dist/components/molecules/VideoAnimationsPanel/VideoAnimationsPanelStory.svelte.d.ts +18 -0
  220. package/dist/components/molecules/VideoComponentsPanel/VideoComponentsPanel.stories.js +8 -0
  221. package/dist/components/molecules/VideoComponentsPanel/VideoComponentsPanel.svelte +524 -0
  222. package/dist/components/molecules/VideoComponentsPanel/VideoComponentsPanel.svelte.d.ts +32 -0
  223. package/dist/components/molecules/VideoComponentsPanel/VideoComponentsPanelStory.svelte +7 -0
  224. package/dist/components/molecules/VideoComponentsPanel/VideoComponentsPanelStory.svelte.d.ts +18 -0
  225. package/dist/components/molecules/VideoPlayer/VideoPlayer.stories.d.ts +1 -1
  226. package/dist/components/molecules/VideoTrackHeader/VideoTrackHeader.stories.d.ts +9 -0
  227. package/dist/components/molecules/VideoTrackHeader/VideoTrackHeader.stories.js +8 -0
  228. package/dist/components/molecules/VideoTrackHeader/VideoTrackHeader.svelte +112 -0
  229. package/dist/components/molecules/VideoTrackHeader/VideoTrackHeader.svelte.d.ts +15 -0
  230. package/dist/components/molecules/VideoTrackHeader/VideoTrackHeaderStory.svelte +10 -0
  231. package/dist/components/molecules/VideoTrackHeader/VideoTrackHeaderStory.svelte.d.ts +3 -0
  232. package/dist/components/molecules/VideoTransitionsPanel/VideoTransitionsPanel.stories.js +8 -0
  233. package/dist/components/molecules/VideoTransitionsPanel/VideoTransitionsPanel.svelte +113 -0
  234. package/dist/components/molecules/VideoTransitionsPanel/VideoTransitionsPanel.svelte.d.ts +18 -0
  235. package/dist/components/molecules/VideoTransitionsPanel/VideoTransitionsPanelStory.svelte +7 -0
  236. package/dist/components/molecules/VideoTransitionsPanel/VideoTransitionsPanelStory.svelte.d.ts +18 -0
  237. package/dist/components/molecules/WaveformRegion/WaveformRegion.stories.js +8 -0
  238. package/dist/components/molecules/WaveformRegion/WaveformRegion.svelte +82 -0
  239. package/dist/components/molecules/WaveformRegion/WaveformRegion.svelte.d.ts +13 -0
  240. package/dist/components/molecules/WaveformRegion/WaveformRegionStory.svelte +17 -0
  241. package/dist/components/molecules/WaveformRegion/WaveformRegionStory.svelte.d.ts +18 -0
  242. package/dist/components/molecules/WidgetCanvas/WidgetCanvas.svelte +13 -4
  243. package/dist/components/molecules/WidgetCanvas/WidgetCanvas.svelte.d.ts +3 -1
  244. package/dist/components/molecules/WidgetCanvas/widgetCanvasContext.d.ts +2 -0
  245. package/dist/components/molecules/WidgetFrame/WidgetFrame.svelte +206 -37
  246. package/dist/components/molecules/WidgetFrame/WidgetFrame.svelte.d.ts +31 -0
  247. package/dist/components/organisms/AudioEditor/AudioEditor.stories.d.ts +12 -0
  248. package/dist/components/organisms/AudioEditor/AudioEditor.stories.js +9 -0
  249. package/dist/components/organisms/AudioEditor/AudioEditor.svelte +324 -0
  250. package/dist/components/organisms/AudioEditor/AudioEditor.svelte.d.ts +13 -0
  251. package/dist/components/organisms/AudioEditor/AudioEditorStory.svelte +10 -0
  252. package/dist/components/organisms/AudioEditor/AudioEditorStory.svelte.d.ts +3 -0
  253. package/dist/components/organisms/BlogEditor/BlogEditor.stories.d.ts +12 -0
  254. package/dist/components/organisms/BlogEditor/BlogEditor.stories.js +9 -0
  255. package/dist/components/organisms/BlogEditor/BlogEditor.svelte +1208 -0
  256. package/dist/components/organisms/BlogEditor/BlogEditor.svelte.d.ts +16 -0
  257. package/dist/components/organisms/BlogEditor/BlogEditorStory.svelte +144 -0
  258. package/dist/components/organisms/BlogEditor/BlogEditorStory.svelte.d.ts +3 -0
  259. package/dist/components/organisms/BlogEditor/DemoBlogCard.svelte +28 -0
  260. package/dist/components/organisms/BlogEditor/DemoBlogCard.svelte.d.ts +10 -0
  261. package/dist/components/organisms/BlogEditor/DemoBlogStats.svelte +34 -0
  262. package/dist/components/organisms/BlogEditor/DemoBlogStats.svelte.d.ts +11 -0
  263. package/dist/components/organisms/BlogEditor/DemoBlogWidget.svelte +13 -0
  264. package/dist/components/organisms/BlogEditor/DemoBlogWidget.svelte.d.ts +8 -0
  265. package/dist/components/organisms/BlogRenderer/BlogRenderer.stories.js +8 -0
  266. package/dist/components/organisms/BlogRenderer/BlogRenderer.svelte +469 -0
  267. package/dist/components/organisms/BlogRenderer/BlogRenderer.svelte.d.ts +14 -0
  268. package/dist/components/organisms/BlogRenderer/BlogRendererStory.svelte +20 -0
  269. package/dist/components/organisms/BlogRenderer/BlogRendererStory.svelte.d.ts +18 -0
  270. package/dist/components/organisms/BlueprintEditor/BlueprintEditor.stories.d.ts +12 -0
  271. package/dist/components/organisms/BlueprintEditor/BlueprintEditor.stories.js +9 -0
  272. package/dist/components/organisms/BlueprintEditor/BlueprintEditor.svelte +1012 -0
  273. package/dist/components/organisms/BlueprintEditor/BlueprintEditor.svelte.d.ts +16 -0
  274. package/dist/components/organisms/BlueprintEditor/BlueprintEditorStory.svelte +76 -0
  275. package/dist/components/organisms/BlueprintEditor/BlueprintEditorStory.svelte.d.ts +3 -0
  276. package/dist/components/organisms/CanvasEditor/CanvasEditor.stories.d.ts +12 -0
  277. package/dist/components/organisms/CanvasEditor/CanvasEditor.stories.js +9 -0
  278. package/dist/components/organisms/CanvasEditor/CanvasEditor.svelte +1680 -0
  279. package/dist/components/organisms/CanvasEditor/CanvasEditor.svelte.d.ts +18 -0
  280. package/dist/components/organisms/CanvasEditor/CanvasEditorStory.svelte +329 -0
  281. package/dist/components/organisms/CanvasEditor/CanvasEditorStory.svelte.d.ts +3 -0
  282. package/dist/components/organisms/DashboardBuilderPage/DashboardBuilderPage.svelte.d.ts +1 -1
  283. package/dist/components/organisms/DesktopShell/DesktopShell.svelte.d.ts +1 -1
  284. package/dist/components/organisms/EditorShell/EditorShell.svelte +162 -57
  285. package/dist/components/organisms/EditorShell/EditorShell.svelte.d.ts +21 -1
  286. package/dist/components/organisms/FileUploader/FileUploader.stories.d.ts +10 -0
  287. package/dist/components/organisms/FileUploader/FileUploader.stories.js +21 -0
  288. package/dist/components/organisms/FileUploader/FileUploader.svelte +127 -25
  289. package/dist/components/organisms/FileUploader/FileUploader.svelte.d.ts +20 -0
  290. package/dist/components/organisms/FileUploader/FileUploaderStory.svelte +7 -1
  291. package/dist/components/organisms/FileUploader/FileUploaderStory.svelte.d.ts +3 -0
  292. package/dist/components/organisms/ImportWizard/ImportWizard.stories.js +8 -0
  293. package/dist/components/organisms/ImportWizard/ImportWizard.svelte +209 -0
  294. package/dist/components/organisms/ImportWizard/ImportWizard.svelte.d.ts +22 -0
  295. package/dist/components/organisms/ImportWizard/ImportWizardStory.svelte +16 -0
  296. package/dist/components/organisms/ImportWizard/ImportWizardStory.svelte.d.ts +18 -0
  297. package/dist/components/organisms/VideoEditor/VideoEditor.stories.d.ts +12 -0
  298. package/dist/components/organisms/VideoEditor/VideoEditor.stories.js +9 -0
  299. package/dist/components/organisms/VideoEditor/VideoEditor.svelte +1687 -0
  300. package/dist/components/organisms/VideoEditor/VideoEditor.svelte.d.ts +14 -0
  301. package/dist/components/organisms/VideoEditor/VideoEditorStory.svelte +11 -0
  302. package/dist/components/organisms/VideoEditor/VideoEditorStory.svelte.d.ts +3 -0
  303. package/dist/components/templates/AudioEditorTemplate/AudioEditorTemplate.stories.d.ts +12 -0
  304. package/dist/components/templates/AudioEditorTemplate/AudioEditorTemplate.stories.js +9 -0
  305. package/dist/components/templates/AudioEditorTemplate/AudioEditorTemplate.svelte +22 -0
  306. package/dist/components/templates/AudioEditorTemplate/AudioEditorTemplate.svelte.d.ts +13 -0
  307. package/dist/components/templates/AudioEditorTemplate/AudioEditorTemplateStory.svelte +8 -0
  308. package/dist/components/templates/AudioEditorTemplate/AudioEditorTemplateStory.svelte.d.ts +3 -0
  309. package/dist/components/templates/CanvasEditorTemplate/CanvasEditorTemplate.stories.d.ts +12 -0
  310. package/dist/components/templates/CanvasEditorTemplate/CanvasEditorTemplate.stories.js +9 -0
  311. package/dist/components/templates/CanvasEditorTemplate/CanvasEditorTemplate.svelte +32 -0
  312. package/dist/components/templates/CanvasEditorTemplate/CanvasEditorTemplate.svelte.d.ts +17 -0
  313. package/dist/components/templates/CanvasEditorTemplate/CanvasEditorTemplateStory.svelte +21 -0
  314. package/dist/components/templates/CanvasEditorTemplate/CanvasEditorTemplateStory.svelte.d.ts +3 -0
  315. package/dist/components/templates/VideoEditorTemplate/VideoEditorTemplate.stories.d.ts +12 -0
  316. package/dist/components/templates/VideoEditorTemplate/VideoEditorTemplate.stories.js +9 -0
  317. package/dist/components/templates/VideoEditorTemplate/VideoEditorTemplate.svelte +22 -0
  318. package/dist/components/templates/VideoEditorTemplate/VideoEditorTemplate.svelte.d.ts +13 -0
  319. package/dist/components/templates/VideoEditorTemplate/VideoEditorTemplateStory.svelte +8 -0
  320. package/dist/components/templates/VideoEditorTemplate/VideoEditorTemplateStory.svelte.d.ts +3 -0
  321. package/dist/index.d.ts +91 -1
  322. package/dist/index.js +64 -0
  323. package/dist/types/xyflow-svelte.d.ts +62 -0
  324. package/dist/utils/audioProject.d.ts +19 -0
  325. package/dist/utils/audioProject.js +70 -0
  326. package/dist/utils/blogDocument.d.ts +175 -0
  327. package/dist/utils/blogDocument.js +220 -0
  328. package/dist/utils/blueprintRuntime.d.ts +34 -0
  329. package/dist/utils/blueprintRuntime.js +289 -0
  330. package/dist/utils/canvasDocument.d.ts +239 -0
  331. package/dist/utils/canvasDocument.js +443 -0
  332. package/dist/utils/canvasExport.d.ts +10 -0
  333. package/dist/utils/canvasExport.js +469 -0
  334. package/dist/utils/canvasHierarchy.d.ts +189 -0
  335. package/dist/utils/canvasHierarchy.js +674 -0
  336. package/dist/utils/canvasHistory.d.ts +19 -0
  337. package/dist/utils/canvasHistory.js +48 -0
  338. package/dist/utils/canvasWidget.d.ts +81 -0
  339. package/dist/utils/canvasWidget.js +597 -0
  340. package/dist/utils/mediaTime.d.ts +26 -0
  341. package/dist/utils/mediaTime.js +76 -0
  342. package/dist/utils/mediaTracks.d.ts +215 -0
  343. package/dist/utils/mediaTracks.js +798 -0
  344. package/dist/utils/nodeGraph.d.ts +354 -0
  345. package/dist/utils/nodeGraph.js +1453 -0
  346. package/dist/utils/queryBridge.d.ts +18 -0
  347. package/dist/utils/queryBridge.js +118 -0
  348. package/dist/utils/videoSequence.d.ts +13 -0
  349. package/dist/utils/videoSequence.js +94 -0
  350. package/package.json +5 -2
@@ -7,9 +7,12 @@ declare const meta: {
7
7
  accept?: string;
8
8
  variant?: "multiple" | "single" | "avatar";
9
9
  view?: "list" | "grid";
10
+ layout?: "horizontal" | "vertical" | "compact";
10
11
  showViewToggle?: boolean;
11
12
  maxSizeMb?: number;
12
13
  disabled?: boolean;
14
+ src?: string;
15
+ srcName?: string;
13
16
  }, {}, "">;
14
17
  tags: string[];
15
18
  argTypes: {
@@ -30,6 +33,10 @@ declare const meta: {
30
33
  control: "select";
31
34
  options: string[];
32
35
  };
36
+ layout: {
37
+ control: "select";
38
+ options: string[];
39
+ };
33
40
  showViewToggle: {
34
41
  control: "boolean";
35
42
  };
@@ -46,6 +53,7 @@ declare const meta: {
46
53
  accept: string;
47
54
  variant: "multiple";
48
55
  view: "list";
56
+ layout: "horizontal";
49
57
  showViewToggle: true;
50
58
  maxSizeMb: number;
51
59
  disabled: false;
@@ -55,6 +63,8 @@ export default meta;
55
63
  type Story = StoryObj<typeof meta>;
56
64
  export declare const Multiple: Story;
57
65
  export declare const GridView: Story;
66
+ export declare const VerticalSidebar: Story;
67
+ export declare const Compact: Story;
58
68
  export declare const SingleFile: Story;
59
69
  export declare const Avatar: Story;
60
70
  export declare const Disabled: Story;
@@ -9,6 +9,7 @@ const meta = {
9
9
  accept: { control: 'text' },
10
10
  variant: { control: 'select', options: ['multiple', 'single', 'avatar'] },
11
11
  view: { control: 'select', options: ['list', 'grid'] },
12
+ layout: { control: 'select', options: ['horizontal', 'vertical', 'compact'] },
12
13
  showViewToggle: { control: 'boolean' },
13
14
  maxSizeMb: { control: 'number' },
14
15
  disabled: { control: 'boolean' }
@@ -19,6 +20,7 @@ const meta = {
19
20
  accept: '*',
20
21
  variant: 'multiple',
21
22
  view: 'list',
23
+ layout: 'horizontal',
22
24
  showViewToggle: true,
23
25
  maxSizeMb: 10,
24
26
  disabled: false
@@ -37,10 +39,29 @@ export const GridView = {
37
39
  helperText: 'Images only · max 10MB'
38
40
  }
39
41
  };
42
+ export const VerticalSidebar = {
43
+ args: {
44
+ label: 'Upload',
45
+ variant: 'multiple',
46
+ layout: 'vertical',
47
+ accept: 'image/*,video/*,audio/*',
48
+ helperText: 'Image, video or audio',
49
+ showViewToggle: false
50
+ }
51
+ };
52
+ export const Compact = {
53
+ args: {
54
+ label: 'Add more',
55
+ variant: 'multiple',
56
+ layout: 'compact',
57
+ helperText: 'Drop or browse'
58
+ }
59
+ };
40
60
  export const SingleFile = {
41
61
  args: {
42
62
  label: 'Cover image',
43
63
  variant: 'single',
64
+ layout: 'vertical',
44
65
  accept: 'image/*',
45
66
  helperText: 'PNG or JPG · max 10MB'
46
67
  }
@@ -1,9 +1,11 @@
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
+ /** Dropzone chrome layout (ignored for avatar / filled single preview). */
8
+ type UploaderLayout = 'horizontal' | 'vertical' | 'compact';
7
9
 
8
10
  interface FileItem {
9
11
  file: File;
@@ -21,11 +23,29 @@
21
23
  accept?: string;
22
24
  variant?: UploaderVariant;
23
25
  view?: UploaderView;
26
+ /**
27
+ * Empty dropzone orientation.
28
+ * - `horizontal` — icon + text in a row (default)
29
+ * - `vertical` — stacked, better for narrow sidebars
30
+ * - `compact` — tight horizontal strip
31
+ */
32
+ layout?: UploaderLayout;
24
33
  showViewToggle?: boolean;
34
+ /** When false, only the dropzone is shown (parent owns the file list). */
35
+ showFileList?: boolean;
25
36
  maxSizeMb?: number;
26
37
  disabled?: boolean;
38
+ /**
39
+ * External preview URL for `single` / `avatar` when no File is selected yet
40
+ * (e.g. existing remote image in an editor inspector).
41
+ */
42
+ src?: string;
43
+ /** Display name when using `src` without a File */
44
+ srcName?: string;
27
45
  class?: string;
28
46
  onchange?: (files: File[]) => void;
47
+ /** Fired when the user clears the current file / src preview */
48
+ onclear?: () => void;
29
49
  }
30
50
 
31
51
  let {
@@ -35,11 +55,16 @@
35
55
  accept = 'image/*',
36
56
  variant = 'multiple',
37
57
  view = $bindable('list'),
58
+ layout = 'horizontal',
38
59
  showViewToggle = true,
60
+ showFileList = true,
39
61
  maxSizeMb = 10,
40
62
  disabled = false,
63
+ src = '',
64
+ srcName = '',
41
65
  class: className = '',
42
- onchange
66
+ onchange,
67
+ onclear
43
68
  }: FileUploaderProps = $props();
44
69
 
45
70
  let isDragging = $state(false);
@@ -51,6 +76,13 @@
51
76
  const isMultiple = $derived(variant === 'multiple');
52
77
  const hasFile = $derived(fileList.length > 0);
53
78
  const primaryFile = $derived(fileList[0] as FileItem | undefined);
79
+ const externalSrc = $derived(src?.trim() || '');
80
+ const showSinglePreview = $derived(
81
+ variant === 'single' && (!!primaryFile || !!externalSrc)
82
+ );
83
+ const singlePreviewUrl = $derived(primaryFile?.previewUrl || externalSrc);
84
+ const singlePreviewName = $derived(primaryFile?.name || srcName || 'Media');
85
+ const singlePreviewMeta = $derived(primaryFile?.sizeFormatted || '');
54
86
 
55
87
  const labelId = $derived(`${id}-label`);
56
88
  const helperId = $derived(`${id}-helper`);
@@ -61,6 +93,20 @@
61
93
  variant === 'avatar' && (!accept || accept === '*') ? 'image/*' : accept
62
94
  );
63
95
 
96
+ const singleIsVideo = $derived(
97
+ primaryFile?.kind === 'video' ||
98
+ (!primaryFile &&
99
+ !!externalSrc &&
100
+ (resolvedAccept.includes('video') || /\.(mp4|webm|mov|m4v)(\?|$)/i.test(externalSrc)))
101
+ );
102
+ const singleIsAudio = $derived(
103
+ primaryFile?.kind === 'audio' ||
104
+ (!primaryFile &&
105
+ !!externalSrc &&
106
+ (resolvedAccept.includes('audio') || /\.(mp3|wav|ogg|m4a|aac|flac)(\?|$)/i.test(externalSrc)))
107
+ );
108
+ const dropLayout = $derived(layout === 'compact' ? 'compact' : layout);
109
+
64
110
  function formatBytes(bytes: number): string {
65
111
  if (bytes === 0) return '0 B';
66
112
  const k = 1024;
@@ -71,6 +117,8 @@
71
117
 
72
118
  function getFileKind(file: File): FileKind {
73
119
  if (file.type.startsWith('image/')) return 'image';
120
+ if (file.type.startsWith('video/')) return 'video';
121
+ if (file.type.startsWith('audio/')) return 'audio';
74
122
  if (file.type === 'application/pdf' || file.name.toLowerCase().endsWith('.pdf')) return 'pdf';
75
123
  if (
76
124
  file.type.includes('document') ||
@@ -86,6 +134,8 @@
86
134
  if (kind === 'pdf') return 'PDF';
87
135
  if (kind === 'doc') return 'DOC';
88
136
  if (kind === 'image') return 'IMG';
137
+ if (kind === 'video') return 'VID';
138
+ if (kind === 'audio') return 'AUD';
89
139
  return 'FILE';
90
140
  }
91
141
 
@@ -93,6 +143,8 @@
93
143
  if (kind === 'pdf') return 'bg-red-50 text-red-600 dark:bg-red-950/50 dark:text-red-300';
94
144
  if (kind === 'doc') return 'bg-sky-50 text-sky-700 dark:bg-sky-950/50 dark:text-sky-300';
95
145
  if (kind === 'image') return 'bg-brand-50 text-brand-700 dark:bg-brand-950/50 dark:text-brand-300';
146
+ if (kind === 'video') return 'bg-violet-50 text-violet-700 dark:bg-violet-950/50 dark:text-violet-300';
147
+ if (kind === 'audio') return 'bg-emerald-50 text-emerald-700 dark:bg-emerald-950/50 dark:text-emerald-300';
96
148
  return 'bg-surface-overlay text-secondary';
97
149
  }
98
150
 
@@ -141,13 +193,14 @@
141
193
  }
142
194
 
143
195
  const kind = getFileKind(file);
196
+ const needsUrl = kind === 'image' || kind === 'video' || kind === 'audio';
144
197
  nextItems.push({
145
198
  file,
146
199
  id: `${file.name}-${file.size}-${file.lastModified}-${Math.random().toString(36).slice(2, 7)}`,
147
200
  name: file.name,
148
201
  sizeFormatted: formatBytes(file.size),
149
202
  kind,
150
- previewUrl: kind === 'image' ? URL.createObjectURL(file) : undefined
203
+ previewUrl: needsUrl ? URL.createObjectURL(file) : undefined
151
204
  });
152
205
  }
153
206
 
@@ -172,6 +225,10 @@
172
225
  }
173
226
 
174
227
  onchange?.(fileList.map((item) => item.file));
228
+ if (!showFileList && isMultiple) {
229
+ revokePreviews(fileList);
230
+ fileList = [];
231
+ }
175
232
  if (fileInputNode) fileInputNode.value = '';
176
233
  }
177
234
 
@@ -181,6 +238,17 @@
181
238
  fileList = fileList.filter((item) => item.id !== id);
182
239
  errorMessage = '';
183
240
  onchange?.(fileList.map((item) => item.file));
241
+ if (fileList.length === 0) onclear?.();
242
+ }
243
+
244
+ function clearSingle() {
245
+ if (primaryFile) {
246
+ removeFile(primaryFile.id);
247
+ return;
248
+ }
249
+ errorMessage = '';
250
+ onchange?.([]);
251
+ onclear?.();
184
252
  }
185
253
 
186
254
  function clearAll() {
@@ -238,7 +306,9 @@
238
306
  </div>
239
307
  {/snippet}
240
308
 
241
- {#snippet dropzone(compact = false)}
309
+ {#snippet dropzone(forceCompact = false)}
310
+ {@const compact = forceCompact || dropLayout === 'compact'}
311
+ {@const vertical = !compact && dropLayout === 'vertical'}
242
312
  <!-- svelte-ignore a11y_no_static_element_interactions -->
243
313
  <div
244
314
  role="button"
@@ -263,18 +333,27 @@
263
333
  class={[
264
334
  'relative overflow-hidden border border-dashed transition-colors duration-150 outline-none',
265
335
  'focus-visible:ring-2 focus-visible:ring-brand-500/30 focus-visible:border-brand-500',
266
- compact ? 'rounded-xl' : 'rounded-xl',
336
+ 'rounded-xl',
267
337
  isDragging
268
338
  ? 'border-brand-500 bg-brand-500/5 dark:bg-brand-950/40'
269
339
  : 'border-border bg-surface-elevated hover:border-border-strong hover:bg-surface-overlay/60',
270
340
  disabled ? 'opacity-50 cursor-not-allowed' : 'cursor-pointer'
271
341
  ]}
272
342
  >
273
- <div class={['flex items-center gap-4', compact ? 'px-4 py-3.5' : 'px-4 py-5 sm:px-5']}>
343
+ <div
344
+ class={[
345
+ 'flex',
346
+ vertical
347
+ ? 'flex-col items-center gap-2 px-3 py-5 text-center'
348
+ : compact
349
+ ? 'flex-row items-center gap-3 px-3 py-2.5'
350
+ : 'flex-row items-center gap-4 px-4 py-5 sm:px-5'
351
+ ]}
352
+ >
274
353
  <div
275
354
  class={[
276
355
  'flex shrink-0 items-center justify-center rounded-lg transition-colors duration-150',
277
- compact ? 'h-9 w-9' : 'h-11 w-11',
356
+ vertical ? 'h-10 w-10' : compact ? 'h-8 w-8' : 'h-11 w-11',
278
357
  isDragging
279
358
  ? 'bg-brand-600 text-white'
280
359
  : 'bg-brand-100 text-brand-700 dark:bg-brand-500/15 dark:text-brand-300'
@@ -282,7 +361,7 @@
282
361
  aria-hidden="true"
283
362
  >
284
363
  <svg
285
- class={compact ? 'h-4 w-4' : 'h-5 w-5'}
364
+ class={compact ? 'h-3.5 w-3.5' : 'h-5 w-5'}
286
365
  fill="none"
287
366
  viewBox="0 0 24 24"
288
367
  stroke="currentColor"
@@ -296,26 +375,35 @@
296
375
  </svg>
297
376
  </div>
298
377
 
299
- <div class="min-w-0 flex-1 text-left">
300
- <p class={['font-medium text-primary', compact ? 'text-xs' : 'text-sm']}>
378
+ <div class={['min-w-0', vertical ? 'w-full' : 'flex-1 text-left']}>
379
+ <p
380
+ class={[
381
+ 'font-medium text-primary',
382
+ compact || vertical ? 'text-xs' : 'text-sm',
383
+ vertical && 'text-center'
384
+ ]}
385
+ >
301
386
  {#if isDragging}
302
387
  Drop files to upload
303
388
  {:else}
304
- Drop files here or
389
+ Drop files or
305
390
  <span class="text-brand-700 dark:text-brand-300"> browse</span>
306
391
  {/if}
307
392
  </p>
308
393
  {#if helperText}
309
394
  <p
310
395
  id={helperId}
311
- class="mt-0.5 text-xs text-secondary leading-relaxed"
396
+ class={[
397
+ 'mt-0.5 text-[11px] leading-relaxed text-secondary',
398
+ vertical && 'text-center'
399
+ ]}
312
400
  >
313
401
  {helperText}
314
402
  </p>
315
403
  {/if}
316
404
  </div>
317
405
 
318
- {#if !disabled && !compact}
406
+ {#if !disabled && !compact && !vertical}
319
407
  <span
320
408
  class="hidden sm:inline-flex shrink-0 items-center rounded-lg border border-border bg-surface-elevated px-3 py-1.5 text-xs font-medium text-primary pointer-events-none"
321
409
  >
@@ -516,7 +604,7 @@
516
604
  </div>
517
605
 
518
606
  <!-- Single variant: preview card with edit -->
519
- {:else if variant === 'single' && primaryFile}
607
+ {:else if showSinglePreview}
520
608
  <div
521
609
  class={[
522
610
  'overflow-hidden rounded-xl border border-border bg-surface-elevated shadow-sm',
@@ -530,11 +618,23 @@
530
618
  aria-labelledby={label ? labelId : undefined}
531
619
  >
532
620
  <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" />
621
+ {#if singlePreviewUrl && singleIsVideo}
622
+ <video
623
+ src={singlePreviewUrl}
624
+ class="h-full w-full object-cover"
625
+ muted
626
+ playsinline
627
+ ></video>
628
+ {:else if singlePreviewUrl && singleIsAudio}
629
+ <div class="flex h-full w-full flex-col items-center justify-center gap-3 px-4">
630
+ {@render fileBadge('audio', 'h-14 w-14 rounded-xl text-xs')}
631
+ <audio src={singlePreviewUrl} controls class="w-full max-w-xs"></audio>
632
+ </div>
633
+ {:else if singlePreviewUrl}
634
+ <img src={singlePreviewUrl} alt="" class="h-full w-full object-cover" />
535
635
  {:else}
536
636
  <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')}
637
+ {@render fileBadge(primaryFile?.kind ?? 'other', 'h-14 w-14 rounded-xl text-xs')}
538
638
  </div>
539
639
  {/if}
540
640
 
@@ -556,9 +656,9 @@
556
656
  </button>
557
657
  <button
558
658
  type="button"
559
- onclick={() => removeFile(primaryFile.id)}
659
+ onclick={clearSingle}
560
660
  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}`}
661
+ aria-label={`Remove ${singlePreviewName}`}
562
662
  >
563
663
  <svg class="h-3.5 w-3.5" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2">
564
664
  <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12" />
@@ -570,8 +670,10 @@
570
670
 
571
671
  <div class="flex items-center justify-between gap-3 border-t border-border px-4 py-3">
572
672
  <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>
673
+ <p class="truncate text-sm font-medium text-primary">{singlePreviewName}</p>
674
+ {#if singlePreviewMeta}
675
+ <p class="text-xs text-secondary">{singlePreviewMeta}</p>
676
+ {/if}
575
677
  </div>
576
678
  {#if helperText}
577
679
  <p id={helperId} class="shrink-0 text-xs text-secondary">{helperText}</p>
@@ -579,8 +681,8 @@
579
681
  </div>
580
682
  </div>
581
683
 
582
- <!-- Default / empty single: dropzone -->
583
- {:else}
684
+ <!-- Dropzone: hide the big one when multiple already has files (compact “add more” below) -->
685
+ {:else if !(isMultiple && hasFile && showFileList)}
584
686
  {@render dropzone()}
585
687
  {/if}
586
688
 
@@ -588,8 +690,8 @@
588
690
  <p id={errorId} class="text-xs text-red-600 dark:text-red-400" role="alert">{errorMessage}</p>
589
691
  {/if}
590
692
 
591
- <!-- Multiple file cards -->
592
- {#if isMultiple && hasFile}
693
+ <!-- Multiple file cards (optional — MediaAssetBrowser owns its own grid) -->
694
+ {#if isMultiple && hasFile && showFileList}
593
695
  {#if view === 'grid'}
594
696
  <ul class="grid grid-cols-2 gap-2.5 sm:grid-cols-3" aria-label="Selected files">
595
697
  {#each fileList as item (item.id)}
@@ -1,5 +1,7 @@
1
1
  type UploaderVariant = 'multiple' | 'single' | 'avatar';
2
2
  type UploaderView = 'list' | 'grid';
3
+ /** Dropzone chrome layout (ignored for avatar / filled single preview). */
4
+ type UploaderLayout = 'horizontal' | 'vertical' | 'compact';
3
5
  interface FileUploaderProps {
4
6
  id?: string;
5
7
  label?: string;
@@ -7,11 +9,29 @@ interface FileUploaderProps {
7
9
  accept?: string;
8
10
  variant?: UploaderVariant;
9
11
  view?: UploaderView;
12
+ /**
13
+ * Empty dropzone orientation.
14
+ * - `horizontal` — icon + text in a row (default)
15
+ * - `vertical` — stacked, better for narrow sidebars
16
+ * - `compact` — tight horizontal strip
17
+ */
18
+ layout?: UploaderLayout;
10
19
  showViewToggle?: boolean;
20
+ /** When false, only the dropzone is shown (parent owns the file list). */
21
+ showFileList?: boolean;
11
22
  maxSizeMb?: number;
12
23
  disabled?: boolean;
24
+ /**
25
+ * External preview URL for `single` / `avatar` when no File is selected yet
26
+ * (e.g. existing remote image in an editor inspector).
27
+ */
28
+ src?: string;
29
+ /** Display name when using `src` without a File */
30
+ srcName?: string;
13
31
  class?: string;
14
32
  onchange?: (files: File[]) => void;
33
+ /** Fired when the user clears the current file / src preview */
34
+ onclear?: () => void;
15
35
  }
16
36
  declare const FileUploader: import("svelte").Component<FileUploaderProps, {}, "view">;
17
37
  type FileUploader = ReturnType<typeof FileUploader>;
@@ -7,21 +7,27 @@
7
7
  accept?: string;
8
8
  variant?: 'multiple' | 'single' | 'avatar';
9
9
  view?: 'list' | 'grid';
10
+ layout?: 'horizontal' | 'vertical' | 'compact';
10
11
  showViewToggle?: boolean;
11
12
  maxSizeMb?: number;
12
13
  disabled?: boolean;
14
+ src?: string;
15
+ srcName?: string;
13
16
  }>();
14
17
  </script>
15
18
 
16
- <div class="w-96 max-w-full">
19
+ <div class={['max-w-full', props.layout === 'vertical' ? 'w-64' : 'w-96']}>
17
20
  <FileUploader
18
21
  label={props.label ?? 'Project Attachments'}
19
22
  helperText={props.helperText ?? 'PNG, JPG, PDF or DOCX (max 10MB)'}
20
23
  accept={props.accept ?? '*'}
21
24
  variant={props.variant ?? 'multiple'}
22
25
  view={props.view ?? 'list'}
26
+ layout={props.layout ?? 'horizontal'}
23
27
  showViewToggle={props.showViewToggle ?? true}
24
28
  maxSizeMb={props.maxSizeMb ?? 10}
25
29
  disabled={props.disabled ?? false}
30
+ src={props.src ?? ''}
31
+ srcName={props.srcName ?? ''}
26
32
  />
27
33
  </div>
@@ -4,9 +4,12 @@ type $$ComponentProps = {
4
4
  accept?: string;
5
5
  variant?: 'multiple' | 'single' | 'avatar';
6
6
  view?: 'list' | 'grid';
7
+ layout?: 'horizontal' | 'vertical' | 'compact';
7
8
  showViewToggle?: boolean;
8
9
  maxSizeMb?: number;
9
10
  disabled?: boolean;
11
+ src?: string;
12
+ srcName?: string;
10
13
  };
11
14
  declare const FileUploaderStory: import("svelte").Component<$$ComponentProps, {}, "">;
12
15
  type FileUploaderStory = ReturnType<typeof FileUploaderStory>;
@@ -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 = {};