@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
@@ -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 TimeRulerStory: $$__sveltets_2_IsomorphicComponent<Record<string, never>, {
15
+ [evt: string]: CustomEvent<any>;
16
+ }, {}, {}, string>;
17
+ type TimeRulerStory = InstanceType<typeof TimeRulerStory>;
18
+ export default TimeRulerStory;
@@ -76,7 +76,7 @@
76
76
  <!-- svelte-ignore a11y_no_static_element_interactions -->
77
77
  <span
78
78
  bind:this={triggerEl}
79
- class={['inline-flex min-w-0 max-w-full', className]}
79
+ class={['inline-flex shrink-0', className]}
80
80
  onmouseenter={show}
81
81
  onmouseleave={hide}
82
82
  onfocusin={show}
@@ -0,0 +1,8 @@
1
+ import TrimHandleStory from './TrimHandleStory.svelte';
2
+ const meta = {
3
+ title: 'Atoms/TrimHandle',
4
+ component: TrimHandleStory,
5
+ tags: ['autodocs']
6
+ };
7
+ export default meta;
8
+ export const Default = {};
@@ -0,0 +1,63 @@
1
+ <script lang="ts">
2
+ export type TrimHandleSide = 'start' | 'end';
3
+
4
+ interface TrimHandleProps {
5
+ side?: TrimHandleSide;
6
+ disabled?: boolean;
7
+ class?: string;
8
+ ondragstart?: (e: PointerEvent) => void;
9
+ ondrag?: (e: PointerEvent) => void;
10
+ ondragend?: (e: PointerEvent) => void;
11
+ }
12
+
13
+ let {
14
+ side = 'start',
15
+ disabled = false,
16
+ class: className = '',
17
+ ondragstart,
18
+ ondrag,
19
+ ondragend
20
+ }: TrimHandleProps = $props();
21
+
22
+ function onPointerDown(e: PointerEvent) {
23
+ if (disabled) return;
24
+ e.stopPropagation();
25
+ (e.currentTarget as HTMLElement).setPointerCapture(e.pointerId);
26
+ ondragstart?.(e);
27
+ }
28
+
29
+ function onPointerMove(e: PointerEvent) {
30
+ if (disabled) return;
31
+ if (!(e.currentTarget as HTMLElement).hasPointerCapture(e.pointerId)) return;
32
+ ondrag?.(e);
33
+ }
34
+
35
+ function onPointerUp(e: PointerEvent) {
36
+ if (disabled) return;
37
+ (e.currentTarget as HTMLElement).releasePointerCapture(e.pointerId);
38
+ ondragend?.(e);
39
+ }
40
+ </script>
41
+
42
+ <button
43
+ type="button"
44
+ aria-label={side === 'start' ? 'Trim start' : 'Trim end'}
45
+ disabled={disabled}
46
+ class={[
47
+ 'absolute top-0 z-10 h-full w-2 touch-none border-0 bg-transparent p-0',
48
+ 'cursor-ew-resize hover:bg-white/30',
49
+ side === 'start' ? 'left-0' : 'right-0',
50
+ disabled && 'pointer-events-none opacity-40',
51
+ className
52
+ ]}
53
+ onpointerdown={onPointerDown}
54
+ onpointermove={onPointerMove}
55
+ onpointerup={onPointerUp}
56
+ >
57
+ <span
58
+ class="absolute top-1/2 h-4 w-0.5 -translate-y-1/2 rounded-full bg-white/90"
59
+ style:left={side === 'start' ? '3px' : 'auto'}
60
+ style:right={side === 'end' ? '3px' : 'auto'}
61
+ aria-hidden="true"
62
+ ></span>
63
+ </button>
@@ -0,0 +1,12 @@
1
+ export type TrimHandleSide = 'start' | 'end';
2
+ interface TrimHandleProps {
3
+ side?: TrimHandleSide;
4
+ disabled?: boolean;
5
+ class?: string;
6
+ ondragstart?: (e: PointerEvent) => void;
7
+ ondrag?: (e: PointerEvent) => void;
8
+ ondragend?: (e: PointerEvent) => void;
9
+ }
10
+ declare const TrimHandle: import("svelte").Component<TrimHandleProps, {}, "">;
11
+ type TrimHandle = ReturnType<typeof TrimHandle>;
12
+ export default TrimHandle;
@@ -0,0 +1,11 @@
1
+ <script lang="ts">
2
+ import TrimHandle from './TrimHandle.svelte';
3
+ </script>
4
+
5
+ <div class="relative h-10 w-64 rounded-md bg-brand-500">
6
+ <TrimHandle side="start" />
7
+ <TrimHandle side="end" />
8
+ <span class="pointer-events-none absolute inset-0 flex items-center justify-center text-xs text-white">
9
+ Clip
10
+ </span>
11
+ </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 TrimHandleStory: $$__sveltets_2_IsomorphicComponent<Record<string, never>, {
15
+ [evt: string]: CustomEvent<any>;
16
+ }, {}, {}, string>;
17
+ type TrimHandleStory = InstanceType<typeof TrimHandleStory>;
18
+ export default TrimHandleStory;
@@ -0,0 +1,9 @@
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
+ };
7
+ export default meta;
8
+ type Story = StoryObj<typeof meta>;
9
+ export declare const Default: Story;
@@ -0,0 +1,8 @@
1
+ import AiAssistPanelStory from './AiAssistPanelStory.svelte';
2
+ const meta = {
3
+ title: 'Molecules/AiAssistPanel',
4
+ component: AiAssistPanelStory,
5
+ tags: ['autodocs']
6
+ };
7
+ export default meta;
8
+ export const Default = {};
@@ -0,0 +1,102 @@
1
+ <script lang="ts">
2
+ import PromptInput from '../PromptInput/PromptInput.svelte';
3
+ import ChatBubble from '../ChatBubble/ChatBubble.svelte';
4
+ import Button from '../../atoms/Button/Button.svelte';
5
+
6
+ export type AiAssistRole = 'user' | 'assistant' | 'system';
7
+
8
+ export interface AiAssistMessage {
9
+ id: string;
10
+ role: AiAssistRole;
11
+ content: string;
12
+ }
13
+
14
+ interface AiAssistPanelProps {
15
+ messages?: AiAssistMessage[];
16
+ snippets?: string[];
17
+ title?: string;
18
+ loading?: boolean;
19
+ placeholder?: string;
20
+ class?: string;
21
+ onsubmit?: (prompt: string) => void;
22
+ oninsert?: (text: string) => void;
23
+ onstop?: () => void;
24
+ }
25
+
26
+ let {
27
+ messages = $bindable<AiAssistMessage[]>([]),
28
+ snippets = [],
29
+ title = 'AI assist',
30
+ loading = false,
31
+ placeholder = 'Ask for help with this resource…',
32
+ class: className = '',
33
+ onsubmit,
34
+ oninsert,
35
+ onstop
36
+ }: AiAssistPanelProps = $props();
37
+
38
+ let draft = $state('');
39
+
40
+ function submit(value: string) {
41
+ const text = value.trim();
42
+ if (!text) return;
43
+ messages = [
44
+ ...messages,
45
+ { id: `m-${Date.now()}`, role: 'user', content: text }
46
+ ];
47
+ draft = '';
48
+ onsubmit?.(text);
49
+ }
50
+ </script>
51
+
52
+ <aside
53
+ class={[
54
+ 'flex h-full min-h-[360px] w-full max-w-md flex-col overflow-hidden rounded-xl border border-border bg-surface-elevated',
55
+ className
56
+ ]}
57
+ data-ai-assist-panel
58
+ >
59
+ <header class="border-b border-border px-3 py-2">
60
+ <p class="text-sm font-semibold text-primary">{title}</p>
61
+ </header>
62
+
63
+ {#if snippets.length}
64
+ <div class="flex flex-wrap gap-1 border-b border-border px-3 py-2">
65
+ {#each snippets as s (s)}
66
+ <Button size="sm" variant="secondary" onclick={() => oninsert?.(s)}>{s}</Button>
67
+ {/each}
68
+ </div>
69
+ {/if}
70
+
71
+ <div class="flex-1 space-y-3 overflow-auto p-3">
72
+ {#each messages as msg (msg.id)}
73
+ {#if msg.role === 'assistant'}
74
+ <div class="flex flex-col items-start gap-1">
75
+ <ChatBubble content={msg.content} side="left" />
76
+ {#if oninsert}
77
+ <Button size="sm" variant="ghost" onclick={() => oninsert?.(msg.content)}>
78
+ Insert
79
+ </Button>
80
+ {/if}
81
+ </div>
82
+ {:else if msg.role === 'system'}
83
+ <p class="text-center text-[11px] text-muted">{msg.content}</p>
84
+ {:else}
85
+ <ChatBubble content={msg.content} side="right" />
86
+ {/if}
87
+ {/each}
88
+ {#if !messages.length}
89
+ <p class="py-8 text-center text-sm text-muted">Ask anything to get started.</p>
90
+ {/if}
91
+ </div>
92
+
93
+ <div class="border-t border-border p-3">
94
+ <PromptInput
95
+ bind:value={draft}
96
+ {placeholder}
97
+ {loading}
98
+ onsubmit={submit}
99
+ onstop={onstop}
100
+ />
101
+ </div>
102
+ </aside>
@@ -0,0 +1,20 @@
1
+ export type AiAssistRole = 'user' | 'assistant' | 'system';
2
+ export interface AiAssistMessage {
3
+ id: string;
4
+ role: AiAssistRole;
5
+ content: string;
6
+ }
7
+ interface AiAssistPanelProps {
8
+ messages?: AiAssistMessage[];
9
+ snippets?: string[];
10
+ title?: string;
11
+ loading?: boolean;
12
+ placeholder?: string;
13
+ class?: string;
14
+ onsubmit?: (prompt: string) => void;
15
+ oninsert?: (text: string) => void;
16
+ onstop?: () => void;
17
+ }
18
+ declare const AiAssistPanel: import("svelte").Component<AiAssistPanelProps, {}, "messages">;
19
+ type AiAssistPanel = ReturnType<typeof AiAssistPanel>;
20
+ export default AiAssistPanel;
@@ -0,0 +1,34 @@
1
+ <script lang="ts">
2
+ import AiAssistPanel from './AiAssistPanel.svelte';
3
+ import type { AiAssistMessage } from './AiAssistPanel.svelte';
4
+
5
+ let messages = $state<AiAssistMessage[]>([
6
+ { id: '1', role: 'system', content: 'Context: ResourceStudio · customers' },
7
+ { id: '2', role: 'user', content: 'Write a filter for active VIP customers' },
8
+ {
9
+ id: '3',
10
+ role: 'assistant',
11
+ content: 'status:active AND tags:vip'
12
+ }
13
+ ]);
14
+
15
+ function onsubmit(prompt: string) {
16
+ messages = [
17
+ ...messages,
18
+ {
19
+ id: String(Date.now()),
20
+ role: 'assistant',
21
+ content: `Suggested: ${prompt.includes('filter') ? 'status:active' : 'Done.'}`
22
+ }
23
+ ];
24
+ }
25
+ </script>
26
+
27
+ <div class="flex justify-center p-4">
28
+ <AiAssistPanel
29
+ bind:messages
30
+ {onsubmit}
31
+ snippets={['Summarize', 'Fix types', 'Write test']}
32
+ oninsert={(t) => console.log('insert', t)}
33
+ />
34
+ </div>
@@ -0,0 +1,3 @@
1
+ declare const AiAssistPanelStory: import("svelte").Component<Record<string, never>, {}, "">;
2
+ type AiAssistPanelStory = ReturnType<typeof AiAssistPanelStory>;
3
+ export default AiAssistPanelStory;
@@ -2,6 +2,7 @@
2
2
  import type { Component, Snippet } from 'svelte';
3
3
  import Button from '../../atoms/Button/Button.svelte';
4
4
  import CloseButton from '../../atoms/CloseButton/CloseButton.svelte';
5
+ import Tooltip from '../../atoms/Tooltip/Tooltip.svelte';
5
6
  import DropdownMenu from '../DropdownMenu/DropdownMenu.svelte';
6
7
  import type { DropdownItem } from '../DropdownMenu/DropdownMenu.svelte';
7
8
  import Divider from '../../atoms/Divider/Divider.svelte';
@@ -45,6 +46,8 @@
45
46
  sticky?: boolean;
46
47
  /** Cap visible primary actions; rest go to More */
47
48
  maxPrimary?: number;
49
+ /** Tight icon toolbar — badge + icon actions, no selection copy */
50
+ compact?: boolean;
48
51
  showSelectAll?: boolean;
49
52
  showClear?: boolean;
50
53
  showHint?: boolean;
@@ -77,6 +80,7 @@
77
80
  tone = 'brand',
78
81
  sticky = true,
79
82
  maxPrimary = 3,
83
+ compact = false,
80
84
  showSelectAll = true,
81
85
  showClear = true,
82
86
  showHint = true,
@@ -95,9 +99,11 @@
95
99
 
96
100
  let pendingConfirm = $state<string | null>(null);
97
101
 
98
- const btnSize = $derived(size);
99
- const closeSize = $derived(size === 'xs' ? 'sm' : 'sm');
100
- const iconPx = $derived(size === 'xs' ? 'h-3.5 w-3.5' : 'h-3.5 w-3.5');
102
+ const btnSize = $derived(compact ? 'xs' : size);
103
+ const closeSize = $derived(btnSize === 'xs' ? 'sm' : 'sm');
104
+ const iconPx = $derived(btnSize === 'xs' ? 'h-3.5 w-3.5' : 'h-3.5 w-3.5');
105
+ const showCopy = $derived(!compact);
106
+ const hintEnabled = $derived(showHint && !compact);
101
107
 
102
108
  /** Split by overflow flag, then by maxPrimary */
103
109
  const split = $derived.by(() => {
@@ -129,11 +135,13 @@
129
135
  });
130
136
 
131
137
  const allSelected = $derived(total != null && total > 0 && count >= total);
132
- const canSelectAll = $derived(showSelectAll && !!onselectall && total != null && count > 0 && !allSelected);
133
- const canSelectNone = $derived(!!onselectnone && allSelected);
138
+ const canSelectAll = $derived(
139
+ showCopy && showSelectAll && !!onselectall && total != null && count > 0 && !allSelected
140
+ );
141
+ const canSelectNone = $derived(showCopy && !!onselectnone && allSelected);
134
142
 
135
143
  const resolvedHint = $derived.by(() => {
136
- if (!showHint) return '';
144
+ if (!hintEnabled) return '';
137
145
  if (pendingConfirm) {
138
146
  return `Confirm ${actions.find((a) => a.id === pendingConfirm)?.label ?? 'action'}?`;
139
147
  }
@@ -200,22 +208,28 @@
200
208
  >
201
209
  <div
202
210
  class={[
203
- 'pointer-events-auto flex w-full flex-col gap-2 border shadow-lg backdrop-blur-md',
211
+ 'pointer-events-auto flex border shadow-lg backdrop-blur-md',
204
212
  'ring-1 ring-black/5 dark:ring-white/10',
205
- placement === 'dock' &&
213
+ compact
214
+ ? 'w-auto max-w-[min(100%,36rem)] flex-row items-center gap-1.5 rounded-full border-border bg-surface-elevated/95 px-2 py-1.5'
215
+ : 'w-full flex-col gap-2',
216
+ !compact &&
217
+ placement === 'dock' &&
206
218
  'max-w-2xl rounded-xl border-border bg-surface-elevated/95 px-3 py-2 sm:flex-row sm:items-center sm:gap-3 sm:px-3.5',
207
- placement === 'inline' &&
219
+ !compact &&
220
+ placement === 'inline' &&
208
221
  'rounded-none border-x-0 border-b-0 border-border bg-surface-elevated/95 px-3 py-2 sm:flex-row sm:items-center'
209
222
  ]}
210
223
  >
211
- <div class="flex min-w-0 flex-1 items-center gap-2.5">
224
+ <div class={['flex min-w-0 items-center gap-2.5', compact ? 'shrink-0' : 'flex-1']}>
212
225
  {#if leading}
213
226
  {@render leading()}
214
227
  {:else}
215
228
  <span
216
229
  class={[
217
230
  'inline-flex shrink-0 items-center justify-center rounded-lg font-bold tabular-nums shadow-sm',
218
- size === 'xs' ? 'h-7 min-w-7 px-1.5 text-xs' : 'h-8 min-w-8 px-2 text-xs',
231
+ btnSize === 'xs' ? 'h-7 min-w-7 px-1.5 text-xs' : 'h-8 min-w-8 px-2 text-xs',
232
+ compact && 'rounded-full',
219
233
  countBadgeClass
220
234
  ]}
221
235
  aria-hidden="true"
@@ -224,46 +238,48 @@
224
238
  </span>
225
239
  {/if}
226
240
 
227
- <div class="flex min-w-0 flex-1 flex-col leading-tight">
228
- <p class="truncate text-xs font-semibold text-primary sm:text-sm">{selectionText}</p>
229
- {#if description}
230
- <p class="truncate text-[11px] text-muted">{description}</p>
231
- {:else if canSelectAll}
232
- <button
233
- type="button"
234
- class="w-fit text-left text-[11px] font-medium text-brand-600 hover:underline dark:text-brand-400"
235
- onclick={() => onselectall?.()}
236
- >
237
- Select all {total}
238
- </button>
239
- {:else if canSelectNone}
240
- <button
241
- type="button"
242
- class="w-fit text-left text-[11px] font-medium text-secondary hover:underline"
243
- onclick={() => onselectnone?.()}
244
- >
245
- Clear selection
246
- </button>
247
- {:else if resolvedHint}
248
- <p
249
- class={[
250
- 'text-[11px]',
251
- pendingConfirm ? 'text-amber-700 dark:text-amber-300' : 'text-muted'
252
- ]}
253
- >
254
- {resolvedHint}
255
- </p>
256
- {/if}
257
- </div>
241
+ {#if showCopy}
242
+ <div class="flex min-w-0 flex-1 flex-col leading-tight">
243
+ <p class="truncate text-xs font-semibold text-primary sm:text-sm">{selectionText}</p>
244
+ {#if description}
245
+ <p class="truncate text-[11px] text-muted">{description}</p>
246
+ {:else if canSelectAll}
247
+ <button
248
+ type="button"
249
+ class="w-fit text-left text-[11px] font-medium text-brand-600 hover:underline dark:text-brand-400"
250
+ onclick={() => onselectall?.()}
251
+ >
252
+ Select all {total}
253
+ </button>
254
+ {:else if canSelectNone}
255
+ <button
256
+ type="button"
257
+ class="w-fit text-left text-[11px] font-medium text-secondary hover:underline"
258
+ onclick={() => onselectnone?.()}
259
+ >
260
+ Clear selection
261
+ </button>
262
+ {:else if resolvedHint}
263
+ <p
264
+ class={[
265
+ 'text-[11px]',
266
+ pendingConfirm ? 'text-amber-700 dark:text-amber-300' : 'text-muted'
267
+ ]}
268
+ >
269
+ {resolvedHint}
270
+ </p>
271
+ {/if}
272
+ </div>
273
+ {/if}
258
274
 
259
275
  {#if extra}
260
- <div class="hidden items-center gap-1.5 sm:flex">
276
+ <div class={['items-center gap-1.5', compact ? 'flex' : 'hidden sm:flex']}>
261
277
  {@render extra()}
262
278
  </div>
263
279
  {/if}
264
280
  </div>
265
281
 
266
- <div class="flex flex-wrap items-center gap-1.5 sm:justify-end">
282
+ <div class={['flex items-center gap-1', compact ? 'shrink-0' : 'flex-wrap gap-1.5 sm:justify-end']}>
267
283
  {#if pendingConfirm}
268
284
  <Button size={btnSize} variant="ghost" {disabled} onclick={() => (pendingConfirm = null)}>
269
285
  Cancel
@@ -279,22 +295,42 @@
279
295
  {:else}
280
296
  {#each split.primary as action (action.id)}
281
297
  {@const Icon = action.icon}
282
- <Button
283
- size={btnSize}
284
- variant={action.variant ?? 'secondary'}
285
- disabled={disabled || action.disabled}
286
- loading={action.loading}
287
- aria-label={action.iconOnly ? action.label : undefined}
288
- title={action.tooltip ?? (action.iconOnly ? action.label : undefined)}
289
- onclick={() => run(action.id)}
290
- >
291
- {#if Icon}
292
- <Icon class={iconPx} strokeWidth={2} />
293
- {/if}
294
- {#if !action.iconOnly}
295
- {action.label}
296
- {/if}
297
- </Button>
298
+ {@const onlyIcon = compact ? !!Icon : !!action.iconOnly}
299
+ {@const tip = action.tooltip ?? (onlyIcon ? action.label : '')}
300
+ {#if tip}
301
+ <Tooltip content={tip} side="top">
302
+ <Button
303
+ size={btnSize}
304
+ variant={action.variant ?? 'secondary'}
305
+ disabled={disabled || action.disabled}
306
+ loading={action.loading}
307
+ aria-label={onlyIcon ? action.label : undefined}
308
+ onclick={() => run(action.id)}
309
+ >
310
+ {#if Icon}
311
+ <Icon class={iconPx} strokeWidth={2} />
312
+ {/if}
313
+ {#if !onlyIcon}
314
+ {action.label}
315
+ {/if}
316
+ </Button>
317
+ </Tooltip>
318
+ {:else}
319
+ <Button
320
+ size={btnSize}
321
+ variant={action.variant ?? 'secondary'}
322
+ disabled={disabled || action.disabled}
323
+ loading={action.loading}
324
+ onclick={() => run(action.id)}
325
+ >
326
+ {#if Icon}
327
+ <Icon class={iconPx} strokeWidth={2} />
328
+ {/if}
329
+ {#if !onlyIcon}
330
+ {action.label}
331
+ {/if}
332
+ </Button>
333
+ {/if}
298
334
  {/each}
299
335
 
300
336
  {#if overflowItems.length > 0}
@@ -311,7 +347,7 @@
311
347
  <span
312
348
  class={[
313
349
  'inline-flex items-center justify-center rounded-lg text-secondary hover:bg-surface-overlay hover:text-primary',
314
- size === 'xs' ? 'h-7 w-7' : 'h-8 w-8'
350
+ size === 'xs' || btnSize === 'xs' ? 'h-7 w-7' : 'h-8 w-8'
315
351
  ]}
316
352
  aria-hidden="true"
317
353
  >
@@ -40,6 +40,8 @@ interface BulkActionBarProps {
40
40
  sticky?: boolean;
41
41
  /** Cap visible primary actions; rest go to More */
42
42
  maxPrimary?: number;
43
+ /** Tight icon toolbar — badge + icon actions, no selection copy */
44
+ compact?: boolean;
43
45
  showSelectAll?: boolean;
44
46
  showClear?: boolean;
45
47
  showHint?: boolean;
@@ -0,0 +1,8 @@
1
+ import BulkEditPanelStory from './BulkEditPanelStory.svelte';
2
+ const meta = {
3
+ title: 'Molecules/BulkEditPanel',
4
+ component: BulkEditPanelStory,
5
+ tags: ['autodocs']
6
+ };
7
+ export default meta;
8
+ export const Default = {};