@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,81 @@
1
+ /**
2
+ * Check if a string is valid JSON
3
+ * @param str - The string to validate
4
+ * @returns True if string is valid JSON, false otherwise
5
+ */
6
+ export declare const isJSON: (str: string) => boolean;
7
+ /**
8
+ * Generate label for action button based on load more state
9
+ * @param canLoadMore - Whether more items can be loaded
10
+ * @param remainingItems - Number of remaining items to load
11
+ * @returns Button label in Portuguese: 'Ver Mais (N)' or 'Ver Menos'
12
+ */
13
+ export declare const getActionButtonLabel: (canLoadMore: boolean, remainingItems: number) => string;
14
+ /**
15
+ * Generate a unique, time-ordered Snowflake ID as a decimal string (safe in JSON).
16
+ * @returns A Snowflake ID string
17
+ */
18
+ export declare const generateUUID: () => string;
19
+ /**
20
+ * Check if an object is empty (has no properties)
21
+ * @param obj - The object to check
22
+ * @returns True if object is empty, false otherwise
23
+ */
24
+ export declare const isEmptyObject: (obj: unknown) => boolean;
25
+ /**
26
+ * Convert rem to px using the live root font-size, so px-only APIs (drawer size props,
27
+ * canvas math) follow the fluid density scale (html font-size clamp).
28
+ * @param rem - Value in rem units
29
+ * @returns Equivalent pixels at the current root font-size
30
+ */
31
+ export declare const remToPx: (rem: number) => number;
32
+ /**
33
+ * Create a delay/sleep function using Promise
34
+ * @param ms - Number of milliseconds to wait
35
+ * @returns Promise that resolves after the specified time
36
+ */
37
+ export declare const sleep: (ms: number) => Promise<unknown>;
38
+ /**
39
+ * Map over items running at most `limit` async tasks concurrently.
40
+ * Never rejects: every item resolves to a PromiseSettledResult so callers can build error summaries.
41
+ * @param items - The items to process
42
+ * @param limit - Maximum number of concurrent tasks
43
+ * @param task - Async function applied to each item
44
+ * @returns Settled results in the original item order
45
+ */
46
+ export declare const mapWithConcurrency: <T, R>(items: ReadonlyArray<T>, limit: number, task: (item: T, index: number) => Promise<R>) => Promise<Array<PromiseSettledResult<R>>>;
47
+ /**
48
+ * Download a file from a Blob object
49
+ * @param blob - The blob data to download
50
+ * @param filename - The name of the file to download
51
+ */
52
+ export declare const downloadFromBlob: (blob: Blob, filename: string) => void;
53
+ /**
54
+ * Handle the complete download process with loading state management
55
+ * @param fetchFunction - Function that returns a Promise<Blob> to fetch the data
56
+ * @param filename - Name of the file to download
57
+ * @param setLoading - Optional function to set the loading state
58
+ * @returns Promise that resolves when the download is complete
59
+ */
60
+ export declare const handleDownload: (fetchFunction: () => Promise<Blob>, filename: string, setLoading?: (isLoading: boolean) => void) => Promise<void>;
61
+ /**
62
+ * Clear all URL parameters from the current location
63
+ * @returns void
64
+ */
65
+ export declare const clearUrlParams: () => void;
66
+ export declare function formatSizesToArray(data: Array<{
67
+ size: string;
68
+ quantity: number;
69
+ }>): Array<{
70
+ [size: string]: number;
71
+ }>;
72
+ /**
73
+ * Runs an async mapper over a list with at most `limit` calls in flight, keeping the
74
+ * result aligned with the input order (same shape as `Promise.allSettled`).
75
+ *
76
+ * `Promise.allSettled(items.map(fetch))` opens EVERY request at once. With a page of
77
+ * records that is already dozens of sockets, and a surface that renders several pages
78
+ * side by side (a kanban board) it multiplies until the browser stalls and the token
79
+ * expires mid-burst, turning the tail of the burst into 401s and refresh storms.
80
+ */
81
+ export declare const settleWithConcurrency: <TItem, TResult>(items: Array<TItem>, limit: number, mapper: (item: TItem, index: number) => Promise<TResult>) => Promise<Array<PromiseSettledResult<TResult>>>;
@@ -0,0 +1,133 @@
1
+ import { uiLogger } from "./uiLogger.js";
2
+ const isJSON = (str) => {
3
+ try {
4
+ JSON.parse(str);
5
+ } catch (e) {
6
+ return false;
7
+ }
8
+ return true;
9
+ };
10
+ const getActionButtonLabel = (canLoadMore, remainingItems) => {
11
+ return canLoadMore ? `Ver Mais (${remainingItems})` : "Ver Menos";
12
+ };
13
+ const EPOCH_MS = 1288834974657n;
14
+ const SEQUENCE_MASK = 0xfffn;
15
+ const NODE_SHIFT = 12n;
16
+ const TIME_SHIFT = 22n;
17
+ let lastTimestamp = -1n;
18
+ let sequence = 0n;
19
+ const nodeId = BigInt(Math.floor(Math.random() * 1024));
20
+ const waitNextMillis = (after) => {
21
+ let t = BigInt(Date.now()) - EPOCH_MS;
22
+ while (t <= after) {
23
+ t = BigInt(Date.now()) - EPOCH_MS;
24
+ }
25
+ return t;
26
+ };
27
+ const generateUUID = () => {
28
+ let timestamp = BigInt(Date.now()) - EPOCH_MS;
29
+ if (timestamp < lastTimestamp) {
30
+ timestamp = waitNextMillis(lastTimestamp);
31
+ }
32
+ if (timestamp === lastTimestamp) {
33
+ sequence = sequence + 1n & SEQUENCE_MASK;
34
+ if (sequence === 0n) {
35
+ timestamp = waitNextMillis(lastTimestamp);
36
+ }
37
+ } else {
38
+ sequence = 0n;
39
+ }
40
+ lastTimestamp = timestamp;
41
+ const id = timestamp << TIME_SHIFT | nodeId << NODE_SHIFT | sequence;
42
+ return id.toString();
43
+ };
44
+ const isEmptyObject = (obj) => typeof obj === "object" && obj !== null && Object.keys(obj).length === 0;
45
+ const remToPx = (rem) => {
46
+ const rootFontSize = Number.parseFloat(getComputedStyle(document.documentElement).fontSize) || 16;
47
+ return Math.round(rem * rootFontSize);
48
+ };
49
+ const sleep = (ms) => {
50
+ return new Promise((resolve) => setTimeout(resolve, ms));
51
+ };
52
+ const mapWithConcurrency = async (items, limit, task) => {
53
+ const results = new Array(items.length);
54
+ let cursor = 0;
55
+ const worker = async () => {
56
+ while (cursor < items.length) {
57
+ const index = cursor;
58
+ cursor += 1;
59
+ try {
60
+ results[index] = { status: "fulfilled", value: await task(items[index], index) };
61
+ } catch (reason) {
62
+ results[index] = { status: "rejected", reason };
63
+ }
64
+ }
65
+ };
66
+ const workerCount = Math.max(1, Math.min(limit, items.length));
67
+ await Promise.all(Array.from({ length: workerCount }, worker));
68
+ return results;
69
+ };
70
+ const downloadFromBlob = (blob, filename) => {
71
+ if (!blob) return;
72
+ const url = window.URL.createObjectURL(blob);
73
+ const a = document.createElement("a");
74
+ a.href = url;
75
+ a.download = filename;
76
+ document.body.appendChild(a);
77
+ a.click();
78
+ a.remove();
79
+ };
80
+ const handleDownload = async (fetchFunction, filename, setLoading) => {
81
+ try {
82
+ setLoading?.(true);
83
+ const blob = await fetchFunction();
84
+ downloadFromBlob(blob, filename);
85
+ } catch (error) {
86
+ uiLogger.error(error);
87
+ } finally {
88
+ setLoading?.(false);
89
+ }
90
+ };
91
+ const clearUrlParams = () => {
92
+ const url = window.location.protocol + "//" + window.location.host + window.location.pathname;
93
+ window.history.pushState({ path: url }, "", url);
94
+ };
95
+ function formatSizesToArray(data) {
96
+ return data.map((item) => ({
97
+ [item.size]: item.quantity
98
+ }));
99
+ }
100
+ const settleWithConcurrency = async (items, limit, mapper) => {
101
+ const safeItems = items ?? [];
102
+ const results = new Array(safeItems.length);
103
+ const maxInFlight = Math.max(1, limit);
104
+ let nextIndex = 0;
105
+ const runWorker = async () => {
106
+ while (nextIndex < safeItems.length) {
107
+ const index = nextIndex;
108
+ nextIndex += 1;
109
+ try {
110
+ results[index] = { status: "fulfilled", value: await mapper(safeItems[index], index) };
111
+ } catch (reason) {
112
+ results[index] = { status: "rejected", reason };
113
+ }
114
+ }
115
+ };
116
+ await Promise.all(Array.from({ length: Math.min(maxInFlight, safeItems.length) }, runWorker));
117
+ return results;
118
+ };
119
+ export {
120
+ clearUrlParams,
121
+ downloadFromBlob,
122
+ formatSizesToArray,
123
+ generateUUID,
124
+ getActionButtonLabel,
125
+ handleDownload,
126
+ isEmptyObject,
127
+ isJSON,
128
+ mapWithConcurrency,
129
+ remToPx,
130
+ settleWithConcurrency,
131
+ sleep
132
+ };
133
+ //# sourceMappingURL=utilityHelpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utilityHelpers.js","sources":["../../src/helpers/utilityHelpers.ts"],"sourcesContent":["import { uiLogger } from './uiLogger';\n\n/**\n * Check if a string is valid JSON\n * @param str - The string to validate\n * @returns True if string is valid JSON, false otherwise\n */\nexport const isJSON = (str: string): boolean => {\n try {\n JSON.parse(str);\n } catch (e) {\n return false;\n }\n return true;\n};\n\n/**\n * Generate label for action button based on load more state\n * @param canLoadMore - Whether more items can be loaded\n * @param remainingItems - Number of remaining items to load\n * @returns Button label in Portuguese: 'Ver Mais (N)' or 'Ver Menos'\n */\nexport const getActionButtonLabel = (canLoadMore: boolean, remainingItems: number) => {\n return canLoadMore ? `Ver Mais (${remainingItems})` : 'Ver Menos';\n};\n\n/** Epoch Twitter Snowflake (ms). IDs como string decimal (seguro em JSON). */\nconst EPOCH_MS = 1288834974657n;\nconst SEQUENCE_MASK = 0xfffn;\nconst NODE_SHIFT = 12n;\nconst TIME_SHIFT = 22n;\n\nlet lastTimestamp = -1n;\nlet sequence = 0n;\nconst nodeId = BigInt(Math.floor(Math.random() * 1024));\n\nconst waitNextMillis = (after: bigint): bigint => {\n let t = BigInt(Date.now()) - EPOCH_MS;\n while (t <= after) {\n t = BigInt(Date.now()) - EPOCH_MS;\n }\n return t;\n};\n\n/**\n * Generate a unique, time-ordered Snowflake ID as a decimal string (safe in JSON).\n * @returns A Snowflake ID string\n */\nexport const generateUUID = (): string => {\n let timestamp = BigInt(Date.now()) - EPOCH_MS;\n\n if (timestamp < lastTimestamp) {\n timestamp = waitNextMillis(lastTimestamp);\n }\n\n if (timestamp === lastTimestamp) {\n sequence = (sequence + 1n) & SEQUENCE_MASK;\n if (sequence === 0n) {\n timestamp = waitNextMillis(lastTimestamp);\n }\n } else {\n sequence = 0n;\n }\n\n lastTimestamp = timestamp;\n const id = (timestamp << TIME_SHIFT) | (nodeId << NODE_SHIFT) | sequence;\n return id.toString();\n};\n\n/**\n * Check if an object is empty (has no properties)\n * @param obj - The object to check\n * @returns True if object is empty, false otherwise\n */\nexport const isEmptyObject = (obj: unknown) => typeof obj === 'object' && obj !== null && Object.keys(obj).length === 0;\n\n/**\n * Convert rem to px using the live root font-size, so px-only APIs (drawer size props,\n * canvas math) follow the fluid density scale (html font-size clamp).\n * @param rem - Value in rem units\n * @returns Equivalent pixels at the current root font-size\n */\nexport const remToPx = (rem: number): number => {\n const rootFontSize = Number.parseFloat(getComputedStyle(document.documentElement).fontSize) || 16;\n return Math.round(rem * rootFontSize);\n};\n\n/**\n * Create a delay/sleep function using Promise\n * @param ms - Number of milliseconds to wait\n * @returns Promise that resolves after the specified time\n */\nexport const sleep = (ms: number) => {\n return new Promise((resolve) => setTimeout(resolve, ms));\n};\n\n/**\n * Map over items running at most `limit` async tasks concurrently.\n * Never rejects: every item resolves to a PromiseSettledResult so callers can build error summaries.\n * @param items - The items to process\n * @param limit - Maximum number of concurrent tasks\n * @param task - Async function applied to each item\n * @returns Settled results in the original item order\n */\nexport const mapWithConcurrency = async <T, R>(\n items: ReadonlyArray<T>,\n limit: number,\n task: (item: T, index: number) => Promise<R>,\n): Promise<Array<PromiseSettledResult<R>>> => {\n const results: Array<PromiseSettledResult<R>> = new Array(items.length);\n let cursor = 0;\n\n const worker = async (): Promise<void> => {\n while (cursor < items.length) {\n const index = cursor;\n cursor += 1;\n try {\n results[index] = { status: 'fulfilled', value: await task(items[index], index) };\n } catch (reason) {\n results[index] = { status: 'rejected', reason };\n }\n }\n };\n\n const workerCount = Math.max(1, Math.min(limit, items.length));\n await Promise.all(Array.from({ length: workerCount }, worker));\n\n return results;\n};\n\n/**\n * Download a file from a Blob object\n * @param blob - The blob data to download\n * @param filename - The name of the file to download\n */\nexport const downloadFromBlob = (blob: Blob, filename: string): void => {\n if (!blob) return;\n\n const url = window.URL.createObjectURL(blob);\n const a = document.createElement('a');\n a.href = url;\n a.download = filename;\n document.body.appendChild(a);\n a.click();\n a.remove();\n};\n\n/**\n * Handle the complete download process with loading state management\n * @param fetchFunction - Function that returns a Promise<Blob> to fetch the data\n * @param filename - Name of the file to download\n * @param setLoading - Optional function to set the loading state\n * @returns Promise that resolves when the download is complete\n */\nexport const handleDownload = async (\n fetchFunction: () => Promise<Blob>,\n filename: string,\n setLoading?: (isLoading: boolean) => void,\n): Promise<void> => {\n try {\n setLoading?.(true);\n const blob = await fetchFunction();\n downloadFromBlob(blob, filename);\n } catch (error) {\n uiLogger.error(error);\n } finally {\n setLoading?.(false);\n }\n};\n\n/**\n * Clear all URL parameters from the current location\n * @returns void\n */\nexport const clearUrlParams = (): void => {\n const url = window.location.protocol + '//' + window.location.host + window.location.pathname;\n window.history.pushState({ path: url }, '', url);\n};\n\nexport function formatSizesToArray(data: Array<{ size: string; quantity: number }>): Array<{ [size: string]: number }> {\n return data.map((item) => ({\n [item.size]: item.quantity,\n }));\n}\n\n/**\n * Runs an async mapper over a list with at most `limit` calls in flight, keeping the\n * result aligned with the input order (same shape as `Promise.allSettled`).\n *\n * `Promise.allSettled(items.map(fetch))` opens EVERY request at once. With a page of\n * records that is already dozens of sockets, and a surface that renders several pages\n * side by side (a kanban board) it multiplies until the browser stalls and the token\n * expires mid-burst, turning the tail of the burst into 401s and refresh storms.\n */\nexport const settleWithConcurrency = async <TItem, TResult>(\n items: Array<TItem>,\n limit: number,\n mapper: (item: TItem, index: number) => Promise<TResult>,\n): Promise<Array<PromiseSettledResult<TResult>>> => {\n const safeItems = items ?? [];\n const results = new Array<PromiseSettledResult<TResult>>(safeItems.length);\n const maxInFlight = Math.max(1, limit);\n let nextIndex = 0;\n\n const runWorker = async (): Promise<void> => {\n while (nextIndex < safeItems.length) {\n const index = nextIndex;\n nextIndex += 1;\n\n try {\n results[index] = { status: 'fulfilled', value: await mapper(safeItems[index], index) };\n } catch (reason) {\n results[index] = { status: 'rejected', reason };\n }\n }\n };\n\n await Promise.all(Array.from({ length: Math.min(maxInFlight, safeItems.length) }, runWorker));\n\n return results;\n};\n"],"names":[],"mappings":";AAOO,MAAM,SAAS,CAAC,QAAyB;AAC9C,MAAI;AACF,SAAK,MAAM,GAAG;AAAA,EAChB,SAAS,GAAG;AACV,WAAO;AAAA,EACT;AACA,SAAO;AACT;AAQO,MAAM,uBAAuB,CAAC,aAAsB,mBAA2B;AACpF,SAAO,cAAc,aAAa,cAAc,MAAM;AACxD;AAGA,MAAM,WAAW;AACjB,MAAM,gBAAgB;AACtB,MAAM,aAAa;AACnB,MAAM,aAAa;AAEnB,IAAI,gBAAgB,CAAC;AACrB,IAAI,WAAW;AACf,MAAM,SAAS,OAAO,KAAK,MAAM,KAAK,OAAA,IAAW,IAAI,CAAC;AAEtD,MAAM,iBAAiB,CAAC,UAA0B;AAChD,MAAI,IAAI,OAAO,KAAK,IAAA,CAAK,IAAI;AAC7B,SAAO,KAAK,OAAO;AACjB,QAAI,OAAO,KAAK,IAAA,CAAK,IAAI;AAAA,EAC3B;AACA,SAAO;AACT;AAMO,MAAM,eAAe,MAAc;AACxC,MAAI,YAAY,OAAO,KAAK,IAAA,CAAK,IAAI;AAErC,MAAI,YAAY,eAAe;AAC7B,gBAAY,eAAe,aAAa;AAAA,EAC1C;AAEA,MAAI,cAAc,eAAe;AAC/B,eAAY,WAAW,KAAM;AAC7B,QAAI,aAAa,IAAI;AACnB,kBAAY,eAAe,aAAa;AAAA,IAC1C;AAAA,EACF,OAAO;AACL,eAAW;AAAA,EACb;AAEA,kBAAgB;AAChB,QAAM,KAAM,aAAa,aAAe,UAAU,aAAc;AAChE,SAAO,GAAG,SAAA;AACZ;AAOO,MAAM,gBAAgB,CAAC,QAAiB,OAAO,QAAQ,YAAY,QAAQ,QAAQ,OAAO,KAAK,GAAG,EAAE,WAAW;AAQ/G,MAAM,UAAU,CAAC,QAAwB;AAC9C,QAAM,eAAe,OAAO,WAAW,iBAAiB,SAAS,eAAe,EAAE,QAAQ,KAAK;AAC/F,SAAO,KAAK,MAAM,MAAM,YAAY;AACtC;AAOO,MAAM,QAAQ,CAAC,OAAe;AACnC,SAAO,IAAI,QAAQ,CAAC,YAAY,WAAW,SAAS,EAAE,CAAC;AACzD;AAUO,MAAM,qBAAqB,OAChC,OACA,OACA,SAC4C;AAC5C,QAAM,UAA0C,IAAI,MAAM,MAAM,MAAM;AACtE,MAAI,SAAS;AAEb,QAAM,SAAS,YAA2B;AACxC,WAAO,SAAS,MAAM,QAAQ;AAC5B,YAAM,QAAQ;AACd,gBAAU;AACV,UAAI;AACF,gBAAQ,KAAK,IAAI,EAAE,QAAQ,aAAa,OAAO,MAAM,KAAK,MAAM,KAAK,GAAG,KAAK,EAAA;AAAA,MAC/E,SAAS,QAAQ;AACf,gBAAQ,KAAK,IAAI,EAAE,QAAQ,YAAY,OAAA;AAAA,MACzC;AAAA,IACF;AAAA,EACF;AAEA,QAAM,cAAc,KAAK,IAAI,GAAG,KAAK,IAAI,OAAO,MAAM,MAAM,CAAC;AAC7D,QAAM,QAAQ,IAAI,MAAM,KAAK,EAAE,QAAQ,eAAe,MAAM,CAAC;AAE7D,SAAO;AACT;AAOO,MAAM,mBAAmB,CAAC,MAAY,aAA2B;AACtE,MAAI,CAAC,KAAM;AAEX,QAAM,MAAM,OAAO,IAAI,gBAAgB,IAAI;AAC3C,QAAM,IAAI,SAAS,cAAc,GAAG;AACpC,IAAE,OAAO;AACT,IAAE,WAAW;AACb,WAAS,KAAK,YAAY,CAAC;AAC3B,IAAE,MAAA;AACF,IAAE,OAAA;AACJ;AASO,MAAM,iBAAiB,OAC5B,eACA,UACA,eACkB;AAClB,MAAI;AACF,iBAAa,IAAI;AACjB,UAAM,OAAO,MAAM,cAAA;AACnB,qBAAiB,MAAM,QAAQ;AAAA,EACjC,SAAS,OAAO;AACd,aAAS,MAAM,KAAK;AAAA,EACtB,UAAA;AACE,iBAAa,KAAK;AAAA,EACpB;AACF;AAMO,MAAM,iBAAiB,MAAY;AACxC,QAAM,MAAM,OAAO,SAAS,WAAW,OAAO,OAAO,SAAS,OAAO,OAAO,SAAS;AACrF,SAAO,QAAQ,UAAU,EAAE,MAAM,IAAA,GAAO,IAAI,GAAG;AACjD;AAEO,SAAS,mBAAmB,MAAoF;AACrH,SAAO,KAAK,IAAI,CAAC,UAAU;AAAA,IACzB,CAAC,KAAK,IAAI,GAAG,KAAK;AAAA,EAAA,EAClB;AACJ;AAWO,MAAM,wBAAwB,OACnC,OACA,OACA,WACkD;AAClD,QAAM,YAAY,SAAS,CAAA;AAC3B,QAAM,UAAU,IAAI,MAAqC,UAAU,MAAM;AACzE,QAAM,cAAc,KAAK,IAAI,GAAG,KAAK;AACrC,MAAI,YAAY;AAEhB,QAAM,YAAY,YAA2B;AAC3C,WAAO,YAAY,UAAU,QAAQ;AACnC,YAAM,QAAQ;AACd,mBAAa;AAEb,UAAI;AACF,gBAAQ,KAAK,IAAI,EAAE,QAAQ,aAAa,OAAO,MAAM,OAAO,UAAU,KAAK,GAAG,KAAK,EAAA;AAAA,MACrF,SAAS,QAAQ;AACf,gBAAQ,KAAK,IAAI,EAAE,QAAQ,YAAY,OAAA;AAAA,MACzC;AAAA,IACF;AAAA,EACF;AAEA,QAAM,QAAQ,IAAI,MAAM,KAAK,EAAE,QAAQ,KAAK,IAAI,aAAa,UAAU,MAAM,EAAA,GAAK,SAAS,CAAC;AAE5F,SAAO;AACT;"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Validate if a string is a valid email format
3
+ * @param email - The email string to validate
4
+ * @returns True if email format is valid, false otherwise
5
+ */
6
+ export declare const validateEmail: (email: string) => boolean;
7
+ /**
8
+ * Validate if a string is an absolute http(s) URL
9
+ * @param url - The URL string to validate
10
+ * @returns True if the URL is absolute and uses http or https, false otherwise
11
+ */
12
+ export declare const validateHttpUrl: (url: string) => boolean;
13
+ export declare const PASSWORD_MIN_LENGTH = 8;
14
+ export declare const PASSWORD_NUMBER_REGEX: RegExp;
15
+ export declare const PASSWORD_SPECIAL_CHAR_REGEX: RegExp;
16
+ export declare const PASSWORD_UPPERCASE_REGEX: RegExp;
17
+ export declare const PASSWORD_LOWERCASE_REGEX: RegExp;
18
+ /**
19
+ * Validate if a password meets security requirements
20
+ * Requires: min 8 chars, uppercase, lowercase, number, special character
21
+ * @param password - The password string to validate
22
+ * @returns True if password meets all requirements, false otherwise
23
+ */
24
+ export declare const validatePassword: (password: string) => boolean;
25
+ /**
26
+ * Check if password is being typed and has invalid requirements
27
+ * Used to show visual feedback when user is typing but password is still invalid
28
+ * @param password - The password string to check
29
+ * @returns True if password has content but doesn't meet all requirements, false otherwise
30
+ */
31
+ export declare const hasPasswordError: (password: string) => boolean;
32
+ /**
33
+ * HTML tooltip description for password requirements
34
+ * Displays the password validation rules in Portuguese
35
+ */
36
+ export declare const tooltipDescription = "\n A senha deve ter: <br />\n - Pelo menos 8 caracteres <br />\n - Pelo menos uma letra mai\u00FAscula <br />\n - Pelo menos uma letra min\u00FAscula <br />\n - Pelo menos um n\u00FAmero <br />\n - Pelo menos um caractere especial (ex: !, @, #, $, ;) <br />\n";
@@ -0,0 +1,44 @@
1
+ const validateEmail = (email) => {
2
+ const regex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
3
+ return regex.test(email);
4
+ };
5
+ const validateHttpUrl = (url) => {
6
+ try {
7
+ const parsed = new URL(String(url ?? "").trim());
8
+ return parsed.protocol === "http:" || parsed.protocol === "https:";
9
+ } catch {
10
+ return false;
11
+ }
12
+ };
13
+ const PASSWORD_MIN_LENGTH = 8;
14
+ const PASSWORD_NUMBER_REGEX = /\d/;
15
+ const PASSWORD_SPECIAL_CHAR_REGEX = /[^A-Za-z0-9\s]/;
16
+ const PASSWORD_UPPERCASE_REGEX = /[A-Z]/;
17
+ const PASSWORD_LOWERCASE_REGEX = /[a-z]/;
18
+ const validatePassword = (password) => {
19
+ return password.length >= PASSWORD_MIN_LENGTH && PASSWORD_NUMBER_REGEX.test(password) && PASSWORD_SPECIAL_CHAR_REGEX.test(password) && PASSWORD_UPPERCASE_REGEX.test(password) && PASSWORD_LOWERCASE_REGEX.test(password);
20
+ };
21
+ const hasPasswordError = (password) => {
22
+ return password.length > 0 && !validatePassword(password);
23
+ };
24
+ const tooltipDescription = `
25
+ A senha deve ter: <br />
26
+ - Pelo menos ${PASSWORD_MIN_LENGTH} caracteres <br />
27
+ - Pelo menos uma letra maiúscula <br />
28
+ - Pelo menos uma letra minúscula <br />
29
+ - Pelo menos um número <br />
30
+ - Pelo menos um caractere especial (ex: !, @, #, $, ;) <br />
31
+ `;
32
+ export {
33
+ PASSWORD_LOWERCASE_REGEX,
34
+ PASSWORD_MIN_LENGTH,
35
+ PASSWORD_NUMBER_REGEX,
36
+ PASSWORD_SPECIAL_CHAR_REGEX,
37
+ PASSWORD_UPPERCASE_REGEX,
38
+ hasPasswordError,
39
+ tooltipDescription,
40
+ validateEmail,
41
+ validateHttpUrl,
42
+ validatePassword
43
+ };
44
+ //# sourceMappingURL=validationHelpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validationHelpers.js","sources":["../../src/helpers/validationHelpers.ts"],"sourcesContent":["/**\n * Validate if a string is a valid email format\n * @param email - The email string to validate\n * @returns True if email format is valid, false otherwise\n */\nexport const validateEmail = (email: string) => {\n const regex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n return regex.test(email);\n};\n\n/**\n * Validate if a string is an absolute http(s) URL\n * @param url - The URL string to validate\n * @returns True if the URL is absolute and uses http or https, false otherwise\n */\nexport const validateHttpUrl = (url: string) => {\n try {\n const parsed = new URL(String(url ?? '').trim());\n\n return parsed.protocol === 'http:' || parsed.protocol === 'https:';\n } catch {\n return false;\n }\n};\n\nexport const PASSWORD_MIN_LENGTH = 8;\nexport const PASSWORD_NUMBER_REGEX = /\\d/;\nexport const PASSWORD_SPECIAL_CHAR_REGEX = /[^A-Za-z0-9\\s]/;\nexport const PASSWORD_UPPERCASE_REGEX = /[A-Z]/;\nexport const PASSWORD_LOWERCASE_REGEX = /[a-z]/;\n\n/**\n * Validate if a password meets security requirements\n * Requires: min 8 chars, uppercase, lowercase, number, special character\n * @param password - The password string to validate\n * @returns True if password meets all requirements, false otherwise\n */\nexport const validatePassword = (password: string) => {\n return (\n password.length >= PASSWORD_MIN_LENGTH &&\n PASSWORD_NUMBER_REGEX.test(password) &&\n PASSWORD_SPECIAL_CHAR_REGEX.test(password) &&\n PASSWORD_UPPERCASE_REGEX.test(password) &&\n PASSWORD_LOWERCASE_REGEX.test(password)\n );\n};\n\n/**\n * Check if password is being typed and has invalid requirements\n * Used to show visual feedback when user is typing but password is still invalid\n * @param password - The password string to check\n * @returns True if password has content but doesn't meet all requirements, false otherwise\n */\nexport const hasPasswordError = (password: string) => {\n return password.length > 0 && !validatePassword(password);\n};\n\n/**\n * HTML tooltip description for password requirements\n * Displays the password validation rules in Portuguese\n */\n// eslint-disable-next-line i18n-check/no-portuguese-strings\nexport const tooltipDescription = `\n A senha deve ter: <br />\n - Pelo menos ${PASSWORD_MIN_LENGTH} caracteres <br />\n - Pelo menos uma letra maiúscula <br />\n - Pelo menos uma letra minúscula <br />\n - Pelo menos um número <br />\n - Pelo menos um caractere especial (ex: !, @, #, $, ;) <br />\n`;\n"],"names":[],"mappings":"AAKO,MAAM,gBAAgB,CAAC,UAAkB;AAC9C,QAAM,QAAQ;AACd,SAAO,MAAM,KAAK,KAAK;AACzB;AAOO,MAAM,kBAAkB,CAAC,QAAgB;AAC9C,MAAI;AACF,UAAM,SAAS,IAAI,IAAI,OAAO,OAAO,EAAE,EAAE,MAAM;AAE/C,WAAO,OAAO,aAAa,WAAW,OAAO,aAAa;AAAA,EAC5D,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAEO,MAAM,sBAAsB;AAC5B,MAAM,wBAAwB;AAC9B,MAAM,8BAA8B;AACpC,MAAM,2BAA2B;AACjC,MAAM,2BAA2B;AAQjC,MAAM,mBAAmB,CAAC,aAAqB;AACpD,SACE,SAAS,UAAU,uBACnB,sBAAsB,KAAK,QAAQ,KACnC,4BAA4B,KAAK,QAAQ,KACzC,yBAAyB,KAAK,QAAQ,KACtC,yBAAyB,KAAK,QAAQ;AAE1C;AAQO,MAAM,mBAAmB,CAAC,aAAqB;AACpD,SAAO,SAAS,SAAS,KAAK,CAAC,iBAAiB,QAAQ;AAC1D;AAOO,MAAM,qBAAqB;AAAA;AAAA,iBAEjB,mBAAmB;AAAA;AAAA;AAAA;AAAA;AAAA;"}
@@ -0,0 +1,22 @@
1
+ export type TFloatingPlacement = 'top' | 'top-start' | 'top-end' | 'right' | 'right-start' | 'right-end' | 'bottom' | 'bottom-start' | 'bottom-end' | 'left' | 'left-start' | 'left-end';
2
+ interface IUseAnchoredFloatingOptions {
3
+ open: boolean;
4
+ placement?: TFloatingPlacement;
5
+ offsetPx?: number;
6
+ /** Sizes the floating element to the reference width (select-style dropdowns). */
7
+ matchReferenceWidth?: boolean;
8
+ /** Caps the floating element to the space left in the viewport. */
9
+ constrainToViewport?: boolean;
10
+ }
11
+ /**
12
+ * Positions a floating element against a reference. `autoUpdate` re-runs on scroll of every
13
+ * ancestor, on resize and on layout shifts, which is what keeps a menu attached to a row
14
+ * inside a scrolling table.
15
+ */
16
+ export declare const useAnchoredFloating: ({ open, placement, offsetPx, matchReferenceWidth, constrainToViewport, }: IUseAnchoredFloatingOptions) => {
17
+ setReference: (node: HTMLElement | null) => void;
18
+ setFloating: (node: HTMLElement | null) => void;
19
+ referenceRef: import('react').MutableRefObject<HTMLElement | null>;
20
+ floatingRef: import('react').MutableRefObject<HTMLElement | null>;
21
+ };
22
+ export {};
@@ -0,0 +1,59 @@
1
+ import { useRef, useCallback, useEffect } from "react";
2
+ import { uiLogger } from "../helpers/uiLogger.js";
3
+ import { autoUpdate, offset, flip, shift, size, computePosition } from "@floating-ui/dom";
4
+ const VIEWPORT_PADDING = 8;
5
+ const useAnchoredFloating = ({
6
+ open,
7
+ placement = "bottom-start",
8
+ offsetPx = 6,
9
+ matchReferenceWidth = false,
10
+ constrainToViewport = true
11
+ }) => {
12
+ const referenceRef = useRef(null);
13
+ const floatingRef = useRef(null);
14
+ const setReference = useCallback((node) => {
15
+ referenceRef.current = node;
16
+ }, []);
17
+ const setFloating = useCallback((node) => {
18
+ floatingRef.current = node;
19
+ }, []);
20
+ useEffect(() => {
21
+ const reference = referenceRef.current;
22
+ const floating = floatingRef.current;
23
+ if (!open || !reference || !floating) return void 0;
24
+ const updatePosition = async () => {
25
+ const middleware = [offset(offsetPx), flip({ padding: VIEWPORT_PADDING }), shift({ padding: VIEWPORT_PADDING })];
26
+ if (matchReferenceWidth || constrainToViewport) {
27
+ middleware.push(
28
+ size({
29
+ padding: VIEWPORT_PADDING,
30
+ apply({ rects, availableHeight, elements }) {
31
+ if (matchReferenceWidth) elements.floating.style.width = `${rects.reference.width}px`;
32
+ if (constrainToViewport) elements.floating.style.maxHeight = `${availableHeight}px`;
33
+ }
34
+ })
35
+ );
36
+ }
37
+ try {
38
+ const { x, y } = await computePosition(reference, floating, {
39
+ placement,
40
+ strategy: "fixed",
41
+ middleware
42
+ });
43
+ floating.style.position = "fixed";
44
+ floating.style.left = `${x}px`;
45
+ floating.style.top = `${y}px`;
46
+ } catch (error) {
47
+ uiLogger.error("useAnchoredFloating: failed to position floating element", error);
48
+ }
49
+ };
50
+ return autoUpdate(reference, floating, () => {
51
+ void updatePosition();
52
+ });
53
+ }, [open, placement, offsetPx, matchReferenceWidth, constrainToViewport]);
54
+ return { setReference, setFloating, referenceRef, floatingRef };
55
+ };
56
+ export {
57
+ useAnchoredFloating
58
+ };
59
+ //# sourceMappingURL=useAnchoredFloating.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useAnchoredFloating.js","sources":["../../src/hooks/useAnchoredFloating.ts"],"sourcesContent":["import { useCallback, useEffect, useRef } from 'react';\n\nimport { uiLogger } from '@/helpers/uiLogger';\nimport { autoUpdate, computePosition, flip, offset, shift, size } from '@floating-ui/dom';\n\nexport type TFloatingPlacement =\n | 'top'\n | 'top-start'\n | 'top-end'\n | 'right'\n | 'right-start'\n | 'right-end'\n | 'bottom'\n | 'bottom-start'\n | 'bottom-end'\n | 'left'\n | 'left-start'\n | 'left-end';\n\nconst VIEWPORT_PADDING = 8;\n\ninterface IUseAnchoredFloatingOptions {\n open: boolean;\n placement?: TFloatingPlacement;\n offsetPx?: number;\n /** Sizes the floating element to the reference width (select-style dropdowns). */\n matchReferenceWidth?: boolean;\n /** Caps the floating element to the space left in the viewport. */\n constrainToViewport?: boolean;\n}\n\n/**\n * Positions a floating element against a reference. `autoUpdate` re-runs on scroll of every\n * ancestor, on resize and on layout shifts, which is what keeps a menu attached to a row\n * inside a scrolling table.\n */\nexport const useAnchoredFloating = ({\n open,\n placement = 'bottom-start',\n offsetPx = 6,\n matchReferenceWidth = false,\n constrainToViewport = true,\n}: IUseAnchoredFloatingOptions) => {\n const referenceRef = useRef<HTMLElement | null>(null);\n const floatingRef = useRef<HTMLElement | null>(null);\n\n const setReference = useCallback((node: HTMLElement | null) => {\n referenceRef.current = node;\n }, []);\n\n const setFloating = useCallback((node: HTMLElement | null) => {\n floatingRef.current = node;\n }, []);\n\n useEffect(() => {\n const reference = referenceRef.current;\n const floating = floatingRef.current;\n if (!open || !reference || !floating) return undefined;\n\n const updatePosition = async () => {\n const middleware = [offset(offsetPx), flip({ padding: VIEWPORT_PADDING }), shift({ padding: VIEWPORT_PADDING })];\n\n if (matchReferenceWidth || constrainToViewport) {\n middleware.push(\n size({\n padding: VIEWPORT_PADDING,\n apply({ rects, availableHeight, elements }) {\n if (matchReferenceWidth) elements.floating.style.width = `${rects.reference.width}px`;\n if (constrainToViewport) elements.floating.style.maxHeight = `${availableHeight}px`;\n },\n }),\n );\n }\n\n try {\n const { x, y } = await computePosition(reference, floating, {\n placement,\n strategy: 'fixed',\n middleware,\n });\n\n floating.style.position = 'fixed';\n floating.style.left = `${x}px`;\n floating.style.top = `${y}px`;\n } catch (error) {\n uiLogger.error('useAnchoredFloating: failed to position floating element', error);\n }\n };\n\n return autoUpdate(reference, floating, () => {\n void updatePosition();\n });\n }, [open, placement, offsetPx, matchReferenceWidth, constrainToViewport]);\n\n return { setReference, setFloating, referenceRef, floatingRef };\n};\n"],"names":[],"mappings":";;;AAmBA,MAAM,mBAAmB;AAiBlB,MAAM,sBAAsB,CAAC;AAAA,EAClC;AAAA,EACA,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,sBAAsB;AAAA,EACtB,sBAAsB;AACxB,MAAmC;AACjC,QAAM,eAAe,OAA2B,IAAI;AACpD,QAAM,cAAc,OAA2B,IAAI;AAEnD,QAAM,eAAe,YAAY,CAAC,SAA6B;AAC7D,iBAAa,UAAU;AAAA,EACzB,GAAG,CAAA,CAAE;AAEL,QAAM,cAAc,YAAY,CAAC,SAA6B;AAC5D,gBAAY,UAAU;AAAA,EACxB,GAAG,CAAA,CAAE;AAEL,YAAU,MAAM;AACd,UAAM,YAAY,aAAa;AAC/B,UAAM,WAAW,YAAY;AAC7B,QAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,SAAU,QAAO;AAE7C,UAAM,iBAAiB,YAAY;AACjC,YAAM,aAAa,CAAC,OAAO,QAAQ,GAAG,KAAK,EAAE,SAAS,iBAAA,CAAkB,GAAG,MAAM,EAAE,SAAS,iBAAA,CAAkB,CAAC;AAE/G,UAAI,uBAAuB,qBAAqB;AAC9C,mBAAW;AAAA,UACT,KAAK;AAAA,YACH,SAAS;AAAA,YACT,MAAM,EAAE,OAAO,iBAAiB,YAAY;AAC1C,kBAAI,8BAA8B,SAAS,MAAM,QAAQ,GAAG,MAAM,UAAU,KAAK;AACjF,kBAAI,oBAAqB,UAAS,SAAS,MAAM,YAAY,GAAG,eAAe;AAAA,YACjF;AAAA,UAAA,CACD;AAAA,QAAA;AAAA,MAEL;AAEA,UAAI;AACF,cAAM,EAAE,GAAG,EAAA,IAAM,MAAM,gBAAgB,WAAW,UAAU;AAAA,UAC1D;AAAA,UACA,UAAU;AAAA,UACV;AAAA,QAAA,CACD;AAED,iBAAS,MAAM,WAAW;AAC1B,iBAAS,MAAM,OAAO,GAAG,CAAC;AAC1B,iBAAS,MAAM,MAAM,GAAG,CAAC;AAAA,MAC3B,SAAS,OAAO;AACd,iBAAS,MAAM,4DAA4D,KAAK;AAAA,MAClF;AAAA,IACF;AAEA,WAAO,WAAW,WAAW,UAAU,MAAM;AAC3C,WAAK,eAAA;AAAA,IACP,CAAC;AAAA,EACH,GAAG,CAAC,MAAM,WAAW,UAAU,qBAAqB,mBAAmB,CAAC;AAExE,SAAO,EAAE,cAAc,aAAa,cAAc,YAAA;AACpD;"}
@@ -0,0 +1,16 @@
1
+ export declare const BREAKPOINTS: {
2
+ readonly tablet: 640;
3
+ readonly laptop: 1024;
4
+ readonly desktop: 1368;
5
+ };
6
+ export type TBreakpoint = 'mobile' | 'tablet' | 'laptop' | 'desktop';
7
+ export interface IBreakpointState {
8
+ width: number;
9
+ breakpoint: TBreakpoint;
10
+ isMobile: boolean;
11
+ isTabletDown: boolean;
12
+ isLaptopDown: boolean;
13
+ isLaptopUp: boolean;
14
+ isDesktopUp: boolean;
15
+ }
16
+ export declare const useBreakpoint: () => IBreakpointState;
@@ -0,0 +1,47 @@
1
+ import { useState, useEffect } from "react";
2
+ const BREAKPOINTS = { tablet: 640, laptop: 1024, desktop: 1368 };
3
+ const getWidth = () => {
4
+ try {
5
+ return window.innerWidth;
6
+ } catch {
7
+ return BREAKPOINTS.desktop;
8
+ }
9
+ };
10
+ const resolveBreakpoint = (width) => {
11
+ if (width >= BREAKPOINTS.desktop) return "desktop";
12
+ if (width >= BREAKPOINTS.laptop) return "laptop";
13
+ if (width >= BREAKPOINTS.tablet) return "tablet";
14
+ return "mobile";
15
+ };
16
+ const useBreakpoint = () => {
17
+ const [width, setWidth] = useState(getWidth);
18
+ useEffect(() => {
19
+ let frame = null;
20
+ const handleResize = () => {
21
+ if (frame !== null) return;
22
+ frame = window.requestAnimationFrame(() => {
23
+ frame = null;
24
+ setWidth(getWidth());
25
+ });
26
+ };
27
+ window.addEventListener("resize", handleResize);
28
+ return () => {
29
+ if (frame !== null) window.cancelAnimationFrame(frame);
30
+ window.removeEventListener("resize", handleResize);
31
+ };
32
+ }, []);
33
+ return {
34
+ width,
35
+ breakpoint: resolveBreakpoint(width),
36
+ isMobile: width < BREAKPOINTS.tablet,
37
+ isTabletDown: width < BREAKPOINTS.laptop,
38
+ isLaptopDown: width < BREAKPOINTS.desktop,
39
+ isLaptopUp: width >= BREAKPOINTS.laptop,
40
+ isDesktopUp: width >= BREAKPOINTS.desktop
41
+ };
42
+ };
43
+ export {
44
+ BREAKPOINTS,
45
+ useBreakpoint
46
+ };
47
+ //# sourceMappingURL=useBreakpoint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useBreakpoint.js","sources":["../../src/hooks/useBreakpoint.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\n\nexport const BREAKPOINTS = { tablet: 640, laptop: 1024, desktop: 1368 } as const;\n\nexport type TBreakpoint = 'mobile' | 'tablet' | 'laptop' | 'desktop';\n\nconst getWidth = (): number => {\n try {\n return window.innerWidth;\n } catch {\n return BREAKPOINTS.desktop;\n }\n};\n\nconst resolveBreakpoint = (width: number): TBreakpoint => {\n if (width >= BREAKPOINTS.desktop) return 'desktop';\n if (width >= BREAKPOINTS.laptop) return 'laptop';\n if (width >= BREAKPOINTS.tablet) return 'tablet';\n return 'mobile';\n};\n\nexport interface IBreakpointState {\n width: number;\n breakpoint: TBreakpoint;\n isMobile: boolean;\n isTabletDown: boolean;\n isLaptopDown: boolean;\n isLaptopUp: boolean;\n isDesktopUp: boolean;\n}\n\nexport const useBreakpoint = (): IBreakpointState => {\n const [width, setWidth] = useState(getWidth);\n\n // Coalesced into one animation frame: a drag-resize fires `resize` dozens of\n // times per second and every consumer of this hook re-renders on each one.\n useEffect(() => {\n let frame: number | null = null;\n\n const handleResize = () => {\n if (frame !== null) return;\n frame = window.requestAnimationFrame(() => {\n frame = null;\n setWidth(getWidth());\n });\n };\n\n window.addEventListener('resize', handleResize);\n return () => {\n if (frame !== null) window.cancelAnimationFrame(frame);\n window.removeEventListener('resize', handleResize);\n };\n }, []);\n\n return {\n width,\n breakpoint: resolveBreakpoint(width),\n isMobile: width < BREAKPOINTS.tablet,\n isTabletDown: width < BREAKPOINTS.laptop,\n isLaptopDown: width < BREAKPOINTS.desktop,\n isLaptopUp: width >= BREAKPOINTS.laptop,\n isDesktopUp: width >= BREAKPOINTS.desktop,\n };\n};\n"],"names":[],"mappings":";AAEO,MAAM,cAAc,EAAE,QAAQ,KAAK,QAAQ,MAAM,SAAS,KAAA;AAIjE,MAAM,WAAW,MAAc;AAC7B,MAAI;AACF,WAAO,OAAO;AAAA,EAChB,QAAQ;AACN,WAAO,YAAY;AAAA,EACrB;AACF;AAEA,MAAM,oBAAoB,CAAC,UAA+B;AACxD,MAAI,SAAS,YAAY,QAAS,QAAO;AACzC,MAAI,SAAS,YAAY,OAAQ,QAAO;AACxC,MAAI,SAAS,YAAY,OAAQ,QAAO;AACxC,SAAO;AACT;AAYO,MAAM,gBAAgB,MAAwB;AACnD,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAS,QAAQ;AAI3C,YAAU,MAAM;AACd,QAAI,QAAuB;AAE3B,UAAM,eAAe,MAAM;AACzB,UAAI,UAAU,KAAM;AACpB,cAAQ,OAAO,sBAAsB,MAAM;AACzC,gBAAQ;AACR,iBAAS,UAAU;AAAA,MACrB,CAAC;AAAA,IACH;AAEA,WAAO,iBAAiB,UAAU,YAAY;AAC9C,WAAO,MAAM;AACX,UAAI,UAAU,KAAM,QAAO,qBAAqB,KAAK;AACrD,aAAO,oBAAoB,UAAU,YAAY;AAAA,IACnD;AAAA,EACF,GAAG,CAAA,CAAE;AAEL,SAAO;AAAA,IACL;AAAA,IACA,YAAY,kBAAkB,KAAK;AAAA,IACnC,UAAU,QAAQ,YAAY;AAAA,IAC9B,cAAc,QAAQ,YAAY;AAAA,IAClC,cAAc,QAAQ,YAAY;AAAA,IAClC,YAAY,SAAS,YAAY;AAAA,IACjC,aAAa,SAAS,YAAY;AAAA,EAAA;AAEtC;"}
@@ -0,0 +1,8 @@
1
+ interface IUseDebounceOptions {
2
+ delay: number;
3
+ }
4
+ export declare const useDebounce: <T extends (...args: Array<unknown>) => unknown>(callback: T, { delay }: IUseDebounceOptions) => {
5
+ debouncedCallback: (...args: Parameters<T>) => void;
6
+ cancel: () => void;
7
+ };
8
+ export {};
@@ -0,0 +1,36 @@
1
+ import { useRef, useCallback, useEffect } from "react";
2
+ const useDebounce = (callback, { delay }) => {
3
+ const timeoutRef = useRef(null);
4
+ const debouncedCallback = useCallback(
5
+ (...args) => {
6
+ if (timeoutRef.current) {
7
+ clearTimeout(timeoutRef.current);
8
+ }
9
+ timeoutRef.current = setTimeout(() => {
10
+ callback(...args);
11
+ }, delay);
12
+ },
13
+ [callback, delay]
14
+ );
15
+ const cancel = useCallback(() => {
16
+ if (timeoutRef.current) {
17
+ clearTimeout(timeoutRef.current);
18
+ timeoutRef.current = null;
19
+ }
20
+ }, []);
21
+ useEffect(() => {
22
+ return () => {
23
+ if (timeoutRef.current) {
24
+ clearTimeout(timeoutRef.current);
25
+ }
26
+ };
27
+ }, []);
28
+ return {
29
+ debouncedCallback,
30
+ cancel
31
+ };
32
+ };
33
+ export {
34
+ useDebounce
35
+ };
36
+ //# sourceMappingURL=useDebounce.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDebounce.js","sources":["../../src/hooks/useDebounce.ts"],"sourcesContent":["import { useCallback, useEffect, useRef } from 'react';\n\ninterface IUseDebounceOptions {\n delay: number;\n}\n\nexport const useDebounce = <T extends (...args: Array<unknown>) => unknown>(\n callback: T,\n { delay }: IUseDebounceOptions,\n) => {\n const timeoutRef = useRef<NodeJS.Timeout | null>(null);\n\n const debouncedCallback = useCallback(\n (...args: Parameters<T>) => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n\n timeoutRef.current = setTimeout(() => {\n callback(...args);\n }, delay);\n },\n [callback, delay],\n );\n\n const cancel = useCallback(() => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n timeoutRef.current = null;\n }\n }, []);\n\n useEffect(() => {\n return () => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n };\n }, []);\n\n return {\n debouncedCallback,\n cancel,\n };\n};\n"],"names":[],"mappings":";AAMO,MAAM,cAAc,CACzB,UACA,EAAE,YACC;AACH,QAAM,aAAa,OAA8B,IAAI;AAErD,QAAM,oBAAoB;AAAA,IACxB,IAAI,SAAwB;AAC1B,UAAI,WAAW,SAAS;AACtB,qBAAa,WAAW,OAAO;AAAA,MACjC;AAEA,iBAAW,UAAU,WAAW,MAAM;AACpC,iBAAS,GAAG,IAAI;AAAA,MAClB,GAAG,KAAK;AAAA,IACV;AAAA,IACA,CAAC,UAAU,KAAK;AAAA,EAAA;AAGlB,QAAM,SAAS,YAAY,MAAM;AAC/B,QAAI,WAAW,SAAS;AACtB,mBAAa,WAAW,OAAO;AAC/B,iBAAW,UAAU;AAAA,IACvB;AAAA,EACF,GAAG,CAAA,CAAE;AAEL,YAAU,MAAM;AACd,WAAO,MAAM;AACX,UAAI,WAAW,SAAS;AACtB,qBAAa,WAAW,OAAO;AAAA,MACjC;AAAA,IACF;AAAA,EACF,GAAG,CAAA,CAAE;AAEL,SAAO;AAAA,IACL;AAAA,IACA;AAAA,EAAA;AAEJ;"}
@@ -0,0 +1,43 @@
1
+ import { IFileAttachment } from '../interfaces/IFileAttachment';
2
+ export type TFileUploader = (file: File, options: {
3
+ signal?: AbortSignal;
4
+ onProgress?: (percentage: number) => void;
5
+ }) => Promise<IFileAttachment>;
6
+ export type TStagedAttachmentStatus = 'uploading' | 'done' | 'error';
7
+ export interface IStagedAttachmentExtras {
8
+ durationMs?: number;
9
+ transcript?: string;
10
+ }
11
+ export interface IStagedAttachment {
12
+ stagingId: string;
13
+ file: File;
14
+ previewUrl: string | null;
15
+ progress: number;
16
+ status: TStagedAttachmentStatus;
17
+ uploaded: IFileAttachment | null;
18
+ extras: IStagedAttachmentExtras;
19
+ }
20
+ export interface IUseFileAttachmentsOptions {
21
+ /** Storage seam: a surface with its own bucket passes its uploader instead of the shared one. */
22
+ uploadFile?: TFileUploader;
23
+ maxFiles?: number;
24
+ maxFileSizeBytes?: number;
25
+ compressImages?: boolean;
26
+ }
27
+ export interface IUseFileAttachmentsResult {
28
+ stagedAttachments: Array<IStagedAttachment>;
29
+ addFiles: (files: Array<File>, extras?: IStagedAttachmentExtras) => Promise<void>;
30
+ removeAttachment: (stagingId: string) => void;
31
+ retryAttachment: (stagingId: string) => void;
32
+ clearAttachments: () => void;
33
+ isUploading: boolean;
34
+ readyAttachments: Array<IFileAttachment>;
35
+ }
36
+ /** The host registers the uploader that backs surfaces without a bucket of their own. */
37
+ export declare const configureSharedFileUploader: (uploader: TFileUploader | null) => void;
38
+ /**
39
+ * Staging area between picking a file and having a stored reference for it: upload progress,
40
+ * cancellation, retry and object-URL lifecycle. Whoever owns the surface decides what to do
41
+ * with `readyAttachments` (send them beside a message, or write them into the body).
42
+ */
43
+ export declare const useFileAttachments: (options?: IUseFileAttachmentsOptions) => IUseFileAttachmentsResult;