plass-ui 1.7.0 → 1.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (311) hide show
  1. package/CHANGELOG.md +218 -0
  2. package/README.md +2 -2
  3. package/dist/components/accordion/PlAccordion.d.ts +9 -4
  4. package/dist/components/accordion/PlAccordion.js +1 -1
  5. package/dist/components/alert/PlAlert.js +1 -1
  6. package/dist/components/anchor/PlAnchor.js +1 -1
  7. package/dist/components/animate-appear/PlAnimateAppear.js +1 -1
  8. package/dist/components/animate-counter/PlAnimateCounter.d.ts +5 -2
  9. package/dist/components/animate-counter/PlAnimateCounter.js +1 -1
  10. package/dist/components/animate-float/PlAnimateFloat.js +1 -1
  11. package/dist/components/animate-headline/PlAnimateHeadline.js +1 -1
  12. package/dist/components/animate-lighting/PlAnimateLighting.js +1 -1
  13. package/dist/components/animate-marquee/PlAnimateMarquee.js +1 -1
  14. package/dist/components/animate-scramble/PlAnimateScramble.js +1 -1
  15. package/dist/components/animate-shake/PlAnimateShake.js +1 -1
  16. package/dist/components/animate-split/PlAnimateSplit.js +1 -1
  17. package/dist/components/animate-typing/PlAnimateTyping.js +1 -1
  18. package/dist/components/app-logo/PlAppLogo.d.ts +51 -15
  19. package/dist/components/area-chart/PlAreaChart.js +1 -1
  20. package/dist/components/avatar/PlAvatar.js +1 -1
  21. package/dist/components/bar-chart/PlBarChart.js +1 -1
  22. package/dist/components/bottom-navigation/PlBottomNavigation.d.ts +15 -5
  23. package/dist/components/bottom-navigation/PlBottomNavigation.js +1 -1
  24. package/dist/components/breadcrumb/PlBreadcrumb.d.ts +16 -3
  25. package/dist/components/breadcrumb/PlBreadcrumb.js +1 -1
  26. package/dist/components/button/PlButton.js +1 -1
  27. package/dist/components/calendar/PlCalendar.js +1 -1
  28. package/dist/components/card/PlCard.d.ts +2 -1
  29. package/dist/components/card/PlCard.js +1 -1
  30. package/dist/components/carousel/PlCarousel.js +1 -1
  31. package/dist/components/checkbox/PlCheckbox.js +1 -1
  32. package/dist/components/chip/PlChip.js +1 -1
  33. package/dist/components/code-block/PlCodeBlock.js +1 -1
  34. package/dist/components/collapsible/PlCollapsible.js +1 -1
  35. package/dist/components/color-picker/PlColorPicker.js +1 -1
  36. package/dist/components/combobox/PlCombobox.d.ts +1 -1
  37. package/dist/components/combobox/PlCombobox.js +1 -1
  38. package/dist/components/command-palette/PlCommandPalette.js +1 -1
  39. package/dist/components/confirm/PlConfirmProvider.js +1 -1
  40. package/dist/components/data-table/PlDataTable.js +1 -1
  41. package/dist/components/date-picker/PlDatePicker.js +1 -1
  42. package/dist/components/date-range-picker/PlDateRangePicker.js +1 -1
  43. package/dist/components/date-time-picker/PlDateTimePicker.js +1 -1
  44. package/dist/components/drawer/PlDrawer.d.ts +27 -2
  45. package/dist/components/drawer/PlDrawer.js +1 -1
  46. package/dist/components/empty/PlEmpty.d.ts +4 -1
  47. package/dist/components/empty/PlEmpty.js +1 -1
  48. package/dist/components/file-picker/PlFilePicker.d.ts +29 -0
  49. package/dist/components/file-picker/PlFilePicker.js +1 -1
  50. package/dist/components/file-picker/index.d.ts +1 -1
  51. package/dist/components/floating-bottom-navigation/PlFloatingBottomNavigation.d.ts +10 -0
  52. package/dist/components/floating-bottom-navigation/PlFloatingBottomNavigation.js +1 -1
  53. package/dist/components/footer/PlFooter.js +1 -1
  54. package/dist/components/gallery/PlGallery.js +1 -1
  55. package/dist/components/gauge-chart/PlGaugeChart.d.ts +11 -2
  56. package/dist/components/gauge-chart/PlGaugeChart.js +1 -1
  57. package/dist/components/header/PlHeader.js +1 -1
  58. package/dist/components/heatmap-chart/PlHeatmapChart.d.ts +1 -1
  59. package/dist/components/heatmap-chart/PlHeatmapChart.js +1 -1
  60. package/dist/components/image/PlImage.js +1 -1
  61. package/dist/components/image/PlImagePreview.d.ts +3 -2
  62. package/dist/components/list/PlList.d.ts +16 -5
  63. package/dist/components/list/PlList.js +1 -1
  64. package/dist/components/menu/PlMenu.d.ts +19 -7
  65. package/dist/components/menu/PlMenu.js +1 -1
  66. package/dist/components/menubar/PlMenubar.js +1 -1
  67. package/dist/components/meter/PlMeter.js +1 -1
  68. package/dist/components/mockup/PlMockup.d.ts +4 -3
  69. package/dist/components/mockup/PlMockup.js +1 -1
  70. package/dist/components/modal/PlModal.js +1 -1
  71. package/dist/components/navigation-menu/PlNavigationMenu.d.ts +52 -8
  72. package/dist/components/navigation-menu/PlNavigationMenu.js +1 -1
  73. package/dist/components/number-field/PlNumberField.d.ts +1 -1
  74. package/dist/components/number-field/PlNumberField.js +1 -1
  75. package/dist/components/otp-field/PlOtpField.js +1 -1
  76. package/dist/components/overlay/PlOverlay.js +1 -1
  77. package/dist/components/page-layout/PlPageLayout.js +1 -1
  78. package/dist/components/panes/PlPanes.d.ts +4 -1
  79. package/dist/components/panes/PlPanes.js +1 -1
  80. package/dist/components/pie-chart/PlPieChart.d.ts +1 -1
  81. package/dist/components/pie-chart/PlPieChart.js +1 -1
  82. package/dist/components/pill/PlPill.js +1 -1
  83. package/dist/components/popover/PlPopover.js +1 -1
  84. package/dist/components/progress-box/PlProgressBox.js +1 -1
  85. package/dist/components/progress-circular/PlProgressCircular.d.ts +11 -1
  86. package/dist/components/progress-circular/PlProgressCircular.js +1 -1
  87. package/dist/components/progress-linear/PlProgressLinear.js +1 -1
  88. package/dist/components/radio-group/PlRadioGroup.js +1 -1
  89. package/dist/components/scatter-chart/PlScatterChart.js +1 -1
  90. package/dist/components/scroll-zone/PlScrollZone.js +1 -1
  91. package/dist/components/segmented-button/PlSegmentedButton.js +1 -1
  92. package/dist/components/select/PlSelect.js +1 -1
  93. package/dist/components/sidebar/PlSidebar.d.ts +12 -0
  94. package/dist/components/sidebar/PlSidebar.js +1 -1
  95. package/dist/components/slider/PlSlider.d.ts +2 -1
  96. package/dist/components/slider/PlSlider.js +1 -1
  97. package/dist/components/sparkline/PlSparkline.d.ts +15 -3
  98. package/dist/components/sparkline/PlSparkline.js +1 -1
  99. package/dist/components/stepper/PlStepper.d.ts +11 -0
  100. package/dist/components/stepper/PlStepper.js +1 -1
  101. package/dist/components/switch/PlSwitch.js +1 -1
  102. package/dist/components/tabs/PlTabs.js +1 -1
  103. package/dist/components/text-field/PlTextField.js +1 -1
  104. package/dist/components/text-link/PlTextLink.js +1 -1
  105. package/dist/components/time-picker/PlTimePicker.js +1 -1
  106. package/dist/components/timeline-chart/PlTimelineChart.js +1 -1
  107. package/dist/components/toast/PlToast.js +1 -1
  108. package/dist/components/toggle/PlToggle.js +1 -1
  109. package/dist/components/tour/PlTour.js +1 -1
  110. package/dist/components/transfer/PlTransfer.js +1 -1
  111. package/dist/components/tree/PlTree.d.ts +12 -0
  112. package/dist/components/tree/PlTree.js +1 -1
  113. package/dist/components/tree-select/PlTreeSelect.js +1 -1
  114. package/dist/components/typography/PlTypography.d.ts +20 -7
  115. package/dist/components/typography/PlTypography.js +1 -1
  116. package/dist/components/visually-hidden/PlVisuallyHidden.d.ts +12 -3
  117. package/dist/components/visually-hidden/PlVisuallyHidden.js +1 -1
  118. package/dist/components/window-pane/PlWindowPane.d.ts +3 -0
  119. package/dist/components/window-pane/PlWindowPane.js +1 -1
  120. package/dist/css/accordion.css +4 -0
  121. package/dist/css/alert.css +5 -0
  122. package/dist/css/anchor.css +6 -0
  123. package/dist/css/animate-appear.css +3 -0
  124. package/dist/css/animate-blink.css +3 -0
  125. package/dist/css/animate-counter.css +4 -0
  126. package/dist/css/animate-fade.css +3 -0
  127. package/dist/css/animate-float.css +3 -0
  128. package/dist/css/animate-grow.css +3 -0
  129. package/dist/css/animate-headline.css +3 -0
  130. package/dist/css/animate-lighting.css +4 -0
  131. package/dist/css/animate-marquee.css +4 -0
  132. package/dist/css/animate-reveal.css +3 -0
  133. package/dist/css/animate-rotate.css +3 -0
  134. package/dist/css/animate-scramble.css +5 -0
  135. package/dist/css/animate-shake.css +3 -0
  136. package/dist/css/animate-slide.css +3 -0
  137. package/dist/css/animate-split.css +4 -0
  138. package/dist/css/animate-typing.css +4 -0
  139. package/dist/css/animate-zoom.css +3 -0
  140. package/dist/css/app-logo.css +2 -0
  141. package/dist/css/area-chart.css +12 -0
  142. package/dist/css/aspect-ratio.css +2 -0
  143. package/dist/css/avatar.css +2 -0
  144. package/dist/css/back-top.css +11 -0
  145. package/dist/css/badge.css +2 -0
  146. package/dist/css/bar-chart.css +10 -0
  147. package/dist/css/base.css +2 -3
  148. package/dist/css/blockquote.css +2 -0
  149. package/dist/css/bottom-navigation.css +4 -0
  150. package/dist/css/box.css +2 -0
  151. package/dist/css/breadcrumb.css +6 -0
  152. package/dist/css/button-group.css +2 -0
  153. package/dist/css/button.css +7 -0
  154. package/dist/css/calendar.css +17 -0
  155. package/dist/css/card.css +2 -0
  156. package/dist/css/carousel.css +10 -0
  157. package/dist/css/chat-bubble.css +6 -0
  158. package/dist/css/checkbox.css +3 -0
  159. package/dist/css/chip.css +8 -0
  160. package/dist/css/code-block.css +6 -0
  161. package/dist/css/collapsible.css +3 -0
  162. package/dist/css/color-picker.css +17 -0
  163. package/dist/css/combobox.css +10 -0
  164. package/dist/css/command-palette.css +7 -0
  165. package/dist/css/confirm.css +9 -0
  166. package/dist/css/container.css +5 -0
  167. package/dist/css/data-list.css +2 -0
  168. package/dist/css/data-table.css +15 -0
  169. package/dist/css/date-picker.css +16 -0
  170. package/dist/css/date-range-picker.css +16 -0
  171. package/dist/css/date-time-picker.css +16 -0
  172. package/dist/css/divider.css +2 -0
  173. package/dist/css/drawer.css +6 -0
  174. package/dist/css/empty.css +2 -0
  175. package/dist/css/fieldset.css +2 -0
  176. package/dist/css/file-picker.css +8 -0
  177. package/dist/css/flex.css +5 -0
  178. package/dist/css/floating-action-button.css +7 -0
  179. package/dist/css/floating-bottom-navigation.css +5 -0
  180. package/dist/css/footer.css +6 -0
  181. package/dist/css/form.css +2 -0
  182. package/dist/css/gallery.css +15 -0
  183. package/dist/css/gauge-chart.css +11 -0
  184. package/dist/css/grid.css +5 -0
  185. package/dist/css/header.css +6 -0
  186. package/dist/css/heatmap-chart.css +10 -0
  187. package/dist/css/highlight.css +2 -0
  188. package/dist/css/hot-keys.css +3 -0
  189. package/dist/css/hover-card.css +9 -0
  190. package/dist/css/how-to-steps.css +3 -0
  191. package/dist/css/icon-button.css +7 -0
  192. package/dist/css/icon.css +1 -0
  193. package/dist/css/image.css +7 -0
  194. package/dist/css/line-chart.css +12 -0
  195. package/dist/css/list.css +2 -0
  196. package/dist/css/menu.css +5 -0
  197. package/dist/css/menubar.css +5 -0
  198. package/dist/css/meter.css +6 -0
  199. package/dist/css/mockup.css +4 -0
  200. package/dist/css/modal.css +5 -0
  201. package/dist/css/navigation-menu.css +4 -0
  202. package/dist/css/number-field.css +10 -0
  203. package/dist/css/otp-field.css +6 -0
  204. package/dist/css/overlay.css +4 -0
  205. package/dist/css/page-layout.css +7 -0
  206. package/dist/css/pagination.css +8 -0
  207. package/dist/css/panes.css +7 -0
  208. package/dist/css/pie-chart.css +10 -0
  209. package/dist/css/pill.css +4 -0
  210. package/dist/css/popconfirm.css +12 -0
  211. package/dist/css/popover.css +11 -0
  212. package/dist/css/portal.css +1 -0
  213. package/dist/css/progress-box.css +5 -0
  214. package/dist/css/progress-circular.css +5 -0
  215. package/dist/css/progress-linear.css +5 -0
  216. package/dist/css/radio-group.css +3 -0
  217. package/dist/css/rating.css +6 -0
  218. package/dist/css/scatter-chart.css +10 -0
  219. package/dist/css/scroll-area.css +2 -0
  220. package/dist/css/scroll-zone.css +15 -0
  221. package/dist/css/segmented-button.css +5 -0
  222. package/dist/css/select.css +9 -0
  223. package/dist/css/show.css +1 -0
  224. package/dist/css/sidebar.css +16 -0
  225. package/dist/css/skeleton.css +2 -0
  226. package/dist/css/slider.css +3 -0
  227. package/dist/css/sparkline.css +10 -0
  228. package/dist/css/spoiler.css +10 -0
  229. package/dist/css/stack.css +5 -0
  230. package/dist/css/stat.css +2 -0
  231. package/dist/css/stepper.css +8 -0
  232. package/dist/css/switch.css +3 -0
  233. package/dist/css/table.css +3 -0
  234. package/dist/css/tabs.css +7 -0
  235. package/dist/css/text-field.css +8 -0
  236. package/dist/css/text-link.css +6 -0
  237. package/dist/css/time-picker.css +16 -0
  238. package/dist/css/timeline-chart.css +10 -0
  239. package/dist/css/timeline.css +6 -0
  240. package/dist/css/toast.css +5 -0
  241. package/dist/css/toggle.css +5 -0
  242. package/dist/css/toolbar.css +2 -0
  243. package/dist/css/tooltip.css +9 -0
  244. package/dist/css/tour.css +10 -0
  245. package/dist/css/transfer.css +13 -0
  246. package/dist/css/tree-select.css +14 -0
  247. package/dist/css/tree.css +3 -0
  248. package/dist/css/visually-hidden.css +2 -0
  249. package/dist/css/window-pane.css +9 -0
  250. package/dist/internal/animate.d.ts +59 -4
  251. package/dist/internal/animate.js +1 -1
  252. package/dist/internal/bottom-bar.js +1 -1
  253. package/dist/internal/calendar.js +1 -1
  254. package/dist/internal/chart-frame.d.ts +130 -11
  255. package/dist/internal/chart-frame.js +1 -1
  256. package/dist/internal/commit-change.d.ts +38 -0
  257. package/dist/internal/commit-change.js +1 -0
  258. package/dist/internal/data-table.d.ts +2 -2
  259. package/dist/internal/data-table.js +1 -1
  260. package/dist/internal/date.d.ts +9 -0
  261. package/dist/internal/date.js +1 -1
  262. package/dist/internal/defaults.d.ts +34 -1
  263. package/dist/internal/defaults.js +1 -1
  264. package/dist/internal/direction.d.ts +8 -2
  265. package/dist/internal/direction.js +1 -1
  266. package/dist/internal/form.d.ts +43 -0
  267. package/dist/internal/form.js +1 -1
  268. package/dist/internal/format.d.ts +4 -1
  269. package/dist/internal/format.js +1 -1
  270. package/dist/internal/gallery.d.ts +28 -0
  271. package/dist/internal/gallery.js +1 -1
  272. package/dist/internal/glow.d.ts +7 -2
  273. package/dist/internal/glow.js +1 -1
  274. package/dist/internal/heading.d.ts +11 -0
  275. package/dist/internal/heading.js +1 -0
  276. package/dist/internal/highlight.d.ts +4 -2
  277. package/dist/internal/highlight.js +1 -1
  278. package/dist/internal/labels.d.ts +5 -0
  279. package/dist/internal/labels.js +1 -1
  280. package/dist/internal/layout-box.d.ts +35 -0
  281. package/dist/internal/layout-box.js +1 -0
  282. package/dist/internal/lazy.d.ts +37 -0
  283. package/dist/internal/lazy.js +1 -0
  284. package/dist/internal/media.d.ts +6 -0
  285. package/dist/internal/media.js +1 -1
  286. package/dist/internal/page-layout.d.ts +24 -13
  287. package/dist/internal/page-layout.js +1 -1
  288. package/dist/internal/picker.d.ts +1 -1
  289. package/dist/internal/picker.js +1 -1
  290. package/dist/internal/progress.d.ts +24 -0
  291. package/dist/internal/progress.js +1 -1
  292. package/dist/internal/search.d.ts +12 -0
  293. package/dist/internal/search.js +1 -1
  294. package/dist/internal/sizer.d.ts +15 -8
  295. package/dist/internal/sizer.js +1 -1
  296. package/dist/internal/styles.d.ts +22 -6
  297. package/dist/internal/styles.js +1 -1
  298. package/dist/internal/wheel.d.ts +13 -1
  299. package/dist/internal/wheel.js +1 -1
  300. package/dist/internal/window.js +1 -1
  301. package/dist/locales/de.js +1 -1
  302. package/dist/locales/es.js +1 -1
  303. package/dist/locales/fr.js +1 -1
  304. package/dist/locales/ja.js +1 -1
  305. package/dist/locales/ko.js +1 -1
  306. package/dist/locales/zh-Hans.js +1 -1
  307. package/dist/styles.css +1 -1
  308. package/dist/tailwind.css +758 -40
  309. package/dist/tokens.css +758 -40
  310. package/dist/types.d.ts +10 -1
  311. package/package.json +18 -17
@@ -1 +1 @@
1
- "use client";import{jsx as e,jsxs as r}from"react/jsx-runtime";import*as a from"react";import{useDisabled as l}from"../../internal/form.js";import{useDefaults as o}from"../../internal/defaults.js";import{Radio as s}from"@base-ui/react/radio";import{RadioGroup as t}from"@base-ui/react/radio-group";import{Field as i}from"@base-ui/react/field";import{controlSlots as n,cx as d,fieldDescriptionClasses as c,focusRingClasses as p,forcedCheckedClasses as m,forcedDisabledCheckedClasses as f,glassClasses as u,hasContent as h,metaTextClasses as b,tickDotClasses as x,tickRowTextClasses as g,tickSizeClasses as v,transitionClasses as y}from"../../internal/styles.js";const N=/* @__PURE__ */a.createContext({size:"md",color:"primary",readOnly:!1,disabled:!1}),j=/* @__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]",y,p].join(" "),k=/* @__PURE__ */[u,"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",m].join(" "),R=/* @__PURE__ */[u,"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]",m].join(" "),z=/* @__PURE__ */[u,"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]",f].join(" "),w=/* @__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__ */a.forwardRef(function PlRadio({label:l,description:o,disabled:t=!1,className:n,style:d,...c},p){const m=a.useContext(N),f=c.readOnly??m.readOnly,u=t||m.disabled;return e(i.Root,{disabled:t,className:["flex flex-col",n??""].filter(Boolean).join(" "),style:d,children:r("div",{className:`flex items-start gap-2 ${g[m.size]}`,children:[e("span",{className:"flex h-[1lh] shrink-0 items-center",children:e(s.Root,{ref:p,className:[j,v[m.size],u?z:f?R:k].join(" "),disabled:t,...c,children:e(s.Indicator,{keepMounted:!0,className:`${w} ${x[m.size]}`})})}),l||o?r("span",{className:"flex min-w-0 flex-col gap-0.5",children:[l?e(i.Label,{className:u?"text-(--plass-muted-fg)":"cursor-pointer text-(--plass-fg)",children:l}):null,o?e(i.Description,{className:`m-0 ${b[m.size]} text-(--plass-muted-fg)`,children:o}):null]}):null]})})});export const PlRadioGroup=/* @__PURE__ */a.forwardRef(function PlRadioGroup({size:s,color:p,orientation:m="vertical",label:f,description:u,error:x,invalid:g,disabled:v=!1,readOnly:y=!1,className:j,classNames:k,style:R,children:z,...w},O){const P=o(),$=l(v),G=s??P.size??"md",B=p??P.color??"primary",C=h(x),D=g??C,L=D?"danger":B,M=a.useMemo(()=>({size:G,color:L,readOnly:y,disabled:$}),[G,L,y,$]);return e(N.Provider,{value:M,children:r(i.Root,{disabled:$,invalid:D,className:["flex flex-col gap-1.5",j??""].filter(Boolean).join(" "),style:{...n(L,0,"solid"),...R},children:[f?e(i.Label,{className:d(b[G],"font-semibold",$?"text-(--plass-muted-fg)":"text-(--plass-fg)",k?.label),children:f}):null,u?e(i.Description,{className:d(c(G),k?.description),children:u}):null,e(t,{ref:O,disabled:$,readOnly:y,className:d("flex","horizontal"===m?"flex-row flex-wrap gap-x-5 gap-y-2":"flex-col gap-2",k?.control),...w,children:z}),e(i.Error,C?{match:!0,className:d(b[G],"text-(--p-accent)",k?.error),children:x}:{className:d(b[G],"text-(--p-accent)",k?.error)})]})})});
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,plotHeights as h,pointX as x,seriesColor as f,toValues as p,writeChartValue as b}from"../../internal/chart.js";import{useDefaults 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=v(),g=u??z.size??"md",j=k.locale??z.locale,M=k.format,w=l??c[g],F=a.useMemo(()=>p(o),[o]),S=a.useMemo(()=>o.map((e,r)=>f(e,r)),[o]),$=s??Math.max(w+2,("number"==typeof k.height?k.height:h[g])/12),N=o.reduce((e,r)=>r.color?e:e+1,0),C="auto"===r||"varied"===r?"circle":r,E="varied"===r||"auto"===r&&N>3,L=a.useCallback(e=>E?m[e%m.length]:C,[E,C]),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=x(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,$,2)})})}),r},[n,w,$]),O=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:b(r.value,M,j),label:r.label,aside:void 0===r.z?void 0:b(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:O,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=>e(ScatterTable,{id:r,series:o,categories:n,label:k.label,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,series:t,categories:l,label:i,xLabel:s,yLabel:o,xFormat:n,locale:c,format:u}){const d=t.some(e=>e.data.some(e=>"object"==typeof e&&null!==e&&void 0!==e.z));return r("table",{id:a,className:y(k),children:[i?e("caption",{children:i}):null,e("thead",{children:r("tr",{children:[e("th",{scope:"col"}),e("th",{scope:"col",children:s??"x"}),e("th",{scope:"col",children:o??"y"}),d?e("th",{scope:"col",children:"z"}):null]})}),e("tbody",{children:t.flatMap((a,t)=>a.data.map((i,s)=>{const o="object"==typeof i&&null!==i?i:null,m=o?o.y:"number"==typeof i?i:null,h=o?.x??l?.[s]??s;return r("tr",{children:[e("th",{scope:"row",children:a.name??t+1}),e("td",{children:writeX(h,s,n,c)}),e("td",{children:void 0!==o?.label?o.label:null!==m&&Number.isFinite(m)?b(m,u,c):""}),d?e("td",{children:void 0===o?.z?"":b(o.z,u,c)}):null]},`${t}-${s}`)}))})]})}
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}`)}))})]})}
@@ -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 s}from"../icon-button/PlIconButton.js";import{spacingValue as l}from"../../internal/grid.js";import{ChevronIcon as a}from"../../internal/icons.js";import{cx as c}from"../../internal/styles.js";import{useResponsiveValue as u}from"../../internal/responsive.js";import{overscrollClasses as d,useWheelScroll as f}from"../../internal/wheel.js";const p={xs:"p-1",sm:"p-1.5",md:"p-2",lg:"p-3",xl:"p-4"},m={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:v,lines:g=1,spacing:w=2,buttons:b="auto",buttonPlacement:h="inline",mode:x="item",step:y=1,speed:k=900,snap:L=!1,drag:E=!0,wheel:j=!0,overscroll:C="contain",scrollbar:R=!1,variant:B="glass",size:M,color:N,density:P,label:T,previousLabel:z,nextLabel:A,className:D,style:S,children:H,...F},I){const W=u(v,"horizontal"),$=r(),q=o(),O=z??q.previous,X=A??q.next,Y=M??$.size??"md",Z=N??$.color??"primary",_=P??$.density??"default",K="horizontal"===W,G=Math.max(1,Math.round(g)),J=Math.max(1,Math.round(y)),Q=n.useRef(null),U=n.useRef(null),[V,ee]=n.useState({back:!1,forward:!1}),te=n.useCallback(()=>{const e=Q.current;if(!e)return;const t=K?e.clientWidth:e.clientHeight,n=K?e.scrollWidth:e.scrollHeight,r=Math.abs(K?e.scrollLeft:e.scrollTop);ee(e=>{const o=r>1,i=n-t-r>1;return e.back===o&&e.forward===i?e:{back:o,forward:i}})},[K]);n.useEffect(()=>{const e=Q.current,t=U.current;if(!e)return;if(te(),"undefined"==typeof ResizeObserver)return;const n=new ResizeObserver(te);return n.observe(e),t&&n.observe(t),()=>n.disconnect()},[te]);const ne=n.useCallback(()=>{const e=Q.current;return e&&K&&"rtl"===getComputedStyle(e).direction?-1:1},[K]),re=n.useCallback((e,t)=>{const n=Q.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(K?{left:e,behavior:r}:{top:e,behavior:r})},[K]);f(Q,{enabled:j&&K,overscroll:C});const oe=n.useCallback(()=>{const e=Q.current,t=U.current;if(!e||!t)return[];const n=K&&"rtl"===getComputedStyle(e).direction,r=K?n?"right":"left":"top",o=n?-1:1,i=e.getBoundingClientRect()[r],s=[];for(const e of Array.from(t.children)){const t=Math.round((e.getBoundingClientRect()[r]-i)*o);s.includes(t)||s.push(t)}return s.sort((e,t)=>e-t)},[K]),ie=n.useCallback((e,t=x)=>{const n=Q.current;if(!n)return;const r=ne(),o=K?n.clientWidth:n.clientHeight;if("page"===t)return void re(o*(e?1:-1)*r,!0);const i=oe(),s=i.filter(e=>e>1),l=i.filter(e=>e<-1),a=e?s[J-1]:l[l.length-J];re(void 0!==a?a*r:o*(e?1:-1)*r,!0)},[ne,K,oe,J,x,re]),se=n.useRef(null);n.useEffect(()=>()=>se.current?.(),[]);const le=n.useCallback((e,t)=>{if(se.current)return;const n=ne(),r=performance.now();let o=r,i=0;const tick=t=>{const r=t-o;o=t,re(k*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&&ie(e,"item")};se.current=release,window.addEventListener(t,release),window.addEventListener("pointercancel",release),window.addEventListener("blur",release)},[ie,ne,re,k]),ae=n.useRef(null);function pressHandlers(e){return"hold"!==x?{onClick:()=>ie(e)}:{onPointerDown:t=>{0===t.button&&le(e,"pointerup")},onKeyDown:t=>{"Enter"!==t.key&&" "!==t.key||(t.preventDefault(),le(e,"keyup"))}}}n.useEffect(()=>()=>ae.current?.(),[]);const ce="none"!==b&&("always"===b||V.back||V.forward),ue="inline"===h;function scrollButton(t){const n=t?V.forward:V.back;if("auto"===b&&!n&&!ue)return e("span",{});const r=e(s,{variant:B,size:Y,color:Z,density:_,elevation:1,label:t?X:O,disabled:!n,className:"pointer-events-auto",icon:e("span",{className:c("flex items-center",K?t?"-rotate-90 rtl:rotate-90":"rotate-90 rtl:-rotate-90":t?"":"rotate-180"),children:e(a,{})}),...pressHandlers(t)});return ue?e("span",{className:"flex shrink-0 items-center justify-center",children:r}):r}return t("div",{ref:I,className:c("relative flex min-w-0",ue&&K?"flex-row items-stretch":"flex-col",ue?m[Y]:"",D),style:{"--p-ring":`var(--plass-${Z}-ring)`,...S},...F,children:[ce&&ue?scrollButton(!1):null,e("div",{ref:Q,tabIndex:V.back||V.forward?0:void 0,role:T?"group":void 0,"aria-label":T,className:c("min-h-0 min-w-0 grow",K?"overflow-x-auto overflow-y-hidden":"overflow-y-auto overflow-x-hidden",d(C,K),L?K?"snap-x snap-mandatory":"snap-y snap-mandatory":"",R?"":"[scrollbar-width:none] [&::-webkit-scrollbar]:hidden",E&&(V.back||V.forward)?"cursor-grab data-[dragging]:cursor-grabbing":"","focus-visible:[outline:2px_solid_var(--p-ring)] focus-visible:[outline-offset:-2px]"),onScroll:te,onPointerDown:function beginDrag(e){if(!E||"touch"===e.pointerType||0!==e.button)return;ae.current?.();const t=e.currentTarget,n=e.clientX,r=e.clientY,o=t.scrollLeft,s=t.scrollTop;let l=!1,a=null;const move=e=>{if(0===e.buttons)return void end();const c=e.clientX-n,u=e.clientY-r;if(!l){if(Math.abs(K?c:u)<4)return;l=!0,t.setPointerCapture(e.pointerId),t.dataset.dragging="true",a=i()}K?t.scrollLeft=o-c:t.scrollTop=s-u},release=()=>{ae.current=null,t.removeEventListener("pointermove",move),t.removeEventListener("pointerup",end),t.removeEventListener("pointercancel",release),delete t.dataset.dragging,a?.(),a=null},end=()=>{const e=l;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)};ae.current=release,t.addEventListener("pointermove",move),t.addEventListener("pointerup",end),t.addEventListener("pointercancel",release)},children:e("div",{ref:U,className:c(L?"[&>*]:snap-start":""),style:{display:"grid",gap:l(w),gridAutoFlow:K?"column":"row",...K?{width:"max-content",gridTemplateRows:`repeat(${G}, auto)`,gridAutoColumns:"max-content"}:{gridTemplateColumns:`repeat(${G}, minmax(0, 1fr))`,gridAutoRows:"max-content"}},children:H})}),ce&&ue?scrollButton(!0):null,ce&&!ue?t("div",{className:c("pointer-events-none absolute inset-0 flex justify-between",K?"items-center":"flex-col items-center",p[Y]),children:[scrollButton(!1),scrollButton(!0)]}):null]})});
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]})});
@@ -1 +1 @@
1
- "use client";import{jsx as e,jsxs as t}from"react/jsx-runtime";import*as s from"react";import{useDisabled as a}from"../../internal/form.js";import{glowPointerMove as r}from"../../internal/glow.js";import{useDefaults as l}from"../../internal/defaults.js";import{Radio as o}from"@base-ui/react/radio";import{RadioGroup as n}from"@base-ui/react/radio-group";import{controlHeightClasses as i,controlSlots as d,controlTextClasses as c,focusRingInsetClasses as u,forcedCheckedTextClasses as p,forcedFieldEdgeClasses as f,forcedFillClasses as h,gapClasses as g,glassClasses as m,hasContent as v,iconClasses as y,paddingXClasses as b,transitionClasses as x}from"../../internal/styles.js";const w=/* @__PURE__ */s.createContext({variant:"glass",size:"md",density:"default",fullWidth:!1,disabled:!1,readOnly:!1}),k={solid:`${m} bg-(--plass-glass-press) p-1 [box-shadow:var(--p-elev),var(--plass-well)] ${f}`,glass:`${m} border bg-(--plass-glass) p-1 [border-color:var(--plass-glass-line)] [box-shadow:var(--p-elev),var(--plass-well)]`,ghost:""},j={solid:"plass-fill data-[placed]:[--p-fill-on:1] [box-shadow:var(--plass-shadow-1),var(--p-lift)]",glass:`${m} bg-(--plass-glass-press) [box-shadow:var(--plass-shadow-1),var(--plass-gloss-glass)]`,ghost:`${m} bg-(--plass-glass-press) [box-shadow:var(--plass-shadow-1),var(--plass-gloss-glass)]`},P={solid:"data-[checked]:text-(--p-on-solid)",glass:"data-[checked]:text-(--p-accent)",ghost:"data-[checked]:text-(--p-accent)"};export const PlSegment=/* @__PURE__ */s.forwardRef(function PlSegment({value:l,startIcon:n,endIcon:d,disabled:f=!1,className:h,children:m,onPointerMove:k,...j},R){const{variant:$,size:z,density:N,fullWidth:C,disabled:O,readOnly:S}=s.useContext(w),W=a(f),A=!W&&!O&&!S;return t(o.Root,{ref:R,value:l,disabled:W,"data-segment":"",className:["relative z-10 inline-flex shrink-0 cursor-pointer items-center justify-center select-none","font-semibold whitespace-nowrap","[-webkit-tap-highlight-color:transparent] [touch-action:manipulation]",i[z],c[z],g[z],b[N][z],"rounded-full",x,y,A?"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)",P[$],p,u,"data-[disabled]:cursor-not-allowed",O?"":"data-[disabled]:opacity-50","data-[readonly]:cursor-default",C?"flex-1":"",h??""].filter(Boolean).join(" "),onPointerMove:r(A,k),...j,children:[v(n)?e("span",{className:"flex h-[1lh] shrink-0 items-center",children:n}):null,m,v(d)?e("span",{className:"flex h-[1lh] shrink-0 items-center",children:d}):null]})});export const PlSegmentedButton=/* @__PURE__ */s.forwardRef(function PlSegmentedButton({variant:r="glass",size:o,color:i,density:c,elevation:u=0,value:p,defaultValue:f=null,onValueChange:g,disabled:m=!1,readOnly:v=!1,name:y,fullWidth:b=!1,className:P,style:R,children:$,...z},N){const C=l(),O=a(m),S=o??C.size??"md",W=i??C.color??"primary",A=c??C.density??"default",[B,E]=s.useState(f),M=void 0!==p,V=M?p:B,I=s.useRef(null),L=s.useRef(null),q=s.useRef(!1);s.useEffect(()=>{q.current=!0},[]);const G=s.useCallback(e=>{L.current=e,e&&!q.current&&e.setAttribute("data-placed","")},[]),H=s.useCallback(e=>{const t=I.current,s=L.current;if(!t||!s)return;const a=t.querySelector("[data-segment][data-checked]");if(!a)return;const r=!e||!s.hasAttribute("data-ready");r&&s.removeAttribute("data-ready"),s.style.setProperty("--p-seg-x",`${a.offsetLeft}px`),s.style.setProperty("--p-seg-y",`${a.offsetTop}px`),s.style.setProperty("--p-seg-w",`${a.offsetWidth}px`),s.style.setProperty("--p-seg-h",`${a.offsetHeight}px`),r&&s.offsetWidth,s.setAttribute("data-ready",""),s.setAttribute("data-placed","")},[]);s.useLayoutEffect(()=>{H(!0)},[H,V,r,S,A,b,$]),s.useEffect(()=>{const e=I.current;if(!e)return;const t=new ResizeObserver(()=>H(!1));return t.observe(e),()=>t.disconnect()},[H]);const T=s.useMemo(()=>({variant:r,size:S,density:A,fullWidth:b,disabled:O,readOnly:v}),[r,S,A,b,O,v]);return e(w.Provider,{value:T,children:t(n,{ref:e=>{I.current=e,"function"==typeof N?N(e):N&&(N.current=e)},value:V,onValueChange:e=>{const t=e??null;M||E(t),g?.(t)},disabled:O,readOnly:v,name:y,className:["relative inline-flex items-center rounded-full",k[r],x,v?"saturate-[0.55]":"",O?"opacity-50 saturate-[0.35]":"",b?"flex w-full":"",P??""].filter(Boolean).join(" "),style:{...d(W,u,r),...R},...z,children:[null!=V?e("span",{ref:G,"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)",j[r],h,"[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,$]})})});
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 r,useDisabled as l}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 m,forcedFieldEdgeClasses as h,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,disabled:!1,readOnly:!1}),P={solid:`${b} bg-(--plass-glass-press) p-1 [box-shadow:var(--p-elev),var(--plass-well)] ${h}`,glass:`${b} border bg-(--plass-glass) p-1 [border-color:var(--plass-glass-line)] [box-shadow:var(--p-elev),var(--plass-well)]`,ghost:""},R={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)]`},$={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:r,endIcon:o,disabled:d=!1,className:u,children:h,onPointerMove:g,...b},P){const{variant:R,size:A,density:z,fullWidth:N,disabled:C,readOnly:O}=a.useContext(j),S=l(d),W=!S&&!C&&!O;return t(i.Root,{ref:P,value:s,disabled:S,"data-segment":"",className:["relative z-10 inline-flex shrink-0 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[z][A],"rounded-full",k,x,W?"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)",$[R],m,f,"data-[disabled]:cursor-not-allowed",C?"":"data-[disabled]:opacity-50","data-[readonly]:cursor-default",N?"flex-1":"",u??""].filter(Boolean).join(" "),onPointerMove:n(W,g),...b,children:[y(r)?e("span",{className:"flex h-[1lh] shrink-0 items-center",children:r}):null,h,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:m,defaultValue:h=null,onValueChange:v,disabled:b=!1,readOnly:y=!1,name:x,fullWidth:w=!1,className:$,style:A,children:z,"aria-label":N,"aria-labelledby":C,...O},S){const W=o(),B=l(b),E=i??W.size??"md",F=c??W.color??"primary",M=p??W.density??"default",[V,q]=a.useState(h),I=void 0!==m,G=I?m:V,H=a.useRef(null),L=a.useRef(null),T=a.useRef(!1);a.useEffect(()=>{T.current=!0},[]);const D=a.useRef(0),J=a.useCallback(e=>{L.current=e,e&&!T.current&&e.setAttribute("data-placed","")},[]),K=a.useCallback(e=>{const t=H.current,a=L.current;if(!t||!a)return;const s=t.querySelector("[data-segment][data-checked]");if(!s)return;const r=s.offsetLeft,l=s.offsetTop,n=s.offsetWidth,o=s.offsetHeight,i=!e||!a.hasAttribute("data-ready");i&&(cancelAnimationFrame(D.current),a.removeAttribute("data-ready")),a.style.setProperty("--p-seg-x",`${r}px`),a.style.setProperty("--p-seg-y",`${l}px`),a.style.setProperty("--p-seg-w",`${n}px`),a.style.setProperty("--p-seg-h",`${o}px`),a.setAttribute("data-placed",""),i&&(D.current=requestAnimationFrame(()=>{a.setAttribute("data-ready","")}))},[]);a.useEffect(()=>()=>cancelAnimationFrame(D.current),[]),s(H,[G,n,E,M,w],()=>K(!0),L),a.useEffect(()=>{const e=H.current;if(!e)return;const t=new ResizeObserver(()=>K(!1));return t.observe(e),()=>t.disconnect()},[K]);const Q=a.useMemo(()=>({variant:n,size:E,density:M,fullWidth:w,disabled:B,readOnly:y}),[n,E,M,w,B,y]);return e(j.Provider,{value:Q,children:t(d,{ref:e=>{H.current=e,"function"==typeof S?S(e):S&&(S.current=e)},value:G,onValueChange:e=>{const t=e??null;I||q(t),v?.(t)},disabled:B,readOnly:y,name:x,className:["relative inline-flex items-center rounded-full",P[n],k,y?"saturate-[0.55]":"",B?"opacity-50 saturate-[0.35]":"",w?"flex w-full":"",$??""].filter(Boolean).join(" "),style:{...u(F,f,n),...A},...r(N,C),...O,children:[null!=G?e("span",{ref:J,"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)",R[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,z]})})});
@@ -1 +1 @@
1
- "use client";import{jsx as e,jsxs as a}from"react/jsx-runtime";import*as t from"react";import{useDisabled as l}from"../../internal/form.js";import{useDefaults as s}from"../../internal/defaults.js";import{Select as r}from"@base-ui/react/select";import{Field as n}from"@base-ui/react/field";import{CheckIcon as o,ChevronIcon as i}from"../../internal/icons.js";import{WidthSizer as c}from"../../internal/sizer.js";import{textOf as d}from"../../internal/text.js";import{glowPointerMove as m}from"../../internal/glow.js";import{FieldNotch as p,floatControlClassName as u,floatPlaceholderClassName as f,notchShellStyle as h,resolveNotch as g}from"../../internal/notch.js";import{hotKeyHandler as v}from"../../internal/keys.js";import{controlHeightClasses as b,controlTextLeadingClasses as x,cx as y,disabledClasses as j,fieldDescriptionClasses as N,fieldReadOnlyClasses as w,fieldRestClasses as P,fieldSlots as S,focusWithinRingClasses as z,forcedHighlightedClasses as I,gapClasses as O,glassClasses as V,hasContent as k,iconClasses as M,metaTextClasses as R,paddingXClasses as $,radiusClasses as _,stackGapClasses as C,surfaceSlots as D,transitionClasses as E}from"../../internal/styles.js";const T=/* @__PURE__ */["group relative flex w-full cursor-pointer items-center select-none","[-webkit-tap-highlight-color:transparent] [touch-action:manipulation]",E,M].join(" "),q=z,B=/* @__PURE__ */[V,"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(" "),K=/* @__PURE__ */["relative flex cursor-pointer items-center gap-2 select-none","rounded-(--plass-radius-xs) py-1.5 pe-2 ps-7",E,"data-[highlighted]:bg-(--p-soft-hover) data-[highlighted]:text-(--p-accent)",I,"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__ */t.forwardRef(function PlSelect({variant:z="glass",size:I,color:V,density:M,elevation:E=0,items:W,value:L,defaultValue:A,onValueChange:F,placeholder:G,label:H,labelPlacement:J,description:Q,error:U,invalid:X,startIcon:Y,fullWidth:Z=!1,disabled:ee=!1,readOnly:ae=!1,required:te=!1,name:le,id:se,className:re,hotKeys:ne,classNames:oe,style:ie,...ce},de){const me=s(),pe=l(ee),ue=I??me.size??"md",fe=V??me.color??"primary",he=M??me.density??"default",ge=J??me.labelPlacement??"top",{notched:ve,float:be}=g(ge,H,k(Y)),xe=k(U),ye=X??xe,je=ye?"danger":fe,Ne=!pe&&!ae,we=t.useMemo(()=>W.map(e=>({label:e.label??String(e.value),value:e.value})),[W]),[Pe,Se]=t.useState(!1);t.useEffect(()=>{ae&&Se(!1)},[ae]);const ze=t.useRef(null),Ie=be?d(H):"",Oe=t.useMemo(()=>Z?[]:[...W.map(e=>e.label??String(e.value)),G].map(d).concat(Ie).filter(e=>""!==e),[Z,W,G,Ie]),Ve=e(n.Label,{className:y(R[ue],"font-semibold",pe?"text-(--plass-muted-fg)":"text-(--plass-fg)",oe?.label),children:H});return a(n.Root,{disabled:pe,invalid:ye,className:["flex-col align-top",C[ue],Z?"flex w-full":"inline-flex",re??""].filter(Boolean).join(" "),style:{...S(je,E),...ie},...ce,children:[k(H)&&!ve?Ve:null,a(r.Root,{id:se,name:le,items:we,value:L,defaultValue:A,onValueChange:e=>F?.(e),disabled:pe,readOnly:ae,required:te,open:Pe&&!ae,onOpenChange:(e,a)=>Se(e&&!ae&&a.event!==ze.current),children:[e(p,{notched:ve,size:ue,density:he,variant:z,disabled:pe,readOnly:ae,float:be,label:Ve,children:a(r.Trigger,{ref:de,onKeyDown:v(ne,void 0),onMouseDown:e=>{ze.current=ae?e.nativeEvent:null},onPointerMove:m(Ne),style:ve?h:void 0,className:[T,ve?"":q,b[ue],x[ue],_[ue],O[ue],$[he][ue],pe?j[z]:ae?`${w[z]} cursor-default`:P[z],Ne?"plass-glow":"",be?u:"",oe?.control].filter(Boolean).join(" "),children:[Y?e("span",{className:"flex h-[1lh] shrink-0 items-center text-(--plass-muted-fg)",children:Y}):null,a("span",{className:"flex min-w-0 flex-1 flex-col",children:[e(r.Value,{className:["w-full truncate text-start","data-[placeholder]:text-(--plass-muted-fg)",be?f:""].join(" "),placeholder:G}),e(c,{samples:Oe})]}),e(r.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(i,{})})]})}),e(r.Portal,{children:e(r.Positioner,{className:"plass-portal z-(--plass-z-portal) [outline:none]",sideOffset:6,alignItemWithTrigger:!1,children:e(r.Popup,{className:`${B} ${_[ue]} ${x[ue]}`,style:D(je,3),children:W.map(t=>a(r.Item,{value:t.value,disabled:t.disabled,className:K,children:[e(r.ItemIndicator,{className:"absolute start-1.5 flex size-4 items-center justify-center",children:e(o,{})}),e(r.ItemText,{className:"truncate",children:t.label??String(t.value)})]},String(t.value)))})})})]}),Q?e(n.Description,{className:y(N(ue),oe?.description),children:Q}):null,e(n.Error,xe?{match:!0,className:y(R[ue],"text-(--p-accent)",oe?.error),children:U}:{className:y(R[ue],"text-(--p-accent)",oe?.error)})]})});
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{useLabels as o}from"../../internal/labels.js";import{beginPointerDrag as i}from"../../internal/drag.js";import{PlDrawer as a}from"../drawer/PlDrawer.js";import{drawerSide as s,expandedOnlyClasses as l,PlPageLayoutContext as u,PlassSidebarSideContext as d,useCollapsed as c}from"../../internal/page-layout.js";import{cx as p,sheetPaddingXClasses as m,sheetPaddingYClasses as f,sheetRestClasses as b,surfaceSlots as h,toLength as v,transitionClasses as x}from"../../internal/styles.js";const y={xs:"11rem",sm:"13rem",md:"16rem",lg:"18rem",xl:"21rem"},g=b;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:b,width:w,minWidth:z=160,maxWidth:C=480,resizable:R=!1,onResize:j,onResizeEnd:N,collapseBelow:P,open:S,defaultOpen:k=!1,onOpenChange:M,sticky:A=!0,title:B,variant:D="glass",size:E,color:L,density:O,elevation:I=0,divider:W=!0,padded:T=!0,label:X,closeLabel:$,resizeLabel:_,className:F,style:K,children:q,...G},H){const J=n(),Q=o(),U=X??Q.sidebar,V=$??Q.sidebarClose,Y=_??Q.sidebarResize,Z=E??J.size??"md",ee=L??J.color??"primary",te=O??J.density??"default",re=r.useContext(u),ne=r.useContext(d),oe=b??ne??"start",ie=P??(re.present?re.collapseBelow:"none"),ae=c(ie),[se,le]=r.useState(k),ue=void 0!==S,de=ue?S:re.present?re.open[oe]:se,ce=v(w)??y[Z],pe=r.useRef(null),me=r.useCallback(e=>{pe.current=e,"function"==typeof H?H(e):H&&(H.current=e)},[H]),fe=r.useRef(null);r.useEffect(()=>()=>fe.current?.(),[]);const be=r.useRef(null),he=toPixels(z,160),ve=toPixels(C,480),xe=Math.min(ve,Math.max(he,Math.round(toPixels(ce,he)))),applyWidth=e=>{const t=pe.current;if(!t)return e;const r=Math.min(ve,Math.max(he,Math.round(e)));return t.style.setProperty("--p-sidebar-w",`${r}px`),be.current?.setAttribute("aria-valuenow",String(r)),r};return ae?e(a,{side:s(oe,J.direction),mode:"overlay",open:de,onOpenChange:e=>{ue||(re.present?re.setOpen(oe,e):le(e)),M?.(e)},title:B,size:Z,color:ee,density:te,closeLabel:V,extent:void 0===w?void 0:ce,"aria-label":B?void 0:U,className:F,style:K,children:q}):t("aside",{ref:me,"aria-label":U,className:p("relative flex min-w-0 shrink-0 flex-col","w-(--p-sidebar-w)",g[D],W?p("start"===oe?"border-e":"border-s","[border-color:var(--plass-divider)]"):"","content"===re.scroll?"h-full":A?p("self-start","sticky [top:var(--p-layout-header,0px)]","[height:calc(100dvh-var(--p-layout-header,0px)-var(--p-layout-footer,0px))]"):"",l[ie],x,F),style:{...h(ee,I),"--p-sidebar-w":ce,...K},...G,children:[e("div",{className:p("min-h-0 flex-1 overflow-y-auto overscroll-contain",T?p(m[te][Z],f[te][Z]):""),children:q}),R?e("div",{ref:be,role:"separator","aria-orientation":"vertical","aria-label":Y,"aria-valuenow":xe,"aria-valuemin":he,"aria-valuemax":ve,tabIndex:0,className:p("absolute inset-y-0 z-1 w-2 cursor-col-resize touch-none","start"===oe?"end-0 -me-1":"start-0 -ms-1","bg-transparent hover:bg-(--p-soft) data-[dragging]:bg-(--p-soft)",x,"[outline:none] focus-visible:[outline:2px_solid_var(--p-ring)]","focus-visible:[outline-offset:0px]"),onPointerDown:e=>{const t=pe.current;if(!t||0!==e.button)return;const r=e.clientX,n=t.getBoundingClientRect().width,o="rtl"===getComputedStyle(t).direction,a="start"===oe===o?-1:1;let s=n;fe.current=i({target:e.currentTarget,pointerId:e.pointerId,onMove:e=>{s=applyWidth(n+(e.clientX-r)*a),j?.(s)},onEnd:()=>{fe.current=null,N?.(s)}})},onKeyDown:e=>{if("ArrowLeft"!==e.key&&"ArrowRight"!==e.key)return;e.preventDefault();const t="rtl"===getComputedStyle(e.currentTarget).direction,r="start"===oe===t?-1:1;(e=>{const t=pe.current;if(!t)return;const r=t.getBoundingClientRect().width,n=applyWidth(r+e);n!==r&&(j?.(n),N?.(n))})(("ArrowRight"===e.key?16:-16)*r)}}):null]})});
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})})});
@@ -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 is named by `label`.
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 r}from"react/jsx-runtime";import*as a from"react";import{useDisabled as l}from"../../internal/form.js";import{useDefaults as o}from"../../internal/defaults.js";import{Slider as s}from"@base-ui/react/slider";import{controlSlots as t,focusRingClasses as i,forcedFieldEdgeClasses as n,forcedFillClasses as d,metaTextClasses as c}from"../../internal/styles.js";const u={xs:"h-1",sm:"h-1.5",md:"h-1.5",lg:"h-2",xl:"h-2.5"},m={xs:"w-1",sm:"w-1.5",md:"w-1.5",lg:"w-2",xl:"w-2.5"},f={xs:"size-3",sm:"size-3.5",md:"size-4.5",lg:"size-5",xl:"size-6"},p={xs:"h-4",sm:"h-4.5",md:"h-5",lg:"h-6",xl:"h-7"},g={xs:"w-4",sm:"w-4.5",md:"w-5",lg:"w-6",xl:"w-7"},h=`rounded-full bg-(--plass-track) ${n}`,x=/* @__PURE__ */["[transition-duration:var(--plass-duration)]","[transition-timing-function:var(--plass-ease)]","data-[dragging]:[transition-duration:0ms]","motion-reduce:[transition-duration:0ms]"].join(" "),b=/* @__PURE__ */["rounded-full [background-image:var(--p-fill)]",d,"forced-colors:data-[disabled]:[background-color:GrayText]","[transition-property:width,height,inset-inline-start,bottom,filter,opacity]",x].join(" "),v=/* @__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]",x,"hover:[box-shadow:var(--p-elev-hover),var(--p-lift-hover),0_0_0_4px_var(--p-soft)]",i,"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__ */a.forwardRef(function PlSlider({size:i,color:n,elevation:d=1,orientation:x="horizontal",label:w,description:y,getAriaLabel:j,getAriaValueText:N,showValue:$=!1,disabled:_=!1,className:z,style:k,...A},T){const V=a.useId(),C=o(),L=l(_),S=i??C.size??"md",G=n??C.color??"primary",I="vertical"===x,P=A.value??A.defaultValue,R=Array.isArray(P)?P.length:1;return r(s.Root,{ref:T,orientation:x,disabled:L,className:["flex",I?"w-fit flex-col items-center gap-2":"w-full flex-col gap-1.5",L?"opacity-50 saturate-[0.35] [&_*]:cursor-not-allowed":"",z??""].filter(Boolean).join(" "),style:{...t(G,d,"solid"),...k},...A,children:[w||$?r("div",{className:`flex w-full items-baseline gap-2 ${c[S]}`,children:[w?e(s.Label,{className:"font-semibold text-(--plass-fg)",children:w}):null,$?e(s.Value,{className:"ms-auto tabular-nums text-(--plass-muted-fg)",children:"function"==typeof $?$:null}):null]}):null,e(s.Control,{className:["flex touch-none items-center justify-center select-none",I?`${g[S]} h-40 flex-col`:`w-full ${p[S]}`].join(" "),children:r(s.Track,{className:[h,I?`${m[S]} h-full`:`${u[S]} w-full`].join(" "),children:[e(s.Indicator,{className:b}),Array.from({length:R},(r,a)=>e(s.Thumb,{index:a,getAriaLabel:j,getAriaValueText:N,"aria-describedby":y?V:void 0,className:`${v} ${f[S]}`},a))]})}),y?e("div",{id:V,className:`${c[S]} text-(--plass-muted-fg)`,children:y}):null]})});
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]})});
@@ -1,6 +1,7 @@
1
1
  import * as React from 'react';
2
+ import { type ChartBaseProps } from '../../internal/chart-frame.js';
2
3
  import type { PlassChartCurve, PlassChartDatum, PlassColor, PlassSize } from '../../types.js';
3
- export interface PlSparklineProps extends Omit<React.ComponentPropsWithoutRef<'div'>, 'color' | 'children'> {
4
+ export interface PlSparklineProps extends Omit<React.ComponentPropsWithoutRef<'div'>, 'color' | 'children'>, Pick<ChartBaseProps, 'initialWidth'> {
4
5
  /** The values. `null` is a gap, exactly as it is on every other chart. */
5
6
  data: readonly PlassChartDatum[];
6
7
  /**
@@ -46,9 +47,20 @@ export interface PlSparklineProps extends Omit<React.ComponentPropsWithoutRef<'d
46
47
  min?: number;
47
48
  /** And the top of it. */
48
49
  max?: number;
49
- /** How wide. Fills its container by default. */
50
+ /**
51
+ * How wide. Fills its container by default.
52
+ *
53
+ * A number is the width the strip is drawn at from the first render, the
54
+ * server's included, so `initialWidth` only matters for any other length.
55
+ */
50
56
  width?: number | string;
51
- /** A name for the strip, read out in place of it. */
57
+ /**
58
+ * A name for the strip, read out in place of it.
59
+ *
60
+ * An `aria-label` names the strip in its place and an `aria-labelledby`
61
+ * outranks both. With none of the three the strip is decoration, and is
62
+ * taken off the accessibility tree.
63
+ */
52
64
  label?: string;
53
65
  }
54
66
  /**
@@ -1 +1 @@
1
- "use client";import{jsx as l,jsxs as a}from"react/jsx-runtime";import*as e from"react";import{areaPath as r,barMaxThickness as t,barPath as i,barRadius as n,extentOf as s,linePath as o,lineWidths as h,markerRadii as m,markGap as u,resolveColor as c,sparklineHeights as d,toValue as p,writeChartValue as f}from"../../internal/chart.js";import{useMeasuredWidth as v}from"../../internal/chart-frame.js";import{useDefaults as x}from"../../internal/defaults.js";import{cx as b,srOnlyClasses as k}from"../../internal/styles.js";export const PlSparkline=/* @__PURE__ */e.forwardRef(function PlSparkline({data:M,shape:g="line",curve:j="linear",size:w,color:$,endDot:N=!1,baseline:P,min:W,max:z,width:C,label:L,className:R,style:S,...B},D){const G=x(),I=w??G.size??"md",q=e.useRef(null),A=v(q),E=e.useId().replace(/:/g,""),F=e.useMemo(()=>M.map(p),[M]),H=d[I],J=h[I],K=m[I],O=s([F],!1),Q=W??(O?Math.min(O.min,P??O.min):0),T=z??(O?Math.max(O.max,P??O.max):1),U=T-Q||1,V="number"==typeof C?C:A,X=c($??"var(--plass-chart-1)"),Y="bar"===g?0:J/2+(N?K:0),Z=Math.max(1,H-2*Y),y=l=>Y+(1-(l-Q)/U)*Z,_=F.length>1?V/(F.length-1):V,ll=F.map((l,a)=>null===l.value?null:{x:a*_,y:y(l.value)}),al=(()=>{for(let l=F.length-1;l>=0;l--)if(null!==F[l].value)return l;return-1})(),el=al>=0?F[al].value:null,rl=null!==el&&el>=Q&&el<=T,tl=V/Math.max(1,F.length),il=Math.min(t[I]/2,Math.max(1,tl-u)),nl=y(Math.min(Math.max(Q,0),T)),barTop=l=>{const a=Math.min(y(l),nl);return Math.abs(y(l)-nl)<1?Math.min(a,H-1):a};return a("div",{ref:D,className:b("relative block",R??void 0),style:{width:C??"100%",height:H,...S},...B,children:[l("div",{ref:q,className:"absolute inset-0",children:V>0&&F.length>0?a("svg",{width:V,height:H,viewBox:`0 0 ${V} ${H}`,role:L?"img":"presentation","aria-label":L,"aria-hidden":!L||void 0,className:"block overflow-visible",children:[a("defs",{children:[l("clipPath",{id:`${E}-strip`,children:l("rect",{x:-V,y:0,width:3*V,height:H})}),"area"===g?a("linearGradient",{id:`${E}-fill`,x1:"0",y1:"0",x2:"0",y2:"1",children:[l("stop",{offset:"0%",stopColor:`color-mix(in oklab, ${X} 32%, transparent)`}),l("stop",{offset:"100%",stopColor:`color-mix(in oklab, ${X} 2%, transparent)`})]}):null]}),a("g",{clipPath:`url(#${E}-strip)`,children:["area"===g?l("path",{d:r(ll,H,j),fill:`url(#${E}-fill)`}):null,void 0!==P?l("line",{x1:0,x2:V,y1:y(P),y2:y(P),stroke:"var(--plass-chart-baseline)",strokeWidth:1}):null,"bar"===g?F.map((a,e)=>null===a.value?null:l("path",{d:i(e*tl+(tl-il)/2,barTop(a.value),il,Math.max(1,Math.abs(y(a.value)-nl)),n/2,a.value>=0?"up":"down"),fill:a.color??X},e)):l("path",{d:o(ll,j),fill:"none",stroke:X,strokeWidth:J,strokeLinecap:"round",strokeLinejoin:"round"})]}),N&&rl&&"bar"!==g?l("circle",{cx:ll[al].x,cy:ll[al].y,r:K,fill:X,stroke:"var(--plass-chart-gap)",strokeWidth:u}):null]}):null}),L?l("span",{className:k,children:F.map(l=>null===l.value?"—":f(l.value,void 0,G.locale)).join(", ")}):null]})});
1
+ "use client";import{jsx as l,jsxs as a}from"react/jsx-runtime";import*as e from"react";import{areaPath as i,barMaxThickness as r,barPath as t,barRadius as n,extentOf as o,linePath as s,lineWidths as h,markerRadii as d,markGap as m,resolveColor as u,sparklineHeights as c,toValue as p,writeChartValue as f}from"../../internal/chart.js";import{useMeasuredSize as v}from"../../internal/chart-frame.js";import{useDefaults as b,useLocale as x}from"../../internal/defaults.js";import{cx as g,srOnlyClasses as k}from"../../internal/styles.js";export const PlSparkline=/* @__PURE__ */e.forwardRef(function PlSparkline({data:M,shape:w="line",curve:j="linear",size:$,color:N,endDot:P=!1,baseline:W,min:z,max:B,width:C,initialWidth:L,label:R,"aria-label":S,"aria-labelledby":D,"aria-describedby":G,className:I,style:q,...A},E){const F=b(),H=x(),J=$??F.size??"md",K=e.useRef(null),{width:O,guessed:Q}=v(K,L),T=e.useId().replace(/:/g,""),U=S||R,V=Boolean(D||U),X=e.useMemo(()=>M.map(p),[M]),Y=c[J],Z=h[J],_=d[J],ll=o([X],!1),al=z??(ll?Math.min(ll.min,W??ll.min):0),el=B??(ll?Math.max(ll.max,W??ll.max):1),il=el-al||1,rl="number"==typeof C,tl=rl?C:O,nl=u(N??"var(--plass-chart-1)"),ol="bar"===w?0:Z/2+(P?_:0),sl=Math.max(1,Y-2*ol),y=l=>ol+(1-(l-al)/il)*sl,hl=X.length>1?tl/(X.length-1):tl,dl=X.map((l,a)=>null===l.value?null:{x:a*hl,y:y(l.value)}),ml=(()=>{for(let l=X.length-1;l>=0;l--)if(null!==X[l].value)return l;return-1})(),ul=ml>=0?X[ml].value:null,cl=null!==ul&&ul>=al&&ul<=el,pl=tl/Math.max(1,X.length),fl=Math.min(r[J]/2,Math.max(1,pl-m)),vl=y(Math.min(Math.max(al,0),el)),barTop=l=>{const a=Math.min(y(l),vl);return Math.abs(y(l)-vl)<1?Math.min(a,Y-1):a};return a("div",{ref:E,className:g("relative block",I??void 0),style:{width:C??"100%",height:Y,...q},...A,children:[l("div",{ref:K,className:g("absolute inset-0",Q&&!rl&&"overflow-hidden"),children:tl>0&&X.length>0?a("svg",{width:tl,height:Y,viewBox:`0 0 ${tl} ${Y}`,role:V?"img":"presentation","aria-labelledby":D||void 0,"aria-label":U||void 0,"aria-describedby":V&&G||void 0,"aria-hidden":!V||void 0,className:"block overflow-visible",children:[a("defs",{children:[l("clipPath",{id:`${T}-strip`,children:l("rect",{x:-tl,y:0,width:3*tl,height:Y})}),"area"===w?a("linearGradient",{id:`${T}-fill`,x1:"0",y1:"0",x2:"0",y2:"1",children:[l("stop",{offset:"0%",stopColor:`color-mix(in oklab, ${nl} 32%, transparent)`}),l("stop",{offset:"100%",stopColor:`color-mix(in oklab, ${nl} 2%, transparent)`})]}):null]}),a("g",{clipPath:`url(#${T}-strip)`,children:["area"===w?l("path",{d:i(dl,Y,j),fill:`url(#${T}-fill)`}):null,void 0!==W?l("line",{x1:0,x2:tl,y1:y(W),y2:y(W),stroke:"var(--plass-chart-baseline)",strokeWidth:1}):null,"bar"===w?X.map((a,e)=>null===a.value?null:l("path",{d:t(e*pl+(pl-fl)/2,barTop(a.value),fl,Math.max(1,Math.abs(y(a.value)-vl)),n/2,a.value>=0?"up":"down"),fill:a.color??nl},e)):l("path",{d:s(dl,j),fill:"none",stroke:nl,strokeWidth:Z,strokeLinecap:"round",strokeLinejoin:"round"})]}),P&&cl&&"bar"!==w?l("circle",{cx:dl[ml].x,cy:dl[ml].y,r:_,fill:nl,stroke:"var(--plass-chart-gap)",strokeWidth:m}):null]}):null}),V?l("span",{className:k,children:X.map(l=>null===l.value?"—":f(l.value,void 0,H)).join(", ")}):null]})});
@@ -25,6 +25,17 @@ export interface PlStepperProps extends Omit<React.ComponentPropsWithoutRef<'div
25
25
  orientation?: PlassResponsive<PlassOrientation>;
26
26
  /** How the line between two steps is drawn. @default 'solid' */
27
27
  connector?: PlStepConnector;
28
+ /**
29
+ * Keeps every step's panel in the document, hidden while `active` is on
30
+ * another step, rather than only the panel of the step it is on.
31
+ *
32
+ * For panels a search engine should read: the others are otherwise not in
33
+ * the HTML a server sends. A kept panel is `hidden`, so it is out of the
34
+ * layout, the focus order and the accessibility tree, and what it holds
35
+ * survives the reader stepping away from it. Off by default.
36
+ * @default false
37
+ */
38
+ keepMounted?: boolean;
28
39
  /** @default 'md' */
29
40
  size?: PlassSize;
30
41
  /** @default 'primary' */
@@ -1 +1 @@
1
- "use client";import{jsx as e,jsxs as l}from"react/jsx-runtime";import*as t from"react";import{useDefaults as r}from"../../internal/defaults.js";import{bulletGapClasses as n,bulletSizeValues as s,bulletStatusClasses as a,connectorColorClasses as i,connectorStyleClasses as o,statusAt as c,titleStatusClasses as d}from"../../internal/steps.js";import{cx as p,focusRingClasses as m,hasContent as u,iconClasses as f,metaTextClasses as x,radiusClasses as h,sheetBodyClasses as v,sheetTitleClasses as b,surfaceSlots as N,transitionClasses as y}from"../../internal/styles.js";import{useLabels as w}from"../../internal/labels.js";import{useResponsiveValue as z}from"../../internal/responsive.js";const g=/* @__PURE__ */t.createContext(null),j=/* @__PURE__ */t.createContext({index:0,last:!1});function StepTick(){return e("svg",{viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",className:"size-[0.7em]",children:e("path",{d:"m3.5 8.5 3 3 6-7",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round"})})}export const PlStepper=/* @__PURE__ */t.forwardRef(function PlStepper({active:n,defaultActive:s=0,onActiveChange:a,linear:i=!0,orientation:o,connector:c="solid",size:d,color:m,density:f,className:x,style:h,children:b,...y},w){const k=z(o,"horizontal"),C=r(),S=d??C.size??"md",$=m??C.color??"primary",P=f??C.density??"default",[I,A]=t.useState(s),L=n??I,R=t.useId(),T=t.useCallback(e=>{void 0===n&&A(e),a?.(e)},[n,a]),B=t.Children.toArray(b),M=B.length,W=t.useMemo(()=>({size:S,density:P,orientation:k,color:$,active:L,linear:i,connector:c,baseId:R,onSelect:T}),[S,P,k,$,L,i,c,R,T]),q="horizontal"===k,D=q?B[L]?.props?.children:null;return e(g.Provider,{value:W,children:l("div",{ref:w,className:p("flex w-full flex-col",x),style:{...N($,0),...h},...y,children:[e("ol",{role:"list",className:p("m-0 flex w-full list-none p-0",q?"flex-row":"flex-col"),children:B.map((l,t)=>e(j.Provider,{value:{index:t,last:t===M-1},children:l},t))}),u(D)?e("div",{role:"group","aria-labelledby":`${R}-${L}`,className:p("mt-4",v[S]),children:D}):null]})})});export const PlStep=/* @__PURE__ */t.forwardRef(function PlStep({label:r,description:z,bullet:k,status:C,optional:S,disabled:$=!1,color:P,className:I,children:A,...L},R){const T=t.useContext(g),{index:B,last:M}=t.useContext(j),W=w(),q=T?.size??"md",D=T?.orientation??"horizontal",E=P??T?.color??"primary",F=T?.active??null,G=T?.connector??"solid",H=C??c(B,F),J="horizontal"===D,K=!$&&null!==T&&(!T.linear||B<=T.active),O="none"!==G&&!M,Q=e("span",{"aria-hidden":"true",className:p("relative z-10 flex shrink-0 items-center justify-center rounded-full","size-(--p-bullet) text-[calc(var(--p-bullet)*0.5)] leading-none font-semibold tabular-nums",a[H],y,f),children:k??("complete"===H?e(StepTick,{}):B+1)}),U=l("span",{className:p("flex min-w-0 flex-col",J?"items-center text-center":""),children:[e("span",{id:T?`${T.baseId}-${B}`:void 0,className:p("font-semibold",b[q],d[H],y),children:r}),u(z)?e("span",{className:p("text-(--plass-muted-fg)",x[q]),children:z}):null,S?e("span",{className:p("text-(--plass-muted-fg) italic",x[q]),children:!0===S?W.optional:S}):null]}),V=l("span",{className:p("flex items-center",J?"flex-col":"flex-row",n[q]),children:[Q,J?U:null]}),X=K?l("button",{type:"button","aria-current":"current"===H?"step":void 0,onClick:()=>T?.onSelect(B),className:p("flex cursor-pointer items-center bg-transparent p-1",J?"flex-col":"flex-row",n[q],h[q],m,y,"hover:bg-(--p-soft)"),children:[J?V:Q,J?null:U]}):l("span",{"aria-current":"current"===H?"step":void 0,className:p("flex items-center p-1",J?"flex-col":"flex-row",n[q],$?"opacity-50":""),children:[J?V:Q,J?null:U]});return l("li",{ref:R,className:p("relative flex min-w-0",J?"flex-1 flex-col items-center":"flex-col",I),style:{"--p-bullet":s[q],...N(E,0),"--p-fill":`var(--plass-${E}-fill)`,"--p-on-solid":`var(--plass-${E}-on-solid)`},...L,children:[l("span",{className:p("flex w-full",J?"flex-row items-start":"flex-col"),children:[X,O?e("span",{"aria-hidden":"true",className:p(J?"mt-[calc(var(--p-bullet)/2+0.25rem)] h-0 flex-1 border-t":"ms-[calc(var(--p-bullet)/2+0.25rem)] w-0 flex-1 self-stretch border-s",o[G],i[H],y)}):null]}),!J&&B===F&&u(A)?e("div",{role:"group","aria-labelledby":T?`${T.baseId}-${B}`:void 0,className:p("ms-[calc(var(--p-bullet)+0.75rem)] pt-2 pb-4",v[q]),children:A}):null]})});
1
+ "use client";import{jsx as e,jsxs as l}from"react/jsx-runtime";import*as t from"react";import{useDefaults as n}from"../../internal/defaults.js";import{bulletGapClasses as r,bulletSizeValues as s,bulletStatusClasses as o,connectorColorClasses as a,connectorStyleClasses as i,statusAt as c,titleStatusClasses as d}from"../../internal/steps.js";import{cx as u,focusRingClasses as p,hasContent as f,iconClasses as m,metaTextClasses as x,radiusClasses as h,sheetBodyClasses as v,sheetTitleClasses as b,surfaceSlots as w,transitionClasses as N}from"../../internal/styles.js";import{useLabels as g}from"../../internal/labels.js";import{useResponsiveValue as y}from"../../internal/responsive.js";const k=/* @__PURE__ */t.createContext(null),z=/* @__PURE__ */t.createContext({index:0,last:!1});function StepTick(){return e("svg",{viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",className:"size-[0.7em]",children:e("path",{d:"m3.5 8.5 3 3 6-7",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round"})})}function followPanelFocus(){const e=new Map,l=new Map,t=new Map,n=new Map;let r=!1,s=null;const holdsFocus=e=>Boolean(e?.contains(e.ownerDocument.activeElement));return{step(e){let t=n.get(e);return t||(t=t=>{t?l.set(e,t):l.delete(e)},n.set(e,t)),t},ref(l){let n=t.get(l);return n||(n=t=>{t?e.set(l,t):(r||=holdsFocus(e.get(l)),e.delete(l))},t.set(l,n)),n},settle(t){const n=s,o=r||null!==n&&holdsFocus(e.get(n));s=t,r=!1,null!==n&&n!==t&&o&&(e.get(t)??l.get(t))?.focus()}}}export const PlStepper=/* @__PURE__ */t.forwardRef(function PlStepper({active:r,defaultActive:s=0,onActiveChange:o,linear:a=!0,orientation:i,connector:c="solid",keepMounted:d=!1,size:p,color:m,density:x,className:h,style:b,children:N,...g},j){const S=y(i,"horizontal"),C=n(),M=p??C.size??"md",P=m??C.color??"primary",$=x??C.density??"default",[I,R]=t.useState(s),A=r??I,L=t.useId(),B=t.useCallback(e=>{void 0===r&&R(e),o?.(e)},[r,o]),[E]=t.useState(followPanelFocus);t.useLayoutEffect(()=>{E.settle(A)});const F=t.Children.toArray(N),T=F.length,D=t.useMemo(()=>({size:M,density:$,orientation:S,color:P,active:A,linear:a,connector:c,keepMounted:d,baseId:L,onSelect:B,panelRef:E.ref,stepRef:E.step}),[M,$,S,P,A,a,c,d,L,B,E]),W="horizontal"===S,panelAt=(l,t)=>{const n=F[l]?.props?.children;return f(n)?e("div",{ref:E.ref(l),role:"group","aria-labelledby":`${L}-${l}`,hidden:l!==A,tabIndex:-1,className:u("mt-4 outline-none",v[M]),children:n},t):null};return e(k.Provider,{value:D,children:l("div",{ref:j,className:u("flex w-full flex-col",h),style:{...w(P,0),...b},...g,children:[e("ol",{role:"list",className:u("m-0 flex w-full list-none p-0",W?"flex-row":"flex-col"),children:F.map((l,t)=>e(z.Provider,{value:{index:t,last:t===T-1},children:l},t))}),W?d?F.map((e,l)=>panelAt(l,l)):panelAt(A,A):null]})})});export const PlStep=/* @__PURE__ */t.forwardRef(function PlStep({label:n,description:y,bullet:j,status:S,optional:C,disabled:M=!1,color:P,className:$,children:I,...R},A){const L=t.useContext(k),{index:B,last:E}=t.useContext(z),F=g(),T=L?.size??"md",D=L?.orientation??"horizontal",W=P??L?.color??"primary",q=L?.active??null,G=L?.connector??"solid",H=L?.keepMounted??!1,J=S??c(B,q),K="horizontal"===D,O=!M&&null!==L&&(!L.linear||B<=L.active),Q="none"!==G&&!E,U=e("span",{"aria-hidden":"true",className:u("relative z-10 flex shrink-0 items-center justify-center rounded-full","size-(--p-bullet) text-[calc(var(--p-bullet)*0.5)] leading-none font-semibold tabular-nums",o[J],N,m),children:j??("complete"===J?e(StepTick,{}):B+1)}),V=l("span",{className:u("flex min-w-0 flex-col",K?"items-center text-center":""),children:[e("span",{id:L?`${L.baseId}-${B}`:void 0,className:u("font-semibold",b[T],d[J],N),children:n}),f(y)?e("span",{className:u("text-(--plass-muted-fg)",x[T]),children:y}):null,C?e("span",{className:u("text-(--plass-muted-fg) italic",x[T]),children:!0===C?F.optional:C}):null]}),X=l("span",{className:u("flex items-center",K?"flex-col":"flex-row",r[T]),children:[U,K?V:null]}),Y=O?l("button",{ref:L?.stepRef(B),type:"button","aria-current":"current"===J?"step":void 0,onClick:()=>L?.onSelect(B),className:u("flex cursor-pointer items-center bg-transparent p-1",K?"flex-col":"flex-row",r[T],h[T],p,N,"hover:bg-(--p-soft)"),children:[K?X:U,K?null:V]}):l("span",{"aria-current":"current"===J?"step":void 0,className:u("flex items-center p-1",K?"flex-col":"flex-row",r[T],M?"opacity-50":""),children:[K?X:U,K?null:V]});return l("li",{ref:A,className:u("relative flex min-w-0",K?"flex-1 flex-col items-center":"flex-col",$),style:{"--p-bullet":s[T],...w(W,0),"--p-fill":`var(--plass-${W}-fill)`,"--p-on-solid":`var(--plass-${W}-on-solid)`},...R,children:[l("span",{className:u("flex w-full",K?"flex-row items-start":"flex-col"),children:[Y,Q?e("span",{"aria-hidden":"true",className:u(K?"mt-[calc(var(--p-bullet)/2+0.25rem)] h-0 flex-1 border-t":"ms-[calc(var(--p-bullet)/2+0.25rem)] w-0 flex-1 self-stretch border-s",i[G],a[J],N)}):null]}),K||B!==q&&!H||!f(I)?null:e("div",{ref:L?.panelRef(B),role:"group","aria-labelledby":L?`${L.baseId}-${B}`:void 0,hidden:B!==q,tabIndex:-1,className:u("ms-[calc(var(--p-bullet)+0.75rem)] pt-2 pb-4 outline-none",v[T]),children:I})]})});
@@ -1 +1 @@
1
- "use client";import{jsx as e,jsxs as a,Fragment as r}from"react/jsx-runtime";import*as t from"react";import{useDisabled as o}from"../../internal/form.js";import{useDefaults as s}from"../../internal/defaults.js";import{Switch as l}from"@base-ui/react/switch";import{Field as c}from"@base-ui/react/field";import{controlSlots as i,cx as n,fieldDescriptionClasses as d,focusRingClasses as h,hasContent as m,metaTextClasses as p,tickRowTextClasses as f}from"../../internal/styles.js";const u={xs:"h-3.5 w-6",sm:"h-4 w-7",md:"h-5 w-9",lg:"h-6 w-11",xl:"h-7 w-13"},b={xs:"data-[checked]:start-[calc(100%-0.75rem)]",sm:"data-[checked]:start-[calc(100%-0.875rem)]",md:"data-[checked]:start-[calc(100%-1.125rem)]",lg:"data-[checked]:start-[calc(100%-1.375rem)]",xl:"data-[checked]:start-[calc(100%-1.625rem)]"},g=/* @__PURE__ */["relative inline-flex shrink-0 rounded-full","[-webkit-tap-highlight-color:transparent] [touch-action:manipulation]","plass-fill","[transition-property:background-color,box-shadow,filter]","[transition-duration:var(--plass-duration)]","[transition-timing-function:var(--plass-ease)]","motion-reduce:[transition-duration:0ms]",h].join(" "),x=/* @__PURE__ */["forced-colors:border forced-colors:[border-color:CanvasText]","forced-colors:data-[checked]:[background-color:Highlight]"].join(" "),k=/* @__PURE__ */[x,"cursor-pointer bg-(--plass-track)","hover:brightness-[0.97] dark:hover:brightness-110","data-[checked]:[--p-fill-on:1]","data-[checked]:[box-shadow:var(--p-lift)] data-[checked]:hover:brightness-105"].join(" "),w=/* @__PURE__ */[x,"cursor-default bg-(--plass-track) saturate-[0.55]","data-[checked]:[--p-fill-on:1]","data-[checked]:shadow-none"].join(" "),j=/* @__PURE__ */["forced-colors:border forced-colors:[border-color:GrayText]","cursor-not-allowed bg-(--plass-track)","opacity-50 saturate-[0.35] shadow-none","data-[checked]:[--p-fill-on:1]"].join(" "),v=/* @__PURE__ */["absolute inset-y-0.5 start-0.5 aspect-square rounded-full bg-white","[box-shadow:0_1px_2px_rgb(20_40_90/0.25)]","forced-colors:[background-color:CanvasText] forced-colors:data-[checked]:[background-color:HighlightText]","[transition:inset-inline-start_var(--plass-duration)_var(--plass-ease)]","motion-reduce:[transition-duration:0ms]"].join(" ");export const PlSwitch=/* @__PURE__ */t.forwardRef(function PlSwitch({size:t,color:h,label:x,description:N,error:y,invalid:_,labelPlacement:T="end",disabled:P=!1,readOnly:R=!1,className:S,classNames:$,style:z,...B},C){const H=s(),O=o(P),q=t??H.size??"md",D=h??H.color??"primary",E=m(y),F=_??E,G=F?"danger":D,L=e("span",{className:"flex h-[1lh] shrink-0 items-center",children:e(l.Root,{ref:C,className:n(g,u[q],O?j:R?w:k,$?.control),disabled:O,readOnly:R,...B,children:e(l.Thumb,{className:`${v} ${b[q]}`})})}),A=x||N?a("span",{className:["flex min-w-0 flex-col gap-0.5","start"===T?"flex-1":""].filter(Boolean).join(" "),children:[x?e(c.Label,{className:n(O?"text-(--plass-muted-fg)":"cursor-pointer text-(--plass-fg)",$?.label),children:x}):null,N?e(c.Description,{className:n(d(q),$?.description),children:N}):null]}):null;return a(c.Root,{disabled:O,invalid:F,className:["inline-flex flex-col gap-1 align-top",S??""].filter(Boolean).join(" "),style:{...i(G,0,"solid"),...z},children:[e("div",{className:`flex items-start gap-2.5 ${f[q]}`,children:a(r,"start"===T?{children:[A,L]}:{children:[L,A]})}),e(c.Error,E?{match:!0,className:n(p[q],"text-(--p-accent)",$?.error),children:y}:{className:n(p[q],"text-(--p-accent)",$?.error)})]})});
1
+ "use client";import{jsx as a,jsxs as e,Fragment as r}from"react/jsx-runtime";import*as t from"react";import{useDisabled as l,useLabelReference as o}from"../../internal/form.js";import{useDefaults as s}from"../../internal/defaults.js";import{Switch as c}from"@base-ui/react/switch";import{Field as i}from"@base-ui/react/field";import{controlSlots as n,cx as d,fieldDescriptionClasses as h,focusRingClasses as m,hasContent as p,metaTextClasses as f,tickRowTextClasses as u}from"../../internal/styles.js";const b={xs:"h-3.5 w-6",sm:"h-4 w-7",md:"h-5 w-9",lg:"h-6 w-11",xl:"h-7 w-13"},g={xs:"data-[checked]:start-[calc(100%-0.75rem)]",sm:"data-[checked]:start-[calc(100%-0.875rem)]",md:"data-[checked]:start-[calc(100%-1.125rem)]",lg:"data-[checked]:start-[calc(100%-1.375rem)]",xl:"data-[checked]:start-[calc(100%-1.625rem)]"},x=/* @__PURE__ */["relative inline-flex shrink-0 rounded-full","[-webkit-tap-highlight-color:transparent] [touch-action:manipulation]","plass-fill","[transition-property:background-color,box-shadow,filter]","[transition-duration:var(--plass-duration)]","[transition-timing-function:var(--plass-ease)]","motion-reduce:[transition-duration:0ms]",m].join(" "),k=/* @__PURE__ */["forced-colors:border forced-colors:[border-color:CanvasText]","forced-colors:data-[checked]:[background-color:Highlight]"].join(" "),w=/* @__PURE__ */[k,"cursor-pointer bg-(--plass-track)","hover:brightness-[0.97] dark:hover:brightness-110","data-[checked]:[--p-fill-on:1]","data-[checked]:[box-shadow:var(--p-lift)] data-[checked]:hover:brightness-105"].join(" "),j=/* @__PURE__ */[k,"cursor-default bg-(--plass-track) saturate-[0.55]","data-[checked]:[--p-fill-on:1]","data-[checked]:shadow-none"].join(" "),v=/* @__PURE__ */["forced-colors:border forced-colors:[border-color:GrayText]","cursor-not-allowed bg-(--plass-track)","opacity-50 saturate-[0.35] shadow-none","data-[checked]:[--p-fill-on:1]"].join(" "),y=/* @__PURE__ */["absolute inset-y-0.5 start-0.5 aspect-square rounded-full bg-white","[box-shadow:0_1px_2px_rgb(20_40_90/0.25)]","forced-colors:[background-color:CanvasText] forced-colors:data-[checked]:[background-color:HighlightText]","[transition:inset-inline-start_var(--plass-duration)_var(--plass-ease)]","motion-reduce:[transition-duration:0ms]"].join(" ");export const PlSwitch=/* @__PURE__ */t.forwardRef(function PlSwitch({size:t,color:m,label:k,description:N,error:_,invalid:T,labelPlacement:B="end",disabled:P=!1,readOnly:R=!1,className:S,classNames:$,style:z,"aria-label":C,"aria-labelledby":H,...O},q){const D=s(),E=l(P),F=o(C,H),G=t??D.size??"md",L=m??D.color??"primary",A=p(_),I=T??A,J=I?"danger":L,K=a("span",{className:"flex h-[1lh] shrink-0 items-center",children:a(c.Root,{ref:q,className:d(x,b[G],E?v:R?j:w,$?.control),disabled:E,readOnly:R,"aria-label":C,"aria-labelledby":F.labelledBy,...O,children:a(c.Thumb,{className:`${y} ${g[G]}`})})}),M=k||N?e("span",{className:["flex min-w-0 flex-col gap-0.5","start"===B?"flex-1":""].filter(Boolean).join(" "),children:[k?a(i.Label,{className:d(E?"text-(--plass-muted-fg)":"cursor-pointer text-(--plass-fg)",$?.label),children:k}):null,N?a(i.Description,{className:d(h(G),$?.description),children:N}):null]}):null;return e(i.Root,{disabled:E,invalid:I,className:["inline-flex flex-col gap-1 align-top",S??""].filter(Boolean).join(" "),style:{...n(J,0,"solid"),...z},children:[a("div",{className:`flex items-start gap-2.5 ${u[G]}`,children:e(r,"start"===B?{children:[M,K]}:{children:[K,M]})}),a(i.Error,A?{match:!0,className:d(f[G],"text-(--p-accent)",$?.error),children:_}:{className:d(f[G],"text-(--p-accent)",$?.error)}),F.node]})});
@@ -1 +1 @@
1
- "use client";import{jsx as e,jsxs as t}from"react/jsx-runtime";import*as a from"react";import{useDefaults as l}from"../../internal/defaults.js";import{Tabs as o}from"@base-ui/react/tabs";import{controlHeightClasses as s,controlTextClasses as r,focusRingClasses as i,focusRingInsetClasses as n,forcedFieldEdgeClasses as c,forcedFillClasses as d,gapClasses as f,glassClasses as u,hasContent as h,iconClasses as p,paddingXClasses as v,radiusClasses as b,surfaceSlots as m,transitionClasses as g}from"../../internal/styles.js";import{useResponsiveValue as x}from"../../internal/responsive.js";import{overscrollClasses as w,useWheelScroll as y}from"../../internal/wheel.js";const z=/* @__PURE__ */a.createContext({variant:"glass",size:"md",density:"default",orientation:"horizontal",align:"center",fullWidth:!1}),j={solid:{horizontal:`${u} inline-flex bg-(--plass-glass) p-1 [box-shadow:var(--plass-well)] ${c}`,vertical:`${u} inline-flex flex-col bg-(--plass-glass) p-1 [box-shadow:var(--plass-well)] ${c}`},glass:{horizontal:"flex border-b [border-color:var(--plass-border)]",vertical:"flex flex-col border-e [border-color:var(--plass-border)]"},ghost:{horizontal:"flex",vertical:"flex flex-col"}},P={solid:{horizontal:"absolute top-(--active-tab-top) left-(--active-tab-left) h-(--active-tab-height) w-(--active-tab-width)",vertical:"absolute top-(--active-tab-top) left-(--active-tab-left) h-(--active-tab-height) w-(--active-tab-width)"},glass:{horizontal:"absolute bottom-0 left-(--active-tab-left) h-0.5 w-(--active-tab-width)",vertical:"absolute end-0 top-(--active-tab-top) h-(--active-tab-height) w-0.5"},ghost:{horizontal:"absolute bottom-0 left-(--active-tab-left) h-0.5 w-(--active-tab-width)",vertical:"absolute end-0 top-(--active-tab-top) h-(--active-tab-height) w-0.5"}},N={solid:`${u} bg-(--plass-glass-press) [box-shadow:var(--plass-shadow-1),var(--plass-gloss-glass)]`,glass:"bg-(--p-accent)",ghost:"bg-(--p-accent)"},T="text-(--plass-muted-fg) hover:text-(--plass-fg) data-[active]:text-(--p-accent)",k={start:"justify-start",center:"justify-center",end:"justify-end"};export const PlTab=/* @__PURE__ */a.forwardRef(function PlTab({value:l,startIcon:i,endIcon:c,disabled:d=!1,className:u,children:m,...x},w){const{variant:y,size:j,density:P,align:N,fullWidth:C}=a.useContext(z);return t(o.Tab,{ref:w,value:l,disabled:d,className:["relative z-10 inline-flex shrink-0 cursor-pointer items-center select-none",k[N],"font-semibold whitespace-nowrap","[-webkit-tap-highlight-color:transparent] [touch-action:manipulation]",s[j],r[j],f[j],v[P][j],"solid"===y?b[j]:"",g,p,T,"solid"===y?"forced-colors:data-[active]:[color:HighlightText]":"",n,"data-[disabled]:cursor-not-allowed data-[disabled]:opacity-50",C?"flex-1":"",u??""].filter(Boolean).join(" "),...x,children:[h(i)?e("span",{className:"flex h-[1lh] shrink-0 items-center",children:i}):null,m,h(c)?e("span",{className:"flex h-[1lh] shrink-0 items-center",children:c}):null]})});export const PlTabPanel=/* @__PURE__ */a.forwardRef(function PlTabPanel({value:t,keepMounted:l=!1,className:s,children:r,...n},c){const{size:d}=a.useContext(z);return e(o.Panel,{ref:c,value:t,keepMounted:l,className:["min-w-0 flex-1 text-(--plass-fg)",i,b[d],s??""].filter(Boolean).join(" "),...n,children:r})});export const PlTabs=/* @__PURE__ */a.forwardRef(function PlTabs({variant:s="glass",size:r,color:i,density:n,value:c,defaultValue:f,onValueChange:u,orientation:h,align:p="center",activateOnFocus:v=!1,loopFocus:g=!0,fullWidth:T=!1,wheel:k=!0,overscroll:C="contain",className:R,style:S,children:V,...W},E){const F=x(h,"horizontal"),O=l(),$=r??O.size??"md",B=i??O.color??"primary",L=n??O.density??"default",M=a.useMemo(()=>({variant:s,size:$,density:L,orientation:F,align:p,fullWidth:T}),[s,$,L,F,p,T]),I=a.useRef(null),H="horizontal"===F,q=function useListOverflow(e,t){const[l,o]=a.useState({start:!1,end:!1,rtl:!1}),s=a.useCallback(()=>{const t=e.current;if(!t)return;const a=t.scrollWidth-t.clientWidth,l=Math.abs(t.scrollLeft),s={start:l>1,end:a-l>1,rtl:"rtl"===getComputedStyle(t).direction};o(e=>e.start===s.start&&e.end===s.end&&e.rtl===s.rtl?e:s)},[e]);return a.useLayoutEffect(()=>{t&&s()}),a.useEffect(()=>{const a=e.current;if(!a||!t||"undefined"==typeof ResizeObserver)return;const l=new ResizeObserver(s);return l.observe(a),()=>l.disconnect()},[t,s,e]),t?{style:{"--p-fade-left":(l.rtl?l.end:l.start)?"var(--p-fade)":void 0,"--p-fade-right":(l.rtl?l.start:l.end)?"var(--p-fade)":void 0},onScroll:s,state:l.start?l.end?"both":"start":l.end?"end":"none"}:{style:void 0,onScroll:void 0,state:void 0}}(I,H);y(I,{enabled:k&&H,overscroll:C});const A=[],D=[],sort=e=>{a.Children.forEach(e,e=>{a.isValidElement(e)&&e.type===a.Fragment?sort(e.props.children):a.isValidElement(e)&&e.type===PlTabPanel?D.push(e):null!=e&&!1!==e&&A.push(e)})};return sort(V),e(z.Provider,{value:M,children:t(o.Root,{ref:E,value:c,defaultValue:f,onValueChange:e=>u?.(e),orientation:F,className:["flex min-w-0","vertical"===F?"flex-row gap-4":"flex-col gap-4",R??""].filter(Boolean).join(" "),style:{...m(B,0),...S},...W,children:[t(o.List,{ref:I,activateOnFocus:v,loopFocus:g,className:["relative shrink-0",j[s][F],"solid"===s?b[$]:"",T&&H?"w-full":"",H?"plass-fade-x overflow-x-auto overflow-y-hidden":"",H?w(C,!0):""].filter(Boolean).join(" "),style:q.style,onScroll:q.onScroll,"data-overflow":q.state,children:[A,e(o.Indicator,{className:["pointer-events-none",P[s][F],N[s],d,"solid"===s?b[$]:"rounded-full","[transition-property:left,top,width,height]","[transition-duration:var(--plass-duration)]","[transition-timing-function:var(--plass-ease)]","motion-reduce:[transition-duration:0ms]"].join(" ")})]}),D]})})});
1
+ "use client";import{jsx as e,jsxs as t}from"react/jsx-runtime";import*as a from"react";import{useDefaults as l}from"../../internal/defaults.js";import{Tabs as r}from"@base-ui/react/tabs";import{useDirection as o}from"@base-ui/react/direction-provider";import{useDocumentDirection as s}from"../../internal/direction.js";import{controlHeightClasses as n,controlTextClasses as i,focusRingClasses as c,focusRingInsetClasses as d,forcedFieldEdgeClasses as u,forcedFillClasses as f,gapClasses as h,glassClasses as p,hasContent as v,iconClasses as b,paddingXClasses as m,radiusClasses as g,surfaceSlots as w,transitionClasses as x}from"../../internal/styles.js";import{useResponsiveValue as y}from"../../internal/responsive.js";import{overscrollClasses as z,useWheelScroll as j}from"../../internal/wheel.js";const T=/* @__PURE__ */a.createContext({variant:"glass",size:"md",density:"default",orientation:"horizontal",align:"center",fullWidth:!1}),P={solid:{horizontal:`${p} inline-flex bg-(--plass-glass) p-1 [box-shadow:var(--plass-well)] ${u}`,vertical:`${p} inline-flex flex-col bg-(--plass-glass) p-1 [box-shadow:var(--plass-well)] ${u}`},glass:{horizontal:"flex border-b [border-color:var(--plass-border)]",vertical:"flex flex-col border-e [border-color:var(--plass-border)]"},ghost:{horizontal:"flex",vertical:"flex flex-col"}},k={solid:{horizontal:"absolute top-(--active-tab-top) left-(--active-tab-left) h-(--active-tab-height) w-(--active-tab-width)",vertical:"absolute top-(--active-tab-top) left-(--active-tab-left) h-(--active-tab-height) w-(--active-tab-width)"},glass:{horizontal:"absolute bottom-0 left-(--active-tab-left) h-0.5 w-(--active-tab-width)",vertical:"absolute end-0 top-(--active-tab-top) h-(--active-tab-height) w-0.5"},ghost:{horizontal:"absolute bottom-0 left-(--active-tab-left) h-0.5 w-(--active-tab-width)",vertical:"absolute end-0 top-(--active-tab-top) h-(--active-tab-height) w-0.5"}},N={solid:`${p} bg-(--plass-glass-press) [box-shadow:var(--plass-shadow-1),var(--plass-gloss-glass)]`,glass:"bg-(--p-accent)",ghost:"bg-(--p-accent)"},C="text-(--plass-muted-fg) hover:text-(--plass-fg) data-[active]:text-(--p-accent)",R={start:"justify-start",center:"justify-center",end:"justify-end"};export const PlTab=/* @__PURE__ */a.forwardRef(function PlTab({value:l,startIcon:o,endIcon:s,disabled:c=!1,className:u,children:f,...p},w){const{variant:y,size:z,density:j,align:P,fullWidth:k}=a.useContext(T);return t(r.Tab,{ref:w,value:l,disabled:c,className:["relative z-10 inline-flex shrink-0 cursor-pointer items-center select-none p-0",R[P],"font-semibold whitespace-nowrap","[-webkit-tap-highlight-color:transparent] [touch-action:manipulation]",n[z],i[z],h[z],m[j][z],"solid"===y?g[z]:"",x,b,C,"solid"===y?"forced-colors:data-[active]:[color:HighlightText]":"",d,"data-[disabled]:cursor-not-allowed data-[disabled]:opacity-50",k?"flex-1":"",u??""].filter(Boolean).join(" "),...p,children:[v(o)?e("span",{className:"flex h-[1lh] shrink-0 items-center",children:o}):null,f,v(s)?e("span",{className:"flex h-[1lh] shrink-0 items-center",children:s}):null]})});export const PlTabPanel=/* @__PURE__ */a.forwardRef(function PlTabPanel({value:t,keepMounted:l=!1,className:o,children:s,...n},i){const{size:d}=a.useContext(T);return e(r.Panel,{ref:i,value:t,keepMounted:l,className:["min-w-0 flex-1 text-(--plass-fg)",c,g[d],o??""].filter(Boolean).join(" "),...n,children:s})});function movesTheStrip(e,t){return e.some(e=>!(e.target===t&&"style"===e.attributeName))}export const PlTabs=/* @__PURE__ */a.forwardRef(function PlTabs({variant:n="glass",size:i,color:c,density:d,value:u,defaultValue:h,onValueChange:p,orientation:v,align:b="center",activateOnFocus:m=!1,loopFocus:x=!0,fullWidth:C=!1,wheel:R=!0,overscroll:S="contain",className:$,style:E,children:L,...F},M){const O=y(v,"horizontal"),V=l(),W=i??V.size??"md",B=c??V.color??"primary",I=d??V.density??"default",D=a.useMemo(()=>({variant:n,size:W,density:I,orientation:O,align:b,fullWidth:C}),[n,W,I,O,b,C]),H=a.useRef(null),q="horizontal"===O,A=function useListOverflow(e,t){const[l,r]=a.useState({start:!1,end:!1,rtl:!1}),n=a.useCallback(t=>{const a=e.current;if(!a)return;const l=a.scrollWidth-a.clientWidth,o=Math.abs(a.scrollLeft),s=o>1,n=l-o>1;r(e=>{const a={start:s,end:n,rtl:t??e.rtl};return e.start===a.start&&e.end===a.end&&e.rtl===a.rtl?e:a})},[e]),i=a.useCallback(()=>{const t=e.current;t&&n("rtl"===getComputedStyle(t).direction)},[e,n]),c=a.useCallback(()=>n(),[n]),d=s(),u=o();a.useLayoutEffect(()=>{t&&i()},[t,i,d,u]);const f=a.useRef(null);a.useLayoutEffect(()=>{const a=e.current;if(!a||!t)return;const l=new MutationObserver(e=>{movesTheStrip(e,a)&&i()});return l.observe(a,{subtree:!0,childList:!0,characterData:!0,attributes:!0,attributeFilter:["class","style"]}),f.current=l,()=>{l.disconnect(),f.current=null}},[t,i,e]),a.useLayoutEffect(()=>{const t=e.current,a=f.current?.takeRecords();t&&a&&movesTheStrip(a,t)&&i()}),a.useEffect(()=>{const a=e.current;if(!a||!t||"undefined"==typeof ResizeObserver)return;const l=new ResizeObserver(i);return l.observe(a),()=>l.disconnect()},[t,i,e]);const h=`${d} ${u} ${l.rtl}`;return t?{style:{"--p-fade-left":(l.rtl?l.end:l.start)?"var(--p-fade)":void 0,"--p-fade-right":(l.rtl?l.start:l.end)?"var(--p-fade)":void 0},onScroll:c,state:l.start?l.end?"both":"start":l.end?"end":"none",turn:h}:{style:void 0,onScroll:void 0,state:void 0,turn:h}}(H,q);j(H,{enabled:R&&q,overflows:void 0!==A.state&&"none"!==A.state,overscroll:S});const G=a.useMemo(()=>e(r.Indicator,{className:["pointer-events-none",k[n][O],N[n],f,"solid"===n?g[W]:"rounded-full","[transition-property:left,top,width,height]","[transition-duration:var(--plass-duration)]","[transition-timing-function:var(--plass-ease)]","motion-reduce:[transition-duration:0ms]"].join(" ")}),[n,O,W,A.turn]),J=[],K=[],sort=e=>{a.Children.forEach(e,e=>{a.isValidElement(e)&&e.type===a.Fragment?sort(e.props.children):a.isValidElement(e)&&e.type===PlTabPanel?K.push(e):null!=e&&!1!==e&&J.push(e)})};return sort(L),e(T.Provider,{value:D,children:t(r.Root,{ref:M,value:u,defaultValue:h,onValueChange:e=>p?.(e),orientation:O,className:["flex min-w-0","vertical"===O?"flex-row gap-4":"flex-col gap-4",$??""].filter(Boolean).join(" "),style:{...w(B,0),...E},...F,children:[t(r.List,{ref:H,activateOnFocus:m,loopFocus:x,className:["relative shrink-0",P[n][O],"solid"===n?g[W]:"",C&&q?"w-full":"",q?"plass-fade-x overflow-x-auto overflow-y-hidden":"",q?z(S,!0):""].filter(Boolean).join(" "),style:A.style,onScroll:A.onScroll,"data-overflow":A.state,children:[J,G]}),K]})})});
@@ -1 +1 @@
1
- "use client";import{jsx as e,jsxs as l}from"react/jsx-runtime";import*as t from"react";import{useDisabled as r}from"../../internal/form.js";import{useDefaults as n}from"../../internal/defaults.js";import{ownsPress as s}from"../../internal/focusable.js";import{Field as a}from"@base-ui/react/field";import{Input as i}from"@base-ui/react/input";import{Spinner as o}from"../../internal/icons.js";import{useFieldLight as c}from"../../internal/glow.js";import{FieldNotch as m,floatControlClassName as d,notchShellStyle as p,resolveNotch as f}from"../../internal/notch.js";import{hotKeyHandler as x}from"../../internal/keys.js";import{controlHeightClasses as u,controlTextLeadingClasses as h,cx as y,disabledClasses as b,fieldDescriptionClasses as g,fieldReadOnlyClasses as $,fieldRestClasses as j,fieldSlots as w,focusWithinRingClasses as v,gapClasses as N,hasContent as z,iconClasses as k,metaTextClasses as D,paddingXClasses as P,radiusClasses as K,stackGapClasses as O,transitionClasses as R}from"../../internal/styles.js";const T={xs:`${N.xs} ${K.xs} ${h.xs}`,sm:`${N.sm} ${K.sm} ${h.sm}`,md:`${N.md} ${K.md} ${h.md}`,lg:`${N.lg} ${K.lg} ${h.lg}`,xl:`${N.xl} ${K.xl} ${h.xl}`},B={xs:"min-h-6 py-[3px]",sm:"min-h-8 py-[6px]",md:"min-h-10 py-[9px]",lg:"min-h-12 py-[11px]",xl:"min-h-14 py-[13px]"},F={none:"resize-none",vertical:"resize-y",horizontal:"resize-x",both:"resize"},I=/* @__PURE__ */["relative flex w-full cursor-text","[-webkit-tap-highlight-color:transparent]",R,k].join(" "),C=v,E=j,L=$;export const PlTextField=/* @__PURE__ */t.forwardRef(function PlTextField({variant:h="glass",size:$,color:j,density:v,elevation:N=0,multiline:k=!1,rows:K=3,resize:R="vertical",label:W,labelPlacement:q,description:A,error:G,invalid:H,startIcon:J,endIcon:M,loading:Q=!1,fullWidth:S=!1,readOnly:U=!1,disabled:V=!1,type:X="text",placeholder:Y,hotKeys:Z,onKeyDown:_,className:ee,classNames:le,style:te,...re},ne){const se=n(),ae=r(V),ie=$??se.size??"md",oe=j??se.color??"primary",ce=v??se.density??"default",me=q??se.labelPlacement??"top",{notched:de,float:pe}=f(me,W,z(J)),fe=z(G),xe=H??fe,ue=xe?"danger":oe,he=t.useRef(null),ye=t.useCallback(e=>{he.current=e,"function"==typeof ne?ne(e):ne&&(ne.current=e)},[ne]),be=!ae&&!U,ge=c(be),$e=[I,de?"":C,T[ie],k?`${B[ie]} items-start`:`${u[ie]} items-center`,P[ce][ie],ae?b[h]:U?L[h]:E[h],be?"plass-glow":""].filter(Boolean).join(" "),je=["min-w-0 flex-1 bg-transparent [font:inherit] text-inherit","[outline:none]","placeholder:text-(--plass-muted-fg)","caret-(--p-accent) selection:bg-(--p-soft-press)","disabled:cursor-not-allowed",k?`block ${F[R]}`:"self-stretch",pe?d:""].join(" "),we="inline-flex h-[1lh] shrink-0 items-center text-(--plass-muted-fg)",ve=e(a.Label,{className:y(D[ie],"font-semibold",ae?"text-(--plass-muted-fg)":"text-(--plass-fg)",le?.label),children:W});return l(a.Root,{disabled:ae,invalid:xe,className:["flex-col align-top",O[ie],S?"flex w-full":"inline-flex",ee??""].filter(Boolean).join(" "),style:{...w(ue,N),...te},children:[z(W)&&!de?ve:null,e(m,{notched:de,size:ie,density:ce,variant:h,disabled:ae,readOnly:U,float:pe,label:ve,children:l("span",{className:y($e,le?.control),style:de?p:void 0,...ge,onPointerDown:e=>{ae||s(e.target,e.currentTarget,he.current)||(e.preventDefault(),he.current?.focus())},children:[J?e("span",{className:we,children:J}):null,e(i,{ref:ye,className:je,disabled:ae,readOnly:U,"aria-busy":Q||void 0,"data-loading":Q||void 0,onKeyDown:x(Z,_),placeholder:pe?Y||" ":Y,...k?{render:e("textarea",{rows:K})}:{type:X},...re}),Q?e("span",{className:we,children:e(o,{})}):M?e("span",{className:we,children:M}):null]})}),A?e(a.Description,{className:y(g(ie),le?.description),children:A}):null,e(a.Error,fe?{match:!0,className:y(D[ie],"text-(--p-accent)",le?.error),children:G}:{className:y(D[ie],"text-(--p-accent)",le?.error)})]})});
1
+ "use client";import{jsx as e,jsxs as l}from"react/jsx-runtime";import*as t from"react";import{controlNaming as r,useDisabled as n}from"../../internal/form.js";import{useDefaults as a}from"../../internal/defaults.js";import{ownsPress as s}from"../../internal/focusable.js";import{Field as i}from"@base-ui/react/field";import{Input as o}from"@base-ui/react/input";import{Spinner as c}from"../../internal/icons.js";import{useFieldLight as m}from"../../internal/glow.js";import{FieldNotch as d,floatControlClassName as p,notchShellStyle as f,resolveNotch as x}from"../../internal/notch.js";import{hotKeyHandler as u}from"../../internal/keys.js";import{controlHeightClasses as h,controlTextLeadingClasses as y,cx as b,disabledClasses as g,fieldDescriptionClasses as $,fieldReadOnlyClasses as j,fieldRestClasses as w,fieldSlots as v,focusWithinRingClasses as N,gapClasses as z,hasContent as k,iconClasses as D,metaTextClasses as P,paddingXClasses as K,radiusClasses as O,stackGapClasses as R,transitionClasses as T}from"../../internal/styles.js";const B={xs:`${z.xs} ${O.xs} ${y.xs}`,sm:`${z.sm} ${O.sm} ${y.sm}`,md:`${z.md} ${O.md} ${y.md}`,lg:`${z.lg} ${O.lg} ${y.lg}`,xl:`${z.xl} ${O.xl} ${y.xl}`},F={xs:"min-h-6 py-[3px]",sm:"min-h-8 py-[6px]",md:"min-h-10 py-[9px]",lg:"min-h-12 py-[11px]",xl:"min-h-14 py-[13px]"},I={none:"resize-none",vertical:"resize-y",horizontal:"resize-x",both:"resize"},C=/* @__PURE__ */["relative flex w-full cursor-text","[-webkit-tap-highlight-color:transparent]",T,D].join(" "),E=N,L=w,W=j;export const PlTextField=/* @__PURE__ */t.forwardRef(function PlTextField({variant:y="glass",size:j,color:w,density:N,elevation:z=0,multiline:D=!1,rows:O=3,resize:T="vertical",label:q,labelPlacement:A,description:G,error:H,invalid:J,startIcon:M,endIcon:Q,loading:S=!1,fullWidth:U=!1,readOnly:V=!1,disabled:X=!1,type:Y="text",placeholder:Z,hotKeys:_,onKeyDown:ee,className:le,classNames:te,style:re,"aria-label":ne,"aria-labelledby":ae,...se},ie){const oe=a(),ce=n(X),me=j??oe.size??"md",de=w??oe.color??"primary",pe=N??oe.density??"default",fe=A??oe.labelPlacement??"top",{notched:xe,float:ue}=x(fe,q,k(M)),he=k(H),ye=J??he,be=ye?"danger":de,ge=t.useRef(null),$e=t.useCallback(e=>{ge.current=e,"function"==typeof ie?ie(e):ie&&(ie.current=e)},[ie]),je=!ce&&!V,we=m(je),ve=[C,xe?"":E,B[me],D?`${F[me]} items-start`:`${h[me]} items-center`,K[pe][me],ce?g[y]:V?W[y]:L[y],je?"plass-glow":""].filter(Boolean).join(" "),Ne=["min-w-0 flex-1 bg-transparent p-0 [font:inherit] text-inherit","[outline:none]","placeholder:text-(--plass-muted-fg)","caret-(--p-accent) selection:bg-(--p-soft-press)","disabled:cursor-not-allowed",D?`block ${I[T]}`:"self-stretch",ue?p:""].join(" "),ze="inline-flex h-[1lh] shrink-0 items-center text-(--plass-muted-fg)",ke=e(i.Label,{className:b(P[me],"font-semibold",ce?"text-(--plass-muted-fg)":"text-(--plass-fg)",te?.label),children:q});return l(i.Root,{disabled:ce,invalid:ye,className:["flex-col align-top",R[me],U?"flex w-full":"inline-flex",le??""].filter(Boolean).join(" "),style:{...v(be,z),...re},children:[k(q)&&!xe?ke:null,e(d,{notched:xe,size:me,density:pe,variant:y,disabled:ce,readOnly:V,float:ue,label:ke,children:l("span",{className:b(ve,te?.control),style:xe?f:void 0,...we,onPointerDown:e=>{ce||s(e.target,e.currentTarget,ge.current)||(e.preventDefault(),ge.current?.focus())},children:[M?e("span",{className:ze,children:M}):null,e(o,{ref:$e,className:Ne,disabled:ce,readOnly:V,"aria-busy":S||void 0,"data-loading":S||void 0,onKeyDown:u(_,ee),placeholder:ue?Z||" ":Z,...D?{render:e("textarea",{rows:O})}:{type:Y},...r(ne,ae),...se}),S?e("span",{className:ze,children:e(c,{})}):Q?e("span",{className:ze,children:Q}):null]})}),G?e(i.Description,{className:b($(me),te?.description),children:G}):null,e(i.Error,he?{match:!0,className:b(P[me],"text-(--p-accent)",te?.error),children:H}:{className:b(P[me],"text-(--p-accent)",te?.error)})]})});
@@ -1 +1 @@
1
- "use client";import{jsx as n,Fragment as e,jsxs as r}from"react/jsx-runtime";import*as s from"react";import{useLabels as i}from"../../internal/labels.js";import{useRender as l}from"@base-ui/react/use-render";import{ExternalLinkIcon as a,LinkIcon as o}from"../../internal/icons.js";import{controlTextLeadingClasses as t,focusRingClasses as c,srOnlyClasses as p}from"../../internal/styles.js";import{safeRel as m}from"../../internal/link.js";const d={always:"[&.plass-link]:underline",hover:"[&.plass-link]:no-underline [&.plass-link]:hover:underline",none:"[&.plass-link]:no-underline"},u=/* @__PURE__ */["plass-link","cursor-pointer","[&_svg]:pointer-events-none [&_svg]:inline [&_svg]:size-[0.95em] [&_svg]:shrink-0 [&_svg]:align-middle",/* @__PURE__ */["[transition-property:color,text-decoration-color]","[transition-duration:var(--plass-duration)]","[transition-timing-function:var(--plass-ease)]","motion-reduce:[transition-duration:0ms]"].join(" "),c,"focus-visible:rounded-[0.25rem]"].join(" ");export const PlTextLink=/* @__PURE__ */s.forwardRef(function PlTextLink({href:c,underline:f="always",color:v,size:h,newTab:k=!1,icon:g,startIcon:b,newTabLabel:j,render:x,className:y,style:_,children:w,...N},T){const L=i(),z=j??L.newTab,C=g??k,P=!0===C?n(k?a:o,{}):C,$=[u,h?t[h]:"",d[f],v?"[&.plass-link]:text-(--p-accent)":"[&.plass-link]:text-inherit",y??""].filter(Boolean).join(" "),B={"--p-underline":"color-mix(in oklab, currentColor 45%, transparent)","--p-underline-hover":"currentColor","--p-ring":`var(--plass-${v??"primary"}-ring)`,...v?{"--p-accent":`var(--plass-${v}-accent)`}:null},E=s.isValidElement(x)&&void 0!==x.props.href,{rel:F,target:I,...R}=N,V=I??(k?"_blank":void 0),q=k||"_blank"===V,A=m(V,F);return l({render:x??n("a",{}),ref:T,props:{...E?null:{href:c},target:V,className:$,style:{...B,..._},children:r(e,{children:[b?n("span",{className:"me-[0.25em]",children:b}):null,w,P?n("span",{className:"ms-[0.25em]",children:P}):null,q?r(e,{children:[" ",n("span",{className:p,children:z})]}):null]}),...R,rel:A}})});
1
+ "use client";import{jsx as n,Fragment as e,jsxs as r}from"react/jsx-runtime";import*as s from"react";import{useLabels as i}from"../../internal/labels.js";import{useRender as l}from"@base-ui/react/use-render";import{ExternalLinkIcon as a,LinkIcon as o}from"../../internal/icons.js";import{controlTextLeadingClasses as t,focusRingClasses as c,srOnlyClasses as p}from"../../internal/styles.js";import{safeRel as m}from"../../internal/link.js";const d={always:"[&.plass-link]:underline",hover:"[&.plass-link]:no-underline [&.plass-link]:hover:underline",none:"[&.plass-link]:no-underline"},u=/* @__PURE__ */["plass-link","cursor-pointer","[&_svg]:pointer-events-none [&_svg]:inline [&_svg]:size-[0.95em] [&_svg]:shrink-0 [&_svg]:align-middle",/* @__PURE__ */["[transition-property:color,text-decoration-color]","[transition-duration:var(--plass-duration)]","[transition-timing-function:var(--plass-ease)]","motion-reduce:[transition-duration:0ms]"].join(" "),c,"focus-visible:rounded-[0.25rem]"].join(" ");export const PlTextLink=/* @__PURE__ */s.forwardRef(function PlTextLink({href:s,underline:c="always",color:f,size:v,newTab:h=!1,icon:k,startIcon:g,newTabLabel:b,render:j,className:x,style:y,children:_,...w},N){const T=i(),L=b??T.newTab,z=k??h,C=!0===z?n(h?a:o,{}):z,P=[u,v?t[v]:"",d[c],f?"[&.plass-link]:text-(--p-accent)":"[&.plass-link]:text-inherit",x??""].filter(Boolean).join(" "),$={"--p-underline":"color-mix(in oklab, currentColor 45%, transparent)","--p-underline-hover":"currentColor","--p-ring":`var(--plass-${f??"primary"}-ring)`,...f?{"--p-accent":`var(--plass-${f}-accent)`}:null},{rel:B,target:F,...I}=w,R=F??(h?"_blank":void 0),q=h||"_blank"===R,A=m(R,B);return l({render:j??n("a",{}),ref:N,props:{href:s,target:R,className:P,style:{...$,...y},children:r(e,{children:[g?n("span",{className:"me-[0.25em]",children:g}):null,_,C?n("span",{className:"ms-[0.25em]",children:C}):null,q?r(e,{children:[" ",n("span",{className:p,children:L})]}):null]}),...I,rel:A}})});
@@ -1 +1 @@
1
- "use client";import{jsx as e,jsxs as o}from"react/jsx-runtime";import*as n from"react";import{useDefaults as l}from"../../internal/defaults.js";import{PlButton as t}from"../button/PlButton.js";import{TimeGrid as s,usePickerLabels as r}from"../../internal/calendar.js";import{ClockIcon as a}from"../../internal/icons.js";import{PickerFooter as i,PickerShell as c}from"../../internal/picker.js";import{displaySamples as d,formatDate as u,isHour12 as m,isValidDate as p,secondsOfDay as h,timeUnitSpan as f,toISOTime as g,withPlaceholder as y,withTime as S}from"../../internal/date.js";import{cx as b}from"../../internal/styles.js";export const PlTimePicker=/* @__PURE__ */n.forwardRef(function PlTimePicker({value:j,defaultValue:v,onValueChange:C,open:w,defaultOpen:z,onOpenChange:k,referenceDate:x,minTime:D,maxTime:O,shouldDisableTime:T,hour12:P,showSeconds:M=!1,hourStep:V=1,minuteStep:B=1,secondStep:I=1,locale:N,format:R,placeholder:F,clearable:H=!1,showNowButton:q=!0,closeOnSelect:A=!1,labels:E,name:G,size:J,color:K,density:L,readOnly:Q=!1,disabled:U=!1,startIcon:W,...X},Y){const Z=l(),$=N??Z.locale,_=J??Z.size??"md",ee=K??Z.color??"primary",oe=L??Z.density??"default",ne=r(E),le=P??m($),[te,se]=n.useState(v??null),re=void 0!==j?j:te,[ae,ie]=n.useState(z??!1),ce=w??ae,[de]=n.useState(()=>x??new Date),setOpen=e=>{e&&(Q||U)||(void 0===w&&ie(e),k?.(e))},commit=e=>{void 0===j&&se(e),C?.(e)},ue=n.useCallback((e,o)=>{const[n,l]=f(o,e);return!!(p(D)&&l<h(D))||!!(p(O)&&n>h(O))||(T?.(e,o)??!1)},[D,O,T]),me=n.useMemo(()=>R??{hour:"numeric",minute:"2-digit",...M?{second:"2-digit"}:{}},[R,M]),pe=new Date,he=S(x??de,{hours:pe.getHours(),minutes:pe.getMinutes(),seconds:M?pe.getSeconds():0}),fe=q||H||!A,ge=n.useMemo(()=>y(d($,me),F),[$,me,F]);return e(c,{...X,size:_,color:ee,density:oe,readOnly:Q,disabled:U,triggerRef:Y,startIcon:W??e(a,{}),display:p(re)?u(re,$,me):F??"",samples:ge,empty:!p(re),clearable:H,onClear:()=>commit(null),open:ce,onOpenChange:setOpen,labels:ne,name:G,formValue:p(re)?g(re,M):"",children:o("div",{className:b("flex flex-col",fe&&"gap-1.5"),children:[e(s,{size:_,density:oe,locale:$,value:p(re)?re:null,referenceDate:x??de,onChange:e=>{commit(e),A&&setOpen(!1)},hour12:le,showSeconds:M,hourStep:V,minuteStep:B,secondStep:I,shouldDisableTime:ue,labels:ne,autoFocus:!0}),fe?o(i,{size:_,children:[H?e(t,{variant:"ghost",size:_,color:ee,density:"compact",onClick:()=>{commit(null),setOpen(!1)},children:ne.clear}):null,q?e(t,{variant:"ghost",size:_,color:ee,density:"compact",disabled:ue(he,"second"),onClick:()=>{commit(he),setOpen(!1)},children:ne.now}):null,A?null:e(t,{variant:"solid",size:_,color:ee,density:"compact",onClick:()=>setOpen(!1),children:ne.done})]}):null]})})});
1
+ "use client";import{jsx as e,jsxs as n}from"react/jsx-runtime";import*as o from"react";import{useDefaults as l,useLocale as t}from"../../internal/defaults.js";import{PlButton as s}from"../button/PlButton.js";import{TimeGrid as r,usePickerLabels as i}from"../../internal/calendar.js";import{ClockIcon as a}from"../../internal/icons.js";import{PickerFooter as c,PickerShell as d}from"../../internal/picker.js";import{displaySamples as u,formatDate as m,isHour12 as p,isValidDate as h,secondsOfDay as f,timeUnitSpan as g,toISOTime as y,withPlaceholder as S,withTime as b}from"../../internal/date.js";import{cx as j}from"../../internal/styles.js";export const PlTimePicker=/* @__PURE__ */o.forwardRef(function PlTimePicker({value:v,defaultValue:C,onValueChange:w,open:z,defaultOpen:k,onOpenChange:x,referenceDate:D,minTime:O,maxTime:T,shouldDisableTime:P,hour12:M,showSeconds:V=!1,hourStep:B=1,minuteStep:I=1,secondStep:N=1,locale:R,format:F,placeholder:H,clearable:q=!1,showNowButton:A=!0,closeOnSelect:E=!1,labels:G,name:J,size:K,color:L,density:Q,readOnly:U=!1,disabled:W=!1,startIcon:X,...Y},Z){const $=l(),_=t(R),ee=K??$.size??"md",ne=L??$.color??"primary",oe=Q??$.density??"default",le=i(G),te=M??p(_),[se,re]=o.useState(C??null),ie=void 0!==v?v:se,[ae,ce]=o.useState(k??!1),de=z??ae,[ue]=o.useState(()=>D??new Date),setOpen=e=>{e&&(U||W)||(void 0===z&&ce(e),x?.(e))},commit=e=>{void 0===v&&re(e),w?.(e)},me=o.useCallback((e,n)=>{const[o,l]=g(n,e);return!!(h(O)&&l<f(O))||!!(h(T)&&o>f(T))||(P?.(e,n)??!1)},[O,T,P]),pe=o.useMemo(()=>F??{hour:"numeric",minute:"2-digit",...V?{second:"2-digit"}:{}},[F,V]),he=new Date,fe=b(D??ue,{hours:he.getHours(),minutes:he.getMinutes(),seconds:V?he.getSeconds():0}),ge=A||q||!E,ye=o.useMemo(()=>S(u(_,pe),H),[_,pe,H]);return e(d,{...Y,size:ee,color:ne,density:oe,readOnly:U,disabled:W,triggerRef:Z,startIcon:X??e(a,{}),display:h(ie)?m(ie,_,pe):H??"",samples:ye,empty:!h(ie),clearable:q,onClear:()=>commit(null),open:de,onOpenChange:setOpen,labels:le,name:J,formValue:h(ie)?y(ie,V):"",children:n("div",{className:j("flex flex-col",ge&&"gap-1.5"),children:[e(r,{size:ee,density:oe,locale:_,value:h(ie)?ie:null,referenceDate:D??ue,onChange:e=>{commit(e),E&&setOpen(!1)},hour12:te,showSeconds:V,hourStep:B,minuteStep:I,secondStep:N,shouldDisableTime:me,labels:le,autoFocus:!0}),ge?n(c,{size:ee,children:[q?e(s,{variant:"ghost",size:ee,color:ne,density:"compact",onClick:()=>{commit(null),setOpen(!1)},children:le.clear}):null,A?e(s,{variant:"ghost",size:ee,color:ne,density:"compact",disabled:me(fe,"second"),onClick:()=>{commit(fe),setOpen(!1)},children:le.now}):null,E?null:e(s,{variant:"solid",size:ee,color:ne,density:"compact",onClick:()=>setOpen(!1),children:le.done})]}):null]})})});