@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
@@ -0,0 +1,25 @@
1
+ import type { MediaClip, MediaTrack } from '../../../utils/mediaTracks.js';
2
+ interface ProgramMonitorProps {
3
+ width?: number;
4
+ height?: number;
5
+ background?: string;
6
+ currentTimeMs?: number;
7
+ playing?: boolean;
8
+ playbackRate?: number;
9
+ muted?: boolean;
10
+ volume?: number;
11
+ tracks?: MediaTrack[];
12
+ selectedClipIds?: string[];
13
+ /** When true, selected overlays can be dragged / resized on the frame */
14
+ editable?: boolean;
15
+ class?: string;
16
+ onselectclip?: (clipId: string, e: MouseEvent) => void;
17
+ onchangeclip?: (clip: MediaClip) => void;
18
+ /** Batch update (multi-drag). Falls back to repeated onchangeclip. */
19
+ onchangeclips?: (clips: MediaClip[]) => void;
20
+ onemptyclick?: () => void;
21
+ onselectionchange?: (clipIds: string[]) => void;
22
+ }
23
+ declare const ProgramMonitor: import("svelte").Component<ProgramMonitorProps, {}, "">;
24
+ type ProgramMonitor = ReturnType<typeof ProgramMonitor>;
25
+ export default ProgramMonitor;
@@ -0,0 +1,16 @@
1
+ <script lang="ts">
2
+ import ProgramMonitor from './ProgramMonitor.svelte';
3
+ import { createDemoVideoSequence } from '../../../utils/videoSequence.js';
4
+
5
+ const seq = createDemoVideoSequence();
6
+ </script>
7
+
8
+ <div class="max-w-xl">
9
+ <ProgramMonitor
10
+ width={seq.width}
11
+ height={seq.height}
12
+ tracks={seq.tracks}
13
+ currentTimeMs={5000}
14
+ background={seq.background}
15
+ />
16
+ </div>
@@ -0,0 +1,18 @@
1
+ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
2
+ new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
3
+ $$bindings?: Bindings;
4
+ } & Exports;
5
+ (internal: unknown, props: {
6
+ $$events?: Events;
7
+ $$slots?: Slots;
8
+ }): Exports & {
9
+ $set?: any;
10
+ $on?: any;
11
+ };
12
+ z_$$bindings?: Bindings;
13
+ }
14
+ declare const ProgramMonitorStory: $$__sveltets_2_IsomorphicComponent<Record<string, never>, {
15
+ [evt: string]: CustomEvent<any>;
16
+ }, {}, {}, string>;
17
+ type ProgramMonitorStory = InstanceType<typeof ProgramMonitorStory>;
18
+ export default ProgramMonitorStory;
@@ -1,6 +1,11 @@
1
1
  <script lang="ts">
2
2
  import type { Snippet } from 'svelte';
3
3
  import Text from '../../atoms/Text/Text.svelte';
4
+ import IconButton from '../../atoms/IconButton/IconButton.svelte';
5
+ import Tooltip from '../../atoms/Tooltip/Tooltip.svelte';
6
+ import Eye from '@lucide/svelte/icons/eye';
7
+ import EyeOff from '@lucide/svelte/icons/eye-off';
8
+ import RotateCcw from '@lucide/svelte/icons/rotate-ccw';
4
9
 
5
10
  interface PropertyFieldProps {
6
11
  label: string;
@@ -9,6 +14,16 @@
9
14
  disabled?: boolean;
10
15
  class?: string;
11
16
  children?: Snippet;
17
+ /** When set, shows eye toggle for exposing props on User Widgets. */
18
+ exposed?: boolean | null;
19
+ onexpose?: (exposed: boolean) => void;
20
+ /**
21
+ * Unreal-style: value differs from default. Shows amber reset control.
22
+ * Pass with `onreset` to enable.
23
+ */
24
+ modified?: boolean;
25
+ /** Reset this property to its default (UE details panel). */
26
+ onreset?: () => void;
12
27
  }
13
28
 
14
29
  const {
@@ -16,8 +31,14 @@
16
31
  labelWidth = '40%',
17
32
  disabled = false,
18
33
  class: className = '',
19
- children
34
+ children,
35
+ exposed = null,
36
+ onexpose,
37
+ modified = false,
38
+ onreset
20
39
  }: PropertyFieldProps = $props();
40
+
41
+ const canReset = $derived(!!onreset && modified && !disabled);
21
42
  </script>
22
43
 
23
44
  <div
@@ -29,8 +50,41 @@
29
50
  ]}
30
51
  style:grid-template-columns={`${labelWidth} minmax(0, 1fr)`}
31
52
  >
32
- <span class="truncate" title={label}>
33
- <Text size="xs" tone="secondary" as="span" class="font-medium">
53
+ <span class="flex min-w-0 items-center gap-0.5 truncate" title={label}>
54
+ {#if canReset}
55
+ <Tooltip content="Reset to default" side="top">
56
+ <IconButton
57
+ label="Reset to default"
58
+ size="xs"
59
+ class="text-amber-500 hover:bg-amber-500/10 hover:text-amber-600 dark:text-amber-400 dark:hover:text-amber-300"
60
+ onclick={() => onreset?.()}
61
+ >
62
+ <RotateCcw class="h-3 w-3" strokeWidth={2.5} />
63
+ </IconButton>
64
+ </Tooltip>
65
+ {:else if onreset}
66
+ <span class="inline-flex h-7 w-7 shrink-0" aria-hidden="true"></span>
67
+ {/if}
68
+ {#if exposed !== null}
69
+ <IconButton
70
+ label={exposed ? 'Hide from instances' : 'Expose on instances'}
71
+ size="xs"
72
+ class={exposed ? 'text-brand-600' : 'text-muted'}
73
+ onclick={() => onexpose?.(!exposed)}
74
+ >
75
+ {#if exposed}
76
+ <Eye class="h-3 w-3" />
77
+ {:else}
78
+ <EyeOff class="h-3 w-3" />
79
+ {/if}
80
+ </IconButton>
81
+ {/if}
82
+ <Text
83
+ size="xs"
84
+ tone={canReset ? 'primary' : 'secondary'}
85
+ as="span"
86
+ class={['truncate font-medium', canReset && 'text-amber-700 dark:text-amber-400']}
87
+ >
34
88
  {label}
35
89
  </Text>
36
90
  </span>
@@ -6,6 +6,16 @@ interface PropertyFieldProps {
6
6
  disabled?: boolean;
7
7
  class?: string;
8
8
  children?: Snippet;
9
+ /** When set, shows eye toggle for exposing props on User Widgets. */
10
+ exposed?: boolean | null;
11
+ onexpose?: (exposed: boolean) => void;
12
+ /**
13
+ * Unreal-style: value differs from default. Shows amber reset control.
14
+ * Pass with `onreset` to enable.
15
+ */
16
+ modified?: boolean;
17
+ /** Reset this property to its default (UE details panel). */
18
+ onreset?: () => void;
9
19
  }
10
20
  declare const PropertyField: import("svelte").Component<PropertyFieldProps, {}, "">;
11
21
  type PropertyField = ReturnType<typeof PropertyField>;
@@ -2,9 +2,12 @@
2
2
  import PropertyField from './PropertyField.svelte';
3
3
  import Input from '../../atoms/Input/Input.svelte';
4
4
  import Toggle from '../../atoms/Toggle/Toggle.svelte';
5
+ import Slider from '../../atoms/Slider/Slider.svelte';
5
6
 
7
+ const DEFAULT_OPACITY = 1;
6
8
  let location = $state('0, 0, 0');
7
9
  let visible = $state(true);
10
+ let opacity = $state(0.65);
8
11
  </script>
9
12
 
10
13
  <div class="max-w-xs space-y-0.5 rounded border border-border bg-surface-elevated p-1">
@@ -14,4 +17,22 @@
14
17
  <PropertyField label="Visible">
15
18
  <Toggle bind:checked={visible} size="sm" />
16
19
  </PropertyField>
20
+ <PropertyField
21
+ label="Opacity"
22
+ modified={opacity !== DEFAULT_OPACITY}
23
+ onreset={() => (opacity = DEFAULT_OPACITY)}
24
+ >
25
+ <Slider
26
+ size="sm"
27
+ min={0}
28
+ max={1}
29
+ step={0.01}
30
+ bind:value={opacity}
31
+ showValue
32
+ valuePosition="header"
33
+ />
34
+ </PropertyField>
35
+ <p class="px-1 pt-1 text-[10px] text-muted">
36
+ Amber reset icon appears when a value differs from its default (Unreal-style).
37
+ </p>
17
38
  </div>
@@ -44,7 +44,7 @@
44
44
  </button>
45
45
 
46
46
  {#if open}
47
- <div class="space-y-0.5 px-1 py-1">
47
+ <div class="space-y-0.5 px-1 py-1 min-w-0 overflow-x-hidden">
48
48
  {#if children}
49
49
  {@render children()}
50
50
  {/if}
@@ -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 QueryBuilderStory from './QueryBuilderStory.svelte';
2
+ const meta = {
3
+ title: 'Molecules/QueryBuilder',
4
+ component: QueryBuilderStory,
5
+ tags: ['autodocs']
6
+ };
7
+ export default meta;
8
+ export const Default = {};
@@ -0,0 +1,52 @@
1
+ <script lang="ts">
2
+ import AdvancedFilters from '../AdvancedFilters/AdvancedFilters.svelte';
3
+ import {
4
+ emptyFilterGroup,
5
+ type AdvancedFilterGroup,
6
+ type FilterFieldDef
7
+ } from '../../../utils/advancedFilters.js';
8
+
9
+ export type { FilterFieldDef, AdvancedFilterGroup };
10
+
11
+ interface QueryBuilderProps {
12
+ fields?: FilterFieldDef[];
13
+ query?: AdvancedFilterGroup;
14
+ title?: string;
15
+ applyLabel?: string;
16
+ /** Tighter padding / smaller chrome */
17
+ compact?: boolean;
18
+ class?: string;
19
+ onchange?: (query: AdvancedFilterGroup) => void;
20
+ onapply?: (query: AdvancedFilterGroup) => void;
21
+ }
22
+
23
+ let {
24
+ fields = [],
25
+ query = $bindable(emptyFilterGroup()),
26
+ title = 'Query builder',
27
+ applyLabel = 'Apply',
28
+ compact = false,
29
+ class: className = '',
30
+ onchange,
31
+ onapply
32
+ }: QueryBuilderProps = $props();
33
+ </script>
34
+
35
+ <div
36
+ class={[
37
+ 'rounded-xl border border-border bg-surface-elevated',
38
+ compact ? 'p-2' : 'p-3',
39
+ className
40
+ ]}
41
+ data-query-builder
42
+ >
43
+ <AdvancedFilters
44
+ bind:query
45
+ {fields}
46
+ {title}
47
+ {applyLabel}
48
+ {onchange}
49
+ {onapply}
50
+ class={compact ? 'text-sm' : ''}
51
+ />
52
+ </div>
@@ -0,0 +1,18 @@
1
+ import { type AdvancedFilterGroup, type FilterFieldDef } from '../../../utils/advancedFilters.js';
2
+ interface QueryBuilderProps {
3
+ fields?: FilterFieldDef[];
4
+ query?: AdvancedFilterGroup;
5
+ title?: string;
6
+ applyLabel?: string;
7
+ /** Tighter padding / smaller chrome */
8
+ compact?: boolean;
9
+ class?: string;
10
+ onchange?: (query: AdvancedFilterGroup) => void;
11
+ onapply?: (query: AdvancedFilterGroup) => void;
12
+ }
13
+ declare const QueryBuilder: import("svelte").Component<QueryBuilderProps, {
14
+ FilterFieldDef: typeof FilterFieldDef;
15
+ AdvancedFilterGroup: typeof AdvancedFilterGroup;
16
+ }, "query">;
17
+ type QueryBuilder = ReturnType<typeof QueryBuilder>;
18
+ export default QueryBuilder;
@@ -0,0 +1,62 @@
1
+ <script lang="ts">
2
+ import QueryBuilder from './QueryBuilder.svelte';
3
+ import FilterList from '../FilterList/FilterList.svelte';
4
+ import QueryBar from '../QueryBar/QueryBar.svelte';
5
+ import {
6
+ emptyFilterGroup,
7
+ type AdvancedFilterGroup,
8
+ type FilterFieldDef
9
+ } from '../../../utils/advancedFilters.js';
10
+ import { queryStringToGroup, groupToQueryString } from '../../../utils/queryBridge.js';
11
+
12
+ const fields: FilterFieldDef[] = [
13
+ {
14
+ id: 'brand',
15
+ label: 'Brand',
16
+ type: 'select',
17
+ options: [
18
+ { value: 'nike', label: 'Nike' },
19
+ { value: 'adidas', label: 'Adidas' }
20
+ ]
21
+ },
22
+ { id: 'price', label: 'Price', type: 'number' },
23
+ {
24
+ id: 'status',
25
+ label: 'Status',
26
+ type: 'select',
27
+ options: [
28
+ { value: 'active', label: 'Active' },
29
+ { value: 'draft', label: 'Draft' }
30
+ ]
31
+ }
32
+ ];
33
+
34
+ let query = $state<AdvancedFilterGroup>(emptyFilterGroup());
35
+ let queryString = $state('brand:nike AND price>=100');
36
+
37
+ $effect(() => {
38
+ query = queryStringToGroup(queryString, fields);
39
+ });
40
+
41
+ function onSubmit(q: string) {
42
+ queryString = q;
43
+ query = queryStringToGroup(q, fields);
44
+ }
45
+
46
+ function onQueryChange(next: AdvancedFilterGroup) {
47
+ query = next;
48
+ queryString = groupToQueryString(next, fields);
49
+ }
50
+ </script>
51
+
52
+ <div class="mx-auto flex w-full max-w-3xl flex-col gap-4 p-4">
53
+ <QueryBar bind:value={queryString} {fields} onsubmit={onSubmit} />
54
+ <FilterList
55
+ bind:query
56
+ bind:queryString
57
+ {fields}
58
+ showQueryString
59
+ onchange={onQueryChange}
60
+ />
61
+ <QueryBuilder bind:query {fields} onchange={onQueryChange} />
62
+ </div>
@@ -0,0 +1,3 @@
1
+ declare const QueryBuilderStory: import("svelte").Component<Record<string, never>, {}, "">;
2
+ type QueryBuilderStory = ReturnType<typeof QueryBuilderStory>;
3
+ export default QueryBuilderStory;
@@ -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 RelationPickerStory from './RelationPickerStory.svelte';
2
+ const meta = {
3
+ title: 'Molecules/RelationPicker',
4
+ component: RelationPickerStory,
5
+ tags: ['autodocs']
6
+ };
7
+ export default meta;
8
+ export const Default = {};
@@ -0,0 +1,180 @@
1
+ <script lang="ts">
2
+ import Input from '../../atoms/Input/Input.svelte';
3
+ import Chip from '../../atoms/Chip/Chip.svelte';
4
+ import EntityPreview from '../EntityPreview/EntityPreview.svelte';
5
+ import Spinner from '../../atoms/Spinner/Spinner.svelte';
6
+
7
+ export interface RelationOption {
8
+ id: string;
9
+ title: string;
10
+ subtitle?: string;
11
+ meta?: string;
12
+ image?: string;
13
+ kind?: string;
14
+ }
15
+
16
+ interface RelationPickerProps {
17
+ options?: RelationOption[];
18
+ value?: string | string[];
19
+ multiple?: boolean;
20
+ placeholder?: string;
21
+ loading?: boolean;
22
+ disabled?: boolean;
23
+ emptyLabel?: string;
24
+ class?: string;
25
+ onsearch?: (query: string) => void;
26
+ onchange?: (value: string | string[]) => void;
27
+ loadOptions?: (query: string) => Promise<RelationOption[]>;
28
+ }
29
+
30
+ let {
31
+ options = [],
32
+ value = $bindable<string | string[]>(''),
33
+ multiple = false,
34
+ placeholder = 'Search related records…',
35
+ loading = false,
36
+ disabled = false,
37
+ emptyLabel = 'No results',
38
+ class: className = '',
39
+ onsearch,
40
+ onchange,
41
+ loadOptions
42
+ }: RelationPickerProps = $props();
43
+
44
+ let query = $state('');
45
+ let open = $state(false);
46
+ let remote = $state<RelationOption[] | null>(null);
47
+ let busy = $state(false);
48
+
49
+ const selectedIds = $derived(
50
+ multiple
51
+ ? Array.isArray(value)
52
+ ? value
53
+ : value
54
+ ? [value]
55
+ : []
56
+ : typeof value === 'string' && value
57
+ ? [value]
58
+ : Array.isArray(value)
59
+ ? value.slice(0, 1)
60
+ : []
61
+ );
62
+
63
+ const pool = $derived(remote ?? options);
64
+
65
+ const filtered = $derived.by(() => {
66
+ const q = query.trim().toLowerCase();
67
+ if (!q) return pool;
68
+ return pool.filter(
69
+ (o) =>
70
+ o.title.toLowerCase().includes(q) ||
71
+ o.subtitle?.toLowerCase().includes(q) ||
72
+ o.id.toLowerCase().includes(q)
73
+ );
74
+ });
75
+
76
+ const selectedOptions = $derived(
77
+ selectedIds
78
+ .map((id) => pool.find((o) => o.id === id) ?? options.find((o) => o.id === id))
79
+ .filter(Boolean) as RelationOption[]
80
+ );
81
+
82
+ let searchTimer: ReturnType<typeof setTimeout> | undefined;
83
+
84
+ async function runSearch(q: string) {
85
+ onsearch?.(q);
86
+ if (!loadOptions) {
87
+ remote = null;
88
+ return;
89
+ }
90
+ busy = true;
91
+ try {
92
+ remote = await loadOptions(q);
93
+ } finally {
94
+ busy = false;
95
+ }
96
+ }
97
+
98
+ function onQueryInput(e: Event) {
99
+ query = (e.currentTarget as HTMLInputElement).value;
100
+ open = true;
101
+ clearTimeout(searchTimer);
102
+ searchTimer = setTimeout(() => runSearch(query), 200);
103
+ }
104
+
105
+ function toggle(id: string) {
106
+ if (multiple) {
107
+ const set = new Set(selectedIds);
108
+ if (set.has(id)) set.delete(id);
109
+ else set.add(id);
110
+ value = [...set];
111
+ } else {
112
+ value = id;
113
+ open = false;
114
+ query = '';
115
+ }
116
+ onchange?.(value);
117
+ }
118
+
119
+ function remove(id: string) {
120
+ if (multiple) {
121
+ value = selectedIds.filter((x) => x !== id);
122
+ } else {
123
+ value = '';
124
+ }
125
+ onchange?.(value);
126
+ }
127
+ </script>
128
+
129
+ <div class={['relative flex flex-col gap-2', className]} data-relation-picker>
130
+ {#if selectedOptions.length}
131
+ <div class="flex flex-wrap gap-1.5">
132
+ {#each selectedOptions as opt (opt.id)}
133
+ <Chip size="sm" variant="primary" dismissible ondismiss={() => remove(opt.id)}>
134
+ {opt.title}
135
+ </Chip>
136
+ {/each}
137
+ </div>
138
+ {/if}
139
+
140
+ <Input
141
+ value={query}
142
+ {placeholder}
143
+ {disabled}
144
+ oninput={onQueryInput}
145
+ onfocus={() => (open = true)}
146
+ />
147
+
148
+ {#if open && !disabled}
149
+ <div
150
+ class="absolute top-full z-20 mt-1 max-h-64 w-full overflow-auto rounded-xl border border-border bg-surface-elevated p-1 shadow-lg"
151
+ role="listbox"
152
+ >
153
+ {#if loading || busy}
154
+ <div class="flex items-center justify-center gap-2 px-3 py-6 text-sm text-muted">
155
+ <Spinner size="sm" /> Searching…
156
+ </div>
157
+ {:else if filtered.length === 0}
158
+ <p class="px-3 py-6 text-center text-sm text-muted">{emptyLabel}</p>
159
+ {:else}
160
+ {#each filtered as opt (opt.id)}
161
+ <button
162
+ type="button"
163
+ class="w-full rounded-lg p-1 text-left hover:bg-surface-overlay"
164
+ role="option"
165
+ aria-selected={selectedIds.includes(opt.id)}
166
+ onclick={() => toggle(opt.id)}
167
+ >
168
+ <EntityPreview
169
+ title={opt.title}
170
+ subtitle={opt.subtitle}
171
+ meta={opt.meta}
172
+ image={opt.image}
173
+ kind={opt.kind}
174
+ />
175
+ </button>
176
+ {/each}
177
+ {/if}
178
+ </div>
179
+ {/if}
180
+ </div>
@@ -0,0 +1,24 @@
1
+ export interface RelationOption {
2
+ id: string;
3
+ title: string;
4
+ subtitle?: string;
5
+ meta?: string;
6
+ image?: string;
7
+ kind?: string;
8
+ }
9
+ interface RelationPickerProps {
10
+ options?: RelationOption[];
11
+ value?: string | string[];
12
+ multiple?: boolean;
13
+ placeholder?: string;
14
+ loading?: boolean;
15
+ disabled?: boolean;
16
+ emptyLabel?: string;
17
+ class?: string;
18
+ onsearch?: (query: string) => void;
19
+ onchange?: (value: string | string[]) => void;
20
+ loadOptions?: (query: string) => Promise<RelationOption[]>;
21
+ }
22
+ declare const RelationPicker: import("svelte").Component<RelationPickerProps, {}, "value">;
23
+ type RelationPicker = ReturnType<typeof RelationPicker>;
24
+ export default RelationPicker;
@@ -0,0 +1,16 @@
1
+ <script lang="ts">
2
+ import RelationPicker from './RelationPicker.svelte';
3
+ import type { RelationOption } from './RelationPicker.svelte';
4
+
5
+ const options: RelationOption[] = [
6
+ { id: '1', title: 'Acme Corp', subtitle: 'Customer', kind: 'org' },
7
+ { id: '2', title: 'Jane Doe', subtitle: 'jane@acme.com', kind: 'user' },
8
+ { id: '3', title: 'Project Atlas', subtitle: 'Active', kind: 'project' }
9
+ ];
10
+
11
+ let value = $state<string | string[]>('1');
12
+ </script>
13
+
14
+ <div class="mx-auto max-w-md p-6">
15
+ <RelationPicker bind:value {options} multiple={false} />
16
+ </div>
@@ -0,0 +1,3 @@
1
+ declare const RelationPickerStory: import("svelte").Component<Record<string, never>, {}, "">;
2
+ type RelationPickerStory = ReturnType<typeof RelationPickerStory>;
3
+ export default RelationPickerStory;
@@ -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 SchemaFieldBuilderStory from './SchemaFieldBuilderStory.svelte';
2
+ const meta = {
3
+ title: 'Molecules/SchemaFieldBuilder',
4
+ component: SchemaFieldBuilderStory,
5
+ tags: ['autodocs']
6
+ };
7
+ export default meta;
8
+ export const Default = {};