@vritti/quantum-ui 0.3.9 → 0.3.12

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 (467) hide show
  1. package/dist/Avatar.js +5 -5
  2. package/dist/BarChart.js +1 -9
  3. package/dist/BarChart.js.map +1 -1
  4. package/dist/Breadcrumb.js +1 -1
  5. package/dist/Breadcrumb.js.map +1 -1
  6. package/dist/Button.js +14 -6
  7. package/dist/Button.js.map +1 -1
  8. package/dist/Checkbox2.js +5 -5
  9. package/dist/CheckboxGroup.js +64 -6
  10. package/dist/CheckboxGroup.js.map +1 -1
  11. package/dist/Collapsible.js +1 -1
  12. package/dist/Collapsible.js.map +1 -1
  13. package/dist/ConfirmHost.js +5 -17
  14. package/dist/ConfirmHost.js.map +1 -1
  15. package/dist/CurrencyField.js +1 -1
  16. package/dist/CurrencyFilter.js.map +1 -1
  17. package/dist/DateRangePicker.js +4 -2
  18. package/dist/DateRangePicker.js.map +1 -1
  19. package/dist/DateTimePicker.js +1 -1
  20. package/dist/DateTimeRangePicker.js +4 -2
  21. package/dist/DateTimeRangePicker.js.map +1 -1
  22. package/dist/DetailSectionSkeleton.js +14 -1
  23. package/dist/DetailSectionSkeleton.js.map +1 -1
  24. package/dist/Dialog.js +1 -1
  25. package/dist/Dialog.js.map +1 -1
  26. package/dist/ErrorBoundary.js +1 -108
  27. package/dist/ErrorBoundary.js.map +1 -1
  28. package/dist/FilePreview.js +1 -145
  29. package/dist/FilePreview.js.map +1 -1
  30. package/dist/HierarchyGraph.js +12 -8
  31. package/dist/HierarchyGraph.js.map +1 -1
  32. package/dist/IconSelect.js +31393 -0
  33. package/dist/IconSelect.js.map +1 -0
  34. package/dist/Kbd.js +11 -19
  35. package/dist/Kbd.js.map +1 -1
  36. package/dist/LocationSelector.js +13 -15
  37. package/dist/LocationSelector.js.map +1 -1
  38. package/dist/OTPField.js +1 -12
  39. package/dist/OTPField.js.map +1 -1
  40. package/dist/PageContent.js.map +1 -1
  41. package/dist/PageHeaderSkeleton.js +1 -1
  42. package/dist/PageHeaderSkeleton.js.map +1 -1
  43. package/dist/PermissionGate.js +31 -0
  44. package/dist/PermissionGate.js.map +1 -0
  45. package/dist/PieChart.js.map +1 -1
  46. package/dist/Progress.js +2 -2
  47. package/dist/QuantSelector.js.map +1 -1
  48. package/dist/RadialChart.js.map +1 -1
  49. package/dist/RadioGroup.js +7 -7
  50. package/dist/Select.js +32 -188
  51. package/dist/Select.js.map +1 -1
  52. package/dist/SerialSelector.js +13 -15
  53. package/dist/SerialSelector.js.map +1 -1
  54. package/dist/Sidebar.js +8 -19
  55. package/dist/Sidebar.js.map +1 -1
  56. package/dist/Sonner.js +2 -17
  57. package/dist/Sonner.js.map +1 -1
  58. package/dist/SupplierItemSelector.js.map +1 -1
  59. package/dist/Switch.js +7 -5
  60. package/dist/Switch.js.map +1 -1
  61. package/dist/TabsSkeleton.js +2 -2
  62. package/dist/TabsSkeleton.js.map +1 -1
  63. package/dist/ThemeToggle.js +1 -41
  64. package/dist/ThemeToggle.js.map +1 -1
  65. package/dist/Toggle.js +1 -1
  66. package/dist/Tooltip.js +19 -0
  67. package/dist/Tooltip.js.map +1 -0
  68. package/dist/UomSelector.js +6 -1
  69. package/dist/UomSelector.js.map +1 -1
  70. package/dist/UploadFile.js +1 -35
  71. package/dist/UploadFile.js.map +1 -1
  72. package/dist/ValueFilter.js.map +1 -1
  73. package/dist/ViewTabs.js +1 -16
  74. package/dist/ViewTabs.js.map +1 -1
  75. package/dist/assets/quantum-ui.css +109 -4
  76. package/dist/calendar2.js +2 -13
  77. package/dist/calendar2.js.map +1 -1
  78. package/dist/check-check.js +18 -0
  79. package/dist/check-check.js.map +1 -0
  80. package/dist/chevron-left.js +15 -0
  81. package/dist/chevron-left.js.map +1 -0
  82. package/dist/circle-question-mark.js +19 -0
  83. package/dist/circle-question-mark.js.map +1 -0
  84. package/dist/circle-x.js +19 -0
  85. package/dist/circle-x.js.map +1 -0
  86. package/dist/circle.js +15 -0
  87. package/dist/circle.js.map +1 -0
  88. package/dist/components/DataTable.js +1 -1
  89. package/dist/components/DetailField.js +1 -1
  90. package/dist/components/FormattedDate.js.map +1 -1
  91. package/dist/components/PermissionGate.js +2 -0
  92. package/dist/components/PermissionGate.js.map +1 -0
  93. package/dist/components/RichTextEditor.js +1 -1
  94. package/dist/components/ScanBarcodeButton.js +1 -20
  95. package/dist/components/ScanBarcodeButton.js.map +1 -1
  96. package/dist/components/Switch.js +1 -1
  97. package/dist/components/Tooltip.js +2 -0
  98. package/dist/components/Tooltip.js.map +1 -0
  99. package/dist/components/TreeView.js +4 -4
  100. package/dist/dot.js +15 -0
  101. package/dist/dot.js.map +1 -0
  102. package/dist/dropdown-menu.js +11 -22
  103. package/dist/dropdown-menu.js.map +1 -1
  104. package/dist/file.js +148 -0
  105. package/dist/file.js.map +1 -0
  106. package/dist/globe.js +19 -0
  107. package/dist/globe.js.map +1 -0
  108. package/dist/icons.js +21 -0
  109. package/dist/icons.js.map +1 -0
  110. package/dist/image-component.js +37 -96
  111. package/dist/image-component.js.map +1 -1
  112. package/dist/index.js +7 -4
  113. package/dist/index.js.map +1 -1
  114. package/dist/index12.js +7 -7
  115. package/dist/index13.js +7 -7
  116. package/dist/index14.js +11 -11
  117. package/dist/index15.js +1 -1
  118. package/dist/index16.js +1 -1
  119. package/dist/index17.js +168 -175
  120. package/dist/index17.js.map +1 -1
  121. package/dist/index18.js +173 -201
  122. package/dist/index18.js.map +1 -1
  123. package/dist/index19.js +203 -69
  124. package/dist/index19.js.map +1 -1
  125. package/dist/index20.js +70 -211
  126. package/dist/index20.js.map +1 -1
  127. package/dist/index21.js +206 -116
  128. package/dist/index21.js.map +1 -1
  129. package/dist/index22.js +122 -70
  130. package/dist/index22.js.map +1 -1
  131. package/dist/index23.js +74 -11
  132. package/dist/index23.js.map +1 -1
  133. package/dist/index24.js +13 -1134
  134. package/dist/index24.js.map +1 -1
  135. package/dist/index25.js +1120 -219
  136. package/dist/index25.js.map +1 -1
  137. package/dist/index26.js +202 -2506
  138. package/dist/index26.js.map +1 -1
  139. package/dist/index27.js +2527 -23
  140. package/dist/index27.js.map +1 -1
  141. package/dist/index28.js +32 -4
  142. package/dist/index28.js.map +1 -1
  143. package/dist/index29.js +3 -1124
  144. package/dist/index29.js.map +1 -1
  145. package/dist/index30.js +1123 -35
  146. package/dist/index30.js.map +1 -1
  147. package/dist/index31.js +36 -310
  148. package/dist/index31.js.map +1 -1
  149. package/dist/index32.js +309 -7
  150. package/dist/index32.js.map +1 -1
  151. package/dist/index33.js +8 -30
  152. package/dist/index33.js.map +1 -1
  153. package/dist/index34.js +29 -59
  154. package/dist/index34.js.map +1 -1
  155. package/dist/index35.js +59 -10
  156. package/dist/index35.js.map +1 -1
  157. package/dist/index36.js +10 -35
  158. package/dist/index36.js.map +1 -1
  159. package/dist/index37.js +27 -36809
  160. package/dist/index37.js.map +1 -1
  161. package/dist/index38.js +35362 -70
  162. package/dist/index38.js.map +1 -1
  163. package/dist/index39.js +72 -187
  164. package/dist/index39.js.map +1 -1
  165. package/dist/index4.js +5 -5
  166. package/dist/index40.js +199 -0
  167. package/dist/index40.js.map +1 -0
  168. package/dist/lib/components/BarChart/BarChart.d.ts.map +1 -1
  169. package/dist/lib/components/Button/Button.d.ts +1 -0
  170. package/dist/lib/components/Button/Button.d.ts.map +1 -1
  171. package/dist/lib/components/CheckboxGroup/CheckboxGroup.d.ts +1 -0
  172. package/dist/lib/components/CheckboxGroup/CheckboxGroup.d.ts.map +1 -1
  173. package/dist/lib/components/Collapsible/Collapsible.d.ts.map +1 -1
  174. package/dist/lib/components/ConfirmHost/ConfirmHost.d.ts +3 -0
  175. package/dist/lib/components/ConfirmHost/ConfirmHost.d.ts.map +1 -1
  176. package/dist/lib/components/DataTable/DataTable.d.ts +1 -1
  177. package/dist/lib/components/DataTable/DataTable.d.ts.map +1 -1
  178. package/dist/lib/components/DataTable/components/DataTableSelectionBar.d.ts +3 -1
  179. package/dist/lib/components/DataTable/components/DataTableSelectionBar.d.ts.map +1 -1
  180. package/dist/lib/components/DataTable/components/RowActions.d.ts +1 -0
  181. package/dist/lib/components/DataTable/components/RowActions.d.ts.map +1 -1
  182. package/dist/lib/components/DataTable/index.d.ts +2 -2
  183. package/dist/lib/components/DataTable/index.d.ts.map +1 -1
  184. package/dist/lib/components/DataTable/types.d.ts +3 -0
  185. package/dist/lib/components/DataTable/types.d.ts.map +1 -1
  186. package/dist/lib/components/DateRangePicker/DateRangePicker.d.ts.map +1 -1
  187. package/dist/lib/components/DateTimeRangePicker/DateTimeRangePicker.d.ts.map +1 -1
  188. package/dist/lib/components/DetailField/DetailHeader.d.ts +10 -0
  189. package/dist/lib/components/DetailField/DetailHeader.d.ts.map +1 -0
  190. package/dist/lib/components/DetailField/index.d.ts +1 -0
  191. package/dist/lib/components/DetailField/index.d.ts.map +1 -1
  192. package/dist/lib/components/Dialog/Dialog.d.ts.map +1 -1
  193. package/dist/lib/components/Editor/context/editor-config-context.d.ts +2 -2
  194. package/dist/lib/components/Editor/context/editor-config-context.d.ts.map +1 -1
  195. package/dist/lib/components/Editor/context/toolbar-context.d.ts +1 -1
  196. package/dist/lib/components/Editor/context/toolbar-context.d.ts.map +1 -1
  197. package/dist/lib/components/Editor/editor-hooks/use-debounce.d.ts.map +1 -1
  198. package/dist/lib/components/Editor/editor-hooks/use-modal.d.ts.map +1 -1
  199. package/dist/lib/components/Editor/editor-hooks/use-update-toolbar.d.ts.map +1 -1
  200. package/dist/lib/components/Editor/editor-ui/button-group.d.ts +3 -3
  201. package/dist/lib/components/Editor/editor-ui/button-group.d.ts.map +1 -1
  202. package/dist/lib/components/Editor/editor-ui/button.d.ts +2 -2
  203. package/dist/lib/components/Editor/editor-ui/button.d.ts.map +1 -1
  204. package/dist/lib/components/Editor/editor-ui/code-button.d.ts.map +1 -1
  205. package/dist/lib/components/Editor/editor-ui/color-picker.d.ts +8 -8
  206. package/dist/lib/components/Editor/editor-ui/color-picker.d.ts.map +1 -1
  207. package/dist/lib/components/Editor/editor-ui/command.d.ts +2 -2
  208. package/dist/lib/components/Editor/editor-ui/command.d.ts.map +1 -1
  209. package/dist/lib/components/Editor/editor-ui/content-editable.d.ts +1 -1
  210. package/dist/lib/components/Editor/editor-ui/content-editable.d.ts.map +1 -1
  211. package/dist/lib/components/Editor/editor-ui/dialog.d.ts +4 -4
  212. package/dist/lib/components/Editor/editor-ui/dialog.d.ts.map +1 -1
  213. package/dist/lib/components/Editor/editor-ui/image-component.d.ts +3 -3
  214. package/dist/lib/components/Editor/editor-ui/image-component.d.ts.map +1 -1
  215. package/dist/lib/components/Editor/editor-ui/image-resizer.d.ts +2 -2
  216. package/dist/lib/components/Editor/editor-ui/image-resizer.d.ts.map +1 -1
  217. package/dist/lib/components/Editor/editor-ui/input.d.ts +2 -2
  218. package/dist/lib/components/Editor/editor-ui/input.d.ts.map +1 -1
  219. package/dist/lib/components/Editor/editor-ui/label.d.ts +2 -2
  220. package/dist/lib/components/Editor/editor-ui/label.d.ts.map +1 -1
  221. package/dist/lib/components/Editor/editor-ui/popover.d.ts +2 -2
  222. package/dist/lib/components/Editor/editor-ui/popover.d.ts.map +1 -1
  223. package/dist/lib/components/Editor/editor-ui/scroll-area.d.ts +2 -2
  224. package/dist/lib/components/Editor/editor-ui/scroll-area.d.ts.map +1 -1
  225. package/dist/lib/components/Editor/editor-ui/select.d.ts +3 -3
  226. package/dist/lib/components/Editor/editor-ui/select.d.ts.map +1 -1
  227. package/dist/lib/components/Editor/editor-ui/separator.d.ts +2 -2
  228. package/dist/lib/components/Editor/editor-ui/separator.d.ts.map +1 -1
  229. package/dist/lib/components/Editor/editor-ui/tabs.d.ts +2 -2
  230. package/dist/lib/components/Editor/editor-ui/tabs.d.ts.map +1 -1
  231. package/dist/lib/components/Editor/editor-ui/toggle-group.d.ts +2 -2
  232. package/dist/lib/components/Editor/editor-ui/toggle-group.d.ts.map +1 -1
  233. package/dist/lib/components/Editor/editor-ui/toggle.d.ts +2 -2
  234. package/dist/lib/components/Editor/editor-ui/toggle.d.ts.map +1 -1
  235. package/dist/lib/components/Editor/editor-ui/tooltip.d.ts +2 -2
  236. package/dist/lib/components/Editor/editor-ui/tooltip.d.ts.map +1 -1
  237. package/dist/lib/components/Editor/index.d.ts.map +1 -1
  238. package/dist/lib/components/Editor/nodes/autocomplete-node.d.ts +2 -2
  239. package/dist/lib/components/Editor/nodes/autocomplete-node.d.ts.map +1 -1
  240. package/dist/lib/components/Editor/nodes/embeds/tweet-node.d.ts +2 -2
  241. package/dist/lib/components/Editor/nodes/embeds/tweet-node.d.ts.map +1 -1
  242. package/dist/lib/components/Editor/nodes/embeds/youtube-node.d.ts +1 -1
  243. package/dist/lib/components/Editor/nodes/embeds/youtube-node.d.ts.map +1 -1
  244. package/dist/lib/components/Editor/nodes/emoji-node.d.ts.map +1 -1
  245. package/dist/lib/components/Editor/nodes/image-node.d.ts +5 -5
  246. package/dist/lib/components/Editor/nodes/image-node.d.ts.map +1 -1
  247. package/dist/lib/components/Editor/nodes/keyword-node.d.ts.map +1 -1
  248. package/dist/lib/components/Editor/nodes/layout-container-node.d.ts.map +1 -1
  249. package/dist/lib/components/Editor/nodes/layout-item-node.d.ts.map +1 -1
  250. package/dist/lib/components/Editor/nodes/mention-node.d.ts +1 -1
  251. package/dist/lib/components/Editor/nodes/mention-node.d.ts.map +1 -1
  252. package/dist/lib/components/Editor/nodes/nodes.d.ts.map +1 -1
  253. package/dist/lib/components/Editor/nodes.d.ts.map +1 -1
  254. package/dist/lib/components/Editor/plugins/actions/character-limit-plugin.d.ts +2 -2
  255. package/dist/lib/components/Editor/plugins/actions/character-limit-plugin.d.ts.map +1 -1
  256. package/dist/lib/components/Editor/plugins/actions/clear-editor-plugin.d.ts.map +1 -1
  257. package/dist/lib/components/Editor/plugins/actions/counter-character-plugin.d.ts +2 -2
  258. package/dist/lib/components/Editor/plugins/actions/counter-character-plugin.d.ts.map +1 -1
  259. package/dist/lib/components/Editor/plugins/actions/edit-mode-toggle-plugin.d.ts.map +1 -1
  260. package/dist/lib/components/Editor/plugins/actions/import-export-plugin.d.ts.map +1 -1
  261. package/dist/lib/components/Editor/plugins/actions/markdown-toggle-plugin.d.ts.map +1 -1
  262. package/dist/lib/components/Editor/plugins/actions/max-length-plugin.d.ts.map +1 -1
  263. package/dist/lib/components/Editor/plugins/actions/share-content-plugin.d.ts.map +1 -1
  264. package/dist/lib/components/Editor/plugins/actions/speech-to-text-plugin.d.ts.map +1 -1
  265. package/dist/lib/components/Editor/plugins/actions/tree-view-plugin.d.ts.map +1 -1
  266. package/dist/lib/components/Editor/plugins/auto-link-plugin.d.ts.map +1 -1
  267. package/dist/lib/components/Editor/plugins/autocomplete-plugin.d.ts.map +1 -1
  268. package/dist/lib/components/Editor/plugins/code-action-menu-plugin.d.ts.map +1 -1
  269. package/dist/lib/components/Editor/plugins/code-highlight-plugin.d.ts.map +1 -1
  270. package/dist/lib/components/Editor/plugins/component-picker-menu-plugin.d.ts +1 -1
  271. package/dist/lib/components/Editor/plugins/component-picker-menu-plugin.d.ts.map +1 -1
  272. package/dist/lib/components/Editor/plugins/context-menu-plugin.d.ts.map +1 -1
  273. package/dist/lib/components/Editor/plugins/drag-drop-paste-plugin.d.ts.map +1 -1
  274. package/dist/lib/components/Editor/plugins/draggable-block-plugin.d.ts +1 -1
  275. package/dist/lib/components/Editor/plugins/draggable-block-plugin.d.ts.map +1 -1
  276. package/dist/lib/components/Editor/plugins/embeds/auto-embed-plugin.d.ts +1 -1
  277. package/dist/lib/components/Editor/plugins/embeds/auto-embed-plugin.d.ts.map +1 -1
  278. package/dist/lib/components/Editor/plugins/embeds/twitter-plugin.d.ts +1 -1
  279. package/dist/lib/components/Editor/plugins/embeds/twitter-plugin.d.ts.map +1 -1
  280. package/dist/lib/components/Editor/plugins/embeds/youtube-plugin.d.ts +1 -1
  281. package/dist/lib/components/Editor/plugins/embeds/youtube-plugin.d.ts.map +1 -1
  282. package/dist/lib/components/Editor/plugins/emoji-picker-plugin.d.ts.map +1 -1
  283. package/dist/lib/components/Editor/plugins/emojis-plugin.d.ts.map +1 -1
  284. package/dist/lib/components/Editor/plugins/floating-link-editor-plugin.d.ts.map +1 -1
  285. package/dist/lib/components/Editor/plugins/floating-text-format-plugin.d.ts.map +1 -1
  286. package/dist/lib/components/Editor/plugins/images-plugin.d.ts +4 -4
  287. package/dist/lib/components/Editor/plugins/images-plugin.d.ts.map +1 -1
  288. package/dist/lib/components/Editor/plugins/keywords-plugin.d.ts.map +1 -1
  289. package/dist/lib/components/Editor/plugins/layout-plugin.d.ts +1 -1
  290. package/dist/lib/components/Editor/plugins/layout-plugin.d.ts.map +1 -1
  291. package/dist/lib/components/Editor/plugins/link-plugin.d.ts.map +1 -1
  292. package/dist/lib/components/Editor/plugins/list-max-indent-level-plugin.d.ts +1 -1
  293. package/dist/lib/components/Editor/plugins/list-max-indent-level-plugin.d.ts.map +1 -1
  294. package/dist/lib/components/Editor/plugins/mentions-plugin.d.ts.map +1 -1
  295. package/dist/lib/components/Editor/plugins/picker/alignment-picker-plugin.d.ts +2 -2
  296. package/dist/lib/components/Editor/plugins/picker/alignment-picker-plugin.d.ts.map +1 -1
  297. package/dist/lib/components/Editor/plugins/picker/bulleted-list-picker-plugin.d.ts.map +1 -1
  298. package/dist/lib/components/Editor/plugins/picker/check-list-picker-plugin.d.ts.map +1 -1
  299. package/dist/lib/components/Editor/plugins/picker/code-picker-plugin.d.ts.map +1 -1
  300. package/dist/lib/components/Editor/plugins/picker/columns-layout-picker-plugin.d.ts.map +1 -1
  301. package/dist/lib/components/Editor/plugins/picker/component-picker-menu-plugin.d.ts.map +1 -1
  302. package/dist/lib/components/Editor/plugins/picker/component-picker-option.d.ts +1 -1
  303. package/dist/lib/components/Editor/plugins/picker/component-picker-option.d.ts.map +1 -1
  304. package/dist/lib/components/Editor/plugins/picker/divider-picker-plugin.d.ts.map +1 -1
  305. package/dist/lib/components/Editor/plugins/picker/embeds-picker-plugin.d.ts +2 -2
  306. package/dist/lib/components/Editor/plugins/picker/embeds-picker-plugin.d.ts.map +1 -1
  307. package/dist/lib/components/Editor/plugins/picker/heading-picker-plugin.d.ts.map +1 -1
  308. package/dist/lib/components/Editor/plugins/picker/image-picker-plugin.d.ts.map +1 -1
  309. package/dist/lib/components/Editor/plugins/picker/numbered-list-picker-plugin.d.ts.map +1 -1
  310. package/dist/lib/components/Editor/plugins/picker/paragraph-picker-plugin.d.ts.map +1 -1
  311. package/dist/lib/components/Editor/plugins/picker/quote-picker-plugin.d.ts.map +1 -1
  312. package/dist/lib/components/Editor/plugins/picker/table-picker-plugin.d.ts +1 -1
  313. package/dist/lib/components/Editor/plugins/picker/table-picker-plugin.d.ts.map +1 -1
  314. package/dist/lib/components/Editor/plugins/plugins.d.ts +1 -1
  315. package/dist/lib/components/Editor/plugins/plugins.d.ts.map +1 -1
  316. package/dist/lib/components/Editor/plugins/tab-focus-plugin.d.ts.map +1 -1
  317. package/dist/lib/components/Editor/plugins/table-plugin.d.ts +2 -3
  318. package/dist/lib/components/Editor/plugins/table-plugin.d.ts.map +1 -1
  319. package/dist/lib/components/Editor/plugins/toolbar/block-format/block-format-data.d.ts.map +1 -1
  320. package/dist/lib/components/Editor/plugins/toolbar/block-format/format-heading.d.ts.map +1 -1
  321. package/dist/lib/components/Editor/plugins/toolbar/block-format-toolbar-plugin.d.ts +1 -1
  322. package/dist/lib/components/Editor/plugins/toolbar/block-format-toolbar-plugin.d.ts.map +1 -1
  323. package/dist/lib/components/Editor/plugins/toolbar/block-insert/insert-horizontal-rule.d.ts.map +1 -1
  324. package/dist/lib/components/Editor/plugins/toolbar/block-insert/insert-image.d.ts.map +1 -1
  325. package/dist/lib/components/Editor/plugins/toolbar/block-insert/insert-table.d.ts.map +1 -1
  326. package/dist/lib/components/Editor/plugins/toolbar/block-insert-plugin.d.ts.map +1 -1
  327. package/dist/lib/components/Editor/plugins/toolbar/clear-formatting-toolbar-plugin.d.ts.map +1 -1
  328. package/dist/lib/components/Editor/plugins/toolbar/code-language-toolbar-plugin.d.ts.map +1 -1
  329. package/dist/lib/components/Editor/plugins/toolbar/element-format-toolbar-plugin.d.ts +1 -1
  330. package/dist/lib/components/Editor/plugins/toolbar/element-format-toolbar-plugin.d.ts.map +1 -1
  331. package/dist/lib/components/Editor/plugins/toolbar/font-background-toolbar-plugin.d.ts.map +1 -1
  332. package/dist/lib/components/Editor/plugins/toolbar/font-color-toolbar-plugin.d.ts.map +1 -1
  333. package/dist/lib/components/Editor/plugins/toolbar/font-family-toolbar-plugin.d.ts.map +1 -1
  334. package/dist/lib/components/Editor/plugins/toolbar/font-format-toolbar-plugin.d.ts.map +1 -1
  335. package/dist/lib/components/Editor/plugins/toolbar/font-size-toolbar-plugin.d.ts.map +1 -1
  336. package/dist/lib/components/Editor/plugins/toolbar/history-toolbar-plugin.d.ts.map +1 -1
  337. package/dist/lib/components/Editor/plugins/toolbar/horizontal-rule-toolbar-plugin.d.ts.map +1 -1
  338. package/dist/lib/components/Editor/plugins/toolbar/image-toolbar-plugin.d.ts.map +1 -1
  339. package/dist/lib/components/Editor/plugins/toolbar/link-toolbar-plugin.d.ts +1 -1
  340. package/dist/lib/components/Editor/plugins/toolbar/link-toolbar-plugin.d.ts.map +1 -1
  341. package/dist/lib/components/Editor/plugins/toolbar/subsuper-toolbar-plugin.d.ts.map +1 -1
  342. package/dist/lib/components/Editor/plugins/toolbar/table-toolbar-plugin.d.ts.map +1 -1
  343. package/dist/lib/components/Editor/plugins/toolbar/toolbar-plugin.d.ts +1 -1
  344. package/dist/lib/components/Editor/plugins/toolbar/toolbar-plugin.d.ts.map +1 -1
  345. package/dist/lib/components/Editor/plugins/typing-pref-plugin.d.ts.map +1 -1
  346. package/dist/lib/components/Editor/plugins.d.ts.map +1 -1
  347. package/dist/lib/components/Editor/shared/can-use-dom.d.ts.map +1 -1
  348. package/dist/lib/components/Editor/shared/caret-from-point.d.ts.map +1 -1
  349. package/dist/lib/components/Editor/shared/environment.d.ts.map +1 -1
  350. package/dist/lib/components/Editor/shared/invariant.d.ts +1 -1
  351. package/dist/lib/components/Editor/shared/invariant.d.ts.map +1 -1
  352. package/dist/lib/components/Editor/shared/react-test-utils.d.ts +1 -1
  353. package/dist/lib/components/Editor/shared/react-test-utils.d.ts.map +1 -1
  354. package/dist/lib/components/Editor/shared/simple-diff-with-cursor.d.ts.map +1 -1
  355. package/dist/lib/components/Editor/shared/use-layout-effect.d.ts.map +1 -1
  356. package/dist/lib/components/Editor/themes/editor-theme.d.ts.map +1 -1
  357. package/dist/lib/components/Editor/transformers/index.d.ts +6 -6
  358. package/dist/lib/components/Editor/transformers/index.d.ts.map +1 -1
  359. package/dist/lib/components/Editor/transformers/markdown-emoji-transformer.d.ts.map +1 -1
  360. package/dist/lib/components/Editor/transformers/markdown-hr-transformer.d.ts.map +1 -1
  361. package/dist/lib/components/Editor/transformers/markdown-image-transformer.d.ts.map +1 -1
  362. package/dist/lib/components/Editor/transformers/markdown-table-transformer.d.ts.map +1 -1
  363. package/dist/lib/components/Editor/transformers/markdown-tweet-transformer.d.ts.map +1 -1
  364. package/dist/lib/components/Editor/types.d.ts.map +1 -1
  365. package/dist/lib/components/Editor/utils/can-use-dom.d.ts.map +1 -1
  366. package/dist/lib/components/Editor/utils/doc-serialization.d.ts.map +1 -1
  367. package/dist/lib/components/Editor/utils/emoji-list.d.ts.map +1 -1
  368. package/dist/lib/components/Editor/utils/get-dom-range-rect.d.ts.map +1 -1
  369. package/dist/lib/components/Editor/utils/get-selected-node.d.ts.map +1 -1
  370. package/dist/lib/components/Editor/utils/set-floating-elem-position.d.ts.map +1 -1
  371. package/dist/lib/components/Editor/utils/swipe.d.ts.map +1 -1
  372. package/dist/lib/components/Editor/utils/url.d.ts.map +1 -1
  373. package/dist/lib/components/FormattedDate/FormattedDate.d.ts.map +1 -1
  374. package/dist/lib/components/FormattedDate/index.d.ts +1 -1
  375. package/dist/lib/components/FormattedDate/index.d.ts.map +1 -1
  376. package/dist/lib/components/HierarchyGraph/HierarchyGraph.d.ts.map +1 -1
  377. package/dist/lib/components/Kbd/Kbd.d.ts.map +1 -1
  378. package/dist/lib/components/Kbd/index.d.ts +1 -1
  379. package/dist/lib/components/Kbd/index.d.ts.map +1 -1
  380. package/dist/lib/components/PageContent/PageContent.d.ts.map +1 -1
  381. package/dist/lib/components/PermissionGate/PermissionGate.d.ts +18 -0
  382. package/dist/lib/components/PermissionGate/PermissionGate.d.ts.map +1 -0
  383. package/dist/lib/components/PermissionGate/index.d.ts +2 -0
  384. package/dist/lib/components/PermissionGate/index.d.ts.map +1 -0
  385. package/dist/lib/components/PieChart/PieChart.d.ts.map +1 -1
  386. package/dist/lib/components/RadialChart/RadialChart.d.ts.map +1 -1
  387. package/dist/lib/components/Select/Select.d.ts.map +1 -1
  388. package/dist/lib/components/Select/components/MultiSelect/MultiSelect.d.ts.map +1 -1
  389. package/dist/lib/components/Select/hooks/useSelect.d.ts +2 -1
  390. package/dist/lib/components/Select/hooks/useSelect.d.ts.map +1 -1
  391. package/dist/lib/components/Sidebar/Sidebar.d.ts +2 -0
  392. package/dist/lib/components/Sidebar/Sidebar.d.ts.map +1 -1
  393. package/dist/lib/components/Switch/Switch.d.ts +2 -0
  394. package/dist/lib/components/Switch/Switch.d.ts.map +1 -1
  395. package/dist/lib/components/Switch/index.d.ts +2 -2
  396. package/dist/lib/components/Switch/index.d.ts.map +1 -1
  397. package/dist/lib/components/Tooltip/Tooltip.d.ts +12 -0
  398. package/dist/lib/components/Tooltip/Tooltip.d.ts.map +1 -0
  399. package/dist/lib/components/Tooltip/index.d.ts +3 -0
  400. package/dist/lib/components/Tooltip/index.d.ts.map +1 -0
  401. package/dist/lib/components/ValueFilter/ValueFilter.d.ts.map +1 -1
  402. package/dist/lib/components/index.d.ts +5 -3
  403. package/dist/lib/components/index.d.ts.map +1 -1
  404. package/dist/lib/hooks/useFormatters.d.ts.map +1 -1
  405. package/dist/lib/icons/icon-names.json.d.ts +13731 -0
  406. package/dist/lib/icons/index.d.ts +4 -0
  407. package/dist/lib/icons/index.d.ts.map +1 -0
  408. package/dist/lib/selects/currency/CurrencyFilter.d.ts.map +1 -1
  409. package/dist/lib/selects/icon/IconSelect.d.ts +20 -0
  410. package/dist/lib/selects/icon/IconSelect.d.ts.map +1 -0
  411. package/dist/lib/selects/icon/index.d.ts +2 -0
  412. package/dist/lib/selects/icon/index.d.ts.map +1 -0
  413. package/dist/lib/selects/index.d.ts +3 -2
  414. package/dist/lib/selects/index.d.ts.map +1 -1
  415. package/dist/lib/selects/location/LocationSelector.d.ts.map +1 -1
  416. package/dist/lib/selects/location/index.d.ts +1 -1
  417. package/dist/lib/selects/location/index.d.ts.map +1 -1
  418. package/dist/lib/selects/purchase-order-item/PurchaseOrderItemSelector.d.ts.map +1 -1
  419. package/dist/lib/selects/quant/QuantSelector.d.ts.map +1 -1
  420. package/dist/lib/selects/serial/SerialSelector.d.ts.map +1 -1
  421. package/dist/lib/selects/supplier-item/SupplierItemSelector.d.ts.map +1 -1
  422. package/dist/lib/selects/uom/UomSelector.d.ts.map +1 -1
  423. package/dist/lib/types/catalog-resolver.d.ts +189 -0
  424. package/dist/lib/types/catalog-resolver.d.ts.map +1 -0
  425. package/dist/lib/utils/format.d.ts.map +1 -1
  426. package/dist/lib/utils/hotkeys.d.ts +1 -1
  427. package/dist/lib/utils/hotkeys.d.ts.map +1 -1
  428. package/dist/lib/utils/zod.d.ts.map +1 -1
  429. package/dist/lock-keyhole.js +19 -0
  430. package/dist/lock-keyhole.js.map +1 -0
  431. package/dist/panel-left.js +18 -0
  432. package/dist/panel-left.js.map +1 -0
  433. package/dist/scan-barcode.js +23 -0
  434. package/dist/scan-barcode.js.map +1 -0
  435. package/dist/selects/icon.js +2 -0
  436. package/dist/selects/icon.js.map +1 -0
  437. package/dist/selects/purchase-order-item.js.map +1 -1
  438. package/dist/shadcn/shadcnMultiSelect/multi-select.d.ts.map +1 -1
  439. package/dist/sun.js +44 -0
  440. package/dist/sun.js.map +1 -0
  441. package/dist/table-properties.js +351 -0
  442. package/dist/table-properties.js.map +1 -0
  443. package/dist/{tooltip.js → tooltip2.js} +1 -1
  444. package/dist/tooltip2.js.map +1 -0
  445. package/dist/types/api-response.js +2 -0
  446. package/dist/types/api-response.js.map +1 -0
  447. package/dist/types/catalog-resolver.js +5 -0
  448. package/dist/types/catalog-resolver.js.map +1 -0
  449. package/dist/types/table-filter.js +17 -0
  450. package/dist/types/table-filter.js.map +1 -0
  451. package/dist/{cells.js → useDataTable.js} +152 -453
  452. package/dist/useDataTable.js.map +1 -0
  453. package/dist/useFormatters.js.map +1 -1
  454. package/dist/user.js +38 -0
  455. package/dist/user.js.map +1 -0
  456. package/dist/utils/format.js +1 -0
  457. package/dist/utils/format.js.map +1 -1
  458. package/dist/utils/motion.js +2 -2
  459. package/dist/utils/zod.js.map +1 -1
  460. package/dist/value.js +1 -1
  461. package/dist/wifi-off.js +111 -0
  462. package/dist/wifi-off.js.map +1 -0
  463. package/dist/youtube.js +737 -0
  464. package/dist/youtube.js.map +1 -0
  465. package/package.json +25 -3
  466. package/dist/cells.js.map +0 -1
  467. package/dist/tooltip.js.map +0 -1
@@ -2,6 +2,7 @@ import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import { a as useFormatters } from './useFormatters.js';
3
3
  import { S as Skeleton } from './Skeleton.js';
4
4
  import { c as cn } from './utils.js';
5
+ import { T as Typography } from './Typography.js';
5
6
 
6
7
  const DetailField = (props) => {
7
8
  const { label, className, loading } = props;
@@ -47,6 +48,18 @@ const DetailField = (props) => {
47
48
  ] });
48
49
  };
49
50
 
51
+ const DetailHeader = ({ title, badges, description, actions, className }) => /* @__PURE__ */ jsxs("div", { className: cn("flex items-start justify-between gap-4", className), children: [
52
+ /* @__PURE__ */ jsxs("div", { className: "min-w-0 space-y-1", children: [
53
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-wrap items-center gap-3", children: [
54
+ /* @__PURE__ */ jsx(Typography, { variant: "h4", children: title }),
55
+ badges
56
+ ] }),
57
+ description && /* @__PURE__ */ jsx(Typography, { variant: "body2", intent: "muted", children: description })
58
+ ] }),
59
+ actions && /* @__PURE__ */ jsx("div", { className: "flex shrink-0 items-center gap-2 self-center", children: actions })
60
+ ] });
61
+ DetailHeader.displayName = "DetailHeader";
62
+
50
63
  const DetailSection = ({ children, className, wrap }) => /* @__PURE__ */ jsx(
51
64
  "div",
52
65
  {
@@ -72,5 +85,5 @@ const DetailSectionSkeleton = ({ count = 3, wrap, className }) => /* @__PURE__ *
72
85
  )) });
73
86
  DetailSectionSkeleton.displayName = "DetailSectionSkeleton";
74
87
 
75
- export { DetailField as D, DetailSection as a, DetailSectionSkeleton as b };
88
+ export { DetailField as D, DetailHeader as a, DetailSection as b, DetailSectionSkeleton as c };
76
89
  //# sourceMappingURL=DetailSectionSkeleton.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DetailSectionSkeleton.js","sources":["../lib/components/DetailField/DetailField.tsx","../lib/components/DetailField/DetailSection.tsx","../lib/components/DetailField/DetailSectionSkeleton.tsx"],"sourcesContent":["import type React from 'react';\nimport { useFormatters } from '../../hooks/useFormatters';\nimport type { CurrencyAmount } from '../../utils/format';\nimport { Skeleton } from '../Skeleton';\n\nexport type DetailFieldType = 'string' | 'number' | 'currency' | 'date' | 'dateTime';\n\nexport type { CurrencyAmount };\n\ninterface DetailFieldBase {\n label: React.ReactNode;\n className?: string;\n loading?: boolean;\n}\n\ninterface DetailFieldStringProps extends DetailFieldBase {\n type: 'string';\n value: React.ReactNode;\n // Render in a monospace font. Use for identifier-style strings (PO numbers, GR numbers,\n // codes, IDs) where visual alignment of characters matters.\n mono?: boolean;\n}\n\ninterface DetailFieldNumberProps extends DetailFieldBase {\n type: 'number';\n value: number | string | null | undefined;\n fractionDigits?: number;\n}\n\ninterface DetailFieldCurrencyProps extends DetailFieldBase {\n type: 'currency';\n value: CurrencyAmount | null | undefined;\n exchangeRate?: number | null;\n}\n\ninterface DetailFieldDateProps extends DetailFieldBase {\n type: 'date';\n value: string | null | undefined;\n}\n\ninterface DetailFieldDateTimeProps extends DetailFieldBase {\n type: 'dateTime';\n value: string | null | undefined;\n timeZone?: string;\n}\n\nexport type DetailFieldProps =\n | DetailFieldStringProps\n | DetailFieldNumberProps\n | DetailFieldCurrencyProps\n | DetailFieldDateProps\n | DetailFieldDateTimeProps;\n\nexport const DetailField: React.FC<DetailFieldProps> = (props) => {\n const { label, className, loading } = props;\n const fmt = useFormatters();\n\n if (loading) {\n return (\n <div className={className}>\n <p className=\"text-sm text-muted-foreground\">{label}</p>\n <Skeleton className=\"mt-1 h-5 w-32\" />\n </div>\n );\n }\n\n let primary: React.ReactNode;\n let secondary: string | undefined;\n let isMono = false;\n\n switch (props.type) {\n case 'string': {\n ({ primary, secondary } = fmt.string(props.value));\n isMono = !!props.mono;\n break;\n }\n case 'number': {\n ({ primary, secondary } = fmt.number(props.value, { fractionDigits: props.fractionDigits }));\n isMono = true;\n break;\n }\n case 'currency': {\n ({ primary, secondary } = fmt.currency(props.value, { exchangeRate: props.exchangeRate }));\n isMono = true;\n break;\n }\n case 'date': {\n ({ primary, secondary } = fmt.date(props.value));\n break;\n }\n case 'dateTime': {\n ({ primary, secondary } = fmt.dateTime(props.value, { timeZone: props.timeZone }));\n break;\n }\n }\n\n return (\n <div className={className}>\n <p className=\"text-sm text-muted-foreground\">{label}</p>\n <p className={`font-medium mt-1${isMono ? ' font-mono' : ''}`}>{primary}</p>\n {secondary && <p className=\"mt-1 text-xs text-muted-foreground\">{secondary}</p>}\n </div>\n );\n};\n","import type React from 'react';\nimport { cn } from '../../../shadcn/utils';\n\nexport interface DetailSectionProps {\n children: React.ReactNode;\n className?: string;\n wrap?: boolean;\n}\n\nexport const DetailSection: React.FC<DetailSectionProps> = ({ children, className, wrap }) => (\n <div\n className={cn(\n 'inline-flex items-stretch divide-x divide-border rounded-md border bg-muted/40 overflow-hidden',\n wrap && 'flex-wrap',\n className,\n )}\n >\n {children}\n </div>\n);\n","import { Skeleton } from '../Skeleton';\nimport { DetailSection } from './DetailSection';\n\nexport interface DetailSectionSkeletonProps {\n /** Number of field placeholders to render */\n count?: number;\n /** Allow the plate to wrap onto multiple rows */\n wrap?: boolean;\n className?: string;\n}\n\n// Loading placeholder matching <DetailSection> with <DetailField> children: a bordered, divided\n// plate where each cell is a label + value skeleton.\nexport const DetailSectionSkeleton = ({ count = 3, wrap, className }: DetailSectionSkeletonProps) => (\n <DetailSection wrap={wrap} className={className}>\n {Array.from({ length: count }).map((_, i) => (\n <div\n // biome-ignore lint/suspicious/noArrayIndexKey: <static skeleton list>\n key={`detail-skel-${i}`}\n className=\"space-y-1.5 px-4 py-2\"\n >\n <Skeleton className=\"h-3 w-12\" />\n <Skeleton className=\"h-4 w-20\" />\n </div>\n ))}\n </DetailSection>\n);\n\nDetailSectionSkeleton.displayName = 'DetailSectionSkeleton';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DetailSectionSkeleton.js","sources":["../lib/components/DetailField/DetailField.tsx","../lib/components/DetailField/DetailHeader.tsx","../lib/components/DetailField/DetailSection.tsx","../lib/components/DetailField/DetailSectionSkeleton.tsx"],"sourcesContent":["import type React from 'react';\nimport { useFormatters } from '../../hooks/useFormatters';\nimport type { CurrencyAmount } from '../../utils/format';\nimport { Skeleton } from '../Skeleton';\n\nexport type DetailFieldType = 'string' | 'number' | 'currency' | 'date' | 'dateTime';\n\nexport type { CurrencyAmount };\n\ninterface DetailFieldBase {\n label: React.ReactNode;\n className?: string;\n loading?: boolean;\n}\n\ninterface DetailFieldStringProps extends DetailFieldBase {\n type: 'string';\n value: React.ReactNode;\n // Render in a monospace font. Use for identifier-style strings (PO numbers, GR numbers,\n // codes, IDs) where visual alignment of characters matters.\n mono?: boolean;\n}\n\ninterface DetailFieldNumberProps extends DetailFieldBase {\n type: 'number';\n value: number | string | null | undefined;\n fractionDigits?: number;\n}\n\ninterface DetailFieldCurrencyProps extends DetailFieldBase {\n type: 'currency';\n value: CurrencyAmount | null | undefined;\n exchangeRate?: number | null;\n}\n\ninterface DetailFieldDateProps extends DetailFieldBase {\n type: 'date';\n value: string | null | undefined;\n}\n\ninterface DetailFieldDateTimeProps extends DetailFieldBase {\n type: 'dateTime';\n value: string | null | undefined;\n timeZone?: string;\n}\n\nexport type DetailFieldProps =\n | DetailFieldStringProps\n | DetailFieldNumberProps\n | DetailFieldCurrencyProps\n | DetailFieldDateProps\n | DetailFieldDateTimeProps;\n\nexport const DetailField: React.FC<DetailFieldProps> = (props) => {\n const { label, className, loading } = props;\n const fmt = useFormatters();\n\n if (loading) {\n return (\n <div className={className}>\n <p className=\"text-sm text-muted-foreground\">{label}</p>\n <Skeleton className=\"mt-1 h-5 w-32\" />\n </div>\n );\n }\n\n let primary: React.ReactNode;\n let secondary: string | undefined;\n let isMono = false;\n\n switch (props.type) {\n case 'string': {\n ({ primary, secondary } = fmt.string(props.value));\n isMono = !!props.mono;\n break;\n }\n case 'number': {\n ({ primary, secondary } = fmt.number(props.value, { fractionDigits: props.fractionDigits }));\n isMono = true;\n break;\n }\n case 'currency': {\n ({ primary, secondary } = fmt.currency(props.value, { exchangeRate: props.exchangeRate }));\n isMono = true;\n break;\n }\n case 'date': {\n ({ primary, secondary } = fmt.date(props.value));\n break;\n }\n case 'dateTime': {\n ({ primary, secondary } = fmt.dateTime(props.value, { timeZone: props.timeZone }));\n break;\n }\n }\n\n return (\n <div className={className}>\n <p className=\"text-sm text-muted-foreground\">{label}</p>\n <p className={`font-medium mt-1${isMono ? ' font-mono' : ''}`}>{primary}</p>\n {secondary && <p className=\"mt-1 text-xs text-muted-foreground\">{secondary}</p>}\n </div>\n );\n};\n","import type React from 'react';\nimport { cn } from '../../../shadcn/utils';\nimport { Typography } from '../Typography';\n\nexport interface DetailHeaderProps {\n /** The record's title/name */\n title: React.ReactNode;\n /** Inline badges shown next to the title (code, status, role, …) — pass your own <Badge> elements */\n badges?: React.ReactNode;\n /** Optional muted description under the title */\n description?: React.ReactNode;\n /** Right-aligned action buttons */\n actions?: React.ReactNode;\n className?: string;\n}\n\n// Standard detail-view header: title + inline badges on the left, action buttons on the right.\n// Pair with <DetailSection> on detail panels/pages so every record header shares one layout.\nexport const DetailHeader: React.FC<DetailHeaderProps> = ({ title, badges, description, actions, className }) => (\n <div className={cn('flex items-start justify-between gap-4', className)}>\n <div className=\"min-w-0 space-y-1\">\n <div className=\"flex flex-wrap items-center gap-3\">\n <Typography variant=\"h4\">{title}</Typography>\n {badges}\n </div>\n {description && (\n <Typography variant=\"body2\" intent=\"muted\">\n {description}\n </Typography>\n )}\n </div>\n {actions && <div className=\"flex shrink-0 items-center gap-2 self-center\">{actions}</div>}\n </div>\n);\n\nDetailHeader.displayName = 'DetailHeader';\n","import type React from 'react';\nimport { cn } from '../../../shadcn/utils';\n\nexport interface DetailSectionProps {\n children: React.ReactNode;\n className?: string;\n wrap?: boolean;\n}\n\nexport const DetailSection: React.FC<DetailSectionProps> = ({ children, className, wrap }) => (\n <div\n className={cn(\n 'inline-flex items-stretch divide-x divide-border rounded-md border bg-muted/40 overflow-hidden',\n wrap && 'flex-wrap',\n className,\n )}\n >\n {children}\n </div>\n);\n","import { Skeleton } from '../Skeleton';\nimport { DetailSection } from './DetailSection';\n\nexport interface DetailSectionSkeletonProps {\n /** Number of field placeholders to render */\n count?: number;\n /** Allow the plate to wrap onto multiple rows */\n wrap?: boolean;\n className?: string;\n}\n\n// Loading placeholder matching <DetailSection> with <DetailField> children: a bordered, divided\n// plate where each cell is a label + value skeleton.\nexport const DetailSectionSkeleton = ({ count = 3, wrap, className }: DetailSectionSkeletonProps) => (\n <DetailSection wrap={wrap} className={className}>\n {Array.from({ length: count }).map((_, i) => (\n <div\n // biome-ignore lint/suspicious/noArrayIndexKey: <static skeleton list>\n key={`detail-skel-${i}`}\n className=\"space-y-1.5 px-4 py-2\"\n >\n <Skeleton className=\"h-3 w-12\" />\n <Skeleton className=\"h-4 w-20\" />\n </div>\n ))}\n </DetailSection>\n);\n\nDetailSectionSkeleton.displayName = 'DetailSectionSkeleton';\n"],"names":[],"mappings":"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"}
package/dist/Dialog.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { jsx, jsxs } from 'react/jsx-runtime';
2
2
  import { forwardRef, useRef, useEffect } from 'react';
3
3
  import { c as cn } from './utils.js';
4
- import { R as Root, T as Trigger, C as Content, a as Close, b as Title, D as Description, P as Portal, O as Overlay } from './index31.js';
4
+ import { R as Root, T as Trigger, C as Content, a as Close, b as Title, D as Description, P as Portal, O as Overlay } from './index32.js';
5
5
  import { X } from './x.js';
6
6
 
7
7
  function Dialog$1({ ...props }) {
@@ -1 +1 @@
1
- {"version":3,"file":"Dialog.js","sources":["../shadcn/shadcnDialog/dialog.tsx","../lib/components/Dialog/Dialog.tsx"],"sourcesContent":["'use client';\n\nimport * as DialogPrimitive from '@radix-ui/react-dialog';\nimport { X } from 'lucide-react';\nimport type * as React from 'react';\nimport { forwardRef } from 'react';\n\nimport { cn } from '../utils';\n\n// Dialog root wrapper with data-slot attribute\nfunction Dialog({ ...props }: React.ComponentProps<typeof DialogPrimitive.Root>) {\n return <DialogPrimitive.Root data-slot=\"dialog\" {...props} />;\n}\n\n// Dialog trigger wrapper with data-slot attribute\nfunction DialogTrigger({ ...props }: React.ComponentProps<typeof DialogPrimitive.Trigger>) {\n return <DialogPrimitive.Trigger data-slot=\"dialog-trigger\" {...props} />;\n}\n\n// Dialog portal pass-through\nfunction DialogPortal({ ...props }: React.ComponentProps<typeof DialogPrimitive.Portal>) {\n return <DialogPrimitive.Portal {...props} />;\n}\n\n// Dialog close wrapper with data-slot attribute\nfunction DialogClose({ ...props }: React.ComponentProps<typeof DialogPrimitive.Close>) {\n return <DialogPrimitive.Close data-slot=\"dialog-close\" {...props} />;\n}\n\nconst DialogOverlay = forwardRef<\n React.ElementRef<typeof DialogPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Overlay\n ref={ref}\n data-slot=\"dialog-overlay\"\n className={cn(\n 'fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0',\n className,\n )}\n {...props}\n />\n));\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName;\n\nconst DialogContent = forwardRef<\n React.ElementRef<typeof DialogPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n <DialogPortal>\n <DialogOverlay />\n <DialogPrimitive.Content\n ref={ref}\n data-slot=\"dialog-content\"\n className={cn(\n 'fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 sm:rounded-lg',\n className,\n )}\n {...props}\n >\n {children}\n <DialogPrimitive.Close className=\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground\">\n <X className=\"h-4 w-4\" />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n </DialogPrimitive.Content>\n </DialogPortal>\n));\nDialogContent.displayName = DialogPrimitive.Content.displayName;\n\n// Dialog header layout container\nfunction DialogHeader({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) {\n return (\n <div\n data-slot=\"dialog-header\"\n className={cn('flex flex-col gap-2 text-center sm:text-left', className)}\n {...props}\n />\n );\n}\nDialogHeader.displayName = 'DialogHeader';\n\n// Dialog footer layout container\nfunction DialogFooter({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) {\n return (\n <div\n data-slot=\"dialog-footer\"\n className={cn('flex flex-col-reverse gap-2 sm:flex-row sm:justify-end', className)}\n {...props}\n />\n );\n}\nDialogFooter.displayName = 'DialogFooter';\n\nconst DialogTitle = forwardRef<\n React.ElementRef<typeof DialogPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Title\n ref={ref}\n data-slot=\"dialog-title\"\n className={cn('text-lg font-semibold leading-none tracking-tight', className)}\n {...props}\n />\n));\nDialogTitle.displayName = DialogPrimitive.Title.displayName;\n\nconst DialogDescription = forwardRef<\n React.ElementRef<typeof DialogPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Description\n ref={ref}\n data-slot=\"dialog-description\"\n className={cn('text-sm text-muted-foreground', className)}\n {...props}\n />\n));\nDialogDescription.displayName = DialogPrimitive.Description.displayName;\n\nexport {\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogOverlay,\n DialogPortal,\n DialogTitle,\n DialogTrigger,\n};\n","import type { LucideIcon } from 'lucide-react';\nimport type React from 'react';\nimport { useEffect, useRef } from 'react';\nimport {\n Dialog as ShadcnDialog,\n DialogContent as ShadcnDialogContent,\n DialogDescription as ShadcnDialogDescription,\n DialogHeader as ShadcnDialogHeader,\n DialogTitle as ShadcnDialogTitle,\n DialogTrigger as ShadcnDialogTrigger,\n} from '../../../shadcn/shadcnDialog';\nimport { cn } from '../../../shadcn/utils';\nimport type { DialogHandle } from '../../hooks/useDialog';\n\nexport interface DialogActionsProps {\n children: React.ReactNode;\n className?: string;\n}\n\n// Standard dialog/form action bar — a top divider with right-aligned buttons that stack on mobile.\n// Use to wrap a form's submit/cancel buttons so every dialog shares the same footer layout.\nexport function DialogActions({ children, className }: DialogActionsProps) {\n return (\n <div className={cn('flex flex-col-reverse gap-2 border-t px-6 pt-4 pb-6 sm:flex-row sm:justify-end', className)}>\n {children}\n </div>\n );\n}\n\nDialogActions.displayName = 'DialogActions';\n\nconst OPEN_DIALOG_SELECTOR = '[data-state=\"open\"][role=\"dialog\"], [data-state=\"open\"][role=\"alertdialog\"]';\n\nfunction ensurePointerEventsWatchdog() {\n const g = globalThis as { __quantumUiPointerWatchdog?: boolean };\n if (g.__quantumUiPointerWatchdog || typeof document === 'undefined') return;\n g.__quantumUiPointerWatchdog = true;\n const fix = () => {\n if (document.body.style.pointerEvents === 'none' && !document.querySelector(OPEN_DIALOG_SELECTOR)) {\n document.body.style.pointerEvents = '';\n }\n };\n new MutationObserver(fix).observe(document.body, { attributes: true, attributeFilter: ['style'] });\n}\n\nfunction isTopmostDialog(el: HTMLElement | null) {\n if (!el || typeof document === 'undefined') return true;\n const open = document.querySelectorAll(OPEN_DIALOG_SELECTOR);\n return open.length === 0 || open[open.length - 1] === el;\n}\n\nfunction ensureEscapeManager() {\n const g = globalThis as { __quantumUiEscapeMgr?: boolean };\n if (g.__quantumUiEscapeMgr || typeof document === 'undefined') return;\n g.__quantumUiEscapeMgr = true;\n document.addEventListener(\n 'keydown',\n (e) => {\n if (e.key !== 'Escape') return;\n const confirmStore = (globalThis as { __quantumUiConfirmStore?: { getSnapshot: () => { open: boolean }; cancel: () => void } })\n .__quantumUiConfirmStore;\n if (!confirmStore?.getSnapshot().open) return;\n e.preventDefault();\n e.stopImmediatePropagation();\n confirmStore.cancel();\n },\n true,\n );\n}\n\nexport interface DialogProps {\n // Handle from useDialog() — controls open state and cleanup\n handle: DialogHandle;\n // anchor — render prop that receives open(); button renders outside DialogTrigger\n anchor?: (open: () => void) => React.ReactNode;\n // content — render prop that receives close()\n content?: (close: () => void) => React.ReactNode;\n // trigger — legacy ReactNode trigger (wrapped in DialogTrigger automatically)\n trigger?: React.ReactNode;\n // Required header icon — rendered as a badge before the title to standardize dialog headers.\n icon: LucideIcon;\n // Colour of the header icon badge. Use 'destructive' for delete dialogs, 'warning' for cautions.\n iconVariant?: 'default' | 'destructive' | 'warning';\n title: React.ReactNode;\n description: React.ReactNode;\n // Optional badge-style slot rendered inline with the title in the header.\n // Use for short status indicators tied to the dialog's subject (e.g. \"Draft\", \"Derived unit\").\n badgeSlot?: React.ReactNode;\n children?: React.ReactNode;\n className?: string;\n}\n\n// Composite dialog — controlled by a useDialog() handle\nexport function Dialog({\n handle,\n anchor,\n content,\n trigger,\n icon: Icon,\n iconVariant = 'default',\n title,\n description,\n badgeSlot,\n children,\n className,\n}: DialogProps) {\n const contentRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n ensurePointerEventsWatchdog();\n ensureEscapeManager();\n }, []);\n\n return (\n <ShadcnDialog open={handle.isOpen} onOpenChange={handle.onOpenChange}>\n {anchor ? anchor(handle.open) : trigger && <ShadcnDialogTrigger asChild>{trigger}</ShadcnDialogTrigger>}\n <ShadcnDialogContent\n ref={contentRef}\n className={cn('flex max-h-[95vh] flex-col gap-0 p-0', className)}\n onInteractOutside={(e) => {\n if (!isTopmostDialog(contentRef.current)) e.preventDefault();\n }}\n >\n <ShadcnDialogHeader className=\"shrink-0 border-b px-6 pt-6 pb-4\">\n <ShadcnDialogTitle>\n <span className=\"flex items-center gap-2\">\n <span\n className={cn(\n 'flex size-8 shrink-0 items-center justify-center rounded-lg',\n iconVariant === 'destructive' && 'bg-destructive/10 text-destructive',\n iconVariant === 'warning' && 'bg-warning/10 text-warning',\n (!iconVariant || iconVariant === 'default') && 'bg-primary/10 text-primary',\n )}\n >\n <Icon className=\"size-4\" />\n </span>\n <span>{title}</span>\n {badgeSlot}\n </span>\n </ShadcnDialogTitle>\n <ShadcnDialogDescription>{description}</ShadcnDialogDescription>\n </ShadcnDialogHeader>\n {content ? (\n content(handle.close)\n ) : (\n <div className=\"min-h-0 flex-1 overflow-y-auto overscroll-contain px-6 py-4\">{children}</div>\n )}\n </ShadcnDialogContent>\n </ShadcnDialog>\n );\n}\n\nDialog.displayName = 'Dialog';\n"],"names":["Dialog","DialogPrimitive.Root","DialogPrimitive.Trigger","DialogPrimitive.Portal","DialogPrimitive.Overlay","DialogPrimitive.Content","DialogPrimitive.Close","DialogPrimitive.Title","DialogPrimitive.Description","ShadcnDialog","ShadcnDialogTrigger","ShadcnDialogContent","ShadcnDialogHeader","ShadcnDialogTitle","ShadcnDialogDescription"],"mappings":"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"}
1
+ {"version":3,"file":"Dialog.js","sources":["../shadcn/shadcnDialog/dialog.tsx","../lib/components/Dialog/Dialog.tsx"],"sourcesContent":["'use client';\n\nimport * as DialogPrimitive from '@radix-ui/react-dialog';\nimport { X } from 'lucide-react';\nimport type * as React from 'react';\nimport { forwardRef } from 'react';\n\nimport { cn } from '../utils';\n\n// Dialog root wrapper with data-slot attribute\nfunction Dialog({ ...props }: React.ComponentProps<typeof DialogPrimitive.Root>) {\n return <DialogPrimitive.Root data-slot=\"dialog\" {...props} />;\n}\n\n// Dialog trigger wrapper with data-slot attribute\nfunction DialogTrigger({ ...props }: React.ComponentProps<typeof DialogPrimitive.Trigger>) {\n return <DialogPrimitive.Trigger data-slot=\"dialog-trigger\" {...props} />;\n}\n\n// Dialog portal pass-through\nfunction DialogPortal({ ...props }: React.ComponentProps<typeof DialogPrimitive.Portal>) {\n return <DialogPrimitive.Portal {...props} />;\n}\n\n// Dialog close wrapper with data-slot attribute\nfunction DialogClose({ ...props }: React.ComponentProps<typeof DialogPrimitive.Close>) {\n return <DialogPrimitive.Close data-slot=\"dialog-close\" {...props} />;\n}\n\nconst DialogOverlay = forwardRef<\n React.ElementRef<typeof DialogPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Overlay\n ref={ref}\n data-slot=\"dialog-overlay\"\n className={cn(\n 'fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0',\n className,\n )}\n {...props}\n />\n));\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName;\n\nconst DialogContent = forwardRef<\n React.ElementRef<typeof DialogPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n <DialogPortal>\n <DialogOverlay />\n <DialogPrimitive.Content\n ref={ref}\n data-slot=\"dialog-content\"\n className={cn(\n 'fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 sm:rounded-lg',\n className,\n )}\n {...props}\n >\n {children}\n <DialogPrimitive.Close className=\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground\">\n <X className=\"h-4 w-4\" />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n </DialogPrimitive.Content>\n </DialogPortal>\n));\nDialogContent.displayName = DialogPrimitive.Content.displayName;\n\n// Dialog header layout container\nfunction DialogHeader({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) {\n return (\n <div\n data-slot=\"dialog-header\"\n className={cn('flex flex-col gap-2 text-center sm:text-left', className)}\n {...props}\n />\n );\n}\nDialogHeader.displayName = 'DialogHeader';\n\n// Dialog footer layout container\nfunction DialogFooter({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) {\n return (\n <div\n data-slot=\"dialog-footer\"\n className={cn('flex flex-col-reverse gap-2 sm:flex-row sm:justify-end', className)}\n {...props}\n />\n );\n}\nDialogFooter.displayName = 'DialogFooter';\n\nconst DialogTitle = forwardRef<\n React.ElementRef<typeof DialogPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Title\n ref={ref}\n data-slot=\"dialog-title\"\n className={cn('text-lg font-semibold leading-none tracking-tight', className)}\n {...props}\n />\n));\nDialogTitle.displayName = DialogPrimitive.Title.displayName;\n\nconst DialogDescription = forwardRef<\n React.ElementRef<typeof DialogPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Description\n ref={ref}\n data-slot=\"dialog-description\"\n className={cn('text-sm text-muted-foreground', className)}\n {...props}\n />\n));\nDialogDescription.displayName = DialogPrimitive.Description.displayName;\n\nexport {\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogOverlay,\n DialogPortal,\n DialogTitle,\n DialogTrigger,\n};\n","import type { LucideIcon } from 'lucide-react';\nimport type React from 'react';\nimport { useEffect, useRef } from 'react';\nimport {\n Dialog as ShadcnDialog,\n DialogContent as ShadcnDialogContent,\n DialogDescription as ShadcnDialogDescription,\n DialogHeader as ShadcnDialogHeader,\n DialogTitle as ShadcnDialogTitle,\n DialogTrigger as ShadcnDialogTrigger,\n} from '../../../shadcn/shadcnDialog';\nimport { cn } from '../../../shadcn/utils';\nimport type { DialogHandle } from '../../hooks/useDialog';\n\nexport interface DialogActionsProps {\n children: React.ReactNode;\n className?: string;\n}\n\n// Standard dialog/form action bar — a top divider with right-aligned buttons that stack on mobile.\n// Use to wrap a form's submit/cancel buttons so every dialog shares the same footer layout.\nexport function DialogActions({ children, className }: DialogActionsProps) {\n return (\n <div className={cn('flex flex-col-reverse gap-2 border-t px-6 pt-4 pb-6 sm:flex-row sm:justify-end', className)}>\n {children}\n </div>\n );\n}\n\nDialogActions.displayName = 'DialogActions';\n\nconst OPEN_DIALOG_SELECTOR = '[data-state=\"open\"][role=\"dialog\"], [data-state=\"open\"][role=\"alertdialog\"]';\n\nfunction ensurePointerEventsWatchdog() {\n const g = globalThis as { __quantumUiPointerWatchdog?: boolean };\n if (g.__quantumUiPointerWatchdog || typeof document === 'undefined') return;\n g.__quantumUiPointerWatchdog = true;\n const fix = () => {\n if (document.body.style.pointerEvents === 'none' && !document.querySelector(OPEN_DIALOG_SELECTOR)) {\n document.body.style.pointerEvents = '';\n }\n };\n new MutationObserver(fix).observe(document.body, { attributes: true, attributeFilter: ['style'] });\n}\n\nfunction isTopmostDialog(el: HTMLElement | null) {\n if (!el || typeof document === 'undefined') return true;\n const open = document.querySelectorAll(OPEN_DIALOG_SELECTOR);\n return open.length === 0 || open[open.length - 1] === el;\n}\n\nfunction ensureEscapeManager() {\n const g = globalThis as { __quantumUiEscapeMgr?: boolean };\n if (g.__quantumUiEscapeMgr || typeof document === 'undefined') return;\n g.__quantumUiEscapeMgr = true;\n document.addEventListener(\n 'keydown',\n (e) => {\n if (e.key !== 'Escape') return;\n const confirmStore = (\n globalThis as { __quantumUiConfirmStore?: { getSnapshot: () => { open: boolean }; cancel: () => void } }\n ).__quantumUiConfirmStore;\n if (!confirmStore?.getSnapshot().open) return;\n e.preventDefault();\n e.stopImmediatePropagation();\n confirmStore.cancel();\n },\n true,\n );\n}\n\nexport interface DialogProps {\n // Handle from useDialog() — controls open state and cleanup\n handle: DialogHandle;\n // anchor — render prop that receives open(); button renders outside DialogTrigger\n anchor?: (open: () => void) => React.ReactNode;\n // content — render prop that receives close()\n content?: (close: () => void) => React.ReactNode;\n // trigger — legacy ReactNode trigger (wrapped in DialogTrigger automatically)\n trigger?: React.ReactNode;\n // Required header icon — rendered as a badge before the title to standardize dialog headers.\n icon: LucideIcon;\n // Colour of the header icon badge. Use 'destructive' for delete dialogs, 'warning' for cautions.\n iconVariant?: 'default' | 'destructive' | 'warning';\n title: React.ReactNode;\n description: React.ReactNode;\n // Optional badge-style slot rendered inline with the title in the header.\n // Use for short status indicators tied to the dialog's subject (e.g. \"Draft\", \"Derived unit\").\n badgeSlot?: React.ReactNode;\n children?: React.ReactNode;\n className?: string;\n}\n\n// Composite dialog — controlled by a useDialog() handle\nexport function Dialog({\n handle,\n anchor,\n content,\n trigger,\n icon: Icon,\n iconVariant = 'default',\n title,\n description,\n badgeSlot,\n children,\n className,\n}: DialogProps) {\n const contentRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n ensurePointerEventsWatchdog();\n ensureEscapeManager();\n }, []);\n\n return (\n <ShadcnDialog open={handle.isOpen} onOpenChange={handle.onOpenChange}>\n {anchor ? anchor(handle.open) : trigger && <ShadcnDialogTrigger asChild>{trigger}</ShadcnDialogTrigger>}\n <ShadcnDialogContent\n ref={contentRef}\n className={cn('flex max-h-[95vh] flex-col gap-0 p-0', className)}\n onInteractOutside={(e) => {\n if (!isTopmostDialog(contentRef.current)) e.preventDefault();\n }}\n >\n <ShadcnDialogHeader className=\"shrink-0 border-b px-6 pt-6 pb-4\">\n <ShadcnDialogTitle>\n <span className=\"flex items-center gap-2\">\n <span\n className={cn(\n 'flex size-8 shrink-0 items-center justify-center rounded-lg',\n iconVariant === 'destructive' && 'bg-destructive/10 text-destructive',\n iconVariant === 'warning' && 'bg-warning/10 text-warning',\n (!iconVariant || iconVariant === 'default') && 'bg-primary/10 text-primary',\n )}\n >\n <Icon className=\"size-4\" />\n </span>\n <span>{title}</span>\n {badgeSlot}\n </span>\n </ShadcnDialogTitle>\n <ShadcnDialogDescription>{description}</ShadcnDialogDescription>\n </ShadcnDialogHeader>\n {content ? (\n content(handle.close)\n ) : (\n <div className=\"min-h-0 flex-1 overflow-y-auto overscroll-contain px-6 py-4\">{children}</div>\n )}\n </ShadcnDialogContent>\n </ShadcnDialog>\n );\n}\n\nDialog.displayName = 'Dialog';\n"],"names":["Dialog","DialogPrimitive.Root","DialogPrimitive.Trigger","DialogPrimitive.Portal","DialogPrimitive.Overlay","DialogPrimitive.Content","DialogPrimitive.Close","DialogPrimitive.Title","DialogPrimitive.Description","ShadcnDialog","ShadcnDialogTrigger","ShadcnDialogContent","ShadcnDialogHeader","ShadcnDialogTitle","ShadcnDialogDescription"],"mappings":"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"}
@@ -7,114 +7,7 @@ import { isAxiosError } from 'axios';
7
7
  import { c as cn } from './utils.js';
8
8
  import { B as Button } from './Button.js';
9
9
  import { C as CircleAlert } from './circle-alert.js';
10
- import { c as createLucideIcon } from './createLucideIcon.js';
11
-
12
- /**
13
- * @license lucide-react v0.562.0 - ISC
14
- *
15
- * This source code is licensed under the ISC license.
16
- * See the LICENSE file in the root directory of this source tree.
17
- */
18
-
19
-
20
- const __iconNode$4 = [
21
- ["path", { d: "m16 17 5-5-5-5", key: "1bji2h" }],
22
- ["path", { d: "M21 12H9", key: "dn1m92" }],
23
- ["path", { d: "M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4", key: "1uf3rs" }]
24
- ];
25
- const LogOut = createLucideIcon("log-out", __iconNode$4);
26
-
27
- /**
28
- * @license lucide-react v0.562.0 - ISC
29
- *
30
- * This source code is licensed under the ISC license.
31
- * See the LICENSE file in the root directory of this source tree.
32
- */
33
-
34
-
35
- const __iconNode$3 = [
36
- [
37
- "path",
38
- {
39
- d: "M21 10V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l2-1.14",
40
- key: "e7tb2h"
41
- }
42
- ],
43
- ["path", { d: "m7.5 4.27 9 5.15", key: "1c824w" }],
44
- ["polyline", { points: "3.29 7 12 12 20.71 7", key: "ousv84" }],
45
- ["line", { x1: "12", x2: "12", y1: "22", y2: "12", key: "a4e8g8" }],
46
- ["path", { d: "m17 13 5 5m-5 0 5-5", key: "im3w4b" }]
47
- ];
48
- const PackageX = createLucideIcon("package-x", __iconNode$3);
49
-
50
- /**
51
- * @license lucide-react v0.562.0 - ISC
52
- *
53
- * This source code is licensed under the ISC license.
54
- * See the LICENSE file in the root directory of this source tree.
55
- */
56
-
57
-
58
- const __iconNode$2 = [
59
- [
60
- "path",
61
- {
62
- d: "M6 10H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v4a2 2 0 0 1-2 2h-2",
63
- key: "4b9dqc"
64
- }
65
- ],
66
- [
67
- "path",
68
- {
69
- d: "M6 14H4a2 2 0 0 0-2 2v4a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-4a2 2 0 0 0-2-2h-2",
70
- key: "22nnkd"
71
- }
72
- ],
73
- ["path", { d: "M6 6h.01", key: "1utrut" }],
74
- ["path", { d: "M6 18h.01", key: "uhywen" }],
75
- ["path", { d: "m13 6-4 6h6l-4 6", key: "14hqih" }]
76
- ];
77
- const ServerCrash = createLucideIcon("server-crash", __iconNode$2);
78
-
79
- /**
80
- * @license lucide-react v0.562.0 - ISC
81
- *
82
- * This source code is licensed under the ISC license.
83
- * See the LICENSE file in the root directory of this source tree.
84
- */
85
-
86
-
87
- const __iconNode$1 = [
88
- [
89
- "path",
90
- {
91
- d: "M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",
92
- key: "oel41y"
93
- }
94
- ],
95
- ["path", { d: "m14.5 9.5-5 5", key: "17q4r4" }],
96
- ["path", { d: "m9.5 9.5 5 5", key: "18nt4w" }]
97
- ];
98
- const ShieldX = createLucideIcon("shield-x", __iconNode$1);
99
-
100
- /**
101
- * @license lucide-react v0.562.0 - ISC
102
- *
103
- * This source code is licensed under the ISC license.
104
- * See the LICENSE file in the root directory of this source tree.
105
- */
106
-
107
-
108
- const __iconNode = [
109
- ["path", { d: "M12 20h.01", key: "zekei9" }],
110
- ["path", { d: "M8.5 16.429a5 5 0 0 1 7 0", key: "1bycff" }],
111
- ["path", { d: "M5 12.859a10 10 0 0 1 5.17-2.69", key: "1dl1wf" }],
112
- ["path", { d: "M19 12.859a10 10 0 0 0-2.007-1.523", key: "4k23kn" }],
113
- ["path", { d: "M2 8.82a15 15 0 0 1 4.177-2.643", key: "1grhjp" }],
114
- ["path", { d: "M22 8.82a15 15 0 0 0-11.288-3.764", key: "z3jwby" }],
115
- ["path", { d: "m2 2 20 20", key: "1ooewy" }]
116
- ];
117
- const WifiOff = createLucideIcon("wifi-off", __iconNode);
10
+ import { W as WifiOff, S as ServerCrash, P as PackageX, a as ShieldX, L as LogOut } from './wifi-off.js';
118
11
 
119
12
  const ERROR_PAGE_PRESETS = {
120
13
  unauthorized: {
@@ -1 +1 @@
1
- {"version":3,"file":"ErrorBoundary.js","sources":["../node_modules/.pnpm/lucide-react@0.562.0_react@19.2.3/node_modules/lucide-react/dist/esm/icons/log-out.js","../node_modules/.pnpm/lucide-react@0.562.0_react@19.2.3/node_modules/lucide-react/dist/esm/icons/package-x.js","../node_modules/.pnpm/lucide-react@0.562.0_react@19.2.3/node_modules/lucide-react/dist/esm/icons/server-crash.js","../node_modules/.pnpm/lucide-react@0.562.0_react@19.2.3/node_modules/lucide-react/dist/esm/icons/shield-x.js","../node_modules/.pnpm/lucide-react@0.562.0_react@19.2.3/node_modules/lucide-react/dist/esm/icons/wifi-off.js","../lib/components/ErrorBoundary/ErrorPage.tsx","../lib/components/ErrorBoundary/ErrorBoundary.tsx"],"sourcesContent":["/**\n * @license lucide-react v0.562.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"m16 17 5-5-5-5\", key: \"1bji2h\" }],\n [\"path\", { d: \"M21 12H9\", key: \"dn1m92\" }],\n [\"path\", { d: \"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4\", key: \"1uf3rs\" }]\n];\nconst LogOut = createLucideIcon(\"log-out\", __iconNode);\n\nexport { __iconNode, LogOut as default };\n//# sourceMappingURL=log-out.js.map\n","/**\n * @license lucide-react v0.562.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M21 10V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l2-1.14\",\n key: \"e7tb2h\"\n }\n ],\n [\"path\", { d: \"m7.5 4.27 9 5.15\", key: \"1c824w\" }],\n [\"polyline\", { points: \"3.29 7 12 12 20.71 7\", key: \"ousv84\" }],\n [\"line\", { x1: \"12\", x2: \"12\", y1: \"22\", y2: \"12\", key: \"a4e8g8\" }],\n [\"path\", { d: \"m17 13 5 5m-5 0 5-5\", key: \"im3w4b\" }]\n];\nconst PackageX = createLucideIcon(\"package-x\", __iconNode);\n\nexport { __iconNode, PackageX as default };\n//# sourceMappingURL=package-x.js.map\n","/**\n * @license lucide-react v0.562.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M6 10H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v4a2 2 0 0 1-2 2h-2\",\n key: \"4b9dqc\"\n }\n ],\n [\n \"path\",\n {\n d: \"M6 14H4a2 2 0 0 0-2 2v4a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-4a2 2 0 0 0-2-2h-2\",\n key: \"22nnkd\"\n }\n ],\n [\"path\", { d: \"M6 6h.01\", key: \"1utrut\" }],\n [\"path\", { d: \"M6 18h.01\", key: \"uhywen\" }],\n [\"path\", { d: \"m13 6-4 6h6l-4 6\", key: \"14hqih\" }]\n];\nconst ServerCrash = createLucideIcon(\"server-crash\", __iconNode);\n\nexport { __iconNode, ServerCrash as default };\n//# sourceMappingURL=server-crash.js.map\n","/**\n * @license lucide-react v0.562.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z\",\n key: \"oel41y\"\n }\n ],\n [\"path\", { d: \"m14.5 9.5-5 5\", key: \"17q4r4\" }],\n [\"path\", { d: \"m9.5 9.5 5 5\", key: \"18nt4w\" }]\n];\nconst ShieldX = createLucideIcon(\"shield-x\", __iconNode);\n\nexport { __iconNode, ShieldX as default };\n//# sourceMappingURL=shield-x.js.map\n","/**\n * @license lucide-react v0.562.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M12 20h.01\", key: \"zekei9\" }],\n [\"path\", { d: \"M8.5 16.429a5 5 0 0 1 7 0\", key: \"1bycff\" }],\n [\"path\", { d: \"M5 12.859a10 10 0 0 1 5.17-2.69\", key: \"1dl1wf\" }],\n [\"path\", { d: \"M19 12.859a10 10 0 0 0-2.007-1.523\", key: \"4k23kn\" }],\n [\"path\", { d: \"M2 8.82a15 15 0 0 1 4.177-2.643\", key: \"1grhjp\" }],\n [\"path\", { d: \"M22 8.82a15 15 0 0 0-11.288-3.764\", key: \"z3jwby\" }],\n [\"path\", { d: \"m2 2 20 20\", key: \"1ooewy\" }]\n];\nconst WifiOff = createLucideIcon(\"wifi-off\", __iconNode);\n\nexport { __iconNode, WifiOff as default };\n//# sourceMappingURL=wifi-off.js.map\n","import { isAxiosError } from 'axios';\nimport { AlertCircle, LogOut, PackageX, ServerCrash, ShieldX, WifiOff } from 'lucide-react';\nimport type React from 'react';\nimport { cn } from '../../../shadcn/utils';\nimport { Button, type ButtonProps } from '../Button';\n\nexport type ErrorScreenKey =\n | 'unauthorized'\n | 'forbidden'\n | 'notFound'\n | 'serverError'\n | 'networkError'\n | 'unknownError';\n\nexport interface ErrorPagePreset {\n icon: React.ElementType;\n iconWrapperClassName: string;\n iconClassName: string;\n title: string;\n description: string;\n showRetry: boolean;\n showGoBack: boolean;\n showLogin: boolean;\n}\n\nexport interface ErrorPageProps {\n preset: ErrorPagePreset;\n onRetry?: () => void;\n onGoBack?: () => void;\n onLogin?: () => void;\n retryLabel?: string;\n goBackLabel?: string;\n loginLabel?: string;\n retryVariant?: ButtonProps['variant'];\n goBackVariant?: ButtonProps['variant'];\n loginVariant?: ButtonProps['variant'];\n className?: string;\n}\n\nconst ERROR_PAGE_PRESETS: Record<ErrorScreenKey, ErrorPagePreset> = {\n unauthorized: {\n icon: LogOut,\n iconWrapperClassName: 'bg-destructive/15',\n iconClassName: 'text-destructive',\n title: 'Session Expired',\n description: 'Your session has expired. Please log in again.',\n showRetry: false,\n showGoBack: false,\n showLogin: true,\n },\n forbidden: {\n icon: ShieldX,\n iconWrapperClassName: 'bg-warning/15',\n iconClassName: 'text-warning',\n title: 'Access Denied',\n description: 'You do not have permission to view this resource.',\n showRetry: false,\n showGoBack: true,\n showLogin: false,\n },\n notFound: {\n icon: PackageX,\n iconWrapperClassName: 'bg-primary/10 ring-1 ring-primary/20',\n iconClassName: 'text-primary',\n title: 'Not Found',\n description: 'The resource you are looking for does not exist or has been moved.',\n showRetry: false,\n showGoBack: true,\n showLogin: false,\n },\n serverError: {\n icon: ServerCrash,\n iconWrapperClassName: 'bg-destructive/15',\n iconClassName: 'text-destructive',\n title: 'Something Went Wrong',\n description: 'An unexpected server error occurred. Please try again.',\n showRetry: true,\n showGoBack: true,\n showLogin: false,\n },\n networkError: {\n icon: WifiOff,\n iconWrapperClassName: 'bg-warning/15',\n iconClassName: 'text-warning',\n title: 'Network Error',\n description: 'Unable to reach the server. Please check your connection and try again.',\n showRetry: true,\n showGoBack: true,\n showLogin: false,\n },\n unknownError: {\n icon: AlertCircle,\n iconWrapperClassName: 'bg-destructive/15',\n iconClassName: 'text-destructive',\n title: 'Something Went Wrong',\n description: 'An unexpected error occurred.',\n showRetry: true,\n showGoBack: true,\n showLogin: false,\n },\n};\n\nexport function getErrorPagePreset(screen: ErrorScreenKey): ErrorPagePreset {\n return ERROR_PAGE_PRESETS[screen];\n}\n\nexport function resolveErrorScreen(error: unknown): ErrorScreenKey {\n if (isAxiosError(error)) {\n const status = error.response?.status;\n\n if (!error.response) return 'networkError';\n if (status === 401) return 'unauthorized';\n if (status === 403) return 'forbidden';\n if (status === 404) return 'notFound';\n if (status && status >= 500) return 'serverError';\n return 'unknownError';\n }\n\n if (error instanceof Error) {\n if (error.message === 'No valid session') return 'unauthorized';\n if (error.message.toLowerCase().includes('network')) return 'networkError';\n }\n\n return 'unknownError';\n}\n\nexport const ErrorPage = ({\n preset,\n onRetry,\n onGoBack,\n onLogin,\n retryLabel = 'Try Again',\n goBackLabel = 'Go Back',\n loginLabel = 'Log In',\n retryVariant = 'default',\n goBackVariant = 'outline',\n loginVariant = 'default',\n className,\n}: ErrorPageProps) => {\n const Icon = preset.icon;\n\n return (\n <div className={cn('flex min-h-[70vh] flex-col items-center justify-center gap-4 px-4', className)}>\n <div className={cn('flex items-center justify-center w-16 h-16 rounded-full', preset.iconWrapperClassName)}>\n <Icon className={cn('h-8 w-8', preset.iconClassName)} />\n </div>\n <div className=\"text-center space-y-1.5\">\n <h2 className=\"text-lg font-semibold\">{preset.title}</h2>\n <p className=\"text-sm text-muted-foreground max-w-md\">{preset.description}</p>\n </div>\n <div className=\"flex gap-2\">\n {preset.showGoBack && onGoBack && (\n <Button variant={goBackVariant} onClick={onGoBack}>\n {goBackLabel}\n </Button>\n )}\n {preset.showRetry && onRetry && (\n <Button variant={retryVariant} onClick={onRetry}>\n {retryLabel}\n </Button>\n )}\n {preset.showLogin && onLogin && (\n <Button variant={loginVariant} onClick={onLogin}>\n {loginLabel}\n </Button>\n )}\n </div>\n </div>\n );\n};\n\ntype ScreenProps = Omit<ErrorPageProps, 'preset'>;\n\nexport const UnauthorizedErrorPage = (props: ScreenProps) => (\n <ErrorPage preset={getErrorPagePreset('unauthorized')} {...props} />\n);\nexport const ForbiddenErrorPage = (props: ScreenProps) => (\n <ErrorPage preset={getErrorPagePreset('forbidden')} {...props} />\n);\nexport const NotFoundErrorPage = (props: ScreenProps) => (\n <ErrorPage preset={getErrorPagePreset('notFound')} {...props} />\n);\nexport const ServerErrorPage = (props: ScreenProps) => (\n <ErrorPage preset={getErrorPagePreset('serverError')} {...props} />\n);\nexport const NetworkErrorPage = (props: ScreenProps) => (\n <ErrorPage preset={getErrorPagePreset('networkError')} {...props} />\n);\nexport const UnknownErrorPage = (props: ScreenProps) => (\n <ErrorPage preset={getErrorPagePreset('unknownError')} {...props} />\n);\n","import { QueryErrorResetBoundary } from '@tanstack/react-query';\nimport type React from 'react';\nimport { ErrorBoundary, type FallbackProps } from 'react-error-boundary';\nimport { useLocation, useNavigate } from 'react-router-dom';\nimport { clearToken } from '../../utils/axios';\nimport { ErrorPage, getErrorPagePreset, resolveErrorScreen } from './ErrorPage';\n\n// Renders status-specific error UI when a query throws\nexport const QueryErrorFallback = ({ error, resetErrorBoundary }: FallbackProps) => {\n const navigate = useNavigate();\n const screen = resolveErrorScreen(error);\n const preset = getErrorPagePreset(screen);\n\n return (\n <ErrorPage\n preset={preset}\n onGoBack={() => navigate(-1)}\n onRetry={resetErrorBoundary}\n onLogin={() => {\n clearToken();\n window.location.href = '/login';\n }}\n />\n );\n};\n\n// Catches query errors and renders status-specific fallback UI\nexport const QueryErrorBoundary = ({ children }: { children: React.ReactNode }) => {\n const { pathname } = useLocation();\n\n return (\n <QueryErrorResetBoundary>\n {({ reset }) => (\n <ErrorBoundary onReset={reset} resetKeys={[pathname]} FallbackComponent={QueryErrorFallback}>\n {children}\n </ErrorBoundary>\n )}\n </QueryErrorResetBoundary>\n );\n};\n"],"names":["__iconNode","AlertCircle","ErrorBoundary"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4]}
1
+ {"version":3,"file":"ErrorBoundary.js","sources":["../lib/components/ErrorBoundary/ErrorPage.tsx","../lib/components/ErrorBoundary/ErrorBoundary.tsx"],"sourcesContent":["import { isAxiosError } from 'axios';\nimport { AlertCircle, LogOut, PackageX, ServerCrash, ShieldX, WifiOff } from 'lucide-react';\nimport type React from 'react';\nimport { cn } from '../../../shadcn/utils';\nimport { Button, type ButtonProps } from '../Button';\n\nexport type ErrorScreenKey =\n | 'unauthorized'\n | 'forbidden'\n | 'notFound'\n | 'serverError'\n | 'networkError'\n | 'unknownError';\n\nexport interface ErrorPagePreset {\n icon: React.ElementType;\n iconWrapperClassName: string;\n iconClassName: string;\n title: string;\n description: string;\n showRetry: boolean;\n showGoBack: boolean;\n showLogin: boolean;\n}\n\nexport interface ErrorPageProps {\n preset: ErrorPagePreset;\n onRetry?: () => void;\n onGoBack?: () => void;\n onLogin?: () => void;\n retryLabel?: string;\n goBackLabel?: string;\n loginLabel?: string;\n retryVariant?: ButtonProps['variant'];\n goBackVariant?: ButtonProps['variant'];\n loginVariant?: ButtonProps['variant'];\n className?: string;\n}\n\nconst ERROR_PAGE_PRESETS: Record<ErrorScreenKey, ErrorPagePreset> = {\n unauthorized: {\n icon: LogOut,\n iconWrapperClassName: 'bg-destructive/15',\n iconClassName: 'text-destructive',\n title: 'Session Expired',\n description: 'Your session has expired. Please log in again.',\n showRetry: false,\n showGoBack: false,\n showLogin: true,\n },\n forbidden: {\n icon: ShieldX,\n iconWrapperClassName: 'bg-warning/15',\n iconClassName: 'text-warning',\n title: 'Access Denied',\n description: 'You do not have permission to view this resource.',\n showRetry: false,\n showGoBack: true,\n showLogin: false,\n },\n notFound: {\n icon: PackageX,\n iconWrapperClassName: 'bg-primary/10 ring-1 ring-primary/20',\n iconClassName: 'text-primary',\n title: 'Not Found',\n description: 'The resource you are looking for does not exist or has been moved.',\n showRetry: false,\n showGoBack: true,\n showLogin: false,\n },\n serverError: {\n icon: ServerCrash,\n iconWrapperClassName: 'bg-destructive/15',\n iconClassName: 'text-destructive',\n title: 'Something Went Wrong',\n description: 'An unexpected server error occurred. Please try again.',\n showRetry: true,\n showGoBack: true,\n showLogin: false,\n },\n networkError: {\n icon: WifiOff,\n iconWrapperClassName: 'bg-warning/15',\n iconClassName: 'text-warning',\n title: 'Network Error',\n description: 'Unable to reach the server. Please check your connection and try again.',\n showRetry: true,\n showGoBack: true,\n showLogin: false,\n },\n unknownError: {\n icon: AlertCircle,\n iconWrapperClassName: 'bg-destructive/15',\n iconClassName: 'text-destructive',\n title: 'Something Went Wrong',\n description: 'An unexpected error occurred.',\n showRetry: true,\n showGoBack: true,\n showLogin: false,\n },\n};\n\nexport function getErrorPagePreset(screen: ErrorScreenKey): ErrorPagePreset {\n return ERROR_PAGE_PRESETS[screen];\n}\n\nexport function resolveErrorScreen(error: unknown): ErrorScreenKey {\n if (isAxiosError(error)) {\n const status = error.response?.status;\n\n if (!error.response) return 'networkError';\n if (status === 401) return 'unauthorized';\n if (status === 403) return 'forbidden';\n if (status === 404) return 'notFound';\n if (status && status >= 500) return 'serverError';\n return 'unknownError';\n }\n\n if (error instanceof Error) {\n if (error.message === 'No valid session') return 'unauthorized';\n if (error.message.toLowerCase().includes('network')) return 'networkError';\n }\n\n return 'unknownError';\n}\n\nexport const ErrorPage = ({\n preset,\n onRetry,\n onGoBack,\n onLogin,\n retryLabel = 'Try Again',\n goBackLabel = 'Go Back',\n loginLabel = 'Log In',\n retryVariant = 'default',\n goBackVariant = 'outline',\n loginVariant = 'default',\n className,\n}: ErrorPageProps) => {\n const Icon = preset.icon;\n\n return (\n <div className={cn('flex min-h-[70vh] flex-col items-center justify-center gap-4 px-4', className)}>\n <div className={cn('flex items-center justify-center w-16 h-16 rounded-full', preset.iconWrapperClassName)}>\n <Icon className={cn('h-8 w-8', preset.iconClassName)} />\n </div>\n <div className=\"text-center space-y-1.5\">\n <h2 className=\"text-lg font-semibold\">{preset.title}</h2>\n <p className=\"text-sm text-muted-foreground max-w-md\">{preset.description}</p>\n </div>\n <div className=\"flex gap-2\">\n {preset.showGoBack && onGoBack && (\n <Button variant={goBackVariant} onClick={onGoBack}>\n {goBackLabel}\n </Button>\n )}\n {preset.showRetry && onRetry && (\n <Button variant={retryVariant} onClick={onRetry}>\n {retryLabel}\n </Button>\n )}\n {preset.showLogin && onLogin && (\n <Button variant={loginVariant} onClick={onLogin}>\n {loginLabel}\n </Button>\n )}\n </div>\n </div>\n );\n};\n\ntype ScreenProps = Omit<ErrorPageProps, 'preset'>;\n\nexport const UnauthorizedErrorPage = (props: ScreenProps) => (\n <ErrorPage preset={getErrorPagePreset('unauthorized')} {...props} />\n);\nexport const ForbiddenErrorPage = (props: ScreenProps) => (\n <ErrorPage preset={getErrorPagePreset('forbidden')} {...props} />\n);\nexport const NotFoundErrorPage = (props: ScreenProps) => (\n <ErrorPage preset={getErrorPagePreset('notFound')} {...props} />\n);\nexport const ServerErrorPage = (props: ScreenProps) => (\n <ErrorPage preset={getErrorPagePreset('serverError')} {...props} />\n);\nexport const NetworkErrorPage = (props: ScreenProps) => (\n <ErrorPage preset={getErrorPagePreset('networkError')} {...props} />\n);\nexport const UnknownErrorPage = (props: ScreenProps) => (\n <ErrorPage preset={getErrorPagePreset('unknownError')} {...props} />\n);\n","import { QueryErrorResetBoundary } from '@tanstack/react-query';\nimport type React from 'react';\nimport { ErrorBoundary, type FallbackProps } from 'react-error-boundary';\nimport { useLocation, useNavigate } from 'react-router-dom';\nimport { clearToken } from '../../utils/axios';\nimport { ErrorPage, getErrorPagePreset, resolveErrorScreen } from './ErrorPage';\n\n// Renders status-specific error UI when a query throws\nexport const QueryErrorFallback = ({ error, resetErrorBoundary }: FallbackProps) => {\n const navigate = useNavigate();\n const screen = resolveErrorScreen(error);\n const preset = getErrorPagePreset(screen);\n\n return (\n <ErrorPage\n preset={preset}\n onGoBack={() => navigate(-1)}\n onRetry={resetErrorBoundary}\n onLogin={() => {\n clearToken();\n window.location.href = '/login';\n }}\n />\n );\n};\n\n// Catches query errors and renders status-specific fallback UI\nexport const QueryErrorBoundary = ({ children }: { children: React.ReactNode }) => {\n const { pathname } = useLocation();\n\n return (\n <QueryErrorResetBoundary>\n {({ reset }) => (\n <ErrorBoundary onReset={reset} resetKeys={[pathname]} FallbackComponent={QueryErrorFallback}>\n {children}\n </ErrorBoundary>\n )}\n </QueryErrorResetBoundary>\n );\n};\n"],"names":["AlertCircle","ErrorBoundary"],"mappings":"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"}
@@ -2,151 +2,7 @@ import { jsx } from 'react/jsx-runtime';
2
2
  import { useState, useEffect } from 'react';
3
3
  import { c as cn } from './utils.js';
4
4
  import { F as FileText } from './file-text.js';
5
- import { c as createLucideIcon } from './createLucideIcon.js';
6
-
7
- /**
8
- * @license lucide-react v0.562.0 - ISC
9
- *
10
- * This source code is licensed under the ISC license.
11
- * See the LICENSE file in the root directory of this source tree.
12
- */
13
-
14
-
15
- const __iconNode$5 = [
16
- [
17
- "path",
18
- {
19
- d: "M13.659 22H18a2 2 0 0 0 2-2V8a2.4 2.4 0 0 0-.706-1.706l-3.588-3.588A2.4 2.4 0 0 0 14 2H6a2 2 0 0 0-2 2v11.5",
20
- key: "4pqfef"
21
- }
22
- ],
23
- ["path", { d: "M14 2v5a1 1 0 0 0 1 1h5", key: "wfsgrz" }],
24
- ["path", { d: "M8 12v-1", key: "1ej8lb" }],
25
- ["path", { d: "M8 18v-2", key: "qcmpov" }],
26
- ["path", { d: "M8 7V6", key: "1nbb54" }],
27
- ["circle", { cx: "8", cy: "20", r: "2", key: "ckkr5m" }]
28
- ];
29
- const FileArchive = createLucideIcon("file-archive", __iconNode$5);
30
-
31
- /**
32
- * @license lucide-react v0.562.0 - ISC
33
- *
34
- * This source code is licensed under the ISC license.
35
- * See the LICENSE file in the root directory of this source tree.
36
- */
37
-
38
-
39
- const __iconNode$4 = [
40
- [
41
- "path",
42
- {
43
- d: "M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",
44
- key: "1oefj6"
45
- }
46
- ],
47
- ["path", { d: "M14 2v5a1 1 0 0 0 1 1h5", key: "wfsgrz" }],
48
- ["path", { d: "M10 12.5 8 15l2 2.5", key: "1tg20x" }],
49
- ["path", { d: "m14 12.5 2 2.5-2 2.5", key: "yinavb" }]
50
- ];
51
- const FileCode = createLucideIcon("file-code", __iconNode$4);
52
-
53
- /**
54
- * @license lucide-react v0.562.0 - ISC
55
- *
56
- * This source code is licensed under the ISC license.
57
- * See the LICENSE file in the root directory of this source tree.
58
- */
59
-
60
-
61
- const __iconNode$3 = [
62
- [
63
- "path",
64
- {
65
- d: "M4 6.835V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.706.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2h-.343",
66
- key: "1vfytu"
67
- }
68
- ],
69
- ["path", { d: "M14 2v5a1 1 0 0 0 1 1h5", key: "wfsgrz" }],
70
- [
71
- "path",
72
- {
73
- d: "M2 19a2 2 0 0 1 4 0v1a2 2 0 0 1-4 0v-4a6 6 0 0 1 12 0v4a2 2 0 0 1-4 0v-1a2 2 0 0 1 4 0",
74
- key: "1etmh7"
75
- }
76
- ]
77
- ];
78
- const FileHeadphone = createLucideIcon("file-headphone", __iconNode$3);
79
-
80
- /**
81
- * @license lucide-react v0.562.0 - ISC
82
- *
83
- * This source code is licensed under the ISC license.
84
- * See the LICENSE file in the root directory of this source tree.
85
- */
86
-
87
-
88
- const __iconNode$2 = [
89
- [
90
- "path",
91
- {
92
- d: "M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",
93
- key: "1oefj6"
94
- }
95
- ],
96
- ["path", { d: "M14 2v5a1 1 0 0 0 1 1h5", key: "wfsgrz" }],
97
- [
98
- "path",
99
- {
100
- d: "M15.033 13.44a.647.647 0 0 1 0 1.12l-4.065 2.352a.645.645 0 0 1-.968-.56v-4.704a.645.645 0 0 1 .967-.56z",
101
- key: "1tzo1f"
102
- }
103
- ]
104
- ];
105
- const FilePlay = createLucideIcon("file-play", __iconNode$2);
106
-
107
- /**
108
- * @license lucide-react v0.562.0 - ISC
109
- *
110
- * This source code is licensed under the ISC license.
111
- * See the LICENSE file in the root directory of this source tree.
112
- */
113
-
114
-
115
- const __iconNode$1 = [
116
- [
117
- "path",
118
- {
119
- d: "M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",
120
- key: "1oefj6"
121
- }
122
- ],
123
- ["path", { d: "M14 2v5a1 1 0 0 0 1 1h5", key: "wfsgrz" }],
124
- ["path", { d: "M8 13h2", key: "yr2amv" }],
125
- ["path", { d: "M14 13h2", key: "un5t4a" }],
126
- ["path", { d: "M8 17h2", key: "2yhykz" }],
127
- ["path", { d: "M14 17h2", key: "10kma7" }]
128
- ];
129
- const FileSpreadsheet = createLucideIcon("file-spreadsheet", __iconNode$1);
130
-
131
- /**
132
- * @license lucide-react v0.562.0 - ISC
133
- *
134
- * This source code is licensed under the ISC license.
135
- * See the LICENSE file in the root directory of this source tree.
136
- */
137
-
138
-
139
- const __iconNode = [
140
- [
141
- "path",
142
- {
143
- d: "M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",
144
- key: "1oefj6"
145
- }
146
- ],
147
- ["path", { d: "M14 2v5a1 1 0 0 0 1 1h5", key: "wfsgrz" }]
148
- ];
149
- const File = createLucideIcon("file", __iconNode);
5
+ import { F as FilePlay, a as FileHeadphone, b as FileSpreadsheet, c as FileArchive, d as FileCode, e as File } from './file.js';
150
6
 
151
7
  function getFileIcon(mimeType) {
152
8
  if (mimeType === "application/pdf") return FileText;
@@ -1 +1 @@
1
- {"version":3,"file":"FilePreview.js","sources":["../node_modules/.pnpm/lucide-react@0.562.0_react@19.2.3/node_modules/lucide-react/dist/esm/icons/file-archive.js","../node_modules/.pnpm/lucide-react@0.562.0_react@19.2.3/node_modules/lucide-react/dist/esm/icons/file-code.js","../node_modules/.pnpm/lucide-react@0.562.0_react@19.2.3/node_modules/lucide-react/dist/esm/icons/file-headphone.js","../node_modules/.pnpm/lucide-react@0.562.0_react@19.2.3/node_modules/lucide-react/dist/esm/icons/file-play.js","../node_modules/.pnpm/lucide-react@0.562.0_react@19.2.3/node_modules/lucide-react/dist/esm/icons/file-spreadsheet.js","../node_modules/.pnpm/lucide-react@0.562.0_react@19.2.3/node_modules/lucide-react/dist/esm/icons/file.js","../lib/components/FilePreview/FilePreview.tsx"],"sourcesContent":["/**\n * @license lucide-react v0.562.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M13.659 22H18a2 2 0 0 0 2-2V8a2.4 2.4 0 0 0-.706-1.706l-3.588-3.588A2.4 2.4 0 0 0 14 2H6a2 2 0 0 0-2 2v11.5\",\n key: \"4pqfef\"\n }\n ],\n [\"path\", { d: \"M14 2v5a1 1 0 0 0 1 1h5\", key: \"wfsgrz\" }],\n [\"path\", { d: \"M8 12v-1\", key: \"1ej8lb\" }],\n [\"path\", { d: \"M8 18v-2\", key: \"qcmpov\" }],\n [\"path\", { d: \"M8 7V6\", key: \"1nbb54\" }],\n [\"circle\", { cx: \"8\", cy: \"20\", r: \"2\", key: \"ckkr5m\" }]\n];\nconst FileArchive = createLucideIcon(\"file-archive\", __iconNode);\n\nexport { __iconNode, FileArchive as default };\n//# sourceMappingURL=file-archive.js.map\n","/**\n * @license lucide-react v0.562.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z\",\n key: \"1oefj6\"\n }\n ],\n [\"path\", { d: \"M14 2v5a1 1 0 0 0 1 1h5\", key: \"wfsgrz\" }],\n [\"path\", { d: \"M10 12.5 8 15l2 2.5\", key: \"1tg20x\" }],\n [\"path\", { d: \"m14 12.5 2 2.5-2 2.5\", key: \"yinavb\" }]\n];\nconst FileCode = createLucideIcon(\"file-code\", __iconNode);\n\nexport { __iconNode, FileCode as default };\n//# sourceMappingURL=file-code.js.map\n","/**\n * @license lucide-react v0.562.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M4 6.835V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.706.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2h-.343\",\n key: \"1vfytu\"\n }\n ],\n [\"path\", { d: \"M14 2v5a1 1 0 0 0 1 1h5\", key: \"wfsgrz\" }],\n [\n \"path\",\n {\n d: \"M2 19a2 2 0 0 1 4 0v1a2 2 0 0 1-4 0v-4a6 6 0 0 1 12 0v4a2 2 0 0 1-4 0v-1a2 2 0 0 1 4 0\",\n key: \"1etmh7\"\n }\n ]\n];\nconst FileHeadphone = createLucideIcon(\"file-headphone\", __iconNode);\n\nexport { __iconNode, FileHeadphone as default };\n//# sourceMappingURL=file-headphone.js.map\n","/**\n * @license lucide-react v0.562.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z\",\n key: \"1oefj6\"\n }\n ],\n [\"path\", { d: \"M14 2v5a1 1 0 0 0 1 1h5\", key: \"wfsgrz\" }],\n [\n \"path\",\n {\n d: \"M15.033 13.44a.647.647 0 0 1 0 1.12l-4.065 2.352a.645.645 0 0 1-.968-.56v-4.704a.645.645 0 0 1 .967-.56z\",\n key: \"1tzo1f\"\n }\n ]\n];\nconst FilePlay = createLucideIcon(\"file-play\", __iconNode);\n\nexport { __iconNode, FilePlay as default };\n//# sourceMappingURL=file-play.js.map\n","/**\n * @license lucide-react v0.562.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z\",\n key: \"1oefj6\"\n }\n ],\n [\"path\", { d: \"M14 2v5a1 1 0 0 0 1 1h5\", key: \"wfsgrz\" }],\n [\"path\", { d: \"M8 13h2\", key: \"yr2amv\" }],\n [\"path\", { d: \"M14 13h2\", key: \"un5t4a\" }],\n [\"path\", { d: \"M8 17h2\", key: \"2yhykz\" }],\n [\"path\", { d: \"M14 17h2\", key: \"10kma7\" }]\n];\nconst FileSpreadsheet = createLucideIcon(\"file-spreadsheet\", __iconNode);\n\nexport { __iconNode, FileSpreadsheet as default };\n//# sourceMappingURL=file-spreadsheet.js.map\n","/**\n * @license lucide-react v0.562.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z\",\n key: \"1oefj6\"\n }\n ],\n [\"path\", { d: \"M14 2v5a1 1 0 0 0 1 1h5\", key: \"wfsgrz\" }]\n];\nconst File = createLucideIcon(\"file\", __iconNode);\n\nexport { __iconNode, File as default };\n//# sourceMappingURL=file.js.map\n","import { File, FileArchive, FileAudio, FileCode, FileSpreadsheet, FileText, FileVideo } from 'lucide-react';\nimport type React from 'react';\nimport { useEffect, useState } from 'react';\nimport { cn } from '../../../shadcn/utils';\n\nexport interface FilePreviewProps {\n file: File;\n size?: number;\n className?: string;\n}\n\n// Maps a MIME type to the appropriate lucide icon component\nfunction getFileIcon(mimeType: string) {\n if (mimeType === 'application/pdf') return FileText;\n if (mimeType.startsWith('video/')) return FileVideo;\n if (mimeType.startsWith('audio/')) return FileAudio;\n if (mimeType === 'text/csv' || mimeType.includes('spreadsheet') || mimeType.includes('excel')) return FileSpreadsheet;\n if (\n mimeType === 'application/zip' ||\n mimeType === 'application/gzip' ||\n mimeType === 'application/x-tar' ||\n mimeType.includes('compress') ||\n mimeType.includes('archive')\n )\n return FileArchive;\n if (mimeType.startsWith('text/')) return FileCode;\n return File;\n}\n\n// Renders a thumbnail for images or a MIME-type icon for other files\nexport const FilePreview: React.FC<FilePreviewProps> = ({ file, size = 40, className }) => {\n const [objectUrl, setObjectUrl] = useState<string | null>(null);\n\n useEffect(() => {\n if (!file.type.startsWith('image/')) return;\n\n const url = URL.createObjectURL(file);\n setObjectUrl(url);\n return () => URL.revokeObjectURL(url);\n }, [file]);\n\n if (file.type.startsWith('image/') && objectUrl) {\n return (\n <img\n src={objectUrl}\n alt={file.name}\n className={cn('rounded object-cover shrink-0', className)}\n style={{ width: size, height: size }}\n />\n );\n }\n\n const IconComponent = getFileIcon(file.type);\n const iconSize = Math.round(size * 0.5);\n\n return (\n <div\n className={cn('flex items-center justify-center rounded bg-muted shrink-0', className)}\n style={{ width: size, height: size }}\n >\n <IconComponent className=\"text-muted-foreground\" style={{ width: iconSize, height: iconSize }} />\n </div>\n );\n};\n\nFilePreview.displayName = 'FilePreview';\n"],"names":["__iconNode","FileVideo","FileAudio"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5]}
1
+ {"version":3,"file":"FilePreview.js","sources":["../lib/components/FilePreview/FilePreview.tsx"],"sourcesContent":["import { File, FileArchive, FileAudio, FileCode, FileSpreadsheet, FileText, FileVideo } from 'lucide-react';\nimport type React from 'react';\nimport { useEffect, useState } from 'react';\nimport { cn } from '../../../shadcn/utils';\n\nexport interface FilePreviewProps {\n file: File;\n size?: number;\n className?: string;\n}\n\n// Maps a MIME type to the appropriate lucide icon component\nfunction getFileIcon(mimeType: string) {\n if (mimeType === 'application/pdf') return FileText;\n if (mimeType.startsWith('video/')) return FileVideo;\n if (mimeType.startsWith('audio/')) return FileAudio;\n if (mimeType === 'text/csv' || mimeType.includes('spreadsheet') || mimeType.includes('excel')) return FileSpreadsheet;\n if (\n mimeType === 'application/zip' ||\n mimeType === 'application/gzip' ||\n mimeType === 'application/x-tar' ||\n mimeType.includes('compress') ||\n mimeType.includes('archive')\n )\n return FileArchive;\n if (mimeType.startsWith('text/')) return FileCode;\n return File;\n}\n\n// Renders a thumbnail for images or a MIME-type icon for other files\nexport const FilePreview: React.FC<FilePreviewProps> = ({ file, size = 40, className }) => {\n const [objectUrl, setObjectUrl] = useState<string | null>(null);\n\n useEffect(() => {\n if (!file.type.startsWith('image/')) return;\n\n const url = URL.createObjectURL(file);\n setObjectUrl(url);\n return () => URL.revokeObjectURL(url);\n }, [file]);\n\n if (file.type.startsWith('image/') && objectUrl) {\n return (\n <img\n src={objectUrl}\n alt={file.name}\n className={cn('rounded object-cover shrink-0', className)}\n style={{ width: size, height: size }}\n />\n );\n }\n\n const IconComponent = getFileIcon(file.type);\n const iconSize = Math.round(size * 0.5);\n\n return (\n <div\n className={cn('flex items-center justify-center rounded bg-muted shrink-0', className)}\n style={{ width: size, height: size }}\n >\n <IconComponent className=\"text-muted-foreground\" style={{ width: iconSize, height: iconSize }} />\n </div>\n );\n};\n\nFilePreview.displayName = 'FilePreview';\n"],"names":["FileVideo","FileAudio"],"mappings":";;;;;;AAYA,SAAS,YAAY,QAAA,EAAkB;AACrC,EAAA,IAAI,QAAA,KAAa,mBAAmB,OAAO,QAAA;AAC3C,EAAA,IAAI,QAAA,CAAS,UAAA,CAAW,QAAQ,CAAA,EAAG,OAAOA,QAAA;AAC1C,EAAA,IAAI,QAAA,CAAS,UAAA,CAAW,QAAQ,CAAA,EAAG,OAAOC,aAAA;AAC1C,EAAA,IAAI,QAAA,KAAa,UAAA,IAAc,QAAA,CAAS,QAAA,CAAS,aAAa,KAAK,QAAA,CAAS,QAAA,CAAS,OAAO,CAAA,EAAG,OAAO,eAAA;AACtG,EAAA,IACE,QAAA,KAAa,iBAAA,IACb,QAAA,KAAa,kBAAA,IACb,QAAA,KAAa,mBAAA,IACb,QAAA,CAAS,QAAA,CAAS,UAAU,CAAA,IAC5B,QAAA,CAAS,QAAA,CAAS,SAAS,CAAA;AAE3B,IAAA,OAAO,WAAA;AACT,EAAA,IAAI,QAAA,CAAS,UAAA,CAAW,OAAO,CAAA,EAAG,OAAO,QAAA;AACzC,EAAA,OAAO,IAAA;AACT;AAGO,MAAM,cAA0C,CAAC,EAAE,MAAM,IAAA,GAAO,EAAA,EAAI,WAAU,KAAM;AACzF,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAI,SAAwB,IAAI,CAAA;AAE9D,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,CAAC,IAAA,CAAK,IAAA,CAAK,UAAA,CAAW,QAAQ,CAAA,EAAG;AAErC,IAAA,MAAM,GAAA,GAAM,GAAA,CAAI,eAAA,CAAgB,IAAI,CAAA;AACpC,IAAA,YAAA,CAAa,GAAG,CAAA;AAChB,IAAA,OAAO,MAAM,GAAA,CAAI,eAAA,CAAgB,GAAG,CAAA;AAAA,EACtC,CAAA,EAAG,CAAC,IAAI,CAAC,CAAA;AAET,EAAA,IAAI,IAAA,CAAK,IAAA,CAAK,UAAA,CAAW,QAAQ,KAAK,SAAA,EAAW;AAC/C,IAAA,uBACE,GAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA,EAAK,SAAA;AAAA,QACL,KAAK,IAAA,CAAK,IAAA;AAAA,QACV,SAAA,EAAW,EAAA,CAAG,+BAAA,EAAiC,SAAS,CAAA;AAAA,QACxD,KAAA,EAAO,EAAE,KAAA,EAAO,IAAA,EAAM,QAAQ,IAAA;AAAK;AAAA,KACrC;AAAA,EAEJ;AAEA,EAAA,MAAM,aAAA,GAAgB,WAAA,CAAY,IAAA,CAAK,IAAI,CAAA;AAC3C,EAAA,MAAM,QAAA,GAAW,IAAA,CAAK,KAAA,CAAM,IAAA,GAAO,GAAG,CAAA;AAEtC,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA,CAAG,4DAAA,EAA8D,SAAS,CAAA;AAAA,MACrF,KAAA,EAAO,EAAE,KAAA,EAAO,IAAA,EAAM,QAAQ,IAAA,EAAK;AAAA,MAEnC,QAAA,kBAAA,GAAA,CAAC,aAAA,EAAA,EAAc,SAAA,EAAU,uBAAA,EAAwB,KAAA,EAAO,EAAE,KAAA,EAAO,QAAA,EAAU,MAAA,EAAQ,QAAA,EAAS,EAAG;AAAA;AAAA,GACjG;AAEJ;AAEA,WAAA,CAAY,WAAA,GAAc,aAAA;;;;"}
@@ -10651,14 +10651,18 @@ function itemsToFlow(items) {
10651
10651
  data: item,
10652
10652
  position: { x: 0, y: 0 }
10653
10653
  }));
10654
- const edges = items.filter((item) => item.parentId).map((item) => ({
10655
- id: `e-${item.parentId}-${item.id}`,
10656
- source: item.parentId,
10657
- target: item.id,
10658
- type: "smoothstep",
10659
- animated: false,
10660
- style: { stroke: "var(--color-border)", strokeWidth: 2 }
10661
- }));
10654
+ const edges = items.flatMap(
10655
+ (item) => item.parentId ? [
10656
+ {
10657
+ id: `e-${item.parentId}-${item.id}`,
10658
+ source: item.parentId,
10659
+ target: item.id,
10660
+ type: "smoothstep",
10661
+ animated: false,
10662
+ style: { stroke: "var(--color-border)", strokeWidth: 2 }
10663
+ }
10664
+ ] : []
10665
+ );
10662
10666
  return { nodes, edges };
10663
10667
  }
10664
10668
  function HierarchyGraphInner({