@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,179 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { assignRef as e, fieldControlProps as t, focusLeaves as n } from "./fieldLogic.js";
|
|
3
|
+
import { useKapiField as ee } from "./KapiField.js";
|
|
4
|
+
import { useKapiLocale as r, useLabels as te } from "../locale/KapiLocaleProvider.js";
|
|
5
|
+
import { DEFAULT_CALENDAR_LABELS as i, calendarNames as a, formDateValue as o, monthTitle as s } from "./datePickerLogic.js";
|
|
6
|
+
import { KapiCalendarGrid as ne } from "./KapiCalendarGrid.js";
|
|
7
|
+
import { useCalendarFocus as re } from "./useCalendarFocus.js";
|
|
8
|
+
import { useDatePopSide as ie } from "./useDatePopSide.js";
|
|
9
|
+
/* empty css */
|
|
10
|
+
import { EMPTY_RANGE as c, formatRange as l, isCompleteRange as ae, maskRangeInput as oe, parseRangeText as u, pickRangeDay as d, rangeDayState as f, sameRange as p } from "./dateRangeLogic.js";
|
|
11
|
+
import { Fragment as m, jsx as h, jsxs as g } from "react/jsx-runtime";
|
|
12
|
+
import { useEffect as _, useMemo as se, useRef as v, useState as y } from "react";
|
|
13
|
+
import { Calendar as ce, ChevronLeft as le, ChevronRight as ue } from "lucide-react";
|
|
14
|
+
//#region src/components/inputs/KapiDateRangePicker.tsx
|
|
15
|
+
var b = {
|
|
16
|
+
...i,
|
|
17
|
+
pickStart: "Elige la fecha de inicio",
|
|
18
|
+
pickEnd: "Elige la fecha de fin"
|
|
19
|
+
}, de = (e) => `${e.from?.getTime() ?? ""}-${e.to?.getTime() ?? ""}`, x = ({ value: i = c, onChange: x, placeholder: fe = "dd/mm/aaaa – dd/mm/aaaa", disabled: S = !1, id: pe, name: C, className: me, style: he, "aria-label": w, labels: ge, ref: T, onBlur: E }) => {
|
|
20
|
+
let D = r(), O = se(() => D ? {
|
|
21
|
+
...b,
|
|
22
|
+
...a(D)
|
|
23
|
+
} : b, [D]), k = te("calendar", O, ge), A = ee(), [j, M] = y(!1), [N, P] = y(i), [F, I] = y(i), [L, R] = y(null), [z, B] = y(() => l(i)), [V, H] = y(() => i.from ?? /* @__PURE__ */ new Date()), U = v(null), W = v(null), G = v(null), { inputRef: _e, focusRequest: ve, openFromKeyboard: K, openFromFocus: ye, returnFocus: q } = re(M), J = de(i), [be, xe] = y(J);
|
|
24
|
+
be !== J && (xe(J), P(i), I(i), B(l(i)), i.from && H(i.from));
|
|
25
|
+
let Y = () => {
|
|
26
|
+
M(!1), I(N), R(null);
|
|
27
|
+
}, X = v(Y);
|
|
28
|
+
X.current = Y, _(() => {
|
|
29
|
+
let e = (e) => {
|
|
30
|
+
let t = U.current;
|
|
31
|
+
if (!t || t.contains(e.target)) return;
|
|
32
|
+
let n = document.activeElement;
|
|
33
|
+
n instanceof HTMLElement && G.current?.contains(n) && n.blur(), X.current();
|
|
34
|
+
};
|
|
35
|
+
return document.addEventListener("mousedown", e), () => document.removeEventListener("mousedown", e);
|
|
36
|
+
}, []);
|
|
37
|
+
let Z = (e) => {
|
|
38
|
+
P(e), I(e), B(l(e)), x?.(e);
|
|
39
|
+
}, Se = () => {
|
|
40
|
+
let e = u(z);
|
|
41
|
+
e === null ? (N.from || N.to) && Z(c) : e === void 0 ? B(l(N)) : (p(e, N) ? B(l(e)) : Z(e), e.from && H(e.from));
|
|
42
|
+
}, Ce = (e) => {
|
|
43
|
+
let t = d(F, e);
|
|
44
|
+
R(null), ae(t) ? (Z(t), q()) : I(t);
|
|
45
|
+
}, Q = (e) => H(new Date(V.getFullYear(), V.getMonth() + e, 1)), $ = !!F.from && !F.to, we = ie(j && !S, W, G);
|
|
46
|
+
return /* @__PURE__ */ g("div", {
|
|
47
|
+
className: [
|
|
48
|
+
"kapi-dp",
|
|
49
|
+
"kapi-dp--range",
|
|
50
|
+
me
|
|
51
|
+
].filter(Boolean).join(" "),
|
|
52
|
+
style: he,
|
|
53
|
+
ref: U,
|
|
54
|
+
onBlur: (e) => {
|
|
55
|
+
n(e.relatedTarget, e.currentTarget) && E?.(e);
|
|
56
|
+
},
|
|
57
|
+
children: [
|
|
58
|
+
/* @__PURE__ */ g("div", {
|
|
59
|
+
className: "kapi-dp__field",
|
|
60
|
+
ref: W,
|
|
61
|
+
children: [/* @__PURE__ */ h("input", {
|
|
62
|
+
ref: (t) => {
|
|
63
|
+
_e.current = t, e(T, t);
|
|
64
|
+
},
|
|
65
|
+
...t(A, { id: pe }),
|
|
66
|
+
className: "kapi-input kapi-dp__input",
|
|
67
|
+
value: z,
|
|
68
|
+
placeholder: fe,
|
|
69
|
+
disabled: S,
|
|
70
|
+
"aria-label": w,
|
|
71
|
+
autoComplete: "off",
|
|
72
|
+
inputMode: "numeric",
|
|
73
|
+
onChange: (e) => B(oe(e.target.value)),
|
|
74
|
+
onFocus: ye,
|
|
75
|
+
onBlur: Se,
|
|
76
|
+
onKeyDown: (e) => {
|
|
77
|
+
e.key === "Escape" && Y(), e.key === "ArrowDown" && (e.preventDefault(), K());
|
|
78
|
+
}
|
|
79
|
+
}), /* @__PURE__ */ h("button", {
|
|
80
|
+
type: "button",
|
|
81
|
+
className: "kapi-dp__toggle",
|
|
82
|
+
disabled: S,
|
|
83
|
+
"aria-label": k.openPicker,
|
|
84
|
+
"aria-expanded": j,
|
|
85
|
+
onClick: () => j ? Y() : K(),
|
|
86
|
+
children: /* @__PURE__ */ h(ce, {
|
|
87
|
+
size: 16,
|
|
88
|
+
strokeWidth: 1.9
|
|
89
|
+
})
|
|
90
|
+
})]
|
|
91
|
+
}),
|
|
92
|
+
C && /* @__PURE__ */ g(m, { children: [/* @__PURE__ */ h("input", {
|
|
93
|
+
type: "hidden",
|
|
94
|
+
name: `${C}.from`,
|
|
95
|
+
value: o(N.from, "date"),
|
|
96
|
+
disabled: S
|
|
97
|
+
}), /* @__PURE__ */ h("input", {
|
|
98
|
+
type: "hidden",
|
|
99
|
+
name: `${C}.to`,
|
|
100
|
+
value: o(N.to, "date"),
|
|
101
|
+
disabled: S
|
|
102
|
+
})] }),
|
|
103
|
+
j && !S && /* @__PURE__ */ h("div", {
|
|
104
|
+
ref: G,
|
|
105
|
+
className: `kapi-dp__pop${we === "top" ? " kapi-dp__pop--up" : ""}`,
|
|
106
|
+
onKeyDown: (e) => {
|
|
107
|
+
e.key === "Escape" && (e.preventDefault(), Y(), q());
|
|
108
|
+
},
|
|
109
|
+
children: /* @__PURE__ */ g("div", {
|
|
110
|
+
className: "kapi-dp__cal",
|
|
111
|
+
children: [
|
|
112
|
+
/* @__PURE__ */ g("div", {
|
|
113
|
+
className: "kapi-dp__head",
|
|
114
|
+
children: [
|
|
115
|
+
/* @__PURE__ */ h("button", {
|
|
116
|
+
type: "button",
|
|
117
|
+
className: "kapi-dp__nav",
|
|
118
|
+
"aria-label": k.prevMonth,
|
|
119
|
+
onClick: () => Q(-1),
|
|
120
|
+
children: /* @__PURE__ */ h(le, {
|
|
121
|
+
size: 15,
|
|
122
|
+
strokeWidth: 2.2
|
|
123
|
+
})
|
|
124
|
+
}),
|
|
125
|
+
/* @__PURE__ */ h("span", {
|
|
126
|
+
className: "kapi-dp__title",
|
|
127
|
+
children: s(V, k.months)
|
|
128
|
+
}),
|
|
129
|
+
/* @__PURE__ */ h("button", {
|
|
130
|
+
type: "button",
|
|
131
|
+
className: "kapi-dp__nav",
|
|
132
|
+
"aria-label": k.nextMonth,
|
|
133
|
+
onClick: () => Q(1),
|
|
134
|
+
children: /* @__PURE__ */ h(ue, {
|
|
135
|
+
size: 15,
|
|
136
|
+
strokeWidth: 2.2
|
|
137
|
+
})
|
|
138
|
+
})
|
|
139
|
+
]
|
|
140
|
+
}),
|
|
141
|
+
/* @__PURE__ */ h(ne, {
|
|
142
|
+
view: V,
|
|
143
|
+
onViewChange: H,
|
|
144
|
+
labels: k,
|
|
145
|
+
focusTarget: F.from,
|
|
146
|
+
focusRequest: ve,
|
|
147
|
+
isSelected: (e) => f(e, F, null) !== null,
|
|
148
|
+
dayClassName: (e) => {
|
|
149
|
+
let t = f(e, F, $ ? L : null);
|
|
150
|
+
return [(t === "start" || t === "end" || t === "single") && "kapi-dp__day--sel", t && `kapi-dp__day--${t}`].filter(Boolean).join(" ");
|
|
151
|
+
},
|
|
152
|
+
onPick: Ce,
|
|
153
|
+
onDayHover: (e) => {
|
|
154
|
+
e === null ? R(null) : $ && R(e);
|
|
155
|
+
}
|
|
156
|
+
}),
|
|
157
|
+
/* @__PURE__ */ g("div", {
|
|
158
|
+
className: "kapi-dp__foot",
|
|
159
|
+
children: [/* @__PURE__ */ h("button", {
|
|
160
|
+
type: "button",
|
|
161
|
+
className: "kapi-dp__link",
|
|
162
|
+
onClick: () => {
|
|
163
|
+
Z(c), M(!1);
|
|
164
|
+
},
|
|
165
|
+
children: k.clear
|
|
166
|
+
}), /* @__PURE__ */ h("span", {
|
|
167
|
+
className: "kapi-dp__hint",
|
|
168
|
+
"aria-live": "polite",
|
|
169
|
+
children: $ ? k.pickEnd : k.pickStart
|
|
170
|
+
})]
|
|
171
|
+
})
|
|
172
|
+
]
|
|
173
|
+
})
|
|
174
|
+
})
|
|
175
|
+
]
|
|
176
|
+
});
|
|
177
|
+
};
|
|
178
|
+
//#endregion
|
|
179
|
+
export { b as DEFAULT_DATE_RANGE_LABELS, x as KapiDateRangePicker };
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { type HTMLAttributes } from "react";
|
|
2
|
+
import { type KapiFacet, type KapiFacetChip } from "./facetedSearchLogic";
|
|
3
|
+
import "./KapiFacetedSearch.css";
|
|
4
|
+
import type { KapiLabelsOverride } from "../labelsLogic";
|
|
5
|
+
export type KapiFacetedSearchLabels = {
|
|
6
|
+
/** Nombre accesible del campo. */
|
|
7
|
+
input: string;
|
|
8
|
+
placeholder: string;
|
|
9
|
+
/** "Buscar “texto”" en el desplegable. */
|
|
10
|
+
searchFor: string;
|
|
11
|
+
/** Pista al lado de las facetas que piden valor. */
|
|
12
|
+
pickValue: string;
|
|
13
|
+
empty: string;
|
|
14
|
+
/** Prefijo del botón × de cada chip ("Quitar Estado: Pendiente"). */
|
|
15
|
+
remove: string;
|
|
16
|
+
/** Prefijo del nombre accesible del campo de fecha ("Valor de Fecha desde"). */
|
|
17
|
+
valueOf: string;
|
|
18
|
+
/** Botón que quita todos los filtros (con `onClearAll`). */
|
|
19
|
+
clearAll: string;
|
|
20
|
+
};
|
|
21
|
+
export declare const DEFAULT_FACETED_SEARCH_LABELS: KapiFacetedSearchLabels;
|
|
22
|
+
/** Atributos nativos (`id`, `style`, `data-*`…) van a la región `role="search"` (el rol es propio). */
|
|
23
|
+
export type KapiFacetedSearchProps = Omit<HTMLAttributes<HTMLDivElement>, "children" | "role"> & {
|
|
24
|
+
/** Facetas que se pueden elegir (lista, fecha o flag), cada una con su `apply`. */
|
|
25
|
+
facets: ReadonlyArray<KapiFacet>;
|
|
26
|
+
/** Filtros activos, como chips removibles (el estado lo tiene la pantalla). */
|
|
27
|
+
chips: ReadonlyArray<KapiFacetChip>;
|
|
28
|
+
/** Texto libre confirmado con Enter. */
|
|
29
|
+
onText: (text: string) => void;
|
|
30
|
+
/**
|
|
31
|
+
* Con esta prop, la barra muestra "Limpiar todo" mientras haya algún chip; al tocarlo se llama una
|
|
32
|
+
* sola vez (la pantalla vacía sus filtros de una, sin quitar chip por chip).
|
|
33
|
+
*/
|
|
34
|
+
onClearAll?: (() => void) | undefined;
|
|
35
|
+
/** Textos fijos (clave `facetedSearch`). */
|
|
36
|
+
labels?: KapiLabelsOverride<KapiFacetedSearchLabels> | undefined;
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* Búsqueda facetada (patrón Gmail/Jira): un solo campo donde se tipea texto libre (Enter) o se elige
|
|
40
|
+
* una faceta y su valor; cada filtro activo queda como chip removible. Tonta a propósito: recibe las
|
|
41
|
+
* facetas y los chips, y avisa con `onText` y el `apply` de cada faceta; no sabe de tablas ni backends.
|
|
42
|
+
* Teclado: flechas y Enter en el desplegable, Backspace con el campo vacío suelta la faceta pendiente
|
|
43
|
+
* y después el último chip, Escape cancela la faceta pendiente.
|
|
44
|
+
*/
|
|
45
|
+
export declare function KapiFacetedSearch({ facets, chips, onText, onClearAll, labels, className, onMouseDown, ...rest }: KapiFacetedSearchProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useLabels as e } from "../locale/KapiLocaleProvider.js";
|
|
3
|
+
import { joinClasses as t } from "../rootProps.js";
|
|
4
|
+
import { KapiDatePicker as n } from "./KapiDatePicker.js";
|
|
5
|
+
import { KapiDateRangePicker as r } from "./KapiDateRangePicker.js";
|
|
6
|
+
import { KapiTag as i } from "../display/KapiTag.js";
|
|
7
|
+
import { KapiPopover as a } from "../overlays/KapiPopover.js";
|
|
8
|
+
import { facetKeyAction as o, facetMenuItems as s, facetOptionName as c, isDateFacet as l, moveActive as u, toDateRangeValue as d, toDateValue as f } from "./facetedSearchLogic.js";
|
|
9
|
+
/* empty css */
|
|
10
|
+
import { Fragment as p, jsx as m, jsxs as h } from "react/jsx-runtime";
|
|
11
|
+
import { useId as g, useRef as _, useState as v } from "react";
|
|
12
|
+
import { Search as y } from "lucide-react";
|
|
13
|
+
//#region src/components/inputs/KapiFacetedSearch.tsx
|
|
14
|
+
var b = {
|
|
15
|
+
input: "Buscar o filtrar",
|
|
16
|
+
placeholder: "Buscar o filtrar…",
|
|
17
|
+
searchFor: "Buscar",
|
|
18
|
+
pickValue: "elegir valor…",
|
|
19
|
+
empty: "Sin opciones",
|
|
20
|
+
remove: "Quitar",
|
|
21
|
+
valueOf: "Valor de",
|
|
22
|
+
clearAll: "Limpiar todo"
|
|
23
|
+
};
|
|
24
|
+
function x({ facets: x, chips: S, onText: C, onClearAll: w, labels: T, className: E, onMouseDown: D, ...O }) {
|
|
25
|
+
let k = e("facetedSearch", b, T), A = g(), j = `${A}-list`, M = _(null), N = _(null), P = _(null), [F, I] = v(""), [L, R] = v(null), [z, B] = v(!1), [V, H] = v(-1), U = s(x, L, F), W = l(L), G = z && !W, K = () => requestAnimationFrame(() => N.current?.focus()), q = () => {
|
|
26
|
+
I(""), R(null), H(-1);
|
|
27
|
+
}, J = () => {
|
|
28
|
+
q(), B(!1), K();
|
|
29
|
+
}, Y = (e) => {
|
|
30
|
+
e.type === "text" ? (C(e.text), J()) : e.type === "option" ? (L?.apply(e.option.value), J()) : e.facet.kind === "flag" ? (e.facet.apply("true"), J()) : (R(e.facet), I(""), H(-1), B(!0), l(e.facet) ? requestAnimationFrame(() => P.current?.focus()) : K());
|
|
31
|
+
}, X = (e) => {
|
|
32
|
+
let t = o(e.key, {
|
|
33
|
+
input: F,
|
|
34
|
+
pending: !!L,
|
|
35
|
+
active: V,
|
|
36
|
+
open: G,
|
|
37
|
+
chips: S.length
|
|
38
|
+
});
|
|
39
|
+
if (t) switch (e.preventDefault(), t) {
|
|
40
|
+
case "next":
|
|
41
|
+
case "prev":
|
|
42
|
+
B(!0), H((e) => u(G ? e : -1, U.length, t === "next" ? 1 : -1));
|
|
43
|
+
break;
|
|
44
|
+
case "select": {
|
|
45
|
+
let e = U[V];
|
|
46
|
+
e && Y(e);
|
|
47
|
+
break;
|
|
48
|
+
}
|
|
49
|
+
case "text":
|
|
50
|
+
C(F.trim()), J();
|
|
51
|
+
break;
|
|
52
|
+
case "cancel":
|
|
53
|
+
q();
|
|
54
|
+
break;
|
|
55
|
+
case "close":
|
|
56
|
+
B(!1), H(-1);
|
|
57
|
+
break;
|
|
58
|
+
case "dropPending":
|
|
59
|
+
R(null), H(-1);
|
|
60
|
+
break;
|
|
61
|
+
case "removeLast": S[S.length - 1]?.onRemove();
|
|
62
|
+
}
|
|
63
|
+
}, Z = (e) => {
|
|
64
|
+
let t = e.target.value === "";
|
|
65
|
+
(e.key === "Escape" || e.key === "Backspace" && t) && (e.preventDefault(), q(), K());
|
|
66
|
+
}, Q = (e) => `${A}-opt-${e}`;
|
|
67
|
+
return /* @__PURE__ */ h("div", {
|
|
68
|
+
...O,
|
|
69
|
+
ref: M,
|
|
70
|
+
className: t("kapi-facets", E),
|
|
71
|
+
role: "search",
|
|
72
|
+
onMouseDown: (e) => {
|
|
73
|
+
D?.(e), !e.defaultPrevented && e.target === e.currentTarget && (e.preventDefault(), N.current?.focus(), B(!0));
|
|
74
|
+
},
|
|
75
|
+
children: [
|
|
76
|
+
/* @__PURE__ */ m(y, {
|
|
77
|
+
className: "kapi-facets__icon",
|
|
78
|
+
size: 15,
|
|
79
|
+
"aria-hidden": !0
|
|
80
|
+
}),
|
|
81
|
+
S.map((e) => /* @__PURE__ */ m(i, {
|
|
82
|
+
size: "sm",
|
|
83
|
+
onRemove: () => {
|
|
84
|
+
e.onRemove(), K();
|
|
85
|
+
},
|
|
86
|
+
removeLabel: `${k.remove} ${e.label}`,
|
|
87
|
+
children: e.label
|
|
88
|
+
}, e.key)),
|
|
89
|
+
L && /* @__PURE__ */ h(i, {
|
|
90
|
+
size: "sm",
|
|
91
|
+
tone: "primary",
|
|
92
|
+
className: "kapi-facets__pending",
|
|
93
|
+
children: [L.label, ":"]
|
|
94
|
+
}),
|
|
95
|
+
W && L ? /* @__PURE__ */ m("span", {
|
|
96
|
+
className: "kapi-facets__date",
|
|
97
|
+
onKeyDown: Z,
|
|
98
|
+
children: L.kind === "dateRange" ? /* @__PURE__ */ m(r, {
|
|
99
|
+
ref: P,
|
|
100
|
+
"aria-label": `${k.valueOf} ${L.label}`,
|
|
101
|
+
onChange: ({ from: e, to: t }) => {
|
|
102
|
+
e && t && (L.apply(d(e, t)), J());
|
|
103
|
+
}
|
|
104
|
+
}) : /* @__PURE__ */ m(n, {
|
|
105
|
+
ref: P,
|
|
106
|
+
"aria-label": `${k.valueOf} ${L.label}`,
|
|
107
|
+
onChange: (e) => {
|
|
108
|
+
e && (L.apply(f(e)), J());
|
|
109
|
+
}
|
|
110
|
+
})
|
|
111
|
+
}) : /* @__PURE__ */ m("input", {
|
|
112
|
+
ref: N,
|
|
113
|
+
className: "kapi-facets__input",
|
|
114
|
+
type: "text",
|
|
115
|
+
role: "combobox",
|
|
116
|
+
autoComplete: "off",
|
|
117
|
+
"aria-label": k.input,
|
|
118
|
+
"aria-expanded": G,
|
|
119
|
+
"aria-controls": j,
|
|
120
|
+
"aria-autocomplete": "list",
|
|
121
|
+
"aria-activedescendant": G && V >= 0 ? Q(V) : void 0,
|
|
122
|
+
placeholder: S.length === 0 && !L ? k.placeholder : void 0,
|
|
123
|
+
value: F,
|
|
124
|
+
onFocus: () => B(!0),
|
|
125
|
+
onClick: () => B(!0),
|
|
126
|
+
onBlur: (e) => {
|
|
127
|
+
let t = e.relatedTarget;
|
|
128
|
+
(!t || !M.current?.contains(t)) && B(!1);
|
|
129
|
+
},
|
|
130
|
+
onChange: (e) => {
|
|
131
|
+
I(e.target.value), B(!0), H(-1);
|
|
132
|
+
},
|
|
133
|
+
onKeyDown: X
|
|
134
|
+
}),
|
|
135
|
+
w && S.length > 0 && /* @__PURE__ */ m("button", {
|
|
136
|
+
type: "button",
|
|
137
|
+
className: "kapi-facets__clear",
|
|
138
|
+
onClick: () => {
|
|
139
|
+
w(), q(), K();
|
|
140
|
+
},
|
|
141
|
+
children: k.clearAll
|
|
142
|
+
}),
|
|
143
|
+
/* @__PURE__ */ h(a, {
|
|
144
|
+
open: G,
|
|
145
|
+
anchorRef: M,
|
|
146
|
+
onClose: () => B(!1),
|
|
147
|
+
matchAnchorWidth: !0,
|
|
148
|
+
role: "listbox",
|
|
149
|
+
id: j,
|
|
150
|
+
"aria-label": L ? L.label : k.input,
|
|
151
|
+
closeOnEscape: !1,
|
|
152
|
+
restoreFocus: !1,
|
|
153
|
+
className: "kapi-facets__menu",
|
|
154
|
+
children: [U.length === 0 && /* @__PURE__ */ m("div", {
|
|
155
|
+
className: "kapi-facets__empty",
|
|
156
|
+
children: k.empty
|
|
157
|
+
}), U.map((e, t) => /* @__PURE__ */ m("div", {
|
|
158
|
+
id: Q(t),
|
|
159
|
+
role: "option",
|
|
160
|
+
"aria-selected": t === V,
|
|
161
|
+
"aria-label": e.type === "option" ? c(e.option) : void 0,
|
|
162
|
+
className: `kapi-facets__opt${t === V ? " kapi-facets__opt--active" : ""}`,
|
|
163
|
+
onMouseDown: (e) => e.preventDefault(),
|
|
164
|
+
onMouseEnter: () => H(t),
|
|
165
|
+
onClick: () => Y(e),
|
|
166
|
+
children: e.type === "text" ? /* @__PURE__ */ h("span", { children: [
|
|
167
|
+
k.searchFor,
|
|
168
|
+
" “",
|
|
169
|
+
e.text,
|
|
170
|
+
"”"
|
|
171
|
+
] }) : e.type === "option" ? /* @__PURE__ */ h(p, { children: [/* @__PURE__ */ m("span", { children: e.option.label }), e.option.count !== void 0 && /* @__PURE__ */ m("span", {
|
|
172
|
+
className: "kapi-facets__count",
|
|
173
|
+
"aria-hidden": "true",
|
|
174
|
+
children: e.option.count
|
|
175
|
+
})] }) : /* @__PURE__ */ h("span", { children: [/* @__PURE__ */ m("span", {
|
|
176
|
+
className: "kapi-facets__facet",
|
|
177
|
+
children: e.facet.label
|
|
178
|
+
}), e.facet.kind !== "flag" && /* @__PURE__ */ h("span", {
|
|
179
|
+
className: "kapi-facets__hint",
|
|
180
|
+
children: [" · ", k.pickValue]
|
|
181
|
+
})] })
|
|
182
|
+
}, e.type === "facet" ? `f-${e.facet.key}` : e.type === "option" ? `o-${e.option.value}` : "t"))]
|
|
183
|
+
})
|
|
184
|
+
]
|
|
185
|
+
});
|
|
186
|
+
}
|
|
187
|
+
//#endregion
|
|
188
|
+
export { b as DEFAULT_FACETED_SEARCH_LABELS, x as KapiFacetedSearch };
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { type HTMLAttributes, type ReactNode } from "react";
|
|
2
|
+
import { type KapiFieldContextValue } from "./fieldLogic";
|
|
3
|
+
export type KapiFieldStatus = "ok" | "err";
|
|
4
|
+
export type { KapiFieldContextValue };
|
|
5
|
+
/** Atributos nativos (`id`, `style`, `data-*`…) van al contenedor; el `id` del control es `htmlFor`. */
|
|
6
|
+
export type KapiFieldProps = Omit<HTMLAttributes<HTMLDivElement>, "children"> & {
|
|
7
|
+
/** Texto de la etiqueta. */
|
|
8
|
+
label?: ReactNode | undefined;
|
|
9
|
+
/** `id` del control que etiqueta. Opcional: sin él se genera uno y el control lo toma del contexto. */
|
|
10
|
+
htmlFor?: string | undefined;
|
|
11
|
+
/** Agrega el asterisco de obligatorio a la etiqueta y `aria-required` al control. */
|
|
12
|
+
required?: boolean | undefined;
|
|
13
|
+
/** Texto de ayuda / error bajo el control. */
|
|
14
|
+
help?: ReactNode | undefined;
|
|
15
|
+
/** `id` del texto de ayuda. Opcional: sin él se deriva del id del control. */
|
|
16
|
+
helpId?: string | undefined;
|
|
17
|
+
/** Estado de validación: pinta la ayuda y le pone ícono; con `err` el control queda `aria-invalid`. */
|
|
18
|
+
status?: KapiFieldStatus | undefined;
|
|
19
|
+
/** El control del campo (input, select…); recibe `id`, `aria-describedby` y estado del contexto. */
|
|
20
|
+
children: ReactNode;
|
|
21
|
+
};
|
|
22
|
+
/** Lo que el `KapiField` que envuelve al control le pasa (ids, required, invalid); `null` fuera de un campo. */
|
|
23
|
+
export declare const useKapiField: () => KapiFieldContextValue | null;
|
|
24
|
+
/** Clases del contenedor. Pura y exportada para testear. */
|
|
25
|
+
export declare const fieldClasses: (className?: string) => string;
|
|
26
|
+
/** Clases del texto de ayuda según el estado. */
|
|
27
|
+
export declare const helpClasses: (status?: KapiFieldStatus) => string;
|
|
28
|
+
/**
|
|
29
|
+
* Wrapper de formulario: label + control + ayuda (con ícono si hay estado).
|
|
30
|
+
* Los controles del design system que van adentro toman del contexto su id, la ayuda (`aria-describedby`),
|
|
31
|
+
* `aria-invalid` y `aria-required`; no hace falta cablear ids a mano.
|
|
32
|
+
*/
|
|
33
|
+
export declare const KapiField: ({ label, htmlFor, required, help, helpId: helpIdProp, status, className, children, ...rest }: KapiFieldProps) => import("react").JSX.Element;
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { fieldIds as e } from "./fieldLogic.js";
|
|
3
|
+
import { jsx as t, jsxs as n } from "react/jsx-runtime";
|
|
4
|
+
import { createContext as r, useContext as i, useId as a, useMemo as o } from "react";
|
|
5
|
+
import { AlertTriangle as s, CheckCircle2 as c } from "lucide-react";
|
|
6
|
+
//#region src/components/inputs/KapiField.tsx
|
|
7
|
+
var l = r(null), u = () => i(l), d = (e = "") => ["kapi-field", e].filter(Boolean).join(" "), f = (e) => ["kapi-help", e && `kapi-help--${e}`].filter(Boolean).join(" "), p = ({ label: r, htmlFor: i, required: u = !1, help: p, helpId: m, status: h, className: g, children: _, ...v }) => {
|
|
8
|
+
let y = a(), b = !!p, { controlId: x, labelId: S, helpId: C } = e({
|
|
9
|
+
htmlFor: i,
|
|
10
|
+
autoId: y,
|
|
11
|
+
helpId: m,
|
|
12
|
+
hasHelp: b
|
|
13
|
+
}), w = o(() => ({
|
|
14
|
+
controlId: x,
|
|
15
|
+
labelId: r == null ? void 0 : S,
|
|
16
|
+
helpId: C,
|
|
17
|
+
required: u,
|
|
18
|
+
invalid: h === "err"
|
|
19
|
+
}), [
|
|
20
|
+
x,
|
|
21
|
+
S,
|
|
22
|
+
r,
|
|
23
|
+
C,
|
|
24
|
+
u,
|
|
25
|
+
h
|
|
26
|
+
]);
|
|
27
|
+
return /* @__PURE__ */ t(l.Provider, {
|
|
28
|
+
value: w,
|
|
29
|
+
children: /* @__PURE__ */ n("div", {
|
|
30
|
+
...v,
|
|
31
|
+
className: d(g),
|
|
32
|
+
children: [
|
|
33
|
+
r != null && /* @__PURE__ */ n("label", {
|
|
34
|
+
id: S,
|
|
35
|
+
htmlFor: x,
|
|
36
|
+
children: [r, u && " *"]
|
|
37
|
+
}),
|
|
38
|
+
_,
|
|
39
|
+
b ? /* @__PURE__ */ n("span", {
|
|
40
|
+
id: C,
|
|
41
|
+
className: f(h),
|
|
42
|
+
role: h === "err" ? "alert" : void 0,
|
|
43
|
+
children: [
|
|
44
|
+
h === "ok" && /* @__PURE__ */ t(c, {
|
|
45
|
+
size: 13,
|
|
46
|
+
strokeWidth: 2.2
|
|
47
|
+
}),
|
|
48
|
+
h === "err" && /* @__PURE__ */ t(s, {
|
|
49
|
+
size: 13,
|
|
50
|
+
strokeWidth: 2.2
|
|
51
|
+
}),
|
|
52
|
+
p
|
|
53
|
+
]
|
|
54
|
+
}) : null
|
|
55
|
+
]
|
|
56
|
+
})
|
|
57
|
+
});
|
|
58
|
+
};
|
|
59
|
+
//#endregion
|
|
60
|
+
export { p as KapiField, d as fieldClasses, f as helpClasses, u as useKapiField };
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { type CSSProperties, type FocusEvent, type Ref } from "react";
|
|
2
|
+
import "./KapiFileUpload.css";
|
|
3
|
+
import type { KapiLabelsOverride } from "../labelsLogic";
|
|
4
|
+
export type KapiFileUploadProps = {
|
|
5
|
+
/** Permite varios archivos (agrega) o uno solo (reemplaza). */
|
|
6
|
+
multiple?: boolean;
|
|
7
|
+
/** Como el atributo nativo `accept` (p. ej. `.pdf,image/*`). */
|
|
8
|
+
accept?: string;
|
|
9
|
+
/** Texto de ayuda bajo el título. Gana sobre `labels.hint`. */
|
|
10
|
+
hint?: string;
|
|
11
|
+
/** Emite la lista completa de archivos cada vez que cambia (agregar o quitar). */
|
|
12
|
+
onChange?: (files: File[]) => void;
|
|
13
|
+
/** Deshabilita la zona de carga (no abre el selector ni acepta archivos soltados). */
|
|
14
|
+
disabled?: boolean;
|
|
15
|
+
/** Clase del envoltorio (zona + lista). */
|
|
16
|
+
className?: string;
|
|
17
|
+
/** Estilo del envoltorio (zona + lista). */
|
|
18
|
+
style?: CSSProperties;
|
|
19
|
+
/** Textos fijos de la zona y del botón quitar. */
|
|
20
|
+
labels?: KapiLabelsOverride<KapiFileUploadLabels> | undefined;
|
|
21
|
+
/**
|
|
22
|
+
* Nombre para formularios nativos: va al `<input type="file">`, que se sincroniza con la lista
|
|
23
|
+
* (también lo arrastrado) vía `DataTransfer`. Sin `DataTransfer` (navegadores viejos, jsdom) el input
|
|
24
|
+
* sólo lleva la última elección: en ese caso el host arma el `FormData` con lo que emite `onChange`.
|
|
25
|
+
*/
|
|
26
|
+
name?: string;
|
|
27
|
+
/**
|
|
28
|
+
* `id` de la zona (el control). Sin él, lo toma del `KapiField` que la envuelve. Por eso el
|
|
29
|
+
* passthrough de la raíz no incluye `id`: `className`/`style` van al envoltorio.
|
|
30
|
+
*/
|
|
31
|
+
id?: string;
|
|
32
|
+
/** Se dispara cuando el foco sale de la zona. */
|
|
33
|
+
onBlur?: (event: FocusEvent<HTMLDivElement>) => void;
|
|
34
|
+
/** Marca la zona como inválida (`aria-invalid`). Sin la prop, lo toma del `KapiField` (`status="err"`). */
|
|
35
|
+
invalid?: boolean;
|
|
36
|
+
/** `id`s extra para `aria-describedby` (se suman a la ayuda del campo y al hint). */
|
|
37
|
+
"aria-describedby"?: string;
|
|
38
|
+
/** Ref a la zona (el elemento enfocable, `role="button"`). */
|
|
39
|
+
ref?: Ref<HTMLDivElement>;
|
|
40
|
+
};
|
|
41
|
+
export type KapiFileUploadLabels = {
|
|
42
|
+
/** Texto de la zona, antes del enlace. */
|
|
43
|
+
drop: string;
|
|
44
|
+
/** Enlace para elegir archivos. */
|
|
45
|
+
choose: string;
|
|
46
|
+
/** Prefijo del botón quitar ("Quitar archivo.pdf"). */
|
|
47
|
+
remove: string;
|
|
48
|
+
/** Ayuda bajo el título (sin `hint`). */
|
|
49
|
+
hint: string;
|
|
50
|
+
};
|
|
51
|
+
export declare const DEFAULT_FILE_UPLOAD_LABELS: KapiFileUploadLabels;
|
|
52
|
+
/**
|
|
53
|
+
* Dropzone de archivos: click, teclado (Enter / Espacio) o arrastrar; lista con tamaño y quitar.
|
|
54
|
+
* La lista vive adentro; `onChange` emite el estado resultante.
|
|
55
|
+
* Dentro de un `KapiField` la zona toma id, nombre (label del campo + texto de la zona), ayuda y `aria-invalid`.
|
|
56
|
+
* No lleva `aria-required` (no es válido en `role="button"`): el obligatorio se ve en el asterisco del label.
|
|
57
|
+
*/
|
|
58
|
+
export declare const KapiFileUpload: ({ multiple, accept, hint: hintProp, onChange, disabled, className, style, labels, name, id, onBlur, invalid, "aria-describedby": describedBy, ref }: KapiFileUploadProps) => import("react").JSX.Element;
|