@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,68 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { resolveKapiRoot as e } from "../../hooks/kapiRoot.js";
|
|
3
|
+
import { isOutsidePopover as t } from "./popoverLogic.js";
|
|
4
|
+
import { usePlacement as n } from "../../hooks/usePlacement.js";
|
|
5
|
+
import { KapiOverlayPortal as r } from "./overlayPortal.js";
|
|
6
|
+
import { useExitPresence as i } from "./useExitPresence.js";
|
|
7
|
+
/* empty css */
|
|
8
|
+
import { jsx as a } from "react/jsx-runtime";
|
|
9
|
+
import { useEffect as o, useLayoutEffect as s, useRef as c, useState as l } from "react";
|
|
10
|
+
//#region src/components/overlays/KapiPopover.tsx
|
|
11
|
+
function u({ open: u, anchorRef: d, onClose: f, side: p = "bottom", align: m = "start", offset: h = 6, margin: g = 8, matchAnchorWidth: _ = !1, role: v = "dialog", "aria-label": y, id: b, className: x = "", style: S, closeOnEscape: C = !0, closeOnOutside: w = !0, restoreFocus: T = !0, children: E }) {
|
|
12
|
+
let D = c(null), [O, k] = l(null), A = c(f);
|
|
13
|
+
o(() => {
|
|
14
|
+
A.current = f;
|
|
15
|
+
});
|
|
16
|
+
let { present: j, closing: M } = i(u, D);
|
|
17
|
+
s(() => {
|
|
18
|
+
k(j ? e(d.current) : null);
|
|
19
|
+
}, [j, d]);
|
|
20
|
+
let { placement: N, style: P } = n({
|
|
21
|
+
open: j,
|
|
22
|
+
enabled: !!O,
|
|
23
|
+
anchor: d,
|
|
24
|
+
floatingRef: D,
|
|
25
|
+
side: p,
|
|
26
|
+
align: m,
|
|
27
|
+
offset: h,
|
|
28
|
+
margin: g,
|
|
29
|
+
width: _ ? "min-anchor" : "content"
|
|
30
|
+
});
|
|
31
|
+
return o(() => {
|
|
32
|
+
if (!u) return;
|
|
33
|
+
let e = (e) => {
|
|
34
|
+
C && e.key === "Escape" && !e.defaultPrevented && (e.preventDefault(), A.current?.(), T && d.current?.focus());
|
|
35
|
+
}, n = (e) => {
|
|
36
|
+
w && t(e.target, [D.current, d.current]) && A.current?.();
|
|
37
|
+
};
|
|
38
|
+
return document.addEventListener("keydown", e), document.addEventListener("pointerdown", n, !0), () => {
|
|
39
|
+
document.removeEventListener("keydown", e), document.removeEventListener("pointerdown", n, !0);
|
|
40
|
+
};
|
|
41
|
+
}, [
|
|
42
|
+
u,
|
|
43
|
+
C,
|
|
44
|
+
w,
|
|
45
|
+
T,
|
|
46
|
+
d
|
|
47
|
+
]), j ? /* @__PURE__ */ a(r, {
|
|
48
|
+
root: O,
|
|
49
|
+
children: /* @__PURE__ */ a("div", {
|
|
50
|
+
ref: D,
|
|
51
|
+
id: b,
|
|
52
|
+
role: v,
|
|
53
|
+
"aria-label": y,
|
|
54
|
+
tabIndex: -1,
|
|
55
|
+
className: `kapi-popover${x ? ` ${x}` : ""}`,
|
|
56
|
+
"data-side": N?.side ?? p,
|
|
57
|
+
"data-align": m,
|
|
58
|
+
"data-closing": M || void 0,
|
|
59
|
+
style: {
|
|
60
|
+
...S,
|
|
61
|
+
...P
|
|
62
|
+
},
|
|
63
|
+
children: E
|
|
64
|
+
})
|
|
65
|
+
}) : null;
|
|
66
|
+
}
|
|
67
|
+
//#endregion
|
|
68
|
+
export { u as KapiPopover };
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { type ReactNode } from "react";
|
|
2
|
+
import "./overlays.css";
|
|
3
|
+
import { type KapiRootProps } from "../rootProps";
|
|
4
|
+
import type { KapiLabelsOverride } from "../labelsLogic";
|
|
5
|
+
/** `className`/`style`/`id` van al contenedor que se transforma; abierto, `width`/`height` ganan sobre `style`. */
|
|
6
|
+
export type KapiShapeSheetProps = KapiRootProps & {
|
|
7
|
+
/** Título del panel abierto. */
|
|
8
|
+
title: string;
|
|
9
|
+
/** Contenido del panel. */
|
|
10
|
+
children: ReactNode;
|
|
11
|
+
/** Ancho del panel abierto (px). */
|
|
12
|
+
width?: number;
|
|
13
|
+
/** Alto del panel abierto (px). */
|
|
14
|
+
height?: number;
|
|
15
|
+
/** aria-label del FAB. Gana sobre `labels.open` ("Abrir"). */
|
|
16
|
+
label?: string;
|
|
17
|
+
/** Textos fijos (botón cerrar). */
|
|
18
|
+
labels?: KapiLabelsOverride<KapiShapeSheetLabels> | undefined;
|
|
19
|
+
};
|
|
20
|
+
/** ¿La tecla cierra el panel? */
|
|
21
|
+
export declare const isDismissKey: (key: string) => boolean;
|
|
22
|
+
/** ¿El target del evento cae fuera de `root`? (sin root o sin target no hay nada que cerrar). */
|
|
23
|
+
export declare const isOutsideTarget: (root: Node | null, target: EventTarget | null) => boolean;
|
|
24
|
+
/**
|
|
25
|
+
* "Container transform": el FAB circular se TRANSFORMA en panel (tamaño + radio + color).
|
|
26
|
+
* Cierra con el botón, con click fuera y con Escape. El panel es un diálogo no modal: al abrir el foco
|
|
27
|
+
* va al primer enfocable del contenido (o al panel) y al cerrar con el botón o Escape vuelve al FAB.
|
|
28
|
+
*/
|
|
29
|
+
export type KapiShapeSheetLabels = {
|
|
30
|
+
close: string;
|
|
31
|
+
open: string;
|
|
32
|
+
};
|
|
33
|
+
export declare const DEFAULT_SHAPE_SHEET_LABELS: KapiShapeSheetLabels;
|
|
34
|
+
export declare const KapiShapeSheet: ({ title, children, width, height, label, labels, className, style, id }: KapiShapeSheetProps) => import("react").JSX.Element;
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useLabels as e } from "../locale/KapiLocaleProvider.js";
|
|
3
|
+
import { joinClasses as t } from "../rootProps.js";
|
|
4
|
+
/* empty css */
|
|
5
|
+
import { focusableWithin as n } from "../../hooks/focusLogic.js";
|
|
6
|
+
import { jsx as r, jsxs as i } from "react/jsx-runtime";
|
|
7
|
+
import { useEffect as a, useId as o, useRef as s, useState as c } from "react";
|
|
8
|
+
import { Minus as l, Plus as u } from "lucide-react";
|
|
9
|
+
//#region src/components/overlays/KapiShapeSheet.tsx
|
|
10
|
+
var d = (e) => e === "Escape", f = (e, t) => e !== null && t instanceof Node && !e.contains(t), p = {
|
|
11
|
+
close: "Cerrar",
|
|
12
|
+
open: "Abrir"
|
|
13
|
+
}, m = ({ title: m, children: h, width: g = 300, height: _ = 250, label: v, labels: y, className: b, style: x, id: S }) => {
|
|
14
|
+
let C = e("shapeSheet", p, y), w = s(null), T = s(null), E = s(null), D = s(null), O = o(), [k, A] = c(!1), j = s(!1), M = () => {
|
|
15
|
+
j.current = !0, A(!1);
|
|
16
|
+
};
|
|
17
|
+
return a(() => {
|
|
18
|
+
k ? (n(D.current)[0] ?? E.current)?.focus() : j.current && (j.current = !1, T.current?.focus());
|
|
19
|
+
}, [k]), a(() => {
|
|
20
|
+
if (!k) return;
|
|
21
|
+
let e = (e) => {
|
|
22
|
+
f(w.current, e.target) && A(!1);
|
|
23
|
+
}, t = (e) => {
|
|
24
|
+
d(e.key) && (j.current = !0, A(!1));
|
|
25
|
+
};
|
|
26
|
+
return document.addEventListener("pointerdown", e), document.addEventListener("keydown", t), () => {
|
|
27
|
+
document.removeEventListener("pointerdown", e), document.removeEventListener("keydown", t);
|
|
28
|
+
};
|
|
29
|
+
}, [k]), /* @__PURE__ */ i("div", {
|
|
30
|
+
ref: w,
|
|
31
|
+
id: S,
|
|
32
|
+
className: t("kapi-shape", k && "kapi-shape--open", b),
|
|
33
|
+
style: k ? {
|
|
34
|
+
...x,
|
|
35
|
+
width: g,
|
|
36
|
+
height: _
|
|
37
|
+
} : x,
|
|
38
|
+
children: [/* @__PURE__ */ r("button", {
|
|
39
|
+
ref: T,
|
|
40
|
+
type: "button",
|
|
41
|
+
className: "kapi-shape__fab",
|
|
42
|
+
inert: k,
|
|
43
|
+
onClick: () => A(!0),
|
|
44
|
+
"aria-expanded": k,
|
|
45
|
+
"aria-label": v ?? C.open,
|
|
46
|
+
children: /* @__PURE__ */ r(u, {
|
|
47
|
+
size: 22,
|
|
48
|
+
strokeWidth: 2.4
|
|
49
|
+
})
|
|
50
|
+
}), /* @__PURE__ */ i("div", {
|
|
51
|
+
ref: E,
|
|
52
|
+
className: "kapi-shape__sheet",
|
|
53
|
+
inert: !k,
|
|
54
|
+
role: "dialog",
|
|
55
|
+
"aria-labelledby": O,
|
|
56
|
+
tabIndex: -1,
|
|
57
|
+
children: [/* @__PURE__ */ i("div", {
|
|
58
|
+
className: "kapi-shape__head",
|
|
59
|
+
children: [/* @__PURE__ */ r("span", {
|
|
60
|
+
className: "kapi-shape__title",
|
|
61
|
+
id: O,
|
|
62
|
+
children: m
|
|
63
|
+
}), /* @__PURE__ */ r("button", {
|
|
64
|
+
type: "button",
|
|
65
|
+
className: "kapi-shape__close",
|
|
66
|
+
onClick: M,
|
|
67
|
+
"aria-label": C.close,
|
|
68
|
+
children: /* @__PURE__ */ r(l, {
|
|
69
|
+
size: 16,
|
|
70
|
+
strokeWidth: 2.4
|
|
71
|
+
})
|
|
72
|
+
})]
|
|
73
|
+
}), /* @__PURE__ */ r("div", {
|
|
74
|
+
className: "kapi-shape__body",
|
|
75
|
+
ref: D,
|
|
76
|
+
children: h
|
|
77
|
+
})]
|
|
78
|
+
})]
|
|
79
|
+
});
|
|
80
|
+
};
|
|
81
|
+
//#endregion
|
|
82
|
+
export { p as DEFAULT_SHAPE_SHEET_LABELS, m as KapiShapeSheet, d as isDismissKey, f as isOutsideTarget };
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { type ReactNode } from "react";
|
|
2
|
+
import type { KapiModalProps } from "./KapiModal";
|
|
3
|
+
import { type KapiSplitModalSide } from "./splitModalLayout";
|
|
4
|
+
import "./KapiModal.css";
|
|
5
|
+
import "./KapiSplitModal.css";
|
|
6
|
+
import type { KapiLabelsOverride } from "../labelsLogic";
|
|
7
|
+
export type KapiSplitModalAside = {
|
|
8
|
+
/** Controlled visibility of the aside. */
|
|
9
|
+
open: boolean;
|
|
10
|
+
children: ReactNode;
|
|
11
|
+
title?: ReactNode;
|
|
12
|
+
footer?: ReactNode;
|
|
13
|
+
/** Which side of the main card the aside docks to. Default "left". */
|
|
14
|
+
side?: KapiSplitModalSide;
|
|
15
|
+
/** Aside width (number → px, string → any CSS length). Default 380. */
|
|
16
|
+
width?: number | string;
|
|
17
|
+
/** X on the aside header: closes just the aside (the parent flips `open`). */
|
|
18
|
+
onClose?: () => void;
|
|
19
|
+
closeLabel?: string;
|
|
20
|
+
};
|
|
21
|
+
/** `close` es la X de la tarjeta principal; `closePanel`, la del panel lateral sin `closeLabel`. */
|
|
22
|
+
export type KapiSplitModalLabels = {
|
|
23
|
+
close: string;
|
|
24
|
+
closePanel: string;
|
|
25
|
+
};
|
|
26
|
+
export declare const DEFAULT_SPLIT_MODAL_LABELS: KapiSplitModalLabels;
|
|
27
|
+
export type KapiSplitModalProps = Omit<KapiModalProps, "labels"> & {
|
|
28
|
+
/** Panel lateral acoplado a la tarjeta principal (visibilidad, contenido, lado y ancho). */
|
|
29
|
+
aside?: KapiSplitModalAside;
|
|
30
|
+
/** Textos fijos (clave `splitModal`): la X principal (sin `closeLabel`) y la del panel lateral. */
|
|
31
|
+
labels?: KapiLabelsOverride<KapiSplitModalLabels> | undefined;
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* Modal con un panel lateral opcional ("Desglose"). Con `aside` ausente o
|
|
35
|
+
* `aside.open === false` es idéntico a KapiModal; con `aside.open` muestra ambas
|
|
36
|
+
* tarjetas juntas, centradas, cada una con su propio scroll. El botón que abre el
|
|
37
|
+
* aside lo pone el consumidor (p. ej. en `footer`). En pantallas angostas (<900px)
|
|
38
|
+
* las tarjetas se apilan en columna.
|
|
39
|
+
* `className`/`style`/`id` van a la tarjeta principal (como en `KapiModal`).
|
|
40
|
+
*/
|
|
41
|
+
export declare const KapiSplitModal: ({ open, ...props }: KapiSplitModalProps) => import("react").JSX.Element | null;
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useLabels as e } from "../locale/KapiLocaleProvider.js";
|
|
3
|
+
import { dialogNameProps as t, modalClasses as n } from "./dialogUtils.js";
|
|
4
|
+
import { useExitPresence as r } from "./useExitPresence.js";
|
|
5
|
+
import { getPortalRoot as i, useBackdropClose as a, useNativeDialog as o } from "./useNativeDialog.js";
|
|
6
|
+
/* empty css */
|
|
7
|
+
import { resolveAsideWidth as s, resolvePanelOrder as c, splitModalClasses as l } from "./splitModalLayout.js";
|
|
8
|
+
/* empty css */
|
|
9
|
+
import { jsx as u, jsxs as d } from "react/jsx-runtime";
|
|
10
|
+
import { useId as f, useRef as p } from "react";
|
|
11
|
+
import { X as m } from "lucide-react";
|
|
12
|
+
import { createPortal as h } from "react-dom";
|
|
13
|
+
//#region src/components/overlays/KapiSplitModal.tsx
|
|
14
|
+
var g = {
|
|
15
|
+
close: "Cerrar",
|
|
16
|
+
closePanel: "Cerrar panel"
|
|
17
|
+
}, _ = ({ open: e, ...t }) => {
|
|
18
|
+
let n = p(null), { present: i, closing: a } = r(e, n);
|
|
19
|
+
return i ? /* @__PURE__ */ u(y, {
|
|
20
|
+
...t,
|
|
21
|
+
dialogRef: n,
|
|
22
|
+
closing: a
|
|
23
|
+
}) : null;
|
|
24
|
+
}, v = () => {}, y = ({ title: r, subtitle: p, onClose: _, children: y, footer: b, size: x = "md", hideHeader: S = !1, className: C = "", style: w, id: T, closeOnBackdrop: E = !0, closeOnEscape: D = !0, closeLabel: O, labels: k, "aria-label": A, "aria-labelledby": j, aside: M, dialogRef: N, closing: P }) => {
|
|
25
|
+
let F = P ? v : _, I = f(), L = f(), { ref: R, dialogProps: z } = o({ onRequestClose: D ? F : void 0 }), B = a(E ? F : void 0), V = e("splitModal", g, k), H = O ?? V.close, U = i();
|
|
26
|
+
if (!U) return null;
|
|
27
|
+
let W = M?.open === !0, G = M?.side ?? "left", K = /* @__PURE__ */ d("div", {
|
|
28
|
+
id: T,
|
|
29
|
+
className: n(x, C),
|
|
30
|
+
style: w,
|
|
31
|
+
children: [
|
|
32
|
+
S ? /* @__PURE__ */ u("button", {
|
|
33
|
+
type: "button",
|
|
34
|
+
className: "kapi-modal__x kapi-modal__x--float",
|
|
35
|
+
onClick: F,
|
|
36
|
+
"aria-label": H,
|
|
37
|
+
children: /* @__PURE__ */ u(m, {
|
|
38
|
+
size: 17,
|
|
39
|
+
strokeWidth: 2.2
|
|
40
|
+
})
|
|
41
|
+
}) : /* @__PURE__ */ d("div", {
|
|
42
|
+
className: "kapi-modal__head",
|
|
43
|
+
children: [/* @__PURE__ */ d("div", { children: [/* @__PURE__ */ u("div", {
|
|
44
|
+
id: I,
|
|
45
|
+
className: "kapi-modal__title",
|
|
46
|
+
children: r
|
|
47
|
+
}), p && /* @__PURE__ */ u("div", {
|
|
48
|
+
className: "kapi-modal__sub",
|
|
49
|
+
children: p
|
|
50
|
+
})] }), /* @__PURE__ */ u("button", {
|
|
51
|
+
type: "button",
|
|
52
|
+
className: "kapi-modal__x",
|
|
53
|
+
onClick: F,
|
|
54
|
+
"aria-label": H,
|
|
55
|
+
children: /* @__PURE__ */ u(m, {
|
|
56
|
+
size: 17,
|
|
57
|
+
strokeWidth: 2.2
|
|
58
|
+
})
|
|
59
|
+
})]
|
|
60
|
+
}),
|
|
61
|
+
/* @__PURE__ */ u("div", {
|
|
62
|
+
className: "kapi-modal__body",
|
|
63
|
+
children: y
|
|
64
|
+
}),
|
|
65
|
+
b && /* @__PURE__ */ u("div", {
|
|
66
|
+
className: "kapi-modal__foot",
|
|
67
|
+
children: b
|
|
68
|
+
})
|
|
69
|
+
]
|
|
70
|
+
}, "main"), q = M && W ? /* @__PURE__ */ d("aside", {
|
|
71
|
+
className: "kapi-splitmodal__aside",
|
|
72
|
+
style: { "--kapi-split-aside-w": s(M.width) },
|
|
73
|
+
"aria-labelledby": M.title ? L : void 0,
|
|
74
|
+
children: [
|
|
75
|
+
(M.title || M.onClose) && /* @__PURE__ */ d("div", {
|
|
76
|
+
className: "kapi-modal__head",
|
|
77
|
+
children: [/* @__PURE__ */ u("div", {
|
|
78
|
+
id: L,
|
|
79
|
+
className: "kapi-modal__title",
|
|
80
|
+
children: M.title
|
|
81
|
+
}), M.onClose && /* @__PURE__ */ u("button", {
|
|
82
|
+
type: "button",
|
|
83
|
+
className: "kapi-modal__x",
|
|
84
|
+
onClick: M.onClose,
|
|
85
|
+
"aria-label": M.closeLabel ?? V.closePanel,
|
|
86
|
+
children: /* @__PURE__ */ u(m, {
|
|
87
|
+
size: 17,
|
|
88
|
+
strokeWidth: 2.2
|
|
89
|
+
})
|
|
90
|
+
})]
|
|
91
|
+
}),
|
|
92
|
+
/* @__PURE__ */ u("div", {
|
|
93
|
+
className: "kapi-modal__body",
|
|
94
|
+
children: M.children
|
|
95
|
+
}),
|
|
96
|
+
M.footer && /* @__PURE__ */ u("div", {
|
|
97
|
+
className: "kapi-modal__foot",
|
|
98
|
+
children: M.footer
|
|
99
|
+
})
|
|
100
|
+
]
|
|
101
|
+
}, "aside") : null, J = c(G).map((e) => e === "main" ? K : q).filter((e) => e !== null);
|
|
102
|
+
return h(/* @__PURE__ */ u("dialog", {
|
|
103
|
+
ref: (e) => {
|
|
104
|
+
R.current = e, N.current = e;
|
|
105
|
+
},
|
|
106
|
+
className: "kapi-modal-overlay kapi-modal-dialog",
|
|
107
|
+
"data-closing": P || void 0,
|
|
108
|
+
"aria-modal": "true",
|
|
109
|
+
...t({
|
|
110
|
+
titleId: I,
|
|
111
|
+
title: r,
|
|
112
|
+
hideHeader: S,
|
|
113
|
+
"aria-label": A,
|
|
114
|
+
"aria-labelledby": j
|
|
115
|
+
}),
|
|
116
|
+
...z,
|
|
117
|
+
...B,
|
|
118
|
+
children: /* @__PURE__ */ u("div", {
|
|
119
|
+
className: W ? l(G) : "kapi-splitmodal kapi-splitmodal--single",
|
|
120
|
+
children: J
|
|
121
|
+
})
|
|
122
|
+
}), U);
|
|
123
|
+
};
|
|
124
|
+
//#endregion
|
|
125
|
+
export { g as DEFAULT_SPLIT_MODAL_LABELS, _ as KapiSplitModal };
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { type ReactNode } from "react";
|
|
2
|
+
import "./overlays.css";
|
|
3
|
+
import { type KapiRootProps } from "../rootProps";
|
|
4
|
+
export type KapiTooltipSide = "right" | "left" | "top" | "bottom";
|
|
5
|
+
/** `className`/`style`/`id` van al envoltorio `<span class="kapi-tip">` del disparador. */
|
|
6
|
+
export type KapiTooltipProps = KapiRootProps & {
|
|
7
|
+
/** Texto del tooltip. */
|
|
8
|
+
label: string;
|
|
9
|
+
/** Disparador: el elemento que muestra el tooltip al pasar el mouse o enfocarlo. */
|
|
10
|
+
children: ReactNode;
|
|
11
|
+
/** Lado preferido: se respeta si entra; si no, va al opuesto. */
|
|
12
|
+
prefer?: KapiTooltipSide;
|
|
13
|
+
};
|
|
14
|
+
/** Ancho estimado de la burbuja (sin medirla), con tope. */
|
|
15
|
+
export declare const estimateTooltipWidth: (label: string) => number;
|
|
16
|
+
/**
|
|
17
|
+
* Lado final del tooltip (auto-flip) con el motor `placePopover`: se respeta el lado pedido salvo que
|
|
18
|
+
* la burbuja (tamaño estimado) no entre; entonces va al opuesto. Pura: recibe el rect del disparador y
|
|
19
|
+
* el viewport (sin `bottom`/`left` se toman `top`/`right`; sin alto de viewport, abajo siempre entra).
|
|
20
|
+
*/
|
|
21
|
+
export declare const resolveTooltipSide: (prefer: KapiTooltipSide, rect: Pick<DOMRect, "top" | "right"> & Partial<Pick<DOMRect, "bottom" | "left">>, label: string, viewportWidth: number, viewportHeight?: number) => KapiTooltipSide;
|
|
22
|
+
/**
|
|
23
|
+
* Punto de la burbuja en coordenadas de viewport según el lado (la burbuja es `position: fixed`, así no la
|
|
24
|
+
* recorta un contenedor con overflow, como el panel plegado o la zona que scrollea del rail). El CSS la
|
|
25
|
+
* corre desde ese punto (centrada en el eje que corresponda).
|
|
26
|
+
*/
|
|
27
|
+
export declare const tooltipAnchor: (side: KapiTooltipSide, rect: Pick<DOMRect, "top" | "bottom" | "left" | "right">) => {
|
|
28
|
+
x: number;
|
|
29
|
+
y: number;
|
|
30
|
+
};
|
|
31
|
+
/** `aria-describedby` del disparador: suma el id del tooltip al que ya traía (sin pisarlo ni repetir). */
|
|
32
|
+
export declare const tooltipDescribedBy: (existing: unknown, tipId: string) => string | undefined;
|
|
33
|
+
/**
|
|
34
|
+
* Tooltip para íconos sueltos. Se muestra con hover y con foco de teclado (`:focus-visible`), se
|
|
35
|
+
* descarta con Escape (WCAG 1.4.13) y el disparador lo referencia por `aria-describedby`. Al abrir mide
|
|
36
|
+
* el disparador y abre del lado con espacio.
|
|
37
|
+
*/
|
|
38
|
+
export declare const KapiTooltip: ({ label, children, prefer, className, style, id }: KapiTooltipProps) => import("react").JSX.Element;
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { joinIds as e } from "../inputs/fieldLogic.js";
|
|
3
|
+
import { placePopover as t } from "./popoverLogic.js";
|
|
4
|
+
import { onViewportChange as n } from "../../hooks/rafThrottle.js";
|
|
5
|
+
import { joinClasses as r } from "../rootProps.js";
|
|
6
|
+
/* empty css */
|
|
7
|
+
import { jsx as i, jsxs as a } from "react/jsx-runtime";
|
|
8
|
+
import { cloneElement as o, isValidElement as s, useEffect as c, useId as l, useLayoutEffect as u, useRef as d, useState as f } from "react";
|
|
9
|
+
//#region src/components/overlays/KapiTooltip.tsx
|
|
10
|
+
var p = 280, m = 7, h = 28, g = 12, _ = 44, v = (e) => Math.min(p, String(e).length * m + h), y = (e, n, r, i, a = Infinity) => {
|
|
11
|
+
let o = n.bottom ?? n.top, s = n.left ?? n.right, c = {
|
|
12
|
+
top: n.top,
|
|
13
|
+
bottom: o,
|
|
14
|
+
left: s,
|
|
15
|
+
right: n.right,
|
|
16
|
+
width: n.right - s,
|
|
17
|
+
height: o - n.top
|
|
18
|
+
}, l = e === "top" || e === "bottom";
|
|
19
|
+
return t(c, {
|
|
20
|
+
width: v(r),
|
|
21
|
+
height: _
|
|
22
|
+
}, {
|
|
23
|
+
width: i,
|
|
24
|
+
height: a
|
|
25
|
+
}, {
|
|
26
|
+
side: e,
|
|
27
|
+
offset: l ? 0 : g,
|
|
28
|
+
flip: "if-overflow",
|
|
29
|
+
shift: !1
|
|
30
|
+
}).side;
|
|
31
|
+
}, b = 10, x = 8, S = (e, t) => {
|
|
32
|
+
let n = (t.left + t.right) / 2, r = (t.top + t.bottom) / 2;
|
|
33
|
+
return e === "left" ? {
|
|
34
|
+
x: t.left - b,
|
|
35
|
+
y: r
|
|
36
|
+
} : e === "top" ? {
|
|
37
|
+
x: n,
|
|
38
|
+
y: t.top - x
|
|
39
|
+
} : e === "bottom" ? {
|
|
40
|
+
x: n,
|
|
41
|
+
y: t.bottom + x
|
|
42
|
+
} : {
|
|
43
|
+
x: t.right + b,
|
|
44
|
+
y: r
|
|
45
|
+
};
|
|
46
|
+
}, C = (e, t) => {
|
|
47
|
+
try {
|
|
48
|
+
return e.matches(t);
|
|
49
|
+
} catch {
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
52
|
+
}, w = (t, n) => e(typeof t == "string" ? t : void 0, n), T = ({ label: e, children: t, prefer: p = "right", className: m, style: h, id: g }) => {
|
|
53
|
+
let _ = l(), v = d(null), [b, x] = f(p), [T, E] = f(!1), [D, O] = f(!1), k = d({
|
|
54
|
+
hover: !1,
|
|
55
|
+
focus: !1
|
|
56
|
+
}), A = () => {
|
|
57
|
+
let t = v.current;
|
|
58
|
+
if (!t) return;
|
|
59
|
+
let n = t.getBoundingClientRect(), r = y(p, n, e, window.innerWidth, window.innerHeight), { x: i, y: a } = S(r, n);
|
|
60
|
+
t.style.setProperty("--kapi-tip-x", `${Math.round(i)}px`), t.style.setProperty("--kapi-tip-y", `${Math.round(a)}px`), x(r);
|
|
61
|
+
}, j = d(A);
|
|
62
|
+
u(() => {
|
|
63
|
+
j.current = A;
|
|
64
|
+
});
|
|
65
|
+
let M = d(null), N = d(!1), P = (e) => {
|
|
66
|
+
let t = M.current;
|
|
67
|
+
if (!t || typeof t.showPopover != "function") return;
|
|
68
|
+
let n = C(t, ":popover-open") ?? N.current;
|
|
69
|
+
e && !n && t.showPopover(), !e && n && t.hidePopover(), N.current = e;
|
|
70
|
+
}, F = (e) => {
|
|
71
|
+
k.current[e] = !0, E(!1), O(!0), A(), P(!0);
|
|
72
|
+
}, I = (e) => {
|
|
73
|
+
k.current[e] = !1, !(k.current.hover || k.current.focus) && (E(!1), O(!1), P(!1));
|
|
74
|
+
};
|
|
75
|
+
c(() => D ? n(() => j.current()) : void 0, [D]);
|
|
76
|
+
let L = (e) => {
|
|
77
|
+
e.key === "Escape" && !T && E(!0);
|
|
78
|
+
}, R = s(t) ? t : null, z = R ? o(R, { "aria-describedby": w(R.props["aria-describedby"], _) }) : t;
|
|
79
|
+
return /* @__PURE__ */ a("span", {
|
|
80
|
+
id: g,
|
|
81
|
+
className: r("kapi-tip", m),
|
|
82
|
+
style: h,
|
|
83
|
+
ref: v,
|
|
84
|
+
"data-side": b,
|
|
85
|
+
"data-dismissed": T || void 0,
|
|
86
|
+
"aria-describedby": R ? void 0 : _,
|
|
87
|
+
onMouseEnter: () => F("hover"),
|
|
88
|
+
onFocus: (e) => {
|
|
89
|
+
(C(e.target, ":focus-visible") ?? !0) && F("focus");
|
|
90
|
+
},
|
|
91
|
+
onMouseLeave: () => I("hover"),
|
|
92
|
+
onBlur: () => I("focus"),
|
|
93
|
+
onKeyDown: L,
|
|
94
|
+
children: [z, /* @__PURE__ */ i("span", {
|
|
95
|
+
ref: M,
|
|
96
|
+
className: "kapi-tip__bubble",
|
|
97
|
+
role: "tooltip",
|
|
98
|
+
id: _,
|
|
99
|
+
popover: "manual",
|
|
100
|
+
children: e
|
|
101
|
+
})]
|
|
102
|
+
});
|
|
103
|
+
};
|
|
104
|
+
//#endregion
|
|
105
|
+
export { T as KapiTooltip, v as estimateTooltipWidth, y as resolveTooltipSide, S as tooltipAnchor, w as tooltipDescribedBy };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/** Anything with a `then` is treated as an async result. */
|
|
2
|
+
export declare const isThenable: (value: unknown) => value is PromiseLike<unknown>;
|
|
3
|
+
export type RunSubmitHooks = {
|
|
4
|
+
/** Called right before an async submit starts (never for a sync handler). */
|
|
5
|
+
onStart: () => void;
|
|
6
|
+
/** Called when an async submit settles, whether it resolved or rejected. */
|
|
7
|
+
onEnd: () => void;
|
|
8
|
+
/** Receives a rejection. When omitted the rejection is re-thrown to the caller. */
|
|
9
|
+
onError?: ((error: unknown) => void) | undefined;
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* Runs a submit handler and reports the async lifecycle.
|
|
13
|
+
* - Sync handler: neither `onStart` nor `onEnd` fire (no flicker of the busy state).
|
|
14
|
+
* - Async handler: `onStart` fires first, `onEnd` always fires once it settles.
|
|
15
|
+
* - Rejection: goes to `onError` if given, otherwise it is re-thrown after `onEnd`.
|
|
16
|
+
* A synchronous throw is handled like a rejection.
|
|
17
|
+
*/
|
|
18
|
+
export declare const runSubmit: (handler: () => unknown, hooks: RunSubmitHooks) => Promise<void>;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
//#region src/components/overlays/canvasFormLogic.ts
|
|
2
|
+
var e = (e) => typeof e == "object" && !!e && typeof e.then == "function", t = async (t, n) => {
|
|
3
|
+
let r = !1;
|
|
4
|
+
try {
|
|
5
|
+
let i = t();
|
|
6
|
+
if (!e(i)) return;
|
|
7
|
+
r = !0, n.onStart(), await i;
|
|
8
|
+
} catch (e) {
|
|
9
|
+
if (!n.onError) throw e;
|
|
10
|
+
n.onError(e);
|
|
11
|
+
} finally {
|
|
12
|
+
r && n.onEnd();
|
|
13
|
+
}
|
|
14
|
+
};
|
|
15
|
+
//#endregion
|
|
16
|
+
export { e as isThenable, t as runSubmit };
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/** Pure logic for KapiCommandPalette: matching, filtering, flattening and active-index handling. */
|
|
2
|
+
/** Lowercase + strip diacritics so "bandeja" matches "Bandejás" and "inicio" matches "Início". */
|
|
3
|
+
export declare const normalizeText: (text: string) => string;
|
|
4
|
+
/** Minimal shape the logic needs from a command (the component's `KapiCommand` satisfies it). */
|
|
5
|
+
export type CommandLike = {
|
|
6
|
+
id: string;
|
|
7
|
+
/** Plain-text label used for matching (the component derives it from `label`). */
|
|
8
|
+
text: string;
|
|
9
|
+
keywords?: readonly string[];
|
|
10
|
+
disabled?: boolean;
|
|
11
|
+
};
|
|
12
|
+
export type GroupLike<C extends CommandLike> = {
|
|
13
|
+
id: string;
|
|
14
|
+
commands: readonly C[];
|
|
15
|
+
};
|
|
16
|
+
/** Text of a ReactNode-ish label: strings and numbers only; anything else yields "". */
|
|
17
|
+
export declare const nodeText: (node: unknown) => string;
|
|
18
|
+
/** True when every whitespace-separated term of the query appears in the label or any keyword. */
|
|
19
|
+
export declare const matchesCommand: (command: CommandLike, query: string) => boolean;
|
|
20
|
+
/** Keep only matching commands; drop groups left without matches (so their label is hidden). */
|
|
21
|
+
export declare const filterGroups: <C extends CommandLike, G extends GroupLike<C>>(groups: readonly G[], query: string) => Array<G & {
|
|
22
|
+
commands: C[];
|
|
23
|
+
}>;
|
|
24
|
+
/** Flat navigation list across groups, in display order, skipping disabled commands. */
|
|
25
|
+
export declare const flattenNavigable: <C extends CommandLike>(groups: readonly GroupLike<C>[]) => C[];
|
|
26
|
+
/** Next/previous index with wrap. From "none" (-1): down -> first, up -> last. */
|
|
27
|
+
export declare const moveActiveIndex: (current: number, count: number, direction: 1 | -1) => number;
|
|
28
|
+
/** Keep the active index valid when the list changes: -1 when empty, otherwise clamped into range. */
|
|
29
|
+
export declare const clampActiveIndex: (index: number, count: number) => number;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
//#region src/components/overlays/commandPaletteLogic.ts
|
|
2
|
+
var e = (e) => e.normalize("NFD").replace(/[̀-ͯ]/g, "").toLowerCase(), t = (e) => typeof e == "string" ? e : typeof e == "number" ? String(e) : Array.isArray(e) ? e.map(t).join("") : e && typeof e == "object" && "props" in e ? t(e.props?.children) : "", n = (t, n) => {
|
|
3
|
+
let r = e(n.trim());
|
|
4
|
+
if (!r) return !0;
|
|
5
|
+
let i = [t.text, ...t.keywords ?? []].map(e).join("\n");
|
|
6
|
+
return r.split(/\s+/).every((e) => i.includes(e));
|
|
7
|
+
}, r = (e, t) => {
|
|
8
|
+
let r = [];
|
|
9
|
+
for (let i of e) {
|
|
10
|
+
let e = i.commands.filter((e) => n(e, t));
|
|
11
|
+
e.length > 0 && r.push({
|
|
12
|
+
...i,
|
|
13
|
+
commands: e
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
return r;
|
|
17
|
+
}, i = (e) => e.flatMap((e) => e.commands.filter((e) => !e.disabled)), a = (e, t, n) => t <= 0 ? -1 : e < 0 || e >= t ? n === 1 ? 0 : t - 1 : (e + n + t) % t, o = (e, t) => t <= 0 ? -1 : e < 0 ? 0 : Math.min(e, t - 1);
|
|
18
|
+
//#endregion
|
|
19
|
+
export { o as clampActiveIndex, r as filterGroups, i as flattenNavigable, n as matchesCommand, a as moveActiveIndex, t as nodeText, e as normalizeText };
|