@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,66 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useLabels as e } from "../locale/KapiLocaleProvider.js";
|
|
3
|
+
import { DEFAULT_LINK_LABELS as t } from "../locale/linkLabels.js";
|
|
4
|
+
import { accessCardAffordance as n, accessCardClasses as r, isActivationKey as i, linkAttrs as a } from "./accessCardLogic.js";
|
|
5
|
+
/* empty css */
|
|
6
|
+
import { Fragment as o, jsx as s, jsxs as c } from "react/jsx-runtime";
|
|
7
|
+
import { ChevronRight as l, ExternalLink as u } from "lucide-react";
|
|
8
|
+
//#region src/components/layout/KapiAccessCard.tsx
|
|
9
|
+
var d = ({ icon: d, tone: f, title: p, description: m, external: h = !1, href: g, newTab: _, onClick: v, className: y, style: b, id: x, labels: S }) => {
|
|
10
|
+
let C = e("link", t, S), w = r({
|
|
11
|
+
tone: f,
|
|
12
|
+
className: y
|
|
13
|
+
}), T = /* @__PURE__ */ c(o, { children: [
|
|
14
|
+
/* @__PURE__ */ s("span", {
|
|
15
|
+
className: "kapi-accesscard__icon",
|
|
16
|
+
"aria-hidden": "true",
|
|
17
|
+
children: d
|
|
18
|
+
}),
|
|
19
|
+
/* @__PURE__ */ c("span", {
|
|
20
|
+
className: "kapi-accesscard__txt",
|
|
21
|
+
children: [/* @__PURE__ */ s("span", {
|
|
22
|
+
className: "kapi-accesscard__title",
|
|
23
|
+
children: p
|
|
24
|
+
}), m !== void 0 && /* @__PURE__ */ s("span", {
|
|
25
|
+
className: "kapi-accesscard__desc",
|
|
26
|
+
children: m
|
|
27
|
+
})]
|
|
28
|
+
}),
|
|
29
|
+
n(h) === "external" ? /* @__PURE__ */ s(u, {
|
|
30
|
+
className: "kapi-accesscard__go kapi-accesscard__go--ext",
|
|
31
|
+
size: 16,
|
|
32
|
+
"aria-hidden": "true"
|
|
33
|
+
}) : /* @__PURE__ */ s(l, {
|
|
34
|
+
className: "kapi-accesscard__go",
|
|
35
|
+
size: 16,
|
|
36
|
+
"aria-hidden": "true"
|
|
37
|
+
})
|
|
38
|
+
] });
|
|
39
|
+
return g === void 0 ? /* @__PURE__ */ s("div", {
|
|
40
|
+
className: w,
|
|
41
|
+
style: b,
|
|
42
|
+
id: x,
|
|
43
|
+
role: "button",
|
|
44
|
+
tabIndex: 0,
|
|
45
|
+
onClick: v,
|
|
46
|
+
onKeyDown: (e) => {
|
|
47
|
+
i(e.key) && (e.preventDefault(), v?.());
|
|
48
|
+
},
|
|
49
|
+
children: T
|
|
50
|
+
}) : /* @__PURE__ */ c("a", {
|
|
51
|
+
className: w,
|
|
52
|
+
style: b,
|
|
53
|
+
id: x,
|
|
54
|
+
href: g,
|
|
55
|
+
...a({
|
|
56
|
+
external: h,
|
|
57
|
+
newTab: _
|
|
58
|
+
}),
|
|
59
|
+
children: [T, _ && /* @__PURE__ */ c("span", {
|
|
60
|
+
className: "kapi-accesscard__sr",
|
|
61
|
+
children: [" ", C.newTab]
|
|
62
|
+
})]
|
|
63
|
+
});
|
|
64
|
+
};
|
|
65
|
+
//#endregion
|
|
66
|
+
export { d as KapiAccessCard };
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { type RefObject } from "react";
|
|
2
|
+
import { type KapiRootProps } from "../rootProps";
|
|
3
|
+
import type { KapiLabelsOverride } from "../labelsLogic";
|
|
4
|
+
export type KapiAccountMenuUser = {
|
|
5
|
+
name: string;
|
|
6
|
+
email: string;
|
|
7
|
+
role?: string;
|
|
8
|
+
/** Pisa las iniciales calculadas desde `name`. */
|
|
9
|
+
initials?: string;
|
|
10
|
+
};
|
|
11
|
+
/** `className`/`style` van al menú (`role="menu"`); `id` también (para el `aria-controls` del disparador). */
|
|
12
|
+
export type KapiAccountMenuProps = KapiRootProps & {
|
|
13
|
+
/** Muestra u oculta el menú (controlado). */
|
|
14
|
+
open: boolean;
|
|
15
|
+
/** Pide cerrar el menú (Escape, click afuera o tras elegir una acción); el foco vuelve al disparador. */
|
|
16
|
+
onClose: () => void;
|
|
17
|
+
/** Usuario de la cabecera: nombre, email, rol e iniciales opcionales. */
|
|
18
|
+
user: KapiAccountMenuUser;
|
|
19
|
+
/** Cantidad de notificaciones sin leer; con 0 o sin valor no se muestra el badge. */
|
|
20
|
+
notificationsCount?: number | undefined;
|
|
21
|
+
/** Click en "Notificaciones"; después el menú se cierra. */
|
|
22
|
+
onNotifications?: (() => void) | undefined;
|
|
23
|
+
/** Click en "Mi perfil"; después el menú se cierra. */
|
|
24
|
+
onProfile?: (() => void) | undefined;
|
|
25
|
+
/** Click en "Configuración"; después el menú se cierra. */
|
|
26
|
+
onConfig?: (() => void) | undefined;
|
|
27
|
+
/** Click en "Cerrar sesión"; después el menú se cierra. */
|
|
28
|
+
onLogout?: (() => void) | undefined;
|
|
29
|
+
/** Textos del menú. */
|
|
30
|
+
labels?: KapiLabelsOverride<KapiAccountMenuLabels> | undefined;
|
|
31
|
+
/**
|
|
32
|
+
* Disparador al que vuelve el foco al cerrar con Escape o al elegir un ítem. Sin él, vuelve al
|
|
33
|
+
* elemento que tenía el foco al abrir (normalmente el botón que lo abrió).
|
|
34
|
+
*/
|
|
35
|
+
triggerRef?: RefObject<HTMLElement | null> | undefined;
|
|
36
|
+
};
|
|
37
|
+
export type KapiAccountMenuLabels = {
|
|
38
|
+
notifications: string;
|
|
39
|
+
profile: string;
|
|
40
|
+
config: string;
|
|
41
|
+
theme: string;
|
|
42
|
+
themeLight: string;
|
|
43
|
+
themeDark: string;
|
|
44
|
+
/** Sigue al modo claro/oscuro del sistema operativo. */
|
|
45
|
+
themeSystem: string;
|
|
46
|
+
font: string;
|
|
47
|
+
logout: string;
|
|
48
|
+
/** Nombre accesible del menú. */
|
|
49
|
+
menu: string;
|
|
50
|
+
};
|
|
51
|
+
export declare const DEFAULT_ACCOUNT_MENU_LABELS: KapiAccountMenuLabels;
|
|
52
|
+
/**
|
|
53
|
+
* Menú de cuenta: popover que nace del botón "Cuenta" del rail. Controlado por
|
|
54
|
+
* `open`; el tema y la fuente se leen y cambian con `useKapiTheme`. Se cierra con
|
|
55
|
+
* click afuera (backdrop) o Escape.
|
|
56
|
+
* Patrón WAI-ARIA menu button: al abrir enfoca el primer ítem; flechas (con vuelta), Home/End recorren
|
|
57
|
+
* `menuitem`/`menuitemradio` (modelo compartido `menuKeyboardLogic`); Escape o elegir un ítem cierran y
|
|
58
|
+
* devuelven el foco al disparador; Tab cierra y deja seguir el foco. El disparador lo pone el consumidor
|
|
59
|
+
* (con `aria-haspopup="menu"` y `aria-expanded`).
|
|
60
|
+
*/
|
|
61
|
+
export declare function KapiAccountMenu({ open, onClose, user, notificationsCount, onNotifications, onProfile, onConfig, onLogout, labels, id, triggerRef, className, style }: KapiAccountMenuProps): import("react").JSX.Element | null;
|
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useLabels as e } from "../locale/KapiLocaleProvider.js";
|
|
3
|
+
import { joinClasses as t } from "../rootProps.js";
|
|
4
|
+
import { useExitPresence as n } from "../overlays/useExitPresence.js";
|
|
5
|
+
import { focusedMenuIndex as r, menuKeyIntent as i, nextEnabledIndex as a } from "../overlays/menuKeyboardLogic.js";
|
|
6
|
+
import { initialsFrom as o } from "../display/avatarLogic.js";
|
|
7
|
+
import { useKapiTheme as s } from "../../hooks/useKapiTheme.js";
|
|
8
|
+
import { Fragment as c, jsx as l, jsxs as u } from "react/jsx-runtime";
|
|
9
|
+
import { useEffect as d, useId as f, useRef as p } from "react";
|
|
10
|
+
import { Bell as m, LogOut as h, Settings as g, User as _ } from "lucide-react";
|
|
11
|
+
//#region src/components/layout/KapiAccountMenu.tsx
|
|
12
|
+
var v = {
|
|
13
|
+
notifications: "Notificaciones",
|
|
14
|
+
profile: "Mi perfil",
|
|
15
|
+
config: "Configuración",
|
|
16
|
+
theme: "Tema",
|
|
17
|
+
themeLight: "Claro",
|
|
18
|
+
themeDark: "Oscuro",
|
|
19
|
+
themeSystem: "Sistema",
|
|
20
|
+
font: "Fuente",
|
|
21
|
+
logout: "Cerrar sesión",
|
|
22
|
+
menu: "Menú de cuenta"
|
|
23
|
+
}, y = {
|
|
24
|
+
size: 18,
|
|
25
|
+
strokeWidth: 1.8
|
|
26
|
+
}, b = [{
|
|
27
|
+
key: "nunito",
|
|
28
|
+
label: "Nunito"
|
|
29
|
+
}, {
|
|
30
|
+
key: "roboto",
|
|
31
|
+
label: "Roboto"
|
|
32
|
+
}], x = ({ label: e, children: t }) => {
|
|
33
|
+
let n = f();
|
|
34
|
+
return /* @__PURE__ */ u("div", {
|
|
35
|
+
className: "kapi-acct__row",
|
|
36
|
+
role: "group",
|
|
37
|
+
"aria-labelledby": n,
|
|
38
|
+
children: [/* @__PURE__ */ l("span", {
|
|
39
|
+
id: n,
|
|
40
|
+
className: "kapi-acct__rowlabel",
|
|
41
|
+
children: e
|
|
42
|
+
}), /* @__PURE__ */ l("div", {
|
|
43
|
+
className: "kapi-acct__seg",
|
|
44
|
+
children: t
|
|
45
|
+
})]
|
|
46
|
+
});
|
|
47
|
+
}, S = "[role=\"menuitem\"], [role=\"menuitemradio\"]";
|
|
48
|
+
function C({ open: f, onClose: C, user: w, notificationsCount: T = 0, onNotifications: E, onProfile: D, onConfig: O, onLogout: k, labels: A, id: j, triggerRef: M, className: N, style: P }) {
|
|
49
|
+
let { preference: F, setPreference: I, font: L, setFont: R } = s(), z = e("accountMenu", v, A), B = [
|
|
50
|
+
{
|
|
51
|
+
key: "light",
|
|
52
|
+
label: z.themeLight
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
key: "dark",
|
|
56
|
+
label: z.themeDark
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
key: "system",
|
|
60
|
+
label: z.themeSystem
|
|
61
|
+
}
|
|
62
|
+
], V = p(null), H = p(null), { present: U, closing: W } = n(f, V), G = () => Array.from(V.current?.querySelectorAll(S) ?? []), K = () => {
|
|
63
|
+
C(), (M?.current ?? H.current)?.focus();
|
|
64
|
+
}, q = p(K);
|
|
65
|
+
if (q.current = K, d(() => {
|
|
66
|
+
f && (H.current = document.activeElement instanceof HTMLElement ? document.activeElement : null, V.current?.querySelector(S)?.focus());
|
|
67
|
+
}, [f]), d(() => {
|
|
68
|
+
if (!f) return;
|
|
69
|
+
let e = (e) => {
|
|
70
|
+
e.key === "Escape" && (e.preventDefault(), q.current());
|
|
71
|
+
};
|
|
72
|
+
return document.addEventListener("keydown", e), () => document.removeEventListener("keydown", e);
|
|
73
|
+
}, [f]), !U) return null;
|
|
74
|
+
let J = (e) => () => {
|
|
75
|
+
e?.(), K();
|
|
76
|
+
}, Y = (e) => {
|
|
77
|
+
let t = i(e.key);
|
|
78
|
+
if (t.kind === "move") {
|
|
79
|
+
e.preventDefault();
|
|
80
|
+
let n = G();
|
|
81
|
+
n[a(r(document.activeElement), t.dir, n.map((e, t) => t))]?.focus();
|
|
82
|
+
} else t.kind === "close" && t.returnFocus ? (e.preventDefault(), e.stopPropagation(), K()) : t.kind === "close" && !t.returnFocus && ((M?.current ?? H.current)?.focus(), C());
|
|
83
|
+
}, X = 0, Z = () => ({
|
|
84
|
+
tabIndex: -1,
|
|
85
|
+
"data-menu-index": X++
|
|
86
|
+
});
|
|
87
|
+
return /* @__PURE__ */ u(c, { children: [/* @__PURE__ */ l("div", {
|
|
88
|
+
className: "kapi-acct__backdrop",
|
|
89
|
+
"data-closing": W || void 0,
|
|
90
|
+
onClick: C,
|
|
91
|
+
"aria-hidden": "true"
|
|
92
|
+
}), /* @__PURE__ */ u("div", {
|
|
93
|
+
ref: V,
|
|
94
|
+
id: j,
|
|
95
|
+
className: t("kapi-acct", N),
|
|
96
|
+
style: P,
|
|
97
|
+
role: "menu",
|
|
98
|
+
"data-closing": W || void 0,
|
|
99
|
+
inert: W || void 0,
|
|
100
|
+
"aria-label": z.menu,
|
|
101
|
+
onKeyDown: Y,
|
|
102
|
+
children: [/* @__PURE__ */ u("div", {
|
|
103
|
+
className: "kapi-acct__head",
|
|
104
|
+
children: [/* @__PURE__ */ l("span", {
|
|
105
|
+
className: "kapi-acct__av",
|
|
106
|
+
children: w.initials ?? o(w.name)
|
|
107
|
+
}), /* @__PURE__ */ u("div", {
|
|
108
|
+
className: "kapi-acct__who",
|
|
109
|
+
children: [/* @__PURE__ */ l("div", {
|
|
110
|
+
className: "kapi-acct__name",
|
|
111
|
+
children: w.name
|
|
112
|
+
}), /* @__PURE__ */ l("div", {
|
|
113
|
+
className: "kapi-acct__mail",
|
|
114
|
+
children: w.role ? `${w.email} · ${w.role}` : w.email
|
|
115
|
+
})]
|
|
116
|
+
})]
|
|
117
|
+
}), /* @__PURE__ */ u("div", {
|
|
118
|
+
className: "kapi-acct__body",
|
|
119
|
+
children: [
|
|
120
|
+
/* @__PURE__ */ u("button", {
|
|
121
|
+
type: "button",
|
|
122
|
+
role: "menuitem",
|
|
123
|
+
...Z(),
|
|
124
|
+
className: "kapi-acct__item",
|
|
125
|
+
onClick: J(E),
|
|
126
|
+
children: [/* @__PURE__ */ u("span", {
|
|
127
|
+
className: "kapi-acct__label",
|
|
128
|
+
children: [/* @__PURE__ */ l(m, {
|
|
129
|
+
...y,
|
|
130
|
+
color: "var(--kapi-ink-3)"
|
|
131
|
+
}), z.notifications]
|
|
132
|
+
}), T > 0 && /* @__PURE__ */ l("span", {
|
|
133
|
+
className: "kapi-acct__badge",
|
|
134
|
+
children: T
|
|
135
|
+
})]
|
|
136
|
+
}),
|
|
137
|
+
/* @__PURE__ */ l("button", {
|
|
138
|
+
type: "button",
|
|
139
|
+
role: "menuitem",
|
|
140
|
+
...Z(),
|
|
141
|
+
className: "kapi-acct__item",
|
|
142
|
+
onClick: J(D),
|
|
143
|
+
children: /* @__PURE__ */ u("span", {
|
|
144
|
+
className: "kapi-acct__label",
|
|
145
|
+
children: [/* @__PURE__ */ l(_, {
|
|
146
|
+
...y,
|
|
147
|
+
color: "var(--kapi-ink-3)"
|
|
148
|
+
}), z.profile]
|
|
149
|
+
})
|
|
150
|
+
}),
|
|
151
|
+
/* @__PURE__ */ l("button", {
|
|
152
|
+
type: "button",
|
|
153
|
+
role: "menuitem",
|
|
154
|
+
...Z(),
|
|
155
|
+
className: "kapi-acct__item",
|
|
156
|
+
onClick: J(O),
|
|
157
|
+
children: /* @__PURE__ */ u("span", {
|
|
158
|
+
className: "kapi-acct__label",
|
|
159
|
+
children: [/* @__PURE__ */ l(g, {
|
|
160
|
+
...y,
|
|
161
|
+
color: "var(--kapi-ink-3)"
|
|
162
|
+
}), z.config]
|
|
163
|
+
})
|
|
164
|
+
}),
|
|
165
|
+
/* @__PURE__ */ l(x, {
|
|
166
|
+
label: z.theme,
|
|
167
|
+
children: B.map((e) => /* @__PURE__ */ l("button", {
|
|
168
|
+
type: "button",
|
|
169
|
+
role: "menuitemradio",
|
|
170
|
+
...Z(),
|
|
171
|
+
className: F === e.key ? "on" : "",
|
|
172
|
+
"aria-checked": F === e.key,
|
|
173
|
+
onClick: () => I(e.key),
|
|
174
|
+
children: e.label
|
|
175
|
+
}, e.key))
|
|
176
|
+
}),
|
|
177
|
+
/* @__PURE__ */ l(x, {
|
|
178
|
+
label: z.font,
|
|
179
|
+
children: b.map((e) => /* @__PURE__ */ l("button", {
|
|
180
|
+
type: "button",
|
|
181
|
+
role: "menuitemradio",
|
|
182
|
+
...Z(),
|
|
183
|
+
className: L === e.key ? "on" : "",
|
|
184
|
+
"aria-checked": L === e.key,
|
|
185
|
+
onClick: () => R(e.key),
|
|
186
|
+
children: e.label
|
|
187
|
+
}, e.key))
|
|
188
|
+
}),
|
|
189
|
+
/* @__PURE__ */ l("div", {
|
|
190
|
+
role: "separator",
|
|
191
|
+
className: "kapi-acct__sep"
|
|
192
|
+
}),
|
|
193
|
+
/* @__PURE__ */ l("button", {
|
|
194
|
+
type: "button",
|
|
195
|
+
role: "menuitem",
|
|
196
|
+
...Z(),
|
|
197
|
+
className: "kapi-acct__item kapi-acct__item--danger",
|
|
198
|
+
onClick: J(k),
|
|
199
|
+
children: /* @__PURE__ */ u("span", {
|
|
200
|
+
className: "kapi-acct__label",
|
|
201
|
+
children: [/* @__PURE__ */ l(h, {
|
|
202
|
+
...y,
|
|
203
|
+
color: "var(--kapi-danger)"
|
|
204
|
+
}), z.logout]
|
|
205
|
+
})
|
|
206
|
+
})
|
|
207
|
+
]
|
|
208
|
+
})]
|
|
209
|
+
})] });
|
|
210
|
+
}
|
|
211
|
+
//#endregion
|
|
212
|
+
export { v as DEFAULT_ACCOUNT_MENU_LABELS, C as KapiAccountMenu };
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { HTMLAttributes, ReactNode } from "react";
|
|
2
|
+
import "./KapiCard.css";
|
|
3
|
+
type DivProps = Omit<HTMLAttributes<HTMLDivElement>, "title">;
|
|
4
|
+
export type KapiCardHeaderProps = DivProps & {
|
|
5
|
+
/** Título a la izquierda de la cabecera. */
|
|
6
|
+
title?: ReactNode;
|
|
7
|
+
/** Acciones a la derecha (botones, badge, link…). */
|
|
8
|
+
actions?: ReactNode;
|
|
9
|
+
};
|
|
10
|
+
/** Cabecera de card: título a la izquierda, acciones a la derecha. */
|
|
11
|
+
export declare function KapiCardHeader({ title, actions, className, children, ...rest }: KapiCardHeaderProps): import("react").JSX.Element;
|
|
12
|
+
/** Cuerpo de card (ocupa el alto restante). */
|
|
13
|
+
export declare function KapiCardBody({ className, ...rest }: DivProps): import("react").JSX.Element;
|
|
14
|
+
/** Pie de card, con separador superior y acciones alineadas a la derecha. */
|
|
15
|
+
export declare function KapiCardFooter({ className, ...rest }: DivProps): import("react").JSX.Element;
|
|
16
|
+
export type KapiCardProps = DivProps & {
|
|
17
|
+
/** Atajo: si se pasa, renderiza un `KapiCardHeader`. */
|
|
18
|
+
title?: ReactNode;
|
|
19
|
+
/** Atajo: acciones a la derecha de la cabecera (botones, badge, link…). */
|
|
20
|
+
actions?: ReactNode;
|
|
21
|
+
/** Atajo: si se pasa, renderiza un `KapiCardFooter`. */
|
|
22
|
+
footer?: ReactNode;
|
|
23
|
+
/** Sin padding propio: para contenido a sangre (tablas, listas) con header/footer con su padding. */
|
|
24
|
+
flush?: boolean;
|
|
25
|
+
/**
|
|
26
|
+
* La card es contenedor (`container: kapi-card`): bajo 360px de ancho el header apila título y
|
|
27
|
+
* acciones y el pie reparte sus botones. Opt-in porque el contenedor no toma ancho de su contenido
|
|
28
|
+
* (en un flex que la dimensiona por contenido hay que darle ancho). Default `false`.
|
|
29
|
+
*/
|
|
30
|
+
responsive?: boolean;
|
|
31
|
+
/**
|
|
32
|
+
* La card responde al puntero: cursor, hover-lift y anillo de foco. Es sólo presentación —
|
|
33
|
+
* el destino lo pone el consumidor (`onClick` con `role`/`tabIndex`, o un enlace adentro).
|
|
34
|
+
* Default `false`: una card de panel estática no se mueve. Sin movimiento, el lift se apaga.
|
|
35
|
+
*/
|
|
36
|
+
interactive?: boolean;
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* Card. Dos formas de uso: props (`title`/`actions`/`footer` + children)
|
|
40
|
+
* o composición con `KapiCardHeader`, `KapiCardBody` y `KapiCardFooter`.
|
|
41
|
+
*/
|
|
42
|
+
export declare function KapiCard({ title, actions, footer, flush, responsive, interactive, className, children, ...rest }: KapiCardProps): import("react").JSX.Element;
|
|
43
|
+
export {};
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cardClasses as e, hasCardHeader as t } from "./cardLogic.js";
|
|
3
|
+
/* empty css */
|
|
4
|
+
import { jsx as n, jsxs as r } from "react/jsx-runtime";
|
|
5
|
+
//#region src/components/layout/KapiCard.tsx
|
|
6
|
+
function i({ title: e, actions: t, className: i, children: a, ...o }) {
|
|
7
|
+
return /* @__PURE__ */ r("div", {
|
|
8
|
+
className: ["kapi-panelcard__head", i].filter(Boolean).join(" "),
|
|
9
|
+
...o,
|
|
10
|
+
children: [
|
|
11
|
+
e != null && /* @__PURE__ */ n("span", { children: e }),
|
|
12
|
+
a,
|
|
13
|
+
t != null && /* @__PURE__ */ n("span", {
|
|
14
|
+
className: "kapi-panelcard__actions",
|
|
15
|
+
children: t
|
|
16
|
+
})
|
|
17
|
+
]
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
function a({ className: e, ...t }) {
|
|
21
|
+
return /* @__PURE__ */ n("div", {
|
|
22
|
+
className: ["kapi-card__body", e].filter(Boolean).join(" "),
|
|
23
|
+
...t
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
function o({ className: e, ...t }) {
|
|
27
|
+
return /* @__PURE__ */ n("div", {
|
|
28
|
+
className: ["kapi-card__foot", e].filter(Boolean).join(" "),
|
|
29
|
+
...t
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
function s({ title: s, actions: c, footer: l, flush: u = !1, responsive: d = !1, interactive: f = !1, className: p, children: m, ...h }) {
|
|
33
|
+
let g = t(s, c) || l != null;
|
|
34
|
+
return /* @__PURE__ */ r("div", {
|
|
35
|
+
className: e({
|
|
36
|
+
flush: u,
|
|
37
|
+
responsive: d,
|
|
38
|
+
interactive: f,
|
|
39
|
+
className: p
|
|
40
|
+
}),
|
|
41
|
+
...h,
|
|
42
|
+
children: [
|
|
43
|
+
t(s, c) && /* @__PURE__ */ n(i, {
|
|
44
|
+
title: s,
|
|
45
|
+
actions: c
|
|
46
|
+
}),
|
|
47
|
+
g ? /* @__PURE__ */ n(a, { children: m }) : m,
|
|
48
|
+
l != null && /* @__PURE__ */ n(o, { children: l })
|
|
49
|
+
]
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
//#endregion
|
|
53
|
+
export { s as KapiCard, a as KapiCardBody, o as KapiCardFooter, i as KapiCardHeader };
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { HTMLAttributes } from "react";
|
|
2
|
+
import { type KapiClusterAlign, type KapiClusterJustify, type KapiGap } from "./layoutPrimitives";
|
|
3
|
+
import "./layout-primitives.css";
|
|
4
|
+
export type KapiClusterProps = HTMLAttributes<HTMLDivElement> & {
|
|
5
|
+
/** Espacio entre hijos: número = px, string = largo CSS. Default 12px. */
|
|
6
|
+
gap?: KapiGap;
|
|
7
|
+
/** Distribución en el eje principal (`justify-content`). */
|
|
8
|
+
justify?: KapiClusterJustify;
|
|
9
|
+
/** Alineación en el eje cruzado (`align-items`). Default `center`. */
|
|
10
|
+
align?: KapiClusterAlign;
|
|
11
|
+
/** Si los hijos saltan de línea. Default `true`. */
|
|
12
|
+
wrap?: boolean;
|
|
13
|
+
};
|
|
14
|
+
/** Fila horizontal que envuelve (flex row wrap). */
|
|
15
|
+
export declare function KapiCluster({ gap, justify, align, wrap, className, style, children, ...rest }: KapiClusterProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { clusterProps as e } from "./layoutPrimitives.js";
|
|
3
|
+
/* empty css */
|
|
4
|
+
import { jsx as t } from "react/jsx-runtime";
|
|
5
|
+
//#region src/components/layout/KapiCluster.tsx
|
|
6
|
+
function n({ gap: n, justify: r, align: i, wrap: a, className: o, style: s, children: c, ...l }) {
|
|
7
|
+
return /* @__PURE__ */ t("div", {
|
|
8
|
+
...l,
|
|
9
|
+
...e({
|
|
10
|
+
gap: n,
|
|
11
|
+
justify: r,
|
|
12
|
+
align: i,
|
|
13
|
+
wrap: a,
|
|
14
|
+
className: o,
|
|
15
|
+
style: s
|
|
16
|
+
}),
|
|
17
|
+
children: c
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
//#endregion
|
|
21
|
+
export { n as KapiCluster };
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { type ReactNode } from "react";
|
|
2
|
+
import "../navigation/navigation.css";
|
|
3
|
+
import { type KapiPanelCollapsedMode } from "../navigation/panelMiniLogic";
|
|
4
|
+
import { type KapiRootProps } from "../rootProps";
|
|
5
|
+
import type { KapiLabelsOverride } from "../labelsLogic";
|
|
6
|
+
/** `className`/`style`/`id` van al contenedor del panel (`.kapi-ctxslot`), no al backdrop móvil. */
|
|
7
|
+
export type KapiContextSlotProps = KapiRootProps & {
|
|
8
|
+
/** Título del panel (cabecera). */
|
|
9
|
+
title: ReactNode;
|
|
10
|
+
/** Acciones extra en la cabecera, a la izquierda del botón de plegar. */
|
|
11
|
+
actions?: ReactNode;
|
|
12
|
+
/** Contenido del panel (usa KapiPanelItem, KapiPanelSection…). */
|
|
13
|
+
children?: ReactNode;
|
|
14
|
+
/** Estado controlado. Si se omite, el slot maneja su propio estado. */
|
|
15
|
+
open?: boolean;
|
|
16
|
+
/** Estado inicial no controlado. Por defecto: abierto en desktop, cerrado en móvil. */
|
|
17
|
+
defaultOpen?: boolean;
|
|
18
|
+
/** Se llama con el estado nuevo al plegar o desplegar. */
|
|
19
|
+
onOpenChange?: (open: boolean) => void;
|
|
20
|
+
/** Lado del contenido donde se ubica el panel. Por defecto "left". */
|
|
21
|
+
side?: "left" | "right";
|
|
22
|
+
/**
|
|
23
|
+
* Cómo queda plegado en desktop: `hidden` (default) lo oculta y deja el botón de reabrir; `mini` deja una tira
|
|
24
|
+
* de íconos (los `KapiPanelItem`, ítems de `KapiContextSections` y cabeceras de `KapiPanelGroup`) con tooltip
|
|
25
|
+
* y avisos. En móvil siempre es un drawer.
|
|
26
|
+
*/
|
|
27
|
+
collapsedMode?: KapiPanelCollapsedMode | undefined;
|
|
28
|
+
/** Nombre accesible del `<aside>` del panel; gana sobre `labels.region`. */
|
|
29
|
+
"aria-label"?: string;
|
|
30
|
+
/** Textos de plegar/desplegar. */
|
|
31
|
+
labels?: KapiLabelsOverride<KapiContextSlotLabels> | undefined;
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* Panel contextual plegable (OPCIONAL en el shell). Desktop: colapsa su ancho con
|
|
35
|
+
* animación (258px ↔ 44px con botón de reabrir). Móvil: drawer superpuesto con backdrop.
|
|
36
|
+
* Funciona con o sin rail: no depende de él.
|
|
37
|
+
*/
|
|
38
|
+
/** `region` es el nombre del panel (sin `aria-label`). */
|
|
39
|
+
export type KapiContextSlotLabels = {
|
|
40
|
+
collapse: string;
|
|
41
|
+
expand: string;
|
|
42
|
+
region: string;
|
|
43
|
+
};
|
|
44
|
+
export declare const DEFAULT_CONTEXT_SLOT_LABELS: KapiContextSlotLabels;
|
|
45
|
+
export declare const KapiContextSlot: ({ title, actions, children, open, defaultOpen, onOpenChange, side, collapsedMode, "aria-label": ariaLabelProp, labels, className, style, id }: KapiContextSlotProps) => import("react").JSX.Element;
|
|
@@ -0,0 +1,92 @@
|
|
|
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 { KapiPanelMiniContext as n } from "../navigation/panelMini.js";
|
|
6
|
+
import { resolveMini as r } from "../navigation/panelMiniLogic.js";
|
|
7
|
+
import { SHELL_MOBILE_QUERY as i, matchesQuery as a, useMediaQuery as o } from "../../hooks/useMediaQuery.js";
|
|
8
|
+
import { openOnBreakpointCross as s } from "../../hooks/breakpointOpenLogic.js";
|
|
9
|
+
import { Fragment as c, jsx as l, jsxs as u } from "react/jsx-runtime";
|
|
10
|
+
import { useCallback as d, useEffect as f, useMemo as p, useRef as m, useState as h } from "react";
|
|
11
|
+
import { ChevronsLeft as g, ChevronsRight as _ } from "lucide-react";
|
|
12
|
+
//#region src/components/layout/KapiContextSlot.tsx
|
|
13
|
+
var v = {
|
|
14
|
+
collapse: "Plegar panel",
|
|
15
|
+
expand: "Desplegar panel",
|
|
16
|
+
region: "Panel contextual"
|
|
17
|
+
}, y = ({ title: y, actions: b, children: x, open: S, defaultOpen: C, onOpenChange: w, side: T = "left", collapsedMode: E = "hidden", "aria-label": D, labels: O, className: k, style: A, id: j }) => {
|
|
18
|
+
let M = e("contextSlot", v, O), N = D ?? M.region, P = T === "right", F = P ? _ : g, I = P ? g : _, [L, R] = h(() => C ?? !a("(max-width: 768px)")), z = S ?? L, B = d((e) => {
|
|
19
|
+
S === void 0 && R(e), w?.(e);
|
|
20
|
+
}, [S, w]), V = o(i), H = m(V), U = m(V ? C ?? !0 : z);
|
|
21
|
+
f(() => {
|
|
22
|
+
let e = s(H.current, V, U.current);
|
|
23
|
+
H.current = V, e !== null && e !== z && B(e);
|
|
24
|
+
}, [
|
|
25
|
+
V,
|
|
26
|
+
z,
|
|
27
|
+
B
|
|
28
|
+
]), f(() => {
|
|
29
|
+
V || (U.current = z);
|
|
30
|
+
}, [V, z]);
|
|
31
|
+
let W = r({
|
|
32
|
+
collapsedMode: E,
|
|
33
|
+
open: z,
|
|
34
|
+
mobile: V
|
|
35
|
+
}), G = p(() => ({
|
|
36
|
+
mini: W,
|
|
37
|
+
expand: () => B(!0),
|
|
38
|
+
tooltipSide: P ? "left" : "right"
|
|
39
|
+
}), [
|
|
40
|
+
W,
|
|
41
|
+
B,
|
|
42
|
+
P
|
|
43
|
+
]);
|
|
44
|
+
return /* @__PURE__ */ u(c, { children: [/* @__PURE__ */ u("div", {
|
|
45
|
+
id: j,
|
|
46
|
+
className: t("kapi-ctxslot", P && "kapi-ctxslot--right", !z && "is-collapsed", W && "is-mini kapi-navmini", k),
|
|
47
|
+
style: A,
|
|
48
|
+
children: [/* @__PURE__ */ l("div", {
|
|
49
|
+
className: "kapi-ctxslot__inner",
|
|
50
|
+
children: /* @__PURE__ */ u("aside", {
|
|
51
|
+
className: "kapi-ctxpanel",
|
|
52
|
+
"aria-label": N,
|
|
53
|
+
children: [/* @__PURE__ */ u("div", {
|
|
54
|
+
className: "kapi-ctxpanel__head",
|
|
55
|
+
children: [/* @__PURE__ */ l("span", { children: y }), /* @__PURE__ */ u("div", {
|
|
56
|
+
className: "kapi-ctxpanel__actions",
|
|
57
|
+
children: [b, /* @__PURE__ */ l("button", {
|
|
58
|
+
type: "button",
|
|
59
|
+
className: "kapi-paneltoggle",
|
|
60
|
+
onClick: () => B(!1),
|
|
61
|
+
"aria-label": M.collapse,
|
|
62
|
+
children: /* @__PURE__ */ l(F, {
|
|
63
|
+
size: 16,
|
|
64
|
+
strokeWidth: 2,
|
|
65
|
+
"aria-hidden": "true"
|
|
66
|
+
})
|
|
67
|
+
})]
|
|
68
|
+
})]
|
|
69
|
+
}), /* @__PURE__ */ l(n.Provider, {
|
|
70
|
+
value: G,
|
|
71
|
+
children: x
|
|
72
|
+
})]
|
|
73
|
+
})
|
|
74
|
+
}), /* @__PURE__ */ l("button", {
|
|
75
|
+
type: "button",
|
|
76
|
+
className: "kapi-paneltoggle kapi-ctxslot__reopen",
|
|
77
|
+
onClick: () => B(!0),
|
|
78
|
+
"aria-label": M.expand,
|
|
79
|
+
children: /* @__PURE__ */ l(I, {
|
|
80
|
+
size: 16,
|
|
81
|
+
strokeWidth: 2,
|
|
82
|
+
"aria-hidden": "true"
|
|
83
|
+
})
|
|
84
|
+
})]
|
|
85
|
+
}), /* @__PURE__ */ l("div", {
|
|
86
|
+
className: "kapi-ctxslot__backdrop",
|
|
87
|
+
onClick: () => B(!1),
|
|
88
|
+
"aria-hidden": "true"
|
|
89
|
+
})] });
|
|
90
|
+
};
|
|
91
|
+
//#endregion
|
|
92
|
+
export { v as DEFAULT_CONTEXT_SLOT_LABELS, y as KapiContextSlot };
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { HTMLAttributes, ReactNode } from "react";
|
|
2
|
+
import "./KapiDivider.css";
|
|
3
|
+
export type KapiDividerOrientation = "horizontal" | "vertical";
|
|
4
|
+
/** Atributos nativos (`id`, `style`, `data-*`…) van al separador. */
|
|
5
|
+
export type KapiDividerProps = Omit<HTMLAttributes<HTMLDivElement>, "children"> & {
|
|
6
|
+
/** Dirección de la línea; `vertical` separa elementos en una fila. */
|
|
7
|
+
orientation?: KapiDividerOrientation | undefined;
|
|
8
|
+
/** Texto centrado entre dos líneas (sólo horizontal). */
|
|
9
|
+
label?: ReactNode | undefined;
|
|
10
|
+
/** Clase del separador. */
|
|
11
|
+
className?: string | undefined;
|
|
12
|
+
};
|
|
13
|
+
/** Clases del divisor. Pura y exportada. */
|
|
14
|
+
export declare const dividerClasses: ({ orientation, className }?: Pick<KapiDividerProps, "orientation" | "className">) => string;
|
|
15
|
+
/** Separador horizontal (opcionalmente con texto) o vertical. */
|
|
16
|
+
export declare function KapiDivider({ orientation, label, className, ...rest }: KapiDividerProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { joinClasses as e } from "../rootProps.js";
|
|
3
|
+
/* empty css */
|
|
4
|
+
import { jsx as t, jsxs as n } from "react/jsx-runtime";
|
|
5
|
+
//#region src/components/layout/KapiDivider.tsx
|
|
6
|
+
var r = ({ orientation: e = "horizontal", className: t = "" } = {}) => [
|
|
7
|
+
"kapi-divider",
|
|
8
|
+
e === "vertical" && "kapi-divider--vertical",
|
|
9
|
+
t
|
|
10
|
+
].filter(Boolean).join(" ");
|
|
11
|
+
function i({ orientation: i = "horizontal", label: a, className: o, ...s }) {
|
|
12
|
+
return i === "horizontal" && a != null ? /* @__PURE__ */ n("div", {
|
|
13
|
+
...s,
|
|
14
|
+
role: "separator",
|
|
15
|
+
className: e("kapi-divider-labeled", o),
|
|
16
|
+
children: [
|
|
17
|
+
/* @__PURE__ */ t("span", {
|
|
18
|
+
className: "kapi-divider",
|
|
19
|
+
"aria-hidden": !0
|
|
20
|
+
}),
|
|
21
|
+
/* @__PURE__ */ t("span", {
|
|
22
|
+
className: "kapi-divider-labeled__text",
|
|
23
|
+
children: a
|
|
24
|
+
}),
|
|
25
|
+
/* @__PURE__ */ t("span", {
|
|
26
|
+
className: "kapi-divider",
|
|
27
|
+
"aria-hidden": !0
|
|
28
|
+
})
|
|
29
|
+
]
|
|
30
|
+
}) : /* @__PURE__ */ t("div", {
|
|
31
|
+
...s,
|
|
32
|
+
role: "separator",
|
|
33
|
+
"aria-orientation": i,
|
|
34
|
+
className: r({
|
|
35
|
+
orientation: i,
|
|
36
|
+
className: o
|
|
37
|
+
})
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
//#endregion
|
|
41
|
+
export { i as KapiDivider, r as dividerClasses };
|