@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,545 @@
1
+ import { jsxs, jsx } from "react/jsx-runtime";
2
+ import { useMemo, useCallback, useState, useEffect, useRef, useId } from "react";
3
+ import classNames from "classnames";
4
+ import { useTranslation } from "react-i18next";
5
+ import InfiniteScroll from "react-infinite-scroll-component";
6
+ import { FixedSizeList } from "react-window";
7
+ import { ControlledMenuItem, ControlledMenuRoot, ControlledMenuHandler, ControlledMenuList } from "../UI/ControlledMenu.js";
8
+ import ControlledTooltip from "../UI/ControlledTooltip.js";
9
+ import { capitalizeAllLetters, formatFilter } from "../../helpers/stringHelpers.js";
10
+ import { uiLogger } from "../../helpers/uiLogger.js";
11
+ import "./ControlledButton.js";
12
+ import OutlinedChip from "../UI/Chips/OutlinedChip.js";
13
+ import { MaterialSymbol } from "../UI/MaterialSymbol/index.js";
14
+ import "date-fns";
15
+ import "date-fns/locale";
16
+ import "react-day-picker";
17
+ import "tailwind-merge";
18
+ import "../UI/ControlledPopover.js";
19
+ import ControlledInput from "./ControlledInput.js";
20
+ import "react-day-picker/style.css";
21
+ import "../DateTime/DateRangePicker.js";
22
+ import ControlledCheckbox from "./ControlledCheckbox.js";
23
+ import NoDataFound from "../UI/NoDataFound/index.js";
24
+ import "../Search/filters/FiltersButton.js";
25
+ import "../../helpers/utilityHelpers.js";
26
+ import "./ControlledDialog.js";
27
+ import "motion/react";
28
+ import "react-dom";
29
+ import "../../motion/motionPresets.js";
30
+ import "../../motion/motionTokens.js";
31
+ import "react-router-dom";
32
+ import UnifiedSearchBar from "../Search/UnifiedSearchBar.js";
33
+ import LoadingSpinner from "../UI/LoadingSpinner.js";
34
+ /* empty css */
35
+ const ITEM_HEIGHT = 40;
36
+ const MAX_LIST_HEIGHT = 300;
37
+ const OVERSCAN_COUNT = 10;
38
+ const SEARCH_DEBOUNCE_MS = 300;
39
+ const MAX_IN_FIELD_CHIPS = 2;
40
+ const SEARCH_INPUT_MARKER_CLASS = "controlled-select-search-input";
41
+ const SelectSearchSlot = ({ children }) => /* @__PURE__ */ jsx("div", { className: "px-1 py-0.5", onClick: (event) => event.stopPropagation(), children });
42
+ function ControlledSelect({
43
+ label,
44
+ persistentLabel = false,
45
+ options: optionsProp,
46
+ selectedValue,
47
+ error = false,
48
+ multiple = false,
49
+ disabled = false,
50
+ searchable = true,
51
+ clearable = true,
52
+ className,
53
+ listClassName,
54
+ onChangeHook,
55
+ onClearSearch,
56
+ infiniteScroll = false,
57
+ fetchMoreOptions,
58
+ hasMoreOptions = false,
59
+ loading = false,
60
+ onOpen,
61
+ selectedItemsPosition = "bottom",
62
+ showSelectedItems = true,
63
+ inFieldChips = false,
64
+ preserveLabelCase = false,
65
+ swatchShape = "dot",
66
+ ariaLabel,
67
+ ariaRequired,
68
+ inputClassName,
69
+ matchTriggerWidth = false,
70
+ compact = false
71
+ }) {
72
+ const { t } = useTranslation("ui");
73
+ const options = useMemo(() => Array.isArray(optionsProp) ? optionsProp : [], [optionsProp]);
74
+ const formatLabel = useCallback(
75
+ (value) => preserveLabelCase ? value ?? "" : capitalizeAllLetters(value),
76
+ [preserveLabelCase]
77
+ );
78
+ const normalizeSelected = useCallback(
79
+ (value) => {
80
+ if (multiple) {
81
+ if (typeof value === "string") {
82
+ return value === "" ? [] : [value];
83
+ }
84
+ if (Array.isArray(value)) {
85
+ if (value.length === 1 && value[0].includes(",") && !options.some((option) => option.value === value[0])) {
86
+ return value[0].split(",").map((item) => item.trim()).filter((item) => item !== "");
87
+ }
88
+ return value;
89
+ }
90
+ return [];
91
+ } else {
92
+ return typeof value === "string" ? value : "";
93
+ }
94
+ },
95
+ [multiple, options]
96
+ );
97
+ const [selected, setSelected] = useState(() => normalizeSelected(selectedValue));
98
+ useEffect(() => {
99
+ setSelected(normalizeSelected(selectedValue));
100
+ }, [selectedValue, normalizeSelected]);
101
+ const [filteredOptions, setFilteredOptions] = useState(options);
102
+ const [isOpen, setIsOpen] = useState(false);
103
+ const menuListRef = useRef(null);
104
+ const triggerRef = useRef(null);
105
+ const [currentSearchText, setCurrentSearchText] = useState("");
106
+ const scrollableContainerId = useId();
107
+ const scrollableContainerRef = useRef(null);
108
+ const isLoadingMoreRef = useRef(false);
109
+ useEffect(() => {
110
+ if (!infiniteScroll && currentSearchText) {
111
+ setFilteredOptions(
112
+ options.filter(
113
+ (option) => [option.label, option.secondaryLabel].some((field) => formatFilter(String(field ?? ""), currentSearchText))
114
+ )
115
+ );
116
+ return;
117
+ }
118
+ setFilteredOptions(options);
119
+ }, [options]);
120
+ const requestPagedOptions = useCallback(
121
+ async (params) => {
122
+ if (!fetchMoreOptions) return;
123
+ try {
124
+ await fetchMoreOptions(params);
125
+ } catch (fetchError) {
126
+ uiLogger.error("Failed to fetch select options", fetchError);
127
+ }
128
+ },
129
+ [fetchMoreOptions]
130
+ );
131
+ const handleLoadMoreFromScroll = useCallback(async () => {
132
+ if (!infiniteScroll || !hasMoreOptions || isLoadingMoreRef.current) return;
133
+ isLoadingMoreRef.current = true;
134
+ try {
135
+ await requestPagedOptions({ search: currentSearchText, reset: false });
136
+ } finally {
137
+ isLoadingMoreRef.current = false;
138
+ }
139
+ }, [infiniteScroll, hasMoreOptions, requestPagedOptions, currentSearchText]);
140
+ const handleServerSearch = useCallback(
141
+ (searchText) => {
142
+ setCurrentSearchText(searchText);
143
+ if (!infiniteScroll) return;
144
+ if (scrollableContainerRef.current) scrollableContainerRef.current.scrollTop = 0;
145
+ void requestPagedOptions({ search: searchText, reset: true });
146
+ },
147
+ [infiniteScroll, requestPagedOptions]
148
+ );
149
+ useEffect(() => {
150
+ if (isOpen || !infiniteScroll || currentSearchText === "") return;
151
+ setCurrentSearchText("");
152
+ void requestPagedOptions({ search: "", reset: true });
153
+ }, [isOpen]);
154
+ const handleSelect = useCallback(
155
+ (option, event) => {
156
+ if (multiple) {
157
+ event.stopPropagation();
158
+ event.preventDefault();
159
+ const currentSelection = selected;
160
+ if (currentSelection.includes(option)) {
161
+ const newSelection = currentSelection.filter((item) => item !== option);
162
+ setSelected(newSelection);
163
+ onChangeHook(newSelection);
164
+ } else {
165
+ const newSelection = [...currentSelection, option];
166
+ setSelected(newSelection);
167
+ onChangeHook(newSelection);
168
+ }
169
+ } else {
170
+ setSelected(option);
171
+ onChangeHook(option);
172
+ if (!infiniteScroll) {
173
+ setCurrentSearchText("");
174
+ setFilteredOptions(options);
175
+ }
176
+ setIsOpen(false);
177
+ }
178
+ },
179
+ [multiple, selected, onChangeHook, options, infiniteScroll]
180
+ );
181
+ const handleClearSelection = useCallback(() => {
182
+ if (multiple) {
183
+ setSelected([]);
184
+ onChangeHook([]);
185
+ } else {
186
+ setSelected("");
187
+ onChangeHook("");
188
+ }
189
+ if (!infiniteScroll) {
190
+ setCurrentSearchText("");
191
+ setFilteredOptions(options);
192
+ }
193
+ if (onClearSearch) {
194
+ onClearSearch();
195
+ }
196
+ }, [multiple, onChangeHook, onClearSearch, options, infiniteScroll]);
197
+ const getDisplayLabel = useCallback(() => {
198
+ if (multiple) {
199
+ const selectedArray = selected;
200
+ if (selectedArray.length === 0) {
201
+ return "";
202
+ } else if (selectedArray.length === 1) {
203
+ const foundOption = options.find((item) => item.value === selectedArray[0]);
204
+ return formatLabel(foundOption?.label || selectedArray[0]);
205
+ } else {
206
+ return `${selectedArray.length} itens selecionados`;
207
+ }
208
+ } else {
209
+ const foundOption = options.find((item) => item.value === selected);
210
+ return formatLabel(foundOption?.label || selected || label);
211
+ }
212
+ }, [multiple, selected, options, label, formatLabel]);
213
+ const renderOptionItem = useCallback(
214
+ (option, style) => {
215
+ const isSelected = multiple ? Array.isArray(selected) && selected.includes(option.value) : option.value === selected;
216
+ const isDisabledWithReason = Boolean(option.disabled && option.tooltip);
217
+ const menuItem = /* @__PURE__ */ jsxs(
218
+ ControlledMenuItem,
219
+ {
220
+ disabled: option.disabled,
221
+ onClick: (event) => handleSelect(option.value, event),
222
+ className: classNames("relative flex items-center p-2 pl-3 text-foreground", {
223
+ // The hover variant has to live inside the selected branch: the menu item's own
224
+ // default hover would otherwise wipe the selected tint.
225
+ "bg-brand-soft font-medium text-brand-emphasis hover:!bg-brand-soft focus:!bg-brand-soft": isSelected,
226
+ "hover:!bg-muted": !isSelected
227
+ }),
228
+ style: {
229
+ ...isDisabledWithReason ? {} : style,
230
+ height: ITEM_HEIGHT - 1
231
+ },
232
+ children: [
233
+ isSelected && /* @__PURE__ */ jsx("span", { className: "absolute inset-y-1 left-0 w-0.5 rounded-full bg-brand" }),
234
+ multiple && /* @__PURE__ */ jsx(ControlledCheckbox, { checked: isSelected, onChange: () => {
235
+ } }),
236
+ option.tooltip && !isDisabledWithReason && /* @__PURE__ */ jsx(ControlledTooltip, { content: option.tooltip, className: "w-full max-w-72", children: /* @__PURE__ */ jsx(MaterialSymbol, { icon: "info", size: 15, color: "rgb(var(--color-foreground-subtle))", className: "mr-1" }) }),
237
+ option.swatch && /* @__PURE__ */ jsx(
238
+ "span",
239
+ {
240
+ className: classNames(
241
+ "mr-2 size-3.5 shrink-0 border border-border",
242
+ swatchShape === "square" ? "rounded" : "rounded-full"
243
+ ),
244
+ style: { backgroundColor: option.swatch }
245
+ }
246
+ ),
247
+ /* @__PURE__ */ jsx("span", { className: "truncate text-sm", children: formatLabel(option.label) }),
248
+ option.secondaryLabel && /* @__PURE__ */ jsx("span", { className: "ml-auto max-w-[45%] shrink-0 truncate pl-3 text-xs text-foreground-faint", children: option.secondaryLabel })
249
+ ]
250
+ },
251
+ isDisabledWithReason ? void 0 : option.value
252
+ );
253
+ return isDisabledWithReason ? /* @__PURE__ */ jsx(ControlledTooltip, { content: option.tooltip, className: "z-[9999] max-w-72", children: /* @__PURE__ */ jsx("div", { style, children: menuItem }) }, option.value) : menuItem;
254
+ },
255
+ [multiple, selected, handleSelect, formatLabel]
256
+ );
257
+ const ItemRenderer = useCallback(
258
+ ({ index, style }) => {
259
+ const option = filteredOptions[index];
260
+ if (!option) return null;
261
+ return renderOptionItem(option, style);
262
+ },
263
+ [filteredOptions, renderOptionItem]
264
+ );
265
+ const listHeight = useMemo(
266
+ () => Math.min(filteredOptions.length * ITEM_HEIGHT, MAX_LIST_HEIGHT),
267
+ [filteredOptions.length]
268
+ );
269
+ const selectedSwatch = useMemo(
270
+ () => multiple ? void 0 : options.find((option) => option.value === selected)?.swatch,
271
+ [multiple, options, selected]
272
+ );
273
+ const selectedHasValue = multiple ? selected.length > 0 : selected !== "";
274
+ const hasEmptyValueOption = useMemo(
275
+ () => !multiple && options.some((option) => option.value === ""),
276
+ [multiple, options]
277
+ );
278
+ useEffect(() => {
279
+ const menuList = menuListRef.current;
280
+ const trigger = triggerRef.current;
281
+ if (!matchTriggerWidth || !isOpen || !menuList || !trigger) return void 0;
282
+ const applyTriggerWidth = () => {
283
+ menuList.style.width = `${trigger.getBoundingClientRect().width}px`;
284
+ };
285
+ applyTriggerWidth();
286
+ const resizeObserver = new ResizeObserver(applyTriggerWidth);
287
+ resizeObserver.observe(trigger);
288
+ return () => resizeObserver.disconnect();
289
+ }, [matchTriggerWidth, isOpen]);
290
+ useEffect(() => {
291
+ const menuList = menuListRef.current;
292
+ if (!isOpen || !searchable || !menuList) return void 0;
293
+ let isKeyboardInteraction = false;
294
+ let restoreFrame = 0;
295
+ const markKeyboardInteraction = () => {
296
+ isKeyboardInteraction = true;
297
+ };
298
+ const markPointerInteraction = () => {
299
+ isKeyboardInteraction = false;
300
+ };
301
+ const restoreSearchFocus = (event) => {
302
+ const searchInput = menuList.querySelector(`.${SEARCH_INPUT_MARKER_CLASS}`);
303
+ if (!searchInput || event.target !== searchInput || isKeyboardInteraction) return;
304
+ const nextFocused = event.relatedTarget;
305
+ if (nextFocused && !menuList.contains(nextFocused)) return;
306
+ restoreFrame = window.requestAnimationFrame(() => searchInput.focus({ preventScroll: true }));
307
+ };
308
+ menuList.addEventListener("keydown", markKeyboardInteraction, true);
309
+ menuList.addEventListener("pointermove", markPointerInteraction, true);
310
+ menuList.addEventListener("focusout", restoreSearchFocus);
311
+ return () => {
312
+ window.cancelAnimationFrame(restoreFrame);
313
+ menuList.removeEventListener("keydown", markKeyboardInteraction, true);
314
+ menuList.removeEventListener("pointermove", markPointerInteraction, true);
315
+ menuList.removeEventListener("focusout", restoreSearchFocus);
316
+ };
317
+ }, [isOpen, searchable]);
318
+ const handleClearSearch = useCallback(() => {
319
+ setCurrentSearchText("");
320
+ if (infiniteScroll) {
321
+ if (scrollableContainerRef.current) scrollableContainerRef.current.scrollTop = 0;
322
+ void requestPagedOptions({ search: "", reset: true });
323
+ } else {
324
+ setFilteredOptions(options);
325
+ }
326
+ if (onClearSearch) {
327
+ onClearSearch();
328
+ }
329
+ }, [infiniteScroll, requestPagedOptions, onClearSearch, options]);
330
+ const getSelectedOptionsLabels = useCallback(() => {
331
+ if (!multiple || !selected || selected.length === 0) {
332
+ return [];
333
+ }
334
+ const selectedArray = selected;
335
+ return selectedArray.map((value) => {
336
+ const trimmedValue = value.trim();
337
+ const foundOption = options.find((option) => option.value === trimmedValue);
338
+ return {
339
+ value: trimmedValue,
340
+ label: foundOption?.label || trimmedValue,
341
+ swatch: foundOption?.swatch
342
+ };
343
+ });
344
+ }, [multiple, selected, options]);
345
+ const isLateralPosition = selectedItemsPosition === "left" || selectedItemsPosition === "right";
346
+ const inFieldChipItems = inFieldChips ? getSelectedOptionsLabels() : [];
347
+ const showInFieldChips = inFieldChips && multiple && inFieldChipItems.length > 0;
348
+ const visibleInFieldChips = inFieldChipItems.slice(0, MAX_IN_FIELD_CHIPS);
349
+ const inFieldOverflow = inFieldChipItems.length - visibleInFieldChips.length;
350
+ const inFieldChipsTooltip = inFieldChipItems.map((option) => formatLabel(option.label)).join(", ");
351
+ const selectedItemsChips = showSelectedItems && multiple && getSelectedOptionsLabels().length > 1 && /* @__PURE__ */ jsx("div", { className: "flex flex-wrap gap-1", children: getSelectedOptionsLabels().map((option) => /* @__PURE__ */ jsx(
352
+ OutlinedChip,
353
+ {
354
+ label: option.label,
355
+ preserveLabelCase,
356
+ dot: Boolean(option.swatch),
357
+ dotColor: option.swatch,
358
+ className: classNames("bg-muted-active text-lg", { "px-4 py-1": isLateralPosition }),
359
+ labelClassName: isLateralPosition ? "text-sm" : void 0,
360
+ onClose: (event) => handleSelect(option.value, event),
361
+ canClose: true
362
+ },
363
+ option.value
364
+ )) });
365
+ const showClear = clearable && !disabled && Boolean(selected) && (multiple ? selected.length > 0 : selected !== "");
366
+ const cursorClassName = disabled ? "cursor-not-allowed" : "cursor-pointer";
367
+ return /* @__PURE__ */ jsxs(
368
+ ControlledMenuRoot,
369
+ {
370
+ placement: "bottom-start",
371
+ open: isOpen && !disabled,
372
+ handler: (next) => {
373
+ if (disabled) return;
374
+ setIsOpen(next);
375
+ if (next) onOpen?.();
376
+ },
377
+ dismiss: { itemPress: !multiple },
378
+ children: [
379
+ /* @__PURE__ */ jsx(ControlledMenuHandler, { children: /* @__PURE__ */ jsxs(
380
+ "div",
381
+ {
382
+ className: classNames("flex", {
383
+ "flex-col gap-y-2": selectedItemsPosition === "bottom" || selectedItemsPosition === "top",
384
+ "flex-row items-start gap-x-2": selectedItemsPosition === "left" || selectedItemsPosition === "right"
385
+ }),
386
+ children: [
387
+ (selectedItemsPosition === "top" || selectedItemsPosition === "left") && selectedItemsChips,
388
+ /* @__PURE__ */ jsxs("div", { ref: triggerRef, className: classNames("relative", cursorClassName, className), children: [
389
+ selectedSwatch && /* @__PURE__ */ jsx(
390
+ "span",
391
+ {
392
+ className: classNames(
393
+ "pointer-events-none absolute left-3 top-1/2 z-10 size-3.5 -translate-y-1/2 border border-border",
394
+ swatchShape === "square" ? "rounded" : "rounded-full"
395
+ ),
396
+ style: { backgroundColor: selectedSwatch }
397
+ }
398
+ ),
399
+ showInFieldChips && /* @__PURE__ */ jsx(ControlledTooltip, { content: inFieldChipsTooltip, className: "max-w-72", children: /* @__PURE__ */ jsxs(
400
+ "div",
401
+ {
402
+ className: classNames(
403
+ "absolute inset-y-0 left-2.5 right-14 z-10 flex items-center gap-1 overflow-hidden",
404
+ cursorClassName
405
+ ),
406
+ children: [
407
+ visibleInFieldChips.map((option) => /* @__PURE__ */ jsx(
408
+ OutlinedChip,
409
+ {
410
+ label: option.label,
411
+ preserveLabelCase,
412
+ dot: Boolean(option.swatch),
413
+ dotColor: option.swatch,
414
+ className: "min-w-0 shrink-0 bg-muted-active",
415
+ labelClassName: "text-xxs"
416
+ },
417
+ option.value
418
+ )),
419
+ inFieldOverflow > 0 && /* @__PURE__ */ jsx(
420
+ OutlinedChip,
421
+ {
422
+ label: t("controlledSelect.moreItems", { count: inFieldOverflow }),
423
+ className: "min-w-0 shrink-0 bg-muted-active",
424
+ labelClassName: "text-xxs"
425
+ }
426
+ )
427
+ ]
428
+ }
429
+ ) }),
430
+ /* @__PURE__ */ jsx(
431
+ ControlledInput,
432
+ {
433
+ readOnly: true,
434
+ role: "combobox",
435
+ "aria-haspopup": "listbox",
436
+ "aria-expanded": isOpen,
437
+ "aria-controls": scrollableContainerId,
438
+ onKeyDown: (event) => {
439
+ if (disabled) return;
440
+ if (event.key === "Enter" || event.key === " " || event.key === "ArrowDown") {
441
+ event.preventDefault();
442
+ setIsOpen(true);
443
+ onOpen?.();
444
+ } else if (event.key === "Escape" && isOpen) {
445
+ setIsOpen(false);
446
+ }
447
+ },
448
+ className: classNames(
449
+ "controlled-select-input flex w-full min-w-0 justify-between truncate text-left",
450
+ !compact && "tablet:min-w-52",
451
+ cursorClassName,
452
+ selectedSwatch && "!pl-9",
453
+ // O "x" é absoluto SOBRE o input: sem esta reserva o rótulo passa por baixo dele.
454
+ showClear && "!pr-14",
455
+ inputClassName
456
+ ),
457
+ error,
458
+ autoComplete: "off",
459
+ rightSlot: /* @__PURE__ */ jsx(MaterialSymbol, { className: cursorClassName, icon: "keyboard_arrow_down", size: 15 }),
460
+ label: selectedHasValue && !persistentLabel ? void 0 : label,
461
+ "aria-label": ariaLabel ?? label,
462
+ "aria-required": ariaRequired ? "true" : void 0,
463
+ value: showInFieldChips ? " " : selectedHasValue || hasEmptyValueOption ? getDisplayLabel() : "",
464
+ disabled
465
+ }
466
+ ),
467
+ showClear && /* @__PURE__ */ jsx(ControlledTooltip, { content: t("dates.clearSelection"), children: /* @__PURE__ */ jsx(
468
+ "div",
469
+ {
470
+ onClick: handleClearSelection,
471
+ className: "absolute inset-y-0 right-8 top-0.5 flex cursor-pointer items-center",
472
+ children: /* @__PURE__ */ jsx(MaterialSymbol, { icon: "close_small", size: 20, color: "rgb(var(--color-foreground-subtle))" })
473
+ }
474
+ ) })
475
+ ] }),
476
+ (selectedItemsPosition === "bottom" || selectedItemsPosition === "right") && selectedItemsChips
477
+ ]
478
+ }
479
+ ) }),
480
+ /* @__PURE__ */ jsxs(
481
+ ControlledMenuList,
482
+ {
483
+ ref: menuListRef,
484
+ className: classNames("zIndexMax w-80 max-w-[calc(100vw-1.5rem)] overflow-hidden", listClassName),
485
+ children: [
486
+ searchable && /* @__PURE__ */ jsx(SelectSearchSlot, { children: /* @__PURE__ */ jsx(
487
+ UnifiedSearchBar,
488
+ {
489
+ mode: "default",
490
+ label: t("actions.search"),
491
+ debounceTime: SEARCH_DEBOUNCE_MS,
492
+ searchableItems: infiniteScroll ? null : options,
493
+ searchKeys: ["label", "secondaryLabel"],
494
+ setFilteredItems: setFilteredOptions,
495
+ onSearchTermChange: handleServerSearch,
496
+ className: classNames("w-full", SEARCH_INPUT_MARKER_CLASS),
497
+ onClearFilter: handleClearSearch,
498
+ initialValue: currentSearchText
499
+ }
500
+ ) }),
501
+ /* @__PURE__ */ jsx(
502
+ "div",
503
+ {
504
+ ref: scrollableContainerRef,
505
+ className: classNames({
506
+ "max-h-[250px] overflow-y-auto overscroll-contain": infiniteScroll,
507
+ "overflow-hidden": !infiniteScroll
508
+ }),
509
+ id: scrollableContainerId,
510
+ children: infiniteScroll ? /* @__PURE__ */ jsx(
511
+ InfiniteScroll,
512
+ {
513
+ dataLength: filteredOptions.length,
514
+ hasMore: hasMoreOptions && filteredOptions.length > 0,
515
+ next: handleLoadMoreFromScroll,
516
+ loader: /* @__PURE__ */ jsx("div", { className: "flex size-full items-center justify-center py-1", children: /* @__PURE__ */ jsx(LoadingSpinner, { size: 4, label: t("controlledSelect.loadingOptions") }) }),
517
+ scrollableTarget: scrollableContainerId,
518
+ className: "!overflow-hidden",
519
+ children: filteredOptions.length > 0 ? filteredOptions.map((option) => renderOptionItem(option)) : loading ? /* @__PURE__ */ jsx("div", { className: "flex w-full items-center justify-center py-4", children: /* @__PURE__ */ jsx(LoadingSpinner, { size: 4, label: t("controlledSelect.loadingOptions") }) }) : /* @__PURE__ */ jsx(ControlledMenuItem, { disabled: true, children: /* @__PURE__ */ jsx(NoDataFound, { compact: true, message: t("controlledSelect.noDataToShow") }) })
520
+ }
521
+ ) : filteredOptions.length > 0 ? /* @__PURE__ */ jsx(
522
+ FixedSizeList,
523
+ {
524
+ className: "virtualized-select-list",
525
+ height: listHeight,
526
+ width: "100%",
527
+ itemCount: filteredOptions.length,
528
+ itemSize: ITEM_HEIGHT,
529
+ overscanCount: OVERSCAN_COUNT,
530
+ children: ItemRenderer
531
+ }
532
+ ) : loading ? /* @__PURE__ */ jsx("div", { className: "flex w-full items-center justify-center py-4", children: /* @__PURE__ */ jsx(LoadingSpinner, { size: 4, label: t("controlledSelect.loadingOptions") }) }) : /* @__PURE__ */ jsx(ControlledMenuItem, { disabled: true, children: /* @__PURE__ */ jsx(NoDataFound, { compact: true, message: t("controlledSelect.noDataToShow") }) })
533
+ }
534
+ )
535
+ ]
536
+ }
537
+ )
538
+ ]
539
+ }
540
+ );
541
+ }
542
+ export {
543
+ ControlledSelect
544
+ };
545
+ //# sourceMappingURL=ControlledSelect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ControlledSelect.js","sources":["../../../src/components/Form/ControlledSelect.tsx"],"sourcesContent":["import { ReactNode, useCallback, useEffect, useId, useMemo, useRef, useState } from 'react';\nimport classNames from 'classnames';\nimport { useTranslation } from 'react-i18next';\nimport InfiniteScroll from 'react-infinite-scroll-component';\nimport { FixedSizeList as List } from 'react-window';\n\nimport {\n ControlledMenuHandler,\n ControlledMenuItem,\n ControlledMenuList,\n ControlledMenuRoot,\n} from '@/components/UI/ControlledMenu';\nimport ControlledTooltip from '@/components/UI/ControlledTooltip';\nimport { capitalizeAllLetters, formatFilter } from '@/helpers/stringHelpers';\nimport { uiLogger } from '@/helpers/uiLogger';\n\nimport { IFilterOption } from '../../interfaces/IFilterOption';\nimport { UnifiedSearchBar } from '../Search';\nimport OutlinedChip from '../UI/Chips/OutlinedChip';\nimport LoadingSpinner from '../UI/LoadingSpinner';\nimport { MaterialSymbol } from '../UI/MaterialSymbol';\nimport NoDataFound from '../UI/NoDataFound';\n\nimport ControlledCheckbox from './ControlledCheckbox';\nimport ControlledInput from './ControlledInput';\n\nimport '../../styles/virtualizedSelect.css';\n\n/**\n * Contract of `fetchMoreOptions`, the single loader of infinite-scroll selects.\n * `reset: true` means \"replace the list with page 1 of `search`\" (a new search, a cleared\n * search, or the restore to the unfiltered baseline). `reset: false` means \"append the NEXT\n * page of the same `search`\". The consumer owns the page counter and the accumulated\n * `options` prop; this component never accumulates results itself.\n */\nexport interface IControlledSelectFetchParams {\n search: string;\n reset: boolean;\n}\n\ntype TControlledSelectProps = {\n label?: string;\n // Mantém a label flutuante visível (encolhida na borda) mesmo com um valor selecionado.\n // Padrão: false — a label some ao selecionar, assumindo que há um rótulo externo acima.\n persistentLabel?: boolean;\n options: Array<IFilterOption>;\n selectedValue: string | Array<string>;\n error?: boolean;\n multiple?: boolean;\n searchable?: boolean;\n disabled?: boolean;\n clearable?: boolean;\n className?: string;\n listClassName?: string;\n onChangeHook: (selected: string | Array<string>) => void;\n infiniteScroll?: boolean;\n fetchMoreOptions?: (params: IControlledSelectFetchParams) => Promise<unknown>;\n hasMoreOptions?: boolean;\n loading?: boolean;\n onClearSearch?: () => void;\n onOpen?: () => void;\n selectedItemsPosition?: 'bottom' | 'top' | 'left' | 'right';\n // When false, the selected-items chips are not rendered beside the trigger;\n // only the count summary (\"N itens selecionados\") shows inside the trigger.\n showSelectedItems?: boolean;\n // Multi-select only: render the selected values as chips inside the trigger\n // field (with a \"+N\" overflow indicator and a tooltip listing all of them)\n // instead of the generic \"N itens selecionados\" count.\n inFieldChips?: boolean;\n // Por padrão as labels passam por capitalizeAllLetters (Primeira Maiúscula, resto\n // minúsculo). Use true quando a label é um identificador literal — nome de tabela,\n // coluna, chave — em que o caixa original é significativo e não pode ser alterado.\n preserveLabelCase?: boolean;\n // Shape of the option swatch. Colors read as the square chip the libraries use;\n // the dot stays the default for tags and categories.\n swatchShape?: 'dot' | 'square';\n // Accessible name of the trigger, for a field whose meaning comes from the\n // surrounding layout and therefore renders no visible label or placeholder.\n ariaLabel?: string;\n // Marks the combobox trigger as required for assistive tech (aria-required).\n ariaRequired?: boolean;\n // Classes for the trigger input itself, for a select embedded in a composed\n // control (a segmented field) that must drop its own border, fill or minimum\n // width. `className` styles the wrapper and cannot reach the input.\n inputClassName?: string;\n // The dropdown has a fixed width (w-80) that fits a field of the default size.\n // Set this when the field is wider (full-width in a dialog, for instance) so the\n // panel, and with it the search box, follows the field instead of staying narrow.\n matchTriggerWidth?: boolean;\n compact?: boolean;\n};\n\nconst ITEM_HEIGHT = 40;\nconst MAX_LIST_HEIGHT = 300;\nconst OVERSCAN_COUNT = 10;\nconst SEARCH_DEBOUNCE_MS = 300;\n// How many selected chips fit inside the trigger before collapsing into \"+N\".\nconst MAX_IN_FIELD_CHIPS = 2;\n\n// Marks the search field so focus can be handed back to it without matching the\n// option checkboxes, which are inputs too.\nconst SEARCH_INPUT_MARKER_CLASS = 'controlled-select-search-input';\n\n/* Padding wrapper. The click is stopped here so a press on the search field is never read\n as a press on an option by the list above it. */\nconst SelectSearchSlot: React.FC<{ children?: ReactNode }> = ({ children }) => (\n <div className=\"px-1 py-0.5\" onClick={(event) => event.stopPropagation()}>\n {children}\n </div>\n);\n\nexport function ControlledSelect({\n label,\n persistentLabel = false,\n options: optionsProp,\n selectedValue,\n error = false,\n multiple = false,\n disabled = false,\n searchable = true,\n clearable = true,\n className,\n listClassName,\n onChangeHook,\n onClearSearch,\n infiniteScroll = false,\n fetchMoreOptions,\n hasMoreOptions = false,\n loading = false,\n onOpen,\n selectedItemsPosition = 'bottom',\n showSelectedItems = true,\n inFieldChips = false,\n preserveLabelCase = false,\n swatchShape = 'dot',\n ariaLabel,\n ariaRequired,\n inputClassName,\n matchTriggerWidth = false,\n compact = false,\n}: TControlledSelectProps) {\n const { t } = useTranslation('ui');\n const options = useMemo(() => (Array.isArray(optionsProp) ? optionsProp : []), [optionsProp]);\n const formatLabel = useCallback(\n (value?: string) => (preserveLabelCase ? (value ?? '') : capitalizeAllLetters(value)),\n [preserveLabelCase],\n );\n const normalizeSelected = useCallback(\n (value: string | Array<string>): string | Array<string> => {\n if (multiple) {\n if (typeof value === 'string') {\n return value === '' ? [] : [value];\n }\n if (Array.isArray(value)) {\n // Legacy multi values arrive as one comma-joined string. A legitimate single value\n // that happens to contain a comma is recognizable by matching a loaded option.\n if (value.length === 1 && value[0].includes(',') && !options.some((option) => option.value === value[0])) {\n return value[0]\n .split(',')\n .map((item) => item.trim())\n .filter((item) => item !== '');\n }\n return value;\n }\n return [];\n } else {\n return typeof value === 'string' ? value : '';\n }\n },\n [multiple, options],\n );\n\n const [selected, setSelected] = useState<string | Array<string>>(() => normalizeSelected(selectedValue));\n\n useEffect(() => {\n setSelected(normalizeSelected(selectedValue));\n }, [selectedValue, normalizeSelected]);\n\n const [filteredOptions, setFilteredOptions] = useState(options);\n const [isOpen, setIsOpen] = useState(false);\n const menuListRef = useRef<HTMLDivElement>(null);\n const triggerRef = useRef<HTMLDivElement>(null);\n const [currentSearchText, setCurrentSearchText] = useState('');\n\n // Unique per instance: a fixed id would make InfiniteScroll attach its scroll listener to\n // the FIRST matching node in the document, which can be another select's list still\n // mounted while its close animation plays.\n const scrollableContainerId = useId();\n const scrollableContainerRef = useRef<HTMLDivElement>(null);\n const isLoadingMoreRef = useRef(false);\n\n // Re-sync the rendered list when the consumer's options change. In client-filtered mode an\n // active search survives the re-sync (same predicate as UnifiedSearchBar), otherwise a parent\n // re-render would wipe the filter while the term stays in the search box.\n useEffect(() => {\n if (!infiniteScroll && currentSearchText) {\n setFilteredOptions(\n options.filter((option) =>\n [option.label, option.secondaryLabel].some((field) => formatFilter(String(field ?? ''), currentSearchText)),\n ),\n );\n return;\n }\n setFilteredOptions(options);\n }, [options]);\n\n const requestPagedOptions = useCallback(\n async (params: IControlledSelectFetchParams) => {\n if (!fetchMoreOptions) return;\n try {\n await fetchMoreOptions(params);\n } catch (fetchError) {\n uiLogger.error('Failed to fetch select options', fetchError);\n }\n },\n [fetchMoreOptions],\n );\n\n const handleLoadMoreFromScroll = useCallback(async () => {\n if (!infiniteScroll || !hasMoreOptions || isLoadingMoreRef.current) return;\n isLoadingMoreRef.current = true;\n try {\n await requestPagedOptions({ search: currentSearchText, reset: false });\n } finally {\n isLoadingMoreRef.current = false;\n }\n }, [infiniteScroll, hasMoreOptions, requestPagedOptions, currentSearchText]);\n\n const handleServerSearch = useCallback(\n (searchText: string) => {\n setCurrentSearchText(searchText);\n if (!infiniteScroll) return;\n if (scrollableContainerRef.current) scrollableContainerRef.current.scrollTop = 0;\n void requestPagedOptions({ search: searchText, reset: true });\n },\n [infiniteScroll, requestPagedOptions],\n );\n\n // Closing with an active search would leave the consumer's list holding only the search\n // results, so the next open would show a filtered list with an empty search box. Restore\n // the unfiltered baseline as the menu closes.\n useEffect(() => {\n if (isOpen || !infiniteScroll || currentSearchText === '') return;\n setCurrentSearchText('');\n void requestPagedOptions({ search: '', reset: true });\n }, [isOpen]);\n\n const handleSelect = useCallback(\n (option: string, event: React.MouseEvent) => {\n if (multiple) {\n event.stopPropagation();\n event.preventDefault();\n\n const currentSelection = selected as Array<string>;\n if (currentSelection.includes(option)) {\n const newSelection = currentSelection.filter((item) => item !== option);\n setSelected(newSelection);\n onChangeHook(newSelection);\n } else {\n const newSelection = [...currentSelection, option];\n setSelected(newSelection);\n onChangeHook(newSelection);\n }\n } else {\n setSelected(option);\n onChangeHook(option);\n if (!infiniteScroll) {\n setCurrentSearchText('');\n setFilteredOptions(options);\n }\n setIsOpen(false);\n }\n },\n [multiple, selected, onChangeHook, options, infiniteScroll],\n );\n\n const handleClearSelection = useCallback(() => {\n if (multiple) {\n setSelected([]);\n onChangeHook([]);\n } else {\n setSelected('');\n onChangeHook('');\n }\n\n if (!infiniteScroll) {\n setCurrentSearchText('');\n setFilteredOptions(options);\n }\n\n if (onClearSearch) {\n onClearSearch();\n }\n }, [multiple, onChangeHook, onClearSearch, options, infiniteScroll]);\n\n const getDisplayLabel = useCallback(() => {\n if (multiple) {\n const selectedArray = selected as Array<string>;\n if (selectedArray.length === 0) {\n return '';\n } else if (selectedArray.length === 1) {\n const foundOption = options.find((item) => item.value === selectedArray[0]);\n\n return formatLabel(foundOption?.label || selectedArray[0]);\n } else {\n return `${selectedArray.length} itens selecionados`;\n }\n } else {\n const foundOption = options.find((item) => item.value === selected);\n\n return formatLabel(foundOption?.label || (selected as string) || label);\n }\n }, [multiple, selected, options, label, formatLabel]);\n\n const renderOptionItem = useCallback(\n (option: IFilterOption, style?: React.CSSProperties) => {\n const isSelected = multiple\n ? Array.isArray(selected) && selected.includes(option.value)\n : option.value === selected;\n\n // A disabled option explains itself on hover over the WHOLE row, not just the info icon.\n const isDisabledWithReason = Boolean(option.disabled && option.tooltip);\n\n const menuItem = (\n <ControlledMenuItem\n key={isDisabledWithReason ? undefined : option.value}\n disabled={option.disabled}\n onClick={(event: React.MouseEvent) => handleSelect(option.value, event)}\n className={classNames('relative flex items-center p-2 pl-3 text-foreground', {\n // The hover variant has to live inside the selected branch: the menu item's own\n // default hover would otherwise wipe the selected tint.\n 'bg-brand-soft font-medium text-brand-emphasis hover:!bg-brand-soft focus:!bg-brand-soft': isSelected,\n 'hover:!bg-muted': !isSelected,\n })}\n style={{\n ...(isDisabledWithReason ? {} : style),\n height: ITEM_HEIGHT - 1,\n }}\n >\n {isSelected && <span className=\"absolute inset-y-1 left-0 w-0.5 rounded-full bg-brand\" />}\n {multiple && <ControlledCheckbox checked={isSelected} onChange={() => {}} />}\n {option.tooltip && !isDisabledWithReason && (\n <ControlledTooltip content={option.tooltip} className=\"w-full max-w-72\">\n <MaterialSymbol icon=\"info\" size={15} color=\"rgb(var(--color-foreground-subtle))\" className=\"mr-1\" />\n </ControlledTooltip>\n )}\n {option.swatch && (\n <span\n className={classNames(\n 'mr-2 size-3.5 shrink-0 border border-border',\n swatchShape === 'square' ? 'rounded' : 'rounded-full',\n )}\n style={{ backgroundColor: option.swatch }}\n />\n )}\n <span className=\"truncate text-sm\">{formatLabel(option.label)}</span>\n {option.secondaryLabel && (\n <span className=\"ml-auto max-w-[45%] shrink-0 truncate pl-3 text-xs text-foreground-faint\">\n {option.secondaryLabel}\n </span>\n )}\n </ControlledMenuItem>\n );\n\n // The wrapper div carries the virtualized position because the tooltip clones its child and\n // injects its own ref.\n return isDisabledWithReason ? (\n <ControlledTooltip key={option.value} content={option.tooltip} className=\"z-[9999] max-w-72\">\n <div style={style}>{menuItem}</div>\n </ControlledTooltip>\n ) : (\n menuItem\n );\n },\n [multiple, selected, handleSelect, formatLabel],\n );\n\n const ItemRenderer = useCallback(\n ({ index, style }: { index: number; style: React.CSSProperties }) => {\n const option = filteredOptions[index];\n if (!option) return null;\n\n return renderOptionItem(option, style);\n },\n [filteredOptions, renderOptionItem],\n );\n\n const listHeight = useMemo(\n () => Math.min(filteredOptions.length * ITEM_HEIGHT, MAX_LIST_HEIGHT),\n [filteredOptions.length],\n );\n\n const selectedSwatch = useMemo(\n () => (multiple ? undefined : options.find((option) => option.value === selected)?.swatch),\n [multiple, options, selected],\n );\n\n // Com uma opção selecionada, o próprio valor identifica o campo: a label flutuante\n // some (evita duplicar quando já há um rótulo externo acima do select).\n const selectedHasValue = multiple ? (selected as Array<string>).length > 0 : selected !== '';\n\n /**\n * Opção declarada com valor vazio (\"Todas\", \"Nenhum\", \"Sem recorte\"): é uma\n * escolha de verdade, não a ausência de escolha, então o campo precisa exibir\n * o rótulo dela em vez de ficar em branco.\n */\n const hasEmptyValueOption = useMemo(\n () => !multiple && options.some((option) => option.value === ''),\n [multiple, options],\n );\n\n // The dropdown is portaled, so a percentage width would resolve against the\n // page, and a runtime pixel value cannot become a Tailwind arbitrary class.\n // The measured width is written straight onto the node: the floating logic\n // overwrites the MenuList `style` prop with its own position, and React never\n // clears `width` because it is not part of that style object.\n useEffect(() => {\n const menuList = menuListRef.current;\n const trigger = triggerRef.current;\n if (!matchTriggerWidth || !isOpen || !menuList || !trigger) return undefined;\n\n const applyTriggerWidth = () => {\n menuList.style.width = `${trigger.getBoundingClientRect().width}px`;\n };\n\n applyTriggerWidth();\n\n const resizeObserver = new ResizeObserver(applyTriggerWidth);\n resizeObserver.observe(trigger);\n\n return () => resizeObserver.disconnect();\n }, [matchTriggerWidth, isOpen]);\n\n // Moving the pointer inside the menu makes floating-ui's list navigation pull\n // focus off the search field (it focuses the hovered option, or the menu\n // container on pointer leave). Take focus back whenever the pointer caused it,\n // while leaving keyboard navigation into the options alone.\n useEffect(() => {\n const menuList = menuListRef.current;\n if (!isOpen || !searchable || !menuList) return undefined;\n\n let isKeyboardInteraction = false;\n let restoreFrame = 0;\n\n const markKeyboardInteraction = () => {\n isKeyboardInteraction = true;\n };\n\n const markPointerInteraction = () => {\n isKeyboardInteraction = false;\n };\n\n const restoreSearchFocus = (event: FocusEvent) => {\n const searchInput = menuList.querySelector<HTMLInputElement>(`.${SEARCH_INPUT_MARKER_CLASS}`);\n if (!searchInput || event.target !== searchInput || isKeyboardInteraction) return;\n\n const nextFocused = event.relatedTarget as Node | null;\n if (nextFocused && !menuList.contains(nextFocused)) return;\n\n // The steal happens as this event is dispatched, so reclaim on the next frame.\n restoreFrame = window.requestAnimationFrame(() => searchInput.focus({ preventScroll: true }));\n };\n\n menuList.addEventListener('keydown', markKeyboardInteraction, true);\n menuList.addEventListener('pointermove', markPointerInteraction, true);\n menuList.addEventListener('focusout', restoreSearchFocus);\n\n return () => {\n window.cancelAnimationFrame(restoreFrame);\n menuList.removeEventListener('keydown', markKeyboardInteraction, true);\n menuList.removeEventListener('pointermove', markPointerInteraction, true);\n menuList.removeEventListener('focusout', restoreSearchFocus);\n };\n }, [isOpen, searchable]);\n\n const handleClearSearch = useCallback(() => {\n setCurrentSearchText('');\n\n if (infiniteScroll) {\n if (scrollableContainerRef.current) scrollableContainerRef.current.scrollTop = 0;\n void requestPagedOptions({ search: '', reset: true });\n } else {\n setFilteredOptions(options);\n }\n\n if (onClearSearch) {\n onClearSearch();\n }\n }, [infiniteScroll, requestPagedOptions, onClearSearch, options]);\n\n const getSelectedOptionsLabels = useCallback(() => {\n if (!multiple || !selected || (selected as Array<string>).length === 0) {\n return [];\n }\n\n const selectedArray = selected as Array<string>;\n\n return selectedArray.map((value) => {\n const trimmedValue = value.trim();\n const foundOption = options.find((option) => option.value === trimmedValue);\n return {\n value: trimmedValue,\n label: foundOption?.label || trimmedValue,\n swatch: foundOption?.swatch,\n };\n });\n }, [multiple, selected, options]);\n\n const isLateralPosition = selectedItemsPosition === 'left' || selectedItemsPosition === 'right';\n\n const inFieldChipItems = inFieldChips ? getSelectedOptionsLabels() : [];\n const showInFieldChips = inFieldChips && multiple && inFieldChipItems.length > 0;\n const visibleInFieldChips = inFieldChipItems.slice(0, MAX_IN_FIELD_CHIPS);\n const inFieldOverflow = inFieldChipItems.length - visibleInFieldChips.length;\n const inFieldChipsTooltip = inFieldChipItems.map((option) => formatLabel(option.label)).join(', ');\n\n const selectedItemsChips = showSelectedItems && multiple && getSelectedOptionsLabels().length > 1 && (\n <div className=\"flex flex-wrap gap-1\">\n {getSelectedOptionsLabels().map((option) => (\n <OutlinedChip\n key={option.value}\n label={option.label}\n preserveLabelCase={preserveLabelCase}\n dot={Boolean(option.swatch)}\n dotColor={option.swatch}\n className={classNames('bg-muted-active text-lg', { 'px-4 py-1': isLateralPosition })}\n labelClassName={isLateralPosition ? 'text-sm' : undefined}\n onClose={(event: React.MouseEvent) => handleSelect(option.value, event)}\n canClose\n />\n ))}\n </div>\n );\n\n const showClear =\n clearable &&\n !disabled &&\n Boolean(selected) &&\n (multiple ? (selected as Array<string>).length > 0 : selected !== '');\n\n const cursorClassName = disabled ? 'cursor-not-allowed' : 'cursor-pointer';\n\n return (\n <ControlledMenuRoot\n placement=\"bottom-start\"\n open={isOpen && !disabled}\n handler={(next) => {\n if (disabled) return;\n setIsOpen(next);\n if (next) onOpen?.();\n }}\n dismiss={{ itemPress: !multiple }}\n >\n <ControlledMenuHandler>\n <div\n className={classNames('flex', {\n 'flex-col gap-y-2': selectedItemsPosition === 'bottom' || selectedItemsPosition === 'top',\n 'flex-row items-start gap-x-2': selectedItemsPosition === 'left' || selectedItemsPosition === 'right',\n })}\n >\n {(selectedItemsPosition === 'top' || selectedItemsPosition === 'left') && selectedItemsChips}\n <div ref={triggerRef} className={classNames('relative', cursorClassName, className)}>\n {selectedSwatch && (\n <span\n className={classNames(\n 'pointer-events-none absolute left-3 top-1/2 z-10 size-3.5 -translate-y-1/2 border border-border',\n swatchShape === 'square' ? 'rounded' : 'rounded-full',\n )}\n style={{ backgroundColor: selectedSwatch }}\n />\n )}\n {showInFieldChips && (\n <ControlledTooltip content={inFieldChipsTooltip} className=\"max-w-72\">\n <div\n className={classNames(\n 'absolute inset-y-0 left-2.5 right-14 z-10 flex items-center gap-1 overflow-hidden',\n cursorClassName,\n )}\n >\n {visibleInFieldChips.map((option) => (\n <OutlinedChip\n key={option.value}\n label={option.label}\n preserveLabelCase={preserveLabelCase}\n dot={Boolean(option.swatch)}\n dotColor={option.swatch}\n className=\"min-w-0 shrink-0 bg-muted-active\"\n labelClassName=\"text-xxs\"\n />\n ))}\n {inFieldOverflow > 0 && (\n <OutlinedChip\n label={t('controlledSelect.moreItems', { count: inFieldOverflow })}\n className=\"min-w-0 shrink-0 bg-muted-active\"\n labelClassName=\"text-xxs\"\n />\n )}\n </div>\n </ControlledTooltip>\n )}\n <ControlledInput\n readOnly\n role=\"combobox\"\n // eslint-disable-next-line i18n-check/no-literal-jsx-strings -- ARIA token, not user-facing text\n aria-haspopup=\"listbox\"\n aria-expanded={isOpen}\n aria-controls={scrollableContainerId}\n onKeyDown={(event) => {\n if (disabled) return;\n if (event.key === 'Enter' || event.key === ' ' || event.key === 'ArrowDown') {\n event.preventDefault();\n setIsOpen(true);\n onOpen?.();\n } else if (event.key === 'Escape' && isOpen) {\n setIsOpen(false);\n }\n }}\n className={classNames(\n 'controlled-select-input flex w-full min-w-0 justify-between truncate text-left',\n !compact && 'tablet:min-w-52',\n cursorClassName,\n selectedSwatch && '!pl-9',\n // O \"x\" é absoluto SOBRE o input: sem esta reserva o rótulo passa por baixo dele.\n showClear && '!pr-14',\n inputClassName,\n )}\n error={error}\n autoComplete=\"off\"\n rightSlot={<MaterialSymbol className={cursorClassName} icon=\"keyboard_arrow_down\" size={15} />}\n label={selectedHasValue && !persistentLabel ? undefined : label}\n aria-label={ariaLabel ?? label}\n aria-required={ariaRequired ? 'true' : undefined}\n value={showInFieldChips ? ' ' : selectedHasValue || hasEmptyValueOption ? getDisplayLabel() : ''}\n disabled={disabled}\n />\n\n {showClear && (\n <ControlledTooltip content={t('dates.clearSelection')}>\n <div\n onClick={handleClearSelection}\n className=\"absolute inset-y-0 right-8 top-0.5 flex cursor-pointer items-center\"\n >\n <MaterialSymbol icon=\"close_small\" size={20} color=\"rgb(var(--color-foreground-subtle))\" />\n </div>\n </ControlledTooltip>\n )}\n </div>\n\n {(selectedItemsPosition === 'bottom' || selectedItemsPosition === 'right') && selectedItemsChips}\n </div>\n </ControlledMenuHandler>\n\n <ControlledMenuList\n ref={menuListRef}\n className={classNames('zIndexMax w-80 max-w-[calc(100vw-1.5rem)] overflow-hidden', listClassName)}\n >\n {searchable && (\n <SelectSearchSlot>\n <UnifiedSearchBar\n mode=\"default\"\n label={t('actions.search')}\n debounceTime={SEARCH_DEBOUNCE_MS}\n // Em modo infinito quem filtra é o servidor: sem itens, a barra só reporta o\n // termo via onSearchTermChange e nunca escreve na lista local.\n searchableItems={infiniteScroll ? null : options}\n searchKeys={['label', 'secondaryLabel']}\n setFilteredItems={setFilteredOptions}\n onSearchTermChange={handleServerSearch}\n className={classNames('w-full', SEARCH_INPUT_MARKER_CLASS)}\n onClearFilter={handleClearSearch}\n initialValue={currentSearchText}\n />\n </SelectSearchSlot>\n )}\n\n <div\n ref={scrollableContainerRef}\n className={classNames({\n 'max-h-[250px] overflow-y-auto overscroll-contain': infiniteScroll,\n 'overflow-hidden': !infiniteScroll,\n })}\n id={scrollableContainerId}\n >\n {infiniteScroll ? (\n <InfiniteScroll\n dataLength={filteredOptions.length}\n // O loader do InfiniteScroll é renderizado sempre que `hasMore` é verdadeiro, ao lado\n // do conteúdo. Com a lista vazia isso empilhava o spinner sobre o estado vazio (ou\n // sobre o próprio spinner de `loading`): sem opções, quem manda é o bloco abaixo.\n hasMore={hasMoreOptions && filteredOptions.length > 0}\n next={handleLoadMoreFromScroll}\n loader={\n <div className=\"flex size-full items-center justify-center py-1\">\n <LoadingSpinner size={4} label={t('controlledSelect.loadingOptions')} />\n </div>\n }\n scrollableTarget={scrollableContainerId}\n // `overflow-hidden` makes this a scroll port the user cannot scroll, so\n // `overscroll-none` here stopped the wheel from ever reaching the container\n // that does scroll: the list only moved by dragging its bar. Containment\n // belongs to that container, which already declares `overscroll-contain`.\n className=\"!overflow-hidden\"\n >\n {filteredOptions.length > 0 ? (\n filteredOptions.map((option) => renderOptionItem(option))\n ) : loading ? (\n <div className=\"flex w-full items-center justify-center py-4\">\n <LoadingSpinner size={4} label={t('controlledSelect.loadingOptions')} />\n </div>\n ) : (\n <ControlledMenuItem disabled>\n <NoDataFound compact message={t('controlledSelect.noDataToShow')} />\n </ControlledMenuItem>\n )}\n </InfiniteScroll>\n ) : filteredOptions.length > 0 ? (\n <List\n className=\"virtualized-select-list\"\n height={listHeight}\n // eslint-disable-next-line i18n-check/no-literal-jsx-strings\n width=\"100%\"\n itemCount={filteredOptions.length}\n itemSize={ITEM_HEIGHT}\n overscanCount={OVERSCAN_COUNT}\n >\n {ItemRenderer}\n </List>\n ) : loading ? (\n <div className=\"flex w-full items-center justify-center py-4\">\n <LoadingSpinner size={4} label={t('controlledSelect.loadingOptions')} />\n </div>\n ) : (\n <ControlledMenuItem disabled>\n <NoDataFound compact message={t('controlledSelect.noDataToShow')} />\n </ControlledMenuItem>\n )}\n </div>\n </ControlledMenuList>\n </ControlledMenuRoot>\n );\n}\n"],"names":["List"],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ interface IControlledSwitchProps {
2
+ checked: boolean;
3
+ onChange: (checked: boolean) => void;
4
+ label?: string;
5
+ /** Nome acessível quando o switch não tem `label` visível (ex.: linha com rótulo à esquerda). */
6
+ ariaLabel?: string;
7
+ color?: 'blue' | 'red' | 'green' | 'amber' | 'purple' | 'indigo' | 'pink' | 'teal';
8
+ disabled?: boolean;
9
+ className?: string;
10
+ labelClassName?: string;
11
+ size?: 'sm' | 'md' | 'lg' | 'xl';
12
+ }
13
+ declare const ControlledSwitch: ({ checked, onChange, label, ariaLabel, color, disabled, className, labelClassName, size, }: IControlledSwitchProps) => import("react").JSX.Element;
14
+ export default ControlledSwitch;