@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,130 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { joinIds as e } from "../inputs/fieldLogic.js";
|
|
3
|
+
import { resolveKapiRoot as t } from "../../hooks/kapiRoot.js";
|
|
4
|
+
import { usePlacement as n } from "../../hooks/usePlacement.js";
|
|
5
|
+
import { KapiTooltip as r } from "../overlays/KapiTooltip.js";
|
|
6
|
+
import { annotationClasses as i, annotationRole as a } from "./annotationLogic.js";
|
|
7
|
+
/* empty css */
|
|
8
|
+
import { jsx as o, jsxs as s } from "react/jsx-runtime";
|
|
9
|
+
import { useEffect as c, useId as l, useRef as u, useState as d } from "react";
|
|
10
|
+
import { createPortal as f } from "react-dom";
|
|
11
|
+
//#region src/components/display/KapiAnnotation.tsx
|
|
12
|
+
var p = 8, m = 8, h = 150;
|
|
13
|
+
function g({ children: g, info: _, underline: v = "dotted", tone: y = "primary", onClick: b, popover: x, interactive: S = !1, className: C, "aria-label": w, ...T }) {
|
|
14
|
+
let E = l(), D = u(null), [O, k] = d(!1), [A, j] = d(!1), M = u(null), N = u(void 0), { element: P, tabIndex: F, mode: I } = a(b, x, _), L = i({
|
|
15
|
+
underline: v,
|
|
16
|
+
tone: y,
|
|
17
|
+
clickable: !!b,
|
|
18
|
+
className: C
|
|
19
|
+
}), R = (e) => {
|
|
20
|
+
e.key === "Escape" && (k(!1), j(!0));
|
|
21
|
+
}, z = () => clearTimeout(N.current), B = () => {
|
|
22
|
+
z(), j(!1), k(!0);
|
|
23
|
+
}, V = () => {
|
|
24
|
+
z(), k(!1), j(!1);
|
|
25
|
+
}, H = u(V);
|
|
26
|
+
H.current = V;
|
|
27
|
+
let U = () => {
|
|
28
|
+
if (!S) return V();
|
|
29
|
+
z(), N.current = setTimeout(V, h);
|
|
30
|
+
}, W = (e) => {
|
|
31
|
+
let t = e.relatedTarget;
|
|
32
|
+
S && t && M.current?.contains(t) || V();
|
|
33
|
+
}, { placement: G } = n({
|
|
34
|
+
open: O,
|
|
35
|
+
anchor: D,
|
|
36
|
+
floatingRef: M,
|
|
37
|
+
side: "bottom",
|
|
38
|
+
align: "center",
|
|
39
|
+
offset: p,
|
|
40
|
+
margin: m
|
|
41
|
+
}), K = G ? {
|
|
42
|
+
top: G.top,
|
|
43
|
+
left: G.centerX,
|
|
44
|
+
side: G.side === "top" ? "top" : "bottom"
|
|
45
|
+
} : null;
|
|
46
|
+
c(() => {
|
|
47
|
+
if (!O || !S) return;
|
|
48
|
+
let e = (e) => {
|
|
49
|
+
let t = e.target;
|
|
50
|
+
!D.current?.contains(t) && !M.current?.contains(t) && H.current();
|
|
51
|
+
}, t = (e) => {
|
|
52
|
+
e.key === "Escape" && (k(!1), j(!0));
|
|
53
|
+
};
|
|
54
|
+
return document.addEventListener("mousedown", e), document.addEventListener("keydown", t), () => {
|
|
55
|
+
document.removeEventListener("mousedown", e), document.removeEventListener("keydown", t);
|
|
56
|
+
};
|
|
57
|
+
}, [O, S]), c(() => () => clearTimeout(N.current), []);
|
|
58
|
+
let q = {
|
|
59
|
+
...T,
|
|
60
|
+
className: L,
|
|
61
|
+
onKeyDown: R,
|
|
62
|
+
onClick: b,
|
|
63
|
+
...w !== void 0 && { "aria-label": w },
|
|
64
|
+
"data-dismissed": A ? "" : void 0
|
|
65
|
+
};
|
|
66
|
+
if (I === "tooltip") {
|
|
67
|
+
let e = String(_), t = P === "button" ? /* @__PURE__ */ o("button", {
|
|
68
|
+
...q,
|
|
69
|
+
type: "button",
|
|
70
|
+
onBlur: V,
|
|
71
|
+
children: g
|
|
72
|
+
}) : /* @__PURE__ */ o("span", {
|
|
73
|
+
...q,
|
|
74
|
+
tabIndex: F,
|
|
75
|
+
onBlur: V,
|
|
76
|
+
children: g
|
|
77
|
+
});
|
|
78
|
+
return /* @__PURE__ */ o(r, {
|
|
79
|
+
label: e,
|
|
80
|
+
prefer: "top",
|
|
81
|
+
children: t
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
let J = x ?? { body: _ }, Y = {
|
|
85
|
+
...q,
|
|
86
|
+
ref: D,
|
|
87
|
+
"aria-describedby": e(T["aria-describedby"], O && E),
|
|
88
|
+
onFocus: B,
|
|
89
|
+
onBlur: W
|
|
90
|
+
}, X = O ? t(D.current) : null;
|
|
91
|
+
return /* @__PURE__ */ s("span", {
|
|
92
|
+
className: "kapi-annotation-wrap",
|
|
93
|
+
onMouseEnter: B,
|
|
94
|
+
onMouseLeave: U,
|
|
95
|
+
children: [P === "button" ? /* @__PURE__ */ o("button", {
|
|
96
|
+
...Y,
|
|
97
|
+
type: "button",
|
|
98
|
+
children: g
|
|
99
|
+
}) : /* @__PURE__ */ o("span", {
|
|
100
|
+
...Y,
|
|
101
|
+
tabIndex: F,
|
|
102
|
+
children: g
|
|
103
|
+
}), X && f(/* @__PURE__ */ s("span", {
|
|
104
|
+
ref: M,
|
|
105
|
+
id: E,
|
|
106
|
+
role: "tooltip",
|
|
107
|
+
className: "kapi-annotation__pop",
|
|
108
|
+
"data-side": K?.side ?? "bottom",
|
|
109
|
+
"data-interactive": S ? "" : void 0,
|
|
110
|
+
style: {
|
|
111
|
+
top: K?.top ?? 0,
|
|
112
|
+
left: K?.left ?? 0,
|
|
113
|
+
visibility: K ? void 0 : "hidden"
|
|
114
|
+
},
|
|
115
|
+
tabIndex: S ? -1 : void 0,
|
|
116
|
+
onMouseEnter: S ? z : void 0,
|
|
117
|
+
onMouseLeave: S ? U : void 0,
|
|
118
|
+
onBlur: S ? W : void 0,
|
|
119
|
+
children: [J.title && /* @__PURE__ */ o("span", {
|
|
120
|
+
className: "kapi-annotation__title",
|
|
121
|
+
children: J.title
|
|
122
|
+
}), /* @__PURE__ */ o("span", {
|
|
123
|
+
className: "kapi-annotation__body",
|
|
124
|
+
children: J.body
|
|
125
|
+
})]
|
|
126
|
+
}), X)]
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
//#endregion
|
|
130
|
+
export { g as KapiAnnotation };
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { HTMLAttributes } from "react";
|
|
2
|
+
import type { KapiBadgeVariant } from "./KapiBadge";
|
|
3
|
+
import "./display.css";
|
|
4
|
+
export type KapiAvatarSize = "sm" | "md" | "lg" | number;
|
|
5
|
+
export type KapiAvatarColor = "auto" | KapiBadgeVariant;
|
|
6
|
+
export type KapiAvatarProps = Omit<HTMLAttributes<HTMLSpanElement>, "children"> & {
|
|
7
|
+
/** Nombre completo: de acá salen las iniciales y el color automático. */
|
|
8
|
+
name?: string;
|
|
9
|
+
/** Pisa las iniciales calculadas. */
|
|
10
|
+
initials?: string;
|
|
11
|
+
/** URL de imagen; si está, reemplaza a las iniciales. */
|
|
12
|
+
src?: string;
|
|
13
|
+
/** `sm` 28 · `md` 36 · `lg` 48, o un número con el tamaño exacto en px. */
|
|
14
|
+
size?: KapiAvatarSize;
|
|
15
|
+
/** `auto` elige un rol de forma determinística según `name`. */
|
|
16
|
+
color?: KapiAvatarColor;
|
|
17
|
+
};
|
|
18
|
+
/** Orden fijo de los roles para el color automático (cambiarlo cambia los colores de todos). */
|
|
19
|
+
export declare const AVATAR_ROLES: ReadonlyArray<KapiBadgeVariant>;
|
|
20
|
+
/** Clases de un avatar. Pura y exportada. */
|
|
21
|
+
export declare const avatarClasses: ({ size, role, className }: {
|
|
22
|
+
size?: KapiAvatarSize | undefined;
|
|
23
|
+
role: KapiBadgeVariant;
|
|
24
|
+
className?: string | undefined;
|
|
25
|
+
}) => string;
|
|
26
|
+
/** Avatar circular: imagen o iniciales sobre el color subtle del rol. */
|
|
27
|
+
export declare function KapiAvatar({ name, initials, src, size, color, className, style, ...rest }: KapiAvatarProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
/* empty css */
|
|
3
|
+
import { colorIndexFrom as e, initialsFrom as t } from "./avatarLogic.js";
|
|
4
|
+
import { jsx as n } from "react/jsx-runtime";
|
|
5
|
+
//#region src/components/display/KapiAvatar.tsx
|
|
6
|
+
var r = [
|
|
7
|
+
"primary",
|
|
8
|
+
"success",
|
|
9
|
+
"info",
|
|
10
|
+
"warning",
|
|
11
|
+
"danger",
|
|
12
|
+
"neutral"
|
|
13
|
+
], i = ({ size: e = "md", role: t, className: n = "" }) => [
|
|
14
|
+
"kapi-avatar",
|
|
15
|
+
`kapi-avatar--${t}`,
|
|
16
|
+
typeof e == "string" && e !== "md" && `kapi-avatar--${e}`,
|
|
17
|
+
n
|
|
18
|
+
].filter(Boolean).join(" ");
|
|
19
|
+
function a({ name: a = "", initials: o, src: s, size: c = "md", color: l = "auto", className: u, style: d, ...f }) {
|
|
20
|
+
let p = l === "auto" ? r[e(a, r.length)] ?? "neutral" : l, m = typeof c == "number" ? c : void 0, h = m === void 0 ? d : {
|
|
21
|
+
width: m,
|
|
22
|
+
height: m,
|
|
23
|
+
fontSize: Math.round(m * .38),
|
|
24
|
+
...d
|
|
25
|
+
};
|
|
26
|
+
return /* @__PURE__ */ n("span", {
|
|
27
|
+
className: i({
|
|
28
|
+
size: c,
|
|
29
|
+
role: p,
|
|
30
|
+
className: u
|
|
31
|
+
}),
|
|
32
|
+
style: h,
|
|
33
|
+
role: s ? void 0 : "img",
|
|
34
|
+
"aria-label": s ? void 0 : a || void 0,
|
|
35
|
+
...f,
|
|
36
|
+
children: s ? /* @__PURE__ */ n("img", {
|
|
37
|
+
src: s,
|
|
38
|
+
alt: a
|
|
39
|
+
}) : o ?? t(a)
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
//#endregion
|
|
43
|
+
export { r as AVATAR_ROLES, a as KapiAvatar, i as avatarClasses };
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { HTMLAttributes } from "react";
|
|
2
|
+
import { type KapiAvatarColor, type KapiAvatarSize } from "./KapiAvatar";
|
|
3
|
+
import "./display.css";
|
|
4
|
+
export type KapiAvatarGroupItem = {
|
|
5
|
+
name?: string;
|
|
6
|
+
initials?: string;
|
|
7
|
+
src?: string;
|
|
8
|
+
color?: KapiAvatarColor;
|
|
9
|
+
};
|
|
10
|
+
export type KapiAvatarGroupProps = Omit<HTMLAttributes<HTMLDivElement>, "children"> & {
|
|
11
|
+
/** Personas a mostrar, en orden; las que pasan de `max` se resumen en "+N". */
|
|
12
|
+
items: readonly KapiAvatarGroupItem[];
|
|
13
|
+
/** Max avatars before the trailing "+N" tile. Default 4. */
|
|
14
|
+
max?: number;
|
|
15
|
+
/** Same scale as KapiAvatar: `sm` 28 · `md` 36 · `lg` 48, or px. */
|
|
16
|
+
size?: KapiAvatarSize;
|
|
17
|
+
};
|
|
18
|
+
/** Overlapping avatars capped at `max`, with a trailing "+N" tile. Each avatar keeps its name as tooltip. */
|
|
19
|
+
export declare function KapiAvatarGroup({ items, max, size, className, style, ...rest }: KapiAvatarGroupProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
/* empty css */
|
|
3
|
+
import { KapiAvatar as e } from "./KapiAvatar.js";
|
|
4
|
+
import { avatarOverlapPx as t, overflowLabel as n, splitAvatarGroup as r } from "./avatarGroupLogic.js";
|
|
5
|
+
import { jsx as i, jsxs as a } from "react/jsx-runtime";
|
|
6
|
+
//#region src/components/display/KapiAvatarGroup.tsx
|
|
7
|
+
var o = {
|
|
8
|
+
sm: 28,
|
|
9
|
+
md: 36,
|
|
10
|
+
lg: 48
|
|
11
|
+
};
|
|
12
|
+
function s({ items: s, max: c = 4, size: l = "md", className: u, style: d, ...f }) {
|
|
13
|
+
let { visible: p, overflow: m } = r(s, c), h = typeof l == "number" ? l : o[l], g = {
|
|
14
|
+
"--kapi-avatargroup-overlap": `${t(h)}px`,
|
|
15
|
+
...d
|
|
16
|
+
}, _ = s.slice(p.length).map((e) => e.name).filter(Boolean).join(", ");
|
|
17
|
+
return /* @__PURE__ */ a("div", {
|
|
18
|
+
className: ["kapi-avatargroup", u].filter(Boolean).join(" "),
|
|
19
|
+
style: g,
|
|
20
|
+
role: "group",
|
|
21
|
+
...f,
|
|
22
|
+
children: [p.map((t, n) => /* @__PURE__ */ i(e, {
|
|
23
|
+
className: "kapi-avatargroup__item",
|
|
24
|
+
title: t.name,
|
|
25
|
+
size: l,
|
|
26
|
+
...t
|
|
27
|
+
}, `${t.name ?? t.initials ?? ""}-${n}`)), m > 0 && /* @__PURE__ */ i(e, {
|
|
28
|
+
className: "kapi-avatargroup__item kapi-avatargroup__more",
|
|
29
|
+
color: "neutral",
|
|
30
|
+
size: l,
|
|
31
|
+
initials: n(m),
|
|
32
|
+
title: _ || void 0,
|
|
33
|
+
"aria-label": `${m} más`
|
|
34
|
+
})]
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
//#endregion
|
|
38
|
+
export { s as KapiAvatarGroup };
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { HTMLAttributes, ReactNode } from "react";
|
|
2
|
+
import "./display.css";
|
|
3
|
+
export type KapiBadgeVariant = "neutral" | "primary" | "success" | "info" | "warning" | "danger";
|
|
4
|
+
export type KapiBadgeTone = "subtle" | "solid";
|
|
5
|
+
export type KapiBadgeSize = "sm" | "md";
|
|
6
|
+
export type KapiBadgeProps = Omit<HTMLAttributes<HTMLSpanElement>, "children"> & {
|
|
7
|
+
/** Rol semántico (color). `neutral` es el gris calmo por defecto. */
|
|
8
|
+
variant?: KapiBadgeVariant;
|
|
9
|
+
/** `subtle` = fondo suave + borde; `solid` = color pleno con texto `-fg`. */
|
|
10
|
+
tone?: KapiBadgeTone;
|
|
11
|
+
/** Tamaño: `sm` · `md`. */
|
|
12
|
+
size?: KapiBadgeSize;
|
|
13
|
+
/** Punto de color a la izquierda. */
|
|
14
|
+
dot?: boolean;
|
|
15
|
+
/** Contenido del badge (texto corto o número). */
|
|
16
|
+
children?: ReactNode;
|
|
17
|
+
};
|
|
18
|
+
/** Clases de un badge. Pura y exportada: es lo que se testea (no el markup). */
|
|
19
|
+
export declare const badgeClasses: ({ variant, tone, size, className }?: Pick<KapiBadgeProps, "variant" | "tone" | "size" | "className">) => string;
|
|
20
|
+
/** Pastilla de estado/etiqueta, con los tokens semánticos por rol. */
|
|
21
|
+
export declare function KapiBadge({ variant, tone, size, dot, className, children, ...rest }: KapiBadgeProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
/* empty css */
|
|
3
|
+
import { jsx as e, jsxs as t } from "react/jsx-runtime";
|
|
4
|
+
//#region src/components/display/KapiBadge.tsx
|
|
5
|
+
var n = ({ variant: e = "neutral", tone: t = "subtle", size: n = "md", className: r = "" } = {}) => [
|
|
6
|
+
"kapi-badge",
|
|
7
|
+
`kapi-badge--${e}`,
|
|
8
|
+
t === "solid" && "kapi-badge--solid",
|
|
9
|
+
n !== "md" && `kapi-badge--${n}`,
|
|
10
|
+
r
|
|
11
|
+
].filter(Boolean).join(" ");
|
|
12
|
+
function r({ variant: r = "neutral", tone: i = "subtle", size: a = "md", dot: o = !1, className: s, children: c, ...l }) {
|
|
13
|
+
return /* @__PURE__ */ t("span", {
|
|
14
|
+
className: n({
|
|
15
|
+
variant: r,
|
|
16
|
+
tone: i,
|
|
17
|
+
size: a,
|
|
18
|
+
className: s
|
|
19
|
+
}),
|
|
20
|
+
...l,
|
|
21
|
+
children: [o && /* @__PURE__ */ e("span", {
|
|
22
|
+
className: "kapi-badge__dot",
|
|
23
|
+
"aria-hidden": !0
|
|
24
|
+
}), c]
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
//#endregion
|
|
28
|
+
export { r as KapiBadge, n as badgeClasses };
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { HTMLAttributes, ReactNode, Ref } from "react";
|
|
2
|
+
import "./KapiComment.css";
|
|
3
|
+
/** Atributos nativos (`className`, `style`, `id`, `data-*`…) van al `<article>`. */
|
|
4
|
+
export type KapiCommentProps = Omit<HTMLAttributes<HTMLElement>, "children" | "title"> & {
|
|
5
|
+
/** Nombre del autor (también da las iniciales y el color del avatar). */
|
|
6
|
+
author: string;
|
|
7
|
+
/** Foto del autor; sin ella el avatar muestra iniciales. */
|
|
8
|
+
avatarSrc?: string | undefined;
|
|
9
|
+
/** Pisa el avatar (p. ej. un ícono para comentarios del sistema). */
|
|
10
|
+
avatar?: ReactNode;
|
|
11
|
+
/** Fecha del comentario; se muestra relativa ("hace 5 minutos") con la absoluta en el `title`. */
|
|
12
|
+
date?: Date | string | undefined;
|
|
13
|
+
/** Hora de referencia de la fecha relativa (tests y capturas deterministas). Sin valor, el reloj real. */
|
|
14
|
+
now?: Date | undefined;
|
|
15
|
+
/** Texto del comentario. */
|
|
16
|
+
body: ReactNode;
|
|
17
|
+
/** Dato chico junto a la fecha ("editado", "interno"…). */
|
|
18
|
+
meta?: ReactNode;
|
|
19
|
+
/** Acciones bajo el cuerpo (responder, editar, borrar…). */
|
|
20
|
+
actions?: ReactNode;
|
|
21
|
+
/** Respuestas (otros `KapiComment`): se muestran con sangría; la sangría no crece más allá de un nivel. */
|
|
22
|
+
children?: ReactNode;
|
|
23
|
+
/** Ref al `<article>`. */
|
|
24
|
+
ref?: Ref<HTMLElement>;
|
|
25
|
+
};
|
|
26
|
+
/** Un comentario de un hilo: avatar, autor, fecha relativa, cuerpo, acciones y respuestas anidadas. */
|
|
27
|
+
export declare const KapiComment: ({ author, avatarSrc, avatar, date, now, body, meta, actions, children, ref, className, ...rest }: KapiCommentProps) => import("react").JSX.Element;
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useKapiLocale as e } from "../locale/KapiLocaleProvider.js";
|
|
3
|
+
import { joinClasses as t } from "../rootProps.js";
|
|
4
|
+
import { KapiAvatar as n } from "./KapiAvatar.js";
|
|
5
|
+
import { formatDate as r, formatRelativeTime as i, isoDateTime as a } from "../../hooks/dateFormat.js";
|
|
6
|
+
/* empty css */
|
|
7
|
+
import { jsx as o, jsxs as s } from "react/jsx-runtime";
|
|
8
|
+
//#region src/components/display/KapiComment.tsx
|
|
9
|
+
var c = {
|
|
10
|
+
dateStyle: "medium",
|
|
11
|
+
timeStyle: "short"
|
|
12
|
+
}, l = ({ author: l, avatarSrc: u, avatar: d, date: f, now: p, body: m, meta: h, actions: g, children: _, ref: v, className: y, ...b }) => {
|
|
13
|
+
let x = e() ?? "es", S = f === void 0 ? null : a(f), C = _ != null && _ !== !1;
|
|
14
|
+
return /* @__PURE__ */ s("article", {
|
|
15
|
+
...b,
|
|
16
|
+
ref: v,
|
|
17
|
+
className: t("kapi-comment", y),
|
|
18
|
+
children: [/* @__PURE__ */ s("div", {
|
|
19
|
+
className: "kapi-comment__row",
|
|
20
|
+
children: [/* @__PURE__ */ o("span", {
|
|
21
|
+
className: "kapi-comment__avatar",
|
|
22
|
+
children: d ?? /* @__PURE__ */ o(n, {
|
|
23
|
+
name: l,
|
|
24
|
+
size: "sm",
|
|
25
|
+
...u ? { src: u } : {}
|
|
26
|
+
})
|
|
27
|
+
}), /* @__PURE__ */ s("div", {
|
|
28
|
+
className: "kapi-comment__main",
|
|
29
|
+
children: [
|
|
30
|
+
/* @__PURE__ */ s("div", {
|
|
31
|
+
className: "kapi-comment__head",
|
|
32
|
+
children: [
|
|
33
|
+
/* @__PURE__ */ o("span", {
|
|
34
|
+
className: "kapi-comment__author",
|
|
35
|
+
children: l
|
|
36
|
+
}),
|
|
37
|
+
S !== null && f !== void 0 && /* @__PURE__ */ o("time", {
|
|
38
|
+
className: "kapi-comment__date",
|
|
39
|
+
dateTime: S,
|
|
40
|
+
title: r(f, x, c),
|
|
41
|
+
children: i(f, p ?? /* @__PURE__ */ new Date(), x)
|
|
42
|
+
}),
|
|
43
|
+
h != null && h !== !1 && /* @__PURE__ */ o("span", {
|
|
44
|
+
className: "kapi-comment__meta",
|
|
45
|
+
children: h
|
|
46
|
+
})
|
|
47
|
+
]
|
|
48
|
+
}),
|
|
49
|
+
/* @__PURE__ */ o("div", {
|
|
50
|
+
className: "kapi-comment__body",
|
|
51
|
+
children: m
|
|
52
|
+
}),
|
|
53
|
+
g != null && g !== !1 && /* @__PURE__ */ o("div", {
|
|
54
|
+
className: "kapi-comment__actions",
|
|
55
|
+
children: g
|
|
56
|
+
})
|
|
57
|
+
]
|
|
58
|
+
})]
|
|
59
|
+
}), C && /* @__PURE__ */ o("div", {
|
|
60
|
+
className: "kapi-comment__replies",
|
|
61
|
+
children: _
|
|
62
|
+
})]
|
|
63
|
+
});
|
|
64
|
+
};
|
|
65
|
+
//#endregion
|
|
66
|
+
export { l as KapiComment };
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { type CSSProperties, type Ref, type TextareaHTMLAttributes } from "react";
|
|
2
|
+
import type { KapiLabelsOverride } from "../labelsLogic";
|
|
3
|
+
import "./KapiComment.css";
|
|
4
|
+
export type KapiCommentComposerLabels = {
|
|
5
|
+
/** Nombre accesible del textarea si no hay `KapiField`, `aria-label` ni `aria-labelledby`. */
|
|
6
|
+
label: string;
|
|
7
|
+
/** Placeholder del textarea (lo pisa la prop `placeholder`). */
|
|
8
|
+
placeholder: string;
|
|
9
|
+
/** Texto del botón de envío. */
|
|
10
|
+
submit: string;
|
|
11
|
+
/** Ayuda del atajo de teclado (descripción accesible y texto bajo el control). */
|
|
12
|
+
shortcut: string;
|
|
13
|
+
};
|
|
14
|
+
export declare const DEFAULT_COMMENT_COMPOSER_LABELS: KapiCommentComposerLabels;
|
|
15
|
+
type OwnKeys = "value" | "defaultValue" | "onChange" | "onSubmit" | "children" | "className" | "style";
|
|
16
|
+
/**
|
|
17
|
+
* Los atributos nativos (`name`, `id`, `rows`, `maxLength`, `onBlur`, `aria-*`…) van al `<textarea>`;
|
|
18
|
+
* `className` y `style` van al contenedor.
|
|
19
|
+
*/
|
|
20
|
+
export type KapiCommentComposerProps = Omit<TextareaHTMLAttributes<HTMLTextAreaElement>, OwnKeys> & {
|
|
21
|
+
/** Texto (controlado). */
|
|
22
|
+
value?: string | undefined;
|
|
23
|
+
/** Texto inicial (no controlado). */
|
|
24
|
+
defaultValue?: string | undefined;
|
|
25
|
+
/** Cambio del texto, ya como string. */
|
|
26
|
+
onChange?: ((text: string) => void) | undefined;
|
|
27
|
+
/**
|
|
28
|
+
* Envío (botón o Ctrl/Cmd+Enter) con el texto recortado. No controlado, el compositor se vacía después;
|
|
29
|
+
* si devuelve una promesa, queda ocupado mientras corre y se vacía solo si resuelve (si rechaza, el
|
|
30
|
+
* borrador se conserva para reintentar).
|
|
31
|
+
*/
|
|
32
|
+
onSubmit: (text: string) => void | PromiseLike<unknown>;
|
|
33
|
+
/** Enviando: bloquea el envío y marca el botón `aria-busy`. */
|
|
34
|
+
loading?: boolean | undefined;
|
|
35
|
+
/** Marca el textarea `aria-invalid` (o lo toma del `KapiField`). */
|
|
36
|
+
invalid?: boolean | undefined;
|
|
37
|
+
/** Marca el textarea obligatorio (o lo toma del `KapiField`). */
|
|
38
|
+
required?: boolean | undefined;
|
|
39
|
+
/** Clase extra del contenedor. */
|
|
40
|
+
className?: string | undefined;
|
|
41
|
+
/** Estilos en línea del contenedor. */
|
|
42
|
+
style?: CSSProperties | undefined;
|
|
43
|
+
/** Textos fijos (clave `commentComposer`). */
|
|
44
|
+
labels?: KapiLabelsOverride<KapiCommentComposerLabels> | undefined;
|
|
45
|
+
/** Ref al `<textarea>`. */
|
|
46
|
+
ref?: Ref<HTMLTextAreaElement>;
|
|
47
|
+
};
|
|
48
|
+
export declare const KapiCommentComposer: ({ value: valueProp, defaultValue, onChange, onSubmit, loading, invalid, required, disabled, className, style, labels, ref, placeholder, onKeyDown, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, "aria-describedby": ariaDescribedBy, ...rest }: KapiCommentComposerProps) => import("react").JSX.Element;
|
|
49
|
+
export {};
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { KapiButton as e } from "../inputs/KapiButton.js";
|
|
3
|
+
import { assignRef as t, joinIds as n } from "../inputs/fieldLogic.js";
|
|
4
|
+
import { useKapiField as r } from "../inputs/KapiField.js";
|
|
5
|
+
import { useLabels as i } from "../locale/KapiLocaleProvider.js";
|
|
6
|
+
import { joinClasses as a } from "../rootProps.js";
|
|
7
|
+
import { KapiTextarea as o } from "../inputs/KapiTextarea.js";
|
|
8
|
+
/* empty css */
|
|
9
|
+
import { canSubmitComment as s, draftAfterSubmit as c, isSubmitShortcut as l } from "./commentLogic.js";
|
|
10
|
+
import { jsx as u, jsxs as d } from "react/jsx-runtime";
|
|
11
|
+
import { useId as f, useRef as p, useState as m } from "react";
|
|
12
|
+
//#region src/components/display/KapiCommentComposer.tsx
|
|
13
|
+
var h = {
|
|
14
|
+
label: "Comentario",
|
|
15
|
+
placeholder: "Escribe un comentario…",
|
|
16
|
+
submit: "Comentar",
|
|
17
|
+
shortcut: "Ctrl o ⌘ + Enter para enviar"
|
|
18
|
+
}, g = (e) => typeof e?.then == "function", _ = ({ value: _, defaultValue: v = "", onChange: y, onSubmit: b, loading: x = !1, invalid: S, required: C, disabled: w, className: T, style: E, labels: D, ref: O, placeholder: k, onKeyDown: A, "aria-label": j, "aria-labelledby": M, "aria-describedby": N, ...P }) => {
|
|
19
|
+
let F = i("commentComposer", h, D), I = r(), [L, R] = m(v), z = _ ?? L, B = f(), V = p(null), [H, U] = m(!1), W = x || H, G = s(z, {
|
|
20
|
+
disabled: w,
|
|
21
|
+
loading: W
|
|
22
|
+
}), K = (e) => {
|
|
23
|
+
_ === void 0 && R(e), y?.(e);
|
|
24
|
+
}, q = () => {
|
|
25
|
+
if (!G) return;
|
|
26
|
+
let e = z.trim(), t = b(e);
|
|
27
|
+
V.current?.focus(), g(t) ? (U(!0), Promise.resolve(t).then(() => {
|
|
28
|
+
_ === void 0 && R((t) => c(t, e));
|
|
29
|
+
}, (e) => console.error(e)).finally(() => U(!1))) : _ === void 0 && R("");
|
|
30
|
+
}, J = (e) => {
|
|
31
|
+
A?.(e), !e.defaultPrevented && l({
|
|
32
|
+
...e,
|
|
33
|
+
isComposing: e.nativeEvent.isComposing
|
|
34
|
+
}) && (e.preventDefault(), q());
|
|
35
|
+
}, Y = j !== void 0 || M !== void 0 || I !== null;
|
|
36
|
+
return /* @__PURE__ */ d("div", {
|
|
37
|
+
className: a("kapi-composer", T),
|
|
38
|
+
style: E,
|
|
39
|
+
children: [/* @__PURE__ */ u(o, {
|
|
40
|
+
...P,
|
|
41
|
+
ref: (e) => {
|
|
42
|
+
V.current = e, t(O, e);
|
|
43
|
+
},
|
|
44
|
+
className: "kapi-composer__input",
|
|
45
|
+
autosize: !0,
|
|
46
|
+
maxRows: 8,
|
|
47
|
+
rows: 2,
|
|
48
|
+
value: z,
|
|
49
|
+
disabled: w,
|
|
50
|
+
placeholder: k ?? F.placeholder,
|
|
51
|
+
"aria-label": Y ? j : F.label,
|
|
52
|
+
"aria-labelledby": M,
|
|
53
|
+
"aria-describedby": n(N, B),
|
|
54
|
+
...C === void 0 ? {} : { required: C },
|
|
55
|
+
...S ? { status: "err" } : {},
|
|
56
|
+
onChange: (e) => K(e.target.value),
|
|
57
|
+
onKeyDown: J
|
|
58
|
+
}), /* @__PURE__ */ d("div", {
|
|
59
|
+
className: "kapi-composer__foot",
|
|
60
|
+
children: [/* @__PURE__ */ u("span", {
|
|
61
|
+
id: B,
|
|
62
|
+
className: "kapi-composer__hint",
|
|
63
|
+
children: F.shortcut
|
|
64
|
+
}), /* @__PURE__ */ u(e, {
|
|
65
|
+
variant: "primary",
|
|
66
|
+
size: "sm",
|
|
67
|
+
disabled: !G,
|
|
68
|
+
"aria-busy": W || void 0,
|
|
69
|
+
onClick: q,
|
|
70
|
+
children: F.submit
|
|
71
|
+
})]
|
|
72
|
+
})]
|
|
73
|
+
});
|
|
74
|
+
};
|
|
75
|
+
//#endregion
|
|
76
|
+
export { h as DEFAULT_COMMENT_COMPOSER_LABELS, _ as KapiCommentComposer };
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { HTMLAttributes, ReactNode } from "react";
|
|
2
|
+
import "./display.css";
|
|
3
|
+
export type KapiDescriptionItem = {
|
|
4
|
+
label: ReactNode;
|
|
5
|
+
value: ReactNode;
|
|
6
|
+
};
|
|
7
|
+
/** Atributos nativos (`id`, `style`, `data-*`, `aria-*`…) van al `<dl>`. */
|
|
8
|
+
export type KapiDescriptionListProps = Omit<HTMLAttributes<HTMLDListElement>, "children"> & {
|
|
9
|
+
/** Pares etiqueta/valor; cada uno es un `<dt>`/`<dd>`. */
|
|
10
|
+
items: KapiDescriptionItem[];
|
|
11
|
+
/** Cantidad de columnas (default 1). */
|
|
12
|
+
columns?: number;
|
|
13
|
+
/** `true`: etiqueta a la izquierda y valor a la derecha, en la misma línea. */
|
|
14
|
+
inline?: boolean;
|
|
15
|
+
};
|
|
16
|
+
/** Clases de la lista. Pura y exportada. */
|
|
17
|
+
export declare const descriptionListClasses: ({ inline, className }?: Pick<KapiDescriptionListProps, "inline" | "className">) => string;
|
|
18
|
+
/** Lista de pares etiqueta/valor (`<dl>`), en una o varias columnas. */
|
|
19
|
+
export declare function KapiDescriptionList({ items, columns, inline, className, style, ...rest }: KapiDescriptionListProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
/* empty css */
|
|
3
|
+
import { jsx as e, jsxs as t } from "react/jsx-runtime";
|
|
4
|
+
//#region src/components/display/KapiDescriptionList.tsx
|
|
5
|
+
var n = ({ inline: e = !1, className: t = "" } = {}) => [
|
|
6
|
+
"kapi-dl",
|
|
7
|
+
e && "kapi-dl--inline",
|
|
8
|
+
t
|
|
9
|
+
].filter(Boolean).join(" ");
|
|
10
|
+
function r({ items: r, columns: i = 1, inline: a = !1, className: o, style: s, ...c }) {
|
|
11
|
+
let l = Math.max(1, Math.floor(i));
|
|
12
|
+
return /* @__PURE__ */ e("dl", {
|
|
13
|
+
...c,
|
|
14
|
+
className: n({
|
|
15
|
+
inline: a,
|
|
16
|
+
className: o
|
|
17
|
+
}),
|
|
18
|
+
style: {
|
|
19
|
+
...s,
|
|
20
|
+
"--kapi-dl-cols": l
|
|
21
|
+
},
|
|
22
|
+
children: r.map((n, r) => /* @__PURE__ */ t("div", {
|
|
23
|
+
className: "kapi-dl__item",
|
|
24
|
+
children: [/* @__PURE__ */ e("dt", {
|
|
25
|
+
className: "kapi-dl__label",
|
|
26
|
+
children: n.label
|
|
27
|
+
}), /* @__PURE__ */ e("dd", {
|
|
28
|
+
className: "kapi-dl__value",
|
|
29
|
+
children: n.value
|
|
30
|
+
})]
|
|
31
|
+
}, r))
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
//#endregion
|
|
35
|
+
export { r as KapiDescriptionList, n as descriptionListClasses };
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { HTMLAttributes, LiHTMLAttributes, MouseEvent as ReactMouseEvent, ReactNode, Ref } from "react";
|
|
2
|
+
import "./KapiFileItem.css";
|
|
3
|
+
/** Atributos nativos (`className`, `style`, `id`, `data-*`…) van al `<li>`. */
|
|
4
|
+
export type KapiFileItemProps = Omit<LiHTMLAttributes<HTMLLIElement>, "children" | "type" | "value"> & {
|
|
5
|
+
/** Nombre del archivo (se recorta con "…" y queda completo en el `title`). */
|
|
6
|
+
name: string;
|
|
7
|
+
/** MIME del archivo; elige el ícono. Sin él (o genérico) se deduce de la extensión de `name`. */
|
|
8
|
+
mimeType?: string | undefined;
|
|
9
|
+
/** Tamaño en bytes; se muestra legible ("1,5 KB") en la línea de metadatos. */
|
|
10
|
+
size?: number | undefined;
|
|
11
|
+
/** Fecha del archivo (subida, modificación); se muestra absoluta ("12 mar 2026") en un `<time>`. */
|
|
12
|
+
date?: Date | string | undefined;
|
|
13
|
+
/** Otros datos de la línea de metadatos, antes del tamaño y la fecha ("Constancia", "Ana Pérez"). */
|
|
14
|
+
details?: ReadonlyArray<ReactNode> | undefined;
|
|
15
|
+
/** Pisa el ícono del tipo de archivo (p. ej. un escudo para un archivo bloqueado). Siempre decorativo. */
|
|
16
|
+
icon?: ReactNode;
|
|
17
|
+
/** Estado a la derecha del nombre (un `KapiBadge`: "Verificado", "En revisión"…). */
|
|
18
|
+
status?: ReactNode;
|
|
19
|
+
/** Acciones al final de la fila (botones de ver, descargar, quitar…). */
|
|
20
|
+
actions?: ReactNode;
|
|
21
|
+
/** Con `onOpen` el nombre es un botón (abrir la vista previa); sin él, texto. */
|
|
22
|
+
onOpen?: ((event: ReactMouseEvent<HTMLButtonElement>) => void) | undefined;
|
|
23
|
+
/** Ref al `<li>`. */
|
|
24
|
+
ref?: Ref<HTMLLIElement>;
|
|
25
|
+
};
|
|
26
|
+
/**
|
|
27
|
+
* Una fila de adjunto: ícono según el tipo, nombre, metadatos (detalles · tamaño · fecha), estado y
|
|
28
|
+
* acciones. Es un `<li>`: va dentro de `KapiFileList`. Contenido por props, sin lógica de negocio.
|
|
29
|
+
*/
|
|
30
|
+
export declare const KapiFileItem: ({ name, mimeType, size, date, details, icon, status, actions, onOpen, ref, className, ...rest }: KapiFileItemProps) => import("react").JSX.Element;
|
|
31
|
+
/** Atributos nativos (`className`, `style`, `id`, `aria-label`…) van al `<ul>`. */
|
|
32
|
+
export type KapiFileListProps = HTMLAttributes<HTMLUListElement> & {
|
|
33
|
+
/** Filas de la lista (`KapiFileItem`). */
|
|
34
|
+
children?: ReactNode;
|
|
35
|
+
/** Ref al `<ul>`. */
|
|
36
|
+
ref?: Ref<HTMLUListElement>;
|
|
37
|
+
};
|
|
38
|
+
/** Lista de adjuntos (`<ul>` sin viñetas, filas separadas por una línea). */
|
|
39
|
+
export declare const KapiFileList: ({ className, ref, ...rest }: KapiFileListProps) => import("react").JSX.Element;
|