@swell/swell-ui 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (200) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/README.md +1 -1
  3. package/custom-elements.json +8274 -0
  4. package/dist/chunks/badge-Dt6q8Cqa.js +11 -0
  5. package/dist/chunks/button-C7nCiu-t.js +123 -0
  6. package/dist/chunks/card-CvSQEug8.js +10 -0
  7. package/dist/chunks/checkbox-BRI_A1TP.js +99 -0
  8. package/dist/chunks/chip-BtnufSMG.js +48 -0
  9. package/dist/chunks/config-C-FYxOaJ.js +588 -0
  10. package/dist/chunks/define-BlQTa1g4.js +19 -0
  11. package/dist/chunks/description-BHfQ8meK.js +19 -0
  12. package/dist/chunks/disclosure-CET8-H6f.js +56 -0
  13. package/dist/chunks/divider-BfkO0c1j.js +27 -0
  14. package/dist/chunks/element-B4-_7TLZ.js +138 -0
  15. package/dist/chunks/input-Uun-ls2_.js +53 -0
  16. package/dist/chunks/link-8qHFEKQE.js +53 -0
  17. package/dist/chunks/link-D4NC86oc.js +24 -0
  18. package/dist/chunks/lookup-5icr_T6o.js +205 -0
  19. package/dist/chunks/lookup-list-Bw6OJoDS.js +19 -0
  20. package/dist/chunks/lookup-option-Mn3k8W2M.js +26 -0
  21. package/dist/chunks/popover-D3Ob6slA.js +92 -0
  22. package/dist/chunks/popup-Dbh2fchP.js +21 -0
  23. package/dist/chunks/quantity-h3wqn8tC.js +140 -0
  24. package/dist/chunks/radio-BhFDL3pO.js +192 -0
  25. package/dist/chunks/radio-option-hT29S8Zl.js +88 -0
  26. package/dist/chunks/select-DS1n_htj.js +331 -0
  27. package/dist/chunks/select-option-DoM9GAe0.js +66 -0
  28. package/dist/chunks/skeleton-DfPjhls9.js +13 -0
  29. package/dist/chunks/status-B23JZ5RQ.js +71 -0
  30. package/dist/chunks/tab-BpjFUbFO.js +107 -0
  31. package/dist/chunks/tabs-aWKq1Iaz.js +122 -0
  32. package/dist/chunks/text-ZWPy-iB3.js +26 -0
  33. package/dist/chunks/text-field-BB_MRt5h.js +158 -0
  34. package/dist/chunks/textarea-L6_OJ2IN.js +18 -0
  35. package/dist/chunks/thumbnail-CLe9AsFg.js +21 -0
  36. package/dist/chunks/toggle-C7-oPgWR.js +22 -0
  37. package/dist/chunks/ui-HcyMKwzs.js +11 -0
  38. package/dist/editors/vscode.css-custom-data.json +824 -0
  39. package/dist/editors/vscode.html-custom-data.json +1156 -0
  40. package/dist/editors/web-types.json +1706 -0
  41. package/dist/elements/badge.d.ts +1 -0
  42. package/dist/elements/badge.js +1 -0
  43. package/dist/elements/button.d.ts +1 -0
  44. package/dist/elements/button.js +1 -0
  45. package/dist/elements/card.d.ts +1 -0
  46. package/dist/elements/card.js +1 -0
  47. package/dist/elements/checkbox.d.ts +1 -0
  48. package/dist/elements/checkbox.js +1 -0
  49. package/dist/elements/chip.d.ts +1 -0
  50. package/dist/elements/chip.js +1 -0
  51. package/dist/elements/disclosure.d.ts +1 -0
  52. package/dist/elements/disclosure.js +1 -0
  53. package/dist/elements/divider.d.ts +1 -0
  54. package/dist/elements/divider.js +1 -0
  55. package/dist/elements/input.d.ts +1 -0
  56. package/dist/elements/input.js +1 -0
  57. package/dist/elements/link.d.ts +1 -0
  58. package/dist/elements/link.js +1 -0
  59. package/dist/elements/lookup-list.d.ts +1 -0
  60. package/dist/elements/lookup-list.js +1 -0
  61. package/dist/elements/lookup-option.d.ts +1 -0
  62. package/dist/elements/lookup-option.js +1 -0
  63. package/dist/elements/lookup.d.ts +1 -0
  64. package/dist/elements/lookup.js +1 -0
  65. package/dist/elements/popover.d.ts +1 -0
  66. package/dist/elements/popover.js +1 -0
  67. package/dist/elements/quantity.d.ts +1 -0
  68. package/dist/elements/quantity.js +1 -0
  69. package/dist/elements/radio-option.d.ts +1 -0
  70. package/dist/elements/radio-option.js +1 -0
  71. package/dist/elements/radio.d.ts +1 -0
  72. package/dist/elements/radio.js +1 -0
  73. package/dist/elements/select-option.d.ts +1 -0
  74. package/dist/elements/select-option.js +1 -0
  75. package/dist/elements/select.d.ts +1 -0
  76. package/dist/elements/select.js +1 -0
  77. package/dist/elements/skeleton.d.ts +1 -0
  78. package/dist/elements/skeleton.js +1 -0
  79. package/dist/elements/status.d.ts +1 -0
  80. package/dist/elements/status.js +1 -0
  81. package/dist/elements/tab.d.ts +1 -0
  82. package/dist/elements/tab.js +1 -0
  83. package/dist/elements/tabs.d.ts +1 -0
  84. package/dist/elements/tabs.js +1 -0
  85. package/dist/elements/text.d.ts +1 -0
  86. package/dist/elements/text.js +1 -0
  87. package/dist/elements/textarea.d.ts +1 -0
  88. package/dist/elements/textarea.js +1 -0
  89. package/dist/elements/thumbnail.d.ts +1 -0
  90. package/dist/elements/thumbnail.js +1 -0
  91. package/dist/elements/ui.d.ts +1 -0
  92. package/dist/elements/ui.js +1 -0
  93. package/dist/frameworks/jsx.d.ts +3589 -0
  94. package/dist/frameworks/preact.d.ts +9 -0
  95. package/dist/frameworks/solid.d.ts +7 -0
  96. package/dist/frameworks/svelte.d.ts +1676 -0
  97. package/dist/frameworks/vue.d.ts +827 -0
  98. package/dist/index.js +80 -0
  99. package/dist/react/badge.d.ts +12 -0
  100. package/dist/react/badge.js +4 -0
  101. package/dist/react/button.d.ts +16 -0
  102. package/dist/react/button.js +4 -0
  103. package/dist/react/card.d.ts +11 -0
  104. package/dist/react/card.js +4 -0
  105. package/dist/react/checkbox.d.ts +14 -0
  106. package/dist/react/checkbox.js +4 -0
  107. package/dist/react/chip.d.ts +12 -0
  108. package/dist/react/chip.js +4 -0
  109. package/dist/react/create.js +49 -0
  110. package/dist/react/disclosure.d.ts +11 -0
  111. package/dist/react/disclosure.js +4 -0
  112. package/dist/react/divider.d.ts +9 -0
  113. package/dist/react/divider.js +4 -0
  114. package/dist/react/index.d.ts +26 -0
  115. package/dist/react/index.js +26 -0
  116. package/dist/react/input.d.ts +28 -0
  117. package/dist/react/input.js +4 -0
  118. package/dist/react/link.d.ts +15 -0
  119. package/dist/react/link.js +4 -0
  120. package/dist/react/lookup-list.d.ts +9 -0
  121. package/dist/react/lookup-list.js +4 -0
  122. package/dist/react/lookup-option.d.ts +11 -0
  123. package/dist/react/lookup-option.js +4 -0
  124. package/dist/react/lookup.d.ts +28 -0
  125. package/dist/react/lookup.js +4 -0
  126. package/dist/react/popover.d.ts +11 -0
  127. package/dist/react/popover.js +4 -0
  128. package/dist/react/quantity.d.ts +15 -0
  129. package/dist/react/quantity.js +4 -0
  130. package/dist/react/radio-option.d.ts +11 -0
  131. package/dist/react/radio-option.js +4 -0
  132. package/dist/react/radio.d.ts +18 -0
  133. package/dist/react/radio.js +4 -0
  134. package/dist/react/select-option.d.ts +11 -0
  135. package/dist/react/select-option.js +4 -0
  136. package/dist/react/select.d.ts +20 -0
  137. package/dist/react/select.js +4 -0
  138. package/dist/react/skeleton.d.ts +11 -0
  139. package/dist/react/skeleton.js +4 -0
  140. package/dist/react/status.d.ts +12 -0
  141. package/dist/react/status.js +4 -0
  142. package/dist/react/tab.d.ts +10 -0
  143. package/dist/react/tab.js +4 -0
  144. package/dist/react/tabs.d.ts +17 -0
  145. package/dist/react/tabs.js +4 -0
  146. package/dist/react/text.d.ts +12 -0
  147. package/dist/react/text.js +4 -0
  148. package/dist/react/textarea.d.ts +23 -0
  149. package/dist/react/textarea.js +4 -0
  150. package/dist/react/thumbnail.d.ts +13 -0
  151. package/dist/react/thumbnail.js +4 -0
  152. package/dist/react/ui.d.ts +10 -0
  153. package/dist/react/ui.js +4 -0
  154. package/dist/types/components/core/badge/badge.d.ts +25 -0
  155. package/dist/types/components/core/button/button.d.ts +60 -0
  156. package/dist/types/components/core/card/card.d.ts +21 -0
  157. package/dist/types/components/core/checkbox/checkbox.d.ts +46 -0
  158. package/dist/types/components/core/chip/chip.d.ts +36 -0
  159. package/dist/types/components/core/disclosure/disclosure.d.ts +37 -0
  160. package/dist/types/components/core/divider/divider.d.ts +21 -0
  161. package/dist/types/components/core/index.d.ts +21 -0
  162. package/dist/types/components/core/input/input.d.ts +57 -0
  163. package/dist/types/components/core/link/link.d.ts +42 -0
  164. package/dist/types/components/core/lookup/lookup-list.d.ts +21 -0
  165. package/dist/types/components/core/lookup/lookup-option.d.ts +27 -0
  166. package/dist/types/components/core/lookup/lookup.d.ts +32 -0
  167. package/dist/types/components/core/popover/popover.d.ts +33 -0
  168. package/dist/types/components/core/quantity/quantity.d.ts +47 -0
  169. package/dist/types/components/core/radio/radio-option.d.ts +82 -0
  170. package/dist/types/components/core/radio/radio.d.ts +65 -0
  171. package/dist/types/components/core/select/select-option.d.ts +69 -0
  172. package/dist/types/components/core/select/select.d.ts +70 -0
  173. package/dist/types/components/core/skeleton/skeleton.d.ts +23 -0
  174. package/dist/types/components/core/status/status.d.ts +38 -0
  175. package/dist/types/components/core/tabs/tab.d.ts +76 -0
  176. package/dist/types/components/core/tabs/tabs.d.ts +46 -0
  177. package/dist/types/components/core/text/text.d.ts +23 -0
  178. package/dist/types/components/core/textarea/textarea.d.ts +45 -0
  179. package/dist/types/components/core/thumbnail/thumbnail.d.ts +27 -0
  180. package/dist/types/components/core/ui/ui.d.ts +16 -0
  181. package/dist/types/components/elements.d.ts +1 -0
  182. package/dist/types/react/create.d.ts +8 -0
  183. package/dist/types/runtime/config.d.ts +25 -0
  184. package/dist/types/runtime/css.d.ts +12 -0
  185. package/dist/types/runtime/define.d.ts +4 -0
  186. package/dist/types/runtime/description.d.ts +12 -0
  187. package/dist/types/runtime/element.d.ts +61 -0
  188. package/dist/types/runtime/focus.d.ts +5 -0
  189. package/dist/types/runtime/form.d.ts +5 -0
  190. package/dist/types/runtime/index.d.ts +2 -0
  191. package/dist/types/runtime/link.d.ts +17 -0
  192. package/dist/types/runtime/loader.d.ts +21 -0
  193. package/dist/types/runtime/popup.d.ts +8 -0
  194. package/dist/types/runtime/sheet.d.ts +31 -0
  195. package/dist/types/runtime/text-field.d.ts +47 -0
  196. package/dist/types/runtime/toggle.d.ts +8 -0
  197. package/dist/types/runtime/tokens.generated.d.ts +492 -0
  198. package/dist/types/runtime/values.d.ts +6 -0
  199. package/dist/types/runtime/variants.d.ts +4 -0
  200. package/package.json +2 -1
@@ -0,0 +1,92 @@
1
+ import { n as e, r as t, t as n } from "./define-BlQTa1g4.js";
2
+ import { n as r } from "./element-B4-_7TLZ.js";
3
+ import { n as i, t as a } from "./toggle-C7-oPgWR.js";
4
+ import { n as o, t as s } from "./popup-Dbh2fchP.js";
5
+ // src/components/core/popover/popover.css?inline
6
+ var c = ":host{display:inline-block}:host [part=panel]{box-sizing:border-box;max-width:calc(100% - 16px);padding:var(--swell-overlay-padding);border:var(--swell-border-width) solid var(--swell-overlay-color-border);border-radius:var(--swell-overlay-border-radius);font:var(--swell-font-weight) var(--swell-font-size) / var(--swell-font-leading) var(--swell-font-family);letter-spacing:var(--swell-font-tracking);background:var(--swell-overlay-color-background);color:var(--swell-color-foreground);box-shadow:var(--swell-overlay-shadow) var(--swell-overlay-color-shadow);overscroll-behavior:contain;outline:none;margin:0;position:fixed;inset:auto;overflow:auto}:host [part=panel]:popover-open{animation:swell-popover-below var(--swell-motion-duration-base) var(--swell-motion-easing)}:host [part=panel].above:popover-open{animation-name:swell-popover-above}@keyframes swell-popover-below{0%{opacity:0;transform:scale(.96)translateY(-6px)}}@keyframes swell-popover-above{0%{opacity:0;transform:scale(.96)translateY(6px)}}@media (forced-colors:active){:host [part=panel]{border-color:canvastext}}", l = /* @__PURE__ */ t({ SwellPopover: () => d }), u = "<slot name=\"trigger\"></slot><div part=\"panel\" role=\"dialog\" popover=\"auto\" tabindex=\"-1\"><slot></slot></div>", d = class extends r {
7
+ static styles = c;
8
+ static template = u;
9
+ static observedAttributes = [
10
+ ...r.observedAttributes,
11
+ "open",
12
+ "aria-label"
13
+ ];
14
+ #e;
15
+ #t = !1;
16
+ #n = !1;
17
+ #r;
18
+ #i = a(this);
19
+ constructor() {
20
+ super();
21
+ let e = this.shadowRoot?.querySelector("slot[name=\"trigger\"]");
22
+ e?.addEventListener("pointerdown", () => {
23
+ this.#e = this.open, addEventListener("pointerup", this.#p, { capture: !0 }), addEventListener("pointercancel", this.#p, { capture: !0 });
24
+ }), e?.addEventListener("slotchange", () => this.#f()), e?.addEventListener("click", (e) => {
25
+ let t = this.#e ?? this.open;
26
+ this.#e = void 0, setTimeout(() => {
27
+ !e.defaultPrevented && this.isConnected && (this.open = !t, this.open && i(this, this.#o));
28
+ });
29
+ }), this.#o.addEventListener("beforetoggle", (e) => {
30
+ let t = e.newState === "open", n = this.getRootNode().activeElement;
31
+ !t && !this.#t && n && this.contains(n) && this.#s?.focus(), this.#t = !1, this.#u(t), this.#n = !0, this.open = t, this.#n = !1;
32
+ }), this.addEventListener("focusout", (e) => {
33
+ let t = e.relatedTarget;
34
+ this.open && (t instanceof Node ? this.contains(t) || this.#a() : setTimeout(() => {
35
+ let e = document.activeElement;
36
+ e instanceof HTMLIFrameElement && !this.contains(e) && this.#a();
37
+ }));
38
+ });
39
+ }
40
+ #a() {
41
+ this.open &&= (this.#t = !0, !1);
42
+ }
43
+ get open() {
44
+ return this.hasAttribute("open");
45
+ }
46
+ set open(e) {
47
+ this.toggleAttribute("open", !!e);
48
+ }
49
+ connectedCallback() {
50
+ e(this, "open"), super.connectedCallback(), this.#f(), this.#l();
51
+ }
52
+ disconnectedCallback() {
53
+ super.disconnectedCallback(), this.#u(!1), this.open = !1;
54
+ }
55
+ update(e) {
56
+ e === "aria-label" && this.#c(), e === "open" && (this.#l(), this.#i());
57
+ }
58
+ get #o() {
59
+ return this.shadowRoot?.querySelector("[part=\"panel\"]");
60
+ }
61
+ get #s() {
62
+ return this.querySelector(":scope > [slot=\"trigger\"]");
63
+ }
64
+ #c() {
65
+ let e = this.getAttribute("aria-label");
66
+ e ? this.#o.setAttribute("aria-label", e) : this.#o.removeAttribute("aria-label");
67
+ }
68
+ #l() {
69
+ if (!this.isConnected || this.#n) return;
70
+ let e = this.#o.matches(":popover-open");
71
+ this.open && !e ? this.#o.showPopover() : !this.open && e && this.#o.hidePopover(), this.open && this.#m();
72
+ }
73
+ #u(e) {
74
+ this.#r?.(), this.#r = e ? s(this.#m) : void 0, this.#f(e);
75
+ }
76
+ #d;
77
+ #f(e = this.open) {
78
+ let t = this.#s ?? void 0;
79
+ this.#d !== t && this.#d?.removeAttribute("aria-expanded"), t?.setAttribute("aria-expanded", String(e)), this.#d = t;
80
+ }
81
+ #p = () => {
82
+ removeEventListener("pointerup", this.#p, { capture: !0 }), removeEventListener("pointercancel", this.#p, { capture: !0 }), setTimeout(() => this.#e = void 0);
83
+ };
84
+ #m = () => {
85
+ let e = this.#o, t = this.#s ?? this, n = o(t, e, this);
86
+ e.classList.toggle("above", n);
87
+ let r = t.getBoundingClientRect(), i = (r.left + r.right) / 2 - parseFloat(e.style.left);
88
+ e.style.transformOrigin = `${i}px ${n ? "100%" : "0"}`;
89
+ };
90
+ };
91
+ n("swell-popover", d);
92
+ export { l as n, d as t };
@@ -0,0 +1,21 @@
1
+ function e(e, t, n) {
2
+ let r = parseFloat(e.getPropertyValue(t));
3
+ return Number.isFinite(r) ? r : n;
4
+ }
5
+ function t(t, n, r) {
6
+ let i = getComputedStyle(n), a = e(i, "--swell-overlay-offset", 12), o = e(i, "--swell-overlay-height", 320), s = t.getBoundingClientRect(), c = n.style, l = innerHeight - s.bottom - a - 8, u = s.top - a - 8, d = l >= Math.min(n.scrollHeight, o) || l >= u;
7
+ c.minWidth = `${s.width}px`, c.maxHeight = `${Math.max(0, Math.min(o, d ? l : u))}px`;
8
+ let f = document.documentElement.clientWidth;
9
+ c.right = "auto", c.left = "0px";
10
+ let p = n.offsetWidth, m = (e) => e < 0 || e + p > f, h = getComputedStyle(r).direction === "rtl", g = h ? s.right - p : s.left;
11
+ return m(g) && (g = h ? s.left : s.right - p), m(g) && (g = Math.max(8, Math.min(g, f - 8 - p))), c.left = `${g}px`, c.top = d ? `${s.bottom + a}px` : "auto", c.bottom = d ? "auto" : `${innerHeight - s.top + a}px`, !d;
12
+ }
13
+ function n(e) {
14
+ return addEventListener("scroll", e, {
15
+ capture: !0,
16
+ passive: !0
17
+ }), addEventListener("resize", e), () => {
18
+ removeEventListener("scroll", e, { capture: !0 }), removeEventListener("resize", e);
19
+ };
20
+ }
21
+ export { t as n, n as t };
@@ -0,0 +1,140 @@
1
+ import { n as e, r as t, t as n } from "./define-BlQTa1g4.js";
2
+ import { n as r, o as i } from "./element-B4-_7TLZ.js";
3
+ // src/components/core/quantity/quantity.css?inline
4
+ var a = ":host{--_swell-control-height:var(--swell-control-height);--_swell-control-font-size:var(--swell-control-font-size)}:host([size=xsmall]){--_swell-control-height:var(--swell-control-xsmall-height);--_swell-control-font-size:var(--swell-control-xsmall-font-size)}:host([size=small]){--_swell-control-height:var(--swell-control-small-height);--_swell-control-font-size:var(--swell-control-small-font-size)}:host([size=large]){--_swell-control-height:var(--swell-control-large-height);--_swell-control-font-size:var(--swell-control-large-font-size)}:host([size=xlarge]){--_swell-control-height:var(--swell-control-xlarge-height);--_swell-control-font-size:var(--swell-control-xlarge-font-size)}:host{box-sizing:border-box;height:var(--_swell-control-height);border:var(--swell-border-width) solid var(--swell-color-border);font:var(--swell-font-bold-weight) var(--_swell-control-font-size) / 1 var(--swell-font-family);font-variant-numeric:tabular-nums;letter-spacing:var(--swell-font-tracking);background:var(--swell-color-background);color:var(--swell-color-foreground);-webkit-user-select:none;user-select:none;border-radius:999px;align-items:center;display:inline-flex}:host(:focus-visible){outline:var(--swell-focus-width) solid var(--swell-focus-color);outline-offset:var(--swell-focus-offset)}:host([aria-disabled=true]){opacity:var(--swell-control-disabled-opacity)}:host .step{width:calc(var(--_swell-control-height) - 2 * var(--swell-border-width));height:calc(var(--_swell-control-height) - 2 * var(--swell-border-width));cursor:pointer;touch-action:manipulation;transition:background-color var(--swell-motion-duration-fast) var(--swell-motion-easing);border-radius:999px;flex:none;place-items:center;display:grid}:host .step:hover{background:var(--swell-color-secondary-background)}:host .step.limit{opacity:var(--swell-control-disabled-opacity)}:host .step.limit,:host([aria-disabled=true]) .step{cursor:default;background:0 0}:host([busy]){opacity:var(--swell-control-disabled-opacity)}:host([busy]) .step{cursor:progress;background:0 0}:host .step svg{width:calc(var(--_swell-control-font-size) + 4px);height:calc(var(--_swell-control-font-size) + 4px)}:host .count{min-width:calc(var(--_swell-control-font-size) + 4px);text-align:center}@media (forced-colors:active){:host{border-color:canvastext}:host .step{color:buttontext}:host .step.limit,:host([aria-disabled=true]) .step{color:graytext;opacity:1}}", o = /* @__PURE__ */ t({ SwellQuantity: () => u }), s = (e) => `<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round">${e}</svg>`, c = `<span class="step" data-step="-1" aria-hidden="true">${s("<path d=\"M5 12h14\"/>")}</span><span class="count" aria-hidden="true"></span><span class="step" data-step="1" aria-hidden="true">${s("<path d=\"M5 12h14\"/><path d=\"M12 5v14\"/>")}</span>`;
5
+ function l(e) {
6
+ if (e === null || e.trim() === "") return;
7
+ let t = Number(e);
8
+ return Number.isInteger(t) ? t : void 0;
9
+ }
10
+ var u = class extends r {
11
+ static styles = a;
12
+ static template = c;
13
+ static formAssociated = !0;
14
+ static observedAttributes = [
15
+ ...r.observedAttributes,
16
+ "value",
17
+ "min",
18
+ "max",
19
+ "step",
20
+ "disabled",
21
+ "busy"
22
+ ];
23
+ #e;
24
+ #t = !1;
25
+ constructor() {
26
+ super(), this.shadowRoot?.addEventListener("click", (e) => {
27
+ let t = e.target.closest("[data-step]");
28
+ t && this.#c(this.value + Number(t.getAttribute("data-step")) * this.#i);
29
+ }), this.addEventListener("keydown", this.#s);
30
+ }
31
+ get value() {
32
+ return this.#o(this.#e ?? l(this.getAttribute("value")) ?? this.#n);
33
+ }
34
+ set value(e) {
35
+ let t = l(String(e));
36
+ t !== void 0 && (this.#e = t, this.#l());
37
+ }
38
+ get name() {
39
+ return this.getAttribute("name") ?? "";
40
+ }
41
+ set name(e) {
42
+ this.setAttribute("name", e);
43
+ }
44
+ get disabled() {
45
+ return this.hasAttribute("disabled");
46
+ }
47
+ set disabled(e) {
48
+ this.toggleAttribute("disabled", !!e);
49
+ }
50
+ get busy() {
51
+ return this.hasAttribute("busy");
52
+ }
53
+ set busy(e) {
54
+ this.toggleAttribute("busy", !!e);
55
+ }
56
+ get form() {
57
+ return this.internals.form;
58
+ }
59
+ connectedCallback() {
60
+ for (let t of [
61
+ "value",
62
+ "name",
63
+ "disabled",
64
+ "busy"
65
+ ]) e(this, t);
66
+ this.hasAttribute("role") || this.setAttribute("role", "spinbutton"), this.#l(), super.connectedCallback();
67
+ }
68
+ formResetCallback() {
69
+ this.#e = void 0, this.#l();
70
+ }
71
+ formDisabledCallback(e) {
72
+ this.#t = e, this.#l();
73
+ }
74
+ formStateRestoreCallback(e) {
75
+ let t = typeof e == "string" ? l(e) : void 0;
76
+ t !== void 0 && (this.#e = t, this.#l());
77
+ }
78
+ update() {
79
+ this.#l();
80
+ }
81
+ get #n() {
82
+ return l(this.getAttribute("min")) ?? 1;
83
+ }
84
+ get #r() {
85
+ let e = l(this.getAttribute("max"));
86
+ return e === void 0 ? Infinity : Math.max(e, this.#n);
87
+ }
88
+ get #i() {
89
+ let e = l(this.getAttribute("step"));
90
+ return e !== void 0 && e > 0 ? e : 1;
91
+ }
92
+ get #a() {
93
+ return this.disabled || this.#t;
94
+ }
95
+ #o(e) {
96
+ return Math.min(Math.max(e, this.#n), this.#r);
97
+ }
98
+ #s = (e) => {
99
+ if (e.target !== this || e.defaultPrevented || this.#a || e.altKey || e.ctrlKey || e.metaKey) return;
100
+ let t;
101
+ switch (e.key) {
102
+ case "ArrowUp":
103
+ t = this.value + this.#i;
104
+ break;
105
+ case "ArrowDown":
106
+ t = this.value - this.#i;
107
+ break;
108
+ case "Home":
109
+ t = this.#n;
110
+ break;
111
+ case "End":
112
+ t = this.#r;
113
+ break;
114
+ default: return;
115
+ }
116
+ e.preventDefault(), Number.isFinite(t) && this.#c(t);
117
+ };
118
+ #c(e) {
119
+ if (this.#a || this.busy) return;
120
+ let t = this.#o(e);
121
+ t !== this.value && (this.#e = t, this.#l(), this.dispatchEvent(new Event("input", {
122
+ bubbles: !0,
123
+ composed: !0
124
+ })), this.dispatchEvent(new Event("change", { bubbles: !0 })));
125
+ }
126
+ #l() {
127
+ this.#e !== void 0 && (this.#e = this.#o(this.#e));
128
+ let e = this.value, t = this.#n, n = this.#r;
129
+ this.setAttribute("aria-valuenow", String(e)), this.setAttribute("aria-valuemin", String(t)), Number.isFinite(n) ? this.setAttribute("aria-valuemax", String(n)) : this.removeAttribute("aria-valuemax");
130
+ let r = this.shadowRoot, i = r?.querySelector(".count");
131
+ i && (i.textContent = String(e));
132
+ for (let i of r?.querySelectorAll("[data-step]") ?? []) i.classList.toggle("limit", i.getAttribute("data-step") === "1" ? e >= n : e <= t);
133
+ this.internals.setFormValue(String(e), String(e)), this.#u();
134
+ }
135
+ #u() {
136
+ this.busy ? this.setAttribute("aria-busy", "true") : this.removeAttribute("aria-busy"), this.#a ? this.setAttribute("aria-disabled", "true") : this.removeAttribute("aria-disabled"), i(this, !this.#a);
137
+ }
138
+ };
139
+ n("swell-quantity", u);
140
+ export { o as n, u as t };
@@ -0,0 +1,192 @@
1
+ import { n as e, r as t, t as n } from "./define-BlQTa1g4.js";
2
+ import { n as r, t as i } from "./description-BHfQ8meK.js";
3
+ import { n as a } from "./element-B4-_7TLZ.js";
4
+ import { n as o, t as s } from "./radio-option-hT29S8Zl.js";
5
+ // src/components/core/radio/radio.css?inline
6
+ var c = ":host{--_swell-control-font-size:var(--swell-control-font-size);--_swell-radio-gap:var(--swell-radio-gap,8px);--_swell-radio-button-gap:var(--swell-radio-button-gap,6px);--_swell-control-height:var(--swell-control-height);--_swell-radio-color-background:var(--swell-radio-color-background,var(--swell-color-background));--_swell-radio-shadow:var(--swell-radio-shadow,0px 1px 3px 0px);--_swell-radio-color-shadow:var(--swell-radio-color-shadow,#0000001a)}:host([size=xsmall]){--_swell-control-font-size:var(--swell-control-xsmall-font-size);--_swell-control-height:var(--swell-control-xsmall-height)}:host([size=small]){--_swell-control-font-size:var(--swell-control-small-font-size);--_swell-control-height:var(--swell-control-small-height)}:host([size=large]){--_swell-control-font-size:var(--swell-control-large-font-size);--_swell-control-height:var(--swell-control-large-height)}:host([size=xlarge]){--_swell-control-font-size:var(--swell-control-xlarge-font-size);--_swell-control-height:var(--swell-control-xlarge-height)}:host{display:block}:host [hidden]{display:none}:host .group{gap:var(--swell-field-gap);display:grid}:host .label{font:var(--swell-field-label-font-weight) max(12px, calc(var(--_swell-control-font-size) - 1px)) / var(--swell-font-leading) var(--swell-field-label-font-family);letter-spacing:var(--swell-field-label-font-tracking);color:var(--swell-field-label-color-foreground)}:host .options{gap:var(--_swell-radio-gap);display:grid}:host .swell-radio-hint,:host .swell-radio-error{font:var(--swell-font-weight) max(12px, calc(var(--_swell-control-font-size) - 1px)) / var(--swell-font-leading) var(--swell-font-family);letter-spacing:var(--swell-font-tracking);color:var(--swell-color-secondary-foreground)}:host .swell-radio-error:not([hidden]){font-weight:var(--swell-font-strong-weight);color:var(--swell-color-danger)}:host .marker{display:none}:host(:state(button)) .options{gap:var(--_swell-radio-button-gap);grid-template-columns:repeat(auto-fit,minmax(64px,1fr))}:host(:state(segmented)) .options{box-sizing:border-box;height:var(--_swell-control-height);border-radius:calc(var(--swell-border-radius) + 4px);background:var(--swell-color-secondary-background);grid-auto-columns:minmax(0,1fr);grid-auto-flow:column;gap:0;padding:4px;position:relative}:host(:state(segmented)[invalid]) .options{box-shadow:inset 0 0 0 var(--swell-border-width) var(--swell-color-danger)}:host(:state(segmented)) .marker:not([hidden]){box-sizing:border-box;width:calc((100% - 8px) / var(--marker-count));border-radius:var(--swell-border-radius);background:var(--_swell-radio-color-background);box-shadow:var(--_swell-radio-shadow) var(--_swell-radio-color-shadow), 0 0 0 var(--swell-border-width) var(--swell-field-color-border);transition:left var(--swell-motion-duration-slow) var(--swell-motion-easing), right var(--swell-motion-duration-slow) var(--swell-motion-easing);display:block;position:absolute;inset-block:4px;inset-inline-start:calc(4px + var(--marker-index) * (100% - 8px) / var(--marker-count))}:host(:state(segmented):disabled) .marker,:host(:state(segmented)) .marker.faded{opacity:var(--swell-control-disabled-opacity)}:host(:state(segmented)) ::slotted(swell-radio-option){min-width:0;position:relative}@media (forced-colors:active){:host(:state(segmented)) .options{outline:1px solid canvastext}:host(:state(segmented)) .marker:not([hidden]){background:highlight;transition:none}}", l = /* @__PURE__ */ t({ SwellRadio: () => p }), u = "\n <div class=\"group\" role=\"radiogroup\">\n <div class=\"label\" id=\"label\" hidden></div>\n <div class=\"options\"><span class=\"marker\" aria-hidden=\"true\" hidden></span><slot></slot></div>\n </div>", d;
7
+ function f() {
8
+ if (d === void 0) {
9
+ let e = document.createElement("form"), t = document.createElement("input");
10
+ t.type = "radio", t.name = "probe", t.required = !0, e.append(t), d = t.validationMessage;
11
+ }
12
+ return d;
13
+ }
14
+ var p = class extends a {
15
+ static group = "radio";
16
+ static appearance = "radio";
17
+ static appearances = ["segmented", "button"];
18
+ static styles = c;
19
+ static template = u;
20
+ static formAssociated = !0;
21
+ static observedAttributes = [
22
+ ...a.observedAttributes,
23
+ "label",
24
+ "hint",
25
+ "error",
26
+ "invalid",
27
+ "name",
28
+ "value",
29
+ "required",
30
+ "disabled",
31
+ "aria-label",
32
+ "indicator-position"
33
+ ];
34
+ #e;
35
+ #t;
36
+ #n;
37
+ #r;
38
+ #i;
39
+ #a;
40
+ #o;
41
+ constructor() {
42
+ super();
43
+ let e = this.shadowRoot;
44
+ this.#e = e.querySelector(".group"), this.#t = e.querySelector(".label"), this.#n = e.querySelector("slot"), this.#r = e.querySelector(".marker"), this.#i = i("swell-radio", "group"), this.#e.append(this.#i.hint, this.#i.error), this.#n.addEventListener("slotchange", () => this.#g()), o.link(this, {
45
+ choose: (e) => this.#h(e),
46
+ refresh: () => this.#g()
47
+ }), this.addEventListener("keydown", this.#p), this.addEventListener("keyup", this.#m);
48
+ }
49
+ get value() {
50
+ return this.#s ?? "";
51
+ }
52
+ set value(e) {
53
+ this.#a = String(e), this.#g();
54
+ }
55
+ get name() {
56
+ return this.getAttribute("name") ?? "";
57
+ }
58
+ set name(e) {
59
+ this.setAttribute("name", e);
60
+ }
61
+ get required() {
62
+ return this.hasAttribute("required");
63
+ }
64
+ set required(e) {
65
+ this.toggleAttribute("required", !!e);
66
+ }
67
+ get disabled() {
68
+ return this.hasAttribute("disabled");
69
+ }
70
+ set disabled(e) {
71
+ this.toggleAttribute("disabled", !!e);
72
+ }
73
+ get invalid() {
74
+ return this.hasAttribute("invalid");
75
+ }
76
+ set invalid(e) {
77
+ this.toggleAttribute("invalid", !!e);
78
+ }
79
+ get form() {
80
+ return this.internals.form;
81
+ }
82
+ get validity() {
83
+ return this.internals.validity;
84
+ }
85
+ get validationMessage() {
86
+ return this.internals.validationMessage;
87
+ }
88
+ get willValidate() {
89
+ return this.internals.willValidate;
90
+ }
91
+ checkValidity() {
92
+ return this.internals.checkValidity();
93
+ }
94
+ reportValidity() {
95
+ return this.internals.reportValidity();
96
+ }
97
+ connectedCallback() {
98
+ for (let t of [
99
+ "value",
100
+ "name",
101
+ "required",
102
+ "disabled",
103
+ "invalid"
104
+ ]) e(this, t);
105
+ super.connectedCallback(), this.#g();
106
+ }
107
+ formResetCallback() {
108
+ this.#a = void 0, this.#g();
109
+ }
110
+ formDisabledCallback() {
111
+ this.#g();
112
+ }
113
+ formStateRestoreCallback(e) {
114
+ typeof e == "string" && (this.#a = e, this.#g());
115
+ }
116
+ update() {
117
+ this.#g();
118
+ }
119
+ get #s() {
120
+ return this.#a ?? this.getAttribute("value");
121
+ }
122
+ get #c() {
123
+ return this.matches(":disabled");
124
+ }
125
+ #l(e) {
126
+ if (this.#c) return;
127
+ let t = this.#s;
128
+ return (t === null ? void 0 : e.find((e) => e.value === t && !e.disabled)) ?? e.find((e) => !e.disabled);
129
+ }
130
+ focus(e) {
131
+ this.#l(this.#u())?.focus(e);
132
+ }
133
+ #u() {
134
+ return this.#n.assignedElements().filter((e) => e instanceof s && !e.hidden);
135
+ }
136
+ #d(e) {
137
+ let t = e.target;
138
+ return t instanceof s && t.parentElement === this ? t : void 0;
139
+ }
140
+ #f(e) {
141
+ let t = getComputedStyle(this).direction === "rtl" ? -1 : 1;
142
+ return e === "ArrowDown" ? 1 : e === "ArrowUp" ? -1 : e === "ArrowRight" ? t : e === "ArrowLeft" ? -t : 0;
143
+ }
144
+ #p = (e) => {
145
+ let t = this.#d(e);
146
+ if (!t) return;
147
+ if (e.key === " ") {
148
+ e.preventDefault(), this.#o = t;
149
+ return;
150
+ }
151
+ if (e.altKey || e.ctrlKey || e.metaKey) return;
152
+ let n = this.#f(e.key);
153
+ if (!n) return;
154
+ e.preventDefault();
155
+ let r = this.#u().filter((e) => !e.disabled), i = r[(r.indexOf(t) + n + r.length) % r.length];
156
+ i && (this.#h(i), i.focus());
157
+ };
158
+ #m = (e) => {
159
+ if (e.key !== " " || !this.#o) return;
160
+ let t = this.#o;
161
+ this.#o = void 0, this.#d(e) === t && this.#h(t);
162
+ };
163
+ #h(e) {
164
+ this.#c || e.disabled || e.value === this.#s || (this.#a = e.value, this.#g(), this.dispatchEvent(new Event("input", {
165
+ bubbles: !0,
166
+ composed: !0
167
+ })), this.dispatchEvent(new Event("change", { bubbles: !0 })));
168
+ }
169
+ #g() {
170
+ let e = this.#u(), t = this.#s, n = this.#c, r = this.invalid, i = t === null ? void 0 : e.find((e) => e.value === t), a = i && !i.disabled && !n ? i : void 0, s = this.#l(e);
171
+ e.forEach((t, a) => o.sync(t, {
172
+ checked: t === i,
173
+ tabbable: t === s,
174
+ disabled: n || t.disabled,
175
+ invalid: r,
176
+ position: a + 1,
177
+ size: e.length
178
+ })), this.internals.setFormValue(a ? t : null, t), this.required && !a ? this.internals.setValidity({ valueMissing: !0 }, f(), e.find((e) => !e.disabled)) : this.internals.setValidity({}), this.#v(n), this.#_();
179
+ }
180
+ #_() {
181
+ let e = this.#u(), t = e.findIndex((e) => e.checked);
182
+ this.#r.hidden = t < 0, this.#r.classList.toggle("faded", !!e[t]?.disabled), this.#r.style.setProperty("--marker-index", String(Math.max(t, 0))), this.#r.style.setProperty("--marker-count", String(Math.max(e.length, 1)));
183
+ }
184
+ #v(e) {
185
+ let t = this.getAttribute("label") ?? "";
186
+ this.#t.textContent = t, this.#t.hidden = !t;
187
+ let n = this.getAttribute("aria-label");
188
+ t ? this.#e.setAttribute("aria-labelledby", "label") : this.#e.removeAttribute("aria-labelledby"), !t && n ? this.#e.setAttribute("aria-label", n) : this.#e.removeAttribute("aria-label"), this.required ? this.#e.setAttribute("aria-required", "true") : this.#e.removeAttribute("aria-required"), e ? this.#e.setAttribute("aria-disabled", "true") : this.#e.removeAttribute("aria-disabled"), r(this, this.#e, this.#i);
189
+ }
190
+ };
191
+ n("swell-radio", p);
192
+ export { l as n, p as t };
@@ -0,0 +1,88 @@
1
+ import { o as e, u as t } from "./config-C-FYxOaJ.js";
2
+ import { n, r, t as i } from "./define-BlQTa1g4.js";
3
+ import { n as a } from "./element-B4-_7TLZ.js";
4
+ import { t as o } from "./link-D4NC86oc.js";
5
+ // src/components/core/radio/radio-option.css?inline
6
+ var s = ":host{--_swell-radio-color-border:var(--swell-radio-color-border,var(--swell-color-border));--_swell-radio-border-radius:var(--swell-radio-border-radius,var(--swell-border-radius));--_swell-radio-color-background:var(--swell-radio-color-background,var(--swell-color-background));--_swell-radio-checked-color-background:var(--swell-radio-checked-color-background,light-dark(#f1f4fe,#191f2d));--_swell-radio-circle:calc(var(--_swell-control-font-size,var(--swell-control-font-size)) + 6px);--_swell-radio-inline:calc(var(--_swell-control-font-size,var(--swell-control-font-size)) + 2px);--_swell-radio-top:calc(var(--_swell-radio-circle) / 2 + 2px - var(--_swell-control-font-size,var(--swell-control-font-size)) * var(--swell-font-leading) / 2);font:var(--swell-font-weight) var(--_swell-control-font-size,var(--swell-control-font-size)) / var(--swell-font-leading) var(--swell-font-family);letter-spacing:var(--swell-font-tracking);color:var(--swell-color-foreground);display:block}:host [hidden]{display:none}:host(:state(outline)) .frame{border:var(--swell-border-strong-width) solid var(--_swell-radio-color-border);border-radius:var(--_swell-radio-border-radius);background:var(--_swell-radio-color-background);transition:border-color var(--swell-motion-duration-base) var(--swell-motion-easing);overflow:clip}:host(:state(button)) .frame{box-sizing:border-box;height:max(24px, calc(var(--_swell-control-height,var(--swell-control-height)) - 12px));border:var(--swell-border-width) solid var(--_swell-radio-color-border);border-radius:var(--swell-border-radius);background:var(--_swell-radio-color-background);transition:border-color var(--swell-motion-duration-base) var(--swell-motion-easing), background-color var(--swell-motion-duration-base) var(--swell-motion-easing), box-shadow var(--swell-motion-duration-base) var(--swell-motion-easing)}:host(:state(disabled)) .frame{opacity:var(--_swell-control-disabled-opacity,var(--swell-control-disabled-opacity))}:host .row{cursor:pointer}:host(:state(outline)) .row{padding:calc(var(--_swell-control-font-size,var(--swell-control-font-size)) - 2px) var(--_swell-radio-inline)}:host .radio{gap:calc(var(--_swell-control-font-size,var(--swell-control-font-size)) - 8px);outline:none;align-items:flex-start;min-height:24px;display:flex}:host(:state(outline)) .radio{gap:calc(var(--_swell-control-font-size,var(--swell-control-font-size)) - 2px);align-items:center;min-height:0}:host .start{flex:none;align-self:center;align-items:center;display:none}:host(:state(start-content)) .start{display:flex}:host .text{min-width:0;padding-top:var(--_swell-radio-top);flex:1;gap:2px;display:grid}:host(:state(outline)) .text{padding-top:0}:host(:state(outline)) .label{font-weight:var(--swell-font-strong-weight)}:host .hint{font:var(--swell-font-weight) max(12px, calc(var(--_swell-control-font-size,var(--swell-control-font-size)) - 1px)) / var(--swell-font-leading) var(--swell-font-family);letter-spacing:var(--swell-font-tracking);color:var(--swell-color-secondary-foreground)}:host .end{padding-top:var(--_swell-radio-top);font-weight:var(--swell-font-strong-weight);font-variant-numeric:tabular-nums;flex:none}:host(:state(outline)) .end{padding-top:0}:host .indicator{box-sizing:border-box;width:var(--_swell-radio-circle);height:var(--_swell-radio-circle);margin:2px;border:var(--swell-border-strong-width) solid var(--swell-field-color-border);color:var(--swell-color-background);transition:background-color var(--swell-motion-duration-base) var(--swell-motion-easing), border-color var(--swell-motion-duration-base) var(--swell-motion-easing);background:0 0;border-radius:50%;flex:none;place-items:center;margin-block-start:max(2px, calc(var(--_swell-control-font-size,var(--swell-control-font-size)) * var(--swell-font-leading) / 2 - var(--_swell-radio-circle) / 2));display:grid}:host(:state(outline)) .indicator{margin:0}:host(:state(end)) .indicator{order:1}:host .indicator:after{width:round(calc(var(--_swell-radio-circle) * .4), 1px);height:round(calc(var(--_swell-radio-circle) * .4), 1px);content:\"\";transition:transform var(--swell-motion-duration-base) var(--swell-motion-spring);background:currentColor;border-radius:50%;transform:scale(0)}:host(:state(outline)) .indicator:after{display:none}:host .check{width:calc(var(--_swell-control-font-size,var(--swell-control-font-size)) - 2px);height:calc(var(--_swell-control-font-size,var(--swell-control-font-size)) - 2px);display:none}:host(:state(outline)) .check{opacity:0;transition:opacity var(--swell-motion-duration-fast) var(--swell-motion-easing), transform var(--swell-motion-duration-base) var(--swell-motion-spring);display:block;transform:scale(.4)}:host(:state(checked)) .indicator{border-color:var(--swell-color-accent);background:var(--swell-color-accent)}:host(:state(checked)) .indicator:after,:host(:state(outline):state(checked)) .check{opacity:1;transform:none}:host(:state(outline):state(checked)) .frame{border-color:var(--swell-color-accent)}:host(:state(button):state(checked)) .frame{border-color:var(--swell-color-accent);background:var(--_swell-radio-checked-color-background);box-shadow:inset 0 0 0 var(--swell-border-width) var(--swell-color-accent)}:host(:state(plain):state(focused)) .indicator,:host(:is(:state(outline),:state(button)):state(focused)) .frame{outline:var(--swell-focus-width) solid var(--swell-focus-color);outline-offset:var(--swell-focus-offset)}:host(:state(segmented):state(focused)) .frame{outline:var(--swell-focus-width) solid var(--swell-focus-color);outline-offset:calc(var(--swell-focus-width) * -1)}:host(:state(invalid):state(focused)) :is(.indicator,.frame){outline-color:var(--swell-color-danger)}:host(:state(invalid):not(:state(checked))) .indicator,:host(:is(:state(outline),:state(button)):state(invalid):not(:state(checked))) .frame{border-color:var(--swell-color-danger)}:host(:not(:state(checked),:state(disabled),:state(invalid))) .row:hover .indicator{border-color:var(--swell-field-hover-color-border)}:host(:is(:state(outline),:state(button)):not(:state(checked),:state(disabled),:state(invalid)):hover) .frame{border-color:var(--swell-field-color-border)}:host(:state(disabled)) .row{cursor:not-allowed}:host .details{visibility:hidden;transition:grid-template-rows var(--swell-motion-duration-slow) var(--swell-motion-easing), visibility 0s linear var(--swell-motion-duration-slow);grid-template-rows:0fr;display:grid}:host(:not(:state(details))) .details{display:none}:host(:state(checked)) .details{visibility:visible;transition:grid-template-rows var(--swell-motion-duration-slow) var(--swell-motion-easing), visibility 0s;grid-template-rows:1fr}:host(:state(outline)) .details{transition:grid-template-rows var(--swell-motion-duration-slow) var(--swell-motion-easing), padding-bottom var(--swell-motion-duration-slow) var(--swell-motion-easing), visibility 0s linear var(--swell-motion-duration-slow);padding-bottom:0}:host(:state(outline):state(checked)) .details{padding-bottom:var(--_swell-radio-inline);transition:grid-template-rows var(--swell-motion-duration-slow) var(--swell-motion-easing), padding-bottom var(--swell-motion-duration-slow) var(--swell-motion-easing), visibility 0s}:host .details>div{min-height:0;margin:calc(-1 * max(var(--swell-field-ring-width), var(--swell-focus-width) + var(--swell-focus-offset)));padding:max(var(--swell-field-ring-width), var(--swell-focus-width) + var(--swell-focus-offset));overflow:clip}:host .content{padding-block:8px 0;padding-inline:calc(var(--_swell-radio-circle) + var(--_swell-control-font-size,var(--swell-control-font-size)) - 4px) 0}:host(:state(end)) .content{padding-inline-start:0}:host(:state(outline)) .content{padding-block:0;padding-inline:calc(var(--_swell-radio-inline) + var(--_swell-radio-circle) + var(--_swell-control-font-size,var(--swell-control-font-size)) - 2px) var(--_swell-radio-inline)}:host(:state(outline):state(end)) .content{padding-inline-start:var(--_swell-radio-inline)}:host(:state(button)) .row{height:100%;padding-inline:calc(var(--_swell-control-font-size,var(--swell-control-font-size)) - 6px)}:host(:state(button)) .radio{justify-content:center;gap:calc(var(--_swell-control-font-size,var(--swell-control-font-size)) - 8px);align-items:center;height:100%;min-height:0}:host(:state(button)) .text{flex:0 auto;padding-top:0}:host(:is(:state(segmented),:state(button))) :is(.indicator,.hint,.end,.details){display:none}:host(:state(segmented)) :is(.frame,.row){box-sizing:border-box;border-radius:var(--swell-border-radius);height:100%}:host(:state(segmented)) .row{padding-inline:calc(var(--_swell-control-font-size,var(--swell-control-font-size)) - 2px)}:host(:state(segmented)) .radio{justify-content:center;gap:calc(var(--_swell-control-font-size,var(--swell-control-font-size)) - 6px);height:100%;min-height:0;color:var(--swell-color-secondary-foreground);transition:color var(--swell-motion-duration-base) var(--swell-motion-easing);align-items:center}:host(:state(segmented):state(checked)) .radio,:host(:state(segmented):not(:state(disabled),:state(checked)):hover) .radio{color:var(--swell-color-foreground)}:host(:state(segmented)) .text{flex:0 auto;padding-top:0}:host(:state(segmented)) .label{font-weight:var(--swell-font-strong-weight);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}:host(:state(button)) .label{font-size:max(12px, calc(var(--_swell-control-font-size,var(--swell-control-font-size)) - 1px));font-weight:var(--swell-font-medium-weight);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}:host(:state(button):state(checked)) .label{font-weight:var(--swell-font-bold-weight)}@media (forced-colors:active){:host .indicator,:host(:is(:state(outline),:state(button))) .frame{border-color:canvastext}:host(:state(checked)) .indicator{color:highlighttext;background:highlight;border-color:highlight}:host(:is(:state(outline),:state(button)):state(checked)) .frame{border-color:highlight}:host(:state(button):state(checked)) .frame{border-width:max(2px, calc(2 * var(--swell-border-width)))}:host(:state(segmented)) .radio{transition:none}:host(:state(segmented):state(checked)) .radio{forced-color-adjust:none;color:highlighttext}:host(:state(segmented):state(checked)) .frame{outline-color:highlighttext}}", c = /* @__PURE__ */ r({
7
+ SwellRadioOption: () => f,
8
+ radioGroup: () => l
9
+ }), l = o(), u = t["radio.indicator.position"]?.values ?? [], d = "\n <div class=\"frame\">\n <div class=\"row\">\n <div class=\"radio\" role=\"radio\" aria-checked=\"false\" aria-labelledby=\"label end\">\n <span class=\"indicator\" aria-hidden=\"true\"><svg class=\"check\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"3\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M20 6 9 17l-5-5\"/></svg></span>\n <span class=\"start\"><slot name=\"start\"></slot></span>\n <span class=\"text\">\n <span class=\"label\" id=\"label\"><slot></slot></span>\n <span class=\"hint\" id=\"hint\" hidden></span>\n </span>\n <span class=\"end\" id=\"end\"><slot name=\"end\"></slot></span>\n </div>\n </div>\n <div class=\"details\"><div><div class=\"content\"><slot name=\"details\"></slot></div></div></div>\n </div>", f = class extends a {
10
+ static group = "radio";
11
+ static appearance = "radio";
12
+ static appearances = ["segmented", "button"];
13
+ static styles = s;
14
+ static template = d;
15
+ static shadowOptions = {
16
+ mode: "open",
17
+ delegatesFocus: !0
18
+ };
19
+ static observedAttributes = [
20
+ ...a.observedAttributes,
21
+ "value",
22
+ "hint",
23
+ "disabled",
24
+ "hidden"
25
+ ];
26
+ static {
27
+ l.receive((e, t) => e.#s(t));
28
+ }
29
+ #e;
30
+ #t;
31
+ #n;
32
+ #r;
33
+ #i;
34
+ #a = !1;
35
+ constructor() {
36
+ super();
37
+ let e = this.shadowRoot;
38
+ this.#e = e.querySelector(".radio"), this.#t = e.querySelector(".hint"), e.querySelector(".row")?.addEventListener("click", () => l.linkOf(this)?.choose(this)), this.#n = e.querySelector("slot[name=\"details\"]"), this.#n.addEventListener("slotchange", () => this.#o()), this.#r = e.querySelector("slot[name=\"start\"]"), this.#r.addEventListener("slotchange", () => this.#o()), this.#e.addEventListener("focus", () => {
39
+ this.#e.matches(":focus-visible") && this.internals.states.add("focused");
40
+ }), this.#e.addEventListener("blur", () => this.internals.states.delete("focused"));
41
+ }
42
+ get checked() {
43
+ return this.#a;
44
+ }
45
+ get value() {
46
+ return this.getAttribute("value") ?? "on";
47
+ }
48
+ set value(e) {
49
+ this.setAttribute("value", e);
50
+ }
51
+ get disabled() {
52
+ return this.hasAttribute("disabled");
53
+ }
54
+ set disabled(e) {
55
+ this.toggleAttribute("disabled", !!e);
56
+ }
57
+ connectedCallback() {
58
+ n(this, "value"), n(this, "disabled"), super.connectedCallback(), this.#o(), this.#i = l.linkOf(this), this.#i?.refresh();
59
+ }
60
+ disconnectedCallback() {
61
+ super.disconnectedCallback(), this.#i?.refresh(), this.#i = void 0;
62
+ }
63
+ appearanceSource() {
64
+ return l.groupOf(this) ?? this;
65
+ }
66
+ extraStates() {
67
+ let t = l.groupOf(this)?.getAttribute("indicator-position");
68
+ return t && u.includes(t) ? [t] : [e("radio.indicator", "position") ?? "start"];
69
+ }
70
+ update(e) {
71
+ e === "hint" ? (this.#t.textContent = this.getAttribute("hint") ?? "", this.#t.hidden = !this.#t.textContent, this.#t.hidden ? this.#e.removeAttribute("aria-describedby") : this.#e.setAttribute("aria-describedby", "hint")) : (e === "value" || e === "disabled" || e === "hidden") && l.linkOf(this)?.refresh();
72
+ }
73
+ #o() {
74
+ for (let [e, t] of [["details", this.#n], ["start-content", this.#r]]) t.assignedNodes().length > 0 ? this.internals.states.add(e) : this.internals.states.delete(e);
75
+ }
76
+ #s(e) {
77
+ this.#i = l.linkOf(this) ?? this.#i, this.#a = e.checked, this.updateStates();
78
+ let t = this.#e;
79
+ t.setAttribute("aria-checked", String(e.checked)), t.setAttribute("aria-posinset", String(e.position)), t.setAttribute("aria-setsize", String(e.size)), e.disabled ? (t.setAttribute("aria-disabled", "true"), t.removeAttribute("tabindex")) : (t.removeAttribute("aria-disabled"), t.tabIndex = e.tabbable ? 0 : -1);
80
+ for (let [t, n] of [
81
+ ["checked", e.checked],
82
+ ["disabled", e.disabled],
83
+ ["invalid", e.invalid]
84
+ ]) n ? this.internals.states.add(t) : this.internals.states.delete(t);
85
+ }
86
+ };
87
+ i("swell-radio-option", f);
88
+ export { l as n, c as r, f as t };