plass-ui 1.4.0 → 1.6.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 (268) hide show
  1. package/CHANGELOG.md +432 -0
  2. package/README.md +45 -23
  3. package/dist/components/accordion/PlAccordion.d.ts +1 -1
  4. package/dist/components/alert/PlAlert.js +1 -1
  5. package/dist/components/anchor/PlAnchor.d.ts +14 -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-blink/PlAnimateBlink.js +1 -1
  9. package/dist/components/animate-counter/PlAnimateCounter.js +1 -1
  10. package/dist/components/animate-fade/PlAnimateFade.js +1 -1
  11. package/dist/components/animate-float/PlAnimateFloat.js +1 -1
  12. package/dist/components/animate-grow/PlAnimateGrow.js +1 -1
  13. package/dist/components/animate-headline/PlAnimateHeadline.js +1 -1
  14. package/dist/components/animate-lighting/PlAnimateLighting.js +1 -1
  15. package/dist/components/animate-marquee/PlAnimateMarquee.d.ts +16 -4
  16. package/dist/components/animate-marquee/PlAnimateMarquee.js +1 -1
  17. package/dist/components/animate-reveal/PlAnimateReveal.js +1 -1
  18. package/dist/components/animate-rotate/PlAnimateRotate.js +1 -1
  19. package/dist/components/animate-scramble/PlAnimateScramble.js +1 -1
  20. package/dist/components/animate-shake/PlAnimateShake.js +1 -1
  21. package/dist/components/animate-slide/PlAnimateSlide.js +1 -1
  22. package/dist/components/animate-split/PlAnimateSplit.d.ts +7 -4
  23. package/dist/components/animate-split/PlAnimateSplit.js +1 -1
  24. package/dist/components/animate-typing/PlAnimateTyping.d.ts +3 -2
  25. package/dist/components/animate-typing/PlAnimateTyping.js +1 -1
  26. package/dist/components/animate-zoom/PlAnimateZoom.js +1 -1
  27. package/dist/components/app-logo/PlAppLogo.js +1 -1
  28. package/dist/components/area-chart/PlAreaChart.d.ts +1 -1
  29. package/dist/components/area-chart/PlAreaChart.js +1 -1
  30. package/dist/components/aspect-ratio/PlAspectRatio.d.ts +2 -1
  31. package/dist/components/aspect-ratio/PlAspectRatio.js +1 -1
  32. package/dist/components/avatar/PlAvatar.js +1 -1
  33. package/dist/components/back-top/PlBackTop.d.ts +8 -1
  34. package/dist/components/back-top/PlBackTop.js +1 -1
  35. package/dist/components/badge/PlBadge.js +1 -1
  36. package/dist/components/bar-chart/PlBarChart.d.ts +1 -1
  37. package/dist/components/bar-chart/PlBarChart.js +1 -1
  38. package/dist/components/blockquote/PlBlockquote.js +1 -1
  39. package/dist/components/bottom-navigation/PlBottomNavigation.d.ts +3 -0
  40. package/dist/components/breadcrumb/PlBreadcrumb.js +1 -1
  41. package/dist/components/button/PlButton.d.ts +8 -0
  42. package/dist/components/button/PlButton.js +1 -1
  43. package/dist/components/calendar/PlCalendar.js +1 -1
  44. package/dist/components/card/PlCard.js +1 -1
  45. package/dist/components/carousel/PlCarousel.d.ts +1 -1
  46. package/dist/components/carousel/PlCarousel.js +1 -1
  47. package/dist/components/chat-bubble/PlChatBubble.d.ts +4 -1
  48. package/dist/components/chat-bubble/PlChatBubble.js +1 -1
  49. package/dist/components/checkbox/PlCheckbox.js +1 -1
  50. package/dist/components/chip/PlChip.d.ts +6 -2
  51. package/dist/components/chip/PlChip.js +1 -1
  52. package/dist/components/code-block/PlCodeBlock.d.ts +19 -2
  53. package/dist/components/code-block/PlCodeBlock.js +1 -1
  54. package/dist/components/color-picker/PlColorPicker.d.ts +19 -2
  55. package/dist/components/color-picker/PlColorPicker.js +1 -1
  56. package/dist/components/combobox/PlCombobox.d.ts +14 -7
  57. package/dist/components/combobox/PlCombobox.js +1 -1
  58. package/dist/components/command-palette/PlCommandPalette.d.ts +6 -2
  59. package/dist/components/command-palette/PlCommandPalette.js +1 -1
  60. package/dist/components/confirm/PlConfirmProvider.js +1 -1
  61. package/dist/components/container/PlContainer.js +1 -1
  62. package/dist/components/data-table/PlDataTable.d.ts +20 -6
  63. package/dist/components/data-table/PlDataTable.js +1 -1
  64. package/dist/components/date-picker/PlDatePicker.js +1 -1
  65. package/dist/components/date-range-picker/PlDateRangePicker.js +1 -1
  66. package/dist/components/date-time-picker/PlDateTimePicker.js +1 -1
  67. package/dist/components/drawer/PlDrawer.js +1 -1
  68. package/dist/components/empty/PlEmpty.js +1 -1
  69. package/dist/components/file-picker/PlFilePicker.d.ts +22 -3
  70. package/dist/components/file-picker/PlFilePicker.js +1 -1
  71. package/dist/components/floating-bottom-navigation/PlFloatingBottomNavigation.d.ts +3 -0
  72. package/dist/components/floating-bottom-navigation/PlFloatingBottomNavigation.js +1 -1
  73. package/dist/components/form/PlForm.js +1 -1
  74. package/dist/components/gallery/PlGallery.d.ts +40 -2
  75. package/dist/components/gallery/PlGallery.js +1 -1
  76. package/dist/components/gallery/PlGalleryViewer.js +1 -1
  77. package/dist/components/gauge-chart/PlGaugeChart.js +1 -1
  78. package/dist/components/heatmap-chart/PlHeatmapChart.js +1 -1
  79. package/dist/components/highlight/PlHighlight.d.ts +10 -3
  80. package/dist/components/highlight/PlHighlight.js +1 -1
  81. package/dist/components/hot-keys/PlHotKeys.js +1 -1
  82. package/dist/components/hover-card/PlHoverCard.d.ts +5 -3
  83. package/dist/components/hover-card/PlHoverCard.js +1 -1
  84. package/dist/components/how-to-steps/PlHowToSteps.js +1 -1
  85. package/dist/components/image/PlImage.d.ts +195 -8
  86. package/dist/components/image/PlImage.js +1 -1
  87. package/dist/components/image/PlImagePreview.d.ts +58 -0
  88. package/dist/components/image/PlImagePreview.js +1 -0
  89. package/dist/components/image/index.d.ts +1 -1
  90. package/dist/components/list/PlList.js +1 -1
  91. package/dist/components/menu/PlMenu.d.ts +14 -5
  92. package/dist/components/menu/PlMenu.js +1 -1
  93. package/dist/components/meter/PlMeter.js +1 -1
  94. package/dist/components/navigation-menu/PlNavigationMenu.d.ts +7 -1
  95. package/dist/components/navigation-menu/PlNavigationMenu.js +1 -1
  96. package/dist/components/number-field/PlNumberField.d.ts +12 -4
  97. package/dist/components/number-field/PlNumberField.js +1 -1
  98. package/dist/components/otp-field/PlOtpField.d.ts +15 -1
  99. package/dist/components/otp-field/PlOtpField.js +1 -1
  100. package/dist/components/page-layout/PlPageLayout.js +1 -1
  101. package/dist/components/pagination/PlPagination.d.ts +12 -9
  102. package/dist/components/pagination/PlPagination.js +1 -1
  103. package/dist/components/panes/PlPanes.d.ts +5 -0
  104. package/dist/components/panes/PlPanes.js +1 -1
  105. package/dist/components/pie-chart/PlPieChart.js +1 -1
  106. package/dist/components/pill/PlPill.js +1 -1
  107. package/dist/components/popover/PlPopover.d.ts +5 -5
  108. package/dist/components/popover/PlPopover.js +1 -1
  109. package/dist/components/progress-box/PlProgressBox.js +1 -1
  110. package/dist/components/progress-circular/PlProgressCircular.js +1 -1
  111. package/dist/components/progress-linear/PlProgressLinear.js +1 -1
  112. package/dist/components/radio-group/PlRadioGroup.js +1 -1
  113. package/dist/components/rating/PlRating.d.ts +1 -1
  114. package/dist/components/rating/PlRating.js +1 -1
  115. package/dist/components/scatter-chart/PlScatterChart.js +1 -1
  116. package/dist/components/scroll-area/PlScrollArea.js +1 -1
  117. package/dist/components/scroll-zone/PlScrollZone.d.ts +19 -6
  118. package/dist/components/scroll-zone/PlScrollZone.js +1 -1
  119. package/dist/components/segmented-button/PlSegmentedButton.js +1 -1
  120. package/dist/components/select/PlSelect.d.ts +8 -2
  121. package/dist/components/select/PlSelect.js +1 -1
  122. package/dist/components/show/PlShow.d.ts +16 -0
  123. package/dist/components/show/PlShow.js +1 -1
  124. package/dist/components/sidebar/PlSidebar.js +1 -1
  125. package/dist/components/sidebar/PlSidebarTrigger.js +1 -1
  126. package/dist/components/skeleton/PlSkeleton.js +1 -1
  127. package/dist/components/slider/PlSlider.d.ts +13 -1
  128. package/dist/components/slider/PlSlider.js +1 -1
  129. package/dist/components/sparkline/PlSparkline.js +1 -1
  130. package/dist/components/spoiler/PlSpoiler.d.ts +15 -8
  131. package/dist/components/spoiler/PlSpoiler.js +1 -1
  132. package/dist/components/stat/PlStat.d.ts +4 -0
  133. package/dist/components/stat/PlStat.js +1 -1
  134. package/dist/components/stepper/PlStepper.d.ts +1 -1
  135. package/dist/components/stepper/PlStepper.js +1 -1
  136. package/dist/components/switch/PlSwitch.js +1 -1
  137. package/dist/components/table/PlTable.d.ts +5 -5
  138. package/dist/components/tabs/PlTabs.d.ts +26 -1
  139. package/dist/components/tabs/PlTabs.js +1 -1
  140. package/dist/components/text-field/PlTextField.d.ts +15 -5
  141. package/dist/components/text-field/PlTextField.js +1 -1
  142. package/dist/components/text-link/PlTextLink.js +1 -1
  143. package/dist/components/time-picker/PlTimePicker.js +1 -1
  144. package/dist/components/timeline/PlTimeline.js +1 -1
  145. package/dist/components/timeline-chart/PlTimelineChart.js +1 -1
  146. package/dist/components/toast/PlToast.js +1 -1
  147. package/dist/components/toggle/PlToggle.js +1 -1
  148. package/dist/components/tooltip/PlTooltip.js +1 -1
  149. package/dist/components/tour/PlTour.js +1 -1
  150. package/dist/components/transfer/PlTransfer.d.ts +10 -1
  151. package/dist/components/transfer/PlTransfer.js +1 -1
  152. package/dist/components/tree/PlTree.js +1 -1
  153. package/dist/components/tree-select/PlTreeSelect.js +1 -1
  154. package/dist/components/typography/PlTypography.js +1 -1
  155. package/dist/components/window-pane/PlWindowPane.d.ts +3 -3
  156. package/dist/components/window-pane/PlWindowPane.js +1 -1
  157. package/dist/css/area-chart.css +1 -0
  158. package/dist/css/back-top.css +2 -0
  159. package/dist/css/bar-chart.css +1 -0
  160. package/dist/css/calendar.css +1 -0
  161. package/dist/css/carousel.css +2 -0
  162. package/dist/css/color-picker.css +1 -0
  163. package/dist/css/combobox.css +1 -0
  164. package/dist/css/command-palette.css +1 -0
  165. package/dist/css/confirm.css +2 -0
  166. package/dist/css/data-table.css +5 -0
  167. package/dist/css/date-picker.css +1 -0
  168. package/dist/css/date-range-picker.css +1 -0
  169. package/dist/css/date-time-picker.css +1 -0
  170. package/dist/css/floating-action-button.css +2 -0
  171. package/dist/css/gallery.css +5 -0
  172. package/dist/css/gauge-chart.css +1 -0
  173. package/dist/css/heatmap-chart.css +1 -0
  174. package/dist/css/icon-button.css +1 -0
  175. package/dist/css/image.css +2 -0
  176. package/dist/css/line-chart.css +1 -0
  177. package/dist/css/menubar.css +1 -0
  178. package/dist/css/pagination.css +1 -0
  179. package/dist/css/pie-chart.css +1 -0
  180. package/dist/css/popconfirm.css +2 -0
  181. package/dist/css/scatter-chart.css +1 -0
  182. package/dist/css/scroll-zone.css +2 -0
  183. package/dist/css/sidebar.css +3 -0
  184. package/dist/css/sparkline.css +1 -0
  185. package/dist/css/spoiler.css +1 -0
  186. package/dist/css/stat.css +1 -0
  187. package/dist/css/time-picker.css +1 -0
  188. package/dist/css/timeline-chart.css +1 -0
  189. package/dist/css/tour.css +1 -0
  190. package/dist/css/transfer.css +4 -0
  191. package/dist/css/tree-select.css +2 -0
  192. package/dist/hooks/usePlElementSize.d.ts +4 -1
  193. package/dist/hooks/usePlElementSize.js +1 -1
  194. package/dist/hooks/usePlHotKeys.d.ts +5 -1
  195. package/dist/hooks/usePlHotKeys.js +1 -1
  196. package/dist/hooks/usePlOnScreen.d.ts +4 -0
  197. package/dist/hooks/usePlOnScreen.js +1 -1
  198. package/dist/internal/animate.d.ts +24 -21
  199. package/dist/internal/animate.js +1 -1
  200. package/dist/internal/calendar.js +1 -1
  201. package/dist/internal/chart-frame.d.ts +3 -14
  202. package/dist/internal/chart-frame.js +1 -1
  203. package/dist/internal/chart-line.js +1 -1
  204. package/dist/internal/chart.d.ts +90 -3
  205. package/dist/internal/chart.js +1 -1
  206. package/dist/internal/color-scheme.js +1 -1
  207. package/dist/internal/data-table.d.ts +5 -4
  208. package/dist/internal/data-table.js +1 -1
  209. package/dist/internal/date.d.ts +10 -0
  210. package/dist/internal/date.js +1 -1
  211. package/dist/internal/defaults.d.ts +14 -1
  212. package/dist/internal/drag.d.ts +16 -0
  213. package/dist/internal/drag.js +1 -1
  214. package/dist/internal/focusable.d.ts +8 -0
  215. package/dist/internal/focusable.js +1 -0
  216. package/dist/internal/form.d.ts +61 -0
  217. package/dist/internal/form.js +1 -0
  218. package/dist/internal/gallery.d.ts +60 -14
  219. package/dist/internal/gallery.js +1 -1
  220. package/dist/internal/glow.d.ts +32 -0
  221. package/dist/internal/glow.js +1 -0
  222. package/dist/internal/highlight.js +1 -1
  223. package/dist/internal/image.d.ts +94 -0
  224. package/dist/internal/image.js +1 -0
  225. package/dist/internal/inert.d.ts +19 -0
  226. package/dist/internal/inert.js +1 -0
  227. package/dist/internal/keys.d.ts +19 -0
  228. package/dist/internal/keys.js +1 -1
  229. package/dist/internal/labels.d.ts +58 -1
  230. package/dist/internal/labels.js +1 -1
  231. package/dist/internal/link.d.ts +17 -0
  232. package/dist/internal/link.js +1 -1
  233. package/dist/internal/notch.d.ts +83 -0
  234. package/dist/internal/notch.js +1 -0
  235. package/dist/internal/page-layout.d.ts +14 -7
  236. package/dist/internal/page-layout.js +1 -1
  237. package/dist/internal/picker.d.ts +51 -8
  238. package/dist/internal/picker.js +1 -1
  239. package/dist/internal/progress.d.ts +16 -8
  240. package/dist/internal/progress.js +1 -1
  241. package/dist/internal/scramble.d.ts +4 -0
  242. package/dist/internal/scramble.js +1 -1
  243. package/dist/internal/scroll-target.d.ts +5 -0
  244. package/dist/internal/scroll-target.js +1 -0
  245. package/dist/internal/steps.js +1 -1
  246. package/dist/internal/styles.d.ts +87 -0
  247. package/dist/internal/styles.js +1 -1
  248. package/dist/internal/text.d.ts +39 -0
  249. package/dist/internal/text.js +1 -0
  250. package/dist/internal/watermark.d.ts +44 -0
  251. package/dist/internal/watermark.js +1 -0
  252. package/dist/internal/wheel.d.ts +52 -0
  253. package/dist/internal/wheel.js +1 -0
  254. package/dist/internal/window.js +1 -1
  255. package/dist/locales/de.js +1 -1
  256. package/dist/locales/es.js +1 -1
  257. package/dist/locales/fr.js +1 -1
  258. package/dist/locales/ja.js +1 -1
  259. package/dist/locales/ko.js +1 -1
  260. package/dist/locales/zh-Hans.js +1 -1
  261. package/dist/provider/PlColorSchemeScript.js +1 -1
  262. package/dist/provider/PlassProvider.d.ts +4 -3
  263. package/dist/provider/PlassProvider.js +1 -1
  264. package/dist/styles.css +1 -1
  265. package/dist/tailwind.css +313 -15
  266. package/dist/tokens.css +313 -15
  267. package/dist/types.d.ts +71 -29
  268. package/package.json +15 -15
@@ -272,6 +272,13 @@ export declare const focusRingInsetClasses = "focus-visible:[outline:2px_solid_v
272
272
  *
273
273
  * Kept quiet until it is wanted: the glyph sits at 70% until the pointer or the
274
274
  * keyboard arrives.
275
+ *
276
+ * Drawn at the size of the label, and pressed from a 24px square, the minimum
277
+ * target size of WCAG 2.5.8. The `::before` is that square, centred on the
278
+ * glyph whatever size the glyph is, and placed out of the flow so the chip and
279
+ * the trigger keep their size. It comes after the label or the trigger in the
280
+ * markup and is positioned, so where the square reaches over one of them the ×
281
+ * has the press, and the neighbour keeps everything outside the square.
275
282
  */
276
283
  export declare const chipRemoveClasses: string;
277
284
  /** Icons track their label rather than carrying a size of their own. */
@@ -285,6 +292,15 @@ export declare const iconClasses = "[&_svg]:pointer-events-none [&_svg]:size-[1.
285
292
  * is invisible to a sighted reader and present to every other kind.
286
293
  */
287
294
  export declare const srOnlyClasses = "absolute size-px overflow-hidden whitespace-nowrap [clip-path:inset(50%)]";
295
+ /**
296
+ * The same clipped box, for a copy of text that is also drawn.
297
+ *
298
+ * A text effect draws its line and puts a second copy of it beside it for a
299
+ * screen reader, so a selection across the pair used to hand back the line
300
+ * twice. This one is left out of the selection: the drawn copy is the one a
301
+ * sighted reader can see, and the one they mean when they copy it.
302
+ */
303
+ export declare const srOnlyCopyClasses = "absolute size-px overflow-hidden whitespace-nowrap [clip-path:inset(50%)] select-none";
288
304
  /**
289
305
  * Every slot a control reads.
290
306
  *
@@ -307,8 +323,79 @@ export declare function controlSlots(color: PlassColor, elevation: PlassElevatio
307
323
  * own colours and tinting the sheet under them puts every one on a background
308
324
  * it was not chosen against. The family shows up in the hairline, the focus
309
325
  * ring and the caret, and the glass stays clear.
326
+ *
327
+ * The two interaction-light slots **are** here, and they are not an exception
328
+ * to that. A dye is what a surface is; the light is where the pointer is, and a
329
+ * field answering a pointer is as true a claim as a key answering one. They
330
+ * take the family's own tint in all three variants rather than switching on the
331
+ * variant as `controlSlots` does, because none of these three is a coloured
332
+ * fill: a `solid` field is the well, which is the glass at its most opaque, and
333
+ * white light on it is white light on a near-white sheet.
334
+ *
335
+ * Declaring them costs a surface that never lights up two custom properties and
336
+ * nothing else — both layers are `opacity: 0` until `.plass-glow` is on the
337
+ * element, and a surface without that class has no layers at all.
310
338
  */
311
339
  export declare function surfaceSlots(color: PlassColor, elevation: PlassElevation): React.CSSProperties;
340
+ /**
341
+ * The edge a surface that is only a fill gets back in forced-colours mode.
342
+ *
343
+ * Windows' contrast themes drop every background image and box shadow, so a
344
+ * `solid` button — a gradient with no border — is left as a label floating on
345
+ * the page, and a `solid` field as a caret with no box around it. A border in a
346
+ * system colour gives both their shape back. Nothing changes outside that mode.
347
+ */
348
+ export declare const forcedEdgeClasses = "forced-colors:border forced-colors:[border-color:ButtonText]";
349
+ /**
350
+ * The same for a surface that is not a button — a field, a progress bar's
351
+ * track, a slider's rail, a badge, a message — in the colour the system draws
352
+ * text on the page.
353
+ */
354
+ export declare const forcedFieldEdgeClasses = "forced-colors:border forced-colors:[border-color:CanvasText]";
355
+ /**
356
+ * A state that is shown by a fill, in forced-colours mode.
357
+ *
358
+ * The system drops the gradient and repaints the background in the page's own
359
+ * colour, so a ticked box, a chosen segment, a pressed toggle and the filled
360
+ * part of a progress bar would look exactly like the empty ones. A system colour
361
+ * written by the page is kept in that mode, so these paint the state in the pair
362
+ * the system uses for a selection, `Highlight` behind `HighlightText`.
363
+ *
364
+ * Never `forced-color-adjust: none` for this. It would keep the colours, and it
365
+ * would also keep the gradient over them and the tinted shadow under them.
366
+ */
367
+ export declare const forcedFillClasses = "forced-colors:[background-color:Highlight] forced-colors:[border-color:Highlight] forced-colors:[color:HighlightText]";
368
+ /** The same, on a control Base UI marks `data-checked`. */
369
+ export declare const forcedCheckedClasses: string;
370
+ /**
371
+ * The same, on a control Base UI marks `data-pressed`.
372
+ *
373
+ * The attribute is what keeps the fill under the pointer. A pressed toggle's own
374
+ * `hover:` and `active:` washes are a class and a pseudo-class, which outrank
375
+ * `forcedFillClasses`' single class, and a wash that is not a system colour is
376
+ * repainted in the page's colour. Written as a class and an attribute, the fill
377
+ * ties with them and comes after them in the stylesheet.
378
+ */
379
+ export declare const forcedPressedClasses: string;
380
+ /**
381
+ * The label over a highlight that is a separate element — the tile under a
382
+ * chosen segment — which has to be written in the colour drawn on a highlight,
383
+ * or it is the page's text on the system's selection colour.
384
+ */
385
+ export declare const forcedCheckedTextClasses = "forced-colors:data-[checked]:[color:HighlightText]";
386
+ /**
387
+ * The row of a list or a menu that the pointer and the arrow keys have reached,
388
+ * in forced-colours mode. Its tint is the only thing that marks it, and the rows
389
+ * draw no focus ring because the tint is the focus indicator, so without this a
390
+ * keyboard reader in a contrast theme cannot see which row Enter would choose.
391
+ *
392
+ * The colour is written on everything inside the row as well: a description or
393
+ * a shortcut that sets a muted colour of its own is otherwise put back to the
394
+ * page's text colour, which is unreadable on the highlight.
395
+ */
396
+ export declare const forcedHighlightedClasses: string;
397
+ /** A checked control that is disabled, in the system's colour for unavailable. */
398
+ export declare const forcedDisabledCheckedClasses: string;
312
399
  /**
313
400
  * Disabled is **the light going out.** The key keeps its shape, its colour and
314
401
  * its place in the layout, and stops catching any light: no gloss, no tinted
@@ -1 +1 @@
1
- export const radiusClasses={xs:"rounded-(--plass-radius-xs)",sm:"rounded-(--plass-radius-sm)",md:"rounded-(--plass-radius-md)",lg:"rounded-(--plass-radius-lg)",xl:"rounded-(--plass-radius-xl)"};export const controlHeightClasses={xs:"h-6",sm:"h-8",md:"h-10",lg:"h-12",xl:"h-14"};export const controlSquareClasses={xs:"w-6",sm:"w-8",md:"w-10",lg:"w-12",xl:"w-14"};export const controlTextClasses={xs:"text-[0.6875rem]",sm:"text-[0.8125rem]",md:"text-[0.875rem]",lg:"text-[1rem]",xl:"text-[1.125rem]"};export const controlTextLeadingClasses={xs:"text-[0.6875rem]/[1rem]",sm:"text-[0.8125rem]/[1.125rem]",md:"text-[0.875rem]/[1.25rem]",lg:"text-[1rem]/[1.5rem]",xl:"text-[1.125rem]/[1.75rem]"};export const metaTextClasses={xs:"text-[0.625rem]",sm:"text-[0.6875rem]",md:"text-[0.75rem]",lg:"text-[0.8125rem]",xl:"text-[0.875rem]"};export const paddingXClasses={default:{xs:"px-2.5",sm:"px-3",md:"px-4",lg:"px-6",xl:"px-7"},compact:{xs:"px-1.5",sm:"px-2",md:"px-2.5",lg:"px-3.5",xl:"px-4"}};export const iconSizeClasses={xs:"size-3.5",sm:"size-4",md:"size-5",lg:"size-6",xl:"size-7"};export const tickSizeClasses={xs:"size-3.5",sm:"size-4",md:"size-4.5",lg:"size-5",xl:"size-6"};export const tickRadiusClasses={xs:"rounded-[0.25rem]",sm:"rounded-[0.3125rem]",md:"rounded-[0.375rem]",lg:"rounded-[0.4375rem]",xl:"rounded-[0.5rem]"};export const tickDotClasses={xs:"size-0 data-[checked]:size-1.5",sm:"size-0 data-[checked]:size-1.5",md:"size-0 data-[checked]:size-2",lg:"size-0 data-[checked]:size-2",xl:"size-0 data-[checked]:size-2.5"};export const tickRowTextClasses=controlTextLeadingClasses;export const paddingXValues={default:{xs:"0.625rem",sm:"0.75rem",md:"1rem",lg:"1.5rem",xl:"1.75rem"},compact:{xs:"0.375rem",sm:"0.5rem",md:"0.625rem",lg:"0.875rem",xl:"1rem"}};export const gapClasses={xs:"gap-1",sm:"gap-1.5",md:"gap-2",lg:"gap-2.5",xl:"gap-3"};export const stackGapClasses={xs:"gap-1",sm:"gap-1.5",md:"gap-1.5",lg:"gap-2",xl:"gap-2"};export const sheetPaddingXClasses={default:{xs:"px-2.5",sm:"px-3.5",md:"px-5",lg:"px-6",xl:"px-7"},compact:{xs:"px-2",sm:"px-2.5",md:"px-3.5",lg:"px-4",xl:"px-5"}};export const sheetPaddingYClasses={default:{xs:"py-2.5",sm:"py-3.5",md:"py-5",lg:"py-6",xl:"py-7"},compact:{xs:"py-2",sm:"py-2.5",md:"py-3.5",lg:"py-4",xl:"py-5"}};export const sheetTitleClasses={xs:"text-[0.75rem]/[1rem]",sm:"text-[0.8125rem]/[1.125rem]",md:"text-[0.9375rem]/[1.25rem]",lg:"text-[1.0625rem]/[1.5rem]",xl:"text-[1.25rem]/[1.75rem]"};export const sheetBodyClasses={xs:"text-[0.6875rem]/[1rem]",sm:"text-[0.75rem]/[1.125rem]",md:"text-[0.8125rem]/[1.375rem]",lg:"text-[0.9375rem]/[1.5rem]",xl:"text-[1.0625rem]/[1.75rem]"};export const sheetSectionGapClasses={xs:"gap-1.5",sm:"gap-2",md:"gap-3",lg:"gap-3.5",xl:"gap-4"};export const sheetLineClasses="border-t [border-color:var(--plass-divider)]";export const sheetHeaderGapClasses={xs:"gap-0.5",sm:"gap-0.5",md:"gap-1",lg:"gap-1",xl:"gap-1.5"};export const glassClasses="[backdrop-filter:var(--plass-blur)] [-webkit-backdrop-filter:var(--plass-blur)]";export const transitionClasses=/* @__PURE__ */["[transition-property:background-color,background-image,border-color,box-shadow,color,filter,opacity]","[transition-duration:var(--plass-duration)]","[transition-timing-function:var(--plass-ease)]"].join(" ");export const focusRingClasses="focus-visible:[outline:2px_solid_var(--p-ring)] focus-visible:[outline-offset:0px]";export const focusWithinRingClasses="has-[:focus-visible]:[outline:2px_solid_var(--p-ring)] has-[:focus-visible]:[outline-offset:0px]";export const focusRingInsetClasses="focus-visible:[outline:2px_solid_var(--p-ring)] focus-visible:[outline-offset:-2px]";export const chipRemoveClasses=/* @__PURE__ */["ms-0.5 inline-flex shrink-0 items-center justify-center rounded-full","size-[1.15em] cursor-pointer opacity-70","[transition:opacity_var(--plass-duration)_var(--plass-ease)]","hover:opacity-100 focus-visible:opacity-100",focusRingClasses,"disabled:cursor-not-allowed"].join(" ");export const iconClasses="[&_svg]:pointer-events-none [&_svg]:size-[1.2em] [&_svg]:shrink-0";export const srOnlyClasses="absolute size-px overflow-hidden whitespace-nowrap [clip-path:inset(50%)]";export function controlSlots(s,e,a){const t="solid"===a;return{"--p-fill":`var(--plass-${s}-fill)`,"--p-on-solid":`var(--plass-${s}-on-solid)`,"--p-accent":`var(--plass-${s}-accent)`,"--p-tint":`var(--plass-${s}-tint)`,"--p-soft":`var(--plass-${s}-soft)`,"--p-soft-hover":`var(--plass-${s}-soft-hover)`,"--p-soft-press":`var(--plass-${s}-soft-press)`,"--p-line":`var(--plass-${s}-line)`,"--p-line-hover":`var(--plass-${s}-line-hover)`,"--p-ring":`var(--plass-${s}-ring)`,"--p-glow":t?"var(--plass-glow-on-fill)":`var(--plass-${s}-soft)`,"--p-flash":t?"var(--plass-flash-on-fill)":`var(--plass-${s}-soft-hover)`,"--p-elev":`var(--plass-shadow-${e})`,"--p-elev-hover":`var(--plass-shadow-${Math.min(e+1,4)})`,"--p-elev-press":`var(--plass-shadow-${Math.max(e-1,0)})`,"--p-lift":"0 6px 16px -4px var(--p-tint)","--p-lift-hover":"0 10px 24px -6px var(--p-tint)","--p-lift-press":"0 2px 6px -2px var(--p-tint)"}}export function surfaceSlots(s,e){return{"--p-accent":`var(--plass-${s}-accent)`,"--p-soft":`var(--plass-${s}-soft)`,"--p-soft-hover":`var(--plass-${s}-soft-hover)`,"--p-soft-press":`var(--plass-${s}-soft-press)`,"--p-line":`var(--plass-${s}-line)`,"--p-line-hover":`var(--plass-${s}-line-hover)`,"--p-ring":`var(--plass-${s}-ring)`,"--p-elev":`var(--plass-shadow-${e})`,"--p-elev-hover":`var(--plass-shadow-${Math.min(e+1,4)})`,"--p-elev-press":`var(--plass-shadow-${Math.max(e-1,0)})`}}export const disabledClasses={solid:/* @__PURE__ */["cursor-not-allowed text-(--p-on-solid) [background-image:var(--p-fill)]","opacity-50 saturate-[0.35] shadow-none"].join(" "),glass:/* @__PURE__ */[glassClasses,"cursor-not-allowed border text-(--plass-fg) bg-(--plass-glass)","[border-color:var(--plass-border)]","opacity-50 saturate-[0.35] shadow-none"].join(" "),ghost:"cursor-not-allowed bg-transparent text-(--p-accent) opacity-50 saturate-[0.35]"};export const readOnlyFilterClasses="saturate-[0.55]";export const sheetRestClasses={solid:/* @__PURE__ */[glassClasses,"text-(--plass-fg) bg-(--plass-glass-press)","[box-shadow:var(--p-elev),var(--plass-gloss-glass)]"].join(" "),glass:/* @__PURE__ */[glassClasses,"border text-(--plass-fg) bg-(--plass-glass)","[border-color:var(--plass-glass-line)]","[box-shadow:var(--p-elev),var(--plass-gloss-glass)]"].join(" "),ghost:"text-(--plass-fg) bg-transparent"};export const fieldRestClasses={solid:/* @__PURE__ */[glassClasses,"text-(--plass-fg) bg-(--plass-glass-press)","[box-shadow:var(--p-elev),var(--plass-well)]","hover:bg-(--plass-glass-hover)","focus-within:bg-(--plass-glass-press)"].join(" "),glass:/* @__PURE__ */[glassClasses,"border text-(--plass-fg) bg-(--plass-glass-hover)","[border-color:var(--plass-border)]","[box-shadow:var(--p-elev),var(--plass-gloss-glass)]","hover:bg-(--plass-glass-press) hover:[border-color:var(--p-line)]","focus-within:bg-(--plass-glass-press) focus-within:[border-color:var(--p-line-hover)]"].join(" "),ghost:/* @__PURE__ */["text-(--plass-fg) bg-transparent","hover:bg-(--p-soft)","focus-within:bg-(--p-soft-hover)"].join(" ")};export const fieldReadOnlyClasses={solid:/* @__PURE__ */[glassClasses,"text-(--plass-fg) bg-(--plass-glass-press)","[box-shadow:var(--plass-well)] saturate-[0.55]"].join(" "),glass:/* @__PURE__ */[glassClasses,"border text-(--plass-fg) bg-(--plass-glass-hover)","[border-color:var(--plass-border)]","[box-shadow:var(--plass-gloss-glass)] saturate-[0.55]"].join(" "),ghost:"text-(--plass-fg) bg-transparent saturate-[0.55]"};export function toLength(s){return"number"==typeof s?`${s}px`:s}export function hasContent(s){return null!=s&&!1!==s&&""!==s}export function cx(...s){return s.filter(Boolean).join(" ")}
1
+ export const radiusClasses={xs:"rounded-(--plass-radius-xs)",sm:"rounded-(--plass-radius-sm)",md:"rounded-(--plass-radius-md)",lg:"rounded-(--plass-radius-lg)",xl:"rounded-(--plass-radius-xl)"};export const controlHeightClasses={xs:"h-6",sm:"h-8",md:"h-10",lg:"h-12",xl:"h-14"};export const controlSquareClasses={xs:"w-6",sm:"w-8",md:"w-10",lg:"w-12",xl:"w-14"};export const controlTextClasses={xs:"text-[0.6875rem]",sm:"text-[0.8125rem]",md:"text-[0.875rem]",lg:"text-[1rem]",xl:"text-[1.125rem]"};export const controlTextLeadingClasses={xs:"text-[0.6875rem]/[1rem]",sm:"text-[0.8125rem]/[1.125rem]",md:"text-[0.875rem]/[1.25rem]",lg:"text-[1rem]/[1.5rem]",xl:"text-[1.125rem]/[1.75rem]"};export const metaTextClasses={xs:"text-[0.625rem]",sm:"text-[0.6875rem]",md:"text-[0.75rem]",lg:"text-[0.8125rem]",xl:"text-[0.875rem]"};export const paddingXClasses={default:{xs:"px-2.5",sm:"px-3",md:"px-4",lg:"px-6",xl:"px-7"},compact:{xs:"px-1.5",sm:"px-2",md:"px-2.5",lg:"px-3.5",xl:"px-4"}};export const iconSizeClasses={xs:"size-3.5",sm:"size-4",md:"size-5",lg:"size-6",xl:"size-7"};export const tickSizeClasses={xs:"size-3.5",sm:"size-4",md:"size-4.5",lg:"size-5",xl:"size-6"};export const tickRadiusClasses={xs:"rounded-[0.25rem]",sm:"rounded-[0.3125rem]",md:"rounded-[0.375rem]",lg:"rounded-[0.4375rem]",xl:"rounded-[0.5rem]"};export const tickDotClasses={xs:"size-0 data-[checked]:size-1.5",sm:"size-0 data-[checked]:size-1.5",md:"size-0 data-[checked]:size-2",lg:"size-0 data-[checked]:size-2",xl:"size-0 data-[checked]:size-2.5"};export const tickRowTextClasses=controlTextLeadingClasses;export const paddingXValues={default:{xs:"0.625rem",sm:"0.75rem",md:"1rem",lg:"1.5rem",xl:"1.75rem"},compact:{xs:"0.375rem",sm:"0.5rem",md:"0.625rem",lg:"0.875rem",xl:"1rem"}};export const gapClasses={xs:"gap-1",sm:"gap-1.5",md:"gap-2",lg:"gap-2.5",xl:"gap-3"};export const stackGapClasses={xs:"gap-1",sm:"gap-1.5",md:"gap-1.5",lg:"gap-2",xl:"gap-2"};export const sheetPaddingXClasses={default:{xs:"px-2.5",sm:"px-3.5",md:"px-5",lg:"px-6",xl:"px-7"},compact:{xs:"px-2",sm:"px-2.5",md:"px-3.5",lg:"px-4",xl:"px-5"}};export const sheetPaddingYClasses={default:{xs:"py-2.5",sm:"py-3.5",md:"py-5",lg:"py-6",xl:"py-7"},compact:{xs:"py-2",sm:"py-2.5",md:"py-3.5",lg:"py-4",xl:"py-5"}};export const sheetTitleClasses={xs:"text-[0.75rem]/[1rem]",sm:"text-[0.8125rem]/[1.125rem]",md:"text-[0.9375rem]/[1.25rem]",lg:"text-[1.0625rem]/[1.5rem]",xl:"text-[1.25rem]/[1.75rem]"};export const sheetBodyClasses={xs:"text-[0.6875rem]/[1rem]",sm:"text-[0.75rem]/[1.125rem]",md:"text-[0.8125rem]/[1.375rem]",lg:"text-[0.9375rem]/[1.5rem]",xl:"text-[1.0625rem]/[1.75rem]"};export const sheetSectionGapClasses={xs:"gap-1.5",sm:"gap-2",md:"gap-3",lg:"gap-3.5",xl:"gap-4"};export const sheetLineClasses="border-t [border-color:var(--plass-divider)]";export const sheetHeaderGapClasses={xs:"gap-0.5",sm:"gap-0.5",md:"gap-1",lg:"gap-1",xl:"gap-1.5"};export const glassClasses="[backdrop-filter:var(--plass-blur)] [-webkit-backdrop-filter:var(--plass-blur)]";export const transitionClasses=/* @__PURE__ */["[transition-property:background-color,background-image,border-color,box-shadow,color,filter,opacity]","[transition-duration:var(--plass-duration)]","[transition-timing-function:var(--plass-ease)]"].join(" ");export const focusRingClasses="focus-visible:[outline:2px_solid_var(--p-ring)] focus-visible:[outline-offset:0px]";export const focusWithinRingClasses="has-[:focus-visible]:[outline:2px_solid_var(--p-ring)] has-[:focus-visible]:[outline-offset:0px]";export const focusRingInsetClasses="focus-visible:[outline:2px_solid_var(--p-ring)] focus-visible:[outline-offset:-2px]";export const chipRemoveClasses=/* @__PURE__ */["relative ms-0.5 inline-flex shrink-0 items-center justify-center rounded-full","before:absolute before:inset-[calc(50%-12px)]","size-[1.15em] cursor-pointer opacity-70","[transition:opacity_var(--plass-duration)_var(--plass-ease)]","hover:opacity-100 focus-visible:opacity-100",focusRingClasses,"disabled:cursor-not-allowed"].join(" ");export const iconClasses="[&_svg]:pointer-events-none [&_svg]:size-[1.2em] [&_svg]:shrink-0";export const srOnlyClasses="absolute size-px overflow-hidden whitespace-nowrap [clip-path:inset(50%)]";export const srOnlyCopyClasses=`${srOnlyClasses} select-none`;export function controlSlots(s,e,o){const r="solid"===o;return{"--p-fill":`var(--plass-${s}-fill)`,"--p-on-solid":`var(--plass-${s}-on-solid)`,"--p-accent":`var(--plass-${s}-accent)`,"--p-tint":`var(--plass-${s}-tint)`,"--p-soft":`var(--plass-${s}-soft)`,"--p-soft-hover":`var(--plass-${s}-soft-hover)`,"--p-soft-press":`var(--plass-${s}-soft-press)`,"--p-line":`var(--plass-${s}-line)`,"--p-line-hover":`var(--plass-${s}-line-hover)`,"--p-ring":`var(--plass-${s}-ring)`,"--p-glow":r?"var(--plass-glow-on-fill)":`var(--plass-${s}-soft)`,"--p-flash":r?"var(--plass-flash-on-fill)":`var(--plass-${s}-soft-hover)`,"--p-elev":`var(--plass-shadow-${e})`,"--p-elev-hover":`var(--plass-shadow-${Math.min(e+1,4)})`,"--p-elev-press":`var(--plass-shadow-${Math.max(e-1,0)})`,"--p-lift":"0 6px 16px -4px var(--p-tint)","--p-lift-hover":"0 10px 24px -6px var(--p-tint)","--p-lift-press":"0 2px 6px -2px var(--p-tint)"}}export function surfaceSlots(s,e){return{"--p-accent":`var(--plass-${s}-accent)`,"--p-soft":`var(--plass-${s}-soft)`,"--p-soft-hover":`var(--plass-${s}-soft-hover)`,"--p-soft-press":`var(--plass-${s}-soft-press)`,"--p-line":`var(--plass-${s}-line)`,"--p-line-hover":`var(--plass-${s}-line-hover)`,"--p-ring":`var(--plass-${s}-ring)`,"--p-glow":`var(--plass-${s}-soft)`,"--p-flash":`var(--plass-${s}-soft-hover)`,"--p-elev":`var(--plass-shadow-${e})`,"--p-elev-hover":`var(--plass-shadow-${Math.min(e+1,4)})`,"--p-elev-press":`var(--plass-shadow-${Math.max(e-1,0)})`}}export const forcedEdgeClasses="forced-colors:border forced-colors:[border-color:ButtonText]";export const forcedFieldEdgeClasses="forced-colors:border forced-colors:[border-color:CanvasText]";export const forcedFillClasses="forced-colors:[background-color:Highlight] forced-colors:[border-color:Highlight] forced-colors:[color:HighlightText]";export const forcedCheckedClasses=/* @__PURE__ */["forced-colors:data-[checked]:[background-color:Highlight]","forced-colors:data-[checked]:[border-color:Highlight]","forced-colors:data-[checked]:[color:HighlightText]"].join(" ");export const forcedPressedClasses=/* @__PURE__ */["forced-colors:data-[pressed]:[background-color:Highlight]","forced-colors:data-[pressed]:[border-color:Highlight]","forced-colors:data-[pressed]:[color:HighlightText]"].join(" ");export const forcedCheckedTextClasses="forced-colors:data-[checked]:[color:HighlightText]";export const forcedHighlightedClasses=/* @__PURE__ */["forced-colors:data-[highlighted]:[background-color:Highlight]","forced-colors:data-[highlighted]:[color:HighlightText]","forced-colors:data-[highlighted]:**:[color:HighlightText]"].join(" ");export const forcedDisabledCheckedClasses=/* @__PURE__ */["forced-colors:border forced-colors:[border-color:GrayText]","forced-colors:data-[checked]:[background-color:GrayText]","forced-colors:data-[checked]:[color:Canvas]"].join(" ");export const disabledClasses={solid:/* @__PURE__ */["cursor-not-allowed text-(--p-on-solid) [background-image:var(--p-fill)]","opacity-50 saturate-[0.35] shadow-none","forced-colors:border forced-colors:[border-color:GrayText]"].join(" "),glass:/* @__PURE__ */[glassClasses,"cursor-not-allowed border text-(--plass-fg) bg-(--plass-glass)","[border-color:var(--plass-border)]","opacity-50 saturate-[0.35] shadow-none"].join(" "),ghost:"cursor-not-allowed bg-transparent text-(--p-accent) opacity-50 saturate-[0.35]"};export const readOnlyFilterClasses="saturate-[0.55]";export const sheetRestClasses={solid:/* @__PURE__ */[glassClasses,"text-(--plass-fg) bg-(--plass-glass-press)","[box-shadow:var(--p-elev),var(--plass-gloss-glass)]"].join(" "),glass:/* @__PURE__ */[glassClasses,"border text-(--plass-fg) bg-(--plass-glass)","[border-color:var(--plass-glass-line)]","[box-shadow:var(--p-elev),var(--plass-gloss-glass)]"].join(" "),ghost:"text-(--plass-fg) bg-transparent"};export const fieldRestClasses={solid:/* @__PURE__ */[glassClasses,"text-(--plass-fg) bg-(--plass-glass-press)","[box-shadow:var(--p-elev),var(--plass-well)]",forcedFieldEdgeClasses,"hover:bg-(--plass-glass-hover)","focus-within:bg-(--plass-glass-press)"].join(" "),glass:/* @__PURE__ */[glassClasses,"border text-(--plass-fg) bg-(--plass-glass-hover)","[border-color:var(--plass-border)]","[box-shadow:var(--p-elev),var(--plass-gloss-glass)]","hover:bg-(--plass-glass-press) hover:[border-color:var(--p-line)]","focus-within:bg-(--plass-glass-press) focus-within:[border-color:var(--p-line-hover)]"].join(" "),ghost:/* @__PURE__ */["text-(--plass-fg) bg-transparent","hover:bg-(--p-soft)","focus-within:bg-(--p-soft-hover)"].join(" ")};export const fieldReadOnlyClasses={solid:/* @__PURE__ */[glassClasses,"text-(--plass-fg) bg-(--plass-glass-press)",forcedFieldEdgeClasses,"[box-shadow:var(--plass-well)] saturate-[0.55]"].join(" "),glass:/* @__PURE__ */[glassClasses,"border text-(--plass-fg) bg-(--plass-glass-hover)","[border-color:var(--plass-border)]","[box-shadow:var(--plass-gloss-glass)] saturate-[0.55]"].join(" "),ghost:"text-(--plass-fg) bg-transparent saturate-[0.55]"};export function toLength(s){return"number"==typeof s?`${s}px`:s}export function hasContent(s){return null!=s&&!1!==s&&""!==s}export function cx(...s){return s.filter(Boolean).join(" ")}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Reading a node as the words it draws, and cutting those words the way a
3
+ * reader cuts them.
4
+ *
5
+ * Both halves exist because more than one component needs them and all of them
6
+ * have to arrive at the same answer as the Flutter build, which reads a widget
7
+ * with `plassTextOf` in `lib/src/internal/text.dart` and cuts with
8
+ * `String.characters`.
9
+ */
10
+ import * as React from 'react';
11
+ /**
12
+ * Everything in a node, flattened to its text.
13
+ *
14
+ * Strings and numbers are their own text, a list is its parts joined, and an
15
+ * element contributes the text of its `children` and nothing else — a walk in,
16
+ * not a render. What a component draws for itself is only decided when it
17
+ * renders and cannot be read here, so a `<PlIcon />` among the children adds
18
+ * nothing, which is exactly right for every caller: a picture of a thing is not
19
+ * its name.
20
+ *
21
+ * Three components need it, and all three need it for the same reason — a
22
+ * string where React would otherwise hand them a tree. `PlBreadcrumb` puts a
23
+ * step's `name` into structured data, `PlChip` hands a chip's words to the label
24
+ * pack so that a language can put a name where its own grammar puts it, and
25
+ * `PlAnimateTyping` types a string one grapheme at a time, because there is no
26
+ * honest way to reveal half of a `<strong>`.
27
+ */
28
+ export declare function textOf(node: React.ReactNode): string;
29
+ /**
30
+ * The text cut the way a reader would cut it.
31
+ *
32
+ * Not `[...text]`, and not `text.split('')`. A code point is not a character:
33
+ * `👩‍👩‍👧` is seven of them, a flag is two, and `한` typed on a Korean keyboard
34
+ * can be three. Cut by code point, each of those comes back as pieces that
35
+ * mean nothing on their own and draw as broken glyphs. `Intl.Segmenter` knows
36
+ * where the boundaries actually are; the spread is the fallback for a runtime
37
+ * that does not have it.
38
+ */
39
+ export declare function graphemesOf(text: string): string[];
@@ -0,0 +1 @@
1
+ import*as e from"react";export function textOf(t){return"string"==typeof t||"number"==typeof t?String(t):Array.isArray(t)?t.map(textOf).join(""):e.isValidElement(t)?textOf(t.props.children):""}let t;export function graphemesOf(e){const n=function segmenter(){return void 0===t&&(t="undefined"!=typeof Intl&&"Segmenter"in Intl?new Intl.Segmenter(void 0,{granularity:"grapheme"}):null),t}();return null===n?[...e]:[...n.segment(e)].map(e=>e.segment)}
@@ -0,0 +1,44 @@
1
+ import * as React from 'react';
2
+ /** Where a watermark sits on the picture. */
3
+ export type PlassWatermarkPlacement = 'top-start' | 'top-end' | 'bottom-start' | 'bottom-end' | 'tile';
4
+ /** A mark laid over a picture. A bare string is the text, in the usual corner. */
5
+ export interface PlassWatermarkOptions {
6
+ /** What it says. */
7
+ text: string;
8
+ /** One in a corner, or `'tile'` for the whole picture. @default 'bottom-end' */
9
+ placement?: PlassWatermarkPlacement;
10
+ /** How far through it the picture shows. @default 0.55 in a corner, 0.14 tiled */
11
+ opacity?: number;
12
+ /** The turn a tiled mark is set at, in degrees. @default -24 */
13
+ angle?: number;
14
+ /**
15
+ * The ink, as any CSS colour, a token or `currentColor` included. White is what
16
+ * reads on a photograph. @default 'white'
17
+ */
18
+ color?: string;
19
+ /** The type size, in pixels. @default 13 in a corner, 15 tiled */
20
+ fontSize?: number;
21
+ }
22
+ /** Normalised, so a bare string and a full object are one thing downstream. */
23
+ export declare function watermarkOptions(watermark: string | PlassWatermarkOptions): Required<PlassWatermarkOptions>;
24
+ /**
25
+ * A mark over a picture, in a corner or across the whole of it.
26
+ *
27
+ * It is `aria-hidden` and takes no pointer: a watermark is a claim about the
28
+ * file rather than something the page is telling a reader, and a screen reader
29
+ * announcing "Ada & Co" between the picture and its caption is reading out a
30
+ * stamp. The `alt` text is where a picture says what it is.
31
+ *
32
+ * The tiled layer is **rotated as one layer** rather than each copy being turned
33
+ * on its own, which is what keeps the repeat seamless — turning the tiles inside
34
+ * a straight grid leaves the grid's own lines showing through. It is drawn
35
+ * oversized and centred so the corners the turn opens up are still covered.
36
+ *
37
+ * That rotation is a `transform`, and the house rule it sits beside is about
38
+ * *controls*: a surface under a finger must not resample the label being pressed.
39
+ * Nothing here is pressed and the angle never changes, so it is the same
40
+ * allowance the chevrons in `PlGalleryViewer` are drawn with.
41
+ */
42
+ export declare function PlassWatermark({ watermark }: {
43
+ watermark: string | PlassWatermarkOptions;
44
+ }): React.JSX.Element | null;
@@ -0,0 +1 @@
1
+ "use client";import{jsx as t}from"react/jsx-runtime";export function watermarkOptions(t){const e="string"==typeof t?{text:t}:t,o=e.placement??"bottom-end",a="tile"===o;return{text:e.text,placement:o,opacity:e.opacity??(a?.14:.55),angle:e.angle??-24,color:e.color??"white",fontSize:e.fontSize??(a?15:13)}}const e="calc(max(100cqw, 100cqh) * 1.415)",o={"top-start":"top-2 start-2","top-end":"top-2 end-2","bottom-start":"bottom-2 start-2","bottom-end":"bottom-2 end-2"};export function PlassWatermark({watermark:a}){const{text:n,placement:r,opacity:s,angle:i,color:l,fontSize:c}=watermarkOptions(a);if(""===n)return null;if("tile"===r){const o=function tileUri(t,e){const o=Math.max(120,Math.round(t.length*e*.68)+48),a=Math.round(4.6*e),n=`<svg xmlns="http://www.w3.org/2000/svg" width="${o}" height="${a}"><text x="0" y="${Math.round(a/2)}" fill="white" font-family="system-ui, sans-serif" font-size="${e}" font-weight="600">${function escapeXml(t){return t.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&apos;")}(t)}</text></svg>`;return`url("data:image/svg+xml,${encodeURIComponent(n)}")`}(n,c);return t("span",{"aria-hidden":"true",className:"pointer-events-none absolute inset-0 overflow-hidden",style:{containerType:"size"},children:t("span",{className:"absolute block",style:{top:"50%",left:"50%",width:e,height:e,translate:"-50% -50%",opacity:s,transform:`rotate(${i}deg)`,backgroundColor:l,WebkitMaskImage:o,maskImage:o,WebkitMaskRepeat:"repeat",maskRepeat:"repeat"}})})}return t("span",{"aria-hidden":"true",className:`pointer-events-none absolute select-none font-semibold ${o[r]}`,style:{opacity:s,color:l,fontSize:c,textShadow:"0 1px 2px rgb(0 0 0 / 0.55)"},children:n})}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * The wheel over a strip that runs the other way, and what happens when the
3
+ * strip runs out of room.
4
+ *
5
+ * Two components have the same problem and it is not the one it looks like. A
6
+ * mouse has one wheel, it points down the page, and a strip that runs across
7
+ * the box has no use for that direction — so what the wheel does over a shelf
8
+ * of cards or a bar of tabs is left to the browser, which is to say it is one
9
+ * thing on one machine and another on the next. The pointer being on the strip
10
+ * is the reader saying which of the two things under it they meant to move, and
11
+ * this is what acts on that.
12
+ *
13
+ * The second half is what happens at the end of the strip. A nested scroller
14
+ * that runs out hands the rest of the gesture to the page, and the reader who
15
+ * was flicking a shelf along gets the whole page moving instead, without having
16
+ * asked for it and usually without having noticed which pixel it happened at.
17
+ * `overscroll` is the choice between the two answers, and neither of them is
18
+ * "sometimes": see `PlassOverscroll`.
19
+ *
20
+ * Only the axis the browser has no answer for. A trackpad's two fingers, a tilt
21
+ * wheel and Shift held down all produce a horizontal gesture, which scrolls a
22
+ * horizontal strip on its own — and chains on its own, which is what
23
+ * `overscroll-behavior-x` is for. Nothing here touches those.
24
+ */
25
+ import * as React from 'react';
26
+ import type { PlassOverscroll } from '../types.js';
27
+ export interface WheelScrollOptions {
28
+ /** Whether the wheel is read at all. A strip that runs down the page is not. */
29
+ enabled: boolean;
30
+ /** What happens once the strip has nowhere left to go. */
31
+ overscroll: PlassOverscroll;
32
+ }
33
+ /**
34
+ * Turns a vertical wheel over a horizontal scroller into travel along it.
35
+ *
36
+ * A native listener rather than `onWheel`, because React attaches its own wheel
37
+ * listener to the root passively, and `preventDefault` inside a passive
38
+ * listener does nothing but log.
39
+ */
40
+ export declare function useWheelScroll(ref: React.RefObject<HTMLElement | null>, { enabled, overscroll }: WheelScrollOptions): void;
41
+ /**
42
+ * The class that keeps a scroller's *own* axis to itself.
43
+ *
44
+ * The other half of `overscroll`, and it is CSS rather than JavaScript because
45
+ * this axis is one the browser already scrolls: a two-finger swipe along the
46
+ * shelf, and on a Mac the swipe past the end of it that goes back a page.
47
+ *
48
+ * One axis, never both. A horizontal strip that also contained the vertical
49
+ * axis would be a box a finger cannot scroll the page from, which is most of
50
+ * the screen on a phone.
51
+ */
52
+ export declare function overscrollClasses(overscroll: PlassOverscroll, horizontal: boolean): string;
@@ -0,0 +1 @@
1
+ "use client";import*as e from"react";export function useWheelScroll(t,{enabled:r,overscroll:l}){e.useEffect(()=>{const e=t.current;if(!e||!r)return;let n=Number.NEGATIVE_INFINITY;const onWheel=t=>{if(Math.abs(t.deltaY)<=Math.abs(t.deltaX))return;const r=e.scrollWidth-e.clientWidth;if(r<=1)return;const o=t.deltaMode===t.DOM_DELTA_LINE?16*t.deltaY:t.deltaMode===t.DOM_DELTA_PAGE?t.deltaY*e.clientWidth:t.deltaY,a=Math.abs(e.scrollLeft);if(!(o>0?r-a>1:a>1))return void(("contain"===l||t.timeStamp-n<250)&&t.preventDefault());const i="rtl"===getComputedStyle(e).direction?-1:1;n=t.timeStamp,t.preventDefault(),e.scrollBy({left:o*i,behavior:"instant"})};return e.addEventListener("wheel",onWheel,{passive:!1}),()=>e.removeEventListener("wheel",onWheel)},[r,l,t])}export function overscrollClasses(e,t){return"contain"!==e?"":t?"overscroll-x-contain":"overscroll-y-contain"}
@@ -1 +1 @@
1
- import{jsx as e,jsxs as i}from"react/jsx-runtime";import{cx as t}from"./styles.js";const a={macos:{bar:38,radius:10,radiusBottom:10,padX:12,padEnd:12,gap:8,title:13,glyph:7,weight:500,frame:1,band:{side:0,bottom:0},control:{width:12,height:12},titleAlign:"center",controlsSide:"start",shape:"dot",rule:!1,stroke:1.4,boxRadius:0,tint:[6,3],accentBorder:!1,paint:null,image:null,shadow:null,glass:!1},macosx:{bar:26,radius:8,radiusBottom:0,padX:10,padEnd:10,gap:8,title:12,glyph:7,weight:700,frame:1,band:{side:0,bottom:0},control:{width:13,height:13},titleAlign:"center",controlsSide:"start",shape:"gloss-dot",rule:!0,stroke:1.5,boxRadius:0,tint:[0,0],accentBorder:!1,paint:{fill:"#e4e4e4",ink:"#333333",dark:!1},image:"repeating-linear-gradient(180deg, rgb(255 255 255 / 0.55) 0 1px, rgb(0 0 0 / 0.035) 1px 2px), linear-gradient(180deg, rgb(255 255 255 / 0.8), rgb(0 0 0 / 0.07))",shadow:"0 1px 0 rgb(255 255 255 / 0.85)",glass:!1},windows11:{bar:32,radius:8,radiusBottom:8,padX:12,padEnd:0,gap:0,title:12,glyph:10,weight:400,frame:1,band:{side:0,bottom:0},control:{width:46,height:32},titleAlign:"start",controlsSide:"end",shape:"square",rule:!1,tint:[3,1],stroke:1,boxRadius:1.6,accentBorder:!1,paint:null,image:null,shadow:null,glass:!1},windows10:{bar:30,radius:0,radiusBottom:0,padX:10,padEnd:0,gap:0,title:12,glyph:10,weight:400,frame:1,band:{side:0,bottom:0},control:{width:45,height:30},titleAlign:"start",controlsSide:"end",shape:"square",rule:!0,tint:[0,0],stroke:.9,boxRadius:0,accentBorder:!0,paint:null,image:null,shadow:null,glass:!1},windows8:{bar:32,radius:0,radiusBottom:0,padX:10,padEnd:0,gap:0,title:12,glyph:11,weight:400,frame:2,band:{side:0,bottom:0},control:{width:45,height:32},titleAlign:"start",controlsSide:"end",shape:"square",rule:!1,tint:[0,0],stroke:1,boxRadius:0,accentBorder:!0,paint:null,image:null,shadow:null,glass:!1},windows7:{bar:30,radius:7,radiusBottom:0,padX:10,padEnd:3,gap:2,title:12,glyph:10,weight:400,frame:1,band:{side:7,bottom:7},control:{width:29,height:20},closeWidth:45,titleAlign:"start",controlsSide:"end",shape:"aero",rule:!1,tint:[0,0],stroke:1.1,boxRadius:0,accentBorder:!1,paint:{fill:"rgb(198 218 242 / 0.45)",ink:"#12314f",dark:!1},image:"linear-gradient(180deg, rgb(255 255 255 / 0.62), rgb(255 255 255 / 0.1) 46%, rgb(255 255 255 / 0.34) 88%, rgb(255 255 255 / 0.5))",shadow:"0 0 6px rgb(255 255 255 / 0.95), 0 0 3px rgb(255 255 255 / 0.95)",glass:!0},windowsxp:{bar:30,radius:8,radiusBottom:0,padX:6,padEnd:4,gap:2,title:13,glyph:9,weight:700,frame:1,band:{side:4,bottom:4},control:{width:21,height:21},closeWidth:26,titleAlign:"start",controlsSide:"end",shape:"plate",rule:!1,tint:[0,0],stroke:1.8,boxRadius:3,accentBorder:!1,paint:{fill:"#1f66d6",ink:"#ffffff",dark:!0},image:"linear-gradient(180deg, rgb(255 255 255 / 0.55), rgb(255 255 255 / 0.26) 7%, rgb(0 0 0 / 0.11) 42%, rgb(0 0 0 / 0.05) 56%, rgb(255 255 255 / 0.22) 76%, rgb(255 255 255 / 0.34) 88%, rgb(0 0 0 / 0.16) 96%, rgb(0 0 0 / 0.34))",shadow:"0 1px 1px rgb(0 0 0 / 0.45)",glass:!1},linux:{bar:44,radius:12,radiusBottom:12,padX:10,padEnd:10,gap:6,title:14,glyph:10,weight:600,frame:1,band:{side:0,bottom:0},control:{width:24,height:24},titleAlign:"center",controlsSide:"end",shape:"circle",rule:!1,stroke:1.2,boxRadius:0,tint:[11,5],accentBorder:!1,paint:null,image:null,shadow:null,glass:!1}},r={xs:.8,sm:.9,md:1,lg:1.15,xl:1.3};export function windowMetrics(e,i){const t=a[e],o=r[i],round=e=>Math.round(e*o),n={width:round(t.control.width),height:round(t.control.height)},s=round(t.gap),l=void 0===t.closeWidth?n.width:round(t.closeWidth);return{bar:round(t.bar),radius:t.radius,radiusBottom:t.radiusBottom,frame:t.frame,band:{side:round(t.band.side),bottom:round(t.band.bottom)},padX:round(t.padX),padEnd:round(t.padEnd),gap:s,title:round(t.title),glyph:round(t.glyph),weight:t.weight,control:n,controlsWidth:e=>e<=0?0:l+(e-1)*n.width+(e-1)*s,closeWidth:l}}export function windowChrome(e){return a[e]}const o={macos:["close","minimize","maximize"],macosx:["close","minimize","maximize"],windows11:["minimize","maximize","close"],windows10:["minimize","maximize","close"],windows8:["minimize","maximize","close"],windows7:["minimize","maximize","close"],windowsxp:["minimize","maximize","close"],linux:["minimize","maximize","close"]};export function orderControls(e,i){return o[e].filter(e=>i.includes(e))}function veil(e,i){const t=Math.round(100*(1-i));return t>=100?e:`color-mix(in oklab, ${e} ${t}%, transparent)`}export function windowSlots(e){const{os:i,color:t,accent:r,transparency:o,active:n,elevation:s}=e,l=a[i],d=Math.min(Math.max(o,0),1),p="var(--plass-surface)",c=l.tint[n?0:1],g=0===c?p:`color-mix(in oklab, ${p} ${100-c}%, var(--plass-fg))`,h=r&&n,m=l.paint,u=m?n?m.fill:`color-mix(in oklab, ${m.fill} 45%, #c6c9ce)`:null,b=h?`var(--plass-${t}-solid)`:u??g,w=h?`var(--plass-${t}-on-solid)`:m?n?m.ink:`color-mix(in oklab, ${m.ink} 60%, transparent)`:n?"var(--plass-fg)":"var(--plass-muted-fg)",x=l.band.side>0,f=x?veil(h?`var(--plass-${t}-solid)`:u??g,d):"transparent",v=x?`color-mix(in oklab, ${h?`var(--plass-${t}-solid)`:u??"var(--plass-border)"} 72%, black)`:h&&l.accentBorder?`var(--plass-${t}-solid)`:n?"var(--plass-border)":"color-mix(in oklab, var(--plass-border) 55%, transparent)",k=h||(m?.dark??!1);return{"--p-window-bar":veil(b,d),"--p-window-bar-fg":w,"--p-window-bar-image":l.image??"none","--p-window-bar-shadow":l.shadow??"none","--p-window-body":veil(p,d),"--p-window-line":v,"--p-window-band":f,"--p-window-hover":k?"rgb(255 255 255 / 0.18)":"color-mix(in oklab, var(--plass-fg) 9%, transparent)","--p-window-press":k?"rgb(255 255 255 / 0.28)":"color-mix(in oklab, var(--plass-fg) 16%, transparent)","--p-window-shadow":`var(--plass-shadow-${n?s:Math.max(s-1,0)})`,"--p-accent":`var(--plass-${t}-accent)`,"--p-ring":`var(--plass-${t}-ring)`}}function Glyph({size:i,stroke:t,round:a,children:r}){return e("svg",{viewBox:"0 0 10 10",width:i,height:i,fill:"none",stroke:"currentColor",strokeWidth:t,strokeLinecap:a?"round":"square",strokeLinejoin:a?"round":"miter","aria-hidden":"true",children:r})}function controlGlyph(t,a,r,o){const n=r.stroke,s=r.boxRadius>0||"square"!==r.shape,l=r.boxRadius;return"minimize"===t?e(Glyph,{size:o,stroke:n,round:s,children:e("path",{d:"plate"===r.shape?"M2 7.5h6":"M1.5 5h7"})}):"close"===t?e(Glyph,{size:o,stroke:n,round:s,children:e("path",{d:"m1.6 1.6 6.8 6.8M8.4 1.6 1.6 8.4"})}):a?i(Glyph,{size:o,stroke:n,round:s,children:[e("rect",{x:"1.4",y:"3.4",width:"5.2",height:"5.2",rx:l}),e("path",{d:"M3.6 3.4v-2h5v5h-2"})]}):e(Glyph,{size:o,stroke:n,round:s,children:e("rect",{x:"1.5",y:"1.5",width:"7",height:"7",rx:l})})}const n={close:"#ff5f57",minimize:"#febc2e",maximize:"#28c840"},s={close:"#cf4b36",minimize:"#4b85d4",maximize:"#4b85d4"},l={macos:null,macosx:null,windows11:"#c42b1c",windows10:"#e81123",windows8:"#e81123",windows7:"#e04a45",windowsxp:null,linux:null};export function PlWindowControls({os:i,metrics:r,controls:o,maximized:d,active:p,labels:c,onCommand:g}){const h=a[i],m=orderControls(i,o);if(0===m.length)return null;const u="dot"===h.shape||"gloss-dot"===h.shape,b="circle"===h.shape,w="plate"===h.shape,x="aero"===h.shape;return e("div",{className:t("group/controls flex shrink-0 items-center",x?"self-start":"self-stretch"),style:{gap:r.gap},onPointerDown:e=>e.stopPropagation(),onDoubleClick:e=>e.stopPropagation(),children:m.map(a=>{const o="maximize"===a&&d?c.restore:c[a],m="close"===a?l[i]:null,{face:f,ink:v,image:k,plate:y}=function controlFace(e,i,t){switch(e.shape){case"dot":case"gloss-dot":return{face:t?n[i]:"color-mix(in oklab, var(--plass-fg) 22%, transparent)",ink:"rgb(0 0 0 / 0.55)",image:"gloss-dot"===e.shape?"radial-gradient(circle at 50% 26%, rgb(255 255 255 / 0.8), rgb(255 255 255 / 0) 62%)":void 0,plate:"gloss-dot"===e.shape?"inset 0 0 0 1px rgb(0 0 0 / 0.22), inset 0 -1px 1px rgb(0 0 0 / 0.15)":void 0};case"plate":return{face:t?s[i]:`color-mix(in oklab, ${s[i]} 45%, #c6c9ce)`,ink:"#ffffff",image:"linear-gradient(180deg, rgb(255 255 255 / 0.5), rgb(255 255 255 / 0.05) 55%, rgb(0 0 0 / 0.14))",plate:"inset 0 0 0 1px rgb(255 255 255 / 0.4)"};case"aero":return{face:"rgb(255 255 255 / 0.3)",image:"linear-gradient(180deg, rgb(255 255 255 / 0.6), rgb(255 255 255 / 0.08) 52%, rgb(255 255 255 / 0.3))",plate:"inset 0 0 0 1px rgb(255 255 255 / 0.55)"};default:return{}}}(h,a,p);return e("button",{type:"button","aria-label":o,title:o,className:t("relative flex shrink-0 cursor-pointer items-center justify-center","[transition:background-color_var(--plass-duration)_var(--plass-ease),color_var(--plass-duration)_var(--plass-ease),filter_var(--plass-duration)_var(--plass-ease)]","focus-visible:[outline:2px_solid_var(--p-ring)] focus-visible:[outline-offset:-2px]",u||b?"rounded-full":"",b?"bg-(--p-window-hover)":"",f?"bg-(--p-window-face)":"",m?"hover:bg-(--p-window-danger) hover:text-white active:bg-(--p-window-danger)":u?"":w?"hover:brightness-110 active:brightness-95":b?"hover:bg-(--p-window-press) active:bg-(--p-window-press)":x?"hover:brightness-110 active:brightness-95":"hover:bg-(--p-window-hover) active:bg-(--p-window-press)"),style:{width:u?r.control.height:"close"===a?r.closeWidth:r.control.width,height:r.control.height,borderRadius:w?h.boxRadius+1:x?"0 0 3px 3px":void 0,backgroundImage:k,boxShadow:y,color:v,...f?{"--p-window-face":f}:{},...m?{"--p-window-danger":m}:{}},onClick:()=>g(a),children:e("span",{className:t("flex items-center justify-center",u?"opacity-0 [transition:opacity_var(--plass-duration)_var(--plass-ease)] group-hover/controls:opacity-100":""),children:controlGlyph(a,d,h,r.glyph)})},a)})})}
1
+ import{jsx as e,jsxs as i}from"react/jsx-runtime";import{cx as t}from"./styles.js";const o={macos:{bar:38,radius:10,radiusBottom:10,padX:12,padEnd:12,gap:8,title:13,glyph:7,weight:500,frame:1,band:{side:0,bottom:0},control:{width:12,height:12},titleAlign:"center",controlsSide:"start",shape:"dot",rule:!1,stroke:1.4,boxRadius:0,tint:[6,3],accentBorder:!1,paint:null,image:null,shadow:null,glass:!1},macosx:{bar:26,radius:8,radiusBottom:0,padX:10,padEnd:10,gap:8,title:12,glyph:7,weight:700,frame:1,band:{side:0,bottom:0},control:{width:13,height:13},titleAlign:"center",controlsSide:"start",shape:"gloss-dot",rule:!0,stroke:1.5,boxRadius:0,tint:[0,0],accentBorder:!1,paint:{fill:"#e4e4e4",ink:"#333333",dark:!1},image:"repeating-linear-gradient(180deg, rgb(255 255 255 / 0.55) 0 1px, rgb(0 0 0 / 0.035) 1px 2px), linear-gradient(180deg, rgb(255 255 255 / 0.8), rgb(0 0 0 / 0.07))",shadow:"0 1px 0 rgb(255 255 255 / 0.85)",glass:!1},windows11:{bar:32,radius:8,radiusBottom:8,padX:12,padEnd:0,gap:0,title:12,glyph:10,weight:400,frame:1,band:{side:0,bottom:0},control:{width:46,height:32},titleAlign:"start",controlsSide:"end",shape:"square",rule:!1,tint:[3,1],stroke:1,boxRadius:1.6,accentBorder:!1,paint:null,image:null,shadow:null,glass:!1},windows10:{bar:30,radius:0,radiusBottom:0,padX:10,padEnd:0,gap:0,title:12,glyph:10,weight:400,frame:1,band:{side:0,bottom:0},control:{width:45,height:30},titleAlign:"start",controlsSide:"end",shape:"square",rule:!0,tint:[0,0],stroke:.9,boxRadius:0,accentBorder:!0,paint:null,image:null,shadow:null,glass:!1},windows8:{bar:32,radius:0,radiusBottom:0,padX:10,padEnd:0,gap:0,title:12,glyph:11,weight:400,frame:2,band:{side:0,bottom:0},control:{width:45,height:32},titleAlign:"start",controlsSide:"end",shape:"square",rule:!1,tint:[0,0],stroke:1,boxRadius:0,accentBorder:!0,paint:null,image:null,shadow:null,glass:!1},windows7:{bar:30,radius:7,radiusBottom:0,padX:10,padEnd:3,gap:2,title:12,glyph:10,weight:400,frame:1,band:{side:7,bottom:7},control:{width:29,height:20},closeWidth:45,titleAlign:"start",controlsSide:"end",shape:"aero",rule:!1,tint:[0,0],stroke:1.1,boxRadius:0,accentBorder:!1,paint:{fill:"rgb(198 218 242 / 0.45)",ink:"#12314f",dark:!1},image:"linear-gradient(180deg, rgb(255 255 255 / 0.62), rgb(255 255 255 / 0.1) 46%, rgb(255 255 255 / 0.34) 88%, rgb(255 255 255 / 0.5))",shadow:"0 0 6px rgb(255 255 255 / 0.95), 0 0 3px rgb(255 255 255 / 0.95)",glass:!0},windowsxp:{bar:30,radius:8,radiusBottom:0,padX:6,padEnd:4,gap:2,title:13,glyph:9,weight:700,frame:1,band:{side:4,bottom:4},control:{width:21,height:21},closeWidth:26,titleAlign:"start",controlsSide:"end",shape:"plate",rule:!1,tint:[0,0],stroke:1.8,boxRadius:3,accentBorder:!1,paint:{fill:"#1f66d6",ink:"#ffffff",dark:!0},image:"linear-gradient(180deg, rgb(255 255 255 / 0.55), rgb(255 255 255 / 0.26) 7%, rgb(0 0 0 / 0.11) 42%, rgb(0 0 0 / 0.05) 56%, rgb(255 255 255 / 0.22) 76%, rgb(255 255 255 / 0.34) 88%, rgb(0 0 0 / 0.16) 96%, rgb(0 0 0 / 0.34))",shadow:"0 1px 1px rgb(0 0 0 / 0.45)",glass:!1},linux:{bar:44,radius:12,radiusBottom:12,padX:10,padEnd:10,gap:6,title:14,glyph:10,weight:600,frame:1,band:{side:0,bottom:0},control:{width:24,height:24},titleAlign:"center",controlsSide:"end",shape:"circle",rule:!1,stroke:1.2,boxRadius:0,tint:[11,5],accentBorder:!1,paint:null,image:null,shadow:null,glass:!1}},r={xs:.8,sm:.9,md:1,lg:1.15,xl:1.3};export function windowMetrics(e,i){const t=o[e],a=r[i],round=e=>Math.round(e*a),n={width:round(t.control.width),height:round(t.control.height)},s=round(t.gap),l=void 0===t.closeWidth?n.width:round(t.closeWidth);return{bar:round(t.bar),radius:t.radius,radiusBottom:t.radiusBottom,frame:t.frame,band:{side:round(t.band.side),bottom:round(t.band.bottom)},padX:round(t.padX),padEnd:round(t.padEnd),gap:s,title:round(t.title),glyph:round(t.glyph),weight:t.weight,control:n,controlsWidth:e=>e<=0?0:l+(e-1)*n.width+(e-1)*s,closeWidth:l}}export function windowChrome(e){return o[e]}const a={macos:["close","minimize","maximize"],macosx:["close","minimize","maximize"],windows11:["minimize","maximize","close"],windows10:["minimize","maximize","close"],windows8:["minimize","maximize","close"],windows7:["minimize","maximize","close"],windowsxp:["minimize","maximize","close"],linux:["minimize","maximize","close"]};export function orderControls(e,i){return a[e].filter(e=>i.includes(e))}function veil(e,i){const t=Math.round(100*(1-i));return t>=100?e:`color-mix(in oklab, ${e} ${t}%, transparent)`}export function windowSlots(e){const{os:i,color:t,accent:r,transparency:a,active:n,elevation:s}=e,l=o[i],d=Math.min(Math.max(a,0),1),p="var(--plass-surface)",c=l.tint[n?0:1],g=0===c?p:`color-mix(in oklab, ${p} ${100-c}%, var(--plass-fg))`,h=r&&n,u=l.paint,m=u?n?u.fill:`color-mix(in oklab, ${u.fill} 45%, #c6c9ce)`:null,b=h?`var(--plass-${t}-solid)`:m??g,w=h?`var(--plass-${t}-on-solid)`:u?n?u.ink:`color-mix(in oklab, ${u.ink} 60%, transparent)`:n?"var(--plass-fg)":"var(--plass-muted-fg)",x=l.band.side>0,f=x?veil(h?`var(--plass-${t}-solid)`:m??g,d):"transparent",v=x?`color-mix(in oklab, ${h?`var(--plass-${t}-solid)`:m??"var(--plass-border)"} 72%, black)`:h&&l.accentBorder?`var(--plass-${t}-solid)`:n?"var(--plass-border)":"color-mix(in oklab, var(--plass-border) 55%, transparent)",k=h||(u?.dark??!1);return{"--p-window-bar":veil(b,d),"--p-window-bar-fg":w,"--p-window-bar-image":l.image??"none","--p-window-bar-shadow":l.shadow??"none","--p-window-body":veil(p,d),"--p-window-line":v,"--p-window-band":f,"--p-window-hover":k?"rgb(255 255 255 / 0.18)":"color-mix(in oklab, var(--plass-fg) 9%, transparent)","--p-window-press":k?"rgb(255 255 255 / 0.28)":"color-mix(in oklab, var(--plass-fg) 16%, transparent)","--p-window-shadow":`var(--plass-shadow-${n?s:Math.max(s-1,0)})`,"--p-accent":`var(--plass-${t}-accent)`,"--p-ring":`var(--plass-${t}-ring)`}}function Glyph({size:i,stroke:t,round:o,children:r}){return e("svg",{viewBox:"0 0 10 10",width:i,height:i,fill:"none",stroke:"currentColor",strokeWidth:t,strokeLinecap:o?"round":"square",strokeLinejoin:o?"round":"miter","aria-hidden":"true",children:r})}function controlGlyph(t,o,r,a){const n=r.stroke,s=r.boxRadius>0||"square"!==r.shape,l=r.boxRadius;return"minimize"===t?e(Glyph,{size:a,stroke:n,round:s,children:e("path",{d:"plate"===r.shape?"M2 7.5h6":"M1.5 5h7"})}):"close"===t?e(Glyph,{size:a,stroke:n,round:s,children:e("path",{d:"m1.6 1.6 6.8 6.8M8.4 1.6 1.6 8.4"})}):o?i(Glyph,{size:a,stroke:n,round:s,children:[e("rect",{x:"1.4",y:"3.4",width:"5.2",height:"5.2",rx:l}),e("path",{d:"M3.6 3.4v-2h5v5h-2"})]}):e(Glyph,{size:a,stroke:n,round:s,children:e("rect",{x:"1.5",y:"1.5",width:"7",height:"7",rx:l})})}const n={close:"#ff5f57",minimize:"#febc2e",maximize:"#28c840"},s={close:"#cf4b36",minimize:"#4b85d4",maximize:"#4b85d4"},l={macos:null,macosx:null,windows11:"#c42b1c",windows10:"#e81123",windows8:"#e81123",windows7:"#e04a45",windowsxp:null,linux:null};export function PlWindowControls({os:i,metrics:r,controls:a,maximized:d,active:p,labels:c,onCommand:g}){const h=o[i],u=orderControls(i,a);if(0===u.length)return null;const m="dot"===h.shape||"gloss-dot"===h.shape,b="circle"===h.shape,w="plate"===h.shape,x="aero"===h.shape;return e("div",{className:t("group/controls flex shrink-0 items-center",x?"self-start":"self-stretch"),style:{gap:r.gap},onPointerDown:e=>e.stopPropagation(),onDoubleClick:e=>e.stopPropagation(),children:u.map(o=>{const a="maximize"===o&&d?c.restore:c[o],u="close"===o?l[i]:null,{face:f,ink:v,image:k,plate:y}=function controlFace(e,i,t){switch(e.shape){case"dot":case"gloss-dot":return{face:t?n[i]:"color-mix(in oklab, var(--plass-fg) 22%, transparent)",ink:"rgb(0 0 0 / 0.55)",image:"gloss-dot"===e.shape?"radial-gradient(circle at 50% 26%, rgb(255 255 255 / 0.8), rgb(255 255 255 / 0) 62%)":void 0,plate:"gloss-dot"===e.shape?"inset 0 0 0 1px rgb(0 0 0 / 0.22), inset 0 -1px 1px rgb(0 0 0 / 0.15)":void 0};case"plate":return{face:t?s[i]:`color-mix(in oklab, ${s[i]} 45%, #c6c9ce)`,ink:"#ffffff",image:"linear-gradient(180deg, rgb(255 255 255 / 0.5), rgb(255 255 255 / 0.05) 55%, rgb(0 0 0 / 0.14))",plate:"inset 0 0 0 1px rgb(255 255 255 / 0.4)"};case"aero":return{face:"rgb(255 255 255 / 0.3)",image:"linear-gradient(180deg, rgb(255 255 255 / 0.6), rgb(255 255 255 / 0.08) 52%, rgb(255 255 255 / 0.3))",plate:"inset 0 0 0 1px rgb(255 255 255 / 0.55)"};default:return{}}}(h,o,p);return e("button",{type:"button","aria-label":a,title:a,className:t("group/control relative flex shrink-0 cursor-pointer items-center justify-center","[transition:background-color_var(--plass-duration)_var(--plass-ease),color_var(--plass-duration)_var(--plass-ease),filter_var(--plass-duration)_var(--plass-ease)]","focus-visible:[outline:2px_solid_var(--p-ring)] focus-visible:[outline-offset:-2px]",m||b?"rounded-full":"",b?"bg-(--p-window-hover)":"",f?"bg-(--p-window-face)":"",u?"hover:bg-(--p-window-danger) hover:text-white active:bg-(--p-window-danger)":m?"":w?"hover:brightness-110 active:brightness-95":b?"hover:bg-(--p-window-press) active:bg-(--p-window-press)":x?"hover:brightness-110 active:brightness-95":"hover:bg-(--p-window-hover) active:bg-(--p-window-press)"),style:{width:m?r.control.height:"close"===o?r.closeWidth:r.control.width,height:r.control.height,borderRadius:w?h.boxRadius+1:x?"0 0 3px 3px":void 0,backgroundImage:k,boxShadow:y,color:v,...f?{"--p-window-face":f}:{},...u?{"--p-window-danger":u}:{}},onClick:()=>g(o),children:e("span",{className:t("flex items-center justify-center",m?"opacity-0 [transition:opacity_var(--plass-duration)_var(--plass-ease)] group-hover/controls:opacity-100 group-focus-visible/control:opacity-100":""),children:controlGlyph(o,d,h,r.glyph)})},o)})})}
@@ -1 +1 @@
1
- export const de={close:"Schließen",cancel:"Abbrechen",confirm:"Bestätigen",clear:"Leeren",done:"Fertig",skip:"Überspringen",search:"Suchen",selectAll:"Alle auswählen",selectRow:"Zeile auswählen",remove:"Entfernen",dismiss:"Ausblenden",open:"Öffnen",previous:"Zurück",next:"Weiter",reveal:"Anzeigen",hide:"Verbergen",increase:"Erhöhen",decrease:"Verringern",preview:"Vorschau",empty:"Nichts vorhanden",breadcrumb:"Navigationspfad",breadcrumbExpand:"Ausgeblendete Schritte anzeigen",carousel:"Karussell",carouselPrevious:"Vorheriges Bild",carouselNext:"Nächstes Bild",commandPalette:"Befehlspalette",commandPalettePlaceholder:"Befehle durchsuchen",gallery:"Galerie",chart:"Diagramm",minimize:"Minimieren",maximize:"Maximieren",restore:"Wiederherstellen",resizeWindow:"Fenstergröße ändern",overlay:"Overlay",pagination:"Seitennavigation",paginationPrevious:"Vorherige Seite",paginationNext:"Nächste Seite",paginationFirst:"Erste Seite",paginationLast:"Letzte Seite",rating:"Bewertung",sidebar:"Seitenleiste",sidebarClose:"Seitenleiste schließen",sidebarResize:"Breite der Seitenleiste ändern",skipToContent:"Zum Inhalt springen",backToTop:"Nach oben",onThisPage:"Auf dieser Seite",typing:"Schreibt …",newTab:"(wird in einem neuen Tab geöffnet)",transferAvailable:"Verfügbar",transferSelected:"Ausgewählt",transferToSelected:"Zu den ausgewählten verschieben",transferToAvailable:"Zu den verfügbaren verschieben",copy:"Kopieren",copied:"Kopiert",copyFailed:"Kopieren nicht möglich",raw:"Unformatiert",code:"Code",previousMonth:"Vorheriger Monat",nextMonth:"Nächster Monat",previousYear:"Vorheriges Jahr",nextYear:"Nächstes Jahr",previousYears:"Vorherige Jahre",nextYears:"Nächste Jahre",chooseMonth:"Monat wählen",chooseYear:"Jahr wählen",today:"Heute",thisMonth:"Dieser Monat",thisYear:"Dieses Jahr",now:"Jetzt",hour:"Stunde",minute:"Minute",second:"Sekunde",meridiem:"AM/PM",start:"Beginn",end:"Ende"};
1
+ export const de={close:"Schließen",cancel:"Abbrechen",confirm:"Bestätigen",acknowledge:"OK",clear:"Leeren",done:"Fertig",skip:"Überspringen",search:"Suchen",selectAll:"Alle auswählen",selectRow:"Zeile auswählen",remove:"Entfernen",dismiss:"Ausblenden",open:"Öffnen",previous:"Zurück",next:"Weiter",reveal:"Anzeigen",hide:"Verbergen",increase:"Erhöhen",decrease:"Verringern",preview:"Vorschau",empty:"Nichts vorhanden",optional:"Optional",breadcrumb:"Navigationspfad",breadcrumbExpand:"Ausgeblendete Schritte anzeigen",carousel:"Karussell",carouselPrevious:"Vorheriges Bild",carouselNext:"Nächstes Bild",slide:"Bild",commandPalette:"Befehlspalette",commandPalettePlaceholder:"Befehle durchsuchen",gallery:"Galerie",chart:"Diagramm",minimize:"Minimieren",maximize:"Maximieren",restore:"Wiederherstellen",resizeWindow:"Fenstergröße ändern",overlay:"Overlay",notifications:"Benachrichtigungen",pagination:"Seitennavigation",paginationPrevious:"Vorherige Seite",paginationNext:"Nächste Seite",paginationFirst:"Erste Seite",paginationLast:"Letzte Seite",rating:"Bewertung",sidebar:"Seitenleiste",sidebarOpen:"Seitenleiste öffnen",sidebarClose:"Seitenleiste schließen",sidebarResize:"Breite der Seitenleiste ändern",skipToContent:"Zum Inhalt springen",backToTop:"Nach oben",onThisPage:"Auf dieser Seite",typing:"Schreibt …",messageSending:"Wird gesendet",messageSent:"Gesendet",messageDelivered:"Zugestellt",messageRead:"Gelesen",messageFailed:"Nicht zugestellt",spoilerWarning:"Kann Spoiler enthalten",filePickerTitle:"Dateien hier ablegen oder zum Durchsuchen klicken",newTab:"(wird in einem neuen Tab geöffnet)",transferAvailable:"Verfügbar",transferSelected:"Ausgewählt",transferToSelected:"Zu den ausgewählten verschieben",transferToAvailable:"Zu den verfügbaren verschieben",copy:"Kopieren",copied:"Kopiert",copyFailed:"Kopieren nicht möglich",raw:"Unformatiert",code:"Code",previousMonth:"Vorheriger Monat",nextMonth:"Nächster Monat",previousYear:"Vorheriges Jahr",nextYear:"Nächstes Jahr",previousYears:"Vorherige Jahre",nextYears:"Nächste Jahre",chooseMonth:"Monat wählen",chooseYear:"Jahr wählen",today:"Heute",thisMonth:"Dieser Monat",thisYear:"Dieses Jahr",now:"Jetzt",hour:"Stunde",minute:"Minute",second:"Sekunde",meridiem:"AM/PM",start:"Beginn",end:"Ende",paginationPage:e=>`Seite ${e}`,paginationStatus:(e,n)=>`Seite ${e} von ${n}`,ratingValue:(e,n)=>`${e.toLocaleString("de")} von ${n}`,ratingNone:"Keine Bewertung",carouselSlide:(e,n)=>`Bild ${e} von ${n}`,galleryItem:(e,n)=>`${e} von ${n}`,removeItem:e=>`${e} entfernen`,addCustom:e=>`„${e}“ hinzufügen`,otpSlot:(e,n)=>`Zeichen ${e} von ${n}`,transferMoved:(e,n)=>`${e} ${1===e?"Eintrag":"Einträge"} nach „${n}“ verschoben`,filesRejectedType:e=>`${e} ${1===e?"Datei hat":"Dateien haben"} keinen zulässigen Typ`,filesRejectedSize:e=>`${e} ${1===e?"Datei ist":"Dateien sind"} zu groß`,filesRejectedCount:e=>`Für ${e} ${1===e?"Datei":"Dateien"} war kein Platz mehr`};
@@ -1 +1 @@
1
- export const es={close:"Cerrar",cancel:"Cancelar",confirm:"Confirmar",clear:"Borrar",done:"Hecho",skip:"Omitir",search:"Buscar",selectAll:"Seleccionar todo",selectRow:"Seleccionar fila",remove:"Quitar",dismiss:"Descartar",open:"Abrir",previous:"Anterior",next:"Siguiente",reveal:"Mostrar",hide:"Ocultar",increase:"Aumentar",decrease:"Disminuir",preview:"Vista previa",empty:"No hay nada aquí",breadcrumb:"Ruta de navegación",breadcrumbExpand:"Mostrar los pasos ocultos",carousel:"Carrusel",carouselPrevious:"Diapositiva anterior",carouselNext:"Diapositiva siguiente",commandPalette:"Paleta de comandos",commandPalettePlaceholder:"Buscar comandos",gallery:"Galería",chart:"Gráfico",minimize:"Minimizar",maximize:"Maximizar",restore:"Restaurar",resizeWindow:"Redimensionar la ventana",overlay:"Capa",pagination:"Paginación",paginationPrevious:"Página anterior",paginationNext:"Página siguiente",paginationFirst:"Primera página",paginationLast:"Última página",rating:"Valoración",sidebar:"Barra lateral",sidebarClose:"Cerrar la barra lateral",sidebarResize:"Redimensionar la barra lateral",skipToContent:"Saltar al contenido",backToTop:"Volver arriba",onThisPage:"En esta página",typing:"Escribiendo…",newTab:"(se abre en una pestaña nueva)",transferAvailable:"Disponibles",transferSelected:"Seleccionados",transferToSelected:"Mover a seleccionados",transferToAvailable:"Mover a disponibles",copy:"Copiar",copied:"Copiado",copyFailed:"No se pudo copiar",raw:"Sin formato",code:"Código",previousMonth:"Mes anterior",nextMonth:"Mes siguiente",previousYear:"Año anterior",nextYear:"Año siguiente",previousYears:"Años anteriores",nextYears:"Años siguientes",chooseMonth:"Elegir un mes",chooseYear:"Elegir un año",today:"Hoy",thisMonth:"Este mes",thisYear:"Este año",now:"Ahora",hour:"Hora",minute:"Minuto",second:"Segundo",meridiem:"a. m./p. m.",start:"Inicio",end:"Fin"};
1
+ export const es={close:"Cerrar",cancel:"Cancelar",confirm:"Confirmar",acknowledge:"Aceptar",clear:"Borrar",done:"Hecho",skip:"Omitir",search:"Buscar",selectAll:"Seleccionar todo",selectRow:"Seleccionar fila",remove:"Quitar",dismiss:"Descartar",open:"Abrir",previous:"Anterior",next:"Siguiente",reveal:"Mostrar",hide:"Ocultar",increase:"Aumentar",decrease:"Disminuir",preview:"Vista previa",empty:"No hay nada aquí",optional:"Opcional",breadcrumb:"Ruta de navegación",breadcrumbExpand:"Mostrar los pasos ocultos",carousel:"Carrusel",carouselPrevious:"Diapositiva anterior",carouselNext:"Diapositiva siguiente",slide:"diapositiva",commandPalette:"Paleta de comandos",commandPalettePlaceholder:"Buscar comandos",gallery:"Galería",chart:"Gráfico",minimize:"Minimizar",maximize:"Maximizar",restore:"Restaurar",resizeWindow:"Redimensionar la ventana",overlay:"Capa",notifications:"Notificaciones",pagination:"Paginación",paginationPrevious:"Página anterior",paginationNext:"Página siguiente",paginationFirst:"Primera página",paginationLast:"Última página",rating:"Valoración",sidebar:"Barra lateral",sidebarOpen:"Abrir la barra lateral",sidebarClose:"Cerrar la barra lateral",sidebarResize:"Redimensionar la barra lateral",skipToContent:"Saltar al contenido",backToTop:"Volver arriba",onThisPage:"En esta página",typing:"Escribiendo…",messageSending:"Enviando",messageSent:"Enviado",messageDelivered:"Entregado",messageRead:"Leído",messageFailed:"No entregado",spoilerWarning:"Puede contener spoilers",filePickerTitle:"Suelta archivos aquí o haz clic para buscarlos",newTab:"(se abre en una pestaña nueva)",transferAvailable:"Disponibles",transferSelected:"Seleccionados",transferToSelected:"Mover a seleccionados",transferToAvailable:"Mover a disponibles",copy:"Copiar",copied:"Copiado",copyFailed:"No se pudo copiar",raw:"Sin formato",code:"Código",previousMonth:"Mes anterior",nextMonth:"Mes siguiente",previousYear:"Año anterior",nextYear:"Año siguiente",previousYears:"Años anteriores",nextYears:"Años siguientes",chooseMonth:"Elegir un mes",chooseYear:"Elegir un año",today:"Hoy",thisMonth:"Este mes",thisYear:"Este año",now:"Ahora",hour:"Hora",minute:"Minuto",second:"Segundo",meridiem:"a. m./p. m.",start:"Inicio",end:"Fin",paginationPage:e=>`Página ${e}`,paginationStatus:(e,a)=>`Página ${e} de ${a}`,ratingValue:(e,a)=>`${e.toLocaleString("es")} de ${a}`,ratingNone:"Sin valoración",carouselSlide:(e,a)=>`Diapositiva ${e} de ${a}`,galleryItem:(e,a)=>`${e} de ${a}`,removeItem:e=>`Quitar ${e}`,addCustom:e=>`Añadir «${e}»`,otpSlot:(e,a)=>`Carácter ${e} de ${a}`,transferMoved:(e,a)=>`${e} ${1===e?"elemento movido":"elementos movidos"} a «${a}»`,filesRejectedType:e=>`${e} ${1===e?"archivo no tiene":"archivos no tienen"} un tipo admitido`,filesRejectedSize:e=>`${e} ${1===e?"archivo es demasiado grande":"archivos son demasiado grandes"}`,filesRejectedCount:e=>`No había sitio para ${e} ${1===e?"archivo":"archivos"}`};
@@ -1 +1 @@
1
- export const fr={close:"Fermer",cancel:"Annuler",confirm:"Confirmer",clear:"Effacer",done:"Terminé",skip:"Ignorer",search:"Rechercher",selectAll:"Tout sélectionner",selectRow:"Sélectionner la ligne",remove:"Retirer",dismiss:"Masquer",open:"Ouvrir",previous:"Précédent",next:"Suivant",reveal:"Afficher",hide:"Masquer",increase:"Augmenter",decrease:"Diminuer",preview:"Aperçu",empty:"Rien ici",breadcrumb:"Fil d’Ariane",breadcrumbExpand:"Afficher les étapes masquées",carousel:"Carrousel",carouselPrevious:"Diapositive précédente",carouselNext:"Diapositive suivante",commandPalette:"Palette de commandes",commandPalettePlaceholder:"Rechercher une commande",gallery:"Galerie",chart:"Graphique",minimize:"Réduire",maximize:"Agrandir",restore:"Restaurer",resizeWindow:"Redimensionner la fenêtre",overlay:"Voile",pagination:"Pagination",paginationPrevious:"Page précédente",paginationNext:"Page suivante",paginationFirst:"Première page",paginationLast:"Dernière page",rating:"Note",sidebar:"Barre latérale",sidebarClose:"Fermer la barre latérale",sidebarResize:"Redimensionner la barre latérale",skipToContent:"Aller au contenu",backToTop:"Revenir en haut",onThisPage:"Sur cette page",typing:"Écrit…",newTab:"(s’ouvre dans un nouvel onglet)",transferAvailable:"Disponibles",transferSelected:"Sélectionnés",transferToSelected:"Déplacer vers les sélectionnés",transferToAvailable:"Déplacer vers les disponibles",copy:"Copier",copied:"Copié",copyFailed:"Copie impossible",raw:"Brut",code:"Code",previousMonth:"Mois précédent",nextMonth:"Mois suivant",previousYear:"Année précédente",nextYear:"Année suivante",previousYears:"Années précédentes",nextYears:"Années suivantes",chooseMonth:"Choisir un mois",chooseYear:"Choisir une année",today:"Aujourd’hui",thisMonth:"Ce mois-ci",thisYear:"Cette année",now:"Maintenant",hour:"Heure",minute:"Minute",second:"Seconde",meridiem:"AM/PM",start:"Début",end:"Fin"};
1
+ export const fr={close:"Fermer",cancel:"Annuler",confirm:"Confirmer",acknowledge:"OK",clear:"Effacer",done:"Terminé",skip:"Ignorer",search:"Rechercher",selectAll:"Tout sélectionner",selectRow:"Sélectionner la ligne",remove:"Retirer",dismiss:"Masquer",open:"Ouvrir",previous:"Précédent",next:"Suivant",reveal:"Afficher",hide:"Masquer",increase:"Augmenter",decrease:"Diminuer",preview:"Aperçu",empty:"Rien ici",optional:"Facultatif",breadcrumb:"Fil d’Ariane",breadcrumbExpand:"Afficher les étapes masquées",carousel:"Carrousel",carouselPrevious:"Diapositive précédente",carouselNext:"Diapositive suivante",slide:"diapositive",commandPalette:"Palette de commandes",commandPalettePlaceholder:"Rechercher une commande",gallery:"Galerie",chart:"Graphique",minimize:"Réduire",maximize:"Agrandir",restore:"Restaurer",resizeWindow:"Redimensionner la fenêtre",overlay:"Voile",notifications:"Notifications",pagination:"Pagination",paginationPrevious:"Page précédente",paginationNext:"Page suivante",paginationFirst:"Première page",paginationLast:"Dernière page",rating:"Note",sidebar:"Barre latérale",sidebarOpen:"Ouvrir la barre latérale",sidebarClose:"Fermer la barre latérale",sidebarResize:"Redimensionner la barre latérale",skipToContent:"Aller au contenu",backToTop:"Revenir en haut",onThisPage:"Sur cette page",typing:"Écrit…",messageSending:"Envoi en cours",messageSent:"Envoyé",messageDelivered:"Distribué",messageRead:"Lu",messageFailed:"Non distribué",spoilerWarning:"Peut contenir des spoilers",filePickerTitle:"Déposez des fichiers ici ou cliquez pour parcourir",newTab:"(s’ouvre dans un nouvel onglet)",transferAvailable:"Disponibles",transferSelected:"Sélectionnés",transferToSelected:"Déplacer vers les sélectionnés",transferToAvailable:"Déplacer vers les disponibles",copy:"Copier",copied:"Copié",copyFailed:"Copie impossible",raw:"Brut",code:"Code",previousMonth:"Mois précédent",nextMonth:"Mois suivant",previousYear:"Année précédente",nextYear:"Année suivante",previousYears:"Années précédentes",nextYears:"Années suivantes",chooseMonth:"Choisir un mois",chooseYear:"Choisir une année",today:"Aujourd’hui",thisMonth:"Ce mois-ci",thisYear:"Cette année",now:"Maintenant",hour:"Heure",minute:"Minute",second:"Seconde",meridiem:"AM/PM",start:"Début",end:"Fin",paginationPage:e=>`Page ${e}`,paginationStatus:(e,i)=>`Page ${e} sur ${i}`,ratingValue:(e,i)=>`${e.toLocaleString("fr")} sur ${i}`,ratingNone:"Aucune note",carouselSlide:(e,i)=>`Diapositive ${e} sur ${i}`,galleryItem:(e,i)=>`${e} sur ${i}`,removeItem:e=>`Retirer ${e}`,addCustom:e=>`Ajouter « ${e} »`,otpSlot:(e,i)=>`Caractère ${e} sur ${i}`,transferMoved:(e,i)=>`${e} ${1===e?"élément déplacé":"éléments déplacés"} vers « ${i} »`,filesRejectedType:e=>`${e} ${1===e?"fichier n'a pas":"fichiers n'ont pas"} un type accepté`,filesRejectedSize:e=>`${e} ${1===e?"fichier est trop volumineux":"fichiers sont trop volumineux"}`,filesRejectedCount:e=>`Il n'y avait plus de place pour ${e} ${1===e?"fichier":"fichiers"}`};
@@ -1 +1 @@
1
- export const ja={close:"閉じる",cancel:"キャンセル",confirm:"確認",clear:"クリア",done:"完了",skip:"スキップ",search:"検索",selectAll:"すべて選択",selectRow:"行を選択",remove:"削除",dismiss:"閉じる",open:"開く",previous:"前へ",next:"次へ",reveal:"表示",hide:"非表示",increase:"増やす",decrease:"減らす",preview:"プレビュー",empty:"項目がありません",breadcrumb:"パンくずリスト",breadcrumbExpand:"省略された階層を表示",carousel:"カルーセル",carouselPrevious:"前のスライド",carouselNext:"次のスライド",commandPalette:"コマンドパレット",commandPalettePlaceholder:"コマンドを検索",gallery:"ギャラリー",chart:"グラフ",minimize:"最小化",maximize:"最大化",restore:"元に戻す",resizeWindow:"ウィンドウのサイズを変更",overlay:"オーバーレイ",pagination:"ページ送り",paginationPrevious:"前のページ",paginationNext:"次のページ",paginationFirst:"最初のページ",paginationLast:"最後のページ",rating:"評価",sidebar:"サイドバー",sidebarClose:"サイドバーを閉じる",sidebarResize:"サイドバーの幅を変更",skipToContent:"本文へスキップ",backToTop:"ページの先頭へ",onThisPage:"このページの目次",typing:"入力中…",newTab:"(新しいタブで開きます)",transferAvailable:"未選択",transferSelected:"選択済み",transferToSelected:"選択済みへ移動",transferToAvailable:"未選択へ移動",copy:"コピー",copied:"コピーしました",copyFailed:"コピーできません",raw:"元のまま",code:"コード",previousMonth:"前の月",nextMonth:"次の月",previousYear:"前の年",nextYear:"次の年",previousYears:"前の年一覧",nextYears:"次の年一覧",chooseMonth:"月を選択",chooseYear:"年を選択",today:"今日",thisMonth:"今月",thisYear:"今年",now:"現在",hour:"時",minute:"分",second:"秒",meridiem:"午前/午後",start:"開始",end:"終了"};
1
+ export const ja={close:"閉じる",cancel:"キャンセル",confirm:"確認",acknowledge:"OK",clear:"クリア",done:"完了",skip:"スキップ",search:"検索",selectAll:"すべて選択",selectRow:"行を選択",remove:"削除",dismiss:"閉じる",open:"開く",previous:"前へ",next:"次へ",reveal:"表示",hide:"非表示",increase:"増やす",decrease:"減らす",preview:"プレビュー",empty:"項目がありません",optional:"任意",breadcrumb:"パンくずリスト",breadcrumbExpand:"省略された階層を表示",carousel:"カルーセル",carouselPrevious:"前のスライド",carouselNext:"次のスライド",slide:"スライド",commandPalette:"コマンドパレット",commandPalettePlaceholder:"コマンドを検索",gallery:"ギャラリー",chart:"グラフ",minimize:"最小化",maximize:"最大化",restore:"元に戻す",resizeWindow:"ウィンドウのサイズを変更",overlay:"オーバーレイ",notifications:"通知",pagination:"ページ送り",paginationPrevious:"前のページ",paginationNext:"次のページ",paginationFirst:"最初のページ",paginationLast:"最後のページ",rating:"評価",sidebar:"サイドバー",sidebarOpen:"サイドバーを開く",sidebarClose:"サイドバーを閉じる",sidebarResize:"サイドバーの幅を変更",skipToContent:"本文へスキップ",backToTop:"ページの先頭へ",onThisPage:"このページの目次",typing:"入力中…",messageSending:"送信中",messageSent:"送信済み",messageDelivered:"配信済み",messageRead:"既読",messageFailed:"未配信",spoilerWarning:"ネタバレを含む可能性があります",filePickerTitle:"ここにファイルをドロップするか、クリックして選択",newTab:"(新しいタブで開きます)",transferAvailable:"未選択",transferSelected:"選択済み",transferToSelected:"選択済みへ移動",transferToAvailable:"未選択へ移動",copy:"コピー",copied:"コピーしました",copyFailed:"コピーできません",raw:"元のまま",code:"コード",previousMonth:"前の月",nextMonth:"次の月",previousYear:"前の年",nextYear:"次の年",previousYears:"前の年一覧",nextYears:"次の年一覧",chooseMonth:"月を選択",chooseYear:"年を選択",today:"今日",thisMonth:"今月",thisYear:"今年",now:"現在",hour:"時",minute:"分",second:"秒",meridiem:"午前/午後",start:"開始",end:"終了",paginationPage:e=>`${e}ページ`,paginationStatus:(e,a)=>`${a}ページ中${e}ページ`,ratingValue:(e,a)=>`${a}点中${e.toLocaleString("ja")}点`,ratingNone:"評価なし",carouselSlide:(e,a)=>`${a}枚中${e}枚目のスライド`,galleryItem:(e,a)=>`${a}枚中${e}枚目`,removeItem:e=>`${e}を削除`,addCustom:e=>`「${e}」を追加`,otpSlot:(e,a)=>`${a}桁中${e}桁目`,transferMoved:(e,a)=>`${e}件を「${a}」に移動しました`,filesRejectedType:e=>`${e}件は受け付けられない種類です`,filesRejectedSize:e=>`${e}件は大きすぎます`,filesRejectedCount:e=>`${e}件は入りきりませんでした`};
@@ -1 +1 @@
1
- export const ko={close:"닫기",cancel:"취소",confirm:"확인",clear:"지우기",done:"완료",skip:"건너뛰기",search:"검색",selectAll:"전체 선택",selectRow:"행 선택",remove:"삭제",dismiss:"닫기",open:"열기",previous:"이전",next:"다음",reveal:"보기",hide:"숨기기",increase:"늘리기",decrease:"줄이기",preview:"미리 보기",empty:"항목 없음",breadcrumb:"탐색 경로",breadcrumbExpand:"숨겨진 단계 보기",carousel:"캐러셀",carouselPrevious:"이전 슬라이드",carouselNext:"다음 슬라이드",commandPalette:"명령 팔레트",commandPalettePlaceholder:"명령 검색",gallery:"갤러리",chart:"차트",minimize:"최소화",maximize:"최대화",restore:"이전 크기로",resizeWindow:"창 크기 조절",overlay:"오버레이",pagination:"페이지 이동",paginationPrevious:"이전 페이지",paginationNext:"다음 페이지",paginationFirst:"첫 페이지",paginationLast:"마지막 페이지",rating:"별점",sidebar:"사이드바",sidebarClose:"사이드바 닫기",sidebarResize:"사이드바 크기 조절",skipToContent:"본문으로 건너뛰기",backToTop:"맨 위로",onThisPage:"이 페이지의 목차",typing:"입력 중…",newTab:"(새 탭에서 열림)",transferAvailable:"사용 가능",transferSelected:"선택됨",transferToSelected:"선택 목록으로 옮기기",transferToAvailable:"사용 가능 목록으로 옮기기",copy:"복사",copied:"복사됨",copyFailed:"복사할 수 없음",raw:"원본",code:"코드",previousMonth:"이전 달",nextMonth:"다음 달",previousYear:"이전 해",nextYear:"다음 해",previousYears:"이전 연도 목록",nextYears:"다음 연도 목록",chooseMonth:"월 선택",chooseYear:"연도 선택",today:"오늘",thisMonth:"이번 달",thisYear:"올해",now:"지금",hour:"시",minute:"분",second:"초",meridiem:"오전/오후",start:"시작",end:"종료"};
1
+ export const ko={close:"닫기",cancel:"취소",confirm:"확인",acknowledge:"확인",clear:"지우기",done:"완료",skip:"건너뛰기",search:"검색",selectAll:"전체 선택",selectRow:"행 선택",remove:"삭제",dismiss:"닫기",open:"열기",previous:"이전",next:"다음",reveal:"보기",hide:"숨기기",increase:"늘리기",decrease:"줄이기",preview:"미리 보기",empty:"항목 없음",optional:"선택 사항",breadcrumb:"탐색 경로",breadcrumbExpand:"숨겨진 단계 보기",carousel:"캐러셀",carouselPrevious:"이전 슬라이드",carouselNext:"다음 슬라이드",slide:"슬라이드",commandPalette:"명령 팔레트",commandPalettePlaceholder:"명령 검색",gallery:"갤러리",chart:"차트",minimize:"최소화",maximize:"최대화",restore:"이전 크기로",resizeWindow:"창 크기 조절",overlay:"오버레이",notifications:"알림",pagination:"페이지 이동",paginationPrevious:"이전 페이지",paginationNext:"다음 페이지",paginationFirst:"첫 페이지",paginationLast:"마지막 페이지",rating:"별점",sidebar:"사이드바",sidebarOpen:"사이드바 열기",sidebarClose:"사이드바 닫기",sidebarResize:"사이드바 크기 조절",skipToContent:"본문으로 건너뛰기",backToTop:"맨 위로",onThisPage:"이 페이지의 목차",typing:"입력 중…",messageSending:"보내는 중",messageSent:"보냄",messageDelivered:"전달됨",messageRead:"읽음",messageFailed:"전달되지 않음",spoilerWarning:"스포일러가 있을 수 있습니다",filePickerTitle:"파일을 여기에 놓거나 클릭해서 찾아보세요",newTab:"(새 탭에서 열림)",transferAvailable:"사용 가능",transferSelected:"선택됨",transferToSelected:"선택 목록으로 옮기기",transferToAvailable:"사용 가능 목록으로 옮기기",copy:"복사",copied:"복사됨",copyFailed:"복사할 수 없음",raw:"원본",code:"코드",previousMonth:"이전 달",nextMonth:"다음 달",previousYear:"이전 해",nextYear:"다음 해",previousYears:"이전 연도 목록",nextYears:"다음 연도 목록",chooseMonth:"월 선택",chooseYear:"연도 선택",today:"오늘",thisMonth:"이번 달",thisYear:"올해",now:"지금",hour:"시",minute:"분",second:"초",meridiem:"오전/오후",start:"시작",end:"종료",paginationPage:e=>`${e}페이지`,paginationStatus:(e,a)=>`${a}페이지 중 ${e}페이지`,ratingValue:(e,a)=>`${a}점 만점에 ${e.toLocaleString("ko")}점`,ratingNone:"별점 없음",carouselSlide:(e,a)=>`${a}개 중 ${e}번째 슬라이드`,galleryItem:(e,a)=>`${a}장 중 ${e}번째`,removeItem:e=>`${e} 삭제`,addCustom:e=>`“${e}” 추가`,otpSlot:(e,a)=>`${a}자리 중 ${e}번째`,transferMoved:(e,a)=>`‘${a}’ 목록으로 ${e}개를 옮겼습니다`,filesRejectedType:e=>`${e}개는 받지 않는 형식입니다`,filesRejectedSize:e=>`${e}개는 너무 큽니다`,filesRejectedCount:e=>`${e}개는 더 담을 수 없습니다`};
@@ -1 +1 @@
1
- export const zhHans={close:"关闭",cancel:"取消",confirm:"确认",clear:"清除",done:"完成",skip:"跳过",search:"搜索",selectAll:"全选",selectRow:"选择该行",remove:"移除",dismiss:"关闭",open:"打开",previous:"上一个",next:"下一个",reveal:"显示",hide:"隐藏",increase:"增加",decrease:"减少",preview:"预览",empty:"暂无内容",breadcrumb:"面包屑导航",breadcrumbExpand:"显示折叠的层级",carousel:"轮播",carouselPrevious:"上一张",carouselNext:"下一张",commandPalette:"命令面板",commandPalettePlaceholder:"搜索命令",gallery:"图库",chart:"图表",minimize:"最小化",maximize:"最大化",restore:"还原",resizeWindow:"调整窗口大小",overlay:"遮罩",pagination:"分页",paginationPrevious:"上一页",paginationNext:"下一页",paginationFirst:"第一页",paginationLast:"最后一页",rating:"评分",sidebar:"侧边栏",sidebarClose:"关闭侧边栏",sidebarResize:"调整侧边栏宽度",skipToContent:"跳到主要内容",backToTop:"回到顶部",onThisPage:"本页目录",typing:"正在输入…",newTab:"(在新标签页中打开)",transferAvailable:"可选",transferSelected:"已选",transferToSelected:"移到已选",transferToAvailable:"移到可选",copy:"复制",copied:"已复制",copyFailed:"无法复制",raw:"原始",code:"代码",previousMonth:"上个月",nextMonth:"下个月",previousYear:"上一年",nextYear:"下一年",previousYears:"上一组年份",nextYears:"下一组年份",chooseMonth:"选择月份",chooseYear:"选择年份",today:"今天",thisMonth:"本月",thisYear:"今年",now:"此刻",hour:"时",minute:"分",second:"秒",meridiem:"上午/下午",start:"开始",end:"结束"};
1
+ export const zhHans={close:"关闭",cancel:"取消",confirm:"确认",acknowledge:"确定",clear:"清除",done:"完成",skip:"跳过",search:"搜索",selectAll:"全选",selectRow:"选择该行",remove:"移除",dismiss:"关闭",open:"打开",previous:"上一个",next:"下一个",reveal:"显示",hide:"隐藏",increase:"增加",decrease:"减少",preview:"预览",empty:"暂无内容",optional:"可选",breadcrumb:"面包屑导航",breadcrumbExpand:"显示折叠的层级",carousel:"轮播",carouselPrevious:"上一张",carouselNext:"下一张",slide:"幻灯片",commandPalette:"命令面板",commandPalettePlaceholder:"搜索命令",gallery:"图库",chart:"图表",minimize:"最小化",maximize:"最大化",restore:"还原",resizeWindow:"调整窗口大小",overlay:"遮罩",notifications:"通知",pagination:"分页",paginationPrevious:"上一页",paginationNext:"下一页",paginationFirst:"第一页",paginationLast:"最后一页",rating:"评分",sidebar:"侧边栏",sidebarOpen:"打开侧边栏",sidebarClose:"关闭侧边栏",sidebarResize:"调整侧边栏宽度",skipToContent:"跳到主要内容",backToTop:"回到顶部",onThisPage:"本页目录",typing:"正在输入…",messageSending:"发送中",messageSent:"已发送",messageDelivered:"已送达",messageRead:"已读",messageFailed:"未送达",spoilerWarning:"可能包含剧透",filePickerTitle:"将文件拖到此处,或点击浏览",newTab:"(在新标签页中打开)",transferAvailable:"可选",transferSelected:"已选",transferToSelected:"移到已选",transferToAvailable:"移到可选",copy:"复制",copied:"已复制",copyFailed:"无法复制",raw:"原始",code:"代码",previousMonth:"上个月",nextMonth:"下个月",previousYear:"上一年",nextYear:"下一年",previousYears:"上一组年份",nextYears:"下一组年份",chooseMonth:"选择月份",chooseYear:"选择年份",today:"今天",thisMonth:"本月",thisYear:"今年",now:"此刻",hour:"时",minute:"分",second:"秒",meridiem:"上午/下午",start:"开始",end:"结束",paginationPage:e=>`第${e}页`,paginationStatus:(e,a)=>`第${e}页,共${a}页`,ratingValue:(e,a)=>`${e.toLocaleString("zh-Hans")}分,满分${a}分`,ratingNone:"未评分",carouselSlide:(e,a)=>`第${e}张,共${a}张`,galleryItem:(e,a)=>`第${e}张,共${a}张`,removeItem:e=>`移除${e}`,addCustom:e=>`添加“${e}”`,otpSlot:(e,a)=>`第${e}位,共${a}位`,transferMoved:(e,a)=>`已将${e}项移到“${a}”`,filesRejectedType:e=>`${e}个文件的类型不受支持`,filesRejectedSize:e=>`${e}个文件过大`,filesRejectedCount:e=>`还有${e}个文件放不下`};
@@ -1 +1 @@
1
- import{jsx as e}from"react/jsx-runtime";import{DEFAULT_STORAGE_KEY as t}from"../internal/color-scheme.js";function inlineScript(e,t){return`(function(){try{var k=${JSON.stringify(e)},d=${JSON.stringify(t)};var s=localStorage.getItem(k);if(s!=="light"&&s!=="dark"&&s!=="system"){s=d}var e=document.documentElement;e.classList.remove("light","dark");if(s==="system"){delete e.dataset.theme}else{e.dataset.theme=s;e.classList.add(s)}}catch(_){}})()`}export function PlColorSchemeScript({storageKey:s=t,defaultScheme:r="system",nonce:n}){return e("script",{nonce:n,dangerouslySetInnerHTML:{__html:inlineScript(s,r)}})}
1
+ import{jsx as t}from"react/jsx-runtime";import{DEFAULT_STORAGE_KEY as e}from"../internal/color-scheme.js";function scriptString(t){return JSON.stringify(t).replace(/[<>&\u2028\u2029]/g,t=>`\\u${t.charCodeAt(0).toString(16).padStart(4,"0")}`)}function inlineScript(t,e){return`(function(){try{var k=${scriptString(t)},d=${scriptString(e)};var s=localStorage.getItem(k);if(s!=="light"&&s!=="dark"&&s!=="system"){s=d}var e=document.documentElement;e.classList.remove("light","dark");if(s==="system"){delete e.dataset.theme}else{e.dataset.theme=s;e.classList.add(s)}}catch(_){}})()`}export function PlColorSchemeScript({storageKey:r=e,defaultScheme:s="system",nonce:n}){return t("script",{nonce:n,dangerouslySetInnerHTML:{__html:inlineScript(r,s)}})}
@@ -18,8 +18,9 @@ export interface PlassProviderProps extends PlassDefaults {
18
18
  * </PlassProvider>
19
19
  * ```
20
20
  *
21
- * **It sets `size`, `color`, `density` and the date vocabulary, and it
22
- * deliberately does not set `variant` or `elevation`.** Those two name what a
21
+ * **It sets `size`, `color`, `density`, `labelPlacement` and the date
22
+ * vocabulary, and it deliberately does not set `variant` or `elevation`.**
23
+ * Those two name what a
23
24
  * surface is *made of* and how far off the page it sits, and both are decided
24
25
  * per component by the design language rather than per application: a button is
25
26
  * `solid` and rests on the sheet, a field is cut into it. One value for all of
@@ -36,4 +37,4 @@ export interface PlassProviderProps extends PlassDefaults {
36
37
  * all still be running left to right under a right-to-left page. See
37
38
  * `internal/direction.ts`.
38
39
  */
39
- export declare function PlassProvider({ size, color, density, locale, weekStartsOn, labels, direction, children }: PlassProviderProps): React.JSX.Element;
40
+ export declare function PlassProvider({ size, color, density, labelPlacement, locale, weekStartsOn, labels, direction, children }: PlassProviderProps): React.JSX.Element;
@@ -1 +1 @@
1
- "use client";import{jsx as e}from"react/jsx-runtime";import*as r from"react";import{DirectionProvider as i}from"@base-ui/react/direction-provider";import{DefaultsContext as t}from"../internal/defaults.js";import{useDocumentDirection as o}from"../internal/direction.js";export function PlassProvider({size:n,color:s,density:l,locale:c,weekStartsOn:a,labels:d,direction:m,children:u}){const f=r.useContext(t),p=r.useMemo(()=>({size:n??f.size,color:s??f.color,density:l??f.density,locale:c??f.locale,weekStartsOn:a??f.weekStartsOn,labels:d??f.labels,direction:m??f.direction}),[n,s,l,c,a,d,m,f]),b=o();return e(i,{direction:p.direction??b,children:e(t.Provider,{value:p,children:u})})}
1
+ "use client";import{jsx as e}from"react/jsx-runtime";import*as r from"react";import{DirectionProvider as t}from"@base-ui/react/direction-provider";import{DefaultsContext as i}from"../internal/defaults.js";import{useDocumentDirection as l}from"../internal/direction.js";export function PlassProvider({size:o,color:n,density:a,labelPlacement:s,locale:c,weekStartsOn:d,labels:m,direction:b,children:u}){const f=r.useContext(i),p=r.useMemo(()=>({size:o??f.size,color:n??f.color,density:a??f.density,labelPlacement:s??f.labelPlacement,locale:c??f.locale,weekStartsOn:d??f.weekStartsOn,labels:m&&f.labels?{...f.labels,...m}:m??f.labels,direction:b??f.direction}),[o,n,a,s,c,d,m,b,f]),P=l();return e(t,{direction:p.direction??P,children:e(i.Provider,{value:p,children:u})})}