@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.
- package/dist/assets/images/common-pngs/sparkles.png.js +5 -0
- package/dist/assets/images/common-pngs/sparkles.png.js.map +1 -0
- package/dist/assets/umode-ui.css +182 -0
- package/dist/components/DateTime/DatePicker.d.ts +19 -0
- package/dist/components/DateTime/DatePicker.js +121 -0
- package/dist/components/DateTime/DatePicker.js.map +1 -0
- package/dist/components/DateTime/DateRangePicker.d.ts +19 -0
- package/dist/components/DateTime/DateRangePicker.js +205 -0
- package/dist/components/DateTime/DateRangePicker.js.map +1 -0
- package/dist/components/Form/ControlledButton.d.ts +13 -0
- package/dist/components/Form/ControlledButton.js +68 -0
- package/dist/components/Form/ControlledButton.js.map +1 -0
- package/dist/components/Form/ControlledCheckbox.d.ts +12 -0
- package/dist/components/Form/ControlledCheckbox.js +101 -0
- package/dist/components/Form/ControlledCheckbox.js.map +1 -0
- package/dist/components/Form/ControlledDialog.d.ts +44 -0
- package/dist/components/Form/ControlledDialog.js +185 -0
- package/dist/components/Form/ControlledDialog.js.map +1 -0
- package/dist/components/Form/ControlledDialogPrimitives.d.ts +30 -0
- package/dist/components/Form/ControlledDialogPrimitives.js +121 -0
- package/dist/components/Form/ControlledDialogPrimitives.js.map +1 -0
- package/dist/components/Form/ControlledDrawer.d.ts +37 -0
- package/dist/components/Form/ControlledDrawer.js +237 -0
- package/dist/components/Form/ControlledDrawer.js.map +1 -0
- package/dist/components/Form/ControlledForm/InputField.d.ts +11 -0
- package/dist/components/Form/ControlledForm/InputField.js +75 -0
- package/dist/components/Form/ControlledForm/InputField.js.map +1 -0
- package/dist/components/Form/ControlledForm/index.d.ts +27 -0
- package/dist/components/Form/ControlledForm/index.js +113 -0
- package/dist/components/Form/ControlledForm/index.js.map +1 -0
- package/dist/components/Form/ControlledImage/Img.d.ts +11 -0
- package/dist/components/Form/ControlledImage/Img.js +29 -0
- package/dist/components/Form/ControlledImage/Img.js.map +1 -0
- package/dist/components/Form/ControlledImage/index.d.ts +30 -0
- package/dist/components/Form/ControlledImage/index.js +107 -0
- package/dist/components/Form/ControlledImage/index.js.map +1 -0
- package/dist/components/Form/ControlledImage/useImage.d.ts +9 -0
- package/dist/components/Form/ControlledImage/useImage.js +110 -0
- package/dist/components/Form/ControlledImage/useImage.js.map +1 -0
- package/dist/components/Form/ControlledInput.d.ts +23 -0
- package/dist/components/Form/ControlledInput.js +52 -0
- package/dist/components/Form/ControlledInput.js.map +1 -0
- package/dist/components/Form/ControlledRadio.d.ts +15 -0
- package/dist/components/Form/ControlledRadio.js +91 -0
- package/dist/components/Form/ControlledRadio.js.map +1 -0
- package/dist/components/Form/ControlledSelect.d.ts +44 -0
- package/dist/components/Form/ControlledSelect.js +545 -0
- package/dist/components/Form/ControlledSelect.js.map +1 -0
- package/dist/components/Form/ControlledSwitch.d.ts +14 -0
- package/dist/components/Form/ControlledSwitch.js +88 -0
- package/dist/components/Form/ControlledSwitch.js.map +1 -0
- package/dist/components/Form/ControlledTabs.d.ts +70 -0
- package/dist/components/Form/ControlledTabs.js +470 -0
- package/dist/components/Form/ControlledTabs.js.map +1 -0
- package/dist/components/Form/ControlledTabsPrimitives.d.ts +43 -0
- package/dist/components/Form/ControlledTabsPrimitives.js +47 -0
- package/dist/components/Form/ControlledTabsPrimitives.js.map +1 -0
- package/dist/components/Form/ControlledTextarea.d.ts +22 -0
- package/dist/components/Form/ControlledTextarea.js +46 -0
- package/dist/components/Form/ControlledTextarea.js.map +1 -0
- package/dist/components/Form/ControlledTimeline.d.ts +26 -0
- package/dist/components/Form/ControlledTimeline.js +57 -0
- package/dist/components/Form/ControlledTimeline.js.map +1 -0
- package/dist/components/Form/ControlledViewToggle.d.ts +74 -0
- package/dist/components/Form/ControlledViewToggle.js +157 -0
- package/dist/components/Form/ControlledViewToggle.js.map +1 -0
- package/dist/components/Form/ControlledVoiceTextarea.d.ts +11 -0
- package/dist/components/Form/ControlledVoiceTextarea.js +88 -0
- package/dist/components/Form/ControlledVoiceTextarea.js.map +1 -0
- package/dist/components/Form/CurrencyInput.d.ts +8 -0
- package/dist/components/Form/CurrencyInput.js +17 -0
- package/dist/components/Form/CurrencyInput.js.map +1 -0
- package/dist/components/Form/RichTextEditor.d.ts +80 -0
- package/dist/components/Form/RichTextEditor.js +546 -0
- package/dist/components/Form/RichTextEditor.js.map +1 -0
- package/dist/components/Form/attachments/AttachmentPreviewList.d.ts +8 -0
- package/dist/components/Form/attachments/AttachmentPreviewList.js +71 -0
- package/dist/components/Form/attachments/AttachmentPreviewList.js.map +1 -0
- package/dist/components/Form/attachments/FileDropzone.d.ts +12 -0
- package/dist/components/Form/attachments/FileDropzone.js +84 -0
- package/dist/components/Form/attachments/FileDropzone.js.map +1 -0
- package/dist/components/Navigation/ControlledBreadcrumb.d.ts +13 -0
- package/dist/components/Navigation/ControlledBreadcrumb.js +23 -0
- package/dist/components/Navigation/ControlledBreadcrumb.js.map +1 -0
- package/dist/components/Navigation/ErrorPage.d.ts +2 -0
- package/dist/components/Navigation/ErrorPage.js +27 -0
- package/dist/components/Navigation/ErrorPage.js.map +1 -0
- package/dist/components/Navigation/PageTitle.d.ts +41 -0
- package/dist/components/Navigation/PageTitle.js +147 -0
- package/dist/components/Navigation/PageTitle.js.map +1 -0
- package/dist/components/Navigation/PageTitleNavigationContext.d.ts +21 -0
- package/dist/components/Navigation/PageTitleNavigationContext.js +17 -0
- package/dist/components/Navigation/PageTitleNavigationContext.js.map +1 -0
- package/dist/components/Search/UnifiedSearchBar.d.ts +31 -0
- package/dist/components/Search/UnifiedSearchBar.js +167 -0
- package/dist/components/Search/UnifiedSearchBar.js.map +1 -0
- package/dist/components/Search/filters/ActiveFiltersBar.d.ts +15 -0
- package/dist/components/Search/filters/ActiveFiltersBar.js +48 -0
- package/dist/components/Search/filters/ActiveFiltersBar.js.map +1 -0
- package/dist/components/Search/filters/FilterChipsRow.d.ts +17 -0
- package/dist/components/Search/filters/FilterChipsRow.js +113 -0
- package/dist/components/Search/filters/FilterChipsRow.js.map +1 -0
- package/dist/components/Search/filters/FilterFieldControl.d.ts +19 -0
- package/dist/components/Search/filters/FilterFieldControl.js +387 -0
- package/dist/components/Search/filters/FilterFieldControl.js.map +1 -0
- package/dist/components/Search/filters/FiltersButton.d.ts +24 -0
- package/dist/components/Search/filters/FiltersButton.js +52 -0
- package/dist/components/Search/filters/FiltersButton.js.map +1 -0
- package/dist/components/Search/filters/FiltersForm.d.ts +18 -0
- package/dist/components/Search/filters/FiltersForm.js +112 -0
- package/dist/components/Search/filters/FiltersForm.js.map +1 -0
- package/dist/components/Search/filters/FiltersPanel.d.ts +32 -0
- package/dist/components/Search/filters/FiltersPanel.js +264 -0
- package/dist/components/Search/filters/FiltersPanel.js.map +1 -0
- package/dist/components/Search/filters/FiltersSummaryTooltip.d.ts +20 -0
- package/dist/components/Search/filters/FiltersSummaryTooltip.js +26 -0
- package/dist/components/Search/filters/FiltersSummaryTooltip.js.map +1 -0
- package/dist/components/Search/filters/filterTypes.d.ts +162 -0
- package/dist/components/Search/filters/filterTypes.js +2 -0
- package/dist/components/Search/filters/filterTypes.js.map +1 -0
- package/dist/components/Search/filters/filterValues.d.ts +22 -0
- package/dist/components/Search/filters/filterValues.js +91 -0
- package/dist/components/Search/filters/filterValues.js.map +1 -0
- package/dist/components/Search/filters/filtersLayout.d.ts +4 -0
- package/dist/components/Search/filters/filtersLayout.js +18 -0
- package/dist/components/Search/filters/filtersLayout.js.map +1 -0
- package/dist/components/Search/filters/index.d.ts +11 -0
- package/dist/components/Search/filters/index.js +32 -0
- package/dist/components/Search/filters/index.js.map +1 -0
- package/dist/components/Search/filters/useFilters.d.ts +33 -0
- package/dist/components/Search/filters/useFilters.js +162 -0
- package/dist/components/Search/filters/useFilters.js.map +1 -0
- package/dist/components/Search/index.d.ts +2 -0
- package/dist/components/Search/index.js +34 -0
- package/dist/components/Search/index.js.map +1 -0
- package/dist/components/UI/AccordionIcon.d.ts +10 -0
- package/dist/components/UI/AccordionIcon.js +22 -0
- package/dist/components/UI/AccordionIcon.js.map +1 -0
- package/dist/components/UI/AlertInfo/dismissedAlertsStore.d.ts +2 -0
- package/dist/components/UI/AlertInfo/dismissedAlertsStore.js +22 -0
- package/dist/components/UI/AlertInfo/dismissedAlertsStore.js.map +1 -0
- package/dist/components/UI/AlertInfo/index.d.ts +30 -0
- package/dist/components/UI/AlertInfo/index.js +78 -0
- package/dist/components/UI/AlertInfo/index.js.map +1 -0
- package/dist/components/UI/BaseDataCard.d.ts +25 -0
- package/dist/components/UI/BaseDataCard.js +163 -0
- package/dist/components/UI/BaseDataCard.js.map +1 -0
- package/dist/components/UI/BulkActionBar.d.ts +35 -0
- package/dist/components/UI/BulkActionBar.js +125 -0
- package/dist/components/UI/BulkActionBar.js.map +1 -0
- package/dist/components/UI/Chips/OutlinedChip.d.ts +42 -0
- package/dist/components/UI/Chips/OutlinedChip.js +183 -0
- package/dist/components/UI/Chips/OutlinedChip.js.map +1 -0
- package/dist/components/UI/Chips/StatusChip.d.ts +8 -0
- package/dist/components/UI/Chips/StatusChip.js +33 -0
- package/dist/components/UI/Chips/StatusChip.js.map +1 -0
- package/dist/components/UI/Chips/chipTones.d.ts +6 -0
- package/dist/components/UI/Chips/chipTones.js +53 -0
- package/dist/components/UI/Chips/chipTones.js.map +1 -0
- package/dist/components/UI/ColorSwatch.d.ts +30 -0
- package/dist/components/UI/ColorSwatch.js +53 -0
- package/dist/components/UI/ColorSwatch.js.map +1 -0
- package/dist/components/UI/Colors.d.ts +10 -0
- package/dist/components/UI/Colors.js +41 -0
- package/dist/components/UI/Colors.js.map +1 -0
- package/dist/components/UI/ControlledAccordion.d.ts +38 -0
- package/dist/components/UI/ControlledAccordion.js +89 -0
- package/dist/components/UI/ControlledAccordion.js.map +1 -0
- package/dist/components/UI/ControlledCollapse.d.ts +13 -0
- package/dist/components/UI/ControlledCollapse.js +32 -0
- package/dist/components/UI/ControlledCollapse.js.map +1 -0
- package/dist/components/UI/ControlledMenu.d.ts +73 -0
- package/dist/components/UI/ControlledMenu.js +231 -0
- package/dist/components/UI/ControlledMenu.js.map +1 -0
- package/dist/components/UI/ControlledPopover.d.ts +44 -0
- package/dist/components/UI/ControlledPopover.js +144 -0
- package/dist/components/UI/ControlledPopover.js.map +1 -0
- package/dist/components/UI/ControlledProgress.d.ts +13 -0
- package/dist/components/UI/ControlledProgress.js +46 -0
- package/dist/components/UI/ControlledProgress.js.map +1 -0
- package/dist/components/UI/ControlledSlider.d.ts +13 -0
- package/dist/components/UI/ControlledSlider.js +29 -0
- package/dist/components/UI/ControlledSlider.js.map +1 -0
- package/dist/components/UI/ControlledTooltip.d.ts +21 -0
- package/dist/components/UI/ControlledTooltip.js +140 -0
- package/dist/components/UI/ControlledTooltip.js.map +1 -0
- package/dist/components/UI/CustomBadge.d.ts +15 -0
- package/dist/components/UI/CustomBadge.js +34 -0
- package/dist/components/UI/CustomBadge.js.map +1 -0
- package/dist/components/UI/CustomCard.d.ts +13 -0
- package/dist/components/UI/CustomCard.js +36 -0
- package/dist/components/UI/CustomCard.js.map +1 -0
- package/dist/components/UI/CustomChart.d.ts +21 -0
- package/dist/components/UI/CustomChart.js +108 -0
- package/dist/components/UI/CustomChart.js.map +1 -0
- package/dist/components/UI/DataTable/DataTable.d.ts +100 -0
- package/dist/components/UI/DataTable/DataTable.js +546 -0
- package/dist/components/UI/DataTable/DataTable.js.map +1 -0
- package/dist/components/UI/DataTable/DataTableAutoCard.d.ts +20 -0
- package/dist/components/UI/DataTable/DataTableAutoCard.js +39 -0
- package/dist/components/UI/DataTable/DataTableAutoCard.js.map +1 -0
- package/dist/components/UI/DataTable/DataTableBody.d.ts +29 -0
- package/dist/components/UI/DataTable/DataTableBody.js +243 -0
- package/dist/components/UI/DataTable/DataTableBody.js.map +1 -0
- package/dist/components/UI/DataTable/DataTableBodyCell.d.ts +21 -0
- package/dist/components/UI/DataTable/DataTableBodyCell.js +77 -0
- package/dist/components/UI/DataTable/DataTableBodyCell.js.map +1 -0
- package/dist/components/UI/DataTable/DataTableBulkEditButton.d.ts +11 -0
- package/dist/components/UI/DataTable/DataTableBulkEditButton.js +24 -0
- package/dist/components/UI/DataTable/DataTableBulkEditButton.js.map +1 -0
- package/dist/components/UI/DataTable/DataTableBulkEditDialog.d.ts +25 -0
- package/dist/components/UI/DataTable/DataTableBulkEditDialog.js +251 -0
- package/dist/components/UI/DataTable/DataTableBulkEditDialog.js.map +1 -0
- package/dist/components/UI/DataTable/DataTableColumnToggle.d.ts +34 -0
- package/dist/components/UI/DataTable/DataTableColumnToggle.js +168 -0
- package/dist/components/UI/DataTable/DataTableColumnToggle.js.map +1 -0
- package/dist/components/UI/DataTable/DataTableDetailModal.d.ts +17 -0
- package/dist/components/UI/DataTable/DataTableDetailModal.js +109 -0
- package/dist/components/UI/DataTable/DataTableDetailModal.js.map +1 -0
- package/dist/components/UI/DataTable/DataTableDetailPanel.d.ts +21 -0
- package/dist/components/UI/DataTable/DataTableDetailPanel.js +51 -0
- package/dist/components/UI/DataTable/DataTableDetailPanel.js.map +1 -0
- package/dist/components/UI/DataTable/DataTableDetailTable.d.ts +35 -0
- package/dist/components/UI/DataTable/DataTableDetailTable.js +129 -0
- package/dist/components/UI/DataTable/DataTableDetailTable.js.map +1 -0
- package/dist/components/UI/DataTable/DataTableEditModeButton.d.ts +12 -0
- package/dist/components/UI/DataTable/DataTableEditModeButton.js +29 -0
- package/dist/components/UI/DataTable/DataTableEditModeButton.js.map +1 -0
- package/dist/components/UI/DataTable/DataTableFilters.d.ts +20 -0
- package/dist/components/UI/DataTable/DataTableFilters.js +64 -0
- package/dist/components/UI/DataTable/DataTableFilters.js.map +1 -0
- package/dist/components/UI/DataTable/DataTableHead.d.ts +27 -0
- package/dist/components/UI/DataTable/DataTableHead.js +198 -0
- package/dist/components/UI/DataTable/DataTableHead.js.map +1 -0
- package/dist/components/UI/DataTable/DataTablePagination.d.ts +15 -0
- package/dist/components/UI/DataTable/DataTablePagination.js +145 -0
- package/dist/components/UI/DataTable/DataTablePagination.js.map +1 -0
- package/dist/components/UI/DataTable/DataTableSaveButton.d.ts +13 -0
- package/dist/components/UI/DataTable/DataTableSaveButton.js +21 -0
- package/dist/components/UI/DataTable/DataTableSaveButton.js.map +1 -0
- package/dist/components/UI/DataTable/DataTableSegmentedTabs.d.ts +8 -0
- package/dist/components/UI/DataTable/DataTableSegmentedTabs.js +35 -0
- package/dist/components/UI/DataTable/DataTableSegmentedTabs.js.map +1 -0
- package/dist/components/UI/DataTable/DataTableStates.d.ts +17 -0
- package/dist/components/UI/DataTable/DataTableStates.js +59 -0
- package/dist/components/UI/DataTable/DataTableStates.js.map +1 -0
- package/dist/components/UI/DataTable/DataTableToolbar.d.ts +28 -0
- package/dist/components/UI/DataTable/DataTableToolbar.js +109 -0
- package/dist/components/UI/DataTable/DataTableToolbar.js.map +1 -0
- package/dist/components/UI/DataTable/applyDataTableFilters.d.ts +16 -0
- package/dist/components/UI/DataTable/applyDataTableFilters.js +53 -0
- package/dist/components/UI/DataTable/applyDataTableFilters.js.map +1 -0
- package/dist/components/UI/DataTable/cells/DataTableActionsCell.d.ts +7 -0
- package/dist/components/UI/DataTable/cells/DataTableActionsCell.js +55 -0
- package/dist/components/UI/DataTable/cells/DataTableActionsCell.js.map +1 -0
- package/dist/components/UI/DataTable/cells/DataTableCell.d.ts +15 -0
- package/dist/components/UI/DataTable/cells/DataTableCell.js +63 -0
- package/dist/components/UI/DataTable/cells/DataTableCell.js.map +1 -0
- package/dist/components/UI/DataTable/cells/DataTableCodeCell.d.ts +6 -0
- package/dist/components/UI/DataTable/cells/DataTableCodeCell.js +7 -0
- package/dist/components/UI/DataTable/cells/DataTableCodeCell.js.map +1 -0
- package/dist/components/UI/DataTable/cells/DataTableColorCell.d.ts +7 -0
- package/dist/components/UI/DataTable/cells/DataTableColorCell.js +10 -0
- package/dist/components/UI/DataTable/cells/DataTableColorCell.js.map +1 -0
- package/dist/components/UI/DataTable/cells/DataTableCountCell.d.ts +5 -0
- package/dist/components/UI/DataTable/cells/DataTableCountCell.js +7 -0
- package/dist/components/UI/DataTable/cells/DataTableCountCell.js.map +1 -0
- package/dist/components/UI/DataTable/cells/DataTableDateCell.d.ts +5 -0
- package/dist/components/UI/DataTable/cells/DataTableDateCell.js +12 -0
- package/dist/components/UI/DataTable/cells/DataTableDateCell.js.map +1 -0
- package/dist/components/UI/DataTable/cells/DataTableEditableCell.d.ts +23 -0
- package/dist/components/UI/DataTable/cells/DataTableEditableCell.js +242 -0
- package/dist/components/UI/DataTable/cells/DataTableEditableCell.js.map +1 -0
- package/dist/components/UI/DataTable/cells/DataTableEmpenhoCell.d.ts +10 -0
- package/dist/components/UI/DataTable/cells/DataTableEmpenhoCell.js +7 -0
- package/dist/components/UI/DataTable/cells/DataTableEmpenhoCell.js.map +1 -0
- package/dist/components/UI/DataTable/cells/DataTableOriginCell.d.ts +6 -0
- package/dist/components/UI/DataTable/cells/DataTableOriginCell.js +25 -0
- package/dist/components/UI/DataTable/cells/DataTableOriginCell.js.map +1 -0
- package/dist/components/UI/DataTable/cells/DataTableStatusCell.d.ts +6 -0
- package/dist/components/UI/DataTable/cells/DataTableStatusCell.js +24 -0
- package/dist/components/UI/DataTable/cells/DataTableStatusCell.js.map +1 -0
- package/dist/components/UI/DataTable/cells/DataTableTagCell.d.ts +6 -0
- package/dist/components/UI/DataTable/cells/DataTableTagCell.js +25 -0
- package/dist/components/UI/DataTable/cells/DataTableTagCell.js.map +1 -0
- package/dist/components/UI/DataTable/cells/DataTableTextCell.d.ts +6 -0
- package/dist/components/UI/DataTable/cells/DataTableTextCell.js +7 -0
- package/dist/components/UI/DataTable/cells/DataTableTextCell.js.map +1 -0
- package/dist/components/UI/DataTable/cells/DataTableThumbnailCell.d.ts +6 -0
- package/dist/components/UI/DataTable/cells/DataTableThumbnailCell.js +10 -0
- package/dist/components/UI/DataTable/cells/DataTableThumbnailCell.js.map +1 -0
- package/dist/components/UI/DataTable/dataTableClasses.d.ts +12 -0
- package/dist/components/UI/DataTable/dataTableClasses.js +29 -0
- package/dist/components/UI/DataTable/dataTableClasses.js.map +1 -0
- package/dist/components/UI/DataTable/dataTableColumnWidths.d.ts +15 -0
- package/dist/components/UI/DataTable/dataTableColumnWidths.js +153 -0
- package/dist/components/UI/DataTable/dataTableColumnWidths.js.map +1 -0
- package/dist/components/UI/DataTable/dataTableColumnsStore.d.ts +12 -0
- package/dist/components/UI/DataTable/dataTableColumnsStore.js +68 -0
- package/dist/components/UI/DataTable/dataTableColumnsStore.js.map +1 -0
- package/dist/components/UI/DataTable/dataTableMotion.d.ts +6 -0
- package/dist/components/UI/DataTable/dataTableMotion.js +15 -0
- package/dist/components/UI/DataTable/dataTableMotion.js.map +1 -0
- package/dist/components/UI/DataTable/grid/GridFillHandle.d.ts +8 -0
- package/dist/components/UI/DataTable/grid/GridFillHandle.js +70 -0
- package/dist/components/UI/DataTable/grid/GridFillHandle.js.map +1 -0
- package/dist/components/UI/DataTable/grid/GridProvider.d.ts +31 -0
- package/dist/components/UI/DataTable/grid/GridProvider.js +85 -0
- package/dist/components/UI/DataTable/grid/GridProvider.js.map +1 -0
- package/dist/components/UI/DataTable/grid/fill/fillStrategies.d.ts +19 -0
- package/dist/components/UI/DataTable/grid/fill/fillStrategies.js +73 -0
- package/dist/components/UI/DataTable/grid/fill/fillStrategies.js.map +1 -0
- package/dist/components/UI/DataTable/grid/gridStore.d.ts +69 -0
- package/dist/components/UI/DataTable/grid/gridStore.js +219 -0
- package/dist/components/UI/DataTable/grid/gridStore.js.map +1 -0
- package/dist/components/UI/DataTable/grid/gridTypes.d.ts +47 -0
- package/dist/components/UI/DataTable/grid/gridTypes.js +27 -0
- package/dist/components/UI/DataTable/grid/gridTypes.js.map +1 -0
- package/dist/components/UI/DataTable/grid/useGridFillApply.d.ts +18 -0
- package/dist/components/UI/DataTable/grid/useGridFillApply.js +74 -0
- package/dist/components/UI/DataTable/grid/useGridFillApply.js.map +1 -0
- package/dist/components/UI/DataTable/grid/useGridInstance.d.ts +27 -0
- package/dist/components/UI/DataTable/grid/useGridInstance.js +41 -0
- package/dist/components/UI/DataTable/grid/useGridInstance.js.map +1 -0
- package/dist/components/UI/DataTable/grid/useGridKeyboard.d.ts +17 -0
- package/dist/components/UI/DataTable/grid/useGridKeyboard.js +114 -0
- package/dist/components/UI/DataTable/grid/useGridKeyboard.js.map +1 -0
- package/dist/components/UI/DataTable/index.d.ts +19 -0
- package/dist/components/UI/DataTable/index.js +34 -0
- package/dist/components/UI/DataTable/index.js.map +1 -0
- package/dist/components/UI/DataTable/types.d.ts +513 -0
- package/dist/components/UI/DataTable/types.js +13 -0
- package/dist/components/UI/DataTable/types.js.map +1 -0
- package/dist/components/UI/DataTable/useCellEditingState.d.ts +20 -0
- package/dist/components/UI/DataTable/useCellEditingState.js +33 -0
- package/dist/components/UI/DataTable/useCellEditingState.js.map +1 -0
- package/dist/components/UI/DataTable/useColumnOrder.d.ts +25 -0
- package/dist/components/UI/DataTable/useColumnOrder.js +94 -0
- package/dist/components/UI/DataTable/useColumnOrder.js.map +1 -0
- package/dist/components/UI/DataTable/useColumnSizing.d.ts +9 -0
- package/dist/components/UI/DataTable/useColumnSizing.js +21 -0
- package/dist/components/UI/DataTable/useColumnSizing.js.map +1 -0
- package/dist/components/UI/DataTable/useColumnVisibility.d.ts +19 -0
- package/dist/components/UI/DataTable/useColumnVisibility.js +47 -0
- package/dist/components/UI/DataTable/useColumnVisibility.js.map +1 -0
- package/dist/components/UI/DataTable/useDataTableCommitQueue.d.ts +69 -0
- package/dist/components/UI/DataTable/useDataTableCommitQueue.js +220 -0
- package/dist/components/UI/DataTable/useDataTableCommitQueue.js.map +1 -0
- package/dist/components/UI/DataTable/useDataTableEditBuffer.d.ts +36 -0
- package/dist/components/UI/DataTable/useDataTableEditBuffer.js +29 -0
- package/dist/components/UI/DataTable/useDataTableEditBuffer.js.map +1 -0
- package/dist/components/UI/DataTable/useDataTableInstance.d.ts +65 -0
- package/dist/components/UI/DataTable/useDataTableInstance.js +306 -0
- package/dist/components/UI/DataTable/useDataTableInstance.js.map +1 -0
- package/dist/components/UI/DataTable/useDataTableSource.d.ts +85 -0
- package/dist/components/UI/DataTable/useDataTableSource.js +199 -0
- package/dist/components/UI/DataTable/useDataTableSource.js.map +1 -0
- package/dist/components/UI/DataTable/useFlipRows.d.ts +22 -0
- package/dist/components/UI/DataTable/useFlipRows.js +90 -0
- package/dist/components/UI/DataTable/useFlipRows.js.map +1 -0
- package/dist/components/UI/ErrorBoundary.d.ts +20 -0
- package/dist/components/UI/ErrorBoundary.js +36 -0
- package/dist/components/UI/ErrorBoundary.js.map +1 -0
- package/dist/components/UI/GeneratedByAI.d.ts +2 -0
- package/dist/components/UI/GeneratedByAI.js +12 -0
- package/dist/components/UI/GeneratedByAI.js.map +1 -0
- package/dist/components/UI/HorizontalScrollArea.d.ts +22 -0
- package/dist/components/UI/HorizontalScrollArea.js +73 -0
- package/dist/components/UI/HorizontalScrollArea.js.map +1 -0
- package/dist/components/UI/ImageAiAdjust/ImageAiAdjustDialog.d.ts +15 -0
- package/dist/components/UI/ImageAiAdjust/ImageAiAdjustDialog.js +144 -0
- package/dist/components/UI/ImageAiAdjust/ImageAiAdjustDialog.js.map +1 -0
- package/dist/components/UI/ImageAiAdjust/useImageAiAdjust.d.ts +29 -0
- package/dist/components/UI/ImageAiAdjust/useImageAiAdjust.js +84 -0
- package/dist/components/UI/ImageAiAdjust/useImageAiAdjust.js.map +1 -0
- package/dist/components/UI/ImageAnnotator/AnnotationEditor.d.ts +12 -0
- package/dist/components/UI/ImageAnnotator/AnnotationEditor.js +267 -0
- package/dist/components/UI/ImageAnnotator/AnnotationEditor.js.map +1 -0
- package/dist/components/UI/ImageAnnotator/ImageAnnotationDialog.d.ts +13 -0
- package/dist/components/UI/ImageAnnotator/ImageAnnotationDialog.js +58 -0
- package/dist/components/UI/ImageAnnotator/ImageAnnotationDialog.js.map +1 -0
- package/dist/components/UI/ImageAnnotator/annotationStyle.d.ts +28 -0
- package/dist/components/UI/ImageAnnotator/annotationStyle.js +56 -0
- package/dist/components/UI/ImageAnnotator/annotationStyle.js.map +1 -0
- package/dist/components/UI/ImageAnnotator/canvas/AnnotationElementNode.d.ts +17 -0
- package/dist/components/UI/ImageAnnotator/canvas/AnnotationElementNode.js +329 -0
- package/dist/components/UI/ImageAnnotator/canvas/AnnotationElementNode.js.map +1 -0
- package/dist/components/UI/ImageAnnotator/canvas/AnnotationSelection.d.ts +10 -0
- package/dist/components/UI/ImageAnnotator/canvas/AnnotationSelection.js +125 -0
- package/dist/components/UI/ImageAnnotator/canvas/AnnotationSelection.js.map +1 -0
- package/dist/components/UI/ImageAnnotator/canvas/AnnotationStage.d.ts +19 -0
- package/dist/components/UI/ImageAnnotator/canvas/AnnotationStage.js +216 -0
- package/dist/components/UI/ImageAnnotator/canvas/AnnotationStage.js.map +1 -0
- package/dist/components/UI/ImageAnnotator/components/AnnotationActionBar.d.ts +15 -0
- package/dist/components/UI/ImageAnnotator/components/AnnotationActionBar.js +77 -0
- package/dist/components/UI/ImageAnnotator/components/AnnotationActionBar.js.map +1 -0
- package/dist/components/UI/ImageAnnotator/components/AnnotationColorPopover.d.ts +11 -0
- package/dist/components/UI/ImageAnnotator/components/AnnotationColorPopover.js +69 -0
- package/dist/components/UI/ImageAnnotator/components/AnnotationColorPopover.js.map +1 -0
- package/dist/components/UI/ImageAnnotator/components/AnnotationElementActions.d.ts +8 -0
- package/dist/components/UI/ImageAnnotator/components/AnnotationElementActions.js +58 -0
- package/dist/components/UI/ImageAnnotator/components/AnnotationElementActions.js.map +1 -0
- package/dist/components/UI/ImageAnnotator/components/AnnotationStyleBar.d.ts +13 -0
- package/dist/components/UI/ImageAnnotator/components/AnnotationStyleBar.js +183 -0
- package/dist/components/UI/ImageAnnotator/components/AnnotationStyleBar.js.map +1 -0
- package/dist/components/UI/ImageAnnotator/components/AnnotationTextOverlay.d.ts +15 -0
- package/dist/components/UI/ImageAnnotator/components/AnnotationTextOverlay.js +78 -0
- package/dist/components/UI/ImageAnnotator/components/AnnotationTextOverlay.js.map +1 -0
- package/dist/components/UI/ImageAnnotator/components/AnnotationToolButton.d.ts +15 -0
- package/dist/components/UI/ImageAnnotator/components/AnnotationToolButton.js +46 -0
- package/dist/components/UI/ImageAnnotator/components/AnnotationToolButton.js.map +1 -0
- package/dist/components/UI/ImageAnnotator/components/AnnotationToolbar.d.ts +10 -0
- package/dist/components/UI/ImageAnnotator/components/AnnotationToolbar.js +80 -0
- package/dist/components/UI/ImageAnnotator/components/AnnotationToolbar.js.map +1 -0
- package/dist/components/UI/ImageAnnotator/helpers/annotationCanvas.d.ts +21 -0
- package/dist/components/UI/ImageAnnotator/helpers/annotationCanvas.js +45 -0
- package/dist/components/UI/ImageAnnotator/helpers/annotationCanvas.js.map +1 -0
- package/dist/components/UI/ImageAnnotator/helpers/annotationElements.d.ts +15 -0
- package/dist/components/UI/ImageAnnotator/helpers/annotationElements.js +165 -0
- package/dist/components/UI/ImageAnnotator/helpers/annotationElements.js.map +1 -0
- package/dist/components/UI/ImageAnnotator/helpers/annotationExport.d.ts +15 -0
- package/dist/components/UI/ImageAnnotator/helpers/annotationExport.js +23 -0
- package/dist/components/UI/ImageAnnotator/helpers/annotationExport.js.map +1 -0
- package/dist/components/UI/ImageAnnotator/helpers/konvaFullBuild.d.ts +8 -0
- package/dist/components/UI/ImageAnnotator/helpers/konvaFullBuild.js +10 -0
- package/dist/components/UI/ImageAnnotator/helpers/konvaFullBuild.js.map +1 -0
- package/dist/components/UI/ImageAnnotator/hooks/useAnnotationBaseImage.d.ts +9 -0
- package/dist/components/UI/ImageAnnotator/hooks/useAnnotationBaseImage.js +56 -0
- package/dist/components/UI/ImageAnnotator/hooks/useAnnotationBaseImage.js.map +1 -0
- package/dist/components/UI/ImageAnnotator/hooks/useAnnotationDocument.d.ts +27 -0
- package/dist/components/UI/ImageAnnotator/hooks/useAnnotationDocument.js +149 -0
- package/dist/components/UI/ImageAnnotator/hooks/useAnnotationDocument.js.map +1 -0
- package/dist/components/UI/ImageAnnotator/hooks/useAnnotationShortcuts.d.ts +14 -0
- package/dist/components/UI/ImageAnnotator/hooks/useAnnotationShortcuts.js +79 -0
- package/dist/components/UI/ImageAnnotator/hooks/useAnnotationShortcuts.js.map +1 -0
- package/dist/components/UI/ImageAnnotator/hooks/useCoarsePointer.d.ts +5 -0
- package/dist/components/UI/ImageAnnotator/hooks/useCoarsePointer.js +23 -0
- package/dist/components/UI/ImageAnnotator/hooks/useCoarsePointer.js.map +1 -0
- package/dist/components/UI/ImageAnnotator/hooks/useHtmlImage.d.ts +2 -0
- package/dist/components/UI/ImageAnnotator/hooks/useHtmlImage.js +27 -0
- package/dist/components/UI/ImageAnnotator/hooks/useHtmlImage.js.map +1 -0
- package/dist/components/UI/ImageAnnotator/interfaces/annotationDocument.d.ts +89 -0
- package/dist/components/UI/ImageAnnotator/interfaces/annotationDocument.js +13 -0
- package/dist/components/UI/ImageAnnotator/interfaces/annotationDocument.js.map +1 -0
- package/dist/components/UI/ImagePlaceholder.d.ts +24 -0
- package/dist/components/UI/ImagePlaceholder.js +26 -0
- package/dist/components/UI/ImagePlaceholder.js.map +1 -0
- package/dist/components/UI/ImageZoomOverlay.d.ts +7 -0
- package/dist/components/UI/ImageZoomOverlay.js +49 -0
- package/dist/components/UI/ImageZoomOverlay.js.map +1 -0
- package/dist/components/UI/InformationCard.d.ts +26 -0
- package/dist/components/UI/InformationCard.js +89 -0
- package/dist/components/UI/InformationCard.js.map +1 -0
- package/dist/components/UI/Kanban/KanbanBoard.d.ts +26 -0
- package/dist/components/UI/Kanban/KanbanBoard.js +89 -0
- package/dist/components/UI/Kanban/KanbanBoard.js.map +1 -0
- package/dist/components/UI/Kanban/KanbanCard.d.ts +22 -0
- package/dist/components/UI/Kanban/KanbanCard.js +47 -0
- package/dist/components/UI/Kanban/KanbanCard.js.map +1 -0
- package/dist/components/UI/Kanban/KanbanLane.d.ts +37 -0
- package/dist/components/UI/Kanban/KanbanLane.js +77 -0
- package/dist/components/UI/Kanban/KanbanLane.js.map +1 -0
- package/dist/components/UI/Kanban/index.d.ts +4 -0
- package/dist/components/UI/Kanban/index.js +11 -0
- package/dist/components/UI/Kanban/index.js.map +1 -0
- package/dist/components/UI/Kanban/kanbanBoardContext.d.ts +13 -0
- package/dist/components/UI/Kanban/kanbanBoardContext.js +13 -0
- package/dist/components/UI/Kanban/kanbanBoardContext.js.map +1 -0
- package/dist/components/UI/LazyMarkdown.d.ts +5 -0
- package/dist/components/UI/LazyMarkdown.js +8 -0
- package/dist/components/UI/LazyMarkdown.js.map +1 -0
- package/dist/components/UI/LoadingPage.d.ts +2 -0
- package/dist/components/UI/LoadingPage.js +13 -0
- package/dist/components/UI/LoadingPage.js.map +1 -0
- package/dist/components/UI/LoadingSpinner.d.ts +14 -0
- package/dist/components/UI/LoadingSpinner.js +32 -0
- package/dist/components/UI/LoadingSpinner.js.map +1 -0
- package/dist/components/UI/MaterialSymbol/consts.d.ts +2 -0
- package/dist/components/UI/MaterialSymbol/consts.js +3472 -0
- package/dist/components/UI/MaterialSymbol/consts.js.map +1 -0
- package/dist/components/UI/MaterialSymbol/index.d.ts +18 -0
- package/dist/components/UI/MaterialSymbol/index.js +46 -0
- package/dist/components/UI/MaterialSymbol/index.js.map +1 -0
- package/dist/components/UI/MaterialSymbol/types.d.ts +37 -0
- package/dist/components/UI/MaterialSymbol/types.js +2 -0
- package/dist/components/UI/MaterialSymbol/types.js.map +1 -0
- package/dist/components/UI/NoDataFound/index.d.ts +31 -0
- package/dist/components/UI/NoDataFound/index.js +215 -0
- package/dist/components/UI/NoDataFound/index.js.map +1 -0
- package/dist/components/UI/NoDataFound/noDataFoundPresets.d.ts +31 -0
- package/dist/components/UI/NoDataFound/noDataFoundPresets.js +99 -0
- package/dist/components/UI/NoDataFound/noDataFoundPresets.js.map +1 -0
- package/dist/components/UI/ReferenceCard.d.ts +16 -0
- package/dist/components/UI/ReferenceCard.js +59 -0
- package/dist/components/UI/ReferenceCard.js.map +1 -0
- package/dist/components/UI/RichTextContent.d.ts +14 -0
- package/dist/components/UI/RichTextContent.js +28 -0
- package/dist/components/UI/RichTextContent.js.map +1 -0
- package/dist/components/UI/SkeletonLoading.d.ts +9 -0
- package/dist/components/UI/SkeletonLoading.js +20 -0
- package/dist/components/UI/SkeletonLoading.js.map +1 -0
- package/dist/components/UI/ThreeDots.d.ts +11 -0
- package/dist/components/UI/ThreeDots.js +18 -0
- package/dist/components/UI/ThreeDots.js.map +1 -0
- package/dist/components/UI/Toast.d.ts +16 -0
- package/dist/components/UI/Toast.js +81 -0
- package/dist/components/UI/Toast.js.map +1 -0
- package/dist/components/UI/ToastHost.d.ts +2 -0
- package/dist/components/UI/ToastHost.js +25 -0
- package/dist/components/UI/ToastHost.js.map +1 -0
- package/dist/components/UI/TypingEffect.d.ts +10 -0
- package/dist/components/UI/TypingEffect.js +31 -0
- package/dist/components/UI/TypingEffect.js.map +1 -0
- package/dist/components/UI/UmodeLogo.d.ts +10 -0
- package/dist/components/UI/UmodeLogo.js +128 -0
- package/dist/components/UI/UmodeLogo.js.map +1 -0
- package/dist/components/UI/UsersAvatar.d.ts +7 -0
- package/dist/components/UI/UsersAvatar.js +29 -0
- package/dist/components/UI/UsersAvatar.js.map +1 -0
- package/dist/components/UI/access/UiAccessContext.d.ts +21 -0
- package/dist/components/UI/access/UiAccessContext.js +14 -0
- package/dist/components/UI/access/UiAccessContext.js.map +1 -0
- package/dist/components/UI/cells/ArrayCell.d.ts +5 -0
- package/dist/components/UI/cells/ArrayCell.js +25 -0
- package/dist/components/UI/cells/ArrayCell.js.map +1 -0
- package/dist/components/UI/cells/BooleanCell.d.ts +5 -0
- package/dist/components/UI/cells/BooleanCell.js +22 -0
- package/dist/components/UI/cells/BooleanCell.js.map +1 -0
- package/dist/components/UI/cells/DetailsTableCell.d.ts +7 -0
- package/dist/components/UI/cells/DetailsTableCell.js +30 -0
- package/dist/components/UI/cells/DetailsTableCell.js.map +1 -0
- package/dist/components/UI/cells/ProductImageCell.d.ts +5 -0
- package/dist/components/UI/cells/ProductImageCell.js +21 -0
- package/dist/components/UI/cells/ProductImageCell.js.map +1 -0
- package/dist/components/UI/cells/UrlLinkCell.d.ts +6 -0
- package/dist/components/UI/cells/UrlLinkCell.js +19 -0
- package/dist/components/UI/cells/UrlLinkCell.js.map +1 -0
- package/dist/components/Upload/SimpleUploaderComponent.d.ts +9 -0
- package/dist/components/Upload/SimpleUploaderComponent.js +72 -0
- package/dist/components/Upload/SimpleUploaderComponent.js.map +1 -0
- package/dist/components/Upload/UploaderComponent.d.ts +29 -0
- package/dist/components/Upload/UploaderComponent.js +241 -0
- package/dist/components/Upload/UploaderComponent.js.map +1 -0
- package/dist/components/Upload/XlsExportButton.d.ts +13 -0
- package/dist/components/Upload/XlsExportButton.js +47 -0
- package/dist/components/Upload/XlsExportButton.js.map +1 -0
- package/dist/helpers/composeRefs.d.ts +7 -0
- package/dist/helpers/composeRefs.js +14 -0
- package/dist/helpers/composeRefs.js.map +1 -0
- package/dist/helpers/dateHelpers.d.ts +47 -0
- package/dist/helpers/dateHelpers.js +69 -0
- package/dist/helpers/dateHelpers.js.map +1 -0
- package/dist/helpers/fileAttachments.d.ts +3 -0
- package/dist/helpers/fileAttachments.js +17 -0
- package/dist/helpers/fileAttachments.js.map +1 -0
- package/dist/helpers/formatHelpers.d.ts +36 -0
- package/dist/helpers/formatHelpers.js +65 -0
- package/dist/helpers/formatHelpers.js.map +1 -0
- package/dist/helpers/imageCompression.d.ts +5 -0
- package/dist/helpers/imageCompression.js +49 -0
- package/dist/helpers/imageCompression.js.map +1 -0
- package/dist/helpers/imageFile.d.ts +16 -0
- package/dist/helpers/imageFile.js +59 -0
- package/dist/helpers/imageFile.js.map +1 -0
- package/dist/helpers/layeredSurfaces.d.ts +10 -0
- package/dist/helpers/layeredSurfaces.js +14 -0
- package/dist/helpers/layeredSurfaces.js.map +1 -0
- package/dist/helpers/mathHelpers.d.ts +14 -0
- package/dist/helpers/mathHelpers.js +13 -0
- package/dist/helpers/mathHelpers.js.map +1 -0
- package/dist/helpers/mergeClasses.d.ts +6 -0
- package/dist/helpers/mergeClasses.js +12 -0
- package/dist/helpers/mergeClasses.js.map +1 -0
- package/dist/helpers/moduleLoadErrorHelpers.d.ts +1 -0
- package/dist/helpers/moduleLoadErrorHelpers.js +25 -0
- package/dist/helpers/moduleLoadErrorHelpers.js.map +1 -0
- package/dist/helpers/objectHelpers.d.ts +13 -0
- package/dist/helpers/objectHelpers.js +60 -0
- package/dist/helpers/objectHelpers.js.map +1 -0
- package/dist/helpers/richText.d.ts +37 -0
- package/dist/helpers/richText.js +171 -0
- package/dist/helpers/richText.js.map +1 -0
- package/dist/helpers/stringHelpers.d.ts +45 -0
- package/dist/helpers/stringHelpers.js +57 -0
- package/dist/helpers/stringHelpers.js.map +1 -0
- package/dist/helpers/themeTokens.d.ts +28 -0
- package/dist/helpers/themeTokens.js +33 -0
- package/dist/helpers/themeTokens.js.map +1 -0
- package/dist/helpers/uiErrorPresenter.d.ts +21 -0
- package/dist/helpers/uiErrorPresenter.js +10 -0
- package/dist/helpers/uiErrorPresenter.js.map +1 -0
- package/dist/helpers/uiLogger.d.ts +8 -0
- package/dist/helpers/uiLogger.js +16 -0
- package/dist/helpers/uiLogger.js.map +1 -0
- package/dist/helpers/uiPreferences.d.ts +13 -0
- package/dist/helpers/uiPreferences.js +35 -0
- package/dist/helpers/uiPreferences.js.map +1 -0
- package/dist/helpers/urlParamSync.d.ts +19 -0
- package/dist/helpers/urlParamSync.js +54 -0
- package/dist/helpers/urlParamSync.js.map +1 -0
- package/dist/helpers/utilityHelpers.d.ts +81 -0
- package/dist/helpers/utilityHelpers.js +133 -0
- package/dist/helpers/utilityHelpers.js.map +1 -0
- package/dist/helpers/validationHelpers.d.ts +36 -0
- package/dist/helpers/validationHelpers.js +44 -0
- package/dist/helpers/validationHelpers.js.map +1 -0
- package/dist/hooks/useAnchoredFloating.d.ts +22 -0
- package/dist/hooks/useAnchoredFloating.js +59 -0
- package/dist/hooks/useAnchoredFloating.js.map +1 -0
- package/dist/hooks/useBreakpoint.d.ts +16 -0
- package/dist/hooks/useBreakpoint.js +47 -0
- package/dist/hooks/useBreakpoint.js.map +1 -0
- package/dist/hooks/useDebounce.d.ts +8 -0
- package/dist/hooks/useDebounce.js +36 -0
- package/dist/hooks/useDebounce.js.map +1 -0
- package/dist/hooks/useFileAttachments.d.ts +43 -0
- package/dist/hooks/useFileAttachments.js +158 -0
- package/dist/hooks/useFileAttachments.js.map +1 -0
- package/dist/hooks/useHoverCapable.d.ts +6 -0
- package/dist/hooks/useHoverCapable.js +28 -0
- package/dist/hooks/useHoverCapable.js.map +1 -0
- package/dist/hooks/useInlineEditor.d.ts +5 -0
- package/dist/hooks/useInlineEditor.js +41 -0
- package/dist/hooks/useInlineEditor.js.map +1 -0
- package/dist/hooks/useMobile.d.ts +7 -0
- package/dist/hooks/useMobile.js +8 -0
- package/dist/hooks/useMobile.js.map +1 -0
- package/dist/hooks/useNotification.d.ts +38 -0
- package/dist/hooks/useNotification.js +39 -0
- package/dist/hooks/useNotification.js.map +1 -0
- package/dist/hooks/useResolvedTheme.d.ts +7 -0
- package/dist/hooks/useResolvedTheme.js +15 -0
- package/dist/hooks/useResolvedTheme.js.map +1 -0
- package/dist/hooks/useVoiceTranscription.d.ts +25 -0
- package/dist/hooks/useVoiceTranscription.js +106 -0
- package/dist/hooks/useVoiceTranscription.js.map +1 -0
- package/dist/index.d.ts +50 -0
- package/dist/index.js +125 -0
- package/dist/index.js.map +1 -0
- package/dist/interfaces/IFileAttachment.d.ts +18 -0
- package/dist/interfaces/IFileAttachment.js +2 -0
- package/dist/interfaces/IFileAttachment.js.map +1 -0
- package/dist/interfaces/IFilterOption.d.ts +10 -0
- package/dist/interfaces/IFilterOption.js +2 -0
- package/dist/interfaces/IFilterOption.js.map +1 -0
- package/dist/locales/en/ui.json.d.ts +470 -0
- package/dist/locales/en/ui.json.js +99 -0
- package/dist/locales/en/ui.json.js.map +1 -0
- package/dist/locales/index.d.ts +938 -0
- package/dist/locales/index.js +7 -0
- package/dist/locales/index.js.map +1 -0
- package/dist/locales/pt/ui.json.d.ts +470 -0
- package/dist/locales/pt/ui.json.js +99 -0
- package/dist/locales/pt/ui.json.js.map +1 -0
- package/dist/motion/index.d.ts +2 -0
- package/dist/motion/index.js +17 -0
- package/dist/motion/index.js.map +1 -0
- package/dist/motion/motionPresets.d.ts +44 -0
- package/dist/motion/motionPresets.js +67 -0
- package/dist/motion/motionPresets.js.map +1 -0
- package/dist/motion/motionTokens.d.ts +40 -0
- package/dist/motion/motionTokens.js +29 -0
- package/dist/motion/motionTokens.js.map +1 -0
- package/package.json +174 -0
- package/src/assets/styles/theme.css +381 -0
- package/tailwind-plugins/glass.js +167 -0
- package/tailwind.preset.js +367 -0
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
import { jsxs, Fragment, jsx } from "react/jsx-runtime";
|
|
2
|
+
import classNames from "classnames";
|
|
3
|
+
import { useTranslation } from "react-i18next";
|
|
4
|
+
import ControlledButton from "../../Form/ControlledButton.js";
|
|
5
|
+
import ControlledTooltip from "../ControlledTooltip.js";
|
|
6
|
+
import { MaterialSymbol } from "../MaterialSymbol/index.js";
|
|
7
|
+
import { flexRender } from "@tanstack/react-table";
|
|
8
|
+
import { alignClass, FROZEN_LEFT_COLUMN_SHADOW, FROZEN_COLUMN_SHADOW } from "./dataTableClasses.js";
|
|
9
|
+
import DataTableColumnToggle from "./DataTableColumnToggle.js";
|
|
10
|
+
import { resolveColumnMinWidthPx } from "./dataTableColumnWidths.js";
|
|
11
|
+
const DataTableHead = ({
|
|
12
|
+
table,
|
|
13
|
+
columns,
|
|
14
|
+
columnConfigById,
|
|
15
|
+
columnContentWidths,
|
|
16
|
+
columnOrder,
|
|
17
|
+
onColumnOrderChange,
|
|
18
|
+
resetColumnOrder,
|
|
19
|
+
resetColumnSizing,
|
|
20
|
+
onHeaderSortClick,
|
|
21
|
+
resolveSortDirection,
|
|
22
|
+
hideColumnToggle = false,
|
|
23
|
+
flexColumnId = null,
|
|
24
|
+
showActionsShadow = false,
|
|
25
|
+
dense = false,
|
|
26
|
+
spacious = false
|
|
27
|
+
}) => {
|
|
28
|
+
const { t } = useTranslation("ui");
|
|
29
|
+
const columnSizing = table.getState().columnSizing;
|
|
30
|
+
const { isResizingColumn } = table.getState().columnSizingInfo;
|
|
31
|
+
const renderResizeHandle = (header) => {
|
|
32
|
+
if (!header.column.getCanResize()) return null;
|
|
33
|
+
if (header.column.id === flexColumnId && !columnSizing[header.column.id]) return null;
|
|
34
|
+
const isResizing = isResizingColumn === header.column.id;
|
|
35
|
+
return /* @__PURE__ */ jsx(ControlledTooltip, { content: t("dataTable.resizeColumn"), children: /* @__PURE__ */ jsx(
|
|
36
|
+
ControlledButton,
|
|
37
|
+
{
|
|
38
|
+
defaultHtmlButton: true,
|
|
39
|
+
onMouseDown: header.getResizeHandler(),
|
|
40
|
+
onTouchStart: header.getResizeHandler(),
|
|
41
|
+
onDoubleClick: () => header.column.resetSize(),
|
|
42
|
+
onClick: (event) => event.stopPropagation(),
|
|
43
|
+
className: classNames(
|
|
44
|
+
"absolute right-0 top-0 z-40 h-full w-3 cursor-col-resize touch-none select-none",
|
|
45
|
+
"before:absolute before:inset-y-1 before:right-0 before:w-0.5 before:rounded-full before:content-['']",
|
|
46
|
+
isResizing ? "before:bg-brand" : "before:bg-transparent hover:before:bg-brand-hover"
|
|
47
|
+
),
|
|
48
|
+
children: null
|
|
49
|
+
}
|
|
50
|
+
) });
|
|
51
|
+
};
|
|
52
|
+
const renderSortIndicator = (columnConfig) => {
|
|
53
|
+
if (!columnConfig.sortable) return null;
|
|
54
|
+
const direction = resolveSortDirection(columnConfig);
|
|
55
|
+
const icon = direction === "desc" ? "arrow_downward" : "arrow_upward";
|
|
56
|
+
return /* @__PURE__ */ jsx(
|
|
57
|
+
MaterialSymbol,
|
|
58
|
+
{
|
|
59
|
+
icon,
|
|
60
|
+
size: 14,
|
|
61
|
+
className: classNames("transition-opacity", {
|
|
62
|
+
"text-brand-emphasis opacity-100": !!direction,
|
|
63
|
+
"opacity-30": !direction
|
|
64
|
+
})
|
|
65
|
+
}
|
|
66
|
+
);
|
|
67
|
+
};
|
|
68
|
+
const visibleColumns = table.getVisibleLeafColumns();
|
|
69
|
+
const leafHeaders = table.getHeaderGroups()[0]?.headers ?? [];
|
|
70
|
+
const headerGroupSegments = leafHeaders.reduce((segments, header, index) => {
|
|
71
|
+
const label = columnConfigById.get(header.column.id)?.headerGroupLabel ?? null;
|
|
72
|
+
const lastSegment = segments[segments.length - 1];
|
|
73
|
+
if (lastSegment && lastSegment.label === label) {
|
|
74
|
+
lastSegment.headers.push({ header, index });
|
|
75
|
+
return segments;
|
|
76
|
+
}
|
|
77
|
+
segments.push({ label, headers: [{ header, index }] });
|
|
78
|
+
return segments;
|
|
79
|
+
}, []);
|
|
80
|
+
const hasHeaderGroupRow = headerGroupSegments.some((segment) => segment.label !== null);
|
|
81
|
+
const renderColumnHeaderCell = (header, headerIndex, totalHeaders, placement) => {
|
|
82
|
+
const columnConfig = columnConfigById.get(header.column.id);
|
|
83
|
+
const isSortable = !!columnConfig?.sortable;
|
|
84
|
+
const isFirstColumn = headerIndex === 0;
|
|
85
|
+
const isLastColumn = headerIndex === totalHeaders - 1;
|
|
86
|
+
const isStickyLeft = isFirstColumn;
|
|
87
|
+
const isStickyRight = isLastColumn && columnConfig?.type === "actions";
|
|
88
|
+
const rawHeaderContent = isSortable ? /* @__PURE__ */ jsxs(
|
|
89
|
+
ControlledButton,
|
|
90
|
+
{
|
|
91
|
+
defaultHtmlButton: true,
|
|
92
|
+
onClick: () => columnConfig && onHeaderSortClick(columnConfig),
|
|
93
|
+
className: "inline-flex cursor-pointer items-center gap-1 uppercase hover:text-foreground-muted",
|
|
94
|
+
children: [
|
|
95
|
+
flexRender(header.column.columnDef.header, header.getContext()),
|
|
96
|
+
columnConfig && renderSortIndicator(columnConfig)
|
|
97
|
+
]
|
|
98
|
+
}
|
|
99
|
+
) : flexRender(header.column.columnDef.header, header.getContext());
|
|
100
|
+
const headerContent = columnConfig?.headerTooltip ? /* @__PURE__ */ jsx(ControlledTooltip, { content: columnConfig.headerTooltip, children: /* @__PURE__ */ jsx("span", { className: "inline-flex max-w-full", children: rawHeaderContent }) }) : rawHeaderContent;
|
|
101
|
+
return /* @__PURE__ */ jsxs(
|
|
102
|
+
"th",
|
|
103
|
+
{
|
|
104
|
+
rowSpan: placement === "spanning" ? 2 : void 0,
|
|
105
|
+
className: classNames(
|
|
106
|
+
"sticky z-20 whitespace-nowrap bg-muted font-semibold uppercase tracking-wide text-foreground-subtle",
|
|
107
|
+
// The leaf row sits below the band row (fixed h-6) and closes the
|
|
108
|
+
// header's bottom edge; the other placements own both edges.
|
|
109
|
+
placement === "leaf" ? "top-6 border-b border-border" : "top-0 border-y border-border",
|
|
110
|
+
// Outer edges come from the column's table position, not the row
|
|
111
|
+
// position: a banded header splits columns across two rows, so the
|
|
112
|
+
// `first:`/`last:` pseudo-classes would decorate the wrong cells.
|
|
113
|
+
isFirstColumn && "border-l",
|
|
114
|
+
isFirstColumn && (placement === "leaf" ? "rounded-bl-md" : "rounded-l-md"),
|
|
115
|
+
isLastColumn && "border-r",
|
|
116
|
+
isLastColumn && (placement === "leaf" ? "rounded-br-md" : "rounded-r-md"),
|
|
117
|
+
placement === "spanning" && "align-middle",
|
|
118
|
+
spacious ? "text-xs" : "text-xxs",
|
|
119
|
+
placement === "leaf" ? dense ? "px-3 py-1" : spacious ? "px-5 py-1.5" : "px-4 py-1" : dense ? "px-3 py-1.5" : spacious ? "px-5 py-3.5" : "px-4 py-2.5",
|
|
120
|
+
alignClass(columnConfig?.headerAlign ?? columnConfig?.cellAlign),
|
|
121
|
+
isStickyLeft && "left-0 z-30",
|
|
122
|
+
isStickyLeft && showActionsShadow && FROZEN_LEFT_COLUMN_SHADOW,
|
|
123
|
+
isStickyRight && "right-0 z-30",
|
|
124
|
+
isStickyRight && showActionsShadow && FROZEN_COLUMN_SHADOW
|
|
125
|
+
),
|
|
126
|
+
style: {
|
|
127
|
+
minWidth: columnContentWidths.get(header.column.id) ?? resolveColumnMinWidthPx(columnConfig, {
|
|
128
|
+
isFirstColumn,
|
|
129
|
+
hasColumnToggle: isFirstColumn && !hideColumnToggle
|
|
130
|
+
})
|
|
131
|
+
},
|
|
132
|
+
children: [
|
|
133
|
+
isFirstColumn && !hideColumnToggle ? /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between gap-2", children: [
|
|
134
|
+
headerContent,
|
|
135
|
+
/* @__PURE__ */ jsx(
|
|
136
|
+
DataTableColumnToggle,
|
|
137
|
+
{
|
|
138
|
+
table,
|
|
139
|
+
columns,
|
|
140
|
+
columnOrder,
|
|
141
|
+
onColumnOrderChange,
|
|
142
|
+
resetColumnOrder,
|
|
143
|
+
resetColumnSizing
|
|
144
|
+
}
|
|
145
|
+
)
|
|
146
|
+
] }) : headerContent,
|
|
147
|
+
renderResizeHandle(header)
|
|
148
|
+
]
|
|
149
|
+
},
|
|
150
|
+
header.id
|
|
151
|
+
);
|
|
152
|
+
};
|
|
153
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
154
|
+
/* @__PURE__ */ jsx("colgroup", { children: visibleColumns.map((leafColumn, columnIndex) => {
|
|
155
|
+
const colConfig = columnConfigById.get(leafColumn.id);
|
|
156
|
+
const isFirstColumn = columnIndex === 0;
|
|
157
|
+
const isFlexColumn = leafColumn.id === flexColumnId && !columnSizing[leafColumn.id];
|
|
158
|
+
const minWidthPx = columnContentWidths.get(leafColumn.id) ?? resolveColumnMinWidthPx(colConfig, {
|
|
159
|
+
isFirstColumn,
|
|
160
|
+
hasColumnToggle: isFirstColumn && !hideColumnToggle
|
|
161
|
+
});
|
|
162
|
+
return /* @__PURE__ */ jsx(
|
|
163
|
+
"col",
|
|
164
|
+
{
|
|
165
|
+
style: isFlexColumn ? { minWidth: minWidthPx } : { width: leafColumn.getSize(), minWidth: minWidthPx }
|
|
166
|
+
},
|
|
167
|
+
leafColumn.id
|
|
168
|
+
);
|
|
169
|
+
}) }),
|
|
170
|
+
/* @__PURE__ */ jsx("thead", { children: hasHeaderGroupRow ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
171
|
+
/* @__PURE__ */ jsx("tr", { className: "bg-muted", children: headerGroupSegments.map(
|
|
172
|
+
(segment) => segment.label === null ? segment.headers.map(
|
|
173
|
+
({ header, index }) => renderColumnHeaderCell(header, index, leafHeaders.length, "spanning")
|
|
174
|
+
) : /* @__PURE__ */ jsx(
|
|
175
|
+
"th",
|
|
176
|
+
{
|
|
177
|
+
colSpan: segment.headers.length,
|
|
178
|
+
className: classNames(
|
|
179
|
+
"sticky top-0 z-20 h-6 whitespace-nowrap border-x border-y border-border bg-muted px-3 py-0 text-center align-middle font-semibold uppercase tracking-wide text-foreground-subtle",
|
|
180
|
+
spacious ? "text-xs" : "text-xxs",
|
|
181
|
+
segment.headers[0]?.index === 0 && "rounded-tl-md",
|
|
182
|
+
segment.headers[segment.headers.length - 1]?.index === leafHeaders.length - 1 && "rounded-tr-md"
|
|
183
|
+
),
|
|
184
|
+
children: segment.label
|
|
185
|
+
},
|
|
186
|
+
`band:${segment.headers[0]?.header.id}`
|
|
187
|
+
)
|
|
188
|
+
) }),
|
|
189
|
+
/* @__PURE__ */ jsx("tr", { className: "bg-muted", children: headerGroupSegments.filter((segment) => segment.label !== null).flatMap((segment) => segment.headers).map(({ header, index }) => renderColumnHeaderCell(header, index, leafHeaders.length, "leaf")) })
|
|
190
|
+
] }) : /* @__PURE__ */ jsx("tr", { className: "bg-muted", children: leafHeaders.map(
|
|
191
|
+
(header, headerIndex) => renderColumnHeaderCell(header, headerIndex, leafHeaders.length, "single")
|
|
192
|
+
) }) })
|
|
193
|
+
] });
|
|
194
|
+
};
|
|
195
|
+
export {
|
|
196
|
+
DataTableHead as default
|
|
197
|
+
};
|
|
198
|
+
//# sourceMappingURL=DataTableHead.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DataTableHead.js","sources":["../../../../src/components/UI/DataTable/DataTableHead.tsx"],"sourcesContent":["import 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 { flexRender, type Header, type Table, type Updater } from '@tanstack/react-table';\n\nimport { alignClass, FROZEN_COLUMN_SHADOW, FROZEN_LEFT_COLUMN_SHADOW } from './dataTableClasses';\nimport DataTableColumnToggle from './DataTableColumnToggle';\nimport { resolveColumnMinWidthPx } from './dataTableColumnWidths';\nimport type { IDataTableColumnConfig, IDataTableRow } from './types';\n\ninterface IDataTableHeadProps<T extends IDataTableRow> {\n table: Table<T>;\n columns: Array<IDataTableColumnConfig<T>>;\n columnConfigById: Map<string, IDataTableColumnConfig<T>>;\n /** Row-derived widths for actions/badge columns; other columns fall back to the seed. */\n columnContentWidths: Map<string, number>;\n columnOrder: Array<string>;\n onColumnOrderChange: (updater: Updater<Array<string>>) => void;\n resetColumnOrder: () => void;\n resetColumnSizing: () => void;\n onHeaderSortClick: (columnConfig: IDataTableColumnConfig<T>) => void;\n resolveSortDirection: (columnConfig: IDataTableColumnConfig<T>) => false | 'asc' | 'desc';\n /** Omite o toggle de colunas do cabeçalho (quando o host o renderiza no toolbar). */\n hideColumnToggle?: boolean;\n /** Column that absorbs leftover horizontal space under table-fixed. */\n flexColumnId?: string | null;\n /** Show the frozen actions column shadow (set while the table scrolls sideways). */\n showActionsShadow?: boolean;\n /** Denser cell padding for embedded/editor (fit) layouts. */\n dense?: boolean;\n /** Roomier cell padding and type scale, for tables that need to read bigger. */\n spacious?: boolean;\n}\n\nconst DataTableHead = <T extends IDataTableRow>({\n table,\n columns,\n columnConfigById,\n columnContentWidths,\n columnOrder,\n onColumnOrderChange,\n resetColumnOrder,\n resetColumnSizing,\n onHeaderSortClick,\n resolveSortDirection,\n hideColumnToggle = false,\n flexColumnId = null,\n showActionsShadow = false,\n dense = false,\n spacious = false,\n}: IDataTableHeadProps<T>) => {\n const { t } = useTranslation('ui');\n\n const columnSizing = table.getState().columnSizing;\n const { isResizingColumn } = table.getState().columnSizingInfo;\n\n const renderResizeHandle = (header: Header<T, unknown>) => {\n if (!header.column.getCanResize()) return null;\n if (header.column.id === flexColumnId && !columnSizing[header.column.id]) return null;\n\n const isResizing = isResizingColumn === header.column.id;\n\n return (\n <ControlledTooltip content={t('dataTable.resizeColumn')}>\n <ControlledButton\n defaultHtmlButton\n onMouseDown={header.getResizeHandler()}\n onTouchStart={header.getResizeHandler()}\n onDoubleClick={() => header.column.resetSize()}\n onClick={(event) => event.stopPropagation()}\n className={classNames(\n 'absolute right-0 top-0 z-40 h-full w-3 cursor-col-resize touch-none select-none',\n \"before:absolute before:inset-y-1 before:right-0 before:w-0.5 before:rounded-full before:content-['']\",\n isResizing ? 'before:bg-brand' : 'before:bg-transparent hover:before:bg-brand-hover',\n )}\n >\n {null}\n </ControlledButton>\n </ControlledTooltip>\n );\n };\n\n const renderSortIndicator = (columnConfig: IDataTableColumnConfig<T>) => {\n if (!columnConfig.sortable) return null;\n\n const direction = resolveSortDirection(columnConfig);\n const icon = direction === 'desc' ? 'arrow_downward' : 'arrow_upward';\n\n return (\n <MaterialSymbol\n icon={icon}\n size={14}\n className={classNames('transition-opacity', {\n 'text-brand-emphasis opacity-100': !!direction,\n 'opacity-30': !direction,\n })}\n />\n );\n };\n\n const visibleColumns = table.getVisibleLeafColumns();\n const leafHeaders = table.getHeaderGroups()[0]?.headers ?? [];\n\n // Banded header. The header keeps its single-row height: columns WITHOUT a\n // `headerGroupLabel` render one cell spanning both rows (rowSpan 2, centered),\n // while contiguous columns sharing a label split that same height into the\n // group label (band row, fixed h-6) and their own labels (leaf row).\n const headerGroupSegments = leafHeaders.reduce<\n Array<{ label: string | null; headers: Array<{ header: Header<T, unknown>; index: number }> }>\n >((segments, header, index) => {\n const label = columnConfigById.get(header.column.id)?.headerGroupLabel ?? null;\n const lastSegment = segments[segments.length - 1];\n\n if (lastSegment && lastSegment.label === label) {\n lastSegment.headers.push({ header, index });\n return segments;\n }\n\n segments.push({ label, headers: [{ header, index }] });\n return segments;\n }, []);\n const hasHeaderGroupRow = headerGroupSegments.some((segment) => segment.label !== null);\n\n // `single`: the only row (no bands). `spanning`: ungrouped column spanning both\n // rows of a banded header. `leaf`: grouped column's own label under its band.\n const renderColumnHeaderCell = (\n header: Header<T, unknown>,\n headerIndex: number,\n totalHeaders: number,\n placement: 'single' | 'spanning' | 'leaf',\n ) => {\n const columnConfig = columnConfigById.get(header.column.id);\n const isSortable = !!columnConfig?.sortable;\n const isFirstColumn = headerIndex === 0;\n const isLastColumn = headerIndex === totalHeaders - 1;\n const isStickyLeft = isFirstColumn;\n const isStickyRight = isLastColumn && columnConfig?.type === 'actions';\n\n const rawHeaderContent = isSortable ? (\n <ControlledButton\n defaultHtmlButton\n onClick={() => columnConfig && onHeaderSortClick(columnConfig)}\n className=\"inline-flex cursor-pointer items-center gap-1 uppercase hover:text-foreground-muted\"\n >\n {flexRender(header.column.columnDef.header, header.getContext())}\n {columnConfig && renderSortIndicator(columnConfig)}\n </ControlledButton>\n ) : (\n flexRender(header.column.columnDef.header, header.getContext())\n );\n\n const headerContent = columnConfig?.headerTooltip ? (\n <ControlledTooltip content={columnConfig.headerTooltip}>\n <span className=\"inline-flex max-w-full\">{rawHeaderContent}</span>\n </ControlledTooltip>\n ) : (\n rawHeaderContent\n );\n\n return (\n <th\n key={header.id}\n rowSpan={placement === 'spanning' ? 2 : undefined}\n className={classNames(\n 'sticky z-20 whitespace-nowrap bg-muted font-semibold uppercase tracking-wide text-foreground-subtle',\n // The leaf row sits below the band row (fixed h-6) and closes the\n // header's bottom edge; the other placements own both edges.\n placement === 'leaf' ? 'top-6 border-b border-border' : 'top-0 border-y border-border',\n // Outer edges come from the column's table position, not the row\n // position: a banded header splits columns across two rows, so the\n // `first:`/`last:` pseudo-classes would decorate the wrong cells.\n isFirstColumn && 'border-l',\n isFirstColumn && (placement === 'leaf' ? 'rounded-bl-md' : 'rounded-l-md'),\n isLastColumn && 'border-r',\n isLastColumn && (placement === 'leaf' ? 'rounded-br-md' : 'rounded-r-md'),\n placement === 'spanning' && 'align-middle',\n spacious ? 'text-xs' : 'text-xxs',\n placement === 'leaf'\n ? dense\n ? 'px-3 py-1'\n : spacious\n ? 'px-5 py-1.5'\n : 'px-4 py-1'\n : dense\n ? 'px-3 py-1.5'\n : spacious\n ? 'px-5 py-3.5'\n : 'px-4 py-2.5',\n alignClass(columnConfig?.headerAlign ?? columnConfig?.cellAlign),\n isStickyLeft && 'left-0 z-30',\n isStickyLeft && showActionsShadow && FROZEN_LEFT_COLUMN_SHADOW,\n isStickyRight && 'right-0 z-30',\n isStickyRight && showActionsShadow && FROZEN_COLUMN_SHADOW,\n )}\n style={{\n minWidth:\n columnContentWidths.get(header.column.id) ??\n resolveColumnMinWidthPx(columnConfig, {\n isFirstColumn,\n hasColumnToggle: isFirstColumn && !hideColumnToggle,\n }),\n }}\n >\n {isFirstColumn && !hideColumnToggle ? (\n <div className=\"flex items-center justify-between gap-2\">\n {headerContent}\n <DataTableColumnToggle\n table={table}\n columns={columns}\n columnOrder={columnOrder}\n onColumnOrderChange={onColumnOrderChange}\n resetColumnOrder={resetColumnOrder}\n resetColumnSizing={resetColumnSizing}\n />\n </div>\n ) : (\n headerContent\n )}\n {renderResizeHandle(header)}\n </th>\n );\n };\n\n return (\n <>\n <colgroup>\n {visibleColumns.map((leafColumn, columnIndex) => {\n const colConfig = columnConfigById.get(leafColumn.id);\n const isFirstColumn = columnIndex === 0;\n const isFlexColumn = leafColumn.id === flexColumnId && !columnSizing[leafColumn.id];\n const minWidthPx =\n columnContentWidths.get(leafColumn.id) ??\n resolveColumnMinWidthPx(colConfig, {\n isFirstColumn,\n hasColumnToggle: isFirstColumn && !hideColumnToggle,\n });\n\n return (\n <col\n key={leafColumn.id}\n style={isFlexColumn ? { minWidth: minWidthPx } : { width: leafColumn.getSize(), minWidth: minWidthPx }}\n />\n );\n })}\n </colgroup>\n\n <thead>\n {hasHeaderGroupRow ? (\n <>\n <tr className=\"bg-muted\">\n {headerGroupSegments.map((segment) =>\n segment.label === null ? (\n segment.headers.map(({ header, index }) =>\n renderColumnHeaderCell(header, index, leafHeaders.length, 'spanning'),\n )\n ) : (\n <th\n key={`band:${segment.headers[0]?.header.id}`}\n colSpan={segment.headers.length}\n className={classNames(\n 'sticky top-0 z-20 h-6 whitespace-nowrap border-x border-y border-border bg-muted px-3 py-0 text-center align-middle font-semibold uppercase tracking-wide text-foreground-subtle',\n spacious ? 'text-xs' : 'text-xxs',\n segment.headers[0]?.index === 0 && 'rounded-tl-md',\n segment.headers[segment.headers.length - 1]?.index === leafHeaders.length - 1 && 'rounded-tr-md',\n )}\n >\n {segment.label}\n </th>\n ),\n )}\n </tr>\n <tr className=\"bg-muted\">\n {headerGroupSegments\n .filter((segment) => segment.label !== null)\n .flatMap((segment) => segment.headers)\n .map(({ header, index }) => renderColumnHeaderCell(header, index, leafHeaders.length, 'leaf'))}\n </tr>\n </>\n ) : (\n <tr className=\"bg-muted\">\n {leafHeaders.map((header, headerIndex) =>\n renderColumnHeaderCell(header, headerIndex, leafHeaders.length, 'single'),\n )}\n </tr>\n )}\n </thead>\n </>\n );\n};\n\nexport default DataTableHead;\n"],"names":[],"mappings":";;;;;;;;;;AAqCA,MAAM,gBAAgB,CAA0B;AAAA,EAC9C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,mBAAmB;AAAA,EACnB,eAAe;AAAA,EACf,oBAAoB;AAAA,EACpB,QAAQ;AAAA,EACR,WAAW;AACb,MAA8B;AAC5B,QAAM,EAAE,EAAA,IAAM,eAAe,IAAI;AAEjC,QAAM,eAAe,MAAM,SAAA,EAAW;AACtC,QAAM,EAAE,iBAAA,IAAqB,MAAM,WAAW;AAE9C,QAAM,qBAAqB,CAAC,WAA+B;AACzD,QAAI,CAAC,OAAO,OAAO,aAAA,EAAgB,QAAO;AAC1C,QAAI,OAAO,OAAO,OAAO,gBAAgB,CAAC,aAAa,OAAO,OAAO,EAAE,EAAG,QAAO;AAEjF,UAAM,aAAa,qBAAqB,OAAO,OAAO;AAEtD,WACE,oBAAC,mBAAA,EAAkB,SAAS,EAAE,wBAAwB,GACpD,UAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,mBAAiB;AAAA,QACjB,aAAa,OAAO,iBAAA;AAAA,QACpB,cAAc,OAAO,iBAAA;AAAA,QACrB,eAAe,MAAM,OAAO,OAAO,UAAA;AAAA,QACnC,SAAS,CAAC,UAAU,MAAM,gBAAA;AAAA,QAC1B,WAAW;AAAA,UACT;AAAA,UACA;AAAA,UACA,aAAa,oBAAoB;AAAA,QAAA;AAAA,QAGlC,UAAA;AAAA,MAAA;AAAA,IAAA,GAEL;AAAA,EAEJ;AAEA,QAAM,sBAAsB,CAAC,iBAA4C;AACvE,QAAI,CAAC,aAAa,SAAU,QAAO;AAEnC,UAAM,YAAY,qBAAqB,YAAY;AACnD,UAAM,OAAO,cAAc,SAAS,mBAAmB;AAEvD,WACE;AAAA,MAAC;AAAA,MAAA;AAAA,QACC;AAAA,QACA,MAAM;AAAA,QACN,WAAW,WAAW,sBAAsB;AAAA,UAC1C,mCAAmC,CAAC,CAAC;AAAA,UACrC,cAAc,CAAC;AAAA,QAAA,CAChB;AAAA,MAAA;AAAA,IAAA;AAAA,EAGP;AAEA,QAAM,iBAAiB,MAAM,sBAAA;AAC7B,QAAM,cAAc,MAAM,gBAAA,EAAkB,CAAC,GAAG,WAAW,CAAA;AAM3D,QAAM,sBAAsB,YAAY,OAEtC,CAAC,UAAU,QAAQ,UAAU;AAC7B,UAAM,QAAQ,iBAAiB,IAAI,OAAO,OAAO,EAAE,GAAG,oBAAoB;AAC1E,UAAM,cAAc,SAAS,SAAS,SAAS,CAAC;AAEhD,QAAI,eAAe,YAAY,UAAU,OAAO;AAC9C,kBAAY,QAAQ,KAAK,EAAE,QAAQ,OAAO;AAC1C,aAAO;AAAA,IACT;AAEA,aAAS,KAAK,EAAE,OAAO,SAAS,CAAC,EAAE,QAAQ,MAAA,CAAO,GAAG;AACrD,WAAO;AAAA,EACT,GAAG,CAAA,CAAE;AACL,QAAM,oBAAoB,oBAAoB,KAAK,CAAC,YAAY,QAAQ,UAAU,IAAI;AAItF,QAAM,yBAAyB,CAC7B,QACA,aACA,cACA,cACG;AACH,UAAM,eAAe,iBAAiB,IAAI,OAAO,OAAO,EAAE;AAC1D,UAAM,aAAa,CAAC,CAAC,cAAc;AACnC,UAAM,gBAAgB,gBAAgB;AACtC,UAAM,eAAe,gBAAgB,eAAe;AACpD,UAAM,eAAe;AACrB,UAAM,gBAAgB,gBAAgB,cAAc,SAAS;AAE7D,UAAM,mBAAmB,aACvB;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,mBAAiB;AAAA,QACjB,SAAS,MAAM,gBAAgB,kBAAkB,YAAY;AAAA,QAC7D,WAAU;AAAA,QAET,UAAA;AAAA,UAAA,WAAW,OAAO,OAAO,UAAU,QAAQ,OAAO,YAAY;AAAA,UAC9D,gBAAgB,oBAAoB,YAAY;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA,IAGnD,WAAW,OAAO,OAAO,UAAU,QAAQ,OAAO,YAAY;AAGhE,UAAM,gBAAgB,cAAc,gBAClC,oBAAC,qBAAkB,SAAS,aAAa,eACvC,UAAA,oBAAC,QAAA,EAAK,WAAU,0BAA0B,UAAA,iBAAA,CAAiB,GAC7D,IAEA;AAGF,WACE;AAAA,MAAC;AAAA,MAAA;AAAA,QAEC,SAAS,cAAc,aAAa,IAAI;AAAA,QACxC,WAAW;AAAA,UACT;AAAA;AAAA;AAAA,UAGA,cAAc,SAAS,iCAAiC;AAAA;AAAA;AAAA;AAAA,UAIxD,iBAAiB;AAAA,UACjB,kBAAkB,cAAc,SAAS,kBAAkB;AAAA,UAC3D,gBAAgB;AAAA,UAChB,iBAAiB,cAAc,SAAS,kBAAkB;AAAA,UAC1D,cAAc,cAAc;AAAA,UAC5B,WAAW,YAAY;AAAA,UACvB,cAAc,SACV,QACE,cACA,WACE,gBACA,cACJ,QACE,gBACA,WACE,gBACA;AAAA,UACR,WAAW,cAAc,eAAe,cAAc,SAAS;AAAA,UAC/D,gBAAgB;AAAA,UAChB,gBAAgB,qBAAqB;AAAA,UACrC,iBAAiB;AAAA,UACjB,iBAAiB,qBAAqB;AAAA,QAAA;AAAA,QAExC,OAAO;AAAA,UACL,UACE,oBAAoB,IAAI,OAAO,OAAO,EAAE,KACxC,wBAAwB,cAAc;AAAA,YACpC;AAAA,YACA,iBAAiB,iBAAiB,CAAC;AAAA,UAAA,CACpC;AAAA,QAAA;AAAA,QAGJ,UAAA;AAAA,UAAA,iBAAiB,CAAC,mBACjB,qBAAC,OAAA,EAAI,WAAU,2CACZ,UAAA;AAAA,YAAA;AAAA,YACD;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,cAAA;AAAA,YAAA;AAAA,UACF,EAAA,CACF,IAEA;AAAA,UAED,mBAAmB,MAAM;AAAA,QAAA;AAAA,MAAA;AAAA,MAzDrB,OAAO;AAAA,IAAA;AAAA,EA4DlB;AAEA,SACE,qBAAA,UAAA,EACE,UAAA;AAAA,IAAA,oBAAC,YAAA,EACE,UAAA,eAAe,IAAI,CAAC,YAAY,gBAAgB;AAC/C,YAAM,YAAY,iBAAiB,IAAI,WAAW,EAAE;AACpD,YAAM,gBAAgB,gBAAgB;AACtC,YAAM,eAAe,WAAW,OAAO,gBAAgB,CAAC,aAAa,WAAW,EAAE;AAClF,YAAM,aACJ,oBAAoB,IAAI,WAAW,EAAE,KACrC,wBAAwB,WAAW;AAAA,QACjC;AAAA,QACA,iBAAiB,iBAAiB,CAAC;AAAA,MAAA,CACpC;AAEH,aACE;AAAA,QAAC;AAAA,QAAA;AAAA,UAEC,OAAO,eAAe,EAAE,UAAU,WAAA,IAAe,EAAE,OAAO,WAAW,WAAW,UAAU,WAAA;AAAA,QAAW;AAAA,QADhG,WAAW;AAAA,MAAA;AAAA,IAItB,CAAC,EAAA,CACH;AAAA,IAEA,oBAAC,SAAA,EACE,UAAA,oBACC,qBAAA,UAAA,EACE,UAAA;AAAA,MAAA,oBAAC,MAAA,EAAG,WAAU,YACX,UAAA,oBAAoB;AAAA,QAAI,CAAC,YACxB,QAAQ,UAAU,OAChB,QAAQ,QAAQ;AAAA,UAAI,CAAC,EAAE,QAAQ,YAC7B,uBAAuB,QAAQ,OAAO,YAAY,QAAQ,UAAU;AAAA,QAAA,IAGtE;AAAA,UAAC;AAAA,UAAA;AAAA,YAEC,SAAS,QAAQ,QAAQ;AAAA,YACzB,WAAW;AAAA,cACT;AAAA,cACA,WAAW,YAAY;AAAA,cACvB,QAAQ,QAAQ,CAAC,GAAG,UAAU,KAAK;AAAA,cACnC,QAAQ,QAAQ,QAAQ,QAAQ,SAAS,CAAC,GAAG,UAAU,YAAY,SAAS,KAAK;AAAA,YAAA;AAAA,YAGlF,UAAA,QAAQ;AAAA,UAAA;AAAA,UATJ,QAAQ,QAAQ,QAAQ,CAAC,GAAG,OAAO,EAAE;AAAA,QAAA;AAAA,MAU5C,GAGN;AAAA,MACA,oBAAC,MAAA,EAAG,WAAU,YACX,UAAA,oBACE,OAAO,CAAC,YAAY,QAAQ,UAAU,IAAI,EAC1C,QAAQ,CAAC,YAAY,QAAQ,OAAO,EACpC,IAAI,CAAC,EAAE,QAAQ,MAAA,MAAY,uBAAuB,QAAQ,OAAO,YAAY,QAAQ,MAAM,CAAC,EAAA,CACjG;AAAA,IAAA,GACF,IAEA,oBAAC,MAAA,EAAG,WAAU,YACX,UAAA,YAAY;AAAA,MAAI,CAAC,QAAQ,gBACxB,uBAAuB,QAAQ,aAAa,YAAY,QAAQ,QAAQ;AAAA,IAAA,GAE5E,EAAA,CAEJ;AAAA,EAAA,GACF;AAEJ;"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
interface IDataTablePaginationProps {
|
|
2
|
+
pageSize: number;
|
|
3
|
+
numberOfPages: number;
|
|
4
|
+
currentPage: number;
|
|
5
|
+
setCurrentPage: (page: number) => void;
|
|
6
|
+
onPageSizeChange?: (pageSize: number) => void;
|
|
7
|
+
totalItems?: number;
|
|
8
|
+
}
|
|
9
|
+
export declare const DATA_TABLE_MIN_PAGE_SIZE: number;
|
|
10
|
+
/**
|
|
11
|
+
* Compact, right-aligned pagination for the DataTable. Deliberately smaller and
|
|
12
|
+
* more discreet than the shared TableComponentPagination.
|
|
13
|
+
*/
|
|
14
|
+
declare const DataTablePagination: React.FC<IDataTablePaginationProps>;
|
|
15
|
+
export default DataTablePagination;
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import { jsxs, jsx } from "react/jsx-runtime";
|
|
2
|
+
import classNames from "classnames";
|
|
3
|
+
import { useTranslation } from "react-i18next";
|
|
4
|
+
import ControlledButton from "../../Form/ControlledButton.js";
|
|
5
|
+
import { ControlledSelect } from "../../Form/ControlledSelect.js";
|
|
6
|
+
import ControlledTooltip from "../ControlledTooltip.js";
|
|
7
|
+
import { MaterialSymbol } from "../MaterialSymbol/index.js";
|
|
8
|
+
import { formatNumber } from "../../../helpers/formatHelpers.js";
|
|
9
|
+
const PAGE_SIZE_OPTIONS = [20, 50, 100];
|
|
10
|
+
const DATA_TABLE_MIN_PAGE_SIZE = PAGE_SIZE_OPTIONS[0];
|
|
11
|
+
const PAGE_SIZE_SELECT_OPTIONS = PAGE_SIZE_OPTIONS.map((size) => ({ value: size.toString(), label: size.toString() }));
|
|
12
|
+
const PAGE_WINDOW_RADIUS = 1;
|
|
13
|
+
const ELLIPSIS = "ellipsis";
|
|
14
|
+
const COMPACT_PAGE_SIZE_SELECT = classNames(
|
|
15
|
+
"w-[72px]",
|
|
16
|
+
"[&_.controlled-select-input]:!min-w-0",
|
|
17
|
+
"[&_.controlled-select-container]:!min-w-0",
|
|
18
|
+
"[&_.controlled-select-container]:!h-8",
|
|
19
|
+
"[&_.controlled-select-input]:!py-1",
|
|
20
|
+
"[&_.controlled-select-input]:!text-xs"
|
|
21
|
+
);
|
|
22
|
+
const buildPageItems = (currentPage, numberOfPages) => {
|
|
23
|
+
if (numberOfPages <= 1) return [1];
|
|
24
|
+
const pages = /* @__PURE__ */ new Set([1, numberOfPages]);
|
|
25
|
+
for (let page = currentPage - PAGE_WINDOW_RADIUS; page <= currentPage + PAGE_WINDOW_RADIUS; page += 1) {
|
|
26
|
+
if (page >= 1 && page <= numberOfPages) pages.add(page);
|
|
27
|
+
}
|
|
28
|
+
const sortedPages = [...pages].sort((first, second) => first - second);
|
|
29
|
+
return sortedPages.flatMap((page, index) => {
|
|
30
|
+
const previousPage = sortedPages[index - 1];
|
|
31
|
+
return previousPage !== void 0 && page - previousPage > 1 ? [ELLIPSIS, page] : [page];
|
|
32
|
+
});
|
|
33
|
+
};
|
|
34
|
+
const DataTablePagination = ({
|
|
35
|
+
pageSize,
|
|
36
|
+
numberOfPages,
|
|
37
|
+
currentPage,
|
|
38
|
+
setCurrentPage,
|
|
39
|
+
onPageSizeChange,
|
|
40
|
+
totalItems
|
|
41
|
+
}) => {
|
|
42
|
+
const { t } = useTranslation("ui");
|
|
43
|
+
const canPrev = currentPage > 1;
|
|
44
|
+
const canNext = currentPage < numberOfPages;
|
|
45
|
+
const pageItems = buildPageItems(currentPage, numberOfPages);
|
|
46
|
+
const stepClass = (enabled) => classNames(
|
|
47
|
+
"flex size-10 items-center justify-center rounded transition-colors tablet:size-8",
|
|
48
|
+
enabled ? "text-foreground-subtle hover:bg-muted-hover" : "text-foreground-faint"
|
|
49
|
+
);
|
|
50
|
+
const pageClass = (isCurrent) => classNames(
|
|
51
|
+
"flex size-10 items-center justify-center rounded text-xs tabular-nums transition-colors tablet:size-8",
|
|
52
|
+
isCurrent ? "bg-brand font-semibold text-brand-fg" : "text-foreground-subtle hover:bg-muted-hover hover:text-foreground-muted"
|
|
53
|
+
);
|
|
54
|
+
const rangeStart = (currentPage - 1) * pageSize + 1;
|
|
55
|
+
const rangeEnd = totalItems != null ? Math.min(currentPage * pageSize, totalItems) : currentPage * pageSize;
|
|
56
|
+
return /* @__PURE__ */ jsxs("div", { className: "flex flex-wrap items-center justify-end gap-x-4 gap-y-2 pb-3 text-xs text-foreground-subtle", children: [
|
|
57
|
+
onPageSizeChange && /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1.5", children: [
|
|
58
|
+
/* @__PURE__ */ jsx("span", { children: t("pagination.resultsPerPage") }),
|
|
59
|
+
/* @__PURE__ */ jsx(
|
|
60
|
+
ControlledSelect,
|
|
61
|
+
{
|
|
62
|
+
options: PAGE_SIZE_SELECT_OPTIONS,
|
|
63
|
+
selectedValue: pageSize.toString(),
|
|
64
|
+
onChangeHook: (selected) => onPageSizeChange(Number(selected)),
|
|
65
|
+
searchable: false,
|
|
66
|
+
clearable: false,
|
|
67
|
+
className: COMPACT_PAGE_SIZE_SELECT
|
|
68
|
+
}
|
|
69
|
+
)
|
|
70
|
+
] }),
|
|
71
|
+
/* @__PURE__ */ jsx("span", { className: "tabular-nums", children: totalItems != null ? t("pagination.range", {
|
|
72
|
+
from: formatNumber(Math.min(rangeStart, rangeEnd)),
|
|
73
|
+
to: formatNumber(rangeEnd),
|
|
74
|
+
total: formatNumber(totalItems)
|
|
75
|
+
}) : t("pagination.pageOf", { current: currentPage, total: numberOfPages }) }),
|
|
76
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-0.5", children: [
|
|
77
|
+
/* @__PURE__ */ jsx(ControlledTooltip, { content: t("pagination.first"), children: /* @__PURE__ */ jsx(
|
|
78
|
+
ControlledButton,
|
|
79
|
+
{
|
|
80
|
+
defaultHtmlButton: true,
|
|
81
|
+
disabled: !canPrev,
|
|
82
|
+
onClick: () => setCurrentPage(1),
|
|
83
|
+
className: stepClass(canPrev),
|
|
84
|
+
children: /* @__PURE__ */ jsx(MaterialSymbol, { icon: "first_page", size: 18 })
|
|
85
|
+
}
|
|
86
|
+
) }),
|
|
87
|
+
/* @__PURE__ */ jsx(ControlledTooltip, { content: t("actions.previous"), children: /* @__PURE__ */ jsx(
|
|
88
|
+
ControlledButton,
|
|
89
|
+
{
|
|
90
|
+
defaultHtmlButton: true,
|
|
91
|
+
disabled: !canPrev,
|
|
92
|
+
onClick: () => setCurrentPage(currentPage - 1),
|
|
93
|
+
className: stepClass(canPrev),
|
|
94
|
+
children: /* @__PURE__ */ jsx(MaterialSymbol, { icon: "chevron_left", size: 18 })
|
|
95
|
+
}
|
|
96
|
+
) }),
|
|
97
|
+
pageItems.map(
|
|
98
|
+
(item, index) => item === ELLIPSIS ? /* @__PURE__ */ jsx(
|
|
99
|
+
"span",
|
|
100
|
+
{
|
|
101
|
+
className: "flex size-10 items-center justify-center text-foreground-faint tablet:size-8",
|
|
102
|
+
"aria-hidden": true,
|
|
103
|
+
children: t("pagination.gap")
|
|
104
|
+
},
|
|
105
|
+
`data-table-pagination-gap-${index}`
|
|
106
|
+
) : /* @__PURE__ */ jsx(
|
|
107
|
+
ControlledButton,
|
|
108
|
+
{
|
|
109
|
+
defaultHtmlButton: true,
|
|
110
|
+
"aria-current": item === currentPage ? "page" : void 0,
|
|
111
|
+
onClick: () => setCurrentPage(item),
|
|
112
|
+
className: pageClass(item === currentPage),
|
|
113
|
+
children: formatNumber(item)
|
|
114
|
+
},
|
|
115
|
+
`data-table-pagination-page-${item}`
|
|
116
|
+
)
|
|
117
|
+
),
|
|
118
|
+
/* @__PURE__ */ jsx(ControlledTooltip, { content: t("actions.next"), children: /* @__PURE__ */ jsx(
|
|
119
|
+
ControlledButton,
|
|
120
|
+
{
|
|
121
|
+
defaultHtmlButton: true,
|
|
122
|
+
disabled: !canNext,
|
|
123
|
+
onClick: () => setCurrentPage(currentPage + 1),
|
|
124
|
+
className: stepClass(canNext),
|
|
125
|
+
children: /* @__PURE__ */ jsx(MaterialSymbol, { icon: "chevron_right", size: 18 })
|
|
126
|
+
}
|
|
127
|
+
) }),
|
|
128
|
+
/* @__PURE__ */ jsx(ControlledTooltip, { content: t("pagination.last"), children: /* @__PURE__ */ jsx(
|
|
129
|
+
ControlledButton,
|
|
130
|
+
{
|
|
131
|
+
defaultHtmlButton: true,
|
|
132
|
+
disabled: !canNext,
|
|
133
|
+
onClick: () => setCurrentPage(numberOfPages),
|
|
134
|
+
className: stepClass(canNext),
|
|
135
|
+
children: /* @__PURE__ */ jsx(MaterialSymbol, { icon: "last_page", size: 18 })
|
|
136
|
+
}
|
|
137
|
+
) })
|
|
138
|
+
] })
|
|
139
|
+
] });
|
|
140
|
+
};
|
|
141
|
+
export {
|
|
142
|
+
DATA_TABLE_MIN_PAGE_SIZE,
|
|
143
|
+
DataTablePagination as default
|
|
144
|
+
};
|
|
145
|
+
//# sourceMappingURL=DataTablePagination.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DataTablePagination.js","sources":["../../../../src/components/UI/DataTable/DataTablePagination.tsx"],"sourcesContent":["import classNames from 'classnames';\nimport { useTranslation } from 'react-i18next';\n\nimport ControlledButton from '@/components/Form/ControlledButton';\nimport { ControlledSelect } from '@/components/Form/ControlledSelect';\nimport ControlledTooltip from '@/components/UI/ControlledTooltip';\nimport { MaterialSymbol } from '@/components/UI/MaterialSymbol';\nimport { formatNumber } from '@/helpers/formatHelpers';\n\ninterface IDataTablePaginationProps {\n pageSize: number;\n numberOfPages: number;\n currentPage: number;\n setCurrentPage: (page: number) => void;\n onPageSizeChange?: (pageSize: number) => void;\n totalItems?: number;\n}\n\nconst PAGE_SIZE_OPTIONS = [20, 50, 100];\n\nexport const DATA_TABLE_MIN_PAGE_SIZE = PAGE_SIZE_OPTIONS[0];\nconst PAGE_SIZE_SELECT_OPTIONS = PAGE_SIZE_OPTIONS.map((size) => ({ value: size.toString(), label: size.toString() }));\n\n/** Botões de página ao redor da atual, com as pontas sempre alcançáveis. */\nconst PAGE_WINDOW_RADIUS = 1;\nconst ELLIPSIS = 'ellipsis';\n\n// The shared ControlledSelect trigger ships a wide (min-w-52) field at the default\n// input height. For the pagination we want a compact, discreet picker, so we release\n// the min-widths and shrink the trigger's width and height via arbitrary variants\n// (same technique used elsewhere in the app to shrink this trigger).\nconst COMPACT_PAGE_SIZE_SELECT = classNames(\n 'w-[72px]',\n '[&_.controlled-select-input]:!min-w-0',\n '[&_.controlled-select-container]:!min-w-0',\n '[&_.controlled-select-container]:!h-8',\n '[&_.controlled-select-input]:!py-1',\n '[&_.controlled-select-input]:!text-xs',\n);\n\n/**\n * Páginas visíveis: primeira, última, a atual e uma vizinha de cada lado.\n * As reticências entram só quando existe salto real, então a barra nunca muda\n * de largura a cada clique.\n */\nconst buildPageItems = (currentPage: number, numberOfPages: number): Array<number | typeof ELLIPSIS> => {\n if (numberOfPages <= 1) return [1];\n\n const pages = new Set<number>([1, numberOfPages]);\n for (let page = currentPage - PAGE_WINDOW_RADIUS; page <= currentPage + PAGE_WINDOW_RADIUS; page += 1) {\n if (page >= 1 && page <= numberOfPages) pages.add(page);\n }\n\n const sortedPages = [...pages].sort((first, second) => first - second);\n\n return sortedPages.flatMap((page, index) => {\n const previousPage = sortedPages[index - 1];\n return previousPage !== undefined && page - previousPage > 1 ? [ELLIPSIS, page] : [page];\n });\n};\n\n/**\n * Compact, right-aligned pagination for the DataTable. Deliberately smaller and\n * more discreet than the shared TableComponentPagination.\n */\nconst DataTablePagination: React.FC<IDataTablePaginationProps> = ({\n pageSize,\n numberOfPages,\n currentPage,\n setCurrentPage,\n onPageSizeChange,\n totalItems,\n}) => {\n const { t } = useTranslation('ui');\n\n const canPrev = currentPage > 1;\n const canNext = currentPage < numberOfPages;\n const pageItems = buildPageItems(currentPage, numberOfPages);\n\n // The arrows are the only way to page on touch, so they keep a ~40px target\n // instead of the icon's own 18px box, while staying visually compact.\n const stepClass = (enabled: boolean) =>\n classNames(\n 'flex size-10 items-center justify-center rounded transition-colors tablet:size-8',\n enabled ? 'text-foreground-subtle hover:bg-muted-hover' : 'text-foreground-faint',\n );\n\n const pageClass = (isCurrent: boolean) =>\n classNames(\n 'flex size-10 items-center justify-center rounded text-xs tabular-nums transition-colors tablet:size-8',\n isCurrent\n ? 'bg-brand font-semibold text-brand-fg'\n : 'text-foreground-subtle hover:bg-muted-hover hover:text-foreground-muted',\n );\n\n const rangeStart = (currentPage - 1) * pageSize + 1;\n const rangeEnd = totalItems != null ? Math.min(currentPage * pageSize, totalItems) : currentPage * pageSize;\n\n return (\n <div className=\"flex flex-wrap items-center justify-end gap-x-4 gap-y-2 pb-3 text-xs text-foreground-subtle\">\n {onPageSizeChange && (\n <div className=\"flex items-center gap-1.5\">\n <span>{t('pagination.resultsPerPage')}</span>\n <ControlledSelect\n options={PAGE_SIZE_SELECT_OPTIONS}\n selectedValue={pageSize.toString()}\n onChangeHook={(selected) => onPageSizeChange(Number(selected))}\n searchable={false}\n clearable={false}\n className={COMPACT_PAGE_SIZE_SELECT}\n />\n </div>\n )}\n\n <span className=\"tabular-nums\">\n {totalItems != null\n ? t('pagination.range', {\n from: formatNumber(Math.min(rangeStart, rangeEnd)),\n to: formatNumber(rangeEnd),\n total: formatNumber(totalItems),\n })\n : t('pagination.pageOf', { current: currentPage, total: numberOfPages })}\n </span>\n\n <div className=\"flex items-center gap-0.5\">\n <ControlledTooltip content={t('pagination.first')}>\n <ControlledButton\n defaultHtmlButton\n disabled={!canPrev}\n onClick={() => setCurrentPage(1)}\n className={stepClass(canPrev)}\n >\n <MaterialSymbol icon=\"first_page\" size={18} />\n </ControlledButton>\n </ControlledTooltip>\n <ControlledTooltip content={t('actions.previous')}>\n <ControlledButton\n defaultHtmlButton\n disabled={!canPrev}\n onClick={() => setCurrentPage(currentPage - 1)}\n className={stepClass(canPrev)}\n >\n <MaterialSymbol icon=\"chevron_left\" size={18} />\n </ControlledButton>\n </ControlledTooltip>\n\n {pageItems.map((item, index) =>\n item === ELLIPSIS ? (\n <span\n key={`data-table-pagination-gap-${index}`}\n className=\"flex size-10 items-center justify-center text-foreground-faint tablet:size-8\"\n aria-hidden\n >\n {t('pagination.gap')}\n </span>\n ) : (\n <ControlledButton\n key={`data-table-pagination-page-${item}`}\n defaultHtmlButton\n aria-current={item === currentPage ? 'page' : undefined}\n onClick={() => setCurrentPage(item)}\n className={pageClass(item === currentPage)}\n >\n {formatNumber(item)}\n </ControlledButton>\n ),\n )}\n\n <ControlledTooltip content={t('actions.next')}>\n <ControlledButton\n defaultHtmlButton\n disabled={!canNext}\n onClick={() => setCurrentPage(currentPage + 1)}\n className={stepClass(canNext)}\n >\n <MaterialSymbol icon=\"chevron_right\" size={18} />\n </ControlledButton>\n </ControlledTooltip>\n <ControlledTooltip content={t('pagination.last')}>\n <ControlledButton\n defaultHtmlButton\n disabled={!canNext}\n onClick={() => setCurrentPage(numberOfPages)}\n className={stepClass(canNext)}\n >\n <MaterialSymbol icon=\"last_page\" size={18} />\n </ControlledButton>\n </ControlledTooltip>\n </div>\n </div>\n );\n};\n\nexport default DataTablePagination;\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
interface IDataTableSaveButtonProps {
|
|
2
|
+
onClick: () => void;
|
|
3
|
+
loading?: boolean;
|
|
4
|
+
disabled?: boolean;
|
|
5
|
+
label?: string;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Toolbar action for saving pending inline edits held in `useDataTableEditBuffer`.
|
|
9
|
+
* Drop it into the DataTable `toolbarSlot` and wire `onClick` to the hook's
|
|
10
|
+
* `flush`, `loading` to its `loading`, and `disabled` to `!isDirty`.
|
|
11
|
+
*/
|
|
12
|
+
declare const DataTableSaveButton: React.FC<IDataTableSaveButtonProps>;
|
|
13
|
+
export default DataTableSaveButton;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { jsxs, jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useTranslation } from "react-i18next";
|
|
3
|
+
import ControlledButton from "../../Form/ControlledButton.js";
|
|
4
|
+
import LoadingSpinner from "../LoadingSpinner.js";
|
|
5
|
+
import { MaterialSymbol } from "../MaterialSymbol/index.js";
|
|
6
|
+
const DataTableSaveButton = ({
|
|
7
|
+
onClick,
|
|
8
|
+
loading = false,
|
|
9
|
+
disabled = false,
|
|
10
|
+
label
|
|
11
|
+
}) => {
|
|
12
|
+
const { t } = useTranslation("ui");
|
|
13
|
+
return /* @__PURE__ */ jsxs(ControlledButton, { disabled: disabled || loading, onClick, className: "flex items-center gap-1.5", children: [
|
|
14
|
+
loading ? /* @__PURE__ */ jsx(LoadingSpinner, { size: 4, color: "white" }) : /* @__PURE__ */ jsx(MaterialSymbol, { icon: "save", size: 18 }),
|
|
15
|
+
label ?? t("dataTable.save")
|
|
16
|
+
] });
|
|
17
|
+
};
|
|
18
|
+
export {
|
|
19
|
+
DataTableSaveButton as default
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=DataTableSaveButton.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DataTableSaveButton.js","sources":["../../../../src/components/UI/DataTable/DataTableSaveButton.tsx"],"sourcesContent":["import { useTranslation } from 'react-i18next';\n\nimport ControlledButton from '@/components/Form/ControlledButton';\nimport LoadingSpinner from '@/components/UI/LoadingSpinner';\nimport { MaterialSymbol } from '@/components/UI/MaterialSymbol';\n\ninterface IDataTableSaveButtonProps {\n onClick: () => void;\n loading?: boolean;\n disabled?: boolean;\n label?: string;\n}\n\n/**\n * Toolbar action for saving pending inline edits held in `useDataTableEditBuffer`.\n * Drop it into the DataTable `toolbarSlot` and wire `onClick` to the hook's\n * `flush`, `loading` to its `loading`, and `disabled` to `!isDirty`.\n */\nconst DataTableSaveButton: React.FC<IDataTableSaveButtonProps> = ({\n onClick,\n loading = false,\n disabled = false,\n label,\n}) => {\n const { t } = useTranslation('ui');\n\n return (\n <ControlledButton disabled={disabled || loading} onClick={onClick} className=\"flex items-center gap-1.5\">\n {loading ? <LoadingSpinner size={4} color=\"white\" /> : <MaterialSymbol icon=\"save\" size={18} />}\n {label ?? t('dataTable.save')}\n </ControlledButton>\n );\n};\n\nexport default DataTableSaveButton;\n"],"names":[],"mappings":";;;;;AAkBA,MAAM,sBAA2D,CAAC;AAAA,EAChE;AAAA,EACA,UAAU;AAAA,EACV,WAAW;AAAA,EACX;AACF,MAAM;AACJ,QAAM,EAAE,EAAA,IAAM,eAAe,IAAI;AAEjC,8BACG,kBAAA,EAAiB,UAAU,YAAY,SAAS,SAAkB,WAAU,6BAC1E,UAAA;AAAA,IAAA,UAAU,oBAAC,gBAAA,EAAe,MAAM,GAAG,OAAM,QAAA,CAAQ,IAAK,oBAAC,gBAAA,EAAe,MAAK,QAAO,MAAM,IAAI;AAAA,IAC5F,SAAS,EAAE,gBAAgB;AAAA,EAAA,GAC9B;AAEJ;"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { IDataTableRow, IDataTableTab } from './types';
|
|
2
|
+
interface IDataTableSegmentedTabsProps<T extends IDataTableRow> {
|
|
3
|
+
tabs: Array<IDataTableTab<T>>;
|
|
4
|
+
activeTab: string;
|
|
5
|
+
onChange: (value: string) => void;
|
|
6
|
+
}
|
|
7
|
+
declare const DataTableSegmentedTabs: <T extends IDataTableRow>({ tabs, activeTab, onChange, }: IDataTableSegmentedTabsProps<T>) => import("react").JSX.Element;
|
|
8
|
+
export default DataTableSegmentedTabs;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
|
2
|
+
import classNames from "classnames";
|
|
3
|
+
import ControlledButton from "../../Form/ControlledButton.js";
|
|
4
|
+
import HorizontalScrollArea from "../HorizontalScrollArea.js";
|
|
5
|
+
const DataTableSegmentedTabs = ({
|
|
6
|
+
tabs,
|
|
7
|
+
activeTab,
|
|
8
|
+
onChange
|
|
9
|
+
}) => (
|
|
10
|
+
// The segments never wrap (a wrapped pill bar reads as two separate controls),
|
|
11
|
+
// so on a narrow toolbar they scroll instead of being clipped out of reach.
|
|
12
|
+
/* @__PURE__ */ jsx(HorizontalScrollArea, { containerClassName: "rounded-lg bg-muted-hover", className: "p-1", children: /* @__PURE__ */ jsx("div", { className: "flex w-max items-center gap-1", children: tabs.map((tab) => {
|
|
13
|
+
const isActive = tab.value === activeTab;
|
|
14
|
+
return /* @__PURE__ */ jsx(
|
|
15
|
+
ControlledButton,
|
|
16
|
+
{
|
|
17
|
+
defaultHtmlButton: true,
|
|
18
|
+
onClick: () => onChange(tab.value),
|
|
19
|
+
className: classNames(
|
|
20
|
+
"min-h-9 shrink-0 whitespace-nowrap rounded-md px-4 py-1.5 text-sm font-medium transition-colors",
|
|
21
|
+
{
|
|
22
|
+
"bg-brand text-brand-fg shadow-sm": isActive,
|
|
23
|
+
"text-foreground-muted hover:text-foreground": !isActive
|
|
24
|
+
}
|
|
25
|
+
),
|
|
26
|
+
children: tab.count !== void 0 ? `${tab.label} (${tab.count})` : tab.label
|
|
27
|
+
},
|
|
28
|
+
tab.value
|
|
29
|
+
);
|
|
30
|
+
}) }) })
|
|
31
|
+
);
|
|
32
|
+
export {
|
|
33
|
+
DataTableSegmentedTabs as default
|
|
34
|
+
};
|
|
35
|
+
//# sourceMappingURL=DataTableSegmentedTabs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DataTableSegmentedTabs.js","sources":["../../../../src/components/UI/DataTable/DataTableSegmentedTabs.tsx"],"sourcesContent":["import classNames from 'classnames';\n\nimport ControlledButton from '@/components/Form/ControlledButton';\nimport HorizontalScrollArea from '@/components/UI/HorizontalScrollArea';\n\nimport type { IDataTableRow, IDataTableTab } from './types';\n\ninterface IDataTableSegmentedTabsProps<T extends IDataTableRow> {\n tabs: Array<IDataTableTab<T>>;\n activeTab: string;\n onChange: (value: string) => void;\n}\n\nconst DataTableSegmentedTabs = <T extends IDataTableRow>({\n tabs,\n activeTab,\n onChange,\n}: IDataTableSegmentedTabsProps<T>) => (\n // The segments never wrap (a wrapped pill bar reads as two separate controls),\n // so on a narrow toolbar they scroll instead of being clipped out of reach.\n <HorizontalScrollArea containerClassName=\"rounded-lg bg-muted-hover\" className=\"p-1\">\n <div className=\"flex w-max items-center gap-1\">\n {tabs.map((tab) => {\n const isActive = tab.value === activeTab;\n\n return (\n <ControlledButton\n key={tab.value}\n defaultHtmlButton\n onClick={() => onChange(tab.value)}\n className={classNames(\n 'min-h-9 shrink-0 whitespace-nowrap rounded-md px-4 py-1.5 text-sm font-medium transition-colors',\n {\n 'bg-brand text-brand-fg shadow-sm': isActive,\n 'text-foreground-muted hover:text-foreground': !isActive,\n },\n )}\n >\n {tab.count !== undefined ? `${tab.label} (${tab.count})` : tab.label}\n </ControlledButton>\n );\n })}\n </div>\n </HorizontalScrollArea>\n);\n\nexport default DataTableSegmentedTabs;\n"],"names":[],"mappings":";;;;AAaA,MAAM,yBAAyB,CAA0B;AAAA,EACvD;AAAA,EACA;AAAA,EACA;AACF;AAAA;AAAA;AAAA,EAGE,oBAAC,sBAAA,EAAqB,oBAAmB,6BAA4B,WAAU,OAC7E,UAAA,oBAAC,OAAA,EAAI,WAAU,iCACZ,UAAA,KAAK,IAAI,CAAC,QAAQ;AACjB,UAAM,WAAW,IAAI,UAAU;AAE/B,WACE;AAAA,MAAC;AAAA,MAAA;AAAA,QAEC,mBAAiB;AAAA,QACjB,SAAS,MAAM,SAAS,IAAI,KAAK;AAAA,QACjC,WAAW;AAAA,UACT;AAAA,UACA;AAAA,YACE,oCAAoC;AAAA,YACpC,+CAA+C,CAAC;AAAA,UAAA;AAAA,QAClD;AAAA,QAGD,UAAA,IAAI,UAAU,SAAY,GAAG,IAAI,KAAK,KAAK,IAAI,KAAK,MAAM,IAAI;AAAA,MAAA;AAAA,MAX1D,IAAI;AAAA,IAAA;AAAA,EAcf,CAAC,GACH,EAAA,CACF;AAAA;"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export declare const DataTableSkeletonState: React.FC<{
|
|
2
|
+
rows?: number;
|
|
3
|
+
}>;
|
|
4
|
+
export declare const DataTableCardsSkeletonState: React.FC<{
|
|
5
|
+
cardClassName?: string;
|
|
6
|
+
}>;
|
|
7
|
+
interface IDataTableErrorStateProps {
|
|
8
|
+
onRetry?: () => void;
|
|
9
|
+
/** The caught error, so a denial or a dropped connection does not read as a system failure. */
|
|
10
|
+
errorCause?: unknown;
|
|
11
|
+
}
|
|
12
|
+
export declare const DataTableErrorState: React.FC<IDataTableErrorStateProps>;
|
|
13
|
+
interface IDataTableEmptyStateProps {
|
|
14
|
+
emptyMessage?: string;
|
|
15
|
+
}
|
|
16
|
+
export declare const DataTableEmptyState: React.FC<IDataTableEmptyStateProps>;
|
|
17
|
+
export {};
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useTranslation } from "react-i18next";
|
|
3
|
+
import { twMerge } from "tailwind-merge";
|
|
4
|
+
import NoDataFound from "../NoDataFound/index.js";
|
|
5
|
+
import SkeletonLoading from "../SkeletonLoading.js";
|
|
6
|
+
import { describeUiError } from "../../../helpers/uiErrorPresenter.js";
|
|
7
|
+
const DEFAULT_SKELETON_ROWS = 8;
|
|
8
|
+
const DataTableSkeletonState = ({ rows = DEFAULT_SKELETON_ROWS }) => /* @__PURE__ */ jsx("div", { className: "flex flex-col gap-2 py-4", children: Array.from({ length: Math.max(1, rows) }).map((_, index) => /* @__PURE__ */ jsx(SkeletonLoading, { className: "h-9" }, `data-table-skeleton-${index}`)) });
|
|
9
|
+
const DataTableCardsSkeletonState = ({ cardClassName }) => (
|
|
10
|
+
// Mesmo contêiner e mesmo alinhamento da grade real: sem o `@container` aqui, um
|
|
11
|
+
// card de largura responsiva não teria contra o que medir enquanto carrega.
|
|
12
|
+
/* @__PURE__ */ jsx("div", { className: "flex flex-wrap justify-center gap-4 py-2 @container @md:justify-start", children: Array.from({ length: 12 }).map((_, index) => /* @__PURE__ */ jsxs(
|
|
13
|
+
"div",
|
|
14
|
+
{
|
|
15
|
+
className: twMerge(
|
|
16
|
+
"w-52 animate-pulse overflow-hidden rounded-lg border border-border-subtle bg-surface",
|
|
17
|
+
cardClassName
|
|
18
|
+
),
|
|
19
|
+
children: [
|
|
20
|
+
/* @__PURE__ */ jsx("div", { className: "aspect-square w-full bg-muted-active" }),
|
|
21
|
+
/* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-2 p-3", children: [
|
|
22
|
+
/* @__PURE__ */ jsx(SkeletonLoading, { className: "h-4 w-3/4" }),
|
|
23
|
+
/* @__PURE__ */ jsx(SkeletonLoading, { className: "h-3 w-1/2" }),
|
|
24
|
+
/* @__PURE__ */ jsx(SkeletonLoading, { className: "h-3 w-2/3" }),
|
|
25
|
+
/* @__PURE__ */ jsx(SkeletonLoading, { className: "mt-1 h-3 w-1/3" })
|
|
26
|
+
] })
|
|
27
|
+
]
|
|
28
|
+
},
|
|
29
|
+
`data-table-card-skeleton-${index}`
|
|
30
|
+
)) })
|
|
31
|
+
);
|
|
32
|
+
const DataTableErrorState = ({ onRetry, errorCause }) => {
|
|
33
|
+
const { t } = useTranslation("ui");
|
|
34
|
+
const presentation = describeUiError(errorCause);
|
|
35
|
+
const retryAction = onRetry ? { label: t("actions.tryAgain"), onClick: onRetry, icon: "refresh" } : void 0;
|
|
36
|
+
if (!presentation) {
|
|
37
|
+
return /* @__PURE__ */ jsx(NoDataFound, { variant: "error", title: t("dataTable.error"), action: retryAction });
|
|
38
|
+
}
|
|
39
|
+
return /* @__PURE__ */ jsx(
|
|
40
|
+
NoDataFound,
|
|
41
|
+
{
|
|
42
|
+
variant: presentation.variant,
|
|
43
|
+
title: t(presentation.titleKey),
|
|
44
|
+
description: t(presentation.descriptionKey),
|
|
45
|
+
action: presentation.isRetryable ? retryAction : void 0
|
|
46
|
+
}
|
|
47
|
+
);
|
|
48
|
+
};
|
|
49
|
+
const DataTableEmptyState = ({ emptyMessage }) => {
|
|
50
|
+
const { t } = useTranslation("ui");
|
|
51
|
+
return /* @__PURE__ */ jsx(NoDataFound, { message: emptyMessage ?? t("dataTable.empty") });
|
|
52
|
+
};
|
|
53
|
+
export {
|
|
54
|
+
DataTableCardsSkeletonState,
|
|
55
|
+
DataTableEmptyState,
|
|
56
|
+
DataTableErrorState,
|
|
57
|
+
DataTableSkeletonState
|
|
58
|
+
};
|
|
59
|
+
//# sourceMappingURL=DataTableStates.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DataTableStates.js","sources":["../../../../src/components/UI/DataTable/DataTableStates.tsx"],"sourcesContent":["import { useTranslation } from 'react-i18next';\nimport { twMerge } from 'tailwind-merge';\n\nimport NoDataFound from '@/components/UI/NoDataFound';\nimport SkeletonLoading from '@/components/UI/SkeletonLoading';\nimport { describeUiError } from '@/helpers/uiErrorPresenter';\n\nconst DEFAULT_SKELETON_ROWS = 8;\n\nexport const DataTableSkeletonState: React.FC<{ rows?: number }> = ({ rows = DEFAULT_SKELETON_ROWS }) => (\n <div className=\"flex flex-col gap-2 py-4\">\n {Array.from({ length: Math.max(1, rows) }).map((_, index) => (\n <SkeletonLoading key={`data-table-skeleton-${index}`} className=\"h-9\" />\n ))}\n </div>\n);\n\nexport const DataTableCardsSkeletonState: React.FC<{ cardClassName?: string }> = ({ cardClassName }) => (\n // Mesmo contêiner e mesmo alinhamento da grade real: sem o `@container` aqui, um\n // card de largura responsiva não teria contra o que medir enquanto carrega.\n <div className=\"flex flex-wrap justify-center gap-4 py-2 @container @md:justify-start\">\n {Array.from({ length: 12 }).map((_, index) => (\n <div\n key={`data-table-card-skeleton-${index}`}\n className={twMerge(\n 'w-52 animate-pulse overflow-hidden rounded-lg border border-border-subtle bg-surface',\n cardClassName,\n )}\n >\n <div className=\"aspect-square w-full bg-muted-active\" />\n <div className=\"flex flex-col gap-2 p-3\">\n <SkeletonLoading className=\"h-4 w-3/4\" />\n <SkeletonLoading className=\"h-3 w-1/2\" />\n <SkeletonLoading className=\"h-3 w-2/3\" />\n <SkeletonLoading className=\"mt-1 h-3 w-1/3\" />\n </div>\n </div>\n ))}\n </div>\n);\n\ninterface IDataTableErrorStateProps {\n onRetry?: () => void;\n /** The caught error, so a denial or a dropped connection does not read as a system failure. */\n errorCause?: unknown;\n}\n\nexport const DataTableErrorState: React.FC<IDataTableErrorStateProps> = ({ onRetry, errorCause }) => {\n const { t } = useTranslation('ui');\n const presentation = describeUiError(errorCause);\n const retryAction = onRetry\n ? { label: t('actions.tryAgain'), onClick: onRetry, icon: 'refresh' as const }\n : undefined;\n\n if (!presentation) {\n return <NoDataFound variant=\"error\" title={t('dataTable.error')} action={retryAction} />;\n }\n\n return (\n <NoDataFound\n variant={presentation.variant}\n title={t(presentation.titleKey)}\n description={t(presentation.descriptionKey)}\n action={presentation.isRetryable ? retryAction : undefined}\n />\n );\n};\n\ninterface IDataTableEmptyStateProps {\n emptyMessage?: string;\n}\n\nexport const DataTableEmptyState: React.FC<IDataTableEmptyStateProps> = ({ emptyMessage }) => {\n const { t } = useTranslation('ui');\n\n return <NoDataFound message={emptyMessage ?? t('dataTable.empty')} />;\n};\n"],"names":[],"mappings":";;;;;;AAOA,MAAM,wBAAwB;AAEvB,MAAM,yBAAsD,CAAC,EAAE,OAAO,4BAC3E,oBAAC,OAAA,EAAI,WAAU,4BACZ,UAAA,MAAM,KAAK,EAAE,QAAQ,KAAK,IAAI,GAAG,IAAI,EAAA,CAAG,EAAE,IAAI,CAAC,GAAG,UACjD,oBAAC,iBAAA,EAAqD,WAAU,MAAA,GAA1C,uBAAuB,KAAK,EAAoB,CACvE,EAAA,CACH;AAGK,MAAM,8BAAoE,CAAC,EAAE,cAAA;AAAA;AAAA;AAAA,EAGlF,oBAAC,OAAA,EAAI,WAAU,yEACZ,gBAAM,KAAK,EAAE,QAAQ,GAAA,CAAI,EAAE,IAAI,CAAC,GAAG,UAClC;AAAA,IAAC;AAAA,IAAA;AAAA,MAEC,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MAAA;AAAA,MAGF,UAAA;AAAA,QAAA,oBAAC,OAAA,EAAI,WAAU,uCAAA,CAAuC;AAAA,QACtD,qBAAC,OAAA,EAAI,WAAU,2BACb,UAAA;AAAA,UAAA,oBAAC,iBAAA,EAAgB,WAAU,YAAA,CAAY;AAAA,UACvC,oBAAC,iBAAA,EAAgB,WAAU,YAAA,CAAY;AAAA,UACvC,oBAAC,iBAAA,EAAgB,WAAU,YAAA,CAAY;AAAA,UACvC,oBAAC,iBAAA,EAAgB,WAAU,iBAAA,CAAiB;AAAA,QAAA,EAAA,CAC9C;AAAA,MAAA;AAAA,IAAA;AAAA,IAZK,4BAA4B,KAAK;AAAA,EAAA,CAczC,EAAA,CACH;AAAA;AASK,MAAM,sBAA2D,CAAC,EAAE,SAAS,iBAAiB;AACnG,QAAM,EAAE,EAAA,IAAM,eAAe,IAAI;AACjC,QAAM,eAAe,gBAAgB,UAAU;AAC/C,QAAM,cAAc,UAChB,EAAE,OAAO,EAAE,kBAAkB,GAAG,SAAS,SAAS,MAAM,UAAA,IACxD;AAEJ,MAAI,CAAC,cAAc;AACjB,WAAO,oBAAC,eAAY,SAAQ,SAAQ,OAAO,EAAE,iBAAiB,GAAG,QAAQ,YAAA,CAAa;AAAA,EACxF;AAEA,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,SAAS,aAAa;AAAA,MACtB,OAAO,EAAE,aAAa,QAAQ;AAAA,MAC9B,aAAa,EAAE,aAAa,cAAc;AAAA,MAC1C,QAAQ,aAAa,cAAc,cAAc;AAAA,IAAA;AAAA,EAAA;AAGvD;AAMO,MAAM,sBAA2D,CAAC,EAAE,mBAAmB;AAC5F,QAAM,EAAE,EAAA,IAAM,eAAe,IAAI;AAEjC,6BAAQ,aAAA,EAAY,SAAS,gBAAgB,EAAE,iBAAiB,GAAG;AACrE;"}
|