@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,72 @@
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
+ import { useState } from "react";
3
+ import classNames from "classnames";
4
+ import { useTranslation } from "react-i18next";
5
+ import ControlledTooltip from "../UI/ControlledTooltip.js";
6
+ import { useNotification } from "../../hooks/useNotification.js";
7
+ import CustomBadge from "../UI/CustomBadge.js";
8
+ import { MaterialSymbol } from "../UI/MaterialSymbol/index.js";
9
+ const SimpleUploaderComponent = ({
10
+ allowedTypes,
11
+ handleFilesSelected,
12
+ multiple = false,
13
+ className
14
+ }) => {
15
+ const { t } = useTranslation("ui");
16
+ const { notify } = useNotification();
17
+ const MAX_FILE_SIZE_MB = 1;
18
+ const MAX_FILE_SIZE_BYTES = MAX_FILE_SIZE_MB * 1024 * 1024;
19
+ const [files, setFiles] = useState([]);
20
+ const handleFiles = (newFiles) => {
21
+ setFiles(newFiles);
22
+ if (!multiple && newFiles.length === 1) {
23
+ handleFilesSelected(newFiles);
24
+ }
25
+ };
26
+ const handleFileChange = (event) => {
27
+ const selectedFiles = event.target.files;
28
+ if (selectedFiles && selectedFiles.length > 0) {
29
+ const newFiles = Array.from(selectedFiles).filter((file) => file.size <= MAX_FILE_SIZE_BYTES);
30
+ if (newFiles.length < selectedFiles.length) {
31
+ notify({
32
+ message: t("uploader.filesIgnoredMaxSize", { size: MAX_FILE_SIZE_MB }),
33
+ type: "error"
34
+ });
35
+ }
36
+ if (newFiles.length > 0) {
37
+ handleFiles(newFiles);
38
+ }
39
+ }
40
+ };
41
+ const tooltipContent = t("uploader.allowedFormatsTooltip", {
42
+ formats: allowedTypes.map((type) => type.startsWith(".") ? type : "." + type.split("/")[1]).join(" "),
43
+ size: MAX_FILE_SIZE_MB
44
+ });
45
+ return /* @__PURE__ */ jsx(CustomBadge, { content: files.length, invisible: files.length === 0, children: /* @__PURE__ */ jsx(ControlledTooltip, { content: tooltipContent, children: /* @__PURE__ */ jsxs(
46
+ "div",
47
+ {
48
+ className: classNames(
49
+ "flex w-10 cursor-pointer items-center justify-center rounded-md border bg-muted p-2 transition-colors duration-slow hover:bg-muted-active",
50
+ className
51
+ ),
52
+ children: [
53
+ /* @__PURE__ */ jsx(
54
+ "input",
55
+ {
56
+ type: "file",
57
+ id: "simple-browse",
58
+ onChange: handleFileChange,
59
+ accept: allowedTypes.join(", "),
60
+ multiple,
61
+ className: "hidden"
62
+ }
63
+ ),
64
+ /* @__PURE__ */ jsx("label", { htmlFor: "simple-browse", className: "flex cursor-pointer items-center justify-center", children: /* @__PURE__ */ jsx(MaterialSymbol, { icon: "attach_file", size: 23, color: "rgb(var(--color-foreground))" }) })
65
+ ]
66
+ }
67
+ ) }) });
68
+ };
69
+ export {
70
+ SimpleUploaderComponent as default
71
+ };
72
+ //# sourceMappingURL=SimpleUploaderComponent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SimpleUploaderComponent.js","sources":["../../../src/components/Upload/SimpleUploaderComponent.tsx"],"sourcesContent":["import { useState } from 'react';\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { useTranslation } from 'react-i18next';\n\nimport ControlledTooltip from '@/components/UI/ControlledTooltip';\n\nimport { useNotification } from '../../hooks/useNotification';\nimport CustomBadge from '../UI/CustomBadge';\nimport { MaterialSymbol } from '../UI/MaterialSymbol';\n\ninterface ISimpleUploaderComponentProps {\n allowedTypes: Array<string>;\n handleFilesSelected: (files: Array<File>) => void;\n multiple?: boolean;\n className?: string;\n}\n\nconst SimpleUploaderComponent: React.FC<ISimpleUploaderComponentProps> = ({\n allowedTypes,\n handleFilesSelected,\n multiple = false,\n className,\n}) => {\n const { t } = useTranslation('ui');\n const { notify } = useNotification();\n\n const MAX_FILE_SIZE_MB = 1;\n const MAX_FILE_SIZE_BYTES = MAX_FILE_SIZE_MB * 1024 * 1024;\n const [files, setFiles] = useState<Array<File>>([]);\n\n const handleFiles = (newFiles: Array<File>) => {\n setFiles(newFiles);\n if (!multiple && newFiles.length === 1) {\n handleFilesSelected(newFiles);\n }\n };\n\n const handleFileChange: React.ChangeEventHandler<HTMLInputElement> = (event) => {\n const selectedFiles = event.target.files;\n if (selectedFiles && selectedFiles.length > 0) {\n const newFiles = Array.from(selectedFiles).filter((file) => file.size <= MAX_FILE_SIZE_BYTES);\n\n if (newFiles.length < selectedFiles.length) {\n notify({\n message: t('uploader.filesIgnoredMaxSize', { size: MAX_FILE_SIZE_MB }),\n type: 'error',\n });\n }\n\n if (newFiles.length > 0) {\n handleFiles(newFiles);\n }\n }\n };\n\n const tooltipContent = t('uploader.allowedFormatsTooltip', {\n formats: allowedTypes.map((type) => (type.startsWith('.') ? type : '.' + type.split('/')[1])).join(' '),\n size: MAX_FILE_SIZE_MB,\n });\n\n return (\n <CustomBadge content={files.length} invisible={files.length === 0}>\n <ControlledTooltip content={tooltipContent}>\n <div\n className={classNames(\n 'flex w-10 cursor-pointer items-center justify-center rounded-md border bg-muted p-2 transition-colors duration-slow hover:bg-muted-active',\n className,\n )}\n >\n <input\n type=\"file\"\n id=\"simple-browse\"\n onChange={handleFileChange}\n accept={allowedTypes.join(', ')}\n multiple={multiple}\n className=\"hidden\"\n />\n <label htmlFor=\"simple-browse\" className=\"flex cursor-pointer items-center justify-center\">\n <MaterialSymbol icon=\"attach_file\" size={23} color=\"rgb(var(--color-foreground))\" />\n </label>\n </div>\n </ControlledTooltip>\n </CustomBadge>\n );\n};\n\nexport default SimpleUploaderComponent;\n"],"names":[],"mappings":";;;;;;;;AAkBA,MAAM,0BAAmE,CAAC;AAAA,EACxE;AAAA,EACA;AAAA,EACA,WAAW;AAAA,EACX;AACF,MAAM;AACJ,QAAM,EAAE,EAAA,IAAM,eAAe,IAAI;AACjC,QAAM,EAAE,OAAA,IAAW,gBAAA;AAEnB,QAAM,mBAAmB;AACzB,QAAM,sBAAsB,mBAAmB,OAAO;AACtD,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAsB,CAAA,CAAE;AAElD,QAAM,cAAc,CAAC,aAA0B;AAC7C,aAAS,QAAQ;AACjB,QAAI,CAAC,YAAY,SAAS,WAAW,GAAG;AACtC,0BAAoB,QAAQ;AAAA,IAC9B;AAAA,EACF;AAEA,QAAM,mBAA+D,CAAC,UAAU;AAC9E,UAAM,gBAAgB,MAAM,OAAO;AACnC,QAAI,iBAAiB,cAAc,SAAS,GAAG;AAC7C,YAAM,WAAW,MAAM,KAAK,aAAa,EAAE,OAAO,CAAC,SAAS,KAAK,QAAQ,mBAAmB;AAE5F,UAAI,SAAS,SAAS,cAAc,QAAQ;AAC1C,eAAO;AAAA,UACL,SAAS,EAAE,gCAAgC,EAAE,MAAM,kBAAkB;AAAA,UACrE,MAAM;AAAA,QAAA,CACP;AAAA,MACH;AAEA,UAAI,SAAS,SAAS,GAAG;AACvB,oBAAY,QAAQ;AAAA,MACtB;AAAA,IACF;AAAA,EACF;AAEA,QAAM,iBAAiB,EAAE,kCAAkC;AAAA,IACzD,SAAS,aAAa,IAAI,CAAC,SAAU,KAAK,WAAW,GAAG,IAAI,OAAO,MAAM,KAAK,MAAM,GAAG,EAAE,CAAC,CAAE,EAAE,KAAK,GAAG;AAAA,IACtG,MAAM;AAAA,EAAA,CACP;AAED,SACE,oBAAC,aAAA,EAAY,SAAS,MAAM,QAAQ,WAAW,MAAM,WAAW,GAC9D,UAAA,oBAAC,mBAAA,EAAkB,SAAS,gBAC1B,UAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MAAA;AAAA,MAGF,UAAA;AAAA,QAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,IAAG;AAAA,YACH,UAAU;AAAA,YACV,QAAQ,aAAa,KAAK,IAAI;AAAA,YAC9B;AAAA,YACA,WAAU;AAAA,UAAA;AAAA,QAAA;AAAA,QAEZ,oBAAC,SAAA,EAAM,SAAQ,iBAAgB,WAAU,mDACvC,UAAA,oBAAC,gBAAA,EAAe,MAAK,eAAc,MAAM,IAAI,OAAM,gCAA+B,EAAA,CACpF;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA,GAEJ,EAAA,CACF;AAEJ;"}
@@ -0,0 +1,29 @@
1
+ import * as React from 'react';
2
+ interface IUploaderComponentProps {
3
+ allowedTypes: Array<string>;
4
+ handleFilesSelected: (files: Array<File>) => void;
5
+ multiple?: boolean;
6
+ className?: string;
7
+ simpleLayout?: boolean;
8
+ maxSizeMB?: number;
9
+ /**
10
+ * When true, valid files are sent immediately via `handleFilesSelected` instead of
11
+ * being staged behind a manual "send" button. Keeps the default behavior elsewhere.
12
+ */
13
+ autoUpload?: boolean;
14
+ /**
15
+ * Visual style of the full dropzone. `'default'` keeps the neutral gray boxed look used
16
+ * across the app; `'borderless'` drops the dashed frame/background and shows only the
17
+ * centered content with the product accent (lilac icon and link, softer typography).
18
+ * For panels where drag/paste already works anywhere and the frame is redundant.
19
+ */
20
+ variant?: 'default' | 'borderless';
21
+ /**
22
+ * When true, the component stops handling its own drag/drop (it still opens the file
23
+ * picker on click and handles paste). Use when a parent container owns drag-and-drop for
24
+ * a larger area and should be the single drop target, avoiding duplicated uploads.
25
+ */
26
+ disableDragDrop?: boolean;
27
+ }
28
+ declare const UploaderComponent: React.FC<IUploaderComponentProps>;
29
+ export default UploaderComponent;
@@ -0,0 +1,241 @@
1
+ import { jsxs, jsx } from "react/jsx-runtime";
2
+ import { useState, useId } from "react";
3
+ import classNames from "classnames";
4
+ import { useTranslation } from "react-i18next";
5
+ import ControlledTooltip from "../UI/ControlledTooltip.js";
6
+ import { useNotification } from "../../hooks/useNotification.js";
7
+ import ControlledButton from "../Form/ControlledButton.js";
8
+ import { MaterialSymbol } from "../UI/MaterialSymbol/index.js";
9
+ const UploaderComponent = ({
10
+ allowedTypes,
11
+ handleFilesSelected,
12
+ multiple = false,
13
+ className,
14
+ simpleLayout = false,
15
+ maxSizeMB = 1,
16
+ autoUpload = false,
17
+ variant = "default",
18
+ disableDragDrop = false
19
+ }) => {
20
+ const { t } = useTranslation("ui");
21
+ const { notify } = useNotification();
22
+ const isBorderless = variant === "borderless";
23
+ const MAX_FILE_SIZE_MB = maxSizeMB;
24
+ const MAX_FILE_SIZE_BYTES = MAX_FILE_SIZE_MB * 1024 * 1024;
25
+ const [files, setFiles] = useState([]);
26
+ const [isDragging, setIsDragging] = useState(false);
27
+ const inputId = useId();
28
+ const matchesAllowedType = (file) => {
29
+ if (allowedTypes.includes(file.type)) return true;
30
+ const extension = "." + (file.name.split(".").pop() ?? "").toLowerCase();
31
+ return allowedTypes.some((type) => type.toLowerCase() === extension);
32
+ };
33
+ const handleFiles = (newFiles) => {
34
+ if (autoUpload) {
35
+ handleFilesSelected(newFiles);
36
+ return;
37
+ }
38
+ setFiles(newFiles);
39
+ if (!multiple && newFiles.length === 1) {
40
+ handleFilesSelected(newFiles);
41
+ }
42
+ };
43
+ const acceptExternalFiles = (candidates) => {
44
+ const typeMatched = candidates.filter(matchesAllowedType);
45
+ const validFiles = typeMatched.filter((file) => file.size <= MAX_FILE_SIZE_BYTES);
46
+ if (validFiles.length < typeMatched.length) {
47
+ notify({ message: t("uploader.filesIgnoredMaxSize", { size: MAX_FILE_SIZE_MB }), type: "error" });
48
+ }
49
+ if (validFiles.length > 0) {
50
+ handleFiles(validFiles);
51
+ } else {
52
+ notify({ message: t("uploader.invalidFormat"), type: "error" });
53
+ }
54
+ };
55
+ const clipboardFiles = (clipboardData) => {
56
+ const fromFiles = Array.from(clipboardData?.files ?? []);
57
+ if (fromFiles.length > 0) return fromFiles;
58
+ return Array.from(clipboardData?.items ?? []).filter((item) => item.kind === "file").map((item) => item.getAsFile()).filter((file) => file !== null);
59
+ };
60
+ const handlePaste = (event) => {
61
+ const pasted = clipboardFiles(event.clipboardData);
62
+ if (pasted.length === 0) return;
63
+ event.preventDefault();
64
+ acceptExternalFiles(pasted);
65
+ };
66
+ const handleDragEnterOrOver = (event) => {
67
+ event.preventDefault();
68
+ if (!isDragging) setIsDragging(true);
69
+ };
70
+ const handleDragLeave = (event) => {
71
+ if (event.currentTarget.contains(event.relatedTarget)) return;
72
+ setIsDragging(false);
73
+ };
74
+ const handleFileChange = (event) => {
75
+ const selectedFiles = event.target.files;
76
+ if (selectedFiles && selectedFiles.length > 0) {
77
+ const newFiles = Array.from(selectedFiles).filter((file) => file.size <= MAX_FILE_SIZE_BYTES);
78
+ if (newFiles.length < selectedFiles.length) {
79
+ notify({
80
+ message: t("uploader.filesIgnoredMaxSize", { size: MAX_FILE_SIZE_MB }),
81
+ type: "error"
82
+ });
83
+ }
84
+ if (newFiles.length > 0) {
85
+ handleFiles(newFiles);
86
+ }
87
+ }
88
+ };
89
+ const handleDrop = (event) => {
90
+ event.preventDefault();
91
+ setIsDragging(false);
92
+ acceptExternalFiles(Array.from(event.dataTransfer.files));
93
+ };
94
+ const handleRemoveFile = (index) => {
95
+ setFiles((prevFiles) => {
96
+ const next = prevFiles.filter((_, i) => i !== index);
97
+ if (!multiple && next.length === 0) {
98
+ handleFilesSelected([]);
99
+ }
100
+ return next;
101
+ });
102
+ };
103
+ if (simpleLayout) {
104
+ return /* @__PURE__ */ jsxs(
105
+ "div",
106
+ {
107
+ tabIndex: 0,
108
+ className: classNames(
109
+ "aspect-square w-[4.5rem] cursor-pointer rounded-lg border-2 border-dashed p-4 transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-brand-border",
110
+ isDragging ? "border-brand bg-brand-soft" : "border-border-strong hover:bg-muted",
111
+ className
112
+ ),
113
+ onDrop: handleDrop,
114
+ onDragEnter: handleDragEnterOrOver,
115
+ onDragOver: handleDragEnterOrOver,
116
+ onDragLeave: handleDragLeave,
117
+ onPaste: handlePaste,
118
+ children: [
119
+ /* @__PURE__ */ jsx(
120
+ "input",
121
+ {
122
+ type: "file",
123
+ id: inputId,
124
+ onChange: handleFileChange,
125
+ accept: allowedTypes.join(", "),
126
+ multiple,
127
+ className: "hidden"
128
+ }
129
+ ),
130
+ /* @__PURE__ */ jsx("label", { htmlFor: inputId, className: "flex size-full cursor-pointer items-center justify-center", children: /* @__PURE__ */ jsx(MaterialSymbol, { icon: "add_photo_alternate", size: 23, color: "rgb(var(--color-foreground-subtle))" }) })
131
+ ]
132
+ }
133
+ );
134
+ }
135
+ return /* @__PURE__ */ jsxs(
136
+ "div",
137
+ {
138
+ tabIndex: 0,
139
+ className: classNames(
140
+ "flex w-full flex-col items-center justify-center rounded-lg transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-brand-border",
141
+ isBorderless ? "py-4" : "border-2 border-dashed px-4 py-8",
142
+ !isBorderless && (isDragging ? "border-brand bg-brand-soft" : "border-border-strong"),
143
+ isBorderless && isDragging && "bg-brand-soft/60",
144
+ className
145
+ ),
146
+ onDrop: disableDragDrop ? void 0 : handleDrop,
147
+ onDragEnter: disableDragDrop ? void 0 : handleDragEnterOrOver,
148
+ onDragOver: disableDragDrop ? void 0 : handleDragEnterOrOver,
149
+ onDragLeave: disableDragDrop ? void 0 : handleDragLeave,
150
+ onPaste: handlePaste,
151
+ children: [
152
+ /* @__PURE__ */ jsxs(
153
+ "div",
154
+ {
155
+ className: classNames(
156
+ "flex flex-col items-center justify-center gap-y-2",
157
+ isBorderless ? "text-foreground-muted" : "text-foreground"
158
+ ),
159
+ children: [
160
+ /* @__PURE__ */ jsx(MaterialSymbol, { icon: "cloud_upload", size: 30, className: isBorderless ? "text-brand-emphasis" : void 0 }),
161
+ /* @__PURE__ */ jsxs(
162
+ "div",
163
+ {
164
+ className: classNames(
165
+ "flex flex-row flex-wrap justify-center gap-x-1",
166
+ isBorderless ? "font-medium" : "font-bold"
167
+ ),
168
+ children: [
169
+ /* @__PURE__ */ jsx(
170
+ "input",
171
+ {
172
+ type: "file",
173
+ id: inputId,
174
+ onChange: handleFileChange,
175
+ accept: allowedTypes.join(", "),
176
+ multiple,
177
+ className: "hidden"
178
+ }
179
+ ),
180
+ /* @__PURE__ */ jsx("span", { children: t("uploader.dragOr") }),
181
+ /* @__PURE__ */ jsx(
182
+ "label",
183
+ {
184
+ htmlFor: inputId,
185
+ className: classNames(
186
+ "cursor-pointer underline underline-offset-2",
187
+ isBorderless ? "font-semibold text-brand-emphasis" : "text-underline"
188
+ ),
189
+ children: t("uploader.selectFile")
190
+ }
191
+ ),
192
+ /* @__PURE__ */ jsx("span", { className: "font-normal text-foreground-subtle", children: t("uploader.orPaste") })
193
+ ]
194
+ }
195
+ ),
196
+ /* @__PURE__ */ jsxs("span", { className: "text-xs", children: [
197
+ t("uploader.allowedFormats"),
198
+ " ",
199
+ allowedTypes.map((type) => type.startsWith(".") ? type : "." + type.split("/")[1]).join(" "),
200
+ " ",
201
+ t("uploader.upTo"),
202
+ " ",
203
+ MAX_FILE_SIZE_MB,
204
+ t("uploader.megabytesSuffix")
205
+ ] })
206
+ ]
207
+ }
208
+ ),
209
+ files.length > 0 && /* @__PURE__ */ jsx("div", { className: "my-5 flex max-h-40 w-full flex-col gap-y-2 overflow-y-scroll", children: files.map((file, index) => /* @__PURE__ */ jsxs(
210
+ "div",
211
+ {
212
+ className: "flex items-center justify-between rounded-lg border border-border-emphasis p-2",
213
+ children: [
214
+ /* @__PURE__ */ jsx("div", { className: "flex flex-1 flex-col gap-1", children: /* @__PURE__ */ jsx("p", { className: "m-0 text-sm text-foreground", children: file.name }) }),
215
+ /* @__PURE__ */ jsx("div", { className: "cursor-pointer", onClick: () => handleRemoveFile(index), children: /* @__PURE__ */ jsx(ControlledTooltip, { content: t("actions.remove"), children: /* @__PURE__ */ jsx(MaterialSymbol, { size: 20, icon: "delete_sweep", color: "rgb(var(--color-danger))" }) }) })
216
+ ]
217
+ },
218
+ `${file.name}-${file.size}-${file.lastModified}`
219
+ )) }),
220
+ files.length > 0 && multiple && /* @__PURE__ */ jsxs(
221
+ ControlledButton,
222
+ {
223
+ variant: "outlined",
224
+ tone: "neutral",
225
+ size: "sm",
226
+ className: "inter-font flex items-center justify-center gap-x-2 rounded-md normal-case text-foreground",
227
+ onClick: () => handleFilesSelected(files),
228
+ children: [
229
+ t("uploader.sendFiles"),
230
+ /* @__PURE__ */ jsx(MaterialSymbol, { icon: "difference", size: 16, color: "rgb(var(--color-foreground))" })
231
+ ]
232
+ }
233
+ )
234
+ ]
235
+ }
236
+ );
237
+ };
238
+ export {
239
+ UploaderComponent as default
240
+ };
241
+ //# sourceMappingURL=UploaderComponent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UploaderComponent.js","sources":["../../../src/components/Upload/UploaderComponent.tsx"],"sourcesContent":["import { useId, useState } from 'react';\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { useTranslation } from 'react-i18next';\n\nimport ControlledTooltip from '@/components/UI/ControlledTooltip';\n\nimport { useNotification } from '../../hooks/useNotification';\nimport ControlledButton from '../Form/ControlledButton';\nimport { MaterialSymbol } from '../UI/MaterialSymbol';\n\ninterface IUploaderComponentProps {\n allowedTypes: Array<string>;\n handleFilesSelected: (files: Array<File>) => void;\n multiple?: boolean;\n className?: string;\n simpleLayout?: boolean;\n maxSizeMB?: number;\n /**\n * When true, valid files are sent immediately via `handleFilesSelected` instead of\n * being staged behind a manual \"send\" button. Keeps the default behavior elsewhere.\n */\n autoUpload?: boolean;\n /**\n * Visual style of the full dropzone. `'default'` keeps the neutral gray boxed look used\n * across the app; `'borderless'` drops the dashed frame/background and shows only the\n * centered content with the product accent (lilac icon and link, softer typography).\n * For panels where drag/paste already works anywhere and the frame is redundant.\n */\n variant?: 'default' | 'borderless';\n /**\n * When true, the component stops handling its own drag/drop (it still opens the file\n * picker on click and handles paste). Use when a parent container owns drag-and-drop for\n * a larger area and should be the single drop target, avoiding duplicated uploads.\n */\n disableDragDrop?: boolean;\n}\n\nconst UploaderComponent: React.FC<IUploaderComponentProps> = ({\n allowedTypes,\n handleFilesSelected,\n multiple = false,\n className,\n simpleLayout = false,\n maxSizeMB = 1,\n autoUpload = false,\n variant = 'default',\n disableDragDrop = false,\n}) => {\n const { t } = useTranslation('ui');\n const { notify } = useNotification();\n const isBorderless = variant === 'borderless';\n\n const MAX_FILE_SIZE_MB = maxSizeMB;\n const MAX_FILE_SIZE_BYTES = MAX_FILE_SIZE_MB * 1024 * 1024;\n const [files, setFiles] = useState<Array<File>>([]);\n const [isDragging, setIsDragging] = useState(false);\n const inputId = useId();\n\n const matchesAllowedType = (file: File): boolean => {\n if (allowedTypes.includes(file.type)) return true;\n const extension = '.' + (file.name.split('.').pop() ?? '').toLowerCase();\n return allowedTypes.some((type) => type.toLowerCase() === extension);\n };\n\n const handleFiles = (newFiles: Array<File>) => {\n if (autoUpload) {\n handleFilesSelected(newFiles);\n return;\n }\n setFiles(newFiles);\n if (!multiple && newFiles.length === 1) {\n handleFilesSelected(newFiles);\n }\n };\n\n const acceptExternalFiles = (candidates: Array<File>) => {\n const typeMatched = candidates.filter(matchesAllowedType);\n const validFiles = typeMatched.filter((file) => file.size <= MAX_FILE_SIZE_BYTES);\n\n if (validFiles.length < typeMatched.length) {\n notify({ message: t('uploader.filesIgnoredMaxSize', { size: MAX_FILE_SIZE_MB }), type: 'error' });\n }\n\n if (validFiles.length > 0) {\n handleFiles(validFiles);\n } else {\n notify({ message: t('uploader.invalidFormat'), type: 'error' });\n }\n };\n\n const clipboardFiles = (clipboardData: DataTransfer | null): Array<File> => {\n const fromFiles = Array.from(clipboardData?.files ?? []);\n if (fromFiles.length > 0) return fromFiles;\n return Array.from(clipboardData?.items ?? [])\n .filter((item) => item.kind === 'file')\n .map((item) => item.getAsFile())\n .filter((file): file is File => file !== null);\n };\n\n const handlePaste: React.ClipboardEventHandler<HTMLDivElement> = (event) => {\n const pasted = clipboardFiles(event.clipboardData);\n if (pasted.length === 0) return;\n event.preventDefault();\n acceptExternalFiles(pasted);\n };\n\n const handleDragEnterOrOver: React.DragEventHandler<HTMLDivElement> = (event) => {\n event.preventDefault();\n if (!isDragging) setIsDragging(true);\n };\n\n const handleDragLeave: React.DragEventHandler<HTMLDivElement> = (event) => {\n if (event.currentTarget.contains(event.relatedTarget as Node | null)) return;\n setIsDragging(false);\n };\n\n const handleFileChange: React.ChangeEventHandler<HTMLInputElement> = (event) => {\n const selectedFiles = event.target.files;\n if (selectedFiles && selectedFiles.length > 0) {\n const newFiles = Array.from(selectedFiles).filter((file) => file.size <= MAX_FILE_SIZE_BYTES);\n\n if (newFiles.length < selectedFiles.length) {\n notify({\n message: t('uploader.filesIgnoredMaxSize', { size: MAX_FILE_SIZE_MB }),\n type: 'error',\n });\n }\n\n if (newFiles.length > 0) {\n handleFiles(newFiles);\n }\n }\n };\n\n const handleDrop: React.DragEventHandler<HTMLDivElement> = (event) => {\n event.preventDefault();\n setIsDragging(false);\n acceptExternalFiles(Array.from(event.dataTransfer.files));\n };\n\n const handleRemoveFile = (index: number) => {\n setFiles((prevFiles) => {\n const next = prevFiles.filter((_, i) => i !== index);\n if (!multiple && next.length === 0) {\n handleFilesSelected([]);\n }\n return next;\n });\n };\n\n if (simpleLayout) {\n return (\n <div\n tabIndex={0}\n className={classNames(\n 'aspect-square w-[4.5rem] cursor-pointer rounded-lg border-2 border-dashed p-4 transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-brand-border',\n isDragging ? 'border-brand bg-brand-soft' : 'border-border-strong hover:bg-muted',\n className,\n )}\n onDrop={handleDrop}\n onDragEnter={handleDragEnterOrOver}\n onDragOver={handleDragEnterOrOver}\n onDragLeave={handleDragLeave}\n onPaste={handlePaste}\n >\n <input\n type=\"file\"\n id={inputId}\n onChange={handleFileChange}\n accept={allowedTypes.join(', ')}\n multiple={multiple}\n className=\"hidden\"\n />\n <label htmlFor={inputId} className=\"flex size-full cursor-pointer items-center justify-center\">\n <MaterialSymbol icon=\"add_photo_alternate\" size={23} color=\"rgb(var(--color-foreground-subtle))\" />\n </label>\n </div>\n );\n }\n\n return (\n <div\n tabIndex={0}\n className={classNames(\n 'flex w-full flex-col items-center justify-center rounded-lg transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-brand-border',\n isBorderless ? 'py-4' : 'border-2 border-dashed px-4 py-8',\n !isBorderless && (isDragging ? 'border-brand bg-brand-soft' : 'border-border-strong'),\n isBorderless && isDragging && 'bg-brand-soft/60',\n className,\n )}\n onDrop={disableDragDrop ? undefined : handleDrop}\n onDragEnter={disableDragDrop ? undefined : handleDragEnterOrOver}\n onDragOver={disableDragDrop ? undefined : handleDragEnterOrOver}\n onDragLeave={disableDragDrop ? undefined : handleDragLeave}\n onPaste={handlePaste}\n >\n <div\n className={classNames(\n 'flex flex-col items-center justify-center gap-y-2',\n isBorderless ? 'text-foreground-muted' : 'text-foreground',\n )}\n >\n {/* Sem `color`: herda o `currentColor` do bloco acima, que já nomeia um token nos dois ramos. */}\n <MaterialSymbol icon=\"cloud_upload\" size={30} className={isBorderless ? 'text-brand-emphasis' : undefined} />\n <div\n className={classNames(\n 'flex flex-row flex-wrap justify-center gap-x-1',\n isBorderless ? 'font-medium' : 'font-bold',\n )}\n >\n <input\n type=\"file\"\n id={inputId}\n onChange={handleFileChange}\n accept={allowedTypes.join(', ')}\n multiple={multiple}\n className=\"hidden\"\n />\n <span>{t('uploader.dragOr')}</span>\n <label\n htmlFor={inputId}\n className={classNames(\n 'cursor-pointer underline underline-offset-2',\n isBorderless ? 'font-semibold text-brand-emphasis' : 'text-underline',\n )}\n >\n {t('uploader.selectFile')}\n </label>\n <span className=\"font-normal text-foreground-subtle\">{t('uploader.orPaste')}</span>\n </div>\n <span className=\"text-xs\">\n {t('uploader.allowedFormats')}{' '}\n {allowedTypes.map((type) => (type.startsWith('.') ? type : '.' + type.split('/')[1])).join(' ')}{' '}\n {t('uploader.upTo')} {MAX_FILE_SIZE_MB}\n {t('uploader.megabytesSuffix')}\n </span>\n </div>\n\n {files.length > 0 && (\n <div className=\"my-5 flex max-h-40 w-full flex-col gap-y-2 overflow-y-scroll\">\n {files.map((file, index) => (\n <div\n className=\"flex items-center justify-between rounded-lg border border-border-emphasis p-2\"\n key={`${file.name}-${file.size}-${file.lastModified}`}\n >\n <div className=\"flex flex-1 flex-col gap-1\">\n <p className=\"m-0 text-sm text-foreground\">{file.name}</p>\n </div>\n <div className=\"cursor-pointer\" onClick={() => handleRemoveFile(index)}>\n <ControlledTooltip content={t('actions.remove')}>\n <MaterialSymbol size={20} icon=\"delete_sweep\" color=\"rgb(var(--color-danger))\" />\n </ControlledTooltip>\n </div>\n </div>\n ))}\n </div>\n )}\n\n {files.length > 0 && multiple && (\n <ControlledButton\n variant=\"outlined\"\n tone=\"neutral\"\n size=\"sm\"\n className=\"inter-font flex items-center justify-center gap-x-2 rounded-md normal-case text-foreground\"\n onClick={() => handleFilesSelected(files)}\n >\n {t('uploader.sendFiles')}\n <MaterialSymbol icon=\"difference\" size={16} color=\"rgb(var(--color-foreground))\" />\n </ControlledButton>\n )}\n </div>\n );\n};\n\nexport default UploaderComponent;\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import * as React from 'react';
2
+ interface IXlsExportButtonProps {
3
+ onClickHook?: () => void;
4
+ fetchFunction?: () => Promise<Blob>;
5
+ filename?: string;
6
+ isLoading?: boolean;
7
+ disabled?: boolean;
8
+ buttonText?: string;
9
+ className?: string;
10
+ tooltipText?: string;
11
+ }
12
+ declare const XlsExportButton: React.FC<IXlsExportButtonProps>;
13
+ export default XlsExportButton;
@@ -0,0 +1,47 @@
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
+ import { useState } from "react";
3
+ import classNames from "classnames";
4
+ import ControlledTooltip from "../UI/ControlledTooltip.js";
5
+ import { handleDownload } from "../../helpers/utilityHelpers.js";
6
+ import ControlledButton from "../Form/ControlledButton.js";
7
+ import LoadingSpinner from "../UI/LoadingSpinner.js";
8
+ import { MaterialSymbol } from "../UI/MaterialSymbol/index.js";
9
+ const XlsExportButton = ({
10
+ onClickHook,
11
+ fetchFunction,
12
+ filename = "export.xls",
13
+ isLoading: externalLoading,
14
+ disabled = false,
15
+ buttonText = "Exportar",
16
+ className,
17
+ tooltipText = "Exportar dados da tabela"
18
+ }) => {
19
+ const [internalLoading, setInternalLoading] = useState(false);
20
+ const isLoading = externalLoading !== void 0 ? externalLoading : internalLoading;
21
+ const handleClick = async () => {
22
+ if (fetchFunction) {
23
+ await handleDownload(fetchFunction, filename, setInternalLoading);
24
+ } else if (onClickHook) {
25
+ onClickHook();
26
+ }
27
+ };
28
+ return /* @__PURE__ */ jsx(ControlledTooltip, { content: tooltipText, children: /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx(
29
+ ControlledButton,
30
+ {
31
+ onClick: handleClick,
32
+ disabled: isLoading || disabled,
33
+ className: classNames(
34
+ "rounded-md border border-border-subtle bg-transparent px-4 py-2 text-sm font-semibold capitalize text-foreground-muted shadow-none hover:bg-muted-hover hover:shadow-none",
35
+ className
36
+ ),
37
+ children: /* @__PURE__ */ jsxs("div", { className: "flex flex-row items-center align-middle", children: [
38
+ isLoading ? /* @__PURE__ */ jsx(LoadingSpinner, { size: 4, color: "foreground" }) : /* @__PURE__ */ jsx(MaterialSymbol, { icon: "download", size: 18 }),
39
+ /* @__PURE__ */ jsx("span", { className: "ml-2", children: buttonText })
40
+ ] })
41
+ }
42
+ ) }) });
43
+ };
44
+ export {
45
+ XlsExportButton as default
46
+ };
47
+ //# sourceMappingURL=XlsExportButton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"XlsExportButton.js","sources":["../../../src/components/Upload/XlsExportButton.tsx"],"sourcesContent":["import { useState } from 'react';\nimport * as React from 'react';\nimport classNames from 'classnames';\n\nimport ControlledTooltip from '@/components/UI/ControlledTooltip';\nimport { handleDownload } from '@/helpers/utilityHelpers';\n\nimport ControlledButton from '../Form/ControlledButton';\nimport LoadingSpinner from '../UI/LoadingSpinner';\nimport { MaterialSymbol } from '../UI/MaterialSymbol';\n\ninterface IXlsExportButtonProps {\n onClickHook?: () => void;\n fetchFunction?: () => Promise<Blob>;\n filename?: string;\n isLoading?: boolean;\n disabled?: boolean;\n buttonText?: string;\n className?: string;\n tooltipText?: string;\n}\n\nconst XlsExportButton: React.FC<IXlsExportButtonProps> = ({\n onClickHook,\n fetchFunction,\n filename = 'export.xls',\n isLoading: externalLoading,\n disabled = false,\n buttonText = 'Exportar',\n className,\n tooltipText = 'Exportar dados da tabela',\n}) => {\n const [internalLoading, setInternalLoading] = useState(false);\n\n const isLoading = externalLoading !== undefined ? externalLoading : internalLoading;\n\n const handleClick = async () => {\n if (fetchFunction) {\n await handleDownload(fetchFunction, filename, setInternalLoading);\n } else if (onClickHook) {\n onClickHook();\n }\n };\n\n return (\n <ControlledTooltip content={tooltipText}>\n <div>\n <ControlledButton\n onClick={handleClick}\n disabled={isLoading || disabled}\n className={classNames(\n 'rounded-md border border-border-subtle bg-transparent px-4 py-2 text-sm font-semibold capitalize text-foreground-muted shadow-none hover:bg-muted-hover hover:shadow-none',\n className,\n )}\n >\n <div className=\"flex flex-row items-center align-middle\">\n {isLoading ? <LoadingSpinner size={4} color=\"foreground\" /> : <MaterialSymbol icon=\"download\" size={18} />}\n <span className=\"ml-2\">{buttonText}</span>\n </div>\n </ControlledButton>\n </div>\n </ControlledTooltip>\n );\n};\n\nexport default XlsExportButton;\n"],"names":[],"mappings":";;;;;;;;AAsBA,MAAM,kBAAmD,CAAC;AAAA,EACxD;AAAA,EACA;AAAA,EACA,WAAW;AAAA,EACX,WAAW;AAAA,EACX,WAAW;AAAA,EACX,aAAa;AAAA,EACb;AAAA,EACA,cAAc;AAChB,MAAM;AACJ,QAAM,CAAC,iBAAiB,kBAAkB,IAAI,SAAS,KAAK;AAE5D,QAAM,YAAY,oBAAoB,SAAY,kBAAkB;AAEpE,QAAM,cAAc,YAAY;AAC9B,QAAI,eAAe;AACjB,YAAM,eAAe,eAAe,UAAU,kBAAkB;AAAA,IAClE,WAAW,aAAa;AACtB,kBAAA;AAAA,IACF;AAAA,EACF;AAEA,SACE,oBAAC,mBAAA,EAAkB,SAAS,aAC1B,8BAAC,OAAA,EACC,UAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,SAAS;AAAA,MACT,UAAU,aAAa;AAAA,MACvB,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MAAA;AAAA,MAGF,UAAA,qBAAC,OAAA,EAAI,WAAU,2CACZ,UAAA;AAAA,QAAA,YAAY,oBAAC,gBAAA,EAAe,MAAM,GAAG,OAAM,aAAA,CAAa,IAAK,oBAAC,gBAAA,EAAe,MAAK,YAAW,MAAM,IAAI;AAAA,QACxG,oBAAC,QAAA,EAAK,WAAU,QAAQ,UAAA,WAAA,CAAW;AAAA,MAAA,EAAA,CACrC;AAAA,IAAA;AAAA,EAAA,GAEJ,EAAA,CACF;AAEJ;"}
@@ -0,0 +1,7 @@
1
+ import { Ref } from 'react';
2
+ /**
3
+ * Applies one node to several refs. Floating surfaces need this: the handler registers the
4
+ * node as the positioning reference while an outer wrapper (a tooltip on the same trigger)
5
+ * registers it as its own reference, and a plain clone would silently drop one of them.
6
+ */
7
+ export declare const composeRefs: <T>(...refs: Array<Ref<T> | undefined>) => (node: T | null) => void;
@@ -0,0 +1,14 @@
1
+ const composeRefs = (...refs) => (node) => {
2
+ refs.forEach((ref) => {
3
+ if (!ref) return;
4
+ if (typeof ref === "function") {
5
+ ref(node);
6
+ return;
7
+ }
8
+ ref.current = node;
9
+ });
10
+ };
11
+ export {
12
+ composeRefs
13
+ };
14
+ //# sourceMappingURL=composeRefs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"composeRefs.js","sources":["../../src/helpers/composeRefs.ts"],"sourcesContent":["import type { MutableRefObject, Ref } from 'react';\n\n/**\n * Applies one node to several refs. Floating surfaces need this: the handler registers the\n * node as the positioning reference while an outer wrapper (a tooltip on the same trigger)\n * registers it as its own reference, and a plain clone would silently drop one of them.\n */\nexport const composeRefs =\n <T>(...refs: Array<Ref<T> | undefined>) =>\n (node: T | null): void => {\n refs.forEach((ref) => {\n if (!ref) return;\n if (typeof ref === 'function') {\n ref(node);\n return;\n }\n (ref as MutableRefObject<T | null>).current = node;\n });\n };\n"],"names":[],"mappings":"AAOO,MAAM,cACX,IAAO,SACP,CAAC,SAAyB;AACxB,OAAK,QAAQ,CAAC,QAAQ;AACpB,QAAI,CAAC,IAAK;AACV,QAAI,OAAO,QAAQ,YAAY;AAC7B,UAAI,IAAI;AACR;AAAA,IACF;AACC,QAAmC,UAAU;AAAA,EAChD,CAAC;AACH;"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Get the month name in Portuguese from a Date object
3
+ * @param date - The date object to extract the month name from
4
+ * @returns Capitalized month name in Portuguese
5
+ */
6
+ export declare const getMonthName: (date: Date) => string;
7
+ /**
8
+ * Format a Date object as DD/MM/YYYY string
9
+ * @param date - The date object to format
10
+ * @returns Formatted date string in DD/MM/YYYY format or '-' if invalid
11
+ */
12
+ export declare const formatDate: (date: Date) => string;
13
+ /**
14
+ * Format a Date object as simple date with abbreviated month in Portuguese
15
+ * @param date - The date object to format
16
+ * @returns Formatted date string like "15 Jan"
17
+ */
18
+ export declare const formatSimpleDate: (date: Date) => string;
19
+ /**
20
+ * Format an ISO date string as DD/MM/YYYY
21
+ * @param raw - ISO date string ('YYYY-MM-DD' or 'YYYY-MM-DDTHH:mm...')
22
+ * @returns Formatted date string in DD/MM/YYYY format, or the input unchanged if not parseable
23
+ */
24
+ export declare const formatIsoDate: (raw: string) => string;
25
+ /**
26
+ * Get current timestamp in local timezone as ISO-like string
27
+ * @returns Local timestamp string in format "YYYY-MM-DDTHH:MM:SS"
28
+ */
29
+ export declare const getLocalTimestamp: () => string;
30
+ /**
31
+ * Format an ISO timestamp string to DD/MM/YYYY HH:MM format
32
+ * @param input - ISO timestamp string (e.g., "2023-12-15T14:30:00")
33
+ * @returns Formatted timestamp string in DD/MM/YYYY HH:MM format
34
+ */
35
+ export declare const formatTimeStamps: (input: string) => string;
36
+ /**
37
+ * Format a Date object as a full date label in Portuguese
38
+ * @param date - The date object to format
39
+ * @returns Full date string like "segunda-feira, 15 de janeiro de 2024"
40
+ */
41
+ export declare const getFormatedDateLabel: (date: Date) => string;
42
+ /**
43
+ * Calculate and format duration from milliseconds to days
44
+ * @param duration - Duration in milliseconds
45
+ * @returns Formatted duration string like "5 dia(s)" or "Indisponível"
46
+ */
47
+ export declare const calculateDuration: (duration: number) => string;
@@ -0,0 +1,69 @@
1
+ const getMonthName = (date) => {
2
+ return capitalize(Intl.DateTimeFormat("pt-BR", { month: "long" }).format(date));
3
+ };
4
+ const formatDate = (date) => {
5
+ if (!(date instanceof Date) || isNaN(date.getTime())) {
6
+ return "-";
7
+ }
8
+ const day = String(date.getUTCDate()).padStart(2, "0");
9
+ const month = String(date.getUTCMonth() + 1).padStart(2, "0");
10
+ const year = date.getUTCFullYear();
11
+ return `${day}/${month}/${year}`;
12
+ };
13
+ const formatSimpleDate = (date) => {
14
+ return new Intl.DateTimeFormat("pt-BR", {
15
+ day: "2-digit",
16
+ month: "short",
17
+ timeZone: "UTC"
18
+ }).format(date);
19
+ };
20
+ const formatIsoDate = (raw) => {
21
+ const [year, month, day] = raw.slice(0, 10).split("-");
22
+ return year && month && day ? `${day}/${month}/${year}` : raw;
23
+ };
24
+ const getLocalTimestamp = () => {
25
+ const now = /* @__PURE__ */ new Date();
26
+ const year = now.getFullYear();
27
+ const month = String(now.getMonth() + 1).padStart(2, "0");
28
+ const day = String(now.getDate()).padStart(2, "0");
29
+ const hours = String(now.getHours()).padStart(2, "0");
30
+ const minutes = String(now.getMinutes()).padStart(2, "0");
31
+ const seconds = String(now.getSeconds()).padStart(2, "0");
32
+ return `${year}-${month}-${day}T${hours}:${minutes}:${seconds}`;
33
+ };
34
+ const formatTimeStamps = (input) => {
35
+ const [datePart, timePart] = input?.split("T") ?? [];
36
+ if (!datePart || !timePart) return "-";
37
+ const [year, month, day] = datePart.split("-").map(Number);
38
+ const [hour, minute] = timePart.split(":").map(Number);
39
+ return `${day.toString().padStart(2, "0")}/${month.toString().padStart(2, "0")}/${year} ${hour.toString().padStart(2, "0")}:${minute.toString().padStart(2, "0")}`;
40
+ };
41
+ const getFormatedDateLabel = (date) => {
42
+ const options = {
43
+ weekday: "long",
44
+ day: "numeric",
45
+ month: "long",
46
+ year: "numeric"
47
+ };
48
+ return new Intl.DateTimeFormat("pt-BR", options).format(date);
49
+ };
50
+ const calculateDuration = (duration) => {
51
+ if (!duration) return "Indisponível";
52
+ const durationInDays = Math.ceil(duration / (1e3 * 60 * 60 * 24));
53
+ return `${durationInDays} dia(s)`;
54
+ };
55
+ const capitalize = (str) => {
56
+ if (!str || typeof str !== "string") return "";
57
+ return str.charAt(0).toUpperCase() + str.slice(1).toLowerCase();
58
+ };
59
+ export {
60
+ calculateDuration,
61
+ formatDate,
62
+ formatIsoDate,
63
+ formatSimpleDate,
64
+ formatTimeStamps,
65
+ getFormatedDateLabel,
66
+ getLocalTimestamp,
67
+ getMonthName
68
+ };
69
+ //# sourceMappingURL=dateHelpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dateHelpers.js","sources":["../../src/helpers/dateHelpers.ts"],"sourcesContent":["/**\n * Get the month name in Portuguese from a Date object\n * @param date - The date object to extract the month name from\n * @returns Capitalized month name in Portuguese\n */\nexport const getMonthName = (date: Date) => {\n return capitalize(Intl.DateTimeFormat('pt-BR', { month: 'long' }).format(date));\n};\n\n/**\n * Format a Date object as DD/MM/YYYY string\n * @param date - The date object to format\n * @returns Formatted date string in DD/MM/YYYY format or '-' if invalid\n */\nexport const formatDate = (date: Date) => {\n if (!(date instanceof Date) || isNaN(date.getTime())) {\n return '-';\n }\n\n const day = String(date.getUTCDate()).padStart(2, '0');\n const month = String(date.getUTCMonth() + 1).padStart(2, '0');\n const year = date.getUTCFullYear();\n return `${day}/${month}/${year}`;\n};\n\n/**\n * Format a Date object as simple date with abbreviated month in Portuguese\n * @param date - The date object to format\n * @returns Formatted date string like \"15 Jan\"\n */\nexport const formatSimpleDate = (date: Date) => {\n return new Intl.DateTimeFormat('pt-BR', {\n day: '2-digit',\n month: 'short',\n timeZone: 'UTC',\n }).format(date);\n};\n\n/**\n * Format an ISO date string as DD/MM/YYYY\n * @param raw - ISO date string ('YYYY-MM-DD' or 'YYYY-MM-DDTHH:mm...')\n * @returns Formatted date string in DD/MM/YYYY format, or the input unchanged if not parseable\n */\nexport const formatIsoDate = (raw: string): string => {\n const [year, month, day] = raw.slice(0, 10).split('-');\n return year && month && day ? `${day}/${month}/${year}` : raw;\n};\n\n/**\n * Get current timestamp in local timezone as ISO-like string\n * @returns Local timestamp string in format \"YYYY-MM-DDTHH:MM:SS\"\n */\nexport const getLocalTimestamp = (): string => {\n const now = new Date();\n const year = now.getFullYear();\n const month = String(now.getMonth() + 1).padStart(2, '0');\n const day = String(now.getDate()).padStart(2, '0');\n const hours = String(now.getHours()).padStart(2, '0');\n const minutes = String(now.getMinutes()).padStart(2, '0');\n const seconds = String(now.getSeconds()).padStart(2, '0');\n return `${year}-${month}-${day}T${hours}:${minutes}:${seconds}`;\n};\n\n/**\n * Format an ISO timestamp string to DD/MM/YYYY HH:MM format\n * @param input - ISO timestamp string (e.g., \"2023-12-15T14:30:00\")\n * @returns Formatted timestamp string in DD/MM/YYYY HH:MM format\n */\nexport const formatTimeStamps = (input: string): string => {\n const [datePart, timePart] = input?.split('T') ?? [];\n if (!datePart || !timePart) return '-';\n\n const [year, month, day] = datePart.split('-').map(Number);\n const [hour, minute] = timePart.split(':').map(Number);\n\n return `${day.toString().padStart(2, '0')}/${month.toString().padStart(2, '0')}/${year} ${hour.toString().padStart(2, '0')}:${minute.toString().padStart(2, '0')}`;\n};\n\n/**\n * Format a Date object as a full date label in Portuguese\n * @param date - The date object to format\n * @returns Full date string like \"segunda-feira, 15 de janeiro de 2024\"\n */\nexport const getFormatedDateLabel = (date: Date) => {\n const options: Intl.DateTimeFormatOptions = {\n weekday: 'long',\n day: 'numeric',\n month: 'long',\n year: 'numeric',\n };\n\n return new Intl.DateTimeFormat('pt-BR', options).format(date);\n};\n\n/**\n * Calculate and format duration from milliseconds to days\n * @param duration - Duration in milliseconds\n * @returns Formatted duration string like \"5 dia(s)\" or \"Indisponível\"\n */\nexport const calculateDuration = (duration: number) => {\n // eslint-disable-next-line i18n-check/no-portuguese-strings\n if (!duration) return 'Indisponível';\n\n const durationInDays = Math.ceil(duration / (1000 * 60 * 60 * 24));\n\n return `${durationInDays} dia(s)`;\n};\n\n/**\n * Capitalize the first letter of a string and lowercase the rest\n * @param str - The string to capitalize\n * @returns Capitalized string or empty string if invalid input\n */\nconst capitalize = (str?: string) => {\n if (!str || typeof str !== 'string') return '';\n return str.charAt(0).toUpperCase() + str.slice(1).toLowerCase();\n};\n"],"names":[],"mappings":"AAKO,MAAM,eAAe,CAAC,SAAe;AAC1C,SAAO,WAAW,KAAK,eAAe,SAAS,EAAE,OAAO,QAAQ,EAAE,OAAO,IAAI,CAAC;AAChF;AAOO,MAAM,aAAa,CAAC,SAAe;AACxC,MAAI,EAAE,gBAAgB,SAAS,MAAM,KAAK,QAAA,CAAS,GAAG;AACpD,WAAO;AAAA,EACT;AAEA,QAAM,MAAM,OAAO,KAAK,WAAA,CAAY,EAAE,SAAS,GAAG,GAAG;AACrD,QAAM,QAAQ,OAAO,KAAK,YAAA,IAAgB,CAAC,EAAE,SAAS,GAAG,GAAG;AAC5D,QAAM,OAAO,KAAK,eAAA;AAClB,SAAO,GAAG,GAAG,IAAI,KAAK,IAAI,IAAI;AAChC;AAOO,MAAM,mBAAmB,CAAC,SAAe;AAC9C,SAAO,IAAI,KAAK,eAAe,SAAS;AAAA,IACtC,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,EAAA,CACX,EAAE,OAAO,IAAI;AAChB;AAOO,MAAM,gBAAgB,CAAC,QAAwB;AACpD,QAAM,CAAC,MAAM,OAAO,GAAG,IAAI,IAAI,MAAM,GAAG,EAAE,EAAE,MAAM,GAAG;AACrD,SAAO,QAAQ,SAAS,MAAM,GAAG,GAAG,IAAI,KAAK,IAAI,IAAI,KAAK;AAC5D;AAMO,MAAM,oBAAoB,MAAc;AAC7C,QAAM,0BAAU,KAAA;AAChB,QAAM,OAAO,IAAI,YAAA;AACjB,QAAM,QAAQ,OAAO,IAAI,SAAA,IAAa,CAAC,EAAE,SAAS,GAAG,GAAG;AACxD,QAAM,MAAM,OAAO,IAAI,QAAA,CAAS,EAAE,SAAS,GAAG,GAAG;AACjD,QAAM,QAAQ,OAAO,IAAI,SAAA,CAAU,EAAE,SAAS,GAAG,GAAG;AACpD,QAAM,UAAU,OAAO,IAAI,WAAA,CAAY,EAAE,SAAS,GAAG,GAAG;AACxD,QAAM,UAAU,OAAO,IAAI,WAAA,CAAY,EAAE,SAAS,GAAG,GAAG;AACxD,SAAO,GAAG,IAAI,IAAI,KAAK,IAAI,GAAG,IAAI,KAAK,IAAI,OAAO,IAAI,OAAO;AAC/D;AAOO,MAAM,mBAAmB,CAAC,UAA0B;AACzD,QAAM,CAAC,UAAU,QAAQ,IAAI,OAAO,MAAM,GAAG,KAAK,CAAA;AAClD,MAAI,CAAC,YAAY,CAAC,SAAU,QAAO;AAEnC,QAAM,CAAC,MAAM,OAAO,GAAG,IAAI,SAAS,MAAM,GAAG,EAAE,IAAI,MAAM;AACzD,QAAM,CAAC,MAAM,MAAM,IAAI,SAAS,MAAM,GAAG,EAAE,IAAI,MAAM;AAErD,SAAO,GAAG,IAAI,SAAA,EAAW,SAAS,GAAG,GAAG,CAAC,IAAI,MAAM,SAAA,EAAW,SAAS,GAAG,GAAG,CAAC,IAAI,IAAI,IAAI,KAAK,SAAA,EAAW,SAAS,GAAG,GAAG,CAAC,IAAI,OAAO,SAAA,EAAW,SAAS,GAAG,GAAG,CAAC;AAClK;AAOO,MAAM,uBAAuB,CAAC,SAAe;AAClD,QAAM,UAAsC;AAAA,IAC1C,SAAS;AAAA,IACT,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,EAAA;AAGR,SAAO,IAAI,KAAK,eAAe,SAAS,OAAO,EAAE,OAAO,IAAI;AAC9D;AAOO,MAAM,oBAAoB,CAAC,aAAqB;AAErD,MAAI,CAAC,SAAU,QAAO;AAEtB,QAAM,iBAAiB,KAAK,KAAK,YAAY,MAAO,KAAK,KAAK,GAAG;AAEjE,SAAO,GAAG,cAAc;AAC1B;AAOA,MAAM,aAAa,CAAC,QAAiB;AACnC,MAAI,CAAC,OAAO,OAAO,QAAQ,SAAU,QAAO;AAC5C,SAAO,IAAI,OAAO,CAAC,EAAE,gBAAgB,IAAI,MAAM,CAAC,EAAE,YAAA;AACpD;"}
@@ -0,0 +1,3 @@
1
+ import { SymbolCodepoints } from '../components/UI/MaterialSymbol';
2
+ export declare const formatFileSize: (sizeInBytes: number) => string;
3
+ export declare const iconForMimeType: (mimeType: string) => SymbolCodepoints;
@@ -0,0 +1,17 @@
1
+ const formatFileSize = (sizeInBytes) => {
2
+ if (!Number.isFinite(sizeInBytes) || sizeInBytes <= 0) return "0 KB";
3
+ if (sizeInBytes < 1024 * 1024) return `${Math.max(1, Math.round(sizeInBytes / 1024))} KB`;
4
+ return `${(sizeInBytes / (1024 * 1024)).toFixed(1)} MB`;
5
+ };
6
+ const iconForMimeType = (mimeType) => {
7
+ if ((mimeType ?? "").startsWith("image/")) return "image";
8
+ if ((mimeType ?? "").startsWith("audio/")) return "mic";
9
+ if ((mimeType ?? "").startsWith("video/")) return "videocam";
10
+ if (mimeType === "application/pdf") return "picture_as_pdf";
11
+ return "description";
12
+ };
13
+ export {
14
+ formatFileSize,
15
+ iconForMimeType
16
+ };
17
+ //# sourceMappingURL=fileAttachments.js.map