@mond-design-system/react 3.0.3 → 4.1.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.
package/dist/index.js CHANGED
@@ -79,7 +79,7 @@ function Heading({
79
79
  var Spinner_module_default = { "spinner": "mds-Spinner__spinner"};
80
80
  function Spinner({
81
81
  size = 20,
82
- label = "Loading",
82
+ label,
83
83
  className,
84
84
  style,
85
85
  ...rest
@@ -128,11 +128,13 @@ function Icon({ name, size, label, className, ...rest }) {
128
128
  }
129
129
 
130
130
  // mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Button/Button.module.css?mds-scoped
131
- var Button_module_default = { "button": "mds-Button__button", "size-sm": "mds-Button__size-sm", "size-md": "mds-Button__size-md", "size-lg": "mds-Button__size-lg", "slot": "mds-Button__slot", "variant-primary": "mds-Button__variant-primary", "variant-secondary": "mds-Button__variant-secondary", "variant-ghost": "mds-Button__variant-ghost", "variant-highlight": "mds-Button__variant-highlight", "variant-danger": "mds-Button__variant-danger", "variant-warning": "mds-Button__variant-warning", "fullWidth": "mds-Button__fullWidth", "icon-only": "mds-Button__icon-only" };
131
+ var Button_module_default = { "button": "mds-Button__button", "size-sm": "mds-Button__size-sm", "size-md": "mds-Button__size-md", "size-lg": "mds-Button__size-lg", "slot": "mds-Button__slot", "variant-primary": "mds-Button__variant-primary", "variant-secondary": "mds-Button__variant-secondary", "variant-ghost": "mds-Button__variant-ghost", "variant-highlight": "mds-Button__variant-highlight", "variant-danger": "mds-Button__variant-danger", "variant-warning": "mds-Button__variant-warning", "fullWidth": "mds-Button__fullWidth", "icon-only": "mds-Button__icon-only", "on-media": "mds-Button__on-media", "shape-rect": "mds-Button__shape-rect", "shape-pill": "mds-Button__shape-pill" };
132
132
  var ICON_PX = { sm: 16, md: 20, lg: 24 };
133
133
  function Button({
134
134
  variant = "primary",
135
135
  size = "md",
136
+ shape,
137
+ onMedia = false,
136
138
  iconLeft,
137
139
  iconRight,
138
140
  loading = false,
@@ -158,6 +160,8 @@ function Button({
158
160
  Button_module_default[`size-${size}`],
159
161
  fullWidth && Button_module_default.fullWidth,
160
162
  iconOnly && Button_module_default["icon-only"],
163
+ shape !== void 0 && Button_module_default[`shape-${shape}`],
164
+ onMedia && Button_module_default["on-media"],
161
165
  className
162
166
  ),
163
167
  "aria-busy": loading || void 0,
@@ -248,6 +252,7 @@ function AvatarGroup({
248
252
  children,
249
253
  max = 4,
250
254
  size = "md",
255
+ overflowLabel,
251
256
  className,
252
257
  ...rest
253
258
  }) {
@@ -260,7 +265,7 @@ function AvatarGroup({
260
265
  "span",
261
266
  {
262
267
  className: cx(AvatarGroup_module_default.item, AvatarGroup_module_default.overflow, AvatarGroup_module_default[`size-${size}`]),
263
- "aria-label": `${hidden} more`,
268
+ "aria-label": overflowLabel(hidden),
264
269
  children: [
265
270
  "+",
266
271
  hidden
@@ -286,6 +291,7 @@ function Chip({
286
291
  onClick,
287
292
  disabled = false,
288
293
  className,
294
+ ref,
289
295
  ...rest
290
296
  }) {
291
297
  const interactive = typeof onClick === "function";
@@ -311,10 +317,11 @@ function Chip({
311
317
  onClick,
312
318
  disabled,
313
319
  "aria-pressed": selected === void 0 ? void 0 : selected,
320
+ ref,
314
321
  ...shared,
315
322
  children: content
316
323
  }
317
- ) : /* @__PURE__ */ jsx("span", { ...shared, children: content });
324
+ ) : /* @__PURE__ */ jsx("span", { ref, ...shared, children: content });
318
325
  }
319
326
 
320
327
  // mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Chip/ChipGroup.module.css?mds-scoped
@@ -375,6 +382,102 @@ function CountButton({
375
382
  }
376
383
  );
377
384
  }
385
+ function CloseGlyph({ className }) {
386
+ return /* @__PURE__ */ jsx("svg", { viewBox: "0 0 16 16", "aria-hidden": "true", className, children: /* @__PURE__ */ jsx("path", { d: "M4 4l8 8M12 4l-8 8", stroke: "currentColor", strokeWidth: "1.75", strokeLinecap: "round" }) });
387
+ }
388
+ function ChevronLeftGlyph({ className }) {
389
+ return /* @__PURE__ */ jsx("svg", { viewBox: "0 0 16 16", "aria-hidden": "true", className, children: /* @__PURE__ */ jsx(
390
+ "path",
391
+ {
392
+ d: "M10 3l-5 5 5 5",
393
+ fill: "none",
394
+ stroke: "currentColor",
395
+ strokeWidth: "1.75",
396
+ strokeLinecap: "round",
397
+ strokeLinejoin: "round"
398
+ }
399
+ ) });
400
+ }
401
+ function ChevronRightGlyph({ className }) {
402
+ return /* @__PURE__ */ jsx("svg", { viewBox: "0 0 16 16", "aria-hidden": "true", className, children: /* @__PURE__ */ jsx(
403
+ "path",
404
+ {
405
+ d: "M6 3l5 5-5 5",
406
+ fill: "none",
407
+ stroke: "currentColor",
408
+ strokeWidth: "1.75",
409
+ strokeLinecap: "round",
410
+ strokeLinejoin: "round"
411
+ }
412
+ ) });
413
+ }
414
+ function Magnifier({ className, children }) {
415
+ return /* @__PURE__ */ jsx("svg", { viewBox: "0 0 16 16", "aria-hidden": "true", className, children: /* @__PURE__ */ jsxs("g", { fill: "none", stroke: "currentColor", strokeWidth: "1.75", strokeLinecap: "round", children: [
416
+ /* @__PURE__ */ jsx("circle", { cx: "7", cy: "7", r: "4.25" }),
417
+ /* @__PURE__ */ jsx("path", { d: "M10.2 10.2L14 14" }),
418
+ children
419
+ ] }) });
420
+ }
421
+ function ZoomInGlyph({ className }) {
422
+ return /* @__PURE__ */ jsx(Magnifier, { className, children: /* @__PURE__ */ jsx("path", { d: "M4.75 7h4.5M7 4.75v4.5" }) });
423
+ }
424
+ function ZoomOutGlyph({ className }) {
425
+ return /* @__PURE__ */ jsx(Magnifier, { className, children: /* @__PURE__ */ jsx("path", { d: "M4.75 7h4.5" }) });
426
+ }
427
+ function PlayGlyph({ className }) {
428
+ return /* @__PURE__ */ jsx("svg", { viewBox: "0 0 16 16", "aria-hidden": "true", className, children: /* @__PURE__ */ jsx("path", { d: "M5 3.2l7.5 4.8L5 12.8z", fill: "currentColor" }) });
429
+ }
430
+ function PauseGlyph({ className }) {
431
+ return /* @__PURE__ */ jsx("svg", { viewBox: "0 0 16 16", "aria-hidden": "true", className, children: /* @__PURE__ */ jsx("path", { d: "M4.5 3h2.25v10H4.5zM9.25 3h2.25v10H9.25z", fill: "currentColor" }) });
432
+ }
433
+ function Speaker() {
434
+ return /* @__PURE__ */ jsx("path", { d: "M2.5 6.25h2.25L8 3.4v9.2L4.75 9.75H2.5z", fill: "currentColor", stroke: "none" });
435
+ }
436
+ function VolumeGlyph({ className }) {
437
+ return /* @__PURE__ */ jsx("svg", { viewBox: "0 0 16 16", "aria-hidden": "true", className, children: /* @__PURE__ */ jsxs("g", { fill: "none", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", children: [
438
+ /* @__PURE__ */ jsx(Speaker, {}),
439
+ /* @__PURE__ */ jsx("path", { d: "M10.5 5.75a3.25 3.25 0 010 4.5" }),
440
+ /* @__PURE__ */ jsx("path", { d: "M12.5 3.9a5.75 5.75 0 010 8.2" })
441
+ ] }) });
442
+ }
443
+ function VolumeOffGlyph({ className }) {
444
+ return /* @__PURE__ */ jsx("svg", { viewBox: "0 0 16 16", "aria-hidden": "true", className, children: /* @__PURE__ */ jsxs("g", { fill: "none", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", children: [
445
+ /* @__PURE__ */ jsx(Speaker, {}),
446
+ /* @__PURE__ */ jsx("path", { d: "M10.75 6.25l3.5 3.5M14.25 6.25l-3.5 3.5" })
447
+ ] }) });
448
+ }
449
+ function CaptionsGlyph({ className }) {
450
+ return /* @__PURE__ */ jsx("svg", { viewBox: "0 0 16 16", "aria-hidden": "true", className, children: /* @__PURE__ */ jsxs("g", { fill: "none", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", children: [
451
+ /* @__PURE__ */ jsx("rect", { x: "1.75", y: "3.25", width: "12.5", height: "9.5", rx: "2" }),
452
+ /* @__PURE__ */ jsx("path", { d: "M6.25 6.75a2 2 0 100 2.5M11.25 6.75a2 2 0 100 2.5" })
453
+ ] }) });
454
+ }
455
+ function FullscreenGlyph({ className }) {
456
+ return /* @__PURE__ */ jsx("svg", { viewBox: "0 0 16 16", "aria-hidden": "true", className, children: /* @__PURE__ */ jsx(
457
+ "path",
458
+ {
459
+ d: "M6 2.5H2.5V6M10 2.5h3.5V6M6 13.5H2.5V10M10 13.5h3.5V10",
460
+ fill: "none",
461
+ stroke: "currentColor",
462
+ strokeWidth: "1.5",
463
+ strokeLinecap: "round",
464
+ strokeLinejoin: "round"
465
+ }
466
+ ) });
467
+ }
468
+ function FullscreenExitGlyph({ className }) {
469
+ return /* @__PURE__ */ jsx("svg", { viewBox: "0 0 16 16", "aria-hidden": "true", className, children: /* @__PURE__ */ jsx(
470
+ "path",
471
+ {
472
+ d: "M2.5 6H6V2.5M13.5 6H10V2.5M2.5 10H6v3.5M13.5 10H10v3.5",
473
+ fill: "none",
474
+ stroke: "currentColor",
475
+ strokeWidth: "1.5",
476
+ strokeLinecap: "round",
477
+ strokeLinejoin: "round"
478
+ }
479
+ ) });
480
+ }
378
481
 
379
482
  // mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Field/Field.module.css?mds-scoped
380
483
  var Field_module_default = { "field": "mds-Field__field", "label": "mds-Field__label", "required": "mds-Field__required", "message": "mds-Field__message", "error": "mds-Field__error" };
@@ -501,8 +604,8 @@ function usePresence(open, durationMs) {
501
604
  return { mounted: open || mounted, visible };
502
605
  }
503
606
 
504
- // mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Overlay/Overlay.module.css?mds-scoped
505
- var Overlay_module_default = { "scrim": "mds-Overlay__scrim", "variant-modal": "mds-Overlay__variant-modal", "variant-sheet": "mds-Overlay__variant-sheet" };
607
+ // mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/internal/Overlay.module.css?mds-scoped
608
+ var Overlay_module_default = { "scrim": "mds-Overlay__scrim", "variant-modal": "mds-Overlay__variant-modal", "variant-sheet": "mds-Overlay__variant-sheet", "variant-lightbox": "mds-Overlay__variant-lightbox" };
506
609
  var OVERLAY_EXIT_MS = 200;
507
610
  var SHEET_EXIT_MS = 320;
508
611
  function Overlay({ open, onClose, label, variant, role = "dialog", closeOnScrimClick, panelClassName, children }) {
@@ -556,7 +659,7 @@ function Sheet({ open, onClose, label, closeOnScrimClick = true, children }) {
556
659
  function SheetHeader({ children, onClose, closeLabel }) {
557
660
  return /* @__PURE__ */ jsxs("div", { className: Sheet_module_default.header, children: [
558
661
  /* @__PURE__ */ jsx("span", { className: Sheet_module_default.headerTitle, children }),
559
- onClose !== void 0 && /* @__PURE__ */ jsx("button", { type: "button", "aria-label": closeLabel, className: Sheet_module_default.close, onClick: onClose, children: /* @__PURE__ */ jsx("svg", { viewBox: "0 0 16 16", "aria-hidden": "true", className: Sheet_module_default.closeGlyph, children: /* @__PURE__ */ jsx("path", { d: "M4 4l8 8M12 4l-8 8", stroke: "currentColor", strokeWidth: "1.75", strokeLinecap: "round" }) }) })
662
+ onClose !== void 0 && /* @__PURE__ */ jsx("button", { type: "button", "aria-label": closeLabel, className: Sheet_module_default.close, onClick: onClose, children: /* @__PURE__ */ jsx(CloseGlyph, { className: Sheet_module_default.closeGlyph }) })
560
663
  ] });
561
664
  }
562
665
  function SheetBody({ children }) {
@@ -568,16 +671,6 @@ function SheetFooter({ children }) {
568
671
 
569
672
  // mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/DateTimePicker/DateTimePicker.module.css?mds-scoped
570
673
  var DateTimePicker_module_default = { "trigger": "mds-DateTimePicker__trigger", "hasValue": "mds-DateTimePicker__hasValue", "triggerLabel": "mds-DateTimePicker__triggerLabel", "glyph": "mds-DateTimePicker__glyph", "timeRow": "mds-DateTimePicker__timeRow", "grow": "mds-DateTimePicker__grow", "meridiem": "mds-DateTimePicker__meridiem", "colon": "mds-DateTimePicker__colon", "calendarHeader": "mds-DateTimePicker__calendarHeader", "monthLabel": "mds-DateTimePicker__monthLabel", "weekdays": "mds-DateTimePicker__weekdays", "weekday": "mds-DateTimePicker__weekday", "grid": "mds-DateTimePicker__grid", "day": "mds-DateTimePicker__day", "today": "mds-DateTimePicker__today", "selected": "mds-DateTimePicker__selected", "outside": "mds-DateTimePicker__outside" };
571
- var DEFAULT_LABELS = {
572
- dialog: "Pick date and time",
573
- previousMonth: "Previous month",
574
- nextMonth: "Next month",
575
- today: "Today",
576
- done: "Done",
577
- hour: "Hour",
578
- minute: "Minutes",
579
- dayPeriod: "AM/PM"
580
- };
581
674
  function localeData(locale) {
582
675
  const resolved = new Intl.DateTimeFormat(locale).resolvedOptions().locale;
583
676
  const intlLocale = new Intl.Locale(resolved);
@@ -633,8 +726,6 @@ function minuteOptions(step) {
633
726
  function pad2(n) {
634
727
  return String(n).padStart(2, "0");
635
728
  }
636
- var chevronLeft = /* @__PURE__ */ jsx("svg", { viewBox: "0 0 16 16", "aria-hidden": "true", className: DateTimePicker_module_default.glyph, children: /* @__PURE__ */ jsx("path", { d: "M10 3l-5 5 5 5", fill: "none", stroke: "currentColor", strokeWidth: "1.75", strokeLinecap: "round", strokeLinejoin: "round" }) });
637
- var chevronRight = /* @__PURE__ */ jsx("svg", { viewBox: "0 0 16 16", "aria-hidden": "true", className: DateTimePicker_module_default.glyph, children: /* @__PURE__ */ jsx("path", { d: "M6 3l5 5-5 5", fill: "none", stroke: "currentColor", strokeWidth: "1.75", strokeLinecap: "round", strokeLinejoin: "round" }) });
638
729
  var calendarGlyph = /* @__PURE__ */ jsxs("svg", { viewBox: "0 0 16 16", "aria-hidden": "true", className: DateTimePicker_module_default.glyph, children: [
639
730
  /* @__PURE__ */ jsx("rect", { x: "2.5", y: "3.5", width: "11", height: "10", rx: "1.5", fill: "none", stroke: "currentColor", strokeWidth: "1.5" }),
640
731
  /* @__PURE__ */ jsx("path", { d: "M2.5 6.5h11M5.5 2v2.5M10.5 2v2.5", fill: "none", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round" })
@@ -646,16 +737,15 @@ var clockGlyph = /* @__PURE__ */ jsxs("svg", { viewBox: "0 0 16 16", "aria-hidde
646
737
  function DateTimePicker({
647
738
  value,
648
739
  onChange,
649
- placeholder = "Select date & time",
740
+ placeholder,
650
741
  min,
651
742
  minuteStep = 5,
652
743
  disabled = false,
653
744
  id,
654
745
  "aria-label": ariaLabel,
655
746
  locale,
656
- labels
747
+ labels: text
657
748
  }) {
658
- const text = { ...DEFAULT_LABELS, ...labels };
659
749
  const field = useFieldContext();
660
750
  const intl = useMemo(() => localeData(locale), [locale]);
661
751
  const [open, setOpen] = useState(false);
@@ -818,6 +908,7 @@ function DateTimePicker({
818
908
  `c-${i}`
819
909
  );
820
910
  });
911
+ const shown = value ? intl.full.format(new Date(value)) : placeholder;
821
912
  return /* @__PURE__ */ jsxs(Fragment, { children: [
822
913
  /* @__PURE__ */ jsxs(
823
914
  "button",
@@ -828,12 +919,12 @@ function DateTimePicker({
828
919
  "aria-describedby": field?.describedBy,
829
920
  "aria-haspopup": "dialog",
830
921
  "aria-expanded": open,
831
- "aria-label": ariaLabel ? `${ariaLabel}: ${value ? intl.full.format(new Date(value)) : placeholder}` : void 0,
922
+ "aria-label": ariaLabel === void 0 ? void 0 : [ariaLabel, shown].filter(Boolean).join(": "),
832
923
  onClick: openPicker,
833
924
  className: cx(DateTimePicker_module_default.trigger, value && DateTimePicker_module_default.hasValue),
834
925
  children: [
835
926
  calendarGlyph,
836
- /* @__PURE__ */ jsx("span", { className: DateTimePicker_module_default.triggerLabel, children: value ? intl.full.format(new Date(value)) : placeholder })
927
+ /* @__PURE__ */ jsx("span", { className: DateTimePicker_module_default.triggerLabel, children: shown })
837
928
  ]
838
929
  }
839
930
  ),
@@ -867,11 +958,11 @@ function DateTimePicker({
867
958
  size: "sm",
868
959
  disabled: prevDisabled,
869
960
  onClick: () => shiftMonth(-1),
870
- children: chevronLeft
961
+ children: /* @__PURE__ */ jsx(ChevronLeftGlyph, { className: DateTimePicker_module_default.glyph })
871
962
  }
872
963
  ),
873
964
  /* @__PURE__ */ jsx("span", { className: DateTimePicker_module_default.monthLabel, children: intl.monthTitle.format(first) }),
874
- /* @__PURE__ */ jsx(Button, { iconOnly: true, "aria-label": text.nextMonth, variant: "ghost", size: "sm", onClick: () => shiftMonth(1), children: chevronRight })
965
+ /* @__PURE__ */ jsx(Button, { iconOnly: true, "aria-label": text.nextMonth, variant: "ghost", size: "sm", onClick: () => shiftMonth(1), children: /* @__PURE__ */ jsx(ChevronRightGlyph, { className: DateTimePicker_module_default.glyph }) })
875
966
  ] }),
876
967
  /* @__PURE__ */ jsx("div", { className: DateTimePicker_module_default.weekdays, children: intl.weekdays.map((w, i) => /* @__PURE__ */ jsx("span", { "aria-hidden": "true", className: DateTimePicker_module_default.weekday, children: w }, `wd-${i}`)) }),
877
968
  /* @__PURE__ */ jsx("div", { className: DateTimePicker_module_default.grid, children: dayCells })
@@ -886,19 +977,25 @@ function DateTimePicker({
886
977
  }
887
978
 
888
979
  // mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Tag/Tag.module.css?mds-scoped
889
- var Tag_module_default = { "tag": "mds-Tag__tag", "tone-accent": "mds-Tag__tone-accent", "remove": "mds-Tag__remove", "removeGlyph": "mds-Tag__removeGlyph" };
890
- function Tag({ children, tone = "neutral", onRemove, className, ...rest }) {
891
- const text = typeof children === "string" ? children : void 0;
980
+ var Tag_module_default = { "tag": "mds-Tag__tag", "tone-accent": "mds-Tag__tone-accent", "remove": "mds-Tag__remove mds-hit-area__hitArea", "removeGlyph": "mds-Tag__removeGlyph" };
981
+ function Tag({
982
+ children,
983
+ tone = "neutral",
984
+ onRemove,
985
+ removeLabel,
986
+ className,
987
+ ...rest
988
+ }) {
892
989
  return /* @__PURE__ */ jsxs("span", { className: cx(Tag_module_default.tag, Tag_module_default[`tone-${tone}`], className), ...rest, children: [
893
990
  children,
894
- onRemove && /* @__PURE__ */ jsx(
991
+ onRemove !== void 0 && /* @__PURE__ */ jsx(
895
992
  "button",
896
993
  {
897
994
  type: "button",
898
995
  className: Tag_module_default.remove,
899
- "aria-label": text ? `Remove ${text}` : "Remove",
996
+ "aria-label": removeLabel,
900
997
  onClick: onRemove,
901
- children: /* @__PURE__ */ jsx("svg", { viewBox: "0 0 16 16", "aria-hidden": "true", className: Tag_module_default.removeGlyph, children: /* @__PURE__ */ jsx("path", { d: "M4 4l8 8M12 4l-8 8", stroke: "currentColor", strokeWidth: "1.75", strokeLinecap: "round" }) })
998
+ children: /* @__PURE__ */ jsx(CloseGlyph, { className: Tag_module_default.removeGlyph })
902
999
  }
903
1000
  )
904
1001
  ] });
@@ -918,6 +1015,14 @@ function Divider({ orientation = "horizontal", className, ...rest }) {
918
1015
  );
919
1016
  }
920
1017
 
1018
+ // mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/VisuallyHidden/VisuallyHidden.module.css?mds-scoped
1019
+ var VisuallyHidden_module_default = { "hidden": "mds-VisuallyHidden__hidden" };
1020
+
1021
+ // src/components/VisuallyHidden/VisuallyHidden.tsx
1022
+ function VisuallyHidden({ as = "span", className, ...rest }) {
1023
+ return createElement(as, { className: cx(VisuallyHidden_module_default.hidden, className), ...rest });
1024
+ }
1025
+
921
1026
  // mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Skeleton/Skeleton.module.css?mds-scoped
922
1027
  var Skeleton_module_default = { "skeleton": "mds-Skeleton__skeleton", "pulse": "mds-Skeleton__pulse", "variant-text": "mds-Skeleton__variant-text", "variant-rect": "mds-Skeleton__variant-rect", "variant-circle": "mds-Skeleton__variant-circle" };
923
1028
  function Skeleton({
@@ -948,6 +1053,7 @@ var ProgressBar_module_default = { "track": "mds-ProgressBar__track", "fill": "m
948
1053
  function ProgressBar({
949
1054
  value = 0,
950
1055
  label,
1056
+ valueText,
951
1057
  indeterminate = false,
952
1058
  className,
953
1059
  style,
@@ -962,6 +1068,7 @@ function ProgressBar({
962
1068
  "aria-valuemin": 0,
963
1069
  "aria-valuemax": 100,
964
1070
  "aria-valuenow": indeterminate ? void 0 : clamped,
1071
+ "aria-valuetext": valueText,
965
1072
  className: cx(ProgressBar_module_default.track, indeterminate && ProgressBar_module_default.indeterminate, className),
966
1073
  style: { ...{ "--progress": `${clamped}%` }, ...style },
967
1074
  ...rest,
@@ -1007,7 +1114,12 @@ function Input({
1007
1114
 
1008
1115
  // mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/PasswordInput/PasswordInput.module.css?mds-scoped
1009
1116
  var PasswordInput_module_default = { "wrap": "mds-PasswordInput__wrap", "input": "mds-PasswordInput__input", "toggle": "mds-PasswordInput__toggle" };
1010
- function PasswordInput({ className, ...rest }) {
1117
+ function PasswordInput({
1118
+ showLabel,
1119
+ hideLabel,
1120
+ className,
1121
+ ...rest
1122
+ }) {
1011
1123
  const [visible, setVisible] = useState(false);
1012
1124
  return /* @__PURE__ */ jsxs("span", { className: PasswordInput_module_default.wrap, children: [
1013
1125
  /* @__PURE__ */ jsx(Input, { ...rest, type: visible ? "text" : "password", className: cx(PasswordInput_module_default.input, className) }),
@@ -1016,7 +1128,7 @@ function PasswordInput({ className, ...rest }) {
1016
1128
  {
1017
1129
  type: "button",
1018
1130
  className: PasswordInput_module_default.toggle,
1019
- "aria-label": visible ? "Hide password" : "Show password",
1131
+ "aria-label": visible ? hideLabel : showLabel,
1020
1132
  "aria-pressed": visible,
1021
1133
  onClick: () => setVisible((v) => !v),
1022
1134
  children: visible ? (
@@ -1069,7 +1181,7 @@ function Textarea({ rows = 3, showCount = false, className, ...rest }) {
1069
1181
  }
1070
1182
 
1071
1183
  // mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Checkbox/Checkbox.module.css?mds-scoped
1072
- var Checkbox_module_default = { "root": "mds-Checkbox__root", "box": "mds-Checkbox__box", "label": "mds-Checkbox__label" };
1184
+ var Checkbox_module_default = { "root": "mds-Checkbox__root", "box": "mds-Checkbox__box mds-hit-area__hitArea", "label": "mds-Checkbox__label" };
1073
1185
  function Checkbox({ label, className, ...rest }) {
1074
1186
  return /* @__PURE__ */ jsxs("label", { className: cx(Checkbox_module_default.root, className), children: [
1075
1187
  /* @__PURE__ */ jsx("input", { type: "checkbox", className: Checkbox_module_default.box, ...rest }),
@@ -1078,7 +1190,7 @@ function Checkbox({ label, className, ...rest }) {
1078
1190
  }
1079
1191
 
1080
1192
  // mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Radio/Radio.module.css?mds-scoped
1081
- var Radio_module_default = { "root": "mds-Radio__root", "dot": "mds-Radio__dot", "label": "mds-Radio__label" };
1193
+ var Radio_module_default = { "root": "mds-Radio__root", "dot": "mds-Radio__dot mds-hit-area__hitArea", "label": "mds-Radio__label" };
1082
1194
  function Radio({ label, className, ...rest }) {
1083
1195
  return /* @__PURE__ */ jsxs("label", { className: cx(Radio_module_default.root, className), children: [
1084
1196
  /* @__PURE__ */ jsx("input", { type: "radio", className: Radio_module_default.dot, ...rest }),
@@ -1087,7 +1199,7 @@ function Radio({ label, className, ...rest }) {
1087
1199
  }
1088
1200
 
1089
1201
  // mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Switch/Switch.module.css?mds-scoped
1090
- var Switch_module_default = { "root": "mds-Switch__root", "track": "mds-Switch__track", "trackWrap": "mds-Switch__trackWrap", "spinner": "mds-Switch__spinner", "label": "mds-Switch__label" };
1202
+ var Switch_module_default = { "root": "mds-Switch__root", "track": "mds-Switch__track mds-hit-area__hitArea", "trackWrap": "mds-Switch__trackWrap", "spinner": "mds-Switch__spinner", "label": "mds-Switch__label" };
1091
1203
  function Switch({
1092
1204
  label,
1093
1205
  loading = false,
@@ -1115,7 +1227,7 @@ function Switch({
1115
1227
  }
1116
1228
 
1117
1229
  // mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/SegmentedControl/SegmentedControl.module.css?mds-scoped
1118
- var SegmentedControl_module_default = { "group": "mds-SegmentedControl__group", "segment": "mds-SegmentedControl__segment", "fullWidth": "mds-SegmentedControl__fullWidth", "face": "mds-SegmentedControl__face", "input": "mds-SegmentedControl__input" };
1230
+ var SegmentedControl_module_default = { "group": "mds-SegmentedControl__group", "size-md": "mds-SegmentedControl__size-md", "face": "mds-SegmentedControl__face", "size-sm": "mds-SegmentedControl__size-sm", "bare": "mds-SegmentedControl__bare", "segment": "mds-SegmentedControl__segment", "fullWidth": "mds-SegmentedControl__fullWidth", "input": "mds-SegmentedControl__input" };
1119
1231
  function SegmentedControl({
1120
1232
  label,
1121
1233
  options,
@@ -1123,29 +1235,52 @@ function SegmentedControl({
1123
1235
  onChange,
1124
1236
  disabled = false,
1125
1237
  fullWidth = false,
1238
+ size = "md",
1239
+ bare = false,
1126
1240
  className
1127
1241
  }) {
1128
1242
  const name = useId();
1129
- return /* @__PURE__ */ jsx("div", { role: "radiogroup", "aria-label": label, className: cx(SegmentedControl_module_default.group, fullWidth && SegmentedControl_module_default.fullWidth, className), children: options.map((option) => /* @__PURE__ */ jsxs("label", { className: SegmentedControl_module_default.segment, children: [
1130
- /* @__PURE__ */ jsx(
1131
- "input",
1132
- {
1133
- type: "radio",
1134
- name,
1135
- value: option.value,
1136
- checked: option.value === value,
1137
- onChange: () => onChange(option.value),
1138
- disabled,
1139
- className: SegmentedControl_module_default.input
1140
- }
1141
- ),
1142
- /* @__PURE__ */ jsx("span", { className: SegmentedControl_module_default.face, children: option.label })
1143
- ] }, option.value)) });
1243
+ return /* @__PURE__ */ jsx(
1244
+ "div",
1245
+ {
1246
+ role: "radiogroup",
1247
+ "aria-label": label,
1248
+ className: cx(
1249
+ SegmentedControl_module_default.group,
1250
+ SegmentedControl_module_default[`size-${size}`],
1251
+ fullWidth && SegmentedControl_module_default.fullWidth,
1252
+ bare && SegmentedControl_module_default.bare,
1253
+ className
1254
+ ),
1255
+ children: options.map((option) => /* @__PURE__ */ jsxs("label", { className: SegmentedControl_module_default.segment, children: [
1256
+ /* @__PURE__ */ jsx(
1257
+ "input",
1258
+ {
1259
+ type: "radio",
1260
+ name,
1261
+ value: option.value,
1262
+ checked: option.value === value,
1263
+ onChange: () => onChange(option.value),
1264
+ disabled,
1265
+ className: SegmentedControl_module_default.input
1266
+ }
1267
+ ),
1268
+ /* @__PURE__ */ jsx("span", { className: SegmentedControl_module_default.face, children: option.label })
1269
+ ] }, option.value))
1270
+ }
1271
+ );
1144
1272
  }
1145
1273
 
1146
1274
  // mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/SearchField/SearchField.module.css?mds-scoped
1147
- var SearchField_module_default = { "wrap": "mds-SearchField__wrap", "glass": "mds-SearchField__glass", "input": "mds-SearchField__input", "clear": "mds-SearchField__clear", "clearGlyph": "mds-SearchField__clearGlyph" };
1148
- function SearchField({ label, value, onChange, className, ...rest }) {
1275
+ var SearchField_module_default = { "wrap": "mds-SearchField__wrap", "glass": "mds-SearchField__glass", "input": "mds-SearchField__input", "clear": "mds-SearchField__clear mds-hit-area__hitArea", "clearGlyph": "mds-SearchField__clearGlyph" };
1276
+ function SearchField({
1277
+ label,
1278
+ clearLabel,
1279
+ value,
1280
+ onChange,
1281
+ className,
1282
+ ...rest
1283
+ }) {
1149
1284
  return /* @__PURE__ */ jsxs("span", { className: cx(SearchField_module_default.wrap, className), children: [
1150
1285
  /* @__PURE__ */ jsx("svg", { viewBox: "0 0 16 16", "aria-hidden": "true", className: SearchField_module_default.glass, children: /* @__PURE__ */ jsx(
1151
1286
  "path",
@@ -1172,10 +1307,10 @@ function SearchField({ label, value, onChange, className, ...rest }) {
1172
1307
  "button",
1173
1308
  {
1174
1309
  type: "button",
1175
- "aria-label": "Clear search",
1310
+ "aria-label": clearLabel,
1176
1311
  className: SearchField_module_default.clear,
1177
1312
  onClick: () => onChange(""),
1178
- children: /* @__PURE__ */ jsx("svg", { viewBox: "0 0 16 16", "aria-hidden": "true", className: SearchField_module_default.clearGlyph, children: /* @__PURE__ */ jsx("path", { d: "M4 4l8 8M12 4l-8 8", stroke: "currentColor", strokeWidth: "1.75", strokeLinecap: "round" }) })
1313
+ children: /* @__PURE__ */ jsx(CloseGlyph, { className: SearchField_module_default.clearGlyph })
1179
1314
  }
1180
1315
  )
1181
1316
  ] });
@@ -1208,12 +1343,15 @@ function ListItem({
1208
1343
  onClick,
1209
1344
  pressed,
1210
1345
  href,
1346
+ as,
1211
1347
  surface,
1212
1348
  className,
1349
+ ref,
1213
1350
  ...rest
1214
1351
  }) {
1215
1352
  const inGroup = useContext(ListGroupContext);
1216
1353
  const Root = inGroup ? "li" : "div";
1354
+ const LinkElement = as ?? "a";
1217
1355
  const resolved = surface ?? (inGroup ? void 0 : "card");
1218
1356
  const content = /* @__PURE__ */ jsxs(Fragment, { children: [
1219
1357
  leading != null && /* @__PURE__ */ jsx("span", { className: List_module_default.leading, children: leading }),
@@ -1227,8 +1365,9 @@ function ListItem({
1227
1365
  Root,
1228
1366
  {
1229
1367
  className: cx(List_module_default.item, resolved && List_module_default[`surface-${resolved}`], className),
1368
+ ref,
1230
1369
  ...rest,
1231
- children: href !== void 0 ? /* @__PURE__ */ jsx("a", { className: cx(List_module_default.row, List_module_default.interactive), href, children: content }) : onClick !== void 0 ? /* @__PURE__ */ jsx(
1370
+ children: href !== void 0 ? /* @__PURE__ */ jsx(LinkElement, { className: cx(List_module_default.row, List_module_default.interactive), href, children: content }) : onClick !== void 0 ? /* @__PURE__ */ jsx(
1232
1371
  "button",
1233
1372
  {
1234
1373
  type: "button",
@@ -1344,7 +1483,7 @@ function TabPanel({ value, className, children, ...rest }) {
1344
1483
  }
1345
1484
 
1346
1485
  // mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Toast/Toast.module.css?mds-scoped
1347
- var Toast_module_default = { "viewport": "mds-Toast__viewport", "toast": "mds-Toast__toast", "tone-success": "mds-Toast__tone-success", "tone-danger": "mds-Toast__tone-danger", "body": "mds-Toast__body", "title": "mds-Toast__title", "description": "mds-Toast__description", "close": "mds-Toast__close", "closeGlyph": "mds-Toast__closeGlyph" };
1486
+ var Toast_module_default = { "viewport": "mds-Toast__viewport", "toast": "mds-Toast__toast", "tone-success": "mds-Toast__tone-success", "tone-danger": "mds-Toast__tone-danger", "body": "mds-Toast__body", "title": "mds-Toast__title", "description": "mds-Toast__description", "close": "mds-Toast__close mds-hit-area__hitArea", "closeGlyph": "mds-Toast__closeGlyph", "action": "mds-Toast__action mds-hit-area__hitArea" };
1348
1487
  var ToastContext = createContext(null);
1349
1488
  function useToast() {
1350
1489
  const context = useContext(ToastContext);
@@ -1353,18 +1492,25 @@ function useToast() {
1353
1492
  }
1354
1493
  function ToastProvider({
1355
1494
  children,
1356
- regionLabel = "Notifications",
1357
- dismissLabel = "Dismiss"
1495
+ regionLabel,
1496
+ dismissLabel
1358
1497
  }) {
1359
1498
  const [toasts, setToasts] = useState([]);
1360
1499
  const nextId = useRef(1);
1500
+ const leaving = useRef(/* @__PURE__ */ new Map());
1361
1501
  const dismiss = useCallback((id) => {
1362
1502
  setToasts((current) => current.filter((entry) => entry.id !== id));
1503
+ const said = leaving.current.get(id);
1504
+ if (said !== void 0) {
1505
+ leaving.current.delete(id);
1506
+ said();
1507
+ }
1363
1508
  }, []);
1364
1509
  const toast = useCallback(
1365
- ({ title, description, tone = "neutral", duration = 5e3 }) => {
1510
+ ({ title, description, tone = "neutral", duration = 5e3, action, onDismiss }) => {
1366
1511
  const id = nextId.current++;
1367
- setToasts((current) => [...current, { id, title, description, tone }]);
1512
+ if (onDismiss !== void 0) leaving.current.set(id, onDismiss);
1513
+ setToasts((current) => [...current, { id, title, description, tone, action }]);
1368
1514
  if (duration > 0) setTimeout(() => dismiss(id), duration);
1369
1515
  return id;
1370
1516
  },
@@ -1378,6 +1524,18 @@ function ToastProvider({
1378
1524
  /* @__PURE__ */ jsx("span", { className: Toast_module_default.title, children: entry.title }),
1379
1525
  entry.description !== void 0 && /* @__PURE__ */ jsx("span", { className: Toast_module_default.description, children: entry.description })
1380
1526
  ] }),
1527
+ entry.action !== void 0 && /* @__PURE__ */ jsx(
1528
+ "button",
1529
+ {
1530
+ type: "button",
1531
+ className: Toast_module_default.action,
1532
+ onClick: () => {
1533
+ entry.action?.onClick();
1534
+ dismiss(entry.id);
1535
+ },
1536
+ children: entry.action.label
1537
+ }
1538
+ ),
1381
1539
  /* @__PURE__ */ jsx(
1382
1540
  "button",
1383
1541
  {
@@ -1385,7 +1543,7 @@ function ToastProvider({
1385
1543
  "aria-label": `${dismissLabel}: ${entry.title}`,
1386
1544
  className: Toast_module_default.close,
1387
1545
  onClick: () => dismiss(entry.id),
1388
- children: /* @__PURE__ */ jsx("svg", { viewBox: "0 0 16 16", "aria-hidden": "true", className: Toast_module_default.closeGlyph, children: /* @__PURE__ */ jsx("path", { d: "M4 4l8 8M12 4l-8 8", stroke: "currentColor", strokeWidth: "1.75", strokeLinecap: "round" }) })
1546
+ children: /* @__PURE__ */ jsx(CloseGlyph, { className: Toast_module_default.closeGlyph })
1389
1547
  }
1390
1548
  )
1391
1549
  ] }, entry.id)) })
@@ -1453,15 +1611,26 @@ function Container({
1453
1611
 
1454
1612
  // mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Card/Card.module.css?mds-scoped
1455
1613
  var Card_module_default = { "card": "mds-Card__card", "variant-raised": "mds-Card__variant-raised", "variant-sunken": "mds-Card__variant-sunken", "emphasis": "mds-Card__emphasis", "interactive": "mds-Card__interactive", "header": "mds-Card__header", "body": "mds-Card__body", "footer": "mds-Card__footer" };
1456
- function Card({ children, variant = "card", emphasis = false, onClick, href, className, ...rest }) {
1614
+ function Card({ children, variant = "card", emphasis = false, onClick, href, as, className, ref, ...rest }) {
1457
1615
  const cardClass = cx(Card_module_default.card, Card_module_default[`variant-${variant}`], emphasis && Card_module_default.emphasis, className);
1458
1616
  if (href !== void 0) {
1459
- return /* @__PURE__ */ jsx("a", { className: cx(cardClass, Card_module_default.interactive), href, ...rest, children });
1617
+ const Element = as ?? "a";
1618
+ return /* @__PURE__ */ jsx(Element, { className: cx(cardClass, Card_module_default.interactive), href, ref, ...rest, children });
1460
1619
  }
1461
1620
  if (onClick !== void 0) {
1462
- return /* @__PURE__ */ jsx("button", { type: "button", className: cx(cardClass, Card_module_default.interactive), onClick, ...rest, children });
1621
+ return /* @__PURE__ */ jsx(
1622
+ "button",
1623
+ {
1624
+ type: "button",
1625
+ className: cx(cardClass, Card_module_default.interactive),
1626
+ onClick,
1627
+ ref,
1628
+ ...rest,
1629
+ children
1630
+ }
1631
+ );
1463
1632
  }
1464
- return /* @__PURE__ */ jsx("div", { className: cardClass, ...rest, children });
1633
+ return /* @__PURE__ */ jsx("div", { className: cardClass, ref, ...rest, children });
1465
1634
  }
1466
1635
  function CardHeader({ className, ...rest }) {
1467
1636
  return /* @__PURE__ */ jsx("div", { className: cx(Card_module_default.header, className), ...rest });
@@ -1515,7 +1684,7 @@ function ConfirmDialog({
1515
1684
  title,
1516
1685
  description,
1517
1686
  confirmLabel,
1518
- cancelLabel = "Cancel",
1687
+ cancelLabel,
1519
1688
  tone = "default",
1520
1689
  errorMessage
1521
1690
  }) {
@@ -1584,9 +1753,9 @@ function ScreenContent({ children, flush = false, className, ref, ...rest }) {
1584
1753
 
1585
1754
  // mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/AppBar/AppBar.module.css?mds-scoped
1586
1755
  var AppBar_module_default = { "bar": "mds-AppBar__bar", "title": "mds-AppBar__title", "text": "mds-AppBar__text", "subtitle": "mds-AppBar__subtitle", "slot": "mds-AppBar__slot", "trailing": "mds-AppBar__trailing" };
1587
- function AppBar({ title, subtitle, leading, trailing }) {
1756
+ function AppBar({ title, subtitle, leading, trailing, className, ref, ...rest }) {
1588
1757
  const heading = title ? /* @__PURE__ */ jsx("h1", { className: AppBar_module_default.title, children: title }) : null;
1589
- return /* @__PURE__ */ jsxs("header", { className: AppBar_module_default.bar, children: [
1758
+ return /* @__PURE__ */ jsxs("header", { ref, className: cx(AppBar_module_default.bar, className), ...rest, children: [
1590
1759
  leading ? /* @__PURE__ */ jsx("div", { className: AppBar_module_default.slot, children: leading }) : null,
1591
1760
  subtitle != null ? /* @__PURE__ */ jsxs("div", { className: AppBar_module_default.text, children: [
1592
1761
  heading,
@@ -1601,23 +1770,679 @@ var TabBar_module_default = { "bar": "mds-TabBar__bar", "item": "mds-TabBar__ite
1601
1770
  function TabBar({ label, children }) {
1602
1771
  return /* @__PURE__ */ jsx("nav", { "aria-label": label, className: TabBar_module_default.bar, children });
1603
1772
  }
1604
- function TabBarItem({ label, icon, href, onClick, active = false, badge = false }) {
1773
+ function TabBarItem({
1774
+ label,
1775
+ icon,
1776
+ href,
1777
+ onClick,
1778
+ active = false,
1779
+ badge = false,
1780
+ as,
1781
+ hideLabel = false
1782
+ }) {
1605
1783
  const className = cx(TabBar_module_default.item, active && TabBar_module_default.active);
1606
1784
  const content = /* @__PURE__ */ jsxs(Fragment, { children: [
1607
1785
  /* @__PURE__ */ jsxs("span", { className: TabBar_module_default.icon, "aria-hidden": "true", children: [
1608
1786
  icon,
1609
1787
  badge ? /* @__PURE__ */ jsx("span", { className: TabBar_module_default.badge, "data-testid": "mds-tabbar-badge" }) : null
1610
1788
  ] }),
1611
- /* @__PURE__ */ jsx("span", { className: TabBar_module_default.label, children: label })
1789
+ hideLabel ? /* @__PURE__ */ jsx(VisuallyHidden, { children: label }) : /* @__PURE__ */ jsx("span", { className: TabBar_module_default.label, children: label })
1612
1790
  ] });
1613
1791
  if (href !== void 0) {
1614
- return /* @__PURE__ */ jsx("a", { href, className, "aria-current": active ? "page" : void 0, onClick, children: content });
1792
+ const Element = as ?? "a";
1793
+ return /* @__PURE__ */ jsx(Element, { href, className, "aria-current": active ? "page" : void 0, onClick, children: content });
1615
1794
  }
1616
1795
  return /* @__PURE__ */ jsx("button", { type: "button", className, "aria-current": active ? "page" : void 0, onClick, children: content });
1617
1796
  }
1618
1797
  function TabBarAction({ label, icon, onClick }) {
1619
1798
  return /* @__PURE__ */ jsx("button", { type: "button", "aria-label": label, className: TabBar_module_default.action, onClick, children: /* @__PURE__ */ jsx("span", { className: TabBar_module_default.icon, "aria-hidden": "true", children: icon }) });
1620
1799
  }
1800
+
1801
+ // mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/MediaPlaceholder/MediaPlaceholder.module.css?mds-scoped
1802
+ var MediaPlaceholder_module_default = { "media": "mds-MediaPlaceholder__media", "fill": "mds-MediaPlaceholder__fill", "image": "mds-MediaPlaceholder__image", "caption": "mds-MediaPlaceholder__caption", "cover": "mds-MediaPlaceholder__cover", "blurred": "mds-MediaPlaceholder__blurred" };
1803
+ function MediaPlaceholder({
1804
+ aspect,
1805
+ src,
1806
+ alt = "",
1807
+ glyph,
1808
+ caption,
1809
+ blurred = false,
1810
+ cover,
1811
+ className,
1812
+ style,
1813
+ ...rest
1814
+ }) {
1815
+ const [failed, setFailed] = useState();
1816
+ const picture = src !== void 0 && failed !== src;
1817
+ const vars = aspect === void 0 ? {} : { "--media-aspect": aspect };
1818
+ return /* @__PURE__ */ jsxs(
1819
+ "div",
1820
+ {
1821
+ className: cx(MediaPlaceholder_module_default.media, blurred && MediaPlaceholder_module_default.blurred, className),
1822
+ style: { ...vars, ...style },
1823
+ ...rest,
1824
+ children: [
1825
+ picture ? /* @__PURE__ */ jsx(
1826
+ "img",
1827
+ {
1828
+ className: MediaPlaceholder_module_default.image,
1829
+ src,
1830
+ alt,
1831
+ loading: "lazy",
1832
+ decoding: "async",
1833
+ onError: () => setFailed(src)
1834
+ }
1835
+ ) : /* @__PURE__ */ jsxs("div", { className: MediaPlaceholder_module_default.fill, "aria-hidden": "true", children: [
1836
+ glyph,
1837
+ caption !== void 0 && /* @__PURE__ */ jsx(Text, { variant: "meta", children: caption })
1838
+ ] }),
1839
+ picture && caption !== void 0 && /* @__PURE__ */ jsx(Text, { variant: "meta", tone: "on-media", className: MediaPlaceholder_module_default.caption, children: caption }),
1840
+ cover !== void 0 && /* @__PURE__ */ jsx("div", { className: MediaPlaceholder_module_default.cover, children: cover })
1841
+ ]
1842
+ }
1843
+ );
1844
+ }
1845
+
1846
+ // mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/ImageCarousel/ImageCarousel.module.css?mds-scoped
1847
+ var ImageCarousel_module_default = { "carousel": "mds-ImageCarousel__carousel", "viewport": "mds-ImageCarousel__viewport", "slide": "mds-ImageCarousel__slide", "step": "mds-ImageCarousel__step", "zoom": "mds-ImageCarousel__zoom", "prev": "mds-ImageCarousel__prev", "next": "mds-ImageCarousel__next", "counter": "mds-ImageCarousel__counter", "thumbs": "mds-ImageCarousel__thumbs", "thumb": "mds-ImageCarousel__thumb", "more": "mds-ImageCarousel__more", "dots": "mds-ImageCarousel__dots", "dot": "mds-ImageCarousel__dot" };
1848
+ var SWIPE_THRESHOLD = 40;
1849
+ function ImageCarousel({
1850
+ slides,
1851
+ labels,
1852
+ index,
1853
+ defaultIndex = 0,
1854
+ onIndexChange,
1855
+ pager = "thumbnails",
1856
+ maxThumbnails = 4,
1857
+ onZoom,
1858
+ zoomIcon,
1859
+ zoomLabel,
1860
+ className,
1861
+ ...rest
1862
+ }) {
1863
+ const [ownIndex, setOwnIndex] = useState(defaultIndex);
1864
+ const swipeStart = useRef(null);
1865
+ const held = index !== void 0;
1866
+ const last = slides.length - 1;
1867
+ const current = Math.min(Math.max(held ? index : ownIndex, 0), last);
1868
+ const many = slides.length > 1;
1869
+ const slide = slides[current];
1870
+ if (slide === void 0) return null;
1871
+ const goTo = (next) => {
1872
+ const clamped = Math.min(Math.max(next, 0), last);
1873
+ if (clamped === current) return;
1874
+ if (!held) setOwnIndex(clamped);
1875
+ onIndexChange?.(clamped);
1876
+ };
1877
+ const onKeyDown = (event) => {
1878
+ if (!many) return;
1879
+ const step = {
1880
+ ArrowLeft: current - 1,
1881
+ ArrowRight: current + 1,
1882
+ Home: 0,
1883
+ End: last
1884
+ };
1885
+ const next = step[event.key];
1886
+ if (next === void 0) return;
1887
+ event.preventDefault();
1888
+ goTo(next);
1889
+ };
1890
+ const onPointerUp = (event) => {
1891
+ const start = swipeStart.current;
1892
+ swipeStart.current = null;
1893
+ if (start === null) return;
1894
+ const travelled = event.clientX - start;
1895
+ if (Math.abs(travelled) < SWIPE_THRESHOLD) {
1896
+ const onControl = event.target.closest("button") !== null;
1897
+ if (onZoom !== void 0 && !onControl && slide.covered !== true) onZoom(current);
1898
+ return;
1899
+ }
1900
+ if (many) goTo(travelled < 0 ? current + 1 : current - 1);
1901
+ };
1902
+ const shown = pager === "thumbnails" ? slides.slice(0, maxThumbnails) : [];
1903
+ const hidden = slides.length - shown.length;
1904
+ const counted = labels.counter(current + 1, slides.length);
1905
+ return /* @__PURE__ */ jsxs(
1906
+ "section",
1907
+ {
1908
+ className: cx(ImageCarousel_module_default.carousel, className),
1909
+ "aria-roledescription": labels.carouselRole,
1910
+ "aria-label": labels.region,
1911
+ tabIndex: 0,
1912
+ onKeyDown,
1913
+ ...rest,
1914
+ children: [
1915
+ /* @__PURE__ */ jsxs(
1916
+ "div",
1917
+ {
1918
+ className: ImageCarousel_module_default.viewport,
1919
+ onPointerDown: (event) => {
1920
+ swipeStart.current = event.clientX;
1921
+ },
1922
+ onPointerUp,
1923
+ onPointerCancel: () => {
1924
+ swipeStart.current = null;
1925
+ },
1926
+ children: [
1927
+ /* @__PURE__ */ jsx("div", { className: ImageCarousel_module_default.slide, role: "group", "aria-roledescription": labels.slideRole, "aria-label": counted, children: /* @__PURE__ */ jsx(
1928
+ MediaPlaceholder,
1929
+ {
1930
+ aspect: slide.aspect ?? "4 / 3",
1931
+ ...slide.src === void 0 ? {} : { src: slide.src },
1932
+ ...slide.alt === void 0 ? {} : { alt: slide.alt },
1933
+ ...slide.caption === void 0 ? {} : { caption: slide.caption },
1934
+ blurred: slide.covered === true,
1935
+ ...slide.cover === void 0 ? {} : { cover: slide.cover }
1936
+ }
1937
+ ) }),
1938
+ onZoom !== void 0 && slide.covered !== true && /* @__PURE__ */ jsx(
1939
+ Button,
1940
+ {
1941
+ className: ImageCarousel_module_default.zoom,
1942
+ variant: "secondary",
1943
+ size: "sm",
1944
+ iconOnly: true,
1945
+ "aria-label": zoomLabel,
1946
+ onClick: () => onZoom(current),
1947
+ children: zoomIcon
1948
+ }
1949
+ ),
1950
+ many && /* @__PURE__ */ jsxs(Fragment, { children: [
1951
+ /* @__PURE__ */ jsx(
1952
+ Button,
1953
+ {
1954
+ className: cx(ImageCarousel_module_default.step, ImageCarousel_module_default.prev),
1955
+ variant: "secondary",
1956
+ size: "sm",
1957
+ iconOnly: true,
1958
+ "aria-label": labels.previous,
1959
+ disabled: current === 0,
1960
+ onClick: () => goTo(current - 1),
1961
+ children: /* @__PURE__ */ jsx(ChevronLeftGlyph, {})
1962
+ }
1963
+ ),
1964
+ /* @__PURE__ */ jsx(
1965
+ Button,
1966
+ {
1967
+ className: cx(ImageCarousel_module_default.step, ImageCarousel_module_default.next),
1968
+ variant: "secondary",
1969
+ size: "sm",
1970
+ iconOnly: true,
1971
+ "aria-label": labels.next,
1972
+ disabled: current === last,
1973
+ onClick: () => goTo(current + 1),
1974
+ children: /* @__PURE__ */ jsx(ChevronRightGlyph, {})
1975
+ }
1976
+ ),
1977
+ /* @__PURE__ */ jsx(Text, { variant: "meta", className: ImageCarousel_module_default.counter, "aria-live": "polite", children: counted })
1978
+ ] })
1979
+ ]
1980
+ }
1981
+ ),
1982
+ many && pager === "thumbnails" && /* @__PURE__ */ jsxs("div", { className: ImageCarousel_module_default.thumbs, children: [
1983
+ shown.map((frame, position) => /* @__PURE__ */ jsx(
1984
+ "button",
1985
+ {
1986
+ type: "button",
1987
+ className: ImageCarousel_module_default.thumb,
1988
+ "aria-label": labels.slide(position + 1),
1989
+ "aria-current": position === current ? "true" : void 0,
1990
+ onClick: () => goTo(position),
1991
+ children: /* @__PURE__ */ jsx(
1992
+ MediaPlaceholder,
1993
+ {
1994
+ aspect: "1 / 1",
1995
+ ...frame.src === void 0 ? {} : { src: frame.src },
1996
+ blurred: frame.covered === true
1997
+ }
1998
+ )
1999
+ },
2000
+ frame.id
2001
+ )),
2002
+ hidden > 0 && /* @__PURE__ */ jsx(
2003
+ "button",
2004
+ {
2005
+ type: "button",
2006
+ className: cx(ImageCarousel_module_default.thumb, ImageCarousel_module_default.more),
2007
+ "aria-label": labels.more(hidden),
2008
+ onClick: () => goTo(shown.length),
2009
+ children: /* @__PURE__ */ jsxs(Text, { variant: "meta", children: [
2010
+ "+",
2011
+ hidden
2012
+ ] })
2013
+ }
2014
+ )
2015
+ ] }),
2016
+ many && pager === "dots" && /* @__PURE__ */ jsx("div", { className: ImageCarousel_module_default.dots, children: slides.map((frame, position) => /* @__PURE__ */ jsx(
2017
+ "button",
2018
+ {
2019
+ type: "button",
2020
+ className: ImageCarousel_module_default.dot,
2021
+ "aria-label": labels.slide(position + 1),
2022
+ "aria-current": position === current ? "true" : void 0,
2023
+ onClick: () => goTo(position)
2024
+ },
2025
+ frame.id
2026
+ )) })
2027
+ ]
2028
+ }
2029
+ );
2030
+ }
2031
+
2032
+ // mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/UploadProgress/UploadProgress.module.css?mds-scoped
2033
+ var UploadProgress_module_default = { "upload": "mds-UploadProgress__upload", "head": "mds-UploadProgress__head", "preview": "mds-UploadProgress__preview", "mark": "mds-UploadProgress__mark", "name": "mds-UploadProgress__name", "foot": "mds-UploadProgress__foot", "status-done": "mds-UploadProgress__status-done", "status-error": "mds-UploadProgress__status-error" };
2034
+ function UploadProgress({
2035
+ name,
2036
+ labels,
2037
+ preview,
2038
+ mark,
2039
+ value,
2040
+ status = "uploading",
2041
+ detail,
2042
+ error,
2043
+ onCancel,
2044
+ onRetry,
2045
+ onRemove,
2046
+ className,
2047
+ ...rest
2048
+ }) {
2049
+ const running = status === "uploading" || status === "processing";
2050
+ return /* @__PURE__ */ jsxs("div", { className: cx(UploadProgress_module_default.upload, UploadProgress_module_default[`status-${status}`], className), ...rest, children: [
2051
+ /* @__PURE__ */ jsxs("div", { className: UploadProgress_module_default.head, children: [
2052
+ preview !== void 0 && /* @__PURE__ */ jsx("div", { className: UploadProgress_module_default.preview, children: preview }),
2053
+ mark !== void 0 && /* @__PURE__ */ jsx("span", { className: UploadProgress_module_default.mark, children: mark }),
2054
+ /* @__PURE__ */ jsx(Text, { variant: "label", truncate: true, className: UploadProgress_module_default.name, children: name }),
2055
+ running && onCancel !== void 0 && /* @__PURE__ */ jsx(Button, { iconOnly: true, size: "sm", variant: "ghost", "aria-label": labels.cancel, onClick: onCancel, children: /* @__PURE__ */ jsx(CloseGlyph, {}) }),
2056
+ !running && onRemove !== void 0 && /* @__PURE__ */ jsx(Button, { iconOnly: true, size: "sm", variant: "ghost", "aria-label": labels.remove, onClick: onRemove, children: /* @__PURE__ */ jsx(CloseGlyph, {}) }),
2057
+ status === "error" && onRetry !== void 0 && /* @__PURE__ */ jsx(Button, { size: "sm", variant: "secondary", onClick: onRetry, children: labels.retry })
2058
+ ] }),
2059
+ running && /* @__PURE__ */ jsx(
2060
+ ProgressBar,
2061
+ {
2062
+ label: `${labels[status]} ${name}`,
2063
+ value: value ?? 0,
2064
+ indeterminate: status === "processing",
2065
+ ...detail === void 0 ? {} : { valueText: detail }
2066
+ }
2067
+ ),
2068
+ /* @__PURE__ */ jsx("div", { className: UploadProgress_module_default.foot, children: status === "error" ? /* @__PURE__ */ jsx(Text, { variant: "meta", tone: "danger", role: "alert", children: error ?? labels.error }) : /* @__PURE__ */ jsxs(Fragment, { children: [
2069
+ status !== "uploading" && /* @__PURE__ */ jsx(Text, { variant: "meta", children: labels[status] }),
2070
+ detail !== void 0 && /* @__PURE__ */ jsx(Text, { variant: "meta", children: detail })
2071
+ ] }) })
2072
+ ] });
2073
+ }
2074
+
2075
+ // mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Lightbox/Lightbox.module.css?mds-scoped
2076
+ var Lightbox_module_default = { "panel": "mds-Lightbox__panel", "bar": "mds-Lightbox__bar", "surface": "mds-Lightbox__surface", "image": "mds-Lightbox__image", "caption": "mds-Lightbox__caption" };
2077
+ var MIN_SCALE = 1;
2078
+ var MAX_SCALE = 4;
2079
+ var STEP = 1;
2080
+ var DOUBLE = 2.5;
2081
+ var WHEEL = 0.01;
2082
+ var ORIGIN = { x: 0, y: 0 };
2083
+ var clamp = (value, low, high) => Math.min(Math.max(value, low), high);
2084
+ var round = (value) => Math.round(value * 1e3) / 1e3;
2085
+ var distance = (a, b) => Math.hypot(a.x - b.x, a.y - b.y);
2086
+ function Lightbox({ open, onClose, src, alt = "", caption, labels }) {
2087
+ const [surface, setSurface] = useState(null);
2088
+ const [scale, setScale] = useState(MIN_SCALE);
2089
+ const [offset, setOffset] = useState(ORIGIN);
2090
+ const points = useRef(/* @__PURE__ */ new Map());
2091
+ const from = useRef({ spread: 0, scale: MIN_SCALE, x: 0, y: 0, offset: ORIGIN });
2092
+ const [shown, setShown] = useState({ src, open });
2093
+ if (shown.src !== src || shown.open !== open) {
2094
+ setShown({ src, open });
2095
+ setScale(MIN_SCALE);
2096
+ setOffset(ORIGIN);
2097
+ }
2098
+ useEffect(() => {
2099
+ points.current.clear();
2100
+ }, [src, open]);
2101
+ const hold = useCallback(
2102
+ (next, at2) => {
2103
+ const box = surface?.getBoundingClientRect();
2104
+ if (!box) return ORIGIN;
2105
+ const room = { x: box.width * (at2 - 1) / 2, y: box.height * (at2 - 1) / 2 };
2106
+ return { x: clamp(next.x, -room.x, room.x), y: clamp(next.y, -room.y, room.y) };
2107
+ },
2108
+ [surface]
2109
+ );
2110
+ const zoom = useCallback(
2111
+ (to) => {
2112
+ const next = clamp(round(to), MIN_SCALE, MAX_SCALE);
2113
+ setScale(next);
2114
+ setOffset((current) => hold(current, next));
2115
+ },
2116
+ [hold]
2117
+ );
2118
+ const at = useRef(scale);
2119
+ useEffect(() => {
2120
+ at.current = scale;
2121
+ }, [scale]);
2122
+ useEffect(() => {
2123
+ if (!surface) return;
2124
+ const onWheel = (event) => {
2125
+ if (!event.ctrlKey) return;
2126
+ event.preventDefault();
2127
+ zoom(at.current * Math.exp(-event.deltaY * WHEEL));
2128
+ };
2129
+ surface.addEventListener("wheel", onWheel, { passive: false });
2130
+ return () => surface.removeEventListener("wheel", onWheel);
2131
+ }, [surface, zoom]);
2132
+ function onPointerDown(event) {
2133
+ points.current.set(event.pointerId, { x: event.clientX, y: event.clientY });
2134
+ const [first, second] = [...points.current.values()];
2135
+ if (first && second) {
2136
+ from.current = { ...from.current, spread: distance(first, second), scale };
2137
+ return;
2138
+ }
2139
+ if (first) from.current = { ...from.current, x: first.x, y: first.y, offset };
2140
+ }
2141
+ function onPointerMove(event) {
2142
+ if (!points.current.has(event.pointerId)) return;
2143
+ points.current.set(event.pointerId, { x: event.clientX, y: event.clientY });
2144
+ const [first, second] = [...points.current.values()];
2145
+ if (!first) return;
2146
+ if (second) {
2147
+ const spread = distance(first, second);
2148
+ if (from.current.spread === 0) return;
2149
+ zoom(from.current.scale * (spread / from.current.spread));
2150
+ return;
2151
+ }
2152
+ if (scale <= MIN_SCALE) return;
2153
+ setOffset(
2154
+ hold(
2155
+ {
2156
+ x: from.current.offset.x + (first.x - from.current.x),
2157
+ y: from.current.offset.y + (first.y - from.current.y)
2158
+ },
2159
+ scale
2160
+ )
2161
+ );
2162
+ }
2163
+ function onPointerUp(event) {
2164
+ points.current.delete(event.pointerId);
2165
+ const [rest] = [...points.current.values()];
2166
+ if (rest) from.current = { ...from.current, x: rest.x, y: rest.y, offset };
2167
+ }
2168
+ const vars = {
2169
+ "--zoom": String(round(scale)),
2170
+ "--pan-x": `${round(offset.x)}px`,
2171
+ "--pan-y": `${round(offset.y)}px`
2172
+ };
2173
+ return /* @__PURE__ */ jsxs(
2174
+ Overlay,
2175
+ {
2176
+ open,
2177
+ onClose,
2178
+ label: labels.dialog,
2179
+ variant: "lightbox",
2180
+ closeOnScrimClick: false,
2181
+ panelClassName: Lightbox_module_default.panel,
2182
+ children: [
2183
+ /* @__PURE__ */ jsxs("div", { className: Lightbox_module_default.bar, children: [
2184
+ /* @__PURE__ */ jsx(
2185
+ Button,
2186
+ {
2187
+ iconOnly: true,
2188
+ "aria-label": labels.zoomOut,
2189
+ variant: "ghost",
2190
+ onMedia: true,
2191
+ disabled: scale <= MIN_SCALE,
2192
+ onClick: () => zoom(scale - STEP),
2193
+ children: /* @__PURE__ */ jsx(ZoomOutGlyph, {})
2194
+ }
2195
+ ),
2196
+ /* @__PURE__ */ jsx(
2197
+ Button,
2198
+ {
2199
+ iconOnly: true,
2200
+ "aria-label": labels.zoomIn,
2201
+ variant: "ghost",
2202
+ onMedia: true,
2203
+ disabled: scale >= MAX_SCALE,
2204
+ onClick: () => zoom(scale + STEP),
2205
+ children: /* @__PURE__ */ jsx(ZoomInGlyph, {})
2206
+ }
2207
+ ),
2208
+ /* @__PURE__ */ jsx(Button, { iconOnly: true, "aria-label": labels.close, variant: "ghost", onMedia: true, onClick: onClose, children: /* @__PURE__ */ jsx(CloseGlyph, {}) })
2209
+ ] }),
2210
+ /* @__PURE__ */ jsx(
2211
+ "div",
2212
+ {
2213
+ ref: setSurface,
2214
+ className: Lightbox_module_default.surface,
2215
+ onPointerDown,
2216
+ onPointerMove,
2217
+ onPointerUp,
2218
+ onPointerCancel: onPointerUp,
2219
+ onDoubleClick: () => zoom(scale > MIN_SCALE ? MIN_SCALE : DOUBLE),
2220
+ children: /* @__PURE__ */ jsx("img", { className: Lightbox_module_default.image, src, alt, draggable: false, style: vars })
2221
+ }
2222
+ ),
2223
+ caption !== void 0 && /* @__PURE__ */ jsx(Text, { variant: "meta", tone: "on-media", className: Lightbox_module_default.caption, children: caption })
2224
+ ]
2225
+ }
2226
+ );
2227
+ }
2228
+
2229
+ // mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/VideoPlayer/VideoPlayer.module.css?mds-scoped
2230
+ var VideoPlayer_module_default = { "player": "mds-VideoPlayer__player", "frame": "mds-VideoPlayer__frame", "media": "mds-VideoPlayer__media", "covered": "mds-VideoPlayer__covered", "start": "mds-VideoPlayer__start", "startGlyph": "mds-VideoPlayer__startGlyph", "cover": "mds-VideoPlayer__cover", "controls": "mds-VideoPlayer__controls", "scrub": "mds-VideoPlayer__scrub", "time": "mds-VideoPlayer__time", "chapters": "mds-VideoPlayer__chapters", "chapter": "mds-VideoPlayer__chapter", "chapterAt": "mds-VideoPlayer__chapterAt" };
2231
+ var FIRST_FRAME_S = 1e-3;
2232
+ var SECONDS_IN_MINUTE = 60;
2233
+ var SECONDS_IN_HOUR = 3600;
2234
+ function clock(seconds) {
2235
+ if (!Number.isFinite(seconds) || seconds < 0) return "0:00";
2236
+ const whole = Math.floor(seconds);
2237
+ const s = whole % SECONDS_IN_MINUTE;
2238
+ const m = Math.floor(whole / SECONDS_IN_MINUTE) % SECONDS_IN_MINUTE;
2239
+ const h = Math.floor(whole / SECONDS_IN_HOUR);
2240
+ const ss = String(s).padStart(2, "0");
2241
+ return h > 0 ? `${h}:${String(m).padStart(2, "0")}:${ss}` : `${m}:${ss}`;
2242
+ }
2243
+ function VideoPlayer({
2244
+ src,
2245
+ poster,
2246
+ labels,
2247
+ chapters,
2248
+ chaptersLabel,
2249
+ onChapterSelect,
2250
+ captions,
2251
+ captionsLabel,
2252
+ autoPlay = false,
2253
+ covered = false,
2254
+ cover,
2255
+ className,
2256
+ ref,
2257
+ ...rest
2258
+ }) {
2259
+ const media = useRef(null);
2260
+ const root = useRef(null);
2261
+ const [playing, setPlaying] = useState(false);
2262
+ const [muted, setMuted] = useState(false);
2263
+ const [at, setAt] = useState(0);
2264
+ const [length, setLength] = useState(0);
2265
+ const [isFullscreen, setFullscreen] = useState(false);
2266
+ function toggle() {
2267
+ const el = media.current;
2268
+ if (!el) return;
2269
+ if (playing) el.pause();
2270
+ else void el.play();
2271
+ }
2272
+ function toggleSound() {
2273
+ const el = media.current;
2274
+ if (!el) return;
2275
+ const next = !muted;
2276
+ el.muted = next;
2277
+ setMuted(next);
2278
+ }
2279
+ function onMetadata(event) {
2280
+ const el = event.currentTarget;
2281
+ setLength(el.duration);
2282
+ if (poster === void 0 && el.currentTime === 0) el.currentTime = FIRST_FRAME_S;
2283
+ }
2284
+ function goTo(seconds) {
2285
+ const el = media.current;
2286
+ if (el) el.currentTime = seconds;
2287
+ setAt(seconds);
2288
+ }
2289
+ function toggleCaptions() {
2290
+ const track = media.current?.textTracks?.[0];
2291
+ if (track) track.mode = track.mode === "showing" ? "disabled" : "showing";
2292
+ }
2293
+ function selectChapter(chapter) {
2294
+ goTo(chapter.at);
2295
+ onChapterSelect?.(chapter.at);
2296
+ }
2297
+ useEffect(() => {
2298
+ const read = () => setFullscreen(document.fullscreenElement === root.current);
2299
+ document.addEventListener("fullscreenchange", read);
2300
+ return () => document.removeEventListener("fullscreenchange", read);
2301
+ }, []);
2302
+ function toggleFullscreen() {
2303
+ if (isFullscreen) {
2304
+ void document.exitFullscreen?.();
2305
+ return;
2306
+ }
2307
+ const box = root.current;
2308
+ if (box?.requestFullscreen) {
2309
+ void box.requestFullscreen();
2310
+ return;
2311
+ }
2312
+ media.current?.webkitEnterFullscreen?.();
2313
+ }
2314
+ return /* @__PURE__ */ jsxs(
2315
+ "section",
2316
+ {
2317
+ className: cx(VideoPlayer_module_default.player, covered && VideoPlayer_module_default.covered, className),
2318
+ "aria-label": labels.region,
2319
+ ref: (node) => {
2320
+ root.current = node;
2321
+ if (typeof ref === "function") ref(node);
2322
+ else if (ref) ref.current = node;
2323
+ },
2324
+ ...rest,
2325
+ children: [
2326
+ /* @__PURE__ */ jsxs("div", { className: VideoPlayer_module_default.frame, children: [
2327
+ /* @__PURE__ */ jsx(
2328
+ "video",
2329
+ {
2330
+ ref: media,
2331
+ className: VideoPlayer_module_default.media,
2332
+ src,
2333
+ poster,
2334
+ autoPlay: autoPlay && !covered,
2335
+ playsInline: true,
2336
+ preload: "metadata",
2337
+ onPlay: () => setPlaying(true),
2338
+ onPause: () => setPlaying(false),
2339
+ onTimeUpdate: (event) => setAt(event.currentTarget.currentTime),
2340
+ onLoadedMetadata: onMetadata,
2341
+ children: captions !== void 0 && /* @__PURE__ */ jsx(
2342
+ "track",
2343
+ {
2344
+ kind: "captions",
2345
+ src: captions.src,
2346
+ srcLang: captions.lang,
2347
+ label: captions.label,
2348
+ default: captions.defaultOn
2349
+ }
2350
+ )
2351
+ }
2352
+ ),
2353
+ !playing && !covered && /* The picture is the target here; the control row below says the same
2354
+ thing in words, so this one is not said twice. */
2355
+ /* @__PURE__ */ jsx("button", { type: "button", className: VideoPlayer_module_default.start, onClick: toggle, "aria-hidden": "true", tabIndex: -1, children: /* @__PURE__ */ jsx("span", { className: VideoPlayer_module_default.startGlyph, children: /* @__PURE__ */ jsx(PlayGlyph, {}) }) }),
2356
+ cover !== void 0 && /* @__PURE__ */ jsx("div", { className: VideoPlayer_module_default.cover, children: cover })
2357
+ ] }),
2358
+ /* @__PURE__ */ jsxs("div", { className: VideoPlayer_module_default.controls, children: [
2359
+ /* @__PURE__ */ jsx(
2360
+ Button,
2361
+ {
2362
+ iconOnly: true,
2363
+ "aria-label": playing ? labels.pause : labels.play,
2364
+ variant: "ghost",
2365
+ size: "sm",
2366
+ onClick: toggle,
2367
+ children: playing ? /* @__PURE__ */ jsx(PauseGlyph, {}) : /* @__PURE__ */ jsx(PlayGlyph, {})
2368
+ }
2369
+ ),
2370
+ /* @__PURE__ */ jsx(
2371
+ "input",
2372
+ {
2373
+ type: "range",
2374
+ className: VideoPlayer_module_default.scrub,
2375
+ "aria-label": labels.seek,
2376
+ min: 0,
2377
+ max: length || 0,
2378
+ step: 1,
2379
+ value: Math.min(at, length || 0),
2380
+ onChange: (event) => goTo(Number(event.target.value))
2381
+ }
2382
+ ),
2383
+ /* @__PURE__ */ jsx(Text, { variant: "meta", className: VideoPlayer_module_default.time, children: `${clock(at)} / ${clock(length)}` }),
2384
+ /* @__PURE__ */ jsx(
2385
+ Button,
2386
+ {
2387
+ iconOnly: true,
2388
+ "aria-label": muted ? labels.unmute : labels.mute,
2389
+ variant: "ghost",
2390
+ size: "sm",
2391
+ onClick: toggleSound,
2392
+ children: muted ? /* @__PURE__ */ jsx(VolumeOffGlyph, {}) : /* @__PURE__ */ jsx(VolumeGlyph, {})
2393
+ }
2394
+ ),
2395
+ captions !== void 0 && /* @__PURE__ */ jsx(
2396
+ Button,
2397
+ {
2398
+ iconOnly: true,
2399
+ "aria-label": captionsLabel,
2400
+ variant: "ghost",
2401
+ size: "sm",
2402
+ "aria-pressed": captions.defaultOn ?? false,
2403
+ onClick: toggleCaptions,
2404
+ children: /* @__PURE__ */ jsx(CaptionsGlyph, {})
2405
+ }
2406
+ ),
2407
+ /* @__PURE__ */ jsx(
2408
+ Button,
2409
+ {
2410
+ iconOnly: true,
2411
+ "aria-label": isFullscreen ? labels.exitFullscreen : labels.fullscreen,
2412
+ variant: "ghost",
2413
+ size: "sm",
2414
+ onClick: toggleFullscreen,
2415
+ children: isFullscreen ? /* @__PURE__ */ jsx(FullscreenExitGlyph, {}) : /* @__PURE__ */ jsx(FullscreenGlyph, {})
2416
+ }
2417
+ )
2418
+ ] }),
2419
+ chapters !== void 0 && chapters.length > 0 && /* @__PURE__ */ jsx("ul", { className: VideoPlayer_module_default.chapters, "aria-label": chaptersLabel, children: chapters.map((chapter) => /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsxs(Button, { variant: "ghost", size: "sm", className: VideoPlayer_module_default.chapter, onClick: () => selectChapter(chapter), children: [
2420
+ /* @__PURE__ */ jsx(Text, { variant: "meta", className: VideoPlayer_module_default.chapterAt, children: clock(chapter.at) }),
2421
+ /* @__PURE__ */ jsx(Text, { variant: "body", children: chapter.label })
2422
+ ] }) }, chapter.at)) })
2423
+ ]
2424
+ }
2425
+ );
2426
+ }
2427
+
2428
+ // mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Breadcrumb/Breadcrumb.module.css?mds-scoped
2429
+ var Breadcrumb_module_default = { "crumbs": "mds-Breadcrumb__crumbs", "list": "mds-Breadcrumb__list", "item": "mds-Breadcrumb__item", "separator": "mds-Breadcrumb__separator", "link": "mds-Breadcrumb__link" };
2430
+ function Breadcrumb({
2431
+ items,
2432
+ label,
2433
+ linkAs = "a",
2434
+ className,
2435
+ ...rest
2436
+ }) {
2437
+ if (items.length === 0) return null;
2438
+ return /* @__PURE__ */ jsx("nav", { "aria-label": label, className: cx(Breadcrumb_module_default.crumbs, className), ...rest, children: /* @__PURE__ */ jsx("ol", { className: Breadcrumb_module_default.list, children: items.map((item, index) => {
2439
+ const last = index === items.length - 1;
2440
+ return /* @__PURE__ */ jsxs("li", { className: Breadcrumb_module_default.item, children: [
2441
+ index > 0 && /* @__PURE__ */ jsx(ChevronRightGlyph, { className: Breadcrumb_module_default.separator }),
2442
+ last || item.href === void 0 ? /* @__PURE__ */ jsx(Text, { variant: "meta", tone: last ? "primary" : "muted", "aria-current": last ? "page" : void 0, children: item.label }) : /* @__PURE__ */ jsx(Link, { variant: "plain", size: "xs", as: linkAs, href: item.href, className: Breadcrumb_module_default.link, children: item.label })
2443
+ ] }, `${item.label}-${index}`);
2444
+ }) }) });
2445
+ }
1621
2446
  function useRovingGroup(ref, { selector, orientation = "horizontal" }) {
1622
2447
  return useCallback(
1623
2448
  (event) => {
@@ -1643,6 +2468,6 @@ function useRovingGroup(ref, { selector, orientation = "horizontal" }) {
1643
2468
  );
1644
2469
  }
1645
2470
 
1646
- export { AppBar, Avatar, AvatarGroup, Badge, Button, Card, CardBody, CardFooter, CardHeader, Checkbox, Chip, ChipBar, ChipGroup, ConfirmDialog, Container, CountButton, DateTimePicker, Divider, EmptyState, Field, Heading, Icon, IconProvider, Inline, Input, Link, ListGroup, ListItem, Modal, ModalBody, ModalFooter, ModalHeader, OverlayHistoryContext, PasswordInput, ProgressBar, Radio, Screen, ScreenContent, SearchField, SegmentedControl, Select, Sheet, SheetBody, SheetFooter, SheetHeader, Skeleton, Spinner, Stack, Switch, Tab, TabBar, TabBarAction, TabBarItem, TabList, TabPanel, Tabs, Tag, Text, Textarea, ToastProvider, cx, useFieldContext, useOverlay, usePresence, useRovingGroup, useToast };
2471
+ export { AppBar, Avatar, AvatarGroup, Badge, Breadcrumb, Button, Card, CardBody, CardFooter, CardHeader, Checkbox, Chip, ChipBar, ChipGroup, ConfirmDialog, Container, CountButton, DateTimePicker, Divider, EmptyState, Field, Heading, Icon, IconProvider, ImageCarousel, Inline, Input, Lightbox, Link, ListGroup, ListItem, MediaPlaceholder, Modal, ModalBody, ModalFooter, ModalHeader, OverlayHistoryContext, PasswordInput, ProgressBar, Radio, Screen, ScreenContent, SearchField, SegmentedControl, Select, Sheet, SheetBody, SheetFooter, SheetHeader, Skeleton, Spinner, Stack, Switch, Tab, TabBar, TabBarAction, TabBarItem, TabList, TabPanel, Tabs, Tag, Text, Textarea, ToastProvider, UploadProgress, VideoPlayer, VisuallyHidden, cx, useFieldContext, useOverlay, usePresence, useRovingGroup, useToast };
1647
2472
  //# sourceMappingURL=index.js.map
1648
2473
  //# sourceMappingURL=index.js.map