@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,33 @@
1
+ import '@xyflow/svelte/dist/style.css';
2
+ import { type BlueprintVariable, type GraphDocument, type GraphEdge, type GraphNodeContext, type GraphNodeTypeDef, type GraphValidationIssue } from '../../../utils/nodeGraph.js';
3
+ interface NodeGraphProps {
4
+ value?: GraphDocument;
5
+ nodeTypes?: GraphNodeTypeDef[];
6
+ /** Blueprint variables → Get/Set in place menu + drop targets. */
7
+ variables?: BlueprintVariable[];
8
+ /** Graph kind filter (Events only on event_graph, etc.). */
9
+ graphContext?: GraphNodeContext | null;
10
+ readonly?: boolean;
11
+ showMinimap?: boolean;
12
+ showToolbar?: boolean;
13
+ showGrid?: boolean;
14
+ snapToGrid?: boolean;
15
+ gridSize?: number;
16
+ class?: string;
17
+ selectedIds?: string[];
18
+ onchange?: (doc: GraphDocument) => void;
19
+ onselect?: (id: string | null) => void;
20
+ onselectmany?: (ids: string[]) => void;
21
+ onconnect?: (edge: GraphEdge) => void;
22
+ onvalidate?: (issues: GraphValidationIssue[]) => void;
23
+ onplace?: (type: string, x: number, y: number) => void;
24
+ }
25
+ declare const NodeGraph: import("svelte").Component<NodeGraphProps, {
26
+ GraphDocument: typeof GraphDocument;
27
+ GraphNode: typeof GraphNode;
28
+ GraphEdge: typeof GraphEdge;
29
+ GraphNodeTypeDef: typeof GraphNodeTypeDef;
30
+ GraphPort: typeof GraphPort;
31
+ }, "value" | "showGrid" | "snapToGrid" | "selectedIds">;
32
+ type NodeGraph = ReturnType<typeof NodeGraph>;
33
+ export default NodeGraph;
@@ -0,0 +1,90 @@
1
+ <script lang="ts">
2
+ import NodeGraph from './NodeGraph.svelte';
3
+ import {
4
+ createGraphEdge,
5
+ createGraphNode,
6
+ emptyGraphDocument,
7
+ type GraphDocument
8
+ } from '../../../utils/nodeGraph.js';
9
+
10
+ const begin = createGraphNode({
11
+ type: 'trigger',
12
+ x: 40,
13
+ y: 160,
14
+ data: { label: 'On Start' }
15
+ });
16
+ const branch = createGraphNode({
17
+ type: 'condition',
18
+ x: 300,
19
+ y: 140,
20
+ data: { label: 'Is Valid?' }
21
+ });
22
+ const action = createGraphNode({
23
+ type: 'action',
24
+ x: 560,
25
+ y: 40,
26
+ data: { label: 'Notify' }
27
+ });
28
+ const transform = createGraphNode({
29
+ type: 'transform',
30
+ x: 560,
31
+ y: 240,
32
+ data: { label: 'Normalize' }
33
+ });
34
+ const literal = createGraphNode({
35
+ type: 'get_string',
36
+ x: 300,
37
+ y: 320,
38
+ data: { label: '"ok"' }
39
+ });
40
+ const toBool = createGraphNode({
41
+ type: 'to_bool',
42
+ x: 40,
43
+ y: 300,
44
+ data: { label: 'To Bool' }
45
+ });
46
+ const end = createGraphNode({
47
+ type: 'end',
48
+ x: 820,
49
+ y: 140,
50
+ data: { label: 'Done' }
51
+ });
52
+ const note = createGraphNode({
53
+ type: 'comment',
54
+ x: 40,
55
+ y: 40,
56
+ data: { label: 'Exec = play · Functions = data-only' }
57
+ });
58
+
59
+ let value = $state<GraphDocument>({
60
+ ...emptyGraphDocument(),
61
+ nodes: [begin, branch, action, transform, literal, toBool, end, note],
62
+ edges: [
63
+ createGraphEdge(begin.id, branch.id, { sourceHandle: 'exec', targetHandle: 'exec_in' }),
64
+ createGraphEdge(toBool.id, branch.id, {
65
+ sourceHandle: 'out',
66
+ targetHandle: 'condition'
67
+ }),
68
+ createGraphEdge(branch.id, action.id, {
69
+ label: 'True',
70
+ sourceHandle: 'true',
71
+ targetHandle: 'exec_in'
72
+ }),
73
+ createGraphEdge(branch.id, transform.id, {
74
+ label: 'False',
75
+ sourceHandle: 'false',
76
+ targetHandle: 'exec_in'
77
+ }),
78
+ createGraphEdge(literal.id, transform.id, {
79
+ sourceHandle: 'value',
80
+ targetHandle: 'in'
81
+ }),
82
+ createGraphEdge(action.id, end.id, { sourceHandle: 'exec', targetHandle: 'exec_in' }),
83
+ createGraphEdge(transform.id, end.id, { sourceHandle: 'exec', targetHandle: 'exec_in' })
84
+ ]
85
+ });
86
+ </script>
87
+
88
+ <div class="flex h-[640px] flex-col p-4">
89
+ <NodeGraph bind:value class="min-h-0 flex-1" />
90
+ </div>
@@ -0,0 +1,3 @@
1
+ declare const NodeGraphStory: import("svelte").Component<Record<string, never>, {}, "">;
2
+ type NodeGraphStory = ReturnType<typeof NodeGraphStory>;
3
+ export default NodeGraphStory;
@@ -0,0 +1,8 @@
1
+ import NodePaletteStory from './NodePaletteStory.svelte';
2
+ const meta = {
3
+ title: 'Molecules/NodePalette',
4
+ component: NodePaletteStory,
5
+ tags: ['autodocs']
6
+ };
7
+ export default meta;
8
+ export const Default = {};
@@ -0,0 +1,86 @@
1
+ <script lang="ts">
2
+ import SearchInput from '../SearchInput/SearchInput.svelte';
3
+ import {
4
+ DEFAULT_BLUEPRINT_NODE_TYPES,
5
+ groupNodeTypesByCategory,
6
+ type GraphNodeTypeDef
7
+ } from '../../../utils/nodeGraph.js';
8
+
9
+ interface NodePaletteProps {
10
+ nodeTypes?: GraphNodeTypeDef[];
11
+ query?: string;
12
+ title?: string;
13
+ class?: string;
14
+ onselect?: (type: GraphNodeTypeDef) => void;
15
+ }
16
+
17
+ let {
18
+ nodeTypes = DEFAULT_BLUEPRINT_NODE_TYPES,
19
+ query = $bindable(''),
20
+ title = 'Palette',
21
+ class: className = '',
22
+ onselect
23
+ }: NodePaletteProps = $props();
24
+
25
+ const filtered = $derived.by(() => {
26
+ const q = query.trim().toLowerCase();
27
+ if (!q) return nodeTypes;
28
+ return nodeTypes.filter(
29
+ (t) =>
30
+ t.label.toLowerCase().includes(q) ||
31
+ t.type.toLowerCase().includes(q) ||
32
+ t.category?.toLowerCase().includes(q) ||
33
+ t.description?.toLowerCase().includes(q)
34
+ );
35
+ });
36
+
37
+ const groups = $derived(groupNodeTypesByCategory(filtered));
38
+ </script>
39
+
40
+ <div class={['flex h-full min-h-0 flex-col', className]} data-node-palette>
41
+ <div class="border-b border-border px-2 py-2">
42
+ {#if title}
43
+ <p class="mb-1.5 px-1 text-[11px] font-semibold uppercase tracking-wide text-muted">{title}</p>
44
+ {/if}
45
+ <SearchInput bind:value={query} placeholder="Search nodes…" size="sm" />
46
+ </div>
47
+ <div class="min-h-0 flex-1 overflow-auto p-1">
48
+ {#each groups as group (group.category)}
49
+ <div class="mb-2">
50
+ <p class="px-2 py-1 text-[10px] font-semibold uppercase tracking-wide text-muted">
51
+ {group.category}
52
+ </p>
53
+ <ul class="flex flex-col gap-0.5">
54
+ {#each group.types as nt (nt.type)}
55
+ <li>
56
+ <button
57
+ type="button"
58
+ class="flex w-full items-start gap-2 rounded-lg px-2 py-1.5 text-left hover:bg-surface-overlay"
59
+ onclick={() => onselect?.(nt)}
60
+ draggable="true"
61
+ ondragstart={(e) => {
62
+ e.dataTransfer?.setData('application/x-node-type', nt.type);
63
+ e.dataTransfer?.setData('text/plain', nt.type);
64
+ }}
65
+ >
66
+ <span
67
+ class="mt-1 h-2.5 w-2.5 shrink-0 rounded-full"
68
+ style={`background:${nt.color ?? '#64748b'}`}
69
+ ></span>
70
+ <span class="min-w-0">
71
+ <span class="block truncate text-sm font-medium text-primary">{nt.label}</span>
72
+ {#if nt.description}
73
+ <span class="block truncate text-[11px] text-muted">{nt.description}</span>
74
+ {/if}
75
+ </span>
76
+ </button>
77
+ </li>
78
+ {/each}
79
+ </ul>
80
+ </div>
81
+ {/each}
82
+ {#if !filtered.length}
83
+ <p class="px-3 py-8 text-center text-xs text-muted">No nodes match</p>
84
+ {/if}
85
+ </div>
86
+ </div>
@@ -0,0 +1,11 @@
1
+ import { type GraphNodeTypeDef } from '../../../utils/nodeGraph.js';
2
+ interface NodePaletteProps {
3
+ nodeTypes?: GraphNodeTypeDef[];
4
+ query?: string;
5
+ title?: string;
6
+ class?: string;
7
+ onselect?: (type: GraphNodeTypeDef) => void;
8
+ }
9
+ declare const NodePalette: import("svelte").Component<NodePaletteProps, {}, "query">;
10
+ type NodePalette = ReturnType<typeof NodePalette>;
11
+ export default NodePalette;
@@ -0,0 +1,11 @@
1
+ <script lang="ts">
2
+ import NodePalette from './NodePalette.svelte';
3
+ import { DEFAULT_BLUEPRINT_NODE_TYPES } from '../../../utils/nodeGraph.js';
4
+ </script>
5
+
6
+ <div class="h-[420px] w-72 rounded-xl border border-border bg-surface-elevated">
7
+ <NodePalette
8
+ nodeTypes={DEFAULT_BLUEPRINT_NODE_TYPES}
9
+ onselect={(t) => console.log('select', t.type)}
10
+ />
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 NodePaletteStory: $$__sveltets_2_IsomorphicComponent<Record<string, never>, {
15
+ [evt: string]: CustomEvent<any>;
16
+ }, {}, {}, string>;
17
+ type NodePaletteStory = InstanceType<typeof NodePaletteStory>;
18
+ export default NodePaletteStory;
@@ -2,7 +2,7 @@ import type { StoryObj } from '@storybook/svelte';
2
2
  declare const meta: {
3
3
  title: string;
4
4
  component: import("svelte").Component<{
5
- example?: "multiple" | "cards" | "release" | "closed" | "results" | "binary" | "changeable";
5
+ example?: "closed" | "multiple" | "cards" | "release" | "results" | "binary" | "changeable";
6
6
  size?: import("./Poll.svelte.ts").PollSize;
7
7
  layout?: import("./Poll.svelte.ts").PollLayout;
8
8
  showResults?: boolean;
@@ -0,0 +1,8 @@
1
+ import ProgramMonitorStory from './ProgramMonitorStory.svelte';
2
+ const meta = {
3
+ title: 'Molecules/ProgramMonitor',
4
+ component: ProgramMonitorStory,
5
+ tags: ['autodocs']
6
+ };
7
+ export default meta;
8
+ export const Default = {};
@@ -0,0 +1,72 @@
1
+ <script lang="ts">
2
+ import type { MediaClip, MediaTrack } from '../../../utils/mediaTracks.js';
3
+ import { findClipAt } from '../../../utils/mediaTracks.js';
4
+
5
+ interface ProgramMonitorProps {
6
+ width?: number;
7
+ height?: number;
8
+ background?: string;
9
+ currentTimeMs?: number;
10
+ tracks?: MediaTrack[];
11
+ class?: string;
12
+ }
13
+
14
+ let {
15
+ width = 1280,
16
+ height = 720,
17
+ background = '#0a0a0a',
18
+ currentTimeMs = 0,
19
+ tracks = [],
20
+ class: className = ''
21
+ }: ProgramMonitorProps = $props();
22
+
23
+ const activeVideo = $derived(
24
+ findClipAt(tracks, currentTimeMs, 'video') ?? findClipAt(tracks, currentTimeMs, 'image')
25
+ );
26
+ const activeAudio = $derived(findClipAt(tracks, currentTimeMs, 'audio'));
27
+
28
+ function sourceTime(clip: MediaClip): number {
29
+ const trim = clip.trimInMs ?? 0;
30
+ return Math.max(0, currentTimeMs - clip.startMs + trim) / 1000;
31
+ }
32
+ </script>
33
+
34
+ <div
35
+ class={[
36
+ 'relative flex aspect-video w-full items-center justify-center overflow-hidden rounded-lg border border-border',
37
+ className
38
+ ]}
39
+ style:background
40
+ style:aspect-ratio={`${width} / ${height}`}
41
+ >
42
+ {#if activeVideo?.src && activeVideo.kind === 'video'}
43
+ <video
44
+ src={activeVideo.src}
45
+ class="h-full w-full object-contain"
46
+ muted
47
+ playsinline
48
+ currentTime={sourceTime(activeVideo)}
49
+ ></video>
50
+ {:else if activeVideo?.src && activeVideo.kind === 'image'}
51
+ <img src={activeVideo.src} alt={activeVideo.name} class="h-full w-full object-contain" />
52
+ {:else if activeVideo}
53
+ <div class="flex flex-col items-center gap-2 text-secondary">
54
+ <span class="rounded-md bg-surface-overlay px-3 py-1.5 text-sm font-medium text-primary">
55
+ {activeVideo.name}
56
+ </span>
57
+ <span class="text-xs text-muted">No media source</span>
58
+ </div>
59
+ {:else}
60
+ <span class="text-sm text-muted">No clip at playhead</span>
61
+ {/if}
62
+
63
+ {#if activeAudio?.src}
64
+ <audio src={activeAudio.src} currentTime={sourceTime(activeAudio)} class="hidden"></audio>
65
+ {/if}
66
+
67
+ <div
68
+ class="pointer-events-none absolute bottom-2 left-2 rounded bg-black/50 px-2 py-0.5 font-mono text-[10px] text-white"
69
+ >
70
+ {Math.round(currentTimeMs)}ms
71
+ </div>
72
+ </div>
@@ -0,0 +1,12 @@
1
+ import type { MediaTrack } from '../../../utils/mediaTracks.js';
2
+ interface ProgramMonitorProps {
3
+ width?: number;
4
+ height?: number;
5
+ background?: string;
6
+ currentTimeMs?: number;
7
+ tracks?: MediaTrack[];
8
+ class?: string;
9
+ }
10
+ declare const ProgramMonitor: import("svelte").Component<ProgramMonitorProps, {}, "">;
11
+ type ProgramMonitor = ReturnType<typeof ProgramMonitor>;
12
+ 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;