plass-ui 0.0.1 → 1.0.1
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/dist/components/accordion/PlAccordion.d.ts +98 -0
- package/dist/components/accordion/PlAccordion.js +1 -0
- package/dist/components/accordion/index.d.ts +2 -0
- package/dist/components/accordion/index.js +1 -0
- package/dist/components/alert/PlAlert.d.ts +50 -0
- package/dist/components/alert/PlAlert.js +1 -0
- package/dist/components/alert/index.d.ts +2 -0
- package/dist/components/alert/index.js +1 -0
- package/dist/components/animate-appear/PlAnimateAppear.d.ts +55 -0
- package/dist/components/animate-appear/PlAnimateAppear.js +1 -0
- package/dist/components/animate-appear/index.d.ts +2 -0
- package/dist/components/animate-appear/index.js +1 -0
- package/dist/components/animate-blink/PlAnimateBlink.d.ts +30 -0
- package/dist/components/animate-blink/PlAnimateBlink.js +1 -0
- package/dist/components/animate-blink/index.d.ts +2 -0
- package/dist/components/animate-blink/index.js +1 -0
- package/dist/components/animate-fade/PlAnimateFade.d.ts +35 -0
- package/dist/components/animate-fade/PlAnimateFade.js +1 -0
- package/dist/components/animate-fade/index.d.ts +2 -0
- package/dist/components/animate-fade/index.js +1 -0
- package/dist/components/animate-grow/PlAnimateGrow.d.ts +45 -0
- package/dist/components/animate-grow/PlAnimateGrow.js +1 -0
- package/dist/components/animate-grow/index.d.ts +2 -0
- package/dist/components/animate-grow/index.js +1 -0
- package/dist/components/animate-headline/PlAnimateHeadline.d.ts +55 -0
- package/dist/components/animate-headline/PlAnimateHeadline.js +1 -0
- package/dist/components/animate-headline/index.d.ts +2 -0
- package/dist/components/animate-headline/index.js +1 -0
- package/dist/components/animate-lighting/PlAnimateLighting.d.ts +67 -0
- package/dist/components/animate-lighting/PlAnimateLighting.js +1 -0
- package/dist/components/animate-lighting/index.d.ts +2 -0
- package/dist/components/animate-lighting/index.js +1 -0
- package/dist/components/animate-marquee/PlAnimateMarquee.d.ts +65 -0
- package/dist/components/animate-marquee/PlAnimateMarquee.js +1 -0
- package/dist/components/animate-marquee/index.d.ts +2 -0
- package/dist/components/animate-marquee/index.js +1 -0
- package/dist/components/animate-rotate/PlAnimateRotate.d.ts +52 -0
- package/dist/components/animate-rotate/PlAnimateRotate.js +1 -0
- package/dist/components/animate-rotate/index.d.ts +2 -0
- package/dist/components/animate-rotate/index.js +1 -0
- package/dist/components/animate-slide/PlAnimateSlide.d.ts +47 -0
- package/dist/components/animate-slide/PlAnimateSlide.js +1 -0
- package/dist/components/animate-slide/index.d.ts +2 -0
- package/dist/components/animate-slide/index.js +1 -0
- package/dist/components/animate-typing/PlAnimateTyping.d.ts +56 -0
- package/dist/components/animate-typing/PlAnimateTyping.js +1 -0
- package/dist/components/animate-typing/index.d.ts +2 -0
- package/dist/components/animate-typing/index.js +1 -0
- package/dist/components/animate-zoom/PlAnimateZoom.d.ts +37 -0
- package/dist/components/animate-zoom/PlAnimateZoom.js +1 -0
- package/dist/components/animate-zoom/index.d.ts +2 -0
- package/dist/components/animate-zoom/index.js +1 -0
- package/dist/components/aspect-ratio/PlAspectRatio.d.ts +64 -0
- package/dist/components/aspect-ratio/PlAspectRatio.js +1 -0
- package/dist/components/aspect-ratio/index.d.ts +2 -0
- package/dist/components/aspect-ratio/index.js +1 -0
- package/dist/components/avatar/PlAvatar.d.ts +102 -0
- package/dist/components/avatar/PlAvatar.js +1 -0
- package/dist/components/avatar/index.d.ts +2 -0
- package/dist/components/avatar/index.js +1 -0
- package/dist/components/badge/PlBadge.d.ts +86 -0
- package/dist/components/badge/PlBadge.js +1 -0
- package/dist/components/badge/index.d.ts +2 -0
- package/dist/components/badge/index.js +1 -0
- package/dist/components/blockquote/PlBlockquote.d.ts +64 -0
- package/dist/components/blockquote/PlBlockquote.js +1 -0
- package/dist/components/blockquote/index.d.ts +2 -0
- package/dist/components/blockquote/index.js +1 -0
- package/dist/components/bottom-navigation/PlBottomNavigation.d.ts +111 -0
- package/dist/components/bottom-navigation/PlBottomNavigation.js +1 -0
- package/dist/components/bottom-navigation/index.d.ts +2 -0
- package/dist/components/bottom-navigation/index.js +1 -0
- package/dist/components/box/PlBox.d.ts +50 -0
- package/dist/components/box/PlBox.js +1 -0
- package/dist/components/box/index.d.ts +2 -0
- package/dist/components/box/index.js +1 -0
- package/dist/components/breadcrumb/PlBreadcrumb.d.ts +138 -0
- package/dist/components/breadcrumb/PlBreadcrumb.js +1 -0
- package/dist/components/breadcrumb/index.d.ts +2 -0
- package/dist/components/breadcrumb/index.js +1 -0
- package/dist/components/button/{Button.d.ts → PlButton.d.ts} +3 -3
- package/dist/components/button/PlButton.js +1 -0
- package/dist/components/button/index.d.ts +2 -2
- package/dist/components/button/index.js +1 -1
- package/dist/components/button-group/PlButtonGroup.d.ts +32 -0
- package/dist/components/button-group/PlButtonGroup.js +1 -0
- package/dist/components/button-group/index.d.ts +2 -0
- package/dist/components/button-group/index.js +1 -0
- package/dist/components/card/PlCard.d.ts +81 -0
- package/dist/components/card/PlCard.js +1 -0
- package/dist/components/card/index.d.ts +2 -0
- package/dist/components/card/index.js +1 -0
- package/dist/components/carousel/PlCarousel.d.ts +78 -0
- package/dist/components/carousel/PlCarousel.js +1 -0
- package/dist/components/carousel/index.d.ts +2 -0
- package/dist/components/carousel/index.js +1 -0
- package/dist/components/chat-bubble/PlChatBubble.d.ts +127 -0
- package/dist/components/chat-bubble/PlChatBubble.js +1 -0
- package/dist/components/chat-bubble/index.d.ts +2 -0
- package/dist/components/chat-bubble/index.js +1 -0
- package/dist/components/checkbox/PlCheckbox.d.ts +39 -0
- package/dist/components/checkbox/PlCheckbox.js +1 -0
- package/dist/components/checkbox/index.d.ts +2 -0
- package/dist/components/checkbox/index.js +1 -0
- package/dist/components/chip/PlChip.d.ts +55 -0
- package/dist/components/chip/PlChip.js +1 -0
- package/dist/components/chip/index.d.ts +2 -0
- package/dist/components/chip/index.js +1 -0
- package/dist/components/collapsible/PlCollapsible.d.ts +84 -0
- package/dist/components/collapsible/PlCollapsible.js +1 -0
- package/dist/components/collapsible/index.d.ts +2 -0
- package/dist/components/collapsible/index.js +1 -0
- package/dist/components/combobox/PlCombobox.d.ts +140 -0
- package/dist/components/combobox/PlCombobox.js +1 -0
- package/dist/components/combobox/index.d.ts +2 -0
- package/dist/components/combobox/index.js +1 -0
- package/dist/components/container/PlContainer.d.ts +66 -0
- package/dist/components/container/PlContainer.js +1 -0
- package/dist/components/container/index.d.ts +2 -0
- package/dist/components/container/index.js +1 -0
- package/dist/components/date-picker/PlDatePicker.d.ts +73 -0
- package/dist/components/date-picker/PlDatePicker.js +1 -0
- package/dist/components/date-picker/index.d.ts +2 -0
- package/dist/components/date-picker/index.js +1 -0
- package/dist/components/date-range-picker/PlDateRangePicker.d.ts +91 -0
- package/dist/components/date-range-picker/PlDateRangePicker.js +1 -0
- package/dist/components/date-range-picker/index.d.ts +2 -0
- package/dist/components/date-range-picker/index.js +1 -0
- package/dist/components/date-time-picker/PlDateTimePicker.d.ts +74 -0
- package/dist/components/date-time-picker/PlDateTimePicker.js +1 -0
- package/dist/components/date-time-picker/index.d.ts +2 -0
- package/dist/components/date-time-picker/index.js +1 -0
- package/dist/components/divider/PlDivider.d.ts +73 -0
- package/dist/components/divider/PlDivider.js +1 -0
- package/dist/components/divider/index.d.ts +2 -0
- package/dist/components/divider/index.js +1 -0
- package/dist/components/drawer/PlDrawer.d.ts +144 -0
- package/dist/components/drawer/PlDrawer.js +1 -0
- package/dist/components/drawer/index.d.ts +2 -0
- package/dist/components/drawer/index.js +1 -0
- package/dist/components/file-picker/PlFilePicker.d.ts +105 -0
- package/dist/components/file-picker/PlFilePicker.js +1 -0
- package/dist/components/file-picker/index.d.ts +2 -0
- package/dist/components/file-picker/index.js +1 -0
- package/dist/components/floating-bottom-navigation/PlFloatingBottomNavigation.d.ts +118 -0
- package/dist/components/floating-bottom-navigation/PlFloatingBottomNavigation.js +1 -0
- package/dist/components/floating-bottom-navigation/index.d.ts +2 -0
- package/dist/components/floating-bottom-navigation/index.js +1 -0
- package/dist/components/grid/PlGrid.d.ts +67 -0
- package/dist/components/grid/PlGrid.js +1 -0
- package/dist/components/grid/PlGridItem.d.ts +50 -0
- package/dist/components/grid/PlGridItem.js +1 -0
- package/dist/components/grid/index.d.ts +4 -0
- package/dist/components/grid/index.js +1 -0
- package/dist/components/highlight/PlHighlight.d.ts +90 -0
- package/dist/components/highlight/PlHighlight.js +1 -0
- package/dist/components/highlight/index.d.ts +2 -0
- package/dist/components/highlight/index.js +1 -0
- package/dist/components/hot-keys/PlHotKeys.d.ts +93 -0
- package/dist/components/hot-keys/PlHotKeys.js +1 -0
- package/dist/components/hot-keys/index.d.ts +2 -0
- package/dist/components/hot-keys/index.js +1 -0
- package/dist/components/icon/PlIcon.d.ts +62 -0
- package/dist/components/icon/PlIcon.js +1 -0
- package/dist/components/icon/index.d.ts +2 -0
- package/dist/components/icon/index.js +1 -0
- package/dist/components/icon-button/PlIconButton.d.ts +39 -0
- package/dist/components/icon-button/PlIconButton.js +1 -0
- package/dist/components/icon-button/index.d.ts +2 -0
- package/dist/components/icon-button/index.js +1 -0
- package/dist/components/list/PlList.d.ts +82 -0
- package/dist/components/list/PlList.js +1 -0
- package/dist/components/list/index.d.ts +2 -0
- package/dist/components/list/index.js +1 -0
- package/dist/components/menu/PlMenu.d.ts +210 -0
- package/dist/components/menu/PlMenu.js +1 -0
- package/dist/components/menu/index.d.ts +2 -0
- package/dist/components/menu/index.js +1 -0
- package/dist/components/modal/PlModal.d.ts +112 -0
- package/dist/components/modal/PlModal.js +1 -0
- package/dist/components/modal/index.d.ts +2 -0
- package/dist/components/modal/index.js +1 -0
- package/dist/components/number-field/PlNumberField.d.ts +133 -0
- package/dist/components/number-field/PlNumberField.js +1 -0
- package/dist/components/number-field/index.d.ts +2 -0
- package/dist/components/number-field/index.js +1 -0
- package/dist/components/otp-field/PlOtpField.d.ts +82 -0
- package/dist/components/otp-field/PlOtpField.js +1 -0
- package/dist/components/otp-field/index.d.ts +2 -0
- package/dist/components/otp-field/index.js +1 -0
- package/dist/components/overlay/PlOverlay.d.ts +96 -0
- package/dist/components/overlay/PlOverlay.js +1 -0
- package/dist/components/overlay/index.d.ts +2 -0
- package/dist/components/overlay/index.js +1 -0
- package/dist/components/pagination/PlPagination.d.ts +88 -0
- package/dist/components/pagination/PlPagination.js +1 -0
- package/dist/components/pagination/index.d.ts +2 -0
- package/dist/components/pagination/index.js +1 -0
- package/dist/components/panes/PlPanes.d.ts +79 -0
- package/dist/components/panes/PlPanes.js +1 -0
- package/dist/components/panes/index.d.ts +2 -0
- package/dist/components/panes/index.js +1 -0
- package/dist/components/pill/PlPill.d.ts +81 -0
- package/dist/components/pill/PlPill.js +1 -0
- package/dist/components/pill/index.d.ts +2 -0
- package/dist/components/pill/index.js +1 -0
- package/dist/components/popover/PlPopover.d.ts +107 -0
- package/dist/components/popover/PlPopover.js +1 -0
- package/dist/components/popover/index.d.ts +2 -0
- package/dist/components/popover/index.js +1 -0
- package/dist/components/progress-box/PlProgressBox.d.ts +32 -0
- package/dist/components/progress-box/PlProgressBox.js +1 -0
- package/dist/components/progress-box/index.d.ts +2 -0
- package/dist/components/progress-box/index.js +1 -0
- package/dist/components/progress-circular/PlProgressCircular.d.ts +22 -0
- package/dist/components/progress-circular/PlProgressCircular.js +1 -0
- package/dist/components/progress-circular/index.d.ts +2 -0
- package/dist/components/progress-circular/index.js +1 -0
- package/dist/components/progress-linear/PlProgressLinear.d.ts +31 -0
- package/dist/components/progress-linear/PlProgressLinear.js +1 -0
- package/dist/components/progress-linear/index.d.ts +2 -0
- package/dist/components/progress-linear/index.js +1 -0
- package/dist/components/radio-group/PlRadioGroup.d.ts +54 -0
- package/dist/components/radio-group/PlRadioGroup.js +1 -0
- package/dist/components/radio-group/index.d.ts +2 -0
- package/dist/components/radio-group/index.js +1 -0
- package/dist/components/rating/PlRating.d.ts +90 -0
- package/dist/components/rating/PlRating.js +1 -0
- package/dist/components/rating/index.d.ts +2 -0
- package/dist/components/rating/index.js +1 -0
- package/dist/components/scroll-zone/PlScrollZone.d.ts +132 -0
- package/dist/components/scroll-zone/PlScrollZone.js +1 -0
- package/dist/components/scroll-zone/index.d.ts +2 -0
- package/dist/components/scroll-zone/index.js +1 -0
- package/dist/components/segmented-button/PlSegmentedButton.d.ts +79 -0
- package/dist/components/segmented-button/PlSegmentedButton.js +1 -0
- package/dist/components/segmented-button/index.d.ts +2 -0
- package/dist/components/segmented-button/index.js +1 -0
- package/dist/components/select/PlSelect.d.ts +77 -0
- package/dist/components/select/PlSelect.js +1 -0
- package/dist/components/select/index.d.ts +2 -0
- package/dist/components/select/index.js +1 -0
- package/dist/components/skeleton/PlSkeleton.d.ts +73 -0
- package/dist/components/skeleton/PlSkeleton.js +1 -0
- package/dist/components/skeleton/index.d.ts +2 -0
- package/dist/components/skeleton/index.js +1 -0
- package/dist/components/slider/PlSlider.d.ts +44 -0
- package/dist/components/slider/PlSlider.js +1 -0
- package/dist/components/slider/index.d.ts +2 -0
- package/dist/components/slider/index.js +1 -0
- package/dist/components/spoiler/PlSpoiler.d.ts +84 -0
- package/dist/components/spoiler/PlSpoiler.js +1 -0
- package/dist/components/spoiler/index.d.ts +2 -0
- package/dist/components/spoiler/index.js +1 -0
- package/dist/components/switch/PlSwitch.d.ts +42 -0
- package/dist/components/switch/PlSwitch.js +1 -0
- package/dist/components/switch/index.d.ts +2 -0
- package/dist/components/switch/index.js +1 -0
- package/dist/components/table/PlTable.d.ts +112 -0
- package/dist/components/table/PlTable.js +1 -0
- package/dist/components/table/index.d.ts +2 -0
- package/dist/components/table/index.js +1 -0
- package/dist/components/tabs/PlTabs.d.ts +94 -0
- package/dist/components/tabs/PlTabs.js +1 -0
- package/dist/components/tabs/index.d.ts +2 -0
- package/dist/components/tabs/index.js +1 -0
- package/dist/components/text-field/{TextField.d.ts → PlTextField.d.ts} +5 -5
- package/dist/components/text-field/PlTextField.js +1 -0
- package/dist/components/text-field/index.d.ts +2 -2
- package/dist/components/text-field/index.js +1 -1
- package/dist/components/text-link/PlTextLink.d.ts +80 -0
- package/dist/components/text-link/PlTextLink.js +1 -0
- package/dist/components/text-link/index.d.ts +2 -0
- package/dist/components/text-link/index.js +1 -0
- package/dist/components/time-picker/PlTimePicker.d.ts +88 -0
- package/dist/components/time-picker/PlTimePicker.js +1 -0
- package/dist/components/time-picker/index.d.ts +2 -0
- package/dist/components/time-picker/index.js +1 -0
- package/dist/components/timeline/PlTimeline.d.ts +98 -0
- package/dist/components/timeline/PlTimeline.js +1 -0
- package/dist/components/timeline/index.d.ts +2 -0
- package/dist/components/timeline/index.js +1 -0
- package/dist/components/toast/PlToast.d.ts +122 -0
- package/dist/components/toast/PlToast.js +1 -0
- package/dist/components/toast/index.d.ts +2 -0
- package/dist/components/toast/index.js +1 -0
- package/dist/components/toolbar/PlToolbar.d.ts +68 -0
- package/dist/components/toolbar/PlToolbar.js +1 -0
- package/dist/components/toolbar/index.d.ts +2 -0
- package/dist/components/toolbar/index.js +1 -0
- package/dist/components/tooltip/PlTooltip.d.ts +92 -0
- package/dist/components/tooltip/PlTooltip.js +1 -0
- package/dist/components/tooltip/index.d.ts +2 -0
- package/dist/components/tooltip/index.js +1 -0
- package/dist/components/typography/PlTypography.d.ts +66 -0
- package/dist/components/typography/PlTypography.js +1 -0
- package/dist/components/typography/index.d.ts +2 -0
- package/dist/components/typography/index.js +1 -0
- package/dist/css/accordion.css +2 -0
- package/dist/css/alert.css +2 -0
- package/dist/css/animate-appear.css +2 -0
- package/dist/css/animate-blink.css +2 -0
- package/dist/css/animate-fade.css +2 -0
- package/dist/css/animate-grow.css +2 -0
- package/dist/css/animate-headline.css +2 -0
- package/dist/css/animate-lighting.css +2 -0
- package/dist/css/animate-marquee.css +2 -0
- package/dist/css/animate-rotate.css +2 -0
- package/dist/css/animate-slide.css +2 -0
- package/dist/css/animate-typing.css +2 -0
- package/dist/css/animate-zoom.css +2 -0
- package/dist/css/aspect-ratio.css +2 -0
- package/dist/css/avatar.css +2 -0
- package/dist/css/badge.css +2 -0
- package/dist/css/base.css +4 -0
- package/dist/css/blockquote.css +2 -0
- package/dist/css/bottom-navigation.css +2 -0
- package/dist/css/box.css +2 -0
- package/dist/css/breadcrumb.css +2 -0
- package/dist/css/button-group.css +2 -0
- package/dist/css/button.css +2 -0
- package/dist/css/card.css +2 -0
- package/dist/css/carousel.css +2 -0
- package/dist/css/chat-bubble.css +2 -0
- package/dist/css/checkbox.css +2 -0
- package/dist/css/chip.css +2 -0
- package/dist/css/collapsible.css +2 -0
- package/dist/css/combobox.css +2 -0
- package/dist/css/container.css +2 -0
- package/dist/css/date-picker.css +2 -0
- package/dist/css/date-range-picker.css +2 -0
- package/dist/css/date-time-picker.css +2 -0
- package/dist/css/divider.css +2 -0
- package/dist/css/drawer.css +2 -0
- package/dist/css/file-picker.css +2 -0
- package/dist/css/floating-bottom-navigation.css +2 -0
- package/dist/css/grid.css +2 -0
- package/dist/css/highlight.css +2 -0
- package/dist/css/hot-keys.css +2 -0
- package/dist/css/icon-button.css +2 -0
- package/dist/css/icon.css +2 -0
- package/dist/css/list.css +2 -0
- package/dist/css/menu.css +2 -0
- package/dist/css/modal.css +2 -0
- package/dist/css/number-field.css +2 -0
- package/dist/css/otp-field.css +2 -0
- package/dist/css/overlay.css +2 -0
- package/dist/css/pagination.css +2 -0
- package/dist/css/panes.css +2 -0
- package/dist/css/pill.css +2 -0
- package/dist/css/popover.css +2 -0
- package/dist/css/progress-box.css +2 -0
- package/dist/css/progress-circular.css +2 -0
- package/dist/css/progress-linear.css +2 -0
- package/dist/css/radio-group.css +2 -0
- package/dist/css/rating.css +2 -0
- package/dist/css/scroll-zone.css +2 -0
- package/dist/css/segmented-button.css +2 -0
- package/dist/css/select.css +2 -0
- package/dist/css/skeleton.css +2 -0
- package/dist/css/slider.css +2 -0
- package/dist/css/spoiler.css +2 -0
- package/dist/css/switch.css +2 -0
- package/dist/css/table.css +2 -0
- package/dist/css/tabs.css +2 -0
- package/dist/css/text-field.css +2 -0
- package/dist/css/text-link.css +2 -0
- package/dist/css/time-picker.css +2 -0
- package/dist/css/timeline.css +2 -0
- package/dist/css/toast.css +2 -0
- package/dist/css/toolbar.css +2 -0
- package/dist/css/tooltip.css +2 -0
- package/dist/css/typography.css +2 -0
- package/dist/index.d.ts +75 -3
- package/dist/index.js +1 -1
- package/dist/internal/animate.d.ts +161 -0
- package/dist/internal/animate.js +1 -0
- package/dist/internal/button-group.d.ts +27 -0
- package/dist/internal/button-group.js +2 -0
- package/dist/internal/calendar.d.ts +148 -0
- package/dist/internal/calendar.js +1 -0
- package/dist/internal/date.d.ts +173 -0
- package/dist/internal/date.js +1 -0
- package/dist/internal/format.d.ts +24 -0
- package/dist/internal/format.js +1 -0
- package/dist/internal/grid.d.ts +67 -0
- package/dist/internal/grid.js +1 -0
- package/dist/internal/icons.d.ts +86 -1
- package/dist/internal/icons.js +1 -1
- package/dist/internal/menu.d.ts +20 -0
- package/dist/internal/menu.js +1 -0
- package/dist/internal/picker.d.ts +118 -0
- package/dist/internal/picker.js +1 -0
- package/dist/internal/progress.d.ts +145 -0
- package/dist/internal/progress.js +1 -0
- package/dist/internal/sizer.d.ts +32 -0
- package/dist/internal/sizer.js +1 -0
- package/dist/internal/styles.d.ts +198 -8
- package/dist/internal/styles.js +1 -1
- package/dist/styles.css +1 -1
- package/dist/tailwind.css +899 -125
- package/dist/tokens.css +1275 -0
- package/dist/types.d.ts +150 -8
- package/dist/types.js +0 -8
- package/package.json +32 -27
- package/README.md +0 -111
- package/dist/components/button/Button.js +0 -1
- package/dist/components/text-field/TextField.js +0 -1
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { useRender } from '@base-ui/react/use-render';
|
|
3
|
+
import type { PlassAnimateMode, PlassAnimateProps } from '../../types.js';
|
|
4
|
+
export interface PlAnimateRotateProps extends PlassAnimateProps, React.ComponentPropsWithoutRef<'div'> {
|
|
5
|
+
/**
|
|
6
|
+
* Whether the content turns into place or out of it.
|
|
7
|
+
* @default 'in'
|
|
8
|
+
*/
|
|
9
|
+
mode?: PlassAnimateMode;
|
|
10
|
+
/**
|
|
11
|
+
* The angle it starts at, in degrees. Negative is anticlockwise.
|
|
12
|
+
* @default -180
|
|
13
|
+
*/
|
|
14
|
+
from?: number;
|
|
15
|
+
/**
|
|
16
|
+
* The angle it ends at, in degrees. Together with `from` this is what makes
|
|
17
|
+
* one component cover both a quarter turn into place and an endless spin:
|
|
18
|
+
* `from={0} to={360} repeat="infinite"`.
|
|
19
|
+
* @default 0
|
|
20
|
+
*/
|
|
21
|
+
to?: number;
|
|
22
|
+
/**
|
|
23
|
+
* Which point it turns about — any CSS `transform-origin`.
|
|
24
|
+
* @default 'center'
|
|
25
|
+
*/
|
|
26
|
+
origin?: string;
|
|
27
|
+
/**
|
|
28
|
+
* Fades in as it turns. Turn it off for a continuous spin, where a repeating
|
|
29
|
+
* fade would read as flickering.
|
|
30
|
+
* @default true
|
|
31
|
+
*/
|
|
32
|
+
fade?: boolean;
|
|
33
|
+
/** Renders something other than a `<div>`. Base UI's own escape hatch. */
|
|
34
|
+
render?: useRender.RenderProp;
|
|
35
|
+
children?: React.ReactNode;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Content turning about a point.
|
|
39
|
+
*
|
|
40
|
+
* Two angles rather than one, which is what lets this be both effects a
|
|
41
|
+
* rotation is ever used for. `from` alone is an arrival — something swinging
|
|
42
|
+
* into place and stopping. `from` and `to` together with `repeat="infinite"`
|
|
43
|
+
* and `easing="linear"` is a spin that never lands, which is what a badge, a
|
|
44
|
+
* loading mark or a decorative glyph wants.
|
|
45
|
+
*
|
|
46
|
+
* Rotation is the one movement the design language allows on a glyph without
|
|
47
|
+
* argument — a chevron is turned rather than redrawn all over the library. What
|
|
48
|
+
* it is not for is text: a rotated word is resampled along its whole length,
|
|
49
|
+
* which is precisely what the rule against transforming a control exists to
|
|
50
|
+
* prevent.
|
|
51
|
+
*/
|
|
52
|
+
export declare const PlAnimateRotate: React.ForwardRefExoticComponent<PlAnimateRotateProps & React.RefAttributes<HTMLDivElement>>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use client";import*as e from"react";import{useRender as r}from"@base-ui/react/use-render";import{isInfinite as t,useAnimateElement as a}from"../../internal/animate.js";import{cx as n}from"../../internal/styles.js";export const PlAnimateRotate=/* @__PURE__ */e.forwardRef(function PlAnimateRotate({duration:e=440,delay:o=0,easing:i,repeat:s=1,alternate:l,paused:d,trigger:m="mount",play:c,once:p=!0,threshold:f=.2,mode:g="in",from:u=-180,to:y=0,origin:h="center",fade:N=!0,render:R,className:j,style:A,children:P,...$},b){const w=a({effect:"rotate",duration:e,delay:o,easing:i,repeat:s,alternate:l,mode:g,angle:`${u}deg`,angleTo:`${y}deg`,opacity:N?0:1,trigger:m,play:c,once:p,threshold:f,paused:d,infinite:t(s)});return r({render:R,ref:[b,w.ref],props:{...$,className:n(w.className,j),style:{transformOrigin:h,...w.style,...A},...w.props,children:P}})});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{PlAnimateRotate}from"./PlAnimateRotate.js";
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { useRender } from '@base-ui/react/use-render';
|
|
3
|
+
import type { PlassAnimateMode, PlassAnimateProps, PlassSide } from '../../types.js';
|
|
4
|
+
export interface PlAnimateSlideProps extends PlassAnimateProps, React.ComponentPropsWithoutRef<'div'> {
|
|
5
|
+
/**
|
|
6
|
+
* Whether the content slides in or slides away. `out` leaves by the same edge
|
|
7
|
+
* it would have come from.
|
|
8
|
+
* @default 'in'
|
|
9
|
+
*/
|
|
10
|
+
mode?: PlassAnimateMode;
|
|
11
|
+
/**
|
|
12
|
+
* Which edge it travels from. Physical, as `PlassSide` is everywhere — a
|
|
13
|
+
* panel coming down from the top comes from the top in every writing
|
|
14
|
+
* direction.
|
|
15
|
+
* @default 'bottom'
|
|
16
|
+
*/
|
|
17
|
+
from?: PlassSide;
|
|
18
|
+
/**
|
|
19
|
+
* How far it travels — a CSS length, or a number in pixels. `'100%'` is the
|
|
20
|
+
* element's own width or height, which is what makes it appear from behind
|
|
21
|
+
* its own edge.
|
|
22
|
+
* @default '100%'
|
|
23
|
+
*/
|
|
24
|
+
distance?: number | string;
|
|
25
|
+
/**
|
|
26
|
+
* Fades in as it slides.
|
|
27
|
+
* @default true
|
|
28
|
+
*/
|
|
29
|
+
fade?: boolean;
|
|
30
|
+
/** Renders something other than a `<div>`. Base UI's own escape hatch. */
|
|
31
|
+
render?: useRender.RenderProp;
|
|
32
|
+
children?: React.ReactNode;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Content travelling in from one edge.
|
|
36
|
+
*
|
|
37
|
+
* The default distance is the element's own size, so it starts exactly out of
|
|
38
|
+
* frame and arrives without ever having been half drawn somewhere it does not
|
|
39
|
+
* belong. Put it in a box with `overflow: hidden` and the effect is a panel
|
|
40
|
+
* appearing from behind that box's edge.
|
|
41
|
+
*
|
|
42
|
+
* A slide moves the element, so what is *around* it does not move: this is a
|
|
43
|
+
* `translate` rather than a change of layout, and nothing on the page reflows
|
|
44
|
+
* while it runs. For a much shorter travel over a list of things, one after
|
|
45
|
+
* another, use PlAnimateAppear.
|
|
46
|
+
*/
|
|
47
|
+
export declare const PlAnimateSlide: React.ForwardRefExoticComponent<PlAnimateSlideProps & React.RefAttributes<HTMLDivElement>>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use client";import*as e from"react";import{useRender as r}from"@base-ui/react/use-render";import{isInfinite as t,slideOffsets as a,useAnimateElement as n}from"../../internal/animate.js";import{cx as i}from"../../internal/styles.js";export const PlAnimateSlide=/* @__PURE__ */e.forwardRef(function PlAnimateSlide({duration:e=360,delay:s=0,easing:o,repeat:l=1,alternate:d,paused:m,trigger:c="mount",play:p,once:f=!0,threshold:y=.2,mode:u="in",from:g="bottom",distance:h="100%",fade:x=!0,render:N,className:b,style:j,children:A,...P},S){const{x:w,y:R}=a(g,h),k=n({effect:"slide",duration:e,delay:s,easing:o,repeat:l,alternate:d,mode:u,x:w,y:R,opacity:x?0:1,trigger:c,play:p,once:f,threshold:y,paused:m,infinite:t(l)});return r({render:N,ref:[S,k.ref],props:{...P,className:i(k.className,b),style:{...k.style,...j},...k.props,children:A}})});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{PlAnimateSlide}from"./PlAnimateSlide.js";
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import type { PlassAnimateProps } from '../../types.js';
|
|
3
|
+
export interface PlAnimateTypingProps extends Omit<PlassAnimateProps, 'alternate' | 'easing'>, Omit<React.ComponentPropsWithoutRef<'div'>, 'children'> {
|
|
4
|
+
/** The text, when it is easier to pass than to nest. Overrides `children`. */
|
|
5
|
+
text?: string;
|
|
6
|
+
/**
|
|
7
|
+
* How fast it is typed, in characters per second.
|
|
8
|
+
* @default 24
|
|
9
|
+
*/
|
|
10
|
+
speed?: number;
|
|
11
|
+
/**
|
|
12
|
+
* How long the finished text is held before it repeats, in milliseconds.
|
|
13
|
+
* @default 1400
|
|
14
|
+
*/
|
|
15
|
+
hold?: number;
|
|
16
|
+
/**
|
|
17
|
+
* Deletes the text again before repeating, rather than clearing it in one
|
|
18
|
+
* frame. Only means anything when `repeat` is more than once.
|
|
19
|
+
* @default false
|
|
20
|
+
*/
|
|
21
|
+
erase?: boolean;
|
|
22
|
+
/**
|
|
23
|
+
* How fast it is deleted, in characters per second. Deleting is usually about
|
|
24
|
+
* twice as fast as typing, which is what a person actually does.
|
|
25
|
+
* @default twice `speed`
|
|
26
|
+
*/
|
|
27
|
+
eraseSpeed?: number;
|
|
28
|
+
/**
|
|
29
|
+
* The block after the text.
|
|
30
|
+
* @default true
|
|
31
|
+
*/
|
|
32
|
+
caret?: boolean;
|
|
33
|
+
/** What the caret is drawn as. @default '|' */
|
|
34
|
+
caretChar?: React.ReactNode;
|
|
35
|
+
/** The text to type. Only text is typed — see below. */
|
|
36
|
+
children?: React.ReactNode;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Text appearing one character at a time.
|
|
40
|
+
*
|
|
41
|
+
* The whole string is in the document from the first frame — in a clipped box
|
|
42
|
+
* for a screen reader, which reads it once and is not made to sit through the
|
|
43
|
+
* performance — and what animates is a visible copy that is `aria-hidden`. So
|
|
44
|
+
* the effect costs a reader who cannot see it nothing, and costs a reader who
|
|
45
|
+
* can nothing either: the box is not laid out from the characters that have
|
|
46
|
+
* arrived, so the text around it does not reflow on every frame.
|
|
47
|
+
*
|
|
48
|
+
* `repeat`, `hold` and `erase` are what make it a loop: type, hold, delete,
|
|
49
|
+
* type again. Without `erase` a repeat clears in one frame, which is right for
|
|
50
|
+
* a line that is being replaced rather than rewritten.
|
|
51
|
+
*
|
|
52
|
+
* Only text is typed. Pass a string, or strings; an element among the children
|
|
53
|
+
* contributes its text and nothing about its markup, because there is no honest
|
|
54
|
+
* way to reveal half of a link.
|
|
55
|
+
*/
|
|
56
|
+
export declare const PlAnimateTyping: React.ForwardRefExoticComponent<PlAnimateTypingProps & React.RefAttributes<HTMLDivElement>>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use client";import{jsx as e,jsxs as t}from"react/jsx-runtime";import*as r from"react";import{isInfinite as n,useAnimationRun as a,usePrefersReducedMotion as i}from"../../internal/animate.js";import{srOnlyClasses as s}from"../../internal/styles.js";function textOf(e){return"string"==typeof e||"number"==typeof e?String(e):Array.isArray(e)?e.map(textOf).join(""):""}export const PlAnimateTyping=/* @__PURE__ */r.forwardRef(function PlAnimateTyping({text:o,speed:u=24,hold:m=1400,erase:c=!1,eraseSpeed:l,caret:f=!0,caretChar:p="|",duration:d,delay:h=0,repeat:g=1,paused:y,trigger:x="mount",play:T,once:j=!0,threshold:v=.2,className:N,style:S,children:w,...A},M){const O=a({trigger:x,play:T,once:j,threshold:v,paused:y,infinite:n(g)}),I=i(),E=o??textOf(w),P=r.useMemo(()=>function graphemesOf(e,t){return"undefined"!=typeof Intl&&"Segmenter"in Intl?[...new Intl.Segmenter(t,{granularity:"grapheme"}).segment(e)].map(e=>e.segment):[...e]}(E),[E]),R=P.length,[b,C]=r.useState(0),k=r.useRef(0),q=d&&R>0?d/R:1e3/Math.max(u,1),z=1e3/Math.max(l??2*u,1);return r.useEffect(()=>{k.current=0},[R]),r.useEffect(()=>{if(I||0===R)return void C(R);if(!O.started)return k.current=0,void C(0);if(y)return;let e,t=!1,r=k.current,n=1,a=!1;const i="infinite"===g?1/0:Math.max(1,g);if(r>=R&&1===i)return;const step=()=>{if(!t){if(a)return r-=1,k.current=r,C(r),r<=0&&(a=!1,n+=1),void(e=setTimeout(step,a?z:q));if(r+=1,k.current=r,C(r),r<R)e=setTimeout(step,q);else if(!(n>=i)){if(c)return a=!0,void(e=setTimeout(step,m));n+=1,e=setTimeout(()=>{t||(r=0,k.current=0,C(0),e=setTimeout(step,q))},m)}}};return C(r),e=setTimeout(step,0===r?h:q),()=>{t=!0,clearTimeout(e)}},[O.started,y,I,R,q,z,h,m,c,g]),t("div",{ref:e=>{O.ref(e),"function"==typeof M?M(e):M&&(M.current=e)},className:N,style:S,"data-plass-animation":"typing","data-state":O.state,...O.handlers,...A,children:[e("span",{className:s,children:E}),t("span",{"aria-hidden":"true",className:"whitespace-pre-wrap",children:[P.slice(0,b).join(""),f?e("span",{className:"plass-caret",children:p}):null]})]})});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{PlAnimateTyping}from"./PlAnimateTyping.js";
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { useRender } from '@base-ui/react/use-render';
|
|
3
|
+
import type { PlassAnimateMode, PlassAnimateProps } from '../../types.js';
|
|
4
|
+
export interface PlAnimateZoomProps extends PlassAnimateProps, React.ComponentPropsWithoutRef<'div'> {
|
|
5
|
+
/**
|
|
6
|
+
* Whether the content comes forward or falls away.
|
|
7
|
+
* @default 'in'
|
|
8
|
+
*/
|
|
9
|
+
mode?: PlassAnimateMode;
|
|
10
|
+
/**
|
|
11
|
+
* The scale it starts from, as a multiple of its final size. Above `1` it
|
|
12
|
+
* arrives oversized and settles back, which reads as coming *towards* the
|
|
13
|
+
* reader rather than up out of the page.
|
|
14
|
+
* @default 0.4
|
|
15
|
+
*/
|
|
16
|
+
from?: number;
|
|
17
|
+
/**
|
|
18
|
+
* Fades in as it zooms.
|
|
19
|
+
* @default true
|
|
20
|
+
*/
|
|
21
|
+
fade?: boolean;
|
|
22
|
+
/** Renders something other than a `<div>`. Base UI's own escape hatch. */
|
|
23
|
+
render?: useRender.RenderProp;
|
|
24
|
+
children?: React.ReactNode;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Content arriving from the middle of where it will end up.
|
|
28
|
+
*
|
|
29
|
+
* The same arithmetic as Grow at more than twice the distance, and always about
|
|
30
|
+
* the centre — which is the whole difference. A Grow unfolds from somewhere; a
|
|
31
|
+
* Zoom comes at you. Use it for the one thing on a screen that is meant to
|
|
32
|
+
* interrupt: a confirmation, a result, a number that has just landed.
|
|
33
|
+
*
|
|
34
|
+
* There is no `origin`, on purpose. A zoom anchored to a corner is a grow, and
|
|
35
|
+
* the library does not offer two spellings of one idea.
|
|
36
|
+
*/
|
|
37
|
+
export declare const PlAnimateZoom: React.ForwardRefExoticComponent<PlAnimateZoomProps & React.RefAttributes<HTMLDivElement>>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use client";import*as e from"react";import{useRender as r}from"@base-ui/react/use-render";import{isInfinite as t,useAnimateElement as a}from"../../internal/animate.js";import{cx as n}from"../../internal/styles.js";export const PlAnimateZoom=/* @__PURE__ */e.forwardRef(function PlAnimateZoom({duration:e=320,delay:o=0,easing:s,repeat:i=1,alternate:l,paused:m,trigger:c="mount",play:d,once:p=!0,threshold:f=.2,mode:u="in",from:y=.4,fade:g=!0,render:h,className:N,style:j,children:A,...P},Z){const b=a({effect:"zoom",duration:e,delay:o,easing:s,repeat:i,alternate:l,mode:u,scale:y,opacity:g?0:1,trigger:c,play:d,once:p,threshold:f,paused:m,infinite:t(i)});return r({render:h,ref:[Z,b.ref],props:{...P,className:n(b.className,N),style:{transformOrigin:"center",...b.style,...j},...b.props,children:A}})});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{PlAnimateZoom}from"./PlAnimateZoom.js";
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { useRender } from '@base-ui/react/use-render';
|
|
3
|
+
import type { PlassSize } from '../../types.js';
|
|
4
|
+
/**
|
|
5
|
+
* How the media inside is fitted to the box, spelled the way CSS spells it.
|
|
6
|
+
*
|
|
7
|
+
* These are `object-fit`'s own values rather than a nicer set of words, for the
|
|
8
|
+
* reason the library keeps `aspect-ratio`'s own syntax below: inventing
|
|
9
|
+
* `fill-the-box` would only make a reader look up which CSS it maps to.
|
|
10
|
+
*/
|
|
11
|
+
export type PlAspectFit = 'cover' | 'contain' | 'fill' | 'none';
|
|
12
|
+
export interface PlAspectRatioProps extends React.ComponentPropsWithoutRef<'div'> {
|
|
13
|
+
/**
|
|
14
|
+
* The proportion the box holds, written the way CSS writes it — a number
|
|
15
|
+
* (`1.5`) or a ratio (`'16 / 9'`). Both reach `aspect-ratio` untouched.
|
|
16
|
+
* @default 1
|
|
17
|
+
*/
|
|
18
|
+
ratio?: number | string;
|
|
19
|
+
/**
|
|
20
|
+
* How a single piece of media inside is fitted. Applies to an `img`, a
|
|
21
|
+
* `video`, a `canvas`, an `svg` or an `iframe` that is a direct child; those
|
|
22
|
+
* are stretched to the full box and then fitted. Anything else is laid out
|
|
23
|
+
* normally and this prop does not reach it.
|
|
24
|
+
* @default 'cover'
|
|
25
|
+
*/
|
|
26
|
+
fit?: PlAspectFit;
|
|
27
|
+
/**
|
|
28
|
+
* Rounds the corners to the `size` step of the house radius ladder.
|
|
29
|
+
*
|
|
30
|
+
* Off by default. A layout component draws nothing, and a photograph with its
|
|
31
|
+
* corners cut is a decision about the photograph — but it is such a common one
|
|
32
|
+
* that making the caller reach for a `className` would be perverse.
|
|
33
|
+
* @default false
|
|
34
|
+
*/
|
|
35
|
+
rounded?: boolean;
|
|
36
|
+
/**
|
|
37
|
+
* Which step of the radius ladder `rounded` uses.
|
|
38
|
+
*
|
|
39
|
+
* `size` here is the size of the *sheet* — there is no height and no type
|
|
40
|
+
* scale on a box whose whole job is a proportion.
|
|
41
|
+
* @default 'md'
|
|
42
|
+
*/
|
|
43
|
+
size?: PlassSize;
|
|
44
|
+
/**
|
|
45
|
+
* Renders something other than a `<div>`: `render={<figure />}`,
|
|
46
|
+
* `render={<a href="…" />}`. Base UI's own escape hatch.
|
|
47
|
+
*/
|
|
48
|
+
render?: useRender.RenderProp;
|
|
49
|
+
children?: React.ReactNode;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* A box that keeps a proportion whatever width it is given.
|
|
53
|
+
*
|
|
54
|
+
* It draws nothing — no sheet, no hairline, no shadow — which is what puts it
|
|
55
|
+
* in `layout` beside `PlContainer` and `PlGrid` rather than in `surfaces`. What
|
|
56
|
+
* it does is reserve the space: a card whose image arrives late does not reflow
|
|
57
|
+
* the page around it, and a row of thumbnails is a row of one shape.
|
|
58
|
+
*
|
|
59
|
+
* The proportion is CSS's own `aspect-ratio`, so a caller who already knows
|
|
60
|
+
* `16 / 9` has nothing to translate. `fit` is the one convenience on top: the
|
|
61
|
+
* media inside is stretched to the box and then fitted, which is the pair of
|
|
62
|
+
* declarations every use of this component would otherwise start with.
|
|
63
|
+
*/
|
|
64
|
+
export declare const PlAspectRatio: React.ForwardRefExoticComponent<PlAspectRatioProps & React.RefAttributes<HTMLDivElement>>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use client";import*as e from"react";import{useRender as i}from"@base-ui/react/use-render";import{cx as o,radiusClasses as t}from"../../internal/styles.js";const c=/* @__PURE__ */["[&>img]:size-full","[&>video]:size-full","[&>canvas]:size-full","[&>svg]:size-full","[&>iframe]:size-full","[&>picture]:size-full","[&>picture>img]:size-full"].join(" "),r={cover:"[&>img]:object-cover [&>video]:object-cover [&>picture>img]:object-cover",contain:"[&>img]:object-contain [&>video]:object-contain [&>picture>img]:object-contain",fill:"[&>img]:object-fill [&>video]:object-fill [&>picture>img]:object-fill",none:"[&>img]:object-none [&>video]:object-none [&>picture>img]:object-none"};export const PlAspectRatio=/* @__PURE__ */e.forwardRef(function PlAspectRatio({ratio:e=1,fit:l="cover",rounded:n=!1,size:s="md",render:a,className:f,style:m,children:u,...d},p){const b=o("relative block w-full overflow-hidden",c,r[l],n?t[s]:"",f);return i({render:a,ref:p,props:{className:b,style:{aspectRatio:e,...m},children:u,...d}})});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{PlAspectRatio}from"./PlAspectRatio.js";
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import type { PlassColor, PlassElevation, PlassSize, PlassVariant } from '../../types.js';
|
|
3
|
+
/** What Base UI reports about the picture as it loads. */
|
|
4
|
+
export type PlAvatarLoadingStatus = 'idle' | 'loading' | 'loaded' | 'error';
|
|
5
|
+
/**
|
|
6
|
+
* The crop, not the material.
|
|
7
|
+
*
|
|
8
|
+
* `circle` is the default. A round crop is what a portrait has been for as long
|
|
9
|
+
* as there have been portraits, and an avatar is not a surface — it is a picture
|
|
10
|
+
* laid on one, so it does not owe the radius ladder anything.
|
|
11
|
+
*
|
|
12
|
+
* `square` takes the library's own fillet instead, which is what a logo or a
|
|
13
|
+
* repository icon wants: those are drawn to the edges of a rectangle and a round
|
|
14
|
+
* crop eats them.
|
|
15
|
+
*/
|
|
16
|
+
export type PlAvatarShape = 'circle' | 'square';
|
|
17
|
+
export interface PlAvatarProps extends Omit<React.ComponentPropsWithoutRef<'span'>, 'color'> {
|
|
18
|
+
/**
|
|
19
|
+
* The picture. Until it loads — and forever, if it fails — the fallback is
|
|
20
|
+
* what is drawn, so an avatar is never an empty box.
|
|
21
|
+
*/
|
|
22
|
+
src?: string;
|
|
23
|
+
/** Candidate images at other resolutions, as on any `<img>`. */
|
|
24
|
+
srcSet?: string;
|
|
25
|
+
/**
|
|
26
|
+
* What the picture says, for a reader who cannot see it. Defaults to `name`,
|
|
27
|
+
* and to nothing at all when there is no name — an avatar next to the person's
|
|
28
|
+
* own name in a row is decoration, and reading it out says the name twice.
|
|
29
|
+
*/
|
|
30
|
+
alt?: string;
|
|
31
|
+
/**
|
|
32
|
+
* Who or what this is. One prop doing three jobs: it names the picture, the
|
|
33
|
+
* initials are derived from it, and it is the sentence a screen reader hears
|
|
34
|
+
* instead of those initials.
|
|
35
|
+
*
|
|
36
|
+
* The initials are the first character of the first word plus the first
|
|
37
|
+
* character of the last — "Jane Doe" is `JD`, "홍길동" is `홍`. That rule is
|
|
38
|
+
* wrong for some names, which is what `initials` is for.
|
|
39
|
+
*/
|
|
40
|
+
name?: string;
|
|
41
|
+
/** The initials, written out, for when the rule derived the wrong ones. */
|
|
42
|
+
initials?: string;
|
|
43
|
+
/**
|
|
44
|
+
* The crop.
|
|
45
|
+
* @default 'circle'
|
|
46
|
+
*/
|
|
47
|
+
shape?: PlAvatarShape;
|
|
48
|
+
/**
|
|
49
|
+
* What the sheet behind the fallback is made of. Invisible once a picture has
|
|
50
|
+
* loaded, apart from the edge it keeps.
|
|
51
|
+
*
|
|
52
|
+
* `ghost` is the default: a directory is a page of avatars, and a page of
|
|
53
|
+
* saturated circles is a page nobody can read a name off.
|
|
54
|
+
* @default 'ghost'
|
|
55
|
+
*/
|
|
56
|
+
variant?: PlassVariant;
|
|
57
|
+
/**
|
|
58
|
+
* The box the picture is drawn in — the control heights, so an avatar and the
|
|
59
|
+
* button beside it in a toolbar are the same height.
|
|
60
|
+
* @default 'md'
|
|
61
|
+
*/
|
|
62
|
+
size?: PlassSize;
|
|
63
|
+
/** @default 'primary' */
|
|
64
|
+
color?: PlassColor;
|
|
65
|
+
/**
|
|
66
|
+
* Drop shadow depth. `0` is the default: an avatar is a picture set into the
|
|
67
|
+
* page rather than a key resting on it.
|
|
68
|
+
* @default 0
|
|
69
|
+
*/
|
|
70
|
+
elevation?: PlassElevation;
|
|
71
|
+
/**
|
|
72
|
+
* How long to wait before drawing the fallback, in milliseconds. Set it to
|
|
73
|
+
* roughly the time a cached image takes and the initials stop flashing up in
|
|
74
|
+
* front of a picture that was about to arrive anyway.
|
|
75
|
+
*/
|
|
76
|
+
delay?: number;
|
|
77
|
+
/** Anything else the `<img>` needs — `loading`, `crossOrigin`, `referrerPolicy`. */
|
|
78
|
+
imageProps?: Omit<React.ComponentPropsWithoutRef<'img'>, 'src' | 'srcSet' | 'alt'>;
|
|
79
|
+
/** Called as the picture moves between `idle`, `loading`, `loaded` and `error`. */
|
|
80
|
+
onLoadingStatusChange?: (status: PlAvatarLoadingStatus) => void;
|
|
81
|
+
/**
|
|
82
|
+
* The fallback, drawn instead of the initials. An icon, a logo, a single
|
|
83
|
+
* emoji — whatever stands in for this particular thing when there is no
|
|
84
|
+
* picture of it.
|
|
85
|
+
*/
|
|
86
|
+
children?: React.ReactNode;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* A picture of a person or a thing, at a known size, that is never an empty box.
|
|
90
|
+
*
|
|
91
|
+
* Three things can be drawn in it and exactly one of them is at a time: the
|
|
92
|
+
* picture, if `src` is given and it loads; otherwise whatever stands in for it —
|
|
93
|
+
* `children`, or `initials`, or the initials derived from `name`; and failing
|
|
94
|
+
* all of those, a silhouette. Which one is showing is Base UI's `Avatar` to
|
|
95
|
+
* decide, because "has the image loaded" is a question with four answers and a
|
|
96
|
+
* race in the middle of it.
|
|
97
|
+
*
|
|
98
|
+
* It carries no status dot of its own. An avatar with a green mark on it is a
|
|
99
|
+
* `PlBadge` with an avatar in it, and inventing a second spelling for that would
|
|
100
|
+
* give the library two of them.
|
|
101
|
+
*/
|
|
102
|
+
export declare const PlAvatar: React.ForwardRefExoticComponent<PlAvatarProps & React.RefAttributes<HTMLSpanElement>>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use client";import{jsx as e,jsxs as a}from"react/jsx-runtime";import*as r from"react";import{Avatar as t}from"@base-ui/react/avatar";import{controlHeightClasses as s,controlSlots as n,controlSquareClasses as l,glassClasses as o,hasContent as i,radiusClasses as c,srOnlyClasses as d,transitionClasses as m}from"../../internal/styles.js";const p={xs:"text-[0.5625rem]",sm:"text-[0.6875rem]",md:"text-[0.8125rem]",lg:"text-[1rem]",xl:"text-[1.1875rem]"},f={solid:/* @__PURE__ */["text-(--p-on-solid) [background-image:var(--p-fill)]","[box-shadow:var(--p-elev),var(--p-lift)]"].join(" "),glass:/* @__PURE__ */[o,"border text-(--p-accent) bg-(--plass-glass)","[border-color:var(--plass-border)]","[box-shadow:var(--p-elev),var(--plass-gloss-glass)]"].join(" "),ghost:"text-(--p-accent) bg-(--p-soft-press) [box-shadow:var(--p-elev)]"},g=/* @__PURE__ */["relative inline-flex shrink-0 select-none items-center justify-center overflow-hidden","align-middle leading-none font-semibold tracking-wide whitespace-nowrap","[&_svg]:pointer-events-none [&_svg]:size-[55%]",m].join(" ");function PersonIcon(){return a("svg",{viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true",children:[e("path",{d:"M12 12a4.5 4.5 0 1 0 0-9 4.5 4.5 0 0 0 0 9Z"}),e("path",{d:"M12 14.25c-4.28 0-7.75 2.42-7.75 5.4 0 .75.6 1.35 1.35 1.35h12.8c.75 0 1.35-.6 1.35-1.35 0-2.98-3.47-5.4-7.75-5.4Z"})]})}export const PlAvatar=/* @__PURE__ */r.forwardRef(function PlAvatar({src:r,srcSet:o,alt:m,name:v,initials:h,shape:u="circle",variant:x="ghost",size:b="md",color:j="primary",elevation:y=0,delay:w,imageProps:N,onLoadingStatusChange:z,className:A,style:C,children:P,...k},B){const S=v?function initialsOf(e){const a=e.normalize("NFC").trim().split(/\s+/).filter(Boolean);return 0===a.length?"":((Array.from(a[0])[0]??"")+(a.length>1?Array.from(a[a.length-1])[0]??"":"")).toLocaleUpperCase()}(v):"",I=m??v,L=i(P)?P:(h??S)||e(PersonIcon,{}),F=i(P)||Boolean(h??S),M=[g,s[b],l[b],p[b],"circle"===u?"rounded-full":c[b],f[x],A??""].filter(Boolean).join(" ");return a(t.Root,{ref:B,className:M,style:{...n(j,y,x),...C},...k,children:[r?e(t.Image,{src:r,srcSet:o,alt:I??"",className:"size-full object-cover",onLoadingStatusChange:z,...N}):null,a(t.Fallback,{delay:r?w:void 0,className:"flex size-full items-center justify-center",children:[I&&F?e("span",{className:d,children:I}):null,e("span",{"aria-hidden":!(!I||!F)||void 0,className:"contents",children:L})]})]})});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{PlAvatar}from"./PlAvatar.js";
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import type { PlassCorner, PlassElevation, PlassStyleProps } from '../../types.js';
|
|
3
|
+
/**
|
|
4
|
+
* The shape of the thing underneath, which is what decides how far the marker
|
|
5
|
+
* tucks in.
|
|
6
|
+
*/
|
|
7
|
+
export type PlBadgeOverlap = 'square' | 'circle';
|
|
8
|
+
export interface PlBadgeProps extends PlassStyleProps, Omit<React.ComponentPropsWithoutRef<'span'>, 'color' | 'content'> {
|
|
9
|
+
/**
|
|
10
|
+
* What the badge says — usually a count, sometimes a word.
|
|
11
|
+
*
|
|
12
|
+
* Omit it and the badge draws a dot instead, which is the honest thing when
|
|
13
|
+
* there is something to report but nothing to count.
|
|
14
|
+
*/
|
|
15
|
+
content?: React.ReactNode;
|
|
16
|
+
/**
|
|
17
|
+
* Caps a numeric `content` and adds a `+`. Only applies when the content is
|
|
18
|
+
* actually a number: a badge cannot know how to truncate a word.
|
|
19
|
+
* @default 99
|
|
20
|
+
*/
|
|
21
|
+
max?: number;
|
|
22
|
+
/**
|
|
23
|
+
* Draws the marker as a dot even when there is content, keeping the content
|
|
24
|
+
* for screen readers only. For the corner that has to stay quiet.
|
|
25
|
+
* @default false
|
|
26
|
+
*/
|
|
27
|
+
dot?: boolean;
|
|
28
|
+
/**
|
|
29
|
+
* Whether a `content` of `0` is shown. Off by default — zero unread messages
|
|
30
|
+
* is not news, and a badge that never goes away stops meaning anything.
|
|
31
|
+
* @default false
|
|
32
|
+
*/
|
|
33
|
+
showZero?: boolean;
|
|
34
|
+
/**
|
|
35
|
+
* Hides the marker without unmounting the anchor. The badge keeps its place in
|
|
36
|
+
* the DOM, so showing it again does not relayout what it sits on.
|
|
37
|
+
* @default false
|
|
38
|
+
*/
|
|
39
|
+
invisible?: boolean;
|
|
40
|
+
/**
|
|
41
|
+
* Which corner of the anchor it sits on.
|
|
42
|
+
* @default 'top-end'
|
|
43
|
+
*/
|
|
44
|
+
placement?: PlassCorner;
|
|
45
|
+
/**
|
|
46
|
+
* The shape of the thing underneath, which is what decides how far the marker
|
|
47
|
+
* tucks in: a circle's corner is further from its centre than a square's, so a
|
|
48
|
+
* badge that looks right on an avatar hangs off an icon button.
|
|
49
|
+
* @default 'square'
|
|
50
|
+
*/
|
|
51
|
+
overlap?: PlBadgeOverlap;
|
|
52
|
+
/**
|
|
53
|
+
* Drop shadow depth. `0` is the default — a marker lies on the thing it is
|
|
54
|
+
* marking rather than floating above it.
|
|
55
|
+
* @default 0
|
|
56
|
+
*/
|
|
57
|
+
elevation?: PlassElevation;
|
|
58
|
+
/**
|
|
59
|
+
* What a screen reader hears instead of the raw content. `content={3}` on a
|
|
60
|
+
* bell is "3" to a reader and means nothing; `label="3 unread notifications"`
|
|
61
|
+
* is the sentence.
|
|
62
|
+
*/
|
|
63
|
+
label?: string;
|
|
64
|
+
/**
|
|
65
|
+
* What the badge is pinned to. Without it the badge is a standalone marker
|
|
66
|
+
* that lays out inline, which is what a status pill in a table cell is.
|
|
67
|
+
*/
|
|
68
|
+
children?: React.ReactNode;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* A small mark in the corner of something else: unread mail on an inbox icon, a
|
|
72
|
+
* status dot on an avatar, a count on a tab.
|
|
73
|
+
*
|
|
74
|
+
* The shell is a `<span>` that wraps the anchor and does nothing but establish a
|
|
75
|
+
* positioning context — no width, no padding, `align-middle` — so a badged icon
|
|
76
|
+
* button still measures and lines up exactly like a bare one. With no children
|
|
77
|
+
* the marker lays out inline instead, which is what a standalone status pill is.
|
|
78
|
+
*
|
|
79
|
+
* There is no Base UI primitive under this, and there should not be: a badge has
|
|
80
|
+
* no interaction, no state and no keyboard contract. It is a mark. Wiring it to a
|
|
81
|
+
* widget primitive would hand every decorative dot a role it cannot honour.
|
|
82
|
+
*
|
|
83
|
+
* What it does owe a screen reader is a sentence rather than a number, which is
|
|
84
|
+
* what `label` is for — `content={3}` beside a bell reads out as "3".
|
|
85
|
+
*/
|
|
86
|
+
export declare const PlBadge: React.ForwardRefExoticComponent<PlBadgeProps & React.RefAttributes<HTMLSpanElement>>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use client";import{jsx as e,Fragment as t,jsxs as s}from"react/jsx-runtime";import*as m from"react";import{controlSlots as o,glassClasses as a,hasContent as l,srOnlyClasses as n,transitionClasses as r}from"../../internal/styles.js";const i={xs:"h-3.5 min-w-3.5",sm:"h-4 min-w-4",md:"h-4.5 min-w-4.5",lg:"h-5 min-w-5",xl:"h-6 min-w-6"},d={xs:"size-1.5",sm:"size-2",md:"size-2.5",lg:"size-2.5",xl:"size-3"},p={xs:"text-[0.5625rem]",sm:"text-[0.625rem]",md:"text-[0.6875rem]",lg:"text-[0.75rem]",xl:"text-[0.8125rem]"},b={default:{xs:"px-1",sm:"px-1",md:"px-1.5",lg:"px-1.5",xl:"px-2"},compact:{xs:"px-0.5",sm:"px-0.5",md:"px-1",lg:"px-1",xl:"px-1.5"}},x="rounded-full",c={xs:{badge:"-mt-1.5 -mb-1.5 -ms-1.5 -me-1.5",dot:"-mt-0.5 -mb-0.5 -ms-0.5 -me-0.5"},sm:{badge:"-mt-2 -mb-2 -ms-2 -me-2",dot:"-mt-1 -mb-1 -ms-1 -me-1"},md:{badge:"-mt-2 -mb-2 -ms-2 -me-2",dot:"-mt-1 -mb-1 -ms-1 -me-1"},lg:{badge:"-mt-2.5 -mb-2.5 -ms-2.5 -me-2.5",dot:"-mt-1 -mb-1 -ms-1 -me-1"},xl:{badge:"-mt-3 -mb-3 -ms-3 -me-3",dot:"-mt-1.5 -mb-1.5 -ms-1.5 -me-1.5"}},g={"top-start":"top-0 start-0","top-end":"top-0 end-0","bottom-start":"bottom-0 start-0","bottom-end":"bottom-0 end-0"},f={"top-start":"mt-[7%] ms-[7%]","top-end":"mt-[7%] me-[7%]","bottom-start":"mb-[7%] ms-[7%]","bottom-end":"mb-[7%] me-[7%]"},h={solid:/* @__PURE__ */["text-(--p-on-solid) [background-image:var(--p-fill)]","[box-shadow:var(--p-elev),var(--p-lift)]"].join(" "),glass:/* @__PURE__ */[a,"border text-(--p-accent) bg-(--plass-glass)","[border-color:var(--plass-border)]","[box-shadow:var(--p-elev),var(--plass-gloss-glass)]"].join(" "),ghost:"text-(--p-accent) bg-(--p-soft-press)"};export const PlBadge=/* @__PURE__ */m.forwardRef(function PlBadge({variant:m="solid",size:a="md",color:u="primary",density:v="default",elevation:w=0,content:j,max:y=99,dot:z=!1,showZero:N=!1,invisible:k=!1,placement:B="top-end",overlap:P="square",label:$,className:q,style:C,children:F,...R},Z){const A=l(F),D=!l(j)||0===j&&!N,E=z||D,G=k||D&&!z,H=["pointer-events-none z-10 inline-flex shrink-0 items-center justify-center","font-semibold tabular-nums whitespace-nowrap",x,r,h[m],E?d[a]:[i[a],p[a],b[v][a]].join(" "),A?`absolute ${g[B]}`:"relative align-middle",A?E?c[a].dot:c[a].badge:"",A&&"circle"===P?f[B]:"",G?"invisible":"",q??""].filter(Boolean).join(" "),I=function capContent(e,t){return"number"==typeof e&&e>t?`${t}+`:e}(j,y),J=e("span",{ref:Z,className:H,style:{...o(u,w,m),...C},"aria-hidden":!!G||void 0,...R,children:G?null:s(t,{children:[E||$?e("span",{className:n,children:$??I}):null,E?null:e("span",{"aria-hidden":!!$||void 0,children:I})]})});return A?s("span",{className:"relative inline-flex shrink-0 align-middle",children:[F,J]}):J});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{PlBadge}from"./PlBadge.js";
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import type { PlassElevation, PlassStyleProps } from '../../types.js';
|
|
3
|
+
/**
|
|
4
|
+
* The props are a `<figure>`'s rather than a `<blockquote>`'s, which is a
|
|
5
|
+
* consequence of where the drawing happens: everything a caller passes lands on
|
|
6
|
+
* the wrapper, and the wrapper is a figure or a div. Both are `HTMLElement`, so
|
|
7
|
+
* an event handler written against one works on the other.
|
|
8
|
+
*/
|
|
9
|
+
export interface PlBlockquoteProps extends PlassStyleProps, Omit<React.ComponentPropsWithoutRef<'figure'>, 'color'> {
|
|
10
|
+
/**
|
|
11
|
+
* Drop shadow depth. `0` is the default — a quote is set *into* a page rather
|
|
12
|
+
* than floating over it, so it is raised even less often than a `PlCard`.
|
|
13
|
+
* @default 0
|
|
14
|
+
*/
|
|
15
|
+
elevation?: PlassElevation;
|
|
16
|
+
/**
|
|
17
|
+
* Who said it. Its presence is what turns the quote into a `<figure>` with a
|
|
18
|
+
* `<figcaption>`, which is the markup the HTML spec asks for: an attribution
|
|
19
|
+
* is *about* the quote and is not part of what was said.
|
|
20
|
+
*/
|
|
21
|
+
author?: React.ReactNode;
|
|
22
|
+
/**
|
|
23
|
+
* Where it is from — a book, a talk, a page. Rendered inside a `<cite>`, which
|
|
24
|
+
* is the element for the title of a work and, per the spec, never for the name
|
|
25
|
+
* of a person. That is what `author` is.
|
|
26
|
+
*/
|
|
27
|
+
source?: React.ReactNode;
|
|
28
|
+
/**
|
|
29
|
+
* URL of the document the quote was taken from. Lands on the `<blockquote>`'s
|
|
30
|
+
* own `cite` attribute, which is machine-readable and shown to nobody — use
|
|
31
|
+
* `source` for the part a reader should see.
|
|
32
|
+
*/
|
|
33
|
+
cite?: string;
|
|
34
|
+
/**
|
|
35
|
+
* The mark drawn before the quote. Omit it for the house glyph, pass a node to
|
|
36
|
+
* replace it, pass `false` to take it away — the same three-way spelling
|
|
37
|
+
* `PlAlert` uses for the same idea.
|
|
38
|
+
*/
|
|
39
|
+
icon?: React.ReactNode | false;
|
|
40
|
+
/** What was said. */
|
|
41
|
+
children?: React.ReactNode;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Somebody else's words, set apart from your own.
|
|
45
|
+
*
|
|
46
|
+
* There is no Base UI primitive under this and there should not be: a quote has
|
|
47
|
+
* no state, no keyboard contract and nothing to interact with. What it has is
|
|
48
|
+
* markup that is easy to get wrong, and getting it right is most of the point.
|
|
49
|
+
*
|
|
50
|
+
* **Nothing is drawn on the `<blockquote>` itself.** The surface, the rule and
|
|
51
|
+
* the padding all belong to the element around it, and that is not tidiness —
|
|
52
|
+
* `blockquote` is one of the handful of tags a host stylesheet still styles by
|
|
53
|
+
* name. VitePress's `.vp-doc blockquote` sets a grey `border-left`, a
|
|
54
|
+
* `padding-left` and a `color`, all at a specificity a one-class utility cannot
|
|
55
|
+
* outrank, so a rule drawn on the quote itself would silently come out grey and
|
|
56
|
+
* a pixel too thin. Moving the drawing onto a wrapper is what lets the docs undo
|
|
57
|
+
* VitePress's version without also undoing this one.
|
|
58
|
+
*
|
|
59
|
+
* The wrapper is a `<figure>` when there is an attribution and a `<div>` when
|
|
60
|
+
* there is not, because the HTML spec is explicit that the attribution goes
|
|
61
|
+
* *outside* the blockquote — a name inside it claims the speaker said their own
|
|
62
|
+
* name — and a `<figure>` with no `<figcaption>` in it is a figure of nothing.
|
|
63
|
+
*/
|
|
64
|
+
export declare const PlBlockquote: React.ForwardRefExoticComponent<PlBlockquoteProps & React.RefAttributes<HTMLElement>>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use client";import{jsx as e,jsxs as s}from"react/jsx-runtime";import*as r from"react";import{glassClasses as l,hasContent as a,metaTextClasses as t,radiusClasses as o,sheetPaddingXClasses as n,sheetPaddingYClasses as i,surfaceSlots as c,transitionClasses as d}from"../../internal/styles.js";const m={xs:"text-[0.75rem]/[1.25rem]",sm:"text-[0.8125rem]/[1.375rem]",md:"text-[0.9375rem]/[1.625rem]",lg:"text-[1.0625rem]/[1.875rem]",xl:"text-[1.25rem]/[2.125rem]"},p="border-s-2 [border-inline-start-color:var(--p-accent)]",u={solid:/* @__PURE__ */[l,"bg-(--plass-glass-press)","[box-shadow:var(--p-elev),var(--plass-gloss-glass)]"].join(" "),glass:/* @__PURE__ */[l,"border border-s-2 bg-(--plass-glass)","[border-color:var(--plass-glass-line)]","[box-shadow:var(--p-elev),var(--plass-gloss-glass)]"].join(" "),ghost:"bg-transparent"};function QuoteMarkIcon(){return e("svg",{viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:e("path",{d:"M6.4 3.6c-2.3.9-3.7 2.8-3.7 5.1 0 2 1.2 3.3 2.8 3.3 1.4 0 2.5-1 2.5-2.4 0-1.3-.9-2.2-2.1-2.2-.2 0-.4 0-.6.1.3-1 1.1-1.8 2.2-2.3l-1.1-1.6ZM13.3 3.6c-2.3.9-3.7 2.8-3.7 5.1 0 2 1.2 3.3 2.8 3.3 1.4 0 2.5-1 2.5-2.4 0-1.3-.9-2.2-2.1-2.2-.2 0-.4 0-.6.1.3-1 1.1-1.8 2.2-2.3l-1.1-1.6Z",fill:"currentColor"})})}export const PlBlockquote=/* @__PURE__ */r.forwardRef(function PlBlockquote({variant:r="ghost",size:l="md",color:f="primary",density:g="default",elevation:x=0,author:h,source:v,cite:b,icon:j,className:N,style:k,children:y,...w},B){const M=a(h)||a(v),q=void 0===j?e(QuoteMarkIcon,{}):j,z=["flex flex-col text-(--plass-fg)",p,"ghost"===r?"":`${o[l]} rounded-s-none`,u[r],n[g][l],i[g][l],d,N??""].filter(Boolean).join(" "),I=s("blockquote",{cite:b,className:m[l],children:[a(q)?e("span",{"aria-hidden":"true",className:"mb-1 block size-[2em] text-(--p-soft-press) [&>svg]:size-full",children:q}):null,y]}),P={...c(f,x),...k};return M?s("figure",{ref:B,className:z,style:P,...w,children:[I,s("figcaption",{className:["mt-2 flex flex-wrap items-baseline gap-x-1.5 text-(--plass-muted-fg)",t[l]].join(" "),children:[a(h)?s("span",{className:"font-medium text-(--plass-fg)",children:[e("span",{"aria-hidden":"true",children:"— "}),h]}):null,a(v)?e("cite",{className:"not-italic",children:v}):null]})]}):e("div",{ref:B,className:z,style:P,...w,children:I})});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{PlBlockquote}from"./PlBlockquote.js";
|