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 n}from"react/jsx-runtime";import*as t from"react";import{CartesianChart as o,entryKeys as a,markTransitionClasses as r}from"../../internal/chart-frame.js";import{barBandRatio as s,barMaxThickness as i,barRadius as l,formatTimeTicks as c,formatTimeValue as m,markGap as d,resolveColor as u,seriesColor as h,timeNeedsDate as x,timeScale as p,toNumber as f}from"../../internal/chart.js";import{srOnlyClasses as M}from"../../internal/styles.js";import{textOf as b}from"../../internal/text.js";import{useDefaults as y}from"../../internal/defaults.js";import{useLabels as k}from"../../internal/labels.js";export function PlTimelineChart({series:n,min:r,max:l,barSize:u,rounded:M=!0,size:k,density:v,xAxis:w,yAxis:g,locale:j,...$}){const C=y(),T=k??C.size??"md",z=v??C.density??"default",A=j??C.locale,P=t.useMemo(()=>n.map(packRow),[n]),W=t.useMemo(()=>P.map(e=>e.spans),[P]),E=t.useMemo(()=>{let e=1/0,n=-1/0,t=!1;for(const o of W)for(const a of o)a&&(t=!0,e=Math.min(e,a.from),n=Math.max(n,a.to));return t?{min:e,max:n}:null},[W]),I=t.useMemo(()=>p(E,{min:f(r)??void 0,max:f(l)??void 0,tickCount:g?.tickCount}),[E,r,l,g?.tickCount]),R=t.useMemo(()=>c(I.ticks,I.unit,A),[I,A]),S=x(I.ticks,I.unit),B=t.useMemo(()=>n.map((e,n)=>h(e,n)),[n]),D=t.useMemo(()=>[{data:W.map(e=>e.some(Boolean)?1:null)}],[W]),N=t.useMemo(()=>n.map((e,n)=>e.name??`${n+1}`),[n]),F=t.useMemo(()=>a(n),[n]),q=u??i[T],G=t.useCallback(e=>{const n=[];return P.forEach((t,o)=>{const a=Math.min(q,Math.max(1,(e.band.band-d*(t.lanes-1))/t.lanes)),r=a*t.lanes+d*(t.lanes-1),s=e.plot.top+e.categoryPx(o)-r/2+a/2;t.spans.forEach((t,r)=>{if(!t||!inWindow(t,e.scale))return;const i=e.valuePx(Math.max(t.from,e.scale.min)),l=e.valuePx(Math.min(t.to,e.scale.max));n.push({series:o,index:r,key:F[o],x:(i+l)/2,y:s+t.lane*(a+d),r:a/2,rx:Math.max(0,(l-i)/2),ry:a/2})})}),n},[P,F,q]),H=t.useCallback(e=>{const n=W[e.series]?.[e.index];if(!n)return null;const t=n.span.label,o=null!=t,a={seriesIndex:e.series,color:n.color??B[e.series],value:n.to-n.from,formatted:`${m(n.from,I.unit,A,S)} – ${m(n.to,I.unit,A,S)}`};return{heading:o?t:N[e.series],items:[{...a,name:o?N[e.series]:void 0}],index:e.series,category:N[e.series],renderItems:[{...a,name:o&&b(t)||void 0}]}},[W,N,B,I.unit,A,S]);return e(o,{...$,series:D,categories:N,size:T,density:z,locale:A,horizontal:!0,scale:I,xAxis:w,yAxis:{tickFormat:(e,n)=>R[n]??"",...g},legend:!1,bandRatio:s[z],marks:G,markTooltip:H,table:t=>e(TimelineTable,{id:t,names:N,series:n,spans:W,scale:I,withDate:S,label:$.label,corner:w?.label,locale:A}),children:n=>e(Spans,{context:n,spans:W,colors:B,rounded:M})})}function packRow(e){const n=e.data.map(e=>{const n=f(e.start),t=f(e.end);return null===n||null===t?null:{from:Math.min(n,t),to:Math.max(n,t),lane:0,color:e.color?u(e.color):void 0,span:e}}),t=[];return n.map((e,n)=>({one:e,index:n})).filter(e=>Boolean(e.one)).sort((e,n)=>e.one.from-n.one.from).forEach(({one:e})=>{const n=t.findIndex(n=>n<=e.from),o=-1===n?t.length:n;t[o]=e.to,e.lane=o}),{spans:n,lanes:Math.max(1,t.length)}}function inWindow(e,n){return e.to>=n.min&&e.from<=n.max}function Spans({context:n,spans:t,colors:o,rounded:a}){const{marks:s,activeMark:i}=n,c=a?l:0;return e("g",{children:s.map(n=>{const a=t[n.series]?.[n.index];if(!a)return null;const s=i?.series===n.series&&i?.index===n.index,l=n.rx??n.r,m=2*(n.ry??n.r),d=Math.max(1,2*l);return e("rect",{x:n.x-l,y:n.y-m/2,width:d,height:m,rx:Math.min(c,d/2,m/2),fill:a.color??o[n.series],opacity:s?1:.92,className:r},`${n.series}-${n.index}`)})})}function TimelineTable({id:t,names:o,series:a,spans:r,scale:s,withDate:i,label:l,corner:c,locale:d}){const u=k(),h=r.some((e,n)=>e.some((e,t)=>null!==e&&inWindow(e,s)&&void 0!==a[n].data[t]?.label));return n("table",{id:t,className:M,children:[l?e("caption",{children:l}):null,e("thead",{children:n("tr",{children:[e("th",{scope:"col",children:c??""}),h?e("th",{scope:"col",children:"label"}):null,e("th",{scope:"col",children:u.start}),e("th",{scope:"col",children:u.end})]})}),e("tbody",{children:r.flatMap((t,r)=>t.map((t,l)=>t&&inWindow(t,s)?n("tr",{children:[e("th",{scope:"row",children:o[r]}),h?e("td",{children:a[r].data[l]?.label??""}):null,e("td",{children:m(t.from,s.unit,d,i)}),e("td",{children:m(t.to,s.unit,d,i)})]},`${r}-${l}`):null))})]})}
1
+ "use client";import{jsx as e,jsxs as n}from"react/jsx-runtime";import*as t from"react";import{CartesianChart as a,entryKeys as o,markTransitionClasses as r}from"../../internal/chart-frame.js";import{barBandRatio as s,barMaxThickness as i,barRadius as l,formatTimeTicks as m,formatTimeValue as c,markGap as d,resolveColor as u,seriesColor as h,timeNeedsDate as p,timeScale as x,toNumber as f}from"../../internal/chart.js";import{srOnlyClasses as M}from"../../internal/styles.js";import{textOf as b}from"../../internal/text.js";import{useDefaults as y,useLocale as k}from"../../internal/defaults.js";import{useLabels as w}from"../../internal/labels.js";export function PlTimelineChart({series:n,min:r,max:l,barSize:u,rounded:M=!0,size:w,density:v,xAxis:g,yAxis:j,locale:$,...C}){const T=y(),z=w??T.size??"md",W=v??T.density??"default",A=k($),P=t.useMemo(()=>n.map(packRow),[n]),B=t.useMemo(()=>P.map(e=>e.spans),[P]),E=t.useMemo(()=>{let e=1/0,n=-1/0,t=!1;for(const a of B)for(const o of a)o&&(t=!0,e=Math.min(e,o.from),n=Math.max(n,o.to));return t?{min:e,max:n}:null},[B]),I=t.useMemo(()=>x(E,{min:f(r)??void 0,max:f(l)??void 0,tickCount:j?.tickCount}),[E,r,l,j?.tickCount]),R=t.useMemo(()=>m(I.ticks,I.unit,A),[I,A]),S=p(I.ticks,I.unit),D=t.useCallback(e=>c(e,I.unit,A,S),[I.unit,A,S]),N=t.useMemo(()=>n.map((e,n)=>h(e,n)),[n]),F=t.useMemo(()=>[{data:B.map(e=>e.some(Boolean)?1:null)}],[B]),V=t.useMemo(()=>n.map((e,n)=>e.name??`${n+1}`),[n]),q=t.useMemo(()=>o(n),[n]),G=t.useMemo(()=>B.map((e,n)=>{let t=1/0,a=-1/0;for(const n of e)n&&inWindow(n,I)&&(t=Math.min(t,n.from),a=Math.max(a,n.to));return{name:V[n],said:t>a?null:`${D(t)} – ${D(a)}`}}),[B,V,I,D]),H=u??i[z],J=t.useCallback(e=>{const n=[];return P.forEach((t,a)=>{const o=Math.min(H,Math.max(1,(e.band.band-d*(t.lanes-1))/t.lanes)),r=o*t.lanes+d*(t.lanes-1),s=e.plot.top+e.categoryPx(a)-r/2+o/2;t.spans.forEach((t,r)=>{if(!t||!inWindow(t,e.scale))return;const i=e.valuePx(Math.max(t.from,e.scale.min)),l=e.valuePx(Math.min(t.to,e.scale.max));n.push({series:a,index:r,key:q[a],x:(i+l)/2,y:s+t.lane*(o+d),r:o/2,rx:Math.max(0,(l-i)/2),ry:o/2})})}),n},[P,q,H]),K=t.useCallback(e=>{const n=B[e.series]?.[e.index];if(!n)return null;const t=n.span.label,a=null!=t,o={seriesIndex:e.series,color:n.color??N[e.series],value:n.to-n.from,formatted:`${c(n.from,I.unit,A,S)} – ${c(n.to,I.unit,A,S)}`};return{heading:a?t:V[e.series],items:[{...o,name:a?V[e.series]:void 0}],index:e.series,category:V[e.series],renderItems:[{...o,name:a&&b(t)||void 0}]}},[B,V,N,I.unit,A,S]);return e(a,{...C,series:F,categories:V,size:z,density:W,locale:A,horizontal:!0,scale:I,xAxis:g,yAxis:{tickFormat:(e,n)=>R[n]??"",...j},legend:!1,bandRatio:s[W],marks:J,markTooltip:K,summary:G,writeValue:D,table:(t,a)=>e(TimelineTable,{id:t,...a,names:V,series:n,spans:B,scale:I,withDate:S,corner:g?.label,locale:A}),children:n=>e(Spans,{context:n,spans:B,colors:N,rounded:M})})}function packRow(e){const n=e.data.map(e=>{const n=f(e.start),t=f(e.end);return null===n||null===t?null:{from:Math.min(n,t),to:Math.max(n,t),lane:0,color:e.color?u(e.color):void 0,span:e}}),t=[];return n.map((e,n)=>({one:e,index:n})).filter(e=>Boolean(e.one)).sort((e,n)=>e.one.from-n.one.from).forEach(({one:e})=>{const n=t.findIndex(n=>n<=e.from),a=-1===n?t.length:n;t[a]=e.to,e.lane=a}),{spans:n,lanes:Math.max(1,t.length)}}function inWindow(e,n){return e.to>=n.min&&e.from<=n.max}function Spans({context:n,spans:t,colors:a,rounded:o}){const{marks:s,activeMark:i}=n,m=o?l:0;return e("g",{children:s.map(n=>{const o=t[n.series]?.[n.index];if(!o)return null;const s=i?.series===n.series&&i?.index===n.index,l=n.rx??n.r,c=2*(n.ry??n.r),d=Math.max(1,2*l);return e("rect",{x:n.x-l,y:n.y-c/2,width:d,height:c,rx:Math.min(m,d/2,c/2),fill:o.color??a[n.series],opacity:s?1:.92,className:r},`${n.series}-${n.index}`)})})}function TimelineTable({id:t,caption:a,labelledBy:o,names:r,series:s,spans:i,scale:l,withDate:m,corner:d,locale:u}){const h=w(),p=i.some((e,n)=>e.some((e,t)=>null!==e&&inWindow(e,l)&&void 0!==s[n].data[t]?.label));return n("table",{id:t,className:M,"aria-labelledby":o,children:[a?e("caption",{children:a}):null,e("thead",{children:n("tr",{children:[e("th",{scope:"col",children:d??""}),p?e("th",{scope:"col",children:h.name}):null,e("th",{scope:"col",children:h.start}),e("th",{scope:"col",children:h.end})]})}),e("tbody",{children:i.flatMap((t,a)=>t.map((t,o)=>t&&inWindow(t,l)?n("tr",{children:[e("th",{scope:"row",children:r[a]}),p?e("td",{children:s[a].data[o]?.label??""}):null,e("td",{children:c(t.from,l.unit,u,m)}),e("td",{children:c(t.to,l.unit,u,m)})]},`${a}-${o}`):null))})]})}
@@ -1 +1 @@
1
- "use client";import{jsx as t,jsxs as e}from"react/jsx-runtime";import*as s from"react";import{useDefaults as o}from"../../internal/defaults.js";import{useLabels as a}from"../../internal/labels.js";import{Toast as i}from"@base-ui/react/toast";import{CloseIcon as r,severityIcon as n}from"../../internal/icons.js";import{controlSlots as l,focusRingClasses as c,forcedFieldEdgeClasses as d,glassClasses as p,hasContent as m,iconClasses as f,metaTextClasses as u,radiusClasses as h,sheetBodyClasses as v,sheetHeaderGapClasses as g,sheetPaddingXClasses as x,sheetPaddingYClasses as b,sheetSectionGapClasses as y,sheetTitleClasses as w,targetClasses as j,transitionClasses as N}from"../../internal/styles.js";const T={"top-start":"top-0 items-start","top-center":"top-0 items-center","top-end":"top-0 items-end","bottom-start":"bottom-0 flex-col-reverse items-start","bottom-center":"bottom-0 flex-col-reverse items-center","bottom-end":"bottom-0 flex-col-reverse items-end"},M={solid:/* @__PURE__ */["text-(--p-on-solid) [background-image:var(--p-fill)]","[box-shadow:var(--plass-shadow-3),var(--p-lift)]",d].join(" "),glass:/* @__PURE__ */[p,"border text-(--plass-fg) bg-(--plass-glass-press)","[border-color:var(--p-line)]","[box-shadow:var(--plass-shadow-3),var(--plass-gloss-glass)]"].join(" "),ghost:/* @__PURE__ */[p,"text-(--plass-fg) bg-(--plass-glass-press)","[box-shadow:var(--plass-shadow-3),var(--plass-gloss-glass)]"].join(" ")},z={solid:"",glass:"text-(--p-accent)",ghost:"text-(--p-accent)"};function toManagerOptions(t){const{color:e,variant:s,icon:o,className:a,style:i,actionLabel:r,onAction:n,...l}=t;return{...l,data:{color:e,variant:s,icon:o,className:a,style:i},actionProps:void 0===r?void 0:{children:r,onClick:n}}}export function usePlToast(){const t=i.useToastManager();return s.useMemo(()=>({add:e=>t.add(toManagerOptions(e)),close:e=>t.close(e),update:(e,s)=>t.update(e,toManagerOptions(s)),promise:(e,s)=>t.promise(e,{loading:toManagerOptions(s.loading),success:t=>toManagerOptions("function"==typeof s.success?s.success(t):s.success),error:t=>toManagerOptions("function"==typeof s.error?s.error(t):s.error)}),toasts:t.toasts}),[t])}function ToastItem({toast:s,variant:o,color:a,size:d,density:p,closeLabel:T,swipeDirection:O}){const P=s.data?.variant??o??"glass",k=s.data?.color??a,$=void 0===s.data?.icon?n(k):s.data.icon,D=z[P],L=m(s.title);return e(i.Root,{toast:s,swipeDirection:O,className:["pointer-events-auto flex w-full items-start",x[p??"default"][d],b[p??"default"][d],h[d],y[d],v[d],M[P],f,N,"data-[starting-style]:opacity-0 data-[ending-style]:opacity-0","data-[ending-style]:data-[swipe-direction]:[transform:translate(var(--toast-swipe-movement-x),var(--toast-swipe-movement-y))]","data-[limited]:hidden",c,"[outline:none]",s.data?.className??""].filter(Boolean).join(" "),style:{...l(k,3,P),...s.data?.style},children:[m($)?t("span",{className:`flex h-[1lh] shrink-0 items-center ${D}`,children:$}):null,e("div",{className:`flex min-w-0 flex-1 flex-col ${g[d]}`,children:[t(i.Title,{className:`plass-title m-0 font-semibold ${w[d]} ${D}`}),t(i.Description,{className:L&&"solid"!==P?"m-0 text-(--plass-muted-fg)":"m-0"})]}),t(i.Action,{className:["flex h-[1lh] shrink-0 cursor-pointer items-center rounded-full px-2","font-medium underline-offset-2",D||"text-inherit","hover:underline",c,u[d]].join(" ")}),t("span",{className:"flex h-[1lh] shrink-0 items-center",children:t(i.Close,{"aria-label":T,className:[j,"inline-flex size-[1.15em] cursor-pointer items-center justify-center rounded-full","opacity-70 [transition:opacity_var(--plass-duration)_var(--plass-ease)]","motion-reduce:[transition-duration:0ms]","hover:opacity-100 focus-visible:opacity-100",c].join(" "),children:t(r,{})})})]})}function ToastViewport(e){const{toasts:s}=i.useToastManager(),o=a(),{position:r,width:n,...l}=e,c=[r.startsWith("top")?"up":"down","left","right"];return t(i.Portal,{children:t(i.Viewport,{"aria-label":o.notifications,className:["plass-portal pointer-events-none fixed inset-x-0 z-(--plass-z-portal) flex flex-col gap-2 p-4",T[r]].join(" "),children:s.map(e=>t("div",{className:"w-full",style:{maxWidth:"number"==typeof n?`${n}px`:n},children:t(ToastItem,{toast:e,swipeDirection:c,...l})},e.id))})})}export function PlToastProvider({variant:s="glass",size:r,color:n,density:l,position:c="bottom-end",timeout:d=5e3,limit:p=3,width:m=380,closeLabel:f,children:u}){const h=o(),v=a(),g=f??v.close,x=r??h.size??"md",b=n??h.color??"primary",y=l??h.density??"default";return e(i.Provider,{timeout:d,limit:p,children:[u,t(ToastViewport,{position:c,variant:s,size:x,color:b,density:y,width:m,closeLabel:g})]})}
1
+ "use client";import{jsx as t,jsxs as e}from"react/jsx-runtime";import*as s from"react";import{useDefaults as o}from"../../internal/defaults.js";import{useLabels as a}from"../../internal/labels.js";import{Toast as i}from"@base-ui/react/toast";import{CloseIcon as r,severityIcon as n}from"../../internal/icons.js";import{controlSlots as l,focusRingClasses as c,forcedFieldEdgeClasses as d,glassClasses as p,hasContent as m,iconClasses as f,metaTextClasses as u,radiusClasses as h,sheetBodyClasses as v,sheetHeaderGapClasses as g,sheetPaddingXClasses as x,sheetPaddingYClasses as b,sheetSectionGapClasses as y,sheetTitleClasses as w,targetClasses as j,transitionClasses as N}from"../../internal/styles.js";const T={"top-start":"top-0 items-start","top-center":"top-0 items-center","top-end":"top-0 items-end","bottom-start":"bottom-0 flex-col-reverse items-start","bottom-center":"bottom-0 flex-col-reverse items-center","bottom-end":"bottom-0 flex-col-reverse items-end"},M={solid:/* @__PURE__ */["text-(--p-on-solid) [background-image:var(--p-fill)]","[box-shadow:var(--plass-shadow-3),var(--p-lift)]",d].join(" "),glass:/* @__PURE__ */[p,"border text-(--plass-fg) bg-(--plass-glass-press)","[border-color:var(--p-line)]","[box-shadow:var(--plass-shadow-3),var(--plass-gloss-glass)]"].join(" "),ghost:/* @__PURE__ */[p,"text-(--plass-fg) bg-(--plass-glass-press)","[box-shadow:var(--plass-shadow-3),var(--plass-gloss-glass)]"].join(" ")},z={solid:"",glass:"text-(--p-accent)",ghost:"text-(--p-accent)"};function toManagerOptions(t){const{color:e,variant:s,icon:o,className:a,style:i,actionLabel:r,onAction:n,...l}=t;return{...l,data:{color:e,variant:s,icon:o,className:a,style:i},actionProps:void 0===r?void 0:{children:r,onClick:n}}}export function usePlToast(){const t=i.useToastManager();return s.useMemo(()=>({add:e=>t.add(toManagerOptions(e)),close:e=>t.close(e),update:(e,s)=>t.update(e,toManagerOptions(s)),promise:(e,s)=>t.promise(e,{loading:toManagerOptions(s.loading),success:t=>toManagerOptions("function"==typeof s.success?s.success(t):s.success),error:t=>toManagerOptions("function"==typeof s.error?s.error(t):s.error)}),toasts:t.toasts}),[t])}function ToastItem({toast:s,variant:o,color:a,size:d,density:p,closeLabel:T,swipeDirection:O}){const P=s.data?.variant??o??"glass",k=s.data?.color??a,$=void 0===s.data?.icon?n(k):s.data.icon,D=z[P],L=m(s.title);return e(i.Root,{toast:s,swipeDirection:O,className:["pointer-events-auto flex w-full items-start",x[p??"default"][d],b[p??"default"][d],h[d],y[d],v[d],M[P],f,N,"data-[starting-style]:opacity-0 data-[ending-style]:opacity-0","data-[ending-style]:data-[swipe-direction]:[transform:translate(var(--toast-swipe-movement-x),var(--toast-swipe-movement-y))]","data-[limited]:hidden",c,"[outline:none]",s.data?.className??""].filter(Boolean).join(" "),style:{...l(k,3,P),...s.data?.style},children:[m($)?t("span",{className:`flex h-[1lh] shrink-0 items-center ${D}`,children:$}):null,e("div",{className:`flex min-w-0 flex-1 flex-col ${g[d]}`,children:[t(i.Title,{className:`plass-title m-0 font-semibold ${w[d]} ${D}`}),t(i.Description,{className:L&&"solid"!==P?"m-0 text-(--plass-muted-fg)":"m-0"})]}),t(i.Action,{className:["flex h-[1lh] shrink-0 cursor-pointer items-center rounded-full px-2 py-0","font-medium underline-offset-2",D||"text-inherit","hover:underline",c,u[d]].join(" ")}),t("span",{className:"flex h-[1lh] shrink-0 items-center",children:t(i.Close,{"aria-label":T,className:[j,"inline-flex size-[1.15em] cursor-pointer items-center justify-center rounded-full p-0","opacity-70 [transition:opacity_var(--plass-duration)_var(--plass-ease)]","motion-reduce:[transition-duration:0ms]","hover:opacity-100 focus-visible:opacity-100",c].join(" "),children:t(r,{})})})]})}function ToastViewport(e){const{toasts:s}=i.useToastManager(),o=a(),{position:r,width:n,...l}=e,c=[r.startsWith("top")?"up":"down","left","right"];return t(i.Portal,{children:t(i.Viewport,{"aria-label":o.notifications,className:["plass-portal pointer-events-none fixed inset-x-0 z-(--plass-z-portal) flex flex-col gap-2 p-4",T[r]].join(" "),children:s.map(e=>t("div",{className:"w-full",style:{maxWidth:"number"==typeof n?`${n}px`:n},children:t(ToastItem,{toast:e,swipeDirection:c,...l})},e.id))})})}export function PlToastProvider({variant:s="glass",size:r,color:n,density:l,position:c="bottom-end",timeout:d=5e3,limit:p=3,width:m=380,closeLabel:f,children:u}){const h=o(),v=a(),g=f??v.close,x=r??h.size??"md",b=n??h.color??"primary",y=l??h.density??"default";return e(i.Provider,{timeout:d,limit:p,children:[u,t(ToastViewport,{position:c,variant:s,size:x,color:b,density:y,width:m,closeLabel:g})]})}
@@ -1 +1 @@
1
- "use client";import{jsx as s,jsxs as e}from"react/jsx-runtime";import*as o from"react";import{glowPointerMove as l}from"../../internal/glow.js";import{useDefaults as a}from"../../internal/defaults.js";import{Toggle as r}from"@base-ui/react/toggle";import{ButtonGroupContext as t}from"../../internal/button-group.js";import{useDisabled as i}from"../../internal/form.js";import{controlHeightClasses as p,controlSlots as n,controlSquareClasses as g,controlTextClasses as v,disabledClasses as d,focusRingClasses as h,forcedEdgeClasses as m,forcedPressedClasses as x,gapClasses as c,glassClasses as f,hasContent as b,iconClasses as $,paddingXClasses as u,radiusClasses as j,transitionClasses as w}from"../../internal/styles.js";const y={xs:`${p.xs} ${c.xs} ${j.xs} ${v.xs}`,sm:`${p.sm} ${c.sm} ${j.sm} ${v.sm}`,md:`${p.md} ${c.md} ${j.md} ${v.md}`,lg:`${p.lg} ${c.lg} ${j.lg} ${v.lg}`,xl:`${p.xl} ${c.xl} ${j.xl} ${v.xl}`},P={xs:`${g.xs} px-0`,sm:`${g.sm} px-0`,md:`${g.md} px-0`,lg:`${g.lg} px-0`,xl:`${g.xl} px-0`},z=/* @__PURE__ */["relative inline-flex shrink-0 select-none items-center justify-center","whitespace-nowrap align-middle font-semibold leading-none","[-webkit-tap-highlight-color:transparent] [touch-action:manipulation]",w,h,$].join(" "),C={solid:/* @__PURE__ */[f,"text-(--plass-muted-fg) bg-(--plass-glass-hover)","[box-shadow:var(--p-elev),var(--plass-gloss-glass)]",m].join(" "),glass:/* @__PURE__ */[f,"border text-(--plass-muted-fg) bg-(--plass-glass)","[border-color:var(--plass-glass-line)]","[box-shadow:var(--p-elev),var(--plass-gloss-glass)]"].join(" "),ghost:"text-(--plass-muted-fg) bg-transparent"},N={solid:/* @__PURE__ */["hover:bg-(--plass-glass-press) hover:text-(--plass-fg)","hover:[box-shadow:var(--p-elev-hover),var(--plass-gloss-glass)]","active:[box-shadow:var(--p-elev-press),var(--plass-gloss-glass)]"].join(" "),glass:/* @__PURE__ */["hover:bg-(--plass-glass-hover) hover:text-(--plass-fg) hover:[border-color:var(--p-line)]","hover:[box-shadow:var(--p-elev-hover),var(--plass-gloss-glass)]","active:bg-(--plass-glass-press)","active:[box-shadow:var(--p-elev-press),var(--plass-gloss-glass)]"].join(" "),ghost:"hover:bg-(--plass-glass-hover) hover:text-(--plass-fg) active:bg-(--plass-glass-press)"},T={solid:/* @__PURE__ */["text-(--p-on-solid) [--p-fill-on:1]","[box-shadow:var(--p-elev),var(--p-lift)]",x].join(" "),glass:/* @__PURE__ */[f,"border text-(--p-accent) bg-(--p-soft)","[border-color:var(--p-line-hover)]","[box-shadow:var(--p-elev),var(--plass-gloss-glass)]",x].join(" "),ghost:`text-(--p-accent) bg-(--p-soft) ${x}`},k={solid:/* @__PURE__ */["hover:brightness-105 hover:[box-shadow:var(--p-elev-hover),var(--p-lift-hover)]","active:brightness-95 active:[box-shadow:var(--p-elev-press),var(--p-lift-press)]"].join(" "),glass:"hover:bg-(--p-soft-hover) active:bg-(--p-soft-press)",ghost:"hover:bg-(--p-soft-hover) active:bg-(--p-soft-press)"};export const PlToggle=/* @__PURE__ */o.forwardRef(function PlToggle({variant:p,size:g,color:v,density:h,elevation:m,pressed:x,defaultPressed:c,onPressedChange:f,value:$,startIcon:j,endIcon:w,fullWidth:I=!1,disabled:M,className:B,style:R,children:W,onPointerMove:q,...A},D){const E=a(),F=o.useContext(t),G=p??F?.variant??"glass",H=g??F?.size??E.size??"md",J=v??F?.color??E.color??"primary",K=h??F?.density??E.density??"default",L=m??F?.elevation??0,O=i(M??F?.disabled),Q=!b(W);return e(r,{ref:D,value:$,pressed:x,defaultPressed:c,onPressedChange:s=>f?.(s),disabled:O,className:s=>[z,y[H],Q?P[H]:u[K][H],O?d[G]:s.pressed?`${T[G]} ${k[G]}`:`${C[G]} ${N[G]}`,O?"":"plass-glow cursor-pointer",I?"w-full":"",B??""].filter(Boolean).join(" "),style:{...n(J,L,G),...R},onPointerMove:l(!O,q),...A,children:["solid"===G?s("span",{"aria-hidden":"true",className:"plass-fill-layer"}):null,j,W,w]})});
1
+ "use client";import{jsx as s,jsxs as e}from"react/jsx-runtime";import*as o from"react";import{glowPointerMove as l}from"../../internal/glow.js";import{useDefaults as a}from"../../internal/defaults.js";import{Toggle as r}from"@base-ui/react/toggle";import{ButtonGroupContext as t}from"../../internal/button-group.js";import{useDisabled as i}from"../../internal/form.js";import{controlHeightClasses as p,controlSlots as n,controlSquareClasses as g,controlTextClasses as v,disabledClasses as d,focusRingClasses as h,forcedEdgeClasses as m,forcedPressedClasses as x,gapClasses as c,glassClasses as f,hasContent as b,iconClasses as $,paddingXClasses as u,radiusClasses as j,transitionClasses as w}from"../../internal/styles.js";const y={xs:`${p.xs} ${c.xs} ${j.xs} ${v.xs}`,sm:`${p.sm} ${c.sm} ${j.sm} ${v.sm}`,md:`${p.md} ${c.md} ${j.md} ${v.md}`,lg:`${p.lg} ${c.lg} ${j.lg} ${v.lg}`,xl:`${p.xl} ${c.xl} ${j.xl} ${v.xl}`},P={xs:`${g.xs} px-0`,sm:`${g.sm} px-0`,md:`${g.md} px-0`,lg:`${g.lg} px-0`,xl:`${g.xl} px-0`},z=/* @__PURE__ */["relative inline-flex shrink-0 select-none items-center justify-center p-0","whitespace-nowrap align-middle font-semibold leading-none","[-webkit-tap-highlight-color:transparent] [touch-action:manipulation]",w,h,$].join(" "),C={solid:/* @__PURE__ */[f,"text-(--plass-muted-fg) bg-(--plass-glass-hover)","[box-shadow:var(--p-elev),var(--plass-gloss-glass)]",m].join(" "),glass:/* @__PURE__ */[f,"border text-(--plass-muted-fg) bg-(--plass-glass)","[border-color:var(--plass-glass-line)]","[box-shadow:var(--p-elev),var(--plass-gloss-glass)]"].join(" "),ghost:"text-(--plass-muted-fg) bg-transparent"},N={solid:/* @__PURE__ */["hover:bg-(--plass-glass-press) hover:text-(--plass-fg)","hover:[box-shadow:var(--p-elev-hover),var(--plass-gloss-glass)]","active:[box-shadow:var(--p-elev-press),var(--plass-gloss-glass)]"].join(" "),glass:/* @__PURE__ */["hover:bg-(--plass-glass-hover) hover:text-(--plass-fg) hover:[border-color:var(--p-line)]","hover:[box-shadow:var(--p-elev-hover),var(--plass-gloss-glass)]","active:bg-(--plass-glass-press)","active:[box-shadow:var(--p-elev-press),var(--plass-gloss-glass)]"].join(" "),ghost:"hover:bg-(--plass-glass-hover) hover:text-(--plass-fg) active:bg-(--plass-glass-press)"},T={solid:/* @__PURE__ */["text-(--p-on-solid) [--p-fill-on:1]","[box-shadow:var(--p-elev),var(--p-lift)]",x].join(" "),glass:/* @__PURE__ */[f,"border text-(--p-accent) bg-(--p-soft)","[border-color:var(--p-line-hover)]","[box-shadow:var(--p-elev),var(--plass-gloss-glass)]",x].join(" "),ghost:`text-(--p-accent) bg-(--p-soft) ${x}`},k={solid:/* @__PURE__ */["hover:brightness-105 hover:[box-shadow:var(--p-elev-hover),var(--p-lift-hover)]","active:brightness-95 active:[box-shadow:var(--p-elev-press),var(--p-lift-press)]"].join(" "),glass:"hover:bg-(--p-soft-hover) active:bg-(--p-soft-press)",ghost:"hover:bg-(--p-soft-hover) active:bg-(--p-soft-press)"};export const PlToggle=/* @__PURE__ */o.forwardRef(function PlToggle({variant:p,size:g,color:v,density:h,elevation:m,pressed:x,defaultPressed:c,onPressedChange:f,value:$,startIcon:j,endIcon:w,fullWidth:I=!1,disabled:M,className:B,style:R,children:W,onPointerMove:q,...A},D){const E=a(),F=o.useContext(t),G=p??F?.variant??"glass",H=g??F?.size??E.size??"md",J=v??F?.color??E.color??"primary",K=h??F?.density??E.density??"default",L=m??F?.elevation??0,O=i(M??F?.disabled),Q=!b(W);return e(r,{ref:D,value:$,pressed:x,defaultPressed:c,onPressedChange:s=>f?.(s),disabled:O,className:s=>[z,y[H],Q?P[H]:u[K][H],O?d[G]:s.pressed?`${T[G]} ${k[G]}`:`${C[G]} ${N[G]}`,O?"":"plass-glow cursor-pointer",I?"w-full":"",B??""].filter(Boolean).join(" "),style:{...n(J,L,G),...R},onPointerMove:l(!O,q),...A,children:["solid"===G?s("span",{"aria-hidden":"true",className:"plass-fill-layer"}):null,j,W,w]})});
@@ -1 +1 @@
1
- "use client";import{jsx as e,jsxs as t}from"react/jsx-runtime";import*as s from"react";import{Popover as n}from"@base-ui/react/popover";import{PlButton as i}from"../button/index.js";import{useDefaults as o}from"../../internal/defaults.js";import{CloseIcon as a}from"../../internal/icons.js";import{useLabels as l}from"../../internal/labels.js";import{reducedMotionQuery as r}from"../../internal/media.js";import{inflate as c,spotlightPath as d}from"../../internal/tour.js";import{cx as m,focusRingClasses as p,glassClasses as u,hasContent as f,metaTextClasses as h,radiusClasses as g,sheetBodyClasses as v,sheetHeaderGapClasses as x,sheetPaddingXClasses as b,sheetPaddingYClasses as w,sheetSectionGapClasses as y,sheetTitleClasses as k,surfaceSlots as z,targetClasses as j}from"../../internal/styles.js";const N={xs:"max-w-56",sm:"max-w-64",md:"max-w-80",lg:"max-w-96",xl:"max-w-lg"},_={xs:"xs",sm:"xs",md:"sm",lg:"sm",xl:"md"},C={xs:6,sm:8,md:10,lg:12,xl:14},L=/* @__PURE__ */[u,"relative flex flex-col","border text-(--plass-fg) bg-(--plass-glass-press)","[border-color:var(--plass-glass-line)]","[box-shadow:var(--plass-shadow-3),var(--plass-gloss-glass)]","[outline:none]","[transition:opacity_var(--plass-duration)_var(--plass-ease)]","motion-reduce:[transition-duration:0ms]","data-[starting-style]:opacity-0 data-[ending-style]:opacity-0"].join(" "),E=/* @__PURE__ */[j,"flex size-[1.6em] shrink-0 cursor-pointer items-center justify-center","rounded-full text-(--plass-muted-fg)","[&_svg]:size-[1.1em] [&_svg]:shrink-0","[transition:background-color_var(--plass-duration)_var(--plass-ease),color_var(--plass-duration)_var(--plass-ease)]","motion-reduce:[transition-duration:0ms]","hover:bg-(--p-soft) hover:text-(--plass-fg)",p].join(" "),O={getBoundingClientRect:()=>DOMRect.fromRect({x:window.innerWidth/2,y:window.innerHeight/2,width:0,height:0})},centreOnAnchor=({positioner:e})=>-e.height/2;function resolve(e){return void 0===e?null:"string"==typeof e?document.querySelector(e):"function"==typeof e?e()??null:e.current??null}export function PlTour({steps:p,open:u,defaultOpen:j=!1,onOpenChange:P,step:R,defaultStep:S=0,onStepChange:M,onFinish:F,mask:q=!0,skippable:A=!0,dismissible:B=!0,scrollIntoView:D=!0,previousLabel:I,nextLabel:T,doneLabel:V,skipLabel:H,size:W,color:G,density:J,className:K,classNames:Q}){const U=o(),X=l(),Y=W??U.size??"md",Z=G??U.color??"primary",$=J??U.density??"default",[ee,te]=s.useState(j),[se,ne]=s.useState(S),ie=u??ee,oe=Math.min(R??se,Math.max(0,p.length-1)),ae=p[oe],[le,re]=s.useState(null),setOpen=e=>{void 0===u&&te(e),P?.(e)},goTo=e=>{void 0===R&&ne(e),M?.(e)},ce=ae?.target,de=ae?.padding??6,[me,pe]=s.useState(null);if(s.useLayoutEffect(()=>{pe(ie?resolve(ce):null)},[ie,ce,oe]),s.useEffect(()=>{if(!ie)return;const e=resolve(ce);if(!(e instanceof Element))return;if(D){const t=window.matchMedia?.(r).matches;e.scrollIntoView({block:"center",inline:"nearest",behavior:t?"instant":"smooth"})}let t=0;const read=()=>{t=0;const s=e.getBoundingClientRect();re({at:oe,spot:c({top:s.top,left:s.left,width:s.width,height:s.height},de)})},schedule=()=>{0===t&&(t=requestAnimationFrame(read))};read();const s="undefined"==typeof ResizeObserver?null:new ResizeObserver(schedule);return s?.observe(e),window.addEventListener("scroll",schedule,{passive:!0,capture:!0}),window.addEventListener("resize",schedule,{passive:!0}),()=>{0!==t&&cancelAnimationFrame(t),s?.disconnect(),window.removeEventListener("scroll",schedule,!0),window.removeEventListener("resize",schedule)}},[ie,ce,de,oe,D]),0===p.length)return null;const ue=ie&&le?.at===oe?le.spot:null,fe=0===oe,he=oe===p.length-1,ge=b[$][Y],ve=w[$][Y],xe=_[Y],be=f(ae?.title)||f(ae?.content);return e(n.Root,{open:ie,onOpenChange:(e,t)=>{(e||B||"escape-key"!==t.reason)&&(e||"outside-press"!==t.reason&&"focus-out"!==t.reason)?setOpen(e):t.cancel()},children:t(n.Portal,{children:[ie&&q?e("div",{"aria-hidden":"true","data-testid":"plass-tour-mask",className:m("plass-portal fixed inset-0 z-(--plass-z-portal)","bg-(--plass-scrim) [backdrop-filter:blur(2px)] [-webkit-backdrop-filter:blur(2px)]","[transition:opacity_var(--plass-duration-slow)_var(--plass-ease)]","motion-reduce:[transition-duration:0ms]",Q?.mask),style:{clipPath:d(ue,ae?.radius??C[Y])}}):null,e(n.Positioner,{className:"plass-portal z-(--plass-z-portal) [outline:none]",side:me?ae?.side??"bottom":"bottom",align:me?ae?.align??"center":"center",sideOffset:me?10:centreOnAnchor,collisionPadding:12,anchor:me??O,children:t(n.Popup,{className:m(L,g[Y],v[Y],y[Y],N[Y],ge,ve,K),style:z(Z,3),children:[be?t("div",{className:"flex items-start gap-3",children:[t("div",{"aria-live":"polite","aria-atomic":"true",className:m("flex min-w-0 flex-1 flex-col",x[Y]),children:[f(ae?.title)?e(n.Title,{className:m("m-0 font-semibold",k[Y],Q?.title),children:ae?.title}):null,f(ae?.content)?e(n.Description,{className:m("m-0 min-w-0",Q?.content),children:ae?.content}):null]}),B?e("button",{type:"button","aria-label":X.close,onClick:()=>setOpen(!1),className:m(E,Q?.close),children:e(a,{})}):null]}):null,t("div",{className:m("flex items-center gap-2",Q?.footer),children:[t("span",{className:m("shrink-0 tabular-nums text-(--plass-muted-fg)",h[Y]),children:[oe+1," / ",p.length]}),t("div",{className:"ms-auto flex items-center gap-2",children:[A&&!he?e(i,{size:xe,variant:"ghost",color:"secondary",onClick:()=>setOpen(!1),children:H??X.skip}):null,fe?null:e(i,{size:xe,variant:"ghost",color:Z,onClick:()=>goTo(oe-1),children:I??X.previous}),e(i,{size:xe,color:Z,onClick:()=>he?(F?.(),void setOpen(!1)):goTo(oe+1),children:he?V??X.done:T??X.next})]})]})]})})]})})}
1
+ "use client";import{jsx as e,jsxs as s}from"react/jsx-runtime";import*as t from"react";import{Popover as n}from"@base-ui/react/popover";import{PlButton as i}from"../button/index.js";import{useDefaults as o}from"../../internal/defaults.js";import{CloseIcon as a}from"../../internal/icons.js";import{useLabels as l}from"../../internal/labels.js";import{reducedMotionQuery as r}from"../../internal/media.js";import{inflate as c,spotlightPath as d}from"../../internal/tour.js";import{cx as m,focusRingClasses as p,glassClasses as u,hasContent as f,metaTextClasses as h,radiusClasses as v,sheetBodyClasses as g,sheetHeaderGapClasses as x,sheetPaddingXClasses as b,sheetPaddingYClasses as w,sheetSectionGapClasses as y,sheetTitleClasses as k,surfaceSlots as z,targetClasses as j}from"../../internal/styles.js";const N={xs:"max-w-56",sm:"max-w-64",md:"max-w-80",lg:"max-w-96",xl:"max-w-lg"},_={xs:"xs",sm:"xs",md:"sm",lg:"sm",xl:"md"},C={xs:6,sm:8,md:10,lg:12,xl:14},L=/* @__PURE__ */[u,"relative flex flex-col","border text-(--plass-fg) bg-(--plass-glass-press)","[border-color:var(--plass-glass-line)]","[box-shadow:var(--plass-shadow-3),var(--plass-gloss-glass)]","[outline:none]","[transition:opacity_var(--plass-duration)_var(--plass-ease)]","motion-reduce:[transition-duration:0ms]","data-[starting-style]:opacity-0 data-[ending-style]:opacity-0"].join(" "),E=/* @__PURE__ */[j,"flex size-[1.6em] shrink-0 cursor-pointer items-center justify-center p-0","rounded-full text-(--plass-muted-fg)","[&_svg]:size-[1.1em] [&_svg]:shrink-0","[transition:background-color_var(--plass-duration)_var(--plass-ease),color_var(--plass-duration)_var(--plass-ease)]","motion-reduce:[transition-duration:0ms]","hover:bg-(--p-soft) hover:text-(--plass-fg)",p].join(" "),O={getBoundingClientRect:()=>DOMRect.fromRect({x:window.innerWidth/2,y:window.innerHeight/2,width:0,height:0})},centreOnAnchor=({positioner:e})=>-e.height/2;function resolve(e){return void 0===e?null:"string"==typeof e?document.querySelector(e):"function"==typeof e?e()??null:e.current??null}export function PlTour({steps:p,open:u,defaultOpen:j=!1,onOpenChange:P,step:R,defaultStep:S=0,onStepChange:M,onFinish:F,mask:q=!0,skippable:A=!0,dismissible:B=!0,scrollIntoView:D=!0,previousLabel:I,nextLabel:T,doneLabel:V,skipLabel:H,size:W,color:G,density:J,className:K,classNames:Q}){const U=o(),X=l(),Y=W??U.size??"md",Z=G??U.color??"primary",$=J??U.density??"default",[ee,se]=t.useState(j),[te,ne]=t.useState(S),ie=u??ee,oe=Math.min(R??te,Math.max(0,p.length-1)),ae=p[oe],[le,re]=t.useState(null),setOpen=e=>{void 0===u&&se(e),P?.(e)},goTo=e=>{void 0===R&&ne(e),M?.(e)},ce=ae?.target,de=ae?.padding??6,[me,pe]=t.useState(null);if(t.useLayoutEffect(()=>{pe(ie?resolve(ce):null)},[ie,ce,oe]),t.useEffect(()=>{if(!ie)return;const e=resolve(ce);if(!(e instanceof Element))return;if(D){const s=window.matchMedia?.(r).matches;e.scrollIntoView({block:"center",inline:"nearest",behavior:s?"instant":"smooth"})}let s=0;const read=()=>{s=0;const t=e.getBoundingClientRect();re({at:oe,spot:c({top:t.top,left:t.left,width:t.width,height:t.height},de)})},schedule=()=>{0===s&&(s=requestAnimationFrame(read))};read();const t="undefined"==typeof ResizeObserver?null:new ResizeObserver(schedule);return t?.observe(e),window.addEventListener("scroll",schedule,{passive:!0,capture:!0}),window.addEventListener("resize",schedule,{passive:!0}),()=>{0!==s&&cancelAnimationFrame(s),t?.disconnect(),window.removeEventListener("scroll",schedule,!0),window.removeEventListener("resize",schedule)}},[ie,ce,de,oe,D]),0===p.length)return null;const ue=ie&&le?.at===oe?le.spot:null,fe=0===oe,he=oe===p.length-1,ve=b[$][Y],ge=w[$][Y],xe=_[Y],be=f(ae?.title)||f(ae?.content);return e(n.Root,{open:ie,onOpenChange:(e,s)=>{(e||B||"escape-key"!==s.reason)&&(e||"outside-press"!==s.reason&&"focus-out"!==s.reason)?setOpen(e):s.cancel()},children:s(n.Portal,{children:[ie&&q?e("div",{"aria-hidden":"true","data-testid":"plass-tour-mask",className:m("plass-portal fixed inset-0 z-(--plass-z-portal)","bg-(--plass-scrim) [backdrop-filter:var(--plass-scrim-blur)] [-webkit-backdrop-filter:var(--plass-scrim-blur)]","[transition:opacity_var(--plass-duration-slow)_var(--plass-ease)]","motion-reduce:[transition-duration:0ms]",Q?.mask),style:{clipPath:d(ue,ae?.radius??C[Y])}}):null,e(n.Positioner,{className:"plass-portal z-(--plass-z-portal) [outline:none]",side:me?ae?.side??"bottom":"bottom",align:me?ae?.align??"center":"center",sideOffset:me?10:centreOnAnchor,collisionPadding:12,anchor:me??O,children:s(n.Popup,{className:m(L,v[Y],g[Y],y[Y],N[Y],ve,ge,K),style:z(Z,3),children:[be?s("div",{className:"flex items-start gap-3",children:[s("div",{"aria-live":"polite","aria-atomic":"true",className:m("flex min-w-0 flex-1 flex-col",x[Y]),children:[f(ae?.title)?e(n.Title,{className:m("m-0 font-semibold",k[Y],Q?.title),children:ae?.title}):null,f(ae?.content)?e(n.Description,{className:m("m-0 min-w-0",Q?.content),children:ae?.content}):null]}),B?e("button",{type:"button","aria-label":X.close,onClick:()=>setOpen(!1),className:m(E,Q?.close),children:e(a,{})}):null]}):null,s("div",{className:m("flex items-center gap-2",Q?.footer),children:[s("span",{className:m("shrink-0 tabular-nums text-(--plass-muted-fg)",h[Y]),children:[oe+1," / ",p.length]}),s("div",{className:"ms-auto flex items-center gap-2",children:[A&&!he?e(i,{size:xe,variant:"ghost",color:"secondary",onClick:()=>setOpen(!1),children:H??X.skip}):null,fe?null:e(i,{size:xe,variant:"ghost",color:Z,onClick:()=>goTo(oe-1),children:I??X.previous}),e(i,{size:xe,color:Z,onClick:()=>he?(F?.(),void setOpen(!1)):goTo(oe+1),children:he?V??X.done:T??X.next})]})]})]})})]})})}
@@ -1 +1 @@
1
- "use client";import{jsx as e,jsxs as l}from"react/jsx-runtime";import*as a from"react";import{useDisabled as t}from"../../internal/form.js";import{useDefaults as r}from"../../internal/defaults.js";import{useLabels as s}from"../../internal/labels.js";import{PlCheckbox as n}from"../checkbox/PlCheckbox.js";import{PlIconButton as i}from"../icon-button/PlIconButton.js";import{PlTextField as o}from"../text-field/PlTextField.js";import{ArrowRightIcon as c}from"../../internal/icons.js";import{searchText as d}from"../../internal/search.js";import{textOf as f}from"../../internal/text.js";import{cx as u,fieldRestClasses as m,hasContent as h,metaTextClasses as b,paddingXClasses as v,radiusClasses as p,srOnlyClasses as g,surfaceSlots as y,toLength as x}from"../../internal/styles.js";const k={xs:"py-1",sm:"py-1.5",md:"py-2",lg:"py-2.5",xl:"py-3"},w={xs:"py-0.5",sm:"py-1",md:"py-1",lg:"py-1.5",xl:"py-2"},S=/* @__PURE__ */a.memo(function Row({value:l,label:t,checked:r,disabled:s,size:i,color:o,onTick:c,rowRef:d}){const f=a.useCallback(e=>d(l,e),[d,l]),u=a.useCallback(e=>c(l,!0===e),[c,l]);return e(n,{ref:f,size:i,color:o,className:w[i],label:t,checked:r,disabled:s,onCheckedChange:u})});function Panel({title:a,rows:t,ticked:r,onTick:s,onTickAll:i,search:c,onSearch:d,searchable:f,disabled:h,height:g,emptyLabel:x,searchLabel:N,selectAllName:T,style:L,titleId:j,listRef:R,rowRef:A}){const{variant:C,size:z,color:P,density:I}=L,M=t.filter(e=>!e.disabled),O=M.filter(e=>r.has(e.value)),_=M.length>0&&O.length===M.length,B=O.length>0&&!_,V=v[I][z];return l("div",{className:u("flex min-w-0 flex-col overflow-hidden",m[C],p[z]),style:y(P,0),children:[l("div",{className:u("flex items-center gap-2 border-b [border-color:var(--plass-divider)]",V,k[z]),children:[e(n,{size:z,color:P,checked:_,indeterminate:B,disabled:h||0===M.length,"aria-label":T,onCheckedChange:e=>i(!0===e)}),e("span",{id:j,className:u("min-w-0 flex-1 truncate font-medium",b[z]),children:a}),l("span",{className:u("shrink-0 tabular-nums text-(--plass-muted-fg)",b[z]),children:[O.length,"/",t.length]})]}),f?e("div",{className:u(V,k[z]),children:e(o,{size:z,color:P,density:I,fullWidth:!0,variant:"ghost",disabled:h,placeholder:N,"aria-label":N,value:c,onChange:e=>d(e.target.value)})}):null,e("div",{ref:R,role:"group","aria-labelledby":j,tabIndex:-1,className:u("min-h-0 flex-1 overflow-y-auto overscroll-contain","focus-visible:[outline:2px_solid_var(--p-ring)] focus-visible:[outline-offset:-2px]"),style:void 0===g?void 0:{height:g},children:e("div",{className:u("flex flex-col",V,k[z]),children:0===t.length?e("span",{className:u("text-(--plass-muted-fg)",b[z],w[z]),children:x}):t.map(l=>e(S,{value:l.value,label:l.label,checked:r.has(l.value),disabled:h||!0===l.disabled,size:z,color:P,onTick:s,rowRef:A},l.value))})})]})}function nameOf(e,l){const a=f(e).trim();return""===a?l:a}function narrow(e,l){const a=d(l);return""===a?e:e.filter(e=>"string"!=typeof e.label||d(e.label).includes(a))}export const PlTransfer=/* @__PURE__ */a.forwardRef(function PlTransfer({items:n,value:o,defaultValue:d,onValueChange:f,sourceLabel:m,targetLabel:b,searchable:v=!1,searchLabel:p,emptyLabel:y,selectAllLabel:k,toTargetLabel:w,toSourceLabel:S,movedLabel:N,height:T=220,disabled:L=!1,variant:j="glass",size:R,color:A,density:C,className:z,...P},I){const M=r(),O=t(L),_=s(),B=m??_.transferAvailable,V=b??_.transferSelected,$=p??_.search,E=y??_.empty,F=void 0===k?_.transferSelectAll:e=>[k,e].filter(Boolean).join(" "),W=w??_.transferToSelected,q=S??_.transferToAvailable,D=N??_.transferMoved,G=R??M.size??"md",H=A??M.color??"primary",J=C??M.density??"default",[K,Q]=a.useState(d??[]),U=o??K,[X,Y]=a.useState(()=>new Set),Z=a.useMemo(()=>new Set(n.map(e=>e.value)),[n]);[...X].some(e=>!Z.has(e))&&Y(new Set([...X].filter(e=>Z.has(e))));const[ee,le]=a.useState(""),[ae,te]=a.useState(""),re=a.useId(),se=a.useRef(new Map),ne=a.useRef(null),ie=a.useRef(null),oe=a.useRef(null),[ce,de]=a.useState(null),fe=a.useCallback((e,l)=>{l?se.current.set(e,l):se.current.delete(e)},[]),ue=a.useMemo(()=>new Set(U),[U]),me=a.useMemo(()=>n.filter(e=>!ue.has(e.value)),[n,ue]),he=a.useMemo(()=>n.filter(e=>ue.has(e.value)),[n,ue]),be=a.useCallback((e,l)=>{Y(a=>{const t=new Set(a);return l?t.add(e):t.delete(e),t})},[]),tickAll=(e,l)=>{Y(a=>{const t=new Set(a);for(const a of e)a.disabled||(l?t.add(a.value):t.delete(a.value));return t})},move=(e,l)=>{const a=e.filter(e=>!e.disabled&&X.has(e.value));if(0===a.length)return;const t=new Set(a.map(e=>e.value)),r=l?n.filter(e=>ue.has(e.value)||t.has(e.value)).map(e=>e.value):U.filter(e=>!t.has(e));oe.current={ids:a.map(e=>e.value),toTarget:l},Y(e=>new Set([...e].filter(e=>!t.has(e)))),(e=>{void 0===o&&Q(e),f?.(e)})(r)};a.useLayoutEffect(()=>{const e=oe.current;if(!e)return;oe.current=null;const l=e.ids.filter(l=>ue.has(l)===e.toTarget),a=e.toTarget?ie.current:ne.current;if(0===l.length)return void a?.focus();(se.current.get(l[0])??a)?.focus();const t=e.toTarget?nameOf(V,_.transferSelected):nameOf(B,_.transferAvailable);de(e=>({key:(e?.key??0)+1,text:D(l.length,t)}))},[ue,X,_,D,B,V]);const ve=narrow(me,ee),pe=narrow(he,ae),ge=ve.some(e=>!e.disabled&&X.has(e.value)),ye=pe.some(e=>!e.disabled&&X.has(e.value)),xe=x(T),ke={variant:j,size:G,color:H,density:J},we=h(B)?B:_.transferAvailable,Se=h(V)?V:_.transferSelected,Ne="ghost"===j?"ghost":"glass";return l("div",{ref:I,className:u("grid w-full items-center gap-3","[grid-template-columns:minmax(0,1fr)_auto_minmax(0,1fr)]",z),...P,children:[e(Panel,{title:we,titleId:`${re}-source`,listRef:ne,rowRef:fe,rows:ve,ticked:X,onTick:be,onTickAll:e=>tickAll(ve,e),search:ee,onSearch:le,searchable:v,disabled:O,height:xe,emptyLabel:E,searchLabel:$,selectAllName:F(nameOf(we,_.transferAvailable)),style:ke}),l("div",{className:"flex flex-col gap-2",children:[e(i,{size:G,color:H,variant:Ne,label:W,disabled:O||!ge,onClick:()=>move(ve,!0),icon:e("span",{className:"flex rtl:rotate-180",children:e(c,{})})}),e(i,{size:G,color:H,variant:Ne,label:q,disabled:O||!ye,onClick:()=>move(pe,!1),icon:e("span",{className:"flex rotate-180 rtl:rotate-0",children:e(c,{})})})]}),e(Panel,{title:Se,titleId:`${re}-target`,listRef:ie,rowRef:fe,rows:pe,ticked:X,onTick:be,onTickAll:e=>tickAll(pe,e),search:ae,onSearch:te,searchable:v,disabled:O,height:xe,emptyLabel:E,searchLabel:$,selectAllName:F(nameOf(Se,_.transferSelected)),style:ke}),e("div",{className:g,"aria-live":"polite",children:ce?e("span",{children:ce.text},ce.key):null})]})});
1
+ "use client";import{jsx as e,jsxs as l}from"react/jsx-runtime";import*as a from"react";import{useDisabled as t}from"../../internal/form.js";import{useDefaults as r}from"../../internal/defaults.js";import{useLabels as s}from"../../internal/labels.js";import{PlCheckbox as n}from"../checkbox/PlCheckbox.js";import{PlIconButton as i}from"../icon-button/PlIconButton.js";import{PlTextField as o}from"../text-field/PlTextField.js";import{ArrowRightIcon as c}from"../../internal/icons.js";import{cachedSearchText as d,searchText as f}from"../../internal/search.js";import{textOf as u}from"../../internal/text.js";import{cx as m,fieldRestClasses as h,hasContent as b,metaTextClasses as v,paddingXClasses as p,radiusClasses as g,srOnlyClasses as y,surfaceSlots as x,toLength as k}from"../../internal/styles.js";const w={xs:"py-1",sm:"py-1.5",md:"py-2",lg:"py-2.5",xl:"py-3"},S={xs:"py-0.5",sm:"py-1",md:"py-1",lg:"py-1.5",xl:"py-2"},N=/* @__PURE__ */a.memo(function Row({value:l,label:t,checked:r,disabled:s,size:i,color:o,onTick:c,rowRef:d}){const f=a.useCallback(e=>d(l,e),[d,l]),u=a.useCallback(e=>c(l,!0===e),[c,l]);return e(n,{ref:f,size:i,color:o,className:S[i],label:t,checked:r,disabled:s,onCheckedChange:u})});function Panel({title:a,rows:t,ticked:r,onTick:s,onTickAll:i,search:c,onSearch:d,searchable:f,disabled:u,height:b,emptyLabel:y,searchLabel:k,selectAllName:T,style:L,titleId:j,listRef:R,rowRef:A}){const{variant:C,size:z,color:P,density:I}=L,M=t.filter(e=>!e.disabled),O=M.filter(e=>r.has(e.value)),_=M.length>0&&O.length===M.length,B=O.length>0&&!_,V=p[I][z];return l("div",{className:m("flex min-w-0 flex-col overflow-hidden",h[C],g[z]),style:x(P,0),children:[l("div",{className:m("flex items-center gap-2 border-b [border-color:var(--plass-divider)]",V,w[z]),children:[e(n,{size:z,color:P,checked:_,indeterminate:B,disabled:u||0===M.length,"aria-label":T,onCheckedChange:e=>i(!0===e)}),e("span",{id:j,className:m("min-w-0 flex-1 truncate font-medium",v[z]),children:a}),l("span",{className:m("shrink-0 tabular-nums text-(--plass-muted-fg)",v[z]),children:[O.length,"/",t.length]})]}),f?e("div",{className:m(V,w[z]),children:e(o,{size:z,color:P,density:I,fullWidth:!0,variant:"ghost",disabled:u,placeholder:k,"aria-label":k,value:c,onChange:e=>d(e.target.value)})}):null,e("div",{ref:R,role:"group","aria-labelledby":j,tabIndex:-1,className:m("min-h-0 flex-1 overflow-y-auto overscroll-contain","focus-visible:[outline:2px_solid_var(--p-ring)] focus-visible:[outline-offset:-2px]"),style:void 0===b?void 0:{height:b},children:e("div",{className:m("flex flex-col",V,w[z]),children:0===t.length?e("span",{className:m("text-(--plass-muted-fg)",v[z],S[z]),children:y}):t.map(l=>e(N,{value:l.value,label:l.label,checked:r.has(l.value),disabled:u||!0===l.disabled,size:z,color:P,onTick:s,rowRef:A},l.value))})})]})}function nameOf(e,l){const a=u(e).trim();return""===a?l:a}const T=/* @__PURE__ */d(e=>e.label);function narrow(e,l){const a=f(l);return""===a?e:e.filter(e=>"string"!=typeof e.label||T(e).includes(a))}export const PlTransfer=/* @__PURE__ */a.forwardRef(function PlTransfer({items:n,value:o,defaultValue:d,onValueChange:f,sourceLabel:u,targetLabel:h,searchable:v=!1,searchLabel:p,emptyLabel:g,selectAllLabel:x,toTargetLabel:w,toSourceLabel:S,movedLabel:N,height:T=220,disabled:L=!1,variant:j="glass",size:R,color:A,density:C,className:z,...P},I){const M=r(),O=t(L),_=s(),B=u??_.transferAvailable,V=h??_.transferSelected,$=p??_.search,E=g??_.empty,F=void 0===x?_.transferSelectAll:e=>[x,e].filter(Boolean).join(" "),W=w??_.transferToSelected,q=S??_.transferToAvailable,D=N??_.transferMoved,G=R??M.size??"md",H=A??M.color??"primary",J=C??M.density??"default",[K,Q]=a.useState(d??[]),U=o??K,[X,Y]=a.useState(()=>new Set),Z=a.useMemo(()=>new Set(n.map(e=>e.value)),[n]);[...X].some(e=>!Z.has(e))&&Y(new Set([...X].filter(e=>Z.has(e))));const[ee,le]=a.useState(""),[ae,te]=a.useState(""),re=a.useId(),se=a.useRef(new Map),ne=a.useRef(null),ie=a.useRef(null),oe=a.useRef(null),[ce,de]=a.useState(null),fe=a.useCallback((e,l)=>{l?se.current.set(e,l):se.current.delete(e)},[]),ue=a.useMemo(()=>new Set(U),[U]),me=a.useMemo(()=>n.filter(e=>!ue.has(e.value)),[n,ue]),he=a.useMemo(()=>n.filter(e=>ue.has(e.value)),[n,ue]),be=a.useCallback((e,l)=>{Y(a=>{const t=new Set(a);return l?t.add(e):t.delete(e),t})},[]),tickAll=(e,l)=>{Y(a=>{const t=new Set(a);for(const a of e)a.disabled||(l?t.add(a.value):t.delete(a.value));return t})},move=(e,l)=>{const a=e.filter(e=>!e.disabled&&X.has(e.value));if(0===a.length)return;const t=new Set(a.map(e=>e.value)),r=l?n.filter(e=>ue.has(e.value)||t.has(e.value)).map(e=>e.value):U.filter(e=>!t.has(e));oe.current={ids:a.map(e=>e.value),toTarget:l},Y(e=>new Set([...e].filter(e=>!t.has(e)))),(e=>{void 0===o&&Q(e),f?.(e)})(r)};a.useLayoutEffect(()=>{const e=oe.current;if(!e)return;oe.current=null;const l=e.ids.filter(l=>ue.has(l)===e.toTarget),a=e.toTarget?ie.current:ne.current;if(0===l.length)return void a?.focus();(se.current.get(l[0])??a)?.focus();const t=e.toTarget?nameOf(V,_.transferSelected):nameOf(B,_.transferAvailable);de(e=>({key:(e?.key??0)+1,text:D(l.length,t)}))},[ue,X,_,D,B,V]);const ve=narrow(me,ee),pe=narrow(he,ae),ge=ve.some(e=>!e.disabled&&X.has(e.value)),ye=pe.some(e=>!e.disabled&&X.has(e.value)),xe=k(T),ke={variant:j,size:G,color:H,density:J},we=b(B)?B:_.transferAvailable,Se=b(V)?V:_.transferSelected,Ne="ghost"===j?"ghost":"glass";return l("div",{ref:I,className:m("grid w-full items-center gap-3","[grid-template-columns:minmax(0,1fr)_auto_minmax(0,1fr)]",z),role:P["aria-label"]||P["aria-labelledby"]?"group":void 0,...P,children:[e(Panel,{title:we,titleId:`${re}-source`,listRef:ne,rowRef:fe,rows:ve,ticked:X,onTick:be,onTickAll:e=>tickAll(ve,e),search:ee,onSearch:le,searchable:v,disabled:O,height:xe,emptyLabel:E,searchLabel:$,selectAllName:F(nameOf(we,_.transferAvailable)),style:ke}),l("div",{className:"flex flex-col gap-2",children:[e(i,{size:G,color:H,variant:Ne,label:W,disabled:O||!ge,onClick:()=>move(ve,!0),icon:e("span",{className:"flex rtl:rotate-180",children:e(c,{})})}),e(i,{size:G,color:H,variant:Ne,label:q,disabled:O||!ye,onClick:()=>move(pe,!1),icon:e("span",{className:"flex rotate-180 rtl:rotate-0",children:e(c,{})})})]}),e(Panel,{title:Se,titleId:`${re}-target`,listRef:ie,rowRef:fe,rows:pe,ticked:X,onTick:be,onTickAll:e=>tickAll(pe,e),search:ae,onSearch:te,searchable:v,disabled:O,height:xe,emptyLabel:E,searchLabel:$,selectAllName:F(nameOf(Se,_.transferSelected)),style:ke}),e("div",{className:y,"aria-live":"polite",children:ce?e("span",{children:ce.text},ce.key):null})]})});
@@ -41,6 +41,18 @@ export interface PlTreeProps extends Omit<React.ComponentPropsWithoutRef<'div'>,
41
41
  selection?: PlTreeSelection;
42
42
  /** Called when a row is clicked, selectable or not. */
43
43
  onItemClick?: (node: PlTreeNode) => void;
44
+ /**
45
+ * Builds the rows of every branch, open or shut, and keeps a shut branch's
46
+ * rows in the document, hidden, rather than leaving them out.
47
+ *
48
+ * For a tree a search engine should read in full: a shut branch is otherwise
49
+ * not in the HTML a server sends. A kept row is out of the layout, the focus
50
+ * order and the accessibility tree, and the arrow keys still walk only the
51
+ * rows that are visible. Off by default, because it builds every row the
52
+ * data holds.
53
+ * @default false
54
+ */
55
+ keepMounted?: boolean;
44
56
  /** @default 'md' */
45
57
  size?: PlassSize;
46
58
  /** @default 'primary' */
@@ -1 +1 @@
1
- "use client";import{jsx as e,Fragment as t,jsxs as n}from"react/jsx-runtime";import*as s from"react";import{useDefaults as i}from"../../internal/defaults.js";import{Collapsible as l}from"@base-ui/react/collapsible";import{ChevronIcon as r}from"../../internal/icons.js";import{controlTextLeadingClasses as a,cx as o,focusRingClasses as d,gapClasses as c,iconClasses as p,radiusClasses as u,surfaceSlots as f,transitionClasses as m}from"../../internal/styles.js";const h=/* @__PURE__ */["h-(--collapsible-panel-height) overflow-hidden","[transition:height_var(--plass-duration-slow)_var(--plass-ease)]","motion-reduce:[transition-duration:0ms]","data-[starting-style]:h-0 data-[ending-style]:h-0"].join(" "),v={xs:14,sm:16,md:20,lg:24,xl:28},x={default:{xs:"py-1",sm:"py-1",md:"py-1.5",lg:"py-2",xl:"py-2.5"},compact:{xs:"py-0.5",sm:"py-0.5",md:"py-1",lg:"py-1",xl:"py-1.5"}};function visibleRows(e,t,n=1,s=[]){for(const i of e)s.push({node:i,level:n}),i.children&&t.has(i.id)&&visibleRows(i.children,t,n+1,s);return s}function parentsOf(e,t=null,n=new Map){for(const s of e)n.set(s.id,t),s.children&&parentsOf(s.children,s.id,n);return n}const b=/* @__PURE__ */s.createContext(null);function TreeRows({items:n,level:i,parent:l,tabStop:r,expanded:a,selected:o}){const{parents:d}=s.useContext(b);let c=null;for(let e=r;null!==e&&d.has(e);e=d.get(e))if(d.get(e)===l){c=e;break}return e(t,{children:n.map(t=>{const n=void 0!==t.children&&t.children.length>0;return e(y,{node:t,level:i,isOpen:a.has(t.id),isSelected:o.has(t.id),tabStop:t.id===c?r:null,expanded:n?a:void 0,selected:n?o:void 0},t.id)})})}const y=/* @__PURE__ */s.memo(function TreeRow({node:i,level:f,isOpen:y,isSelected:g,tabStop:w,expanded:k,selected:S}){const{size:D,density:R,selection:C,idPrefix:j,focus:M,actions:N}=s.useContext(b),E=void 0!==i.children;return n(t,{children:[n("div",{id:`${j}-${i.id}`,role:"treeitem","aria-level":f,"aria-expanded":E?y:void 0,"aria-selected":"none"===C?void 0:g,"aria-disabled":i.disabled||void 0,tabIndex:i.disabled?void 0:w===i.id?0:-1,onFocus:()=>M(i.id),onKeyDown:e=>{i.disabled||N.current?.keyDown(e,i,f)},onClick:()=>{i.disabled||N.current?.press(i)},className:o("flex cursor-pointer items-center select-none",c[D],x[R][D],a[D],u[D],d,m,p,i.disabled?"cursor-not-allowed opacity-50":g?"bg-(--p-soft) text-(--p-accent) font-medium":"text-(--plass-fg) hover:bg-(--p-soft)"),style:{paddingInlineStart:(f-1)*v[D]+6+"px"},children:[e("span",{"aria-hidden":"true",className:o("flex shrink-0 items-center text-(--plass-muted-fg)","[transition:rotate_var(--plass-duration)_var(--plass-ease)]","motion-reduce:[transition-duration:0ms]",E?"":"invisible",y?"rotate-0":"-rotate-90 rtl:rotate-90"),children:e(r,{})}),i.icon?e("span",{className:"flex shrink-0 items-center",children:i.icon}):null,e("span",{className:"truncate",children:i.label})]}),k&&S?e(l.Root,{open:y,children:e(l.Panel,{role:"group",className:h,children:e(TreeRows,{items:i.children,level:f+1,parent:i.id,tabStop:w,expanded:k,selected:S})})}):null]})});export const PlTree=/* @__PURE__ */s.forwardRef(function PlTree({items:t,expanded:n,defaultExpanded:l,onExpandedChange:r,selected:a,defaultSelected:d,onSelectedChange:c,selection:p="single",onItemClick:u,size:m,color:h,density:v,className:x,style:y,...g},w){const k=i(),S=m??k.size??"md",D=h??k.color??"primary",R=v??k.density??"default",[C,j]=s.useState(l??[]),M=n??C,N=s.useMemo(()=>new Set(M),[M]),[E,I]=s.useState(d??[]),P=a??E,T=s.useMemo(()=>new Set(P),[P]),O=s.useMemo(()=>visibleRows(t,N),[t,N]),z=s.useMemo(()=>parentsOf(t),[t]),[A,$]=s.useState(null),_=s.useMemo(()=>O.filter(e=>!e.node.disabled),[O]),F=A&&_.some(e=>e.node.id===A)?A:_[0]?.node.id??null,toggle=(e,t)=>{var s;s=t??!N.has(e)?[...M.filter(t=>t!==e),e]:M.filter(t=>t!==e),void 0===n&&j(s),r?.(s)},press=e=>{void 0!==e.children&&toggle(e.id),(e=>{if("none"===p)return;const t="multiple"===p?T.has(e.id)?P.filter(t=>t!==e.id):[...P,e.id]:[e.id];void 0===a&&I(t),c?.(t)})(e),u?.(e)},L=s.useId(),focusRow=e=>{$(e),document.getElementById(`${L}-${e}`)?.focus()},onKeyDown=(e,t,n)=>{const s=_.findIndex(e=>e.node.id===t.id),i=void 0!==t.children,l=N.has(t.id);switch(e.key){case"ArrowDown":e.preventDefault(),_[s+1]&&focusRow(_[s+1].node.id);break;case"ArrowUp":e.preventDefault(),_[s-1]&&focusRow(_[s-1].node.id);break;case"ArrowRight":e.preventDefault(),i&&!l?toggle(t.id,!0):i&&_[s+1]?.level===n+1&&focusRow(_[s+1].node.id);break;case"ArrowLeft":if(e.preventDefault(),i&&l){toggle(t.id,!1);break}for(let e=s-1;e>=0;e-=1)if(_[e].level<n){focusRow(_[e].node.id);break}break;case"Home":e.preventDefault(),_[0]&&focusRow(_[0].node.id);break;case"End":e.preventDefault(),_.length&&focusRow(_[_.length-1].node.id);break;case"Enter":case" ":e.preventDefault(),press(t)}},B=s.useRef(null);s.useLayoutEffect(()=>{B.current={press,keyDown:onKeyDown}});const H=s.useMemo(()=>({size:S,density:R,selection:p,idPrefix:L,parents:z,focus:$,actions:B}),[S,R,p,L,z]);return e("div",{ref:w,role:"tree","aria-multiselectable":"multiple"===p||void 0,className:o("flex flex-col",x),style:{...f(D,0),...y},...g,children:e(b.Provider,{value:H,children:e(TreeRows,{items:t,level:1,parent:null,tabStop:F,expanded:N,selected:T})})})});
1
+ "use client";import{jsx as e,Fragment as t,jsxs as n}from"react/jsx-runtime";import*as s from"react";import{useDefaults as i}from"../../internal/defaults.js";import{Collapsible as l}from"@base-ui/react/collapsible";import{ChevronIcon as o}from"../../internal/icons.js";import{controlTextLeadingClasses as r,cx as d,focusRingClasses as a,gapClasses as c,iconClasses as p,radiusClasses as u,surfaceSlots as f,transitionClasses as m}from"../../internal/styles.js";const h=/* @__PURE__ */["h-(--collapsible-panel-height) overflow-hidden","[transition:height_var(--plass-duration-slow)_var(--plass-ease)]","motion-reduce:[transition-duration:0ms]","data-[starting-style]:h-0 data-[ending-style]:h-0"].join(" "),v={xs:14,sm:16,md:20,lg:24,xl:28},x={default:{xs:"py-1",sm:"py-1",md:"py-1.5",lg:"py-2",xl:"py-2.5"},compact:{xs:"py-0.5",sm:"py-0.5",md:"py-1",lg:"py-1",xl:"py-1.5"}};function visibleRows(e,t,n=1,s=[]){for(const i of e)s.push({node:i,level:n}),i.children&&t.has(i.id)&&visibleRows(i.children,t,n+1,s);return s}function parentsOf(e,t=null,n=new Map){for(const s of e)n.set(s.id,t),s.children&&parentsOf(s.children,s.id,n);return n}const b=/* @__PURE__ */s.createContext(null);function TreeRows({items:n,level:i,parent:l,tabStop:o,expanded:r,selected:d}){const{parents:a}=s.useContext(b);let c=null;for(let e=o;null!==e&&a.has(e);e=a.get(e))if(a.get(e)===l){c=e;break}return e(t,{children:n.map(t=>{const n=void 0!==t.children&&t.children.length>0;return e(y,{node:t,level:i,isOpen:r.has(t.id),isSelected:d.has(t.id),tabStop:t.id===c?o:null,expanded:n?r:void 0,selected:n?d:void 0},t.id)})})}const y=/* @__PURE__ */s.memo(function TreeRow({node:i,level:f,isOpen:y,isSelected:g,tabStop:w,expanded:k,selected:S}){const{size:D,density:M,selection:R,keepMounted:C,idPrefix:j,focus:N,actions:E}=s.useContext(b),I=void 0!==i.children;return n(t,{children:[n("div",{id:`${j}-${i.id}`,role:"treeitem","aria-level":f,"aria-expanded":I?y:void 0,"aria-selected":"none"===R?void 0:g,"aria-disabled":i.disabled||void 0,tabIndex:i.disabled?void 0:w===i.id?0:-1,onFocus:()=>N(i.id),onKeyDown:e=>{i.disabled||E.current?.keyDown(e,i,f)},onClick:()=>{i.disabled||E.current?.press(i)},className:d("flex cursor-pointer items-center select-none",c[D],x[M][D],r[D],u[D],a,m,p,i.disabled?"cursor-not-allowed opacity-50":g?"bg-(--p-soft) text-(--p-accent) font-medium":"text-(--plass-fg) hover:bg-(--p-soft)"),style:{paddingInlineStart:(f-1)*v[D]+6+"px"},children:[e("span",{"aria-hidden":"true",className:d("flex shrink-0 items-center text-(--plass-muted-fg)","[transition:rotate_var(--plass-duration)_var(--plass-ease)]","motion-reduce:[transition-duration:0ms]",I?"":"invisible",y?"rotate-0":"-rotate-90 rtl:rotate-90"),children:e(o,{})}),i.icon?e("span",{className:"flex shrink-0 items-center",children:i.icon}):null,e("span",{className:"truncate",children:i.label})]}),k&&S?e(l.Root,{open:y,children:e(l.Panel,{role:"group",keepMounted:C,className:h,children:e(TreeRows,{items:i.children,level:f+1,parent:i.id,tabStop:w,expanded:k,selected:S})})}):null]})});export const PlTree=/* @__PURE__ */s.forwardRef(function PlTree({items:t,expanded:n,defaultExpanded:l,onExpandedChange:o,selected:r,defaultSelected:a,onSelectedChange:c,selection:p="single",onItemClick:u,keepMounted:m=!1,size:h,color:v,density:x,className:y,style:g,...w},k){const S=i(),D=h??S.size??"md",M=v??S.color??"primary",R=x??S.density??"default",[C,j]=s.useState(l??[]),N=n??C,E=s.useMemo(()=>new Set(N),[N]),[I,P]=s.useState(a??[]),T=r??I,O=s.useMemo(()=>new Set(T),[T]),z=s.useMemo(()=>visibleRows(t,E),[t,E]),A=s.useMemo(()=>parentsOf(t),[t]),[$,_]=s.useState(null),F=s.useMemo(()=>z.filter(e=>!e.node.disabled),[z]),L=$&&F.some(e=>e.node.id===$)?$:F[0]?.node.id??null,toggle=(e,t)=>{var s;s=t??!E.has(e)?[...N.filter(t=>t!==e),e]:N.filter(t=>t!==e),void 0===n&&j(s),o?.(s)},press=e=>{void 0!==e.children&&toggle(e.id),(e=>{if("none"===p)return;const t="multiple"===p?O.has(e.id)?T.filter(t=>t!==e.id):[...T,e.id]:[e.id];void 0===r&&P(t),c?.(t)})(e),u?.(e)},B=s.useId(),focusRow=e=>{_(e),document.getElementById(`${B}-${e}`)?.focus()},onKeyDown=(e,t,n)=>{const s=F.findIndex(e=>e.node.id===t.id),i=void 0!==t.children,l=E.has(t.id);switch(e.key){case"ArrowDown":e.preventDefault(),F[s+1]&&focusRow(F[s+1].node.id);break;case"ArrowUp":e.preventDefault(),F[s-1]&&focusRow(F[s-1].node.id);break;case"ArrowRight":e.preventDefault(),i&&!l?toggle(t.id,!0):i&&F[s+1]?.level===n+1&&focusRow(F[s+1].node.id);break;case"ArrowLeft":if(e.preventDefault(),i&&l){toggle(t.id,!1);break}for(let e=s-1;e>=0;e-=1)if(F[e].level<n){focusRow(F[e].node.id);break}break;case"Home":e.preventDefault(),F[0]&&focusRow(F[0].node.id);break;case"End":e.preventDefault(),F.length&&focusRow(F[F.length-1].node.id);break;case"Enter":case" ":e.preventDefault(),press(t)}},H=s.useRef(null);s.useLayoutEffect(()=>{H.current={press,keyDown:onKeyDown}});const K=s.useMemo(()=>({size:D,density:R,selection:p,keepMounted:m,idPrefix:B,parents:A,focus:_,actions:H}),[D,R,p,m,B,A]);return e("div",{ref:k,role:"tree","aria-multiselectable":"multiple"===p||void 0,className:d("flex flex-col",y),style:{...f(M,0),...g},...w,children:e(b.Provider,{value:K,children:e(TreeRows,{items:t,level:1,parent:null,tabStop:L,expanded:E,selected:O})})})});
@@ -1 +1 @@
1
- "use client";import{jsxs as e,jsx as l}from"react/jsx-runtime";import*as t from"react";import{useDefaults as n}from"../../internal/defaults.js";import{useLabels as r}from"../../internal/labels.js";import{PickerShell as a}from"../../internal/picker.js";import{searchHaystack as i,searchText as o}from"../../internal/search.js";import{cx as s,metaTextClasses as d}from"../../internal/styles.js";import{PlTextField as c}from"../text-field/PlTextField.js";import{PlTree as f}from"../tree/PlTree.js";function flatten(e,l=new Map){for(const t of e)l.set(t.id,t),t.children&&flatten(t.children,l);return l}function haystackOf(e){return i([e.searchLabel??("string"==typeof e.label?e.label:e.id)])}function filterTree(e,l){const t=[];for(const n of e){const e=n.children?filterTree(n.children,l):void 0,r=haystackOf(n).includes(l);(r||e&&e.length>0)&&t.push(r?n:{...n,children:e})}return t}function branchIds(e,l=[]){for(const t of e)t.children&&t.children.length>0&&(l.push(t.id),branchIds(t.children,l));return l}export const PlTreeSelect=/* @__PURE__ */t.forwardRef(function PlTreeSelect({items:i,value:h,defaultValue:m,onValueChange:u,multiple:p=!1,selectableBranches:g=!1,expanded:b,defaultExpanded:v,onExpandedChange:y,open:x,defaultOpen:j,onOpenChange:C,placeholder:O,clearable:S=!1,closeOnSelect:T,searchable:w=!1,searchLabel:z,emptyLabel:M,format:P,name:k,size:E,color:I,density:L,readOnly:N=!1,disabled:V=!1,...F},R){const B=n(),W=E??B.size??"md",q=I??B.color??"primary",A=L??B.density??"default",D=r(),G=z??D.search,H=M??D.empty,[J,K]=t.useState(m??[]),Q=h??J,[U,X]=t.useState(j??!1),Y=x??U,[Z,$]=t.useState(""),_=o(Z),ee=t.useMemo(()=>flatten(i),[i]),le=t.useMemo(()=>""===_?i:filterTree(i,_),[i,_]),te=""!==_,[ne,re]=t.useState(v??[]),ae=t.useMemo(()=>te?branchIds(le):void 0,[te,le])??b??ne,setOpen=e=>{e&&(V||N)||(void 0===x&&X(e),e||$(""),C?.(e))},commit=e=>{void 0===h&&K(e),u?.(e)},isSelectable=e=>!e.disabled&&(e.selectable??(!(e.children&&e.children.length>0)||g)),ie=Q.map(e=>ee.get(e)).filter(e=>void 0!==e),oe=0===ie.length?O??"":P?P(ie):ie.map((l,n)=>e(t.Fragment,{children:[0===n?null:", ",l.label]},l.id));return l(a,{...F,size:W,color:q,density:A,readOnly:N,disabled:V,triggerRef:R,display:oe,empty:0===ie.length,clearable:S,onClear:()=>commit([]),open:Y,onOpenChange:setOpen,labels:D,name:k,formValue:p?Q:Q[0]??"",children:e("div",{className:"flex max-h-80 w-64 flex-col gap-1.5 overflow-hidden",children:[w?l(c,{size:W,color:q,density:A,variant:"ghost",fullWidth:!0,placeholder:G,"aria-label":G,value:Z,onChange:e=>$(e.target.value)}):null,l("div",{className:"min-h-0 flex-1 overflow-y-auto overscroll-contain",children:0===le.length?l("p",{className:s("m-0 px-1.5 py-1 text-(--plass-muted-fg)",d[W]),children:H}):l(f,{items:le,size:W,color:q,density:A,selection:p?"multiple":"single",selected:Q,onSelectedChange:e=>{if(!p){const l=1===e.length?ee.get(e[0]):void 0;if(!l||!isSelectable(l))return;return commit([l.id]),void((T??!0)&&setOpen(!1))}const l=e.filter(e=>{const l=ee.get(e);return void 0!==l&&isSelectable(l)});(l.length!==Q.length||l.some((e,l)=>e!==Q[l]))&&(commit(l),T&&setOpen(!1))},expanded:ae,onExpandedChange:e=>{te||(void 0===b&&re(e),y?.(e))}})})]})})});
1
+ "use client";import{jsxs as e,jsx as l}from"react/jsx-runtime";import*as t from"react";import{useDefaults as n}from"../../internal/defaults.js";import{useLabels as r}from"../../internal/labels.js";import{PickerShell as a}from"../../internal/picker.js";import{cachedSearchText as i,searchText as o}from"../../internal/search.js";import{cx as s,metaTextClasses as d}from"../../internal/styles.js";import{PlTextField as c}from"../text-field/PlTextField.js";import{PlTree as h}from"../tree/PlTree.js";function flatten(e,l=new Map){for(const t of e)l.set(t.id,t),t.children&&flatten(t.children,l);return l}const f=/* @__PURE__ */i(e=>e.searchLabel??("string"==typeof e.label?e.label:e.id));function filterTree(e,l){const t=[];for(const n of e){const e=n.children?filterTree(n.children,l):void 0,r=f(n).includes(l);(r||e&&e.length>0)&&t.push(r?n:{...n,children:e})}return t}function branchIds(e,l=[]){for(const t of e)t.children&&t.children.length>0&&(l.push(t.id),branchIds(t.children,l));return l}export const PlTreeSelect=/* @__PURE__ */t.forwardRef(function PlTreeSelect({items:i,value:f,defaultValue:m,onValueChange:p,multiple:u=!1,selectableBranches:g=!1,expanded:b,defaultExpanded:v,onExpandedChange:x,open:y,defaultOpen:j,onOpenChange:C,placeholder:S,clearable:T=!1,closeOnSelect:O,searchable:w=!1,searchLabel:z,emptyLabel:M,format:P,name:E,size:I,color:L,density:N,readOnly:V=!1,disabled:F=!1,...R},k){const B=n(),W=I??B.size??"md",q=L??B.color??"primary",A=N??B.density??"default",D=r(),G=z??D.search,H=M??D.empty,[J,K]=t.useState(m??[]),Q=f??J,[U,X]=t.useState(j??!1),Y=y??U,[Z,$]=t.useState(""),_=o(Z),ee=t.useMemo(()=>flatten(i),[i]),le=t.useMemo(()=>""===_?i:filterTree(i,_),[i,_]),te=""!==_,[ne,re]=t.useState(v??[]),ae=t.useMemo(()=>te?branchIds(le):void 0,[te,le])??b??ne,setOpen=e=>{e&&(F||V)||(void 0===y&&X(e),e||$(""),C?.(e))},commit=e=>{void 0===f&&K(e),p?.(e)},isSelectable=e=>!e.disabled&&(e.selectable??(!(e.children&&e.children.length>0)||g)),ie=Q.map(e=>ee.get(e)).filter(e=>void 0!==e),oe=0===ie.length?S??"":P?P(ie):ie.map((l,n)=>e(t.Fragment,{children:[0===n?null:", ",l.label]},l.id));return l(a,{...R,size:W,color:q,density:A,readOnly:V,disabled:F,triggerRef:k,display:oe,empty:0===ie.length,clearable:T,onClear:()=>commit([]),open:Y,onOpenChange:setOpen,labels:D,name:E,formValue:u?Q:Q[0]??"",children:e("div",{className:"flex max-h-80 w-64 flex-col gap-1.5 overflow-hidden",children:[w?l(c,{size:W,color:q,density:A,variant:"ghost",fullWidth:!0,placeholder:G,"aria-label":G,value:Z,onChange:e=>$(e.target.value)}):null,l("div",{className:"min-h-0 flex-1 overflow-y-auto overscroll-contain",children:0===le.length?l("p",{className:s("m-0 px-1.5 py-1 text-(--plass-muted-fg)",d[W]),children:H}):l(h,{items:le,size:W,color:q,density:A,selection:u?"multiple":"single",selected:Q,onSelectedChange:e=>{if(!u){const l=1===e.length?ee.get(e[0]):void 0;if(!l||!isSelectable(l))return;return commit([l.id]),void((O??!0)&&setOpen(!1))}const l=e.filter(e=>{const l=ee.get(e);return void 0!==l&&isSelectable(l)});(l.length!==Q.length||l.some((e,l)=>e!==Q[l]))&&(commit(l),O&&setOpen(!1))},expanded:ae,onExpandedChange:e=>{te||(void 0===b&&re(e),x?.(e))}})})]})})});
@@ -1,6 +1,6 @@
1
1
  import * as React from 'react';
2
2
  import { useRender } from '@base-ui/react/use-render';
3
- import type { PlassColor } from '../../types.js';
3
+ import type { PlassColor, PlassHeadingLevel } from '../../types.js';
4
4
  /**
5
5
  * What a piece of text *is*, which decides both its type scale and the element
6
6
  * it renders as.
@@ -15,7 +15,8 @@ export type PlTypographyWeight = 'regular' | 'medium' | 'semibold' | 'bold';
15
15
  export interface PlTypographyProps extends Omit<React.ComponentPropsWithoutRef<'p'>, 'color' | 'children'> {
16
16
  /**
17
17
  * The type scale, and the element that carries it. `h1`–`h6` render the
18
- * matching heading, `lead`/`body` a `<p>`, `caption`/`overline` a `<span>`.
18
+ * matching heading, `lead`/`body` a `<p>`, `caption`/`overline` a `<span>`,
19
+ * unless `headingLevel` or `render` names another element.
19
20
  * @default 'body'
20
21
  */
21
22
  level?: PlTypographyLevel;
@@ -40,9 +41,20 @@ export interface PlTypographyProps extends Omit<React.ComponentPropsWithoutRef<'
40
41
  */
41
42
  gutter?: boolean;
42
43
  /**
43
- * Renders a different element without changing the type scale — an `h2`-sized
44
- * line that is semantically a `<p>`, or the other way round. Base UI's own
45
- * escape hatch.
44
+ * The level of the heading the text is, `1` to `6`, without changing the type
45
+ * scale `level` picks.
46
+ *
47
+ * A heading has to sit one level under the one above it, or the page's
48
+ * outline skips a step, and the size that suits a heading is not always its
49
+ * place in the outline. An `h3`-sized title directly under the page's `<h1>`
50
+ * wants `2`. Any level takes one: `level="body"` with `headingLevel={2}` is an
51
+ * `<h2>` at body size. `render` wins when both are given.
52
+ */
53
+ headingLevel?: PlassHeadingLevel;
54
+ /**
55
+ * Renders a different element without changing the type scale — an `h3`-sized
56
+ * line that is semantically a `<p>`. Base UI's own escape hatch, and it wins
57
+ * over `headingLevel`, which is the way to change only a heading's level.
46
58
  */
47
59
  render?: useRender.RenderProp;
48
60
  children?: React.ReactNode;
@@ -56,8 +68,9 @@ export interface PlTypographyProps extends Omit<React.ComponentPropsWithoutRef<'
56
68
  * its own, so a page can use it without wrapping its prose in a card.
57
69
  *
58
70
  * `level` sets the scale *and* the element, which is the common case. When they
59
- * have to differ — a subheading that should not enter the document outline, a
60
- * `<p>` that has to look like an `h3` — `render` breaks the tie.
71
+ * have to differ, `headingLevel` moves a heading to another level of the
72
+ * outline, and `render` breaks the tie for anything else — a subheading that
73
+ * should not enter the document outline, a `<p>` that has to look like an `h3`.
61
74
  *
62
75
  * There is no `variant` and no `elevation`, and there is no `size` either.
63
76
  * `level` is the size: a `size` prop alongside it would let a caller ask for an
@@ -1 +1 @@
1
- "use client";import*as e from"react";import{useRender as t}from"@base-ui/react/use-render";const r={h1:"text-[1.875rem]/[2.25rem] tracking-[-0.02em]",h2:"text-[1.5rem]/[1.875rem] tracking-[-0.015em]",h3:"text-[1.25rem]/[1.625rem] tracking-[-0.01em]",h4:"text-[1.0625rem]/[1.5rem]",h5:"text-[0.9375rem]/[1.375rem]",h6:"text-[0.8125rem]/[1.25rem]",lead:"text-[1.0625rem]/[1.75rem]",body:"text-[0.8125rem]/[1.375rem]",caption:"text-[0.75rem]/[1.125rem]",overline:"text-[0.6875rem]/[1rem] tracking-[0.08em] uppercase"},m={h1:"semibold",h2:"semibold",h3:"semibold",h4:"semibold",h5:"semibold",h6:"semibold",lead:"regular",body:"regular",caption:"regular",overline:"medium"},l={h1:"h1",h2:"h2",h3:"h3",h4:"h4",h5:"h5",h6:"h6",lead:"p",body:"p",caption:"span",overline:"span"},n=new Set(["caption","overline"]),o={h1:"mb-4",h2:"mb-3.5",h3:"mb-3",h4:"mb-2.5",h5:"mb-2",h6:"mb-2",lead:"mb-4",body:"mb-3",caption:"mb-2",overline:"mb-2"},a={regular:"font-normal",medium:"font-medium",semibold:"font-semibold",bold:"font-bold"},s={start:"text-start",center:"text-center",end:"text-end",justify:"text-justify"};function clampClasses(e){return 1===e?"block truncate":"line-clamp-(--p-lines)"}export const PlTypography=/* @__PURE__ */e.forwardRef(function PlTypography({level:i="body",color:c,weight:h,align:d,lines:p,gutter:b=!1,render:u,className:x,style:f,children:g,...y},v){const k=p&&p>=1?Math.floor(p):void 0,j=["m-0",r[i],a[h??m[i]],d?s[d]:"",k?clampClasses(k):"",b?o[i]:"",c?"text-(--p-accent)":n.has(i)?"text-(--plass-muted-fg)":"text-(--plass-fg)",x??""].filter(Boolean).join(" ");return t({render:u??e.createElement(l[i]),ref:v,props:{className:j,style:c||k&&k>1?{...c?{"--p-accent":`var(--plass-${c}-accent)`}:null,...k&&k>1?{"--p-lines":k}:null,...f}:f,children:g,...y}})});
1
+ "use client";import*as e from"react";import{useRender as t}from"@base-ui/react/use-render";const r={h1:"text-[1.875rem]/[2.25rem] tracking-[-0.02em]",h2:"text-[1.5rem]/[1.875rem] tracking-[-0.015em]",h3:"text-[1.25rem]/[1.625rem] tracking-[-0.01em]",h4:"text-[1.0625rem]/[1.5rem]",h5:"text-[0.9375rem]/[1.375rem]",h6:"text-[0.8125rem]/[1.25rem]",lead:"text-[1.0625rem]/[1.75rem]",body:"text-[0.8125rem]/[1.375rem]",caption:"text-[0.75rem]/[1.125rem]",overline:"text-[0.6875rem]/[1rem] tracking-[0.08em] uppercase"},m={h1:"semibold",h2:"semibold",h3:"semibold",h4:"semibold",h5:"semibold",h6:"semibold",lead:"regular",body:"regular",caption:"regular",overline:"medium"},l={h1:"h1",h2:"h2",h3:"h3",h4:"h4",h5:"h5",h6:"h6",lead:"p",body:"p",caption:"span",overline:"span"},n=new Set(["caption","overline"]),o={h1:"mb-4",h2:"mb-3.5",h3:"mb-3",h4:"mb-2.5",h5:"mb-2",h6:"mb-2",lead:"mb-4",body:"mb-3",caption:"mb-2",overline:"mb-2"},a={regular:"font-normal",medium:"font-medium",semibold:"font-semibold",bold:"font-bold"},i={start:"text-start",center:"text-center",end:"text-end",justify:"text-justify"};function clampClasses(e){return 1===e?"block truncate":"line-clamp-(--p-lines)"}export const PlTypography=/* @__PURE__ */e.forwardRef(function PlTypography({level:s="body",color:h,weight:c,align:d,lines:p,gutter:b=!1,headingLevel:u,render:f,className:x,style:g,children:y,...v},k){const j=p&&p>=1?Math.floor(p):void 0,w="number"==typeof u&&Number.isInteger(u)&&u>=1&&u<=6?u:void 0,N=w?`h${w}`:l[s],C=["m-0",r[s],a[c??m[s]],d?i[d]:"",j?clampClasses(j):"",b?o[s]:"",h?"text-(--p-accent)":n.has(s)?"text-(--plass-muted-fg)":"text-(--plass-fg)",x??""].filter(Boolean).join(" ");return t({render:f??e.createElement(N),ref:k,props:{className:C,style:h||j&&j>1?{...h?{"--p-accent":`var(--plass-${h}-accent)`}:null,...j&&j>1?{"--p-lines":j}:null,...g}:g,children:y,...v}})});
@@ -1,5 +1,6 @@
1
1
  import * as React from 'react';
2
2
  import { useRender } from '@base-ui/react/use-render';
3
+ import type { PlassHeadingLevel } from '../../types.js';
3
4
  export interface PlVisuallyHiddenProps extends React.ComponentPropsWithoutRef<'span'> {
4
5
  /**
5
6
  * Brings the content back into the page while anything inside it has the
@@ -20,8 +21,16 @@ export interface PlVisuallyHiddenProps extends React.ComponentPropsWithoutRef<'s
20
21
  */
21
22
  focusable?: boolean;
22
23
  /**
23
- * Renders something other than a `<span>`: `render={<div />}`,
24
- * `render={<h2 />}`. Base UI's own escape hatch.
24
+ * Renders a heading at this level, `1` to `6`, in place of the `<span>`: a
25
+ * heading that structures the page for a screen reader without appearing in
26
+ * the design. It is clipped like any other content, and `focusable` still
27
+ * applies. `render` wins when both are given.
28
+ */
29
+ headingLevel?: PlassHeadingLevel;
30
+ /**
31
+ * Renders something other than a `<span>`, such as the `<div>` a live region
32
+ * wants. Base UI's own escape hatch, and it wins over `headingLevel`, which is
33
+ * the way to render a heading.
25
34
  */
26
35
  render?: useRender.RenderProp;
27
36
  children?: React.ReactNode;
@@ -43,4 +52,4 @@ export interface PlVisuallyHiddenProps extends React.ComponentPropsWithoutRef<'s
43
52
  * inside a dozen components; this is the same rule, spelled once, for the
44
53
  * caller's own markup.
45
54
  */
46
- export declare const PlVisuallyHidden: React.ForwardRefExoticComponent<PlVisuallyHiddenProps & React.RefAttributes<HTMLSpanElement>>;
55
+ export declare const PlVisuallyHidden: React.ForwardRefExoticComponent<PlVisuallyHiddenProps & React.RefAttributes<HTMLElement>>;
@@ -1 +1 @@
1
- "use client";import{jsx as e}from"react/jsx-runtime";import*as i from"react";import{useRender as r}from"@base-ui/react/use-render";import{cx as s,srOnlyClasses as n}from"../../internal/styles.js";const o=/* @__PURE__ */["focus-within:static focus-within:size-auto","focus-within:overflow-visible focus-within:whitespace-normal","focus-within:[clip-path:none]"].join(" ");export const PlVisuallyHidden=/* @__PURE__ */i.forwardRef(function PlVisuallyHidden({focusable:i=!1,render:t,className:a,children:c,...l},f){return r({render:t??e("span",{}),ref:f,props:{className:s(n,i?o:"",a),children:c,...l}})});
1
+ "use client";import*as e from"react";import{useRender as i}from"@base-ui/react/use-render";import{headingLevelOf as n}from"../../internal/heading.js";import{cx as r,srOnlyClasses as s}from"../../internal/styles.js";const t=/* @__PURE__ */["focus-within:static focus-within:size-auto","focus-within:overflow-visible focus-within:whitespace-normal","focus-within:[clip-path:none]"].join(" ");export const PlVisuallyHidden=/* @__PURE__ */e.forwardRef(function PlVisuallyHidden({focusable:o=!1,headingLevel:a,render:c,className:l,children:f,...u},d){const h=n(a),m=h?`h${h}`:"span";return i({render:c??e.createElement(m),ref:d,props:{className:r(s,o?t:"",l),children:f,...u}})});
@@ -58,6 +58,9 @@ export interface PlWindowPaneProps extends Omit<React.ComponentPropsWithoutRef<'
58
58
  * Anything above `0` also turns the acrylic on, so the page underneath is
59
59
  * blurred rather than merely visible. `1` is a window that is nothing but its
60
60
  * edge and its chrome.
61
+ *
62
+ * A reader who has asked their system for less transparency gets an opaque
63
+ * window with no blur, whatever this says.
61
64
  * @default 0
62
65
  */
63
66
  transparency?: number;
@@ -1 +1 @@
1
- "use client";import{jsx as e,jsxs as t,Fragment as n}from"react/jsx-runtime";import*as i from"react";import{useRender as o}from"@base-ui/react/use-render";import{beginPointerDrag as r}from"../../internal/drag.js";import{useLabels as s}from"../../internal/labels.js";import{cx as a,glassClasses as l,hasContent as c,iconClasses as d}from"../../internal/styles.js";import{PlWindowControls as u,orderControls as m,windowChrome as h,windowMetrics as f,windowSlots as p}from"../../internal/window.js";import{useDefaults as g}from"../../internal/defaults.js";import{inertProps as w}from"../../internal/inert.js";import{focusablesIn as b}from"../../internal/focusable.js";function useLatched(e,t,n){const[o,r]=i.useState(t),s=void 0!==e;return[s?e:o,i.useCallback(e=>{s||r(e),n?.(e)},[s,n])]}const v={ArrowRight:[1,0],ArrowLeft:[-1,0],ArrowDown:[0,1],ArrowUp:[0,-1]};function stepWithin({step:e,start:t,end:n,limit:i}){return e>0?Math.min(e,Math.max(0,i-n)):-Math.min(-e,Math.max(0,t))}const x=[{edge:"n",className:"inset-x-3 top-0 h-1.5 cursor-ns-resize"},{edge:"s",className:"inset-x-3 bottom-0 h-1.5 cursor-ns-resize"},{edge:"w",className:"inset-y-3 left-0 w-1.5 cursor-ew-resize"},{edge:"e",className:"inset-y-3 right-0 w-1.5 cursor-ew-resize"},{edge:"nw",className:"top-0 left-0 size-3 cursor-nwse-resize"},{edge:"ne",className:"top-0 right-0 size-3 cursor-nesw-resize"},{edge:"sw",className:"bottom-0 left-0 size-3 cursor-nesw-resize"},{edge:"se",className:"right-0 bottom-0 size-3 cursor-nwse-resize"}];export const PlWindowPane=/* @__PURE__ */i.forwardRef(function PlWindowPane(y,z){const{os:N="macos",title:M,icon:E,actions:L,controls:C=!0,size:S,color:k,accent:R=!1,transparency:D=0,active:I,elevation:T=2,position:W="static",draggable:j=!1,resizable:P=!1,width:A,height:B,minWidth:O=180,minHeight:$,offset:K,defaultOffset:_,onOffsetChange:F,onResize:G,open:H,defaultOpen:U=!0,onOpenChange:X,minimized:Y,defaultMinimized:q=!1,onMinimizedChange:J,maximized:Q,defaultMaximized:V=!1,onMaximizedChange:Z,scroll:ee=!0,minimizeLabel:te,maximizeLabel:ne,restoreLabel:ie,closeLabel:oe,resizeLabel:re,moveLabel:se,render:ae,className:le,style:ce,children:de,...ue}=y,me=g(),he=S??me.size??"md",fe=k??me.color??"primary",pe=s(),ge=h(N),we=f(N,he),be=i.useId(),[ve,xe]=useLatched(H,U,X),[ye,ze]=useLatched(Y,q,J),[Ne,Me]=useLatched(Q,V,Z),[Ee,Le]=useLatched(K,_??{x:0,y:0},F),[Ce,Se]=i.useState(null),[ke,Re]=i.useState(!0),De=I??ke,[Ie,Te]=i.useState(null),[We,je]=i.useState(!1),[Pe,Ae]=i.useState(!1),[Be,Oe]=i.useState(ve);Be!==ve&&(Oe(ve),Ae(!ve)),i.useEffect(()=>{if(!Pe)return;const e=window.setTimeout(()=>Ae(!1),260);return()=>window.clearTimeout(e)},[Pe]);const $e=i.useRef(null),Ke=i.useCallback(e=>{$e.current=e,"function"==typeof z?z(e):z&&(z.current=e)},[z]),_e=i.useRef(null),Fe=i.useRef(null),Ge=ve||Pe;i.useEffect(()=>{const e=$e.current;if(!Ge||!e)return;const arrive=t=>{const n=t.relatedTarget;n instanceof Node&&e.contains(n)||(Fe.current=n instanceof HTMLElement?n:null)};return e.addEventListener("focusin",arrive),()=>e.removeEventListener("focusin",arrive)},[Ge]),i.useLayoutEffect(()=>{const e=$e.current,t=document.activeElement;if(ve||!e||!(t instanceof HTMLElement)||!e.contains(t))return;const n=Fe.current;if(n?.isConnected&&!e.contains(n)&&!n.closest("[inert]")&&(n.focus({preventScroll:!0}),document.activeElement===n))return;const i=b(document).filter(t=>!e.contains(t)),o=i.find(t=>e.compareDocumentPosition(t)&Node.DOCUMENT_POSITION_FOLLOWING)??i.at(-1);o?o.focus({preventScroll:!0}):t.blur()},[ve]),i.useEffect(()=>{if(void 0!==I)return;const e=$e.current;if(!e)return;const notice=t=>{const n=t.target;if(!(n instanceof Node))return;if(e.contains(n))return void Re(!0);const i=n instanceof Element?n:n.parentElement;i?.closest(".plass-window")&&Re(!1)};return document.addEventListener("pointerdown",notice,!0),document.addEventListener("focusin",notice,!0),()=>{document.removeEventListener("pointerdown",notice,!0),document.removeEventListener("focusin",notice,!0)}},[I]);const He=i.useRef(null);function beginGesture(e,t){if(0!==e.button)return;He.current?.();const n=e.currentTarget,i=e.clientX,o=e.clientY;je(!0);const finish=()=>{He.current=null,je(!1)},s=r({target:n,pointerId:e.pointerId,onMove:e=>t(e.clientX-i,e.clientY-o),onEnd:finish});He.current=()=>{s(),finish()}}i.useEffect(()=>()=>He.current?.(),[]);const Ue=we.bar+2*we.frame,Xe={width:Math.max(0,O),height:Math.max(Ue,$??Ue)};function resizeTo(e){Se(e),G?.(e)}const Ye=m(N,!0===C?["minimize","maximize","close"]:!1===C?[]:C),qe=Ye.includes("maximize");i.useEffect(()=>{if(ye||null===Ie)return;const e=window.setTimeout(()=>Te(null),400);return()=>window.clearTimeout(e)},[ye,Ie]);const Je={minimize:te??pe.minimize,maximize:ne??pe.maximize,restore:ie??pe.restore,close:oe??pe.close},Qe=e(u,{os:N,metrics:we,controls:Ye,maximized:Ne,active:De,labels:Je,onCommand:function command(e){"close"===e?xe(!1):"minimize"===e?function rollUp(e){const t=$e.current;if(e&&void 0===(Ce?.height??B)&&!Ne&&t)return Te(t.getBoundingClientRect().height),void requestAnimationFrame(()=>ze(!0));ze(e)}(!ye):Me(!Ne)}}),Ve=c(M)?e("span",{id:be,className:"min-w-0 truncate",children:M}):null,Ze=c(E)?e("span",{className:"flex shrink-0 items-center",children:E}):null,et=j&&!Ne,tt=Math.max(0,we.radius-we.frame),nt=ye?Math.max(0,we.radiusBottom-we.frame):0,it=et?e("span",{role:"button",tabIndex:0,"aria-label":se??pe.moveWindow,className:"pointer-events-none absolute inset-0 focus-visible:[outline:2px_solid_var(--p-ring)] focus-visible:[outline-offset:-2px]",style:{borderRadius:`${tt}px ${tt}px ${nt}px ${nt}px`},onKeyDown:function step(e){const t=v[e.key],n=$e.current,i=_e.current;if(!t||!n||!i||e.altKey||e.ctrlKey||e.metaKey)return;e.preventDefault();const o=e.shiftKey?64:16,r=n.getBoundingClientRect(),s=i.getBoundingClientRect().bottom,a=document.documentElement,l=getComputedStyle(n),lag=(e,t)=>{const n=parseFloat(e);return Number.isNaN(n)?0:t-n},c=lag(l.left,Ee.x),d=lag(l.top,Ee.y),u=stepWithin({step:t[0]*o,start:r.left+c,end:r.right+c,limit:a.clientWidth}),m=stepWithin({step:t[1]*o,start:r.top+d,end:s+d,limit:a.clientHeight});0===u&&0===m||Le({x:Ee.x+u,y:Ee.y+m})}}):null,ot=t("div",{ref:_e,className:a("relative flex shrink-0 items-center select-none",d,et?"cursor-grab touch-none active:cursor-grabbing":""),style:{height:we.bar,textShadow:"var(--p-window-bar-shadow)",fontWeight:we.weight,paddingInlineStart:we.padX,paddingInlineEnd:we.padEnd,gap:Math.round(.7*we.title),fontSize:we.title,backgroundColor:"var(--p-window-bar)",backgroundImage:"var(--p-window-bar-image)",color:"var(--p-window-bar-fg)",borderBlockEnd:ge.rule?"1px solid var(--p-window-line)":void 0},onPointerDown:function beginDrag(e){if(!j||Ne)return;const t={...Ee};beginGesture(e,(e,n)=>Le({x:t.x+e,y:t.y+n}))},onDoubleClick:qe?()=>Me(!Ne):void 0,children:[it,"start"===ge.controlsSide?Qe:null,"center"===ge.titleAlign?e("span",{"aria-hidden":"true",className:"pointer-events-none absolute inset-x-0 flex items-center justify-center",style:{paddingInline:we.controlsWidth(Ye.length)+2*we.padX},children:t("span",{className:"flex min-w-0 items-center",style:{gap:Math.round(.5*we.title)},children:[Ze,Ve]})}):t(n,{children:[Ze,Ve]}),e("span",{className:"flex-1"}),c(L)?e("span",{className:"flex shrink-0 cursor-default items-center",style:{gap:Math.round(.5*we.title)},onPointerDown:e=>e.stopPropagation(),onDoubleClick:e=>e.stopPropagation(),children:L}):null,"end"===ge.controlsSide?Qe:null]}),rt=Ne?{left:0,top:0,width:"100%",height:ye?Ue:"100%"}:{left:Ee.x,top:Ee.y,width:Ce?.width??A,height:ye?Ue:Ce?.height??B??Ie??void 0},st=o({render:ae,ref:Ke,props:{role:"group","aria-labelledby":Ve?be:void 0,className:a("plass-window relative flex min-w-0 flex-col overflow-hidden",D>0?l:"",ge.glass&&0===D?"[backdrop-filter:var(--plass-blur)]":"","[transition-property:left,top,width,height,opacity,box-shadow,background-color,border-color,border-radius]","[transition-duration:var(--plass-duration-slow)]","[transition-timing-function:var(--plass-ease)]","motion-reduce:[transition-duration:0ms]","data-[gesture]:[transition-property:none]",le),"data-gesture":We?"":void 0,...w(!ve),style:{opacity:ve?void 0:0,...p({os:N,color:fe,accent:R,transparency:D,active:De,elevation:T}),position:"static"===W?"relative":W,...rt,borderRadius:Ne?0:`${we.radius}px ${we.radius}px ${we.radiusBottom}px ${we.radiusBottom}px`,borderStyle:"solid",borderWidth:we.frame,borderColor:"var(--p-window-line)",backgroundColor:"var(--p-window-band)",boxShadow:"var(--p-window-shadow), var(--plass-gloss-glass)",...ce},children:t(n,{children:[ot,e("div",{className:a("min-h-0 flex-1",ee?"overflow-auto":"overflow-hidden"),style:{backgroundColor:"var(--p-window-body)",marginInline:we.band.side,marginBottom:we.band.bottom,boxShadow:we.band.side>0?"inset 0 0 0 1px rgb(0 0 0 / 0.12)":void 0},...w(ye),children:de}),!P||Ne||ye?null:x.map(t=>{const n="se"===t.edge;return e("div",{role:n?"button":void 0,tabIndex:n?0:void 0,"aria-label":n?re??pe.resizeWindow:void 0,"aria-hidden":n?void 0:"true",className:a("absolute z-10 touch-none",t.className,n?"focus-visible:[outline:2px_solid_var(--p-ring)] focus-visible:[outline-offset:-2px]":""),onPointerDown:e=>function beginResize(e,t){const n=$e.current;if(!n||Ne)return;const i=n.getBoundingClientRect(),o={width:i.width,height:i.height,x:Ee.x,y:Ee.y},r=e.includes("e"),s=e.includes("w"),a=e.includes("n"),l=e.includes("s");beginGesture(t,(e,t)=>{let{width:n,height:i}=o,{x:c,y:d}=o;r&&(n=Math.max(Xe.width,o.width+e)),l&&(i=Math.max(Xe.height,o.height+t)),s&&(n=Math.max(Xe.width,o.width-e),c=o.x+(o.width-n)),a&&(i=Math.max(Xe.height,o.height-t),d=o.y+(o.height-i)),resizeTo({width:n,height:i}),(s||a)&&Le({x:c,y:d})})}(t.edge,e),onKeyDown:n?e=>{const t={ArrowRight:[16,0],ArrowLeft:[-16,0],ArrowDown:[0,16],ArrowUp:[0,-16]}[e.key];t&&(e.preventDefault(),function nudge(e,t){const n=$e.current;if(!n)return;const i=n.getBoundingClientRect(),o=Math.max(Xe.width,i.width+e),r=Math.max(Xe.height,i.height+t);o===i.width&&r===i.height||resizeTo({width:o,height:r})}(t[0],t[1]))}:void 0},t.edge)})]}),...ue}});return ve||Pe?st:null});
1
+ "use client";import{jsx as e,jsxs as t,Fragment as n}from"react/jsx-runtime";import*as i from"react";import{useRender as r}from"@base-ui/react/use-render";import{beginPointerDrag as o}from"../../internal/drag.js";import{layoutBox as s}from"../../internal/layout-box.js";import{useLabels as a}from"../../internal/labels.js";import{cx as l,glassClasses as c,hasContent as d,iconClasses as u}from"../../internal/styles.js";import{PlWindowControls as m,orderControls as f,windowChrome as p,windowMetrics as h,windowSlots as w}from"../../internal/window.js";import{useDefaults as g}from"../../internal/defaults.js";import{inertProps as b}from"../../internal/inert.js";import{focusablesIn as v}from"../../internal/focusable.js";function useLatched(e,t,n){const[r,o]=i.useState(t),s=void 0!==e;return[s?e:r,i.useCallback(e=>{s||o(e),n?.(e)},[s,n])]}const x={ArrowRight:[1,0],ArrowLeft:[-1,0],ArrowDown:[0,1],ArrowUp:[0,-1]};function stepWithin({step:e,start:t,end:n,limit:i}){return e>0?Math.min(e,Math.max(0,i-n)):-Math.min(-e,Math.max(0,t))}const y=[{edge:"n",className:"inset-x-3 top-0 h-1.5 cursor-ns-resize"},{edge:"s",className:"inset-x-3 bottom-0 h-1.5 cursor-ns-resize"},{edge:"w",className:"inset-y-3 left-0 w-1.5 cursor-ew-resize"},{edge:"e",className:"inset-y-3 right-0 w-1.5 cursor-ew-resize"},{edge:"nw",className:"top-0 left-0 size-3 cursor-nwse-resize"},{edge:"ne",className:"top-0 right-0 size-3 cursor-nesw-resize"},{edge:"sw",className:"bottom-0 left-0 size-3 cursor-nesw-resize"},{edge:"se",className:"right-0 bottom-0 size-3 cursor-nwse-resize"}];export const PlWindowPane=/* @__PURE__ */i.forwardRef(function PlWindowPane(z,N){const{os:M="macos",title:E,icon:L,actions:S,controls:k=!0,size:C,color:P,accent:D=!1,transparency:I=0,active:R,elevation:T=2,position:W="static",draggable:j=!1,resizable:A=!1,width:O,height:$,minWidth:B=180,minHeight:K,offset:_,defaultOffset:F,onOffsetChange:G,onResize:H,open:U,defaultOpen:X=!0,onOpenChange:Y,minimized:q,defaultMinimized:J=!1,onMinimizedChange:Q,maximized:V,defaultMaximized:Z=!1,onMaximizedChange:ee,scroll:te=!0,minimizeLabel:ne,maximizeLabel:ie,restoreLabel:re,closeLabel:oe,resizeLabel:se,moveLabel:ae,render:le,className:ce,style:de,children:ue,...me}=z,fe=g(),pe=C??fe.size??"md",he=P??fe.color??"primary",we=a(),ge=p(M),be=h(M,pe),ve=i.useId(),[xe,ye]=useLatched(U,X,Y),[ze,Ne]=useLatched(q,J,Q),[Me,Ee]=useLatched(V,Z,ee),[Le,Se]=useLatched(_,F??{x:0,y:0},G),[ke,Ce]=i.useState(null),[Pe,De]=i.useState(!0),Ie=R??Pe,[Re,Te]=i.useState(null),[We,je]=i.useState(!1),[Ae,Oe]=i.useState(!1),[$e,Be]=i.useState(xe);$e!==xe&&(Be(xe),Oe(!xe)),i.useEffect(()=>{if(!Ae)return;const e=window.setTimeout(()=>Oe(!1),260);return()=>window.clearTimeout(e)},[Ae]);const Ke=i.useRef(null),_e=i.useCallback(e=>{Ke.current=e,"function"==typeof N?N(e):N&&(N.current=e)},[N]),Fe=i.useRef(null),Ge=i.useRef(null),He=xe||Ae;i.useEffect(()=>{const e=Ke.current;if(!He||!e)return;const arrive=t=>{const n=t.relatedTarget;n instanceof Node&&e.contains(n)||(Ge.current=n instanceof HTMLElement?n:null)};return e.addEventListener("focusin",arrive),()=>e.removeEventListener("focusin",arrive)},[He]),i.useLayoutEffect(()=>{const e=Ke.current,t=document.activeElement;if(xe||!e||!(t instanceof HTMLElement)||!e.contains(t))return;const n=Ge.current;if(n?.isConnected&&!e.contains(n)&&!n.closest("[inert]")&&(n.focus({preventScroll:!0}),document.activeElement===n))return;const i=v(document).filter(t=>!e.contains(t)),r=i.find(t=>e.compareDocumentPosition(t)&Node.DOCUMENT_POSITION_FOLLOWING)??i.at(-1);r?r.focus({preventScroll:!0}):t.blur()},[xe]),i.useEffect(()=>{if(void 0!==R)return;const e=Ke.current;if(!e)return;const notice=t=>{const n=t.target;if(!(n instanceof Node))return;if(e.contains(n))return void De(!0);const i=n instanceof Element?n:n.parentElement;i?.closest(".plass-window")&&De(!1)};return document.addEventListener("pointerdown",notice,!0),document.addEventListener("focusin",notice,!0),()=>{document.removeEventListener("pointerdown",notice,!0),document.removeEventListener("focusin",notice,!0)}},[R]);const Ue=i.useRef(null);function beginGesture(e,t){const n=Ke.current;if(0!==e.button||!n)return;Ue.current?.();const i=e.currentTarget,r=e.clientX,a=e.clientY,l=s(n,!0).perPixel,c=s(n,!1).perPixel;je(!0);const finish=()=>{Ue.current=null,je(!1)},d=o({target:i,pointerId:e.pointerId,onMove:e=>t((e.clientX-r)*l,(e.clientY-a)*c),onEnd:finish});Ue.current=()=>{d(),finish()}}i.useEffect(()=>()=>Ue.current?.(),[]);const Xe=be.bar+2*be.frame,Ye={width:Math.max(0,B),height:Math.max(Xe,K??Xe)};function resizeTo(e){Ce(e),H?.(e)}const qe=f(M,!0===k?["minimize","maximize","close"]:!1===k?[]:k),Je=qe.includes("maximize");i.useEffect(()=>{if(ze||null===Re)return;const e=window.setTimeout(()=>Te(null),400);return()=>window.clearTimeout(e)},[ze,Re]);const Qe={minimize:ne??we.minimize,maximize:ie??we.maximize,restore:re??we.restore,close:oe??we.close},Ve=e(m,{os:M,metrics:be,controls:qe,maximized:Me,active:Ie,labels:Qe,onCommand:function command(e){"close"===e?ye(!1):"minimize"===e?function rollUp(e){const t=Ke.current;if(e&&void 0===(ke?.height??$)&&!Me&&t)return Te(s(t,!1).size),void requestAnimationFrame(()=>Ne(!0));Ne(e)}(!ze):Ee(!Me)}}),Ze=d(E)?e("span",{id:ve,className:"min-w-0 truncate",children:E}):null,et=d(L)?e("span",{className:"flex shrink-0 items-center",children:L}):null,tt=j&&!Me,nt=Math.max(0,be.radius-be.frame),it=ze?Math.max(0,be.radiusBottom-be.frame):0,rt=tt?e("span",{role:"button",tabIndex:0,"aria-label":ae??we.moveWindow,className:"pointer-events-none absolute inset-0 focus-visible:[outline:2px_solid_var(--p-ring)] focus-visible:[outline-offset:-2px]",style:{borderRadius:`${nt}px ${nt}px ${it}px ${it}px`},onKeyDown:function step(e){const t=x[e.key],n=Ke.current,i=Fe.current;if(!t||!n||!i||e.altKey||e.ctrlKey||e.metaKey)return;e.preventDefault();const r=e.shiftKey?64:16,o=n.getBoundingClientRect(),a=i.getBoundingClientRect().bottom,l=document.documentElement,c=getComputedStyle(n),d=s(n,!0).perPixel,u=s(n,!1).perPixel,lag=(e,t)=>{const n=parseFloat(e);return Number.isNaN(n)?0:t-n},m=lag(c.left,Le.x),f=lag(c.top,Le.y),p=stepWithin({step:t[0]*r,start:o.left*d+m,end:o.right*d+m,limit:l.clientWidth*d}),h=stepWithin({step:t[1]*r,start:o.top*u+f,end:a*u+f,limit:l.clientHeight*u});0===p&&0===h||Se({x:Le.x+p,y:Le.y+h})}}):null,ot=t("div",{ref:Fe,className:l("relative flex shrink-0 items-center select-none",u,tt?"cursor-grab touch-none active:cursor-grabbing":""),style:{height:be.bar,textShadow:"var(--p-window-bar-shadow)",fontWeight:be.weight,paddingInlineStart:be.padX,paddingInlineEnd:be.padEnd,gap:Math.round(.7*be.title),fontSize:be.title,backgroundColor:"var(--p-window-bar)",backgroundImage:"var(--p-window-bar-image)",color:"var(--p-window-bar-fg)",borderBlockEnd:ge.rule?"1px solid var(--p-window-line)":void 0},onPointerDown:function beginDrag(e){if(!j||Me)return;const t={...Le};beginGesture(e,(e,n)=>Se({x:t.x+e,y:t.y+n}))},onDoubleClick:Je?()=>Ee(!Me):void 0,children:[rt,"start"===ge.controlsSide?Ve:null,"center"===ge.titleAlign?e("span",{"aria-hidden":"true",className:"pointer-events-none absolute inset-x-0 flex items-center justify-center",style:{paddingInline:be.controlsWidth(qe.length)+2*be.padX},children:t("span",{className:"flex min-w-0 items-center",style:{gap:Math.round(.5*be.title)},children:[et,Ze]})}):t(n,{children:[et,Ze]}),e("span",{className:"flex-1"}),d(S)?e("span",{className:"flex shrink-0 cursor-default items-center",style:{gap:Math.round(.5*be.title)},onPointerDown:e=>e.stopPropagation(),onDoubleClick:e=>e.stopPropagation(),children:S}):null,"end"===ge.controlsSide?Ve:null]}),st=Me?{left:0,top:0,width:"100%",height:ze?Xe:"100%"}:{left:Le.x,top:Le.y,width:ke?.width??O,height:ze?Xe:ke?.height??$??Re??void 0},at=r({render:le,ref:_e,props:{role:"group","aria-labelledby":Ze?ve:void 0,className:l("plass-window relative flex min-w-0 flex-col overflow-hidden",I>0?`${c} [@media(prefers-reduced-transparency:reduce)]:[--p-window-keep:100%]`:"",ge.glass&&0===I?"[backdrop-filter:var(--plass-blur)]":"",ge.glass?"[@media(prefers-reduced-transparency:reduce)]:[background-image:linear-gradient(var(--p-window-band),var(--p-window-band)),linear-gradient(var(--plass-surface),var(--plass-surface))]":"","[transition-property:left,top,width,height,opacity,box-shadow,background-color,border-color,border-radius]","[transition-duration:var(--plass-duration-slow)]","[transition-timing-function:var(--plass-ease)]","motion-reduce:[transition-duration:0ms]","data-[gesture]:[transition-property:none]",ce),"data-gesture":We?"":void 0,...b(!xe),style:{opacity:xe?void 0:0,...w({os:M,color:he,accent:D,transparency:I,active:Ie,elevation:T}),position:"static"===W?"relative":W,...st,borderRadius:Me?0:`${be.radius}px ${be.radius}px ${be.radiusBottom}px ${be.radiusBottom}px`,borderStyle:"solid",borderWidth:be.frame,borderColor:"var(--p-window-line)",backgroundColor:"var(--p-window-band)",boxShadow:"var(--p-window-shadow), var(--plass-gloss-glass)",...de},children:t(n,{children:[ot,e("div",{className:l("min-h-0 flex-1",te?"overflow-auto":"overflow-hidden"),style:{backgroundColor:"var(--p-window-body)",marginInline:be.band.side,marginBottom:be.band.bottom,boxShadow:be.band.side>0?"inset 0 0 0 1px rgb(0 0 0 / 0.12)":void 0},...b(ze),children:ue}),!A||Me||ze?null:y.map(t=>{const n="se"===t.edge;return e("div",{role:n?"button":void 0,tabIndex:n?0:void 0,"aria-label":n?se??we.resizeWindow:void 0,"aria-hidden":n?void 0:"true",className:l("absolute z-10 touch-none",t.className,n?"focus-visible:[outline:2px_solid_var(--p-ring)] focus-visible:[outline-offset:-2px]":""),onPointerDown:e=>function beginResize(e,t){const n=Ke.current;if(!n||Me)return;const i={width:s(n,!0).size,height:s(n,!1).size,x:Le.x,y:Le.y},r=e.includes("e"),o=e.includes("w"),a=e.includes("n"),l=e.includes("s");beginGesture(t,(e,t)=>{let{width:n,height:s}=i,{x:c,y:d}=i;r&&(n=Math.max(Ye.width,i.width+e)),l&&(s=Math.max(Ye.height,i.height+t)),o&&(n=Math.max(Ye.width,i.width-e),c=i.x+(i.width-n)),a&&(s=Math.max(Ye.height,i.height-t),d=i.y+(i.height-s)),resizeTo({width:n,height:s}),(o||a)&&Se({x:c,y:d})})}(t.edge,e),onKeyDown:n?e=>{const t={ArrowRight:[16,0],ArrowLeft:[-16,0],ArrowDown:[0,16],ArrowUp:[0,-16]}[e.key];t&&(e.preventDefault(),function nudge(e,t){const n=Ke.current;if(!n)return;const i=s(n,!0).size,r=s(n,!1).size,o=Math.max(Ye.width,i+e),a=Math.max(Ye.height,r+t);o===i&&a===r||resizeTo({width:o,height:a})}(t[0],t[1]))}:void 0},t.edge)})]}),...me}});return xe||Ae?at:null});
@@ -1,2 +1,6 @@
1
1
  /* Scan manifest for <accordion>. Needs `plass-ui/css/base.css` first. */
2
2
  @source '../components/accordion';
3
+ @source '../internal/defaults.js';
4
+ @source '../internal/heading.js';
5
+ @source '../internal/icons.js';
6
+ @source '../internal/styles.js';
@@ -1,2 +1,7 @@
1
1
  /* Scan manifest for <alert>. Needs `plass-ui/css/base.css` first. */
2
2
  @source '../components/alert';
3
+ @source '../internal/defaults.js';
4
+ @source '../internal/icons.js';
5
+ @source '../internal/labels.js';
6
+ @source '../internal/loading.js';
7
+ @source '../internal/styles.js';
@@ -1,2 +1,8 @@
1
1
  /* Scan manifest for <anchor>. Needs `plass-ui/css/base.css` first. */
2
2
  @source '../components/anchor';
3
+ @source '../internal/defaults.js';
4
+ @source '../internal/labels.js';
5
+ @source '../internal/layout-box.js';
6
+ @source '../internal/loading.js';
7
+ @source '../internal/scroll-target.js';
8
+ @source '../internal/styles.js';
@@ -1,2 +1,5 @@
1
1
  /* Scan manifest for <animate-appear>. Needs `plass-ui/css/base.css` first. */
2
2
  @source '../components/animate-appear';
3
+ @source '../internal/animate.js';
4
+ @source '../internal/media.js';
5
+ @source '../internal/styles.js';
@@ -1,2 +1,5 @@
1
1
  /* Scan manifest for <animate-blink>. Needs `plass-ui/css/base.css` first. */
2
2
  @source '../components/animate-blink';
3
+ @source '../internal/animate.js';
4
+ @source '../internal/media.js';
5
+ @source '../internal/styles.js';
@@ -1,2 +1,6 @@
1
1
  /* Scan manifest for <animate-counter>. Needs `plass-ui/css/base.css` first. */
2
2
  @source '../components/animate-counter';
3
+ @source '../internal/animate.js';
4
+ @source '../internal/defaults.js';
5
+ @source '../internal/media.js';
6
+ @source '../internal/styles.js';
@@ -1,2 +1,5 @@
1
1
  /* Scan manifest for <animate-fade>. Needs `plass-ui/css/base.css` first. */
2
2
  @source '../components/animate-fade';
3
+ @source '../internal/animate.js';
4
+ @source '../internal/media.js';
5
+ @source '../internal/styles.js';
@@ -1,2 +1,5 @@
1
1
  /* Scan manifest for <animate-float>. Needs `plass-ui/css/base.css` first. */
2
2
  @source '../components/animate-float';
3
+ @source '../internal/animate.js';
4
+ @source '../internal/media.js';
5
+ @source '../internal/styles.js';
@@ -1,2 +1,5 @@
1
1
  /* Scan manifest for <animate-grow>. Needs `plass-ui/css/base.css` first. */
2
2
  @source '../components/animate-grow';
3
+ @source '../internal/animate.js';
4
+ @source '../internal/media.js';
5
+ @source '../internal/styles.js';
@@ -1,2 +1,5 @@
1
1
  /* Scan manifest for <animate-headline>. Needs `plass-ui/css/base.css` first. */
2
2
  @source '../components/animate-headline';
3
+ @source '../internal/animate.js';
4
+ @source '../internal/media.js';
5
+ @source '../internal/styles.js';
@@ -1,2 +1,6 @@
1
1
  /* Scan manifest for <animate-lighting>. Needs `plass-ui/css/base.css` first. */
2
2
  @source '../components/animate-lighting';
3
+ @source '../internal/animate.js';
4
+ @source '../internal/defaults.js';
5
+ @source '../internal/media.js';
6
+ @source '../internal/styles.js';
@@ -1,2 +1,6 @@
1
1
  /* Scan manifest for <animate-marquee>. Needs `plass-ui/css/base.css` first. */
2
2
  @source '../components/animate-marquee';
3
+ @source '../internal/animate.js';
4
+ @source '../internal/inert.js';
5
+ @source '../internal/media.js';
6
+ @source '../internal/styles.js';
@@ -1,2 +1,5 @@
1
1
  /* Scan manifest for <animate-reveal>. Needs `plass-ui/css/base.css` first. */
2
2
  @source '../components/animate-reveal';
3
+ @source '../internal/animate.js';
4
+ @source '../internal/media.js';
5
+ @source '../internal/styles.js';
@@ -1,2 +1,5 @@
1
1
  /* Scan manifest for <animate-rotate>. Needs `plass-ui/css/base.css` first. */
2
2
  @source '../components/animate-rotate';
3
+ @source '../internal/animate.js';
4
+ @source '../internal/media.js';
5
+ @source '../internal/styles.js';
@@ -1,2 +1,7 @@
1
1
  /* Scan manifest for <animate-scramble>. Needs `plass-ui/css/base.css` first. */
2
2
  @source '../components/animate-scramble';
3
+ @source '../internal/animate.js';
4
+ @source '../internal/media.js';
5
+ @source '../internal/scramble.js';
6
+ @source '../internal/styles.js';
7
+ @source '../internal/text.js';
@@ -1,2 +1,5 @@
1
1
  /* Scan manifest for <animate-shake>. Needs `plass-ui/css/base.css` first. */
2
2
  @source '../components/animate-shake';
3
+ @source '../internal/animate.js';
4
+ @source '../internal/media.js';
5
+ @source '../internal/styles.js';
@@ -1,2 +1,5 @@
1
1
  /* Scan manifest for <animate-slide>. Needs `plass-ui/css/base.css` first. */
2
2
  @source '../components/animate-slide';
3
+ @source '../internal/animate.js';
4
+ @source '../internal/media.js';
5
+ @source '../internal/styles.js';
@@ -1,2 +1,6 @@
1
1
  /* Scan manifest for <animate-split>. Needs `plass-ui/css/base.css` first. */
2
2
  @source '../components/animate-split';
3
+ @source '../internal/animate.js';
4
+ @source '../internal/media.js';
5
+ @source '../internal/styles.js';
6
+ @source '../internal/text.js';
@@ -1,2 +1,6 @@
1
1
  /* Scan manifest for <animate-typing>. Needs `plass-ui/css/base.css` first. */
2
2
  @source '../components/animate-typing';
3
+ @source '../internal/animate.js';
4
+ @source '../internal/media.js';
5
+ @source '../internal/styles.js';
6
+ @source '../internal/text.js';
@@ -1,2 +1,5 @@
1
1
  /* Scan manifest for <animate-zoom>. Needs `plass-ui/css/base.css` first. */
2
2
  @source '../components/animate-zoom';
3
+ @source '../internal/animate.js';
4
+ @source '../internal/media.js';
5
+ @source '../internal/styles.js';
@@ -1,2 +1,4 @@
1
1
  /* Scan manifest for <app-logo>. Needs `plass-ui/css/base.css` first. */
2
2
  @source '../components/app-logo';
3
+ @source '../internal/defaults.js';
4
+ @source '../internal/styles.js';