@umodeapporg/ui 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (667) hide show
  1. package/dist/assets/images/common-pngs/sparkles.png.js +5 -0
  2. package/dist/assets/images/common-pngs/sparkles.png.js.map +1 -0
  3. package/dist/assets/umode-ui.css +182 -0
  4. package/dist/components/DateTime/DatePicker.d.ts +19 -0
  5. package/dist/components/DateTime/DatePicker.js +121 -0
  6. package/dist/components/DateTime/DatePicker.js.map +1 -0
  7. package/dist/components/DateTime/DateRangePicker.d.ts +19 -0
  8. package/dist/components/DateTime/DateRangePicker.js +205 -0
  9. package/dist/components/DateTime/DateRangePicker.js.map +1 -0
  10. package/dist/components/Form/ControlledButton.d.ts +13 -0
  11. package/dist/components/Form/ControlledButton.js +68 -0
  12. package/dist/components/Form/ControlledButton.js.map +1 -0
  13. package/dist/components/Form/ControlledCheckbox.d.ts +12 -0
  14. package/dist/components/Form/ControlledCheckbox.js +101 -0
  15. package/dist/components/Form/ControlledCheckbox.js.map +1 -0
  16. package/dist/components/Form/ControlledDialog.d.ts +44 -0
  17. package/dist/components/Form/ControlledDialog.js +185 -0
  18. package/dist/components/Form/ControlledDialog.js.map +1 -0
  19. package/dist/components/Form/ControlledDialogPrimitives.d.ts +30 -0
  20. package/dist/components/Form/ControlledDialogPrimitives.js +121 -0
  21. package/dist/components/Form/ControlledDialogPrimitives.js.map +1 -0
  22. package/dist/components/Form/ControlledDrawer.d.ts +37 -0
  23. package/dist/components/Form/ControlledDrawer.js +237 -0
  24. package/dist/components/Form/ControlledDrawer.js.map +1 -0
  25. package/dist/components/Form/ControlledForm/InputField.d.ts +11 -0
  26. package/dist/components/Form/ControlledForm/InputField.js +75 -0
  27. package/dist/components/Form/ControlledForm/InputField.js.map +1 -0
  28. package/dist/components/Form/ControlledForm/index.d.ts +27 -0
  29. package/dist/components/Form/ControlledForm/index.js +113 -0
  30. package/dist/components/Form/ControlledForm/index.js.map +1 -0
  31. package/dist/components/Form/ControlledImage/Img.d.ts +11 -0
  32. package/dist/components/Form/ControlledImage/Img.js +29 -0
  33. package/dist/components/Form/ControlledImage/Img.js.map +1 -0
  34. package/dist/components/Form/ControlledImage/index.d.ts +30 -0
  35. package/dist/components/Form/ControlledImage/index.js +107 -0
  36. package/dist/components/Form/ControlledImage/index.js.map +1 -0
  37. package/dist/components/Form/ControlledImage/useImage.d.ts +9 -0
  38. package/dist/components/Form/ControlledImage/useImage.js +110 -0
  39. package/dist/components/Form/ControlledImage/useImage.js.map +1 -0
  40. package/dist/components/Form/ControlledInput.d.ts +23 -0
  41. package/dist/components/Form/ControlledInput.js +52 -0
  42. package/dist/components/Form/ControlledInput.js.map +1 -0
  43. package/dist/components/Form/ControlledRadio.d.ts +15 -0
  44. package/dist/components/Form/ControlledRadio.js +91 -0
  45. package/dist/components/Form/ControlledRadio.js.map +1 -0
  46. package/dist/components/Form/ControlledSelect.d.ts +44 -0
  47. package/dist/components/Form/ControlledSelect.js +545 -0
  48. package/dist/components/Form/ControlledSelect.js.map +1 -0
  49. package/dist/components/Form/ControlledSwitch.d.ts +14 -0
  50. package/dist/components/Form/ControlledSwitch.js +88 -0
  51. package/dist/components/Form/ControlledSwitch.js.map +1 -0
  52. package/dist/components/Form/ControlledTabs.d.ts +70 -0
  53. package/dist/components/Form/ControlledTabs.js +470 -0
  54. package/dist/components/Form/ControlledTabs.js.map +1 -0
  55. package/dist/components/Form/ControlledTabsPrimitives.d.ts +43 -0
  56. package/dist/components/Form/ControlledTabsPrimitives.js +47 -0
  57. package/dist/components/Form/ControlledTabsPrimitives.js.map +1 -0
  58. package/dist/components/Form/ControlledTextarea.d.ts +22 -0
  59. package/dist/components/Form/ControlledTextarea.js +46 -0
  60. package/dist/components/Form/ControlledTextarea.js.map +1 -0
  61. package/dist/components/Form/ControlledTimeline.d.ts +26 -0
  62. package/dist/components/Form/ControlledTimeline.js +57 -0
  63. package/dist/components/Form/ControlledTimeline.js.map +1 -0
  64. package/dist/components/Form/ControlledViewToggle.d.ts +74 -0
  65. package/dist/components/Form/ControlledViewToggle.js +157 -0
  66. package/dist/components/Form/ControlledViewToggle.js.map +1 -0
  67. package/dist/components/Form/ControlledVoiceTextarea.d.ts +11 -0
  68. package/dist/components/Form/ControlledVoiceTextarea.js +88 -0
  69. package/dist/components/Form/ControlledVoiceTextarea.js.map +1 -0
  70. package/dist/components/Form/CurrencyInput.d.ts +8 -0
  71. package/dist/components/Form/CurrencyInput.js +17 -0
  72. package/dist/components/Form/CurrencyInput.js.map +1 -0
  73. package/dist/components/Form/RichTextEditor.d.ts +80 -0
  74. package/dist/components/Form/RichTextEditor.js +546 -0
  75. package/dist/components/Form/RichTextEditor.js.map +1 -0
  76. package/dist/components/Form/attachments/AttachmentPreviewList.d.ts +8 -0
  77. package/dist/components/Form/attachments/AttachmentPreviewList.js +71 -0
  78. package/dist/components/Form/attachments/AttachmentPreviewList.js.map +1 -0
  79. package/dist/components/Form/attachments/FileDropzone.d.ts +12 -0
  80. package/dist/components/Form/attachments/FileDropzone.js +84 -0
  81. package/dist/components/Form/attachments/FileDropzone.js.map +1 -0
  82. package/dist/components/Navigation/ControlledBreadcrumb.d.ts +13 -0
  83. package/dist/components/Navigation/ControlledBreadcrumb.js +23 -0
  84. package/dist/components/Navigation/ControlledBreadcrumb.js.map +1 -0
  85. package/dist/components/Navigation/ErrorPage.d.ts +2 -0
  86. package/dist/components/Navigation/ErrorPage.js +27 -0
  87. package/dist/components/Navigation/ErrorPage.js.map +1 -0
  88. package/dist/components/Navigation/PageTitle.d.ts +41 -0
  89. package/dist/components/Navigation/PageTitle.js +147 -0
  90. package/dist/components/Navigation/PageTitle.js.map +1 -0
  91. package/dist/components/Navigation/PageTitleNavigationContext.d.ts +21 -0
  92. package/dist/components/Navigation/PageTitleNavigationContext.js +17 -0
  93. package/dist/components/Navigation/PageTitleNavigationContext.js.map +1 -0
  94. package/dist/components/Search/UnifiedSearchBar.d.ts +31 -0
  95. package/dist/components/Search/UnifiedSearchBar.js +167 -0
  96. package/dist/components/Search/UnifiedSearchBar.js.map +1 -0
  97. package/dist/components/Search/filters/ActiveFiltersBar.d.ts +15 -0
  98. package/dist/components/Search/filters/ActiveFiltersBar.js +48 -0
  99. package/dist/components/Search/filters/ActiveFiltersBar.js.map +1 -0
  100. package/dist/components/Search/filters/FilterChipsRow.d.ts +17 -0
  101. package/dist/components/Search/filters/FilterChipsRow.js +113 -0
  102. package/dist/components/Search/filters/FilterChipsRow.js.map +1 -0
  103. package/dist/components/Search/filters/FilterFieldControl.d.ts +19 -0
  104. package/dist/components/Search/filters/FilterFieldControl.js +387 -0
  105. package/dist/components/Search/filters/FilterFieldControl.js.map +1 -0
  106. package/dist/components/Search/filters/FiltersButton.d.ts +24 -0
  107. package/dist/components/Search/filters/FiltersButton.js +52 -0
  108. package/dist/components/Search/filters/FiltersButton.js.map +1 -0
  109. package/dist/components/Search/filters/FiltersForm.d.ts +18 -0
  110. package/dist/components/Search/filters/FiltersForm.js +112 -0
  111. package/dist/components/Search/filters/FiltersForm.js.map +1 -0
  112. package/dist/components/Search/filters/FiltersPanel.d.ts +32 -0
  113. package/dist/components/Search/filters/FiltersPanel.js +264 -0
  114. package/dist/components/Search/filters/FiltersPanel.js.map +1 -0
  115. package/dist/components/Search/filters/FiltersSummaryTooltip.d.ts +20 -0
  116. package/dist/components/Search/filters/FiltersSummaryTooltip.js +26 -0
  117. package/dist/components/Search/filters/FiltersSummaryTooltip.js.map +1 -0
  118. package/dist/components/Search/filters/filterTypes.d.ts +162 -0
  119. package/dist/components/Search/filters/filterTypes.js +2 -0
  120. package/dist/components/Search/filters/filterTypes.js.map +1 -0
  121. package/dist/components/Search/filters/filterValues.d.ts +22 -0
  122. package/dist/components/Search/filters/filterValues.js +91 -0
  123. package/dist/components/Search/filters/filterValues.js.map +1 -0
  124. package/dist/components/Search/filters/filtersLayout.d.ts +4 -0
  125. package/dist/components/Search/filters/filtersLayout.js +18 -0
  126. package/dist/components/Search/filters/filtersLayout.js.map +1 -0
  127. package/dist/components/Search/filters/index.d.ts +11 -0
  128. package/dist/components/Search/filters/index.js +32 -0
  129. package/dist/components/Search/filters/index.js.map +1 -0
  130. package/dist/components/Search/filters/useFilters.d.ts +33 -0
  131. package/dist/components/Search/filters/useFilters.js +162 -0
  132. package/dist/components/Search/filters/useFilters.js.map +1 -0
  133. package/dist/components/Search/index.d.ts +2 -0
  134. package/dist/components/Search/index.js +34 -0
  135. package/dist/components/Search/index.js.map +1 -0
  136. package/dist/components/UI/AccordionIcon.d.ts +10 -0
  137. package/dist/components/UI/AccordionIcon.js +22 -0
  138. package/dist/components/UI/AccordionIcon.js.map +1 -0
  139. package/dist/components/UI/AlertInfo/dismissedAlertsStore.d.ts +2 -0
  140. package/dist/components/UI/AlertInfo/dismissedAlertsStore.js +22 -0
  141. package/dist/components/UI/AlertInfo/dismissedAlertsStore.js.map +1 -0
  142. package/dist/components/UI/AlertInfo/index.d.ts +30 -0
  143. package/dist/components/UI/AlertInfo/index.js +78 -0
  144. package/dist/components/UI/AlertInfo/index.js.map +1 -0
  145. package/dist/components/UI/BaseDataCard.d.ts +25 -0
  146. package/dist/components/UI/BaseDataCard.js +163 -0
  147. package/dist/components/UI/BaseDataCard.js.map +1 -0
  148. package/dist/components/UI/BulkActionBar.d.ts +35 -0
  149. package/dist/components/UI/BulkActionBar.js +125 -0
  150. package/dist/components/UI/BulkActionBar.js.map +1 -0
  151. package/dist/components/UI/Chips/OutlinedChip.d.ts +42 -0
  152. package/dist/components/UI/Chips/OutlinedChip.js +183 -0
  153. package/dist/components/UI/Chips/OutlinedChip.js.map +1 -0
  154. package/dist/components/UI/Chips/StatusChip.d.ts +8 -0
  155. package/dist/components/UI/Chips/StatusChip.js +33 -0
  156. package/dist/components/UI/Chips/StatusChip.js.map +1 -0
  157. package/dist/components/UI/Chips/chipTones.d.ts +6 -0
  158. package/dist/components/UI/Chips/chipTones.js +53 -0
  159. package/dist/components/UI/Chips/chipTones.js.map +1 -0
  160. package/dist/components/UI/ColorSwatch.d.ts +30 -0
  161. package/dist/components/UI/ColorSwatch.js +53 -0
  162. package/dist/components/UI/ColorSwatch.js.map +1 -0
  163. package/dist/components/UI/Colors.d.ts +10 -0
  164. package/dist/components/UI/Colors.js +41 -0
  165. package/dist/components/UI/Colors.js.map +1 -0
  166. package/dist/components/UI/ControlledAccordion.d.ts +38 -0
  167. package/dist/components/UI/ControlledAccordion.js +89 -0
  168. package/dist/components/UI/ControlledAccordion.js.map +1 -0
  169. package/dist/components/UI/ControlledCollapse.d.ts +13 -0
  170. package/dist/components/UI/ControlledCollapse.js +32 -0
  171. package/dist/components/UI/ControlledCollapse.js.map +1 -0
  172. package/dist/components/UI/ControlledMenu.d.ts +73 -0
  173. package/dist/components/UI/ControlledMenu.js +231 -0
  174. package/dist/components/UI/ControlledMenu.js.map +1 -0
  175. package/dist/components/UI/ControlledPopover.d.ts +44 -0
  176. package/dist/components/UI/ControlledPopover.js +144 -0
  177. package/dist/components/UI/ControlledPopover.js.map +1 -0
  178. package/dist/components/UI/ControlledProgress.d.ts +13 -0
  179. package/dist/components/UI/ControlledProgress.js +46 -0
  180. package/dist/components/UI/ControlledProgress.js.map +1 -0
  181. package/dist/components/UI/ControlledSlider.d.ts +13 -0
  182. package/dist/components/UI/ControlledSlider.js +29 -0
  183. package/dist/components/UI/ControlledSlider.js.map +1 -0
  184. package/dist/components/UI/ControlledTooltip.d.ts +21 -0
  185. package/dist/components/UI/ControlledTooltip.js +140 -0
  186. package/dist/components/UI/ControlledTooltip.js.map +1 -0
  187. package/dist/components/UI/CustomBadge.d.ts +15 -0
  188. package/dist/components/UI/CustomBadge.js +34 -0
  189. package/dist/components/UI/CustomBadge.js.map +1 -0
  190. package/dist/components/UI/CustomCard.d.ts +13 -0
  191. package/dist/components/UI/CustomCard.js +36 -0
  192. package/dist/components/UI/CustomCard.js.map +1 -0
  193. package/dist/components/UI/CustomChart.d.ts +21 -0
  194. package/dist/components/UI/CustomChart.js +108 -0
  195. package/dist/components/UI/CustomChart.js.map +1 -0
  196. package/dist/components/UI/DataTable/DataTable.d.ts +100 -0
  197. package/dist/components/UI/DataTable/DataTable.js +546 -0
  198. package/dist/components/UI/DataTable/DataTable.js.map +1 -0
  199. package/dist/components/UI/DataTable/DataTableAutoCard.d.ts +20 -0
  200. package/dist/components/UI/DataTable/DataTableAutoCard.js +39 -0
  201. package/dist/components/UI/DataTable/DataTableAutoCard.js.map +1 -0
  202. package/dist/components/UI/DataTable/DataTableBody.d.ts +29 -0
  203. package/dist/components/UI/DataTable/DataTableBody.js +243 -0
  204. package/dist/components/UI/DataTable/DataTableBody.js.map +1 -0
  205. package/dist/components/UI/DataTable/DataTableBodyCell.d.ts +21 -0
  206. package/dist/components/UI/DataTable/DataTableBodyCell.js +77 -0
  207. package/dist/components/UI/DataTable/DataTableBodyCell.js.map +1 -0
  208. package/dist/components/UI/DataTable/DataTableBulkEditButton.d.ts +11 -0
  209. package/dist/components/UI/DataTable/DataTableBulkEditButton.js +24 -0
  210. package/dist/components/UI/DataTable/DataTableBulkEditButton.js.map +1 -0
  211. package/dist/components/UI/DataTable/DataTableBulkEditDialog.d.ts +25 -0
  212. package/dist/components/UI/DataTable/DataTableBulkEditDialog.js +251 -0
  213. package/dist/components/UI/DataTable/DataTableBulkEditDialog.js.map +1 -0
  214. package/dist/components/UI/DataTable/DataTableColumnToggle.d.ts +34 -0
  215. package/dist/components/UI/DataTable/DataTableColumnToggle.js +168 -0
  216. package/dist/components/UI/DataTable/DataTableColumnToggle.js.map +1 -0
  217. package/dist/components/UI/DataTable/DataTableDetailModal.d.ts +17 -0
  218. package/dist/components/UI/DataTable/DataTableDetailModal.js +109 -0
  219. package/dist/components/UI/DataTable/DataTableDetailModal.js.map +1 -0
  220. package/dist/components/UI/DataTable/DataTableDetailPanel.d.ts +21 -0
  221. package/dist/components/UI/DataTable/DataTableDetailPanel.js +51 -0
  222. package/dist/components/UI/DataTable/DataTableDetailPanel.js.map +1 -0
  223. package/dist/components/UI/DataTable/DataTableDetailTable.d.ts +35 -0
  224. package/dist/components/UI/DataTable/DataTableDetailTable.js +129 -0
  225. package/dist/components/UI/DataTable/DataTableDetailTable.js.map +1 -0
  226. package/dist/components/UI/DataTable/DataTableEditModeButton.d.ts +12 -0
  227. package/dist/components/UI/DataTable/DataTableEditModeButton.js +29 -0
  228. package/dist/components/UI/DataTable/DataTableEditModeButton.js.map +1 -0
  229. package/dist/components/UI/DataTable/DataTableFilters.d.ts +20 -0
  230. package/dist/components/UI/DataTable/DataTableFilters.js +64 -0
  231. package/dist/components/UI/DataTable/DataTableFilters.js.map +1 -0
  232. package/dist/components/UI/DataTable/DataTableHead.d.ts +27 -0
  233. package/dist/components/UI/DataTable/DataTableHead.js +198 -0
  234. package/dist/components/UI/DataTable/DataTableHead.js.map +1 -0
  235. package/dist/components/UI/DataTable/DataTablePagination.d.ts +15 -0
  236. package/dist/components/UI/DataTable/DataTablePagination.js +145 -0
  237. package/dist/components/UI/DataTable/DataTablePagination.js.map +1 -0
  238. package/dist/components/UI/DataTable/DataTableSaveButton.d.ts +13 -0
  239. package/dist/components/UI/DataTable/DataTableSaveButton.js +21 -0
  240. package/dist/components/UI/DataTable/DataTableSaveButton.js.map +1 -0
  241. package/dist/components/UI/DataTable/DataTableSegmentedTabs.d.ts +8 -0
  242. package/dist/components/UI/DataTable/DataTableSegmentedTabs.js +35 -0
  243. package/dist/components/UI/DataTable/DataTableSegmentedTabs.js.map +1 -0
  244. package/dist/components/UI/DataTable/DataTableStates.d.ts +17 -0
  245. package/dist/components/UI/DataTable/DataTableStates.js +59 -0
  246. package/dist/components/UI/DataTable/DataTableStates.js.map +1 -0
  247. package/dist/components/UI/DataTable/DataTableToolbar.d.ts +28 -0
  248. package/dist/components/UI/DataTable/DataTableToolbar.js +109 -0
  249. package/dist/components/UI/DataTable/DataTableToolbar.js.map +1 -0
  250. package/dist/components/UI/DataTable/applyDataTableFilters.d.ts +16 -0
  251. package/dist/components/UI/DataTable/applyDataTableFilters.js +53 -0
  252. package/dist/components/UI/DataTable/applyDataTableFilters.js.map +1 -0
  253. package/dist/components/UI/DataTable/cells/DataTableActionsCell.d.ts +7 -0
  254. package/dist/components/UI/DataTable/cells/DataTableActionsCell.js +55 -0
  255. package/dist/components/UI/DataTable/cells/DataTableActionsCell.js.map +1 -0
  256. package/dist/components/UI/DataTable/cells/DataTableCell.d.ts +15 -0
  257. package/dist/components/UI/DataTable/cells/DataTableCell.js +63 -0
  258. package/dist/components/UI/DataTable/cells/DataTableCell.js.map +1 -0
  259. package/dist/components/UI/DataTable/cells/DataTableCodeCell.d.ts +6 -0
  260. package/dist/components/UI/DataTable/cells/DataTableCodeCell.js +7 -0
  261. package/dist/components/UI/DataTable/cells/DataTableCodeCell.js.map +1 -0
  262. package/dist/components/UI/DataTable/cells/DataTableColorCell.d.ts +7 -0
  263. package/dist/components/UI/DataTable/cells/DataTableColorCell.js +10 -0
  264. package/dist/components/UI/DataTable/cells/DataTableColorCell.js.map +1 -0
  265. package/dist/components/UI/DataTable/cells/DataTableCountCell.d.ts +5 -0
  266. package/dist/components/UI/DataTable/cells/DataTableCountCell.js +7 -0
  267. package/dist/components/UI/DataTable/cells/DataTableCountCell.js.map +1 -0
  268. package/dist/components/UI/DataTable/cells/DataTableDateCell.d.ts +5 -0
  269. package/dist/components/UI/DataTable/cells/DataTableDateCell.js +12 -0
  270. package/dist/components/UI/DataTable/cells/DataTableDateCell.js.map +1 -0
  271. package/dist/components/UI/DataTable/cells/DataTableEditableCell.d.ts +23 -0
  272. package/dist/components/UI/DataTable/cells/DataTableEditableCell.js +242 -0
  273. package/dist/components/UI/DataTable/cells/DataTableEditableCell.js.map +1 -0
  274. package/dist/components/UI/DataTable/cells/DataTableEmpenhoCell.d.ts +10 -0
  275. package/dist/components/UI/DataTable/cells/DataTableEmpenhoCell.js +7 -0
  276. package/dist/components/UI/DataTable/cells/DataTableEmpenhoCell.js.map +1 -0
  277. package/dist/components/UI/DataTable/cells/DataTableOriginCell.d.ts +6 -0
  278. package/dist/components/UI/DataTable/cells/DataTableOriginCell.js +25 -0
  279. package/dist/components/UI/DataTable/cells/DataTableOriginCell.js.map +1 -0
  280. package/dist/components/UI/DataTable/cells/DataTableStatusCell.d.ts +6 -0
  281. package/dist/components/UI/DataTable/cells/DataTableStatusCell.js +24 -0
  282. package/dist/components/UI/DataTable/cells/DataTableStatusCell.js.map +1 -0
  283. package/dist/components/UI/DataTable/cells/DataTableTagCell.d.ts +6 -0
  284. package/dist/components/UI/DataTable/cells/DataTableTagCell.js +25 -0
  285. package/dist/components/UI/DataTable/cells/DataTableTagCell.js.map +1 -0
  286. package/dist/components/UI/DataTable/cells/DataTableTextCell.d.ts +6 -0
  287. package/dist/components/UI/DataTable/cells/DataTableTextCell.js +7 -0
  288. package/dist/components/UI/DataTable/cells/DataTableTextCell.js.map +1 -0
  289. package/dist/components/UI/DataTable/cells/DataTableThumbnailCell.d.ts +6 -0
  290. package/dist/components/UI/DataTable/cells/DataTableThumbnailCell.js +10 -0
  291. package/dist/components/UI/DataTable/cells/DataTableThumbnailCell.js.map +1 -0
  292. package/dist/components/UI/DataTable/dataTableClasses.d.ts +12 -0
  293. package/dist/components/UI/DataTable/dataTableClasses.js +29 -0
  294. package/dist/components/UI/DataTable/dataTableClasses.js.map +1 -0
  295. package/dist/components/UI/DataTable/dataTableColumnWidths.d.ts +15 -0
  296. package/dist/components/UI/DataTable/dataTableColumnWidths.js +153 -0
  297. package/dist/components/UI/DataTable/dataTableColumnWidths.js.map +1 -0
  298. package/dist/components/UI/DataTable/dataTableColumnsStore.d.ts +12 -0
  299. package/dist/components/UI/DataTable/dataTableColumnsStore.js +68 -0
  300. package/dist/components/UI/DataTable/dataTableColumnsStore.js.map +1 -0
  301. package/dist/components/UI/DataTable/dataTableMotion.d.ts +6 -0
  302. package/dist/components/UI/DataTable/dataTableMotion.js +15 -0
  303. package/dist/components/UI/DataTable/dataTableMotion.js.map +1 -0
  304. package/dist/components/UI/DataTable/grid/GridFillHandle.d.ts +8 -0
  305. package/dist/components/UI/DataTable/grid/GridFillHandle.js +70 -0
  306. package/dist/components/UI/DataTable/grid/GridFillHandle.js.map +1 -0
  307. package/dist/components/UI/DataTable/grid/GridProvider.d.ts +31 -0
  308. package/dist/components/UI/DataTable/grid/GridProvider.js +85 -0
  309. package/dist/components/UI/DataTable/grid/GridProvider.js.map +1 -0
  310. package/dist/components/UI/DataTable/grid/fill/fillStrategies.d.ts +19 -0
  311. package/dist/components/UI/DataTable/grid/fill/fillStrategies.js +73 -0
  312. package/dist/components/UI/DataTable/grid/fill/fillStrategies.js.map +1 -0
  313. package/dist/components/UI/DataTable/grid/gridStore.d.ts +69 -0
  314. package/dist/components/UI/DataTable/grid/gridStore.js +219 -0
  315. package/dist/components/UI/DataTable/grid/gridStore.js.map +1 -0
  316. package/dist/components/UI/DataTable/grid/gridTypes.d.ts +47 -0
  317. package/dist/components/UI/DataTable/grid/gridTypes.js +27 -0
  318. package/dist/components/UI/DataTable/grid/gridTypes.js.map +1 -0
  319. package/dist/components/UI/DataTable/grid/useGridFillApply.d.ts +18 -0
  320. package/dist/components/UI/DataTable/grid/useGridFillApply.js +74 -0
  321. package/dist/components/UI/DataTable/grid/useGridFillApply.js.map +1 -0
  322. package/dist/components/UI/DataTable/grid/useGridInstance.d.ts +27 -0
  323. package/dist/components/UI/DataTable/grid/useGridInstance.js +41 -0
  324. package/dist/components/UI/DataTable/grid/useGridInstance.js.map +1 -0
  325. package/dist/components/UI/DataTable/grid/useGridKeyboard.d.ts +17 -0
  326. package/dist/components/UI/DataTable/grid/useGridKeyboard.js +114 -0
  327. package/dist/components/UI/DataTable/grid/useGridKeyboard.js.map +1 -0
  328. package/dist/components/UI/DataTable/index.d.ts +19 -0
  329. package/dist/components/UI/DataTable/index.js +34 -0
  330. package/dist/components/UI/DataTable/index.js.map +1 -0
  331. package/dist/components/UI/DataTable/types.d.ts +513 -0
  332. package/dist/components/UI/DataTable/types.js +13 -0
  333. package/dist/components/UI/DataTable/types.js.map +1 -0
  334. package/dist/components/UI/DataTable/useCellEditingState.d.ts +20 -0
  335. package/dist/components/UI/DataTable/useCellEditingState.js +33 -0
  336. package/dist/components/UI/DataTable/useCellEditingState.js.map +1 -0
  337. package/dist/components/UI/DataTable/useColumnOrder.d.ts +25 -0
  338. package/dist/components/UI/DataTable/useColumnOrder.js +94 -0
  339. package/dist/components/UI/DataTable/useColumnOrder.js.map +1 -0
  340. package/dist/components/UI/DataTable/useColumnSizing.d.ts +9 -0
  341. package/dist/components/UI/DataTable/useColumnSizing.js +21 -0
  342. package/dist/components/UI/DataTable/useColumnSizing.js.map +1 -0
  343. package/dist/components/UI/DataTable/useColumnVisibility.d.ts +19 -0
  344. package/dist/components/UI/DataTable/useColumnVisibility.js +47 -0
  345. package/dist/components/UI/DataTable/useColumnVisibility.js.map +1 -0
  346. package/dist/components/UI/DataTable/useDataTableCommitQueue.d.ts +69 -0
  347. package/dist/components/UI/DataTable/useDataTableCommitQueue.js +220 -0
  348. package/dist/components/UI/DataTable/useDataTableCommitQueue.js.map +1 -0
  349. package/dist/components/UI/DataTable/useDataTableEditBuffer.d.ts +36 -0
  350. package/dist/components/UI/DataTable/useDataTableEditBuffer.js +29 -0
  351. package/dist/components/UI/DataTable/useDataTableEditBuffer.js.map +1 -0
  352. package/dist/components/UI/DataTable/useDataTableInstance.d.ts +65 -0
  353. package/dist/components/UI/DataTable/useDataTableInstance.js +306 -0
  354. package/dist/components/UI/DataTable/useDataTableInstance.js.map +1 -0
  355. package/dist/components/UI/DataTable/useDataTableSource.d.ts +85 -0
  356. package/dist/components/UI/DataTable/useDataTableSource.js +199 -0
  357. package/dist/components/UI/DataTable/useDataTableSource.js.map +1 -0
  358. package/dist/components/UI/DataTable/useFlipRows.d.ts +22 -0
  359. package/dist/components/UI/DataTable/useFlipRows.js +90 -0
  360. package/dist/components/UI/DataTable/useFlipRows.js.map +1 -0
  361. package/dist/components/UI/ErrorBoundary.d.ts +20 -0
  362. package/dist/components/UI/ErrorBoundary.js +36 -0
  363. package/dist/components/UI/ErrorBoundary.js.map +1 -0
  364. package/dist/components/UI/GeneratedByAI.d.ts +2 -0
  365. package/dist/components/UI/GeneratedByAI.js +12 -0
  366. package/dist/components/UI/GeneratedByAI.js.map +1 -0
  367. package/dist/components/UI/HorizontalScrollArea.d.ts +22 -0
  368. package/dist/components/UI/HorizontalScrollArea.js +73 -0
  369. package/dist/components/UI/HorizontalScrollArea.js.map +1 -0
  370. package/dist/components/UI/ImageAiAdjust/ImageAiAdjustDialog.d.ts +15 -0
  371. package/dist/components/UI/ImageAiAdjust/ImageAiAdjustDialog.js +144 -0
  372. package/dist/components/UI/ImageAiAdjust/ImageAiAdjustDialog.js.map +1 -0
  373. package/dist/components/UI/ImageAiAdjust/useImageAiAdjust.d.ts +29 -0
  374. package/dist/components/UI/ImageAiAdjust/useImageAiAdjust.js +84 -0
  375. package/dist/components/UI/ImageAiAdjust/useImageAiAdjust.js.map +1 -0
  376. package/dist/components/UI/ImageAnnotator/AnnotationEditor.d.ts +12 -0
  377. package/dist/components/UI/ImageAnnotator/AnnotationEditor.js +267 -0
  378. package/dist/components/UI/ImageAnnotator/AnnotationEditor.js.map +1 -0
  379. package/dist/components/UI/ImageAnnotator/ImageAnnotationDialog.d.ts +13 -0
  380. package/dist/components/UI/ImageAnnotator/ImageAnnotationDialog.js +58 -0
  381. package/dist/components/UI/ImageAnnotator/ImageAnnotationDialog.js.map +1 -0
  382. package/dist/components/UI/ImageAnnotator/annotationStyle.d.ts +28 -0
  383. package/dist/components/UI/ImageAnnotator/annotationStyle.js +56 -0
  384. package/dist/components/UI/ImageAnnotator/annotationStyle.js.map +1 -0
  385. package/dist/components/UI/ImageAnnotator/canvas/AnnotationElementNode.d.ts +17 -0
  386. package/dist/components/UI/ImageAnnotator/canvas/AnnotationElementNode.js +329 -0
  387. package/dist/components/UI/ImageAnnotator/canvas/AnnotationElementNode.js.map +1 -0
  388. package/dist/components/UI/ImageAnnotator/canvas/AnnotationSelection.d.ts +10 -0
  389. package/dist/components/UI/ImageAnnotator/canvas/AnnotationSelection.js +125 -0
  390. package/dist/components/UI/ImageAnnotator/canvas/AnnotationSelection.js.map +1 -0
  391. package/dist/components/UI/ImageAnnotator/canvas/AnnotationStage.d.ts +19 -0
  392. package/dist/components/UI/ImageAnnotator/canvas/AnnotationStage.js +216 -0
  393. package/dist/components/UI/ImageAnnotator/canvas/AnnotationStage.js.map +1 -0
  394. package/dist/components/UI/ImageAnnotator/components/AnnotationActionBar.d.ts +15 -0
  395. package/dist/components/UI/ImageAnnotator/components/AnnotationActionBar.js +77 -0
  396. package/dist/components/UI/ImageAnnotator/components/AnnotationActionBar.js.map +1 -0
  397. package/dist/components/UI/ImageAnnotator/components/AnnotationColorPopover.d.ts +11 -0
  398. package/dist/components/UI/ImageAnnotator/components/AnnotationColorPopover.js +69 -0
  399. package/dist/components/UI/ImageAnnotator/components/AnnotationColorPopover.js.map +1 -0
  400. package/dist/components/UI/ImageAnnotator/components/AnnotationElementActions.d.ts +8 -0
  401. package/dist/components/UI/ImageAnnotator/components/AnnotationElementActions.js +58 -0
  402. package/dist/components/UI/ImageAnnotator/components/AnnotationElementActions.js.map +1 -0
  403. package/dist/components/UI/ImageAnnotator/components/AnnotationStyleBar.d.ts +13 -0
  404. package/dist/components/UI/ImageAnnotator/components/AnnotationStyleBar.js +183 -0
  405. package/dist/components/UI/ImageAnnotator/components/AnnotationStyleBar.js.map +1 -0
  406. package/dist/components/UI/ImageAnnotator/components/AnnotationTextOverlay.d.ts +15 -0
  407. package/dist/components/UI/ImageAnnotator/components/AnnotationTextOverlay.js +78 -0
  408. package/dist/components/UI/ImageAnnotator/components/AnnotationTextOverlay.js.map +1 -0
  409. package/dist/components/UI/ImageAnnotator/components/AnnotationToolButton.d.ts +15 -0
  410. package/dist/components/UI/ImageAnnotator/components/AnnotationToolButton.js +46 -0
  411. package/dist/components/UI/ImageAnnotator/components/AnnotationToolButton.js.map +1 -0
  412. package/dist/components/UI/ImageAnnotator/components/AnnotationToolbar.d.ts +10 -0
  413. package/dist/components/UI/ImageAnnotator/components/AnnotationToolbar.js +80 -0
  414. package/dist/components/UI/ImageAnnotator/components/AnnotationToolbar.js.map +1 -0
  415. package/dist/components/UI/ImageAnnotator/helpers/annotationCanvas.d.ts +21 -0
  416. package/dist/components/UI/ImageAnnotator/helpers/annotationCanvas.js +45 -0
  417. package/dist/components/UI/ImageAnnotator/helpers/annotationCanvas.js.map +1 -0
  418. package/dist/components/UI/ImageAnnotator/helpers/annotationElements.d.ts +15 -0
  419. package/dist/components/UI/ImageAnnotator/helpers/annotationElements.js +165 -0
  420. package/dist/components/UI/ImageAnnotator/helpers/annotationElements.js.map +1 -0
  421. package/dist/components/UI/ImageAnnotator/helpers/annotationExport.d.ts +15 -0
  422. package/dist/components/UI/ImageAnnotator/helpers/annotationExport.js +23 -0
  423. package/dist/components/UI/ImageAnnotator/helpers/annotationExport.js.map +1 -0
  424. package/dist/components/UI/ImageAnnotator/helpers/konvaFullBuild.d.ts +8 -0
  425. package/dist/components/UI/ImageAnnotator/helpers/konvaFullBuild.js +10 -0
  426. package/dist/components/UI/ImageAnnotator/helpers/konvaFullBuild.js.map +1 -0
  427. package/dist/components/UI/ImageAnnotator/hooks/useAnnotationBaseImage.d.ts +9 -0
  428. package/dist/components/UI/ImageAnnotator/hooks/useAnnotationBaseImage.js +56 -0
  429. package/dist/components/UI/ImageAnnotator/hooks/useAnnotationBaseImage.js.map +1 -0
  430. package/dist/components/UI/ImageAnnotator/hooks/useAnnotationDocument.d.ts +27 -0
  431. package/dist/components/UI/ImageAnnotator/hooks/useAnnotationDocument.js +149 -0
  432. package/dist/components/UI/ImageAnnotator/hooks/useAnnotationDocument.js.map +1 -0
  433. package/dist/components/UI/ImageAnnotator/hooks/useAnnotationShortcuts.d.ts +14 -0
  434. package/dist/components/UI/ImageAnnotator/hooks/useAnnotationShortcuts.js +79 -0
  435. package/dist/components/UI/ImageAnnotator/hooks/useAnnotationShortcuts.js.map +1 -0
  436. package/dist/components/UI/ImageAnnotator/hooks/useCoarsePointer.d.ts +5 -0
  437. package/dist/components/UI/ImageAnnotator/hooks/useCoarsePointer.js +23 -0
  438. package/dist/components/UI/ImageAnnotator/hooks/useCoarsePointer.js.map +1 -0
  439. package/dist/components/UI/ImageAnnotator/hooks/useHtmlImage.d.ts +2 -0
  440. package/dist/components/UI/ImageAnnotator/hooks/useHtmlImage.js +27 -0
  441. package/dist/components/UI/ImageAnnotator/hooks/useHtmlImage.js.map +1 -0
  442. package/dist/components/UI/ImageAnnotator/interfaces/annotationDocument.d.ts +89 -0
  443. package/dist/components/UI/ImageAnnotator/interfaces/annotationDocument.js +13 -0
  444. package/dist/components/UI/ImageAnnotator/interfaces/annotationDocument.js.map +1 -0
  445. package/dist/components/UI/ImagePlaceholder.d.ts +24 -0
  446. package/dist/components/UI/ImagePlaceholder.js +26 -0
  447. package/dist/components/UI/ImagePlaceholder.js.map +1 -0
  448. package/dist/components/UI/ImageZoomOverlay.d.ts +7 -0
  449. package/dist/components/UI/ImageZoomOverlay.js +49 -0
  450. package/dist/components/UI/ImageZoomOverlay.js.map +1 -0
  451. package/dist/components/UI/InformationCard.d.ts +26 -0
  452. package/dist/components/UI/InformationCard.js +89 -0
  453. package/dist/components/UI/InformationCard.js.map +1 -0
  454. package/dist/components/UI/Kanban/KanbanBoard.d.ts +26 -0
  455. package/dist/components/UI/Kanban/KanbanBoard.js +89 -0
  456. package/dist/components/UI/Kanban/KanbanBoard.js.map +1 -0
  457. package/dist/components/UI/Kanban/KanbanCard.d.ts +22 -0
  458. package/dist/components/UI/Kanban/KanbanCard.js +47 -0
  459. package/dist/components/UI/Kanban/KanbanCard.js.map +1 -0
  460. package/dist/components/UI/Kanban/KanbanLane.d.ts +37 -0
  461. package/dist/components/UI/Kanban/KanbanLane.js +77 -0
  462. package/dist/components/UI/Kanban/KanbanLane.js.map +1 -0
  463. package/dist/components/UI/Kanban/index.d.ts +4 -0
  464. package/dist/components/UI/Kanban/index.js +11 -0
  465. package/dist/components/UI/Kanban/index.js.map +1 -0
  466. package/dist/components/UI/Kanban/kanbanBoardContext.d.ts +13 -0
  467. package/dist/components/UI/Kanban/kanbanBoardContext.js +13 -0
  468. package/dist/components/UI/Kanban/kanbanBoardContext.js.map +1 -0
  469. package/dist/components/UI/LazyMarkdown.d.ts +5 -0
  470. package/dist/components/UI/LazyMarkdown.js +8 -0
  471. package/dist/components/UI/LazyMarkdown.js.map +1 -0
  472. package/dist/components/UI/LoadingPage.d.ts +2 -0
  473. package/dist/components/UI/LoadingPage.js +13 -0
  474. package/dist/components/UI/LoadingPage.js.map +1 -0
  475. package/dist/components/UI/LoadingSpinner.d.ts +14 -0
  476. package/dist/components/UI/LoadingSpinner.js +32 -0
  477. package/dist/components/UI/LoadingSpinner.js.map +1 -0
  478. package/dist/components/UI/MaterialSymbol/consts.d.ts +2 -0
  479. package/dist/components/UI/MaterialSymbol/consts.js +3472 -0
  480. package/dist/components/UI/MaterialSymbol/consts.js.map +1 -0
  481. package/dist/components/UI/MaterialSymbol/index.d.ts +18 -0
  482. package/dist/components/UI/MaterialSymbol/index.js +46 -0
  483. package/dist/components/UI/MaterialSymbol/index.js.map +1 -0
  484. package/dist/components/UI/MaterialSymbol/types.d.ts +37 -0
  485. package/dist/components/UI/MaterialSymbol/types.js +2 -0
  486. package/dist/components/UI/MaterialSymbol/types.js.map +1 -0
  487. package/dist/components/UI/NoDataFound/index.d.ts +31 -0
  488. package/dist/components/UI/NoDataFound/index.js +215 -0
  489. package/dist/components/UI/NoDataFound/index.js.map +1 -0
  490. package/dist/components/UI/NoDataFound/noDataFoundPresets.d.ts +31 -0
  491. package/dist/components/UI/NoDataFound/noDataFoundPresets.js +99 -0
  492. package/dist/components/UI/NoDataFound/noDataFoundPresets.js.map +1 -0
  493. package/dist/components/UI/ReferenceCard.d.ts +16 -0
  494. package/dist/components/UI/ReferenceCard.js +59 -0
  495. package/dist/components/UI/ReferenceCard.js.map +1 -0
  496. package/dist/components/UI/RichTextContent.d.ts +14 -0
  497. package/dist/components/UI/RichTextContent.js +28 -0
  498. package/dist/components/UI/RichTextContent.js.map +1 -0
  499. package/dist/components/UI/SkeletonLoading.d.ts +9 -0
  500. package/dist/components/UI/SkeletonLoading.js +20 -0
  501. package/dist/components/UI/SkeletonLoading.js.map +1 -0
  502. package/dist/components/UI/ThreeDots.d.ts +11 -0
  503. package/dist/components/UI/ThreeDots.js +18 -0
  504. package/dist/components/UI/ThreeDots.js.map +1 -0
  505. package/dist/components/UI/Toast.d.ts +16 -0
  506. package/dist/components/UI/Toast.js +81 -0
  507. package/dist/components/UI/Toast.js.map +1 -0
  508. package/dist/components/UI/ToastHost.d.ts +2 -0
  509. package/dist/components/UI/ToastHost.js +25 -0
  510. package/dist/components/UI/ToastHost.js.map +1 -0
  511. package/dist/components/UI/TypingEffect.d.ts +10 -0
  512. package/dist/components/UI/TypingEffect.js +31 -0
  513. package/dist/components/UI/TypingEffect.js.map +1 -0
  514. package/dist/components/UI/UmodeLogo.d.ts +10 -0
  515. package/dist/components/UI/UmodeLogo.js +128 -0
  516. package/dist/components/UI/UmodeLogo.js.map +1 -0
  517. package/dist/components/UI/UsersAvatar.d.ts +7 -0
  518. package/dist/components/UI/UsersAvatar.js +29 -0
  519. package/dist/components/UI/UsersAvatar.js.map +1 -0
  520. package/dist/components/UI/access/UiAccessContext.d.ts +21 -0
  521. package/dist/components/UI/access/UiAccessContext.js +14 -0
  522. package/dist/components/UI/access/UiAccessContext.js.map +1 -0
  523. package/dist/components/UI/cells/ArrayCell.d.ts +5 -0
  524. package/dist/components/UI/cells/ArrayCell.js +25 -0
  525. package/dist/components/UI/cells/ArrayCell.js.map +1 -0
  526. package/dist/components/UI/cells/BooleanCell.d.ts +5 -0
  527. package/dist/components/UI/cells/BooleanCell.js +22 -0
  528. package/dist/components/UI/cells/BooleanCell.js.map +1 -0
  529. package/dist/components/UI/cells/DetailsTableCell.d.ts +7 -0
  530. package/dist/components/UI/cells/DetailsTableCell.js +30 -0
  531. package/dist/components/UI/cells/DetailsTableCell.js.map +1 -0
  532. package/dist/components/UI/cells/ProductImageCell.d.ts +5 -0
  533. package/dist/components/UI/cells/ProductImageCell.js +21 -0
  534. package/dist/components/UI/cells/ProductImageCell.js.map +1 -0
  535. package/dist/components/UI/cells/UrlLinkCell.d.ts +6 -0
  536. package/dist/components/UI/cells/UrlLinkCell.js +19 -0
  537. package/dist/components/UI/cells/UrlLinkCell.js.map +1 -0
  538. package/dist/components/Upload/SimpleUploaderComponent.d.ts +9 -0
  539. package/dist/components/Upload/SimpleUploaderComponent.js +72 -0
  540. package/dist/components/Upload/SimpleUploaderComponent.js.map +1 -0
  541. package/dist/components/Upload/UploaderComponent.d.ts +29 -0
  542. package/dist/components/Upload/UploaderComponent.js +241 -0
  543. package/dist/components/Upload/UploaderComponent.js.map +1 -0
  544. package/dist/components/Upload/XlsExportButton.d.ts +13 -0
  545. package/dist/components/Upload/XlsExportButton.js +47 -0
  546. package/dist/components/Upload/XlsExportButton.js.map +1 -0
  547. package/dist/helpers/composeRefs.d.ts +7 -0
  548. package/dist/helpers/composeRefs.js +14 -0
  549. package/dist/helpers/composeRefs.js.map +1 -0
  550. package/dist/helpers/dateHelpers.d.ts +47 -0
  551. package/dist/helpers/dateHelpers.js +69 -0
  552. package/dist/helpers/dateHelpers.js.map +1 -0
  553. package/dist/helpers/fileAttachments.d.ts +3 -0
  554. package/dist/helpers/fileAttachments.js +17 -0
  555. package/dist/helpers/fileAttachments.js.map +1 -0
  556. package/dist/helpers/formatHelpers.d.ts +36 -0
  557. package/dist/helpers/formatHelpers.js +65 -0
  558. package/dist/helpers/formatHelpers.js.map +1 -0
  559. package/dist/helpers/imageCompression.d.ts +5 -0
  560. package/dist/helpers/imageCompression.js +49 -0
  561. package/dist/helpers/imageCompression.js.map +1 -0
  562. package/dist/helpers/imageFile.d.ts +16 -0
  563. package/dist/helpers/imageFile.js +59 -0
  564. package/dist/helpers/imageFile.js.map +1 -0
  565. package/dist/helpers/layeredSurfaces.d.ts +10 -0
  566. package/dist/helpers/layeredSurfaces.js +14 -0
  567. package/dist/helpers/layeredSurfaces.js.map +1 -0
  568. package/dist/helpers/mathHelpers.d.ts +14 -0
  569. package/dist/helpers/mathHelpers.js +13 -0
  570. package/dist/helpers/mathHelpers.js.map +1 -0
  571. package/dist/helpers/mergeClasses.d.ts +6 -0
  572. package/dist/helpers/mergeClasses.js +12 -0
  573. package/dist/helpers/mergeClasses.js.map +1 -0
  574. package/dist/helpers/moduleLoadErrorHelpers.d.ts +1 -0
  575. package/dist/helpers/moduleLoadErrorHelpers.js +25 -0
  576. package/dist/helpers/moduleLoadErrorHelpers.js.map +1 -0
  577. package/dist/helpers/objectHelpers.d.ts +13 -0
  578. package/dist/helpers/objectHelpers.js +60 -0
  579. package/dist/helpers/objectHelpers.js.map +1 -0
  580. package/dist/helpers/richText.d.ts +37 -0
  581. package/dist/helpers/richText.js +171 -0
  582. package/dist/helpers/richText.js.map +1 -0
  583. package/dist/helpers/stringHelpers.d.ts +45 -0
  584. package/dist/helpers/stringHelpers.js +57 -0
  585. package/dist/helpers/stringHelpers.js.map +1 -0
  586. package/dist/helpers/themeTokens.d.ts +28 -0
  587. package/dist/helpers/themeTokens.js +33 -0
  588. package/dist/helpers/themeTokens.js.map +1 -0
  589. package/dist/helpers/uiErrorPresenter.d.ts +21 -0
  590. package/dist/helpers/uiErrorPresenter.js +10 -0
  591. package/dist/helpers/uiErrorPresenter.js.map +1 -0
  592. package/dist/helpers/uiLogger.d.ts +8 -0
  593. package/dist/helpers/uiLogger.js +16 -0
  594. package/dist/helpers/uiLogger.js.map +1 -0
  595. package/dist/helpers/uiPreferences.d.ts +13 -0
  596. package/dist/helpers/uiPreferences.js +35 -0
  597. package/dist/helpers/uiPreferences.js.map +1 -0
  598. package/dist/helpers/urlParamSync.d.ts +19 -0
  599. package/dist/helpers/urlParamSync.js +54 -0
  600. package/dist/helpers/urlParamSync.js.map +1 -0
  601. package/dist/helpers/utilityHelpers.d.ts +81 -0
  602. package/dist/helpers/utilityHelpers.js +133 -0
  603. package/dist/helpers/utilityHelpers.js.map +1 -0
  604. package/dist/helpers/validationHelpers.d.ts +36 -0
  605. package/dist/helpers/validationHelpers.js +44 -0
  606. package/dist/helpers/validationHelpers.js.map +1 -0
  607. package/dist/hooks/useAnchoredFloating.d.ts +22 -0
  608. package/dist/hooks/useAnchoredFloating.js +59 -0
  609. package/dist/hooks/useAnchoredFloating.js.map +1 -0
  610. package/dist/hooks/useBreakpoint.d.ts +16 -0
  611. package/dist/hooks/useBreakpoint.js +47 -0
  612. package/dist/hooks/useBreakpoint.js.map +1 -0
  613. package/dist/hooks/useDebounce.d.ts +8 -0
  614. package/dist/hooks/useDebounce.js +36 -0
  615. package/dist/hooks/useDebounce.js.map +1 -0
  616. package/dist/hooks/useFileAttachments.d.ts +43 -0
  617. package/dist/hooks/useFileAttachments.js +158 -0
  618. package/dist/hooks/useFileAttachments.js.map +1 -0
  619. package/dist/hooks/useHoverCapable.d.ts +6 -0
  620. package/dist/hooks/useHoverCapable.js +28 -0
  621. package/dist/hooks/useHoverCapable.js.map +1 -0
  622. package/dist/hooks/useInlineEditor.d.ts +5 -0
  623. package/dist/hooks/useInlineEditor.js +41 -0
  624. package/dist/hooks/useInlineEditor.js.map +1 -0
  625. package/dist/hooks/useMobile.d.ts +7 -0
  626. package/dist/hooks/useMobile.js +8 -0
  627. package/dist/hooks/useMobile.js.map +1 -0
  628. package/dist/hooks/useNotification.d.ts +38 -0
  629. package/dist/hooks/useNotification.js +39 -0
  630. package/dist/hooks/useNotification.js.map +1 -0
  631. package/dist/hooks/useResolvedTheme.d.ts +7 -0
  632. package/dist/hooks/useResolvedTheme.js +15 -0
  633. package/dist/hooks/useResolvedTheme.js.map +1 -0
  634. package/dist/hooks/useVoiceTranscription.d.ts +25 -0
  635. package/dist/hooks/useVoiceTranscription.js +106 -0
  636. package/dist/hooks/useVoiceTranscription.js.map +1 -0
  637. package/dist/index.d.ts +50 -0
  638. package/dist/index.js +125 -0
  639. package/dist/index.js.map +1 -0
  640. package/dist/interfaces/IFileAttachment.d.ts +18 -0
  641. package/dist/interfaces/IFileAttachment.js +2 -0
  642. package/dist/interfaces/IFileAttachment.js.map +1 -0
  643. package/dist/interfaces/IFilterOption.d.ts +10 -0
  644. package/dist/interfaces/IFilterOption.js +2 -0
  645. package/dist/interfaces/IFilterOption.js.map +1 -0
  646. package/dist/locales/en/ui.json.d.ts +470 -0
  647. package/dist/locales/en/ui.json.js +99 -0
  648. package/dist/locales/en/ui.json.js.map +1 -0
  649. package/dist/locales/index.d.ts +938 -0
  650. package/dist/locales/index.js +7 -0
  651. package/dist/locales/index.js.map +1 -0
  652. package/dist/locales/pt/ui.json.d.ts +470 -0
  653. package/dist/locales/pt/ui.json.js +99 -0
  654. package/dist/locales/pt/ui.json.js.map +1 -0
  655. package/dist/motion/index.d.ts +2 -0
  656. package/dist/motion/index.js +17 -0
  657. package/dist/motion/index.js.map +1 -0
  658. package/dist/motion/motionPresets.d.ts +44 -0
  659. package/dist/motion/motionPresets.js +67 -0
  660. package/dist/motion/motionPresets.js.map +1 -0
  661. package/dist/motion/motionTokens.d.ts +40 -0
  662. package/dist/motion/motionTokens.js +29 -0
  663. package/dist/motion/motionTokens.js.map +1 -0
  664. package/package.json +174 -0
  665. package/src/assets/styles/theme.css +381 -0
  666. package/tailwind-plugins/glass.js +167 -0
  667. package/tailwind.preset.js +367 -0
@@ -0,0 +1,199 @@
1
+ import { useState, useRef, useEffect, useCallback, useMemo } from "react";
2
+ import { uiLogger } from "../../../helpers/uiLogger.js";
3
+ import { buildDataTableFilterParams, applyDataTableFilters } from "./applyDataTableFilters.js";
4
+ const BULK_PAGE_SIZE = 2e3;
5
+ const SERVER_PAGE_SIZE = 20;
6
+ const EMPTY_FILTER_VALUES = {};
7
+ const useDataTableSource = ({
8
+ dataMode,
9
+ filters,
10
+ fetchPage,
11
+ filterValues = EMPTY_FILTER_VALUES,
12
+ serverParams,
13
+ reloadToken = 0,
14
+ bulkPageSize = BULK_PAGE_SIZE,
15
+ serverPageSize = SERVER_PAGE_SIZE,
16
+ viewMode
17
+ }) => {
18
+ const isClient = dataMode === "client";
19
+ const [loadedRows, setLoadedRows] = useState([]);
20
+ const [loading, setLoading] = useState(true);
21
+ const [loadingMore, setLoadingMore] = useState(false);
22
+ const [error, setError] = useState(false);
23
+ const [errorCause, setErrorCause] = useState(null);
24
+ const [total, setTotal] = useState(0);
25
+ const [reachedEnd, setReachedEnd] = useState(false);
26
+ const appendNextRef = useRef(false);
27
+ const [page, setPage] = useState(1);
28
+ const [pageSize, setPageSize] = useState(serverPageSize);
29
+ const [search, setSearch] = useState("");
30
+ const [sort, setSort] = useState(null);
31
+ const [clientFilteredCount, setClientFilteredCount] = useState(0);
32
+ const fetchPageRef = useRef(fetchPage);
33
+ fetchPageRef.current = fetchPage;
34
+ const inFlightRef = useRef(null);
35
+ const reloadTokenRef = useRef(reloadToken);
36
+ reloadTokenRef.current = reloadToken;
37
+ useEffect(
38
+ () => () => {
39
+ inFlightRef.current?.controller.abort();
40
+ },
41
+ []
42
+ );
43
+ const runClientLoad = useCallback(async () => {
44
+ setLoading(true);
45
+ setError(false);
46
+ setErrorCause(null);
47
+ try {
48
+ const first = await fetchPageRef.current({ page: 1, size: bulkPageSize, filterParams: {} });
49
+ const accumulated = [...first.data];
50
+ const lastPage = Math.max(1, Math.ceil((first.total || accumulated.length) / bulkPageSize));
51
+ if (lastPage > 1) {
52
+ const rest = await Promise.all(
53
+ Array.from(
54
+ { length: lastPage - 1 },
55
+ (_, index) => fetchPageRef.current({ page: index + 2, size: bulkPageSize, filterParams: {} })
56
+ )
57
+ );
58
+ rest.forEach((result) => accumulated.push(...result.data));
59
+ }
60
+ setLoadedRows(accumulated);
61
+ setTotal(accumulated.length);
62
+ } catch (loadError) {
63
+ uiLogger.error("DataTable client load failed", loadError);
64
+ setError(true);
65
+ setErrorCause(loadError);
66
+ setLoadedRows([]);
67
+ } finally {
68
+ setLoading(false);
69
+ }
70
+ }, [bulkPageSize]);
71
+ const nextServerFilterParams = { ...serverParams, ...buildDataTableFilterParams(filters, filterValues) };
72
+ const serverFilterParamsKey = JSON.stringify(nextServerFilterParams);
73
+ const serverFilterParams = useMemo(() => nextServerFilterParams, [serverFilterParamsKey]);
74
+ const runServerLoad = useCallback(async () => {
75
+ const isAppend = appendNextRef.current;
76
+ appendNextRef.current = false;
77
+ const requestKey = JSON.stringify({
78
+ page,
79
+ pageSize,
80
+ search,
81
+ sort,
82
+ filters: serverFilterParams,
83
+ reloadToken: reloadTokenRef.current,
84
+ isAppend
85
+ });
86
+ const liveLoad = inFlightRef.current;
87
+ if (liveLoad && liveLoad.key === requestKey && !liveLoad.controller.signal.aborted) return;
88
+ liveLoad?.controller.abort();
89
+ const controller = new AbortController();
90
+ inFlightRef.current = { key: requestKey, controller };
91
+ if (isAppend) setLoadingMore(true);
92
+ else setLoading(true);
93
+ setError(false);
94
+ setErrorCause(null);
95
+ try {
96
+ const result = await fetchPageRef.current({
97
+ page,
98
+ size: pageSize,
99
+ search: search || void 0,
100
+ sort,
101
+ filterParams: serverFilterParams,
102
+ signal: controller.signal
103
+ });
104
+ if (controller.signal.aborted) return;
105
+ setLoadedRows((previous) => isAppend ? [...previous, ...result.data] : result.data);
106
+ setTotal(result.total);
107
+ if (isAppend && result.data.length === 0) setReachedEnd(true);
108
+ else if (!isAppend) setReachedEnd(false);
109
+ } catch (loadError) {
110
+ if (controller.signal.aborted) return;
111
+ uiLogger.error("DataTable server load failed", loadError);
112
+ setError(true);
113
+ setErrorCause(loadError);
114
+ if (!isAppend) setLoadedRows([]);
115
+ } finally {
116
+ if (inFlightRef.current?.controller === controller) inFlightRef.current = null;
117
+ if (!controller.signal.aborted) {
118
+ if (isAppend) setLoadingMore(false);
119
+ else setLoading(false);
120
+ }
121
+ }
122
+ }, [page, pageSize, search, sort, serverFilterParams]);
123
+ useEffect(() => {
124
+ if (isClient) void runClientLoad();
125
+ }, [isClient, reloadToken, runClientLoad]);
126
+ useEffect(() => {
127
+ if (!isClient) void runServerLoad();
128
+ }, [isClient, reloadToken, runServerLoad]);
129
+ const isInitialQueryRef = useRef(true);
130
+ useEffect(() => {
131
+ if (isInitialQueryRef.current) {
132
+ isInitialQueryRef.current = false;
133
+ return;
134
+ }
135
+ appendNextRef.current = false;
136
+ setPage(1);
137
+ }, [viewMode, serverFilterParams]);
138
+ const isInitialReloadRef = useRef(true);
139
+ useEffect(() => {
140
+ if (isInitialReloadRef.current) {
141
+ isInitialReloadRef.current = false;
142
+ return;
143
+ }
144
+ if (isClient || viewMode !== "cards") return;
145
+ appendNextRef.current = false;
146
+ setPage(1);
147
+ }, [reloadToken]);
148
+ const rows = useMemo(
149
+ () => isClient ? applyDataTableFilters(loadedRows, filters, filterValues) : loadedRows,
150
+ [isClient, loadedRows, filters, filterValues]
151
+ );
152
+ const loadMoreStateRef = useRef({ loading, loadingMore, loaded: 0, total, reachedEnd });
153
+ loadMoreStateRef.current = { loading, loadingMore, loaded: loadedRows.length, total, reachedEnd };
154
+ const loadMoreCards = useCallback(() => {
155
+ const current = loadMoreStateRef.current;
156
+ if (current.loading || current.loadingMore || current.reachedEnd) return;
157
+ if (current.loaded >= current.total) return;
158
+ appendNextRef.current = true;
159
+ setPage((previous) => previous + 1);
160
+ }, []);
161
+ const pagination = isClient ? void 0 : {
162
+ pageSize,
163
+ numberOfPages: Math.max(1, Math.ceil(total / pageSize)),
164
+ currentPage: page,
165
+ totalItems: total,
166
+ setCurrentPage: setPage,
167
+ onPageSizeChange: (size) => {
168
+ setPageSize(size);
169
+ setPage(1);
170
+ }
171
+ };
172
+ const reload = isClient ? runClientLoad : runServerLoad;
173
+ return {
174
+ rows,
175
+ loading,
176
+ error,
177
+ errorCause,
178
+ onRetry: reload,
179
+ reload,
180
+ filteredCount: isClient ? clientFilteredCount : total,
181
+ totalCount: total,
182
+ onFilteredCountChange: setClientFilteredCount,
183
+ onSearch: isClient ? void 0 : (value) => {
184
+ setSearch(value);
185
+ setPage(1);
186
+ },
187
+ sort: isClient ? void 0 : sort,
188
+ onSortChange: isClient ? void 0 : (next) => {
189
+ setSort(next);
190
+ setPage(1);
191
+ },
192
+ pagination,
193
+ cardsInfinite: !isClient && viewMode === "cards" ? { hasMore: !reachedEnd && loadedRows.length < total, loadingMore, loadMore: loadMoreCards } : void 0
194
+ };
195
+ };
196
+ export {
197
+ useDataTableSource
198
+ };
199
+ //# sourceMappingURL=useDataTableSource.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDataTableSource.js","sources":["../../../../src/components/UI/DataTable/useDataTableSource.ts"],"sourcesContent":["import { useCallback, useEffect, useMemo, useRef, useState } from 'react';\n\nimport { uiLogger } from '@/helpers/uiLogger';\n\nimport { applyDataTableFilters, buildDataTableFilterParams } from './applyDataTableFilters';\nimport type {\n IDataTableFiltersConfig,\n IDataTableRow,\n IDataTableSortState,\n TDataTableDataMode,\n TDataTableFilterValues,\n TDataTableViewMode,\n} from './types';\nimport type { IDataTablePagination } from './useDataTableInstance';\n\nconst BULK_PAGE_SIZE = 2000;\nconst SERVER_PAGE_SIZE = 20;\n\n// Stable reference for the \"no drawer filters\" case. A `= {}` default would be a\n// fresh object every render, invalidating serverFilterParams -> runServerLoad ->\n// the server-load effect, firing a refetch on every render (flicker + request\n// storm) for consumers that do not pass `filterValues`.\nconst EMPTY_FILTER_VALUES: TDataTableFilterValues = {};\n\nexport interface IDataTableFetchParams {\n page: number;\n size: number;\n /** Server mode only. */\n search?: string;\n /** Server mode only. */\n sort?: IDataTableSortState | null;\n /** Server mode only: built from the active filters' `toServerParams`. */\n filterParams: Record<string, unknown>;\n /**\n * Server mode only. Aborted when this load is superseded (params changed) or the\n * table unmounts. Pass it to the HTTP layer (axios `signal`) so stale requests are\n * cancelled instead of left pending.\n */\n signal?: AbortSignal;\n}\n\nexport interface IDataTableFetchResult<T> {\n data: Array<T>;\n total: number;\n}\n\nexport type TDataTableFetchPage<T> = (params: IDataTableFetchParams) => Promise<IDataTableFetchResult<T>>;\n\ninterface IUseDataTableSourceParams<T extends IDataTableRow> {\n /** The single switch: mirror `config.dataMode`. `client` = bulk + in-memory; `server` = paginated. */\n dataMode: TDataTableDataMode | undefined;\n /** The table's filter config: drives in-memory (client) or server params. */\n filters?: IDataTableFiltersConfig<T>;\n /** Fetches one page of ALREADY ROW-SHAPED data. Same function feeds both modes. */\n fetchPage: TDataTableFetchPage<T>;\n /** Drawer filter values (applied in memory in client mode, sent as params in server mode). */\n filterValues?: TDataTableFilterValues;\n /**\n * Server mode only: page-level backend params outside the drawer filters (time\n * window, partner scope). Merged into `filterParams` and into the reload key, so\n * changing them refetches from page 1 — closures inside `fetchPage` do NOT\n * retrigger loads (the fetch runs through a ref) and silently go stale.\n * MUST be reference-stable per value (useMemo); an inline object literal here\n * recreates the params every render and re-fires the load effect.\n */\n serverParams?: Record<string, unknown>;\n /** Bump to force a reload (e.g. after a mutation). */\n reloadToken?: number;\n bulkPageSize?: number;\n serverPageSize?: number;\n /**\n * Current view mode (server mode only). When `cards`, server pages are appended\n * for infinite scroll (`cardsInfinite`); when `list`, they replace, page by page.\n */\n viewMode?: TDataTableViewMode;\n}\n\n/**\n * Everything a `DataTable` consumer needs, decided by `dataMode` alone. Spread the\n * server-mode props (`onSearch`/`sort`/`onSortChange`/`pagination`) into the table;\n * in client mode they are `undefined` and the table does search/sort/pagination\n * itself. Read `filteredCount`/`totalCount` for the \"Showing X of Y\" headline.\n */\nexport interface IDataTableSource<T extends IDataTableRow> {\n rows: Array<T>;\n loading: boolean;\n error: boolean;\n /** The caught error itself, for the surface to say WHY the load failed. */\n errorCause: unknown;\n onRetry: () => void;\n reload: () => void;\n filteredCount: number;\n totalCount: number;\n onFilteredCountChange: (count: number) => void;\n onSearch?: (value: string) => void;\n sort?: IDataTableSortState | null;\n onSortChange?: (sort: IDataTableSortState | null) => void;\n pagination?: IDataTablePagination;\n /**\n * Server mode + Cards view only. Drives the cards infinite scroll: the table\n * observes the bottom sentinel and calls `loadMore` while `hasMore`. Undefined\n * in list view or client mode (both keep their existing paging behaviour).\n */\n cardsInfinite?: {\n hasMore: boolean;\n loadingMore: boolean;\n loadMore: () => void;\n };\n}\n\nexport const useDataTableSource = <T extends IDataTableRow>({\n dataMode,\n filters,\n fetchPage,\n filterValues = EMPTY_FILTER_VALUES,\n serverParams,\n reloadToken = 0,\n bulkPageSize = BULK_PAGE_SIZE,\n serverPageSize = SERVER_PAGE_SIZE,\n viewMode,\n}: IUseDataTableSourceParams<T>): IDataTableSource<T> => {\n const isClient = dataMode === 'client';\n\n // Client: the full set. Server list: the current page. Server cards: pages are\n // appended (infinite scroll), so this accumulates.\n const [loadedRows, setLoadedRows] = useState<Array<T>>([]);\n const [loading, setLoading] = useState(true);\n // Appending the next cards page keeps the loaded rows visible (no skeleton/dim):\n // a separate flag drives the bottom \"loading more\" spinner only.\n const [loadingMore, setLoadingMore] = useState(false);\n const [error, setError] = useState(false);\n const [errorCause, setErrorCause] = useState<unknown>(null);\n const [total, setTotal] = useState(0);\n // Guards the cards infinite scroll against a backend that reports more rows than\n // it returns: once an appended page comes back empty, stop asking for more.\n const [reachedEnd, setReachedEnd] = useState(false);\n\n // Set right before a page bump when the next server load must append (cards\n // infinite scroll) instead of replacing. Read and reset inside the load.\n const appendNextRef = useRef(false);\n\n // Server-mode round-trip state.\n const [page, setPage] = useState(1);\n const [pageSize, setPageSize] = useState(serverPageSize);\n const [search, setSearch] = useState('');\n const [sort, setSort] = useState<IDataTableSortState | null>(null);\n\n // Client-mode post-search count reported by the table (for the headline).\n const [clientFilteredCount, setClientFilteredCount] = useState(0);\n\n // The consumer passes an inline `fetchPage`; a ref keeps the load callbacks\n // stable while always calling the latest closure.\n const fetchPageRef = useRef(fetchPage);\n fetchPageRef.current = fetchPage;\n\n // Circuit breaker + cancelamento: refuses to start a server load identical\n // (same page/search/sort/filters/token) to one already LIVE in flight — without\n // it, any consumer that destabilizes the load deps re-fires the effect every\n // render and floods the backend with thousands of parallel duplicates until the\n // tab freezes (the admin sessions 401 storm). A DIFFERENT load aborts the\n // previous one (params changed mid-flight) and takes ownership of the state;\n // unmount aborts whatever is pending. A retry after settle passes normally.\n const inFlightRef = useRef<{ key: string; controller: AbortController } | null>(null);\n const reloadTokenRef = useRef(reloadToken);\n reloadTokenRef.current = reloadToken;\n\n useEffect(\n () => () => {\n inFlightRef.current?.controller.abort();\n },\n [],\n );\n\n // Client: first (large) page to learn the total, then any remaining pages in\n // parallel. No filter/search/sort params, everything is applied in memory.\n const runClientLoad = useCallback(async () => {\n setLoading(true);\n setError(false);\n setErrorCause(null);\n\n try {\n const first = await fetchPageRef.current({ page: 1, size: bulkPageSize, filterParams: {} });\n const accumulated = [...first.data];\n const lastPage = Math.max(1, Math.ceil((first.total || accumulated.length) / bulkPageSize));\n\n if (lastPage > 1) {\n const rest = await Promise.all(\n Array.from({ length: lastPage - 1 }, (_, index) =>\n fetchPageRef.current({ page: index + 2, size: bulkPageSize, filterParams: {} }),\n ),\n );\n rest.forEach((result) => accumulated.push(...result.data));\n }\n\n setLoadedRows(accumulated);\n setTotal(accumulated.length);\n } catch (loadError) {\n uiLogger.error('DataTable client load failed', loadError);\n setError(true);\n setErrorCause(loadError);\n setLoadedRows([]);\n } finally {\n setLoading(false);\n }\n }, [bulkPageSize]);\n\n // Stabilize by VALUE, not by reference: a parent re-render can hand us a new\n // `filters`/`filterValues`/`serverParams` object that produces identical params.\n // Keying the memo on the serialized params keeps the same reference across such\n // re-renders, so `runServerLoad` (and its effect) does not refire and issue a\n // duplicate request. Drawer filters win over page-level serverParams on key clash.\n const nextServerFilterParams = { ...serverParams, ...buildDataTableFilterParams(filters, filterValues) };\n const serverFilterParamsKey = JSON.stringify(nextServerFilterParams);\n const serverFilterParams = useMemo(() => nextServerFilterParams, [serverFilterParamsKey]);\n\n // Server: one page, with search/sort/filters as backend params. In cards view\n // the next page is appended (infinite scroll); otherwise it replaces.\n const runServerLoad = useCallback(async () => {\n const isAppend = appendNextRef.current;\n appendNextRef.current = false;\n\n const requestKey = JSON.stringify({\n page,\n pageSize,\n search,\n sort,\n filters: serverFilterParams,\n reloadToken: reloadTokenRef.current,\n isAppend,\n });\n const liveLoad = inFlightRef.current;\n if (liveLoad && liveLoad.key === requestKey && !liveLoad.controller.signal.aborted) return;\n liveLoad?.controller.abort();\n\n const controller = new AbortController();\n inFlightRef.current = { key: requestKey, controller };\n\n if (isAppend) setLoadingMore(true);\n else setLoading(true);\n setError(false);\n setErrorCause(null);\n\n try {\n const result = await fetchPageRef.current({\n page,\n size: pageSize,\n search: search || undefined,\n sort,\n filterParams: serverFilterParams,\n signal: controller.signal,\n });\n if (controller.signal.aborted) return;\n setLoadedRows((previous) => (isAppend ? [...previous, ...result.data] : result.data));\n setTotal(result.total);\n if (isAppend && result.data.length === 0) setReachedEnd(true);\n else if (!isAppend) setReachedEnd(false);\n } catch (loadError) {\n // Um load abortado foi substituído por outro (ou o componente saiu de cena):\n // o estado pertence ao load mais novo; não é erro.\n if (controller.signal.aborted) return;\n uiLogger.error('DataTable server load failed', loadError);\n setError(true);\n setErrorCause(loadError);\n if (!isAppend) setLoadedRows([]);\n } finally {\n if (inFlightRef.current?.controller === controller) inFlightRef.current = null;\n if (!controller.signal.aborted) {\n if (isAppend) setLoadingMore(false);\n else setLoading(false);\n }\n }\n }, [page, pageSize, search, sort, serverFilterParams]);\n\n // Client reloads only on mount / reloadToken (filters are in-memory). Server\n // reloads whenever page/size/search/sort/filters change, or on reloadToken.\n useEffect(() => {\n if (isClient) void runClientLoad();\n }, [isClient, reloadToken, runClientLoad]);\n\n useEffect(() => {\n if (!isClient) void runServerLoad();\n }, [isClient, reloadToken, runServerLoad]);\n\n // A drawer-filter change or a Cards<->Lista switch restarts paging at page 1 so\n // the next server load replaces (never appends onto a stale filter/mode). Skips\n // the mount run so the first page is not loaded twice.\n const isInitialQueryRef = useRef(true);\n useEffect(() => {\n if (isInitialQueryRef.current) {\n isInitialQueryRef.current = false;\n return;\n }\n appendNextRef.current = false;\n setPage(1);\n }, [viewMode, serverFilterParams]);\n\n // Cards view accumulates pages, so a post-mutation reload must restart at page 1\n // (otherwise it would replace the accumulated cards with just the current page).\n // List mode reloads its current page unchanged.\n const isInitialReloadRef = useRef(true);\n useEffect(() => {\n if (isInitialReloadRef.current) {\n isInitialReloadRef.current = false;\n return;\n }\n if (isClient || viewMode !== 'cards') return;\n appendNextRef.current = false;\n setPage(1);\n }, [reloadToken]);\n\n // Client applies drawer filters in memory; server rows are already filtered.\n const rows = useMemo(\n () => (isClient ? applyDataTableFilters(loadedRows, filters, filterValues) : loadedRows),\n [isClient, loadedRows, filters, filterValues],\n );\n\n // Stable across renders (reads live state via a ref) so the table's\n // IntersectionObserver effect is not re-created on every data change.\n const loadMoreStateRef = useRef({ loading, loadingMore, loaded: 0, total, reachedEnd });\n loadMoreStateRef.current = { loading, loadingMore, loaded: loadedRows.length, total, reachedEnd };\n\n const loadMoreCards = useCallback(() => {\n const current = loadMoreStateRef.current;\n if (current.loading || current.loadingMore || current.reachedEnd) return;\n if (current.loaded >= current.total) return;\n appendNextRef.current = true;\n setPage((previous) => previous + 1);\n }, []);\n\n const pagination: IDataTablePagination | undefined = isClient\n ? undefined\n : {\n pageSize,\n numberOfPages: Math.max(1, Math.ceil(total / pageSize)),\n currentPage: page,\n totalItems: total,\n setCurrentPage: setPage,\n onPageSizeChange: (size) => {\n setPageSize(size);\n setPage(1);\n },\n };\n\n const reload = isClient ? runClientLoad : runServerLoad;\n\n return {\n rows,\n loading,\n error,\n errorCause,\n onRetry: reload,\n reload,\n filteredCount: isClient ? clientFilteredCount : total,\n totalCount: total,\n onFilteredCountChange: setClientFilteredCount,\n onSearch: isClient\n ? undefined\n : (value) => {\n setSearch(value);\n setPage(1);\n },\n sort: isClient ? undefined : sort,\n onSortChange: isClient\n ? undefined\n : (next) => {\n setSort(next);\n setPage(1);\n },\n pagination,\n cardsInfinite:\n !isClient && viewMode === 'cards'\n ? { hasMore: !reachedEnd && loadedRows.length < total, loadingMore, loadMore: loadMoreCards }\n : undefined,\n };\n};\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Lightweight FLIP animation (Web Animations API, no dependency).
3
+ *
4
+ * `registerRow` returns a stable ref-setter to attach to each animated row,
5
+ * keyed by row id. Rows that change position animate from their previous spot
6
+ * to the new one (First-Last-Invert-Play). Rows that just appeared are shown in
7
+ * place with NO opacity fade (a fade at the top of the list reads as a first-row
8
+ * "blink").
9
+ *
10
+ * `beginExit(ids)` supports animated REMOVAL (e.g. collapsing a group): React
11
+ * unmounts rows instantly, which FLIP alone cannot animate: the items would
12
+ * vanish and only then the gap would slide shut. Call it right before the
13
+ * removal commits: it clones the departing rows while they are still in the
14
+ * DOM, and on the next layout pass the clones are overlaid at their exact old
15
+ * position, fading/sliding up while the rows below FLIP into place. The two
16
+ * motions together read as a genuine close animation. Respects
17
+ * `prefers-reduced-motion`.
18
+ */
19
+ export declare const useFlipRows: (orderedRowIds: Array<string>, durationMs?: number) => {
20
+ registerRow: (id: string) => (element: HTMLElement | null) => void;
21
+ beginExit: (ids: Array<string>) => void;
22
+ };
@@ -0,0 +1,90 @@
1
+ import { useRef, useLayoutEffect } from "react";
2
+ import { prefersReducedMotion } from "./dataTableMotion.js";
3
+ const FLIP_DURATION_MS = 220;
4
+ const useFlipRows = (orderedRowIds, durationMs = FLIP_DURATION_MS) => {
5
+ const rowElements = useRef(/* @__PURE__ */ new Map());
6
+ const previousRects = useRef(/* @__PURE__ */ new Map());
7
+ const rowCallbacks = useRef(/* @__PURE__ */ new Map());
8
+ const pendingExits = useRef([]);
9
+ const registerRow = (id) => {
10
+ const existing = rowCallbacks.current.get(id);
11
+ if (existing) return existing;
12
+ const callback = (element) => {
13
+ if (element) rowElements.current.set(id, element);
14
+ else rowElements.current.delete(id);
15
+ };
16
+ rowCallbacks.current.set(id, callback);
17
+ return callback;
18
+ };
19
+ const beginExit = (ids) => {
20
+ if (prefersReducedMotion()) return;
21
+ const exits = [];
22
+ ids.forEach((id) => {
23
+ const element = rowElements.current.get(id);
24
+ if (!element) return;
25
+ exits.push({
26
+ clone: element.cloneNode(true),
27
+ rect: element.getBoundingClientRect(),
28
+ cellWidths: Array.from(element.children).map((cell) => cell.getBoundingClientRect().width)
29
+ });
30
+ });
31
+ pendingExits.current = exits;
32
+ };
33
+ const playExitGhosts = () => {
34
+ const exits = pendingExits.current;
35
+ pendingExits.current = [];
36
+ exits.forEach(({ clone, rect, cellWidths }) => {
37
+ const overlay = document.createElement("div");
38
+ overlay.style.cssText = `position:fixed;top:${rect.top}px;left:${rect.left}px;width:${rect.width}px;height:${rect.height}px;overflow:hidden;pointer-events:none;z-index:10;`;
39
+ const ghostTable = document.createElement("table");
40
+ ghostTable.style.cssText = `width:${rect.width}px;table-layout:fixed;border-collapse:separate;border-spacing:0;`;
41
+ Array.from(clone.children).forEach((cell, index) => {
42
+ cell.style.width = `${cellWidths[index]}px`;
43
+ });
44
+ const ghostBody = document.createElement("tbody");
45
+ ghostBody.appendChild(clone);
46
+ ghostTable.appendChild(ghostBody);
47
+ overlay.appendChild(ghostTable);
48
+ document.body.appendChild(overlay);
49
+ const animation = overlay.animate(
50
+ [
51
+ { opacity: 1, transform: "none" },
52
+ { opacity: 0, transform: `translateY(-${Math.min(rect.height, 24)}px)` }
53
+ ],
54
+ { duration: durationMs, easing: "ease" }
55
+ );
56
+ animation.onfinish = () => overlay.remove();
57
+ animation.oncancel = () => overlay.remove();
58
+ });
59
+ };
60
+ useLayoutEffect(() => {
61
+ if (prefersReducedMotion()) {
62
+ previousRects.current = /* @__PURE__ */ new Map();
63
+ rowElements.current.forEach((element, id) => previousRects.current.set(id, element.getBoundingClientRect()));
64
+ return;
65
+ }
66
+ playExitGhosts();
67
+ const nextRects = /* @__PURE__ */ new Map();
68
+ rowElements.current.forEach((element, id) => {
69
+ const lastRect = element.getBoundingClientRect();
70
+ nextRects.set(id, lastRect);
71
+ const firstRect = previousRects.current.get(id);
72
+ if (!firstRect) return;
73
+ const deltaY = firstRect.top - lastRect.top;
74
+ if (deltaY === 0) return;
75
+ element.animate([{ transform: `translateY(${deltaY}px)` }, { transform: "none" }], {
76
+ duration: durationMs,
77
+ easing: "ease"
78
+ });
79
+ });
80
+ previousRects.current = nextRects;
81
+ rowCallbacks.current.forEach((_, id) => {
82
+ if (!rowElements.current.has(id)) rowCallbacks.current.delete(id);
83
+ });
84
+ }, [orderedRowIds, durationMs]);
85
+ return { registerRow, beginExit };
86
+ };
87
+ export {
88
+ useFlipRows
89
+ };
90
+ //# sourceMappingURL=useFlipRows.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useFlipRows.js","sources":["../../../../src/components/UI/DataTable/useFlipRows.ts"],"sourcesContent":["import { useLayoutEffect, useRef } from 'react';\n\nimport { prefersReducedMotion } from './dataTableMotion';\n\nconst FLIP_DURATION_MS = 220;\n\ninterface IPendingRowExit {\n clone: HTMLElement;\n rect: DOMRect;\n cellWidths: Array<number>;\n}\n\n/**\n * Lightweight FLIP animation (Web Animations API, no dependency).\n *\n * `registerRow` returns a stable ref-setter to attach to each animated row,\n * keyed by row id. Rows that change position animate from their previous spot\n * to the new one (First-Last-Invert-Play). Rows that just appeared are shown in\n * place with NO opacity fade (a fade at the top of the list reads as a first-row\n * \"blink\").\n *\n * `beginExit(ids)` supports animated REMOVAL (e.g. collapsing a group): React\n * unmounts rows instantly, which FLIP alone cannot animate: the items would\n * vanish and only then the gap would slide shut. Call it right before the\n * removal commits: it clones the departing rows while they are still in the\n * DOM, and on the next layout pass the clones are overlaid at their exact old\n * position, fading/sliding up while the rows below FLIP into place. The two\n * motions together read as a genuine close animation. Respects\n * `prefers-reduced-motion`.\n */\nexport const useFlipRows = (orderedRowIds: Array<string>, durationMs: number = FLIP_DURATION_MS) => {\n const rowElements = useRef(new Map<string, HTMLElement>());\n const previousRects = useRef(new Map<string, DOMRect>());\n const rowCallbacks = useRef(new Map<string, (element: HTMLElement | null) => void>());\n const pendingExits = useRef<Array<IPendingRowExit>>([]);\n\n // Stable per-id callback so React does not detach/attach every row's ref on\n // each render (which would thrash the element map).\n const registerRow = (id: string) => {\n const existing = rowCallbacks.current.get(id);\n if (existing) return existing;\n\n const callback = (element: HTMLElement | null) => {\n if (element) rowElements.current.set(id, element);\n else rowElements.current.delete(id);\n };\n rowCallbacks.current.set(id, callback);\n\n return callback;\n };\n\n // Clone the departing rows BEFORE React unmounts them (call in the same event\n // that triggers the removal). The clones play on the next layout pass.\n const beginExit = (ids: Array<string>) => {\n if (prefersReducedMotion()) return;\n\n const exits: Array<IPendingRowExit> = [];\n ids.forEach((id) => {\n const element = rowElements.current.get(id);\n if (!element) return;\n\n exits.push({\n clone: element.cloneNode(true) as HTMLElement,\n rect: element.getBoundingClientRect(),\n cellWidths: Array.from(element.children).map((cell) => cell.getBoundingClientRect().width),\n });\n });\n pendingExits.current = exits;\n };\n\n const playExitGhosts = () => {\n const exits = pendingExits.current;\n pendingExits.current = [];\n\n exits.forEach(({ clone, rect, cellWidths }) => {\n // A bare <tr> only renders inside a table; rebuild a minimal fixed-layout\n // table at the row's exact old viewport position, with the original cell\n // widths so the ghost is pixel-identical to the row it replaces.\n const overlay = document.createElement('div');\n overlay.style.cssText = `position:fixed;top:${rect.top}px;left:${rect.left}px;width:${rect.width}px;height:${rect.height}px;overflow:hidden;pointer-events:none;z-index:10;`;\n\n const ghostTable = document.createElement('table');\n ghostTable.style.cssText = `width:${rect.width}px;table-layout:fixed;border-collapse:separate;border-spacing:0;`;\n\n Array.from(clone.children).forEach((cell, index) => {\n (cell as HTMLElement).style.width = `${cellWidths[index]}px`;\n });\n\n const ghostBody = document.createElement('tbody');\n ghostBody.appendChild(clone);\n ghostTable.appendChild(ghostBody);\n overlay.appendChild(ghostTable);\n document.body.appendChild(overlay);\n\n const animation = overlay.animate(\n [\n { opacity: 1, transform: 'none' },\n { opacity: 0, transform: `translateY(-${Math.min(rect.height, 24)}px)` },\n ],\n { duration: durationMs, easing: 'ease' },\n );\n animation.onfinish = () => overlay.remove();\n animation.oncancel = () => overlay.remove();\n });\n };\n\n useLayoutEffect(() => {\n if (prefersReducedMotion()) {\n previousRects.current = new Map();\n rowElements.current.forEach((element, id) => previousRects.current.set(id, element.getBoundingClientRect()));\n return;\n }\n\n playExitGhosts();\n\n const nextRects = new Map<string, DOMRect>();\n\n rowElements.current.forEach((element, id) => {\n const lastRect = element.getBoundingClientRect();\n nextRects.set(id, lastRect);\n\n const firstRect = previousRects.current.get(id);\n // No recorded previous position → the row just appeared. Show it in place,\n // no fade (a fade at the top of the list is the first-row blink).\n if (!firstRect) return;\n\n const deltaY = firstRect.top - lastRect.top;\n if (deltaY === 0) return;\n\n element.animate([{ transform: `translateY(${deltaY}px)` }, { transform: 'none' }], {\n duration: durationMs,\n easing: 'ease',\n });\n });\n\n previousRects.current = nextRects;\n\n // Drop callbacks for rows no longer visible so the map can't grow unbounded.\n rowCallbacks.current.forEach((_, id) => {\n if (!rowElements.current.has(id)) rowCallbacks.current.delete(id);\n });\n // orderedRowIds is the join of ids in order. Re-run whenever it changes.\n }, [orderedRowIds, durationMs]);\n\n return { registerRow, beginExit };\n};\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import { Component, ErrorInfo, ReactNode } from 'react';
2
+ interface IProps {
3
+ children: ReactNode;
4
+ fallback?: ReactNode;
5
+ /** Rendered instead of `fallback` when a dynamic import failed, which means a stale bundle. */
6
+ moduleLoadFallback?: ReactNode;
7
+ /** Notified once per failed dynamic import, so the host can start its update flow. */
8
+ onModuleLoadError?: (error: Error) => void;
9
+ }
10
+ interface IState {
11
+ hasError: boolean;
12
+ error?: Error;
13
+ }
14
+ declare class ErrorBoundary extends Component<IProps, IState> {
15
+ state: IState;
16
+ static getDerivedStateFromError(error: Error): IState;
17
+ componentDidCatch(error: Error, info: ErrorInfo): void;
18
+ render(): string | number | boolean | Iterable<ReactNode> | import("react").JSX.Element | null | undefined;
19
+ }
20
+ export default ErrorBoundary;
@@ -0,0 +1,36 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
4
+ import { jsx } from "react/jsx-runtime";
5
+ import { Component } from "react";
6
+ import { isModuleLoadError } from "../../helpers/moduleLoadErrorHelpers.js";
7
+ import { uiLogger } from "../../helpers/uiLogger.js";
8
+ import ErrorPage from "../Navigation/ErrorPage.js";
9
+ class ErrorBoundary extends Component {
10
+ constructor() {
11
+ super(...arguments);
12
+ __publicField(this, "state", { hasError: false });
13
+ }
14
+ static getDerivedStateFromError(error) {
15
+ return { hasError: true, error };
16
+ }
17
+ componentDidCatch(error, info) {
18
+ if (isModuleLoadError(error)) {
19
+ uiLogger.warn("[ErrorBoundary] Stale bundle: dynamic import failed", error);
20
+ this.props.onModuleLoadError?.(error);
21
+ return;
22
+ }
23
+ uiLogger.error("[ErrorBoundary] Uncaught error:", error, info.componentStack);
24
+ }
25
+ render() {
26
+ if (this.state.hasError) {
27
+ if (isModuleLoadError(this.state.error) && this.props.moduleLoadFallback) return this.props.moduleLoadFallback;
28
+ return this.props.fallback ?? /* @__PURE__ */ jsx(ErrorPage, {});
29
+ }
30
+ return this.props.children;
31
+ }
32
+ }
33
+ export {
34
+ ErrorBoundary as default
35
+ };
36
+ //# sourceMappingURL=ErrorBoundary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ErrorBoundary.js","sources":["../../../src/components/UI/ErrorBoundary.tsx"],"sourcesContent":["import { Component, ErrorInfo, ReactNode } from 'react';\n\nimport { isModuleLoadError } from '@/helpers/moduleLoadErrorHelpers';\nimport { uiLogger } from '@/helpers/uiLogger';\n\nimport ErrorPage from '../Navigation/ErrorPage';\n\ninterface IProps {\n children: ReactNode;\n fallback?: ReactNode;\n /** Rendered instead of `fallback` when a dynamic import failed, which means a stale bundle. */\n moduleLoadFallback?: ReactNode;\n /** Notified once per failed dynamic import, so the host can start its update flow. */\n onModuleLoadError?: (error: Error) => void;\n}\n\ninterface IState {\n hasError: boolean;\n error?: Error;\n}\n\nclass ErrorBoundary extends Component<IProps, IState> {\n public state: IState = { hasError: false };\n\n public static getDerivedStateFromError(error: Error): IState {\n return { hasError: true, error };\n }\n\n public componentDidCatch(error: Error, info: ErrorInfo) {\n if (isModuleLoadError(error)) {\n uiLogger.warn('[ErrorBoundary] Stale bundle: dynamic import failed', error);\n this.props.onModuleLoadError?.(error);\n return;\n }\n uiLogger.error('[ErrorBoundary] Uncaught error:', error, info.componentStack);\n }\n\n public render() {\n if (this.state.hasError) {\n if (isModuleLoadError(this.state.error) && this.props.moduleLoadFallback) return this.props.moduleLoadFallback;\n return this.props.fallback ?? <ErrorPage />;\n }\n return this.props.children;\n }\n}\n\nexport default ErrorBoundary;\n"],"names":[],"mappings":";;;;;;;;AAqBA,MAAM,sBAAsB,UAA0B;AAAA,EAAtD;AAAA;AACS,iCAAgB,EAAE,UAAU,MAAA;AAAA;AAAA,EAEnC,OAAc,yBAAyB,OAAsB;AAC3D,WAAO,EAAE,UAAU,MAAM,MAAA;AAAA,EAC3B;AAAA,EAEO,kBAAkB,OAAc,MAAiB;AACtD,QAAI,kBAAkB,KAAK,GAAG;AAC5B,eAAS,KAAK,uDAAuD,KAAK;AAC1E,WAAK,MAAM,oBAAoB,KAAK;AACpC;AAAA,IACF;AACA,aAAS,MAAM,mCAAmC,OAAO,KAAK,cAAc;AAAA,EAC9E;AAAA,EAEO,SAAS;AACd,QAAI,KAAK,MAAM,UAAU;AACvB,UAAI,kBAAkB,KAAK,MAAM,KAAK,KAAK,KAAK,MAAM,mBAAoB,QAAO,KAAK,MAAM;AAC5F,aAAO,KAAK,MAAM,YAAY,oBAAC,WAAA,CAAA,CAAU;AAAA,IAC3C;AACA,WAAO,KAAK,MAAM;AAAA,EACpB;AACF;"}
@@ -0,0 +1,2 @@
1
+ declare const GeneratedByAI: React.FC;
2
+ export default GeneratedByAI;
@@ -0,0 +1,12 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { useTranslation } from "react-i18next";
3
+ import Sparkles from "../../assets/images/common-pngs/sparkles.png.js";
4
+ import ControlledImage from "../Form/ControlledImage/index.js";
5
+ const GeneratedByAI = () => {
6
+ const { t } = useTranslation("ui");
7
+ return /* @__PURE__ */ jsx(ControlledImage, { src: Sparkles, className: "size-5", tooltip: t("generatedByAI.tooltip") });
8
+ };
9
+ export {
10
+ GeneratedByAI as default
11
+ };
12
+ //# sourceMappingURL=GeneratedByAI.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GeneratedByAI.js","sources":["../../../src/components/UI/GeneratedByAI.tsx"],"sourcesContent":["import { useTranslation } from 'react-i18next';\n\nimport Sparkles from '@/assets/images/common-pngs/sparkles.png';\n\nimport ControlledImage from '../Form/ControlledImage';\n\nconst GeneratedByAI: React.FC = () => {\n const { t } = useTranslation('ui');\n return <ControlledImage src={Sparkles} className=\"size-5\" tooltip={t('generatedByAI.tooltip')} />;\n};\n\nexport default GeneratedByAI;\n"],"names":[],"mappings":";;;;AAMA,MAAM,gBAA0B,MAAM;AACpC,QAAM,EAAE,EAAA,IAAM,eAAe,IAAI;AACjC,SAAO,oBAAC,mBAAgB,KAAK,UAAU,WAAU,UAAS,SAAS,EAAE,uBAAuB,EAAA,CAAG;AACjG;"}
@@ -0,0 +1,22 @@
1
+ interface IHorizontalScrollAreaProps {
2
+ children: React.ReactNode;
3
+ /** Classes for the scrolling strip itself (usually the flex row that holds the items). */
4
+ className?: string;
5
+ /** Classes for the outer positioning wrapper that carries the edge fades. */
6
+ containerClassName?: string;
7
+ /** Names the scrollable region for assistive tech, since it is keyboard focusable. */
8
+ ariaLabel?: string;
9
+ }
10
+ /**
11
+ * A strip that keeps its children on one line and scrolls horizontally when they
12
+ * do not fit, with a fade on whichever edge still has content behind it.
13
+ *
14
+ * This is the house answer to "a row of controls that overflows on a narrow
15
+ * screen" (segmented tabs, bulk actions, filter chips). It exists so those rows
16
+ * do not each grow their own clipping, wrapping or hide-on-mobile behaviour:
17
+ * clipped controls are unreachable, and wrapping a control bar reflows the whole
18
+ * page height. The fades are the only affordance a touch user gets that there is
19
+ * more to the side, so they are part of the primitive rather than a caller's job.
20
+ */
21
+ declare const HorizontalScrollArea: React.FC<IHorizontalScrollAreaProps>;
22
+ export default HorizontalScrollArea;
@@ -0,0 +1,73 @@
1
+ import { jsxs, jsx } from "react/jsx-runtime";
2
+ import { useRef, useState, useCallback, useEffect } from "react";
3
+ import classNames from "classnames";
4
+ const HorizontalScrollArea = ({
5
+ children,
6
+ className,
7
+ containerClassName,
8
+ ariaLabel
9
+ }) => {
10
+ const scrollRef = useRef(null);
11
+ const [canScrollLeft, setCanScrollLeft] = useState(false);
12
+ const [canScrollRight, setCanScrollRight] = useState(false);
13
+ const updateEdges = useCallback(() => {
14
+ const scroller = scrollRef.current;
15
+ if (!scroller) return;
16
+ const maxScrollLeft = scroller.scrollWidth - scroller.clientWidth;
17
+ setCanScrollLeft(scroller.scrollLeft > 1);
18
+ setCanScrollRight(scroller.scrollLeft < maxScrollLeft - 1);
19
+ }, []);
20
+ useEffect(() => {
21
+ const scroller = scrollRef.current;
22
+ if (!scroller) return void 0;
23
+ updateEdges();
24
+ const observer = new ResizeObserver(updateEdges);
25
+ observer.observe(scroller);
26
+ const firstChild = scroller.firstElementChild;
27
+ if (firstChild) observer.observe(firstChild);
28
+ return () => observer.disconnect();
29
+ }, [updateEdges, children]);
30
+ const fadeClass = "pointer-events-none absolute inset-y-0 z-10 w-6 transition-opacity duration-fast";
31
+ return /* @__PURE__ */ jsxs("div", { className: classNames("relative flex min-w-0 max-w-full", containerClassName), children: [
32
+ /* @__PURE__ */ jsx(
33
+ "div",
34
+ {
35
+ "aria-label": ariaLabel,
36
+ ref: scrollRef,
37
+ onScroll: updateEdges,
38
+ tabIndex: canScrollLeft || canScrollRight ? 0 : -1,
39
+ className: classNames(
40
+ "scrollbar-hide min-w-0 max-w-full overflow-x-auto overscroll-x-contain focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-brand-border",
41
+ className
42
+ ),
43
+ children
44
+ }
45
+ ),
46
+ /* @__PURE__ */ jsx(
47
+ "span",
48
+ {
49
+ "aria-hidden": true,
50
+ className: classNames(
51
+ fadeClass,
52
+ "left-0 bg-gradient-to-r from-surface to-transparent",
53
+ canScrollLeft ? "opacity-100" : "opacity-0"
54
+ )
55
+ }
56
+ ),
57
+ /* @__PURE__ */ jsx(
58
+ "span",
59
+ {
60
+ "aria-hidden": true,
61
+ className: classNames(
62
+ fadeClass,
63
+ "right-0 bg-gradient-to-l from-surface to-transparent",
64
+ canScrollRight ? "opacity-100" : "opacity-0"
65
+ )
66
+ }
67
+ )
68
+ ] });
69
+ };
70
+ export {
71
+ HorizontalScrollArea as default
72
+ };
73
+ //# sourceMappingURL=HorizontalScrollArea.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HorizontalScrollArea.js","sources":["../../../src/components/UI/HorizontalScrollArea.tsx"],"sourcesContent":["import { useCallback, useEffect, useRef, useState } from 'react';\nimport classNames from 'classnames';\n\ninterface IHorizontalScrollAreaProps {\n children: React.ReactNode;\n /** Classes for the scrolling strip itself (usually the flex row that holds the items). */\n className?: string;\n /** Classes for the outer positioning wrapper that carries the edge fades. */\n containerClassName?: string;\n /** Names the scrollable region for assistive tech, since it is keyboard focusable. */\n ariaLabel?: string;\n}\n\n/**\n * A strip that keeps its children on one line and scrolls horizontally when they\n * do not fit, with a fade on whichever edge still has content behind it.\n *\n * This is the house answer to \"a row of controls that overflows on a narrow\n * screen\" (segmented tabs, bulk actions, filter chips). It exists so those rows\n * do not each grow their own clipping, wrapping or hide-on-mobile behaviour:\n * clipped controls are unreachable, and wrapping a control bar reflows the whole\n * page height. The fades are the only affordance a touch user gets that there is\n * more to the side, so they are part of the primitive rather than a caller's job.\n */\nconst HorizontalScrollArea: React.FC<IHorizontalScrollAreaProps> = ({\n children,\n className,\n containerClassName,\n ariaLabel,\n}) => {\n const scrollRef = useRef<HTMLDivElement>(null);\n const [canScrollLeft, setCanScrollLeft] = useState(false);\n const [canScrollRight, setCanScrollRight] = useState(false);\n\n const updateEdges = useCallback(() => {\n const scroller = scrollRef.current;\n if (!scroller) return;\n\n const maxScrollLeft = scroller.scrollWidth - scroller.clientWidth;\n setCanScrollLeft(scroller.scrollLeft > 1);\n setCanScrollRight(scroller.scrollLeft < maxScrollLeft - 1);\n }, []);\n\n useEffect(() => {\n const scroller = scrollRef.current;\n if (!scroller) return undefined;\n\n updateEdges();\n\n const observer = new ResizeObserver(updateEdges);\n observer.observe(scroller);\n const firstChild = scroller.firstElementChild;\n if (firstChild) observer.observe(firstChild);\n\n return () => observer.disconnect();\n }, [updateEdges, children]);\n\n const fadeClass = 'pointer-events-none absolute inset-y-0 z-10 w-6 transition-opacity duration-fast';\n\n return (\n <div className={classNames('relative flex min-w-0 max-w-full', containerClassName)}>\n <div\n aria-label={ariaLabel}\n ref={scrollRef}\n onScroll={updateEdges}\n // `tabIndex` keeps an overflowing strip reachable by keyboard: without it a\n // scroll container that holds only non-focusable content cannot be panned.\n tabIndex={canScrollLeft || canScrollRight ? 0 : -1}\n className={classNames(\n 'scrollbar-hide min-w-0 max-w-full overflow-x-auto overscroll-x-contain focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-brand-border',\n className,\n )}\n >\n {children}\n </div>\n\n <span\n aria-hidden\n className={classNames(\n fadeClass,\n 'left-0 bg-gradient-to-r from-surface to-transparent',\n canScrollLeft ? 'opacity-100' : 'opacity-0',\n )}\n />\n <span\n aria-hidden\n className={classNames(\n fadeClass,\n 'right-0 bg-gradient-to-l from-surface to-transparent',\n canScrollRight ? 'opacity-100' : 'opacity-0',\n )}\n />\n </div>\n );\n};\n\nexport default HorizontalScrollArea;\n"],"names":[],"mappings":";;;AAwBA,MAAM,uBAA6D,CAAC;AAAA,EAClE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAM;AACJ,QAAM,YAAY,OAAuB,IAAI;AAC7C,QAAM,CAAC,eAAe,gBAAgB,IAAI,SAAS,KAAK;AACxD,QAAM,CAAC,gBAAgB,iBAAiB,IAAI,SAAS,KAAK;AAE1D,QAAM,cAAc,YAAY,MAAM;AACpC,UAAM,WAAW,UAAU;AAC3B,QAAI,CAAC,SAAU;AAEf,UAAM,gBAAgB,SAAS,cAAc,SAAS;AACtD,qBAAiB,SAAS,aAAa,CAAC;AACxC,sBAAkB,SAAS,aAAa,gBAAgB,CAAC;AAAA,EAC3D,GAAG,CAAA,CAAE;AAEL,YAAU,MAAM;AACd,UAAM,WAAW,UAAU;AAC3B,QAAI,CAAC,SAAU,QAAO;AAEtB,gBAAA;AAEA,UAAM,WAAW,IAAI,eAAe,WAAW;AAC/C,aAAS,QAAQ,QAAQ;AACzB,UAAM,aAAa,SAAS;AAC5B,QAAI,WAAY,UAAS,QAAQ,UAAU;AAE3C,WAAO,MAAM,SAAS,WAAA;AAAA,EACxB,GAAG,CAAC,aAAa,QAAQ,CAAC;AAE1B,QAAM,YAAY;AAElB,8BACG,OAAA,EAAI,WAAW,WAAW,oCAAoC,kBAAkB,GAC/E,UAAA;AAAA,IAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,cAAY;AAAA,QACZ,KAAK;AAAA,QACL,UAAU;AAAA,QAGV,UAAU,iBAAiB,iBAAiB,IAAI;AAAA,QAChD,WAAW;AAAA,UACT;AAAA,UACA;AAAA,QAAA;AAAA,QAGD;AAAA,MAAA;AAAA,IAAA;AAAA,IAGH;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,eAAW;AAAA,QACX,WAAW;AAAA,UACT;AAAA,UACA;AAAA,UACA,gBAAgB,gBAAgB;AAAA,QAAA;AAAA,MAClC;AAAA,IAAA;AAAA,IAEF;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,eAAW;AAAA,QACX,WAAW;AAAA,UACT;AAAA,UACA;AAAA,UACA,iBAAiB,gBAAgB;AAAA,QAAA;AAAA,MACnC;AAAA,IAAA;AAAA,EACF,GACF;AAEJ;"}
@@ -0,0 +1,15 @@
1
+ import { TImageAiAdjuster } from './useImageAiAdjust';
2
+ interface IImageAiAdjustDialogProps {
3
+ open: boolean;
4
+ imageUrl: string;
5
+ imageName?: string;
6
+ /** Opcional: quando existe, a geração fica associada ao produto no criAI. */
7
+ productId?: string;
8
+ /** Runs the generation; the host decides which AI backend serves it. */
9
+ adjustImage: TImageAiAdjuster;
10
+ onClose: () => void;
11
+ /** Recebe a imagem ajustada; resolver fecha o diálogo, lançar mantém aberto. */
12
+ onSave: (file: File) => Promise<void> | void;
13
+ }
14
+ declare const ImageAiAdjustDialog: React.FC<IImageAiAdjustDialogProps>;
15
+ export default ImageAiAdjustDialog;