@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,96 @@
|
|
|
1
|
+
import { type ReactNode } from "react";
|
|
2
|
+
import { type OffcanvasSide } from "./offcanvasSide";
|
|
3
|
+
import "./KapiOffcanvas.css";
|
|
4
|
+
import { type KapiRootProps } from "../rootProps";
|
|
5
|
+
import type { KapiLabelsOverride } from "../labelsLogic";
|
|
6
|
+
export declare const DEFAULT_OFFCANVAS_WIDTH = 520;
|
|
7
|
+
export type KapiOffcanvasCompanion = {
|
|
8
|
+
/** Controlado. Con true el panel se acopla junto al drawer, en el mismo borde. */
|
|
9
|
+
open: boolean;
|
|
10
|
+
children: ReactNode;
|
|
11
|
+
title?: ReactNode;
|
|
12
|
+
subtitle?: ReactNode;
|
|
13
|
+
/** Ancho: number (px) o string CSS. Default 400. */
|
|
14
|
+
width?: number | string;
|
|
15
|
+
/** Zona fija inferior del panel acompañante. */
|
|
16
|
+
footer?: ReactNode;
|
|
17
|
+
/** X del encabezado: cierra sólo el acompañante (el padre pone `open: false`). */
|
|
18
|
+
onClose?: () => void;
|
|
19
|
+
closeLabel?: string;
|
|
20
|
+
};
|
|
21
|
+
/** `close` es la X del panel (sin `closeLabel`); `closePanel`, la del acompañante. */
|
|
22
|
+
export type KapiOffcanvasLabels = {
|
|
23
|
+
resize: string;
|
|
24
|
+
close: string;
|
|
25
|
+
closePanel: string;
|
|
26
|
+
};
|
|
27
|
+
export declare const DEFAULT_OFFCANVAS_LABELS: KapiOffcanvasLabels;
|
|
28
|
+
/**
|
|
29
|
+
* `className`/`style`/`id` (`KapiRootProps`) van al `<dialog>` (`.kapi-offc`, el contenedor que
|
|
30
|
+
* ubica las tarjetas); las variables calculadas (tamaño, empuje) ganan sobre `style`.
|
|
31
|
+
*/
|
|
32
|
+
export type KapiOffcanvasProps = KapiRootProps & {
|
|
33
|
+
/** Controlado. Al pasar a false corre la animación de salida y recién después se desmonta. */
|
|
34
|
+
open: boolean;
|
|
35
|
+
/** Pedido de cierre (X, click en el fondo, Escape). El padre pone `open={false}`. */
|
|
36
|
+
onClose: () => void;
|
|
37
|
+
/** Título del header del panel (también nombra al diálogo). */
|
|
38
|
+
title: ReactNode;
|
|
39
|
+
/** Texto secundario bajo el título. */
|
|
40
|
+
subtitle?: ReactNode | undefined;
|
|
41
|
+
/** Contenido del cuerpo del panel (con scroll propio). */
|
|
42
|
+
children?: ReactNode | undefined;
|
|
43
|
+
/** Zona fija inferior (botones). */
|
|
44
|
+
footer?: ReactNode | undefined;
|
|
45
|
+
/** Borde desde el que se abre. Default `"right"`. */
|
|
46
|
+
side?: OffcanvasSide | undefined;
|
|
47
|
+
/**
|
|
48
|
+
* Ancho de la tarjeta (sólo `left` / `right`): number (px) o string CSS. Default 520.
|
|
49
|
+
* En mobile ocupa `calc(100% - 20px)`. Se ignora en `top` / `bottom` (ocupan todo el ancho).
|
|
50
|
+
*/
|
|
51
|
+
width?: number | string | undefined;
|
|
52
|
+
/** Alto de la tarjeta (sólo `top` / `bottom`): number (px) o string CSS. Default `"60vh"`. Se ignora en `left` / `right`. */
|
|
53
|
+
height?: number | string | undefined;
|
|
54
|
+
/** Cuánto se achica este panel por cada panel abierto encima (0.04 = 4 %). Default 0.04. */
|
|
55
|
+
pushRatio?: number | undefined;
|
|
56
|
+
/** Cuánto se corre a la izquierda (px) por nivel, para asomar como carta detrás. Default 16. */
|
|
57
|
+
pushOffset?: number | undefined;
|
|
58
|
+
/** Click en el fondo cierra. Default true. */
|
|
59
|
+
closeOnBackdrop?: boolean | undefined;
|
|
60
|
+
/** Escape cierra. Default true. */
|
|
61
|
+
closeOnEscape?: boolean | undefined;
|
|
62
|
+
/** Textos fijos (handle de redimensionar, la X del panel y la del acompañante sin `closeLabel`). */
|
|
63
|
+
labels?: KapiLabelsOverride<KapiOffcanvasLabels> | undefined;
|
|
64
|
+
/** Nombre accesible de la X. Gana sobre `labels.close` ("Cerrar"). */
|
|
65
|
+
closeLabel?: string | undefined;
|
|
66
|
+
/**
|
|
67
|
+
* Panel acompañante opcional, acoplado al lado INTERNO del drawer (a la izquierda de uno
|
|
68
|
+
* `right`, a la derecha de uno `left`), ambos visibles a la vez en el mismo `<dialog>`.
|
|
69
|
+
* Se ignora en `top` / `bottom`. En <900px se apila en columna (acompañante arriba).
|
|
70
|
+
*/
|
|
71
|
+
companion?: KapiOffcanvasCompanion | undefined;
|
|
72
|
+
/** Se llama cuando terminó la animación de salida y el panel se desmontó. */
|
|
73
|
+
onExited?: (() => void) | undefined;
|
|
74
|
+
/** Ancho regulable arrastrando el borde interno (sólo `left` / `right`). Default false. */
|
|
75
|
+
resizable?: boolean | undefined;
|
|
76
|
+
/** Ancho mínimo (px) al redimensionar. Default 320. */
|
|
77
|
+
minWidth?: number | undefined;
|
|
78
|
+
/** Ancho máximo (px) al redimensionar. Default: 90 % del viewport al momento de arrastrar. */
|
|
79
|
+
maxWidth?: number | undefined;
|
|
80
|
+
/** Se llama con el ancho (px) en cada cambio por arrastre o teclado. */
|
|
81
|
+
onResize?: ((width: number) => void) | undefined;
|
|
82
|
+
};
|
|
83
|
+
/**
|
|
84
|
+
* Offcanvas: tarjeta flotante que entra desde un borde (`side`, default la
|
|
85
|
+
* derecha; también izquierda, arriba o abajo), sobre `<dialog>`
|
|
86
|
+
* nativo (`showModal()`): focus trap, Escape, `::backdrop`, `inert` del fondo y
|
|
87
|
+
* restauración de foco los da el navegador.
|
|
88
|
+
*
|
|
89
|
+
* Es APILABLE: abrir otro `KapiOffcanvas` mientras éste está abierto (anidado
|
|
90
|
+
* declarativamente, o vía `KapiOffcanvasStack` / `useKapiOffcanvasStack`) empuja
|
|
91
|
+
* este panel hacia atrás (escala + corrimiento, `pushRatio` / `pushOffset`). El
|
|
92
|
+
* orden visual lo resuelve el top-layer del navegador (sin z-index).
|
|
93
|
+
* El empuje aplica a `right` y `left` (espejado); en `top` / `bottom` los paneles
|
|
94
|
+
* apilados no se empujan entre sí (el apilado vertical queda fuera de alcance).
|
|
95
|
+
*/
|
|
96
|
+
export declare const KapiOffcanvas: ({ open, onExited, ...props }: KapiOffcanvasProps) => import("react").ReactPortal | null;
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useLabels as e } from "../locale/KapiLocaleProvider.js";
|
|
3
|
+
import { joinClasses as t } from "../rootProps.js";
|
|
4
|
+
import { maxTransitionMs as n } from "./dialogUtils.js";
|
|
5
|
+
import { getPortalRoot as r, useBackdropClose as i, useNativeDialog as a } from "./useNativeDialog.js";
|
|
6
|
+
import { DEFAULT_PUSH_RATIO as o, depthOf as s, levelOf as c, offcanvasStackStore as l, phaseReducer as u, pushTransform as ee } from "./offcanvasStack.js";
|
|
7
|
+
import { normalizeSide as te, pushForSide as ne, sideDataAttr as d, sizeVar as re } from "./offcanvasSide.js";
|
|
8
|
+
import { companionDockClasses as ie, isCompanionActive as ae, resolveCompanionOrder as oe, resolveCompanionWidth as se } from "./offcanvasCompanion.js";
|
|
9
|
+
import { resolveInitialWidth as ce, resolveMaxWidth as f, stepOffcanvasWidth as le, widthFromDrag as ue } from "./offcanvasResize.js";
|
|
10
|
+
/* empty css */
|
|
11
|
+
import { jsx as p, jsxs as m } from "react/jsx-runtime";
|
|
12
|
+
import { useEffect as de, useId as h, useLayoutEffect as g, useReducer as _, useRef as v, useState as y, useSyncExternalStore as fe } from "react";
|
|
13
|
+
import { X as b } from "lucide-react";
|
|
14
|
+
import { createPortal as x } from "react-dom";
|
|
15
|
+
var pe = 120, S = {
|
|
16
|
+
resize: "Redimensionar panel",
|
|
17
|
+
close: "Cerrar",
|
|
18
|
+
closePanel: "Cerrar panel"
|
|
19
|
+
}, C = ({ stackId: r, phase: u, onEntered: _, onExited: x, onClose: C, title: w, subtitle: T, children: me, footer: E, side: he, width: D = 520, height: ge, pushRatio: _e = o, pushOffset: ve = 16, closeOnBackdrop: ye = !0, closeOnEscape: be = !0, closeLabel: xe, labels: Se, className: Ce, style: O, id: k, companion: A, resizable: we = !1, minWidth: j = 320, maxWidth: M, onResize: N }) => {
|
|
20
|
+
let P = e("offcanvas", S, Se), Te = xe ?? P.close, F = h(), I = h(), L = te(he), R = v(null), z = fe(l.subscribe, l.getSnapshot, l.getServerSnapshot), B = s(z, r), Ee = Math.max(0, c(z, r)), { scale: De, translateX: Oe } = ne(L, ee(B, _e, ve)), [V, ke] = y(() => ce(D, 520)), [Ae, H] = y(!1), U = v(null), W = v(N);
|
|
21
|
+
W.current = N;
|
|
22
|
+
let G = (e) => {
|
|
23
|
+
ke(e), e !== V && W.current?.(e);
|
|
24
|
+
}, je = (e) => {
|
|
25
|
+
if (e.button !== 0) return;
|
|
26
|
+
let t = R.current?.offsetWidth ?? V;
|
|
27
|
+
U.current = {
|
|
28
|
+
startX: e.clientX,
|
|
29
|
+
startWidth: t
|
|
30
|
+
}, e.currentTarget.setPointerCapture(e.pointerId), H(!0), e.preventDefault();
|
|
31
|
+
}, Me = (e) => {
|
|
32
|
+
let t = U.current;
|
|
33
|
+
if (!t) return;
|
|
34
|
+
let n = f(M, window.innerWidth);
|
|
35
|
+
G(ue(L, t.startWidth, t.startX, e.clientX, j, n));
|
|
36
|
+
}, K = (e) => {
|
|
37
|
+
U.current = null, e.currentTarget.hasPointerCapture(e.pointerId) && e.currentTarget.releasePointerCapture(e.pointerId), H(!1);
|
|
38
|
+
}, Ne = (e) => {
|
|
39
|
+
let t = f(M, window.innerWidth), n = le(L, V, e.key, j, t);
|
|
40
|
+
n !== null && (e.preventDefault(), e.stopPropagation(), G(n));
|
|
41
|
+
}, q = u === "open" ? C : void 0, { ref: Pe, dialogProps: Fe } = a({ onRequestClose: be ? q : void 0 }), J = i(ye ? q : void 0);
|
|
42
|
+
g(() => (l.dispatch({
|
|
43
|
+
type: "add",
|
|
44
|
+
id: r
|
|
45
|
+
}), () => l.dispatch({
|
|
46
|
+
type: "remove",
|
|
47
|
+
id: r
|
|
48
|
+
})), [r]);
|
|
49
|
+
let Y = v(_);
|
|
50
|
+
Y.current = _, g(() => {
|
|
51
|
+
R.current?.getBoundingClientRect(), Y.current();
|
|
52
|
+
}, []);
|
|
53
|
+
let X = v(x);
|
|
54
|
+
X.current = x, de(() => {
|
|
55
|
+
if (u !== "exit") return;
|
|
56
|
+
let e = R.current;
|
|
57
|
+
if (!e) {
|
|
58
|
+
X.current();
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
let t = getComputedStyle(e), r = n(t.transitionDuration, t.transitionDelay);
|
|
62
|
+
if (r <= 0) {
|
|
63
|
+
X.current();
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
let i = !1, a = () => {
|
|
67
|
+
i || (i = !0, X.current());
|
|
68
|
+
}, o = (t) => {
|
|
69
|
+
t.target === e && t.propertyName === "transform" && a();
|
|
70
|
+
};
|
|
71
|
+
e.addEventListener("transitionend", o);
|
|
72
|
+
let s = window.setTimeout(a, r + pe);
|
|
73
|
+
return () => {
|
|
74
|
+
i = !0, e.removeEventListener("transitionend", o), window.clearTimeout(s);
|
|
75
|
+
};
|
|
76
|
+
}, [u]);
|
|
77
|
+
let Z = we && (L === "left" || L === "right"), Q = re(L, D, ge, "520px");
|
|
78
|
+
Z && (Q.value = `${V}px`);
|
|
79
|
+
let Ie = {
|
|
80
|
+
...O,
|
|
81
|
+
[Q.name]: Q.value,
|
|
82
|
+
"--kapi-offc-push-x": `${Oe}px`,
|
|
83
|
+
"--kapi-offc-push-s": De
|
|
84
|
+
}, $ = ae(L, A), Le = /* @__PURE__ */ m("div", {
|
|
85
|
+
ref: R,
|
|
86
|
+
className: "kapi-offc__panel",
|
|
87
|
+
children: [
|
|
88
|
+
Z && /* @__PURE__ */ p("div", {
|
|
89
|
+
className: "kapi-offc__resize",
|
|
90
|
+
role: "separator",
|
|
91
|
+
"aria-orientation": "vertical",
|
|
92
|
+
"aria-label": P.resize,
|
|
93
|
+
"aria-valuemin": j,
|
|
94
|
+
"aria-valuemax": f(M, typeof window > "u" ? void 0 : window.innerWidth),
|
|
95
|
+
"aria-valuenow": V,
|
|
96
|
+
tabIndex: 0,
|
|
97
|
+
onPointerDown: je,
|
|
98
|
+
onPointerMove: Me,
|
|
99
|
+
onPointerUp: K,
|
|
100
|
+
onPointerCancel: K,
|
|
101
|
+
onKeyDown: Ne
|
|
102
|
+
}),
|
|
103
|
+
/* @__PURE__ */ m("div", {
|
|
104
|
+
className: "kapi-offc__head",
|
|
105
|
+
children: [/* @__PURE__ */ m("div", { children: [/* @__PURE__ */ p("div", {
|
|
106
|
+
id: F,
|
|
107
|
+
className: "kapi-modal__title",
|
|
108
|
+
children: w
|
|
109
|
+
}), T && /* @__PURE__ */ p("div", {
|
|
110
|
+
className: "kapi-modal__sub",
|
|
111
|
+
children: T
|
|
112
|
+
})] }), /* @__PURE__ */ p("button", {
|
|
113
|
+
type: "button",
|
|
114
|
+
className: "kapi-modal__x",
|
|
115
|
+
onClick: q,
|
|
116
|
+
"aria-label": Te,
|
|
117
|
+
children: /* @__PURE__ */ p(b, {
|
|
118
|
+
size: 17,
|
|
119
|
+
strokeWidth: 2.2
|
|
120
|
+
})
|
|
121
|
+
})]
|
|
122
|
+
}),
|
|
123
|
+
/* @__PURE__ */ p("div", {
|
|
124
|
+
className: "kapi-offc__body",
|
|
125
|
+
children: me
|
|
126
|
+
}),
|
|
127
|
+
E && /* @__PURE__ */ p("div", {
|
|
128
|
+
className: "kapi-offc__foot",
|
|
129
|
+
children: E
|
|
130
|
+
})
|
|
131
|
+
]
|
|
132
|
+
}, "main"), Re = A && $ ? /* @__PURE__ */ m("div", {
|
|
133
|
+
className: "kapi-offc__panel kapi-offc__companion",
|
|
134
|
+
role: "complementary",
|
|
135
|
+
"aria-labelledby": A.title ? I : void 0,
|
|
136
|
+
style: { "--kapi-offc-companion-w": se(A.width) },
|
|
137
|
+
children: [
|
|
138
|
+
(A.title || A.onClose) && /* @__PURE__ */ m("div", {
|
|
139
|
+
className: "kapi-offc__head",
|
|
140
|
+
children: [/* @__PURE__ */ m("div", { children: [/* @__PURE__ */ p("div", {
|
|
141
|
+
id: I,
|
|
142
|
+
className: "kapi-modal__title",
|
|
143
|
+
children: A.title
|
|
144
|
+
}), A.subtitle && /* @__PURE__ */ p("div", {
|
|
145
|
+
className: "kapi-modal__sub",
|
|
146
|
+
children: A.subtitle
|
|
147
|
+
})] }), A.onClose && /* @__PURE__ */ p("button", {
|
|
148
|
+
type: "button",
|
|
149
|
+
className: "kapi-modal__x",
|
|
150
|
+
onClick: A.onClose,
|
|
151
|
+
"aria-label": A.closeLabel ?? P.closePanel,
|
|
152
|
+
children: /* @__PURE__ */ p(b, {
|
|
153
|
+
size: 17,
|
|
154
|
+
strokeWidth: 2.2
|
|
155
|
+
})
|
|
156
|
+
})]
|
|
157
|
+
}),
|
|
158
|
+
/* @__PURE__ */ p("div", {
|
|
159
|
+
className: "kapi-offc__body",
|
|
160
|
+
children: A.children
|
|
161
|
+
}),
|
|
162
|
+
A.footer && /* @__PURE__ */ p("div", {
|
|
163
|
+
className: "kapi-offc__foot",
|
|
164
|
+
children: A.footer
|
|
165
|
+
})
|
|
166
|
+
]
|
|
167
|
+
}, "companion") : null, ze = oe(L).map((e) => e === "main" ? Le : Re).filter((e) => e !== null);
|
|
168
|
+
return /* @__PURE__ */ p("dialog", {
|
|
169
|
+
ref: Pe,
|
|
170
|
+
id: k,
|
|
171
|
+
className: t("kapi-offc", Ae && "is-resizing", Ce),
|
|
172
|
+
"data-side": d(L),
|
|
173
|
+
"data-state": u === "open" ? "open" : "closed",
|
|
174
|
+
"data-level": Ee,
|
|
175
|
+
"data-pushed": B > 0 ? "" : void 0,
|
|
176
|
+
"aria-modal": "true",
|
|
177
|
+
"aria-labelledby": F,
|
|
178
|
+
style: Ie,
|
|
179
|
+
...Fe,
|
|
180
|
+
...J,
|
|
181
|
+
children: /* @__PURE__ */ p("div", {
|
|
182
|
+
className: ie($),
|
|
183
|
+
children: ze
|
|
184
|
+
})
|
|
185
|
+
});
|
|
186
|
+
}, w = ({ open: e, onExited: t, ...n }) => {
|
|
187
|
+
let i = h(), [a, o] = _(u, "unmounted"), s = v(t);
|
|
188
|
+
s.current = t, g(() => {
|
|
189
|
+
o(e ? "open" : "close");
|
|
190
|
+
}, [e]), g(() => {
|
|
191
|
+
(a === "exit" || a === "open") && l.dispatch({
|
|
192
|
+
type: "mark",
|
|
193
|
+
id: i,
|
|
194
|
+
state: a === "exit" ? "closing" : "open"
|
|
195
|
+
});
|
|
196
|
+
}, [a, i]);
|
|
197
|
+
let c = r();
|
|
198
|
+
return a === "unmounted" || !c ? null : x(/* @__PURE__ */ p(C, {
|
|
199
|
+
...n,
|
|
200
|
+
stackId: i,
|
|
201
|
+
phase: a,
|
|
202
|
+
onEntered: () => o("entered"),
|
|
203
|
+
onExited: () => {
|
|
204
|
+
o("exited"), s.current?.();
|
|
205
|
+
}
|
|
206
|
+
}), c);
|
|
207
|
+
};
|
|
208
|
+
//#endregion
|
|
209
|
+
export { S as DEFAULT_OFFCANVAS_LABELS, w as KapiOffcanvas };
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { type ReactNode } from "react";
|
|
2
|
+
import { type KapiOffcanvasProps } from "./KapiOffcanvas";
|
|
3
|
+
/** Handle que recibe el contenido de un panel (render-prop) o `useKapiOffcanvasPanel()`. */
|
|
4
|
+
export type KapiOffcanvasPanelApi = {
|
|
5
|
+
id: string;
|
|
6
|
+
/** Posición en la pila (0 = primer panel). */
|
|
7
|
+
level: number;
|
|
8
|
+
/** Cierra ESTE panel (y los que estén encima de él). */
|
|
9
|
+
close: () => void;
|
|
10
|
+
/** Abre otro panel encima de éste. Devuelve su id. */
|
|
11
|
+
push: (config: KapiOffcanvasPanelConfig) => string;
|
|
12
|
+
};
|
|
13
|
+
export type KapiOffcanvasPanelConfig = Omit<KapiOffcanvasProps, "open" | "onClose" | "children" | "onExited"> & {
|
|
14
|
+
/** Contenido: nodo, o función que recibe el handle del panel (para `close` / `push`). */
|
|
15
|
+
content?: ReactNode | ((panel: KapiOffcanvasPanelApi) => ReactNode);
|
|
16
|
+
/** Se invoca al pedir el cierre; devolver `false` lo cancela (ej. cambios sin guardar). */
|
|
17
|
+
beforeClose?: () => boolean | void;
|
|
18
|
+
/** Se invoca cuando el panel efectivamente se está cerrando. */
|
|
19
|
+
onClose?: () => void;
|
|
20
|
+
/** Se invoca al terminar la animación de salida. */
|
|
21
|
+
onExited?: () => void;
|
|
22
|
+
};
|
|
23
|
+
export type KapiOffcanvasStackControls = {
|
|
24
|
+
/** Abre un panel nuevo encima del último. Devuelve su id. */
|
|
25
|
+
push: (config: KapiOffcanvasPanelConfig) => string;
|
|
26
|
+
/** Cierra el panel `id` (y los de arriba). Sin id: el de más arriba. */
|
|
27
|
+
close: (id?: string) => void;
|
|
28
|
+
/** Cierra el panel de más arriba. */
|
|
29
|
+
pop: () => void;
|
|
30
|
+
/** Cierra todos (animan juntos). */
|
|
31
|
+
closeAll: () => void;
|
|
32
|
+
/** Cantidad de paneles abiertos. */
|
|
33
|
+
size: number;
|
|
34
|
+
};
|
|
35
|
+
/**
|
|
36
|
+
* Provider de paneles encadenados. Renderiza los paneles él mismo, por eso el
|
|
37
|
+
* contenido puede usar los hooks de abajo para abrir más paneles encima.
|
|
38
|
+
*
|
|
39
|
+
* ```tsx
|
|
40
|
+
* <KapiOffcanvasStack><App /></KapiOffcanvasStack>
|
|
41
|
+
*
|
|
42
|
+
* const stack = useKapiOffcanvasStack();
|
|
43
|
+
* stack.push({
|
|
44
|
+
* title: "Alumno",
|
|
45
|
+
* content: ({ push }) => (
|
|
46
|
+
* <KapiButton onClick={() => push({ title: "Notas", width: 420, content: <Notas /> })}>Ver notas</KapiButton>
|
|
47
|
+
* )
|
|
48
|
+
* });
|
|
49
|
+
* ```
|
|
50
|
+
*/
|
|
51
|
+
export declare const KapiOffcanvasStack: ({ children }: {
|
|
52
|
+
/** Subárbol que puede abrir paneles con `useKapiOffcanvasStack`; los paneles se montan después de él. */
|
|
53
|
+
children?: ReactNode;
|
|
54
|
+
}) => import("react").JSX.Element;
|
|
55
|
+
/** API imperativa del stack (`push`, `pop`, `close`, `closeAll`). Requiere `<KapiOffcanvasStack>`. */
|
|
56
|
+
export declare const useKapiOffcanvasStack: () => KapiOffcanvasStackControls;
|
|
57
|
+
/** Handle del panel que contiene al componente (para `close()` / `push()` desde adentro). */
|
|
58
|
+
export declare const useKapiOffcanvasPanel: () => KapiOffcanvasPanelApi;
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { panelsReducer as e, topOpenId as t } from "./offcanvasStack.js";
|
|
3
|
+
import { KapiOffcanvas as n } from "./KapiOffcanvas.js";
|
|
4
|
+
import { jsx as r, jsxs as i } from "react/jsx-runtime";
|
|
5
|
+
import { createContext as a, useCallback as o, useContext as s, useLayoutEffect as c, useMemo as l, useReducer as u, useRef as d } from "react";
|
|
6
|
+
//#region src/components/overlays/KapiOffcanvasStack.tsx
|
|
7
|
+
var f = a(null), p = a(null), m = (t, n) => e(t, n), h = ({ children: e }) => {
|
|
8
|
+
let [a, s] = u(m, []), h = d(a);
|
|
9
|
+
c(() => {
|
|
10
|
+
h.current = a;
|
|
11
|
+
});
|
|
12
|
+
let g = d(0), _ = o((e) => {
|
|
13
|
+
g.current += 1;
|
|
14
|
+
let t = `kapi-offc-${g.current}`;
|
|
15
|
+
return s({
|
|
16
|
+
type: "push",
|
|
17
|
+
id: t,
|
|
18
|
+
config: e
|
|
19
|
+
}), t;
|
|
20
|
+
}, []), v = o((e) => {
|
|
21
|
+
let n = h.current, r = e ?? t(n), i = n.findIndex((e) => e.id === r);
|
|
22
|
+
if (i < 0 || !n[i]?.open) return;
|
|
23
|
+
let a = n.filter((e, t) => t >= i && e.open);
|
|
24
|
+
for (let e = a.length - 1; e >= 0; --e) if (a[e]?.config.beforeClose?.() === !1) return;
|
|
25
|
+
s({
|
|
26
|
+
type: "close",
|
|
27
|
+
id: n[i].id
|
|
28
|
+
}), a.forEach((e) => e.config.onClose?.());
|
|
29
|
+
}, []), y = o(() => {
|
|
30
|
+
let e = h.current.filter((e) => e.open);
|
|
31
|
+
if (e.length !== 0) {
|
|
32
|
+
for (let t = e.length - 1; t >= 0; --t) if (e[t]?.config.beforeClose?.() === !1) return;
|
|
33
|
+
s({ type: "closeAll" }), e.forEach((e) => e.config.onClose?.());
|
|
34
|
+
}
|
|
35
|
+
}, []), b = o(() => v(), [v]), x = a.filter((e) => e.open).length, S = l(() => ({
|
|
36
|
+
push: _,
|
|
37
|
+
close: v,
|
|
38
|
+
pop: b,
|
|
39
|
+
closeAll: y,
|
|
40
|
+
size: x
|
|
41
|
+
}), [
|
|
42
|
+
_,
|
|
43
|
+
v,
|
|
44
|
+
b,
|
|
45
|
+
y,
|
|
46
|
+
x
|
|
47
|
+
]);
|
|
48
|
+
return /* @__PURE__ */ i(f.Provider, {
|
|
49
|
+
value: S,
|
|
50
|
+
children: [e, a.map((e, t) => {
|
|
51
|
+
let { content: i, beforeClose: a, onClose: o, onExited: c, ...l } = e.config, u = {
|
|
52
|
+
id: e.id,
|
|
53
|
+
level: t,
|
|
54
|
+
close: () => v(e.id),
|
|
55
|
+
push: _
|
|
56
|
+
};
|
|
57
|
+
return /* @__PURE__ */ r(p.Provider, {
|
|
58
|
+
value: u,
|
|
59
|
+
children: /* @__PURE__ */ r(n, {
|
|
60
|
+
...l,
|
|
61
|
+
open: e.open,
|
|
62
|
+
onClose: u.close,
|
|
63
|
+
onExited: () => {
|
|
64
|
+
s({
|
|
65
|
+
type: "remove",
|
|
66
|
+
id: e.id
|
|
67
|
+
}), c?.();
|
|
68
|
+
},
|
|
69
|
+
children: typeof i == "function" ? i(u) : i
|
|
70
|
+
})
|
|
71
|
+
}, e.id);
|
|
72
|
+
})]
|
|
73
|
+
});
|
|
74
|
+
}, g = () => {
|
|
75
|
+
let e = s(f);
|
|
76
|
+
if (!e) throw Error("useKapiOffcanvasStack: falta <KapiOffcanvasStack> más arriba en el árbol.");
|
|
77
|
+
return e;
|
|
78
|
+
}, _ = () => {
|
|
79
|
+
let e = s(p);
|
|
80
|
+
if (!e) throw Error("useKapiOffcanvasPanel: sólo se puede usar dentro del contenido de un panel del stack.");
|
|
81
|
+
return e;
|
|
82
|
+
};
|
|
83
|
+
//#endregion
|
|
84
|
+
export { h as KapiOffcanvasStack, _ as useKapiOffcanvasPanel, g as useKapiOffcanvasStack };
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { type CSSProperties, type ReactNode } from "react";
|
|
2
|
+
import "./overlays.css";
|
|
3
|
+
import { type KapiRootProps } from "../rootProps";
|
|
4
|
+
import type { KapiLabelsOverride } from "../labelsLogic";
|
|
5
|
+
/** closed → opening → open → closing → closed */
|
|
6
|
+
export type KapiPhotoViewState = "closed" | "opening" | "open" | "closing";
|
|
7
|
+
export type KapiPhotoViewEvent = "open" | "ready" | "close" | "end";
|
|
8
|
+
/** `className`/`style`/`id` van al botón del thumbnail (el visor agrandado es portaleado). */
|
|
9
|
+
export type KapiPhotoViewProps = KapiRootProps & {
|
|
10
|
+
/** Thumbnail (el elemento que se toca y desde el que viaja el visor). */
|
|
11
|
+
children: ReactNode;
|
|
12
|
+
/** Lo que se muestra agrandado (iniciales o una `<img>`). */
|
|
13
|
+
content: ReactNode;
|
|
14
|
+
/** Fondo del visor agrandado. */
|
|
15
|
+
bg?: string;
|
|
16
|
+
/** Color del texto del visor agrandado. */
|
|
17
|
+
ink?: string;
|
|
18
|
+
/**
|
|
19
|
+
* Nombre accesible del thumbnail (botón) y del visor (diálogo). Sin él, el botón se nombra por su
|
|
20
|
+
* contenido (alt de la `<img>` o texto) y el visor usa `labels.viewer`.
|
|
21
|
+
*/
|
|
22
|
+
label?: string;
|
|
23
|
+
/** Textos fijos (clave `photoView`). */
|
|
24
|
+
labels?: KapiLabelsOverride<KapiPhotoViewLabels> | undefined;
|
|
25
|
+
};
|
|
26
|
+
export type KapiPhotoViewLabels = {
|
|
27
|
+
viewer: string;
|
|
28
|
+
};
|
|
29
|
+
export declare const DEFAULT_PHOTO_VIEW_LABELS: KapiPhotoViewLabels;
|
|
30
|
+
type Rect = Pick<DOMRect, "top" | "left" | "width" | "height">;
|
|
31
|
+
type Viewport = {
|
|
32
|
+
width: number;
|
|
33
|
+
height: number;
|
|
34
|
+
};
|
|
35
|
+
/** Tamaño máximo del visor abierto (px). */
|
|
36
|
+
export declare const PHOTO_TARGET = 280;
|
|
37
|
+
/** Radio de respaldo del thumbnail cuando no se puede leer el real (círculo/píldora). */
|
|
38
|
+
export declare const PHOTO_PILL_RADIUS = 999;
|
|
39
|
+
/** Si `transitionend` no llega al cerrar, se completa el cierre después de este tiempo. */
|
|
40
|
+
export declare const PHOTO_CLOSE_FALLBACK_MS = 450;
|
|
41
|
+
/** Máquina de estados del visor. Pura: los eventos inválidos para el estado actual se ignoran. */
|
|
42
|
+
export declare const photoViewReducer: (state: KapiPhotoViewState, event: KapiPhotoViewEvent) => KapiPhotoViewState;
|
|
43
|
+
/** Demora del fallback de cierre: inmediato con movimiento reducido (no hay transición). */
|
|
44
|
+
export declare const photoCloseFallbackDelay: (reducedMotion: boolean) => number;
|
|
45
|
+
/**
|
|
46
|
+
* Radio en px de una esquina a partir del `border-radius` computado (`"12px"`, `"50%"`, `"50% 50%"`…):
|
|
47
|
+
* toma el primer valor y resuelve el porcentaje contra el lado menor. Sin valor legible, `fallback`.
|
|
48
|
+
*/
|
|
49
|
+
export declare const parseThumbRadius: (value: string, size: Pick<DOMRect, "width" | "height">, fallback?: number) => number;
|
|
50
|
+
/** Dos rects iguales en lo que usa el visor (evita re-renders al refrescar sin cambios). */
|
|
51
|
+
export declare const sameRect: (a: Rect | null, b: Rect | null) => boolean;
|
|
52
|
+
/** Geometría del elemento que viaja: el thumbnail (cerrado/abriendo/cerrando) o el centro (abierto). */
|
|
53
|
+
export declare const photoFlyStyle: (state: KapiPhotoViewState, rect: Rect | null, viewport: Viewport, thumbRadius?: number) => CSSProperties;
|
|
54
|
+
/**
|
|
55
|
+
* Visor de foto/avatar con animación "que viaja" (FLIP): el thumbnail vuela al centro y crece.
|
|
56
|
+
* El thumbnail es un botón; el visor es un diálogo modal (foco adentro, Tab atrapado, Escape o click
|
|
57
|
+
* cierran) y al cerrar el foco vuelve al thumbnail.
|
|
58
|
+
*/
|
|
59
|
+
export declare const KapiPhotoView: ({ children, content, bg, ink, label, labels, className, style, id }: KapiPhotoViewProps) => import("react").JSX.Element;
|
|
60
|
+
export {};
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useLabels as e } from "../locale/KapiLocaleProvider.js";
|
|
3
|
+
import { resolveKapiRoot as t } from "../../hooks/kapiRoot.js";
|
|
4
|
+
import { onViewportChange as n } from "../../hooks/rafThrottle.js";
|
|
5
|
+
import { joinClasses as r } from "../rootProps.js";
|
|
6
|
+
/* empty css */
|
|
7
|
+
import { KapiOverlayPortal as i } from "./overlayPortal.js";
|
|
8
|
+
import { prefersReducedMotion as a } from "../../hooks/reducedMotion.js";
|
|
9
|
+
import { trapTabKey as o } from "../../hooks/focusLogic.js";
|
|
10
|
+
import { Fragment as s, jsx as c, jsxs as l } from "react/jsx-runtime";
|
|
11
|
+
import { useEffect as u, useLayoutEffect as d, useReducer as f, useRef as p, useState as m } from "react";
|
|
12
|
+
//#region src/components/overlays/KapiPhotoView.tsx
|
|
13
|
+
var h = { viewer: "Foto ampliada" }, g = 92, _ = 24, v = .42, y = (e, t) => {
|
|
14
|
+
switch (t) {
|
|
15
|
+
case "open": return e === "closed" ? "opening" : e;
|
|
16
|
+
case "ready": return e === "opening" ? "open" : e;
|
|
17
|
+
case "close": return e === "opening" || e === "open" ? "closing" : e;
|
|
18
|
+
case "end": return e === "closing" ? "closed" : e;
|
|
19
|
+
}
|
|
20
|
+
}, b = (e) => e ? 0 : 450, x = (e, t, n = 999) => {
|
|
21
|
+
let r = e.trim().split(/[\s/]+/)[0] ?? "", i = Number.parseFloat(r);
|
|
22
|
+
return !Number.isFinite(i) || i < 0 ? n : r.endsWith("%") ? i / 100 * Math.min(t.width, t.height) : r.endsWith("px") || r === String(i) ? i : n;
|
|
23
|
+
}, S = (e, t) => e === t || !!e && !!t && e.top === t.top && e.left === t.left && e.width === t.width && e.height === t.height, C = (e, t, n, r = 999) => {
|
|
24
|
+
if (e === "open") {
|
|
25
|
+
let e = Math.max(0, Math.min(280, n.width - 32, n.height - 32));
|
|
26
|
+
return {
|
|
27
|
+
top: (n.height - e) / 2,
|
|
28
|
+
left: (n.width - e) / 2,
|
|
29
|
+
width: e,
|
|
30
|
+
height: e,
|
|
31
|
+
borderRadius: _,
|
|
32
|
+
fontSize: e * g / 280
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
return t ? {
|
|
36
|
+
top: t.top,
|
|
37
|
+
left: t.left,
|
|
38
|
+
width: t.width,
|
|
39
|
+
height: t.height,
|
|
40
|
+
borderRadius: r,
|
|
41
|
+
fontSize: t.height * v
|
|
42
|
+
} : {};
|
|
43
|
+
}, w = ({ children: g, content: _, bg: v = "var(--kapi-primary-soft)", ink: w = "var(--kapi-primary-ink)", label: T, labels: E, className: D, style: O, id: k }) => {
|
|
44
|
+
let A = e("photoView", h, E), j = p(null), M = p(null), N = p(!1), [P, F] = f(y, "closed"), [I, L] = m(null), [R, z] = m(999), [B, V] = m(null), H = (e) => {
|
|
45
|
+
e.stopPropagation();
|
|
46
|
+
let n = j.current;
|
|
47
|
+
if (!n) return;
|
|
48
|
+
let r = n.getBoundingClientRect();
|
|
49
|
+
L(r);
|
|
50
|
+
let i = n.firstElementChild ?? n;
|
|
51
|
+
z(x(getComputedStyle(i).borderRadius, r)), V(t(n)), F("open");
|
|
52
|
+
}, U = (e) => {
|
|
53
|
+
e.stopPropagation(), F("close");
|
|
54
|
+
};
|
|
55
|
+
d(() => {
|
|
56
|
+
if (P !== "opening") return;
|
|
57
|
+
let e = requestAnimationFrame(() => F("ready"));
|
|
58
|
+
return () => cancelAnimationFrame(e);
|
|
59
|
+
}, [P]);
|
|
60
|
+
let W = P === "closed";
|
|
61
|
+
u(() => {
|
|
62
|
+
if (!W) return n(() => {
|
|
63
|
+
let e = j.current;
|
|
64
|
+
if (!e) return;
|
|
65
|
+
let t = e.getBoundingClientRect();
|
|
66
|
+
L((e) => S(e, t) ? e : t);
|
|
67
|
+
});
|
|
68
|
+
}, [W]), u(() => {
|
|
69
|
+
if (P !== "closing") return;
|
|
70
|
+
let e = window.setTimeout(() => F("end"), b(a(j.current)));
|
|
71
|
+
return () => window.clearTimeout(e);
|
|
72
|
+
}, [P]), d(() => {
|
|
73
|
+
P === "closed" ? (L(null), V(null), N.current && j.current?.focus(), N.current = !1) : P === "opening" && (N.current = !0, M.current?.focus());
|
|
74
|
+
}, [P]);
|
|
75
|
+
let G = C(P, I, typeof window > "u" ? {
|
|
76
|
+
width: 1200,
|
|
77
|
+
height: 800
|
|
78
|
+
} : {
|
|
79
|
+
width: window.innerWidth,
|
|
80
|
+
height: window.innerHeight
|
|
81
|
+
}, R);
|
|
82
|
+
return /* @__PURE__ */ l(s, { children: [/* @__PURE__ */ c("button", {
|
|
83
|
+
ref: j,
|
|
84
|
+
type: "button",
|
|
85
|
+
onClick: H,
|
|
86
|
+
id: k,
|
|
87
|
+
className: r("kapi-photo-thumb", D),
|
|
88
|
+
style: O,
|
|
89
|
+
"aria-label": T,
|
|
90
|
+
"aria-haspopup": "dialog",
|
|
91
|
+
children: g
|
|
92
|
+
}), P !== "closed" && /* @__PURE__ */ c(i, {
|
|
93
|
+
root: B,
|
|
94
|
+
children: /* @__PURE__ */ c("div", {
|
|
95
|
+
ref: M,
|
|
96
|
+
className: `kapi-photo-overlay${P === "open" ? " is-open" : ""}`,
|
|
97
|
+
role: "dialog",
|
|
98
|
+
"aria-modal": "true",
|
|
99
|
+
"aria-label": T ?? A.viewer,
|
|
100
|
+
tabIndex: -1,
|
|
101
|
+
onClick: U,
|
|
102
|
+
onKeyDown: (e) => {
|
|
103
|
+
e.key === "Escape" ? (e.preventDefault(), U(e)) : o(e, M.current);
|
|
104
|
+
},
|
|
105
|
+
children: /* @__PURE__ */ c("div", {
|
|
106
|
+
className: "kapi-photo-fly",
|
|
107
|
+
style: {
|
|
108
|
+
...G,
|
|
109
|
+
background: v,
|
|
110
|
+
color: w
|
|
111
|
+
},
|
|
112
|
+
onTransitionEnd: (e) => {
|
|
113
|
+
e.target === e.currentTarget && F("end");
|
|
114
|
+
},
|
|
115
|
+
onClick: (e) => e.stopPropagation(),
|
|
116
|
+
children: _
|
|
117
|
+
})
|
|
118
|
+
})
|
|
119
|
+
})] });
|
|
120
|
+
};
|
|
121
|
+
//#endregion
|
|
122
|
+
export { h as DEFAULT_PHOTO_VIEW_LABELS, w as KapiPhotoView, x as parseThumbRadius, b as photoCloseFallbackDelay, C as photoFlyStyle, y as photoViewReducer, S as sameRect };
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { type CSSProperties, type ReactNode, type RefObject } from "react";
|
|
2
|
+
import { type KapiPopoverAlign, type KapiPopoverSide } from "./popoverLogic";
|
|
3
|
+
import "./KapiPopover.css";
|
|
4
|
+
export type KapiPopoverProps = {
|
|
5
|
+
/** Muestra u oculta el popover (controlado). */
|
|
6
|
+
open: boolean;
|
|
7
|
+
/** Elemento al que se ancla. */
|
|
8
|
+
anchorRef: RefObject<HTMLElement | null>;
|
|
9
|
+
/** Pedido de cierre: Escape o click afuera (si están habilitados). El padre pone `open={false}`. */
|
|
10
|
+
onClose: () => void;
|
|
11
|
+
/** Lado preferido; da vuelta solo si no entra. Default `"bottom"`. */
|
|
12
|
+
side?: KapiPopoverSide;
|
|
13
|
+
/** Default `"start"`. */
|
|
14
|
+
align?: KapiPopoverAlign;
|
|
15
|
+
/** Separación con el ancla (px). Default `6`. */
|
|
16
|
+
offset?: number;
|
|
17
|
+
/** Margen mínimo al borde del viewport (px). Default `8`. */
|
|
18
|
+
margin?: number;
|
|
19
|
+
/** Mismo ancho mínimo que el ancla (útil para listas desplegables). */
|
|
20
|
+
matchAnchorWidth?: boolean;
|
|
21
|
+
/** Default `"dialog"`. */
|
|
22
|
+
role?: string;
|
|
23
|
+
/** Nombre accesible de la superficie. */
|
|
24
|
+
"aria-label"?: string;
|
|
25
|
+
/** `id` de la superficie (p. ej. para el `aria-controls` del ancla). */
|
|
26
|
+
id?: string;
|
|
27
|
+
/** Clase de la superficie. */
|
|
28
|
+
className?: string;
|
|
29
|
+
/** Estilo de la superficie; la posición calculada (`top`/`left`/ancho) gana sobre él. */
|
|
30
|
+
style?: CSSProperties;
|
|
31
|
+
/** Default `true`. */
|
|
32
|
+
closeOnEscape?: boolean;
|
|
33
|
+
/** Pointerdown fuera del popover y del ancla. Default `true`. */
|
|
34
|
+
closeOnOutside?: boolean;
|
|
35
|
+
/** Al cerrar con Escape devuelve el foco al ancla. Default `true`. */
|
|
36
|
+
restoreFocus?: boolean;
|
|
37
|
+
/** Contenido del popover. */
|
|
38
|
+
children: ReactNode;
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* Popover anclado: se portalea a la raíz `.kapi` (o al `<dialog>` abierto), se posiciona con
|
|
42
|
+
* `usePlacement` (motor `placePopover`) en coordenadas de viewport y se reubica con scroll, resize y
|
|
43
|
+
* cambios de tamaño.
|
|
44
|
+
* No maneja el foco al abrir: el contenido decide (un input lo conserva, un menú lo toma).
|
|
45
|
+
*/
|
|
46
|
+
export declare function KapiPopover({ open, anchorRef, onClose, side, align, offset, margin, matchAnchorWidth, role, "aria-label": ariaLabel, id, className, style: styleProp, closeOnEscape, closeOnOutside, restoreFocus, children }: KapiPopoverProps): import("react").JSX.Element | null;
|