@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 @@
1
+ {"version":3,"file":"FiltersForm.js","sources":["../../../../src/components/Search/filters/FiltersForm.tsx"],"sourcesContent":["import { useMemo, useState } from 'react';\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { useTranslation } from 'react-i18next';\n\nimport ControlledButton from '@/components/Form/ControlledButton';\nimport ControlledTooltip from '@/components/UI/ControlledTooltip';\nimport { MaterialSymbol } from '@/components/UI/MaterialSymbol';\nimport NoDataFound from '@/components/UI/NoDataFound';\n\nimport FilterFieldControl from './FilterFieldControl';\nimport { IFilterGroup, TFilterField, TFilterValues } from './filterTypes';\nimport { getVisibleFilterFields } from './filterValues';\n\nconst UNGROUPED = '__ungrouped';\n\nexport interface IFiltersFormProps {\n fields: Array<TFilterField>;\n groups?: Array<IFilterGroup>;\n values: TFilterValues;\n onValueChange: (key: string, value: unknown) => void;\n disabled?: boolean;\n loading?: boolean;\n emptyMessage?: string;\n className?: string;\n}\n\ninterface IRenderableGroup {\n group: IFilterGroup | null;\n fields: Array<TFilterField>;\n}\n\n/**\n * Renders a schema. Knows nothing about drawers, so the same form powers the\n * side panel, an inline bar and a popover.\n */\nconst FiltersForm: React.FC<IFiltersFormProps> = ({\n fields,\n groups,\n values,\n onValueChange,\n disabled,\n loading,\n emptyMessage,\n className,\n}) => {\n const { t } = useTranslation('ui');\n\n const visibleFields = useMemo(() => getVisibleFilterFields(fields ?? [], values ?? {}), [fields, values]);\n\n const renderableGroups = useMemo<Array<IRenderableGroup>>(() => {\n const declared = groups ?? [];\n if (declared.length === 0) return [{ group: null, fields: visibleFields }];\n\n const byGroup = new Map<string, Array<TFilterField>>();\n visibleFields.forEach((field) => {\n const groupId = field.group ?? UNGROUPED;\n byGroup.set(groupId, [...(byGroup.get(groupId) ?? []), field]);\n });\n\n const result: Array<IRenderableGroup> = [];\n const ungrouped = byGroup.get(UNGROUPED) ?? [];\n if (ungrouped.length > 0) result.push({ group: null, fields: ungrouped });\n\n declared.forEach((group) => {\n const groupFields = byGroup.get(group.id) ?? [];\n if (groupFields.length > 0) result.push({ group, fields: groupFields });\n });\n\n return result;\n }, [groups, visibleFields]);\n\n const [collapsed, setCollapsed] = useState<Record<string, boolean>>(() => {\n const initial: Record<string, boolean> = {};\n (groups ?? []).forEach((group) => {\n if (group.collapsible && group.defaultOpen === false) initial[group.id] = true;\n });\n\n return initial;\n });\n\n if (visibleFields.length === 0 && !loading) {\n return <NoDataFound size=\"sm\" variant=\"empty\" message={emptyMessage ?? t('filters.noFields')} />;\n }\n\n const renderField = (field: TFilterField) => {\n const control = (\n <FilterFieldControl\n field={field}\n value={values?.[field.key]}\n values={values ?? {}}\n onChange={(next) => onValueChange(field.key, next)}\n disabled={disabled}\n loading={loading}\n />\n );\n\n if (!field.disabled || !field.disabledReason) return <div key={field.key}>{control}</div>;\n\n return (\n <ControlledTooltip key={field.key} className=\"z-[9999]\" content={field.disabledReason}>\n <div>{control}</div>\n </ControlledTooltip>\n );\n };\n\n return (\n <div className={classNames('flex flex-col gap-y-4', className)}>\n {renderableGroups.map(({ group, fields: groupFields }) => {\n if (!group) {\n return (\n <div key={UNGROUPED} className=\"flex flex-col gap-y-4\">\n {groupFields.map(renderField)}\n </div>\n );\n }\n\n const isCollapsed = Boolean(collapsed[group.id]);\n\n return (\n <section\n key={group.id}\n className=\"flex flex-col gap-y-3 border-t border-border-subtle pt-4 first:border-t-0 first:pt-0\"\n >\n <ControlledButton\n defaultHtmlButton\n disabled={!group.collapsible}\n onClick={() => group.collapsible && setCollapsed((prev) => ({ ...prev, [group.id]: !prev[group.id] }))}\n className=\"flex w-full items-center justify-between gap-x-2 text-left\"\n >\n <span className=\"flex items-center gap-x-2\">\n {group.icon && <MaterialSymbol icon={group.icon} size={16} className=\"text-brand-emphasis\" />}\n <span className=\"flex flex-col\">\n <span className=\"text-xs font-semibold uppercase tracking-wide text-foreground-subtle\">\n {group.title}\n </span>\n {group.description && <span className=\"text-xs text-foreground-faint\">{group.description}</span>}\n </span>\n </span>\n {group.collapsible && (\n <MaterialSymbol\n icon={isCollapsed ? 'expand_more' : 'expand_less'}\n size={18}\n className=\"text-foreground-faint\"\n />\n )}\n </ControlledButton>\n\n {!isCollapsed && <div className=\"flex flex-col gap-y-4\">{groupFields.map(renderField)}</div>}\n </section>\n );\n })}\n </div>\n );\n};\n\nexport default FiltersForm;\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ import { TFiltersSize, TFiltersVariant } from './filtersLayout';
2
+ import { IFiltersSchema, TFilterValues } from './filterTypes';
3
+ import * as React from 'react';
4
+ export interface IFiltersPanelProps {
5
+ schema: IFiltersSchema;
6
+ values?: TFilterValues;
7
+ onChange?: (values: TFilterValues) => void;
8
+ initialValues?: TFilterValues;
9
+ urlKey?: string;
10
+ variant?: TFiltersVariant;
11
+ size?: TFiltersSize;
12
+ /** Controlled open state. Omit to let the panel own its trigger and state. */
13
+ open?: boolean;
14
+ onOpenChange?: (open: boolean) => void;
15
+ /** Hides the built-in trigger, for hosts that render their own. */
16
+ hideTrigger?: boolean;
17
+ triggerLabel?: string;
18
+ /** Match the page actions standing next to the trigger. */
19
+ triggerSize?: 'sm' | 'md';
20
+ loading?: boolean;
21
+ disabled?: boolean;
22
+ onFirstOpen?: () => void;
23
+ emptyMessage?: string;
24
+ className?: string;
25
+ }
26
+ /**
27
+ * The filter surface. `variant` picks the shell (side drawer, anchored popover
28
+ * or inline block); the schema, state and field rendering are identical in all
29
+ * three, so a screen never reimplements filtering to get a different shape.
30
+ */
31
+ declare const FiltersPanel: React.FC<IFiltersPanelProps>;
32
+ export default FiltersPanel;
@@ -0,0 +1,264 @@
1
+ import { jsx, jsxs, Fragment } from "react/jsx-runtime";
2
+ import { useId, useMemo, useState, useRef, useCallback, useEffect } from "react";
3
+ import classNames from "classnames";
4
+ import { useTranslation } from "react-i18next";
5
+ import ControlledButton from "../../Form/ControlledButton.js";
6
+ import ControlledDialog from "../../Form/ControlledDialog.js";
7
+ import ControlledDrawer from "../../Form/ControlledDrawer.js";
8
+ import { ControlledPopoverRoot, ControlledPopoverHandler, ControlledPopoverContent } from "../../UI/ControlledPopover.js";
9
+ import ControlledTooltip from "../../UI/ControlledTooltip.js";
10
+ import { MaterialSymbol } from "../../UI/MaterialSymbol/index.js";
11
+ import FilterChipsRow from "./FilterChipsRow.js";
12
+ import FiltersButton from "./FiltersButton.js";
13
+ import FiltersForm from "./FiltersForm.js";
14
+ import { FILTERS_POPOVER_WIDTH_REM, getFiltersPanelWidth } from "./filtersLayout.js";
15
+ import { formatFilterValue } from "./filterValues.js";
16
+ import { useFilters } from "./useFilters.js";
17
+ const FiltersPanel = ({
18
+ schema,
19
+ values,
20
+ onChange,
21
+ initialValues,
22
+ urlKey,
23
+ variant = "drawer",
24
+ size = "md",
25
+ open: controlledOpen,
26
+ onOpenChange,
27
+ hideTrigger,
28
+ triggerLabel,
29
+ triggerSize,
30
+ loading,
31
+ disabled,
32
+ onFirstOpen,
33
+ emptyMessage,
34
+ className
35
+ }) => {
36
+ const { t } = useTranslation("ui");
37
+ const titleId = useId();
38
+ const fields = useMemo(() => schema?.fields ?? [], [schema]);
39
+ const filters = useFilters({ fields, value: values, onChange, initialValues, urlKey });
40
+ const [internalOpen, setInternalOpen] = useState(false);
41
+ const isControlled = controlledOpen !== void 0;
42
+ const open = isControlled ? controlledOpen : internalOpen;
43
+ const [isDiscardOpen, setIsDiscardOpen] = useState(false);
44
+ const triggerRef = useRef(null);
45
+ const bodyRef = useRef(null);
46
+ const hasOpenedOnceRef = useRef(false);
47
+ const prevOpenRef = useRef(open);
48
+ const setOpen = useCallback(
49
+ (next) => {
50
+ if (!isControlled) setInternalOpen(next);
51
+ onOpenChange?.(next);
52
+ },
53
+ [isControlled, onOpenChange]
54
+ );
55
+ const filtersRef = useRef(filters);
56
+ filtersRef.current = filters;
57
+ useEffect(() => {
58
+ if (open === prevOpenRef.current) return;
59
+ prevOpenRef.current = open;
60
+ if (open && !hasOpenedOnceRef.current) {
61
+ hasOpenedOnceRef.current = true;
62
+ onFirstOpen?.();
63
+ }
64
+ if (open) {
65
+ filtersRef.current.resetDraft();
66
+ window.requestAnimationFrame(() => {
67
+ bodyRef.current?.querySelector("input, button, [tabindex]")?.focus();
68
+ });
69
+ } else {
70
+ triggerRef.current?.focus();
71
+ }
72
+ }, [open, onFirstOpen]);
73
+ const closeRequest = useCallback(() => {
74
+ if (filters.isDirty) {
75
+ setIsDiscardOpen(true);
76
+ return;
77
+ }
78
+ setOpen(false);
79
+ }, [filters.isDirty, setOpen]);
80
+ const discardAndClose = useCallback(() => {
81
+ filters.resetDraft();
82
+ setIsDiscardOpen(false);
83
+ setOpen(false);
84
+ }, [filters, setOpen]);
85
+ const handleApply = useCallback(() => {
86
+ filters.apply();
87
+ setOpen(false);
88
+ }, [filters, setOpen]);
89
+ const handleClear = useCallback(() => {
90
+ filters.clear();
91
+ }, [filters]);
92
+ const handleKeyDown = (event) => {
93
+ if (event.key === "Escape") {
94
+ event.stopPropagation();
95
+ closeRequest();
96
+ return;
97
+ }
98
+ if (event.key === "Enter" && (event.metaKey || event.ctrlKey)) {
99
+ event.preventDefault();
100
+ handleApply();
101
+ }
102
+ };
103
+ const form = /* @__PURE__ */ jsx(
104
+ FiltersForm,
105
+ {
106
+ fields,
107
+ groups: schema?.groups,
108
+ values: filters.draft,
109
+ onValueChange: filters.setDraftValue,
110
+ disabled,
111
+ loading,
112
+ emptyMessage
113
+ }
114
+ );
115
+ if (variant === "chips") {
116
+ return /* @__PURE__ */ jsx(
117
+ FilterChipsRow,
118
+ {
119
+ fields,
120
+ values: filters.applied,
121
+ disabled,
122
+ className,
123
+ onValueChange: (key, next) => {
124
+ filters.setDraftValue(key, next);
125
+ window.requestAnimationFrame(() => filters.apply());
126
+ },
127
+ onClearAll: filters.clear
128
+ }
129
+ );
130
+ }
131
+ if (variant === "inline") {
132
+ return /* @__PURE__ */ jsxs("div", { className: classNames("flex flex-col gap-y-4", className), children: [
133
+ form,
134
+ filters.isDirty && /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-end gap-x-2", children: [
135
+ /* @__PURE__ */ jsx(ControlledButton, { variant: "text", tone: "neutral", size: "sm", onClick: filters.resetDraft, children: t("actions.cancel") }),
136
+ /* @__PURE__ */ jsx(ControlledButton, { size: "sm", onClick: () => filters.apply(), children: t("actions.apply") })
137
+ ] })
138
+ ] });
139
+ }
140
+ const activeSummary = filters.activeFields.map((field) => ({
141
+ key: field.key,
142
+ label: field.title,
143
+ value: formatFilterValue(field, filters.applied?.[field.key])
144
+ }));
145
+ const trigger = hideTrigger ? null : /* @__PURE__ */ jsx(
146
+ FiltersButton,
147
+ {
148
+ ref: triggerRef,
149
+ label: triggerLabel,
150
+ size: triggerSize,
151
+ activeCount: filters.activeCount,
152
+ activeFilters: activeSummary,
153
+ loading,
154
+ disabled,
155
+ onClick: () => setOpen(!open)
156
+ }
157
+ );
158
+ const header = /* @__PURE__ */ jsxs("div", { className: "flex shrink-0 items-start justify-between gap-x-3 border-b border-border p-4", children: [
159
+ /* @__PURE__ */ jsxs("div", { className: "flex items-start gap-x-3", children: [
160
+ /* @__PURE__ */ jsx("div", { className: "flex size-9 shrink-0 items-center justify-center rounded-xl bg-brand-soft text-brand-emphasis", children: /* @__PURE__ */ jsx(MaterialSymbol, { icon: "filter_alt", size: 20 }) }),
161
+ /* @__PURE__ */ jsxs("div", { className: "min-w-0", children: [
162
+ /* @__PURE__ */ jsx("h2", { id: titleId, className: "truncate text-base font-semibold text-foreground", children: schema?.title ?? t("actions.filter") }),
163
+ schema?.subtitle && /* @__PURE__ */ jsx("p", { className: "text-xs text-foreground-subtle", children: schema.subtitle })
164
+ ] })
165
+ ] }),
166
+ /* @__PURE__ */ jsx(ControlledTooltip, { className: "z-[9999]", content: t("actions.close"), children: /* @__PURE__ */ jsx(
167
+ ControlledButton,
168
+ {
169
+ defaultHtmlButton: true,
170
+ onClick: closeRequest,
171
+ className: "rounded-full p-1 text-foreground-subtle transition-colors hover:bg-muted-hover hover:text-foreground-muted focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-brand-border",
172
+ children: /* @__PURE__ */ jsx(MaterialSymbol, { icon: "close", size: 20 })
173
+ }
174
+ ) })
175
+ ] });
176
+ const footer = /* @__PURE__ */ jsxs("div", { className: "flex shrink-0 items-center justify-between gap-x-3 border-t border-border p-4", children: [
177
+ /* @__PURE__ */ jsxs(
178
+ ControlledButton,
179
+ {
180
+ variant: "text",
181
+ tone: "neutral",
182
+ disabled: filters.activeCount === 0,
183
+ className: "flex items-center gap-x-1",
184
+ onClick: handleClear,
185
+ children: [
186
+ /* @__PURE__ */ jsx(MaterialSymbol, { icon: "filter_list_off", size: 18 }),
187
+ t("actions.clear")
188
+ ]
189
+ }
190
+ ),
191
+ /* @__PURE__ */ jsx(ControlledButton, { disabled: !filters.isDirty, onClick: handleApply, children: t("actions.apply") })
192
+ ] });
193
+ const discardDialog = /* @__PURE__ */ jsx(
194
+ ControlledDialog,
195
+ {
196
+ size: "sm",
197
+ open: isDiscardOpen,
198
+ title: t("filtersDrawer.discardChangesTitle"),
199
+ subtitle: t("filtersDrawer.discardChangesMessage"),
200
+ cancelLabel: t("filtersDrawer.keepEditing"),
201
+ confirmLabel: t("filtersDrawer.discard"),
202
+ onCancel: () => setIsDiscardOpen(false),
203
+ onConfirm: discardAndClose,
204
+ children: null
205
+ }
206
+ );
207
+ if (variant === "popover") {
208
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
209
+ /* @__PURE__ */ jsxs(ControlledPopoverRoot, { open, handler: setOpen, placement: "bottom-end", children: [
210
+ /* @__PURE__ */ jsx(ControlledPopoverHandler, { children: trigger ?? /* @__PURE__ */ jsx("span", {}) }),
211
+ /* @__PURE__ */ jsxs(
212
+ ControlledPopoverContent,
213
+ {
214
+ className: classNames("z-[9998] flex max-h-[70vh] flex-col overflow-hidden rounded-xl p-0", className),
215
+ style: { width: `${FILTERS_POPOVER_WIDTH_REM}rem` },
216
+ role: "dialog",
217
+ "aria-labelledby": titleId,
218
+ onKeyDown: handleKeyDown,
219
+ children: [
220
+ header,
221
+ /* @__PURE__ */ jsx("div", { ref: bodyRef, className: "min-h-0 flex-1 overflow-y-auto px-4 py-3", children: form }),
222
+ footer
223
+ ]
224
+ }
225
+ )
226
+ ] }),
227
+ discardDialog
228
+ ] });
229
+ }
230
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
231
+ trigger,
232
+ /* @__PURE__ */ jsx(
233
+ ControlledDrawer,
234
+ {
235
+ open,
236
+ onClose: closeRequest,
237
+ placement: "right",
238
+ size: getFiltersPanelWidth(size),
239
+ lazy: true,
240
+ className,
241
+ children: /* @__PURE__ */ jsxs(
242
+ "div",
243
+ {
244
+ className: "flex h-full flex-col",
245
+ role: "dialog",
246
+ "aria-modal": true,
247
+ "aria-labelledby": titleId,
248
+ onKeyDown: handleKeyDown,
249
+ children: [
250
+ header,
251
+ /* @__PURE__ */ jsx("div", { ref: bodyRef, className: "min-h-0 flex-1 overflow-y-auto px-4 py-4", children: form }),
252
+ footer
253
+ ]
254
+ }
255
+ )
256
+ }
257
+ ),
258
+ discardDialog
259
+ ] });
260
+ };
261
+ export {
262
+ FiltersPanel as default
263
+ };
264
+ //# sourceMappingURL=FiltersPanel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FiltersPanel.js","sources":["../../../../src/components/Search/filters/FiltersPanel.tsx"],"sourcesContent":["import { useCallback, useEffect, useId, useMemo, useRef, useState } from 'react';\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { useTranslation } from 'react-i18next';\n\nimport ControlledButton from '@/components/Form/ControlledButton';\nimport ControlledDialog from '@/components/Form/ControlledDialog';\nimport ControlledDrawer from '@/components/Form/ControlledDrawer';\nimport {\n ControlledPopoverContent,\n ControlledPopoverHandler,\n ControlledPopoverRoot,\n} from '@/components/UI/ControlledPopover';\nimport ControlledTooltip from '@/components/UI/ControlledTooltip';\nimport { MaterialSymbol } from '@/components/UI/MaterialSymbol';\n\nimport FilterChipsRow from './FilterChipsRow';\nimport FiltersButton from './FiltersButton';\nimport FiltersForm from './FiltersForm';\nimport { FILTERS_POPOVER_WIDTH_REM, getFiltersPanelWidth, TFiltersSize, TFiltersVariant } from './filtersLayout';\nimport { IFiltersSchema, TFilterValues } from './filterTypes';\nimport { formatFilterValue } from './filterValues';\nimport { useFilters } from './useFilters';\n\nexport interface IFiltersPanelProps {\n schema: IFiltersSchema;\n values?: TFilterValues;\n onChange?: (values: TFilterValues) => void;\n initialValues?: TFilterValues;\n urlKey?: string;\n\n variant?: TFiltersVariant;\n size?: TFiltersSize;\n\n /** Controlled open state. Omit to let the panel own its trigger and state. */\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n /** Hides the built-in trigger, for hosts that render their own. */\n hideTrigger?: boolean;\n triggerLabel?: string;\n /** Match the page actions standing next to the trigger. */\n triggerSize?: 'sm' | 'md';\n\n loading?: boolean;\n disabled?: boolean;\n onFirstOpen?: () => void;\n emptyMessage?: string;\n className?: string;\n}\n\n/**\n * The filter surface. `variant` picks the shell (side drawer, anchored popover\n * or inline block); the schema, state and field rendering are identical in all\n * three, so a screen never reimplements filtering to get a different shape.\n */\nconst FiltersPanel: React.FC<IFiltersPanelProps> = ({\n schema,\n values,\n onChange,\n initialValues,\n urlKey,\n variant = 'drawer',\n size = 'md',\n open: controlledOpen,\n onOpenChange,\n hideTrigger,\n triggerLabel,\n triggerSize,\n loading,\n disabled,\n onFirstOpen,\n emptyMessage,\n className,\n}) => {\n const { t } = useTranslation('ui');\n const titleId = useId();\n\n const fields = useMemo(() => schema?.fields ?? [], [schema]);\n const filters = useFilters({ fields, value: values, onChange, initialValues, urlKey });\n\n const [internalOpen, setInternalOpen] = useState(false);\n const isControlled = controlledOpen !== undefined;\n const open = isControlled ? controlledOpen : internalOpen;\n\n const [isDiscardOpen, setIsDiscardOpen] = useState(false);\n const triggerRef = useRef<HTMLButtonElement>(null);\n const bodyRef = useRef<HTMLDivElement>(null);\n const hasOpenedOnceRef = useRef(false);\n const prevOpenRef = useRef(open);\n\n const setOpen = useCallback(\n (next: boolean) => {\n if (!isControlled) setInternalOpen(next);\n onOpenChange?.(next);\n },\n [isControlled, onOpenChange],\n );\n\n const filtersRef = useRef(filters);\n filtersRef.current = filters;\n\n useEffect(() => {\n if (open === prevOpenRef.current) return;\n prevOpenRef.current = open;\n if (open && !hasOpenedOnceRef.current) {\n hasOpenedOnceRef.current = true;\n onFirstOpen?.();\n }\n if (open) {\n // Reopening always shows what is actually applied, never a stale draft.\n filtersRef.current.resetDraft();\n window.requestAnimationFrame(() => {\n bodyRef.current?.querySelector<HTMLElement>('input, button, [tabindex]')?.focus();\n });\n } else {\n triggerRef.current?.focus();\n }\n }, [open, onFirstOpen]);\n\n const closeRequest = useCallback(() => {\n if (filters.isDirty) {\n setIsDiscardOpen(true);\n return;\n }\n setOpen(false);\n }, [filters.isDirty, setOpen]);\n\n const discardAndClose = useCallback(() => {\n filters.resetDraft();\n setIsDiscardOpen(false);\n setOpen(false);\n }, [filters, setOpen]);\n\n const handleApply = useCallback(() => {\n filters.apply();\n setOpen(false);\n }, [filters, setOpen]);\n\n /** Clearing does not close the panel: the user usually clears to start over. */\n const handleClear = useCallback(() => {\n filters.clear();\n }, [filters]);\n\n const handleKeyDown = (event: React.KeyboardEvent) => {\n if (event.key === 'Escape') {\n event.stopPropagation();\n closeRequest();\n return;\n }\n if (event.key === 'Enter' && (event.metaKey || event.ctrlKey)) {\n event.preventDefault();\n handleApply();\n }\n };\n\n const form = (\n <FiltersForm\n fields={fields}\n groups={schema?.groups}\n values={filters.draft}\n onValueChange={filters.setDraftValue}\n disabled={disabled}\n loading={loading}\n emptyMessage={emptyMessage}\n />\n );\n\n if (variant === 'chips') {\n // A chip row applies on pick, so the draft is committed immediately.\n return (\n <FilterChipsRow\n fields={fields}\n values={filters.applied}\n disabled={disabled}\n className={className}\n onValueChange={(key, next) => {\n filters.setDraftValue(key, next);\n window.requestAnimationFrame(() => filters.apply());\n }}\n onClearAll={filters.clear}\n />\n );\n }\n\n if (variant === 'inline') {\n return (\n <div className={classNames('flex flex-col gap-y-4', className)}>\n {form}\n {filters.isDirty && (\n <div className=\"flex items-center justify-end gap-x-2\">\n <ControlledButton variant=\"text\" tone=\"neutral\" size=\"sm\" onClick={filters.resetDraft}>\n {t('actions.cancel')}\n </ControlledButton>\n <ControlledButton size=\"sm\" onClick={() => filters.apply()}>\n {t('actions.apply')}\n </ControlledButton>\n </div>\n )}\n </div>\n );\n }\n\n const activeSummary = filters.activeFields.map((field) => ({\n key: field.key,\n label: field.title,\n value: formatFilterValue(field, filters.applied?.[field.key]),\n }));\n\n const trigger = hideTrigger ? null : (\n <FiltersButton\n ref={triggerRef}\n label={triggerLabel}\n size={triggerSize}\n activeCount={filters.activeCount}\n activeFilters={activeSummary}\n loading={loading}\n disabled={disabled}\n onClick={() => setOpen(!open)}\n />\n );\n\n const header = (\n <div className=\"flex shrink-0 items-start justify-between gap-x-3 border-b border-border p-4\">\n <div className=\"flex items-start gap-x-3\">\n <div className=\"flex size-9 shrink-0 items-center justify-center rounded-xl bg-brand-soft text-brand-emphasis\">\n <MaterialSymbol icon=\"filter_alt\" size={20} />\n </div>\n <div className=\"min-w-0\">\n <h2 id={titleId} className=\"truncate text-base font-semibold text-foreground\">\n {schema?.title ?? t('actions.filter')}\n </h2>\n {schema?.subtitle && <p className=\"text-xs text-foreground-subtle\">{schema.subtitle}</p>}\n </div>\n </div>\n <ControlledTooltip className=\"z-[9999]\" content={t('actions.close')}>\n <ControlledButton\n defaultHtmlButton\n onClick={closeRequest}\n className=\"rounded-full p-1 text-foreground-subtle transition-colors hover:bg-muted-hover hover:text-foreground-muted focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-brand-border\"\n >\n <MaterialSymbol icon=\"close\" size={20} />\n </ControlledButton>\n </ControlledTooltip>\n </div>\n );\n\n const footer = (\n <div className=\"flex shrink-0 items-center justify-between gap-x-3 border-t border-border p-4\">\n <ControlledButton\n variant=\"text\"\n tone=\"neutral\"\n disabled={filters.activeCount === 0}\n className=\"flex items-center gap-x-1\"\n onClick={handleClear}\n >\n <MaterialSymbol icon=\"filter_list_off\" size={18} />\n {t('actions.clear')}\n </ControlledButton>\n\n <ControlledButton disabled={!filters.isDirty} onClick={handleApply}>\n {t('actions.apply')}\n </ControlledButton>\n </div>\n );\n\n const discardDialog = (\n <ControlledDialog\n size=\"sm\"\n open={isDiscardOpen}\n title={t('filtersDrawer.discardChangesTitle')}\n subtitle={t('filtersDrawer.discardChangesMessage')}\n cancelLabel={t('filtersDrawer.keepEditing')}\n confirmLabel={t('filtersDrawer.discard')}\n onCancel={() => setIsDiscardOpen(false)}\n onConfirm={discardAndClose}\n >\n {null}\n </ControlledDialog>\n );\n\n if (variant === 'popover') {\n return (\n <>\n <ControlledPopoverRoot open={open} handler={setOpen} placement=\"bottom-end\">\n <ControlledPopoverHandler>{trigger ?? <span />}</ControlledPopoverHandler>\n <ControlledPopoverContent\n className={classNames('z-[9998] flex max-h-[70vh] flex-col overflow-hidden rounded-xl p-0', className)}\n style={{ width: `${FILTERS_POPOVER_WIDTH_REM}rem` }}\n role=\"dialog\"\n aria-labelledby={titleId}\n onKeyDown={handleKeyDown}\n >\n {header}\n <div ref={bodyRef} className=\"min-h-0 flex-1 overflow-y-auto px-4 py-3\">\n {form}\n </div>\n {footer}\n </ControlledPopoverContent>\n </ControlledPopoverRoot>\n {discardDialog}\n </>\n );\n }\n\n return (\n <>\n {trigger}\n\n <ControlledDrawer\n open={open}\n onClose={closeRequest}\n placement=\"right\"\n size={getFiltersPanelWidth(size)}\n lazy\n className={className}\n >\n <div\n className=\"flex h-full flex-col\"\n role=\"dialog\"\n aria-modal\n aria-labelledby={titleId}\n onKeyDown={handleKeyDown}\n >\n {header}\n <div ref={bodyRef} className=\"min-h-0 flex-1 overflow-y-auto px-4 py-4\">\n {form}\n </div>\n {footer}\n </div>\n </ControlledDrawer>\n\n {discardDialog}\n </>\n );\n};\n\nexport default FiltersPanel;\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import { ReactElement, ReactNode } from 'react';
2
+ import { IFiltersButtonSummaryItem } from './filterTypes';
3
+ interface IFiltersSummaryTooltipProps {
4
+ items: Array<IFiltersButtonSummaryItem>;
5
+ /** Mostrado quando nada está aplicado. Sem ele, o gatilho fica sem tooltip nesse estado. */
6
+ fallback?: ReactNode;
7
+ className?: string;
8
+ children: ReactElement;
9
+ }
10
+ /**
11
+ * O que está filtrado, campo a campo, no hover do gatilho.
12
+ *
13
+ * Existe como componente próprio porque o mapa e o board têm gatilhos visuais diferentes (um botão
14
+ * de página e um item da barra do canvas) e o resumo precisa ser o MESMO nos dois: um segundo
15
+ * desenho do mesmo conteúdo é onde os dois começam a divergir.
16
+ *
17
+ * Um item sem `value` é descartado: tooltip com conteúdo vazio ainda abre, como uma caixa preta.
18
+ */
19
+ declare const FiltersSummaryTooltip: React.FC<IFiltersSummaryTooltipProps>;
20
+ export default FiltersSummaryTooltip;
@@ -0,0 +1,26 @@
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
+ import { twMerge } from "tailwind-merge";
3
+ import ControlledTooltip from "../../UI/ControlledTooltip.js";
4
+ const SUMMARY_TOOLTIP_CLASS = "z-[9999] max-w-[26rem] overflow-hidden rounded-xl border border-brand-border bg-surface p-0 shadow-xl";
5
+ const FiltersSummaryTooltip = ({ items, fallback, className, children }) => {
6
+ const summary = items.filter((item) => item.value);
7
+ if (summary.length === 0) {
8
+ if (!fallback) return children;
9
+ return /* @__PURE__ */ jsx(ControlledTooltip, { content: fallback, className, children });
10
+ }
11
+ return /* @__PURE__ */ jsx(
12
+ ControlledTooltip,
13
+ {
14
+ className: twMerge(SUMMARY_TOOLTIP_CLASS, className),
15
+ content: /* @__PURE__ */ jsx("div", { className: "flex w-max min-w-[17rem] max-w-[calc(100vw-2rem)] flex-col gap-3 p-4", children: summary.map((item) => /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-1 border-l-2 border-brand-border pl-3", children: [
16
+ /* @__PURE__ */ jsx("span", { className: "text-xs font-bold text-brand-emphasis", children: item.label }),
17
+ /* @__PURE__ */ jsx("span", { className: "text-xs leading-relaxed text-foreground-muted", children: item.value })
18
+ ] }, item.key)) }),
19
+ children
20
+ }
21
+ );
22
+ };
23
+ export {
24
+ FiltersSummaryTooltip as default
25
+ };
26
+ //# sourceMappingURL=FiltersSummaryTooltip.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FiltersSummaryTooltip.js","sources":["../../../../src/components/Search/filters/FiltersSummaryTooltip.tsx"],"sourcesContent":["import { ReactElement, ReactNode } from 'react';\nimport { twMerge } from 'tailwind-merge';\n\nimport ControlledTooltip from '@/components/UI/ControlledTooltip';\n\nimport { IFiltersButtonSummaryItem } from './filterTypes';\n\nconst SUMMARY_TOOLTIP_CLASS =\n 'z-[9999] max-w-[26rem] overflow-hidden rounded-xl border border-brand-border bg-surface p-0 shadow-xl';\n\ninterface IFiltersSummaryTooltipProps {\n items: Array<IFiltersButtonSummaryItem>;\n /** Mostrado quando nada está aplicado. Sem ele, o gatilho fica sem tooltip nesse estado. */\n fallback?: ReactNode;\n className?: string;\n children: ReactElement;\n}\n\n/**\n * O que está filtrado, campo a campo, no hover do gatilho.\n *\n * Existe como componente próprio porque o mapa e o board têm gatilhos visuais diferentes (um botão\n * de página e um item da barra do canvas) e o resumo precisa ser o MESMO nos dois: um segundo\n * desenho do mesmo conteúdo é onde os dois começam a divergir.\n *\n * Um item sem `value` é descartado: tooltip com conteúdo vazio ainda abre, como uma caixa preta.\n */\nconst FiltersSummaryTooltip: React.FC<IFiltersSummaryTooltipProps> = ({ items, fallback, className, children }) => {\n const summary = items.filter((item) => item.value);\n\n if (summary.length === 0) {\n if (!fallback) return children;\n return (\n <ControlledTooltip content={fallback} className={className}>\n {children}\n </ControlledTooltip>\n );\n }\n\n return (\n <ControlledTooltip\n className={twMerge(SUMMARY_TOOLTIP_CLASS, className)}\n content={\n <div className=\"flex w-max min-w-[17rem] max-w-[calc(100vw-2rem)] flex-col gap-3 p-4\">\n {summary.map((item) => (\n <div key={item.key} className=\"flex flex-col gap-1 border-l-2 border-brand-border pl-3\">\n <span className=\"text-xs font-bold text-brand-emphasis\">{item.label}</span>\n <span className=\"text-xs leading-relaxed text-foreground-muted\">{item.value}</span>\n </div>\n ))}\n </div>\n }\n >\n {children}\n </ControlledTooltip>\n );\n};\n\nexport default FiltersSummaryTooltip;\n"],"names":[],"mappings":";;;AAOA,MAAM,wBACJ;AAmBF,MAAM,wBAA+D,CAAC,EAAE,OAAO,UAAU,WAAW,eAAe;AACjH,QAAM,UAAU,MAAM,OAAO,CAAC,SAAS,KAAK,KAAK;AAEjD,MAAI,QAAQ,WAAW,GAAG;AACxB,QAAI,CAAC,SAAU,QAAO;AACtB,WACE,oBAAC,mBAAA,EAAkB,SAAS,UAAU,WACnC,UACH;AAAA,EAEJ;AAEA,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAW,QAAQ,uBAAuB,SAAS;AAAA,MACnD,SACE,oBAAC,OAAA,EAAI,WAAU,wEACZ,UAAA,QAAQ,IAAI,CAAC,SACZ,qBAAC,OAAA,EAAmB,WAAU,2DAC5B,UAAA;AAAA,QAAA,oBAAC,QAAA,EAAK,WAAU,yCAAyC,UAAA,KAAK,OAAM;AAAA,QACpE,oBAAC,QAAA,EAAK,WAAU,iDAAiD,eAAK,MAAA,CAAM;AAAA,MAAA,EAAA,GAFpE,KAAK,GAGf,CACD,GACH;AAAA,MAGD;AAAA,IAAA;AAAA,EAAA;AAGP;"}
@@ -0,0 +1,162 @@
1
+ import { ReactNode } from 'react';
2
+ import { SymbolCodepoints } from '../../UI/MaterialSymbol';
3
+ import { IFilterOption } from '../../../interfaces/IFilterOption';
4
+ export type TFilterFieldKind = 'text' | 'number' | 'select' | 'multiselect' | 'async-select' | 'date' | 'date-range' | 'range' | 'boolean' | 'checkbox-group' | 'radio' | 'tags' | 'custom';
5
+ export type TFilterValues = Record<string, unknown>;
6
+ /** Uma linha do resumo "o que está filtrado", mostrado no hover do gatilho. */
7
+ export interface IFiltersButtonSummaryItem {
8
+ key: string;
9
+ label: string;
10
+ value: string;
11
+ }
12
+ export interface IFilterDateRangeValue {
13
+ from?: string;
14
+ to?: string;
15
+ }
16
+ export interface IFilterRangeValue {
17
+ min?: number;
18
+ max?: number;
19
+ }
20
+ export interface IFilterAsyncPage {
21
+ options: Array<IFilterOption>;
22
+ hasMore: boolean;
23
+ }
24
+ export interface IFilterFieldBase {
25
+ key: string;
26
+ title: string;
27
+ description?: string;
28
+ /** Id of the `IFilterGroup` this field belongs to. Ungrouped fields render first. */
29
+ group?: string;
30
+ disabled?: boolean;
31
+ /** Reason shown on hover when the field is disabled. Always from `t()`. */
32
+ disabledReason?: string;
33
+ /** Hides the field when it returns false. Receives the whole draft. */
34
+ visibleWhen?: (values: TFilterValues) => boolean;
35
+ /** Keys whose change resets this field's value and reloads its options. */
36
+ dependsOn?: Array<string>;
37
+ /** Overrides the chip text shown in `ActiveFiltersBar`. */
38
+ formatChip?: (value: unknown) => string;
39
+ }
40
+ export interface IFilterTextField extends IFilterFieldBase {
41
+ kind: 'text';
42
+ placeholder?: string;
43
+ }
44
+ export interface IFilterNumberField extends IFilterFieldBase {
45
+ kind: 'number';
46
+ placeholder?: string;
47
+ min?: number;
48
+ max?: number;
49
+ }
50
+ export interface IFilterSelectField extends IFilterFieldBase {
51
+ kind: 'select';
52
+ options: Array<IFilterOption>;
53
+ searchable?: boolean;
54
+ clearable?: boolean;
55
+ }
56
+ export interface IFilterMultiSelectField extends IFilterFieldBase {
57
+ kind: 'multiselect';
58
+ options: Array<IFilterOption>;
59
+ searchable?: boolean;
60
+ clearable?: boolean;
61
+ }
62
+ export interface IFilterAsyncSelectField extends IFilterFieldBase {
63
+ kind: 'async-select';
64
+ multiple?: boolean;
65
+ searchable?: boolean;
66
+ clearable?: boolean;
67
+ /**
68
+ * Loads one page of options. Called on first render of the field, on search
69
+ * and on scroll. The registry owns paging state and the option cache, so the
70
+ * consumer only answers "give me page N for this term".
71
+ */
72
+ loadOptions: (params: {
73
+ search?: string;
74
+ page: number;
75
+ values: TFilterValues;
76
+ }) => Promise<IFilterAsyncPage>;
77
+ /** Options already known (applied values that must render a label before loading). */
78
+ initialOptions?: Array<IFilterOption>;
79
+ }
80
+ export interface IFilterDateField extends IFilterFieldBase {
81
+ kind: 'date';
82
+ minDate?: string;
83
+ maxDate?: string;
84
+ }
85
+ export interface IFilterDateRangeField extends IFilterFieldBase {
86
+ kind: 'date-range';
87
+ minDate?: string;
88
+ maxDate?: string;
89
+ }
90
+ export interface IFilterRangeField extends IFilterFieldBase {
91
+ kind: 'range';
92
+ min?: number;
93
+ max?: number;
94
+ unit?: string;
95
+ }
96
+ export interface IFilterBooleanField extends IFilterFieldBase {
97
+ kind: 'boolean';
98
+ /** Switch label. Defaults to `title`. */
99
+ label?: string;
100
+ }
101
+ export interface IFilterCheckboxGroupField extends IFilterFieldBase {
102
+ kind: 'checkbox-group';
103
+ options: Array<IFilterOption>;
104
+ /** Renders a search box above the options when the list is long. */
105
+ searchable?: boolean;
106
+ }
107
+ export interface IFilterRadioField extends IFilterFieldBase {
108
+ kind: 'radio';
109
+ options: Array<IFilterOption>;
110
+ }
111
+ export interface IFilterTagsField extends IFilterFieldBase {
112
+ kind: 'tags';
113
+ options: Array<IFilterOption>;
114
+ /** Allows values that are not in `options`. */
115
+ allowFreeText?: boolean;
116
+ }
117
+ export interface IFilterCustomField extends IFilterFieldBase {
118
+ kind: 'custom';
119
+ render: (params: {
120
+ value: unknown;
121
+ onChange: (value: unknown) => void;
122
+ disabled?: boolean;
123
+ }) => ReactNode;
124
+ /** Tells the counter whether this value is set. Defaults to a truthiness check. */
125
+ isActive?: (value: unknown) => boolean;
126
+ }
127
+ export type TFilterField = IFilterTextField | IFilterNumberField | IFilterSelectField | IFilterMultiSelectField | IFilterAsyncSelectField | IFilterDateField | IFilterDateRangeField | IFilterRangeField | IFilterBooleanField | IFilterCheckboxGroupField | IFilterRadioField | IFilterTagsField | IFilterCustomField;
128
+ export interface IFilterGroup {
129
+ id: string;
130
+ title: string;
131
+ description?: string;
132
+ icon?: SymbolCodepoints;
133
+ collapsible?: boolean;
134
+ defaultOpen?: boolean;
135
+ }
136
+ export type TFilterCombinator = 'AND' | 'OR';
137
+ export interface IFiltersSchema {
138
+ title?: string;
139
+ subtitle?: string;
140
+ groups?: Array<IFilterGroup>;
141
+ fields: Array<TFilterField>;
142
+ /**
143
+ * How multiple active fields combine. `'user'` renders a toggle so the user
144
+ * picks. Only meaningful for consumers that honour it when building params.
145
+ */
146
+ combinator?: TFilterCombinator | 'user';
147
+ }
148
+ export interface IFilterPreset {
149
+ id: string;
150
+ name: string;
151
+ values: TFilterValues;
152
+ isPrivate?: boolean;
153
+ }
154
+ export interface IFilterPresetsConfig {
155
+ presets: Array<IFilterPreset>;
156
+ selectedId?: string;
157
+ loading?: boolean;
158
+ saving?: boolean;
159
+ onSelect: (preset: IFilterPreset | null) => void;
160
+ onSave?: (name: string, isPrivate: boolean, values: TFilterValues) => Promise<boolean>;
161
+ onRemove?: (preset: IFilterPreset) => Promise<void>;
162
+ }
@@ -0,0 +1,2 @@
1
+
2
+ //# sourceMappingURL=filterTypes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filterTypes.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,22 @@
1
+ import { TFilterField, TFilterFieldKind, TFilterValues } from './filterTypes';
2
+ /** Value a field holds when it is not filtering anything. */
3
+ export declare const emptyValueForKind: (kind: TFilterFieldKind) => unknown;
4
+ /**
5
+ * The single definition of "this field is filtering something". Booleans,
6
+ * numbers and interval objects count, which the previous string/array-only
7
+ * check silently dropped.
8
+ */
9
+ export declare const isFilterValueEmpty: (field: TFilterField, value: unknown) => boolean;
10
+ export declare const getActiveFilterFields: (fields: Array<TFilterField>, values: TFilterValues) => Array<TFilterField>;
11
+ export declare const countActiveFilters: (fields: Array<TFilterField>, values: TFilterValues) => number;
12
+ export declare const buildEmptyFilterValues: (fields: Array<TFilterField>) => TFilterValues;
13
+ /** Human-readable value used by the active-filter chips and the trigger tooltip. */
14
+ export declare const formatFilterValue: (field: TFilterField, value: unknown) => string;
15
+ /**
16
+ * Fields the user can actually see right now. `visibleWhen` reads the whole
17
+ * draft, so a field hidden by a dependency never contributes a stale value.
18
+ */
19
+ export declare const getVisibleFilterFields: (fields: Array<TFilterField>, values: TFilterValues) => Array<TFilterField>;
20
+ /** Clears every field that declared `dependsOn` pointing at the changed key. */
21
+ export declare const clearDependentValues: (fields: Array<TFilterField>, changedKey: string, values: TFilterValues) => TFilterValues;
22
+ export declare const areFilterValuesEqual: (a: TFilterValues, b: TFilterValues) => boolean;