@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,79 @@
|
|
|
1
|
+
import { useEffect } from "react";
|
|
2
|
+
const TOOL_KEYS = {
|
|
3
|
+
v: "select",
|
|
4
|
+
p: "freehand",
|
|
5
|
+
e: "eraser",
|
|
6
|
+
a: "arrow",
|
|
7
|
+
l: "line",
|
|
8
|
+
r: "rectangle",
|
|
9
|
+
o: "ellipse",
|
|
10
|
+
t: "text"
|
|
11
|
+
};
|
|
12
|
+
const NUDGE_STEP = 1;
|
|
13
|
+
const NUDGE_STEP_FAST = 10;
|
|
14
|
+
const isTypingTarget = (target) => {
|
|
15
|
+
if (!(target instanceof HTMLElement)) return false;
|
|
16
|
+
return target.isContentEditable || ["INPUT", "TEXTAREA", "SELECT"].includes(target.tagName);
|
|
17
|
+
};
|
|
18
|
+
const useAnnotationShortcuts = ({
|
|
19
|
+
active,
|
|
20
|
+
controller,
|
|
21
|
+
imageMaxDimension,
|
|
22
|
+
onToolChange
|
|
23
|
+
}) => {
|
|
24
|
+
useEffect(() => {
|
|
25
|
+
if (!active) return;
|
|
26
|
+
const handleKeyDown = (event) => {
|
|
27
|
+
if (isTypingTarget(event.target)) return;
|
|
28
|
+
const isAccelerator = event.metaKey || event.ctrlKey;
|
|
29
|
+
const key = event.key.toLowerCase();
|
|
30
|
+
if (isAccelerator && key === "z") {
|
|
31
|
+
event.preventDefault();
|
|
32
|
+
if (event.shiftKey) controller.redo();
|
|
33
|
+
else controller.undo();
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
if (isAccelerator && key === "y") {
|
|
37
|
+
event.preventDefault();
|
|
38
|
+
controller.redo();
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
if (isAccelerator && key === "d") {
|
|
42
|
+
event.preventDefault();
|
|
43
|
+
controller.duplicateSelected();
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
if (isAccelerator) return;
|
|
47
|
+
if (event.key === "Escape" && controller.selectedId) {
|
|
48
|
+
event.preventDefault();
|
|
49
|
+
event.stopPropagation();
|
|
50
|
+
controller.select(null);
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
if ((event.key === "Delete" || event.key === "Backspace") && controller.selectedId) {
|
|
54
|
+
event.preventDefault();
|
|
55
|
+
controller.removeElement(controller.selectedId);
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
if (event.key.startsWith("Arrow") && controller.selectedId) {
|
|
59
|
+
event.preventDefault();
|
|
60
|
+
const step = (event.shiftKey ? NUDGE_STEP_FAST : NUDGE_STEP) * Math.max(1, Math.round(imageMaxDimension / 400));
|
|
61
|
+
const deltaX = event.key === "ArrowLeft" ? -step : event.key === "ArrowRight" ? step : 0;
|
|
62
|
+
const deltaY = event.key === "ArrowUp" ? -step : event.key === "ArrowDown" ? step : 0;
|
|
63
|
+
controller.nudgeSelected(deltaX, deltaY);
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
const tool = TOOL_KEYS[key];
|
|
67
|
+
if (tool) {
|
|
68
|
+
event.preventDefault();
|
|
69
|
+
onToolChange(tool);
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
window.addEventListener("keydown", handleKeyDown, true);
|
|
73
|
+
return () => window.removeEventListener("keydown", handleKeyDown, true);
|
|
74
|
+
}, [active, controller, imageMaxDimension, onToolChange]);
|
|
75
|
+
};
|
|
76
|
+
export {
|
|
77
|
+
useAnnotationShortcuts
|
|
78
|
+
};
|
|
79
|
+
//# sourceMappingURL=useAnnotationShortcuts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useAnnotationShortcuts.js","sources":["../../../../../src/components/UI/ImageAnnotator/hooks/useAnnotationShortcuts.ts"],"sourcesContent":["import { useEffect } from 'react';\n\nimport { TAnnotationTool } from '../interfaces/annotationDocument';\n\nimport { IAnnotationDocumentController } from './useAnnotationDocument';\n\nconst TOOL_KEYS: Record<string, TAnnotationTool> = {\n v: 'select',\n p: 'freehand',\n e: 'eraser',\n a: 'arrow',\n l: 'line',\n r: 'rectangle',\n o: 'ellipse',\n t: 'text',\n};\n\nconst NUDGE_STEP = 1;\nconst NUDGE_STEP_FAST = 10;\n\nconst isTypingTarget = (target: EventTarget | null): boolean => {\n if (!(target instanceof HTMLElement)) return false;\n return target.isContentEditable || ['INPUT', 'TEXTAREA', 'SELECT'].includes(target.tagName);\n};\n\ninterface IAnnotationShortcutsOptions {\n active: boolean;\n controller: IAnnotationDocumentController;\n imageMaxDimension: number;\n onToolChange: (tool: TAnnotationTool) => void;\n}\n\n/**\n * Capture phase on purpose: Escape must clear the selection without also reaching the dialog's\n * own dismiss handler, which would close the editor on the first press.\n */\nexport const useAnnotationShortcuts = ({\n active,\n controller,\n imageMaxDimension,\n onToolChange,\n}: IAnnotationShortcutsOptions): void => {\n useEffect(() => {\n if (!active) return;\n\n const handleKeyDown = (event: KeyboardEvent) => {\n if (isTypingTarget(event.target)) return;\n\n const isAccelerator = event.metaKey || event.ctrlKey;\n const key = event.key.toLowerCase();\n\n if (isAccelerator && key === 'z') {\n event.preventDefault();\n if (event.shiftKey) controller.redo();\n else controller.undo();\n return;\n }\n\n if (isAccelerator && key === 'y') {\n event.preventDefault();\n controller.redo();\n return;\n }\n\n if (isAccelerator && key === 'd') {\n event.preventDefault();\n controller.duplicateSelected();\n return;\n }\n\n if (isAccelerator) return;\n\n if (event.key === 'Escape' && controller.selectedId) {\n event.preventDefault();\n event.stopPropagation();\n controller.select(null);\n return;\n }\n\n if ((event.key === 'Delete' || event.key === 'Backspace') && controller.selectedId) {\n event.preventDefault();\n controller.removeElement(controller.selectedId);\n return;\n }\n\n if (event.key.startsWith('Arrow') && controller.selectedId) {\n event.preventDefault();\n const step = (event.shiftKey ? NUDGE_STEP_FAST : NUDGE_STEP) * Math.max(1, Math.round(imageMaxDimension / 400));\n const deltaX = event.key === 'ArrowLeft' ? -step : event.key === 'ArrowRight' ? step : 0;\n const deltaY = event.key === 'ArrowUp' ? -step : event.key === 'ArrowDown' ? step : 0;\n controller.nudgeSelected(deltaX, deltaY);\n return;\n }\n\n const tool = TOOL_KEYS[key];\n if (tool) {\n event.preventDefault();\n onToolChange(tool);\n }\n };\n\n window.addEventListener('keydown', handleKeyDown, true);\n return () => window.removeEventListener('keydown', handleKeyDown, true);\n }, [active, controller, imageMaxDimension, onToolChange]);\n};\n"],"names":[],"mappings":";AAMA,MAAM,YAA6C;AAAA,EACjD,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AACL;AAEA,MAAM,aAAa;AACnB,MAAM,kBAAkB;AAExB,MAAM,iBAAiB,CAAC,WAAwC;AAC9D,MAAI,EAAE,kBAAkB,aAAc,QAAO;AAC7C,SAAO,OAAO,qBAAqB,CAAC,SAAS,YAAY,QAAQ,EAAE,SAAS,OAAO,OAAO;AAC5F;AAaO,MAAM,yBAAyB,CAAC;AAAA,EACrC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAyC;AACvC,YAAU,MAAM;AACd,QAAI,CAAC,OAAQ;AAEb,UAAM,gBAAgB,CAAC,UAAyB;AAC9C,UAAI,eAAe,MAAM,MAAM,EAAG;AAElC,YAAM,gBAAgB,MAAM,WAAW,MAAM;AAC7C,YAAM,MAAM,MAAM,IAAI,YAAA;AAEtB,UAAI,iBAAiB,QAAQ,KAAK;AAChC,cAAM,eAAA;AACN,YAAI,MAAM,SAAU,YAAW,KAAA;AAAA,wBACf,KAAA;AAChB;AAAA,MACF;AAEA,UAAI,iBAAiB,QAAQ,KAAK;AAChC,cAAM,eAAA;AACN,mBAAW,KAAA;AACX;AAAA,MACF;AAEA,UAAI,iBAAiB,QAAQ,KAAK;AAChC,cAAM,eAAA;AACN,mBAAW,kBAAA;AACX;AAAA,MACF;AAEA,UAAI,cAAe;AAEnB,UAAI,MAAM,QAAQ,YAAY,WAAW,YAAY;AACnD,cAAM,eAAA;AACN,cAAM,gBAAA;AACN,mBAAW,OAAO,IAAI;AACtB;AAAA,MACF;AAEA,WAAK,MAAM,QAAQ,YAAY,MAAM,QAAQ,gBAAgB,WAAW,YAAY;AAClF,cAAM,eAAA;AACN,mBAAW,cAAc,WAAW,UAAU;AAC9C;AAAA,MACF;AAEA,UAAI,MAAM,IAAI,WAAW,OAAO,KAAK,WAAW,YAAY;AAC1D,cAAM,eAAA;AACN,cAAM,QAAQ,MAAM,WAAW,kBAAkB,cAAc,KAAK,IAAI,GAAG,KAAK,MAAM,oBAAoB,GAAG,CAAC;AAC9G,cAAM,SAAS,MAAM,QAAQ,cAAc,CAAC,OAAO,MAAM,QAAQ,eAAe,OAAO;AACvF,cAAM,SAAS,MAAM,QAAQ,YAAY,CAAC,OAAO,MAAM,QAAQ,cAAc,OAAO;AACpF,mBAAW,cAAc,QAAQ,MAAM;AACvC;AAAA,MACF;AAEA,YAAM,OAAO,UAAU,GAAG;AAC1B,UAAI,MAAM;AACR,cAAM,eAAA;AACN,qBAAa,IAAI;AAAA,MACnB;AAAA,IACF;AAEA,WAAO,iBAAiB,WAAW,eAAe,IAAI;AACtD,WAAO,MAAM,OAAO,oBAAoB,WAAW,eAAe,IAAI;AAAA,EACxE,GAAG,CAAC,QAAQ,YAAY,mBAAmB,YAAY,CAAC;AAC1D;"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { useState, useEffect } from "react";
|
|
2
|
+
const COARSE_POINTER_QUERY = "(pointer: coarse)";
|
|
3
|
+
const readCoarsePointer = () => {
|
|
4
|
+
try {
|
|
5
|
+
return window.matchMedia(COARSE_POINTER_QUERY).matches;
|
|
6
|
+
} catch {
|
|
7
|
+
return false;
|
|
8
|
+
}
|
|
9
|
+
};
|
|
10
|
+
const useCoarsePointer = () => {
|
|
11
|
+
const [isCoarse, setIsCoarse] = useState(readCoarsePointer);
|
|
12
|
+
useEffect(() => {
|
|
13
|
+
const query = window.matchMedia(COARSE_POINTER_QUERY);
|
|
14
|
+
const handleChange = (event) => setIsCoarse(event.matches);
|
|
15
|
+
query.addEventListener("change", handleChange);
|
|
16
|
+
return () => query.removeEventListener("change", handleChange);
|
|
17
|
+
}, []);
|
|
18
|
+
return isCoarse;
|
|
19
|
+
};
|
|
20
|
+
export {
|
|
21
|
+
useCoarsePointer
|
|
22
|
+
};
|
|
23
|
+
//# sourceMappingURL=useCoarsePointer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useCoarsePointer.js","sources":["../../../../../src/components/UI/ImageAnnotator/hooks/useCoarsePointer.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\n\nconst COARSE_POINTER_QUERY = '(pointer: coarse)';\n\nconst readCoarsePointer = (): boolean => {\n try {\n return window.matchMedia(COARSE_POINTER_QUERY).matches;\n } catch {\n return false;\n }\n};\n\n/**\n * Drives the touch layout: bigger targets and visible captions, because `ControlledTooltip` never\n * opens on a touch pointer and an icon-only tool would carry no meaning there.\n */\nexport const useCoarsePointer = (): boolean => {\n const [isCoarse, setIsCoarse] = useState(readCoarsePointer);\n\n useEffect(() => {\n const query = window.matchMedia(COARSE_POINTER_QUERY);\n const handleChange = (event: MediaQueryListEvent) => setIsCoarse(event.matches);\n\n query.addEventListener('change', handleChange);\n return () => query.removeEventListener('change', handleChange);\n }, []);\n\n return isCoarse;\n};\n"],"names":[],"mappings":";AAEA,MAAM,uBAAuB;AAE7B,MAAM,oBAAoB,MAAe;AACvC,MAAI;AACF,WAAO,OAAO,WAAW,oBAAoB,EAAE;AAAA,EACjD,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAMO,MAAM,mBAAmB,MAAe;AAC7C,QAAM,CAAC,UAAU,WAAW,IAAI,SAAS,iBAAiB;AAE1D,YAAU,MAAM;AACd,UAAM,QAAQ,OAAO,WAAW,oBAAoB;AACpD,UAAM,eAAe,CAAC,UAA+B,YAAY,MAAM,OAAO;AAE9E,UAAM,iBAAiB,UAAU,YAAY;AAC7C,WAAO,MAAM,MAAM,oBAAoB,UAAU,YAAY;AAAA,EAC/D,GAAG,CAAA,CAAE;AAEL,SAAO;AACT;"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { useState, useEffect } from "react";
|
|
2
|
+
const useHtmlImage = (src) => {
|
|
3
|
+
const [image, setImage] = useState(null);
|
|
4
|
+
useEffect(() => {
|
|
5
|
+
if (!src) {
|
|
6
|
+
setImage(null);
|
|
7
|
+
return;
|
|
8
|
+
}
|
|
9
|
+
let cancelled = false;
|
|
10
|
+
const element = new Image();
|
|
11
|
+
element.onload = () => {
|
|
12
|
+
if (!cancelled) setImage(element);
|
|
13
|
+
};
|
|
14
|
+
element.onerror = () => {
|
|
15
|
+
if (!cancelled) setImage(null);
|
|
16
|
+
};
|
|
17
|
+
element.src = src;
|
|
18
|
+
return () => {
|
|
19
|
+
cancelled = true;
|
|
20
|
+
};
|
|
21
|
+
}, [src]);
|
|
22
|
+
return image;
|
|
23
|
+
};
|
|
24
|
+
export {
|
|
25
|
+
useHtmlImage
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=useHtmlImage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useHtmlImage.js","sources":["../../../../../src/components/UI/ImageAnnotator/hooks/useHtmlImage.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\n\n/** Konva needs a decoded element, and an inserted image lives as a data URL inside the document. */\nexport const useHtmlImage = (src: string | null): HTMLImageElement | null => {\n const [image, setImage] = useState<HTMLImageElement | null>(null);\n\n useEffect(() => {\n if (!src) {\n setImage(null);\n return;\n }\n\n let cancelled = false;\n const element = new Image();\n\n element.onload = () => {\n if (!cancelled) setImage(element);\n };\n element.onerror = () => {\n if (!cancelled) setImage(null);\n };\n element.src = src;\n\n return () => {\n cancelled = true;\n };\n }, [src]);\n\n return image;\n};\n"],"names":[],"mappings":";AAGO,MAAM,eAAe,CAAC,QAAgD;AAC3E,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAkC,IAAI;AAEhE,YAAU,MAAM;AACd,QAAI,CAAC,KAAK;AACR,eAAS,IAAI;AACb;AAAA,IACF;AAEA,QAAI,YAAY;AAChB,UAAM,UAAU,IAAI,MAAA;AAEpB,YAAQ,SAAS,MAAM;AACrB,UAAI,CAAC,UAAW,UAAS,OAAO;AAAA,IAClC;AACA,YAAQ,UAAU,MAAM;AACtB,UAAI,CAAC,UAAW,UAAS,IAAI;AAAA,IAC/B;AACA,YAAQ,MAAM;AAEd,WAAO,MAAM;AACX,kBAAY;AAAA,IACd;AAAA,EACF,GAAG,CAAC,GAAG,CAAC;AAER,SAAO;AACT;"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
export type TAnnotationElementType = 'freehand' | 'line' | 'arrow' | 'rectangle' | 'ellipse' | 'text' | 'image';
|
|
2
|
+
export type TAnnotationTool = 'select' | 'freehand' | 'eraser' | TAnnotationElementType;
|
|
3
|
+
export type TAnnotationAlign = 'left' | 'center' | 'right';
|
|
4
|
+
export interface IAnnotationPoint {
|
|
5
|
+
x: number;
|
|
6
|
+
y: number;
|
|
7
|
+
}
|
|
8
|
+
export interface IAnnotationSize {
|
|
9
|
+
width: number;
|
|
10
|
+
height: number;
|
|
11
|
+
}
|
|
12
|
+
interface IAnnotationElementBase {
|
|
13
|
+
id: string;
|
|
14
|
+
rotation: number;
|
|
15
|
+
opacity: number;
|
|
16
|
+
}
|
|
17
|
+
export interface IAnnotationFreehandElement extends IAnnotationElementBase {
|
|
18
|
+
type: 'freehand';
|
|
19
|
+
x: number;
|
|
20
|
+
y: number;
|
|
21
|
+
/** Flat `[x0, y0, x1, y1, ...]` in element space, so `x`/`y` stay the drag anchor. */
|
|
22
|
+
points: Array<number>;
|
|
23
|
+
stroke: string;
|
|
24
|
+
strokeWidth: number;
|
|
25
|
+
}
|
|
26
|
+
export interface IAnnotationSegmentElement extends IAnnotationElementBase {
|
|
27
|
+
type: 'line' | 'arrow';
|
|
28
|
+
start: IAnnotationPoint;
|
|
29
|
+
end: IAnnotationPoint;
|
|
30
|
+
stroke: string;
|
|
31
|
+
strokeWidth: number;
|
|
32
|
+
}
|
|
33
|
+
export interface IAnnotationShapeElement extends IAnnotationElementBase {
|
|
34
|
+
type: 'rectangle' | 'ellipse';
|
|
35
|
+
x: number;
|
|
36
|
+
y: number;
|
|
37
|
+
width: number;
|
|
38
|
+
height: number;
|
|
39
|
+
stroke: string;
|
|
40
|
+
strokeWidth: number;
|
|
41
|
+
fill: string | null;
|
|
42
|
+
fillOpacity: number;
|
|
43
|
+
cornerRadius: number;
|
|
44
|
+
}
|
|
45
|
+
export interface IAnnotationTextElement extends IAnnotationElementBase {
|
|
46
|
+
type: 'text';
|
|
47
|
+
x: number;
|
|
48
|
+
y: number;
|
|
49
|
+
width: number;
|
|
50
|
+
text: string;
|
|
51
|
+
fontSize: number;
|
|
52
|
+
bold: boolean;
|
|
53
|
+
italic: boolean;
|
|
54
|
+
align: TAnnotationAlign;
|
|
55
|
+
color: string;
|
|
56
|
+
background: string | null;
|
|
57
|
+
backgroundOpacity: number;
|
|
58
|
+
padding: number;
|
|
59
|
+
cornerRadius: number;
|
|
60
|
+
}
|
|
61
|
+
export interface IAnnotationImageElement extends IAnnotationElementBase {
|
|
62
|
+
type: 'image';
|
|
63
|
+
x: number;
|
|
64
|
+
y: number;
|
|
65
|
+
width: number;
|
|
66
|
+
height: number;
|
|
67
|
+
src: string;
|
|
68
|
+
naturalWidth: number;
|
|
69
|
+
naturalHeight: number;
|
|
70
|
+
cornerRadius: number;
|
|
71
|
+
stroke: string | null;
|
|
72
|
+
strokeWidth: number;
|
|
73
|
+
shadow: boolean;
|
|
74
|
+
}
|
|
75
|
+
export type TAnnotationElement = IAnnotationFreehandElement | IAnnotationSegmentElement | IAnnotationShapeElement | IAnnotationTextElement | IAnnotationImageElement;
|
|
76
|
+
export declare const ANNOTATION_DOCUMENT_VERSION = 1;
|
|
77
|
+
export interface IAnnotationDocument {
|
|
78
|
+
version: number;
|
|
79
|
+
/** Element coordinates live in this space, never in screen pixels. */
|
|
80
|
+
width: number;
|
|
81
|
+
height: number;
|
|
82
|
+
elements: Array<TAnnotationElement>;
|
|
83
|
+
}
|
|
84
|
+
export type TAnnotationElementPatch = Partial<Omit<TAnnotationElement, 'id' | 'type'>>;
|
|
85
|
+
export declare const isStrokeElement: (element: TAnnotationElement) => element is IAnnotationFreehandElement | IAnnotationSegmentElement | IAnnotationShapeElement;
|
|
86
|
+
export declare const isFillableElement: (element: TAnnotationElement) => element is IAnnotationShapeElement;
|
|
87
|
+
export declare const isSegmentElement: (element: TAnnotationElement) => element is IAnnotationSegmentElement;
|
|
88
|
+
export declare const isBoxElement: (element: TAnnotationElement) => element is IAnnotationShapeElement | IAnnotationImageElement;
|
|
89
|
+
export {};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
const ANNOTATION_DOCUMENT_VERSION = 1;
|
|
2
|
+
const isStrokeElement = (element) => element.type !== "text" && element.type !== "image";
|
|
3
|
+
const isFillableElement = (element) => element.type === "rectangle" || element.type === "ellipse";
|
|
4
|
+
const isSegmentElement = (element) => element.type === "line" || element.type === "arrow";
|
|
5
|
+
const isBoxElement = (element) => element.type === "rectangle" || element.type === "ellipse" || element.type === "image";
|
|
6
|
+
export {
|
|
7
|
+
ANNOTATION_DOCUMENT_VERSION,
|
|
8
|
+
isBoxElement,
|
|
9
|
+
isFillableElement,
|
|
10
|
+
isSegmentElement,
|
|
11
|
+
isStrokeElement
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=annotationDocument.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"annotationDocument.js","sources":["../../../../../src/components/UI/ImageAnnotator/interfaces/annotationDocument.ts"],"sourcesContent":["export type TAnnotationElementType = 'freehand' | 'line' | 'arrow' | 'rectangle' | 'ellipse' | 'text' | 'image';\n\nexport type TAnnotationTool = 'select' | 'freehand' | 'eraser' | TAnnotationElementType;\n\nexport type TAnnotationAlign = 'left' | 'center' | 'right';\n\nexport interface IAnnotationPoint {\n x: number;\n y: number;\n}\n\nexport interface IAnnotationSize {\n width: number;\n height: number;\n}\n\ninterface IAnnotationElementBase {\n id: string;\n rotation: number;\n opacity: number;\n}\n\nexport interface IAnnotationFreehandElement extends IAnnotationElementBase {\n type: 'freehand';\n x: number;\n y: number;\n /** Flat `[x0, y0, x1, y1, ...]` in element space, so `x`/`y` stay the drag anchor. */\n points: Array<number>;\n stroke: string;\n strokeWidth: number;\n}\n\nexport interface IAnnotationSegmentElement extends IAnnotationElementBase {\n type: 'line' | 'arrow';\n start: IAnnotationPoint;\n end: IAnnotationPoint;\n stroke: string;\n strokeWidth: number;\n}\n\nexport interface IAnnotationShapeElement extends IAnnotationElementBase {\n type: 'rectangle' | 'ellipse';\n x: number;\n y: number;\n width: number;\n height: number;\n stroke: string;\n strokeWidth: number;\n fill: string | null;\n fillOpacity: number;\n cornerRadius: number;\n}\n\nexport interface IAnnotationTextElement extends IAnnotationElementBase {\n type: 'text';\n x: number;\n y: number;\n width: number;\n text: string;\n fontSize: number;\n bold: boolean;\n italic: boolean;\n align: TAnnotationAlign;\n color: string;\n background: string | null;\n backgroundOpacity: number;\n padding: number;\n cornerRadius: number;\n}\n\nexport interface IAnnotationImageElement extends IAnnotationElementBase {\n type: 'image';\n x: number;\n y: number;\n width: number;\n height: number;\n src: string;\n naturalWidth: number;\n naturalHeight: number;\n cornerRadius: number;\n stroke: string | null;\n strokeWidth: number;\n shadow: boolean;\n}\n\nexport type TAnnotationElement =\n | IAnnotationFreehandElement\n | IAnnotationSegmentElement\n | IAnnotationShapeElement\n | IAnnotationTextElement\n | IAnnotationImageElement;\n\nexport const ANNOTATION_DOCUMENT_VERSION = 1;\n\nexport interface IAnnotationDocument {\n version: number;\n /** Element coordinates live in this space, never in screen pixels. */\n width: number;\n height: number;\n elements: Array<TAnnotationElement>;\n}\n\nexport type TAnnotationElementPatch = Partial<Omit<TAnnotationElement, 'id' | 'type'>>;\n\nexport const isStrokeElement = (\n element: TAnnotationElement,\n): element is IAnnotationFreehandElement | IAnnotationSegmentElement | IAnnotationShapeElement =>\n element.type !== 'text' && element.type !== 'image';\n\nexport const isFillableElement = (element: TAnnotationElement): element is IAnnotationShapeElement =>\n element.type === 'rectangle' || element.type === 'ellipse';\n\nexport const isSegmentElement = (element: TAnnotationElement): element is IAnnotationSegmentElement =>\n element.type === 'line' || element.type === 'arrow';\n\nexport const isBoxElement = (\n element: TAnnotationElement,\n): element is IAnnotationShapeElement | IAnnotationImageElement =>\n element.type === 'rectangle' || element.type === 'ellipse' || element.type === 'image';\n"],"names":[],"mappings":"AA4FO,MAAM,8BAA8B;AAYpC,MAAM,kBAAkB,CAC7B,YAEA,QAAQ,SAAS,UAAU,QAAQ,SAAS;AAEvC,MAAM,oBAAoB,CAAC,YAChC,QAAQ,SAAS,eAAe,QAAQ,SAAS;AAE5C,MAAM,mBAAmB,CAAC,YAC/B,QAAQ,SAAS,UAAU,QAAQ,SAAS;AAEvC,MAAM,eAAe,CAC1B,YAEA,QAAQ,SAAS,eAAe,QAAQ,SAAS,aAAa,QAAQ,SAAS;"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export type TImagePlaceholderVariant = 'empty' | 'broken';
|
|
2
|
+
interface IImagePlaceholderProps {
|
|
3
|
+
/**
|
|
4
|
+
* `empty` = there is no image for this record (the normal state).
|
|
5
|
+
* `broken` = there IS a source but it failed to load (a real problem worth distinguishing).
|
|
6
|
+
*/
|
|
7
|
+
variant?: TImagePlaceholderVariant;
|
|
8
|
+
className?: string;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* The single placeholder for "no image here", replacing the fixed missing-image.png.
|
|
12
|
+
*
|
|
13
|
+
* A raster asset cannot follow the theme: the old PNG was a dark tile, so it read as a
|
|
14
|
+
* hole in light mode and as a slightly-wrong-dark square in dark mode. This draws the
|
|
15
|
+
* same idea from tokens instead, so it is correct in both themes for free.
|
|
16
|
+
*
|
|
17
|
+
* It is used at every size in the app, from a 40px table thumbnail to a full datasheet
|
|
18
|
+
* panel, so the icon is sized in container-query units rather than a fixed rem: it scales
|
|
19
|
+
* with whatever box it is dropped into, with a floor and a ceiling so it never becomes a
|
|
20
|
+
* dot or a poster. `MaterialSymbol` receives no `size` prop on purpose, because that prop
|
|
21
|
+
* writes an inline font-size which would beat this class.
|
|
22
|
+
*/
|
|
23
|
+
declare const ImagePlaceholder: React.FC<IImagePlaceholderProps>;
|
|
24
|
+
export default ImagePlaceholder;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
|
2
|
+
import { twMerge } from "tailwind-merge";
|
|
3
|
+
import { MaterialSymbol } from "./MaterialSymbol/index.js";
|
|
4
|
+
const VARIANT_ICON = {
|
|
5
|
+
empty: "image",
|
|
6
|
+
broken: "broken_image"
|
|
7
|
+
};
|
|
8
|
+
const ImagePlaceholder = ({ variant = "empty", className }) => /* @__PURE__ */ jsx(
|
|
9
|
+
"div",
|
|
10
|
+
{
|
|
11
|
+
"aria-hidden": true,
|
|
12
|
+
className: twMerge("flex size-full items-center justify-center overflow-hidden bg-muted @container", className),
|
|
13
|
+
children: /* @__PURE__ */ jsx(
|
|
14
|
+
MaterialSymbol,
|
|
15
|
+
{
|
|
16
|
+
icon: VARIANT_ICON[variant],
|
|
17
|
+
weight: 300,
|
|
18
|
+
className: "!text-[clamp(0.875rem,34cqi,2.75rem)] leading-none text-foreground-faint"
|
|
19
|
+
}
|
|
20
|
+
)
|
|
21
|
+
}
|
|
22
|
+
);
|
|
23
|
+
export {
|
|
24
|
+
ImagePlaceholder as default
|
|
25
|
+
};
|
|
26
|
+
//# sourceMappingURL=ImagePlaceholder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ImagePlaceholder.js","sources":["../../../src/components/UI/ImagePlaceholder.tsx"],"sourcesContent":["import { twMerge } from 'tailwind-merge';\n\nimport { MaterialSymbol, SymbolCodepoints } from '@/components/UI/MaterialSymbol';\n\nexport type TImagePlaceholderVariant = 'empty' | 'broken';\n\ninterface IImagePlaceholderProps {\n /**\n * `empty` = there is no image for this record (the normal state).\n * `broken` = there IS a source but it failed to load (a real problem worth distinguishing).\n */\n variant?: TImagePlaceholderVariant;\n className?: string;\n}\n\nconst VARIANT_ICON: Record<TImagePlaceholderVariant, SymbolCodepoints> = {\n empty: 'image',\n broken: 'broken_image',\n};\n\n/**\n * The single placeholder for \"no image here\", replacing the fixed missing-image.png.\n *\n * A raster asset cannot follow the theme: the old PNG was a dark tile, so it read as a\n * hole in light mode and as a slightly-wrong-dark square in dark mode. This draws the\n * same idea from tokens instead, so it is correct in both themes for free.\n *\n * It is used at every size in the app, from a 40px table thumbnail to a full datasheet\n * panel, so the icon is sized in container-query units rather than a fixed rem: it scales\n * with whatever box it is dropped into, with a floor and a ceiling so it never becomes a\n * dot or a poster. `MaterialSymbol` receives no `size` prop on purpose, because that prop\n * writes an inline font-size which would beat this class.\n */\nconst ImagePlaceholder: React.FC<IImagePlaceholderProps> = ({ variant = 'empty', className }) => (\n <div\n aria-hidden\n className={twMerge('flex size-full items-center justify-center overflow-hidden bg-muted @container', className)}\n >\n <MaterialSymbol\n icon={VARIANT_ICON[variant]}\n weight={300}\n /* `!` is required: outlined.css pins `.material-symbols { font-size: 1.5rem }` and,\n being imported last, it wins the cascade over a plain utility. */\n className=\"!text-[clamp(0.875rem,34cqi,2.75rem)] leading-none text-foreground-faint\"\n />\n </div>\n);\n\nexport default ImagePlaceholder;\n"],"names":[],"mappings":";;;AAeA,MAAM,eAAmE;AAAA,EACvE,OAAO;AAAA,EACP,QAAQ;AACV;AAeA,MAAM,mBAAqD,CAAC,EAAE,UAAU,SAAS,gBAC/E;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,eAAW;AAAA,IACX,WAAW,QAAQ,kFAAkF,SAAS;AAAA,IAE9G,UAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,MAAM,aAAa,OAAO;AAAA,QAC1B,QAAQ;AAAA,QAGR,WAAU;AAAA,MAAA;AAAA,IAAA;AAAA,EACZ;AACF;"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { jsxs, jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect } from "react";
|
|
3
|
+
import { createPortal } from "react-dom";
|
|
4
|
+
import { useTranslation } from "react-i18next";
|
|
5
|
+
import ControlledButton from "../Form/ControlledButton.js";
|
|
6
|
+
import ControlledImage from "../Form/ControlledImage/index.js";
|
|
7
|
+
import ControlledTooltip from "./ControlledTooltip.js";
|
|
8
|
+
import { MaterialSymbol } from "./MaterialSymbol/index.js";
|
|
9
|
+
const ImageZoomOverlay = ({ src, onClose }) => {
|
|
10
|
+
const { t } = useTranslation("ui");
|
|
11
|
+
useEffect(() => {
|
|
12
|
+
const onKeyDown = (event) => {
|
|
13
|
+
if (event.key !== "Escape") return;
|
|
14
|
+
event.stopPropagation();
|
|
15
|
+
onClose();
|
|
16
|
+
};
|
|
17
|
+
document.addEventListener("keydown", onKeyDown, true);
|
|
18
|
+
return () => document.removeEventListener("keydown", onKeyDown, true);
|
|
19
|
+
}, [onClose]);
|
|
20
|
+
return createPortal(
|
|
21
|
+
/* @__PURE__ */ jsxs(
|
|
22
|
+
"div",
|
|
23
|
+
{
|
|
24
|
+
onClick: onClose,
|
|
25
|
+
role: "dialog",
|
|
26
|
+
"aria-modal": true,
|
|
27
|
+
"aria-label": t("imageZoom.title"),
|
|
28
|
+
className: "fixed inset-0 z-[9998] flex items-center justify-center p-6 glass-scrim",
|
|
29
|
+
children: [
|
|
30
|
+
/* @__PURE__ */ jsx(ControlledTooltip, { content: t("imageZoom.close"), className: "z-[9999]", children: /* @__PURE__ */ jsx(
|
|
31
|
+
ControlledButton,
|
|
32
|
+
{
|
|
33
|
+
defaultHtmlButton: true,
|
|
34
|
+
onClick: onClose,
|
|
35
|
+
className: "absolute right-4 top-4 flex items-center justify-center rounded-full bg-glass/10 p-2 text-white transition-interactive duration-base ease-enter hover:bg-glass/20 active:scale-90",
|
|
36
|
+
children: /* @__PURE__ */ jsx(MaterialSymbol, { icon: "close", size: 24 })
|
|
37
|
+
}
|
|
38
|
+
) }),
|
|
39
|
+
/* @__PURE__ */ jsx("div", { onClick: (event) => event.stopPropagation(), className: "flex max-h-full max-w-full", children: /* @__PURE__ */ jsx(ControlledImage, { src, className: "max-h-[90vh] max-w-[90vw] object-contain" }) })
|
|
40
|
+
]
|
|
41
|
+
}
|
|
42
|
+
),
|
|
43
|
+
document.body
|
|
44
|
+
);
|
|
45
|
+
};
|
|
46
|
+
export {
|
|
47
|
+
ImageZoomOverlay as default
|
|
48
|
+
};
|
|
49
|
+
//# sourceMappingURL=ImageZoomOverlay.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ImageZoomOverlay.js","sources":["../../../src/components/UI/ImageZoomOverlay.tsx"],"sourcesContent":["import React, { useEffect } from 'react';\nimport { createPortal } from 'react-dom';\nimport { useTranslation } from 'react-i18next';\n\nimport ControlledButton from '@/components/Form/ControlledButton';\nimport ControlledImage from '@/components/Form/ControlledImage';\nimport ControlledTooltip from '@/components/UI/ControlledTooltip';\nimport { MaterialSymbol } from '@/components/UI/MaterialSymbol';\n\ninterface IImageZoomOverlayProps {\n src: string;\n onClose: () => void;\n}\n\n// Visualização ampliada em tela cheia (portal). Fecha com Esc, clique fora ou\n// no botão de fechar.\nconst ImageZoomOverlay: React.FC<IImageZoomOverlayProps> = ({ src, onClose }) => {\n const { t } = useTranslation('ui');\n\n useEffect(() => {\n const onKeyDown = (event: KeyboardEvent): void => {\n if (event.key !== 'Escape') return;\n // Na captura e barrando a propagação: o drawer que abriu esta imagem também escuta Esc no\n // document, e sem isso uma tecla fecharia a imagem E o drawer atrás dela.\n event.stopPropagation();\n onClose();\n };\n document.addEventListener('keydown', onKeyDown, true);\n return () => document.removeEventListener('keydown', onKeyDown, true);\n }, [onClose]);\n\n return createPortal(\n <div\n onClick={onClose}\n // `role=\"dialog\"` não é enfeite: é como `isPressOnLayeredSurface` reconhece esta camada. Sem\n // ele, o drawer por baixo lê o clique no X como \"clicou fora de mim\" e se fecha junto.\n role=\"dialog\"\n aria-modal={true}\n aria-label={t('imageZoom.title')}\n className=\"fixed inset-0 z-[9998] flex items-center justify-center p-6 glass-scrim\"\n >\n <ControlledTooltip content={t('imageZoom.close')} className=\"z-[9999]\">\n <ControlledButton\n defaultHtmlButton\n onClick={onClose}\n className=\"absolute right-4 top-4 flex items-center justify-center rounded-full bg-glass/10 p-2 text-white transition-interactive duration-base ease-enter hover:bg-glass/20 active:scale-90\"\n >\n <MaterialSymbol icon=\"close\" size={24} />\n </ControlledButton>\n </ControlledTooltip>\n <div onClick={(event) => event.stopPropagation()} className=\"flex max-h-full max-w-full\">\n <ControlledImage src={src} className=\"max-h-[90vh] max-w-[90vw] object-contain\" />\n </div>\n </div>,\n document.body,\n );\n};\n\nexport default ImageZoomOverlay;\n"],"names":[],"mappings":";;;;;;;;AAgBA,MAAM,mBAAqD,CAAC,EAAE,KAAK,cAAc;AAC/E,QAAM,EAAE,EAAA,IAAM,eAAe,IAAI;AAEjC,YAAU,MAAM;AACd,UAAM,YAAY,CAAC,UAA+B;AAChD,UAAI,MAAM,QAAQ,SAAU;AAG5B,YAAM,gBAAA;AACN,cAAA;AAAA,IACF;AACA,aAAS,iBAAiB,WAAW,WAAW,IAAI;AACpD,WAAO,MAAM,SAAS,oBAAoB,WAAW,WAAW,IAAI;AAAA,EACtE,GAAG,CAAC,OAAO,CAAC;AAEZ,SAAO;AAAA,IACL;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,SAAS;AAAA,QAGT,MAAK;AAAA,QACL,cAAY;AAAA,QACZ,cAAY,EAAE,iBAAiB;AAAA,QAC/B,WAAU;AAAA,QAEV,UAAA;AAAA,UAAA,oBAAC,qBAAkB,SAAS,EAAE,iBAAiB,GAAG,WAAU,YAC1D,UAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,mBAAiB;AAAA,cACjB,SAAS;AAAA,cACT,WAAU;AAAA,cAEV,UAAA,oBAAC,gBAAA,EAAe,MAAK,SAAQ,MAAM,GAAA,CAAI;AAAA,YAAA;AAAA,UAAA,GAE3C;AAAA,UACA,oBAAC,OAAA,EAAI,SAAS,CAAC,UAAU,MAAM,mBAAmB,WAAU,8BAC1D,UAAA,oBAAC,iBAAA,EAAgB,KAAU,WAAU,4CAA2C,EAAA,CAClF;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,IAEF,SAAS;AAAA,EAAA;AAEb;"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { SymbolCodepoints } from './MaterialSymbol';
|
|
2
|
+
export interface IInformationCard {
|
|
3
|
+
title: string;
|
|
4
|
+
icon?: SymbolCodepoints;
|
|
5
|
+
value: string;
|
|
6
|
+
secondaryValue?: string;
|
|
7
|
+
subValue?: string;
|
|
8
|
+
subValueLabel?: string;
|
|
9
|
+
show?: boolean;
|
|
10
|
+
tooltip?: string;
|
|
11
|
+
/** When set, the card becomes clickable (e.g. drill down to a filtered list). */
|
|
12
|
+
onClick?: () => void;
|
|
13
|
+
}
|
|
14
|
+
interface IInformationCardProps {
|
|
15
|
+
cards: Array<IInformationCard>;
|
|
16
|
+
loading?: boolean;
|
|
17
|
+
headerTitle?: string;
|
|
18
|
+
showHeaderBorder?: boolean;
|
|
19
|
+
headerActionSlot?: React.ReactNode;
|
|
20
|
+
/** When false the section stays expanded and the collapse affordance is removed. */
|
|
21
|
+
collapsible?: boolean;
|
|
22
|
+
/** When false only the cards render, with no title row above them. */
|
|
23
|
+
showHeader?: boolean;
|
|
24
|
+
}
|
|
25
|
+
declare const InformationCard: React.FC<IInformationCardProps>;
|
|
26
|
+
export default InformationCard;
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { jsxs, jsx, Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { useState, useEffect } from "react";
|
|
3
|
+
import classNames from "classnames";
|
|
4
|
+
import { useTranslation } from "react-i18next";
|
|
5
|
+
import { ControlledAccordionRoot, ControlledAccordionHeader, ControlledAccordionBody } from "./ControlledAccordion.js";
|
|
6
|
+
import ControlledTooltip from "./ControlledTooltip.js";
|
|
7
|
+
import { MaterialSymbol } from "./MaterialSymbol/index.js";
|
|
8
|
+
import { useBreakpoint } from "../../hooks/useBreakpoint.js";
|
|
9
|
+
import { AccordionIcon } from "./AccordionIcon.js";
|
|
10
|
+
import CustomCard from "./CustomCard.js";
|
|
11
|
+
import SkeletonLoading from "./SkeletonLoading.js";
|
|
12
|
+
const CompactStatCard = ({ card, loading, isMobile }) => /* @__PURE__ */ jsx(
|
|
13
|
+
CustomCard,
|
|
14
|
+
{
|
|
15
|
+
itsClickable: !loading && !!card.onClick,
|
|
16
|
+
onClickHook: card.onClick,
|
|
17
|
+
className: classNames(
|
|
18
|
+
"shrink-0 p-3",
|
|
19
|
+
isMobile ? "basis-[calc(50%_-_4px)] snap-start" : "min-w-[140px] flex-1 basis-[140px]"
|
|
20
|
+
),
|
|
21
|
+
children: /* @__PURE__ */ jsxs("div", { children: [
|
|
22
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-x-2", children: [
|
|
23
|
+
card.icon && /* @__PURE__ */ jsx(MaterialSymbol, { icon: card.icon, size: 22, color: "rgb(var(--color-primary))" }),
|
|
24
|
+
/* @__PURE__ */ jsx("div", { className: "text-base font-bold text-foreground", children: loading ? /* @__PURE__ */ jsx(SkeletonLoading, { className: "!h-5" }) : card.value })
|
|
25
|
+
] }),
|
|
26
|
+
/* @__PURE__ */ jsx("div", { className: "mt-1 flex items-center gap-x-1", children: loading ? /* @__PURE__ */ jsx(SkeletonLoading, { className: "!h-3.5" }) : /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
27
|
+
/* @__PURE__ */ jsx("span", { className: "text-xs text-foreground-muted", children: card.title }),
|
|
28
|
+
card.tooltip && /* @__PURE__ */ jsx(ControlledTooltip, { content: card.tooltip, className: "max-w-80", children: /* @__PURE__ */ jsx(
|
|
29
|
+
MaterialSymbol,
|
|
30
|
+
{
|
|
31
|
+
icon: "info",
|
|
32
|
+
size: 14,
|
|
33
|
+
color: "rgb(var(--color-foreground-subtle))",
|
|
34
|
+
className: "cursor-help"
|
|
35
|
+
}
|
|
36
|
+
) })
|
|
37
|
+
] }) }),
|
|
38
|
+
!isMobile && card.secondaryValue && /* @__PURE__ */ jsx("div", { className: "mt-1 text-xs text-foreground-subtle", children: loading ? /* @__PURE__ */ jsx(SkeletonLoading, { className: "!h-3.5" }) : card.secondaryValue }),
|
|
39
|
+
!isMobile && card.subValue && card.subValueLabel && /* @__PURE__ */ jsx("div", { className: "mt-0.5 text-xs text-foreground-faint", children: loading ? /* @__PURE__ */ jsx(SkeletonLoading, { className: "!h-3.5" }) : `${card.subValueLabel} ${card.subValue}` })
|
|
40
|
+
] })
|
|
41
|
+
}
|
|
42
|
+
);
|
|
43
|
+
const InformationCard = ({
|
|
44
|
+
cards,
|
|
45
|
+
loading,
|
|
46
|
+
headerTitle,
|
|
47
|
+
headerActionSlot,
|
|
48
|
+
collapsible = true,
|
|
49
|
+
showHeader = true
|
|
50
|
+
}) => {
|
|
51
|
+
const { t } = useTranslation("ui");
|
|
52
|
+
const { isMobile } = useBreakpoint();
|
|
53
|
+
const [open, setOpen] = useState(isMobile ? 0 : 1);
|
|
54
|
+
useEffect(() => {
|
|
55
|
+
setOpen(isMobile ? 0 : 1);
|
|
56
|
+
}, [isMobile]);
|
|
57
|
+
const handleOpen = (value) => setOpen(open === value ? 0 : value);
|
|
58
|
+
const visibleCards = (cards ?? []).filter((card) => card.show !== false);
|
|
59
|
+
return /* @__PURE__ */ jsxs(
|
|
60
|
+
ControlledAccordionRoot,
|
|
61
|
+
{
|
|
62
|
+
open: collapsible ? open === 1 : true,
|
|
63
|
+
icon: collapsible ? /* @__PURE__ */ jsx(AccordionIcon, { id: 1, open }) : /* @__PURE__ */ jsx(Fragment, {}),
|
|
64
|
+
children: [
|
|
65
|
+
showHeader && /* @__PURE__ */ jsx(
|
|
66
|
+
ControlledAccordionHeader,
|
|
67
|
+
{
|
|
68
|
+
onClick: collapsible ? () => handleOpen(1) : void 0,
|
|
69
|
+
tabIndex: collapsible ? void 0 : -1,
|
|
70
|
+
className: classNames(
|
|
71
|
+
"inter-font w-full border-b-0 py-2",
|
|
72
|
+
isMobile ? "p-0 text-base" : "p-1 text-lg",
|
|
73
|
+
!collapsible && "cursor-default"
|
|
74
|
+
),
|
|
75
|
+
children: /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-x-2", children: [
|
|
76
|
+
/* @__PURE__ */ jsx("span", { children: headerTitle ?? t("informationCard.defaultTitle") }),
|
|
77
|
+
headerActionSlot && /* @__PURE__ */ jsx(Fragment, { children: headerActionSlot })
|
|
78
|
+
] })
|
|
79
|
+
}
|
|
80
|
+
),
|
|
81
|
+
/* @__PURE__ */ jsx(ControlledAccordionBody, { className: "py-2 pl-2 pr-1", children: isMobile ? /* @__PURE__ */ jsx("div", { className: "flex h-[70px] snap-x snap-mandatory flex-nowrap gap-2 overflow-x-auto pb-1", children: visibleCards.map((card, index) => /* @__PURE__ */ jsx(CompactStatCard, { card, loading, isMobile: true }, index)) }) : /* @__PURE__ */ jsx("div", { className: "flex flex-wrap gap-2", children: visibleCards.map((card, index) => /* @__PURE__ */ jsx(CompactStatCard, { card, loading }, index)) }) })
|
|
82
|
+
]
|
|
83
|
+
}
|
|
84
|
+
);
|
|
85
|
+
};
|
|
86
|
+
export {
|
|
87
|
+
InformationCard as default
|
|
88
|
+
};
|
|
89
|
+
//# sourceMappingURL=InformationCard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InformationCard.js","sources":["../../../src/components/UI/InformationCard.tsx"],"sourcesContent":["import { useEffect, useState } from 'react';\nimport classNames from 'classnames';\nimport { useTranslation } from 'react-i18next';\n\nimport {\n ControlledAccordionBody,\n ControlledAccordionHeader,\n ControlledAccordionRoot,\n} from '@/components/UI/ControlledAccordion';\nimport ControlledTooltip from '@/components/UI/ControlledTooltip';\nimport { MaterialSymbol, SymbolCodepoints } from '@/components/UI/MaterialSymbol';\nimport { useBreakpoint } from '@/hooks/useBreakpoint';\n\nimport { AccordionIcon } from './AccordionIcon';\nimport CustomCard from './CustomCard';\nimport SkeletonLoading from './SkeletonLoading';\n\nexport interface IInformationCard {\n title: string;\n icon?: SymbolCodepoints;\n value: string;\n secondaryValue?: string;\n subValue?: string;\n subValueLabel?: string;\n show?: boolean;\n tooltip?: string;\n /** When set, the card becomes clickable (e.g. drill down to a filtered list). */\n onClick?: () => void;\n}\n\ninterface IInformationCardProps {\n cards: Array<IInformationCard>;\n loading?: boolean;\n headerTitle?: string;\n showHeaderBorder?: boolean;\n headerActionSlot?: React.ReactNode;\n /** When false the section stays expanded and the collapse affordance is removed. */\n collapsible?: boolean;\n /** When false only the cards render, with no title row above them. */\n showHeader?: boolean;\n}\n\ninterface ICompactStatCardProps {\n card: IInformationCard;\n loading?: boolean;\n isMobile?: boolean;\n}\n\nconst CompactStatCard: React.FC<ICompactStatCardProps> = ({ card, loading, isMobile }) => (\n <CustomCard\n itsClickable={!loading && !!card.onClick}\n onClickHook={card.onClick}\n className={classNames(\n 'shrink-0 p-3',\n isMobile ? 'basis-[calc(50%_-_4px)] snap-start' : 'min-w-[140px] flex-1 basis-[140px]',\n )}\n >\n <div>\n <div className=\"flex items-center gap-x-2\">\n {card.icon && <MaterialSymbol icon={card.icon} size={22} color=\"rgb(var(--color-primary))\" />}\n <div className=\"text-base font-bold text-foreground\">\n {loading ? <SkeletonLoading className=\"!h-5\" /> : card.value}\n </div>\n </div>\n <div className=\"mt-1 flex items-center gap-x-1\">\n {loading ? (\n <SkeletonLoading className=\"!h-3.5\" />\n ) : (\n <>\n <span className=\"text-xs text-foreground-muted\">{card.title}</span>\n {card.tooltip && (\n <ControlledTooltip content={card.tooltip} className=\"max-w-80\">\n <MaterialSymbol\n icon=\"info\"\n size={14}\n color=\"rgb(var(--color-foreground-subtle))\"\n className=\"cursor-help\"\n />\n </ControlledTooltip>\n )}\n </>\n )}\n </div>\n {!isMobile && card.secondaryValue && (\n <div className=\"mt-1 text-xs text-foreground-subtle\">\n {loading ? <SkeletonLoading className=\"!h-3.5\" /> : card.secondaryValue}\n </div>\n )}\n {!isMobile && card.subValue && card.subValueLabel && (\n <div className=\"mt-0.5 text-xs text-foreground-faint\">\n {loading ? <SkeletonLoading className=\"!h-3.5\" /> : `${card.subValueLabel} ${card.subValue}`}\n </div>\n )}\n </div>\n </CustomCard>\n);\n\nconst InformationCard: React.FC<IInformationCardProps> = ({\n cards,\n loading,\n headerTitle,\n headerActionSlot,\n collapsible = true,\n showHeader = true,\n}) => {\n const { t } = useTranslation('ui');\n const { isMobile } = useBreakpoint();\n const [open, setOpen] = useState(isMobile ? 0 : 1);\n\n useEffect(() => {\n setOpen(isMobile ? 0 : 1);\n }, [isMobile]);\n\n const handleOpen = (value: number) => setOpen(open === value ? 0 : value);\n\n const visibleCards = (cards ?? []).filter((card) => card.show !== false);\n\n return (\n <ControlledAccordionRoot\n open={collapsible ? open === 1 : true}\n icon={collapsible ? <AccordionIcon id={1} open={open} /> : <></>}\n >\n {showHeader && (\n <ControlledAccordionHeader\n onClick={collapsible ? () => handleOpen(1) : undefined}\n tabIndex={collapsible ? undefined : -1}\n className={classNames(\n 'inter-font w-full border-b-0 py-2',\n isMobile ? 'p-0 text-base' : 'p-1 text-lg',\n !collapsible && 'cursor-default',\n )}\n >\n <div className=\"flex items-center gap-x-2\">\n <span>{headerTitle ?? t('informationCard.defaultTitle')}</span>\n {headerActionSlot && <>{headerActionSlot}</>}\n </div>\n </ControlledAccordionHeader>\n )}\n <ControlledAccordionBody className=\"py-2 pl-2 pr-1\">\n {isMobile ? (\n <div className=\"flex h-[70px] snap-x snap-mandatory flex-nowrap gap-2 overflow-x-auto pb-1\">\n {visibleCards.map((card, index) => (\n <CompactStatCard key={index} card={card} loading={loading} isMobile />\n ))}\n </div>\n ) : (\n <div className=\"flex flex-wrap gap-2\">\n {visibleCards.map((card, index) => (\n <CompactStatCard key={index} card={card} loading={loading} />\n ))}\n </div>\n )}\n </ControlledAccordionBody>\n </ControlledAccordionRoot>\n );\n};\n\nexport default InformationCard;\n"],"names":[],"mappings":";;;;;;;;;;;AAgDA,MAAM,kBAAmD,CAAC,EAAE,MAAM,SAAS,eACzE;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,cAAc,CAAC,WAAW,CAAC,CAAC,KAAK;AAAA,IACjC,aAAa,KAAK;AAAA,IAClB,WAAW;AAAA,MACT;AAAA,MACA,WAAW,uCAAuC;AAAA,IAAA;AAAA,IAGpD,+BAAC,OAAA,EACC,UAAA;AAAA,MAAA,qBAAC,OAAA,EAAI,WAAU,6BACZ,UAAA;AAAA,QAAA,KAAK,4BAAS,gBAAA,EAAe,MAAM,KAAK,MAAM,MAAM,IAAI,OAAM,4BAAA,CAA4B;AAAA,QAC3F,oBAAC,OAAA,EAAI,WAAU,uCACZ,UAAA,UAAU,oBAAC,iBAAA,EAAgB,WAAU,OAAA,CAAO,IAAK,KAAK,MAAA,CACzD;AAAA,MAAA,GACF;AAAA,MACA,oBAAC,OAAA,EAAI,WAAU,kCACZ,UAAA,8BACE,iBAAA,EAAgB,WAAU,SAAA,CAAS,IAEpC,qBAAA,UAAA,EACE,UAAA;AAAA,QAAA,oBAAC,QAAA,EAAK,WAAU,iCAAiC,UAAA,KAAK,OAAM;AAAA,QAC3D,KAAK,WACJ,oBAAC,mBAAA,EAAkB,SAAS,KAAK,SAAS,WAAU,YAClD,UAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,MAAM;AAAA,YACN,OAAM;AAAA,YACN,WAAU;AAAA,UAAA;AAAA,QAAA,EACZ,CACF;AAAA,MAAA,EAAA,CAEJ,EAAA,CAEJ;AAAA,MACC,CAAC,YAAY,KAAK,sCAChB,OAAA,EAAI,WAAU,uCACZ,UAAA,8BAAW,iBAAA,EAAgB,WAAU,SAAA,CAAS,IAAK,KAAK,gBAC3D;AAAA,MAED,CAAC,YAAY,KAAK,YAAY,KAAK,iBAClC,oBAAC,OAAA,EAAI,WAAU,wCACZ,UAAA,8BAAW,iBAAA,EAAgB,WAAU,UAAS,IAAK,GAAG,KAAK,aAAa,IAAI,KAAK,QAAQ,GAAA,CAC5F;AAAA,IAAA,EAAA,CAEJ;AAAA,EAAA;AACF;AAGF,MAAM,kBAAmD,CAAC;AAAA,EACxD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,cAAc;AAAA,EACd,aAAa;AACf,MAAM;AACJ,QAAM,EAAE,EAAA,IAAM,eAAe,IAAI;AACjC,QAAM,EAAE,SAAA,IAAa,cAAA;AACrB,QAAM,CAAC,MAAM,OAAO,IAAI,SAAS,WAAW,IAAI,CAAC;AAEjD,YAAU,MAAM;AACd,YAAQ,WAAW,IAAI,CAAC;AAAA,EAC1B,GAAG,CAAC,QAAQ,CAAC;AAEb,QAAM,aAAa,CAAC,UAAkB,QAAQ,SAAS,QAAQ,IAAI,KAAK;AAExE,QAAM,gBAAgB,SAAS,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS,KAAK;AAEvE,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAM,cAAc,SAAS,IAAI;AAAA,MACjC,MAAM,cAAc,oBAAC,eAAA,EAAc,IAAI,GAAG,MAAY,IAAK,oBAAA,UAAA,CAAA,CAAE;AAAA,MAE5D,UAAA;AAAA,QAAA,cACC;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,SAAS,cAAc,MAAM,WAAW,CAAC,IAAI;AAAA,YAC7C,UAAU,cAAc,SAAY;AAAA,YACpC,WAAW;AAAA,cACT;AAAA,cACA,WAAW,kBAAkB;AAAA,cAC7B,CAAC,eAAe;AAAA,YAAA;AAAA,YAGlB,UAAA,qBAAC,OAAA,EAAI,WAAU,6BACb,UAAA;AAAA,cAAA,oBAAC,QAAA,EAAM,UAAA,eAAe,EAAE,8BAA8B,GAAE;AAAA,cACvD,oDAAuB,UAAA,iBAAA,CAAiB;AAAA,YAAA,EAAA,CAC3C;AAAA,UAAA;AAAA,QAAA;AAAA,4BAGH,yBAAA,EAAwB,WAAU,kBAChC,UAAA,WACC,oBAAC,SAAI,WAAU,8EACZ,UAAA,aAAa,IAAI,CAAC,MAAM,8BACtB,iBAAA,EAA4B,MAAY,SAAkB,UAAQ,KAAA,GAA7C,KAA8C,CACrE,GACH,IAEA,oBAAC,SAAI,WAAU,wBACZ,uBAAa,IAAI,CAAC,MAAM,8BACtB,iBAAA,EAA4B,MAAY,WAAnB,KAAqC,CAC5D,GACH,EAAA,CAEJ;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGN;"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
import { DragEndEvent, DragStartEvent } from '@dnd-kit/core';
|
|
3
|
+
interface IKanbanBoardProps {
|
|
4
|
+
/** Cartão que acompanha o cursor. O host devolve o conteúdo do que está sendo arrastado. */
|
|
5
|
+
renderDragOverlay?: (activeId: string) => ReactNode;
|
|
6
|
+
/**
|
|
7
|
+
* Ids das colunas na ordem atual. Junto com `onLaneReorder`, liga o arraste de colunas:
|
|
8
|
+
* a lane ganha uma alça no cabeçalho e o quadro devolve a nova ordem inteira.
|
|
9
|
+
*/
|
|
10
|
+
laneIds?: Array<string>;
|
|
11
|
+
onLaneReorder?: (orderedLaneIds: Array<string>) => void;
|
|
12
|
+
/** Largura do overlay. O padrão casa com a largura útil de uma lane. */
|
|
13
|
+
overlayClassName?: string;
|
|
14
|
+
onDragStart?: (event: DragStartEvent) => void;
|
|
15
|
+
onDragEnd: (event: DragEndEvent) => void;
|
|
16
|
+
onDragCancel?: () => void;
|
|
17
|
+
className?: string;
|
|
18
|
+
children: ReactNode;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Casca de um quadro Kanban: o contexto de arraste, a faixa horizontal de colunas e o
|
|
22
|
+
* cartão que segue o cursor. É a ÚNICA implementação de quadro do app; um Kanban novo
|
|
23
|
+
* compõe `KanbanBoard` + `KanbanLane` + `KanbanCard` e traz só o conteúdo do cartão.
|
|
24
|
+
*/
|
|
25
|
+
declare const KanbanBoard: React.FC<IKanbanBoardProps>;
|
|
26
|
+
export default KanbanBoard;
|