plass-ui 1.7.0 → 1.8.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/CHANGELOG.md +229 -0
- package/README.md +3 -3
- package/dist/components/accordion/PlAccordion.d.ts +11 -4
- package/dist/components/accordion/PlAccordion.js +1 -1
- package/dist/components/alert/PlAlert.d.ts +2 -0
- package/dist/components/alert/PlAlert.js +1 -1
- package/dist/components/anchor/PlAnchor.js +1 -1
- package/dist/components/animate-appear/PlAnimateAppear.js +1 -1
- package/dist/components/animate-counter/PlAnimateCounter.d.ts +5 -2
- package/dist/components/animate-counter/PlAnimateCounter.js +1 -1
- package/dist/components/animate-float/PlAnimateFloat.js +1 -1
- package/dist/components/animate-headline/PlAnimateHeadline.js +1 -1
- package/dist/components/animate-lighting/PlAnimateLighting.js +1 -1
- package/dist/components/animate-marquee/PlAnimateMarquee.js +1 -1
- package/dist/components/animate-scramble/PlAnimateScramble.js +1 -1
- package/dist/components/animate-shake/PlAnimateShake.js +1 -1
- package/dist/components/animate-split/PlAnimateSplit.js +1 -1
- package/dist/components/animate-typing/PlAnimateTyping.js +1 -1
- package/dist/components/app-logo/PlAppLogo.d.ts +51 -15
- package/dist/components/area-chart/PlAreaChart.js +1 -1
- package/dist/components/avatar/PlAvatar.js +1 -1
- package/dist/components/badge/PlBadge.d.ts +2 -0
- package/dist/components/bar-chart/PlBarChart.js +1 -1
- package/dist/components/blockquote/PlBlockquote.d.ts +2 -0
- package/dist/components/bottom-navigation/PlBottomNavigation.d.ts +17 -5
- package/dist/components/bottom-navigation/PlBottomNavigation.js +1 -1
- package/dist/components/box/PlBox.d.ts +2 -0
- package/dist/components/breadcrumb/PlBreadcrumb.d.ts +16 -3
- package/dist/components/breadcrumb/PlBreadcrumb.js +1 -1
- package/dist/components/button/PlButton.d.ts +2 -0
- package/dist/components/button/PlButton.js +1 -1
- package/dist/components/button-group/PlButtonGroup.d.ts +2 -0
- package/dist/components/calendar/PlCalendar.js +1 -1
- package/dist/components/card/PlCard.d.ts +4 -1
- package/dist/components/card/PlCard.js +1 -1
- package/dist/components/carousel/PlCarousel.d.ts +2 -0
- package/dist/components/carousel/PlCarousel.js +1 -1
- package/dist/components/checkbox/PlCheckbox.js +1 -1
- package/dist/components/chip/PlChip.d.ts +2 -0
- package/dist/components/chip/PlChip.js +1 -1
- package/dist/components/code-block/PlCodeBlock.js +1 -1
- package/dist/components/collapsible/PlCollapsible.d.ts +2 -0
- package/dist/components/collapsible/PlCollapsible.js +1 -1
- package/dist/components/color-picker/PlColorPicker.d.ts +2 -0
- package/dist/components/color-picker/PlColorPicker.js +1 -1
- package/dist/components/combobox/PlCombobox.d.ts +3 -1
- package/dist/components/combobox/PlCombobox.js +1 -1
- package/dist/components/command-palette/PlCommandPalette.js +1 -1
- package/dist/components/confirm/PlConfirmProvider.js +1 -1
- package/dist/components/data-table/PlDataTable.d.ts +2 -0
- package/dist/components/data-table/PlDataTable.js +1 -1
- package/dist/components/date-picker/PlDatePicker.js +1 -1
- package/dist/components/date-range-picker/PlDateRangePicker.js +1 -1
- package/dist/components/date-time-picker/PlDateTimePicker.js +1 -1
- package/dist/components/drawer/PlDrawer.d.ts +27 -2
- package/dist/components/drawer/PlDrawer.js +1 -1
- package/dist/components/empty/PlEmpty.d.ts +4 -1
- package/dist/components/empty/PlEmpty.js +1 -1
- package/dist/components/file-picker/PlFilePicker.d.ts +31 -0
- package/dist/components/file-picker/PlFilePicker.js +1 -1
- package/dist/components/file-picker/index.d.ts +1 -1
- package/dist/components/floating-bottom-navigation/PlFloatingBottomNavigation.d.ts +10 -0
- package/dist/components/floating-bottom-navigation/PlFloatingBottomNavigation.js +1 -1
- package/dist/components/footer/PlFooter.js +1 -1
- package/dist/components/gallery/PlGallery.js +1 -1
- package/dist/components/gauge-chart/PlGaugeChart.d.ts +11 -2
- package/dist/components/gauge-chart/PlGaugeChart.js +1 -1
- package/dist/components/header/PlHeader.js +1 -1
- package/dist/components/heatmap-chart/PlHeatmapChart.d.ts +1 -1
- package/dist/components/heatmap-chart/PlHeatmapChart.js +1 -1
- package/dist/components/hot-keys/PlHotKeys.d.ts +4 -0
- package/dist/components/image/PlImage.js +1 -1
- package/dist/components/image/PlImagePreview.d.ts +3 -2
- package/dist/components/list/PlList.d.ts +18 -5
- package/dist/components/list/PlList.js +1 -1
- package/dist/components/menu/PlMenu.d.ts +19 -7
- package/dist/components/menu/PlMenu.js +1 -1
- package/dist/components/menubar/PlMenubar.js +1 -1
- package/dist/components/meter/PlMeter.js +1 -1
- package/dist/components/mockup/PlMockup.d.ts +4 -3
- package/dist/components/mockup/PlMockup.js +1 -1
- package/dist/components/modal/PlModal.js +1 -1
- package/dist/components/navigation-menu/PlNavigationMenu.d.ts +52 -8
- package/dist/components/navigation-menu/PlNavigationMenu.js +1 -1
- package/dist/components/number-field/PlNumberField.d.ts +3 -1
- package/dist/components/number-field/PlNumberField.js +1 -1
- package/dist/components/otp-field/PlOtpField.d.ts +2 -0
- package/dist/components/otp-field/PlOtpField.js +1 -1
- package/dist/components/overlay/PlOverlay.js +1 -1
- package/dist/components/page-layout/PlPageLayout.js +1 -1
- package/dist/components/pagination/PlPagination.d.ts +2 -0
- package/dist/components/panes/PlPanes.d.ts +4 -1
- package/dist/components/panes/PlPanes.js +1 -1
- package/dist/components/pie-chart/PlPieChart.d.ts +1 -1
- package/dist/components/pie-chart/PlPieChart.js +1 -1
- package/dist/components/pill/PlPill.d.ts +2 -0
- package/dist/components/pill/PlPill.js +1 -1
- package/dist/components/popover/PlPopover.js +1 -1
- package/dist/components/progress-box/PlProgressBox.js +1 -1
- package/dist/components/progress-circular/PlProgressCircular.d.ts +11 -1
- package/dist/components/progress-circular/PlProgressCircular.js +1 -1
- package/dist/components/progress-linear/PlProgressLinear.js +1 -1
- package/dist/components/radio-group/PlRadioGroup.js +1 -1
- package/dist/components/scatter-chart/PlScatterChart.js +1 -1
- package/dist/components/scroll-zone/PlScrollZone.d.ts +2 -0
- package/dist/components/scroll-zone/PlScrollZone.js +1 -1
- package/dist/components/segmented-button/PlSegmentedButton.d.ts +6 -1
- package/dist/components/segmented-button/PlSegmentedButton.js +1 -1
- package/dist/components/select/PlSelect.d.ts +2 -0
- package/dist/components/select/PlSelect.js +1 -1
- package/dist/components/sidebar/PlSidebar.d.ts +12 -0
- package/dist/components/sidebar/PlSidebar.js +1 -1
- package/dist/components/sidebar/PlSidebarTrigger.d.ts +2 -0
- package/dist/components/slider/PlSlider.d.ts +2 -1
- package/dist/components/slider/PlSlider.js +1 -1
- package/dist/components/sparkline/PlSparkline.d.ts +15 -3
- package/dist/components/sparkline/PlSparkline.js +1 -1
- package/dist/components/stepper/PlStepper.d.ts +11 -0
- package/dist/components/stepper/PlStepper.js +1 -1
- package/dist/components/switch/PlSwitch.js +1 -1
- package/dist/components/table/PlTable.d.ts +2 -0
- package/dist/components/tabs/PlTabs.js +1 -1
- package/dist/components/text-field/PlTextField.d.ts +2 -0
- package/dist/components/text-field/PlTextField.js +1 -1
- package/dist/components/text-link/PlTextLink.js +1 -1
- package/dist/components/time-picker/PlTimePicker.js +1 -1
- package/dist/components/timeline-chart/PlTimelineChart.js +1 -1
- package/dist/components/toast/PlToast.d.ts +2 -0
- package/dist/components/toast/PlToast.js +1 -1
- package/dist/components/toggle/PlToggle.js +1 -1
- package/dist/components/toolbar/PlToolbar.d.ts +2 -0
- package/dist/components/tour/PlTour.js +1 -1
- package/dist/components/transfer/PlTransfer.d.ts +2 -0
- package/dist/components/transfer/PlTransfer.js +1 -1
- package/dist/components/tree/PlTree.d.ts +12 -0
- package/dist/components/tree/PlTree.js +1 -1
- package/dist/components/tree-select/PlTreeSelect.js +1 -1
- package/dist/components/typography/PlTypography.d.ts +20 -7
- package/dist/components/typography/PlTypography.js +1 -1
- package/dist/components/visually-hidden/PlVisuallyHidden.d.ts +12 -3
- package/dist/components/visually-hidden/PlVisuallyHidden.js +1 -1
- package/dist/components/window-pane/PlWindowPane.d.ts +3 -0
- package/dist/components/window-pane/PlWindowPane.js +1 -1
- package/dist/css/accordion.css +4 -0
- package/dist/css/alert.css +5 -0
- package/dist/css/anchor.css +6 -0
- package/dist/css/animate-appear.css +3 -0
- package/dist/css/animate-blink.css +3 -0
- package/dist/css/animate-counter.css +4 -0
- package/dist/css/animate-fade.css +3 -0
- package/dist/css/animate-float.css +3 -0
- package/dist/css/animate-grow.css +3 -0
- package/dist/css/animate-headline.css +3 -0
- package/dist/css/animate-lighting.css +4 -0
- package/dist/css/animate-marquee.css +4 -0
- package/dist/css/animate-reveal.css +3 -0
- package/dist/css/animate-rotate.css +3 -0
- package/dist/css/animate-scramble.css +5 -0
- package/dist/css/animate-shake.css +3 -0
- package/dist/css/animate-slide.css +3 -0
- package/dist/css/animate-split.css +4 -0
- package/dist/css/animate-typing.css +4 -0
- package/dist/css/animate-zoom.css +3 -0
- package/dist/css/app-logo.css +2 -0
- package/dist/css/area-chart.css +12 -0
- package/dist/css/aspect-ratio.css +2 -0
- package/dist/css/avatar.css +2 -0
- package/dist/css/back-top.css +11 -0
- package/dist/css/badge.css +2 -0
- package/dist/css/bar-chart.css +10 -0
- package/dist/css/base.css +2 -3
- package/dist/css/blockquote.css +2 -0
- package/dist/css/bottom-navigation.css +4 -0
- package/dist/css/box.css +2 -0
- package/dist/css/breadcrumb.css +6 -0
- package/dist/css/button-group.css +2 -0
- package/dist/css/button.css +7 -0
- package/dist/css/calendar.css +17 -0
- package/dist/css/card.css +2 -0
- package/dist/css/carousel.css +10 -0
- package/dist/css/chat-bubble.css +6 -0
- package/dist/css/checkbox.css +3 -0
- package/dist/css/chip.css +8 -0
- package/dist/css/code-block.css +6 -0
- package/dist/css/collapsible.css +3 -0
- package/dist/css/color-picker.css +17 -0
- package/dist/css/combobox.css +10 -0
- package/dist/css/command-palette.css +7 -0
- package/dist/css/confirm.css +9 -0
- package/dist/css/container.css +5 -0
- package/dist/css/data-list.css +2 -0
- package/dist/css/data-table.css +15 -0
- package/dist/css/date-picker.css +16 -0
- package/dist/css/date-range-picker.css +16 -0
- package/dist/css/date-time-picker.css +16 -0
- package/dist/css/divider.css +2 -0
- package/dist/css/drawer.css +6 -0
- package/dist/css/empty.css +2 -0
- package/dist/css/fieldset.css +2 -0
- package/dist/css/file-picker.css +8 -0
- package/dist/css/flex.css +5 -0
- package/dist/css/floating-action-button.css +7 -0
- package/dist/css/floating-bottom-navigation.css +5 -0
- package/dist/css/footer.css +6 -0
- package/dist/css/form.css +2 -0
- package/dist/css/gallery.css +15 -0
- package/dist/css/gauge-chart.css +11 -0
- package/dist/css/grid.css +5 -0
- package/dist/css/header.css +6 -0
- package/dist/css/heatmap-chart.css +10 -0
- package/dist/css/highlight.css +2 -0
- package/dist/css/hot-keys.css +3 -0
- package/dist/css/hover-card.css +9 -0
- package/dist/css/how-to-steps.css +3 -0
- package/dist/css/icon-button.css +7 -0
- package/dist/css/icon.css +1 -0
- package/dist/css/image.css +7 -0
- package/dist/css/line-chart.css +12 -0
- package/dist/css/list.css +2 -0
- package/dist/css/menu.css +5 -0
- package/dist/css/menubar.css +5 -0
- package/dist/css/meter.css +6 -0
- package/dist/css/mockup.css +4 -0
- package/dist/css/modal.css +5 -0
- package/dist/css/navigation-menu.css +4 -0
- package/dist/css/number-field.css +10 -0
- package/dist/css/otp-field.css +6 -0
- package/dist/css/overlay.css +4 -0
- package/dist/css/page-layout.css +7 -0
- package/dist/css/pagination.css +8 -0
- package/dist/css/panes.css +7 -0
- package/dist/css/pie-chart.css +10 -0
- package/dist/css/pill.css +4 -0
- package/dist/css/popconfirm.css +12 -0
- package/dist/css/popover.css +11 -0
- package/dist/css/portal.css +1 -0
- package/dist/css/progress-box.css +5 -0
- package/dist/css/progress-circular.css +5 -0
- package/dist/css/progress-linear.css +5 -0
- package/dist/css/radio-group.css +3 -0
- package/dist/css/rating.css +6 -0
- package/dist/css/scatter-chart.css +10 -0
- package/dist/css/scroll-area.css +2 -0
- package/dist/css/scroll-zone.css +15 -0
- package/dist/css/segmented-button.css +5 -0
- package/dist/css/select.css +9 -0
- package/dist/css/show.css +1 -0
- package/dist/css/sidebar.css +16 -0
- package/dist/css/skeleton.css +2 -0
- package/dist/css/slider.css +3 -0
- package/dist/css/sparkline.css +10 -0
- package/dist/css/spoiler.css +10 -0
- package/dist/css/stack.css +5 -0
- package/dist/css/stat.css +2 -0
- package/dist/css/stepper.css +8 -0
- package/dist/css/switch.css +3 -0
- package/dist/css/table.css +3 -0
- package/dist/css/tabs.css +7 -0
- package/dist/css/text-field.css +8 -0
- package/dist/css/text-link.css +6 -0
- package/dist/css/time-picker.css +16 -0
- package/dist/css/timeline-chart.css +10 -0
- package/dist/css/timeline.css +6 -0
- package/dist/css/toast.css +5 -0
- package/dist/css/toggle.css +5 -0
- package/dist/css/toolbar.css +2 -0
- package/dist/css/tooltip.css +9 -0
- package/dist/css/tour.css +10 -0
- package/dist/css/transfer.css +13 -0
- package/dist/css/tree-select.css +14 -0
- package/dist/css/tree.css +3 -0
- package/dist/css/visually-hidden.css +2 -0
- package/dist/css/window-pane.css +9 -0
- package/dist/internal/animate.d.ts +59 -4
- package/dist/internal/animate.js +1 -1
- package/dist/internal/bottom-bar.js +1 -1
- package/dist/internal/calendar.js +1 -1
- package/dist/internal/chart-frame.d.ts +132 -11
- package/dist/internal/chart-frame.js +1 -1
- package/dist/internal/commit-change.d.ts +38 -0
- package/dist/internal/commit-change.js +1 -0
- package/dist/internal/data-table.d.ts +2 -2
- package/dist/internal/data-table.js +1 -1
- package/dist/internal/date.d.ts +9 -0
- package/dist/internal/date.js +1 -1
- package/dist/internal/defaults.d.ts +34 -1
- package/dist/internal/defaults.js +1 -1
- package/dist/internal/direction.d.ts +8 -2
- package/dist/internal/direction.js +1 -1
- package/dist/internal/form.d.ts +43 -0
- package/dist/internal/form.js +1 -1
- package/dist/internal/format.d.ts +4 -1
- package/dist/internal/format.js +1 -1
- package/dist/internal/gallery.d.ts +28 -0
- package/dist/internal/gallery.js +1 -1
- package/dist/internal/glow.d.ts +7 -2
- package/dist/internal/glow.js +1 -1
- package/dist/internal/heading.d.ts +11 -0
- package/dist/internal/heading.js +1 -0
- package/dist/internal/highlight.d.ts +4 -2
- package/dist/internal/highlight.js +1 -1
- package/dist/internal/labels.d.ts +5 -0
- package/dist/internal/labels.js +1 -1
- package/dist/internal/layout-box.d.ts +35 -0
- package/dist/internal/layout-box.js +1 -0
- package/dist/internal/lazy.d.ts +37 -0
- package/dist/internal/lazy.js +1 -0
- package/dist/internal/media.d.ts +6 -0
- package/dist/internal/media.js +1 -1
- package/dist/internal/page-layout.d.ts +24 -13
- package/dist/internal/page-layout.js +1 -1
- package/dist/internal/picker.d.ts +1 -1
- package/dist/internal/picker.js +1 -1
- package/dist/internal/progress.d.ts +24 -0
- package/dist/internal/progress.js +1 -1
- package/dist/internal/search.d.ts +12 -0
- package/dist/internal/search.js +1 -1
- package/dist/internal/sizer.d.ts +15 -8
- package/dist/internal/sizer.js +1 -1
- package/dist/internal/styles.d.ts +22 -6
- package/dist/internal/styles.js +1 -1
- package/dist/internal/wheel.d.ts +13 -1
- package/dist/internal/wheel.js +1 -1
- package/dist/internal/window.js +1 -1
- package/dist/locales/de.js +1 -1
- package/dist/locales/es.js +1 -1
- package/dist/locales/fr.js +1 -1
- package/dist/locales/ja.js +1 -1
- package/dist/locales/ko.js +1 -1
- package/dist/locales/zh-Hans.js +1 -1
- package/dist/styles.css +1 -1
- package/dist/tailwind.css +758 -40
- package/dist/tokens.css +758 -40
- package/dist/types.d.ts +14 -2
- package/package.json +19 -18
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as e,jsxs as t}from"react/jsx-runtime";import*as
|
|
1
|
+
"use client";import{jsx as e,jsxs as t}from"react/jsx-runtime";import*as n from"react";import{useDefaults as r}from"../../internal/defaults.js";import{beginPointerDrag as i}from"../../internal/drag.js";import{layoutBox as o}from"../../internal/layout-box.js";import{cx as a,transitionClasses as s}from"../../internal/styles.js";import{useResponsiveValue as l}from"../../internal/responsive.js";const u="1 1 0%",c=/* @__PURE__ */n.createContext({flex:u,id:void 0}),m={xs:"basis-1",sm:"basis-1.5",md:"basis-2",lg:"basis-2.5",xl:"basis-3"},f={xs:4,sm:6,md:8,lg:10,xl:12};function parseLength(e){if(null==e)return;if("number"==typeof e)return{amount:e,unit:"%"};const t=/^\s*(-?[\d.]+)\s*(px|rem|em|%)\s*$/.exec(e);if(!t)return;const n=Number(t[1]);return Number.isNaN(n)?void 0:{amount:n,unit:t[2]}}function toPixels(e,t,n){const r=parseLength(e);if(r)switch(r.unit){case"px":return r.amount;case"%":return t*r.amount/100;case"rem":return r.amount*parseFloat(getComputedStyle(document.documentElement).fontSize||"16");case"em":return r.amount*parseFloat(n&&getComputedStyle(n).fontSize||"16")}}function basisOf(e,t){return`calc((100% - ${t}px) * ${e.toFixed(6)})`}function initialFractions(e,t,n){const r=e.map(e=>toPixels(e.defaultSize,t,n)),i=r.reduce((e,t)=>e+(t??0),0),o=r.filter(e=>void 0===e).length,a=o>0?Math.max(0,t-i)/o:0,s=r.map(e=>Math.max(0,e??a)),l=s.reduce((e,t)=>e+t,0);return l<=0?s.map(()=>1/Math.max(1,s.length)):s.map(e=>e/l)}export const PlPanes=/* @__PURE__ */n.forwardRef(function PlPanes({orientation:p,resizable:d=!0,color:x,size:h,onResize:g,onResizeEnd:v,label:b,className:z,style:w,children:y,...P},S){const $=l(p,"horizontal"),M=r(),N=x??M.color??"primary",R=h??M.size??"md",j=n.Children.toArray(y).filter(n.isValidElement),C=j.length,F=n.useId(),paneId=e=>j[e]?.props.id??`${F}-pane-${e}`,k=n.useRef(null),E=n.useCallback(e=>{k.current=e,"function"==typeof S?S(e):S&&(S.current=e)},[S]),A=j.map(e=>e.props),D=n.useRef([]);D.current=A;const[O,I]=n.useState(null),L=O&&O.length===C?O:null,T=n.useRef(null);T.current=L;const X="horizontal"===$,Y=f[R]*Math.max(0,C-1),_=L?null:function presplit(e,t){const n=e.map(e=>parseLength(e.defaultSize)),r=new Set(n.map(e=>e?.unit));return r.has("rem")||r.has("em")?null:r.has("px")&&(r.has("%")||r.has(void 0))?r.has(void 0)?n.map(e=>{if(!e)return u;const n=Math.max(0,e.amount);return"px"===e.unit?`0 0 ${n}px`:`0 0 ${basisOf(n/100,t)}`}):null:initialFractions(e,100,null).map(e=>`0 0 ${basisOf(e,t)}`)}(A,Y);function grip(e){const t=k.current,n=T.current;if(!d||!t||!n||void 0===n[e+1])return null;const{content:r,perPixel:i}=o(t,X),a=r-Y;if(a<=0)return null;const s=D.current[e],l=D.current[e+1],u=n[e]*a,c=u+n[e+1]*a,m=Math.max(toPixels(s?.minSize,a,t)??0,c-(toPixels(l?.maxSize,a,t)??c)),f=Math.min(toPixels(s?.maxSize,a,t)??c,c-(toPixels(l?.minSize,a,t)??0));return f<m?null:{root:t,current:n,extent:a,start:u,pair:c,perPixel:i,resize(t){const r=Math.min(f,Math.max(m,u+t));if(r===u)return n;const i=[...n];return i[e]=r/a,i[e+1]=(c-r)/a,I(i),g?.(i.map(e=>100*e)),i}}}n.useEffect(()=>{const e=k.current;if(!e)return;const measure=()=>{const t=o(e,X).content-Y;t<=0||I(n=>n&&n.length===C?n:initialFractions(D.current,t,e))};measure();const t=new ResizeObserver(measure);return t.observe(e),()=>t.disconnect()},[C,X,Y]);const K=n.useRef(null);n.useEffect(()=>()=>K.current?.(),[]);const U=a("group/handle relative z-1 flex shrink-0 grow-0 items-center justify-center",m[R],s,"[outline:none] focus-visible:[outline:2px_solid_var(--p-ring)] focus-visible:outline-offset-0",d?a(X?"cursor-col-resize":"cursor-row-resize","touch-none","hover:bg-(--p-soft) data-[dragging]:bg-(--p-soft)"):"");return e("div",{ref:E,className:a("flex h-full w-full",X?"flex-row":"flex-col","min-h-0 min-w-0",z),style:{"--p-accent":`var(--plass-${N}-accent)`,"--p-soft":`var(--plass-${N}-soft)`,"--p-ring":`var(--plass-${N}-ring)`,...w},...P,children:j.map((r,o)=>t(n.Fragment,{children:[o>0?e("div",{role:"separator","aria-label":b,"aria-controls":paneId(o-1),"aria-orientation":X?"vertical":"horizontal","aria-valuenow":L?Math.round(100*L[o-1]):void 0,"aria-valuemin":0,"aria-valuemax":100,"aria-disabled":!d||void 0,tabIndex:d?0:-1,className:U,onPointerDown:e=>{0===e.button&&function beginDrag(e,t){const n=grip(e);if(!n)return;const r=X?t.clientX:t.clientY,o=X&&"rtl"===getComputedStyle(n.root).direction?-1:1;let a=n.current;const s=i({target:t.currentTarget,pointerId:t.pointerId,onMove:e=>{const t=X?e.clientX:e.clientY;a=n.resize((t-r)*o*n.perPixel)},onEnd:()=>{K.current=null,v?.(a.map(e=>100*e))}});K.current=s}(o-1,e)},onKeyDown:e=>{const t=X?"ArrowLeft":"ArrowUp",n=X?"ArrowRight":"ArrowDown";if(e.key!==t&&e.key!==n)return;e.preventDefault();const r=X&&"rtl"===getComputedStyle(e.currentTarget).direction?-1:1,i=e.key===n?16:-16;!function nudge(e,t){const n=grip(e);if(!n)return;const r=n.resize(t);r!==n.current&&v?.(r.map(e=>100*e))}(o-1,i*r)},children:e("span",{"aria-hidden":"true",className:a("pointer-events-none bg-(--plass-border)",s,X?"h-full w-px":"h-px w-full",d?"group-hover/handle:bg-(--p-accent) group-focus-visible/handle:bg-(--p-accent) group-data-[dragging]/handle:bg-(--p-accent)":"")})}):null,e(c.Provider,{value:{flex:L?`0 0 ${basisOf(L[o],Y)}`:_?.[o]??u,id:paneId(o)},children:r})]},r.key??o))})});export const PlPane=/* @__PURE__ */n.forwardRef(function PlPane({defaultSize:t,minSize:r,maxSize:i,className:o,style:s,children:l,...u},m){const{flex:f,id:p}=n.useContext(c);return e("div",{ref:m,id:p,className:a("relative min-h-0 min-w-0 overflow-auto",o),style:{flex:f,...s},...u,children:l})});
|
|
@@ -80,4 +80,4 @@ export interface PlPieChartProps extends ChartBaseProps {
|
|
|
80
80
|
* A slice's colour follows the slice and not its size, so a chart that is
|
|
81
81
|
* refiltered or resorted keeps every category the colour it had.
|
|
82
82
|
*/
|
|
83
|
-
export declare function PlPieChart({ data, categories, shape, startAngle, innerRadius, padAngle, center, valueLabels, height, format, locale: localeProp, label, legend, tooltip, empty, size: sizeProp, variant, padded, className, ...box }: PlPieChartProps): React.JSX.Element;
|
|
83
|
+
export declare function PlPieChart({ data, categories, shape, startAngle, innerRadius, padAngle, center, valueLabels, height, initialWidth, format, locale: localeProp, label, 'aria-label': ariaLabel, 'aria-labelledby': ariaLabelledBy, 'aria-describedby': ariaDescribedBy, legend, tooltip, empty, size: sizeProp, variant, padded, className, ...box }: PlPieChartProps): React.JSX.Element;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as e,jsxs as l}from"react/jsx-runtime";import*as
|
|
1
|
+
"use client";import{jsx as e,jsxs as l}from"react/jsx-runtime";import*as a from"react";import{ChartDataTable as n,ChartLegendBar as t,ChartStatus as i,ChartSurface as r,ChartTooltipPanel as s,chartTableName as o,givenHeight as d,markTransitionClasses as u,useMeasuredSize as m,useVisibility as c}from"../../internal/chart-frame.js";import{arcPath as h,categoryAt as v,chartFontSizes as f,compactNumber as p,dimmedByHover as b,formatCategory as x,markGap as g,plotHeights as y,seriesColor as M,toValue as N}from"../../internal/chart.js";import{useDefaults as j,useLocale as w}from"../../internal/defaults.js";import{numberFormatter as I}from"../../internal/format.js";import{useLabels as P}from"../../internal/labels.js";import{cx as k,metaTextClasses as z,srOnlyClasses as $}from"../../internal/styles.js";const A={pie:0,donut:.62,semi:.62},clamp=(e,l,a)=>Math.min(a,Math.max(l,e));export function PlPieChart({data:S,categories:B,shape:E="pie",startAngle:L=0,innerRadius:R,padAngle:D,center:O,valueLabels:C="none",height:W,initialWidth:_,format:F,locale:K,label:V,"aria-label":q,"aria-labelledby":G,"aria-describedby":H,legend:J,tooltip:Q,empty:T,size:U,variant:X="ghost",padded:Y=!1,className:Z,...ee}){const le=j(),ae=U??le.size??"md",ne=w(K),te=a.useRef(null),{width:ie,height:re,guessed:se}=m(te,_),oe=P(),de=a.useId(),ue=a.useId(),me=a.useId(),ce=a.useId(),he=a.useCallback(e=>F?I(ne,F).format(e):p(e,ne),[F,ne]),ve=a.useMemo(()=>S.map(N),[S]),fe=a.useMemo(()=>ve.map((e,l)=>({name:x(v(l,B,[ve]),ne),data:[S[l]],color:e.color})),[ve,B,S,ne]),pe=!1===J?{interactive:!1}:!0===J||void 0===J?{}:J,be=!1!==J&&fe.length>1,xe=pe.side??"bottom",ge=c(fe,be&&!1!==pe.interactive),[ye,Me]=a.useState(null),setActive=e=>Me(null===e?null:ge.keys[e]??null),Ne=fe.map((e,l)=>M(e,l)),je=ve.reduce((e,l,a)=>ge.visible[a]&&null!==l.value?e+Math.abs(l.value):e,0),we="semi"===E,Ie=d(W,y[ae]),Pe=Ie??re??0,ke=f[ae],ze=!1===Q?{mode:"none"}:!0===Q||void 0===Q?{}:Q,$e="none"===ze.mode,Ae=ie/2,Se=Math.max(0,Math.min(ie/2,we?Pe:Pe/2)-2),Be=we?Math.min(Pe,Pe/2+Se/2):Pe/2,Ee=Se*clamp(R??A[E],0,.95),Le=je<=0,Re=!Le&&Boolean(O)&&Ee>0,De=void 0===D?Se>0?Math.min(4,g/Se*(180/Math.PI)):0:clamp(D,0,10),Oe=we?180:360,Ce=[];let We=we?-90:L;ve.forEach((e,l)=>{if(!ge.visible[l]||null===e.value||0===e.value)return;const a=Math.abs(e.value)/je,n=a*Oe;Ce.push({index:l,start:We,end:We+n,value:e.value,share:a}),We+=n});const _e=null===ye?-1:ge.keys.indexOf(ye),Fe=Ce.some(e=>e.index===_e)?_e:null;null!==ye&&null===Fe&&Me(null);const share=e=>`${he(e)} · ${Math.round(10*(Math.abs(e)/je*100+Number.EPSILON))/10}%`,Ke=null===Fe?[]:[{seriesIndex:Fe,name:fe[Fe]?.name,color:ve[Fe]?.color??Ne[Fe],value:ve[Fe]?.value??null,formatted:share(ve[Fe]?.value??0),label:ve[Fe]?.label}],Ve=Ke.map(e=>({...e,name:void 0}));return l(r,{...ee,size:ae,variant:X,padded:Y,className:Z,legendSide:xe,legend:be?e(t,{series:fe,colors:Ne,options:pe,visibility:ge,size:ae,values:pe.showValue?ve.map(e=>null===e.value?void 0:he(e.value)):void 0}):null,table:Le?null:e(n,{id:de,...o({label:V,"aria-label":q,"aria-labelledby":G}),categories:fe.map(e=>e.name??""),series:[{name:q??V??"",data:S}],values:[ve],format:he,locale:ne}),children:[l("div",{ref:te,role:"img",tabIndex:Le?void 0:0,"aria-labelledby":G,"aria-label":q??V??oe.chart,"aria-describedby":k(H,Le?me:Re?`${ce} ${ue}`:ue),onPointerLeave:()=>setActive(null),onBlur:()=>setActive(null),onKeyDown:e=>{if($e)return;if("Escape"===e.key&&null!==Fe)return setActive(null),e.stopPropagation(),void e.preventDefault();if("ArrowRight"!==e.key&&"ArrowLeft"!==e.key)return;const l=Ce.map(e=>e.index);if(0===l.length)return;const a=null===Fe?-1:l.indexOf(Fe),n="ArrowRight"===e.key,t=-1===a?n?0:l.length-1:(a+(n?1:-1)+l.length)%l.length;setActive(l[t]),e.preventDefault()},className:k("relative w-full rounded-(--plass-radius-xs)","focus-visible:[outline:2px_solid_var(--p-ring)] focus-visible:outline-offset-2",se&&"overflow-hidden"),style:{height:Ie??W},children:[Le?e("div",{id:me,className:k("flex h-full items-center justify-center text-(--plass-muted-fg)",z[ae]),children:T??oe.empty}):ie>0&&Se>0?l("svg",{width:ie,height:Pe,viewBox:`0 0 ${ie} ${Pe}`,"aria-hidden":"true",className:"block",children:[Ce.map(l=>{const a=b(ge.hovered,l.index,ge.visible)||null!==Fe&&Fe!==l.index,n=l.end-l.start>2*De?De/2:0;return e("path",{d:h(Ae,Be,Se,Ee,l.start+n,l.end-n),fill:ve[l.index].color??Ne[l.index],opacity:a?.32:1,onPointerEnter:$e?void 0:()=>setActive(l.index),className:u},l.index)}),"all"===C?Ce.map(l=>{const a=((l.start+l.end)/2-90)*(Math.PI/180),n=Ee>0?(Ee+Se)/2:.68*Se,t=`${Math.round(100*l.share)}%`;return(l.end-l.start)*(Math.PI/180)*n<2*ke||Se-Ee<1.6*ke?null:e("text",{x:Ae+n*Math.cos(a),y:Be+n*Math.sin(a),textAnchor:"middle",dominantBaseline:"central",fontSize:ke,fontWeight:600,fill:"var(--plass-surface)",className:"tabular-nums",children:t},l.index)}):null]}):null,Re?e("div",{id:ce,className:"pointer-events-none absolute flex flex-col items-center justify-center text-center",style:{insetInlineStart:Ae-Ee,top:Be-Ee,width:2*Ee,height:we?Ee:2*Ee},children:O}):null,null===Fe||$e?null:ze.render?e("div",{className:"pointer-events-none absolute top-0 start-1/2 z-10",children:ze.render({index:Fe,category:fe[Fe]?.name??Fe,items:Ke})}):e(s,{heading:fe[Fe]?.name,items:Ve,x:Ae,y:8,flip:!1,size:ae})]}),Le?null:e("span",{id:ue,className:$,children:Ce.map((e,n)=>l(a.Fragment,{children:[n>0||Re?", ":null,fe[e.index]?.name," ",ve[e.index]?.label??share(e.value)]},e.index))}),$e?null:e(i,{heading:null===Fe?void 0:fe[Fe]?.name,items:Ve})]})}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import type { PlassElevation, PlassPosition, PlassStyleProps } from '../../types.js';
|
|
3
3
|
export interface PlPillProps extends PlassStyleProps, Omit<React.ComponentPropsWithoutRef<'div'>, 'color' | 'onClick' | 'title'> {
|
|
4
|
+
/** @default 'solid' */
|
|
5
|
+
variant?: PlassStyleProps['variant'];
|
|
4
6
|
/**
|
|
5
7
|
* Drop shadow depth. `2` here, against the `0` almost everything else takes.
|
|
6
8
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as e,jsxs as s,Fragment as t}from"react/jsx-runtime";import*as l from"react";import{glowPointerMove as o}from"../../internal/glow.js";import{useDefaults as r}from"../../internal/defaults.js";import{inertProps as n}from"../../internal/inert.js";import{controlSlots as i,controlTextClasses as a,cx as c,focusRingClasses as d,forcedEdgeClasses as m,gapClasses as p,glassClasses as f,hasContent as u,iconClasses as x,iconSizeClasses as h,metaTextClasses as v,paddingXClasses as g,sheetBodyClasses as b,transitionClasses as w}from"../../internal/styles.js";const y={solid:`text-(--p-on-solid) [background-image:var(--p-fill)] [box-shadow:var(--p-elev),var(--p-lift)] ${m}`,glass:/* @__PURE__ */[f,"border text-(--p-accent) bg-(--plass-glass)","[border-color:var(--plass-glass-line)]","[box-shadow:var(--p-elev),var(--plass-gloss-glass)]"].join(" "),ghost:`${f} text-(--p-accent) bg-(--p-soft)`},j={solid:"hover:brightness-105 active:brightness-95",glass:"hover:bg-(--plass-glass-hover) hover:[border-color:var(--p-line)] active:bg-(--plass-glass-press)",ghost:"hover:bg-(--p-soft-hover) active:bg-(--p-soft-press)"},N={xs:"min-h-5.5",sm:"min-h-6.5",md:"min-h-8",lg:"min-h-10",xl:"min-h-12"},k={xs:"rounded-[0.6875rem]",sm:"rounded-[0.8125rem]",md:"rounded-[1rem]",lg:"rounded-[1.25rem]",xl:"rounded-[1.5rem]"},z={default:{xs:"px-3",sm:"px-4",md:"px-5",lg:"px-6",xl:"px-8"},compact:{xs:"px-1.5",sm:"px-2",md:"px-2.5",lg:"px-3",xl:"px-4"}},P={static:{top:"relative",bottom:"relative"},sticky:{top:"sticky top-3 z-20",bottom:"sticky bottom-3 z-20"},fixed:{top:"fixed inset-x-0 top-3 z-30 mx-auto w-fit",bottom:"fixed inset-x-0 bottom-3 z-30 mx-auto w-fit"}};export const PlPill=/* @__PURE__ */l.forwardRef(function PlPill({variant:m="solid",size:f,color:_,density:R,elevation:C=2,startIcon:I,endIcon:$,title:H,description:M,details:O,expanded:B=!1,position:E="static",side:F="top",className:L,style:S,children:q,onClick:A,onPointerMove:D,...G},J){const K=r(),Q=f??K.size??"md",T=_??K.color??"secondary",U=R??K.density??"default",V=l.useRef(null),W=l.useId(),[X,Y]=l.useState(null),Z=u(O);l.useLayoutEffect(()=>{const e=V.current;if(!e||"undefined"==typeof ResizeObserver)return;const s=new ResizeObserver(()=>Y(e.scrollHeight));return s.observe(e),Y(e.scrollHeight),()=>s.disconnect()},[Z]);const ee=Boolean(A),se=g[U][Q],te=s(t,{children:[u(I)?e("span",{className:c("flex shrink-0 items-center justify-center overflow-hidden rounded-full [&_img]:size-full [&_img]:object-cover",h[Q]),children:I}):null,u(H)||u(M)||u(q)?s("span",{className:c("flex min-w-0 flex-1 flex-col items-center justify-center text-center",z[U][Q]),children:[u(H)?e("span",{className:"max-w-full truncate",children:H}):null,u(M)?e("span",{className:c("max-w-full truncate font-normal",v[Q],"[color:color-mix(in_oklab,currentColor_72%,transparent)]"),children:M}):null,q]}):null]});return s("div",{ref:J,className:c("inline-flex max-w-full flex-col overflow-hidden align-middle",k[Q],"font-medium whitespace-nowrap select-none",a[Q],y[m],w,x,ee?`plass-glow ${j[m]}`:"",P[E][F],L),style:{...i(T,C,m),...S},onPointerMove:o(ee,D),...G,children:[s("div",{className:c("flex shrink-0 items-center py-1",N[Q],p[Q],ee?"ps-0":se,u($)?"pe-1":ee?"pe-0":""),children:[ee?e("button",{type:"button",className:c("flex min-w-0 flex-1 cursor-pointer items-center justify-center self-stretch","rounded-[inherit]",p[Q],se,d),"aria-expanded":Z?B:void 0,"aria-controls":Z?W:void 0,onClick:A,children:te}):te,u($)?e("span",{className:"flex h-[1lh] shrink-0 items-center",children:$}):null]}),Z?e("div",{id:W,className:c("overflow-hidden","[transition:height_var(--plass-duration-slow)_var(--plass-ease)]","motion-reduce:[transition-duration:0ms]"),style:{height:B?X??"auto":0},...n(!B),children:e("div",{ref:V,className:c("whitespace-normal pb-2",se,b[Q]),children:O})}):null]})});
|
|
1
|
+
"use client";import{jsx as e,jsxs as s,Fragment as t}from"react/jsx-runtime";import*as l from"react";import{glowPointerMove as o}from"../../internal/glow.js";import{useDefaults as r}from"../../internal/defaults.js";import{inertProps as n}from"../../internal/inert.js";import{controlSlots as i,controlTextClasses as a,cx as c,focusRingClasses as d,forcedEdgeClasses as m,gapClasses as p,glassClasses as f,hasContent as u,iconClasses as x,iconSizeClasses as h,metaTextClasses as v,paddingXClasses as g,sheetBodyClasses as b,transitionClasses as w}from"../../internal/styles.js";const y={solid:`text-(--p-on-solid) [background-image:var(--p-fill)] [box-shadow:var(--p-elev),var(--p-lift)] ${m}`,glass:/* @__PURE__ */[f,"border text-(--p-accent) bg-(--plass-glass)","[border-color:var(--plass-glass-line)]","[box-shadow:var(--p-elev),var(--plass-gloss-glass)]"].join(" "),ghost:`${f} text-(--p-accent) bg-(--p-soft)`},j={solid:"hover:brightness-105 active:brightness-95",glass:"hover:bg-(--plass-glass-hover) hover:[border-color:var(--p-line)] active:bg-(--plass-glass-press)",ghost:"hover:bg-(--p-soft-hover) active:bg-(--p-soft-press)"},N={xs:"min-h-5.5",sm:"min-h-6.5",md:"min-h-8",lg:"min-h-10",xl:"min-h-12"},k={xs:"rounded-[0.6875rem]",sm:"rounded-[0.8125rem]",md:"rounded-[1rem]",lg:"rounded-[1.25rem]",xl:"rounded-[1.5rem]"},z={default:{xs:"px-3",sm:"px-4",md:"px-5",lg:"px-6",xl:"px-8"},compact:{xs:"px-1.5",sm:"px-2",md:"px-2.5",lg:"px-3",xl:"px-4"}},P={static:{top:"relative",bottom:"relative"},sticky:{top:"sticky top-3 z-20",bottom:"sticky bottom-3 z-20"},fixed:{top:"fixed inset-x-0 top-3 z-30 mx-auto w-fit",bottom:"fixed inset-x-0 bottom-3 z-30 mx-auto w-fit"}};export const PlPill=/* @__PURE__ */l.forwardRef(function PlPill({variant:m="solid",size:f,color:_,density:R,elevation:C=2,startIcon:I,endIcon:$,title:H,description:M,details:O,expanded:B=!1,position:E="static",side:F="top",className:L,style:S,children:q,onClick:A,onPointerMove:D,...G},J){const K=r(),Q=f??K.size??"md",T=_??K.color??"secondary",U=R??K.density??"default",V=l.useRef(null),W=l.useId(),[X,Y]=l.useState(null),Z=u(O);l.useLayoutEffect(()=>{const e=V.current;if(!e||"undefined"==typeof ResizeObserver)return;const s=new ResizeObserver(()=>Y(e.scrollHeight));return s.observe(e),Y(e.scrollHeight),()=>s.disconnect()},[Z]);const ee=Boolean(A),se=g[U][Q],te=s(t,{children:[u(I)?e("span",{className:c("flex shrink-0 items-center justify-center overflow-hidden rounded-full [&_img]:size-full [&_img]:object-cover",h[Q]),children:I}):null,u(H)||u(M)||u(q)?s("span",{className:c("flex min-w-0 flex-1 flex-col items-center justify-center text-center",z[U][Q]),children:[u(H)?e("span",{className:"max-w-full truncate",children:H}):null,u(M)?e("span",{className:c("max-w-full truncate font-normal",v[Q],"[color:color-mix(in_oklab,currentColor_72%,transparent)]"),children:M}):null,q]}):null]});return s("div",{ref:J,className:c("inline-flex max-w-full flex-col overflow-hidden align-middle",k[Q],"font-medium whitespace-nowrap select-none",a[Q],y[m],w,x,ee?`plass-glow ${j[m]}`:"",P[E][F],L),style:{...i(T,C,m),...S},onPointerMove:o(ee,D),...G,children:[s("div",{className:c("flex shrink-0 items-center py-1",N[Q],p[Q],ee?"ps-0":se,u($)?"pe-1":ee?"pe-0":""),children:[ee?e("button",{type:"button",className:c("flex min-w-0 flex-1 cursor-pointer items-center justify-center self-stretch py-0","rounded-[inherit]",p[Q],se,d),"aria-expanded":Z?B:void 0,"aria-controls":Z?W:void 0,onClick:A,children:te}):te,u($)?e("span",{className:"flex h-[1lh] shrink-0 items-center",children:$}):null]}),Z?e("div",{id:W,className:c("overflow-hidden","[transition:height_var(--plass-duration-slow)_var(--plass-ease)]","motion-reduce:[transition-duration:0ms]"),style:{height:B?X??"auto":0},...n(!B),children:e("div",{ref:V,className:c("whitespace-normal pb-2",se,b[Q]),children:O})}):null]})});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as s,jsxs as e}from"react/jsx-runtime";import{useDefaults as l}from"../../internal/defaults.js";import{useLabels as a}from"../../internal/labels.js";import{Popover as o}from"@base-ui/react/popover";import{CloseIcon as r}from"../../internal/icons.js";import{PopupArrow as i}from"../../internal/picker.js";import{cx as n,focusRingClasses as t,glassClasses as d,hasContent as m,metaTextClasses as p,radiusClasses as c,sheetBodyClasses as u,sheetHeaderGapClasses as f,sheetPaddingXClasses as g,sheetPaddingYClasses as x,sheetSectionGapClasses as h,sheetTitleClasses as v,surfaceSlots as b,targetClasses as y}from"../../internal/styles.js";const w={xs:"max-w-56",sm:"max-w-64",md:"max-w-80",lg:"max-w-96",xl:"max-w-lg"},j=/* @__PURE__ */[d,"relative flex flex-col","border text-(--plass-fg) bg-(--plass-glass-press)","[border-color:var(--plass-glass-line)]","[box-shadow:var(--plass-shadow-3),var(--plass-gloss-glass)]","[outline:none]","[transition:opacity_var(--plass-duration)_var(--plass-ease)]","motion-reduce:[transition-duration:0ms]","data-[starting-style]:opacity-0 data-[ending-style]:opacity-0"].join(" "),N={xs:8,sm:9,md:10,lg:11,xl:12},O=/* @__PURE__ */[y,"flex size-[1.6em] shrink-0 cursor-pointer items-center justify-center","rounded-full text-(--plass-muted-fg)","[&_svg]:size-[1.1em] [&_svg]:shrink-0","[transition:background-color_var(--plass-duration)_var(--plass-ease),color_var(--plass-duration)_var(--plass-ease)]","motion-reduce:[transition-duration:0ms]","hover:bg-(--p-soft) hover:text-(--plass-fg)",t].join(" ");export const PlPopoverClose=o.Close;export function PlPopover({size:t,color:d,density:y,trigger:P,title:_,description:z,children:k,side:C="bottom",align:T="center",sideOffset:A=6,alignOffset:D=0,arrow:L=!1,open:R,defaultOpen:W,onOpenChange:$,modal:q=!1,dismissible:B=!0,showClose:E=!1,closeLabel:F,width:G,className:H,style:I,...J}){const K=l(),M=a(),Q=F??M.close,S=t??K.size??"md",U=d??K.color??"primary",V=y??K.density??"default",X=g[V][S],Y=x[V][S],Z=N[S],ss=m(_)||m(z);return e(o.Root,{open:R,defaultOpen:W,modal:q,onOpenChange:(s,e)=>{B||s||"escape-key"!==e.reason&&"outside-press"!==e.reason&&"focus-out"!==e.reason?$?.(s):e.cancel()},children:[P?s(o.Trigger,{render:P}):null,s(o.Portal,{children:s(o.Positioner,{className:"plass-portal z-(--plass-z-portal) [outline:none]",side:C,align:T,sideOffset:A,alignOffset:D,children:e(o.Popup,{className:n(j,c[S],u[S],h[S],X,Y,void 0===G?w[S]:"",H),style:{...b(U,3),...void 0===G?null:{maxWidth:"number"==typeof G?`${G}px`:G},...I},...J,children:[L?s(i,{as:o.Arrow,size:Z}):null,ss||E?e("div",{className:"flex shrink-0 items-start gap-3",children:[e("div",{className:n("flex min-w-0 flex-1 flex-col",f[S]),children:[m(_)?s(o.Title,{className:n("m-0 font-semibold",v[S]),children:_}):null,m(z)?s(o.Description,{className:n("m-0 text-(--plass-muted-fg)",p[S]),children:z}):null]}),E?s(o.Close,{"aria-label":Q,className:O,children:s(r,{})}):null]}):null,m(k)?s("div",{className:"min-w-0",children:k}):null]})})})]})}
|
|
1
|
+
"use client";import{jsx as s,jsxs as e}from"react/jsx-runtime";import{useDefaults as l}from"../../internal/defaults.js";import{useLabels as a}from"../../internal/labels.js";import{Popover as o}from"@base-ui/react/popover";import{CloseIcon as r}from"../../internal/icons.js";import{PopupArrow as i}from"../../internal/picker.js";import{cx as n,focusRingClasses as t,glassClasses as d,hasContent as m,metaTextClasses as p,radiusClasses as c,sheetBodyClasses as u,sheetHeaderGapClasses as f,sheetPaddingXClasses as g,sheetPaddingYClasses as x,sheetSectionGapClasses as h,sheetTitleClasses as v,surfaceSlots as b,targetClasses as y}from"../../internal/styles.js";const w={xs:"max-w-56",sm:"max-w-64",md:"max-w-80",lg:"max-w-96",xl:"max-w-lg"},j=/* @__PURE__ */[d,"relative flex flex-col","border text-(--plass-fg) bg-(--plass-glass-press)","[border-color:var(--plass-glass-line)]","[box-shadow:var(--plass-shadow-3),var(--plass-gloss-glass)]","[outline:none]","[transition:opacity_var(--plass-duration)_var(--plass-ease)]","motion-reduce:[transition-duration:0ms]","data-[starting-style]:opacity-0 data-[ending-style]:opacity-0"].join(" "),N={xs:8,sm:9,md:10,lg:11,xl:12},O=/* @__PURE__ */[y,"flex size-[1.6em] shrink-0 cursor-pointer items-center justify-center p-0","rounded-full text-(--plass-muted-fg)","[&_svg]:size-[1.1em] [&_svg]:shrink-0","[transition:background-color_var(--plass-duration)_var(--plass-ease),color_var(--plass-duration)_var(--plass-ease)]","motion-reduce:[transition-duration:0ms]","hover:bg-(--p-soft) hover:text-(--plass-fg)",t].join(" ");export const PlPopoverClose=o.Close;export function PlPopover({size:t,color:d,density:y,trigger:P,title:_,description:z,children:k,side:C="bottom",align:T="center",sideOffset:A=6,alignOffset:D=0,arrow:L=!1,open:R,defaultOpen:W,onOpenChange:$,modal:q=!1,dismissible:B=!0,showClose:E=!1,closeLabel:F,width:G,className:H,style:I,...J}){const K=l(),M=a(),Q=F??M.close,S=t??K.size??"md",U=d??K.color??"primary",V=y??K.density??"default",X=g[V][S],Y=x[V][S],Z=N[S],ss=m(_)||m(z);return e(o.Root,{open:R,defaultOpen:W,modal:q,onOpenChange:(s,e)=>{B||s||"escape-key"!==e.reason&&"outside-press"!==e.reason&&"focus-out"!==e.reason?$?.(s):e.cancel()},children:[P?s(o.Trigger,{render:P}):null,s(o.Portal,{children:s(o.Positioner,{className:"plass-portal z-(--plass-z-portal) [outline:none]",side:C,align:T,sideOffset:A,alignOffset:D,children:e(o.Popup,{className:n(j,c[S],u[S],h[S],X,Y,void 0===G?w[S]:"",H),style:{...b(U,3),...void 0===G?null:{maxWidth:"number"==typeof G?`${G}px`:G},...I},...J,children:[L?s(i,{as:o.Arrow,size:Z}):null,ss||E?e("div",{className:"flex shrink-0 items-start gap-3",children:[e("div",{className:n("flex min-w-0 flex-1 flex-col",f[S]),children:[m(_)?s(o.Title,{className:n("m-0 font-semibold",v[S]),children:_}):null,m(z)?s(o.Description,{className:n("m-0 text-(--plass-muted-fg)",p[S]),children:z}):null]}),E?s(o.Close,{"aria-label":Q,className:O,children:s(r,{})}):null]}):null,m(k)?s("div",{className:"min-w-0",children:k}):null]})})})]})}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as e,jsxs as
|
|
1
|
+
"use client";import{jsx as e,jsxs as a}from"react/jsx-runtime";import*as l from"react";import{useDefaults as r,useLocale as s}from"../../internal/defaults.js";import{controlNaming as t}from"../../internal/form.js";import{Progress as i}from"@base-ui/react/progress";import{fillClasses as n,fillTransitionClasses as o,plateGapClasses as m,plateRadiusClasses as c,plateSizeClasses as f,progressAriaText as u,progressFraction as d,progressSlots as p,progressText as x,progressValue as h,trackClasses as b}from"../../internal/progress.js";import{cx as y,metaTextClasses as g,stackGapClasses as j}from"../../internal/styles.js";export const PlProgressBox=/* @__PURE__ */l.forwardRef(function PlProgressBox({size:l,color:w,count:N=4,value:v=null,min:M=0,max:P=100,label:V,showValue:k=!1,format:z,className:A,style:B,"aria-label":R,"aria-labelledby":T,...L},$){const q=r(),C=s(),D=l??q.size??"md",E=w??q.color??"primary",F=d(v,M,P),G=null===F,H=void 0!==z,I=Math.max(1,Math.floor(N));return a(i.Root,{ref:$,value:h(v,M,P),min:M,max:P,format:z,locale:C,getAriaValueText:u(F,H,C),className:y("inline-flex flex-col",j[D],A),style:{...p(E),...B},...t(R,T),...L,children:[V||k?a("div",{className:y("flex items-baseline gap-2",V?"justify-between":"justify-end",g[D]),children:[V?e(i.Label,{className:"min-w-0 truncate text-(--plass-fg)",children:V}):null,k?e(i.Value,{className:"shrink-0 tabular-nums text-(--plass-muted-fg)",children:e=>x(F,e,H,C)}):null]}):null,e(i.Track,{className:y("flex",m[D]),children:Array.from({length:I},(a,l)=>e("span",{className:y("relative overflow-hidden",b,f[D],c[D]),children:e("span",{"aria-hidden":"true",className:y("absolute inset-y-0 start-0",n,G?"plass-plate-wave w-full":o),style:G?{"--p-i":l}:{width:`${Math.min(100,Math.max(0,100*(F*I-l)))}%`}})},l))})]})});
|
|
@@ -1,8 +1,18 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { type PlassProgressProps } from '../../internal/progress.js';
|
|
3
3
|
export interface PlProgressCircularProps extends PlassProgressProps {
|
|
4
|
-
/**
|
|
4
|
+
/**
|
|
5
|
+
* Diameter of the ring, and the size of the text beside it. Sits just under
|
|
6
|
+
* the control ladder at every step. `diameter` overrides the ring's part.
|
|
7
|
+
*/
|
|
5
8
|
size?: PlassProgressProps['size'];
|
|
9
|
+
/**
|
|
10
|
+
* The ring's diameter in pixels, for a ring larger than the ladder goes: a
|
|
11
|
+
* loading screen rather than a row. It takes the place of `size`'s diameter
|
|
12
|
+
* and the stroke follows it; `size` still sets the gap and the text beside
|
|
13
|
+
* the ring. Anything but a finite number above zero is ignored.
|
|
14
|
+
*/
|
|
15
|
+
diameter?: number;
|
|
6
16
|
}
|
|
7
17
|
/**
|
|
8
18
|
* A ring that fills, and the one to reach for where there is no room for a bar
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as r,jsxs as
|
|
1
|
+
"use client";import{jsx as r,jsxs as e}from"react/jsx-runtime";import*as s from"react";import{useDefaults as a,useLocale as t}from"../../internal/defaults.js";import{controlNaming as l}from"../../internal/form.js";import{Progress as o}from"@base-ui/react/progress";import{progressAriaText as i,progressFraction as n,progressSlots as m,progressText as c,progressValue as d,ringMetrics as f}from"../../internal/progress.js";import{cx as u,gapClasses as p,metaTextClasses as h}from"../../internal/styles.js";export const PlProgressCircular=/* @__PURE__ */s.forwardRef(function PlProgressCircular({size:x,diameter:k,color:g,value:v=null,min:y=0,max:$=100,label:b,showValue:j=!1,format:w,className:N,style:P,"aria-label":C,"aria-labelledby":V,...z},D){const I=a(),L=t(),R=x??I.size??"md",W=g??I.color??"primary",_=n(v,y,$),A=null===_,B=void 0!==w,G=`${s.useId()}-fill`,{diameter:M,stroke:T}=f(R,k),q=M/2,E=q-T/2,F=2*Math.PI*E,H=A?`${.28*F} ${F}`:`${F}`,J=A?0:F*(1-_);return e(o.Root,{ref:D,value:d(v,y,$),min:y,max:$,format:w,locale:L,getAriaValueText:i(_,B,L),className:u("inline-flex items-center",p[R],h[R],N),style:{...m(W),...P},...l(C,V),...z,children:[e("svg",{className:u("shrink-0",A&&"plass-ring-spin"),width:M,height:M,viewBox:`0 0 ${M} ${M}`,fill:"none","aria-hidden":"true",children:[r("defs",{children:e("linearGradient",{id:G,x1:"0",y1:"0",x2:"1",y2:"1",children:[r("stop",{offset:"0%",stopColor:"var(--p-solid)"}),r("stop",{offset:"100%",stopColor:"var(--p-solid-to)"})]})}),r("circle",{cx:q,cy:q,r:E,stroke:"var(--plass-track)",strokeWidth:T}),r("circle",{cx:q,cy:q,r:E,stroke:`url(#${G})`,strokeWidth:T,strokeLinecap:"round",strokeDasharray:H,strokeDashoffset:J,transform:`rotate(-90 ${q} ${q})`,className:"[transition:stroke-dashoffset_var(--plass-duration-slow)_var(--plass-ease)] motion-reduce:[transition-duration:0ms]"})]}),b?r(o.Label,{className:"min-w-0 truncate text-(--plass-fg)",children:b}):null,j?r(o.Value,{className:"shrink-0 tabular-nums text-(--plass-muted-fg)",children:r=>c(_,r,B,L)}):null]})});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as e,jsxs as l}from"react/jsx-runtime";import*as
|
|
1
|
+
"use client";import{jsx as e,jsxs as l}from"react/jsx-runtime";import*as r from"react";import{useDefaults as a,useLocale as s}from"../../internal/defaults.js";import{controlNaming as t}from"../../internal/form.js";import{Progress as o}from"@base-ui/react/progress";import{barThicknessClasses as i,fillClasses as n,fillTransitionClasses as m,progressAriaText as u,progressFraction as f,progressSlots as c,progressText as d,progressValue as p,trackClasses as x}from"../../internal/progress.js";import{cx as b,metaTextClasses as g,stackGapClasses as j}from"../../internal/styles.js";export const PlProgressLinear=/* @__PURE__ */r.forwardRef(function PlProgressLinear({size:r,color:h,value:w=null,min:y=0,max:N=100,label:v,showValue:P=!1,format:L,className:V,style:k,"aria-label":z,"aria-labelledby":R,...T},A){const I=a(),$=s(),q=r??I.size??"md",B=h??I.color??"primary",C=f(w,y,N),D=null===C,E=void 0!==L;return l(o.Root,{ref:A,value:p(w,y,N),min:y,max:N,format:L,locale:$,getAriaValueText:u(C,E,$),className:b("flex w-full flex-col",j[q],V),style:{...c(B),...k},...t(z,R),...T,children:[v||P?l("div",{className:b("flex items-baseline gap-2",v?"justify-between":"justify-end",g[q]),children:[v?e(o.Label,{className:"min-w-0 truncate text-(--plass-fg)",children:v}):null,P?e(o.Value,{className:"shrink-0 tabular-nums text-(--plass-muted-fg)",children:e=>d(C,e,E,$)}):null]}):null,e(o.Track,{className:b("relative w-full overflow-hidden rounded-full",x,i[q]),children:e(o.Indicator,{className:b("rounded-full",n,D?"plass-progress-sweep":`absolute top-0 ${m}`)})})]})});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as e,jsxs as
|
|
1
|
+
"use client";import{jsx as e,jsxs as a}from"react/jsx-runtime";import*as r from"react";import{controlNaming as l,useDisabled as o,useLabelReference as s}from"../../internal/form.js";import{useDefaults as t}from"../../internal/defaults.js";import{Radio as i}from"@base-ui/react/radio";import{RadioGroup as n}from"@base-ui/react/radio-group";import{Field as d}from"@base-ui/react/field";import{controlSlots as c,cx as p,fieldDescriptionClasses as m,focusRingClasses as f,forcedCheckedClasses as b,forcedDisabledCheckedClasses as u,glassClasses as h,hasContent as x,metaTextClasses as g,tickDotClasses as y,tickRowTextClasses as v,tickSizeClasses as N,transitionClasses as j}from"../../internal/styles.js";const k=/* @__PURE__ */r.createContext({size:"md",color:"primary",readOnly:!1,disabled:!1}),R=/* @__PURE__ */["relative inline-flex shrink-0 items-center justify-center rounded-full border","[-webkit-tap-highlight-color:transparent] [touch-action:manipulation]","plass-fill [--p-fill-edge:1px]",j,f].join(" "),z=/* @__PURE__ */[h,"cursor-pointer bg-(--plass-glass) [border-color:var(--plass-border)]","hover:bg-(--plass-glass-hover) hover:[border-color:var(--p-line)]","data-[checked]:[--p-fill-on:1] data-[checked]:text-(--p-on-solid)","data-[checked]:[border-color:transparent] data-[checked]:hover:brightness-105",b].join(" "),w=/* @__PURE__ */[h,"cursor-default bg-(--plass-glass) [border-color:var(--plass-border)]","saturate-[0.55]","data-[checked]:[--p-fill-on:1] data-[checked]:text-(--p-on-solid)","data-[checked]:[border-color:transparent]",b].join(" "),O=/* @__PURE__ */[h,"cursor-not-allowed bg-(--plass-glass) [border-color:var(--plass-border)]","opacity-50 saturate-[0.35]","data-[checked]:[--p-fill-on:1] data-[checked]:text-(--p-on-solid)","data-[checked]:[border-color:transparent]",u].join(" "),P=/* @__PURE__ */["rounded-full bg-current","[transition-property:width,height]","[transition-duration:var(--plass-duration)]","[transition-timing-function:var(--plass-ease)]","motion-reduce:[transition-duration:0ms]"].join(" ");export const PlRadio=/* @__PURE__ */r.forwardRef(function PlRadio({label:l,description:o,disabled:t=!1,className:n,style:c,"aria-label":p,"aria-labelledby":m,...f},b){const u=r.useContext(k),h=s(p,m),x=f.readOnly??u.readOnly,j=t||u.disabled;return a(d.Root,{disabled:t,className:["flex flex-col",n??""].filter(Boolean).join(" "),style:c,children:[a("div",{className:`flex items-start gap-2 ${v[u.size]}`,children:[e("span",{className:"flex h-[1lh] shrink-0 items-center",children:e(i.Root,{ref:b,className:[R,N[u.size],j?O:x?w:z].join(" "),disabled:t,"aria-label":p,"aria-labelledby":h.labelledBy,...f,children:e(i.Indicator,{keepMounted:!0,className:`${P} ${y[u.size]}`})})}),l||o?a("span",{className:"flex min-w-0 flex-col gap-0.5",children:[l?e(d.Label,{className:j?"text-(--plass-muted-fg)":"cursor-pointer text-(--plass-fg)",children:l}):null,o?e(d.Description,{className:`m-0 ${g[u.size]} text-(--plass-muted-fg)`,children:o}):null]}):null]}),h.node]})});export const PlRadioGroup=/* @__PURE__ */r.forwardRef(function PlRadioGroup({size:s,color:i,orientation:f="vertical",label:b,description:u,error:h,invalid:y,disabled:v=!1,readOnly:N=!1,className:j,classNames:R,style:z,children:w,"aria-label":O,"aria-labelledby":P,...$},B){const G=t(),C=o(v),D=s??G.size??"md",L=i??G.color??"primary",M=x(h),E=y??M,I=E?"danger":L,q=r.useMemo(()=>({size:D,color:I,readOnly:N,disabled:C}),[D,I,N,C]);return e(k.Provider,{value:q,children:a(d.Root,{disabled:C,invalid:E,className:["flex flex-col gap-1.5",j??""].filter(Boolean).join(" "),style:{...c(I,0,"solid"),...z},children:[b?e(d.Label,{className:p(g[D],"font-semibold",C?"text-(--plass-muted-fg)":"text-(--plass-fg)",R?.label),children:b}):null,u?e(d.Description,{className:p(m(D),R?.description),children:u}):null,e(n,{ref:B,disabled:C,readOnly:N,className:p("flex","horizontal"===f?"flex-row flex-wrap gap-x-5 gap-y-2":"flex-col gap-2",R?.control),...l(O,P),...$,children:w}),e(d.Error,M?{match:!0,className:p(g[D],"text-(--p-accent)",R?.error),children:h}:{className:p(g[D],"text-(--p-accent)",R?.error)})]})})});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as e,jsxs as r}from"react/jsx-runtime";import*as a from"react";import{CartesianChart as t,markTransitionClasses as l}from"../../internal/chart-frame.js";import{bubbleRadius as i,compactNumber as s,dimmedByHover as o,formatCategory as n,markerRadii as c,markGap as u,markPath as d,markShapes as m,
|
|
1
|
+
"use client";import{jsx as e,jsxs as r}from"react/jsx-runtime";import*as a from"react";import{CartesianChart as t,markTransitionClasses as l}from"../../internal/chart-frame.js";import{bubbleRadius as i,compactNumber as s,dimmedByHover as o,formatCategory as n,markerRadii as c,markGap as u,markPath as d,markShapes as m,pointX as h,seriesColor as x,toValues as p,writeChartValue as f}from"../../internal/chart.js";import{useDefaults as b,useLocale as v}from"../../internal/defaults.js";import{cx as y,srOnlyClasses as k}from"../../internal/styles.js";import{textOf as z}from"../../internal/text.js";function writeX(e,r,a,t){return"number"!=typeof e?n(e,t):a?z(a(e,r)):s(e,t)}export function PlScatterChart({shape:r="auto",pointRadius:l,maxRadius:s,series:o,categories:n,size:u,xAxis:y,...k}){const z=b(),g=u??z.size??"md",j=v(k.locale),M=k.format,w=l??c[g],F=a.useMemo(()=>p(o),[o]),S=a.useMemo(()=>o.map((e,r)=>x(e,r)),[o]),$=a.useCallback(e=>s??Math.max(w+2,e/12),[s,w]),C=o.reduce((e,r)=>r.color?e:e+1,0),N="auto"===r||"varied"===r?"circle":r,E="varied"===r||"auto"===r&&C>3,L=a.useCallback(e=>E?m[e%m.length]:N,[E,N]),A=a.useCallback(e=>{const r=[];let a=0;return e.values.forEach(e=>{e.forEach(e=>{null!==e.value&&void 0!==e.z&&Number.isFinite(e.z)&&(a=Math.max(a,e.z))})}),e.values.forEach((t,l)=>{e.visible[l]&&t.forEach((t,s)=>{if(null===t.value)return;const o=h(t,s,n);null!==o&&r.push({series:l,index:s,x:e.categoryValuePx(o),y:e.valuePx(t.value),r:void 0===t.z?w:i(t.z,a,$(e.height),2)})})}),r},[n,w,$]),B=a.useCallback(e=>{const r=F[e.series]?.[e.index];if(!r||null===r.value)return null;const a=[{seriesIndex:e.series,name:o[e.series]?.name,color:r.color??S[e.series],value:r.value,formatted:f(r.value,M,j),label:r.label,aside:void 0===r.z?void 0:f(r.z,M,j)}];return{heading:writeX(r.x??n?.[e.index]??e.index,e.index,y?.tickFormat,j),items:a}},[F,o,S,n,y?.tickFormat,M,j]);return e(t,{...k,series:o,categories:n,size:g,xScale:"value",xAxis:y,marks:A,markTooltip:B,markInset:$,includeZero:!1,swatch:(r,a)=>e("svg",{viewBox:"0 0 10 10",className:"size-2.5 overflow-visible","aria-hidden":"true",children:e("path",{d:d(L(r),5,5,4),fill:a})}),table:(r,a)=>e(ScatterTable,{id:r,...a,series:o,categories:n,xLabel:y?.label,yLabel:k.yAxis?.label,xFormat:y?.tickFormat,locale:j,format:M}),children:r=>e(ScatterMarks,{context:r,shapeOf:L})})}function ScatterMarks({context:r,shapeOf:t}){const{marks:i,values:s,colors:n,visible:c,hovered:m,activeMark:h}=r,x=a.useMemo(()=>[...i].sort((e,r)=>r.r-e.r),[i]);return e("g",{children:x.map(r=>{const a=s[r.series]?.[r.index],i=o(m,r.series,c),x=h?.series===r.series&&h?.index===r.index;return e("path",{d:d(t(r.series),r.x,r.y,r.r),fill:a?.color??n[r.series],stroke:"var(--plass-chart-gap)",strokeWidth:u,opacity:i?.28:1,className:l,style:{transformBox:"view-box",transformOrigin:`${r.x}px ${r.y}px`,scale:x&&r.r>0?(r.r+1)/r.r:1}},`${r.series}-${r.index}`)})})}function ScatterTable({id:a,caption:t,labelledBy:l,series:i,categories:s,xLabel:o,yLabel:n,xFormat:c,locale:u,format:d}){const m=i.some(e=>e.data.some(e=>"object"==typeof e&&null!==e&&void 0!==e.z));return r("table",{id:a,className:y(k),"aria-labelledby":l,children:[t?e("caption",{children:t}):null,e("thead",{children:r("tr",{children:[e("th",{scope:"col"}),e("th",{scope:"col",children:o??"x"}),e("th",{scope:"col",children:n??"y"}),m?e("th",{scope:"col",children:"z"}):null]})}),e("tbody",{children:i.flatMap((a,t)=>a.data.map((l,i)=>{const o="object"==typeof l&&null!==l?l:null,n=o?o.y:"number"==typeof l?l:null,h=o?.x??s?.[i]??i;return r("tr",{children:[e("th",{scope:"row",children:a.name??t+1}),e("td",{children:writeX(h,i,c,u)}),e("td",{children:void 0!==o?.label?o.label:null!==n&&Number.isFinite(n)?f(n,d,u):""}),m?e("td",{children:void 0===o?.z?"":f(o.z,d,u)}):null]},`${t}-${i}`)}))})]})}
|
|
@@ -48,6 +48,8 @@ export type PlScrollZoneMode = 'item' | 'page' | 'hold';
|
|
|
48
48
|
*/
|
|
49
49
|
export type PlScrollZoneButtonPlacement = 'inline' | 'overlay';
|
|
50
50
|
export interface PlScrollZoneProps extends PlassStyleProps, Omit<React.ComponentPropsWithoutRef<'div'>, 'color'> {
|
|
51
|
+
/** @default 'glass' */
|
|
52
|
+
variant?: PlassStyleProps['variant'];
|
|
51
53
|
/**
|
|
52
54
|
* Which way the children run, and therefore which way the zone scrolls.
|
|
53
55
|
* @default 'horizontal'
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as e,jsxs as t}from"react/jsx-runtime";import*as n from"react";import{useDefaults as r}from"../../internal/defaults.js";import{useLabels as o}from"../../internal/labels.js";import{takeSelection as i}from"../../internal/drag.js";import{PlIconButton as
|
|
1
|
+
"use client";import{jsx as e,jsxs as t}from"react/jsx-runtime";import*as n from"react";import{useDefaults as r}from"../../internal/defaults.js";import{useLabels as o}from"../../internal/labels.js";import{takeSelection as i}from"../../internal/drag.js";import{PlIconButton as l}from"../icon-button/PlIconButton.js";import{spacingValue as s}from"../../internal/grid.js";import{ChevronIcon as a}from"../../internal/icons.js";import{layoutBox as c}from"../../internal/layout-box.js";import{cx as u}from"../../internal/styles.js";import{useResponsiveValue as d}from"../../internal/responsive.js";import{overscrollClasses as f,useWheelScroll as p}from"../../internal/wheel.js";const m={xs:"p-1",sm:"p-1.5",md:"p-2",lg:"p-3",xl:"p-4"},v={xs:"gap-1",sm:"gap-1.5",md:"gap-2",lg:"gap-3",xl:"gap-4"};export const PlScrollZone=/* @__PURE__ */n.forwardRef(function PlScrollZone({orientation:w,lines:b=1,spacing:g=2,buttons:h="auto",buttonPlacement:x="inline",mode:y="item",step:k=1,speed:L=900,snap:E=!1,drag:j=!0,wheel:C=!0,overscroll:R="contain",scrollbar:B=!1,variant:P="glass",size:M,color:N,density:T,label:z,previousLabel:A,nextLabel:D,className:S,style:H,children:F,...I},W){const $=d(w,"horizontal"),q=r(),O=o(),X=A??O.previous,Y=D??O.next,Z=M??q.size??"md",_=N??q.color??"primary",K=T??q.density??"default",G="horizontal"===$,J=Math.max(1,Math.round(b)),Q=Math.max(1,Math.round(k)),U=n.useRef(null),V=n.useRef(null),[ee,te]=n.useState({back:!1,forward:!1}),ne=n.useCallback(()=>{const e=U.current;if(!e)return;const t=G?e.clientWidth:e.clientHeight,n=G?e.scrollWidth:e.scrollHeight,r=Math.abs(G?e.scrollLeft:e.scrollTop);te(e=>{const o=r>1,i=n-t-r>1;return e.back===o&&e.forward===i?e:{back:o,forward:i}})},[G]);n.useEffect(()=>{const e=U.current,t=V.current;if(!e)return;if(ne(),"undefined"==typeof ResizeObserver)return;const n=new ResizeObserver(ne);return n.observe(e),t&&n.observe(t),()=>n.disconnect()},[ne]);const re=n.useCallback(()=>{const e=U.current;return e&&G&&"rtl"===getComputedStyle(e).direction?-1:1},[G]),oe=n.useCallback((e,t)=>{const n=U.current;if(!n)return;const r=t?function scrollBehavior(){return"undefined"!=typeof window&&window.matchMedia?.("(prefers-reduced-motion: reduce)").matches?"instant":"smooth"}():"instant";n.scrollBy(G?{left:e,behavior:r}:{top:e,behavior:r})},[G]);p(U,{enabled:C&&G,overflows:ee.back||ee.forward,overscroll:R});const ie=n.useCallback(()=>{const e=U.current,t=V.current;if(!e||!t)return[];const n=G&&"rtl"===getComputedStyle(e).direction,r=G?n?"right":"left":"top",o=n?-1:1,i=e.getBoundingClientRect()[r],{perPixel:l}=c(e,G),s=[];for(const e of Array.from(t.children)){const t=Math.round((e.getBoundingClientRect()[r]-i)*o*l);s.includes(t)||s.push(t)}return s.sort((e,t)=>e-t)},[G]),le=n.useCallback((e,t=y)=>{const n=U.current;if(!n)return;const r=re(),o=G?n.clientWidth:n.clientHeight;if("page"===t)return void oe(o*(e?1:-1)*r,!0);const i=ie(),l=i.filter(e=>e>1),s=i.filter(e=>e<-1),a=e?l[Q-1]:s[s.length-Q];oe(void 0!==a?a*r:o*(e?1:-1)*r,!0)},[re,G,ie,Q,y,oe]),se=n.useRef(null);n.useEffect(()=>()=>se.current?.(),[]);const ae=n.useCallback((e,t)=>{if(se.current)return;const n=re(),r=performance.now();let o=r,i=0;const tick=t=>{const r=t-o;o=t,oe(L*r/1e3*(e?1:-1)*n,!1),i=requestAnimationFrame(tick)};i=requestAnimationFrame(tick);const release=()=>{cancelAnimationFrame(i),se.current=null,window.removeEventListener(t,release),window.removeEventListener("pointercancel",release),window.removeEventListener("blur",release),performance.now()-r<140&&le(e,"item")};se.current=release,window.addEventListener(t,release),window.addEventListener("pointercancel",release),window.addEventListener("blur",release)},[le,re,oe,L]),ce=n.useRef(null);function pressHandlers(e){return"hold"!==y?{onClick:()=>le(e)}:{onPointerDown:t=>{0===t.button&&ae(e,"pointerup")},onKeyDown:t=>{"Enter"!==t.key&&" "!==t.key||(t.preventDefault(),ae(e,"keyup"))}}}n.useEffect(()=>()=>ce.current?.(),[]);const ue="none"!==h&&("always"===h||ee.back||ee.forward),de="inline"===x;function scrollButton(t){const n=t?ee.forward:ee.back;if("auto"===h&&!n&&!de)return e("span",{});const r=e(l,{variant:P,size:Z,color:_,density:K,elevation:1,label:t?Y:X,disabled:!n,className:"pointer-events-auto",icon:e("span",{className:u("flex items-center",G?t?"-rotate-90 rtl:rotate-90":"rotate-90 rtl:-rotate-90":t?"":"rotate-180"),children:e(a,{})}),...pressHandlers(t)});return de?e("span",{className:"flex shrink-0 items-center justify-center",children:r}):r}return t("div",{ref:W,className:u("relative flex min-w-0",de&&G?"flex-row items-stretch":"flex-col",de?v[Z]:"",S),style:{"--p-ring":`var(--plass-${_}-ring)`,...H},...I,children:[ue&&de?scrollButton(!1):null,e("div",{ref:U,tabIndex:ee.back||ee.forward?0:void 0,role:z?"group":void 0,"aria-label":z,className:u("min-h-0 min-w-0 grow",G?"overflow-x-auto overflow-y-hidden":"overflow-y-auto overflow-x-hidden",f(R,G),E?G?"snap-x snap-mandatory":"snap-y snap-mandatory":"",B?"":"[scrollbar-width:none] [&::-webkit-scrollbar]:hidden",j&&(ee.back||ee.forward)?"cursor-grab data-[dragging]:cursor-grabbing":"","focus-visible:[outline:2px_solid_var(--p-ring)] focus-visible:[outline-offset:-2px]"),onScroll:ne,onPointerDown:function beginDrag(e){if(!j||"touch"===e.pointerType||0!==e.button)return;ce.current?.();const t=e.currentTarget,n=e.clientX,r=e.clientY,o=t.scrollLeft,l=t.scrollTop;let s=!1,a=1,u=null;const move=e=>{if(0===e.buttons)return void end();const d=e.clientX-n,f=e.clientY-r;if(!s){if(Math.abs(G?d:f)<4)return;s=!0,a=c(t,G).perPixel,t.setPointerCapture(e.pointerId),t.dataset.dragging="true",u=i()}G?t.scrollLeft=o-d*a:t.scrollTop=l-f*a},release=()=>{ce.current=null,t.removeEventListener("pointermove",move),t.removeEventListener("pointerup",end),t.removeEventListener("pointercancel",release),delete t.dataset.dragging,u?.(),u=null},end=()=>{const e=s;if(release(),!e)return;const swallow=e=>{e.stopPropagation(),e.preventDefault()};t.addEventListener("click",swallow,{capture:!0,once:!0}),window.setTimeout(()=>t.removeEventListener("click",swallow,!0),0)};ce.current=release,t.addEventListener("pointermove",move),t.addEventListener("pointerup",end),t.addEventListener("pointercancel",release)},children:e("div",{ref:V,className:u(E?"[&>*]:snap-start":""),style:{display:"grid",gap:s(g),gridAutoFlow:G?"column":"row",...G?{width:"max-content",gridTemplateRows:`repeat(${J}, auto)`,gridAutoColumns:"max-content"}:{gridTemplateColumns:`repeat(${J}, minmax(0, 1fr))`,gridAutoRows:"max-content"}},children:F})}),ue&&de?scrollButton(!0):null,ue&&!de?t("div",{className:u("pointer-events-none absolute inset-0 flex justify-between",G?"items-center":"flex-col items-center",m[Z]),children:[scrollButton(!1),scrollButton(!0)]}):null]})});
|
|
@@ -33,7 +33,12 @@ export interface PlSegmentedButtonProps extends Omit<PlassStyleProps, 'variant'>
|
|
|
33
33
|
readOnly?: boolean;
|
|
34
34
|
/** Identifies the value when a form is submitted. */
|
|
35
35
|
name?: string;
|
|
36
|
-
/**
|
|
36
|
+
/**
|
|
37
|
+
* The segments share the full width, an equal part each. A segment whose
|
|
38
|
+
* label needs more than its part keeps the width it needs, and the others
|
|
39
|
+
* share the rest. Labels that together need more than the row end in an
|
|
40
|
+
* ellipsis.
|
|
41
|
+
*/
|
|
37
42
|
fullWidth?: boolean;
|
|
38
43
|
children?: React.ReactNode;
|
|
39
44
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as e,jsxs as t}from"react/jsx-runtime";import*as
|
|
1
|
+
"use client";import{jsx as e,jsxs as t}from"react/jsx-runtime";import*as a from"react";import{useCommitChange as s}from"../../internal/commit-change.js";import{controlNaming as l,useDisabled as r}from"../../internal/form.js";import{glowPointerMove as n}from"../../internal/glow.js";import{useDefaults as o}from"../../internal/defaults.js";import{Radio as i}from"@base-ui/react/radio";import{RadioGroup as d}from"@base-ui/react/radio-group";import{controlHeightClasses as c,controlSlots as u,controlTextClasses as p,focusRingInsetClasses as f,forcedCheckedTextClasses as h,forcedFieldEdgeClasses as m,forcedFillClasses as g,gapClasses as v,glassClasses as b,hasContent as y,iconClasses as x,paddingXClasses as w,transitionClasses as k}from"../../internal/styles.js";const j=/* @__PURE__ */a.createContext({variant:"glass",size:"md",density:"default",fullWidth:!1,overfull:!1,disabled:!1,readOnly:!1}),R={solid:`${b} bg-(--plass-glass-press) p-1 [box-shadow:var(--p-elev),var(--plass-well)] ${m}`,glass:`${b} border bg-(--plass-glass) p-1 [border-color:var(--plass-glass-line)] [box-shadow:var(--p-elev),var(--plass-well)]`,ghost:""},P={solid:"plass-fill data-[placed]:[--p-fill-on:1] [box-shadow:var(--plass-shadow-1),var(--p-lift)]",glass:`${b} bg-(--plass-glass-press) [box-shadow:var(--plass-shadow-1),var(--plass-gloss-glass)]`,ghost:`${b} bg-(--plass-glass-press) [box-shadow:var(--plass-shadow-1),var(--plass-gloss-glass)]`},S={solid:"data-[checked]:text-(--p-on-solid)",glass:"data-[checked]:text-(--p-accent)",ghost:"data-[checked]:text-(--p-accent)"};export const PlSegment=/* @__PURE__ */a.forwardRef(function PlSegment({value:s,startIcon:l,endIcon:o,disabled:d=!1,className:u,children:m,onPointerMove:g,...b},R){const{variant:P,size:A,density:C,fullWidth:$,overfull:N,disabled:W,readOnly:z}=a.useContext(j),O=r(d),B=!O&&!W&&!z;return t(i.Root,{ref:R,value:s,disabled:O,"data-segment":"",className:["relative z-10 inline-flex cursor-pointer items-center justify-center select-none","font-semibold whitespace-nowrap","[-webkit-tap-highlight-color:transparent] [touch-action:manipulation]",c[A],p[A],v[A],w[C][A],"rounded-full",k,x,B?"plass-glow":"","not-data-[checked]:[--p-glow:var(--p-soft)]","not-data-[checked]:[--p-flash:var(--p-soft-hover)]","text-(--plass-muted-fg) not-data-[checked]:not-data-[disabled]:not-data-[readonly]:hover:text-(--plass-fg)",S[P],h,f,"data-[disabled]:cursor-not-allowed",W?"":"data-[disabled]:opacity-50","data-[readonly]:cursor-default",$?N?"min-w-0 flex-[1_1_auto]":"flex-1 shrink-0":"shrink-0",u??""].filter(Boolean).join(" "),onPointerMove:n(B,g),...b,children:[y(l)?e("span",{className:"flex h-[1lh] shrink-0 items-center",children:l}):null,$?e("span",{"data-segment-label":"",className:"min-w-0 truncate",children:m}):m,y(o)?e("span",{className:"flex h-[1lh] shrink-0 items-center",children:o}):null]})});export const PlSegmentedButton=/* @__PURE__ */a.forwardRef(function PlSegmentedButton({variant:n="glass",size:i,color:c,density:p,elevation:f=0,value:h,defaultValue:m=null,onValueChange:v,disabled:b=!1,readOnly:y=!1,name:x,fullWidth:w=!1,className:S,style:A,children:C,"aria-label":$,"aria-labelledby":N,...W},z){const O=o(),B=r(b),F=i??O.size??"md",q=c??O.color??"primary",E=p??O.density??"default",[M,V]=a.useState(m),I=void 0!==h,L=I?h:M,_=a.useRef(null),G=a.useRef(null),[H,T]=a.useState(!1),D=a.useCallback(()=>{const e=_.current;if(!e||!w)return void T(!1);const t=getComputedStyle(e),a=e.clientWidth-parseFloat(t.paddingLeft)-parseFloat(t.paddingRight);let s=0;e.querySelectorAll("[data-segment]").forEach(e=>{const t=e.querySelector("[data-segment-label]");s+=e.getBoundingClientRect().width+(t?Math.max(0,t.scrollWidth-t.clientWidth):0)}),T(s>a+1)},[w]),J=a.useRef(!1);a.useEffect(()=>{J.current=!0},[]);const K=a.useRef(0),Q=a.useCallback(e=>{G.current=e,e&&!J.current&&e.setAttribute("data-placed","")},[]),U=a.useCallback(e=>{const t=_.current,a=G.current;if(!t||!a)return;const s=t.querySelector("[data-segment][data-checked]");if(!s)return;const l=s.offsetLeft,r=s.offsetTop,n=s.offsetWidth,o=s.offsetHeight,i=!e||!a.hasAttribute("data-ready");i&&(cancelAnimationFrame(K.current),a.removeAttribute("data-ready")),a.style.setProperty("--p-seg-x",`${l}px`),a.style.setProperty("--p-seg-y",`${r}px`),a.style.setProperty("--p-seg-w",`${n}px`),a.style.setProperty("--p-seg-h",`${o}px`),a.setAttribute("data-placed",""),i&&(K.current=requestAnimationFrame(()=>{a.setAttribute("data-ready","")}))},[]);a.useEffect(()=>()=>cancelAnimationFrame(K.current),[]),s(_,[L,n,F,E,w],()=>{D(),U(!0)},G),a.useEffect(()=>{const e=_.current;if(!e)return;const t=new ResizeObserver(()=>{D(),U(!1)});return t.observe(e),()=>t.disconnect()},[D,U]);const X=a.useMemo(()=>({variant:n,size:F,density:E,fullWidth:w,overfull:H,disabled:B,readOnly:y}),[n,F,E,w,H,B,y]);return e(j.Provider,{value:X,children:t(d,{ref:e=>{_.current=e,"function"==typeof z?z(e):z&&(z.current=e)},value:L,onValueChange:e=>{const t=e??null;I||V(t),v?.(t)},disabled:B,readOnly:y,name:x,className:["relative inline-flex items-center rounded-full",R[n],k,y?"saturate-[0.55]":"",B?"opacity-50 saturate-[0.35]":"",w?"flex w-full":"",S??""].filter(Boolean).join(" "),style:{...u(q,f,n),...A},...l($,N),...W,children:[null!=L?e("span",{ref:Q,"aria-hidden":"true",className:["pointer-events-none absolute rounded-full","top-(--p-seg-y) left-(--p-seg-x) h-(--p-seg-h) w-(--p-seg-w)",P[n],g,"[transition-property:left,top,width,height]","[transition-timing-function:var(--plass-ease)]","[transition-duration:0ms] motion-safe:data-[ready]:[transition-duration:var(--plass-duration)]"].join(" ")}):null,C]})})});
|
|
@@ -19,6 +19,8 @@ export interface PlSelectOption {
|
|
|
19
19
|
disabled?: boolean;
|
|
20
20
|
}
|
|
21
21
|
export interface PlSelectProps extends PlassStyleProps, Omit<React.ComponentPropsWithoutRef<'div'>, 'color' | 'defaultValue' | 'children'> {
|
|
22
|
+
/** @default 'glass' */
|
|
23
|
+
variant?: PlassStyleProps['variant'];
|
|
22
24
|
/** Classes on the parts a `className` does not reach. */
|
|
23
25
|
classNames?: PlassFieldClassNames;
|
|
24
26
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as e,jsxs as a}from"react/jsx-runtime";import*as
|
|
1
|
+
"use client";import{jsx as e,jsxs as a}from"react/jsx-runtime";import*as l from"react";import{controlNaming as t,useDisabled as s}from"../../internal/form.js";import{useDefaults as r}from"../../internal/defaults.js";import{Select as n}from"@base-ui/react/select";import{Field as o}from"@base-ui/react/field";import{CheckIcon as i,ChevronIcon as c}from"../../internal/icons.js";import{WidthSizer as d}from"../../internal/sizer.js";import{textOf as m}from"../../internal/text.js";import{glowPointerMove as p}from"../../internal/glow.js";import{FieldNotch as u,floatControlClassName as f,floatPlaceholderClassName as h,notchShellStyle as g,resolveNotch as v}from"../../internal/notch.js";import{hotKeyHandler as b}from"../../internal/keys.js";import{controlHeightClasses as x,controlTextLeadingClasses as y,cx as j,disabledClasses as N,fieldDescriptionClasses as w,fieldReadOnlyClasses as P,fieldRestClasses as S,fieldSlots as z,focusWithinRingClasses as I,forcedHighlightedClasses as O,gapClasses as V,glassClasses as k,hasContent as M,iconClasses as R,metaTextClasses as $,paddingXClasses as _,radiusClasses as C,stackGapClasses as D,surfaceSlots as E,transitionClasses as T}from"../../internal/styles.js";const q=/* @__PURE__ */["group relative flex w-full cursor-pointer items-center select-none p-0","[-webkit-tap-highlight-color:transparent] [touch-action:manipulation]",T,R].join(" "),B=I,K=/* @__PURE__ */[k,"max-h-[min(20rem,var(--available-height))] overflow-y-auto overscroll-contain","min-w-[var(--anchor-width)] border bg-(--plass-glass-press) p-1","[border-color:var(--plass-glass-line)]","[box-shadow:var(--plass-shadow-3),var(--plass-gloss-glass)]","[outline:none]","[transition:opacity_var(--plass-duration)_var(--plass-ease)]","motion-reduce:[transition-duration:0ms]","data-[starting-style]:opacity-0 data-[ending-style]:opacity-0"].join(" "),W=/* @__PURE__ */["relative flex cursor-pointer items-center gap-2 select-none","rounded-(--plass-radius-xs) py-1.5 pe-2 ps-7",T,"data-[highlighted]:bg-(--p-soft-hover) data-[highlighted]:text-(--p-accent)",O,"data-[selected]:font-semibold data-[selected]:text-(--p-accent)","data-[disabled]:cursor-not-allowed data-[disabled]:opacity-50","[outline:none]"].join(" ");export const PlSelect=/* @__PURE__ */l.forwardRef(function PlSelect({variant:I="glass",size:O,color:k,density:R,elevation:T=0,items:L,value:A,defaultValue:F,onValueChange:G,placeholder:H,label:J,labelPlacement:Q,description:U,error:X,invalid:Y,startIcon:Z,fullWidth:ee=!1,disabled:ae=!1,readOnly:le=!1,required:te=!1,name:se,id:re,className:ne,hotKeys:oe,classNames:ie,style:ce,"aria-label":de,"aria-labelledby":me,...pe},ue){const fe=r(),he=s(ae),ge=O??fe.size??"md",ve=k??fe.color??"primary",be=R??fe.density??"default",xe=Q??fe.labelPlacement??"top",{notched:ye,float:je}=v(xe,J,M(Z)),Ne=M(X),we=Y??Ne,Pe=we?"danger":ve,Se=!he&&!le,ze=l.useMemo(()=>L.map(e=>({label:e.label??String(e.value),value:e.value})),[L]),[Ie,Oe]=l.useState(!1);l.useEffect(()=>{le&&Oe(!1)},[le]);const Ve=l.useRef(null),ke=je?m(J):"",Me=l.useMemo(()=>ee?[]:[...L.map(e=>e.label??String(e.value)),H].map(m).concat(ke).filter(e=>""!==e),[ee,L,H,ke]),Re=e(o.Label,{className:j($[ge],"font-semibold",he?"text-(--plass-muted-fg)":"text-(--plass-fg)",ie?.label),children:J});return a(o.Root,{disabled:he,invalid:we,className:["flex-col align-top",D[ge],ee?"flex w-full":"inline-flex",ne??""].filter(Boolean).join(" "),style:{...z(Pe,T),...ce},...pe,children:[M(J)&&!ye?Re:null,a(n.Root,{id:re,name:se,items:ze,value:A,defaultValue:F,onValueChange:e=>G?.(e),disabled:he,readOnly:le,required:te,open:Ie&&!le,onOpenChange:(e,a)=>Oe(e&&!le&&a.event!==Ve.current),children:[e(u,{notched:ye,size:ge,density:be,variant:I,disabled:he,readOnly:le,float:je,label:Re,children:a(n.Trigger,{ref:ue,...t(de,me),onKeyDown:b(oe,void 0),onMouseDown:e=>{Ve.current=le?e.nativeEvent:null},onPointerMove:p(Se),style:ye?g:void 0,className:[q,ye?"":B,x[ge],y[ge],C[ge],V[ge],_[be][ge],he?N[I]:le?`${P[I]} cursor-default`:S[I],Se?"plass-glow":"",je?f:"",ie?.control].filter(Boolean).join(" "),children:[Z?e("span",{className:"flex h-[1lh] shrink-0 items-center text-(--plass-muted-fg)",children:Z}):null,a("span",{className:"flex min-w-0 flex-1 flex-col",children:[e(n.Value,{className:["w-full truncate text-start","data-[placeholder]:text-(--plass-muted-fg)",je?h:""].join(" "),placeholder:H}),e(d,{samples:Me})]}),e(n.Icon,{className:["flex h-[1lh] shrink-0 items-center text-(--plass-muted-fg)","[transition:rotate_var(--plass-duration)_var(--plass-ease)]","motion-reduce:[transition-duration:0ms]","data-[popup-open]:rotate-180"].join(" "),children:e(c,{})})]})}),e(n.Portal,{children:e(n.Positioner,{className:"plass-portal z-(--plass-z-portal) [outline:none]",sideOffset:6,alignItemWithTrigger:!1,children:e(n.Popup,{className:`${K} ${C[ge]} ${y[ge]}`,style:E(Pe,3),children:L.map(l=>a(n.Item,{value:l.value,disabled:l.disabled,className:W,children:[e(n.ItemIndicator,{className:"absolute start-1.5 flex size-4 items-center justify-center",children:e(i,{})}),e(n.ItemText,{className:"truncate",children:l.label??String(l.value)})]},String(l.value)))})})})]}),U?e(o.Description,{className:j(w(ge),ie?.description),children:U}):null,e(o.Error,Ne?{match:!0,className:j($[ge],"text-(--p-accent)",ie?.error),children:X}:{className:j($[ge],"text-(--p-accent)",ie?.error)})]})});
|
|
@@ -62,6 +62,18 @@ export interface PlSidebarProps extends Omit<React.ComponentPropsWithoutRef<'asi
|
|
|
62
62
|
/** Which state it starts in, for an uncontrolled standalone sidebar. @default false */
|
|
63
63
|
defaultOpen?: boolean;
|
|
64
64
|
onOpenChange?: (open: boolean) => void;
|
|
65
|
+
/**
|
|
66
|
+
* Keeps the children in the document once the sidebar has collapsed into a
|
|
67
|
+
* drawer that is closed, hidden and out of reach, as `PlDrawer`'s own
|
|
68
|
+
* `keepMounted` does.
|
|
69
|
+
*
|
|
70
|
+
* For a sidebar that is the site's navigation. Below `collapseBelow` a closed
|
|
71
|
+
* drawer is otherwise not in the document, and neither are its links — and
|
|
72
|
+
* that is the width a search engine reads a page at. Above it nothing
|
|
73
|
+
* changes, because the column is always there.
|
|
74
|
+
* @default false
|
|
75
|
+
*/
|
|
76
|
+
keepMounted?: boolean;
|
|
65
77
|
/**
|
|
66
78
|
* Whether the column holds its place while the page scrolls past it.
|
|
67
79
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as e,jsxs as t}from"react/jsx-runtime";import*as r from"react";import{useDefaults as n}from"../../internal/defaults.js";import{
|
|
1
|
+
"use client";import{jsx as e,jsxs as t}from"react/jsx-runtime";import*as r from"react";import{useDefaults as n}from"../../internal/defaults.js";import{useDocumentDirection as o}from"../../internal/direction.js";import{useLabels as i}from"../../internal/labels.js";import{beginPointerDrag as a}from"../../internal/drag.js";import{layoutBox as s}from"../../internal/layout-box.js";import{lazyPart as l}from"../../internal/lazy.js";import{drawerSide as u,expandedOnlyClasses as d,PlPageLayoutContext as c,PlassSidebarSideContext as p,useCollapsed as m}from"../../internal/page-layout.js";import{cx as f,sheetPaddingXClasses as b,sheetPaddingYClasses as x,sheetRestClasses as y,surfaceSlots as h,toLength as v,transitionClasses as w}from"../../internal/styles.js";const g={xs:"11rem",sm:"13rem",md:"16rem",lg:"18rem",xl:"21rem"},z=y,j=/* @__PURE__ */l(()=>import("../drawer/PlDrawer.js").then(e=>e.PlDrawer));function toPixels(e,t){if(null==e)return t;if("number"==typeof e)return e;const r=/^\s*(-?[\d.]+)\s*(px|rem|em|%)\s*$/.exec(e);if(!r)return t;const n=Number(r[1]);if(Number.isNaN(n))return t;switch(r[2]){case"px":return n;case"%":return"undefined"==typeof window?t:window.innerWidth*n/100;default:return n*parseFloat(("undefined"==typeof document?"":getComputedStyle(document.documentElement).fontSize)||"16")}}export const PlSidebar=/* @__PURE__ */r.forwardRef(function PlSidebar({side:l,width:y,minWidth:P=160,maxWidth:S=480,resizable:k=!1,onResize:C,onResizeEnd:M,collapseBelow:N,open:R,defaultOpen:D=!1,onOpenChange:A,keepMounted:E=!1,sticky:L=!0,title:O,variant:I="glass",size:W,color:B,density:T,elevation:X=0,divider:$=!0,padded:_=!0,label:F,closeLabel:K,resizeLabel:U,className:q,style:G,children:H,...J},Q){const V=n(),Y=i(),Z=F??Y.sidebar,ee=K??Y.sidebarClose,te=U??Y.sidebarResize,re=W??V.size??"md",ne=B??V.color??"primary",oe=T??V.density??"default",ie=r.useContext(c),ae=r.useContext(p),se=l??ae??"start",le=N??(ie.present?ie.collapseBelow:"none"),ue=m(le),de=o(ue&&!V.direction),[ce,pe]=r.useState(D),me=void 0!==R,fe=me?R:ie.present?ie.open[se]:ce,changeOpen=e=>{me||(ie.present?ie.setOpen(se,e):pe(e)),A?.(e)},[be,xe]=r.useState(!1),[ye,he]=r.useState(fe);fe!==ye&&(he(fe),fe&&be&&xe(!1));const ve=v(y)??g[re],we=r.useRef(null),ge=r.useCallback(e=>{we.current=e,"function"==typeof Q?Q(e):Q&&(Q.current=e)},[Q]),ze=r.useRef(null);r.useEffect(()=>()=>ze.current?.(),[]);const je=r.useRef(null),Pe=k?toPixels(P,160):0,Se=k?toPixels(S,480):0,ke=k?Math.min(Se,Math.max(Pe,Math.round(toPixels(ve,Pe)))):0,applyWidth=e=>{const t=we.current;if(!t)return e;const r=Math.min(Se,Math.max(Pe,Math.round(e)));return t.style.setProperty("--p-sidebar-w",`${r}px`),je.current?.setAttribute("aria-valuenow",String(r)),r},Ce=t("aside",{ref:ge,"aria-label":Z,className:f("relative flex min-w-0 shrink-0 flex-col","w-(--p-sidebar-w)",z[I],$?f("start"===se?"border-e":"border-s","[border-color:var(--plass-divider)]"):"","content"===ie.scroll?"h-full":L?f("self-start","sticky [top:var(--p-layout-header,0px)]","[height:calc(100dvh-var(--p-layout-header,0px)-var(--p-layout-footer,0px))]"):"",d[le],w,q),style:{...h(ne,X),"--p-sidebar-w":ve,...G},...J,children:[e("div",{className:f("min-h-0 flex-1 overflow-y-auto overscroll-contain",_?f(b[oe][re],x[oe][re]):""),children:H}),k?e("div",{ref:je,role:"separator","aria-orientation":"vertical","aria-label":te,"aria-valuenow":ke,"aria-valuemin":Pe,"aria-valuemax":Se,tabIndex:0,className:f("absolute inset-y-0 z-1 w-2 cursor-col-resize touch-none","start"===se?"end-0 -me-1":"start-0 -ms-1","bg-transparent hover:bg-(--p-soft) data-[dragging]:bg-(--p-soft)",w,"[outline:none] focus-visible:[outline:2px_solid_var(--p-ring)]","focus-visible:[outline-offset:0px]"),onPointerDown:e=>{const t=we.current;if(!t||0!==e.button)return;const r=e.clientX,{size:n,perPixel:o}=s(t,!0),i="rtl"===getComputedStyle(t).direction,l="start"===se===i?-1:1;let u=n;ze.current=a({target:e.currentTarget,pointerId:e.pointerId,onMove:e=>{u=applyWidth(n+(e.clientX-r)*l*o),C?.(u)},onEnd:()=>{ze.current=null,M?.(u)}})},onKeyDown:e=>{if("ArrowLeft"!==e.key&&"ArrowRight"!==e.key)return;e.preventDefault();const t="rtl"===getComputedStyle(e.currentTarget).direction,r="start"===se===t?-1:1;(e=>{const t=we.current;if(!t)return;const r=s(t,!0).size,n=applyWidth(r+e);n!==r&&(C?.(n),M?.(n))})(("ArrowRight"===e.key?16:-16)*r)}}):null]});return!ue||be?Ce:e(r.Suspense,{fallback:Ce,children:e(j,{side:u(se,V.direction??de),mode:"overlay",open:fe,onOpenChange:changeOpen,onUnavailable:()=>{xe(!0),fe&&changeOpen(!1)},keepMounted:E,title:O,size:re,color:ne,density:oe,closeLabel:ee,extent:void 0===y?void 0:ve,"aria-label":O?void 0:Z,className:q,style:G,children:H})})});
|
|
@@ -2,6 +2,8 @@ import * as React from 'react';
|
|
|
2
2
|
import { type PlIconButtonProps } from '../icon-button/PlIconButton.js';
|
|
3
3
|
import type { PlPageLayoutCollapse, PlassSidebarSide } from '../../internal/page-layout.js';
|
|
4
4
|
export interface PlSidebarTriggerProps extends Omit<PlIconButtonProps, 'icon' | 'label'> {
|
|
5
|
+
/** @default 'ghost' */
|
|
6
|
+
variant?: PlIconButtonProps['variant'];
|
|
5
7
|
/** Which of the layout's two sidebars it opens. @default 'start' */
|
|
6
8
|
side?: PlassSidebarSide;
|
|
7
9
|
/**
|
|
@@ -26,7 +26,8 @@ export interface PlSliderProps extends BaseSliderProps {
|
|
|
26
26
|
/**
|
|
27
27
|
* The name of the thumb at `index`, for a range whose two ends need names of
|
|
28
28
|
* their own, such as "Minimum price" and "Maximum price". Left out, every
|
|
29
|
-
* thumb
|
|
29
|
+
* thumb takes the slider's own name: an `aria-labelledby`, else an
|
|
30
|
+
* `aria-label`, else `label`.
|
|
30
31
|
*/
|
|
31
32
|
getAriaLabel?: (index: number) => string;
|
|
32
33
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as e,jsxs as
|
|
1
|
+
"use client";import{jsx as e,jsxs as a}from"react/jsx-runtime";import*as l from"react";import{useDisabled as r,useLabelReference as o}from"../../internal/form.js";import{useDefaults as s,useLocale as i}from"../../internal/defaults.js";import{Slider as t}from"@base-ui/react/slider";import{controlSlots as n,focusRingClasses as d,forcedFieldEdgeClasses as c,forcedFillClasses as u,metaTextClasses as m}from"../../internal/styles.js";const f={xs:"h-1",sm:"h-1.5",md:"h-1.5",lg:"h-2",xl:"h-2.5"},b={xs:"w-1",sm:"w-1.5",md:"w-1.5",lg:"w-2",xl:"w-2.5"},p={xs:"size-3",sm:"size-3.5",md:"size-4.5",lg:"size-5",xl:"size-6"},g={xs:"h-4",sm:"h-4.5",md:"h-5",lg:"h-6",xl:"h-7"},h={xs:"w-4",sm:"w-4.5",md:"w-5",lg:"w-6",xl:"w-7"},x=`rounded-full bg-(--plass-track) ${c}`,v=/* @__PURE__ */["[transition-duration:var(--plass-duration)]","[transition-timing-function:var(--plass-ease)]","data-[dragging]:[transition-duration:0ms]","motion-reduce:[transition-duration:0ms]"].join(" "),w=/* @__PURE__ */["rounded-full [background-image:var(--p-fill)]",u,"forced-colors:data-[disabled]:[background-color:GrayText]","[transition-property:width,height,inset-inline-start,bottom,filter,opacity]",v].join(" "),y=/* @__PURE__ */["rounded-full border-2 [background-image:var(--p-fill)]","[border-color:var(--plass-surface)]","forced-colors:[background-color:CanvasText] forced-colors:[border-color:Canvas]","forced-colors:data-[disabled]:[background-color:GrayText]","[box-shadow:var(--p-elev),var(--p-lift)]","cursor-grab select-none active:cursor-grabbing","[transition-property:box-shadow,inset-inline-start,bottom,filter,opacity]",v,"hover:[box-shadow:var(--p-elev-hover),var(--p-lift-hover),0_0_0_4px_var(--p-soft)]",d,"data-[dragging]:[box-shadow:var(--p-elev-press),var(--p-lift-press),0_0_0_6px_var(--p-soft-hover)]"].join(" ");export const PlSlider=/* @__PURE__ */l.forwardRef(function PlSlider({size:d,color:c,elevation:u=1,orientation:v="horizontal",label:j,description:N,getAriaLabel:$,getAriaValueText:_,showValue:z=!1,disabled:k=!1,locale:A,className:T,style:V,"aria-label":C,"aria-labelledby":L,...S},B){const G=l.useId(),I=o(C,L),P=s(),R=i(A),q=r(k),D=d??P.size??"md",E=c??P.color??"primary",F="vertical"===v,H=S.value??S.defaultValue,J=Array.isArray(H)?H.length:1;return a(t.Root,{ref:B,orientation:v,disabled:q,locale:R,className:["flex",F?"w-fit flex-col items-center gap-2":"w-full flex-col gap-1.5",q?"opacity-50 saturate-[0.35] [&_*]:cursor-not-allowed":"",T??""].filter(Boolean).join(" "),style:{...n(E,u,"solid"),...V},"aria-label":C,"aria-labelledby":I.labelledBy,...S,children:[j||z?a("div",{className:`flex w-full items-baseline gap-2 ${m[D]}`,children:[j?e(t.Label,{className:"font-semibold text-(--plass-fg)",children:j}):null,z?e(t.Value,{className:"ms-auto tabular-nums text-(--plass-muted-fg)",children:"function"==typeof z?z:null}):null]}):null,e(t.Control,{className:["flex touch-none items-center justify-center select-none",F?`${h[D]} h-40 flex-col`:`w-full ${g[D]}`].join(" "),children:a(t.Track,{className:[x,F?`${b[D]} h-full`:`${f[D]} w-full`].join(" "),children:[e(t.Indicator,{className:w}),Array.from({length:J},(a,l)=>e(t.Thumb,{index:l,"aria-label":void 0===L?C:void 0,getAriaLabel:$,getAriaValueText:_,"aria-describedby":N?G:void 0,className:`${y} ${p[D]}`},l))]})}),N?e("div",{id:G,className:`${m[D]} text-(--plass-muted-fg)`,children:N}):null,I.node]})});
|