@kapiuara/ui 0.0.0-stage → 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/README.md +764 -2
- package/dist/components/data/KapiPagination.d.ts +36 -0
- package/dist/components/data/KapiPagination.js +102 -0
- package/dist/components/data/KapiTable.d.ts +245 -0
- package/dist/components/data/KapiTable.js +748 -0
- package/dist/components/data/KapiTableFilter.d.ts +48 -0
- package/dist/components/data/KapiTableFilter.js +81 -0
- package/dist/components/data/index.d.ts +10 -0
- package/dist/components/data/tableLogic.d.ts +197 -0
- package/dist/components/data/tableLogic.js +145 -0
- package/dist/components/data/tableResizeLogic.d.ts +28 -0
- package/dist/components/data/tableResizeLogic.js +20 -0
- package/dist/components/display/KapiAnnotation.d.ts +32 -0
- package/dist/components/display/KapiAnnotation.js +130 -0
- package/dist/components/display/KapiAvatar.d.ts +27 -0
- package/dist/components/display/KapiAvatar.js +43 -0
- package/dist/components/display/KapiAvatarGroup.d.ts +19 -0
- package/dist/components/display/KapiAvatarGroup.js +38 -0
- package/dist/components/display/KapiBadge.d.ts +21 -0
- package/dist/components/display/KapiBadge.js +28 -0
- package/dist/components/display/KapiComment.d.ts +27 -0
- package/dist/components/display/KapiComment.js +66 -0
- package/dist/components/display/KapiCommentComposer.d.ts +49 -0
- package/dist/components/display/KapiCommentComposer.js +76 -0
- package/dist/components/display/KapiDescriptionList.d.ts +19 -0
- package/dist/components/display/KapiDescriptionList.js +35 -0
- package/dist/components/display/KapiFileItem.d.ts +39 -0
- package/dist/components/display/KapiFileItem.js +74 -0
- package/dist/components/display/KapiFileViewer.d.ts +51 -0
- package/dist/components/display/KapiFileViewer.js +107 -0
- package/dist/components/display/KapiIconTile.d.ts +16 -0
- package/dist/components/display/KapiIconTile.js +29 -0
- package/dist/components/display/KapiStat.d.ts +24 -0
- package/dist/components/display/KapiStat.js +41 -0
- package/dist/components/display/KapiTag.d.ts +27 -0
- package/dist/components/display/KapiTag.js +44 -0
- package/dist/components/display/KapiTimeline.d.ts +15 -0
- package/dist/components/display/KapiTimeline.js +30 -0
- package/dist/components/display/annotationLogic.d.ts +26 -0
- package/dist/components/display/annotationLogic.js +17 -0
- package/dist/components/display/avatarGroupLogic.d.ts +14 -0
- package/dist/components/display/avatarGroupLogic.js +13 -0
- package/dist/components/display/avatarLogic.d.ts +5 -0
- package/dist/components/display/avatarLogic.js +9 -0
- package/dist/components/display/commentLogic.d.ts +18 -0
- package/dist/components/display/commentLogic.js +7 -0
- package/dist/components/display/fileItemLogic.d.ts +9 -0
- package/dist/components/display/fileItemLogic.js +12 -0
- package/dist/components/display/iconTileLogic.d.ts +13 -0
- package/dist/components/display/iconTileLogic.js +13 -0
- package/dist/components/display/index.d.ts +40 -0
- package/dist/components/display/statLogic.d.ts +10 -0
- package/dist/components/display/statLogic.js +10 -0
- package/dist/components/display/tagLogic.d.ts +11 -0
- package/dist/components/display/tagLogic.js +10 -0
- package/dist/components/display/timelineLogic.d.ts +5 -0
- package/dist/components/display/timelineLogic.js +4 -0
- package/dist/components/feedback/KapiAlert.d.ts +28 -0
- package/dist/components/feedback/KapiAlert.js +53 -0
- package/dist/components/feedback/KapiBulkBar.d.ts +30 -0
- package/dist/components/feedback/KapiBulkBar.js +34 -0
- package/dist/components/feedback/KapiCountdown.d.ts +26 -0
- package/dist/components/feedback/KapiCountdown.js +43 -0
- package/dist/components/feedback/KapiEmpty.d.ts +14 -0
- package/dist/components/feedback/KapiEmpty.js +31 -0
- package/dist/components/feedback/KapiFab.d.ts +34 -0
- package/dist/components/feedback/KapiFab.js +116 -0
- package/dist/components/feedback/KapiOfflineBanner.d.ts +25 -0
- package/dist/components/feedback/KapiOfflineBanner.js +40 -0
- package/dist/components/feedback/KapiProgress.d.ts +24 -0
- package/dist/components/feedback/KapiProgress.js +94 -0
- package/dist/components/feedback/KapiSkeleton.d.ts +12 -0
- package/dist/components/feedback/KapiSkeleton.js +16 -0
- package/dist/components/feedback/KapiToastContainer.d.ts +16 -0
- package/dist/components/feedback/KapiToastContainer.js +81 -0
- package/dist/components/feedback/KapiTour.d.ts +40 -0
- package/dist/components/feedback/KapiTour.js +157 -0
- package/dist/components/feedback/KapiUnsavedBar.d.ts +35 -0
- package/dist/components/feedback/KapiUnsavedBar.js +47 -0
- package/dist/components/feedback/bulkBarLogic.d.ts +2 -0
- package/dist/components/feedback/bulkBarLogic.js +7 -0
- package/dist/components/feedback/countdownLogic.d.ts +74 -0
- package/dist/components/feedback/countdownLogic.js +70 -0
- package/dist/components/feedback/fabLogic.d.ts +17 -0
- package/dist/components/feedback/fabLogic.js +10 -0
- package/dist/components/feedback/index.d.ts +33 -0
- package/dist/components/feedback/offlineBannerLogic.d.ts +10 -0
- package/dist/components/feedback/offlineBannerLogic.js +8 -0
- package/dist/components/feedback/progressLogic.d.ts +17 -0
- package/dist/components/feedback/progressLogic.js +16 -0
- package/dist/components/feedback/toastStore.d.ts +62 -0
- package/dist/components/feedback/toastStore.js +38 -0
- package/dist/components/feedback/tourLogic.d.ts +64 -0
- package/dist/components/feedback/tourLogic.js +31 -0
- package/dist/components/feedback/unsavedBarLogic.d.ts +2 -0
- package/dist/components/feedback/unsavedBarLogic.js +8 -0
- package/dist/components/inputs/KapiAutocomplete.d.ts +81 -0
- package/dist/components/inputs/KapiAutocomplete.js +205 -0
- package/dist/components/inputs/KapiButton.d.ts +23 -0
- package/dist/components/inputs/KapiButton.js +25 -0
- package/dist/components/inputs/KapiCalendar.d.ts +35 -0
- package/dist/components/inputs/KapiCalendar.js +60 -0
- package/dist/components/inputs/KapiCalendarGrid.d.ts +29 -0
- package/dist/components/inputs/KapiCalendarGrid.js +65 -0
- package/dist/components/inputs/KapiCheckCard.d.ts +28 -0
- package/dist/components/inputs/KapiCheckCard.js +41 -0
- package/dist/components/inputs/KapiCheckbox.d.ts +7 -0
- package/dist/components/inputs/KapiCheckbox.js +5 -0
- package/dist/components/inputs/KapiDatePicker.d.ts +46 -0
- package/dist/components/inputs/KapiDatePicker.js +189 -0
- package/dist/components/inputs/KapiDateRangePicker.d.ts +49 -0
- package/dist/components/inputs/KapiDateRangePicker.js +179 -0
- package/dist/components/inputs/KapiFacetedSearch.d.ts +45 -0
- package/dist/components/inputs/KapiFacetedSearch.js +188 -0
- package/dist/components/inputs/KapiField.d.ts +33 -0
- package/dist/components/inputs/KapiField.js +60 -0
- package/dist/components/inputs/KapiFileUpload.d.ts +58 -0
- package/dist/components/inputs/KapiFileUpload.js +134 -0
- package/dist/components/inputs/KapiIconButton.d.ts +13 -0
- package/dist/components/inputs/KapiIconButton.js +16 -0
- package/dist/components/inputs/KapiInput.d.ts +92 -0
- package/dist/components/inputs/KapiInput.js +123 -0
- package/dist/components/inputs/KapiInputGroup.d.ts +37 -0
- package/dist/components/inputs/KapiInputGroup.js +29 -0
- package/dist/components/inputs/KapiMaskedInput.d.ts +52 -0
- package/dist/components/inputs/KapiMaskedInput.js +78 -0
- package/dist/components/inputs/KapiNumberStepper.d.ts +44 -0
- package/dist/components/inputs/KapiNumberStepper.js +100 -0
- package/dist/components/inputs/KapiRadio.d.ts +7 -0
- package/dist/components/inputs/KapiRadio.js +5 -0
- package/dist/components/inputs/KapiRating.d.ts +55 -0
- package/dist/components/inputs/KapiRating.js +99 -0
- package/dist/components/inputs/KapiSegmented.d.ts +41 -0
- package/dist/components/inputs/KapiSegmented.js +83 -0
- package/dist/components/inputs/KapiSelect.d.ts +109 -0
- package/dist/components/inputs/KapiSelect.js +443 -0
- package/dist/components/inputs/KapiSlider.d.ts +42 -0
- package/dist/components/inputs/KapiSlider.js +70 -0
- package/dist/components/inputs/KapiSwitch.d.ts +13 -0
- package/dist/components/inputs/KapiSwitch.js +28 -0
- package/dist/components/inputs/KapiTagInput.d.ts +79 -0
- package/dist/components/inputs/KapiTagInput.js +115 -0
- package/dist/components/inputs/KapiTextarea.d.ts +32 -0
- package/dist/components/inputs/KapiTextarea.js +67 -0
- package/dist/components/inputs/asyncSelectLogic.d.ts +42 -0
- package/dist/components/inputs/asyncSelectLogic.js +46 -0
- package/dist/components/inputs/autocompleteLogic.d.ts +73 -0
- package/dist/components/inputs/autocompleteLogic.js +67 -0
- package/dist/components/inputs/checkControl.d.ts +20 -0
- package/dist/components/inputs/checkControl.js +31 -0
- package/dist/components/inputs/datePickerLogic.d.ts +92 -0
- package/dist/components/inputs/datePickerLogic.js +174 -0
- package/dist/components/inputs/dateRangeLogic.d.ts +31 -0
- package/dist/components/inputs/dateRangeLogic.js +44 -0
- package/dist/components/inputs/facetedSearchLogic.d.ts +69 -0
- package/dist/components/inputs/facetedSearchLogic.js +39 -0
- package/dist/components/inputs/fieldLogic.d.ts +67 -0
- package/dist/components/inputs/fieldLogic.js +35 -0
- package/dist/components/inputs/fileUploadLogic.d.ts +13 -0
- package/dist/components/inputs/fileUploadLogic.js +9 -0
- package/dist/components/inputs/index.d.ts +55 -0
- package/dist/components/inputs/inputGroupLogic.d.ts +22 -0
- package/dist/components/inputs/inputGroupLogic.js +9 -0
- package/dist/components/inputs/inputLogic.d.ts +25 -0
- package/dist/components/inputs/inputLogic.js +10 -0
- package/dist/components/inputs/maskLogic.d.ts +34 -0
- package/dist/components/inputs/maskLogic.js +57 -0
- package/dist/components/inputs/numberStepLogic.d.ts +14 -0
- package/dist/components/inputs/numberStepLogic.js +21 -0
- package/dist/components/inputs/ratingLogic.d.ts +9 -0
- package/dist/components/inputs/ratingLogic.js +22 -0
- package/dist/components/inputs/segmentedLogic.d.ts +6 -0
- package/dist/components/inputs/segmentedLogic.js +14 -0
- package/dist/components/inputs/selectLogic.d.ts +89 -0
- package/dist/components/inputs/selectLogic.js +82 -0
- package/dist/components/inputs/sliderLogic.d.ts +9 -0
- package/dist/components/inputs/sliderLogic.js +17 -0
- package/dist/components/inputs/tagInputLogic.d.ts +40 -0
- package/dist/components/inputs/tagInputLogic.js +40 -0
- package/dist/components/inputs/textareaLogic.d.ts +17 -0
- package/dist/components/inputs/textareaLogic.js +13 -0
- package/dist/components/inputs/useCalendarFocus.d.ts +13 -0
- package/dist/components/inputs/useCalendarFocus.js +25 -0
- package/dist/components/inputs/useDatePopSide.d.ts +15 -0
- package/dist/components/inputs/useDatePopSide.js +20 -0
- package/dist/components/labelsLogic.d.ts +6 -0
- package/dist/components/labelsLogic.js +11 -0
- package/dist/components/layout/KapiAccessCard.d.ts +40 -0
- package/dist/components/layout/KapiAccessCard.js +66 -0
- package/dist/components/layout/KapiAccountMenu.d.ts +61 -0
- package/dist/components/layout/KapiAccountMenu.js +212 -0
- package/dist/components/layout/KapiCard.d.ts +43 -0
- package/dist/components/layout/KapiCard.js +53 -0
- package/dist/components/layout/KapiCluster.d.ts +15 -0
- package/dist/components/layout/KapiCluster.js +21 -0
- package/dist/components/layout/KapiContextSlot.d.ts +45 -0
- package/dist/components/layout/KapiContextSlot.js +92 -0
- package/dist/components/layout/KapiDivider.d.ts +16 -0
- package/dist/components/layout/KapiDivider.js +41 -0
- package/dist/components/layout/KapiGrid.d.ts +19 -0
- package/dist/components/layout/KapiGrid.js +25 -0
- package/dist/components/layout/KapiNotificationBell.d.ts +75 -0
- package/dist/components/layout/KapiNotificationBell.js +196 -0
- package/dist/components/layout/KapiPageHeader.d.ts +28 -0
- package/dist/components/layout/KapiPageHeader.js +47 -0
- package/dist/components/layout/KapiPanelParts.d.ts +35 -0
- package/dist/components/layout/KapiPanelParts.js +63 -0
- package/dist/components/layout/KapiRail.d.ts +40 -0
- package/dist/components/layout/KapiRail.js +102 -0
- package/dist/components/layout/KapiScrollArea.d.ts +40 -0
- package/dist/components/layout/KapiScrollArea.js +49 -0
- package/dist/components/layout/KapiShell.d.ts +40 -0
- package/dist/components/layout/KapiShell.js +48 -0
- package/dist/components/layout/KapiStack.d.ts +11 -0
- package/dist/components/layout/KapiStack.js +19 -0
- package/dist/components/layout/accessCardLogic.d.ts +18 -0
- package/dist/components/layout/accessCardLogic.js +11 -0
- package/dist/components/layout/cardLogic.d.ts +9 -0
- package/dist/components/layout/cardLogic.js +11 -0
- package/dist/components/layout/index.d.ts +33 -0
- package/dist/components/layout/layoutPrimitives.d.ts +51 -0
- package/dist/components/layout/layoutPrimitives.js +58 -0
- package/dist/components/layout/notificationBellLogic.d.ts +20 -0
- package/dist/components/layout/notificationBellLogic.js +14 -0
- package/dist/components/layout/railLogic.d.ts +52 -0
- package/dist/components/layout/railLogic.js +16 -0
- package/dist/components/locale/KapiLocaleProvider.d.ts +29 -0
- package/dist/components/locale/KapiLocaleProvider.js +27 -0
- package/dist/components/locale/index.d.ts +5 -0
- package/dist/components/locale/labelRegistry.d.ts +110 -0
- package/dist/components/locale/linkLabels.d.ts +6 -0
- package/dist/components/locale/linkLabels.js +4 -0
- package/dist/components/navigation/CtxSlidingList.d.ts +11 -0
- package/dist/components/navigation/CtxSlidingList.js +24 -0
- package/dist/components/navigation/KapiAccordion.d.ts +24 -0
- package/dist/components/navigation/KapiAccordion.js +68 -0
- package/dist/components/navigation/KapiBreadcrumb.d.ts +23 -0
- package/dist/components/navigation/KapiBreadcrumb.js +32 -0
- package/dist/components/navigation/KapiCollapsiblePanel.d.ts +63 -0
- package/dist/components/navigation/KapiCollapsiblePanel.js +83 -0
- package/dist/components/navigation/KapiContextPanel.d.ts +117 -0
- package/dist/components/navigation/KapiContextPanel.js +265 -0
- package/dist/components/navigation/KapiFilterChips.d.ts +30 -0
- package/dist/components/navigation/KapiFilterChips.js +40 -0
- package/dist/components/navigation/KapiNavBadge.d.ts +26 -0
- package/dist/components/navigation/KapiNavBadge.js +33 -0
- package/dist/components/navigation/KapiPanelGroup.d.ts +69 -0
- package/dist/components/navigation/KapiPanelGroup.js +149 -0
- package/dist/components/navigation/KapiSteps.d.ts +43 -0
- package/dist/components/navigation/KapiSteps.js +63 -0
- package/dist/components/navigation/KapiTabs.d.ts +56 -0
- package/dist/components/navigation/KapiTabs.js +81 -0
- package/dist/components/navigation/KapiTree.d.ts +56 -0
- package/dist/components/navigation/KapiTree.js +157 -0
- package/dist/components/navigation/KapiWizard.d.ts +49 -0
- package/dist/components/navigation/KapiWizard.js +104 -0
- package/dist/components/navigation/MiniNavItem.d.ts +35 -0
- package/dist/components/navigation/MiniNavItem.js +57 -0
- package/dist/components/navigation/accordionLogic.d.ts +4 -0
- package/dist/components/navigation/accordionLogic.js +4 -0
- package/dist/components/navigation/activeItemLogic.d.ts +7 -0
- package/dist/components/navigation/activeItemLogic.js +4 -0
- package/dist/components/navigation/breadcrumbLogic.d.ts +8 -0
- package/dist/components/navigation/breadcrumbLogic.js +4 -0
- package/dist/components/navigation/contextPanelLogic.d.ts +27 -0
- package/dist/components/navigation/contextPanelLogic.js +11 -0
- package/dist/components/navigation/filterChipsLogic.d.ts +23 -0
- package/dist/components/navigation/filterChipsLogic.js +20 -0
- package/dist/components/navigation/index.d.ts +39 -0
- package/dist/components/navigation/navBadgeLogic.d.ts +26 -0
- package/dist/components/navigation/navBadgeLogic.js +16 -0
- package/dist/components/navigation/panelGroupLogic.d.ts +15 -0
- package/dist/components/navigation/panelGroupLogic.js +13 -0
- package/dist/components/navigation/panelMini.d.ts +13 -0
- package/dist/components/navigation/panelMini.js +9 -0
- package/dist/components/navigation/panelMiniLogic.d.ts +19 -0
- package/dist/components/navigation/panelMiniLogic.js +6 -0
- package/dist/components/navigation/stepsLogic.d.ts +25 -0
- package/dist/components/navigation/stepsLogic.js +10 -0
- package/dist/components/navigation/tabsLogic.d.ts +12 -0
- package/dist/components/navigation/tabsLogic.js +14 -0
- package/dist/components/navigation/treeLogic.d.ts +80 -0
- package/dist/components/navigation/treeLogic.js +91 -0
- package/dist/components/navigation/wizardLogic.d.ts +11 -0
- package/dist/components/navigation/wizardLogic.js +7 -0
- package/dist/components/overlays/KapiCanvasForm.d.ts +42 -0
- package/dist/components/overlays/KapiCanvasForm.js +60 -0
- package/dist/components/overlays/KapiCommandPalette.d.ts +58 -0
- package/dist/components/overlays/KapiCommandPalette.js +152 -0
- package/dist/components/overlays/KapiConfirm.d.ts +48 -0
- package/dist/components/overlays/KapiConfirm.js +94 -0
- package/dist/components/overlays/KapiContextMenu.d.ts +51 -0
- package/dist/components/overlays/KapiContextMenu.js +90 -0
- package/dist/components/overlays/KapiDialogHost.d.ts +23 -0
- package/dist/components/overlays/KapiDialogHost.js +129 -0
- package/dist/components/overlays/KapiDropdown.d.ts +30 -0
- package/dist/components/overlays/KapiDropdown.js +84 -0
- package/dist/components/overlays/KapiLoading.d.ts +14 -0
- package/dist/components/overlays/KapiLoading.js +43 -0
- package/dist/components/overlays/KapiMenuButton.d.ts +25 -0
- package/dist/components/overlays/KapiMenuButton.js +109 -0
- package/dist/components/overlays/KapiModal.d.ts +61 -0
- package/dist/components/overlays/KapiModal.js +106 -0
- package/dist/components/overlays/KapiOffcanvas.d.ts +96 -0
- package/dist/components/overlays/KapiOffcanvas.js +209 -0
- package/dist/components/overlays/KapiOffcanvasStack.d.ts +58 -0
- package/dist/components/overlays/KapiOffcanvasStack.js +84 -0
- package/dist/components/overlays/KapiPhotoView.d.ts +60 -0
- package/dist/components/overlays/KapiPhotoView.js +122 -0
- package/dist/components/overlays/KapiPopover.d.ts +46 -0
- package/dist/components/overlays/KapiPopover.js +68 -0
- package/dist/components/overlays/KapiShapeSheet.d.ts +34 -0
- package/dist/components/overlays/KapiShapeSheet.js +82 -0
- package/dist/components/overlays/KapiSplitModal.d.ts +41 -0
- package/dist/components/overlays/KapiSplitModal.js +125 -0
- package/dist/components/overlays/KapiTooltip.d.ts +38 -0
- package/dist/components/overlays/KapiTooltip.js +105 -0
- package/dist/components/overlays/canvasFormLogic.d.ts +18 -0
- package/dist/components/overlays/canvasFormLogic.js +16 -0
- package/dist/components/overlays/commandPaletteLogic.d.ts +29 -0
- package/dist/components/overlays/commandPaletteLogic.js +19 -0
- package/dist/components/overlays/dialogStore.d.ts +114 -0
- package/dist/components/overlays/dialogStore.js +76 -0
- package/dist/components/overlays/dialogUtils.d.ts +72 -0
- package/dist/components/overlays/dialogUtils.js +62 -0
- package/dist/components/overlays/exitPresenceLogic.d.ts +14 -0
- package/dist/components/overlays/exitPresenceLogic.js +5 -0
- package/dist/components/overlays/index.d.ts +38 -0
- package/dist/components/overlays/menuButtonLogic.d.ts +58 -0
- package/dist/components/overlays/menuButtonLogic.js +9 -0
- package/dist/components/overlays/menuKeyboardLogic.d.ts +25 -0
- package/dist/components/overlays/menuKeyboardLogic.js +30 -0
- package/dist/components/overlays/offcanvasCompanion.d.ts +16 -0
- package/dist/components/overlays/offcanvasCompanion.js +6 -0
- package/dist/components/overlays/offcanvasResize.d.ts +22 -0
- package/dist/components/overlays/offcanvasResize.js +10 -0
- package/dist/components/overlays/offcanvasSide.d.ts +30 -0
- package/dist/components/overlays/offcanvasSide.js +29 -0
- package/dist/components/overlays/offcanvasStack.d.ts +76 -0
- package/dist/components/overlays/offcanvasStack.js +72 -0
- package/dist/components/overlays/overlayPortal.d.ts +9 -0
- package/dist/components/overlays/overlayPortal.js +6 -0
- package/dist/components/overlays/popoverLogic.d.ts +94 -0
- package/dist/components/overlays/popoverLogic.js +47 -0
- package/dist/components/overlays/splitModalLayout.d.ts +8 -0
- package/dist/components/overlays/splitModalLayout.js +5 -0
- package/dist/components/overlays/useExitPresence.d.ts +14 -0
- package/dist/components/overlays/useExitPresence.js +34 -0
- package/dist/components/overlays/useNativeDialog.d.ts +30 -0
- package/dist/components/overlays/useNativeDialog.js +56 -0
- package/dist/components/rootProps.d.ts +17 -0
- package/dist/components/rootProps.js +4 -0
- package/dist/hooks/breakpointOpenLogic.d.ts +7 -0
- package/dist/hooks/breakpointOpenLogic.js +4 -0
- package/dist/hooks/dateFormat.d.ts +12 -0
- package/dist/hooks/dateFormat.js +15 -0
- package/dist/hooks/downloadLogic.d.ts +31 -0
- package/dist/hooks/downloadLogic.js +85 -0
- package/dist/hooks/focusLogic.d.ts +18 -0
- package/dist/hooks/focusLogic.js +17 -0
- package/dist/hooks/growOriginLogic.d.ts +22 -0
- package/dist/hooks/growOriginLogic.js +10 -0
- package/dist/hooks/hotkeyLogic.d.ts +22 -0
- package/dist/hooks/hotkeyLogic.js +32 -0
- package/dist/hooks/index.d.ts +49 -0
- package/dist/hooks/kapiRoot.d.ts +16 -0
- package/dist/hooks/kapiRoot.js +9 -0
- package/dist/hooks/onlineStatusLogic.d.ts +31 -0
- package/dist/hooks/onlineStatusLogic.js +28 -0
- package/dist/hooks/persistentStateLogic.d.ts +12 -0
- package/dist/hooks/persistentStateLogic.js +17 -0
- package/dist/hooks/rafThrottle.d.ts +33 -0
- package/dist/hooks/rafThrottle.js +33 -0
- package/dist/hooks/recentLogic.d.ts +9 -0
- package/dist/hooks/recentLogic.js +10 -0
- package/dist/hooks/reducedMotion.d.ts +13 -0
- package/dist/hooks/reducedMotion.js +5 -0
- package/dist/hooks/rightClick.d.ts +37 -0
- package/dist/hooks/rightClick.js +30 -0
- package/dist/hooks/scrollCollapseLogic.d.ts +12 -0
- package/dist/hooks/scrollCollapseLogic.js +4 -0
- package/dist/hooks/scrollEdgesLogic.d.ts +49 -0
- package/dist/hooks/scrollEdgesLogic.js +19 -0
- package/dist/hooks/slidingIndicatorLogic.d.ts +25 -0
- package/dist/hooks/slidingIndicatorLogic.js +15 -0
- package/dist/hooks/storageLogic.d.ts +15 -0
- package/dist/hooks/storageLogic.js +24 -0
- package/dist/hooks/unsavedGuardLogic.d.ts +17 -0
- package/dist/hooks/unsavedGuardLogic.js +17 -0
- package/dist/hooks/useDragScroll.d.ts +12 -0
- package/dist/hooks/useDragScroll.js +32 -0
- package/dist/hooks/useGlobalRightClick.d.ts +14 -0
- package/dist/hooks/useGlobalRightClick.js +35 -0
- package/dist/hooks/useGrowOrigin.d.ts +13 -0
- package/dist/hooks/useGrowOrigin.js +16 -0
- package/dist/hooks/useHotkey.d.ts +15 -0
- package/dist/hooks/useHotkey.js +31 -0
- package/dist/hooks/useKapiTheme.d.ts +69 -0
- package/dist/hooks/useKapiTheme.js +88 -0
- package/dist/hooks/useMediaQuery.d.ts +6 -0
- package/dist/hooks/useMediaQuery.js +13 -0
- package/dist/hooks/useObjectUrl.d.ts +6 -0
- package/dist/hooks/useObjectUrl.js +19 -0
- package/dist/hooks/useOnlineStatus.d.ts +7 -0
- package/dist/hooks/useOnlineStatus.js +7 -0
- package/dist/hooks/usePersistentState.d.ts +19 -0
- package/dist/hooks/usePersistentState.js +37 -0
- package/dist/hooks/usePlacement.d.ts +36 -0
- package/dist/hooks/usePlacement.js +84 -0
- package/dist/hooks/useRecent.d.ts +17 -0
- package/dist/hooks/useRecent.js +16 -0
- package/dist/hooks/useScrollCollapse.d.ts +10 -0
- package/dist/hooks/useScrollCollapse.js +27 -0
- package/dist/hooks/useScrollEdges.d.ts +32 -0
- package/dist/hooks/useScrollEdges.js +91 -0
- package/dist/hooks/useSlidingIndicator.d.ts +23 -0
- package/dist/hooks/useSlidingIndicator.js +51 -0
- package/dist/hooks/useUnsavedGuard.d.ts +70 -0
- package/dist/hooks/useUnsavedGuard.js +47 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.js +162 -0
- package/dist/kapi.css +2 -0
- package/dist/kapi.layered.css +4 -0
- package/package.json +86 -4
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { KapiButton as e } from "../inputs/KapiButton.js";
|
|
3
|
+
import { useLabels as t } from "../locale/KapiLocaleProvider.js";
|
|
4
|
+
import { KapiOffcanvas as n } from "./KapiOffcanvas.js";
|
|
5
|
+
import { runSubmit as r } from "./canvasFormLogic.js";
|
|
6
|
+
import { Fragment as i, jsx as a, jsxs as o } from "react/jsx-runtime";
|
|
7
|
+
import { useCallback as s, useEffect as c, useId as l, useRef as u, useState as d } from "react";
|
|
8
|
+
//#region src/components/overlays/KapiCanvasForm.tsx
|
|
9
|
+
var f = {
|
|
10
|
+
submit: "Guardar",
|
|
11
|
+
cancel: "Cancelar"
|
|
12
|
+
}, p = ({ onClose: p, children: m, onSubmit: h, onError: g, submitLabel: _, cancelLabel: v, submitDisabled: y = !1, formId: b, closeOnBackdrop: x, closeOnEscape: S, ...C }) => {
|
|
13
|
+
let w = t("canvasForm", f), T = l(), E = b ?? `canvas-form-${T}`, [D, O] = d(!1), k = u(!1), A = u(!0);
|
|
14
|
+
c(() => (A.current = !0, () => {
|
|
15
|
+
A.current = !1;
|
|
16
|
+
}), []);
|
|
17
|
+
let j = s((e) => {
|
|
18
|
+
e.preventDefault(), !k.current && r(() => h(e), {
|
|
19
|
+
onStart: () => {
|
|
20
|
+
k.current = !0, O(!0);
|
|
21
|
+
},
|
|
22
|
+
onEnd: () => {
|
|
23
|
+
k.current = !1, A.current && O(!1);
|
|
24
|
+
},
|
|
25
|
+
onError: g
|
|
26
|
+
});
|
|
27
|
+
}, [h, g]), M = () => {
|
|
28
|
+
k.current || p();
|
|
29
|
+
}, N = /* @__PURE__ */ o(i, { children: [/* @__PURE__ */ a(e, {
|
|
30
|
+
onClick: M,
|
|
31
|
+
disabled: D,
|
|
32
|
+
children: v ?? w.cancel
|
|
33
|
+
}), /* @__PURE__ */ a(e, {
|
|
34
|
+
variant: "primary",
|
|
35
|
+
type: "submit",
|
|
36
|
+
form: E,
|
|
37
|
+
disabled: D || y,
|
|
38
|
+
"aria-busy": D,
|
|
39
|
+
icon: D ? /* @__PURE__ */ a("span", {
|
|
40
|
+
className: "kapi-spinner kapi-spinner--sm",
|
|
41
|
+
"aria-hidden": "true"
|
|
42
|
+
}) : void 0,
|
|
43
|
+
children: _ ?? w.submit
|
|
44
|
+
})] });
|
|
45
|
+
return /* @__PURE__ */ a(n, {
|
|
46
|
+
...C,
|
|
47
|
+
onClose: M,
|
|
48
|
+
closeOnBackdrop: !D && x,
|
|
49
|
+
closeOnEscape: !D && S,
|
|
50
|
+
footer: N,
|
|
51
|
+
children: /* @__PURE__ */ a("form", {
|
|
52
|
+
id: E,
|
|
53
|
+
className: "kapi-stack",
|
|
54
|
+
onSubmit: j,
|
|
55
|
+
children: m
|
|
56
|
+
})
|
|
57
|
+
});
|
|
58
|
+
};
|
|
59
|
+
//#endregion
|
|
60
|
+
export { f as DEFAULT_CANVAS_FORM_LABELS, p as KapiCanvasForm };
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { type ReactNode } from "react";
|
|
2
|
+
import "./KapiCommandPalette.css";
|
|
3
|
+
import { type KapiRootProps } from "../rootProps";
|
|
4
|
+
import type { KapiLabelsOverride } from "../labelsLogic";
|
|
5
|
+
export type KapiCommand = {
|
|
6
|
+
id: string;
|
|
7
|
+
/** Texto visible. También se usa para filtrar (si es un elemento, se extrae su texto; suma `keywords` si hace falta). */
|
|
8
|
+
label: ReactNode;
|
|
9
|
+
icon?: ReactNode;
|
|
10
|
+
/** Contenido a la derecha (atajo, contador, badge…). */
|
|
11
|
+
trailing?: ReactNode;
|
|
12
|
+
/** Términos extra que también matchean la búsqueda. */
|
|
13
|
+
keywords?: string[];
|
|
14
|
+
disabled?: boolean;
|
|
15
|
+
/** Se ejecuta al elegir el comando; después la paleta llama a `onClose`. */
|
|
16
|
+
onSelect: () => void;
|
|
17
|
+
};
|
|
18
|
+
export type KapiCommandGroup = {
|
|
19
|
+
id: string;
|
|
20
|
+
/** Título de la sección ("IR A", "Módulos"…). Se muestra sólo si el grupo tiene resultados. */
|
|
21
|
+
label?: ReactNode;
|
|
22
|
+
commands: KapiCommand[];
|
|
23
|
+
};
|
|
24
|
+
/** `className`/`style`/`id` (`KapiRootProps`) van al `<dialog>` `.kapi-cmdk` (la tarjeta de la paleta). */
|
|
25
|
+
export type KapiCommandPaletteProps = KapiRootProps & {
|
|
26
|
+
/** Controlado. */
|
|
27
|
+
open: boolean;
|
|
28
|
+
/** Pedido de cierre (Esc, click afuera, o después de elegir un comando). */
|
|
29
|
+
onClose: () => void;
|
|
30
|
+
/** Secciones de comandos, en orden; la búsqueda filtra dentro de cada una. */
|
|
31
|
+
groups: KapiCommandGroup[];
|
|
32
|
+
/** Gana sobre `labels.placeholder` ("Buscar o ir a…"). */
|
|
33
|
+
placeholder?: string;
|
|
34
|
+
/** Gana sobre `labels.empty` ("Sin resultados"). */
|
|
35
|
+
emptyLabel?: string;
|
|
36
|
+
/** Pie con la ayuda de teclado. Default `labels.footerHint`; `null` lo oculta. */
|
|
37
|
+
footerHint?: ReactNode;
|
|
38
|
+
/** Textos fijos (clave `commandPalette`). */
|
|
39
|
+
labels?: KapiLabelsOverride<KapiCommandPaletteLabels> | undefined;
|
|
40
|
+
};
|
|
41
|
+
export declare const DEFAULT_FOOTER_HINT = "\u2191\u2193 para moverte \u00B7 Enter para ir \u00B7 Esc para cerrar";
|
|
42
|
+
export type KapiCommandPaletteLabels = {
|
|
43
|
+
placeholder: string;
|
|
44
|
+
empty: string;
|
|
45
|
+
footerHint: string;
|
|
46
|
+
};
|
|
47
|
+
export declare const DEFAULT_COMMAND_PALETTE_LABELS: KapiCommandPaletteLabels;
|
|
48
|
+
/**
|
|
49
|
+
* Paleta de comandos ("Buscar o ir a…", típicamente con Ctrl/Cmd+K — ver `useHotkey`).
|
|
50
|
+
* Panel flotante centrado sobre `<dialog>` nativo (`showModal()`): top-layer, focus trap, Escape y
|
|
51
|
+
* restauración de foco los da el navegador. Búsqueda por subcadena sobre el texto del `label` y los
|
|
52
|
+
* `keywords`; resultados agrupados; ↑/↓ recorren los comandos de todos los grupos, Enter elige.
|
|
53
|
+
*
|
|
54
|
+
* PERMISOS: es puramente presentacional. La app debe pasar SÓLO los comandos que el usuario puede ver
|
|
55
|
+
* (filtrados upstream con su propio motor de permisos); la paleta no valida ni oculta nada por sí misma.
|
|
56
|
+
* `disabled` sólo deshabilita visualmente un comando; no es un control de acceso.
|
|
57
|
+
*/
|
|
58
|
+
export declare const KapiCommandPalette: ({ open, ...props }: KapiCommandPaletteProps) => import("react").JSX.Element | null;
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useLabels as e } from "../locale/KapiLocaleProvider.js";
|
|
3
|
+
import { joinClasses as t } from "../rootProps.js";
|
|
4
|
+
import { getPortalRoot as n, useBackdropClose as r, useNativeDialog as i } from "./useNativeDialog.js";
|
|
5
|
+
import { clampActiveIndex as a, filterGroups as o, flattenNavigable as s, moveActiveIndex as c, nodeText as l } from "./commandPaletteLogic.js";
|
|
6
|
+
/* empty css */
|
|
7
|
+
import { jsx as u, jsxs as d } from "react/jsx-runtime";
|
|
8
|
+
import { useEffect as f, useId as p, useMemo as m, useRef as h, useState as g } from "react";
|
|
9
|
+
import { Search as _ } from "lucide-react";
|
|
10
|
+
import { createPortal as v } from "react-dom";
|
|
11
|
+
//#region src/components/overlays/KapiCommandPalette.tsx
|
|
12
|
+
var y = "↑↓ para moverte · Enter para ir · Esc para cerrar", b = {
|
|
13
|
+
placeholder: "Buscar o ir a…",
|
|
14
|
+
empty: "Sin resultados",
|
|
15
|
+
footerHint: y
|
|
16
|
+
}, x = ({ onClose: y, groups: x, placeholder: S, emptyLabel: C, footerHint: w, labels: T, className: E, style: D, id: O }) => {
|
|
17
|
+
let k = e("commandPalette", b, T), A = S ?? k.placeholder, j = C ?? k.empty, M = w === void 0 ? k.footerHint : w, N = p(), P = `${N}-listbox`, F = (e) => `${N}-opt-${e}`, I = h(null), [L, R] = g(""), [z, B] = g(0), { ref: V, dialogProps: H } = i({ onRequestClose: y }), U = r(y), W = m(() => {
|
|
18
|
+
let e = x.map((e) => ({
|
|
19
|
+
...e,
|
|
20
|
+
commands: e.commands.map((e) => ({
|
|
21
|
+
...e,
|
|
22
|
+
text: l(e.label)
|
|
23
|
+
}))
|
|
24
|
+
}));
|
|
25
|
+
return o(e, L);
|
|
26
|
+
}, [x, L]), G = m(() => s(W), [W]), K = a(z, G.length), q = K >= 0 ? G[K] : void 0;
|
|
27
|
+
f(() => {
|
|
28
|
+
if (!q) return;
|
|
29
|
+
let e = I.current?.querySelector(`[data-cmd-id="${CSS.escape(q.id)}"]`);
|
|
30
|
+
e && typeof e.scrollIntoView == "function" && e.scrollIntoView({ block: "nearest" });
|
|
31
|
+
}, [q]);
|
|
32
|
+
let J = (e) => {
|
|
33
|
+
e.disabled || (e.onSelect(), y());
|
|
34
|
+
}, Y = (e) => {
|
|
35
|
+
switch (e.key) {
|
|
36
|
+
case "ArrowDown":
|
|
37
|
+
case "ArrowUp":
|
|
38
|
+
e.preventDefault(), B(c(K, G.length, e.key === "ArrowDown" ? 1 : -1));
|
|
39
|
+
break;
|
|
40
|
+
case "Home":
|
|
41
|
+
case "End":
|
|
42
|
+
G.length > 0 && (e.preventDefault(), B(e.key === "Home" ? 0 : G.length - 1));
|
|
43
|
+
break;
|
|
44
|
+
case "Enter": q && !e.nativeEvent.isComposing && (e.preventDefault(), J(q));
|
|
45
|
+
}
|
|
46
|
+
}, X = n();
|
|
47
|
+
return X ? v(/* @__PURE__ */ d("dialog", {
|
|
48
|
+
ref: V,
|
|
49
|
+
id: O,
|
|
50
|
+
style: D,
|
|
51
|
+
className: t("kapi-cmdk", E),
|
|
52
|
+
"aria-modal": "true",
|
|
53
|
+
"aria-label": A,
|
|
54
|
+
...H,
|
|
55
|
+
...U,
|
|
56
|
+
children: [
|
|
57
|
+
/* @__PURE__ */ d("div", {
|
|
58
|
+
className: "kapi-cmdk__search",
|
|
59
|
+
children: [/* @__PURE__ */ u(_, {
|
|
60
|
+
size: 17,
|
|
61
|
+
strokeWidth: 2.2,
|
|
62
|
+
"aria-hidden": "true",
|
|
63
|
+
className: "kapi-cmdk__search-icon"
|
|
64
|
+
}), /* @__PURE__ */ u("input", {
|
|
65
|
+
"data-autofocus": !0,
|
|
66
|
+
type: "text",
|
|
67
|
+
className: "kapi-cmdk__input",
|
|
68
|
+
role: "combobox",
|
|
69
|
+
"aria-expanded": "true",
|
|
70
|
+
"aria-controls": P,
|
|
71
|
+
"aria-autocomplete": "list",
|
|
72
|
+
"aria-activedescendant": q ? F(q.id) : void 0,
|
|
73
|
+
autoComplete: "off",
|
|
74
|
+
spellCheck: !1,
|
|
75
|
+
placeholder: A,
|
|
76
|
+
"aria-label": A,
|
|
77
|
+
value: L,
|
|
78
|
+
onChange: (e) => {
|
|
79
|
+
R(e.target.value), B(0);
|
|
80
|
+
},
|
|
81
|
+
onKeyDown: Y
|
|
82
|
+
})]
|
|
83
|
+
}),
|
|
84
|
+
/* @__PURE__ */ d("div", {
|
|
85
|
+
ref: I,
|
|
86
|
+
id: P,
|
|
87
|
+
role: "listbox",
|
|
88
|
+
"aria-label": A,
|
|
89
|
+
className: "kapi-cmdk__list",
|
|
90
|
+
children: [W.map((e) => {
|
|
91
|
+
let t = `${N}-grp-${e.id}`;
|
|
92
|
+
return /* @__PURE__ */ d("div", {
|
|
93
|
+
role: "group",
|
|
94
|
+
className: "kapi-cmdk__group",
|
|
95
|
+
"aria-labelledby": e.label == null ? void 0 : t,
|
|
96
|
+
children: [e.label != null && /* @__PURE__ */ u("div", {
|
|
97
|
+
id: t,
|
|
98
|
+
className: "kapi-cmdk__group-label",
|
|
99
|
+
role: "presentation",
|
|
100
|
+
children: e.label
|
|
101
|
+
}), e.commands.map((e) => {
|
|
102
|
+
let t = q?.id === e.id;
|
|
103
|
+
return /* @__PURE__ */ d("div", {
|
|
104
|
+
id: F(e.id),
|
|
105
|
+
"data-cmd-id": e.id,
|
|
106
|
+
role: "option",
|
|
107
|
+
"aria-selected": t,
|
|
108
|
+
"aria-disabled": e.disabled || void 0,
|
|
109
|
+
className: [
|
|
110
|
+
"kapi-cmdk__item",
|
|
111
|
+
t && "kapi-cmdk__item--active",
|
|
112
|
+
e.disabled && "kapi-cmdk__item--disabled"
|
|
113
|
+
].filter(Boolean).join(" "),
|
|
114
|
+
onMouseDown: (e) => e.preventDefault(),
|
|
115
|
+
onMouseMove: () => {
|
|
116
|
+
let t = G.findIndex((t) => t.id === e.id);
|
|
117
|
+
t >= 0 && t !== K && B(t);
|
|
118
|
+
},
|
|
119
|
+
onClick: () => J(e),
|
|
120
|
+
children: [
|
|
121
|
+
e.icon && /* @__PURE__ */ u("span", {
|
|
122
|
+
className: "kapi-cmdk__icon",
|
|
123
|
+
"aria-hidden": "true",
|
|
124
|
+
children: e.icon
|
|
125
|
+
}),
|
|
126
|
+
/* @__PURE__ */ u("span", {
|
|
127
|
+
className: "kapi-cmdk__label",
|
|
128
|
+
children: e.label
|
|
129
|
+
}),
|
|
130
|
+
e.trailing && /* @__PURE__ */ u("span", {
|
|
131
|
+
className: "kapi-cmdk__trailing",
|
|
132
|
+
children: e.trailing
|
|
133
|
+
})
|
|
134
|
+
]
|
|
135
|
+
}, e.id);
|
|
136
|
+
})]
|
|
137
|
+
}, e.id);
|
|
138
|
+
}), W.length === 0 && /* @__PURE__ */ u("div", {
|
|
139
|
+
className: "kapi-cmdk__empty",
|
|
140
|
+
role: "status",
|
|
141
|
+
children: j
|
|
142
|
+
})]
|
|
143
|
+
}),
|
|
144
|
+
M && /* @__PURE__ */ u("div", {
|
|
145
|
+
className: "kapi-cmdk__foot",
|
|
146
|
+
children: M
|
|
147
|
+
})
|
|
148
|
+
]
|
|
149
|
+
}), X) : null;
|
|
150
|
+
}, S = ({ open: e, ...t }) => e ? /* @__PURE__ */ u(x, { ...t }) : null;
|
|
151
|
+
//#endregion
|
|
152
|
+
export { b as DEFAULT_COMMAND_PALETTE_LABELS, y as DEFAULT_FOOTER_HINT, S as KapiCommandPalette };
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { type ReactNode } from "react";
|
|
2
|
+
import "./KapiConfirm.css";
|
|
3
|
+
import type { KapiRootProps } from "../rootProps";
|
|
4
|
+
import type { KapiLabelsOverride } from "../labelsLogic";
|
|
5
|
+
export type KapiConfirmVariant = "danger" | "warning" | "success" | "info" | "question";
|
|
6
|
+
/**
|
|
7
|
+
* Textos fijos: cancelar, el confirmar por defecto de cada `variant` y el error genérico que
|
|
8
|
+
* muestra `KapiDialogHost` cuando un `onConfirm` asíncrono falla sin mensaje.
|
|
9
|
+
*/
|
|
10
|
+
export type KapiConfirmLabels = {
|
|
11
|
+
cancel: string;
|
|
12
|
+
error: string;
|
|
13
|
+
} & Record<KapiConfirmVariant, string>;
|
|
14
|
+
export declare const DEFAULT_CONFIRM_LABELS: KapiConfirmLabels;
|
|
15
|
+
/** `className`/`style`/`id` van a la tarjeta del modal. */
|
|
16
|
+
export type KapiConfirmProps = KapiRootProps & {
|
|
17
|
+
/** Muestra u oculta el diálogo (controlado); al cerrar anima la salida. */
|
|
18
|
+
open: boolean;
|
|
19
|
+
/** danger (default) · warning · success · info · question: define ícono, color y label por defecto. */
|
|
20
|
+
variant?: KapiConfirmVariant | undefined;
|
|
21
|
+
/** Pregunta principal (nombra al diálogo). */
|
|
22
|
+
title: string;
|
|
23
|
+
/** Detalle bajo el título (qué se va a hacer, consecuencias). */
|
|
24
|
+
message?: ReactNode | undefined;
|
|
25
|
+
/** Default según `variant` (`labels.<variant>`: Eliminar / Continuar / Aceptar / Aceptar / Sí). */
|
|
26
|
+
confirmLabel?: string | undefined;
|
|
27
|
+
/** Gana sobre `labels.cancel` ("Cancelar"). */
|
|
28
|
+
cancelLabel?: string | undefined;
|
|
29
|
+
/** Textos fijos (clave `confirm`). */
|
|
30
|
+
labels?: KapiLabelsOverride<KapiConfirmLabels> | undefined;
|
|
31
|
+
/**
|
|
32
|
+
* Acción en curso: spinner en el botón de confirmar, los dos botones deshabilitados y ningún
|
|
33
|
+
* cierre (Escape, fondo, X). Default false.
|
|
34
|
+
*/
|
|
35
|
+
loading?: boolean | undefined;
|
|
36
|
+
/** Error a mostrar dentro del diálogo (`role="alert"`), p. ej. el de una acción que falló. */
|
|
37
|
+
error?: ReactNode | undefined;
|
|
38
|
+
/** Click en el botón de confirmar. */
|
|
39
|
+
onConfirm: () => void;
|
|
40
|
+
/** Pedido de cierre: Cancelar, X, Escape o click en el fondo. El padre pone `open={false}`. */
|
|
41
|
+
onClose: () => void;
|
|
42
|
+
};
|
|
43
|
+
/**
|
|
44
|
+
* Confirmación (envuelve a KapiModal `sm` sin header). Controlada:
|
|
45
|
+
* `open` + `onConfirm` + `onClose`. El foco inicial cae en "Cancelar". `loading` y `error`
|
|
46
|
+
* representan una acción asíncrona en curso o fallida (los usa `KapiDialogHost`).
|
|
47
|
+
*/
|
|
48
|
+
export declare const KapiConfirm: ({ open, variant, title, message, confirmLabel, cancelLabel, labels, loading, error, onConfirm, onClose, className, style, id }: KapiConfirmProps) => import("react").JSX.Element;
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { KapiButton as e } from "../inputs/KapiButton.js";
|
|
3
|
+
import { useLabels as t } from "../locale/KapiLocaleProvider.js";
|
|
4
|
+
import { KapiModal as n } from "./KapiModal.js";
|
|
5
|
+
/* empty css */
|
|
6
|
+
import { Fragment as r, jsx as i, jsxs as a } from "react/jsx-runtime";
|
|
7
|
+
import { useId as o } from "react";
|
|
8
|
+
import { AlertTriangle as s, CheckCircle2 as c, CircleHelp as l, Info as u, Trash2 as d } from "lucide-react";
|
|
9
|
+
//#region src/components/overlays/KapiConfirm.tsx
|
|
10
|
+
var f = {
|
|
11
|
+
danger: {
|
|
12
|
+
Icon: d,
|
|
13
|
+
button: "danger"
|
|
14
|
+
},
|
|
15
|
+
warning: {
|
|
16
|
+
Icon: s,
|
|
17
|
+
button: "primary"
|
|
18
|
+
},
|
|
19
|
+
success: {
|
|
20
|
+
Icon: c,
|
|
21
|
+
button: "primary"
|
|
22
|
+
},
|
|
23
|
+
info: {
|
|
24
|
+
Icon: u,
|
|
25
|
+
button: "primary"
|
|
26
|
+
},
|
|
27
|
+
question: {
|
|
28
|
+
Icon: l,
|
|
29
|
+
button: "primary"
|
|
30
|
+
}
|
|
31
|
+
}, p = {
|
|
32
|
+
cancel: "Cancelar",
|
|
33
|
+
danger: "Eliminar",
|
|
34
|
+
warning: "Continuar",
|
|
35
|
+
success: "Aceptar",
|
|
36
|
+
info: "Aceptar",
|
|
37
|
+
question: "Sí",
|
|
38
|
+
error: "No se pudo completar la acción"
|
|
39
|
+
}, m = ({ open: s, variant: c = "danger", title: l, message: u, confirmLabel: d, cancelLabel: m, labels: h, loading: g = !1, error: _, onConfirm: v, onClose: y, className: b, style: x, id: S }) => {
|
|
40
|
+
let C = o(), w = t("confirm", p, h), T = c in f ? c : "danger", { Icon: E, button: D } = f[T];
|
|
41
|
+
return /* @__PURE__ */ a(n, {
|
|
42
|
+
className: b,
|
|
43
|
+
style: x,
|
|
44
|
+
id: S,
|
|
45
|
+
size: "sm",
|
|
46
|
+
hideHeader: !0,
|
|
47
|
+
"aria-labelledby": C,
|
|
48
|
+
open: s,
|
|
49
|
+
onClose: g ? () => {} : y,
|
|
50
|
+
closeOnEscape: !g,
|
|
51
|
+
closeOnBackdrop: !g,
|
|
52
|
+
footer: /* @__PURE__ */ a(r, { children: [/* @__PURE__ */ i(e, {
|
|
53
|
+
"data-autofocus": !0,
|
|
54
|
+
disabled: g,
|
|
55
|
+
onClick: y,
|
|
56
|
+
children: m ?? w.cancel
|
|
57
|
+
}), /* @__PURE__ */ i(e, {
|
|
58
|
+
variant: D,
|
|
59
|
+
disabled: g,
|
|
60
|
+
"aria-busy": g || void 0,
|
|
61
|
+
icon: g ? /* @__PURE__ */ i("span", {
|
|
62
|
+
className: "kapi-spinner kapi-confirm__spinner",
|
|
63
|
+
"aria-hidden": "true"
|
|
64
|
+
}) : void 0,
|
|
65
|
+
onClick: v,
|
|
66
|
+
children: d ?? w[T]
|
|
67
|
+
})] }),
|
|
68
|
+
children: [
|
|
69
|
+
/* @__PURE__ */ i("div", {
|
|
70
|
+
className: `kapi-confirm__icon kapi-confirm__icon--${T}`,
|
|
71
|
+
children: /* @__PURE__ */ i(E, {
|
|
72
|
+
size: 28,
|
|
73
|
+
strokeWidth: 2
|
|
74
|
+
})
|
|
75
|
+
}),
|
|
76
|
+
/* @__PURE__ */ i("div", {
|
|
77
|
+
id: C,
|
|
78
|
+
className: "kapi-confirm__title",
|
|
79
|
+
children: l
|
|
80
|
+
}),
|
|
81
|
+
u && /* @__PURE__ */ i("div", {
|
|
82
|
+
className: "kapi-confirm__msg",
|
|
83
|
+
children: u
|
|
84
|
+
}),
|
|
85
|
+
_ != null && _ !== !1 && /* @__PURE__ */ i("div", {
|
|
86
|
+
className: "kapi-confirm__error",
|
|
87
|
+
role: "alert",
|
|
88
|
+
children: _
|
|
89
|
+
})
|
|
90
|
+
]
|
|
91
|
+
});
|
|
92
|
+
};
|
|
93
|
+
//#endregion
|
|
94
|
+
export { p as DEFAULT_CONFIRM_LABELS, m as KapiConfirm };
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { type ReactNode } from "react";
|
|
2
|
+
import type { KapiLabelsOverride } from "../labelsLogic";
|
|
3
|
+
import { type KapiRootProps } from "../rootProps";
|
|
4
|
+
import "./overlays.css";
|
|
5
|
+
/** Ítem de un menú de acciones (KapiContextMenu, KapiMenuButton, menús de KapiTable y KapiShell). */
|
|
6
|
+
export type KapiMenuItem = {
|
|
7
|
+
sep: true;
|
|
8
|
+
} | {
|
|
9
|
+
sep?: false;
|
|
10
|
+
header: string;
|
|
11
|
+
} | {
|
|
12
|
+
sep?: false | undefined;
|
|
13
|
+
label: string;
|
|
14
|
+
icon?: ReactNode | undefined;
|
|
15
|
+
onClick?: (() => void) | undefined;
|
|
16
|
+
danger?: boolean | undefined;
|
|
17
|
+
/** Atenuado y no ejecutable: anuncia `aria-disabled`, ignora click/Enter y las flechas lo saltean. */
|
|
18
|
+
disabled?: boolean | undefined;
|
|
19
|
+
};
|
|
20
|
+
/** `className`/`style`/`id` van al menú (`role="menu"`); la posición calculada gana sobre `style`. */
|
|
21
|
+
export type KapiContextMenuProps = KapiRootProps & {
|
|
22
|
+
/** Muestra u oculta el menú (controlado). Con `false` no se monta nada. */
|
|
23
|
+
open: boolean;
|
|
24
|
+
/** Posición (clientX/clientY) donde se abrió; se clampea al viewport. */
|
|
25
|
+
x: number;
|
|
26
|
+
/** Coordenada vertical (clientY) donde se abrió; se clampea al viewport. */
|
|
27
|
+
y: number;
|
|
28
|
+
/** Ítems del menú, en orden (acciones y separadores). */
|
|
29
|
+
items: KapiMenuItem[];
|
|
30
|
+
/** Pedido de cierre (Escape, click afuera o tras elegir un ítem). El padre pone `open={false}`. */
|
|
31
|
+
onClose: () => void;
|
|
32
|
+
/** Nombre accesible del menú (`aria-label`). Sin la prop usa `labels.menu`. */
|
|
33
|
+
"aria-label"?: string | undefined;
|
|
34
|
+
/** Textos fijos (clave `contextMenu`). */
|
|
35
|
+
labels?: KapiLabelsOverride<KapiContextMenuLabels> | undefined;
|
|
36
|
+
};
|
|
37
|
+
export type KapiContextMenuLabels = {
|
|
38
|
+
menu: string;
|
|
39
|
+
};
|
|
40
|
+
export declare const DEFAULT_CONTEXT_MENU_LABELS: KapiContextMenuLabels;
|
|
41
|
+
/** Clases de un ítem accionable (compartidas por KapiContextMenu y KapiMenuButton). */
|
|
42
|
+
export declare const menuItemClass: (item: {
|
|
43
|
+
danger?: boolean | undefined;
|
|
44
|
+
disabled?: boolean | undefined;
|
|
45
|
+
}) => string;
|
|
46
|
+
/**
|
|
47
|
+
* Menú contextual custom. Se abre con doble click derecho (ver
|
|
48
|
+
* `useGlobalRightClick` / `useDragScroll({ onMenu })`). Controlado con `open` + `onClose`: cada
|
|
49
|
+
* apertura monta el menú de cero (el foco va al primer ítem y vuelve al cerrar).
|
|
50
|
+
*/
|
|
51
|
+
export declare const KapiContextMenu: ({ open, ...props }: KapiContextMenuProps) => import("react").JSX.Element | null;
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useLabels as e } from "../locale/KapiLocaleProvider.js";
|
|
3
|
+
import { usePlacement as t } from "../../hooks/usePlacement.js";
|
|
4
|
+
import { joinClasses as n } from "../rootProps.js";
|
|
5
|
+
/* empty css */
|
|
6
|
+
import { POINT_MENU_PLACEMENT as r } from "../../hooks/rightClick.js";
|
|
7
|
+
import { focusedMenuIndex as i, initialMenuFocus as a, menuKeyIntent as o, nextEnabledIndex as s } from "./menuKeyboardLogic.js";
|
|
8
|
+
import { actionableIndexes as c, estimateMenuHeight as l } from "./menuButtonLogic.js";
|
|
9
|
+
import { Fragment as u, jsx as d, jsxs as f } from "react/jsx-runtime";
|
|
10
|
+
import { useEffect as p, useLayoutEffect as m, useRef as h } from "react";
|
|
11
|
+
//#region src/components/overlays/KapiContextMenu.tsx
|
|
12
|
+
var g = { menu: "Menú contextual" }, _ = (e) => n("kapi-ctxmenu__item", e.danger && "is-danger", e.disabled && "is-disabled"), v = 210, y = ({ open: e, ...t }) => e ? /* @__PURE__ */ d(b, { ...t }) : null, b = ({ x: y, y: b, items: x, onClose: S, className: C, style: w, id: T, labels: E, "aria-label": D }) => {
|
|
13
|
+
let O = e("contextMenu", g, E), k = h(null), A = c(x), j = (e) => {
|
|
14
|
+
k.current?.querySelector(`[data-menu-index="${e}"]`)?.focus();
|
|
15
|
+
};
|
|
16
|
+
p(() => {
|
|
17
|
+
let e = document.activeElement instanceof HTMLElement ? document.activeElement : null, t = k.current;
|
|
18
|
+
return j(a(A)), () => {
|
|
19
|
+
let n = document.activeElement;
|
|
20
|
+
(!n || n === document.body || (t?.contains(n) ?? !1)) && e?.isConnected && e.focus();
|
|
21
|
+
};
|
|
22
|
+
}, []);
|
|
23
|
+
let M = (e) => {
|
|
24
|
+
let t = o(e.key);
|
|
25
|
+
t.kind === "move" ? (e.preventDefault(), j(s(i(document.activeElement), t.dir, A))) : t.kind === "close" && (t.returnFocus && (e.preventDefault(), e.stopPropagation()), S());
|
|
26
|
+
}, { placement: N, update: P } = t({
|
|
27
|
+
open: !0,
|
|
28
|
+
anchor: () => ({
|
|
29
|
+
x: y,
|
|
30
|
+
y: b
|
|
31
|
+
}),
|
|
32
|
+
floatingRef: k,
|
|
33
|
+
estimate: {
|
|
34
|
+
width: v,
|
|
35
|
+
height: l(x)
|
|
36
|
+
},
|
|
37
|
+
...r,
|
|
38
|
+
hideUntilPlaced: !1
|
|
39
|
+
});
|
|
40
|
+
m(() => {
|
|
41
|
+
P();
|
|
42
|
+
}, [
|
|
43
|
+
y,
|
|
44
|
+
b,
|
|
45
|
+
x.length,
|
|
46
|
+
P
|
|
47
|
+
]);
|
|
48
|
+
let F = N?.left ?? y, I = N?.top ?? b;
|
|
49
|
+
return /* @__PURE__ */ f(u, { children: [/* @__PURE__ */ d("div", {
|
|
50
|
+
className: "kapi-ctxmenu__backdrop",
|
|
51
|
+
onMouseDown: S,
|
|
52
|
+
onContextMenu: (e) => {
|
|
53
|
+
e.preventDefault(), S();
|
|
54
|
+
}
|
|
55
|
+
}), /* @__PURE__ */ d("div", {
|
|
56
|
+
id: T,
|
|
57
|
+
className: n("kapi-ctxmenu", C),
|
|
58
|
+
style: {
|
|
59
|
+
...w,
|
|
60
|
+
left: F,
|
|
61
|
+
top: I,
|
|
62
|
+
width: v
|
|
63
|
+
},
|
|
64
|
+
role: "menu",
|
|
65
|
+
"aria-label": D ?? O.menu,
|
|
66
|
+
ref: k,
|
|
67
|
+
onKeyDown: M,
|
|
68
|
+
children: x.map((e, t) => e.sep ? /* @__PURE__ */ d("div", {
|
|
69
|
+
role: "separator",
|
|
70
|
+
className: "kapi-ctxmenu__sep"
|
|
71
|
+
}, `s${t}`) : "header" in e ? /* @__PURE__ */ d("div", {
|
|
72
|
+
role: "presentation",
|
|
73
|
+
className: "kapi-ctxmenu__header",
|
|
74
|
+
children: e.header
|
|
75
|
+
}, `h${t}`) : /* @__PURE__ */ f("button", {
|
|
76
|
+
type: "button",
|
|
77
|
+
role: "menuitem",
|
|
78
|
+
tabIndex: -1,
|
|
79
|
+
"data-menu-index": t,
|
|
80
|
+
"aria-disabled": e.disabled ? "true" : void 0,
|
|
81
|
+
className: _(e),
|
|
82
|
+
onClick: () => {
|
|
83
|
+
e.disabled || (e.onClick?.(), S());
|
|
84
|
+
},
|
|
85
|
+
children: [e.icon, e.label]
|
|
86
|
+
}, `m${t}`))
|
|
87
|
+
})] });
|
|
88
|
+
};
|
|
89
|
+
//#endregion
|
|
90
|
+
export { g as DEFAULT_CONTEXT_MENU_LABELS, y as KapiContextMenu, _ as menuItemClass };
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import "./KapiConfirm.css";
|
|
2
|
+
import "./KapiModal.css";
|
|
3
|
+
import { type KapiDialogStore } from "./dialogStore";
|
|
4
|
+
import type { KapiLabelsOverride } from "../labelsLogic";
|
|
5
|
+
/** Textos fijos del host: botón de los avisos y mensaje de carga por defecto. */
|
|
6
|
+
export type KapiDialogLabels = {
|
|
7
|
+
accept: string;
|
|
8
|
+
loading: string;
|
|
9
|
+
};
|
|
10
|
+
export declare const DEFAULT_DIALOG_LABELS: KapiDialogLabels;
|
|
11
|
+
export type KapiDialogHostProps = {
|
|
12
|
+
/** Textos fijos (clave `dialog`). Las confirmaciones usan la clave `confirm`. */
|
|
13
|
+
labels?: KapiLabelsOverride<KapiDialogLabels> | undefined;
|
|
14
|
+
/** Store que atiende (default: el global de `kapiConfirm`/`kapiAlert`/`kapiLoading`). */
|
|
15
|
+
store?: KapiDialogStore;
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* Montalo una vez en la app: muestra los diálogos imperativos (`kapiConfirm`, `kapiAlert`) de a
|
|
19
|
+
* uno, en orden de llegada, y la capa de carga de `kapiLoading` mientras quede alguna abierta.
|
|
20
|
+
* Abrir un diálogo cierra las cargas de `kapiLoading()`; las de `kapiLoading.run` se ocultan hasta
|
|
21
|
+
* que se vacía la cola. Los pedidos hechos antes de montarlo esperan en la cola.
|
|
22
|
+
*/
|
|
23
|
+
export declare const KapiDialogHost: ({ labels, store }: KapiDialogHostProps) => import("react").JSX.Element;
|