@flikk/ui 1.0.0-beta.26 → 1.0.0-beta.29

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 (418) hide show
  1. package/dist/bg/1.webp +0 -0
  2. package/dist/bg/10.webp +0 -0
  3. package/dist/bg/11.webp +0 -0
  4. package/dist/bg/12.webp +0 -0
  5. package/dist/bg/13.webp +0 -0
  6. package/dist/bg/14.webp +0 -0
  7. package/dist/bg/15.webp +0 -0
  8. package/dist/bg/16.webp +0 -0
  9. package/dist/bg/17.webp +0 -0
  10. package/dist/bg/18.webp +0 -0
  11. package/dist/bg/19.webp +0 -0
  12. package/dist/bg/2.webp +0 -0
  13. package/dist/bg/20.webp +0 -0
  14. package/dist/bg/21.webp +0 -0
  15. package/dist/bg/22.webp +0 -0
  16. package/dist/bg/3.webp +0 -0
  17. package/dist/bg/4.webp +0 -0
  18. package/dist/bg/5.webp +0 -0
  19. package/dist/bg/6.webp +0 -0
  20. package/dist/bg/7.webp +0 -0
  21. package/dist/bg/8.webp +0 -0
  22. package/dist/bg/9.webp +0 -0
  23. package/dist/components/ai/CodeBlock/CodeBlock.theme.js +1 -1
  24. package/dist/components/ai/PromptInput/PromptInput.js +7 -140
  25. package/dist/components/ai/PromptInput/VoiceRecorder.js +0 -85
  26. package/dist/components/ai/TokenCounter/TokenCounter.theme.js +1 -1
  27. package/dist/components/canvas/Background.d.ts +19 -0
  28. package/dist/components/canvas/Background.js +23 -0
  29. package/dist/components/canvas/BaseNode.d.ts +15 -0
  30. package/dist/components/canvas/BaseNode.js +20 -0
  31. package/dist/components/canvas/CanvasToolbar.d.ts +34 -0
  32. package/dist/components/canvas/CanvasToolbar.js +34 -0
  33. package/dist/components/canvas/Edge.d.ts +35 -0
  34. package/dist/components/canvas/Edge.js +97 -0
  35. package/dist/components/canvas/EdgeLayer.d.ts +18 -0
  36. package/dist/components/canvas/EdgeLayer.js +111 -0
  37. package/dist/components/canvas/Handle.d.ts +11 -0
  38. package/dist/components/canvas/Handle.js +63 -0
  39. package/dist/components/canvas/MiniMap.d.ts +22 -0
  40. package/dist/components/canvas/MiniMap.js +105 -0
  41. package/dist/components/canvas/NodeCanvas.d.ts +10 -0
  42. package/dist/components/canvas/NodeCanvas.js +477 -0
  43. package/dist/components/canvas/NodeCanvas.theme.d.ts +7 -0
  44. package/dist/components/canvas/NodeCanvas.theme.js +9 -0
  45. package/dist/components/canvas/NodeCanvas.types.d.ts +187 -0
  46. package/dist/components/canvas/NodeControls.d.ts +25 -0
  47. package/dist/components/canvas/NodeControls.js +40 -0
  48. package/dist/components/canvas/NodeRenderer.d.ts +19 -0
  49. package/dist/components/canvas/NodeRenderer.js +117 -0
  50. package/dist/components/canvas/changes.d.ts +11 -0
  51. package/dist/components/canvas/changes.js +76 -0
  52. package/dist/components/canvas/context/CanvasContext.d.ts +32 -0
  53. package/dist/components/canvas/context/CanvasContext.js +14 -0
  54. package/dist/components/canvas/context/ConnectionContext.d.ts +33 -0
  55. package/dist/components/canvas/context/ConnectionContext.js +13 -0
  56. package/dist/components/canvas/context/HandleRegistry.d.ts +24 -0
  57. package/dist/components/canvas/context/HandleRegistry.js +15 -0
  58. package/dist/components/canvas/context/InteractionContext.d.ts +18 -0
  59. package/dist/components/canvas/context/InteractionContext.js +14 -0
  60. package/dist/components/canvas/context/NodeIdContext.d.ts +3 -0
  61. package/dist/components/canvas/context/NodeIdContext.js +15 -0
  62. package/dist/components/canvas/hooks/useConnection.d.ts +17 -0
  63. package/dist/components/canvas/hooks/useConnection.js +29 -0
  64. package/dist/components/canvas/hooks/useMarquee.d.ts +25 -0
  65. package/dist/components/canvas/hooks/useMarquee.js +91 -0
  66. package/dist/components/canvas/hooks/useNodeDrag.d.ts +23 -0
  67. package/dist/components/canvas/hooks/useNodeDrag.js +110 -0
  68. package/dist/components/canvas/hooks/usePanZoom.d.ts +30 -0
  69. package/dist/components/canvas/hooks/usePanZoom.js +189 -0
  70. package/dist/components/canvas/hooks/useViewport.d.ts +21 -0
  71. package/dist/components/canvas/hooks/useViewport.js +35 -0
  72. package/dist/components/canvas/index.d.ts +14 -0
  73. package/dist/components/canvas/index.js +12 -0
  74. package/dist/components/canvas/layout.d.ts +22 -0
  75. package/dist/components/canvas/layout.js +67 -0
  76. package/dist/components/canvas/utils.d.ts +4 -0
  77. package/dist/components/canvas/utils.js +16 -0
  78. package/dist/components/charts/AreaChart/AreaChart.js +136 -101
  79. package/dist/components/charts/AreaChart/AreaChart.types.d.ts +5 -5
  80. package/dist/components/charts/AreaChart/AreaChart.types.js +1 -0
  81. package/dist/components/charts/BarChart/BarChart.js +207 -143
  82. package/dist/components/charts/BarChart/BarChart.types.d.ts +4 -4
  83. package/dist/components/charts/BarChart/BarChart.types.js +1 -0
  84. package/dist/components/charts/ComboChart/ComboChart.types.d.ts +2 -2
  85. package/dist/components/charts/LineChart/LineChart.js +88 -72
  86. package/dist/components/charts/LineChart/LineChart.types.d.ts +3 -3
  87. package/dist/components/charts/RadarChart/RadarChart.js +1 -1
  88. package/dist/components/charts/RadarChart/RadarChart.theme.js +5 -2
  89. package/dist/components/charts/ScatterPlot/ScatterPlot.js +62 -72
  90. package/dist/components/charts/ScatterPlot/ScatterPlot.theme.js +10 -1
  91. package/dist/components/charts/ScatterPlot/ScatterPlot.types.d.ts +3 -9
  92. package/dist/components/charts/StackedBarChart/StackedBarChart.js +33 -33
  93. package/dist/components/charts/StackedBarChart/StackedBarChart.types.d.ts +2 -2
  94. package/dist/components/charts/hooks/index.d.ts +2 -0
  95. package/dist/components/charts/hooks/useChartDimensions.d.ts +29 -0
  96. package/dist/components/charts/hooks/useChartDimensions.js +42 -0
  97. package/dist/components/charts/shared/ChartTooltip/ChartTooltip.theme.js +1 -1
  98. package/dist/components/charts/types/chart.types.d.ts +11 -2
  99. package/dist/components/charts/types/chart.types.js +10 -3
  100. package/dist/components/core/Avatar/Avatar.js +5 -1
  101. package/dist/components/core/AvatarGroup/AvatarGroup.js +5 -1
  102. package/dist/components/core/AvatarGroup/AvatarGroup.theme.js +4 -2
  103. package/dist/components/core/Badge/Badge.js +1 -1
  104. package/dist/components/core/Badge/Badge.theme.js +16 -15
  105. package/dist/components/core/Button/Button.js +1 -1
  106. package/dist/components/core/Button/Button.theme.js +3 -3
  107. package/dist/components/core/Calendar/Calendar.theme.js +1 -1
  108. package/dist/components/core/Card/Card.js +7 -3
  109. package/dist/components/core/Card/Card.theme.js +3 -3
  110. package/dist/components/core/Card/Card.types.d.ts +27 -2
  111. package/dist/components/core/CommandPalette/CommandItem.js +4 -5
  112. package/dist/components/core/CommandPalette/CommandPalette.js +1 -1
  113. package/dist/components/core/CommandPalette/CommandPalette.theme.js +11 -13
  114. package/dist/components/core/CommandPalette/CommandPalette.types.d.ts +0 -2
  115. package/dist/components/core/ContextMenu/ContextMenu.theme.js +14 -15
  116. package/dist/components/core/ContextMenu/ContextMenuItem.js +1 -1
  117. package/dist/components/core/ContextMenu/ContextMenuSubTrigger.js +1 -1
  118. package/dist/components/core/DotSeparator/DotSeparator.d.ts +3 -0
  119. package/dist/components/core/DotSeparator/DotSeparator.js +19 -0
  120. package/dist/components/core/DotSeparator/DotSeparator.theme.d.ts +2 -0
  121. package/dist/components/core/DotSeparator/DotSeparator.theme.js +10 -0
  122. package/dist/components/core/DotSeparator/DotSeparator.types.d.ts +25 -0
  123. package/dist/components/core/DotSeparator/index.d.ts +3 -0
  124. package/dist/components/core/Dropdown/Dropdown.theme.js +5 -6
  125. package/dist/components/core/Dropdown/DropdownItem.js +1 -1
  126. package/dist/components/core/Dropdown/DropdownMenu.js +58 -30
  127. package/dist/components/core/HeroCard/HeroCard.d.ts +5 -0
  128. package/dist/components/core/HeroCard/HeroCard.js +99 -0
  129. package/dist/components/core/HeroCard/HeroCard.theme.d.ts +3 -0
  130. package/dist/components/core/HeroCard/HeroCard.theme.js +8 -0
  131. package/dist/components/core/HeroCard/HeroCard.types.d.ts +70 -0
  132. package/dist/components/core/HeroCard/index.d.ts +4 -0
  133. package/dist/components/core/Kbd/Kbd.theme.js +1 -1
  134. package/dist/components/core/MenuItem/MenuItem.js +5 -2
  135. package/dist/components/core/MenuItem/MenuItem.theme.d.ts +6 -0
  136. package/dist/components/core/MenuItem/MenuItem.theme.js +19 -16
  137. package/dist/components/core/MenuItem/MenuItem.types.d.ts +2 -0
  138. package/dist/components/core/Modal/Modal.d.ts +1 -1
  139. package/dist/components/core/Modal/Modal.js +2 -7
  140. package/dist/components/core/Modal/Modal.theme.js +4 -8
  141. package/dist/components/core/Modal/Modal.types.d.ts +0 -10
  142. package/dist/components/core/Modal/index.d.ts +1 -1
  143. package/dist/components/core/ModalStack/ModalStack.d.ts +1 -1
  144. package/dist/components/core/ModalStack/ModalStack.types.d.ts +1 -2
  145. package/dist/components/core/ModalStack/ModalStackModal.d.ts +1 -1
  146. package/dist/components/core/ModalStack/ModalStackModal.js +2 -7
  147. package/dist/components/core/NavItem/NavItem.js +20 -4
  148. package/dist/components/core/NavItem/NavItem.theme.js +13 -2
  149. package/dist/components/core/PageHeading/PageHeading.theme.js +2 -2
  150. package/dist/components/core/Popover/Popover.theme.js +1 -1
  151. package/dist/components/core/Popover/Popover.types.d.ts +6 -2
  152. package/dist/components/core/Popover/PopoverBody.js +10 -3
  153. package/dist/components/core/ScrollArea/ScrollArea.js +242 -4
  154. package/dist/components/core/ScrollArea/ScrollArea.types.d.ts +12 -1
  155. package/dist/components/core/ScrollArea/smooth/SmoothScrollEngine.d.ts +4 -0
  156. package/dist/components/core/ScrollArea/smooth/SmoothScrollEngine.js +23 -0
  157. package/dist/components/core/ScrollArea/smooth/useSmoothScroll.js +4 -0
  158. package/dist/components/core/ScrollArea/smooth/useSmoothScroll.types.d.ts +5 -0
  159. package/dist/components/core/Segmented/Segmented.theme.js +2 -2
  160. package/dist/components/core/Sidebar/Sidebar.d.ts +2 -0
  161. package/dist/components/core/Sidebar/Sidebar.js +15 -7
  162. package/dist/components/core/Sidebar/Sidebar.types.d.ts +92 -4
  163. package/dist/components/core/Sidebar/SidebarCard.d.ts +25 -0
  164. package/dist/components/core/Sidebar/SidebarCard.js +68 -0
  165. package/dist/components/core/Sidebar/SidebarCard.theme.d.ts +8 -0
  166. package/dist/components/core/Sidebar/SidebarCard.theme.js +18 -0
  167. package/dist/components/core/Sidebar/SidebarContent.js +5 -1
  168. package/dist/components/core/Sidebar/SidebarContext.js +1 -1
  169. package/dist/components/core/Sidebar/SidebarHeader.js +10 -2
  170. package/dist/components/core/Sidebar/SidebarLogo.js +38 -3
  171. package/dist/components/core/Sidebar/SidebarSearch.d.ts +22 -0
  172. package/dist/components/core/Sidebar/SidebarSearch.js +135 -0
  173. package/dist/components/core/Sidebar/SidebarToggle.js +1 -1
  174. package/dist/components/core/Sidebar/SidebarUserProfile.js +2 -2
  175. package/dist/components/core/Sidebar/index.d.ts +3 -1
  176. package/dist/components/core/Tag/Tag.js +29 -5
  177. package/dist/components/core/Tag/Tag.theme.js +13 -8
  178. package/dist/components/core/Tag/Tag.types.d.ts +7 -0
  179. package/dist/components/core/Tooltip/Tooltip.js +1 -1
  180. package/dist/components/core/Tooltip/Tooltip.theme.js +1 -2
  181. package/dist/components/core/index.d.ts +2 -0
  182. package/dist/components/core/index.js +6 -0
  183. package/dist/components/data-display/DescriptionList/DescriptionList.js +23 -7
  184. package/dist/components/data-display/DescriptionList/DescriptionList.theme.js +10 -3
  185. package/dist/components/data-display/DescriptionList/DescriptionList.types.d.ts +49 -10
  186. package/dist/components/data-display/DescriptionList/index.d.ts +1 -1
  187. package/dist/components/data-display/Feed/Feed.js +28 -5
  188. package/dist/components/data-display/Feed/Feed.theme.js +1 -1
  189. package/dist/components/data-display/Feed/Feed.types.d.ts +32 -1
  190. package/dist/components/data-display/Feed/index.d.ts +1 -1
  191. package/dist/components/data-display/GanttChart/GanttChart.d.ts +1 -1
  192. package/dist/components/data-display/GanttChart/GanttChart.js +31 -4
  193. package/dist/components/data-display/GanttChart/GanttChart.theme.js +19 -17
  194. package/dist/components/data-display/GanttChart/GanttChart.types.d.ts +19 -0
  195. package/dist/components/data-display/GanttChart/GanttChart.utils.js +1 -1
  196. package/dist/components/data-display/GanttChart/GanttChartPanel.d.ts +1 -1
  197. package/dist/components/data-display/GanttChart/GanttChartPanel.js +3 -3
  198. package/dist/components/data-display/GanttChart/GanttDependencyArrows.js +7 -4
  199. package/dist/components/data-display/GanttChart/GanttMilestone.js +5 -5
  200. package/dist/components/data-display/GanttChart/GanttTablePanel.js +1 -1
  201. package/dist/components/data-display/GanttChart/GanttTableTaskRow.js +2 -2
  202. package/dist/components/data-display/GanttChart/GanttTaskBar.js +37 -16
  203. package/dist/components/data-display/GanttChart/GanttTimelineGrid.js +2 -1
  204. package/dist/components/data-display/GanttChart/GanttTimelineHeader.js +35 -11
  205. package/dist/components/data-display/GanttChart/GanttToolbar.js +2 -2
  206. package/dist/components/data-display/GanttChart/hooks/useGanttDrag.js +3 -2
  207. package/dist/components/data-display/GanttChart/index.d.ts +1 -1
  208. package/dist/components/data-display/Metric/Metric.js +8 -8
  209. package/dist/components/data-display/Metric/Metric.theme.d.ts +3 -2
  210. package/dist/components/data-display/Metric/Metric.theme.js +50 -68
  211. package/dist/components/data-display/Metric/Metric.types.d.ts +19 -21
  212. package/dist/components/data-display/Table/Table.js +2 -2
  213. package/dist/components/data-display/Table/Table.theme.js +27 -9
  214. package/dist/components/data-display/Table/Table.types.d.ts +8 -0
  215. package/dist/components/data-display/Table/TableBody.js +2 -2
  216. package/dist/components/data-display/Table/TableCell.js +1 -1
  217. package/dist/components/data-display/Table/TableRow.d.ts +1 -1
  218. package/dist/components/data-display/Table/TableRow.js +9 -2
  219. package/dist/components/data-display/Timeline/Timeline.js +27 -5
  220. package/dist/components/data-display/Timeline/Timeline.theme.d.ts +10 -2
  221. package/dist/components/data-display/Timeline/Timeline.theme.js +14 -8
  222. package/dist/components/data-display/Timeline/Timeline.types.d.ts +48 -16
  223. package/dist/components/data-display/Timeline/Timeline.utils.d.ts +6 -0
  224. package/dist/components/data-display/Timeline/Timeline.utils.js +11 -0
  225. package/dist/components/data-display/Timeline/TimelineItem.js +13 -20
  226. package/dist/components/data-display/Timeline/TimelineMarker.js +10 -8
  227. package/dist/components/data-display/Timeline/index.d.ts +2 -2
  228. package/dist/components/effects/3d/index.d.ts +0 -2
  229. package/dist/components/effects/3d/index.js +0 -1
  230. package/dist/components/effects/Aurora/Aurora.d.ts +6 -17
  231. package/dist/components/effects/Aurora/Aurora.js +297 -131
  232. package/dist/components/effects/Aurora/Aurora.types.d.ts +6 -0
  233. package/dist/components/effects/DotPattern/DotPattern.js +1 -1
  234. package/dist/components/effects/Overlay/Overlay.theme.js +1 -2
  235. package/dist/components/effects/Preloader/Preloader.animations.d.ts +23 -0
  236. package/dist/components/effects/Preloader/Preloader.animations.js +150 -0
  237. package/dist/components/effects/Preloader/Preloader.d.ts +3 -0
  238. package/dist/components/effects/Preloader/Preloader.js +119 -0
  239. package/dist/components/effects/Preloader/Preloader.types.d.ts +63 -0
  240. package/dist/components/effects/Preloader/index.d.ts +2 -0
  241. package/dist/components/effects/ProgressiveBlur/ProgressiveBlur.js +25 -14
  242. package/dist/components/effects/ProgressiveBlur/ProgressiveBlur.types.d.ts +2 -0
  243. package/dist/components/effects/TiltCard/TiltCard.d.ts +12 -0
  244. package/dist/components/effects/TiltCard/TiltCard.glow.d.ts +28 -0
  245. package/dist/components/effects/TiltCard/TiltCard.glow.js +114 -0
  246. package/dist/components/effects/TiltCard/TiltCard.js +177 -0
  247. package/dist/components/effects/{SpotlightBorder/SpotlightBorder.shaders.d.ts → TiltCard/TiltCard.shaders.d.ts} +1 -1
  248. package/dist/components/effects/{SpotlightBorder/SpotlightBorder.shaders.js → TiltCard/TiltCard.shaders.js} +1 -1
  249. package/dist/components/effects/TiltCard/TiltCard.types.d.ts +88 -0
  250. package/dist/components/effects/TiltCard/index.d.ts +2 -0
  251. package/dist/components/effects/index.d.ts +4 -12
  252. package/dist/components/effects/index.js +2 -6
  253. package/dist/components/forms/Checkbox/Checkbox.js +7 -1
  254. package/dist/components/forms/Combobox/Combobox.js +1 -1
  255. package/dist/components/forms/Combobox/Combobox.theme.js +2 -4
  256. package/dist/components/forms/DatePicker/DatePicker.theme.js +11 -18
  257. package/dist/components/forms/DatePicker/DatePickerTrigger.js +1 -1
  258. package/dist/components/forms/DateRangePicker/DateRangePicker.theme.js +6 -13
  259. package/dist/components/forms/DateRangePicker/DateRangePickerTrigger.js +1 -1
  260. package/dist/components/forms/FileUpload/FileUpload.animations.d.ts +29 -0
  261. package/dist/components/forms/FileUpload/FileUpload.animations.js +19 -0
  262. package/dist/components/forms/FileUpload/FileUpload.js +85 -134
  263. package/dist/components/forms/FileUpload/FileUpload.theme.d.ts +2 -10
  264. package/dist/components/forms/FileUpload/FileUpload.theme.js +16 -30
  265. package/dist/components/forms/FileUpload/FileUpload.types.d.ts +26 -10
  266. package/dist/components/forms/FormLabel/FormLabel.theme.js +1 -1
  267. package/dist/components/forms/Input/Input.theme.js +13 -10
  268. package/dist/components/forms/InputCounter/InputCounter.theme.js +1 -1
  269. package/dist/components/forms/Mention/Mention.js +152 -57
  270. package/dist/components/forms/Mention/Mention.theme.js +16 -23
  271. package/dist/components/forms/Mention/Mention.types.d.ts +12 -12
  272. package/dist/components/forms/Mention/Mention.utils.js +32 -4
  273. package/dist/components/forms/RichTextEditor/RichTextEditor.js +3 -3
  274. package/dist/components/forms/RichTextEditor/RichTextEditor.theme.js +5 -5
  275. package/dist/components/forms/Select/Select.js +2 -2
  276. package/dist/components/forms/Select/Select.theme.js +3 -3
  277. package/dist/components/forms/Slider/Slider.theme.js +1 -1
  278. package/dist/components/forms/Switch/Switch.js +27 -15
  279. package/dist/components/forms/Switch/Switch.theme.d.ts +36 -6
  280. package/dist/components/forms/Switch/Switch.theme.js +33 -4
  281. package/dist/components/forms/Switch/Switch.types.d.ts +12 -2
  282. package/dist/components/forms/TimePicker/TimePicker.theme.js +1 -2
  283. package/dist/components/forms/TimePicker/TimePickerContent.js +1 -87
  284. package/dist/components/forms/TimePicker/TimePickerTrigger.js +1 -1
  285. package/dist/components/forms/forms.theme.js +21 -16
  286. package/dist/components/forms/index.d.ts +0 -4
  287. package/dist/components/forms/index.js +0 -89
  288. package/dist/components/generative/GenerativeView.d.ts +21 -0
  289. package/dist/components/generative/GenerativeView.js +116 -0
  290. package/dist/components/generative/actions.d.ts +26 -0
  291. package/dist/components/generative/actions.js +51 -0
  292. package/dist/components/generative/index.d.ts +11 -0
  293. package/dist/components/generative/index.js +9 -0
  294. package/dist/components/generative/registry.d.ts +43 -0
  295. package/dist/components/generative/registry.js +114 -0
  296. package/dist/components/generative/resolvers.d.ts +35 -0
  297. package/dist/components/generative/resolvers.js +93 -0
  298. package/dist/components/generative/schema.generated.d.ts +2 -0
  299. package/dist/components/generative/schema.generated.js +1639 -0
  300. package/dist/components/generative/schemaTypes.d.ts +30 -0
  301. package/dist/components/generative/streaming.d.ts +39 -0
  302. package/dist/components/generative/streaming.js +283 -0
  303. package/dist/components/generative/tools.d.ts +21 -0
  304. package/dist/components/generative/tools.js +54 -0
  305. package/dist/components/generative/types.d.ts +41 -0
  306. package/dist/components/generative/useGenerativeStream.d.ts +37 -0
  307. package/dist/components/generative/useGenerativeStream.js +36 -0
  308. package/dist/components/generative/validate.d.ts +24 -0
  309. package/dist/components/generative/validate.js +259 -0
  310. package/dist/components/layout/AppShell/AppShell.d.ts +10 -0
  311. package/dist/components/layout/AppShell/AppShell.js +84 -0
  312. package/dist/components/layout/AppShell/AppShell.theme.d.ts +3 -0
  313. package/dist/components/layout/AppShell/AppShell.theme.js +42 -0
  314. package/dist/components/layout/AppShell/AppShell.types.d.ts +127 -0
  315. package/dist/components/layout/AppShell/AppShellContext.d.ts +14 -0
  316. package/dist/components/layout/AppShell/AppShellContext.js +19 -0
  317. package/dist/components/layout/AppShell/AppShellFooter.d.ts +3 -0
  318. package/dist/components/layout/AppShell/AppShellFooter.js +12 -0
  319. package/dist/components/layout/AppShell/AppShellHeader.d.ts +3 -0
  320. package/dist/components/layout/AppShell/AppShellHeader.js +12 -0
  321. package/dist/components/layout/AppShell/AppShellMain.d.ts +3 -0
  322. package/dist/components/layout/AppShell/AppShellMain.js +19 -0
  323. package/dist/components/layout/AppShell/AppShellRightPanel.d.ts +3 -0
  324. package/dist/components/layout/AppShell/AppShellRightPanel.js +16 -0
  325. package/dist/components/layout/AppShell/AppShellSidebar.d.ts +3 -0
  326. package/dist/components/layout/AppShell/AppShellSidebar.js +16 -0
  327. package/dist/components/layout/AppShell/AppShellTopbar.d.ts +3 -0
  328. package/dist/components/layout/AppShell/AppShellTopbar.js +12 -0
  329. package/dist/components/layout/AppShell/index.d.ts +3 -0
  330. package/dist/components/layout/FormLayout/FormLayout.js +1 -87
  331. package/dist/components/layout/Grid/Grid.d.ts +3 -0
  332. package/dist/components/layout/Grid/Grid.js +50 -0
  333. package/dist/components/layout/Grid/Grid.theme.d.ts +2 -0
  334. package/dist/components/layout/Grid/Grid.theme.js +35 -0
  335. package/dist/components/layout/Grid/Grid.types.d.ts +57 -0
  336. package/dist/components/layout/Grid/index.d.ts +3 -0
  337. package/dist/components/layout/Section/Section.d.ts +3 -0
  338. package/dist/components/layout/Section/Section.js +18 -0
  339. package/dist/components/layout/Section/Section.theme.d.ts +2 -0
  340. package/dist/components/layout/Section/Section.theme.js +10 -0
  341. package/dist/components/layout/Section/Section.types.d.ts +34 -0
  342. package/dist/components/layout/Section/index.d.ts +3 -0
  343. package/dist/components/layout/Stack/Stack.d.ts +3 -0
  344. package/dist/components/layout/Stack/Stack.js +19 -0
  345. package/dist/components/layout/Stack/Stack.theme.d.ts +2 -0
  346. package/dist/components/layout/Stack/Stack.theme.js +10 -0
  347. package/dist/components/layout/Stack/Stack.types.d.ts +39 -0
  348. package/dist/components/layout/Stack/index.d.ts +3 -0
  349. package/dist/components/layout/index.d.ts +4 -0
  350. package/dist/components/layout/index.js +8 -0
  351. package/dist/generative.schema.json +1637 -0
  352. package/dist/hooks/useSelectPortal.d.ts +10 -2
  353. package/dist/hooks/useSelectPortal.js +45 -24
  354. package/dist/index.js +180 -174
  355. package/dist/registry.json +10205 -0
  356. package/dist/styles.css +1 -1
  357. package/dist/tools.json +1731 -0
  358. package/dist/utils/dateUtils.js +11 -1
  359. package/package.json +19 -4
  360. package/src/global.scss +82 -109
  361. package/src/styles/theme.css +707 -474
  362. package/dist/bg/1.jpg +0 -0
  363. package/dist/bg/10.jpg +0 -0
  364. package/dist/bg/11.jpg +0 -0
  365. package/dist/bg/14.jpg +0 -0
  366. package/dist/bg/15.jpg +0 -0
  367. package/dist/bg/16.jpg +0 -0
  368. package/dist/bg/17.jpg +0 -0
  369. package/dist/bg/18.jpg +0 -0
  370. package/dist/bg/19.jpg +0 -0
  371. package/dist/bg/2.jpg +0 -0
  372. package/dist/bg/20.jpg +0 -0
  373. package/dist/bg/21.jpg +0 -0
  374. package/dist/bg/22.jpg +0 -0
  375. package/dist/bg/23.jpg +0 -0
  376. package/dist/bg/24.jpg +0 -0
  377. package/dist/bg/3.jpg +0 -0
  378. package/dist/bg/4.jpg +0 -0
  379. package/dist/bg/5.jpg +0 -0
  380. package/dist/bg/6.jpg +0 -0
  381. package/dist/bg/7.jpg +0 -0
  382. package/dist/bg/8.jpg +0 -0
  383. package/dist/bg/9.jpg +0 -0
  384. package/dist/components/effects/MorphingText/MorphingText.d.ts +0 -17
  385. package/dist/components/effects/MorphingText/MorphingText.js +0 -125
  386. package/dist/components/effects/MorphingText/MorphingText.types.d.ts +0 -18
  387. package/dist/components/effects/MorphingText/index.d.ts +0 -2
  388. package/dist/components/effects/PageTransition/PageTransition.animations.d.ts +0 -8
  389. package/dist/components/effects/PageTransition/PageTransition.animations.js +0 -53
  390. package/dist/components/effects/PageTransition/PageTransition.d.ts +0 -3
  391. package/dist/components/effects/PageTransition/PageTransition.js +0 -82
  392. package/dist/components/effects/PageTransition/PageTransition.types.d.ts +0 -15
  393. package/dist/components/effects/PageTransition/index.d.ts +0 -2
  394. package/dist/components/effects/ParallaxSection/ParallaxSection.d.ts +0 -26
  395. package/dist/components/effects/ParallaxSection/ParallaxSection.js +0 -71
  396. package/dist/components/effects/ParallaxSection/ParallaxSection.types.d.ts +0 -11
  397. package/dist/components/effects/ParallaxSection/index.d.ts +0 -2
  398. package/dist/components/effects/Spotlight/Spotlight.d.ts +0 -36
  399. package/dist/components/effects/Spotlight/Spotlight.js +0 -112
  400. package/dist/components/effects/Spotlight/Spotlight.types.d.ts +0 -29
  401. package/dist/components/effects/Spotlight/index.d.ts +0 -2
  402. package/dist/components/effects/SpotlightBorder/SpotlightBorder.d.ts +0 -18
  403. package/dist/components/effects/SpotlightBorder/SpotlightBorder.js +0 -213
  404. package/dist/components/effects/SpotlightBorder/SpotlightBorder.types.d.ts +0 -61
  405. package/dist/components/effects/SpotlightBorder/index.d.ts +0 -2
  406. package/dist/components/effects/StickyScroll/StickyScroll.d.ts +0 -30
  407. package/dist/components/effects/StickyScroll/StickyScroll.js +0 -128
  408. package/dist/components/effects/StickyScroll/StickyScroll.types.d.ts +0 -19
  409. package/dist/components/effects/StickyScroll/index.d.ts +0 -2
  410. package/dist/components/forms/CronInput/CronInput.d.ts +0 -3
  411. package/dist/components/forms/CronInput/CronInput.js +0 -113
  412. package/dist/components/forms/CronInput/CronInput.theme.d.ts +0 -6
  413. package/dist/components/forms/CronInput/CronInput.theme.js +0 -84
  414. package/dist/components/forms/CronInput/CronInput.types.d.ts +0 -109
  415. package/dist/components/forms/CronInput/CronInput.utils.d.ts +0 -67
  416. package/dist/components/forms/CronInput/CronInput.utils.js +0 -505
  417. package/dist/components/forms/CronInput/index.d.ts +0 -4
  418. /package/dist/components/effects/{SpotlightBorder/SpotlightBorder.types.js → TiltCard/TiltCard.types.js} +0 -0
@@ -0,0 +1,23 @@
1
+ import type React from "react";
2
+ import type { NodeCanvasNode, NodeChange } from "../NodeCanvas.types";
3
+ interface UseNodeDragParams {
4
+ nodeId: string;
5
+ getNode: () => NodeCanvasNode | undefined;
6
+ emit: (changes: NodeChange[]) => void;
7
+ }
8
+ interface UseNodeDragResult {
9
+ dragging: boolean;
10
+ onPointerDown: (e: React.PointerEvent) => void;
11
+ onPointerMove: (e: React.PointerEvent) => void;
12
+ onPointerUp: (e: React.PointerEvent) => void;
13
+ }
14
+ /**
15
+ * Canvas-owned pointer math for moving a single node. Converts screen deltas to
16
+ * flow deltas via the live zoom, emits `position` change-objects (with a `dragging`
17
+ * flag), and claims the gesture from the pane so it doesn't pan underneath.
18
+ *
19
+ * Drag never starts from interactive children (inputs, buttons, `.nodrag`), so
20
+ * controls inside custom nodes keep working.
21
+ */
22
+ export declare function useNodeDrag(params: UseNodeDragParams): UseNodeDragResult;
23
+ export {};
@@ -0,0 +1,110 @@
1
+ import { useState, useRef } from 'react';
2
+ import { useNodeCanvasContext } from '../context/CanvasContext.js';
3
+ import { useCanvasInteraction } from '../context/InteractionContext.js';
4
+ import { isEditableTarget } from '../utils.js';
5
+
6
+ /** Drag won't start from these (interactive controls / opt-out hosts). */
7
+ function isNoDragTarget(target) {
8
+ if (!(target instanceof HTMLElement))
9
+ return false;
10
+ if (isEditableTarget(target))
11
+ return true;
12
+ return target.closest("button, a, [data-nodrag], .nodrag") !== null;
13
+ }
14
+ const DRAG_THRESHOLD_PX = 3;
15
+ /**
16
+ * Canvas-owned pointer math for moving a single node. Converts screen deltas to
17
+ * flow deltas via the live zoom, emits `position` change-objects (with a `dragging`
18
+ * flag), and claims the gesture from the pane so it doesn't pan underneath.
19
+ *
20
+ * Drag never starts from interactive children (inputs, buttons, `.nodrag`), so
21
+ * controls inside custom nodes keep working.
22
+ */
23
+ function useNodeDrag(params) {
24
+ const { nodeId, getNode, emit } = params;
25
+ const { viewportRef, locked, snapGrid, tool } = useNodeCanvasContext();
26
+ const { setInteracting } = useCanvasInteraction();
27
+ const [dragging, setDragging] = useState(false);
28
+ const snapPoint = (x, y) => snapGrid
29
+ ? {
30
+ x: Math.round(x / snapGrid[0]) * snapGrid[0],
31
+ y: Math.round(y / snapGrid[1]) * snapGrid[1],
32
+ }
33
+ : { x, y };
34
+ const drag = useRef(null);
35
+ const onPointerDown = (e) => {
36
+ if (e.button !== 0)
37
+ return;
38
+ if (locked || tool === "pan")
39
+ return;
40
+ if (isNoDragTarget(e.target))
41
+ return;
42
+ const node = getNode();
43
+ if (!node || node.draggable === false)
44
+ return;
45
+ e.stopPropagation(); // don't let the pane start panning
46
+ // Initialize drag state before capturing, so a capture failure can't abort it.
47
+ setInteracting(true);
48
+ drag.current = {
49
+ pointerId: e.pointerId,
50
+ startClient: { x: e.clientX, y: e.clientY },
51
+ startPos: { ...node.position },
52
+ zoom: viewportRef.current.zoom,
53
+ moved: false,
54
+ };
55
+ try {
56
+ e.currentTarget.setPointerCapture(e.pointerId);
57
+ }
58
+ catch (_a) {
59
+ /* capture unsupported / pointer inactive — drag still works via bubbling */
60
+ }
61
+ };
62
+ const onPointerMove = (e) => {
63
+ const s = drag.current;
64
+ if (!s || e.pointerId !== s.pointerId)
65
+ return;
66
+ const dxScreen = e.clientX - s.startClient.x;
67
+ const dyScreen = e.clientY - s.startClient.y;
68
+ if (!s.moved && Math.hypot(dxScreen, dyScreen) < DRAG_THRESHOLD_PX)
69
+ return;
70
+ if (!s.moved) {
71
+ s.moved = true;
72
+ setDragging(true);
73
+ }
74
+ emit([
75
+ {
76
+ type: "position",
77
+ id: nodeId,
78
+ position: snapPoint(s.startPos.x + dxScreen / s.zoom, s.startPos.y + dyScreen / s.zoom),
79
+ dragging: true,
80
+ },
81
+ ]);
82
+ };
83
+ const onPointerUp = (e) => {
84
+ const s = drag.current;
85
+ if (!s || e.pointerId !== s.pointerId)
86
+ return;
87
+ if (s.moved) {
88
+ emit([
89
+ {
90
+ type: "position",
91
+ id: nodeId,
92
+ position: snapPoint(s.startPos.x + (e.clientX - s.startClient.x) / s.zoom, s.startPos.y + (e.clientY - s.startClient.y) / s.zoom),
93
+ dragging: false,
94
+ },
95
+ ]);
96
+ }
97
+ drag.current = null;
98
+ setDragging(false);
99
+ setInteracting(false);
100
+ try {
101
+ e.currentTarget.releasePointerCapture(e.pointerId);
102
+ }
103
+ catch (_a) {
104
+ /* already released */
105
+ }
106
+ };
107
+ return { dragging, onPointerDown, onPointerMove, onPointerUp };
108
+ }
109
+
110
+ export { useNodeDrag };
@@ -0,0 +1,30 @@
1
+ import type React from "react";
2
+ import type { SetViewport } from "../NodeCanvas.types";
3
+ interface UsePanZoomParams {
4
+ paneRef: React.RefObject<HTMLDivElement | null>;
5
+ setViewport: SetViewport;
6
+ minZoom: number;
7
+ maxZoom: number;
8
+ /** When true, a node drag / connection owns the gesture — pane declines to pan. */
9
+ interactingRef: React.MutableRefObject<boolean>;
10
+ /** When locked, panning is disabled (zoom still works). */
11
+ lockedRef: React.MutableRefObject<boolean>;
12
+ /** Active tool — in `pan` mode, drag anywhere (even over nodes) pans. */
13
+ toolRef: React.MutableRefObject<"select" | "pan">;
14
+ panOnDrag: boolean;
15
+ panOnScroll: boolean;
16
+ zoomOnScroll: boolean;
17
+ zoomActivationKey: "ctrl" | "meta" | "shift" | null;
18
+ }
19
+ /**
20
+ * Attaches wheel/pinch zoom + pointer-drag pan to the canvas pane.
21
+ *
22
+ * - **Zoom** is anchored to the cursor (the flow point under the pointer stays put).
23
+ * - **Pinch** works via trackpad (`ctrlKey` wheel) and two-pointer touch.
24
+ * - **Pan** via pointer drag on the pane background or while `Space` is held.
25
+ *
26
+ * All viewport math uses functional `setViewport` updates, so there are no stale
27
+ * closures and the hook never needs to re-subscribe on viewport change.
28
+ */
29
+ export declare function usePanZoom(params: UsePanZoomParams): void;
30
+ export {};
@@ -0,0 +1,189 @@
1
+ import { useEffect } from 'react';
2
+ import { isEditableTarget, clamp } from '../utils.js';
3
+
4
+ /** Wheel delta → zoom factor sensitivity. */
5
+ const ZOOM_SENSITIVITY = 0.0015;
6
+ /**
7
+ * Attaches wheel/pinch zoom + pointer-drag pan to the canvas pane.
8
+ *
9
+ * - **Zoom** is anchored to the cursor (the flow point under the pointer stays put).
10
+ * - **Pinch** works via trackpad (`ctrlKey` wheel) and two-pointer touch.
11
+ * - **Pan** via pointer drag on the pane background or while `Space` is held.
12
+ *
13
+ * All viewport math uses functional `setViewport` updates, so there are no stale
14
+ * closures and the hook never needs to re-subscribe on viewport change.
15
+ */
16
+ function usePanZoom(params) {
17
+ const { paneRef, setViewport, minZoom, maxZoom, interactingRef, lockedRef, toolRef, panOnDrag, panOnScroll, zoomOnScroll, zoomActivationKey, } = params;
18
+ useEffect(() => {
19
+ const pane = paneRef.current;
20
+ if (!pane)
21
+ return;
22
+ const pointers = new Map();
23
+ const space = { pressed: false };
24
+ let panning = false;
25
+ let last = { x: 0, y: 0 };
26
+ let pinchDist = 0;
27
+ const matchesZoomKey = (e) => zoomActivationKey === "ctrl"
28
+ ? e.ctrlKey
29
+ : zoomActivationKey === "meta"
30
+ ? e.metaKey
31
+ : zoomActivationKey === "shift"
32
+ ? e.shiftKey
33
+ : false;
34
+ const zoomAt = (sx, sy, factor) => {
35
+ setViewport((v) => {
36
+ const zoom = clamp(v.zoom * factor, minZoom, maxZoom);
37
+ const k = zoom / v.zoom;
38
+ return { zoom, x: sx - (sx - v.x) * k, y: sy - (sy - v.y) * k };
39
+ });
40
+ };
41
+ const onWheel = (e) => {
42
+ e.preventDefault();
43
+ const rect = pane.getBoundingClientRect();
44
+ const sx = e.clientX - rect.left;
45
+ const sy = e.clientY - rect.top;
46
+ // Trackpad pinch arrives as a wheel event with ctrlKey set.
47
+ const pinch = e.ctrlKey;
48
+ const wantZoom = zoomOnScroll &&
49
+ (pinch || (zoomActivationKey ? matchesZoomKey(e) : !panOnScroll));
50
+ if (wantZoom) {
51
+ zoomAt(sx, sy, Math.exp(-e.deltaY * ZOOM_SENSITIVITY));
52
+ }
53
+ else if (panOnScroll) {
54
+ setViewport((v) => ({ ...v, x: v.x - e.deltaX, y: v.y - e.deltaY }));
55
+ }
56
+ else if (zoomOnScroll) {
57
+ zoomAt(sx, sy, Math.exp(-e.deltaY * ZOOM_SENSITIVITY));
58
+ }
59
+ };
60
+ const twoPointerDistance = () => {
61
+ const [a, b] = [...pointers.values()];
62
+ return Math.hypot(a.x - b.x, a.y - b.y);
63
+ };
64
+ const twoPointerMidpoint = () => {
65
+ const rect = pane.getBoundingClientRect();
66
+ const [a, b] = [...pointers.values()];
67
+ return { cx: (a.x + b.x) / 2 - rect.left, cy: (a.y + b.y) / 2 - rect.top };
68
+ };
69
+ const onPointerDown = (e) => {
70
+ pointers.set(e.pointerId, { x: e.clientX, y: e.clientY });
71
+ if (pointers.size === 2) {
72
+ panning = false;
73
+ pane.style.cursor = "";
74
+ pinchDist = twoPointerDistance();
75
+ return;
76
+ }
77
+ if (pointers.size > 2)
78
+ return;
79
+ // Only pan from the canvas background. If the press landed on a node, a
80
+ // handle, or a nested overlay, that element owns the gesture — decided from
81
+ // the DOM target so it's independent of React handler timing (the pane's
82
+ // native listener fires before React's stopPropagation could run).
83
+ const panMode = toolRef.current === "pan";
84
+ const target = e.target;
85
+ // In select mode, defer to nodes/handles/edges/chrome. In pan mode, pan over
86
+ // everything except the always-interactive chrome (controls, minimap, overlays).
87
+ if (target === null || target === void 0 ? void 0 : target.closest(panMode
88
+ ? "[data-flikkui-controls],[data-flikkui-nopan],[data-flikkui-portal]"
89
+ : "[data-flikkui-node],[data-flikkui-handle],[data-flikkui-edge],[data-flikkui-controls],[data-flikkui-nopan],[data-flikkui-portal]")) {
90
+ return;
91
+ }
92
+ // A node drag / connection has claimed this gesture.
93
+ if (interactingRef.current)
94
+ return;
95
+ // Shift+drag is reserved for marquee selection.
96
+ if (e.shiftKey && !space.pressed)
97
+ return;
98
+ if (lockedRef.current && !space.pressed)
99
+ return;
100
+ if (!panOnDrag && !space.pressed)
101
+ return;
102
+ if (e.button !== 0 && e.button !== 1)
103
+ return;
104
+ panning = true;
105
+ last = { x: e.clientX, y: e.clientY };
106
+ pane.setPointerCapture(e.pointerId);
107
+ pane.style.cursor = "grabbing";
108
+ };
109
+ const onPointerMove = (e) => {
110
+ if (pointers.has(e.pointerId)) {
111
+ pointers.set(e.pointerId, { x: e.clientX, y: e.clientY });
112
+ }
113
+ if (pointers.size >= 2) {
114
+ const dist = twoPointerDistance();
115
+ if (pinchDist > 0) {
116
+ const { cx, cy } = twoPointerMidpoint();
117
+ zoomAt(cx, cy, dist / pinchDist);
118
+ }
119
+ pinchDist = dist;
120
+ return;
121
+ }
122
+ if (!panning)
123
+ return;
124
+ const dx = e.clientX - last.x;
125
+ const dy = e.clientY - last.y;
126
+ last = { x: e.clientX, y: e.clientY };
127
+ setViewport((v) => ({ ...v, x: v.x + dx, y: v.y + dy }));
128
+ };
129
+ const endPointer = (e) => {
130
+ pointers.delete(e.pointerId);
131
+ if (pointers.size < 2)
132
+ pinchDist = 0;
133
+ if (pointers.size === 0) {
134
+ panning = false;
135
+ pane.style.cursor = space.pressed ? "grab" : "";
136
+ try {
137
+ pane.releasePointerCapture(e.pointerId);
138
+ }
139
+ catch (_a) {
140
+ /* pointer may already be released */
141
+ }
142
+ }
143
+ };
144
+ const onKeyDown = (e) => {
145
+ if (e.code === "Space" && !isEditableTarget(e.target)) {
146
+ space.pressed = true;
147
+ if (!panning)
148
+ pane.style.cursor = "grab";
149
+ }
150
+ };
151
+ const onKeyUp = (e) => {
152
+ if (e.code === "Space") {
153
+ space.pressed = false;
154
+ if (!panning)
155
+ pane.style.cursor = "";
156
+ }
157
+ };
158
+ pane.addEventListener("wheel", onWheel, { passive: false });
159
+ pane.addEventListener("pointerdown", onPointerDown);
160
+ pane.addEventListener("pointermove", onPointerMove);
161
+ pane.addEventListener("pointerup", endPointer);
162
+ pane.addEventListener("pointercancel", endPointer);
163
+ window.addEventListener("keydown", onKeyDown);
164
+ window.addEventListener("keyup", onKeyUp);
165
+ return () => {
166
+ pane.removeEventListener("wheel", onWheel);
167
+ pane.removeEventListener("pointerdown", onPointerDown);
168
+ pane.removeEventListener("pointermove", onPointerMove);
169
+ pane.removeEventListener("pointerup", endPointer);
170
+ pane.removeEventListener("pointercancel", endPointer);
171
+ window.removeEventListener("keydown", onKeyDown);
172
+ window.removeEventListener("keyup", onKeyUp);
173
+ };
174
+ }, [
175
+ paneRef,
176
+ setViewport,
177
+ minZoom,
178
+ maxZoom,
179
+ interactingRef,
180
+ lockedRef,
181
+ toolRef,
182
+ panOnDrag,
183
+ panOnScroll,
184
+ zoomOnScroll,
185
+ zoomActivationKey,
186
+ ]);
187
+ }
188
+
189
+ export { usePanZoom };
@@ -0,0 +1,21 @@
1
+ import type { NodeCanvasViewport, SetViewport } from "../NodeCanvas.types";
2
+ interface UseViewportParams {
3
+ /** Controlled viewport (when defined, internal state is bypassed). */
4
+ controlled?: NodeCanvasViewport;
5
+ defaultViewport?: NodeCanvasViewport;
6
+ onChange?: (viewport: NodeCanvasViewport) => void;
7
+ minZoom: number;
8
+ maxZoom: number;
9
+ }
10
+ interface UseViewportResult {
11
+ viewport: NodeCanvasViewport;
12
+ setViewport: SetViewport;
13
+ /** Always-current viewport, safe to read inside event handlers. */
14
+ viewportRef: React.MutableRefObject<NodeCanvasViewport>;
15
+ }
16
+ /**
17
+ * Owns the viewport transform with a controlled/uncontrolled split (Accordion idiom).
18
+ * Zoom is clamped on every update; `onChange` always fires with the resolved value.
19
+ */
20
+ export declare function useViewport(params: UseViewportParams): UseViewportResult;
21
+ export {};
@@ -0,0 +1,35 @@
1
+ import { useState, useRef, useCallback } from 'react';
2
+ import { clamp } from '../utils.js';
3
+
4
+ const DEFAULT_VIEWPORT = { x: 0, y: 0, zoom: 1 };
5
+ /**
6
+ * Owns the viewport transform with a controlled/uncontrolled split (Accordion idiom).
7
+ * Zoom is clamped on every update; `onChange` always fires with the resolved value.
8
+ */
9
+ function useViewport(params) {
10
+ const { controlled, defaultViewport, onChange, minZoom, maxZoom } = params;
11
+ const isControlled = controlled !== undefined;
12
+ const [internal, setInternal] = useState(() => { var _a; return (_a = controlled !== null && controlled !== void 0 ? controlled : defaultViewport) !== null && _a !== void 0 ? _a : DEFAULT_VIEWPORT; });
13
+ const viewport = isControlled ? controlled : internal;
14
+ const viewportRef = useRef(viewport);
15
+ viewportRef.current = viewport;
16
+ const onChangeRef = useRef(onChange);
17
+ onChangeRef.current = onChange;
18
+ const setViewport = useCallback((next) => {
19
+ var _a;
20
+ const prev = viewportRef.current;
21
+ const resolved = typeof next === "function" ? next(prev) : next;
22
+ const clamped = {
23
+ x: resolved.x,
24
+ y: resolved.y,
25
+ zoom: clamp(resolved.zoom, minZoom, maxZoom),
26
+ };
27
+ viewportRef.current = clamped;
28
+ if (!isControlled)
29
+ setInternal(clamped);
30
+ (_a = onChangeRef.current) === null || _a === void 0 ? void 0 : _a.call(onChangeRef, clamped);
31
+ }, [isControlled, minZoom, maxZoom]);
32
+ return { viewport, setViewport, viewportRef };
33
+ }
34
+
35
+ export { useViewport };
@@ -0,0 +1,14 @@
1
+ export { NodeCanvas } from "./NodeCanvas";
2
+ export { BaseNode, type BaseNodeProps } from "./BaseNode";
3
+ export { Handle } from "./Handle";
4
+ export { Background, type BackgroundProps, type BackgroundVariant } from "./Background";
5
+ export { NodeControls, type NodeControlsProps } from "./NodeControls";
6
+ export { MiniMap, type MiniMapProps } from "./MiniMap";
7
+ export { CanvasToolbar, type CanvasToolbarProps, type CanvasToolbarNodeOption, } from "./CanvasToolbar";
8
+ export { type CanvasTool } from "./context/CanvasContext";
9
+ export { applyNodeChanges, applyEdgeChanges } from "./changes";
10
+ export { layoutGraph, type LayoutOptions } from "./layout";
11
+ export { useNodeCanvasContext } from "./context/CanvasContext";
12
+ export { useCanvasInteraction } from "./context/InteractionContext";
13
+ export { useNodeId } from "./context/NodeIdContext";
14
+ export type { NodeCanvasProps, NodeCanvasNode, NodeCanvasEdge, EdgeType, NodeCanvasConnection, NodeCanvasViewport, NodeCanvasNodeTypes, NodeChange, EdgeChange, NodeProps, HandleProps, HandleType, HandlePosition, EdgeProps, XYPosition, SetViewport, NodeCanvasThemeOverrides, } from "./NodeCanvas.types";
@@ -0,0 +1,12 @@
1
+ export { NodeCanvas } from './NodeCanvas.js';
2
+ export { BaseNode } from './BaseNode.js';
3
+ export { Handle } from './Handle.js';
4
+ export { Background } from './Background.js';
5
+ export { NodeControls } from './NodeControls.js';
6
+ export { MiniMap } from './MiniMap.js';
7
+ export { CanvasToolbar } from './CanvasToolbar.js';
8
+ export { applyEdgeChanges, applyNodeChanges } from './changes.js';
9
+ export { layoutGraph } from './layout.js';
10
+ export { useNodeCanvasContext } from './context/CanvasContext.js';
11
+ export { useCanvasInteraction } from './context/InteractionContext.js';
12
+ export { useNodeId } from './context/NodeIdContext.js';
@@ -0,0 +1,22 @@
1
+ import type { NodeCanvasEdge, NodeCanvasNode } from "./NodeCanvas.types";
2
+ export interface LayoutOptions {
3
+ /** `LR` = layers flow left→right (default); `TB` = top→bottom. */
4
+ direction?: "LR" | "TB";
5
+ /** Assumed node width / height for spacing (no real measurement). */
6
+ nodeWidth?: number;
7
+ nodeHeight?: number;
8
+ /** Gap between layers / within a layer. */
9
+ gapX?: number;
10
+ gapY?: number;
11
+ /** Top-left origin of the laid-out graph. */
12
+ originX?: number;
13
+ originY?: number;
14
+ }
15
+ /**
16
+ * A small dependency-free layered (Sugiyama-lite) auto-layout for DAGs: each node's
17
+ * layer is the longest path from a root, nodes stack within their layer. Cycles are
18
+ * tolerated (a back-edge just doesn't deepen the layer). Returns new nodes with
19
+ * updated `position`; other node fields are preserved. Good enough for tidy flow
20
+ * graphs without pulling in dagre/elk.
21
+ */
22
+ export declare function layoutGraph(nodes: NodeCanvasNode[], edges: NodeCanvasEdge[], options?: LayoutOptions): NodeCanvasNode[];
@@ -0,0 +1,67 @@
1
+ /**
2
+ * A small dependency-free layered (Sugiyama-lite) auto-layout for DAGs: each node's
3
+ * layer is the longest path from a root, nodes stack within their layer. Cycles are
4
+ * tolerated (a back-edge just doesn't deepen the layer). Returns new nodes with
5
+ * updated `position`; other node fields are preserved. Good enough for tidy flow
6
+ * graphs without pulling in dagre/elk.
7
+ */
8
+ function layoutGraph(nodes, edges, options = {}) {
9
+ var _a, _b;
10
+ const { direction = "LR", nodeWidth = 200, nodeHeight = 100, gapX = 80, gapY = 40, originX = 0, originY = 0, } = options;
11
+ if (nodes.length === 0)
12
+ return nodes;
13
+ const ids = new Set(nodes.map((n) => n.id));
14
+ const preds = new Map();
15
+ for (const n of nodes)
16
+ preds.set(n.id, []);
17
+ for (const e of edges) {
18
+ if (ids.has(e.source) && ids.has(e.target) && e.source !== e.target) {
19
+ preds.get(e.target).push(e.source);
20
+ }
21
+ }
22
+ // layer = 1 + max(layer of predecessors); memoized, cycle-guarded.
23
+ const layerOf = new Map();
24
+ const inProgress = new Set();
25
+ const computeLayer = (id) => {
26
+ var _a;
27
+ const cached = layerOf.get(id);
28
+ if (cached !== undefined)
29
+ return cached;
30
+ if (inProgress.has(id))
31
+ return 0; // back-edge in a cycle
32
+ inProgress.add(id);
33
+ let max = -1;
34
+ for (const p of (_a = preds.get(id)) !== null && _a !== void 0 ? _a : [])
35
+ max = Math.max(max, computeLayer(p));
36
+ const layer = max + 1;
37
+ inProgress.delete(id);
38
+ layerOf.set(id, layer);
39
+ return layer;
40
+ };
41
+ for (const n of nodes)
42
+ computeLayer(n.id);
43
+ // Group by layer (preserving input order for stable stacking).
44
+ const byLayer = new Map();
45
+ for (const n of nodes) {
46
+ const l = (_a = layerOf.get(n.id)) !== null && _a !== void 0 ? _a : 0;
47
+ const list = (_b = byLayer.get(l)) !== null && _b !== void 0 ? _b : [];
48
+ list.push(n);
49
+ byLayer.set(l, list);
50
+ }
51
+ const positioned = new Map();
52
+ for (const [layer, layerNodes] of byLayer) {
53
+ layerNodes.forEach((n, i) => {
54
+ const along = i * (direction === "LR" ? nodeHeight + gapY : nodeWidth + gapX);
55
+ const across = layer * (direction === "LR" ? nodeWidth + gapX : nodeHeight + gapY);
56
+ positioned.set(n.id, direction === "LR"
57
+ ? { x: originX + across, y: originY + along }
58
+ : { x: originX + along, y: originY + across });
59
+ });
60
+ }
61
+ return nodes.map((n) => {
62
+ const p = positioned.get(n.id);
63
+ return p ? { ...n, position: p } : n;
64
+ });
65
+ }
66
+
67
+ export { layoutGraph };
@@ -0,0 +1,4 @@
1
+ /** Clamp `value` to the inclusive range `[min, max]`. */
2
+ export declare function clamp(value: number, min: number, max: number): number;
3
+ /** True when an event target is a text input / contentEditable host. */
4
+ export declare function isEditableTarget(target: EventTarget | null): boolean;
@@ -0,0 +1,16 @@
1
+ /** Clamp `value` to the inclusive range `[min, max]`. */
2
+ function clamp(value, min, max) {
3
+ return Math.min(Math.max(value, min), max);
4
+ }
5
+ /** True when an event target is a text input / contentEditable host. */
6
+ function isEditableTarget(target) {
7
+ if (!(target instanceof HTMLElement))
8
+ return false;
9
+ const tag = target.tagName;
10
+ return (tag === "INPUT" ||
11
+ tag === "TEXTAREA" ||
12
+ tag === "SELECT" ||
13
+ target.isContentEditable);
14
+ }
15
+
16
+ export { clamp, isEditableTarget };