@r2digisolutions/components 0.1.6 → 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 (389) hide show
  1. package/README.md +1 -1
  2. package/dist/components/atoms/Checkbox/Checkbox.svelte +10 -3
  3. package/dist/components/atoms/Checkbox/Checkbox.svelte.d.ts +3 -0
  4. package/dist/components/atoms/IconButton/IconButton.svelte +1 -1
  5. package/dist/components/atoms/Input/Input.svelte +17 -2
  6. package/dist/components/atoms/Input/Input.svelte.d.ts +6 -1
  7. package/dist/components/atoms/MarqueeRect/MarqueeRect.svelte +21 -0
  8. package/dist/components/atoms/MarqueeRect/MarqueeRect.svelte.d.ts +8 -0
  9. package/dist/components/atoms/MediaKindIcon/MediaKindIcon.stories.js +8 -0
  10. package/dist/components/atoms/MediaKindIcon/MediaKindIcon.svelte +122 -0
  11. package/dist/components/atoms/MediaKindIcon/MediaKindIcon.svelte.d.ts +11 -0
  12. package/dist/components/atoms/MediaKindIcon/MediaKindIconStory.svelte +12 -0
  13. package/dist/components/atoms/MediaKindIcon/MediaKindIconStory.svelte.d.ts +18 -0
  14. package/dist/components/atoms/PanKnob/PanKnob.stories.d.ts +9 -0
  15. package/dist/components/atoms/PanKnob/PanKnob.stories.js +8 -0
  16. package/dist/components/atoms/PanKnob/PanKnob.svelte +218 -0
  17. package/dist/components/atoms/PanKnob/PanKnob.svelte.d.ts +19 -0
  18. package/dist/components/atoms/PanKnob/PanKnobStory.svelte +15 -0
  19. package/dist/components/atoms/PanKnob/PanKnobStory.svelte.d.ts +3 -0
  20. package/dist/components/atoms/Playhead/Playhead.stories.js +8 -0
  21. package/dist/components/atoms/Playhead/Playhead.svelte +59 -0
  22. package/dist/components/atoms/Playhead/Playhead.svelte.d.ts +13 -0
  23. package/dist/components/atoms/Playhead/PlayheadStory.svelte +9 -0
  24. package/dist/components/atoms/Playhead/PlayheadStory.svelte.d.ts +18 -0
  25. package/dist/components/atoms/Textarea/Textarea.svelte +4 -1
  26. package/dist/components/atoms/Textarea/Textarea.svelte.d.ts +1 -0
  27. package/dist/components/atoms/TimeRuler/TimeRuler.stories.js +8 -0
  28. package/dist/components/atoms/TimeRuler/TimeRuler.svelte +58 -0
  29. package/dist/components/atoms/TimeRuler/TimeRuler.svelte.d.ts +10 -0
  30. package/dist/components/atoms/TimeRuler/TimeRulerStory.svelte +7 -0
  31. package/dist/components/atoms/TimeRuler/TimeRulerStory.svelte.d.ts +18 -0
  32. package/dist/components/atoms/Toggle/Toggle.svelte +1 -1
  33. package/dist/components/atoms/Tooltip/Tooltip.svelte +1 -1
  34. package/dist/components/atoms/TrimHandle/TrimHandle.stories.js +8 -0
  35. package/dist/components/atoms/TrimHandle/TrimHandle.svelte +63 -0
  36. package/dist/components/atoms/TrimHandle/TrimHandle.svelte.d.ts +12 -0
  37. package/dist/components/atoms/TrimHandle/TrimHandleStory.svelte +11 -0
  38. package/dist/components/atoms/TrimHandle/TrimHandleStory.svelte.d.ts +18 -0
  39. package/dist/components/molecules/AiAssistPanel/AiAssistPanel.stories.d.ts +9 -0
  40. package/dist/components/molecules/AiAssistPanel/AiAssistPanel.stories.js +8 -0
  41. package/dist/components/molecules/AiAssistPanel/AiAssistPanel.svelte +102 -0
  42. package/dist/components/molecules/AiAssistPanel/AiAssistPanel.svelte.d.ts +20 -0
  43. package/dist/components/molecules/AiAssistPanel/AiAssistPanelStory.svelte +34 -0
  44. package/dist/components/molecules/AiAssistPanel/AiAssistPanelStory.svelte.d.ts +3 -0
  45. package/dist/components/molecules/BulkActionBar/BulkActionBar.svelte +112 -62
  46. package/dist/components/molecules/BulkActionBar/BulkActionBar.svelte.d.ts +2 -0
  47. package/dist/components/molecules/BulkEditPanel/BulkEditPanel.stories.js +8 -0
  48. package/dist/components/molecules/BulkEditPanel/BulkEditPanel.svelte +117 -0
  49. package/dist/components/molecules/BulkEditPanel/BulkEditPanel.svelte.d.ts +23 -0
  50. package/dist/components/molecules/BulkEditPanel/BulkEditPanelStory.svelte +18 -0
  51. package/dist/components/molecules/BulkEditPanel/BulkEditPanelStory.svelte.d.ts +18 -0
  52. package/dist/components/molecules/CanvasElementsPanel/CanvasElementsPanel.stories.js +8 -0
  53. package/dist/components/molecules/CanvasElementsPanel/CanvasElementsPanel.svelte +858 -0
  54. package/dist/components/molecules/CanvasElementsPanel/CanvasElementsPanel.svelte.d.ts +43 -0
  55. package/dist/components/molecules/CanvasElementsPanel/CanvasElementsPanelStory.svelte +7 -0
  56. package/dist/components/molecules/CanvasElementsPanel/CanvasElementsPanelStory.svelte.d.ts +18 -0
  57. package/dist/components/molecules/CanvasInspector/CanvasInspector.stories.d.ts +9 -0
  58. package/dist/components/molecules/CanvasInspector/CanvasInspector.stories.js +8 -0
  59. package/dist/components/molecules/CanvasInspector/CanvasInspector.svelte +1140 -0
  60. package/dist/components/molecules/CanvasInspector/CanvasInspector.svelte.d.ts +28 -0
  61. package/dist/components/molecules/CanvasInspector/CanvasInspectorStory.svelte +20 -0
  62. package/dist/components/molecules/CanvasInspector/CanvasInspectorStory.svelte.d.ts +3 -0
  63. package/dist/components/molecules/CodeEditor/CodeEditor.svelte +13 -10
  64. package/dist/components/molecules/ColorPicker/ColorPicker.svelte +167 -97
  65. package/dist/components/molecules/ColumnVisibilityMenu/ColumnVisibilityMenu.stories.d.ts +9 -0
  66. package/dist/components/molecules/ColumnVisibilityMenu/ColumnVisibilityMenu.stories.js +8 -0
  67. package/dist/components/molecules/ColumnVisibilityMenu/ColumnVisibilityMenu.svelte +108 -0
  68. package/dist/components/molecules/ColumnVisibilityMenu/ColumnVisibilityMenu.svelte.d.ts +18 -0
  69. package/dist/components/molecules/ColumnVisibilityMenu/ColumnVisibilityMenuStory.svelte +15 -0
  70. package/dist/components/molecules/ColumnVisibilityMenu/ColumnVisibilityMenuStory.svelte.d.ts +3 -0
  71. package/dist/components/molecules/ConditionalFormatPanel/ConditionalFormatPanel.stories.d.ts +9 -0
  72. package/dist/components/molecules/ConditionalFormatPanel/ConditionalFormatPanel.stories.js +8 -0
  73. package/dist/components/molecules/ConditionalFormatPanel/ConditionalFormatPanel.svelte +412 -0
  74. package/dist/components/molecules/ConditionalFormatPanel/ConditionalFormatPanel.svelte.d.ts +14 -0
  75. package/dist/components/molecules/ConditionalFormatPanel/ConditionalFormatPanelStory.svelte +27 -0
  76. package/dist/components/molecules/ConditionalFormatPanel/ConditionalFormatPanelStory.svelte.d.ts +3 -0
  77. package/dist/components/molecules/ConflictResolver/ConflictResolver.stories.js +8 -0
  78. package/dist/components/molecules/ConflictResolver/ConflictResolver.svelte +73 -0
  79. package/dist/components/molecules/ConflictResolver/ConflictResolver.svelte.d.ts +16 -0
  80. package/dist/components/molecules/ConflictResolver/ConflictResolverStory.svelte +11 -0
  81. package/dist/components/molecules/ConflictResolver/ConflictResolverStory.svelte.d.ts +18 -0
  82. package/dist/components/molecules/ContextMenu/ContextMenu.svelte +237 -41
  83. package/dist/components/molecules/ContextMenu/ContextMenu.svelte.d.ts +17 -1
  84. package/dist/components/molecules/DateTimePicker/DateTimePicker.svelte.d.ts +1 -1
  85. package/dist/components/molecules/ExpressionEditor/ExpressionEditor.stories.d.ts +9 -0
  86. package/dist/components/molecules/ExpressionEditor/ExpressionEditor.stories.js +8 -0
  87. package/dist/components/molecules/ExpressionEditor/ExpressionEditor.svelte +56 -0
  88. package/dist/components/molecules/ExpressionEditor/ExpressionEditor.svelte.d.ts +12 -0
  89. package/dist/components/molecules/ExpressionEditor/ExpressionEditorStory.svelte +12 -0
  90. package/dist/components/molecules/ExpressionEditor/ExpressionEditorStory.svelte.d.ts +3 -0
  91. package/dist/components/molecules/FilterList/FilterList.stories.d.ts +9 -0
  92. package/dist/components/molecules/FilterList/FilterList.stories.js +8 -0
  93. package/dist/components/molecules/FilterList/FilterList.svelte +101 -0
  94. package/dist/components/molecules/FilterList/FilterList.svelte.d.ts +18 -0
  95. package/dist/components/molecules/FilterList/FilterListStory.svelte +31 -0
  96. package/dist/components/molecules/FilterList/FilterListStory.svelte.d.ts +3 -0
  97. package/dist/components/molecules/FormDateTimePicker/FormDateTimePicker.svelte.d.ts +1 -1
  98. package/dist/components/molecules/Gauge/Gauge.stories.d.ts +1 -1
  99. package/dist/components/molecules/InfiniteScroll/InfiniteScroll.stories.d.ts +1 -1
  100. package/dist/components/molecules/MediaAssetBrowser/MediaAssetBrowser.stories.d.ts +9 -0
  101. package/dist/components/molecules/MediaAssetBrowser/MediaAssetBrowser.stories.js +8 -0
  102. package/dist/components/molecules/MediaAssetBrowser/MediaAssetBrowser.svelte +94 -0
  103. package/dist/components/molecules/MediaAssetBrowser/MediaAssetBrowser.svelte.d.ts +15 -0
  104. package/dist/components/molecules/MediaAssetBrowser/MediaAssetBrowserStory.svelte +18 -0
  105. package/dist/components/molecules/MediaAssetBrowser/MediaAssetBrowserStory.svelte.d.ts +3 -0
  106. package/dist/components/molecules/MediaAssetCard/MediaAssetCard.stories.js +8 -0
  107. package/dist/components/molecules/MediaAssetCard/MediaAssetCard.svelte +50 -0
  108. package/dist/components/molecules/MediaAssetCard/MediaAssetCard.svelte.d.ts +11 -0
  109. package/dist/components/molecules/MediaAssetCard/MediaAssetCardStory.svelte +13 -0
  110. package/dist/components/molecules/MediaAssetCard/MediaAssetCardStory.svelte.d.ts +18 -0
  111. package/dist/components/molecules/MediaLayerItem/MediaLayerItem.stories.js +8 -0
  112. package/dist/components/molecules/MediaLayerItem/MediaLayerItem.svelte +380 -0
  113. package/dist/components/molecules/MediaLayerItem/MediaLayerItem.svelte.d.ts +33 -0
  114. package/dist/components/molecules/MediaLayerItem/MediaLayerItemStory.svelte +14 -0
  115. package/dist/components/molecules/MediaLayerItem/MediaLayerItemStory.svelte.d.ts +18 -0
  116. package/dist/components/molecules/MediaLayerList/MediaLayerList.stories.d.ts +9 -0
  117. package/dist/components/molecules/MediaLayerList/MediaLayerList.stories.js +8 -0
  118. package/dist/components/molecules/MediaLayerList/MediaLayerList.svelte +399 -0
  119. package/dist/components/molecules/MediaLayerList/MediaLayerList.svelte.d.ts +37 -0
  120. package/dist/components/molecules/MediaLayerList/MediaLayerListStory.svelte +24 -0
  121. package/dist/components/molecules/MediaLayerList/MediaLayerListStory.svelte.d.ts +3 -0
  122. package/dist/components/molecules/MediaStage/MediaStage.stories.d.ts +9 -0
  123. package/dist/components/molecules/MediaStage/MediaStage.stories.js +8 -0
  124. package/dist/components/molecules/MediaStage/MediaStage.svelte +1498 -0
  125. package/dist/components/molecules/MediaStage/MediaStage.svelte.d.ts +45 -0
  126. package/dist/components/molecules/MediaStage/MediaStageStory.svelte +35 -0
  127. package/dist/components/molecules/MediaStage/MediaStageStory.svelte.d.ts +3 -0
  128. package/dist/components/molecules/MediaTimeline/MediaTimeline.stories.d.ts +9 -0
  129. package/dist/components/molecules/MediaTimeline/MediaTimeline.stories.js +8 -0
  130. package/dist/components/molecules/MediaTimeline/MediaTimeline.svelte +131 -0
  131. package/dist/components/molecules/MediaTimeline/MediaTimeline.svelte.d.ts +19 -0
  132. package/dist/components/molecules/MediaTimeline/MediaTimelineStory.svelte +20 -0
  133. package/dist/components/molecules/MediaTimeline/MediaTimelineStory.svelte.d.ts +3 -0
  134. package/dist/components/molecules/MixerChannel/MixerChannel.stories.d.ts +9 -0
  135. package/dist/components/molecules/MixerChannel/MixerChannel.stories.js +8 -0
  136. package/dist/components/molecules/MixerChannel/MixerChannel.svelte +92 -0
  137. package/dist/components/molecules/MixerChannel/MixerChannel.svelte.d.ts +11 -0
  138. package/dist/components/molecules/MixerChannel/MixerChannelStory.svelte +13 -0
  139. package/dist/components/molecules/MixerChannel/MixerChannelStory.svelte.d.ts +3 -0
  140. package/dist/components/molecules/NodeGraph/GraphBlueprintNode.svelte +454 -0
  141. package/dist/components/molecules/NodeGraph/GraphBlueprintNode.svelte.d.ts +8 -0
  142. package/dist/components/molecules/NodeGraph/GraphFlowBridge.svelte +26 -0
  143. package/dist/components/molecules/NodeGraph/GraphFlowBridge.svelte.d.ts +22 -0
  144. package/dist/components/molecules/NodeGraph/NodeGraph.stories.d.ts +12 -0
  145. package/dist/components/molecules/NodeGraph/NodeGraph.stories.js +9 -0
  146. package/dist/components/molecules/NodeGraph/NodeGraph.svelte +1409 -0
  147. package/dist/components/molecules/NodeGraph/NodeGraph.svelte.d.ts +33 -0
  148. package/dist/components/molecules/NodeGraph/NodeGraphStory.svelte +90 -0
  149. package/dist/components/molecules/NodeGraph/NodeGraphStory.svelte.d.ts +3 -0
  150. package/dist/components/molecules/NodePalette/NodePalette.stories.js +8 -0
  151. package/dist/components/molecules/NodePalette/NodePalette.svelte +86 -0
  152. package/dist/components/molecules/NodePalette/NodePalette.svelte.d.ts +11 -0
  153. package/dist/components/molecules/NodePalette/NodePaletteStory.svelte +11 -0
  154. package/dist/components/molecules/NodePalette/NodePaletteStory.svelte.d.ts +18 -0
  155. package/dist/components/molecules/Poll/Poll.stories.d.ts +1 -1
  156. package/dist/components/molecules/ProgramMonitor/ProgramMonitor.stories.js +8 -0
  157. package/dist/components/molecules/ProgramMonitor/ProgramMonitor.svelte +72 -0
  158. package/dist/components/molecules/ProgramMonitor/ProgramMonitor.svelte.d.ts +12 -0
  159. package/dist/components/molecules/ProgramMonitor/ProgramMonitorStory.svelte +16 -0
  160. package/dist/components/molecules/ProgramMonitor/ProgramMonitorStory.svelte.d.ts +18 -0
  161. package/dist/components/molecules/PropertyField/PropertyField.svelte +57 -3
  162. package/dist/components/molecules/PropertyField/PropertyField.svelte.d.ts +10 -0
  163. package/dist/components/molecules/PropertyField/PropertyFieldStory.svelte +21 -0
  164. package/dist/components/molecules/PropertyGroup/PropertyGroup.svelte +1 -1
  165. package/dist/components/molecules/QueryBuilder/QueryBuilder.stories.d.ts +9 -0
  166. package/dist/components/molecules/QueryBuilder/QueryBuilder.stories.js +8 -0
  167. package/dist/components/molecules/QueryBuilder/QueryBuilder.svelte +52 -0
  168. package/dist/components/molecules/QueryBuilder/QueryBuilder.svelte.d.ts +18 -0
  169. package/dist/components/molecules/QueryBuilder/QueryBuilderStory.svelte +62 -0
  170. package/dist/components/molecules/QueryBuilder/QueryBuilderStory.svelte.d.ts +3 -0
  171. package/dist/components/molecules/RelationPicker/RelationPicker.stories.d.ts +9 -0
  172. package/dist/components/molecules/RelationPicker/RelationPicker.stories.js +8 -0
  173. package/dist/components/molecules/RelationPicker/RelationPicker.svelte +180 -0
  174. package/dist/components/molecules/RelationPicker/RelationPicker.svelte.d.ts +24 -0
  175. package/dist/components/molecules/RelationPicker/RelationPickerStory.svelte +16 -0
  176. package/dist/components/molecules/RelationPicker/RelationPickerStory.svelte.d.ts +3 -0
  177. package/dist/components/molecules/SchemaFieldBuilder/SchemaFieldBuilder.stories.d.ts +9 -0
  178. package/dist/components/molecules/SchemaFieldBuilder/SchemaFieldBuilder.stories.js +8 -0
  179. package/dist/components/molecules/SchemaFieldBuilder/SchemaFieldBuilder.svelte +154 -0
  180. package/dist/components/molecules/SchemaFieldBuilder/SchemaFieldBuilder.svelte.d.ts +12 -0
  181. package/dist/components/molecules/SchemaFieldBuilder/SchemaFieldBuilderStory.svelte +16 -0
  182. package/dist/components/molecules/SchemaFieldBuilder/SchemaFieldBuilderStory.svelte.d.ts +3 -0
  183. package/dist/components/molecules/SecretField/SecretField.stories.d.ts +9 -0
  184. package/dist/components/molecules/SecretField/SecretField.stories.js +8 -0
  185. package/dist/components/molecules/SecretField/SecretField.svelte +58 -0
  186. package/dist/components/molecules/SecretField/SecretField.svelte.d.ts +15 -0
  187. package/dist/components/molecules/SecretField/SecretFieldStory.svelte +8 -0
  188. package/dist/components/molecules/SecretField/SecretFieldStory.svelte.d.ts +3 -0
  189. package/dist/components/molecules/SplitPane/SplitPane.svelte +96 -37
  190. package/dist/components/molecules/SplitPane/SplitPane.svelte.d.ts +10 -2
  191. package/dist/components/molecules/TableToolbar/TableToolbar.svelte.d.ts +1 -1
  192. package/dist/components/molecules/Terminal/Terminal.stories.js +20 -0
  193. package/dist/components/molecules/Terminal/Terminal.svelte +238 -0
  194. package/dist/components/molecules/Terminal/Terminal.svelte.d.ts +19 -0
  195. package/dist/components/molecules/Terminal/TerminalStory.svelte +47 -0
  196. package/dist/components/molecules/Terminal/TerminalStory.svelte.d.ts +6 -0
  197. package/dist/components/molecules/TimelineClip/TimelineClip.stories.js +8 -0
  198. package/dist/components/molecules/TimelineClip/TimelineClip.svelte +116 -0
  199. package/dist/components/molecules/TimelineClip/TimelineClip.svelte.d.ts +15 -0
  200. package/dist/components/molecules/TimelineClip/TimelineClipStory.svelte +18 -0
  201. package/dist/components/molecules/TimelineClip/TimelineClipStory.svelte.d.ts +18 -0
  202. package/dist/components/molecules/TimelineTrack/TimelineTrack.stories.js +8 -0
  203. package/dist/components/molecules/TimelineTrack/TimelineTrack.svelte +56 -0
  204. package/dist/components/molecules/TimelineTrack/TimelineTrack.svelte.d.ts +16 -0
  205. package/dist/components/molecules/TimelineTrack/TimelineTrackStory.svelte +35 -0
  206. package/dist/components/molecules/TimelineTrack/TimelineTrackStory.svelte.d.ts +18 -0
  207. package/dist/components/molecules/TraceWaterfall/TraceWaterfall.stories.js +8 -0
  208. package/dist/components/molecules/TraceWaterfall/TraceWaterfall.svelte +158 -0
  209. package/dist/components/molecules/TraceWaterfall/TraceWaterfall.svelte.d.ts +18 -0
  210. package/dist/components/molecules/TraceWaterfall/TraceWaterfallStory.svelte +55 -0
  211. package/dist/components/molecules/TraceWaterfall/TraceWaterfallStory.svelte.d.ts +18 -0
  212. package/dist/components/molecules/TrackHeader/TrackHeader.stories.d.ts +9 -0
  213. package/dist/components/molecules/TrackHeader/TrackHeader.stories.js +8 -0
  214. package/dist/components/molecules/TrackHeader/TrackHeader.svelte +54 -0
  215. package/dist/components/molecules/TrackHeader/TrackHeader.svelte.d.ts +9 -0
  216. package/dist/components/molecules/TrackHeader/TrackHeaderStory.svelte +10 -0
  217. package/dist/components/molecules/TrackHeader/TrackHeaderStory.svelte.d.ts +3 -0
  218. package/dist/components/molecules/TransportControls/TransportControls.stories.d.ts +9 -0
  219. package/dist/components/molecules/TransportControls/TransportControls.stories.js +8 -0
  220. package/dist/components/molecules/TransportControls/TransportControls.svelte +53 -0
  221. package/dist/components/molecules/TransportControls/TransportControls.svelte.d.ts +12 -0
  222. package/dist/components/molecules/TransportControls/TransportControlsStory.svelte +18 -0
  223. package/dist/components/molecules/TransportControls/TransportControlsStory.svelte.d.ts +3 -0
  224. package/dist/components/molecules/VersionHistoryPanel/VersionHistoryPanel.stories.js +8 -0
  225. package/dist/components/molecules/VersionHistoryPanel/VersionHistoryPanel.svelte +117 -0
  226. package/dist/components/molecules/VersionHistoryPanel/VersionHistoryPanel.svelte.d.ts +20 -0
  227. package/dist/components/molecules/VersionHistoryPanel/VersionHistoryPanelStory.svelte +36 -0
  228. package/dist/components/molecules/VersionHistoryPanel/VersionHistoryPanelStory.svelte.d.ts +18 -0
  229. package/dist/components/molecules/VideoPlayer/VideoPlayer.stories.d.ts +1 -1
  230. package/dist/components/molecules/VideoTrackHeader/VideoTrackHeader.stories.d.ts +9 -0
  231. package/dist/components/molecules/VideoTrackHeader/VideoTrackHeader.stories.js +8 -0
  232. package/dist/components/molecules/VideoTrackHeader/VideoTrackHeader.svelte +59 -0
  233. package/dist/components/molecules/VideoTrackHeader/VideoTrackHeader.svelte.d.ts +9 -0
  234. package/dist/components/molecules/VideoTrackHeader/VideoTrackHeaderStory.svelte +10 -0
  235. package/dist/components/molecules/VideoTrackHeader/VideoTrackHeaderStory.svelte.d.ts +3 -0
  236. package/dist/components/molecules/WaveformRegion/WaveformRegion.stories.js +8 -0
  237. package/dist/components/molecules/WaveformRegion/WaveformRegion.svelte +82 -0
  238. package/dist/components/molecules/WaveformRegion/WaveformRegion.svelte.d.ts +13 -0
  239. package/dist/components/molecules/WaveformRegion/WaveformRegionStory.svelte +17 -0
  240. package/dist/components/molecules/WaveformRegion/WaveformRegionStory.svelte.d.ts +18 -0
  241. package/dist/components/molecules/WidgetCanvas/WidgetCanvas.svelte +13 -4
  242. package/dist/components/molecules/WidgetCanvas/WidgetCanvas.svelte.d.ts +3 -1
  243. package/dist/components/molecules/WidgetCanvas/widgetCanvasContext.d.ts +2 -0
  244. package/dist/components/molecules/WidgetFrame/WidgetFrame.svelte +206 -37
  245. package/dist/components/molecules/WidgetFrame/WidgetFrame.svelte.d.ts +31 -0
  246. package/dist/components/organisms/AssetPickerPage/AssetPickerPage.svelte.d.ts +1 -1
  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 +273 -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/BacklogPage/BacklogPage.svelte.d.ts +1 -1
  254. package/dist/components/organisms/BlogEditor/BlogEditor.stories.d.ts +12 -0
  255. package/dist/components/organisms/BlogEditor/BlogEditor.stories.js +9 -0
  256. package/dist/components/organisms/BlogEditor/BlogEditor.svelte +1208 -0
  257. package/dist/components/organisms/BlogEditor/BlogEditor.svelte.d.ts +16 -0
  258. package/dist/components/organisms/BlogEditor/BlogEditorStory.svelte +144 -0
  259. package/dist/components/organisms/BlogEditor/BlogEditorStory.svelte.d.ts +3 -0
  260. package/dist/components/organisms/BlogEditor/DemoBlogCard.svelte +28 -0
  261. package/dist/components/organisms/BlogEditor/DemoBlogCard.svelte.d.ts +10 -0
  262. package/dist/components/organisms/BlogEditor/DemoBlogStats.svelte +34 -0
  263. package/dist/components/organisms/BlogEditor/DemoBlogStats.svelte.d.ts +11 -0
  264. package/dist/components/organisms/BlogEditor/DemoBlogWidget.svelte +13 -0
  265. package/dist/components/organisms/BlogEditor/DemoBlogWidget.svelte.d.ts +8 -0
  266. package/dist/components/organisms/BlogRenderer/BlogRenderer.stories.js +8 -0
  267. package/dist/components/organisms/BlogRenderer/BlogRenderer.svelte +469 -0
  268. package/dist/components/organisms/BlogRenderer/BlogRenderer.svelte.d.ts +14 -0
  269. package/dist/components/organisms/BlogRenderer/BlogRendererStory.svelte +20 -0
  270. package/dist/components/organisms/BlogRenderer/BlogRendererStory.svelte.d.ts +18 -0
  271. package/dist/components/organisms/BlueprintEditor/BlueprintEditor.stories.d.ts +12 -0
  272. package/dist/components/organisms/BlueprintEditor/BlueprintEditor.stories.js +9 -0
  273. package/dist/components/organisms/BlueprintEditor/BlueprintEditor.svelte +1012 -0
  274. package/dist/components/organisms/BlueprintEditor/BlueprintEditor.svelte.d.ts +16 -0
  275. package/dist/components/organisms/BlueprintEditor/BlueprintEditorStory.svelte +76 -0
  276. package/dist/components/organisms/BlueprintEditor/BlueprintEditorStory.svelte.d.ts +3 -0
  277. package/dist/components/organisms/CalendarApp/CalendarApp.svelte.d.ts +1 -1
  278. package/dist/components/organisms/CanvasEditor/CanvasEditor.stories.d.ts +12 -0
  279. package/dist/components/organisms/CanvasEditor/CanvasEditor.stories.js +9 -0
  280. package/dist/components/organisms/CanvasEditor/CanvasEditor.svelte +1680 -0
  281. package/dist/components/organisms/CanvasEditor/CanvasEditor.svelte.d.ts +18 -0
  282. package/dist/components/organisms/CanvasEditor/CanvasEditorStory.svelte +329 -0
  283. package/dist/components/organisms/CanvasEditor/CanvasEditorStory.svelte.d.ts +3 -0
  284. package/dist/components/organisms/DashboardBuilderPage/DashboardBuilderPage.svelte.d.ts +1 -1
  285. package/dist/components/organisms/DataGrid/DataGrid.stories.d.ts +65 -0
  286. package/dist/components/organisms/DataGrid/DataGrid.stories.js +95 -0
  287. package/dist/components/organisms/DataGrid/DataGrid.svelte +2264 -0
  288. package/dist/components/organisms/DataGrid/DataGrid.svelte.d.ts +99 -0
  289. package/dist/components/organisms/DataGrid/DataGridStory.svelte +659 -0
  290. package/dist/components/organisms/DataGrid/DataGridStory.svelte.d.ts +11 -0
  291. package/dist/components/organisms/DataGrid/breakpoints.d.ts +10 -0
  292. package/dist/components/organisms/DataGrid/breakpoints.js +20 -0
  293. package/dist/components/organisms/DataGrid/cellEditors.d.ts +8 -0
  294. package/dist/components/organisms/DataGrid/cellEditors.js +59 -0
  295. package/dist/components/organisms/DataGrid/conditionalFormat.d.ts +11 -0
  296. package/dist/components/organisms/DataGrid/conditionalFormat.js +98 -0
  297. package/dist/components/organisms/DataGrid/filterRows.d.ts +5 -0
  298. package/dist/components/organisms/DataGrid/filterRows.js +60 -0
  299. package/dist/components/organisms/DataGrid/marks.d.ts +9 -0
  300. package/dist/components/organisms/DataGrid/marks.js +91 -0
  301. package/dist/components/organisms/DataGrid/types.d.ts +126 -0
  302. package/dist/components/organisms/DataGrid/types.js +21 -0
  303. package/dist/components/organisms/DesktopShell/DesktopShell.svelte.d.ts +1 -1
  304. package/dist/components/organisms/EditorShell/EditorShell.svelte +123 -28
  305. package/dist/components/organisms/EditorShell/EditorShell.svelte.d.ts +21 -1
  306. package/dist/components/organisms/FileUploader/FileUploader.svelte +77 -15
  307. package/dist/components/organisms/FileUploader/FileUploader.svelte.d.ts +11 -0
  308. package/dist/components/organisms/ImportWizard/ImportWizard.stories.js +8 -0
  309. package/dist/components/organisms/ImportWizard/ImportWizard.svelte +209 -0
  310. package/dist/components/organisms/ImportWizard/ImportWizard.svelte.d.ts +22 -0
  311. package/dist/components/organisms/ImportWizard/ImportWizardStory.svelte +16 -0
  312. package/dist/components/organisms/ImportWizard/ImportWizardStory.svelte.d.ts +18 -0
  313. package/dist/components/organisms/ResourceStudio/ResourceStudio.stories.d.ts +33 -0
  314. package/dist/components/organisms/ResourceStudio/ResourceStudio.stories.js +56 -0
  315. package/dist/components/organisms/ResourceStudio/ResourceStudio.svelte +830 -0
  316. package/dist/components/organisms/ResourceStudio/ResourceStudio.svelte.d.ts +68 -0
  317. package/dist/components/organisms/ResourceStudio/ResourceStudioStory.svelte +600 -0
  318. package/dist/components/organisms/ResourceStudio/ResourceStudioStory.svelte.d.ts +7 -0
  319. package/dist/components/organisms/ResourceStudio/fieldsToColumns.d.ts +4 -0
  320. package/dist/components/organisms/ResourceStudio/fieldsToColumns.js +20 -0
  321. package/dist/components/organisms/ResourceStudio/fieldsToSchema.d.ts +6 -0
  322. package/dist/components/organisms/ResourceStudio/fieldsToSchema.js +53 -0
  323. package/dist/components/organisms/ResourceStudio/types.d.ts +69 -0
  324. package/dist/components/organisms/ResourceStudio/types.js +15 -0
  325. package/dist/components/organisms/Scheduler/Scheduler.svelte.d.ts +1 -1
  326. package/dist/components/organisms/SchemaForm/SchemaForm.svelte +10 -3
  327. package/dist/components/organisms/SchemaForm/SchemaForm.svelte.d.ts +1 -0
  328. package/dist/components/organisms/VideoEditor/VideoEditor.stories.d.ts +12 -0
  329. package/dist/components/organisms/VideoEditor/VideoEditor.stories.js +9 -0
  330. package/dist/components/organisms/VideoEditor/VideoEditor.svelte +308 -0
  331. package/dist/components/organisms/VideoEditor/VideoEditor.svelte.d.ts +13 -0
  332. package/dist/components/organisms/VideoEditor/VideoEditorStory.svelte +10 -0
  333. package/dist/components/organisms/VideoEditor/VideoEditorStory.svelte.d.ts +3 -0
  334. package/dist/components/templates/AudioEditorTemplate/AudioEditorTemplate.stories.d.ts +12 -0
  335. package/dist/components/templates/AudioEditorTemplate/AudioEditorTemplate.stories.js +9 -0
  336. package/dist/components/templates/AudioEditorTemplate/AudioEditorTemplate.svelte +22 -0
  337. package/dist/components/templates/AudioEditorTemplate/AudioEditorTemplate.svelte.d.ts +13 -0
  338. package/dist/components/templates/AudioEditorTemplate/AudioEditorTemplateStory.svelte +8 -0
  339. package/dist/components/templates/AudioEditorTemplate/AudioEditorTemplateStory.svelte.d.ts +3 -0
  340. package/dist/components/templates/CanvasEditorTemplate/CanvasEditorTemplate.stories.d.ts +12 -0
  341. package/dist/components/templates/CanvasEditorTemplate/CanvasEditorTemplate.stories.js +9 -0
  342. package/dist/components/templates/CanvasEditorTemplate/CanvasEditorTemplate.svelte +32 -0
  343. package/dist/components/templates/CanvasEditorTemplate/CanvasEditorTemplate.svelte.d.ts +17 -0
  344. package/dist/components/templates/CanvasEditorTemplate/CanvasEditorTemplateStory.svelte +21 -0
  345. package/dist/components/templates/CanvasEditorTemplate/CanvasEditorTemplateStory.svelte.d.ts +3 -0
  346. package/dist/components/templates/ResourceStudioTemplate/ResourceStudioTemplate.stories.d.ts +25 -0
  347. package/dist/components/templates/ResourceStudioTemplate/ResourceStudioTemplate.stories.js +18 -0
  348. package/dist/components/templates/ResourceStudioTemplate/ResourceStudioTemplate.svelte +192 -0
  349. package/dist/components/templates/ResourceStudioTemplate/ResourceStudioTemplate.svelte.d.ts +62 -0
  350. package/dist/components/templates/ResourceStudioTemplate/ResourceStudioTemplateStory.svelte +129 -0
  351. package/dist/components/templates/ResourceStudioTemplate/ResourceStudioTemplateStory.svelte.d.ts +7 -0
  352. package/dist/components/templates/VideoEditorTemplate/VideoEditorTemplate.stories.d.ts +12 -0
  353. package/dist/components/templates/VideoEditorTemplate/VideoEditorTemplate.stories.js +9 -0
  354. package/dist/components/templates/VideoEditorTemplate/VideoEditorTemplate.svelte +22 -0
  355. package/dist/components/templates/VideoEditorTemplate/VideoEditorTemplate.svelte.d.ts +13 -0
  356. package/dist/components/templates/VideoEditorTemplate/VideoEditorTemplateStory.svelte +8 -0
  357. package/dist/components/templates/VideoEditorTemplate/VideoEditorTemplateStory.svelte.d.ts +3 -0
  358. package/dist/index.d.ts +94 -1
  359. package/dist/index.js +68 -0
  360. package/dist/types/xyflow-svelte.d.ts +62 -0
  361. package/dist/utils/audioProject.d.ts +19 -0
  362. package/dist/utils/audioProject.js +70 -0
  363. package/dist/utils/blogDocument.d.ts +175 -0
  364. package/dist/utils/blogDocument.js +220 -0
  365. package/dist/utils/blueprintRuntime.d.ts +34 -0
  366. package/dist/utils/blueprintRuntime.js +289 -0
  367. package/dist/utils/canvasDocument.d.ts +239 -0
  368. package/dist/utils/canvasDocument.js +443 -0
  369. package/dist/utils/canvasExport.d.ts +10 -0
  370. package/dist/utils/canvasExport.js +469 -0
  371. package/dist/utils/canvasHierarchy.d.ts +189 -0
  372. package/dist/utils/canvasHierarchy.js +674 -0
  373. package/dist/utils/canvasHistory.d.ts +19 -0
  374. package/dist/utils/canvasHistory.js +48 -0
  375. package/dist/utils/canvasWidget.d.ts +81 -0
  376. package/dist/utils/canvasWidget.js +597 -0
  377. package/dist/utils/marqueeSelect.d.ts +48 -0
  378. package/dist/utils/marqueeSelect.js +189 -0
  379. package/dist/utils/mediaTime.d.ts +16 -0
  380. package/dist/utils/mediaTime.js +57 -0
  381. package/dist/utils/mediaTracks.d.ts +61 -0
  382. package/dist/utils/mediaTracks.js +102 -0
  383. package/dist/utils/nodeGraph.d.ts +354 -0
  384. package/dist/utils/nodeGraph.js +1453 -0
  385. package/dist/utils/queryBridge.d.ts +18 -0
  386. package/dist/utils/queryBridge.js +118 -0
  387. package/dist/utils/videoSequence.d.ts +13 -0
  388. package/dist/utils/videoSequence.js +63 -0
  389. package/package.json +5 -2
@@ -0,0 +1,28 @@
1
+ import { type CanvasAlign, type CanvasDocument, type CanvasLayer, type CanvasWidgetDefinition } from '../../../utils/canvasDocument.js';
2
+ import type { Component } from 'svelte';
3
+ interface CanvasInspectorProps {
4
+ document?: CanvasDocument | null;
5
+ layer?: CanvasLayer | null;
6
+ selectionCount?: number;
7
+ /** When editing inside a User Widget definition — enables eye toggles. */
8
+ widgetDefinition?: CanvasWidgetDefinition | null;
9
+ class?: string;
10
+ ondocumentchange?: (doc: CanvasDocument) => void;
11
+ onchange?: (layer: CanvasLayer) => void;
12
+ onalign?: (align: CanvasAlign) => void;
13
+ onexpose?: (payload: {
14
+ layerId: string;
15
+ field: string;
16
+ exposed: boolean;
17
+ label: string;
18
+ }) => void;
19
+ onoverride?: (payload: {
20
+ propId: string;
21
+ value: unknown;
22
+ }) => void;
23
+ oneditwidget?: (definitionId: string) => void;
24
+ onbreakwidget?: () => void;
25
+ }
26
+ declare const CanvasInspector: Component<CanvasInspectorProps, {}, "">;
27
+ type CanvasInspector = ReturnType<typeof CanvasInspector>;
28
+ export default CanvasInspector;
@@ -0,0 +1,20 @@
1
+ <script lang="ts">
2
+ import CanvasInspector from './CanvasInspector.svelte';
3
+ import { createCanvasLayer, emptyCanvasDocument } from '../../../utils/canvasDocument.js';
4
+
5
+ let layer = $state(
6
+ createCanvasLayer('text', { name: 'Title', text: 'Hello', rect: { x: 10, y: 20, w: 200, h: 60 } })
7
+ );
8
+ let doc = $state(emptyCanvasDocument());
9
+ </script>
10
+
11
+ <div class="w-72 rounded-lg border border-border bg-surface-elevated">
12
+ <CanvasInspector
13
+ document={doc}
14
+ {layer}
15
+ ondocumentchange={(d) => (doc = d)}
16
+ onchange={(l) => {
17
+ layer = l;
18
+ }}
19
+ />
20
+ </div>
@@ -0,0 +1,3 @@
1
+ declare const CanvasInspectorStory: import("svelte").Component<Record<string, never>, {}, "">;
2
+ type CanvasInspectorStory = ReturnType<typeof CanvasInspectorStory>;
3
+ export default CanvasInspectorStory;
@@ -57,23 +57,27 @@
57
57
 
58
58
  <div
59
59
  class={[
60
- 'overflow-hidden rounded-xl border border-border bg-zinc-950 text-zinc-100 shadow-sm',
60
+ 'flex flex-col overflow-hidden rounded-xl border border-border bg-surface-elevated text-primary shadow-sm',
61
61
  className
62
62
  ]}
63
63
  >
64
64
  {#if filename || language}
65
- <div class="flex items-center justify-between border-b border-zinc-800 bg-zinc-900/80 px-3 py-1.5">
66
- <span class="truncate font-mono text-[11px] text-zinc-400">{filename || language}</span>
67
- <span class="rounded bg-zinc-800 px-1.5 py-0.5 font-mono text-[10px] uppercase tracking-wide text-zinc-500">
65
+ <div
66
+ class="flex shrink-0 items-center justify-between border-b border-border bg-surface-overlay/80 px-3 py-1.5"
67
+ >
68
+ <span class="truncate font-mono text-[11px] text-secondary">{filename || language}</span>
69
+ <span
70
+ class="rounded bg-surface-overlay px-1.5 py-0.5 font-mono text-[10px] tracking-wide text-muted uppercase"
71
+ >
68
72
  {language}
69
73
  </span>
70
74
  </div>
71
75
  {/if}
72
76
 
73
- <div class="relative flex" style:min-height={`${minHeight}px`}>
77
+ <div class="relative flex min-h-0 flex-1" style:min-height={`${minHeight}px`}>
74
78
  {#if showLineNumbers}
75
79
  <div
76
- class="select-none border-r border-zinc-800 bg-zinc-950/80 py-3 pl-3 pr-2 text-right font-mono text-[11px] leading-5 text-zinc-600"
80
+ class="select-none border-r border-border bg-surface-overlay/60 py-3 pr-2 pl-3 text-right font-mono text-[11px] leading-5 text-muted"
77
81
  aria-hidden="true"
78
82
  >
79
83
  {#each lineNums as n (n)}
@@ -82,11 +86,10 @@
82
86
  </div>
83
87
  {/if}
84
88
 
85
- <div class="relative min-w-0 flex-1">
89
+ <div class="relative min-h-0 min-w-0 flex-1">
86
90
  <textarea
87
91
  bind:this={textareaEl}
88
- class="absolute inset-0 z-10 h-full w-full resize-none bg-transparent p-3 font-mono text-[12px] leading-5 text-transparent caret-zinc-100 outline-none selection:bg-brand-500/40"
89
- style:min-height={`${minHeight}px`}
92
+ class="absolute inset-0 z-10 h-full w-full resize-none bg-transparent p-3 font-mono text-[12px] leading-5 text-transparent caret-[var(--text-primary)] outline-none selection:bg-brand-500/40"
90
93
  {value}
91
94
  {readonly}
92
95
  {placeholder}
@@ -100,7 +103,7 @@
100
103
  ></textarea>
101
104
  <pre
102
105
  bind:this={preEl}
103
- class="pointer-events-none absolute inset-0 overflow-auto whitespace-pre p-3 font-mono text-[12px] leading-5 text-zinc-200"
106
+ class="pointer-events-none absolute inset-0 overflow-auto whitespace-pre p-3 font-mono text-[12px] leading-5 text-primary"
104
107
  aria-hidden="true"
105
108
  ><code>{value || ' '}</code></pre>
106
109
  </div>
@@ -45,6 +45,9 @@
45
45
 
46
46
  let rootEl = $state<HTMLDivElement | null>(null);
47
47
  let svEl = $state<HTMLDivElement | null>(null);
48
+ let triggerEl = $state<HTMLButtonElement | null>(null);
49
+ let panelEl = $state<HTMLDivElement | null>(null);
50
+ let panelStyle = $state('');
48
51
 
49
52
  let hue = $state(250);
50
53
  let sat = $state(0.72);
@@ -53,6 +56,8 @@
53
56
  let dragging: 'sv' | 'hue' | 'alpha' | null = null;
54
57
  let syncing = false;
55
58
 
59
+ const panelId = `color-picker-${Math.random().toString(36).slice(2, 9)}`;
60
+
56
61
  const rgba = $derived(hsvToRgb(hue, sat, val));
57
62
 
58
63
  const preview = $derived(
@@ -66,10 +71,11 @@
66
71
  const parsed = parseColor(value);
67
72
  if (!parsed) return;
68
73
  const hsv = rgbToHsv(parsed.r, parsed.g, parsed.b);
69
- hue = hsv.h;
70
- sat = hsv.s;
71
- val = hsv.v;
72
- alp = alpha ? parsed.a : 1;
74
+ if (hue !== hsv.h) hue = hsv.h;
75
+ if (sat !== hsv.s) sat = hsv.s;
76
+ if (val !== hsv.v) val = hsv.v;
77
+ const nextAlp = alpha ? parsed.a : 1;
78
+ if (alp !== nextAlp) alp = nextAlp;
73
79
  });
74
80
 
75
81
  function commit() {
@@ -96,15 +102,11 @@
96
102
  commit();
97
103
  }
98
104
 
99
- function onDocPointerDown(e: PointerEvent) {
100
- if (!open || !rootEl) return;
101
- const path = typeof e.composedPath === 'function' ? e.composedPath() : [];
102
- if (path.includes(rootEl) || rootEl.contains(e.target as Node)) return;
103
- open = false;
104
- }
105
-
106
105
  function onKey(e: KeyboardEvent) {
107
- if (e.key === 'Escape' && open) open = false;
106
+ if (e.key === 'Escape' && open) {
107
+ open = false;
108
+ hidePanel();
109
+ }
108
110
  }
109
111
 
110
112
  function onPointer(e: PointerEvent) {
@@ -162,25 +164,77 @@
162
164
  Math.abs(pa.a - pb.a) < 0.01
163
165
  );
164
166
  }
167
+
168
+ function positionPanel() {
169
+ if (!triggerEl) return;
170
+ const rect = triggerEl.getBoundingClientRect();
171
+ const gap = 8;
172
+ const panelW = 288;
173
+ const approxH = 340;
174
+ const spaceBelow = window.innerHeight - rect.bottom - gap;
175
+ const spaceAbove = rect.top - gap;
176
+ const openUp = spaceBelow < Math.min(approxH, 220) && spaceAbove > spaceBelow;
177
+ const left = Math.min(Math.max(8, rect.left), window.innerWidth - panelW - 8);
178
+ panelStyle = [
179
+ `top:${openUp ? 'auto' : `${rect.bottom + gap}px`}`,
180
+ `bottom:${openUp ? `${window.innerHeight - rect.top + gap}px` : 'auto'}`,
181
+ `left:${left}px`,
182
+ `width:${panelW}px`,
183
+ `margin:0`
184
+ ].join(';');
185
+ }
186
+
187
+ function showPanel() {
188
+ if (disabled || !panelEl) return;
189
+ positionPanel();
190
+ if (!panelEl.matches(':popover-open')) panelEl.showPopover();
191
+ }
192
+
193
+ function hidePanel() {
194
+ if (panelEl?.matches(':popover-open')) panelEl.hidePopover();
195
+ }
196
+
197
+ function togglePanel() {
198
+ if (disabled) return;
199
+ if (panelEl?.matches(':popover-open')) hidePanel();
200
+ else showPanel();
201
+ }
202
+
203
+ function handleBeforeToggle(event: ToggleEvent) {
204
+ if (event.newState === 'open') {
205
+ if (disabled) {
206
+ event.preventDefault();
207
+ return;
208
+ }
209
+ positionPanel();
210
+ }
211
+ }
212
+
213
+ function handleToggle(event: ToggleEvent) {
214
+ open = event.newState === 'open';
215
+ }
165
216
  </script>
166
217
 
167
- <svelte:document
168
- onpointerdown={onDocPointerDown}
169
- onkeydown={onKey}
170
- onpointermove={onPointer}
171
- onpointerup={onPointerUp}
218
+ <svelte:window
219
+ onscroll={() => open && positionPanel()}
220
+ onresize={() => open && positionPanel()}
172
221
  />
173
222
 
174
- <div class={['relative w-full max-w-xs', className]} bind:this={rootEl}>
223
+ <svelte:document onkeydown={onKey} onpointermove={onPointer} onpointerup={onPointerUp} />
224
+
225
+ <div class={['relative w-full min-w-0', className]} bind:this={rootEl}>
175
226
  {#if label}
176
227
  <span class="mb-1.5 block text-sm font-medium text-primary">{label}</span>
177
228
  {/if}
178
229
 
179
230
  <button
180
231
  type="button"
232
+ bind:this={triggerEl}
181
233
  {disabled}
182
234
  aria-expanded={open}
183
- onclick={() => !disabled && (open = !open)}
235
+ aria-controls={panelId}
236
+ aria-haspopup="dialog"
237
+ onclick={togglePanel}
184
238
  class={[
185
239
  'flex h-10 w-full items-center gap-2.5 rounded-xl border border-border bg-surface-elevated px-2.5 text-left transition-colors',
186
240
  'hover:bg-surface-overlay focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-brand-500/20',
@@ -197,99 +251,115 @@
197
251
  </svg>
198
252
  </button>
199
253
 
200
- {#if open}
254
+ <div
255
+ bind:this={panelEl}
256
+ id={panelId}
257
+ popover="auto"
258
+ role="dialog"
259
+ aria-label="Color picker"
260
+ class="color-picker-panel z-50 rounded-2xl border border-border bg-surface-elevated p-3 shadow-xl"
261
+ style={panelStyle}
262
+ onbeforetoggle={handleBeforeToggle}
263
+ ontoggle={handleToggle}
264
+ >
201
265
  <div
202
- role="dialog"
203
- aria-label="Color picker"
204
- class="absolute left-0 z-50 mt-2 w-72 rounded-2xl border border-border bg-surface-elevated p-3 shadow-xl"
266
+ bind:this={svEl}
267
+ role="presentation"
268
+ class="relative h-36 w-full cursor-crosshair touch-none overflow-hidden rounded-xl"
269
+ style:background={`linear-gradient(to top, #000, transparent), linear-gradient(to right, #fff, hsl(${hue} 100% 50%))`}
270
+ onpointerdown={startSv}
205
271
  >
206
- <!-- Saturation / Value -->
207
- <div
208
- bind:this={svEl}
209
- role="presentation"
210
- class="relative h-36 w-full cursor-crosshair touch-none overflow-hidden rounded-xl"
211
- style:background={`linear-gradient(to top, #000, transparent), linear-gradient(to right, #fff, hsl(${hue} 100% 50%))`}
212
- onpointerdown={startSv}
213
- >
214
- <span
215
- class="pointer-events-none absolute h-4 w-4 -translate-x-1/2 -translate-y-1/2 rounded-full border-2 border-white shadow"
216
- style:left={`${sat * 100}%`}
217
- style:top={`${(1 - val) * 100}%`}
218
- style:background={preview}
219
- ></span>
220
- </div>
272
+ <span
273
+ class="pointer-events-none absolute h-4 w-4 -translate-x-1/2 -translate-y-1/2 rounded-full border-2 border-white shadow"
274
+ style:left={`${sat * 100}%`}
275
+ style:top={`${(1 - val) * 100}%`}
276
+ style:background={preview}
277
+ ></span>
278
+ </div>
221
279
 
222
- <!-- Hue -->
223
- <label class="mt-3 block">
224
- <span class="sr-only">Hue</span>
280
+ <label class="mt-3 block">
281
+ <span class="sr-only">Hue</span>
282
+ <input
283
+ type="range"
284
+ min="0"
285
+ max="360"
286
+ step="1"
287
+ value={hue}
288
+ oninput={onHueInput}
289
+ class="cp-hue h-3 w-full cursor-pointer appearance-none rounded-full"
290
+ />
291
+ </label>
292
+
293
+ {#if alpha}
294
+ <label class="mt-2 block">
295
+ <span class="sr-only">Opacity</span>
225
296
  <input
226
297
  type="range"
227
298
  min="0"
228
- max="360"
229
- step="1"
230
- value={hue}
231
- oninput={onHueInput}
232
- class="cp-hue h-3 w-full cursor-pointer appearance-none rounded-full"
299
+ max="1"
300
+ step="0.01"
301
+ value={alp}
302
+ oninput={onAlphaInput}
303
+ class="cp-alpha h-3 w-full cursor-pointer appearance-none rounded-full"
304
+ style:--cp-alpha-color={`rgba(${rgba.r},${rgba.g},${rgba.b},1)`}
233
305
  />
234
306
  </label>
235
-
307
+ {/if}
308
+
309
+ <div class="mt-3 flex items-center gap-2">
310
+ <span class="cp-checker relative h-9 w-9 shrink-0 overflow-hidden rounded-lg border border-border">
311
+ <span class="absolute inset-0" style:background={preview}></span>
312
+ </span>
313
+ <input
314
+ type="text"
315
+ value={formatted}
316
+ onchange={onHexInput}
317
+ onkeydown={(e) => e.key === 'Enter' && onHexInput(e)}
318
+ class="h-9 min-w-0 flex-1 rounded-lg border border-border bg-surface px-2.5 font-mono text-xs text-primary outline-none focus:border-brand-500 focus:ring-2 focus:ring-brand-500/20"
319
+ aria-label="Color value"
320
+ />
236
321
  {#if alpha}
237
- <label class="mt-2 block">
238
- <span class="sr-only">Opacity</span>
239
- <input
240
- type="range"
241
- min="0"
242
- max="1"
243
- step="0.01"
244
- value={alp}
245
- oninput={onAlphaInput}
246
- class="cp-alpha h-3 w-full cursor-pointer appearance-none rounded-full"
247
- style:--cp-alpha-color={`rgb(${rgba.r},${rgba.g},${rgba.b},1)`}
248
- />
249
- </label>
250
- {/if}
251
-
252
- <div class="mt-3 flex items-center gap-2">
253
- <span class="cp-checker relative h-9 w-9 shrink-0 overflow-hidden rounded-lg border border-border">
254
- <span class="absolute inset-0" style:background={preview}></span>
322
+ <span class="w-10 shrink-0 text-right font-mono text-[11px] text-muted">
323
+ {Math.round(alp * 100)}%
255
324
  </span>
256
- <input
257
- type="text"
258
- value={formatted}
259
- onchange={onHexInput}
260
- onkeydown={(e) => e.key === 'Enter' && onHexInput(e)}
261
- class="h-9 min-w-0 flex-1 rounded-lg border border-border bg-surface px-2.5 font-mono text-xs text-primary outline-none focus:border-brand-500 focus:ring-2 focus:ring-brand-500/20"
262
- aria-label="Color value"
263
- />
264
- {#if alpha}
265
- <span class="w-10 shrink-0 text-right font-mono text-[11px] text-muted">
266
- {Math.round(alp * 100)}%
267
- </span>
268
- {/if}
269
- </div>
270
-
271
- {#if showSwatches}
272
- <div class="mt-3 flex flex-wrap gap-1.5">
273
- {#each swatches as swatch (swatch)}
274
- <button
275
- type="button"
276
- onclick={() => pickSwatch(swatch)}
277
- class={[
278
- 'cp-checker relative h-7 w-7 overflow-hidden rounded-full border border-border transition-transform hover:scale-110',
279
- sameColor(value, swatch) && 'ring-2 ring-brand-500 ring-offset-2 ring-offset-surface-elevated'
280
- ]}
281
- aria-label={`Select ${swatch}`}
282
- >
283
- <span class="absolute inset-0" style:background={swatch}></span>
284
- </button>
285
- {/each}
286
- </div>
287
325
  {/if}
288
326
  </div>
289
- {/if}
327
+
328
+ {#if showSwatches}
329
+ <div class="mt-3 flex flex-wrap gap-1.5">
330
+ {#each swatches as swatch (swatch)}
331
+ <button
332
+ type="button"
333
+ onclick={() => pickSwatch(swatch)}
334
+ class={[
335
+ 'cp-checker relative h-7 w-7 overflow-hidden rounded-full border border-border transition-transform hover:scale-110',
336
+ sameColor(value, swatch) &&
337
+ 'ring-2 ring-brand-500 ring-offset-2 ring-offset-surface-elevated'
338
+ ]}
339
+ aria-label={`Select ${swatch}`}
340
+ >
341
+ <span class="absolute inset-0" style:background={swatch}></span>
342
+ </button>
343
+ {/each}
344
+ </div>
345
+ {/if}
346
+ </div>
290
347
  </div>
291
348
 
292
349
  <style>
350
+
351
+ .color-picker-panel {
352
+ position: fixed;
353
+ }
354
+
355
+ .color-picker-panel:popover-open {
356
+ display: block;
357
+ }
358
+
359
+ .color-picker-panel:not(:popover-open) {
360
+ display: none;
361
+ }
362
+
293
363
  .cp-checker {
294
364
  background-color: #fff;
295
365
  background-image:
@@ -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 ColumnVisibilityMenuStory from './ColumnVisibilityMenuStory.svelte';
2
+ const meta = {
3
+ title: 'Molecules/ColumnVisibilityMenu',
4
+ component: ColumnVisibilityMenuStory,
5
+ tags: ['autodocs']
6
+ };
7
+ export default meta;
8
+ export const Default = {};
@@ -0,0 +1,108 @@
1
+ <script lang="ts">
2
+ import Checkbox from '../../atoms/Checkbox/Checkbox.svelte';
3
+ import Button from '../../atoms/Button/Button.svelte';
4
+
5
+ export interface ColumnVisibilityItem {
6
+ id: string;
7
+ label: string;
8
+ visible?: boolean;
9
+ locked?: boolean;
10
+ }
11
+
12
+ interface ColumnVisibilityMenuProps {
13
+ columns?: ColumnVisibilityItem[];
14
+ /** Alternative API: ids that are hidden */
15
+ hiddenIds?: string[];
16
+ title?: string;
17
+ class?: string;
18
+ onchange?: (columns: ColumnVisibilityItem[]) => void;
19
+ onhiddenchange?: (hiddenIds: string[]) => void;
20
+ }
21
+
22
+ let {
23
+ columns = $bindable<ColumnVisibilityItem[]>([]),
24
+ hiddenIds = $bindable<string[]>([]),
25
+ title = 'Columns',
26
+ class: className = '',
27
+ onchange,
28
+ onhiddenchange
29
+ }: ColumnVisibilityMenuProps = $props();
30
+
31
+ const items = $derived.by(() => {
32
+ if (columns.length) {
33
+ return columns.map((c) => ({
34
+ ...c,
35
+ visible: hiddenIds.length
36
+ ? !hiddenIds.includes(c.id)
37
+ : (c.visible ?? true)
38
+ }));
39
+ }
40
+ return [];
41
+ });
42
+
43
+ function emit(next: ColumnVisibilityItem[]) {
44
+ columns = next;
45
+ const hidden = next.filter((c) => c.visible === false).map((c) => c.id);
46
+ hiddenIds = hidden;
47
+ onchange?.(next);
48
+ onhiddenchange?.(hidden);
49
+ }
50
+
51
+ function toggle(id: string) {
52
+ const next = items.map((c) =>
53
+ c.id === id && !c.locked ? { ...c, visible: !(c.visible ?? true) } : c
54
+ );
55
+ emit(next);
56
+ }
57
+
58
+ function showAll() {
59
+ emit(items.map((c) => (c.locked ? c : { ...c, visible: true })));
60
+ }
61
+
62
+ function hideOptional() {
63
+ emit(items.map((c) => (c.locked ? c : { ...c, visible: false })));
64
+ }
65
+ </script>
66
+
67
+ <div
68
+ class={[
69
+ 'w-56 overflow-hidden rounded-xl border border-border bg-surface-elevated shadow-lg',
70
+ className
71
+ ]}
72
+ data-column-visibility-menu
73
+ role="group"
74
+ aria-label={title}
75
+ >
76
+ <div class="flex items-center justify-between border-b border-border px-3 py-2">
77
+ <span class="text-xs font-semibold uppercase tracking-wide text-muted">{title}</span>
78
+ <div class="flex gap-1">
79
+ <Button size="sm" variant="ghost" onclick={showAll}>All</Button>
80
+ <Button size="sm" variant="ghost" onclick={hideOptional}>None</Button>
81
+ </div>
82
+ </div>
83
+ <ul class="max-h-64 overflow-auto p-1">
84
+ {#each items as col (col.id)}
85
+ <li>
86
+ <label
87
+ class={[
88
+ 'flex cursor-pointer items-center gap-2 rounded-lg px-2 py-1.5 text-sm text-primary hover:bg-surface-overlay',
89
+ col.locked ? 'opacity-60' : ''
90
+ ]}
91
+ >
92
+ <Checkbox
93
+ checked={col.visible !== false}
94
+ disabled={!!col.locked}
95
+ onchange={(checked) => {
96
+ if (checked === (col.visible !== false)) return;
97
+ toggle(col.id);
98
+ }}
99
+ />
100
+ <span class="truncate">{col.label}</span>
101
+ </label>
102
+ </li>
103
+ {/each}
104
+ {#if !items.length}
105
+ <li class="px-2 py-4 text-center text-xs text-muted">No columns</li>
106
+ {/if}
107
+ </ul>
108
+ </div>
@@ -0,0 +1,18 @@
1
+ export interface ColumnVisibilityItem {
2
+ id: string;
3
+ label: string;
4
+ visible?: boolean;
5
+ locked?: boolean;
6
+ }
7
+ interface ColumnVisibilityMenuProps {
8
+ columns?: ColumnVisibilityItem[];
9
+ /** Alternative API: ids that are hidden */
10
+ hiddenIds?: string[];
11
+ title?: string;
12
+ class?: string;
13
+ onchange?: (columns: ColumnVisibilityItem[]) => void;
14
+ onhiddenchange?: (hiddenIds: string[]) => void;
15
+ }
16
+ declare const ColumnVisibilityMenu: import("svelte").Component<ColumnVisibilityMenuProps, {}, "columns" | "hiddenIds">;
17
+ type ColumnVisibilityMenu = ReturnType<typeof ColumnVisibilityMenu>;
18
+ export default ColumnVisibilityMenu;
@@ -0,0 +1,15 @@
1
+ <script lang="ts">
2
+ import ColumnVisibilityMenu from './ColumnVisibilityMenu.svelte';
3
+ import type { ColumnVisibilityItem } from './ColumnVisibilityMenu.svelte';
4
+
5
+ let columns = $state<ColumnVisibilityItem[]>([
6
+ { id: 'name', label: 'Name', locked: true },
7
+ { id: 'email', label: 'Email', visible: true },
8
+ { id: 'role', label: 'Role', visible: true },
9
+ { id: 'created', label: 'Created', visible: false }
10
+ ]);
11
+ </script>
12
+
13
+ <div class="p-6">
14
+ <ColumnVisibilityMenu bind:columns />
15
+ </div>
@@ -0,0 +1,3 @@
1
+ declare const ColumnVisibilityMenuStory: import("svelte").Component<Record<string, never>, {}, "">;
2
+ type ColumnVisibilityMenuStory = ReturnType<typeof ColumnVisibilityMenuStory>;
3
+ export default ColumnVisibilityMenuStory;
@@ -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 ConditionalFormatPanelStory from './ConditionalFormatPanelStory.svelte';
2
+ const meta = {
3
+ title: 'Molecules/ConditionalFormatPanel',
4
+ component: ConditionalFormatPanelStory,
5
+ tags: ['autodocs']
6
+ };
7
+ export default meta;
8
+ export const Default = {};