@fairfox/polly 0.29.4 → 0.30.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.
@@ -517,6 +517,257 @@ function Button(props) {
517
517
  children: content
518
518
  }, undefined, false, undefined, this);
519
519
  }
520
+ // src/polly-ui/Surface.tsx
521
+ import { createElement as createElement2 } from "preact";
522
+
523
+ // src/polly-ui/Surface.module.css
524
+ var Surface_module_default = {
525
+ surface: "surface_pQCFqA",
526
+ inline: "inline_pQCFqA",
527
+ "sides-block-start": "sides-block-start_pQCFqA",
528
+ "sides-block-end": "sides-block-end_pQCFqA",
529
+ "sides-inline-start": "sides-inline-start_pQCFqA",
530
+ "sides-inline-end": "sides-inline-end_pQCFqA",
531
+ "sides-block": "sides-block_pQCFqA",
532
+ "sides-inline": "sides-inline_pQCFqA"
533
+ };
534
+
535
+ // src/polly-ui/Surface.tsx
536
+ var variantDefaults = {
537
+ plain: {},
538
+ raised: {
539
+ background: "raised",
540
+ radius: "md",
541
+ shadow: "md",
542
+ border: "default"
543
+ },
544
+ sunken: {
545
+ background: "sunken",
546
+ radius: "md",
547
+ border: "default"
548
+ },
549
+ bubble: {
550
+ radius: "md",
551
+ border: "default",
552
+ padding: "var(--polly-space-sm) var(--polly-space-md)"
553
+ },
554
+ chip: {
555
+ inline: true,
556
+ radius: "full",
557
+ padding: "var(--polly-space-xs) var(--polly-space-sm)",
558
+ border: "default"
559
+ },
560
+ callout: {
561
+ border: "default",
562
+ radius: "sm",
563
+ padding: "var(--polly-space-sm) var(--polly-space-md)"
564
+ },
565
+ floating: {
566
+ position: "fixed",
567
+ radius: "lg",
568
+ shadow: "lg",
569
+ border: "default",
570
+ background: "raised",
571
+ zIndex: 9999
572
+ },
573
+ "sticky-bar": {
574
+ position: "sticky",
575
+ inset: "0 0 auto 0",
576
+ borderSides: "block-end",
577
+ border: "default"
578
+ }
579
+ };
580
+ function bgValue(b) {
581
+ if (b === "raised")
582
+ return "var(--polly-surface-raised)";
583
+ if (b === "sunken")
584
+ return "var(--polly-surface-sunken)";
585
+ if (b === "transparent")
586
+ return "transparent";
587
+ return b;
588
+ }
589
+ function radiusValue(r) {
590
+ if (r === "none")
591
+ return "0";
592
+ return `var(--polly-radius-${r})`;
593
+ }
594
+ function borderColorValue(b) {
595
+ if (b === "none")
596
+ return "transparent";
597
+ if (b === "strong")
598
+ return "var(--polly-border-strong)";
599
+ return "var(--polly-border)";
600
+ }
601
+ function borderWidthValue(w) {
602
+ if (w === "none")
603
+ return "0";
604
+ return `var(--polly-border-width-${w})`;
605
+ }
606
+ function shadowValue(s) {
607
+ if (s === "none")
608
+ return "none";
609
+ return `var(--polly-shadow-${s})`;
610
+ }
611
+ function borderSidesClass(sides) {
612
+ if (sides === "all")
613
+ return;
614
+ if (sides === "block-start")
615
+ return Surface_module_default["sides-block-start"];
616
+ if (sides === "block-end")
617
+ return Surface_module_default["sides-block-end"];
618
+ if (sides === "inline-start")
619
+ return Surface_module_default["sides-inline-start"];
620
+ if (sides === "inline-end")
621
+ return Surface_module_default["sides-inline-end"];
622
+ if (sides === "block")
623
+ return Surface_module_default["sides-block"];
624
+ if (sides === "inline")
625
+ return Surface_module_default["sides-inline"];
626
+ return;
627
+ }
628
+ function Surface(props) {
629
+ const { variant = "plain" } = props;
630
+ const v = variantDefaults[variant];
631
+ const as = props.as ?? "div";
632
+ const padding = props.padding ?? v.padding;
633
+ const background = props.background ?? v.background;
634
+ const radius = props.radius ?? v.radius;
635
+ const border = props.border ?? v.border;
636
+ const borderSides = props.borderSides ?? v.borderSides ?? "all";
637
+ const shadow = props.shadow ?? v.shadow;
638
+ const inline = props.inline ?? v.inline;
639
+ const width = props.width ?? v.width;
640
+ const height = props.height ?? v.height;
641
+ const minHeight = props.minHeight ?? v.minHeight;
642
+ const maxInlineSize = props.maxInlineSize ?? v.maxInlineSize;
643
+ const position = props.position ?? v.position;
644
+ const inset = props.inset ?? v.inset;
645
+ const zIndex = props.zIndex ?? v.zIndex;
646
+ const borderWidth = props.borderWidth ?? v.borderWidth ?? (border && border !== "none" ? "default" : undefined);
647
+ const style = {};
648
+ if (padding)
649
+ style["--s-p"] = padding;
650
+ if (background)
651
+ style["--s-bg"] = bgValue(background);
652
+ if (radius)
653
+ style["--s-radius"] = radiusValue(radius);
654
+ if (border)
655
+ style["--s-border-color"] = borderColorValue(border);
656
+ if (borderWidth)
657
+ style["--s-border-width"] = borderWidthValue(borderWidth);
658
+ if (shadow)
659
+ style["--s-shadow"] = shadowValue(shadow);
660
+ if (width)
661
+ style["--s-w"] = width;
662
+ if (height)
663
+ style["--s-h"] = height;
664
+ if (minHeight)
665
+ style["--s-mh"] = minHeight;
666
+ if (maxInlineSize)
667
+ style["--s-mis"] = maxInlineSize;
668
+ if (position)
669
+ style["--s-position"] = position;
670
+ if (inset)
671
+ style["--s-inset"] = inset;
672
+ if (zIndex !== undefined)
673
+ style["--s-z"] = String(zIndex);
674
+ if (props.style) {
675
+ Object.assign(style, props.style);
676
+ }
677
+ const parts = [Surface_module_default["surface"]];
678
+ if (inline)
679
+ parts.push(Surface_module_default["inline"]);
680
+ parts.push(borderSidesClass(borderSides));
681
+ if (props.className)
682
+ parts.push(props.className);
683
+ const className = parts.filter(Boolean).join(" ");
684
+ const passthrough = {};
685
+ for (const key of Object.keys(props)) {
686
+ const isData = key.startsWith("data-");
687
+ const isAria = key.startsWith("aria-");
688
+ if (!isData && !isAria)
689
+ continue;
690
+ if (key === "data-polly-surface")
691
+ continue;
692
+ if (key === "aria-label" || key === "aria-labelledby" || key === "aria-describedby")
693
+ continue;
694
+ const value = props[key];
695
+ if (value === undefined)
696
+ continue;
697
+ if (typeof value === "string" || typeof value === "number" || typeof value === "boolean") {
698
+ passthrough[key] = value;
699
+ }
700
+ }
701
+ return createElement2(as, {
702
+ id: props.id,
703
+ className,
704
+ style,
705
+ onClick: props.onClick,
706
+ onKeyDown: props.onKeyDown,
707
+ role: props.role,
708
+ tabIndex: props.tabIndex,
709
+ "aria-label": props["aria-label"],
710
+ "aria-labelledby": props["aria-labelledby"],
711
+ "aria-describedby": props["aria-describedby"],
712
+ "data-polly-surface": variant,
713
+ ...passthrough
714
+ }, props.children);
715
+ }
716
+
717
+ // src/polly-ui/Card.tsx
718
+ import { jsxDEV as jsxDEV5 } from "preact/jsx-dev-runtime";
719
+ function Root(props) {
720
+ const { variant = "raised", radius = "md", ...rest } = props;
721
+ return /* @__PURE__ */ jsxDEV5(Surface, {
722
+ variant,
723
+ radius,
724
+ "data-polly-card": true,
725
+ ...rest,
726
+ children: props.children
727
+ }, undefined, false, undefined, this);
728
+ }
729
+ function Header(props) {
730
+ const {
731
+ padding = "var(--polly-space-md) var(--polly-space-lg)",
732
+ border = "default",
733
+ borderSides = "block-end",
734
+ ...rest
735
+ } = props;
736
+ return /* @__PURE__ */ jsxDEV5(Surface, {
737
+ padding,
738
+ border,
739
+ borderSides,
740
+ "data-polly-card-header": true,
741
+ ...rest,
742
+ children: props.children
743
+ }, undefined, false, undefined, this);
744
+ }
745
+ function Body(props) {
746
+ const { padding = "var(--polly-space-lg)", ...rest } = props;
747
+ return /* @__PURE__ */ jsxDEV5(Surface, {
748
+ padding,
749
+ "data-polly-card-body": true,
750
+ ...rest,
751
+ children: props.children
752
+ }, undefined, false, undefined, this);
753
+ }
754
+ function Footer(props) {
755
+ const {
756
+ padding = "var(--polly-space-md) var(--polly-space-lg)",
757
+ border = "default",
758
+ borderSides = "block-start",
759
+ ...rest
760
+ } = props;
761
+ return /* @__PURE__ */ jsxDEV5(Surface, {
762
+ padding,
763
+ border,
764
+ borderSides,
765
+ "data-polly-card-footer": true,
766
+ ...rest,
767
+ children: props.children
768
+ }, undefined, false, undefined, this);
769
+ }
770
+ var Card = { Root, Header, Body, Footer };
520
771
  // src/polly-ui/Checkbox.module.css
521
772
  var Checkbox_module_default = {
522
773
  checkbox: "checkbox_EKE5sg",
@@ -526,7 +777,7 @@ var Checkbox_module_default = {
526
777
  };
527
778
 
528
779
  // src/polly-ui/Checkbox.tsx
529
- import { jsxDEV as jsxDEV5 } from "preact/jsx-dev-runtime";
780
+ import { jsxDEV as jsxDEV6 } from "preact/jsx-dev-runtime";
530
781
  function isSignal(value) {
531
782
  return typeof value === "object" && value !== null && "value" in value && "peek" in value;
532
783
  }
@@ -543,12 +794,12 @@ function Checkbox(props) {
543
794
  parts.push(Checkbox_module_default["disabled"] ?? "");
544
795
  if (className)
545
796
  parts.push(className);
546
- return /* @__PURE__ */ jsxDEV5("label", {
797
+ return /* @__PURE__ */ jsxDEV6("label", {
547
798
  class: parts.filter(Boolean).join(" "),
548
799
  "data-polly-ui": true,
549
800
  "data-polly-checkbox": true,
550
801
  children: [
551
- /* @__PURE__ */ jsxDEV5("input", {
802
+ /* @__PURE__ */ jsxDEV6("input", {
552
803
  id,
553
804
  type: "checkbox",
554
805
  class: Checkbox_module_default["input"],
@@ -558,7 +809,7 @@ function Checkbox(props) {
558
809
  disabled,
559
810
  onChange: handleChange
560
811
  }, undefined, false, undefined, this),
561
- label !== undefined && /* @__PURE__ */ jsxDEV5("span", {
812
+ label !== undefined && /* @__PURE__ */ jsxDEV6("span", {
562
813
  class: Checkbox_module_default["label"],
563
814
  children: label
564
815
  }, undefined, false, undefined, this)
@@ -573,24 +824,24 @@ var Collapsible_module_default = {
573
824
  };
574
825
 
575
826
  // src/polly-ui/Collapsible.tsx
576
- import { jsxDEV as jsxDEV6 } from "preact/jsx-dev-runtime";
827
+ import { jsxDEV as jsxDEV7 } from "preact/jsx-dev-runtime";
577
828
  function Collapsible(props) {
578
829
  const { summary, children, defaultOpen = false, className, id } = props;
579
830
  const parts = [Collapsible_module_default["collapsible"]];
580
831
  if (className)
581
832
  parts.push(className);
582
- return /* @__PURE__ */ jsxDEV6("details", {
833
+ return /* @__PURE__ */ jsxDEV7("details", {
583
834
  id,
584
835
  class: parts.join(" "),
585
836
  open: defaultOpen,
586
837
  "data-polly-ui": true,
587
838
  "data-polly-collapsible": true,
588
839
  children: [
589
- /* @__PURE__ */ jsxDEV6("summary", {
840
+ /* @__PURE__ */ jsxDEV7("summary", {
590
841
  class: Collapsible_module_default["summary"],
591
842
  children: summary
592
843
  }, undefined, false, undefined, this),
593
- /* @__PURE__ */ jsxDEV6("div", {
844
+ /* @__PURE__ */ jsxDEV7("div", {
594
845
  class: Collapsible_module_default["content"],
595
846
  children
596
847
  }, undefined, false, undefined, this)
@@ -760,7 +1011,7 @@ var OverlayRoot_module_default = {
760
1011
  };
761
1012
 
762
1013
  // src/polly-ui/OverlayRoot.tsx
763
- import { jsxDEV as jsxDEV7 } from "preact/jsx-dev-runtime";
1014
+ import { jsxDEV as jsxDEV8 } from "preact/jsx-dev-runtime";
764
1015
  function OverlayRoot() {
765
1016
  const ref = useRef2(null);
766
1017
  useEffect2(() => {
@@ -779,7 +1030,7 @@ function OverlayRoot() {
779
1030
  release?.();
780
1031
  };
781
1032
  }, []);
782
- return /* @__PURE__ */ jsxDEV7("div", {
1033
+ return /* @__PURE__ */ jsxDEV8("div", {
783
1034
  ref,
784
1035
  class: OverlayRoot_module_default["root"],
785
1036
  "data-polly-ui": true,
@@ -791,7 +1042,7 @@ function getOverlayRootNode() {
791
1042
  }
792
1043
 
793
1044
  // src/polly-ui/Modal.tsx
794
- import { jsxDEV as jsxDEV8 } from "preact/jsx-dev-runtime";
1045
+ import { jsxDEV as jsxDEV9 } from "preact/jsx-dev-runtime";
795
1046
  var Ctx = createContext(null);
796
1047
  function useModal() {
797
1048
  const ctx = useContext(Ctx);
@@ -799,7 +1050,7 @@ function useModal() {
799
1050
  throw new Error("Modal sub-components must render inside <Modal.Root>");
800
1051
  return ctx;
801
1052
  }
802
- function Root({ when, onClose, children, "aria-label": ariaLabel }) {
1053
+ function Root2({ when, onClose, children, "aria-label": ariaLabel }) {
803
1054
  const id = useId();
804
1055
  const titleId = `${id}-title`;
805
1056
  const descId = `${id}-desc`;
@@ -831,9 +1082,9 @@ function Root({ when, onClose, children, "aria-label": ariaLabel }) {
831
1082
  onClose?.();
832
1083
  };
833
1084
  const ctx = { id, titleId, descId, close };
834
- const content = /* @__PURE__ */ jsxDEV8(Ctx.Provider, {
1085
+ const content = /* @__PURE__ */ jsxDEV9(Ctx.Provider, {
835
1086
  value: ctx,
836
- children: /* @__PURE__ */ jsxDEV8("div", {
1087
+ children: /* @__PURE__ */ jsxDEV9("div", {
837
1088
  ref: mountRef,
838
1089
  class: Modal_module_default["container"],
839
1090
  "data-polly-ui": true,
@@ -852,22 +1103,28 @@ function Root({ when, onClose, children, "aria-label": ariaLabel }) {
852
1103
  }
853
1104
  function Backdrop() {
854
1105
  const { close } = useModal();
855
- return /* @__PURE__ */ jsxDEV8("div", {
1106
+ return /* @__PURE__ */ jsxDEV9("div", {
856
1107
  class: Modal_module_default["backdrop"],
857
1108
  "data-polly-modal-backdrop": true,
858
1109
  onClick: close,
859
1110
  "aria-hidden": "true"
860
1111
  }, undefined, false, undefined, this);
861
1112
  }
862
- function Content({ children }) {
863
- return /* @__PURE__ */ jsxDEV8("div", {
864
- class: Modal_module_default["surface"],
1113
+ function Content({ children, className, style }) {
1114
+ const cls = className ? `${Modal_module_default["surface"]} ${className}` : Modal_module_default["surface"];
1115
+ return /* @__PURE__ */ jsxDEV9(Surface, {
1116
+ variant: "raised",
1117
+ radius: "lg",
1118
+ shadow: "lg",
1119
+ position: "relative",
1120
+ className: cls,
1121
+ style,
865
1122
  "data-polly-modal-surface": true,
866
1123
  children
867
1124
  }, undefined, false, undefined, this);
868
1125
  }
869
- function Header({ children }) {
870
- return /* @__PURE__ */ jsxDEV8("header", {
1126
+ function Header2({ children }) {
1127
+ return /* @__PURE__ */ jsxDEV9("header", {
871
1128
  class: Modal_module_default["header"],
872
1129
  "data-polly-modal-header": true,
873
1130
  children
@@ -875,24 +1132,24 @@ function Header({ children }) {
875
1132
  }
876
1133
  function Title({ children }) {
877
1134
  const { titleId } = useModal();
878
- return /* @__PURE__ */ jsxDEV8("h2", {
1135
+ return /* @__PURE__ */ jsxDEV9("h2", {
879
1136
  id: titleId,
880
1137
  class: Modal_module_default["title"],
881
1138
  "data-polly-modal-title": true,
882
1139
  children
883
1140
  }, undefined, false, undefined, this);
884
1141
  }
885
- function Body({ children }) {
1142
+ function Body2({ children }) {
886
1143
  const { descId } = useModal();
887
- return /* @__PURE__ */ jsxDEV8("div", {
1144
+ return /* @__PURE__ */ jsxDEV9("div", {
888
1145
  id: descId,
889
1146
  class: Modal_module_default["body"],
890
1147
  "data-polly-modal-body": true,
891
1148
  children
892
1149
  }, undefined, false, undefined, this);
893
1150
  }
894
- function Footer({ children }) {
895
- return /* @__PURE__ */ jsxDEV8("footer", {
1151
+ function Footer2({ children }) {
1152
+ return /* @__PURE__ */ jsxDEV9("footer", {
896
1153
  class: Modal_module_default["footer"],
897
1154
  "data-polly-modal-footer": true,
898
1155
  children
@@ -901,7 +1158,7 @@ function Footer({ children }) {
901
1158
  function Close({ children, action }) {
902
1159
  const { close } = useModal();
903
1160
  if (action) {
904
- return /* @__PURE__ */ jsxDEV8("button", {
1161
+ return /* @__PURE__ */ jsxDEV9("button", {
905
1162
  type: "button",
906
1163
  class: Modal_module_default["close"],
907
1164
  "data-polly-ui": true,
@@ -911,7 +1168,7 @@ function Close({ children, action }) {
911
1168
  children
912
1169
  }, undefined, false, undefined, this);
913
1170
  }
914
- return /* @__PURE__ */ jsxDEV8("button", {
1171
+ return /* @__PURE__ */ jsxDEV9("button", {
915
1172
  type: "button",
916
1173
  class: Modal_module_default["close"],
917
1174
  "data-polly-ui": true,
@@ -922,18 +1179,18 @@ function Close({ children, action }) {
922
1179
  }, undefined, false, undefined, this);
923
1180
  }
924
1181
  var Modal = {
925
- Root,
1182
+ Root: Root2,
926
1183
  Backdrop,
927
1184
  Content,
928
- Header,
1185
+ Header: Header2,
929
1186
  Title,
930
- Body,
931
- Footer,
1187
+ Body: Body2,
1188
+ Footer: Footer2,
932
1189
  Close
933
1190
  };
934
1191
 
935
1192
  // src/polly-ui/ConfirmDialog.tsx
936
- import { jsxDEV as jsxDEV9 } from "preact/jsx-dev-runtime";
1193
+ import { jsxDEV as jsxDEV10 } from "preact/jsx-dev-runtime";
937
1194
  var pending = signal2(null);
938
1195
  var isOpen = signal2(false);
939
1196
  var nextId = 0;
@@ -964,27 +1221,27 @@ function Host() {
964
1221
  const current = pending.value;
965
1222
  if (!current)
966
1223
  return null;
967
- return /* @__PURE__ */ jsxDEV9(Modal.Root, {
1224
+ return /* @__PURE__ */ jsxDEV10(Modal.Root, {
968
1225
  when: isOpen,
969
1226
  onClose: () => close(false),
970
1227
  children: [
971
- /* @__PURE__ */ jsxDEV9(Modal.Backdrop, {}, undefined, false, undefined, this),
972
- /* @__PURE__ */ jsxDEV9(Modal.Content, {
1228
+ /* @__PURE__ */ jsxDEV10(Modal.Backdrop, {}, undefined, false, undefined, this),
1229
+ /* @__PURE__ */ jsxDEV10(Modal.Content, {
973
1230
  children: [
974
- /* @__PURE__ */ jsxDEV9(Modal.Header, {
975
- children: /* @__PURE__ */ jsxDEV9(Modal.Title, {
1231
+ /* @__PURE__ */ jsxDEV10(Modal.Header, {
1232
+ children: /* @__PURE__ */ jsxDEV10(Modal.Title, {
976
1233
  children: current.title
977
1234
  }, undefined, false, undefined, this)
978
1235
  }, undefined, false, undefined, this),
979
- current.body ? /* @__PURE__ */ jsxDEV9(Modal.Body, {
1236
+ current.body ? /* @__PURE__ */ jsxDEV10(Modal.Body, {
980
1237
  children: current.body
981
1238
  }, undefined, false, undefined, this) : null,
982
- /* @__PURE__ */ jsxDEV9(Modal.Footer, {
983
- children: /* @__PURE__ */ jsxDEV9("div", {
1239
+ /* @__PURE__ */ jsxDEV10(Modal.Footer, {
1240
+ children: /* @__PURE__ */ jsxDEV10("div", {
984
1241
  class: ConfirmDialog_module_default["actions"],
985
1242
  "data-polly-confirm-actions": true,
986
1243
  children: [
987
- /* @__PURE__ */ jsxDEV9("button", {
1244
+ /* @__PURE__ */ jsxDEV10("button", {
988
1245
  type: "button",
989
1246
  class: ConfirmDialog_module_default["cancel"],
990
1247
  "data-polly-ui": true,
@@ -993,7 +1250,7 @@ function Host() {
993
1250
  onClick: () => close(false),
994
1251
  children: current.cancelLabel ?? "Cancel"
995
1252
  }, undefined, false, undefined, this),
996
- /* @__PURE__ */ jsxDEV9("button", {
1253
+ /* @__PURE__ */ jsxDEV10("button", {
997
1254
  type: "button",
998
1255
  class: current.danger ? ConfirmDialog_module_default["confirmDanger"] : ConfirmDialog_module_default["confirm"],
999
1256
  "data-polly-ui": true,
@@ -1024,7 +1281,7 @@ var Dropdown_module_default = {
1024
1281
  };
1025
1282
 
1026
1283
  // src/polly-ui/Dropdown.tsx
1027
- import { jsxDEV as jsxDEV10 } from "preact/jsx-dev-runtime";
1284
+ import { jsxDEV as jsxDEV11 } from "preact/jsx-dev-runtime";
1028
1285
  var dropdownCounter = 0;
1029
1286
  function Dropdown(props) {
1030
1287
  const { isOpen: isOpen2, trigger, children, align = "left", multiSelect = false, className, id } = props;
@@ -1080,19 +1337,19 @@ function Dropdown(props) {
1080
1337
  const menuParts = [Dropdown_module_default["menu"] ?? ""];
1081
1338
  if (align === "right")
1082
1339
  menuParts.push(Dropdown_module_default["alignRight"] ?? "");
1083
- return /* @__PURE__ */ jsxDEV10("div", {
1340
+ return /* @__PURE__ */ jsxDEV11("div", {
1084
1341
  id,
1085
1342
  class: parts.filter(Boolean).join(" "),
1086
1343
  "data-polly-ui": true,
1087
1344
  "data-polly-dropdown": true,
1088
1345
  children: [
1089
- /* @__PURE__ */ jsxDEV10("button", {
1346
+ /* @__PURE__ */ jsxDEV11("button", {
1090
1347
  ref: triggerRef,
1091
1348
  type: "button",
1092
1349
  class: Dropdown_module_default["trigger"],
1093
1350
  children: trigger
1094
1351
  }, undefined, false, undefined, this),
1095
- /* @__PURE__ */ jsxDEV10("div", {
1352
+ /* @__PURE__ */ jsxDEV11("div", {
1096
1353
  ref: menuRef,
1097
1354
  id: popoverId,
1098
1355
  role: "listbox",
@@ -1102,7 +1359,7 @@ function Dropdown(props) {
1102
1359
  onToggle: handleToggle,
1103
1360
  onClick: handleMenuClick,
1104
1361
  onKeyDown: handleKeyDown,
1105
- children: /* @__PURE__ */ jsxDEV10(Layout, {
1362
+ children: /* @__PURE__ */ jsxDEV11(Layout, {
1106
1363
  rows: "auto",
1107
1364
  gap: "0",
1108
1365
  children
@@ -1128,7 +1385,7 @@ var Select_module_default = {
1128
1385
  };
1129
1386
 
1130
1387
  // src/polly-ui/Select.tsx
1131
- import { jsxDEV as jsxDEV11 } from "preact/jsx-dev-runtime";
1388
+ import { jsxDEV as jsxDEV12 } from "preact/jsx-dev-runtime";
1132
1389
  function formatSelected(options, selected) {
1133
1390
  if (selected.size === 0)
1134
1391
  return "";
@@ -1176,7 +1433,7 @@ function Select(props) {
1176
1433
  selected.value = new Set;
1177
1434
  };
1178
1435
  const triggerClass = isEmpty.value ? `${Select_module_default["trigger"]} ${Select_module_default["placeholder"]}` : Select_module_default["trigger"];
1179
- const triggerButton = /* @__PURE__ */ jsxDEV11("button", {
1436
+ const triggerButton = /* @__PURE__ */ jsxDEV12("button", {
1180
1437
  type: "button",
1181
1438
  class: triggerClass,
1182
1439
  disabled,
@@ -1185,34 +1442,34 @@ function Select(props) {
1185
1442
  const parts = [Select_module_default["select"] ?? ""];
1186
1443
  if (className)
1187
1444
  parts.push(className);
1188
- return /* @__PURE__ */ jsxDEV11("div", {
1445
+ return /* @__PURE__ */ jsxDEV12("div", {
1189
1446
  id,
1190
1447
  class: parts.filter(Boolean).join(" "),
1191
1448
  "data-polly-ui": true,
1192
1449
  "data-polly-select": true,
1193
1450
  children: [
1194
- label !== undefined && /* @__PURE__ */ jsxDEV11("span", {
1451
+ label !== undefined && /* @__PURE__ */ jsxDEV12("span", {
1195
1452
  class: Select_module_default["label"],
1196
1453
  children: label
1197
1454
  }, undefined, false, undefined, this),
1198
- /* @__PURE__ */ jsxDEV11(Dropdown, {
1455
+ /* @__PURE__ */ jsxDEV12(Dropdown, {
1199
1456
  isOpen: isOpen2,
1200
1457
  trigger: triggerButton,
1201
1458
  multiSelect,
1202
1459
  children: [
1203
- multiSelect && /* @__PURE__ */ jsxDEV11("div", {
1460
+ multiSelect && /* @__PURE__ */ jsxDEV12("div", {
1204
1461
  class: Select_module_default["actions"],
1205
- children: /* @__PURE__ */ jsxDEV11(Layout, {
1462
+ children: /* @__PURE__ */ jsxDEV12(Layout, {
1206
1463
  columns: "1fr 1fr",
1207
1464
  gap: "var(--polly-space-xs)",
1208
1465
  children: [
1209
- /* @__PURE__ */ jsxDEV11("button", {
1466
+ /* @__PURE__ */ jsxDEV12("button", {
1210
1467
  type: "button",
1211
1468
  class: Select_module_default["actionBtn"],
1212
1469
  onClick: handleSelectAll,
1213
1470
  children: "Select All"
1214
1471
  }, undefined, false, undefined, this),
1215
- /* @__PURE__ */ jsxDEV11("button", {
1472
+ /* @__PURE__ */ jsxDEV12("button", {
1216
1473
  type: "button",
1217
1474
  class: Select_module_default["actionBtn"],
1218
1475
  onClick: handleClear,
@@ -1224,19 +1481,19 @@ function Select(props) {
1224
1481
  options.map((opt) => {
1225
1482
  const isSelected = selected.value.has(opt.value);
1226
1483
  const optClass = isSelected ? `${Select_module_default["option"]} ${Select_module_default["optionSelected"]}` : Select_module_default["option"];
1227
- return /* @__PURE__ */ jsxDEV11("button", {
1484
+ return /* @__PURE__ */ jsxDEV12("button", {
1228
1485
  type: "button",
1229
1486
  class: optClass,
1230
1487
  onClick: () => handleOptionClick(opt.value),
1231
1488
  children: [
1232
- multiSelect && /* @__PURE__ */ jsxDEV11("input", {
1489
+ multiSelect && /* @__PURE__ */ jsxDEV12("input", {
1233
1490
  type: "checkbox",
1234
1491
  class: Select_module_default["optionCheck"],
1235
1492
  checked: isSelected,
1236
1493
  tabIndex: -1,
1237
1494
  readOnly: true
1238
1495
  }, undefined, false, undefined, this),
1239
- /* @__PURE__ */ jsxDEV11("span", {
1496
+ /* @__PURE__ */ jsxDEV12("span", {
1240
1497
  children: opt.label
1241
1498
  }, undefined, false, undefined, this)
1242
1499
  ]
@@ -1256,7 +1513,7 @@ var Skeleton_module_default = {
1256
1513
  };
1257
1514
 
1258
1515
  // src/polly-ui/Skeleton.tsx
1259
- import { jsxDEV as jsxDEV12 } from "preact/jsx-dev-runtime";
1516
+ import { jsxDEV as jsxDEV13 } from "preact/jsx-dev-runtime";
1260
1517
  function resolveSize(value) {
1261
1518
  if (value === undefined)
1262
1519
  return;
@@ -1289,7 +1546,7 @@ function Skeleton(props) {
1289
1546
  parts.push(vClass);
1290
1547
  if (className)
1291
1548
  parts.push(className);
1292
- return /* @__PURE__ */ jsxDEV12("span", {
1549
+ return /* @__PURE__ */ jsxDEV13("span", {
1293
1550
  class: parts.join(" "),
1294
1551
  style,
1295
1552
  "data-polly-ui": true,
@@ -1305,26 +1562,26 @@ var Tabs_module_default = {
1305
1562
  };
1306
1563
 
1307
1564
  // src/polly-ui/Tabs.tsx
1308
- import { jsxDEV as jsxDEV13 } from "preact/jsx-dev-runtime";
1565
+ import { jsxDEV as jsxDEV14 } from "preact/jsx-dev-runtime";
1309
1566
  function Tabs(props) {
1310
1567
  const { tabs, activeTab, action, className, id } = props;
1311
1568
  const parts = [Tabs_module_default["tabs"] ?? ""];
1312
1569
  if (className)
1313
1570
  parts.push(className);
1314
- return /* @__PURE__ */ jsxDEV13("nav", {
1571
+ return /* @__PURE__ */ jsxDEV14("nav", {
1315
1572
  id,
1316
1573
  class: parts.filter(Boolean).join(" "),
1317
1574
  "aria-label": props["aria-label"],
1318
1575
  "data-polly-ui": true,
1319
1576
  "data-polly-tabs": true,
1320
- children: /* @__PURE__ */ jsxDEV13(Layout, {
1577
+ children: /* @__PURE__ */ jsxDEV14(Layout, {
1321
1578
  columns: `repeat(${tabs.length}, auto)`,
1322
1579
  gap: "0",
1323
1580
  alignItems: "end",
1324
1581
  children: tabs.map((tab) => {
1325
1582
  const isActive = activeTab === tab.id;
1326
1583
  const tabClass = isActive ? `${Tabs_module_default["tab"]} ${Tabs_module_default["active"]}` : Tabs_module_default["tab"];
1327
- return /* @__PURE__ */ jsxDEV13("button", {
1584
+ return /* @__PURE__ */ jsxDEV14("button", {
1328
1585
  type: "button",
1329
1586
  class: tabClass,
1330
1587
  disabled: tab.disabled,
@@ -1362,7 +1619,7 @@ var TextInput_module_default = {
1362
1619
  };
1363
1620
 
1364
1621
  // src/polly-ui/TextInput.tsx
1365
- import { jsxDEV as jsxDEV14 } from "preact/jsx-dev-runtime";
1622
+ import { jsxDEV as jsxDEV15 } from "preact/jsx-dev-runtime";
1366
1623
  function isSignal2(v) {
1367
1624
  return typeof v === "object" && v !== null && "value" in v && "peek" in v;
1368
1625
  }
@@ -1383,7 +1640,7 @@ function TextInput(props) {
1383
1640
  const defaultValue = controlled ? undefined : props.value ?? "";
1384
1641
  const className = props.className ? `${TextInput_module_default["input"]} ${props.className}` : TextInput_module_default["input"];
1385
1642
  if (variant === "multi") {
1386
- return /* @__PURE__ */ jsxDEV14("textarea", {
1643
+ return /* @__PURE__ */ jsxDEV15("textarea", {
1387
1644
  ...a11y,
1388
1645
  class: className,
1389
1646
  "data-polly-input-variant": "multi",
@@ -1398,7 +1655,7 @@ function TextInput(props) {
1398
1655
  }
1399
1656
  }, undefined, false, undefined, this);
1400
1657
  }
1401
- return /* @__PURE__ */ jsxDEV14("input", {
1658
+ return /* @__PURE__ */ jsxDEV15("input", {
1402
1659
  ...a11y,
1403
1660
  type: "text",
1404
1661
  class: className,
@@ -1415,7 +1672,7 @@ function TextInput(props) {
1415
1672
  }
1416
1673
  // src/polly-ui/Toast.tsx
1417
1674
  import { createPortal as createPortal2 } from "preact/compat";
1418
- import { useEffect as useEffect5, useRef as useRef5, useState as useState3 } from "preact/hooks";
1675
+ import { useEffect as useEffect5, useState as useState3 } from "preact/hooks";
1419
1676
 
1420
1677
  // src/actions/error.ts
1421
1678
  import { signal as signal3 } from "@preact/signals";
@@ -1457,7 +1714,7 @@ var Toast_module_default = {
1457
1714
  };
1458
1715
 
1459
1716
  // src/polly-ui/Toast.tsx
1460
- import { jsxDEV as jsxDEV15 } from "preact/jsx-dev-runtime";
1717
+ import { jsxDEV as jsxDEV16 } from "preact/jsx-dev-runtime";
1461
1718
  function Viewport(props) {
1462
1719
  const autoDismissMs = props.autoDismissMs ?? 5000;
1463
1720
  const [portalNode, setPortalNode] = useState3(null);
@@ -1479,13 +1736,13 @@ function Viewport(props) {
1479
1736
  }, [paused, entries, autoDismissMs]);
1480
1737
  if (!portalNode)
1481
1738
  return null;
1482
- const content = /* @__PURE__ */ jsxDEV15("div", {
1739
+ const content = /* @__PURE__ */ jsxDEV16("div", {
1483
1740
  class: `${Toast_module_default["viewport"]} ${props.className ?? ""}`.trim(),
1484
1741
  "data-polly-ui": true,
1485
1742
  "data-polly-toast-viewport": true,
1486
1743
  onMouseEnter: () => setPaused(true),
1487
1744
  onMouseLeave: () => setPaused(false),
1488
- children: entries.map((entry) => /* @__PURE__ */ jsxDEV15(ToastItem, {
1745
+ children: entries.map((entry) => /* @__PURE__ */ jsxDEV16(ToastItem, {
1489
1746
  entry
1490
1747
  }, entry.id, false, undefined, this))
1491
1748
  }, undefined, false, undefined, this);
@@ -1493,21 +1750,21 @@ function Viewport(props) {
1493
1750
  }
1494
1751
  function ToastItem({ entry }) {
1495
1752
  const liveness = entry.severity === "error" ? "assertive" : "polite";
1496
- const ref = useRef5(null);
1497
- return /* @__PURE__ */ jsxDEV15("div", {
1498
- ref,
1499
- class: Toast_module_default["item"],
1753
+ return /* @__PURE__ */ jsxDEV16(Surface, {
1754
+ variant: "raised",
1755
+ padding: "var(--polly-space-md) var(--polly-space-lg)",
1756
+ className: Toast_module_default["item"],
1500
1757
  "data-polly-ui": true,
1501
1758
  "data-polly-toast-item": true,
1502
1759
  "data-severity": entry.severity,
1503
1760
  role: entry.severity === "error" ? "alert" : "status",
1504
1761
  "aria-live": liveness,
1505
1762
  children: [
1506
- /* @__PURE__ */ jsxDEV15("span", {
1763
+ /* @__PURE__ */ jsxDEV16("span", {
1507
1764
  class: Toast_module_default["message"],
1508
1765
  children: entry.message
1509
1766
  }, undefined, false, undefined, this),
1510
- /* @__PURE__ */ jsxDEV15("button", {
1767
+ /* @__PURE__ */ jsxDEV16("button", {
1511
1768
  type: "button",
1512
1769
  class: Toast_module_default["close"],
1513
1770
  "data-polly-ui": true,
@@ -1534,7 +1791,7 @@ var Toggle_module_default = {
1534
1791
  };
1535
1792
 
1536
1793
  // src/polly-ui/Toggle.tsx
1537
- import { jsxDEV as jsxDEV16 } from "preact/jsx-dev-runtime";
1794
+ import { jsxDEV as jsxDEV17 } from "preact/jsx-dev-runtime";
1538
1795
  function Toggle(props) {
1539
1796
  const { checked = false, disabled = false, label, name, className, id } = props;
1540
1797
  const parts = [Toggle_module_default["toggle"]];
@@ -1542,12 +1799,12 @@ function Toggle(props) {
1542
1799
  parts.push(Toggle_module_default["disabled"]);
1543
1800
  if (className)
1544
1801
  parts.push(className);
1545
- return /* @__PURE__ */ jsxDEV16("label", {
1802
+ return /* @__PURE__ */ jsxDEV17("label", {
1546
1803
  class: parts.join(" "),
1547
1804
  "data-polly-ui": true,
1548
1805
  "data-polly-toggle": true,
1549
1806
  children: [
1550
- /* @__PURE__ */ jsxDEV16("input", {
1807
+ /* @__PURE__ */ jsxDEV17("input", {
1551
1808
  id,
1552
1809
  type: "checkbox",
1553
1810
  role: "switch",
@@ -1557,13 +1814,13 @@ function Toggle(props) {
1557
1814
  checked,
1558
1815
  disabled
1559
1816
  }, undefined, false, undefined, this),
1560
- /* @__PURE__ */ jsxDEV16("span", {
1817
+ /* @__PURE__ */ jsxDEV17("span", {
1561
1818
  class: checked ? `${Toggle_module_default["track"]} ${Toggle_module_default["trackChecked"]}` : Toggle_module_default["track"],
1562
- children: /* @__PURE__ */ jsxDEV16("span", {
1819
+ children: /* @__PURE__ */ jsxDEV17("span", {
1563
1820
  class: checked ? `${Toggle_module_default["thumb"]} ${Toggle_module_default["thumbChecked"]}` : Toggle_module_default["thumb"]
1564
1821
  }, undefined, false, undefined, this)
1565
1822
  }, undefined, false, undefined, this),
1566
- label !== undefined && /* @__PURE__ */ jsxDEV16("span", {
1823
+ label !== undefined && /* @__PURE__ */ jsxDEV17("span", {
1567
1824
  class: Toggle_module_default["label"],
1568
1825
  children: label
1569
1826
  }, undefined, false, undefined, this)
@@ -1577,6 +1834,7 @@ export {
1577
1834
  Toast,
1578
1835
  TextInput,
1579
1836
  Tabs,
1837
+ Surface,
1580
1838
  Skeleton,
1581
1839
  Select,
1582
1840
  OverlayRoot,
@@ -1586,10 +1844,11 @@ export {
1586
1844
  ConfirmDialog,
1587
1845
  Collapsible,
1588
1846
  Checkbox,
1847
+ Card,
1589
1848
  Button,
1590
1849
  Badge,
1591
1850
  ActionInput,
1592
1851
  ActionForm
1593
1852
  };
1594
1853
 
1595
- //# debugId=2F1AD073C8A46D0F64756E2164756E21
1854
+ //# debugId=9CE0D265222997F864756E2164756E21