@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,158 @@
1
+ import { useState, useRef, useEffect, useCallback, useMemo } from "react";
2
+ import { useTranslation } from "react-i18next";
3
+ import { uiLogger } from "../helpers/uiLogger.js";
4
+ import { generateUUID } from "../helpers/utilityHelpers.js";
5
+ import { useNotification } from "./useNotification.js";
6
+ import { compressImageFile } from "../helpers/imageCompression.js";
7
+ const DEFAULT_MAX_FILES = 10;
8
+ const DEFAULT_MAX_FILE_SIZE_BYTES = 50 * 1024 * 1024;
9
+ const previewUrlFor = (file) => {
10
+ if (file.type.startsWith("image/") || file.type.startsWith("video/")) return URL.createObjectURL(file);
11
+ return null;
12
+ };
13
+ let sharedUploader = null;
14
+ const configureSharedFileUploader = (uploader) => {
15
+ sharedUploader = uploader;
16
+ };
17
+ const defaultUploader = (file, options) => {
18
+ if (!sharedUploader) throw new Error("No shared file uploader configured");
19
+ return sharedUploader(file, options);
20
+ };
21
+ const useFileAttachments = (options = {}) => {
22
+ const {
23
+ uploadFile = defaultUploader,
24
+ maxFiles = DEFAULT_MAX_FILES,
25
+ maxFileSizeBytes = DEFAULT_MAX_FILE_SIZE_BYTES,
26
+ compressImages = true
27
+ } = options;
28
+ const { t } = useTranslation("ui");
29
+ const { notify } = useNotification();
30
+ const [stagedAttachments, setStagedAttachments] = useState([]);
31
+ const abortControllersRef = useRef(/* @__PURE__ */ new Map());
32
+ const stagedRef = useRef([]);
33
+ stagedRef.current = stagedAttachments;
34
+ const uploadFileRef = useRef(uploadFile);
35
+ uploadFileRef.current = uploadFile;
36
+ useEffect(
37
+ () => () => {
38
+ abortControllersRef.current.forEach((controller) => controller.abort());
39
+ abortControllersRef.current.clear();
40
+ stagedRef.current.forEach((attachment) => {
41
+ if (attachment.previewUrl) URL.revokeObjectURL(attachment.previewUrl);
42
+ });
43
+ },
44
+ []
45
+ );
46
+ const patchAttachment = useCallback((stagingId, patch) => {
47
+ setStagedAttachments(
48
+ (current) => current.map((attachment) => attachment.stagingId === stagingId ? { ...attachment, ...patch } : attachment)
49
+ );
50
+ }, []);
51
+ const uploadStagedFile = useCallback(
52
+ async (stagingId, file, extras) => {
53
+ const controller = new AbortController();
54
+ abortControllersRef.current.set(stagingId, controller);
55
+ try {
56
+ const uploaded = await uploadFileRef.current(file, {
57
+ signal: controller.signal,
58
+ onProgress: (percentage) => patchAttachment(stagingId, { progress: percentage })
59
+ });
60
+ patchAttachment(stagingId, {
61
+ status: "done",
62
+ progress: 100,
63
+ uploaded: { ...uploaded, ...extras }
64
+ });
65
+ } catch (error) {
66
+ if (!controller.signal.aborted) {
67
+ uiLogger.error("File attachment upload failed", error);
68
+ patchAttachment(stagingId, { status: "error" });
69
+ }
70
+ } finally {
71
+ abortControllersRef.current.delete(stagingId);
72
+ }
73
+ },
74
+ [patchAttachment]
75
+ );
76
+ const addFiles = useCallback(
77
+ async (files, extras = {}) => {
78
+ const incoming = (files ?? []).filter(Boolean);
79
+ if (!incoming.length) return;
80
+ const availableSlots = maxFiles - stagedRef.current.length;
81
+ if (availableSlots <= 0) {
82
+ notify({ message: t("followUp.attachments.tooMany", { max: maxFiles }), type: "error" });
83
+ return;
84
+ }
85
+ const accepted = incoming.slice(0, availableSlots);
86
+ if (accepted.length < incoming.length) {
87
+ notify({ message: t("followUp.attachments.tooMany", { max: maxFiles }), type: "error" });
88
+ }
89
+ for (const originalFile of accepted) {
90
+ if (originalFile.size > maxFileSizeBytes) {
91
+ notify({ message: t("followUp.attachments.tooLarge", { name: originalFile.name }), type: "error" });
92
+ continue;
93
+ }
94
+ const file = compressImages ? await compressImageFile(originalFile) : originalFile;
95
+ const stagingId = generateUUID();
96
+ const staged = {
97
+ stagingId,
98
+ file,
99
+ previewUrl: previewUrlFor(file),
100
+ progress: 0,
101
+ status: "uploading",
102
+ uploaded: null,
103
+ extras
104
+ };
105
+ setStagedAttachments((current) => [...current, staged]);
106
+ uploadStagedFile(stagingId, file, extras);
107
+ }
108
+ },
109
+ [compressImages, maxFileSizeBytes, maxFiles, notify, t, uploadStagedFile]
110
+ );
111
+ const removeAttachment = useCallback((stagingId) => {
112
+ abortControllersRef.current.get(stagingId)?.abort();
113
+ abortControllersRef.current.delete(stagingId);
114
+ setStagedAttachments((current) => {
115
+ const target = current.find((attachment) => attachment.stagingId === stagingId);
116
+ if (target?.previewUrl) URL.revokeObjectURL(target.previewUrl);
117
+ return current.filter((attachment) => attachment.stagingId !== stagingId);
118
+ });
119
+ }, []);
120
+ const retryAttachment = useCallback(
121
+ (stagingId) => {
122
+ const target = stagedRef.current.find((attachment) => attachment.stagingId === stagingId);
123
+ if (!target || target.status !== "error") return;
124
+ patchAttachment(stagingId, { status: "uploading", progress: 0 });
125
+ uploadStagedFile(stagingId, target.file, target.extras);
126
+ },
127
+ [patchAttachment, uploadStagedFile]
128
+ );
129
+ const clearAttachments = useCallback(() => {
130
+ abortControllersRef.current.forEach((controller) => controller.abort());
131
+ abortControllersRef.current.clear();
132
+ setStagedAttachments((current) => {
133
+ current.forEach((attachment) => {
134
+ if (attachment.previewUrl) URL.revokeObjectURL(attachment.previewUrl);
135
+ });
136
+ return [];
137
+ });
138
+ }, []);
139
+ const isUploading = stagedAttachments.some((attachment) => attachment.status === "uploading");
140
+ const readyAttachments = useMemo(
141
+ () => stagedAttachments.filter((attachment) => attachment.status === "done" && attachment.uploaded).map((attachment) => attachment.uploaded),
142
+ [stagedAttachments]
143
+ );
144
+ return {
145
+ stagedAttachments,
146
+ addFiles,
147
+ removeAttachment,
148
+ retryAttachment,
149
+ clearAttachments,
150
+ isUploading,
151
+ readyAttachments
152
+ };
153
+ };
154
+ export {
155
+ configureSharedFileUploader,
156
+ useFileAttachments
157
+ };
158
+ //# sourceMappingURL=useFileAttachments.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useFileAttachments.js","sources":["../../src/hooks/useFileAttachments.ts"],"sourcesContent":["import { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport { uiLogger } from '@/helpers/uiLogger';\nimport { generateUUID } from '@/helpers/utilityHelpers';\nimport { useNotification } from '@/hooks/useNotification';\nimport { IFileAttachment } from '@/interfaces/IFileAttachment';\n\nimport { compressImageFile } from '../helpers/imageCompression';\n\nconst DEFAULT_MAX_FILES = 10;\nconst DEFAULT_MAX_FILE_SIZE_BYTES = 50 * 1024 * 1024;\n\nexport type TFileUploader = (\n file: File,\n options: { signal?: AbortSignal; onProgress?: (percentage: number) => void },\n) => Promise<IFileAttachment>;\n\nexport type TStagedAttachmentStatus = 'uploading' | 'done' | 'error';\n\nexport interface IStagedAttachmentExtras {\n durationMs?: number;\n transcript?: string;\n}\n\nexport interface IStagedAttachment {\n stagingId: string;\n file: File;\n previewUrl: string | null;\n progress: number;\n status: TStagedAttachmentStatus;\n uploaded: IFileAttachment | null;\n extras: IStagedAttachmentExtras;\n}\n\nexport interface IUseFileAttachmentsOptions {\n /** Storage seam: a surface with its own bucket passes its uploader instead of the shared one. */\n uploadFile?: TFileUploader;\n maxFiles?: number;\n maxFileSizeBytes?: number;\n compressImages?: boolean;\n}\n\nexport interface IUseFileAttachmentsResult {\n stagedAttachments: Array<IStagedAttachment>;\n addFiles: (files: Array<File>, extras?: IStagedAttachmentExtras) => Promise<void>;\n removeAttachment: (stagingId: string) => void;\n retryAttachment: (stagingId: string) => void;\n clearAttachments: () => void;\n isUploading: boolean;\n readyAttachments: Array<IFileAttachment>;\n}\n\nconst previewUrlFor = (file: File): string | null => {\n if (file.type.startsWith('image/') || file.type.startsWith('video/')) return URL.createObjectURL(file);\n return null;\n};\n\nlet sharedUploader: TFileUploader | null = null;\n\n/** The host registers the uploader that backs surfaces without a bucket of their own. */\nexport const configureSharedFileUploader = (uploader: TFileUploader | null): void => {\n sharedUploader = uploader;\n};\n\nconst defaultUploader: TFileUploader = (file, options) => {\n if (!sharedUploader) throw new Error('No shared file uploader configured');\n return sharedUploader(file, options);\n};\n\n/**\n * Staging area between picking a file and having a stored reference for it: upload progress,\n * cancellation, retry and object-URL lifecycle. Whoever owns the surface decides what to do\n * with `readyAttachments` (send them beside a message, or write them into the body).\n */\nexport const useFileAttachments = (options: IUseFileAttachmentsOptions = {}): IUseFileAttachmentsResult => {\n const {\n uploadFile = defaultUploader,\n maxFiles = DEFAULT_MAX_FILES,\n maxFileSizeBytes = DEFAULT_MAX_FILE_SIZE_BYTES,\n compressImages = true,\n } = options;\n\n const { t } = useTranslation('ui');\n const { notify } = useNotification();\n const [stagedAttachments, setStagedAttachments] = useState<Array<IStagedAttachment>>([]);\n const abortControllersRef = useRef<Map<string, AbortController>>(new Map());\n const stagedRef = useRef<Array<IStagedAttachment>>([]);\n stagedRef.current = stagedAttachments;\n\n const uploadFileRef = useRef<TFileUploader>(uploadFile);\n uploadFileRef.current = uploadFile;\n\n useEffect(\n () => () => {\n abortControllersRef.current.forEach((controller) => controller.abort());\n abortControllersRef.current.clear();\n stagedRef.current.forEach((attachment) => {\n if (attachment.previewUrl) URL.revokeObjectURL(attachment.previewUrl);\n });\n },\n [],\n );\n\n const patchAttachment = useCallback((stagingId: string, patch: Partial<IStagedAttachment>) => {\n setStagedAttachments((current) =>\n current.map((attachment) => (attachment.stagingId === stagingId ? { ...attachment, ...patch } : attachment)),\n );\n }, []);\n\n const uploadStagedFile = useCallback(\n async (stagingId: string, file: File, extras: IStagedAttachmentExtras) => {\n const controller = new AbortController();\n abortControllersRef.current.set(stagingId, controller);\n\n try {\n const uploaded = await uploadFileRef.current(file, {\n signal: controller.signal,\n onProgress: (percentage) => patchAttachment(stagingId, { progress: percentage }),\n });\n\n patchAttachment(stagingId, {\n status: 'done',\n progress: 100,\n uploaded: { ...uploaded, ...extras },\n });\n } catch (error) {\n if (!controller.signal.aborted) {\n uiLogger.error('File attachment upload failed', error);\n patchAttachment(stagingId, { status: 'error' });\n }\n } finally {\n abortControllersRef.current.delete(stagingId);\n }\n },\n [patchAttachment],\n );\n\n const addFiles = useCallback(\n async (files: Array<File>, extras: IStagedAttachmentExtras = {}) => {\n const incoming = (files ?? []).filter(Boolean);\n if (!incoming.length) return;\n\n const availableSlots = maxFiles - stagedRef.current.length;\n if (availableSlots <= 0) {\n notify({ message: t('followUp.attachments.tooMany', { max: maxFiles }), type: 'error' });\n return;\n }\n\n const accepted = incoming.slice(0, availableSlots);\n if (accepted.length < incoming.length) {\n notify({ message: t('followUp.attachments.tooMany', { max: maxFiles }), type: 'error' });\n }\n\n for (const originalFile of accepted) {\n if (originalFile.size > maxFileSizeBytes) {\n notify({ message: t('followUp.attachments.tooLarge', { name: originalFile.name }), type: 'error' });\n continue;\n }\n\n const file = compressImages ? await compressImageFile(originalFile) : originalFile;\n const stagingId = generateUUID();\n const staged: IStagedAttachment = {\n stagingId,\n file,\n previewUrl: previewUrlFor(file),\n progress: 0,\n status: 'uploading',\n uploaded: null,\n extras,\n };\n\n setStagedAttachments((current) => [...current, staged]);\n uploadStagedFile(stagingId, file, extras);\n }\n },\n [compressImages, maxFileSizeBytes, maxFiles, notify, t, uploadStagedFile],\n );\n\n const removeAttachment = useCallback((stagingId: string) => {\n abortControllersRef.current.get(stagingId)?.abort();\n abortControllersRef.current.delete(stagingId);\n\n setStagedAttachments((current) => {\n const target = current.find((attachment) => attachment.stagingId === stagingId);\n if (target?.previewUrl) URL.revokeObjectURL(target.previewUrl);\n return current.filter((attachment) => attachment.stagingId !== stagingId);\n });\n }, []);\n\n const retryAttachment = useCallback(\n (stagingId: string) => {\n const target = stagedRef.current.find((attachment) => attachment.stagingId === stagingId);\n if (!target || target.status !== 'error') return;\n\n patchAttachment(stagingId, { status: 'uploading', progress: 0 });\n uploadStagedFile(stagingId, target.file, target.extras);\n },\n [patchAttachment, uploadStagedFile],\n );\n\n const clearAttachments = useCallback(() => {\n abortControllersRef.current.forEach((controller) => controller.abort());\n abortControllersRef.current.clear();\n\n setStagedAttachments((current) => {\n current.forEach((attachment) => {\n if (attachment.previewUrl) URL.revokeObjectURL(attachment.previewUrl);\n });\n return [];\n });\n }, []);\n\n const isUploading = stagedAttachments.some((attachment) => attachment.status === 'uploading');\n\n const readyAttachments = useMemo(\n () =>\n stagedAttachments\n .filter((attachment) => attachment.status === 'done' && attachment.uploaded)\n .map((attachment) => attachment.uploaded as IFileAttachment),\n [stagedAttachments],\n );\n\n return {\n stagedAttachments,\n addFiles,\n removeAttachment,\n retryAttachment,\n clearAttachments,\n isUploading,\n readyAttachments,\n };\n};\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * True when the primary pointer can hover (mouse/trackpad). False on touch, where
3
+ * a `group-hover` affordance never appears and its control becomes undiscoverable.
4
+ * Use it to render such controls permanently instead of hiding them behind hover.
5
+ */
6
+ export declare const useHoverCapable: () => boolean;
@@ -0,0 +1,28 @@
1
+ import { useState, useEffect } from "react";
2
+ const HOVER_QUERY = "(hover: hover) and (pointer: fine)";
3
+ const readHoverCapability = () => {
4
+ try {
5
+ return window.matchMedia(HOVER_QUERY).matches;
6
+ } catch {
7
+ return true;
8
+ }
9
+ };
10
+ const useHoverCapable = () => {
11
+ const [hoverCapable, setHoverCapable] = useState(readHoverCapability);
12
+ useEffect(() => {
13
+ let mediaQuery;
14
+ try {
15
+ mediaQuery = window.matchMedia(HOVER_QUERY);
16
+ } catch {
17
+ return void 0;
18
+ }
19
+ const handleChange = () => setHoverCapable(mediaQuery.matches);
20
+ mediaQuery.addEventListener("change", handleChange);
21
+ return () => mediaQuery.removeEventListener("change", handleChange);
22
+ }, []);
23
+ return hoverCapable;
24
+ };
25
+ export {
26
+ useHoverCapable
27
+ };
28
+ //# sourceMappingURL=useHoverCapable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useHoverCapable.js","sources":["../../src/hooks/useHoverCapable.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\n\nconst HOVER_QUERY = '(hover: hover) and (pointer: fine)';\n\nconst readHoverCapability = (): boolean => {\n try {\n return window.matchMedia(HOVER_QUERY).matches;\n } catch {\n return true;\n }\n};\n\n/**\n * True when the primary pointer can hover (mouse/trackpad). False on touch, where\n * a `group-hover` affordance never appears and its control becomes undiscoverable.\n * Use it to render such controls permanently instead of hiding them behind hover.\n */\nexport const useHoverCapable = (): boolean => {\n const [hoverCapable, setHoverCapable] = useState(readHoverCapability);\n\n useEffect(() => {\n let mediaQuery: MediaQueryList;\n try {\n mediaQuery = window.matchMedia(HOVER_QUERY);\n } catch {\n return undefined;\n }\n\n const handleChange = () => setHoverCapable(mediaQuery.matches);\n mediaQuery.addEventListener('change', handleChange);\n return () => mediaQuery.removeEventListener('change', handleChange);\n }, []);\n\n return hoverCapable;\n};\n"],"names":[],"mappings":";AAEA,MAAM,cAAc;AAEpB,MAAM,sBAAsB,MAAe;AACzC,MAAI;AACF,WAAO,OAAO,WAAW,WAAW,EAAE;AAAA,EACxC,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAOO,MAAM,kBAAkB,MAAe;AAC5C,QAAM,CAAC,cAAc,eAAe,IAAI,SAAS,mBAAmB;AAEpE,YAAU,MAAM;AACd,QAAI;AACJ,QAAI;AACF,mBAAa,OAAO,WAAW,WAAW;AAAA,IAC5C,QAAQ;AACN,aAAO;AAAA,IACT;AAEA,UAAM,eAAe,MAAM,gBAAgB,WAAW,OAAO;AAC7D,eAAW,iBAAiB,UAAU,YAAY;AAClD,WAAO,MAAM,WAAW,oBAAoB,UAAU,YAAY;AAAA,EACpE,GAAG,CAAA,CAAE;AAEL,SAAO;AACT;"}
@@ -0,0 +1,5 @@
1
+ import { default as React } from 'react';
2
+ export declare const useInlineEditor: (active: boolean, onStopEdit: () => void, onNavigate: (direction: 1 | -1) => void) => {
3
+ containerRef: React.RefObject<HTMLDivElement>;
4
+ handleKeyDown: (event: React.KeyboardEvent) => void;
5
+ };
@@ -0,0 +1,41 @@
1
+ import { useRef, useEffect } from "react";
2
+ const commitActiveElement = (container) => {
3
+ const active = document.activeElement;
4
+ if (active instanceof HTMLElement && container?.contains(active)) active.blur();
5
+ };
6
+ const useInlineEditor = (active, onStopEdit, onNavigate) => {
7
+ const containerRef = useRef(null);
8
+ useEffect(() => {
9
+ if (!active) return;
10
+ const focusable = containerRef.current?.querySelector("input, textarea, select, button, [tabindex]");
11
+ focusable?.focus();
12
+ }, [active]);
13
+ useEffect(() => {
14
+ if (!active) return void 0;
15
+ const handlePointerDown = (event) => {
16
+ const target = event.target instanceof Element ? event.target : null;
17
+ if (!target || containerRef.current?.contains(target)) return;
18
+ if (target.closest('[role="menu"], [role="listbox"]')) return;
19
+ commitActiveElement(containerRef.current);
20
+ onStopEdit();
21
+ };
22
+ document.addEventListener("pointerdown", handlePointerDown);
23
+ return () => document.removeEventListener("pointerdown", handlePointerDown);
24
+ }, [active, onStopEdit]);
25
+ const handleKeyDown = (event) => {
26
+ if (event.key === "Tab") {
27
+ event.preventDefault();
28
+ commitActiveElement(containerRef.current);
29
+ onNavigate(event.shiftKey ? -1 : 1);
30
+ } else if (event.key === "Escape") {
31
+ event.stopPropagation();
32
+ commitActiveElement(containerRef.current);
33
+ onStopEdit();
34
+ }
35
+ };
36
+ return { containerRef, handleKeyDown };
37
+ };
38
+ export {
39
+ useInlineEditor
40
+ };
41
+ //# sourceMappingURL=useInlineEditor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useInlineEditor.js","sources":["../../src/hooks/useInlineEditor.ts"],"sourcesContent":["import React, { useEffect, useRef } from 'react';\n\n// Persiste editores que salvam no blur (ex.: ProductDataSheetField) antes do\n// container desmontar ao navegar/fechar.\nconst commitActiveElement = (container: HTMLElement | null) => {\n const active = document.activeElement;\n if (active instanceof HTMLElement && container?.contains(active)) active.blur();\n};\n\n// Wiring compartilhado dos editores inline: foca o primeiro controle ao abrir,\n// fecha no clique fora e navega entre campos editáveis com Tab / Shift+Tab.\nexport const useInlineEditor = (active: boolean, onStopEdit: () => void, onNavigate: (direction: 1 | -1) => void) => {\n const containerRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (!active) return;\n const focusable = containerRef.current?.querySelector<HTMLElement>('input, textarea, select, button, [tabindex]');\n focusable?.focus();\n }, [active]);\n\n useEffect(() => {\n if (!active) return undefined;\n\n const handlePointerDown = (event: PointerEvent) => {\n const target = event.target instanceof Element ? event.target : null;\n if (!target || containerRef.current?.contains(target)) return;\n // Menus dos selects renderizam em portal fora do container; interagir\n // com eles não encerra a edição.\n if (target.closest('[role=\"menu\"], [role=\"listbox\"]')) return;\n commitActiveElement(containerRef.current);\n onStopEdit();\n };\n\n document.addEventListener('pointerdown', handlePointerDown);\n return () => document.removeEventListener('pointerdown', handlePointerDown);\n }, [active, onStopEdit]);\n\n const handleKeyDown = (event: React.KeyboardEvent) => {\n if (event.key === 'Tab') {\n event.preventDefault();\n commitActiveElement(containerRef.current);\n onNavigate(event.shiftKey ? -1 : 1);\n } else if (event.key === 'Escape') {\n event.stopPropagation();\n commitActiveElement(containerRef.current);\n onStopEdit();\n }\n };\n\n return { containerRef, handleKeyDown };\n};\n"],"names":[],"mappings":";AAIA,MAAM,sBAAsB,CAAC,cAAkC;AAC7D,QAAM,SAAS,SAAS;AACxB,MAAI,kBAAkB,eAAe,WAAW,SAAS,MAAM,UAAU,KAAA;AAC3E;AAIO,MAAM,kBAAkB,CAAC,QAAiB,YAAwB,eAA4C;AACnH,QAAM,eAAe,OAAuB,IAAI;AAEhD,YAAU,MAAM;AACd,QAAI,CAAC,OAAQ;AACb,UAAM,YAAY,aAAa,SAAS,cAA2B,6CAA6C;AAChH,eAAW,MAAA;AAAA,EACb,GAAG,CAAC,MAAM,CAAC;AAEX,YAAU,MAAM;AACd,QAAI,CAAC,OAAQ,QAAO;AAEpB,UAAM,oBAAoB,CAAC,UAAwB;AACjD,YAAM,SAAS,MAAM,kBAAkB,UAAU,MAAM,SAAS;AAChE,UAAI,CAAC,UAAU,aAAa,SAAS,SAAS,MAAM,EAAG;AAGvD,UAAI,OAAO,QAAQ,iCAAiC,EAAG;AACvD,0BAAoB,aAAa,OAAO;AACxC,iBAAA;AAAA,IACF;AAEA,aAAS,iBAAiB,eAAe,iBAAiB;AAC1D,WAAO,MAAM,SAAS,oBAAoB,eAAe,iBAAiB;AAAA,EAC5E,GAAG,CAAC,QAAQ,UAAU,CAAC;AAEvB,QAAM,gBAAgB,CAAC,UAA+B;AACpD,QAAI,MAAM,QAAQ,OAAO;AACvB,YAAM,eAAA;AACN,0BAAoB,aAAa,OAAO;AACxC,iBAAW,MAAM,WAAW,KAAK,CAAC;AAAA,IACpC,WAAW,MAAM,QAAQ,UAAU;AACjC,YAAM,gBAAA;AACN,0BAAoB,aAAa,OAAO;AACxC,iBAAA;AAAA,IACF;AAAA,EACF;AAEA,SAAO,EAAE,cAAc,cAAA;AACzB;"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Kept as the historical name used across the app. It now delegates to
3
+ * `useBreakpoint`, so the JS notion of "mobile" and the Tailwind `tablet:`
4
+ * variant agree on the same 640px edge instead of drifting (it used to be a
5
+ * hardcoded 720px, which made CSS and behaviour disagree between 640 and 720).
6
+ */
7
+ export declare function useMobile(): boolean;
@@ -0,0 +1,8 @@
1
+ import { useBreakpoint } from "./useBreakpoint.js";
2
+ function useMobile() {
3
+ return useBreakpoint().isMobile;
4
+ }
5
+ export {
6
+ useMobile
7
+ };
8
+ //# sourceMappingURL=useMobile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useMobile.js","sources":["../../src/hooks/useMobile.ts"],"sourcesContent":["import { useBreakpoint } from './useBreakpoint';\n\n/**\n * Kept as the historical name used across the app. It now delegates to\n * `useBreakpoint`, so the JS notion of \"mobile\" and the Tailwind `tablet:`\n * variant agree on the same 640px edge instead of drifting (it used to be a\n * hardcoded 720px, which made CSS and behaviour disagree between 640 and 720).\n */\nexport function useMobile(): boolean {\n return useBreakpoint().isMobile;\n}\n"],"names":[],"mappings":";AAQO,SAAS,YAAqB;AACnC,SAAO,gBAAgB;AACzB;"}
@@ -0,0 +1,38 @@
1
+ import { TypeOptions } from 'react-toastify';
2
+ export interface IToastNotification {
3
+ message: string;
4
+ useAction?: boolean;
5
+ onAction?: (value: boolean) => void;
6
+ actionLabel?: string;
7
+ type: TypeOptions;
8
+ timeout: number;
9
+ }
10
+ export type TNotifyPriority = 'normal' | 'high';
11
+ export interface INotifyParams {
12
+ message: string;
13
+ type: TypeOptions;
14
+ timeout?: number;
15
+ useAction?: boolean;
16
+ onAction?: (value: boolean) => void;
17
+ actionLabel?: string;
18
+ /**
19
+ * `high` marks a toast that names the real cause of a failure, such as an access denial raised by
20
+ * the request layer. Only one toast is on screen at a time and `notify` replaces whatever is
21
+ * there, so without this a screen's generic "failed to load", fired moments later for the SAME
22
+ * request, would erase the only message that explained why it failed.
23
+ */
24
+ priority?: TNotifyPriority;
25
+ }
26
+ export interface INotificationStore {
27
+ notification: IToastNotification | null;
28
+ notify: (params: INotifyParams) => void;
29
+ setNotification: (notification: IToastNotification | null) => void;
30
+ closeNotify: () => void;
31
+ }
32
+ export declare const useNotificationStore: import('zustand').UseBoundStore<import('zustand').StoreApi<INotificationStore>>;
33
+ export declare const useNotification: () => {
34
+ notification: IToastNotification | null;
35
+ notify: (params: INotifyParams) => void;
36
+ setNotification: (notification: IToastNotification | null) => void;
37
+ closeNotify: () => void;
38
+ };
@@ -0,0 +1,39 @@
1
+ import { create } from "zustand";
2
+ import { useShallow } from "zustand/react/shallow";
3
+ let priorityHoldUntil = 0;
4
+ const useNotificationStore = create((set) => ({
5
+ notification: null,
6
+ closeNotify: () => {
7
+ priorityHoldUntil = 0;
8
+ set({ notification: null });
9
+ },
10
+ setNotification: (notification) => set({ notification }),
11
+ notify: (params) => {
12
+ const timeout = params.timeout || 5e3;
13
+ if (params.priority === "high") {
14
+ priorityHoldUntil = Date.now() + timeout;
15
+ } else if (Date.now() < priorityHoldUntil) {
16
+ return;
17
+ }
18
+ set({ notification: null });
19
+ set({ notification: { ...params, timeout } });
20
+ setTimeout(() => {
21
+ if (useNotificationStore.getState().notification?.message === params.message) {
22
+ set({ notification: null });
23
+ }
24
+ }, timeout + 500);
25
+ }
26
+ }));
27
+ const useNotification = () => useNotificationStore(
28
+ useShallow((s) => ({
29
+ notification: s.notification,
30
+ notify: s.notify,
31
+ setNotification: s.setNotification,
32
+ closeNotify: s.closeNotify
33
+ }))
34
+ );
35
+ export {
36
+ useNotification,
37
+ useNotificationStore
38
+ };
39
+ //# sourceMappingURL=useNotification.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useNotification.js","sources":["../../src/hooks/useNotification.tsx"],"sourcesContent":["import { TypeOptions } from 'react-toastify';\nimport { create } from 'zustand';\nimport { useShallow } from 'zustand/react/shallow';\n\nexport interface IToastNotification {\n message: string;\n useAction?: boolean;\n onAction?: (value: boolean) => void;\n actionLabel?: string;\n type: TypeOptions;\n timeout: number;\n}\n\nexport type TNotifyPriority = 'normal' | 'high';\n\nexport interface INotifyParams {\n message: string;\n type: TypeOptions;\n timeout?: number;\n useAction?: boolean;\n onAction?: (value: boolean) => void;\n actionLabel?: string;\n /**\n * `high` marks a toast that names the real cause of a failure, such as an access denial raised by\n * the request layer. Only one toast is on screen at a time and `notify` replaces whatever is\n * there, so without this a screen's generic \"failed to load\", fired moments later for the SAME\n * request, would erase the only message that explained why it failed.\n */\n priority?: TNotifyPriority;\n}\n\nexport interface INotificationStore {\n notification: IToastNotification | null;\n notify: (params: INotifyParams) => void;\n setNotification: (notification: IToastNotification | null) => void;\n closeNotify: () => void;\n}\n\n/** Wall-clock instant until which a `high` toast holds the screen against a `normal` one. */\nlet priorityHoldUntil = 0;\n\nexport const useNotificationStore = create<INotificationStore>((set) => ({\n notification: null,\n\n closeNotify: () => {\n priorityHoldUntil = 0;\n set({ notification: null });\n },\n\n setNotification: (notification) => set({ notification }),\n\n notify: (params) => {\n const timeout = params.timeout || 5000;\n\n if (params.priority === 'high') {\n priorityHoldUntil = Date.now() + timeout;\n } else if (Date.now() < priorityHoldUntil) {\n return;\n }\n\n set({ notification: null });\n set({ notification: { ...params, timeout } });\n\n setTimeout(() => {\n if (useNotificationStore.getState().notification?.message === params.message) {\n set({ notification: null });\n }\n }, timeout + 500);\n },\n}));\n\nexport const useNotification = () =>\n useNotificationStore(\n useShallow((s) => ({\n notification: s.notification,\n notify: s.notify,\n setNotification: s.setNotification,\n closeNotify: s.closeNotify,\n })),\n );\n"],"names":[],"mappings":";;AAuCA,IAAI,oBAAoB;AAEjB,MAAM,uBAAuB,OAA2B,CAAC,SAAS;AAAA,EACvE,cAAc;AAAA,EAEd,aAAa,MAAM;AACjB,wBAAoB;AACpB,QAAI,EAAE,cAAc,MAAM;AAAA,EAC5B;AAAA,EAEA,iBAAiB,CAAC,iBAAiB,IAAI,EAAE,cAAc;AAAA,EAEvD,QAAQ,CAAC,WAAW;AAClB,UAAM,UAAU,OAAO,WAAW;AAElC,QAAI,OAAO,aAAa,QAAQ;AAC9B,0BAAoB,KAAK,QAAQ;AAAA,IACnC,WAAW,KAAK,IAAA,IAAQ,mBAAmB;AACzC;AAAA,IACF;AAEA,QAAI,EAAE,cAAc,MAAM;AAC1B,QAAI,EAAE,cAAc,EAAE,GAAG,QAAQ,QAAA,GAAW;AAE5C,eAAW,MAAM;AACf,UAAI,qBAAqB,SAAA,EAAW,cAAc,YAAY,OAAO,SAAS;AAC5E,YAAI,EAAE,cAAc,MAAM;AAAA,MAC5B;AAAA,IACF,GAAG,UAAU,GAAG;AAAA,EAClB;AACF,EAAE;AAEK,MAAM,kBAAkB,MAC7B;AAAA,EACE,WAAW,CAAC,OAAO;AAAA,IACjB,cAAc,EAAE;AAAA,IAChB,QAAQ,EAAE;AAAA,IACV,iBAAiB,EAAE;AAAA,IACnB,aAAa,EAAE;AAAA,EAAA,EACf;AACJ;"}
@@ -0,0 +1,7 @@
1
+ export type TUiResolvedTheme = 'light' | 'dark';
2
+ /**
3
+ * The theme as painted on `<html data-theme>`, which the app's ThemeManager (or the inline boot
4
+ * script) always writes before React reads it. Observing the DOM instead of an app store keeps
5
+ * the UI layer free of the dashboard's state, and stays correct wherever the attribute is set.
6
+ */
7
+ export declare const useResolvedTheme: () => TUiResolvedTheme;
@@ -0,0 +1,15 @@
1
+ import { useSyncExternalStore } from "react";
2
+ const THEME_ATTRIBUTE = "data-theme";
3
+ const readResolvedTheme = () => typeof document !== "undefined" && document.documentElement.getAttribute(THEME_ATTRIBUTE) === "dark" ? "dark" : "light";
4
+ const subscribeToThemeAttribute = (onChange) => {
5
+ if (typeof document === "undefined") return () => void 0;
6
+ const observer = new MutationObserver(onChange);
7
+ observer.observe(document.documentElement, { attributes: true, attributeFilter: [THEME_ATTRIBUTE] });
8
+ return () => observer.disconnect();
9
+ };
10
+ const readServerTheme = () => "light";
11
+ const useResolvedTheme = () => useSyncExternalStore(subscribeToThemeAttribute, readResolvedTheme, readServerTheme);
12
+ export {
13
+ useResolvedTheme
14
+ };
15
+ //# sourceMappingURL=useResolvedTheme.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useResolvedTheme.js","sources":["../../src/hooks/useResolvedTheme.ts"],"sourcesContent":["import { useSyncExternalStore } from 'react';\n\nexport type TUiResolvedTheme = 'light' | 'dark';\n\nconst THEME_ATTRIBUTE = 'data-theme';\n\nconst readResolvedTheme = (): TUiResolvedTheme =>\n typeof document !== 'undefined' && document.documentElement.getAttribute(THEME_ATTRIBUTE) === 'dark'\n ? 'dark'\n : 'light';\n\nconst subscribeToThemeAttribute = (onChange: () => void): (() => void) => {\n if (typeof document === 'undefined') return () => undefined;\n\n const observer = new MutationObserver(onChange);\n observer.observe(document.documentElement, { attributes: true, attributeFilter: [THEME_ATTRIBUTE] });\n return () => observer.disconnect();\n};\n\nconst readServerTheme = (): TUiResolvedTheme => 'light';\n\n/**\n * The theme as painted on `<html data-theme>`, which the app's ThemeManager (or the inline boot\n * script) always writes before React reads it. Observing the DOM instead of an app store keeps\n * the UI layer free of the dashboard's state, and stays correct wherever the attribute is set.\n */\nexport const useResolvedTheme = (): TUiResolvedTheme =>\n useSyncExternalStore(subscribeToThemeAttribute, readResolvedTheme, readServerTheme);\n"],"names":[],"mappings":";AAIA,MAAM,kBAAkB;AAExB,MAAM,oBAAoB,MACxB,OAAO,aAAa,eAAe,SAAS,gBAAgB,aAAa,eAAe,MAAM,SAC1F,SACA;AAEN,MAAM,4BAA4B,CAAC,aAAuC;AACxE,MAAI,OAAO,aAAa,YAAa,QAAO,MAAM;AAElD,QAAM,WAAW,IAAI,iBAAiB,QAAQ;AAC9C,WAAS,QAAQ,SAAS,iBAAiB,EAAE,YAAY,MAAM,iBAAiB,CAAC,eAAe,GAAG;AACnG,SAAO,MAAM,SAAS,WAAA;AACxB;AAEA,MAAM,kBAAkB,MAAwB;AAOzC,MAAM,mBAAmB,MAC9B,qBAAqB,2BAA2B,mBAAmB,eAAe;"}
@@ -0,0 +1,25 @@
1
+ export type TVoiceCommandKey = 'comma' | 'period' | 'newline' | 'space' | 'question' | 'exclamation' | 'deleteWord';
2
+ interface IVoiceCommand {
3
+ key: TVoiceCommandKey;
4
+ phrases: Array<string>;
5
+ insert?: string;
6
+ action?: 'deleteWord';
7
+ }
8
+ export declare const VOICE_COMMANDS: Array<IVoiceCommand>;
9
+ export interface IVoiceTranscriptionUpdate {
10
+ insert: string;
11
+ deleteWords: number;
12
+ }
13
+ interface IUseVoiceTranscriptionParams {
14
+ lang?: string;
15
+ onCommit: (update: IVoiceTranscriptionUpdate) => void;
16
+ onInterim?: (text: string) => void;
17
+ }
18
+ interface IUseVoiceTranscriptionResult {
19
+ isSupported: boolean;
20
+ isListening: boolean;
21
+ toggle: () => void;
22
+ stop: () => void;
23
+ }
24
+ export declare const useVoiceTranscription: ({ lang, onCommit, onInterim, }: IUseVoiceTranscriptionParams) => IUseVoiceTranscriptionResult;
25
+ export {};
@@ -0,0 +1,106 @@
1
+ import { useState, useRef, useCallback, useEffect } from "react";
2
+ import { uiLogger } from "../helpers/uiLogger.js";
3
+ const getRecognitionCtor = () => {
4
+ const w = window;
5
+ return w.SpeechRecognition ?? w.webkitSpeechRecognition ?? null;
6
+ };
7
+ const VOICE_COMMANDS = [
8
+ { key: "comma", phrases: ["vírgula", "virgula", "comma"], insert: ", " },
9
+ { key: "period", phrases: ["ponto", "ponto final", "period"], insert: ". " },
10
+ { key: "newline", phrases: ["nova linha", "quebra de linha", "parágrafo", "paragrafo", "new line"], insert: "\n" },
11
+ { key: "space", phrases: ["espaço", "espaco", "space"], insert: " " },
12
+ {
13
+ key: "question",
14
+ phrases: ["interrogação", "interrogacao", "ponto de interrogação", "question mark"],
15
+ insert: "? "
16
+ },
17
+ {
18
+ key: "exclamation",
19
+ phrases: ["exclamação", "exclamacao", "ponto de exclamação", "exclamation mark"],
20
+ insert: "! "
21
+ },
22
+ { key: "deleteWord", phrases: ["apagar", "apaga", "apagar palavra", "delete"], action: "deleteWord" }
23
+ ];
24
+ const PHRASE_TO_COMMAND = /* @__PURE__ */ new Map();
25
+ for (const command of VOICE_COMMANDS) {
26
+ for (const phrase of command.phrases) PHRASE_TO_COMMAND.set(phrase, command);
27
+ }
28
+ const normalize = (value) => value.trim().toLowerCase().replace(/[.,!?;:]+$/, "");
29
+ const buildUpdateFromTranscript = (transcript) => {
30
+ const words = transcript.trim().split(/\s+/).filter(Boolean);
31
+ let insert = "";
32
+ let deleteWords = 0;
33
+ for (const word of words) {
34
+ const command = PHRASE_TO_COMMAND.get(normalize(word));
35
+ if (command?.action === "deleteWord") {
36
+ deleteWords += 1;
37
+ insert = "";
38
+ continue;
39
+ }
40
+ if (command?.insert !== void 0) {
41
+ insert = insert.replace(/\s+$/, "") + command.insert;
42
+ continue;
43
+ }
44
+ insert += (insert && !insert.endsWith(" ") && !insert.endsWith("\n") ? " " : "") + word;
45
+ }
46
+ return { insert, deleteWords };
47
+ };
48
+ const useVoiceTranscription = ({
49
+ lang = "pt-BR",
50
+ onCommit,
51
+ onInterim
52
+ }) => {
53
+ const [isListening, setIsListening] = useState(false);
54
+ const recognitionRef = useRef(null);
55
+ const onCommitRef = useRef(onCommit);
56
+ const onInterimRef = useRef(onInterim);
57
+ onCommitRef.current = onCommit;
58
+ onInterimRef.current = onInterim;
59
+ const isSupported = getRecognitionCtor() !== null;
60
+ const stop = useCallback(() => {
61
+ recognitionRef.current?.stop();
62
+ }, []);
63
+ const start = useCallback(() => {
64
+ const Ctor = getRecognitionCtor();
65
+ if (!Ctor) return;
66
+ const recognition = new Ctor();
67
+ recognition.lang = lang;
68
+ recognition.continuous = true;
69
+ recognition.interimResults = true;
70
+ recognition.onresult = (event) => {
71
+ let interim = "";
72
+ for (let i = event.resultIndex; i < event.results.length; i += 1) {
73
+ const result = event.results[i];
74
+ const transcript = result[0].transcript;
75
+ if (result.isFinal) {
76
+ onCommitRef.current(buildUpdateFromTranscript(transcript));
77
+ } else {
78
+ interim += transcript;
79
+ }
80
+ }
81
+ onInterimRef.current?.(interim.trim());
82
+ };
83
+ recognition.onerror = (event) => {
84
+ uiLogger.warn("[useVoiceTranscription] error", event.error);
85
+ setIsListening(false);
86
+ };
87
+ recognition.onend = () => {
88
+ onInterimRef.current?.("");
89
+ setIsListening(false);
90
+ };
91
+ recognitionRef.current = recognition;
92
+ recognition.start();
93
+ setIsListening(true);
94
+ }, [lang]);
95
+ const toggle = useCallback(() => {
96
+ if (isListening) stop();
97
+ else start();
98
+ }, [isListening, start, stop]);
99
+ useEffect(() => () => recognitionRef.current?.stop(), []);
100
+ return { isSupported, isListening, toggle, stop };
101
+ };
102
+ export {
103
+ VOICE_COMMANDS,
104
+ useVoiceTranscription
105
+ };
106
+ //# sourceMappingURL=useVoiceTranscription.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useVoiceTranscription.js","sources":["../../src/hooks/useVoiceTranscription.ts"],"sourcesContent":["import { useCallback, useEffect, useRef, useState } from 'react';\n\nimport { uiLogger } from '@/helpers/uiLogger';\n\ninterface ISpeechRecognitionAlternative {\n transcript: string;\n}\n\ninterface ISpeechRecognitionResult {\n 0: ISpeechRecognitionAlternative;\n isFinal: boolean;\n}\n\ninterface ISpeechRecognitionEvent {\n resultIndex: number;\n results: { length: number; [index: number]: ISpeechRecognitionResult };\n}\n\ninterface ISpeechRecognition {\n lang: string;\n continuous: boolean;\n interimResults: boolean;\n start: () => void;\n stop: () => void;\n onresult: ((event: ISpeechRecognitionEvent) => void) | null;\n onerror: ((event: { error: string }) => void) | null;\n onend: (() => void) | null;\n}\n\ntype TSpeechRecognitionCtor = new () => ISpeechRecognition;\n\nconst getRecognitionCtor = (): TSpeechRecognitionCtor | null => {\n const w = window as unknown as {\n SpeechRecognition?: TSpeechRecognitionCtor;\n webkitSpeechRecognition?: TSpeechRecognitionCtor;\n };\n return w.SpeechRecognition ?? w.webkitSpeechRecognition ?? null;\n};\n\nexport type TVoiceCommandKey = 'comma' | 'period' | 'newline' | 'space' | 'question' | 'exclamation' | 'deleteWord';\n\ninterface IVoiceCommand {\n key: TVoiceCommandKey;\n phrases: Array<string>;\n insert?: string;\n action?: 'deleteWord';\n}\n\n// Spoken keywords matched against the user's speech. They must stay as literal\n// recognition tokens (not UI strings), so the i18n check is disabled here.\n/* eslint-disable i18n-check/no-portuguese-strings */\nexport const VOICE_COMMANDS: Array<IVoiceCommand> = [\n { key: 'comma', phrases: ['vírgula', 'virgula', 'comma'], insert: ', ' },\n { key: 'period', phrases: ['ponto', 'ponto final', 'period'], insert: '. ' },\n { key: 'newline', phrases: ['nova linha', 'quebra de linha', 'parágrafo', 'paragrafo', 'new line'], insert: '\\n' },\n { key: 'space', phrases: ['espaço', 'espaco', 'space'], insert: ' ' },\n {\n key: 'question',\n phrases: ['interrogação', 'interrogacao', 'ponto de interrogação', 'question mark'],\n insert: '? ',\n },\n {\n key: 'exclamation',\n phrases: ['exclamação', 'exclamacao', 'ponto de exclamação', 'exclamation mark'],\n insert: '! ',\n },\n { key: 'deleteWord', phrases: ['apagar', 'apaga', 'apagar palavra', 'delete'], action: 'deleteWord' },\n];\n/* eslint-enable i18n-check/no-portuguese-strings */\n\nconst PHRASE_TO_COMMAND = new Map<string, IVoiceCommand>();\nfor (const command of VOICE_COMMANDS) {\n for (const phrase of command.phrases) PHRASE_TO_COMMAND.set(phrase, command);\n}\n\nconst normalize = (value: string): string =>\n value\n .trim()\n .toLowerCase()\n .replace(/[.,!?;:]+$/, '');\n\nexport interface IVoiceTranscriptionUpdate {\n insert: string;\n deleteWords: number;\n}\n\nconst buildUpdateFromTranscript = (transcript: string): IVoiceTranscriptionUpdate => {\n const words = transcript.trim().split(/\\s+/).filter(Boolean);\n let insert = '';\n let deleteWords = 0;\n\n for (const word of words) {\n const command = PHRASE_TO_COMMAND.get(normalize(word));\n if (command?.action === 'deleteWord') {\n deleteWords += 1;\n insert = '';\n continue;\n }\n if (command?.insert !== undefined) {\n insert = insert.replace(/\\s+$/, '') + command.insert;\n continue;\n }\n insert += (insert && !insert.endsWith(' ') && !insert.endsWith('\\n') ? ' ' : '') + word;\n }\n\n return { insert, deleteWords };\n};\n\ninterface IUseVoiceTranscriptionParams {\n lang?: string;\n onCommit: (update: IVoiceTranscriptionUpdate) => void;\n onInterim?: (text: string) => void;\n}\n\ninterface IUseVoiceTranscriptionResult {\n isSupported: boolean;\n isListening: boolean;\n toggle: () => void;\n stop: () => void;\n}\n\nexport const useVoiceTranscription = ({\n lang = 'pt-BR',\n onCommit,\n onInterim,\n}: IUseVoiceTranscriptionParams): IUseVoiceTranscriptionResult => {\n const [isListening, setIsListening] = useState(false);\n const recognitionRef = useRef<ISpeechRecognition | null>(null);\n const onCommitRef = useRef(onCommit);\n const onInterimRef = useRef(onInterim);\n\n onCommitRef.current = onCommit;\n onInterimRef.current = onInterim;\n\n const isSupported = getRecognitionCtor() !== null;\n\n const stop = useCallback(() => {\n recognitionRef.current?.stop();\n }, []);\n\n const start = useCallback(() => {\n const Ctor = getRecognitionCtor();\n if (!Ctor) return;\n\n const recognition = new Ctor();\n recognition.lang = lang;\n recognition.continuous = true;\n recognition.interimResults = true;\n\n recognition.onresult = (event) => {\n let interim = '';\n for (let i = event.resultIndex; i < event.results.length; i += 1) {\n const result = event.results[i];\n const transcript = result[0].transcript;\n if (result.isFinal) {\n onCommitRef.current(buildUpdateFromTranscript(transcript));\n } else {\n interim += transcript;\n }\n }\n onInterimRef.current?.(interim.trim());\n };\n\n recognition.onerror = (event) => {\n uiLogger.warn('[useVoiceTranscription] error', event.error);\n setIsListening(false);\n };\n\n recognition.onend = () => {\n onInterimRef.current?.('');\n setIsListening(false);\n };\n\n recognitionRef.current = recognition;\n recognition.start();\n setIsListening(true);\n }, [lang]);\n\n const toggle = useCallback(() => {\n if (isListening) stop();\n else start();\n }, [isListening, start, stop]);\n\n useEffect(() => () => recognitionRef.current?.stop(), []);\n\n return { isSupported, isListening, toggle, stop };\n};\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ export { default as ControlledButton } from './components/Form/ControlledButton';
2
+ export { default as ControlledCheckbox } from './components/Form/ControlledCheckbox';
3
+ export { default as ControlledDialog } from './components/Form/ControlledDialog';
4
+ export { default as ControlledDrawer } from './components/Form/ControlledDrawer';
5
+ export { default as ControlledImage } from './components/Form/ControlledImage/index';
6
+ export { default as ControlledInput } from './components/Form/ControlledInput';
7
+ export { default as ControlledRadio } from './components/Form/ControlledRadio';
8
+ export * from './components/Form/ControlledSelect';
9
+ export { default as ControlledSwitch } from './components/Form/ControlledSwitch';
10
+ export { default as ControlledTabs } from './components/Form/ControlledTabs';
11
+ export { default as ControlledTextarea } from './components/Form/ControlledTextarea';
12
+ export { default as ControlledViewToggle } from './components/Form/ControlledViewToggle';
13
+ export { default as ControlledBreadcrumb } from './components/Navigation/ControlledBreadcrumb';
14
+ export { default as ErrorPage } from './components/Navigation/ErrorPage';
15
+ export { default as PageTitle } from './components/Navigation/PageTitle';
16
+ export * from './components/Navigation/PageTitleNavigationContext';
17
+ export { default as UnifiedSearchBar } from './components/Search/UnifiedSearchBar';
18
+ export * from './components/UI/access/UiAccessContext';
19
+ export { default as BaseDataCard } from './components/UI/BaseDataCard';
20
+ export { default as OutlinedChip } from './components/UI/Chips/OutlinedChip';
21
+ export { default as Colors } from './components/UI/Colors';
22
+ export { default as ColorSwatch } from './components/UI/ColorSwatch';
23
+ export { default as ControlledAccordion } from './components/UI/ControlledAccordion';
24
+ export { default as ControlledCollapse } from './components/UI/ControlledCollapse';
25
+ export { default as ControlledMenu } from './components/UI/ControlledMenu';
26
+ export { default as ControlledPopover } from './components/UI/ControlledPopover';
27
+ export { default as ControlledProgress } from './components/UI/ControlledProgress';
28
+ export { default as ControlledSlider } from './components/UI/ControlledSlider';
29
+ export { default as ControlledTooltip } from './components/UI/ControlledTooltip';
30
+ export { default as CustomBadge } from './components/UI/CustomBadge';
31
+ export { default as CustomCard } from './components/UI/CustomCard';
32
+ export { default as InformationCard } from './components/UI/InformationCard';
33
+ export { default as LoadingSpinner } from './components/UI/LoadingSpinner';
34
+ export * from './components/UI/MaterialSymbol/index';
35
+ export { default as NoDataFound } from './components/UI/NoDataFound/index';
36
+ export { default as SkeletonLoading } from './components/UI/SkeletonLoading';
37
+ export * from './helpers/composeRefs';
38
+ export * from './helpers/layeredSurfaces';
39
+ export * from './helpers/themeTokens';
40
+ export * from './helpers/uiLogger';
41
+ export * from './helpers/uiPreferences';
42
+ export * from './hooks/useAnchoredFloating';
43
+ export * from './hooks/useBreakpoint';
44
+ export * from './hooks/useDebounce';
45
+ export * from './hooks/useHoverCapable';
46
+ export * from './hooks/useMobile';
47
+ export * from './hooks/useNotification';
48
+ export * from './hooks/useResolvedTheme';
49
+ export * from './locales';
50
+ export * from './motion/index';