@protonradio/proton-ui 0.11.31 → 0.11.33-beta.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.
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("../../../node_modules/react/jsx-runtime.cjs.js"),c=require("react");;/* empty css */const E=require("../../../utils/string.cjs.js"),P=a=>/^[0-9]+$/.test(a),O=c.forwardRef(({length:a=6,isError:j=!1,isDisabled:y=!1,onChange:l,onComplete:d,showSeparator:R=!0,"data-testid":f},$)=>{a=a>0?a:0;const[i,v]=c.useState(Array(a).fill("")),u=c.useRef([]);u.current=u.current.slice(0,a),c.useEffect(()=>{var s;(s=u.current[0])==null||s.focus()},[]);const p=s=>{var t;(t=u.current[s])==null||t.focus()},n=s=>{v(s);const t=s.join("");l==null||l(t),t.length===a&&(d==null||d(t))},_=(s,t)=>{const e=s.target.value;if(P(e)){const r=[...i];r[t]=e,n(r),t<a-1&&p(t+1)}else if(e===""&&i[t]){const r=[...i];r[t]="",n(r),t>0&&p(t-1)}else s.target.value=i[t]||""},g=(s,t)=>{if(s.key==="Backspace"&&!i[t]&&t>0){const e=t-1,r=[...i];r[e]="",n(r),p(e)}},T=(s,t)=>{s.preventDefault();const e=s.clipboardData.getData("text").trim();if(!P(e))return;const r=a-t,m=e.slice(0,r).split(""),b=[...i.slice(0,t),...m,...i.slice(t+m.length)];n(b),setTimeout(()=>{p(Math.min(t+m.length,a-1))},0)};return o.jsxRuntimeExports.jsx("div",{ref:$,role:"group","aria-label":"One-time password","data-testid":f,children:o.jsxRuntimeExports.jsx("div",{className:"proton-OTPInput__digits",children:i.map((s,t)=>o.jsxRuntimeExports.jsxs(c.Fragment,{children:[R&&a%2===0&&t===a/2&&o.jsxRuntimeExports.jsx("span",{className:"proton-OTPInput__separator","aria-hidden":"true",children:"-"}),o.jsxRuntimeExports.jsx("input",{ref:e=>{u.current[t]=e},id:`${f}-digit-${t+1}`,"data-testid":`${f}-digit-${t+1}`,type:"text",inputMode:"numeric",pattern:"[0-9]*",autoComplete:"one-time-code",maxLength:1,value:s,disabled:y,onChange:e=>_(e,t),onKeyUp:e=>g(e,t),onPaste:e=>T(e,t),className:E.csx("proton-OTPInput__digit",j&&"proton-OTPInput__digit--error"),"aria-label":`Digit ${t+1} of ${a}`,"aria-invalid":j})]},t))})})});O.displayName="ProtonUIOTPInput";exports.OTPInput=O;
2
+ //# sourceMappingURL=OTPInput.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OTPInput.cjs.js","sources":["../../../../src/components/Input/OTPInput/OTPInput.tsx"],"sourcesContent":["\"use client\";\n\nimport { forwardRef, useEffect, useRef, useState, Fragment } from \"react\";\nimport type { ClipboardEvent, KeyboardEvent, ChangeEvent } from \"react\";\n\nimport { csx } from \"../../../utils\";\nimport \"./OTPInput.css\";\n\nconst isValidEntry = (key: string) => /^[0-9]+$/.test(key);\n\nexport interface OTPInputProps {\n /** Test ID for digit inputs */\n \"data-testid\"?: string;\n /** Whether the input is disabled. */\n isDisabled?: boolean;\n /** Whether the input is in an error state. */\n isError?: boolean;\n /** Number of digit inputs to render.\n * @default 6\n */\n length?: number;\n /** Called when the value changes. */\n onChange?: (value: string) => void;\n /** Called when all digits are filled. */\n onComplete?: (value: string) => void;\n /** Whether to show a separator dash in the middle (when length is even).\n * @default true\n */\n showSeparator?: boolean;\n}\n\n/**\n * Numeric OTP number input with individual digit cells. Supports paste, keyboard navigation, and auto-focus.\n *\n * API:\n * - {@link OTPInputProps}\n */\nexport const OTPInput = forwardRef<HTMLDivElement, OTPInputProps>(\n (\n {\n length = 6,\n isError = false,\n isDisabled = false,\n onChange,\n onComplete,\n showSeparator = true,\n \"data-testid\": dataTestId,\n },\n ref,\n ) => {\n length = length > 0 ? length : 0; // negative length is not allowed\n const [values, setValues] = useState<string[]>(Array(length).fill(\"\"));\n const inputRefs = useRef<(HTMLInputElement | null)[]>([]);\n inputRefs.current = inputRefs.current.slice(0, length);\n\n useEffect(() => {\n inputRefs.current[0]?.focus();\n }, []);\n\n const focusOnInput = (index: number) => {\n inputRefs.current[index]?.focus();\n };\n\n const updateValues = (next: string[]) => {\n setValues(next);\n const joined = next.join(\"\");\n onChange?.(joined);\n if (joined.length === length) {\n onComplete?.(joined);\n }\n };\n\n const handleChange = (\n event: ChangeEvent<HTMLInputElement>,\n index: number,\n ) => {\n const val = event.target.value;\n\n if (isValidEntry(val)) {\n const updated = [...values];\n updated[index] = val;\n updateValues(updated);\n if (index < length - 1) focusOnInput(index + 1);\n } else if (val === \"\" && values[index]) {\n const updated = [...values];\n updated[index] = \"\";\n updateValues(updated);\n if (index > 0) focusOnInput(index - 1);\n } else {\n event.target.value = values[index] || \"\";\n }\n };\n\n const handleKeyUp = (\n event: KeyboardEvent<HTMLInputElement>,\n index: number,\n ) => {\n if (event.key === \"Backspace\" && !values[index] && index > 0) {\n const prevIndex = index - 1;\n const updated = [...values];\n updated[prevIndex] = \"\";\n updateValues(updated);\n focusOnInput(prevIndex);\n }\n };\n\n const handlePaste = (\n event: ClipboardEvent<HTMLInputElement>,\n currentIndex: number,\n ) => {\n event.preventDefault();\n const pasted = event.clipboardData.getData(\"text\").trim();\n if (!isValidEntry(pasted)) return;\n\n const remaining = length - currentIndex;\n const chars = pasted.slice(0, remaining).split(\"\");\n const updated = [\n ...values.slice(0, currentIndex),\n ...chars,\n ...values.slice(currentIndex + chars.length),\n ];\n updateValues(updated);\n setTimeout(() => {\n focusOnInput(Math.min(currentIndex + chars.length, length - 1));\n }, 0);\n };\n\n return (\n <div\n ref={ref}\n role=\"group\"\n aria-label=\"One-time password\"\n data-testid={dataTestId}\n >\n <div className=\"proton-OTPInput__digits\">\n {values.map((value, index) => (\n <Fragment key={index}>\n {showSeparator && length % 2 === 0 && index === length / 2 && (\n <span className=\"proton-OTPInput__separator\" aria-hidden=\"true\">\n -\n </span>\n )}\n <input\n ref={(el) => {\n inputRefs.current[index] = el;\n }}\n id={`${dataTestId}-digit-${index + 1}`}\n data-testid={`${dataTestId}-digit-${index + 1}`}\n type=\"text\"\n inputMode=\"numeric\"\n pattern=\"[0-9]*\"\n autoComplete=\"one-time-code\"\n maxLength={1}\n value={value}\n disabled={isDisabled}\n onChange={(e) => handleChange(e, index)}\n onKeyUp={(e) => handleKeyUp(e, index)}\n onPaste={(e) => handlePaste(e, index)}\n className={csx(\n \"proton-OTPInput__digit\",\n isError && \"proton-OTPInput__digit--error\",\n )}\n aria-label={`Digit ${index + 1} of ${length}`}\n aria-invalid={isError}\n />\n </Fragment>\n ))}\n </div>\n </div>\n );\n },\n);\n\nOTPInput.displayName = \"ProtonUIOTPInput\";\n"],"names":["isValidEntry","key","OTPInput","forwardRef","length","isError","isDisabled","onChange","onComplete","showSeparator","dataTestId","ref","values","setValues","useState","inputRefs","useRef","useEffect","_a","focusOnInput","index","updateValues","next","joined","handleChange","event","val","updated","handleKeyUp","prevIndex","handlePaste","currentIndex","pasted","remaining","chars","jsx","value","jsxs","Fragment","el","csx"],"mappings":"sPAQMA,EAAgBC,GAAgB,WAAW,KAAKA,CAAG,EA6B5CC,EAAWC,EAAA,WACtB,CACE,CACE,OAAAC,EAAS,EACT,QAAAC,EAAU,GACV,WAAAC,EAAa,GACb,SAAAC,EACA,WAAAC,EACA,cAAAC,EAAgB,GAChB,cAAeC,GAEjBC,IACG,CACMP,EAAAA,EAAS,EAAIA,EAAS,EACzB,KAAA,CAACQ,EAAQC,CAAS,EAAIC,EAAA,SAAmB,MAAMV,CAAM,EAAE,KAAK,EAAE,CAAC,EAC/DW,EAAYC,SAAoC,CAAA,CAAE,EACxDD,EAAU,QAAUA,EAAU,QAAQ,MAAM,EAAGX,CAAM,EAErDa,EAAAA,UAAU,IAAM,QACJC,EAAAH,EAAA,QAAQ,CAAC,IAAT,MAAAG,EAAY,OACxB,EAAG,CAAE,CAAA,EAEC,MAAAC,EAAgBC,GAAkB,QAC5BF,EAAAH,EAAA,QAAQK,CAAK,IAAb,MAAAF,EAAgB,OAAM,EAG5BG,EAAgBC,GAAmB,CACvCT,EAAUS,CAAI,EACR,MAAAC,EAASD,EAAK,KAAK,EAAE,EAC3Bf,GAAA,MAAAA,EAAWgB,GACPA,EAAO,SAAWnB,IACpBI,GAAA,MAAAA,EAAae,GACf,EAGIC,EAAe,CACnBC,EACAL,IACG,CACG,MAAAM,EAAMD,EAAM,OAAO,MAErB,GAAAzB,EAAa0B,CAAG,EAAG,CACf,MAAAC,EAAU,CAAC,GAAGf,CAAM,EAC1Be,EAAQP,CAAK,EAAIM,EACjBL,EAAaM,CAAO,EAChBP,EAAQhB,EAAS,GAAGe,EAAaC,EAAQ,CAAC,CACrC,SAAAM,IAAQ,IAAMd,EAAOQ,CAAK,EAAG,CAChC,MAAAO,EAAU,CAAC,GAAGf,CAAM,EAC1Be,EAAQP,CAAK,EAAI,GACjBC,EAAaM,CAAO,EAChBP,EAAQ,GAAgBD,EAAAC,EAAQ,CAAC,CAAA,MAErCK,EAAM,OAAO,MAAQb,EAAOQ,CAAK,GAAK,EACxC,EAGIQ,EAAc,CAClBH,EACAL,IACG,CACC,GAAAK,EAAM,MAAQ,aAAe,CAACb,EAAOQ,CAAK,GAAKA,EAAQ,EAAG,CAC5D,MAAMS,EAAYT,EAAQ,EACpBO,EAAU,CAAC,GAAGf,CAAM,EAC1Be,EAAQE,CAAS,EAAI,GACrBR,EAAaM,CAAO,EACpBR,EAAaU,CAAS,CACxB,CAAA,EAGIC,EAAc,CAClBL,EACAM,IACG,CACHN,EAAM,eAAe,EACrB,MAAMO,EAASP,EAAM,cAAc,QAAQ,MAAM,EAAE,OAC/C,GAAA,CAACzB,EAAagC,CAAM,EAAG,OAE3B,MAAMC,EAAY7B,EAAS2B,EACrBG,EAAQF,EAAO,MAAM,EAAGC,CAAS,EAAE,MAAM,EAAE,EAC3CN,EAAU,CACd,GAAGf,EAAO,MAAM,EAAGmB,CAAY,EAC/B,GAAGG,EACH,GAAGtB,EAAO,MAAMmB,EAAeG,EAAM,MAAM,CAAA,EAE7Cb,EAAaM,CAAO,EACpB,WAAW,IAAM,CACfR,EAAa,KAAK,IAAIY,EAAeG,EAAM,OAAQ9B,EAAS,CAAC,CAAC,GAC7D,CAAC,CAAA,EAIJ,OAAA+B,EAAA,kBAAA,IAAC,MAAA,CACC,IAAAxB,EACA,KAAK,QACL,aAAW,oBACX,cAAaD,EAEb,SAAAyB,EAAA,kBAAA,IAAC,MAAI,CAAA,UAAU,0BACZ,SAAAvB,EAAO,IAAI,CAACwB,EAAOhB,IAClBiB,EAAA,kBAAA,KAACC,EACE,SAAA,CAAA,SAAA,CAAA7B,GAAiBL,EAAS,IAAM,GAAKgB,IAAUhB,EAAS,GACtD+B,EAAAA,kBAAAA,IAAA,OAAA,CAAK,UAAU,6BAA6B,cAAY,OAAO,SAEhE,IAAA,EAEFA,EAAA,kBAAA,IAAC,QAAA,CACC,IAAMI,GAAO,CACDxB,EAAA,QAAQK,CAAK,EAAImB,CAC7B,EACA,GAAI,GAAG7B,CAAU,UAAUU,EAAQ,CAAC,GACpC,cAAa,GAAGV,CAAU,UAAUU,EAAQ,CAAC,GAC7C,KAAK,OACL,UAAU,UACV,QAAQ,SACR,aAAa,gBACb,UAAW,EACX,MAAAgB,EACA,SAAU9B,EACV,SAAW,GAAMkB,EAAa,EAAGJ,CAAK,EACtC,QAAU,GAAMQ,EAAY,EAAGR,CAAK,EACpC,QAAU,GAAMU,EAAY,EAAGV,CAAK,EACpC,UAAWoB,EAAA,IACT,yBACAnC,GAAW,+BACb,EACA,aAAY,SAASe,EAAQ,CAAC,OAAOhB,CAAM,GAC3C,eAAcC,CAAA,CAChB,CAAA,GA5Bae,CA6Bf,CACD,EACH,CAAA,CAAA,CAGN,CACF,EAEAlB,EAAS,YAAc"}
@@ -0,0 +1,100 @@
1
+ import { j as c } from "../../../node_modules/react/jsx-runtime.es.js";
2
+ import { forwardRef as D, useState as I, useRef as N, useEffect as R, Fragment as g } from "react";
3
+ /* empty css */
4
+ import { csx as U } from "../../../utils/string.es.js";
5
+ const j = (r) => /^[0-9]+$/.test(r), V = D(
6
+ ({
7
+ length: r = 6,
8
+ isError: m = !1,
9
+ isDisabled: P = !1,
10
+ onChange: l,
11
+ onComplete: n,
12
+ showSeparator: O = !0,
13
+ "data-testid": f
14
+ }, _) => {
15
+ r = r > 0 ? r : 0;
16
+ const [i, v] = I(Array(r).fill("")), o = N([]);
17
+ o.current = o.current.slice(0, r), R(() => {
18
+ var s;
19
+ (s = o.current[0]) == null || s.focus();
20
+ }, []);
21
+ const p = (s) => {
22
+ var t;
23
+ (t = o.current[s]) == null || t.focus();
24
+ }, u = (s) => {
25
+ v(s);
26
+ const t = s.join("");
27
+ l == null || l(t), t.length === r && (n == null || n(t));
28
+ }, y = (s, t) => {
29
+ const a = s.target.value;
30
+ if (j(a)) {
31
+ const e = [...i];
32
+ e[t] = a, u(e), t < r - 1 && p(t + 1);
33
+ } else if (a === "" && i[t]) {
34
+ const e = [...i];
35
+ e[t] = "", u(e), t > 0 && p(t - 1);
36
+ } else
37
+ s.target.value = i[t] || "";
38
+ }, $ = (s, t) => {
39
+ if (s.key === "Backspace" && !i[t] && t > 0) {
40
+ const a = t - 1, e = [...i];
41
+ e[a] = "", u(e), p(a);
42
+ }
43
+ }, T = (s, t) => {
44
+ s.preventDefault();
45
+ const a = s.clipboardData.getData("text").trim();
46
+ if (!j(a)) return;
47
+ const e = r - t, d = a.slice(0, e).split(""), b = [
48
+ ...i.slice(0, t),
49
+ ...d,
50
+ ...i.slice(t + d.length)
51
+ ];
52
+ u(b), setTimeout(() => {
53
+ p(Math.min(t + d.length, r - 1));
54
+ }, 0);
55
+ };
56
+ return /* @__PURE__ */ c.jsx(
57
+ "div",
58
+ {
59
+ ref: _,
60
+ role: "group",
61
+ "aria-label": "One-time password",
62
+ "data-testid": f,
63
+ children: /* @__PURE__ */ c.jsx("div", { className: "proton-OTPInput__digits", children: i.map((s, t) => /* @__PURE__ */ c.jsxs(g, { children: [
64
+ O && r % 2 === 0 && t === r / 2 && /* @__PURE__ */ c.jsx("span", { className: "proton-OTPInput__separator", "aria-hidden": "true", children: "-" }),
65
+ /* @__PURE__ */ c.jsx(
66
+ "input",
67
+ {
68
+ ref: (a) => {
69
+ o.current[t] = a;
70
+ },
71
+ id: `${f}-digit-${t + 1}`,
72
+ "data-testid": `${f}-digit-${t + 1}`,
73
+ type: "text",
74
+ inputMode: "numeric",
75
+ pattern: "[0-9]*",
76
+ autoComplete: "one-time-code",
77
+ maxLength: 1,
78
+ value: s,
79
+ disabled: P,
80
+ onChange: (a) => y(a, t),
81
+ onKeyUp: (a) => $(a, t),
82
+ onPaste: (a) => T(a, t),
83
+ className: U(
84
+ "proton-OTPInput__digit",
85
+ m && "proton-OTPInput__digit--error"
86
+ ),
87
+ "aria-label": `Digit ${t + 1} of ${r}`,
88
+ "aria-invalid": m
89
+ }
90
+ )
91
+ ] }, t)) })
92
+ }
93
+ );
94
+ }
95
+ );
96
+ V.displayName = "ProtonUIOTPInput";
97
+ export {
98
+ V as OTPInput
99
+ };
100
+ //# sourceMappingURL=OTPInput.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OTPInput.es.js","sources":["../../../../src/components/Input/OTPInput/OTPInput.tsx"],"sourcesContent":["\"use client\";\n\nimport { forwardRef, useEffect, useRef, useState, Fragment } from \"react\";\nimport type { ClipboardEvent, KeyboardEvent, ChangeEvent } from \"react\";\n\nimport { csx } from \"../../../utils\";\nimport \"./OTPInput.css\";\n\nconst isValidEntry = (key: string) => /^[0-9]+$/.test(key);\n\nexport interface OTPInputProps {\n /** Test ID for digit inputs */\n \"data-testid\"?: string;\n /** Whether the input is disabled. */\n isDisabled?: boolean;\n /** Whether the input is in an error state. */\n isError?: boolean;\n /** Number of digit inputs to render.\n * @default 6\n */\n length?: number;\n /** Called when the value changes. */\n onChange?: (value: string) => void;\n /** Called when all digits are filled. */\n onComplete?: (value: string) => void;\n /** Whether to show a separator dash in the middle (when length is even).\n * @default true\n */\n showSeparator?: boolean;\n}\n\n/**\n * Numeric OTP number input with individual digit cells. Supports paste, keyboard navigation, and auto-focus.\n *\n * API:\n * - {@link OTPInputProps}\n */\nexport const OTPInput = forwardRef<HTMLDivElement, OTPInputProps>(\n (\n {\n length = 6,\n isError = false,\n isDisabled = false,\n onChange,\n onComplete,\n showSeparator = true,\n \"data-testid\": dataTestId,\n },\n ref,\n ) => {\n length = length > 0 ? length : 0; // negative length is not allowed\n const [values, setValues] = useState<string[]>(Array(length).fill(\"\"));\n const inputRefs = useRef<(HTMLInputElement | null)[]>([]);\n inputRefs.current = inputRefs.current.slice(0, length);\n\n useEffect(() => {\n inputRefs.current[0]?.focus();\n }, []);\n\n const focusOnInput = (index: number) => {\n inputRefs.current[index]?.focus();\n };\n\n const updateValues = (next: string[]) => {\n setValues(next);\n const joined = next.join(\"\");\n onChange?.(joined);\n if (joined.length === length) {\n onComplete?.(joined);\n }\n };\n\n const handleChange = (\n event: ChangeEvent<HTMLInputElement>,\n index: number,\n ) => {\n const val = event.target.value;\n\n if (isValidEntry(val)) {\n const updated = [...values];\n updated[index] = val;\n updateValues(updated);\n if (index < length - 1) focusOnInput(index + 1);\n } else if (val === \"\" && values[index]) {\n const updated = [...values];\n updated[index] = \"\";\n updateValues(updated);\n if (index > 0) focusOnInput(index - 1);\n } else {\n event.target.value = values[index] || \"\";\n }\n };\n\n const handleKeyUp = (\n event: KeyboardEvent<HTMLInputElement>,\n index: number,\n ) => {\n if (event.key === \"Backspace\" && !values[index] && index > 0) {\n const prevIndex = index - 1;\n const updated = [...values];\n updated[prevIndex] = \"\";\n updateValues(updated);\n focusOnInput(prevIndex);\n }\n };\n\n const handlePaste = (\n event: ClipboardEvent<HTMLInputElement>,\n currentIndex: number,\n ) => {\n event.preventDefault();\n const pasted = event.clipboardData.getData(\"text\").trim();\n if (!isValidEntry(pasted)) return;\n\n const remaining = length - currentIndex;\n const chars = pasted.slice(0, remaining).split(\"\");\n const updated = [\n ...values.slice(0, currentIndex),\n ...chars,\n ...values.slice(currentIndex + chars.length),\n ];\n updateValues(updated);\n setTimeout(() => {\n focusOnInput(Math.min(currentIndex + chars.length, length - 1));\n }, 0);\n };\n\n return (\n <div\n ref={ref}\n role=\"group\"\n aria-label=\"One-time password\"\n data-testid={dataTestId}\n >\n <div className=\"proton-OTPInput__digits\">\n {values.map((value, index) => (\n <Fragment key={index}>\n {showSeparator && length % 2 === 0 && index === length / 2 && (\n <span className=\"proton-OTPInput__separator\" aria-hidden=\"true\">\n -\n </span>\n )}\n <input\n ref={(el) => {\n inputRefs.current[index] = el;\n }}\n id={`${dataTestId}-digit-${index + 1}`}\n data-testid={`${dataTestId}-digit-${index + 1}`}\n type=\"text\"\n inputMode=\"numeric\"\n pattern=\"[0-9]*\"\n autoComplete=\"one-time-code\"\n maxLength={1}\n value={value}\n disabled={isDisabled}\n onChange={(e) => handleChange(e, index)}\n onKeyUp={(e) => handleKeyUp(e, index)}\n onPaste={(e) => handlePaste(e, index)}\n className={csx(\n \"proton-OTPInput__digit\",\n isError && \"proton-OTPInput__digit--error\",\n )}\n aria-label={`Digit ${index + 1} of ${length}`}\n aria-invalid={isError}\n />\n </Fragment>\n ))}\n </div>\n </div>\n );\n },\n);\n\nOTPInput.displayName = \"ProtonUIOTPInput\";\n"],"names":["isValidEntry","key","OTPInput","forwardRef","length","isError","isDisabled","onChange","onComplete","showSeparator","dataTestId","ref","values","setValues","useState","inputRefs","useRef","useEffect","_a","focusOnInput","index","updateValues","next","joined","handleChange","event","val","updated","handleKeyUp","prevIndex","handlePaste","currentIndex","pasted","remaining","chars","jsx","value","jsxs","Fragment","el","e","csx"],"mappings":";;;;AAQA,MAAMA,IAAe,CAACC,MAAgB,WAAW,KAAKA,CAAG,GA6B5CC,IAAWC;AAAA,EACtB,CACE;AAAA,IACE,QAAAC,IAAS;AAAA,IACT,SAAAC,IAAU;AAAA,IACV,YAAAC,IAAa;AAAA,IACb,UAAAC;AAAA,IACA,YAAAC;AAAA,IACA,eAAAC,IAAgB;AAAA,IAChB,eAAeC;AAAA,KAEjBC,MACG;AACM,IAAAP,IAAAA,IAAS,IAAIA,IAAS;AACzB,UAAA,CAACQ,GAAQC,CAAS,IAAIC,EAAmB,MAAMV,CAAM,EAAE,KAAK,EAAE,CAAC,GAC/DW,IAAYC,EAAoC,CAAA,CAAE;AACxD,IAAAD,EAAU,UAAUA,EAAU,QAAQ,MAAM,GAAGX,CAAM,GAErDa,EAAU,MAAM;;AACJ,OAAAC,IAAAH,EAAA,QAAQ,CAAC,MAAT,QAAAG,EAAY;AAAA,IACxB,GAAG,CAAE,CAAA;AAEC,UAAAC,IAAe,CAACC,MAAkB;;AAC5B,OAAAF,IAAAH,EAAA,QAAQK,CAAK,MAAb,QAAAF,EAAgB;AAAA,IAAM,GAG5BG,IAAe,CAACC,MAAmB;AACvC,MAAAT,EAAUS,CAAI;AACR,YAAAC,IAASD,EAAK,KAAK,EAAE;AAC3B,MAAAf,KAAA,QAAAA,EAAWgB,IACPA,EAAO,WAAWnB,MACpBI,KAAA,QAAAA,EAAae;AAAA,IACf,GAGIC,IAAe,CACnBC,GACAL,MACG;AACG,YAAAM,IAAMD,EAAM,OAAO;AAErB,UAAAzB,EAAa0B,CAAG,GAAG;AACf,cAAAC,IAAU,CAAC,GAAGf,CAAM;AAC1B,QAAAe,EAAQP,CAAK,IAAIM,GACjBL,EAAaM,CAAO,GAChBP,IAAQhB,IAAS,KAAGe,EAAaC,IAAQ,CAAC;AAAA,MACrC,WAAAM,MAAQ,MAAMd,EAAOQ,CAAK,GAAG;AAChC,cAAAO,IAAU,CAAC,GAAGf,CAAM;AAC1B,QAAAe,EAAQP,CAAK,IAAI,IACjBC,EAAaM,CAAO,GAChBP,IAAQ,KAAgBD,EAAAC,IAAQ,CAAC;AAAA,MAAA;AAErC,QAAAK,EAAM,OAAO,QAAQb,EAAOQ,CAAK,KAAK;AAAA,IACxC,GAGIQ,IAAc,CAClBH,GACAL,MACG;AACC,UAAAK,EAAM,QAAQ,eAAe,CAACb,EAAOQ,CAAK,KAAKA,IAAQ,GAAG;AAC5D,cAAMS,IAAYT,IAAQ,GACpBO,IAAU,CAAC,GAAGf,CAAM;AAC1B,QAAAe,EAAQE,CAAS,IAAI,IACrBR,EAAaM,CAAO,GACpBR,EAAaU,CAAS;AAAA,MACxB;AAAA,IAAA,GAGIC,IAAc,CAClBL,GACAM,MACG;AACH,MAAAN,EAAM,eAAe;AACrB,YAAMO,IAASP,EAAM,cAAc,QAAQ,MAAM,EAAE;AAC/C,UAAA,CAACzB,EAAagC,CAAM,EAAG;AAE3B,YAAMC,IAAY7B,IAAS2B,GACrBG,IAAQF,EAAO,MAAM,GAAGC,CAAS,EAAE,MAAM,EAAE,GAC3CN,IAAU;AAAA,QACd,GAAGf,EAAO,MAAM,GAAGmB,CAAY;AAAA,QAC/B,GAAGG;AAAA,QACH,GAAGtB,EAAO,MAAMmB,IAAeG,EAAM,MAAM;AAAA,MAAA;AAE7C,MAAAb,EAAaM,CAAO,GACpB,WAAW,MAAM;AACf,QAAAR,EAAa,KAAK,IAAIY,IAAeG,EAAM,QAAQ9B,IAAS,CAAC,CAAC;AAAA,SAC7D,CAAC;AAAA,IAAA;AAIJ,WAAA+B,gBAAAA,EAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAAxB;AAAA,QACA,MAAK;AAAA,QACL,cAAW;AAAA,QACX,eAAaD;AAAA,QAEb,UAAAyB,gBAAAA,EAAA,IAAC,OAAI,EAAA,WAAU,2BACZ,UAAAvB,EAAO,IAAI,CAACwB,GAAOhB,MAClBiB,gBAAAA,EAAA,KAACC,GACE,EAAA,UAAA;AAAA,UAAA7B,KAAiBL,IAAS,MAAM,KAAKgB,MAAUhB,IAAS,KACtD+B,gBAAAA,EAAAA,IAAA,QAAA,EAAK,WAAU,8BAA6B,eAAY,QAAO,UAEhE,KAAA;AAAA,UAEFA,gBAAAA,EAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,KAAK,CAACI,MAAO;AACD,gBAAAxB,EAAA,QAAQK,CAAK,IAAImB;AAAA,cAC7B;AAAA,cACA,IAAI,GAAG7B,CAAU,UAAUU,IAAQ,CAAC;AAAA,cACpC,eAAa,GAAGV,CAAU,UAAUU,IAAQ,CAAC;AAAA,cAC7C,MAAK;AAAA,cACL,WAAU;AAAA,cACV,SAAQ;AAAA,cACR,cAAa;AAAA,cACb,WAAW;AAAA,cACX,OAAAgB;AAAA,cACA,UAAU9B;AAAA,cACV,UAAU,CAACkC,MAAMhB,EAAagB,GAAGpB,CAAK;AAAA,cACtC,SAAS,CAACoB,MAAMZ,EAAYY,GAAGpB,CAAK;AAAA,cACpC,SAAS,CAACoB,MAAMV,EAAYU,GAAGpB,CAAK;AAAA,cACpC,WAAWqB;AAAA,gBACT;AAAA,gBACApC,KAAW;AAAA,cACb;AAAA,cACA,cAAY,SAASe,IAAQ,CAAC,OAAOhB,CAAM;AAAA,cAC3C,gBAAcC;AAAA,YAAA;AAAA,UAChB;AAAA,QAAA,KA5Bae,CA6Bf,CACD,GACH;AAAA,MAAA;AAAA,IAAA;AAAA,EAGN;AACF;AAEAlB,EAAS,cAAc;"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../../node_modules/react/jsx-runtime.cjs.js"),r=require("radix-ui");;/* empty css */const v=require("../ThemeProvider.cjs.js"),P=require("../../utils/string.cjs.js");function s({trigger:o,children:t,open:i,isDisabled:n=!1,defaultOpen:a,onOpenChange:l,side:p="top",align:x="center",arrow:c=!1,constrainWidth:u=!1,"data-testid":d}){const{className:m,style:j}=v.useTheme();return e.jsxRuntimeExports.jsxs(r.Popover.Root,{open:i,defaultOpen:a,onOpenChange:l,children:[e.jsxRuntimeExports.jsx(r.Popover.Trigger,{asChild:!0,children:e.jsxRuntimeExports.jsx("div",{children:o})}),!n&&e.jsxRuntimeExports.jsx(r.Popover.Portal,{children:e.jsxRuntimeExports.jsxs(r.Popover.Content,{side:p,sideOffset:2,align:x,style:j,className:P.csx("proton-Popover",u&&"proton-Popover__constrained",m),"data-testid":d,children:[c&&e.jsxRuntimeExports.jsx(r.Popover.Arrow,{className:"arrow"}),t]})})]})}s.displayName="Popover";exports.Popover=s;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../../node_modules/react/jsx-runtime.cjs.js"),r=require("radix-ui");;/* empty css */const P=require("../ThemeProvider.cjs.js"),f=require("../../utils/string.cjs.js");function s({trigger:i,children:n,open:a,isDisabled:t=!1,defaultOpen:x,onOpenChange:o,side:l="top",align:u="center",arrow:c=!1,constrainWidth:p=!1,"data-testid":d}){const{className:m,style:j}=P.useTheme();return e.jsxRuntimeExports.jsxs(r.Popover.Root,{open:t?!1:a,defaultOpen:x,onOpenChange:v=>{t||o==null||o(v)},children:[e.jsxRuntimeExports.jsx(r.Popover.Trigger,{asChild:!0,children:e.jsxRuntimeExports.jsx("div",{"aria-disabled":t,children:i})}),!t&&e.jsxRuntimeExports.jsx(r.Popover.Portal,{children:e.jsxRuntimeExports.jsxs(r.Popover.Content,{side:l,sideOffset:2,align:u,style:j,className:f.csx("proton-Popover",p&&"proton-Popover__constrained",m),"data-testid":d,children:[c&&e.jsxRuntimeExports.jsx(r.Popover.Arrow,{className:"arrow"}),n]})})]})}s.displayName="Popover";exports.Popover=s;
2
2
  //# sourceMappingURL=Popover.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Popover.cjs.js","sources":["../../../src/components/Popover/Popover.tsx"],"sourcesContent":["\"use client\";\n\nimport { Popover as RadixPopover } from \"radix-ui\";\nimport React, { CSSProperties } from \"react\";\nimport \"./Popover.css\";\nimport { useTheme } from \"../ThemeProvider\";\nimport { csx } from \"../../utils/string\";\n\nexport type PopoverSide = \"top\" | \"right\" | \"bottom\" | \"left\";\nexport type PopoverAlign = \"start\" | \"center\" | \"end\";\n\nexport interface PopoverProps {\n /**\n * Popover alignment\n * {@link PopoverAlign}\n */\n align?: PopoverAlign;\n /**\n * Show an arrow pointing to the trigger.\n */\n arrow?: boolean;\n /**\n * The content of the popover.\n */\n children: React.ReactNode;\n /**\n * Constrain the width of the popover to the width of the trigger.\n */\n constrainWidth?: boolean;\n /**\n * Default open state (uncontrolled mode).\n */\n defaultOpen?: boolean;\n /**\n * Test id for the popover content.\n */\n \"data-testid\"?: string;\n /**\n * Control open state (controlled mode).\n */\n open?: boolean;\n /**\n * Whether the popover is disabled.\n * @default false\n */\n isDisabled?: boolean;\n /**\n * Callback when open state changes.\n */\n onOpenChange?: (open: boolean) => void;\n /**\n * The trigger element for the popover.\n */\n trigger: React.ReactNode;\n /**\n * Popover side placement\n * {@link PopoverSide}\n */\n side?: PopoverSide;\n}\n\n/**\n * A popover component that handles positioning and supports controlled and uncontrolled modes.\n *\n * A popover displays interactive content in context with a trigger element.\n * A tooltip displays a description of an element on hover or focus.\n *\n * API:\n * - {@link PopoverProps}\n */\nexport function Popover({\n trigger,\n children,\n open,\n isDisabled = false,\n defaultOpen,\n onOpenChange,\n side = \"top\",\n align = \"center\",\n arrow = false,\n constrainWidth = false,\n \"data-testid\": testId,\n}: PopoverProps) {\n const { className: themeClass, style: themeStyle } = useTheme();\n\n return (\n <RadixPopover.Root\n open={open}\n defaultOpen={defaultOpen}\n onOpenChange={onOpenChange}\n >\n <RadixPopover.Trigger asChild>\n <div>{trigger}</div>\n </RadixPopover.Trigger>\n\n {!isDisabled && (\n <RadixPopover.Portal>\n <RadixPopover.Content\n side={side}\n sideOffset={2}\n align={align}\n style={themeStyle as CSSProperties}\n className={csx(\n \"proton-Popover\",\n constrainWidth && \"proton-Popover__constrained\",\n themeClass,\n )}\n data-testid={testId}\n >\n {arrow && <RadixPopover.Arrow className=\"arrow\" />}\n {children}\n </RadixPopover.Content>\n </RadixPopover.Portal>\n )}\n </RadixPopover.Root>\n );\n}\n\nPopover.displayName = \"Popover\";\n"],"names":["Popover","trigger","children","open","isDisabled","defaultOpen","onOpenChange","side","align","arrow","constrainWidth","testId","themeClass","themeStyle","useTheme","jsxs","RadixPopover","jsx","csx"],"mappings":"uRAsEO,SAASA,EAAQ,CACtB,QAAAC,EACA,SAAAC,EACA,KAAAC,EACA,WAAAC,EAAa,GACb,YAAAC,EACA,aAAAC,EACA,KAAAC,EAAO,MACP,MAAAC,EAAQ,SACR,MAAAC,EAAQ,GACR,eAAAC,EAAiB,GACjB,cAAeC,CACjB,EAAiB,CACf,KAAM,CAAE,UAAWC,EAAY,MAAOC,CAAA,EAAeC,EAAAA,WAGnD,OAAAC,EAAA,kBAAA,KAACC,EAAAA,QAAa,KAAb,CACC,KAAAb,EACA,YAAAE,EACA,aAAAC,EAEA,SAAA,CAACW,EAAAA,kBAAAA,IAAAD,EAAAA,QAAa,QAAb,CAAqB,QAAO,GAC3B,SAACC,EAAA,kBAAA,IAAA,MAAA,CAAK,WAAQ,CAChB,CAAA,EAEC,CAACb,GACCa,EAAAA,kBAAAA,IAAAD,EAAAA,QAAa,OAAb,CACC,SAAAD,EAAA,kBAAA,KAACC,EAAAA,QAAa,QAAb,CACC,KAAAT,EACA,WAAY,EACZ,MAAAC,EACA,MAAOK,EACP,UAAWK,EAAA,IACT,iBACAR,GAAkB,8BAClBE,CACF,EACA,cAAaD,EAEZ,SAAA,CAAAF,GAAUQ,EAAA,kBAAA,IAAAD,EAAA,QAAa,MAAb,CAAmB,UAAU,QAAQ,EAC/Cd,CAAA,CAAA,CAAA,EAEL,CAAA,CAAA,CAAA,CAIR,CAEAF,EAAQ,YAAc"}
1
+ {"version":3,"file":"Popover.cjs.js","sources":["../../../src/components/Popover/Popover.tsx"],"sourcesContent":["\"use client\";\n\nimport { Popover as RadixPopover } from \"radix-ui\";\nimport React, { CSSProperties } from \"react\";\nimport \"./Popover.css\";\nimport { useTheme } from \"../ThemeProvider\";\nimport { csx } from \"../../utils/string\";\n\nexport type PopoverSide = \"top\" | \"right\" | \"bottom\" | \"left\";\nexport type PopoverAlign = \"start\" | \"center\" | \"end\";\n\nexport interface PopoverProps {\n /**\n * Popover alignment\n * {@link PopoverAlign}\n */\n align?: PopoverAlign;\n /**\n * Show an arrow pointing to the trigger.\n */\n arrow?: boolean;\n /**\n * The content of the popover.\n */\n children: React.ReactNode;\n /**\n * Constrain the width of the popover to the width of the trigger.\n */\n constrainWidth?: boolean;\n /**\n * Default open state (uncontrolled mode).\n */\n defaultOpen?: boolean;\n /**\n * Test id for the popover content.\n */\n \"data-testid\"?: string;\n /**\n * Control open state (controlled mode).\n */\n open?: boolean;\n /**\n * Whether the popover is disabled.\n * @default false\n */\n isDisabled?: boolean;\n /**\n * Callback when open state changes.\n */\n onOpenChange?: (open: boolean) => void;\n /**\n * The trigger element for the popover.\n */\n trigger: React.ReactNode;\n /**\n * Popover side placement\n * {@link PopoverSide}\n */\n side?: PopoverSide;\n}\n\n/**\n * A popover component that handles positioning and supports controlled and uncontrolled modes.\n *\n * A popover displays interactive content in context with a trigger element.\n * A tooltip displays a description of an element on hover or focus.\n *\n * API:\n * - {@link PopoverProps}\n */\nexport function Popover({\n trigger,\n children,\n open,\n isDisabled = false,\n defaultOpen,\n onOpenChange,\n side = \"top\",\n align = \"center\",\n arrow = false,\n constrainWidth = false,\n \"data-testid\": testId,\n}: PopoverProps) {\n const { className: themeClass, style: themeStyle } = useTheme();\n\n return (\n <RadixPopover.Root\n open={isDisabled ? false : open}\n defaultOpen={defaultOpen}\n onOpenChange={(newOpen) => {\n if (isDisabled) return;\n onOpenChange?.(newOpen);\n }}\n >\n <RadixPopover.Trigger asChild>\n <div aria-disabled={isDisabled}>{trigger}</div>\n </RadixPopover.Trigger>\n\n {!isDisabled && (\n <RadixPopover.Portal>\n <RadixPopover.Content\n side={side}\n sideOffset={2}\n align={align}\n style={themeStyle as CSSProperties}\n className={csx(\n \"proton-Popover\",\n constrainWidth && \"proton-Popover__constrained\",\n themeClass,\n )}\n data-testid={testId}\n >\n {arrow && <RadixPopover.Arrow className=\"arrow\" />}\n {children}\n </RadixPopover.Content>\n </RadixPopover.Portal>\n )}\n </RadixPopover.Root>\n );\n}\n\nPopover.displayName = \"Popover\";\n"],"names":["Popover","trigger","children","open","isDisabled","defaultOpen","onOpenChange","side","align","arrow","constrainWidth","testId","themeClass","themeStyle","useTheme","jsxs","RadixPopover","newOpen","jsx","csx"],"mappings":"uRAsEO,SAASA,EAAQ,CACtB,QAAAC,EACA,SAAAC,EACA,KAAAC,EACA,WAAAC,EAAa,GACb,YAAAC,EACA,aAAAC,EACA,KAAAC,EAAO,MACP,MAAAC,EAAQ,SACR,MAAAC,EAAQ,GACR,eAAAC,EAAiB,GACjB,cAAeC,CACjB,EAAiB,CACf,KAAM,CAAE,UAAWC,EAAY,MAAOC,CAAA,EAAeC,EAAAA,WAGnD,OAAAC,EAAA,kBAAA,KAACC,EAAAA,QAAa,KAAb,CACC,KAAMZ,EAAa,GAAQD,EAC3B,YAAAE,EACA,aAAeY,GAAY,CACrBb,GACJE,GAAA,MAAAA,EAAeW,EACjB,EAEA,SAAA,CAACC,EAAA,kBAAA,IAAAF,EAAA,QAAa,QAAb,CAAqB,QAAO,GAC3B,iCAAC,MAAI,CAAA,gBAAeZ,EAAa,SAAAH,CAAA,CAAQ,CAC3C,CAAA,EAEC,CAACG,GACCc,EAAAA,kBAAAA,IAAAF,EAAAA,QAAa,OAAb,CACC,SAAAD,EAAA,kBAAA,KAACC,EAAAA,QAAa,QAAb,CACC,KAAAT,EACA,WAAY,EACZ,MAAAC,EACA,MAAOK,EACP,UAAWM,EAAA,IACT,iBACAT,GAAkB,8BAClBE,CACF,EACA,cAAaD,EAEZ,SAAA,CAAAF,GAAUS,EAAA,kBAAA,IAAAF,EAAA,QAAa,MAAb,CAAmB,UAAU,QAAQ,EAC/Cd,CAAA,CAAA,CAAA,EAEL,CAAA,CAAA,CAAA,CAIR,CAEAF,EAAQ,YAAc"}
@@ -1,46 +1,48 @@
1
- import { j as e } from "../../node_modules/react/jsx-runtime.es.js";
2
- import { Popover as o } from "radix-ui";
1
+ import { j as r } from "../../node_modules/react/jsx-runtime.es.js";
2
+ import { Popover as e } from "radix-ui";
3
3
  /* empty css */
4
- import { useTheme as h } from "../ThemeProvider.es.js";
5
- import { csx as j } from "../../utils/string.es.js";
6
- function v({
7
- trigger: r,
8
- children: s,
9
- open: t,
10
- isDisabled: a = !1,
11
- defaultOpen: i,
12
- onOpenChange: l,
4
+ import { useTheme as v } from "../ThemeProvider.es.js";
5
+ import { csx as P } from "../../utils/string.es.js";
6
+ function h({
7
+ trigger: s,
8
+ children: a,
9
+ open: i,
10
+ isDisabled: o = !1,
11
+ defaultOpen: l,
12
+ onOpenChange: t,
13
13
  side: m = "top",
14
- align: n = "center",
15
- arrow: p = !1,
14
+ align: p = "center",
15
+ arrow: c = !1,
16
16
  constrainWidth: d = !1,
17
- "data-testid": c
17
+ "data-testid": f
18
18
  }) {
19
- const { className: f, style: x } = h();
20
- return /* @__PURE__ */ e.jsxs(
21
- o.Root,
19
+ const { className: n, style: x } = v();
20
+ return /* @__PURE__ */ r.jsxs(
21
+ e.Root,
22
22
  {
23
- open: t,
24
- defaultOpen: i,
25
- onOpenChange: l,
23
+ open: o ? !1 : i,
24
+ defaultOpen: l,
25
+ onOpenChange: (j) => {
26
+ o || t == null || t(j);
27
+ },
26
28
  children: [
27
- /* @__PURE__ */ e.jsx(o.Trigger, { asChild: !0, children: /* @__PURE__ */ e.jsx("div", { children: r }) }),
28
- !a && /* @__PURE__ */ e.jsx(o.Portal, { children: /* @__PURE__ */ e.jsxs(
29
- o.Content,
29
+ /* @__PURE__ */ r.jsx(e.Trigger, { asChild: !0, children: /* @__PURE__ */ r.jsx("div", { "aria-disabled": o, children: s }) }),
30
+ !o && /* @__PURE__ */ r.jsx(e.Portal, { children: /* @__PURE__ */ r.jsxs(
31
+ e.Content,
30
32
  {
31
33
  side: m,
32
34
  sideOffset: 2,
33
- align: n,
35
+ align: p,
34
36
  style: x,
35
- className: j(
37
+ className: P(
36
38
  "proton-Popover",
37
39
  d && "proton-Popover__constrained",
38
- f
40
+ n
39
41
  ),
40
- "data-testid": c,
42
+ "data-testid": f,
41
43
  children: [
42
- p && /* @__PURE__ */ e.jsx(o.Arrow, { className: "arrow" }),
43
- s
44
+ c && /* @__PURE__ */ r.jsx(e.Arrow, { className: "arrow" }),
45
+ a
44
46
  ]
45
47
  }
46
48
  ) })
@@ -48,8 +50,8 @@ function v({
48
50
  }
49
51
  );
50
52
  }
51
- v.displayName = "Popover";
53
+ h.displayName = "Popover";
52
54
  export {
53
- v as Popover
55
+ h as Popover
54
56
  };
55
57
  //# sourceMappingURL=Popover.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Popover.es.js","sources":["../../../src/components/Popover/Popover.tsx"],"sourcesContent":["\"use client\";\n\nimport { Popover as RadixPopover } from \"radix-ui\";\nimport React, { CSSProperties } from \"react\";\nimport \"./Popover.css\";\nimport { useTheme } from \"../ThemeProvider\";\nimport { csx } from \"../../utils/string\";\n\nexport type PopoverSide = \"top\" | \"right\" | \"bottom\" | \"left\";\nexport type PopoverAlign = \"start\" | \"center\" | \"end\";\n\nexport interface PopoverProps {\n /**\n * Popover alignment\n * {@link PopoverAlign}\n */\n align?: PopoverAlign;\n /**\n * Show an arrow pointing to the trigger.\n */\n arrow?: boolean;\n /**\n * The content of the popover.\n */\n children: React.ReactNode;\n /**\n * Constrain the width of the popover to the width of the trigger.\n */\n constrainWidth?: boolean;\n /**\n * Default open state (uncontrolled mode).\n */\n defaultOpen?: boolean;\n /**\n * Test id for the popover content.\n */\n \"data-testid\"?: string;\n /**\n * Control open state (controlled mode).\n */\n open?: boolean;\n /**\n * Whether the popover is disabled.\n * @default false\n */\n isDisabled?: boolean;\n /**\n * Callback when open state changes.\n */\n onOpenChange?: (open: boolean) => void;\n /**\n * The trigger element for the popover.\n */\n trigger: React.ReactNode;\n /**\n * Popover side placement\n * {@link PopoverSide}\n */\n side?: PopoverSide;\n}\n\n/**\n * A popover component that handles positioning and supports controlled and uncontrolled modes.\n *\n * A popover displays interactive content in context with a trigger element.\n * A tooltip displays a description of an element on hover or focus.\n *\n * API:\n * - {@link PopoverProps}\n */\nexport function Popover({\n trigger,\n children,\n open,\n isDisabled = false,\n defaultOpen,\n onOpenChange,\n side = \"top\",\n align = \"center\",\n arrow = false,\n constrainWidth = false,\n \"data-testid\": testId,\n}: PopoverProps) {\n const { className: themeClass, style: themeStyle } = useTheme();\n\n return (\n <RadixPopover.Root\n open={open}\n defaultOpen={defaultOpen}\n onOpenChange={onOpenChange}\n >\n <RadixPopover.Trigger asChild>\n <div>{trigger}</div>\n </RadixPopover.Trigger>\n\n {!isDisabled && (\n <RadixPopover.Portal>\n <RadixPopover.Content\n side={side}\n sideOffset={2}\n align={align}\n style={themeStyle as CSSProperties}\n className={csx(\n \"proton-Popover\",\n constrainWidth && \"proton-Popover__constrained\",\n themeClass,\n )}\n data-testid={testId}\n >\n {arrow && <RadixPopover.Arrow className=\"arrow\" />}\n {children}\n </RadixPopover.Content>\n </RadixPopover.Portal>\n )}\n </RadixPopover.Root>\n );\n}\n\nPopover.displayName = \"Popover\";\n"],"names":["Popover","trigger","children","open","isDisabled","defaultOpen","onOpenChange","side","align","arrow","constrainWidth","testId","themeClass","themeStyle","useTheme","jsxs","RadixPopover","jsx","csx"],"mappings":";;;;;AAsEO,SAASA,EAAQ;AAAA,EACtB,SAAAC;AAAA,EACA,UAAAC;AAAA,EACA,MAAAC;AAAA,EACA,YAAAC,IAAa;AAAA,EACb,aAAAC;AAAA,EACA,cAAAC;AAAA,EACA,MAAAC,IAAO;AAAA,EACP,OAAAC,IAAQ;AAAA,EACR,OAAAC,IAAQ;AAAA,EACR,gBAAAC,IAAiB;AAAA,EACjB,eAAeC;AACjB,GAAiB;AACf,QAAM,EAAE,WAAWC,GAAY,OAAOC,EAAA,IAAeC;AAGnD,SAAAC,gBAAAA,EAAA;AAAA,IAACC,EAAa;AAAA,IAAb;AAAA,MACC,MAAAb;AAAA,MACA,aAAAE;AAAA,MACA,cAAAC;AAAA,MAEA,UAAA;AAAA,QAACW,gBAAAA,EAAAA,IAAAD,EAAa,SAAb,EAAqB,SAAO,IAC3B,UAACC,gBAAAA,EAAA,IAAA,OAAA,EAAK,aAAQ,EAChB,CAAA;AAAA,QAEC,CAACb,KACCa,gBAAAA,EAAAA,IAAAD,EAAa,QAAb,EACC,UAAAD,gBAAAA,EAAA;AAAA,UAACC,EAAa;AAAA,UAAb;AAAA,YACC,MAAAT;AAAA,YACA,YAAY;AAAA,YACZ,OAAAC;AAAA,YACA,OAAOK;AAAA,YACP,WAAWK;AAAA,cACT;AAAA,cACAR,KAAkB;AAAA,cAClBE;AAAA,YACF;AAAA,YACA,eAAaD;AAAA,YAEZ,UAAA;AAAA,cAAAF,KAAUQ,gBAAAA,EAAA,IAAAD,EAAa,OAAb,EAAmB,WAAU,SAAQ;AAAA,cAC/Cd;AAAA,YAAA;AAAA,UAAA;AAAA,QAAA,GAEL;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAIR;AAEAF,EAAQ,cAAc;"}
1
+ {"version":3,"file":"Popover.es.js","sources":["../../../src/components/Popover/Popover.tsx"],"sourcesContent":["\"use client\";\n\nimport { Popover as RadixPopover } from \"radix-ui\";\nimport React, { CSSProperties } from \"react\";\nimport \"./Popover.css\";\nimport { useTheme } from \"../ThemeProvider\";\nimport { csx } from \"../../utils/string\";\n\nexport type PopoverSide = \"top\" | \"right\" | \"bottom\" | \"left\";\nexport type PopoverAlign = \"start\" | \"center\" | \"end\";\n\nexport interface PopoverProps {\n /**\n * Popover alignment\n * {@link PopoverAlign}\n */\n align?: PopoverAlign;\n /**\n * Show an arrow pointing to the trigger.\n */\n arrow?: boolean;\n /**\n * The content of the popover.\n */\n children: React.ReactNode;\n /**\n * Constrain the width of the popover to the width of the trigger.\n */\n constrainWidth?: boolean;\n /**\n * Default open state (uncontrolled mode).\n */\n defaultOpen?: boolean;\n /**\n * Test id for the popover content.\n */\n \"data-testid\"?: string;\n /**\n * Control open state (controlled mode).\n */\n open?: boolean;\n /**\n * Whether the popover is disabled.\n * @default false\n */\n isDisabled?: boolean;\n /**\n * Callback when open state changes.\n */\n onOpenChange?: (open: boolean) => void;\n /**\n * The trigger element for the popover.\n */\n trigger: React.ReactNode;\n /**\n * Popover side placement\n * {@link PopoverSide}\n */\n side?: PopoverSide;\n}\n\n/**\n * A popover component that handles positioning and supports controlled and uncontrolled modes.\n *\n * A popover displays interactive content in context with a trigger element.\n * A tooltip displays a description of an element on hover or focus.\n *\n * API:\n * - {@link PopoverProps}\n */\nexport function Popover({\n trigger,\n children,\n open,\n isDisabled = false,\n defaultOpen,\n onOpenChange,\n side = \"top\",\n align = \"center\",\n arrow = false,\n constrainWidth = false,\n \"data-testid\": testId,\n}: PopoverProps) {\n const { className: themeClass, style: themeStyle } = useTheme();\n\n return (\n <RadixPopover.Root\n open={isDisabled ? false : open}\n defaultOpen={defaultOpen}\n onOpenChange={(newOpen) => {\n if (isDisabled) return;\n onOpenChange?.(newOpen);\n }}\n >\n <RadixPopover.Trigger asChild>\n <div aria-disabled={isDisabled}>{trigger}</div>\n </RadixPopover.Trigger>\n\n {!isDisabled && (\n <RadixPopover.Portal>\n <RadixPopover.Content\n side={side}\n sideOffset={2}\n align={align}\n style={themeStyle as CSSProperties}\n className={csx(\n \"proton-Popover\",\n constrainWidth && \"proton-Popover__constrained\",\n themeClass,\n )}\n data-testid={testId}\n >\n {arrow && <RadixPopover.Arrow className=\"arrow\" />}\n {children}\n </RadixPopover.Content>\n </RadixPopover.Portal>\n )}\n </RadixPopover.Root>\n );\n}\n\nPopover.displayName = \"Popover\";\n"],"names":["Popover","trigger","children","open","isDisabled","defaultOpen","onOpenChange","side","align","arrow","constrainWidth","testId","themeClass","themeStyle","useTheme","jsxs","RadixPopover","newOpen","jsx","csx"],"mappings":";;;;;AAsEO,SAASA,EAAQ;AAAA,EACtB,SAAAC;AAAA,EACA,UAAAC;AAAA,EACA,MAAAC;AAAA,EACA,YAAAC,IAAa;AAAA,EACb,aAAAC;AAAA,EACA,cAAAC;AAAA,EACA,MAAAC,IAAO;AAAA,EACP,OAAAC,IAAQ;AAAA,EACR,OAAAC,IAAQ;AAAA,EACR,gBAAAC,IAAiB;AAAA,EACjB,eAAeC;AACjB,GAAiB;AACf,QAAM,EAAE,WAAWC,GAAY,OAAOC,EAAA,IAAeC;AAGnD,SAAAC,gBAAAA,EAAA;AAAA,IAACC,EAAa;AAAA,IAAb;AAAA,MACC,MAAMZ,IAAa,KAAQD;AAAA,MAC3B,aAAAE;AAAA,MACA,cAAc,CAACY,MAAY;AACzB,QAAIb,KACJE,KAAA,QAAAA,EAAeW;AAAA,MACjB;AAAA,MAEA,UAAA;AAAA,QAACC,gBAAAA,EAAA,IAAAF,EAAa,SAAb,EAAqB,SAAO,IAC3B,gCAAC,OAAI,EAAA,iBAAeZ,GAAa,UAAAH,EAAA,CAAQ,EAC3C,CAAA;AAAA,QAEC,CAACG,KACCc,gBAAAA,EAAAA,IAAAF,EAAa,QAAb,EACC,UAAAD,gBAAAA,EAAA;AAAA,UAACC,EAAa;AAAA,UAAb;AAAA,YACC,MAAAT;AAAA,YACA,YAAY;AAAA,YACZ,OAAAC;AAAA,YACA,OAAOK;AAAA,YACP,WAAWM;AAAA,cACT;AAAA,cACAT,KAAkB;AAAA,cAClBE;AAAA,YACF;AAAA,YACA,eAAaD;AAAA,YAEZ,UAAA;AAAA,cAAAF,KAAUS,gBAAAA,EAAA,IAAAF,EAAa,OAAb,EAAmB,WAAU,SAAQ;AAAA,cAC/Cd;AAAA,YAAA;AAAA,UAAA;AAAA,QAAA,GAEL;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAIR;AAEAF,EAAQ,cAAc;"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const x=require("../../../node_modules/react/jsx-runtime.cjs.js"),e=require("react");function l({initialDurationSeconds:r=0,durationSeconds:a=20,children:n="Complete",label:t="",showTimer:u=!0,"data-testid":i}){const o=()=>r>0?Math.max(0,a-r):a,[f,c]=e.useState(o),s=e.useRef(null);return e.useEffect(()=>(s.current=setInterval(()=>{c(m=>m>0?m-1:0)},1e3),()=>{s.current&&clearInterval(s.current)}),[]),e.useEffect(()=>{c(o())},[a,r]),f<=0?x.jsxRuntimeExports.jsx("span",{"data-testid":i,"aria-label":typeof n=="string"?n:void 0,children:n}):x.jsxRuntimeExports.jsxs("span",{role:"timer","aria-live":"polite","aria-atomic":"true","aria-label":t,"data-testid":i,children:[t&&(u?`${t} `:t),u&&`${String(f)}s...`]})}l.displayName="ProtonUITextCountdown";exports.TextCountdown=l;
2
+ //# sourceMappingURL=TextCountdown.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TextCountdown.cjs.js","sources":["../../../../src/components/Text/TextCountdown/TextCountdown.tsx"],"sourcesContent":["\"use client\";\n\nimport { useEffect, useRef, useState, type ReactNode } from \"react\";\n\nexport interface TextCountdownProps {\n /** Content to show when countdown has finished and the button is clickable.\n * @default \"Complete\"\n */\n children?: ReactNode;\n\n /** Test ID for the component. */\n \"data-testid\"?: string;\n\n /** Total time the timer runs for, in seconds.\n * @default 20\n */\n durationSeconds?: number;\n\n /** Whether to show the timer.\n * @default true\n */\n showTimer?: boolean;\n\n /** Label to show before the timer.\n * @default \"\"\n */\n label?: string;\n\n /**\n * When provided (and positive), subtracted from durationSeconds to get the initial time left\n * (e.g. durationSeconds=20, initialDurationSeconds=5 → starts at 15s).\n * When 0 or omitted, the countdown starts at the full durationSeconds.\n * @default 0\n */\n initialDurationSeconds?: number;\n}\n\n/**\n * A button that shows a countdown before becoming clickable. Fully controlled by\n * initialSecondsRemaining; parent is responsible for computing that (e.g. from\n * timeSent and durationSeconds via getInitialSecondsRemaining).\n *\n * API:\n * - {@link TextCountdownProps}\n */\nexport function TextCountdown({\n initialDurationSeconds = 0,\n durationSeconds = 20,\n children = \"Complete\",\n label = \"\",\n showTimer = true,\n \"data-testid\": testId,\n}: TextCountdownProps) {\n const getInitialTimeLeft = () =>\n initialDurationSeconds > 0\n ? Math.max(0, durationSeconds - initialDurationSeconds)\n : durationSeconds;\n\n const [timeLeft, setTimeLeft] = useState(getInitialTimeLeft);\n const intervalRef = useRef<ReturnType<typeof setInterval> | null>(null);\n\n useEffect(() => {\n intervalRef.current = setInterval(() => {\n setTimeLeft((prev) => (prev > 0 ? prev - 1 : 0));\n }, 1000);\n\n return () => {\n if (intervalRef.current) clearInterval(intervalRef.current);\n };\n }, []);\n\n useEffect(() => {\n setTimeLeft(getInitialTimeLeft());\n }, [durationSeconds, initialDurationSeconds]);\n\n if (timeLeft <= 0) {\n return (\n <span\n data-testid={testId}\n aria-label={typeof children === \"string\" ? children : undefined}\n >\n {children}\n </span>\n );\n }\n\n return (\n <span\n role=\"timer\"\n aria-live=\"polite\"\n aria-atomic=\"true\"\n aria-label={label}\n data-testid={testId}\n >\n {label && (showTimer ? `${label} ` : label)}\n {showTimer && `${String(timeLeft)}s...`}\n </span>\n );\n}\n\nTextCountdown.displayName = \"ProtonUITextCountdown\";\n"],"names":["TextCountdown","initialDurationSeconds","durationSeconds","children","label","showTimer","testId","getInitialTimeLeft","timeLeft","setTimeLeft","useState","intervalRef","useRef","useEffect","prev","jsx","jsxs"],"mappings":"qKA6CO,SAASA,EAAc,CAC5B,uBAAAC,EAAyB,EACzB,gBAAAC,EAAkB,GAClB,SAAAC,EAAW,WACX,MAAAC,EAAQ,GACR,UAAAC,EAAY,GACZ,cAAeC,CACjB,EAAuB,CACf,MAAAC,EAAqB,IACzBN,EAAyB,EACrB,KAAK,IAAI,EAAGC,EAAkBD,CAAsB,EACpDC,EAEA,CAACM,EAAUC,CAAW,EAAIC,WAASH,CAAkB,EACrDI,EAAcC,SAA8C,IAAI,EAgBtE,OAdAC,EAAAA,UAAU,KACIF,EAAA,QAAU,YAAY,IAAM,CACtCF,EAAaK,GAAUA,EAAO,EAAIA,EAAO,EAAI,CAAE,GAC9C,GAAI,EAEA,IAAM,CACPH,EAAY,SAAuB,cAAAA,EAAY,OAAO,CAAA,GAE3D,CAAE,CAAA,EAELE,EAAAA,UAAU,IAAM,CACdJ,EAAYF,GAAoB,CAAA,EAC/B,CAACL,EAAiBD,CAAsB,CAAC,EAExCO,GAAY,EAEZO,EAAA,kBAAA,IAAC,OAAA,CACC,cAAaT,EACb,aAAY,OAAOH,GAAa,SAAWA,EAAW,OAErD,SAAAA,CAAA,CAAA,EAMLa,EAAA,kBAAA,KAAC,OAAA,CACC,KAAK,QACL,YAAU,SACV,cAAY,OACZ,aAAYZ,EACZ,cAAaE,EAEZ,SAAA,CAAUF,IAAAC,EAAY,GAAGD,CAAK,IAAMA,GACpCC,GAAa,GAAG,OAAOG,CAAQ,CAAC,MAAA,CAAA,CAAA,CAGvC,CAEAR,EAAc,YAAc"}
@@ -0,0 +1,44 @@
1
+ import { j as p } from "../../../node_modules/react/jsx-runtime.es.js";
2
+ import { useState as l, useRef as c, useEffect as x } from "react";
3
+ function j({
4
+ initialDurationSeconds: e = 0,
5
+ durationSeconds: r = 20,
6
+ children: a = "Complete",
7
+ label: t = "",
8
+ showTimer: i = !0,
9
+ "data-testid": n
10
+ }) {
11
+ const f = () => e > 0 ? Math.max(0, r - e) : r, [o, m] = l(f), s = c(null);
12
+ return x(() => (s.current = setInterval(() => {
13
+ m((u) => u > 0 ? u - 1 : 0);
14
+ }, 1e3), () => {
15
+ s.current && clearInterval(s.current);
16
+ }), []), x(() => {
17
+ m(f());
18
+ }, [r, e]), o <= 0 ? /* @__PURE__ */ p.jsx(
19
+ "span",
20
+ {
21
+ "data-testid": n,
22
+ "aria-label": typeof a == "string" ? a : void 0,
23
+ children: a
24
+ }
25
+ ) : /* @__PURE__ */ p.jsxs(
26
+ "span",
27
+ {
28
+ role: "timer",
29
+ "aria-live": "polite",
30
+ "aria-atomic": "true",
31
+ "aria-label": t,
32
+ "data-testid": n,
33
+ children: [
34
+ t && (i ? `${t} ` : t),
35
+ i && `${String(o)}s...`
36
+ ]
37
+ }
38
+ );
39
+ }
40
+ j.displayName = "ProtonUITextCountdown";
41
+ export {
42
+ j as TextCountdown
43
+ };
44
+ //# sourceMappingURL=TextCountdown.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TextCountdown.es.js","sources":["../../../../src/components/Text/TextCountdown/TextCountdown.tsx"],"sourcesContent":["\"use client\";\n\nimport { useEffect, useRef, useState, type ReactNode } from \"react\";\n\nexport interface TextCountdownProps {\n /** Content to show when countdown has finished and the button is clickable.\n * @default \"Complete\"\n */\n children?: ReactNode;\n\n /** Test ID for the component. */\n \"data-testid\"?: string;\n\n /** Total time the timer runs for, in seconds.\n * @default 20\n */\n durationSeconds?: number;\n\n /** Whether to show the timer.\n * @default true\n */\n showTimer?: boolean;\n\n /** Label to show before the timer.\n * @default \"\"\n */\n label?: string;\n\n /**\n * When provided (and positive), subtracted from durationSeconds to get the initial time left\n * (e.g. durationSeconds=20, initialDurationSeconds=5 → starts at 15s).\n * When 0 or omitted, the countdown starts at the full durationSeconds.\n * @default 0\n */\n initialDurationSeconds?: number;\n}\n\n/**\n * A button that shows a countdown before becoming clickable. Fully controlled by\n * initialSecondsRemaining; parent is responsible for computing that (e.g. from\n * timeSent and durationSeconds via getInitialSecondsRemaining).\n *\n * API:\n * - {@link TextCountdownProps}\n */\nexport function TextCountdown({\n initialDurationSeconds = 0,\n durationSeconds = 20,\n children = \"Complete\",\n label = \"\",\n showTimer = true,\n \"data-testid\": testId,\n}: TextCountdownProps) {\n const getInitialTimeLeft = () =>\n initialDurationSeconds > 0\n ? Math.max(0, durationSeconds - initialDurationSeconds)\n : durationSeconds;\n\n const [timeLeft, setTimeLeft] = useState(getInitialTimeLeft);\n const intervalRef = useRef<ReturnType<typeof setInterval> | null>(null);\n\n useEffect(() => {\n intervalRef.current = setInterval(() => {\n setTimeLeft((prev) => (prev > 0 ? prev - 1 : 0));\n }, 1000);\n\n return () => {\n if (intervalRef.current) clearInterval(intervalRef.current);\n };\n }, []);\n\n useEffect(() => {\n setTimeLeft(getInitialTimeLeft());\n }, [durationSeconds, initialDurationSeconds]);\n\n if (timeLeft <= 0) {\n return (\n <span\n data-testid={testId}\n aria-label={typeof children === \"string\" ? children : undefined}\n >\n {children}\n </span>\n );\n }\n\n return (\n <span\n role=\"timer\"\n aria-live=\"polite\"\n aria-atomic=\"true\"\n aria-label={label}\n data-testid={testId}\n >\n {label && (showTimer ? `${label} ` : label)}\n {showTimer && `${String(timeLeft)}s...`}\n </span>\n );\n}\n\nTextCountdown.displayName = \"ProtonUITextCountdown\";\n"],"names":["TextCountdown","initialDurationSeconds","durationSeconds","children","label","showTimer","testId","getInitialTimeLeft","timeLeft","setTimeLeft","useState","intervalRef","useRef","useEffect","prev","jsx","jsxs"],"mappings":";;AA6CO,SAASA,EAAc;AAAA,EAC5B,wBAAAC,IAAyB;AAAA,EACzB,iBAAAC,IAAkB;AAAA,EAClB,UAAAC,IAAW;AAAA,EACX,OAAAC,IAAQ;AAAA,EACR,WAAAC,IAAY;AAAA,EACZ,eAAeC;AACjB,GAAuB;AACf,QAAAC,IAAqB,MACzBN,IAAyB,IACrB,KAAK,IAAI,GAAGC,IAAkBD,CAAsB,IACpDC,GAEA,CAACM,GAAUC,CAAW,IAAIC,EAASH,CAAkB,GACrDI,IAAcC,EAA8C,IAAI;AAgBtE,SAdAC,EAAU,OACIF,EAAA,UAAU,YAAY,MAAM;AACtC,IAAAF,EAAY,CAACK,MAAUA,IAAO,IAAIA,IAAO,IAAI,CAAE;AAAA,KAC9C,GAAI,GAEA,MAAM;AACX,IAAIH,EAAY,WAAuB,cAAAA,EAAY,OAAO;AAAA,EAAA,IAE3D,CAAE,CAAA,GAELE,EAAU,MAAM;AACd,IAAAJ,EAAYF,GAAoB;AAAA,EAAA,GAC/B,CAACL,GAAiBD,CAAsB,CAAC,GAExCO,KAAY,IAEZO,gBAAAA,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,eAAaT;AAAA,MACb,cAAY,OAAOH,KAAa,WAAWA,IAAW;AAAA,MAErD,UAAAA;AAAA,IAAA;AAAA,EAAA,IAMLa,gBAAAA,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,aAAU;AAAA,MACV,eAAY;AAAA,MACZ,cAAYZ;AAAA,MACZ,eAAaE;AAAA,MAEZ,UAAA;AAAA,QAAUF,MAAAC,IAAY,GAAGD,CAAK,MAAMA;AAAA,QACpCC,KAAa,GAAG,OAAOG,CAAQ,CAAC;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGvC;AAEAR,EAAc,cAAc;"}
package/dist/index.cjs.js CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("./components/ActionMenu/ActionMenu.cjs.js"),o=require("./components/Badge/Badge.cjs.js"),r=require("./components/Banner/Banner.cjs.js"),e=require("./components/Button/Button.cjs.js"),i=require("./components/ButtonGroup/ButtonGroup.cjs.js"),u=require("./components/ButtonWithSelect/ButtonWithSelect.cjs.js"),l=require("./components/Table/DataTable/DataTable.cjs.js"),c=require("./components/Table/DataTable/DataTableRow.cjs.js"),s=require("./components/Dialog/Dialog.cjs.js"),T=require("./components/Elevation/Elevation.cjs.js"),b=require("./components/ImageBackground/ImageBackground.cjs.js"),q=require("./components/Input/BaseInput/Input.cjs.js"),p=require("./components/Checkbox/CheckboxInput/CheckboxInput.cjs.js"),d=require("./components/Checkbox/CheckboxRadioGroup/CheckboxRadioGroup.cjs.js"),B=require("./components/Input/CopyInput/CopyInput.cjs.js"),h=require("./components/Input/SearchInput/SearchInput.cjs.js"),R=require("./components/Menu/MenuTrigger.cjs.js"),g=require("./components/Modal/Modal.cjs.js"),I=require("./components/Popover/Popover.cjs.js"),S=require("./components/ScreenOverlay/ScreenOverlay.cjs.js"),m=require("./components/Select/Select.cjs.js"),v=require("./components/Switch/Switch.cjs.js"),C=require("./components/Table/BaseTable/Table.cjs.js"),x=require("./components/Table/BaseTable/elements/TableRow.cjs.js"),w=require("./components/Table/BaseTable/elements/TableCell.cjs.js"),A=require("./components/Table/BaseTable/elements/TableRoot.cjs.js"),y=require("./components/Table/BaseTable/elements/TableHeader.cjs.js"),E=require("./components/Table/BaseTable/elements/TableHeaderRow.cjs.js"),M=require("./components/Table/BaseTable/elements/TableHeaderCell.cjs.js"),k=require("./components/Table/BaseTable/elements/TableBody.cjs.js"),t=require("./components/Table/BaseTable/Collection/useTableCollection.cjs.js"),D=require("./components/Text/TextEllipsis/TextEllipsis.cjs.js"),H=require("./components/Text/TextEmphasis/TextEmphasis.cjs.js"),a=require("./components/ThemeProvider.cjs.js"),P=require("./components/Tombstone/Tombstone.cjs.js"),G=require("./components/Tooltip/ResponsiveTooltip.cjs.js"),N=require("./components/Waveform/Waveform.cjs.js");exports.ActionMenu=n.ActionMenu;exports.Badge=o.Badge;exports.BadgeVariants=o.BadgeVariants;exports.BANNER_VARIANTS=r.BANNER_VARIANTS;exports.Banner=r.Banner;exports.Button=e.Button;exports.ButtonSizes=e.ButtonSizes;exports.ButtonVariants=e.ButtonVariants;exports.ButtonGroup=i.ButtonGroup;exports.ButtonWithSelect=u.ButtonWithSelect;exports.DataTable=l.DataTable;exports.DataTableRow=c.DataTableRow;exports.Dialog=s.Dialog;exports.Elevation=T.Elevation;exports.ImageBackground=b.ImageBackground;exports.Input=q.Input;exports.CheckboxInput=p.CheckboxInput;exports.CheckboxRadioGroup=d.CheckboxRadioGroup;exports.CopyInput=B.CopyInput;exports.SearchInput=h.SearchInput;exports.MenuTrigger=R.MenuTrigger;exports.Modal=g.Modal;exports.Popover=I.Popover;exports.ScreenOverlay=S.ScreenOverlay;exports.Select=m.Select;exports.Switch=v.Switch;exports.Table=C.Table;exports.TableRow=x.TableRow;exports.TableCell=w.TableCell;exports.TableRoot=A.TableRoot;exports.TableHeader=y.TableHeader;exports.TableHeaderRow=E.TableHeaderRow;exports.TableHeaderCell=M.TableHeaderCell;exports.TableBody=k.TableBody;exports.calculateAriaColumnIndex=t.calculateAriaColumnIndex;exports.calculateAriaRowIndex=t.calculateAriaRowIndex;exports.TextEllipsis=D.TextEllipsis;exports.TextEmphasis=H.TextEmphasis;exports.ThemeProvider=a.ThemeProvider;exports.useTheme=a.useTheme;exports.Tombstone=P.Tombstone;exports.Tooltip=G.ResponsiveTooltip;exports.Waveform=N.Waveform;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("./components/ActionMenu/ActionMenu.cjs.js"),o=require("./components/Badge/Badge.cjs.js"),t=require("./components/Banner/Banner.cjs.js"),e=require("./components/Button/Button.cjs.js"),u=require("./components/ButtonGroup/ButtonGroup.cjs.js"),i=require("./components/ButtonWithSelect/ButtonWithSelect.cjs.js"),l=require("./components/Checkbox/CheckboxInput/CheckboxInput.cjs.js"),c=require("./components/Checkbox/CheckboxRadioGroup/CheckboxRadioGroup.cjs.js"),s=require("./components/Table/DataTable/DataTable.cjs.js"),T=require("./components/Table/DataTable/DataTableRow.cjs.js"),b=require("./components/Input/CopyInput/CopyInput.cjs.js"),p=require("./components/Dialog/Dialog.cjs.js"),q=require("./components/Elevation/Elevation.cjs.js"),d=require("./components/ImageBackground/ImageBackground.cjs.js"),B=require("./components/Input/BaseInput/Input.cjs.js"),I=require("./components/Input/OTPInput/OTPInput.cjs.js"),h=require("./components/Menu/MenuTrigger.cjs.js"),R=require("./components/Modal/Modal.cjs.js"),g=require("./components/Popover/Popover.cjs.js"),C=require("./components/Input/SearchInput/SearchInput.cjs.js"),S=require("./components/ScreenOverlay/ScreenOverlay.cjs.js"),m=require("./components/Select/Select.cjs.js"),x=require("./components/Switch/Switch.cjs.js"),v=require("./components/Text/TextCountdown/TextCountdown.cjs.js"),w=require("./components/Table/BaseTable/Table.cjs.js"),A=require("./components/Table/BaseTable/elements/TableRow.cjs.js"),y=require("./components/Table/BaseTable/elements/TableCell.cjs.js"),E=require("./components/Table/BaseTable/elements/TableRoot.cjs.js"),M=require("./components/Table/BaseTable/elements/TableHeader.cjs.js"),P=require("./components/Table/BaseTable/elements/TableHeaderRow.cjs.js"),k=require("./components/Table/BaseTable/elements/TableHeaderCell.cjs.js"),D=require("./components/Table/BaseTable/elements/TableBody.cjs.js"),r=require("./components/Table/BaseTable/Collection/useTableCollection.cjs.js"),H=require("./components/Text/TextEllipsis/TextEllipsis.cjs.js"),O=require("./components/Text/TextEmphasis/TextEmphasis.cjs.js"),n=require("./components/ThemeProvider.cjs.js"),G=require("./components/Tombstone/Tombstone.cjs.js"),N=require("./components/Tooltip/ResponsiveTooltip.cjs.js"),V=require("./components/Waveform/Waveform.cjs.js");exports.ActionMenu=a.ActionMenu;exports.Badge=o.Badge;exports.BadgeVariants=o.BadgeVariants;exports.BANNER_VARIANTS=t.BANNER_VARIANTS;exports.Banner=t.Banner;exports.Button=e.Button;exports.ButtonSizes=e.ButtonSizes;exports.ButtonVariants=e.ButtonVariants;exports.ButtonGroup=u.ButtonGroup;exports.ButtonWithSelect=i.ButtonWithSelect;exports.CheckboxInput=l.CheckboxInput;exports.CheckboxRadioGroup=c.CheckboxRadioGroup;exports.DataTable=s.DataTable;exports.DataTableRow=T.DataTableRow;exports.CopyInput=b.CopyInput;exports.Dialog=p.Dialog;exports.Elevation=q.Elevation;exports.ImageBackground=d.ImageBackground;exports.Input=B.Input;exports.OTPInput=I.OTPInput;exports.MenuTrigger=h.MenuTrigger;exports.Modal=R.Modal;exports.Popover=g.Popover;exports.SearchInput=C.SearchInput;exports.ScreenOverlay=S.ScreenOverlay;exports.Select=m.Select;exports.Switch=x.Switch;exports.TextCountdown=v.TextCountdown;exports.Table=w.Table;exports.TableRow=A.TableRow;exports.TableCell=y.TableCell;exports.TableRoot=E.TableRoot;exports.TableHeader=M.TableHeader;exports.TableHeaderRow=P.TableHeaderRow;exports.TableHeaderCell=k.TableHeaderCell;exports.TableBody=D.TableBody;exports.calculateAriaColumnIndex=r.calculateAriaColumnIndex;exports.calculateAriaRowIndex=r.calculateAriaRowIndex;exports.TextEllipsis=H.TextEllipsis;exports.TextEmphasis=O.TextEmphasis;exports.ThemeProvider=n.ThemeProvider;exports.useTheme=n.useTheme;exports.Tombstone=G.Tombstone;exports.Tooltip=N.ResponsiveTooltip;exports.Waveform=V.Waveform;
2
2
  //# sourceMappingURL=index.cjs.js.map
package/dist/index.d.ts CHANGED
@@ -872,6 +872,35 @@ declare interface ModalProps {
872
872
  title?: string;
873
873
  }
874
874
 
875
+ /**
876
+ * Numeric OTP number input with individual digit cells. Supports paste, keyboard navigation, and auto-focus.
877
+ *
878
+ * API:
879
+ * - {@link OTPInputProps}
880
+ */
881
+ export declare const OTPInput: ForwardRefExoticComponent<OTPInputProps & RefAttributes<HTMLDivElement>>;
882
+
883
+ declare interface OTPInputProps {
884
+ /** Test ID for digit inputs */
885
+ "data-testid"?: string;
886
+ /** Whether the input is disabled. */
887
+ isDisabled?: boolean;
888
+ /** Whether the input is in an error state. */
889
+ isError?: boolean;
890
+ /** Number of digit inputs to render.
891
+ * @default 6
892
+ */
893
+ length?: number;
894
+ /** Called when the value changes. */
895
+ onChange?: (value: string) => void;
896
+ /** Called when all digits are filled. */
897
+ onComplete?: (value: string) => void;
898
+ /** Whether to show a separator dash in the middle (when length is even).
899
+ * @default true
900
+ */
901
+ showSeparator?: boolean;
902
+ }
903
+
875
904
  /**
876
905
  * A popover component that handles positioning and supports controlled and uncontrolled modes.
877
906
  *
@@ -1527,6 +1556,48 @@ declare interface TableRowProps_2 {
1527
1556
  dataTestId?: string;
1528
1557
  }
1529
1558
 
1559
+ /**
1560
+ * A button that shows a countdown before becoming clickable. Fully controlled by
1561
+ * initialSecondsRemaining; parent is responsible for computing that (e.g. from
1562
+ * timeSent and durationSeconds via getInitialSecondsRemaining).
1563
+ *
1564
+ * API:
1565
+ * - {@link TextCountdownProps}
1566
+ */
1567
+ export declare function TextCountdown({ initialDurationSeconds, durationSeconds, children, label, showTimer, "data-testid": testId, }: TextCountdownProps): JSX_2.Element;
1568
+
1569
+ export declare namespace TextCountdown {
1570
+ var displayName: string;
1571
+ }
1572
+
1573
+ declare interface TextCountdownProps {
1574
+ /** Content to show when countdown has finished and the button is clickable.
1575
+ * @default "Complete"
1576
+ */
1577
+ children?: ReactNode;
1578
+ /** Test ID for the component. */
1579
+ "data-testid"?: string;
1580
+ /** Total time the timer runs for, in seconds.
1581
+ * @default 20
1582
+ */
1583
+ durationSeconds?: number;
1584
+ /** Whether to show the timer.
1585
+ * @default true
1586
+ */
1587
+ showTimer?: boolean;
1588
+ /** Label to show before the timer.
1589
+ * @default ""
1590
+ */
1591
+ label?: string;
1592
+ /**
1593
+ * When provided (and positive), subtracted from durationSeconds to get the initial time left
1594
+ * (e.g. durationSeconds=20, initialDurationSeconds=5 → starts at 15s).
1595
+ * When 0 or omitted, the countdown starts at the full durationSeconds.
1596
+ * @default 0
1597
+ */
1598
+ initialDurationSeconds?: number;
1599
+ }
1600
+
1530
1601
  /**
1531
1602
  * A component that displays text with an ellipsis when it overflows its container.
1532
1603
  *
package/dist/index.es.js CHANGED
@@ -1,40 +1,42 @@
1
1
  import { ActionMenu as e } from "./components/ActionMenu/ActionMenu.es.js";
2
2
  import { Badge as p, BadgeVariants as m } from "./components/Badge/Badge.es.js";
3
3
  import { BANNER_VARIANTS as a, Banner as f } from "./components/Banner/Banner.es.js";
4
- import { Button as n, ButtonSizes as i, ButtonVariants as T } from "./components/Button/Button.es.js";
4
+ import { Button as n, ButtonSizes as T, ButtonVariants as u } from "./components/Button/Button.es.js";
5
5
  import { ButtonGroup as b } from "./components/ButtonGroup/ButtonGroup.es.js";
6
6
  import { ButtonWithSelect as d } from "./components/ButtonWithSelect/ButtonWithSelect.es.js";
7
- import { DataTable as B } from "./components/Table/DataTable/DataTable.es.js";
8
- import { DataTableRow as h } from "./components/Table/DataTable/DataTableRow.es.js";
9
- import { Dialog as g } from "./components/Dialog/Dialog.es.js";
10
- import { Elevation as v } from "./components/Elevation/Elevation.es.js";
11
- import { ImageBackground as C } from "./components/ImageBackground/ImageBackground.es.js";
12
- import { Input as E } from "./components/Input/BaseInput/Input.es.js";
13
- import { CheckboxInput as y } from "./components/Checkbox/CheckboxInput/CheckboxInput.es.js";
14
- import { CheckboxRadioGroup as H } from "./components/Checkbox/CheckboxRadioGroup/CheckboxRadioGroup.es.js";
15
- import { CopyInput as N } from "./components/Input/CopyInput/CopyInput.es.js";
16
- import { SearchInput as G } from "./components/Input/SearchInput/SearchInput.es.js";
17
- import { MenuTrigger as W } from "./components/Menu/MenuTrigger.es.js";
18
- import { Modal as O } from "./components/Modal/Modal.es.js";
7
+ import { CheckboxInput as B } from "./components/Checkbox/CheckboxInput/CheckboxInput.es.js";
8
+ import { CheckboxRadioGroup as R } from "./components/Checkbox/CheckboxRadioGroup/CheckboxRadioGroup.es.js";
9
+ import { DataTable as g } from "./components/Table/DataTable/DataTable.es.js";
10
+ import { DataTableRow as S } from "./components/Table/DataTable/DataTableRow.es.js";
11
+ import { CopyInput as w } from "./components/Input/CopyInput/CopyInput.es.js";
12
+ import { Dialog as E } from "./components/Dialog/Dialog.es.js";
13
+ import { Elevation as y } from "./components/Elevation/Elevation.es.js";
14
+ import { ImageBackground as H } from "./components/ImageBackground/ImageBackground.es.js";
15
+ import { Input as N } from "./components/Input/BaseInput/Input.es.js";
16
+ import { OTPInput as V } from "./components/Input/OTPInput/OTPInput.es.js";
17
+ import { MenuTrigger as O } from "./components/Menu/MenuTrigger.es.js";
18
+ import { Modal as z } from "./components/Modal/Modal.es.js";
19
19
  import { Popover as j } from "./components/Popover/Popover.es.js";
20
- import { ScreenOverlay as F } from "./components/ScreenOverlay/ScreenOverlay.es.js";
21
- import { Select as K } from "./components/Select/Select.es.js";
22
- import { Switch as Q } from "./components/Switch/Switch.es.js";
23
- import { Table as X } from "./components/Table/BaseTable/Table.es.js";
24
- import { TableRow as Z } from "./components/Table/BaseTable/elements/TableRow.es.js";
25
- import { TableCell as oo } from "./components/Table/BaseTable/elements/TableCell.es.js";
26
- import { TableRoot as eo } from "./components/Table/BaseTable/elements/TableRoot.es.js";
27
- import { TableHeader as po } from "./components/Table/BaseTable/elements/TableHeader.es.js";
28
- import { TableHeaderRow as xo } from "./components/Table/BaseTable/elements/TableHeaderRow.es.js";
29
- import { TableHeaderCell as fo } from "./components/Table/BaseTable/elements/TableHeaderCell.es.js";
30
- import { TableBody as no } from "./components/Table/BaseTable/elements/TableBody.es.js";
31
- import { calculateAriaColumnIndex as To, calculateAriaRowIndex as uo } from "./components/Table/BaseTable/Collection/useTableCollection.es.js";
32
- import { TextEllipsis as co } from "./components/Text/TextEllipsis/TextEllipsis.es.js";
33
- import { TextEmphasis as Bo } from "./components/Text/TextEmphasis/TextEmphasis.es.js";
34
- import { ThemeProvider as ho, useTheme as Io } from "./components/ThemeProvider.es.js";
35
- import { Tombstone as So } from "./components/Tombstone/Tombstone.es.js";
36
- import { ResponsiveTooltip as Ao } from "./components/Tooltip/ResponsiveTooltip.es.js";
37
- import { Waveform as wo } from "./components/Waveform/Waveform.es.js";
20
+ import { SearchInput as F } from "./components/Input/SearchInput/SearchInput.es.js";
21
+ import { ScreenOverlay as K } from "./components/ScreenOverlay/ScreenOverlay.es.js";
22
+ import { Select as Q } from "./components/Select/Select.es.js";
23
+ import { Switch as X } from "./components/Switch/Switch.es.js";
24
+ import { TextCountdown as Z } from "./components/Text/TextCountdown/TextCountdown.es.js";
25
+ import { Table as oo } from "./components/Table/BaseTable/Table.es.js";
26
+ import { TableRow as eo } from "./components/Table/BaseTable/elements/TableRow.es.js";
27
+ import { TableCell as po } from "./components/Table/BaseTable/elements/TableCell.es.js";
28
+ import { TableRoot as xo } from "./components/Table/BaseTable/elements/TableRoot.es.js";
29
+ import { TableHeader as fo } from "./components/Table/BaseTable/elements/TableHeader.es.js";
30
+ import { TableHeaderRow as no } from "./components/Table/BaseTable/elements/TableHeaderRow.es.js";
31
+ import { TableHeaderCell as uo } from "./components/Table/BaseTable/elements/TableHeaderCell.es.js";
32
+ import { TableBody as bo } from "./components/Table/BaseTable/elements/TableBody.es.js";
33
+ import { calculateAriaColumnIndex as so, calculateAriaRowIndex as Bo } from "./components/Table/BaseTable/Collection/useTableCollection.es.js";
34
+ import { TextEllipsis as Ro } from "./components/Text/TextEllipsis/TextEllipsis.es.js";
35
+ import { TextEmphasis as go } from "./components/Text/TextEmphasis/TextEmphasis.es.js";
36
+ import { ThemeProvider as So, useTheme as vo } from "./components/ThemeProvider.es.js";
37
+ import { Tombstone as Ao } from "./components/Tombstone/Tombstone.es.js";
38
+ import { ResponsiveTooltip as ko } from "./components/Tooltip/ResponsiveTooltip.es.js";
39
+ import { Waveform as Do } from "./components/Waveform/Waveform.es.js";
38
40
  export {
39
41
  e as ActionMenu,
40
42
  a as BANNER_VARIANTS,
@@ -43,41 +45,43 @@ export {
43
45
  f as Banner,
44
46
  n as Button,
45
47
  b as ButtonGroup,
46
- i as ButtonSizes,
47
- T as ButtonVariants,
48
+ T as ButtonSizes,
49
+ u as ButtonVariants,
48
50
  d as ButtonWithSelect,
49
- y as CheckboxInput,
50
- H as CheckboxRadioGroup,
51
- N as CopyInput,
52
- B as DataTable,
53
- h as DataTableRow,
54
- g as Dialog,
55
- v as Elevation,
56
- C as ImageBackground,
57
- E as Input,
58
- W as MenuTrigger,
59
- O as Modal,
51
+ B as CheckboxInput,
52
+ R as CheckboxRadioGroup,
53
+ w as CopyInput,
54
+ g as DataTable,
55
+ S as DataTableRow,
56
+ E as Dialog,
57
+ y as Elevation,
58
+ H as ImageBackground,
59
+ N as Input,
60
+ O as MenuTrigger,
61
+ z as Modal,
62
+ V as OTPInput,
60
63
  j as Popover,
61
- F as ScreenOverlay,
62
- G as SearchInput,
63
- K as Select,
64
- Q as Switch,
65
- X as Table,
66
- no as TableBody,
67
- oo as TableCell,
68
- po as TableHeader,
69
- fo as TableHeaderCell,
70
- xo as TableHeaderRow,
71
- eo as TableRoot,
72
- Z as TableRow,
73
- co as TextEllipsis,
74
- Bo as TextEmphasis,
75
- ho as ThemeProvider,
76
- So as Tombstone,
77
- Ao as Tooltip,
78
- wo as Waveform,
79
- To as calculateAriaColumnIndex,
80
- uo as calculateAriaRowIndex,
81
- Io as useTheme
64
+ K as ScreenOverlay,
65
+ F as SearchInput,
66
+ Q as Select,
67
+ X as Switch,
68
+ oo as Table,
69
+ bo as TableBody,
70
+ po as TableCell,
71
+ fo as TableHeader,
72
+ uo as TableHeaderCell,
73
+ no as TableHeaderRow,
74
+ xo as TableRoot,
75
+ eo as TableRow,
76
+ Z as TextCountdown,
77
+ Ro as TextEllipsis,
78
+ go as TextEmphasis,
79
+ So as ThemeProvider,
80
+ Ao as Tombstone,
81
+ ko as Tooltip,
82
+ Do as Waveform,
83
+ so as calculateAriaColumnIndex,
84
+ Bo as calculateAriaRowIndex,
85
+ vo as useTheme
82
86
  };
83
87
  //# sourceMappingURL=index.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.es.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.es.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
package/dist/style.css CHANGED
@@ -1 +1 @@
1
- .proton-Button{--proton-button-edge-padding:1.05em;--proton-button__background-color:var(--proton-color__primary);--proton-button__text-color:var(--proton-color__white);color:var(--proton-button__text-color);border-radius:var(--proton-control__border-radius);padding:.45em var(--proton-button-edge-padding);letter-spacing:.05em;cursor:pointer;box-sizing:border-box;background-color:var(--proton-button__background-color);border:0;align-items:center;transition:filter .2s,background-color .2s,outline .2s;display:inline-flex;position:relative}.proton-Button__icon-decorator{justify-content:center;align-items:center;padding-right:.3em;line-height:1;display:flex;position:relative}.proton-Button__icon-decorator--fullWidth{position:absolute}.proton-Button__text{box-sizing:border-box;text-align:center;white-space:nowrap;text-overflow:ellipsis;margin:auto;line-height:normal;overflow:hidden}.proton-Button:hover{filter:brightness(1.16);cursor:pointer}.proton-Button--primary{--proton-button__background-color:var(--proton-color__primary);--proton-button__text-color:var(--proton-color__white)}.proton-Button--secondary{--proton-button__background-color:var(--proton-color__gray-light);--proton-button__text-color:var(--proton-control__text-color)}.proton-ui__theme--dark .proton-Button--secondary{--proton-button__background-color:var(--proton-control__background-color-light)}.proton-Button--danger{--proton-button__background-color:var(--proton-color__danger-medium)}.proton-Button--success{--proton-button__background-color:var(--proton-color__success-medium)}.proton-Button--translucent{--proton-button__background-color:var(--proton-control__background-color-light);--proton-button__text-color:var(--proton-control__text-color)}.proton-Button--disabled,.proton-Button--disabled:hover{opacity:.5;filter:none;cursor:not-allowed}.proton-Button:focus{outline:2px solid var(--proton-color__primary)}.proton-Button:focus-visible{outline:2px solid var(--proton-color__primary)}.proton-Button:active{filter:brightness(1.3);transition:filter .1s ease-out}.proton-Button--fullWidth{width:100%}.proton-Button--small{padding:.2rem .6rem;font-size:.875rem}.proton-Button--medium{padding:.4rem 1rem;font-size:1rem}.proton-Button--large{padding:.6rem 1.6rem;font-size:1.2rem}.proton-Button--xlarge{padding:1rem 2rem .8rem;font-size:1.3rem}.proton-Button--2xlarge{padding:1rem 2.6rem;font-size:1.6rem}.proton-Button--fullWidth .proton-Button__text{transform:translate(calc(var(--proton-button-text-shift)))}.proton-ScreenOverlay__background{-webkit-backdrop-filter:blur(24px)brightness(75%);backdrop-filter:blur(24px)brightness(75%);background-color:#000c;justify-content:center;align-items:center;width:100%;height:100%;display:flex;position:fixed;top:0;left:0}.proton-ScreenOverlay__z-index{z-index:10000}.proton-ScreenOverlay__image{object-fit:cover;width:100vw;height:100vh;position:absolute}.proton-ScreenOverlay__blur{-webkit-backdrop-filter:blur(24px)brightness(75%);backdrop-filter:blur(24px)brightness(75%);filter:brightness(46%);position:absolute;top:0;bottom:0;left:0;right:0}@keyframes fadeInBackground{0%{-webkit-backdrop-filter:blur(1px);backdrop-filter:blur(1px);background:#0000001a}to{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#000c}}@keyframes fadeOutBackground{0%{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#000c}to{-webkit-backdrop-filter:blur();backdrop-filter:blur();background:0 0}}.proton-ScreenOverlay__fade-in{animation:.2s ease-in-out forwards fadeInBackground}.proton-ScreenOverlay__fade-out{animation:.2s ease-in-out forwards fadeOutBackground}.proton-ActionMenu__wrapper{z-index:10;width:100%;max-height:100vh;position:fixed;bottom:0;left:0}.proton-ActionMenu__background-wrapper{opacity:0;transition:opacity .3s cubic-bezier(.34,1.56,.64,1);overflow-y:scroll}.proton-ActionMenu__card{background:var(--proton-control__background-color);color:var(--proton-control__text-color);z-index:1;border-radius:.875rem .875rem 0 0;flex-direction:column;height:0;transition:height .3s cubic-bezier(.34,1.56,.64,1);display:flex;position:relative;overflow:hidden;box-shadow:0 0 4px #0000001a,0 0 20px #00000026}.proton-ActionMenu__cancel-button{margin:0 .75rem 1rem}.proton-ActionMenu__content{padding:.75rem .75rem 0}.proton-ActionMenu__menu>[data-radix-popper-content-wrapper]{width:100%!important;position:absolute!important;top:0!important;transform:none!important}.proton-ActionMenu__list{flex-direction:column;margin-bottom:.625rem;display:flex}.proton-ActionMenu__item{color:inherit;cursor:pointer;justify-content:space-between;align-items:center;padding:.75rem .5rem .75rem .75rem;transition:filter .2s,background-color .2s,color .2s;display:flex}.proton-ActionMenu__item:hover,.proton-ActionMenu__item:focus{background-color:var(--proton-control__hover-color);border:none;outline:none}.proton-ActionMenu__item[aria-checked=true]:hover,.proton-ActionMenu__item[aria-checked=true]:focus{filter:brightness(1.15)}.proton-ActionMenu__item[aria-checked=true]{background-color:var(--proton-control__interactive-color);color:var(--proton-color__primary)}.proton-ui__theme--dark .proton-ActionMenu__item[aria-checked=true]{background-color:var(--proton-color__primary);color:var(--proton-control__text-color)}.proton-ActionMenu__item[aria-disabled=true],.proton-ActionMenu__list[aria-disabled=true],.proton-ActionMenu__item[aria-disabled=true]:hover{opacity:.5;cursor:not-allowed;background-color:#0000}.proton-ActionMenu__list[aria-disabled=true] .proton-ActionMenu__item{pointer-events:none}.proton-ActionMenu__title{text-align:center;width:100%;font-weight:600}.proton-ActionMenu__back-button{cursor:pointer;z-index:1;align-items:center;width:25%;height:100%;padding-left:.35rem;display:flex;position:absolute;left:0}.proton-ActionMenu__back-button:hover,.proton-ActionMenu__cancel-button:focus{background-color:var(--proton-control__hover-color);outline:none}.proton-ActionMenu__back-button:focus-visible{background-color:var(--proton-control__hover-color);outline:none}.proton-ActionMenu__cancel-button:focus-visible{background-color:var(--proton-control__hover-color);outline:none}.proton-ActionMenu__back-button-container{align-items:center;height:3rem;display:flex;position:relative}.proton-ActionMenu__description{color:var(--proton-control__text-color);opacity:.7;font-size:.875rem}.proton-ActionMenu__item-label{font-weight:500}.proton-ui__theme--dark .proton-ActionMenu__cancel-button button{--proton-button__background-color:var(--proton-control__background-color-light)}.proton-Badge{letter-spacing:.2em;text-align:center;text-transform:uppercase;white-space:nowrap;height:1.6rem;color:#666;background-color:#f2f2f2;border-radius:10rem;padding-left:1rem;padding-right:calc(1rem - .2em);font-size:1rem;font-weight:500;line-height:1.65rem;display:inline-block}.proton-ui__theme--dark .proton-Badge:not([class*=proton-Badge--]),.proton-ui__theme--dark .proton-Badge--secondary{background-color:var(--proton-control__background-color-light);color:var(--proton-control__text-color)}.proton-Badge--primary{background-color:var(--proton-color__primary);color:var(--proton-color__white)}.proton-Badge--success{background-color:var(--proton-color__success-super-light);color:var(--proton-color__success-dark)}.proton-Badge--warning{background-color:var(--proton-color__warning-super-light);color:var(--proton-color__warning-dark)}.proton-Badge--danger{background-color:var(--proton-color__danger-super-light);color:var(--proton-color__danger-dark)}.proton-Badge--transparent{color:#666;background-color:#0000}.proton-Banner{background-color:var(--banner-bg);-webkit-backdrop-filter:var(--banner-blur);backdrop-filter:var(--banner-blur);--tw-backdrop-blur:var(--banner-blur);--banner-bg:var(--proton-control__background-color-light);--banner-title:var(--proton-color__gray-dark);--banner-content:var(--proton-color__gray-medium);--banner-icon:var(--proton-color__gray-medium-light);--banner-blur:none;margin:0}:where(.proton-ui__theme--dark) .proton-Banner{--banner-bg:var(--proton-control__background-color-light);--banner-blur:blur(15px);--banner-title:var(--proton-control__text-color);--banner-content:var(--proton-control__text-color);--banner-icon:var(--proton-control__text-color)}.proton-Banner--warning{--banner-bg:var(--proton-color__warning-super-light);--banner-title:var(--proton-color__warning-dark);--banner-content:var(--proton-color__warning-medium);--banner-icon:var(--proton-color__warning-light)}.proton-Banner--success{--banner-bg:var(--proton-color__success-super-light);--banner-title:var(--proton-color__success-dark);--banner-content:var(--proton-color__success-medium);--banner-icon:var(--proton-color__success-light)}.proton-Banner--danger{--banner-bg:var(--proton-color__danger-super-light);--banner-title:var(--proton-color__danger-dark);--banner-content:var(--proton-color__danger-medium);--banner-icon:var(--proton-color__danger-light)}.proton-Banner--rounded{border-radius:.375rem}.proton-Banner__wrapper{align-items:flex-start;padding:2rem;display:flex}.proton-Banner__wrapper--compact{padding:1rem}.proton-Banner__content-wrapper{min-width:0;color:var(--banner-content);flex:1}.proton-Banner__container{padding:0 .625rem}.proton-Banner__title{letter-spacing:.01rem;color:var(--banner-title);line-height:1.2rem}.proton-Banner__content{color:var(--banner-content);margin:.375rem 0 0}.proton-Banner__icon{fill:var(--banner-icon);height:20px}.proton-Banner__actions{gap:.5rem;margin:.375rem 0 0;display:flex}@media (min-width:768px){.proton-Banner__container{grid-gap:.5rem;grid-template-columns:1fr auto;display:grid}.proton-Banner__title,.proton-Banner__content{grid-column:1;margin:auto 0}.proton-Banner__container:not(:has(.proton-Banner__content)){grid-gap:0px;grid-template-rows:1fr}.proton-Banner__container>div:last-child{grid-area:1/2/span 2;max-height:32px;margin:auto 0}.proton-Banner__actions{margin:0 0 0 .75rem}.proton-Banner__wrapper:not(:has(.proton-Banner__content)){align-items:center}}.proton-ButtonGroup{border:1px solid var(--proton-color__gray-light);border-radius:.25rem;font-weight:400;display:flex;overflow:hidden}.proton-ButtonGroup__option{background-color:var(--proton-color__gray-super-light);cursor:pointer;border-left:1px solid var(--proton-color__gray-light);color:var(--proton-color__gray-dark);text-align:center;border-radius:0;flex:1;padding:.5em 1em}.proton-ButtonGroup__option:first-child{border-left:0}.proton-ButtonGroup__option--selected{background-color:var(--proton-color__white);color:var(--proton-color__primary);z-index:2;cursor:default;border-radius:inherit;box-shadow:0 0 .375rem #00000026}.proton-ButtonGroup__option--selected+.proton-ButtonGroup__option{border-left:1px solid #0000}.proton-MenuTrigger__menu-header{text-transform:uppercase;color:var(--proton-control__text-color);background-color:var(--proton-control__background-color-light);letter-spacing:.1em;padding:.3125rem 1rem .25rem;font-size:.8em;font-weight:700}.proton-MenuTrigger__button{cursor:pointer;color:var(--proton-control__text-color);background:0 0;border:none;border-radius:.25rem;justify-content:center;align-items:center;padding:.25rem;transition:background-color .2s ease-in-out;display:flex}.proton-MenuTrigger__button:disabled{cursor:not-allowed;opacity:.5}.proton-ui__theme--dark .proton-MenuTrigger__button:disabled:hover,.proton-MenuTrigger__button:disabled:hover{background:0 0}.proton-MenuTrigger__button:focus{outline:2px solid var(--proton-color__primary)}.proton-MenuTrigger__button:hover{background-color:var(--proton-control__hover-color)}.proton-MenuTrigger__menu-item .proton-Menu__item,.proton-MenuTrigger__menu-item{color:var(--proton-control__text-color);grid-template:"label kbd""desc kbd"/1fr auto;align-items:center;gap:.1em .5em;padding:.75em 1em;display:grid}.proton-MenuTrigger__menu-item .proton-Menu__item[data-has-submenu=true],.proton-MenuTrigger__menu-item[data-has-submenu=true]{grid-template-columns:unset;grid-template-areas:unset;justify-content:space-between;align-items:center;display:flex}.proton-MenuTrigger__label{grid-area:label}.proton-MenuTrigger__description{opacity:.7;grid-area:desc;font-size:.8em;line-height:1.1}.proton-MenuTrigger__chevron{padding-left:.5rem}.proton-Menu{--menu-bg-color:var(--proton-control__background-color);--menu-item-bg-color:var(--proton-control__background-color);letter-spacing:.05em;border-radius:var(--proton-control__border-radius);background:var(--menu-bg-color);border:1px solid var(--proton-control__border-color);min-width:100px;max-height:420px;color:var(--proton-control__text-color);box-shadow:0 0 3px var(--proton-control__shadow-color);margin:8px 0 0;padding:0;list-style:none;overflow:auto}.proton-Menu__item{background:var(--menu-item-bg-color);cursor:pointer;outline:none;justify-content:space-between;align-items:center;padding:8px 24px 8px 16px;transition:background-color .2s,opacity .2s,color .2s;display:flex}.proton-Menu__item[aria-checked=true]{--menu-item-bg-color:var(--proton-color__primary-light);color:var(--proton-color__primary);font-weight:600}.proton-Menu__item[aria-checked=true][data-highlighted=""]{--menu-item-bg-color:var(--proton-color__primary-light);opacity:.75}.proton-Menu__item[aria-selected=true]{--menu-item-bg-color:var(--proton-color__primary-light);color:var(--proton-color__primary);font-weight:600}.proton-Menu__item[aria-selected=true][data-highlighted=""]{--menu-item-bg-color:var(--proton-color__primary-light);opacity:.75}.proton-Menu__item[data-state=checked]{--menu-item-bg-color:var(--proton-color__primary-light);color:var(--proton-color__primary);font-weight:600}.proton-Menu__item[data-state=checked][data-highlighted=""]{--menu-item-bg-color:var(--proton-color__primary-light);opacity:.75}.proton-Menu__item[data-highlighted=""]{--menu-item-bg-color:var(--proton-control__hover-color)}.proton-Menu__item:hover{--menu-item-bg-color:var(--proton-control__hover-color);box-shadow:none}.proton-Menu__item[aria-disabled=true],.proton-Menu__item[data-disabled=true]{opacity:.5;cursor:not-allowed}.proton-ButtonWithSelect{align-items:stretch;display:flex;position:relative}.proton-ButtonWithSelect button:focus{outline:none}.proton-ButtonWithSelect__button{flex:var(--flex);align-items:stretch;display:flex}.proton-ButtonWithSelect__button button,.proton-ButtonWithSelect__button a{border-top-right-radius:0;border-bottom-right-radius:0;align-items:center;display:flex;position:relative;overflow:hidden}.proton-ButtonWithSelect__button button:after,.proton-ButtonWithSelect__button a:after{content:"";background-color:#00000026;width:1px;position:absolute;top:.3em;bottom:.3em;right:0}.proton-ButtonWithSelect__trigger{flex:0 0 var(--trigger-width);min-width:var(--trigger-width);max-width:var(--trigger-width)}.proton-ButtonWithSelect__trigger .proton-Button{border-top-left-radius:0;border-bottom-left-radius:0;width:100%;height:100%;padding:0}.proton-ButtonWithSelect__trigger-content{flex-direction:column;align-items:center;display:flex}.proton-Table{border-collapse:collapse;color:var(--proton-control__text-color);width:100%;font-weight:300}.proton-Table__caption{display:none}.proton-Table__header{cursor:default;letter-spacing:.1em;text-transform:uppercase;text-align:left;outline:none;padding:.4375rem .625rem;font-size:1rem;font-weight:500;line-height:1rem}.proton-Table__header--center{text-align:center}.proton-Table__header--right{text-align:right}.proton-Table__headerSortIcon{padding:0 .125rem}.proton-Table__row{cursor:default;outline:none}.proton-Table__rowGroup--header{border-bottom:1px solid #ccc}.proton-Table__row--showLines{border-top:1px solid #ccc}.proton-Table--clickable{cursor:pointer}.proton-Table__cell{vertical-align:middle;outline:none;padding:.4375rem .625rem}.proton-Table__cell--center{text-align:center}.proton-Table__cell--right{text-align:right}.proton-Elevation{border-radius:var(--proton-control__border-radius);background-color:var(--proton-control__background-color-light);-webkit-backdrop-filter:blur(15px);backdrop-filter:blur(15px);--tw-backdrop-blur:blur(15px);width:100%;height:100%;transition:background-color .2s ease-in-out,-webkit-backdrop-filter .2s ease-in-out,backdrop-filter .2s ease-in-out}@keyframes shimmer{0%{background-position:-300px 0}to{background-position:800px 0}}.proton-Tombstone{background-position:-300px 0;background-repeat:no-repeat;background-size:300px 100%;animation:1.5s linear infinite shimmer}.proton-ui__theme--light .proton-Tombstone{background-color:#d1d1d1;background-image:linear-gradient(-90deg,#d1d1d1,#b8b8b8,#d1d1d1)}.proton-ui__theme--dark .proton-Tombstone{background-color:#3c3c3c;background-image:linear-gradient(-90deg,#363636,#292727,#353535)}.proton-Tombstone--custom{background-image:linear-gradient(-90deg,var(--tombstone-custom-primary)0%,var(--tombstone-custom-secondary)50%,var(--tombstone-custom-primary)100%);background-color:var(--tombstone-custom-background)}.proton-DataTable{width:100%}.proton-DataTable__header-content{align-items:center;gap:.5rem;display:flex}.proton-DataTable__message-cell{position:absolute;left:0;right:0}.proton-DataTable__empty-cell{text-align:center;padding:3rem 1.5rem}.proton-DataTable__sort-button{cursor:pointer;border-radius:var(--proton-control__border-radius);border:none;max-height:.8rem;padding-bottom:1px;transition:background-color .15s ease-in-out,opacity .15s ease-in-out,transform .15s ease-in-out;display:inline-flex}.proton-DataTable__sort-button:hover{background-color:var(--proton-control__hover-color)}.proton-DataTable__sort-button[aria-label*=ascending]{align-items:flex-end;transform:rotateX(180deg)}.proton-Dialog{background-color:var(--proton-control__background-color);border-radius:var(--proton-control__border-radius);box-shadow:0 0 20px 0 var(--proton-control__shadow-color),0 0 4px 0 var(--proton-control__shadow-color);color:var(--proton-control__text-color);outline:none;padding:.65rem .85rem;font-weight:300}.proton-ui__theme--dark .proton-Dialog{background-color:var(--proton-control__background-color-light)}.proton-Dialog__header{color:var(--proton-control__title-color);margin-bottom:.3rem}.proton-Input{max-width:var(--container-width,100%);border-radius:var(--proton-control__border-radius);box-sizing:border-box;outline:1px solid var(--proton-control__border-color);background:var(--proton-control__background-color);width:100%;height:100%;color:var(--proton-control__text-color);border:none;flex:1;padding-left:.75rem;font-weight:400;transition:outline .1s ease-in-out,background-color .1s ease-in-out,color .1s ease-in-out,opacity .1s ease-in-out}.proton-ui__theme--dark .proton-Input{background-color:var(--proton-control__background-color-light)}.proton-Input:disabled{opacity:.6;cursor:not-allowed}.proton-Input:not(.proton-Input--error):focus{outline:2px solid var(--proton-color__primary)}.proton-Input:not(.proton-Input--error):focus-visible{outline:2px solid var(--proton-color__primary)}.proton-Input.proton-Input--error{outline:2px solid var(--proton-color__danger-medium)}.proton-Input__container{width:100%;height:100%}.proton-Input__container-inner{width:100%;height:100%;position:relative}.proton-Input__descriptor{z-index:1;justify-content:center;height:100%;position:absolute;top:50%;transform:translateY(-50%)}.proton-Input__prefix,.proton-Input__suffix{justify-content:center;align-items:center;min-width:32px;display:flex}.proton-Input__prefix{opacity:.5;cursor:text;left:0}.proton-Input__suffix{outline:none;right:0}.proton-Input__container-inner.proton-Input__has-prefix .proton-Input{padding-left:var(--prefix-width,32px)}.proton-Input__container-inner.proton-Input__has-suffix .proton-Input{padding-right:calc(.75rem + var(--suffix-width,44px))}.proton-Input__text{margin-bottom:4px;padding:.25rem 0}.proton-Input__error{color:var(--proton-color__danger-medium);opacity:1}.proton-Input__label-top{padding-top:1.375rem;padding-bottom:.5rem}.proton-Input__label{opacity:.55;color:var(--proton-control__text-color);pointer-events:none;transition:all .3s cubic-bezier(.4,0,.2,1);position:absolute;top:50%;left:16px;transform:translateY(-50%)}.proton-Input__label--filled,.proton-Input[value]:not([value=""])+.proton-Input__label,.proton-Input:focus+.proton-Input__label{color:var(--proton-color__primary);opacity:1;font-size:.75rem;transform:translateY(-140%)}.proton-Input:focus+.proton-Input__label{color:var(--proton-color__primary);opacity:1}.proton-CheckboxInput__container{align-items:center;gap:8px;display:flex}.proton-CheckboxInput__input{-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer;border:2px solid var(--proton-control__border-color);border-radius:var(--proton-control__border-radius);background-color:var(--proton-control__background-color);justify-content:center;align-items:center;width:18px;height:18px;transition:background-color .1s ease-in-out,border-color .1s ease-in-out,box-shadow .1s ease-in-out;display:flex;position:relative;margin:0!important}.proton-CheckboxInput__input--round{border-radius:50%}.proton-CheckboxInput__input:checked,.proton-CheckboxInput__input[data-state=checked]{background-color:var(--proton-color__primary);border-color:var(--proton-color__primary)}.proton-CheckboxInput__input:checked:after{content:"";border:solid var(--proton-color__white);border-width:0 2px 2px 0;width:5px;height:10px;position:absolute;top:48%;left:50%;transform:translate(-50%,-50%)rotate(45deg)}.proton-CheckboxInput__input--round:checked:after{background-color:var(--proton-color__white);border:none;border-radius:50%;width:8px;height:8px;top:50%;transform:translate(-50%,-50%)}.proton-CheckboxInput__input:indeterminate{background-color:var(--proton-color__primary);border-color:var(--proton-color__primary)}.proton-CheckboxInput__input:indeterminate:after{content:"";background-color:var(--proton-control__text-color);width:10px;height:2px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.proton-CheckboxInput__input:focus{box-shadow:0 0 0 2px var(--proton-color__primary);outline:none}.proton-CheckboxInput__input:focus-visible{box-shadow:0 0 0 2px var(--proton-color__primary);outline:none}.proton-CheckboxInput__input--error{border-color:var(--proton-color__danger-medium)}.proton-CheckboxInput__input--error:focus{box-shadow:0 0 0 2px var(--proton-color__danger-medium)}.proton-CheckboxInput__input--error:focus-visible{box-shadow:0 0 0 2px var(--proton-color__danger-medium)}.proton-CheckboxInput__input:disabled{opacity:.6;cursor:not-allowed}.proton-CheckboxInput__input:disabled:checked,.proton-CheckboxInput__input:disabled[data-state=checked]{background-color:var(--proton-control__border-color);border-color:var(--proton-control__border-color)}.proton-CheckboxInput__label{color:var(--proton-control__text-color);cursor:pointer;-webkit-user-select:none;user-select:none;font-weight:400}.proton-CheckboxInput--disabled .proton-CheckboxInput__label{opacity:.6;cursor:not-allowed}.proton-CheckboxInput__error{color:var(--proton-color__danger-medium);opacity:1;margin-top:4px}.proton-CheckboxRadioGroup{gap:12px;display:flex}.proton-CheckboxRadioGroup--vertical{flex-direction:column}.proton-CheckboxRadioGroup--horizontal{flex-flow:wrap}.proton-CheckboxRadioGroup__indicator{border:solid var(--proton-color__white);border-width:0 2px 2px 0;width:5px;height:10px;transform:rotate(45deg)}.proton-CheckboxInput__input--round .proton-CheckboxRadioGroup__indicator{background-color:var(--proton-color__white);border:none;border-radius:50%;height:5px;transform:none}.proton-CheckboxRadioGroup__description{color:var(--proton-control__text-color);opacity:.7;margin-left:26px;font-size:.875em}.proton-CopyInput-button{all:unset;cursor:pointer;color:var(--proton-control__text-color);text-transform:uppercase;letter-spacing:.2em;justify-content:center;align-items:center;width:100%;height:100%;padding:0 .875rem 0 1.4rem;font-size:.75rem;font-weight:600;line-height:1rem;transition:background-color .2s;display:flex}.proton-CopyInput-button svg{margin-bottom:.0625rem;transition:color .2s}.proton-CopyInput-button-text{margin:0 .5rem;transition:color .2s}.proton-CopyInput-button-text--copied,.proton-CopyInput-button--copied svg{color:var(--proton-color__primary)}.proton-Input:not(.proton-Input--error):focus{outline:1px solid var(--proton-control__border-color)}.proton-Input:not(.proton-Input--error):focus-visible{outline:1px solid var(--proton-control__border-color)}.proton-ui__theme--light .proton-CopyInput-button{border-left:1px solid var(--proton-control__border-color);align-items:center;height:100%;transition:background-color .2s;display:flex}.proton-CopyInput-button:hover{background-color:var(--proton-control__background-color-light)}.proton-Input[type=search]{border-radius:3.125rem}.proton-SearchInput__wrapper{width:100%}.proton-SearchInput__button{color:currentColor;cursor:pointer;opacity:1;background-color:#0000;border:none;transition:opacity .2s ease-in-out}.proton-SearchInput__button--hide{opacity:0}.proton-SearchInput__wrapper input[type=search]::-webkit-search-decoration{display:none}.proton-SearchInput__wrapper input[type=search]::-webkit-search-cancel-button{display:none}.proton-SearchInput__wrapper input[type=search]::-webkit-search-results-button{display:none}.proton-SearchInput__wrapper input[type=search]::-webkit-search-results-decoration{display:none}.proton-Modal{background-color:var(--proton-control__background-color);color:var(--proton-control__text-color);max-width:86vw;max-height:80vh;box-shadow:0 .0625rem .25rem -.0625rem var(--proton-control__shadow-color);opacity:1;border-radius:.5rem;padding:2rem;transition:opacity .2s ease-in-out;position:relative;overflow:visible}.proton-Modal__content{margin-top:.5rem}.proton-Modal--closing{opacity:0}@media (max-width:768px){.proton-Modal{border-radius:0;flex-direction:column;justify-content:center;align-items:center;width:100vw;max-width:100vw;height:100vh;max-height:100vh;padding:.25rem .5rem;display:flex}.proton-Modal>div{text-align:center;width:100%}}.proton-Modal__title{color:var(--proton-control__title-color);word-break:break-word;line-height:1.2}.proton-Modal__subtitle{color:var(--proton-control__text-color);line-height:1.5}.proton-Modal__body{word-break:break-word;margin:1rem 0;line-height:1.5}.proton-Modal__actions{justify-content:center;gap:1rem;margin-top:1rem;display:flex}.proton-Modal__close-button{cursor:pointer;color:var(--proton-control__text-color);background:0 0;border:none;border-radius:.25rem;padding:.5rem;font-size:2.2rem;font-weight:800;line-height:1;transition:opacity .15s;position:absolute;top:.375rem;right:.75rem}.proton-Modal__close-button:focus,.proton-Modal__close-button:hover{opacity:.8}.proton-ui__theme--dark .proton-Modal{background-color:var(--proton-control__background-color-light)}.proton-Popover{--slide:translateY(.8rem);transform-origin:var(--radix-popover-content-transform-origin);background-color:var(--proton-control__background-color);border-radius:var(--proton-control__border-radius);box-shadow:0 0 20px 0 var(--proton-control__shadow-color),0 0 4px 0 var(--proton-control__shadow-color);color:var(--proton-control__text-color);max-height:var(--radix-popover-content-available-height);outline:none;padding:.65rem .85rem;font-weight:300;animation:.2s cubic-bezier(.16,1,.3,1) popoverSlideAndFade}@keyframes popoverSlideAndFade{0%{opacity:0;transform:scale(.8)var(--slide)}to{opacity:1;transform:scale(1)translateY(0)}}.arrow{fill:var(--proton-control__background-color);width:.6rem;height:.4rem}.proton-Popover__constrained{width:var(--radix-popover-trigger-width)}.proton-Popover[data-side=top]{--slide:translateY(.8rem)}.proton-Popover[data-side=bottom]{--slide:translateY(-.8rem)}.proton-Popover[data-side=right]{--slide:translateX(-.8rem)}.proton-Popover[data-side=left]{--slide:translateX(.8rem)}.proton-Select{flex-direction:column;width:100%;margin:0;display:flex}.proton-Select__label{color:var(--proton-control__text-color);margin-bottom:.125rem}.proton-Select__trigger{color:var(--proton-control__text-color);font-size:inherit;border-radius:var(--proton-control__border-radius);flex:1;justify-content:space-between;align-items:center;width:100%;padding:.2rem .6rem .2rem 1rem;display:flex}.proton-Select__trigger--rounded{border-radius:3.125rem}button.proton-Select__trigger{letter-spacing:.05em;cursor:pointer;background:var(--proton-control__background-color);outline:1px solid var(--proton-control__border-color);border:none;font-weight:400;transition:outline .2s ease-in-out;position:relative}button.proton-Select__trigger:focus{outline:solid var(--proton-color__primary)2px;border:none}button.proton-Select__trigger:focus-visible{outline:solid var(--proton-color__primary)2px;border:none}.proton-Select__popover{padding-left:.25rem}.proton-Select__trigger_icon{color:var(--proton-control__text-color);width:.75em;height:.75em;margin-left:.8em;transition:transform .2s;position:relative}.proton-Select__trigger_icon svg{width:100%;height:100%;position:absolute;top:50%;left:0;transform:translateY(-50%)}.proton-Select__trigger_icon--flipped{transform:rotateX(180deg)}.proton-Select:hover{cursor:pointer}.proton-Select__trigger--disabled,.proton-Select__trigger--disabled:hover{opacity:.5;filter:none;cursor:not-allowed}.proton-Select__value{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.proton-Switch{flex-flow:column;row-gap:5px;display:flex}.proton-Switch__label{text-transform:uppercase;letter-spacing:.1em;color:var(--proton-control__text-color);font-size:.7em;font-weight:600}.proton-Switch__description{color:var(--proton-control__text-color);align-self:center;font-size:.9em}.proton-Switch__wrapper{column-gap:12px;display:flex}.proton-Switch__toggle{background-color:var(--proton-color__gray-light);cursor:pointer;border-radius:26px;flex-shrink:0;width:50px;height:26px;position:relative}.proton-Switch__slider{background-color:#fff;border-radius:22px;width:22px;height:22px;transition:left .2s;position:absolute;top:2px;left:2px}.proton-Switch--on .proton-Switch__toggle{background-color:var(--proton-color__primary)}.proton-Switch--on .proton-Switch__slider{left:26px}.proton-Switch--disabled{opacity:.4}.proton-Switch--disabled .proton-Switch__toggle{cursor:not-allowed}.proton-TextEllipsis{vertical-align:middle;color:var(--proton-control__text-color,inherit);font-family:inherit;font-size:inherit;line-height:inherit;width:100%;height:100%;display:inline-block;position:relative}.proton-TextEllipsis--single-line{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.proton-TextEllipsis--multi-line{text-overflow:ellipsis;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.proton-TextEmphasis{color:var(--proton-control__title-color);background-image:linear-gradient(0deg,#0000 0,#0000 15%,#ff713480 15%,#ff713480 35%,#0000 35%,#0000);padding:0 .05rem;font-style:normal;font-weight:700}.proton-TextEmphasis a{color:inherit;transition:color .15s}.proton-TextEmphasis a:hover{color:var(--proton-color__primary)}.proton-TextEmphasis--tooltip{background-image:linear-gradient(0deg,#0000 0,#0000 15%,#ff713480 25%,#ff713480 87%,#0000 80%,#0000);background-position:bottom;background-repeat:no-repeat;background-size:100% 35%;font-style:italic;font-weight:400;transition:background-size .3s,border-radius .3s}.proton-TextEmphasis--tooltip:hover{background-size:100% 100%;border-radius:.125rem}.proton-TextEmphasis--tooltip:not(:hover){transition-delay:.2s}.proton__Tooltip{background-color:var(--proton-control__background-color);color:var(--proton-control__text-color)}[data-radix-popper-content-wrapper]{z-index:10000!important}.proton__Tooltip-trigger{display:inherit}.proton__Tooltip-arrow{fill:var(--proton-control__background-color)}.proton__Tooltip[data-state=delayed-open],.proton__Tooltip[data-state=instant-open]{animation:.2s slide}.proton__Tooltip[data-state=closed]{animation:.2s reverse slide}@keyframes slide{0%{opacity:0;transform:var(--origin)}to{opacity:1;transform:translate(0)}}.proton-Waveform{--waveform-bar-color-dark:#ffffffe6;--waveform-bar-color-light:#000000b3;--waveform-disabled-color-dark:#fff3;--waveform-disabled-color-light:#0003;--waveform-animation-curve:cubic-bezier(.34,1.56,.64,1);--waveform-animation-duration:.4s;--waveform-bar-delay-multiplier:.7ms;--waveform-timestamp-padding:.25rem;--waveform-timestamp-font-size:.75rem;--waveform-timestamp-border-radius:.125rem;--waveform-hover-line-width:2px;flex-direction:row;align-items:center;width:100%;height:100%;display:flex;position:relative}.proton-Waveform__container{z-index:0;flex:1;align-items:center;width:100%;height:100%;display:flex;position:relative}.proton-Waveform__container[data-disabled=true]{cursor:not-allowed}.proton-Waveform__timestamp{pointer-events:none;border-radius:var(--waveform-timestamp-border-radius);padding:0 var(--waveform-timestamp-padding);font-size:var(--waveform-timestamp-font-size);z-index:1;background-color:#0009;position:absolute}.proton-ui__theme--light .proton-Waveform__timestamp{color:#000c;background-color:#ffffffe6;box-shadow:0 2px 2px #0000004d}.proton-Waveform__timestamp--left{left:1px}.proton-Waveform__timestamp--right{right:3px}.proton-Waveform__hover-line{width:var(--waveform-hover-line-width);background-color:#ffffff80;position:absolute;top:0;bottom:0;transform:translate(-50%)}.proton-ui__theme--light .proton-Waveform__hover-line{background-color:#00000080}.proton-Waveform__bar-wrapper{flex-direction:column;justify-content:center;align-items:center;height:100%;display:flex;position:relative}.proton-Waveform__bar{background-color:var(--waveform-bar-color-dark);transform-origin:50%;width:100%;height:0;transition:height var(--waveform-animation-duration)var(--waveform-animation-curve);position:relative}.proton-Waveform__bar.proton-Waveform__bar--visible{height:var(--target-height);transition-delay:calc(var(--index)*var(--waveform-bar-delay-multiplier))}.proton-Waveform__bar.proton-Waveform__bar--upper{transform-origin:bottom}.proton-Waveform__bar.proton-Waveform__bar--lower{transform-origin:top}.proton-ui__theme--light .proton-Waveform__bar{background-color:var(--waveform-bar-color-light)}.proton-Waveform__bar.proton-Waveform__bar--disabled{background-color:var(--waveform-disabled-color-dark)}.proton-ui__theme--light .proton-Waveform__bar.proton-Waveform__bar--disabled{background-color:var(--waveform-disabled-color-light)}.proton-Waveform__bar.proton-Waveform__bar--disabled.proton-Waveform__bar--played{background-color:var(--waveform-disabled-color-dark)}.proton-ui__theme--light .proton-Waveform__bar.proton-Waveform__bar--disabled.proton-Waveform__bar--played{background-color:var(--waveform-disabled-color-light)}.proton-Waveform__bar.proton-Waveform__bar--played{background-color:var(--proton-color__primary)}.proton-Waveform__bar--hover{height:var(--hover-height);z-index:10;background-color:color-mix(in srgb,var(--proton-color__primary)50%,transparent);mix-blend-mode:darken;width:100%;position:absolute;top:50%;transform:translateY(-50%)}.proton-ui__theme--light .proton-Waveform__bar--hover{background-color:color-mix(in srgb,var(--proton-color__primary)50%,white);mix-blend-mode:lighten}.proton-Waveform__bar-unavailable{pointer-events:none;text-align:center;z-index:10;color:#fff;background-color:#000000b3;border-radius:4px;padding:3px 6px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.proton-ui__theme--light .proton-Waveform__bar-unavailable{color:#000;background-color:#fff;box-shadow:0 5px 5px #0000004d}.proton-Waveform__active-region{pointer-events:none;z-index:1;border:1.5px solid #ffffffb3;border-radius:4px;position:absolute;top:0;bottom:0}.proton-ui__theme--light .proton-Waveform__active-region{border-color:#0000004d}
1
+ .proton-Button{--proton-button-edge-padding:1.05em;--proton-button__background-color:var(--proton-color__primary);--proton-button__text-color:var(--proton-color__white);color:var(--proton-button__text-color);border-radius:var(--proton-control__border-radius);padding:.45em var(--proton-button-edge-padding);letter-spacing:.05em;cursor:pointer;box-sizing:border-box;background-color:var(--proton-button__background-color);border:0;align-items:center;transition:filter .2s,background-color .2s,outline .2s;display:inline-flex;position:relative}.proton-Button__icon-decorator{justify-content:center;align-items:center;padding-right:.3em;line-height:1;display:flex;position:relative}.proton-Button__icon-decorator--fullWidth{position:absolute}.proton-Button__text{box-sizing:border-box;text-align:center;white-space:nowrap;text-overflow:ellipsis;margin:auto;line-height:normal;overflow:hidden}.proton-Button:hover{filter:brightness(1.16);cursor:pointer}.proton-Button--primary{--proton-button__background-color:var(--proton-color__primary);--proton-button__text-color:var(--proton-color__white)}.proton-Button--secondary{--proton-button__background-color:var(--proton-color__gray-light);--proton-button__text-color:var(--proton-control__text-color)}.proton-ui__theme--dark .proton-Button--secondary{--proton-button__background-color:var(--proton-control__background-color-light)}.proton-Button--danger{--proton-button__background-color:var(--proton-color__danger-medium)}.proton-Button--success{--proton-button__background-color:var(--proton-color__success-medium)}.proton-Button--translucent{--proton-button__background-color:var(--proton-control__background-color-light);--proton-button__text-color:var(--proton-control__text-color)}.proton-Button--disabled,.proton-Button--disabled:hover{opacity:.5;filter:none;cursor:not-allowed}.proton-Button:focus{outline:2px solid var(--proton-color__primary)}.proton-Button:focus-visible{outline:2px solid var(--proton-color__primary)}.proton-Button:active{filter:brightness(1.3);transition:filter .1s ease-out}.proton-Button--fullWidth{width:100%}.proton-Button--small{padding:.2rem .6rem;font-size:.875rem}.proton-Button--medium{padding:.4rem 1rem;font-size:1rem}.proton-Button--large{padding:.6rem 1.6rem;font-size:1.2rem}.proton-Button--xlarge{padding:1rem 2rem .8rem;font-size:1.3rem}.proton-Button--2xlarge{padding:1rem 2.6rem;font-size:1.6rem}.proton-Button--fullWidth .proton-Button__text{transform:translate(calc(var(--proton-button-text-shift)))}.proton-ScreenOverlay__background{-webkit-backdrop-filter:blur(24px)brightness(75%);backdrop-filter:blur(24px)brightness(75%);background-color:#000c;justify-content:center;align-items:center;width:100%;height:100%;display:flex;position:fixed;top:0;left:0}.proton-ScreenOverlay__z-index{z-index:10000}.proton-ScreenOverlay__image{object-fit:cover;width:100vw;height:100vh;position:absolute}.proton-ScreenOverlay__blur{-webkit-backdrop-filter:blur(24px)brightness(75%);backdrop-filter:blur(24px)brightness(75%);filter:brightness(46%);position:absolute;top:0;bottom:0;left:0;right:0}@keyframes fadeInBackground{0%{-webkit-backdrop-filter:blur(1px);backdrop-filter:blur(1px);background:#0000001a}to{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#000c}}@keyframes fadeOutBackground{0%{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#000c}to{-webkit-backdrop-filter:blur();backdrop-filter:blur();background:0 0}}.proton-ScreenOverlay__fade-in{animation:.2s ease-in-out forwards fadeInBackground}.proton-ScreenOverlay__fade-out{animation:.2s ease-in-out forwards fadeOutBackground}.proton-ActionMenu__wrapper{z-index:10;width:100%;max-height:100vh;position:fixed;bottom:0;left:0}.proton-ActionMenu__background-wrapper{opacity:0;transition:opacity .3s cubic-bezier(.34,1.56,.64,1);overflow-y:scroll}.proton-ActionMenu__card{background:var(--proton-control__background-color);color:var(--proton-control__text-color);z-index:1;border-radius:.875rem .875rem 0 0;flex-direction:column;height:0;transition:height .3s cubic-bezier(.34,1.56,.64,1);display:flex;position:relative;overflow:hidden;box-shadow:0 0 4px #0000001a,0 0 20px #00000026}.proton-ActionMenu__cancel-button{margin:0 .75rem 1rem}.proton-ActionMenu__content{padding:.75rem .75rem 0}.proton-ActionMenu__menu>[data-radix-popper-content-wrapper]{width:100%!important;position:absolute!important;top:0!important;transform:none!important}.proton-ActionMenu__list{flex-direction:column;margin-bottom:.625rem;display:flex}.proton-ActionMenu__item{color:inherit;cursor:pointer;justify-content:space-between;align-items:center;padding:.75rem .5rem .75rem .75rem;transition:filter .2s,background-color .2s,color .2s;display:flex}.proton-ActionMenu__item:hover,.proton-ActionMenu__item:focus{background-color:var(--proton-control__hover-color);border:none;outline:none}.proton-ActionMenu__item[aria-checked=true]:hover,.proton-ActionMenu__item[aria-checked=true]:focus{filter:brightness(1.15)}.proton-ActionMenu__item[aria-checked=true]{background-color:var(--proton-control__interactive-color);color:var(--proton-color__primary)}.proton-ui__theme--dark .proton-ActionMenu__item[aria-checked=true]{background-color:var(--proton-color__primary);color:var(--proton-control__text-color)}.proton-ActionMenu__item[aria-disabled=true],.proton-ActionMenu__list[aria-disabled=true],.proton-ActionMenu__item[aria-disabled=true]:hover{opacity:.5;cursor:not-allowed;background-color:#0000}.proton-ActionMenu__list[aria-disabled=true] .proton-ActionMenu__item{pointer-events:none}.proton-ActionMenu__title{text-align:center;width:100%;font-weight:600}.proton-ActionMenu__back-button{cursor:pointer;z-index:1;align-items:center;width:25%;height:100%;padding-left:.35rem;display:flex;position:absolute;left:0}.proton-ActionMenu__back-button:hover,.proton-ActionMenu__cancel-button:focus{background-color:var(--proton-control__hover-color);outline:none}.proton-ActionMenu__back-button:focus-visible{background-color:var(--proton-control__hover-color);outline:none}.proton-ActionMenu__cancel-button:focus-visible{background-color:var(--proton-control__hover-color);outline:none}.proton-ActionMenu__back-button-container{align-items:center;height:3rem;display:flex;position:relative}.proton-ActionMenu__description{color:var(--proton-control__text-color);opacity:.7;font-size:.875rem}.proton-ActionMenu__item-label{font-weight:500}.proton-ui__theme--dark .proton-ActionMenu__cancel-button button{--proton-button__background-color:var(--proton-control__background-color-light)}.proton-Badge{letter-spacing:.2em;text-align:center;text-transform:uppercase;white-space:nowrap;height:1.6rem;color:#666;background-color:#f2f2f2;border-radius:10rem;padding-left:1rem;padding-right:calc(1rem - .2em);font-size:1rem;font-weight:500;line-height:1.65rem;display:inline-block}.proton-ui__theme--dark .proton-Badge:not([class*=proton-Badge--]),.proton-ui__theme--dark .proton-Badge--secondary{background-color:var(--proton-control__background-color-light);color:var(--proton-control__text-color)}.proton-Badge--primary{background-color:var(--proton-color__primary);color:var(--proton-color__white)}.proton-Badge--success{background-color:var(--proton-color__success-super-light);color:var(--proton-color__success-dark)}.proton-Badge--warning{background-color:var(--proton-color__warning-super-light);color:var(--proton-color__warning-dark)}.proton-Badge--danger{background-color:var(--proton-color__danger-super-light);color:var(--proton-color__danger-dark)}.proton-Badge--transparent{color:#666;background-color:#0000}.proton-Banner{background-color:var(--banner-bg);-webkit-backdrop-filter:var(--banner-blur);backdrop-filter:var(--banner-blur);--tw-backdrop-blur:var(--banner-blur);--banner-bg:var(--proton-control__background-color-light);--banner-title:var(--proton-color__gray-dark);--banner-content:var(--proton-color__gray-medium);--banner-icon:var(--proton-color__gray-medium-light);--banner-blur:none;margin:0}:where(.proton-ui__theme--dark) .proton-Banner{--banner-bg:var(--proton-control__background-color-light);--banner-blur:blur(15px);--banner-title:var(--proton-control__text-color);--banner-content:var(--proton-control__text-color);--banner-icon:var(--proton-control__text-color)}.proton-Banner--warning{--banner-bg:var(--proton-color__warning-super-light);--banner-title:var(--proton-color__warning-dark);--banner-content:var(--proton-color__warning-medium);--banner-icon:var(--proton-color__warning-light)}.proton-Banner--success{--banner-bg:var(--proton-color__success-super-light);--banner-title:var(--proton-color__success-dark);--banner-content:var(--proton-color__success-medium);--banner-icon:var(--proton-color__success-light)}.proton-Banner--danger{--banner-bg:var(--proton-color__danger-super-light);--banner-title:var(--proton-color__danger-dark);--banner-content:var(--proton-color__danger-medium);--banner-icon:var(--proton-color__danger-light)}.proton-Banner--rounded{border-radius:.375rem}.proton-Banner__wrapper{align-items:flex-start;padding:2rem;display:flex}.proton-Banner__wrapper--compact{padding:1rem}.proton-Banner__content-wrapper{min-width:0;color:var(--banner-content);flex:1}.proton-Banner__container{padding:0 .625rem}.proton-Banner__title{letter-spacing:.01rem;color:var(--banner-title);line-height:1.2rem}.proton-Banner__content{color:var(--banner-content);margin:.375rem 0 0}.proton-Banner__icon{fill:var(--banner-icon);height:20px}.proton-Banner__actions{gap:.5rem;margin:.375rem 0 0;display:flex}@media (min-width:768px){.proton-Banner__container{grid-gap:.5rem;grid-template-columns:1fr auto;display:grid}.proton-Banner__title,.proton-Banner__content{grid-column:1;margin:auto 0}.proton-Banner__container:not(:has(.proton-Banner__content)){grid-gap:0px;grid-template-rows:1fr}.proton-Banner__container>div:last-child{grid-area:1/2/span 2;max-height:32px;margin:auto 0}.proton-Banner__actions{margin:0 0 0 .75rem}.proton-Banner__wrapper:not(:has(.proton-Banner__content)){align-items:center}}.proton-ButtonGroup{border:1px solid var(--proton-color__gray-light);border-radius:.25rem;font-weight:400;display:flex;overflow:hidden}.proton-ButtonGroup__option{background-color:var(--proton-color__gray-super-light);cursor:pointer;border-left:1px solid var(--proton-color__gray-light);color:var(--proton-color__gray-dark);text-align:center;border-radius:0;flex:1;padding:.5em 1em}.proton-ButtonGroup__option:first-child{border-left:0}.proton-ButtonGroup__option--selected{background-color:var(--proton-color__white);color:var(--proton-color__primary);z-index:2;cursor:default;border-radius:inherit;box-shadow:0 0 .375rem #00000026}.proton-ButtonGroup__option--selected+.proton-ButtonGroup__option{border-left:1px solid #0000}.proton-MenuTrigger__menu-header{text-transform:uppercase;color:var(--proton-control__text-color);background-color:var(--proton-control__background-color-light);letter-spacing:.1em;padding:.3125rem 1rem .25rem;font-size:.8em;font-weight:700}.proton-MenuTrigger__button{cursor:pointer;color:var(--proton-control__text-color);background:0 0;border:none;border-radius:.25rem;justify-content:center;align-items:center;padding:.25rem;transition:background-color .2s ease-in-out;display:flex}.proton-MenuTrigger__button:disabled{cursor:not-allowed;opacity:.5}.proton-ui__theme--dark .proton-MenuTrigger__button:disabled:hover,.proton-MenuTrigger__button:disabled:hover{background:0 0}.proton-MenuTrigger__button:focus{outline:2px solid var(--proton-color__primary)}.proton-MenuTrigger__button:hover{background-color:var(--proton-control__hover-color)}.proton-MenuTrigger__menu-item .proton-Menu__item,.proton-MenuTrigger__menu-item{color:var(--proton-control__text-color);grid-template:"label kbd""desc kbd"/1fr auto;align-items:center;gap:.1em .5em;padding:.75em 1em;display:grid}.proton-MenuTrigger__menu-item .proton-Menu__item[data-has-submenu=true],.proton-MenuTrigger__menu-item[data-has-submenu=true]{grid-template-columns:unset;grid-template-areas:unset;justify-content:space-between;align-items:center;display:flex}.proton-MenuTrigger__label{grid-area:label}.proton-MenuTrigger__description{opacity:.7;grid-area:desc;font-size:.8em;line-height:1.1}.proton-MenuTrigger__chevron{padding-left:.5rem}.proton-Menu{--menu-bg-color:var(--proton-control__background-color);--menu-item-bg-color:var(--proton-control__background-color);letter-spacing:.05em;border-radius:var(--proton-control__border-radius);background:var(--menu-bg-color);border:1px solid var(--proton-control__border-color);min-width:100px;max-height:420px;color:var(--proton-control__text-color);box-shadow:0 0 3px var(--proton-control__shadow-color);margin:8px 0 0;padding:0;list-style:none;overflow:auto}.proton-Menu__item{background:var(--menu-item-bg-color);cursor:pointer;outline:none;justify-content:space-between;align-items:center;padding:8px 24px 8px 16px;transition:background-color .2s,opacity .2s,color .2s;display:flex}.proton-Menu__item[aria-checked=true]{--menu-item-bg-color:var(--proton-color__primary-light);color:var(--proton-color__primary);font-weight:600}.proton-Menu__item[aria-checked=true][data-highlighted=""]{--menu-item-bg-color:var(--proton-color__primary-light);opacity:.75}.proton-Menu__item[aria-selected=true]{--menu-item-bg-color:var(--proton-color__primary-light);color:var(--proton-color__primary);font-weight:600}.proton-Menu__item[aria-selected=true][data-highlighted=""]{--menu-item-bg-color:var(--proton-color__primary-light);opacity:.75}.proton-Menu__item[data-state=checked]{--menu-item-bg-color:var(--proton-color__primary-light);color:var(--proton-color__primary);font-weight:600}.proton-Menu__item[data-state=checked][data-highlighted=""]{--menu-item-bg-color:var(--proton-color__primary-light);opacity:.75}.proton-Menu__item[data-highlighted=""]{--menu-item-bg-color:var(--proton-control__hover-color)}.proton-Menu__item:hover{--menu-item-bg-color:var(--proton-control__hover-color);box-shadow:none}.proton-Menu__item[aria-disabled=true],.proton-Menu__item[data-disabled=true]{opacity:.5;cursor:not-allowed}.proton-ButtonWithSelect{align-items:stretch;display:flex;position:relative}.proton-ButtonWithSelect button:focus{outline:none}.proton-ButtonWithSelect__button{flex:var(--flex);align-items:stretch;display:flex}.proton-ButtonWithSelect__button button,.proton-ButtonWithSelect__button a{border-top-right-radius:0;border-bottom-right-radius:0;align-items:center;display:flex;position:relative;overflow:hidden}.proton-ButtonWithSelect__button button:after,.proton-ButtonWithSelect__button a:after{content:"";background-color:#00000026;width:1px;position:absolute;top:.3em;bottom:.3em;right:0}.proton-ButtonWithSelect__trigger{flex:0 0 var(--trigger-width);min-width:var(--trigger-width);max-width:var(--trigger-width)}.proton-ButtonWithSelect__trigger .proton-Button{border-top-left-radius:0;border-bottom-left-radius:0;width:100%;height:100%;padding:0}.proton-ButtonWithSelect__trigger-content{flex-direction:column;align-items:center;display:flex}.proton-CheckboxInput__container{align-items:center;gap:8px;display:flex}.proton-CheckboxInput__input{-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer;border:2px solid var(--proton-control__border-color);border-radius:var(--proton-control__border-radius);background-color:var(--proton-control__background-color);justify-content:center;align-items:center;width:18px;height:18px;transition:background-color .1s ease-in-out,border-color .1s ease-in-out,box-shadow .1s ease-in-out;display:flex;position:relative;margin:0!important}.proton-CheckboxInput__input--round{border-radius:50%}.proton-CheckboxInput__input:checked,.proton-CheckboxInput__input[data-state=checked]{background-color:var(--proton-color__primary);border-color:var(--proton-color__primary)}.proton-CheckboxInput__input:checked:after{content:"";border:solid var(--proton-color__white);border-width:0 2px 2px 0;width:5px;height:10px;position:absolute;top:48%;left:50%;transform:translate(-50%,-50%)rotate(45deg)}.proton-CheckboxInput__input--round:checked:after{background-color:var(--proton-color__white);border:none;border-radius:50%;width:8px;height:8px;top:50%;transform:translate(-50%,-50%)}.proton-CheckboxInput__input:indeterminate{background-color:var(--proton-color__primary);border-color:var(--proton-color__primary)}.proton-CheckboxInput__input:indeterminate:after{content:"";background-color:var(--proton-control__text-color);width:10px;height:2px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.proton-CheckboxInput__input:focus{box-shadow:0 0 0 2px var(--proton-color__primary);outline:none}.proton-CheckboxInput__input:focus-visible{box-shadow:0 0 0 2px var(--proton-color__primary);outline:none}.proton-CheckboxInput__input--error{border-color:var(--proton-color__danger-medium)}.proton-CheckboxInput__input--error:focus{box-shadow:0 0 0 2px var(--proton-color__danger-medium)}.proton-CheckboxInput__input--error:focus-visible{box-shadow:0 0 0 2px var(--proton-color__danger-medium)}.proton-CheckboxInput__input:disabled{opacity:.6;cursor:not-allowed}.proton-CheckboxInput__input:disabled:checked,.proton-CheckboxInput__input:disabled[data-state=checked]{background-color:var(--proton-control__border-color);border-color:var(--proton-control__border-color)}.proton-CheckboxInput__label{color:var(--proton-control__text-color);cursor:pointer;-webkit-user-select:none;user-select:none;font-weight:400}.proton-CheckboxInput--disabled .proton-CheckboxInput__label{opacity:.6;cursor:not-allowed}.proton-CheckboxInput__error{color:var(--proton-color__danger-medium);opacity:1;margin-top:4px}.proton-CheckboxRadioGroup{gap:12px;display:flex}.proton-CheckboxRadioGroup--vertical{flex-direction:column}.proton-CheckboxRadioGroup--horizontal{flex-flow:wrap}.proton-CheckboxRadioGroup__indicator{border:solid var(--proton-color__white);border-width:0 2px 2px 0;width:5px;height:10px;transform:rotate(45deg)}.proton-CheckboxInput__input--round .proton-CheckboxRadioGroup__indicator{background-color:var(--proton-color__white);border:none;border-radius:50%;height:5px;transform:none}.proton-CheckboxRadioGroup__description{color:var(--proton-control__text-color);opacity:.7;margin-left:26px;font-size:.875em}.proton-Table{border-collapse:collapse;color:var(--proton-control__text-color);width:100%;font-weight:300}.proton-Table__caption{display:none}.proton-Table__header{cursor:default;letter-spacing:.1em;text-transform:uppercase;text-align:left;outline:none;padding:.4375rem .625rem;font-size:1rem;font-weight:500;line-height:1rem}.proton-Table__header--center{text-align:center}.proton-Table__header--right{text-align:right}.proton-Table__headerSortIcon{padding:0 .125rem}.proton-Table__row{cursor:default;outline:none}.proton-Table__rowGroup--header{border-bottom:1px solid #ccc}.proton-Table__row--showLines{border-top:1px solid #ccc}.proton-Table--clickable{cursor:pointer}.proton-Table__cell{vertical-align:middle;outline:none;padding:.4375rem .625rem}.proton-Table__cell--center{text-align:center}.proton-Table__cell--right{text-align:right}.proton-Elevation{border-radius:var(--proton-control__border-radius);background-color:var(--proton-control__background-color-light);-webkit-backdrop-filter:blur(15px);backdrop-filter:blur(15px);--tw-backdrop-blur:blur(15px);width:100%;height:100%;transition:background-color .2s ease-in-out,-webkit-backdrop-filter .2s ease-in-out,backdrop-filter .2s ease-in-out}@keyframes shimmer{0%{background-position:-300px 0}to{background-position:800px 0}}.proton-Tombstone{background-position:-300px 0;background-repeat:no-repeat;background-size:300px 100%;animation:1.5s linear infinite shimmer}.proton-ui__theme--light .proton-Tombstone{background-color:#d1d1d1;background-image:linear-gradient(-90deg,#d1d1d1,#b8b8b8,#d1d1d1)}.proton-ui__theme--dark .proton-Tombstone{background-color:#3c3c3c;background-image:linear-gradient(-90deg,#363636,#292727,#353535)}.proton-Tombstone--custom{background-image:linear-gradient(-90deg,var(--tombstone-custom-primary)0%,var(--tombstone-custom-secondary)50%,var(--tombstone-custom-primary)100%);background-color:var(--tombstone-custom-background)}.proton-DataTable{width:100%}.proton-DataTable__header-content{align-items:center;gap:.5rem;display:flex}.proton-DataTable__message-cell{position:absolute;left:0;right:0}.proton-DataTable__empty-cell{text-align:center;padding:3rem 1.5rem}.proton-DataTable__sort-button{cursor:pointer;border-radius:var(--proton-control__border-radius);border:none;max-height:.8rem;padding-bottom:1px;transition:background-color .15s ease-in-out,opacity .15s ease-in-out,transform .15s ease-in-out;display:inline-flex}.proton-DataTable__sort-button:hover{background-color:var(--proton-control__hover-color)}.proton-DataTable__sort-button[aria-label*=ascending]{align-items:flex-end;transform:rotateX(180deg)}.proton-Input{max-width:var(--container-width,100%);border-radius:var(--proton-control__border-radius);box-sizing:border-box;outline:1px solid var(--proton-control__border-color);background:var(--proton-control__background-color);width:100%;height:100%;color:var(--proton-control__text-color);border:none;flex:1;padding-left:.75rem;font-weight:400;transition:outline .1s ease-in-out,background-color .1s ease-in-out,color .1s ease-in-out,opacity .1s ease-in-out}.proton-ui__theme--dark .proton-Input{background-color:var(--proton-control__background-color-light)}.proton-Input:disabled{opacity:.6;cursor:not-allowed}.proton-Input:not(.proton-Input--error):focus{outline:2px solid var(--proton-color__primary)}.proton-Input:not(.proton-Input--error):focus-visible{outline:2px solid var(--proton-color__primary)}.proton-Input.proton-Input--error{outline:2px solid var(--proton-color__danger-medium)}.proton-Input__container{width:100%;height:100%}.proton-Input__container-inner{width:100%;height:100%;position:relative}.proton-Input__descriptor{z-index:1;justify-content:center;height:100%;position:absolute;top:50%;transform:translateY(-50%)}.proton-Input__prefix,.proton-Input__suffix{justify-content:center;align-items:center;min-width:32px;display:flex}.proton-Input__prefix{opacity:.5;cursor:text;left:0}.proton-Input__suffix{outline:none;right:0}.proton-Input__container-inner.proton-Input__has-prefix .proton-Input{padding-left:var(--prefix-width,32px)}.proton-Input__container-inner.proton-Input__has-suffix .proton-Input{padding-right:calc(.75rem + var(--suffix-width,44px))}.proton-Input__text{margin-bottom:4px;padding:.25rem 0}.proton-Input__error{color:var(--proton-color__danger-medium);opacity:1}.proton-Input__label-top{padding-top:1.375rem;padding-bottom:.5rem}.proton-Input__label{opacity:.55;color:var(--proton-control__text-color);pointer-events:none;transition:all .3s cubic-bezier(.4,0,.2,1);position:absolute;top:50%;left:16px;transform:translateY(-50%)}.proton-Input__label--filled,.proton-Input[value]:not([value=""])+.proton-Input__label,.proton-Input:focus+.proton-Input__label{color:var(--proton-color__primary);opacity:1;font-size:.75rem;transform:translateY(-140%)}.proton-Input:focus+.proton-Input__label{color:var(--proton-color__primary);opacity:1}.proton-CopyInput-button{all:unset;cursor:pointer;color:var(--proton-control__text-color);text-transform:uppercase;letter-spacing:.2em;justify-content:center;align-items:center;width:100%;height:100%;padding:0 .875rem 0 1.4rem;font-size:.75rem;font-weight:600;line-height:1rem;transition:background-color .2s;display:flex}.proton-CopyInput-button svg{margin-bottom:.0625rem;transition:color .2s}.proton-CopyInput-button-text{margin:0 .5rem;transition:color .2s}.proton-CopyInput-button-text--copied,.proton-CopyInput-button--copied svg{color:var(--proton-color__primary)}.proton-Input:not(.proton-Input--error):focus{outline:1px solid var(--proton-control__border-color)}.proton-Input:not(.proton-Input--error):focus-visible{outline:1px solid var(--proton-control__border-color)}.proton-ui__theme--light .proton-CopyInput-button{border-left:1px solid var(--proton-control__border-color);align-items:center;height:100%;transition:background-color .2s;display:flex}.proton-CopyInput-button:hover{background-color:var(--proton-control__background-color-light)}.proton-Dialog{background-color:var(--proton-control__background-color);border-radius:var(--proton-control__border-radius);box-shadow:0 0 20px 0 var(--proton-control__shadow-color),0 0 4px 0 var(--proton-control__shadow-color);color:var(--proton-control__text-color);outline:none;padding:.65rem .85rem;font-weight:300}.proton-ui__theme--dark .proton-Dialog{background-color:var(--proton-control__background-color-light)}.proton-Dialog__header{color:var(--proton-control__title-color);margin-bottom:.3rem}.proton-OTPInput__digits{justify-content:center;align-items:center;display:flex}.proton-OTPInput__digit{color:var(--proton-control__text-color);border:1px solid var(--proton-color__gray-medium-light);text-align:center;box-sizing:border-box;background:0 0;border-radius:.625rem;max-width:2.375rem;min-height:3.125rem;margin:0 .25rem;font-size:1.25rem;transition:box-shadow 60ms ease-in-out,border-color .1s ease-in-out}@media (max-width:320px){.proton-OTPInput__digit{max-width:2.8125rem}}.proton-OTPInput__digit:focus{box-shadow:inset 0 0 4px var(--proton-color__primary);outline:none}.proton-OTPInput__digit:disabled{opacity:.8;cursor:not-allowed}.proton-OTPInput__digit--error,.proton-OTPInput__digit--error:focus{border-color:var(--proton-color__danger-medium);box-shadow:inset 0 0 4px var(--proton-color__danger-medium)}.proton-OTPInput__separator{color:var(--proton-color__gray-medium-light)}.proton-Modal{background-color:var(--proton-control__background-color);color:var(--proton-control__text-color);max-width:86vw;max-height:80vh;box-shadow:0 .0625rem .25rem -.0625rem var(--proton-control__shadow-color);opacity:1;border-radius:.5rem;padding:2rem;transition:opacity .2s ease-in-out;position:relative;overflow:visible}.proton-Modal__content{margin-top:.5rem}.proton-Modal--closing{opacity:0}@media (max-width:768px){.proton-Modal{border-radius:0;flex-direction:column;justify-content:center;align-items:center;width:100vw;max-width:100vw;height:100vh;max-height:100vh;padding:.25rem .5rem;display:flex}.proton-Modal>div{text-align:center;width:100%}}.proton-Modal__title{color:var(--proton-control__title-color);word-break:break-word;line-height:1.2}.proton-Modal__subtitle{color:var(--proton-control__text-color);line-height:1.5}.proton-Modal__body{word-break:break-word;margin:1rem 0;line-height:1.5}.proton-Modal__actions{justify-content:center;gap:1rem;margin-top:1rem;display:flex}.proton-Modal__close-button{cursor:pointer;color:var(--proton-control__text-color);background:0 0;border:none;border-radius:.25rem;padding:.5rem;font-size:2.2rem;font-weight:800;line-height:1;transition:opacity .15s;position:absolute;top:.375rem;right:.75rem}.proton-Modal__close-button:focus,.proton-Modal__close-button:hover{opacity:.8}.proton-ui__theme--dark .proton-Modal{background-color:var(--proton-control__background-color-light)}.proton-Popover{--slide:translateY(.8rem);transform-origin:var(--radix-popover-content-transform-origin);background-color:var(--proton-control__background-color);border-radius:var(--proton-control__border-radius);box-shadow:0 0 20px 0 var(--proton-control__shadow-color),0 0 4px 0 var(--proton-control__shadow-color);color:var(--proton-control__text-color);max-height:var(--radix-popover-content-available-height);outline:none;padding:.65rem .85rem;font-weight:300;animation:.2s cubic-bezier(.16,1,.3,1) popoverSlideAndFade}@keyframes popoverSlideAndFade{0%{opacity:0;transform:scale(.8)var(--slide)}to{opacity:1;transform:scale(1)translateY(0)}}.arrow{fill:var(--proton-control__background-color);width:.6rem;height:.4rem}.proton-Popover__constrained{width:var(--radix-popover-trigger-width)}.proton-Popover[data-side=top]{--slide:translateY(.8rem)}.proton-Popover[data-side=bottom]{--slide:translateY(-.8rem)}.proton-Popover[data-side=right]{--slide:translateX(-.8rem)}.proton-Popover[data-side=left]{--slide:translateX(.8rem)}.proton-Input[type=search]{border-radius:3.125rem}.proton-SearchInput__wrapper{width:100%}.proton-SearchInput__button{color:currentColor;cursor:pointer;opacity:1;background-color:#0000;border:none;transition:opacity .2s ease-in-out}.proton-SearchInput__button--hide{opacity:0}.proton-SearchInput__wrapper input[type=search]::-webkit-search-decoration{display:none}.proton-SearchInput__wrapper input[type=search]::-webkit-search-cancel-button{display:none}.proton-SearchInput__wrapper input[type=search]::-webkit-search-results-button{display:none}.proton-SearchInput__wrapper input[type=search]::-webkit-search-results-decoration{display:none}.proton-Select{flex-direction:column;width:100%;margin:0;display:flex}.proton-Select__label{color:var(--proton-control__text-color);margin-bottom:.125rem}.proton-Select__trigger{color:var(--proton-control__text-color);font-size:inherit;border-radius:var(--proton-control__border-radius);flex:1;justify-content:space-between;align-items:center;width:100%;padding:.2rem .6rem .2rem 1rem;display:flex}.proton-Select__trigger--rounded{border-radius:3.125rem}button.proton-Select__trigger{letter-spacing:.05em;cursor:pointer;background:var(--proton-control__background-color);outline:1px solid var(--proton-control__border-color);border:none;font-weight:400;transition:outline .2s ease-in-out;position:relative}button.proton-Select__trigger:focus{outline:solid var(--proton-color__primary)2px;border:none}button.proton-Select__trigger:focus-visible{outline:solid var(--proton-color__primary)2px;border:none}.proton-Select__popover{padding-left:.25rem}.proton-Select__trigger_icon{color:var(--proton-control__text-color);width:.75em;height:.75em;margin-left:.8em;transition:transform .2s;position:relative}.proton-Select__trigger_icon svg{width:100%;height:100%;position:absolute;top:50%;left:0;transform:translateY(-50%)}.proton-Select__trigger_icon--flipped{transform:rotateX(180deg)}.proton-Select:hover{cursor:pointer}.proton-Select__trigger--disabled,.proton-Select__trigger--disabled:hover{opacity:.5;filter:none;cursor:not-allowed}.proton-Select__value{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.proton-Switch{flex-flow:column;row-gap:5px;display:flex}.proton-Switch__label{text-transform:uppercase;letter-spacing:.1em;color:var(--proton-control__text-color);font-size:.7em;font-weight:600}.proton-Switch__description{color:var(--proton-control__text-color);align-self:center;font-size:.9em}.proton-Switch__wrapper{column-gap:12px;display:flex}.proton-Switch__toggle{background-color:var(--proton-color__gray-light);cursor:pointer;border-radius:26px;flex-shrink:0;width:50px;height:26px;position:relative}.proton-Switch__slider{background-color:#fff;border-radius:22px;width:22px;height:22px;transition:left .2s;position:absolute;top:2px;left:2px}.proton-Switch--on .proton-Switch__toggle{background-color:var(--proton-color__primary)}.proton-Switch--on .proton-Switch__slider{left:26px}.proton-Switch--disabled{opacity:.4}.proton-Switch--disabled .proton-Switch__toggle{cursor:not-allowed}.proton-TextEllipsis{vertical-align:middle;color:var(--proton-control__text-color,inherit);font-family:inherit;font-size:inherit;line-height:inherit;width:100%;height:100%;display:inline-block;position:relative}.proton-TextEllipsis--single-line{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.proton-TextEllipsis--multi-line{text-overflow:ellipsis;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.proton-TextEmphasis{color:var(--proton-control__title-color);background-image:linear-gradient(0deg,#0000 0,#0000 15%,#ff713480 15%,#ff713480 35%,#0000 35%,#0000);padding:0 .05rem;font-style:normal;font-weight:700}.proton-TextEmphasis a{color:inherit;transition:color .15s}.proton-TextEmphasis a:hover{color:var(--proton-color__primary)}.proton-TextEmphasis--tooltip{background-image:linear-gradient(0deg,#0000 0,#0000 15%,#ff713480 25%,#ff713480 87%,#0000 80%,#0000);background-position:bottom;background-repeat:no-repeat;background-size:100% 35%;font-style:italic;font-weight:400;transition:background-size .3s,border-radius .3s}.proton-TextEmphasis--tooltip:hover{background-size:100% 100%;border-radius:.125rem}.proton-TextEmphasis--tooltip:not(:hover){transition-delay:.2s}.proton__Tooltip{background-color:var(--proton-control__background-color);color:var(--proton-control__text-color)}[data-radix-popper-content-wrapper]{z-index:10000!important}.proton__Tooltip-trigger{display:inherit}.proton__Tooltip-arrow{fill:var(--proton-control__background-color)}.proton__Tooltip[data-state=delayed-open],.proton__Tooltip[data-state=instant-open]{animation:.2s slide}.proton__Tooltip[data-state=closed]{animation:.2s reverse slide}@keyframes slide{0%{opacity:0;transform:var(--origin)}to{opacity:1;transform:translate(0)}}.proton-Waveform{--waveform-bar-color-dark:#ffffffe6;--waveform-bar-color-light:#000000b3;--waveform-disabled-color-dark:#fff3;--waveform-disabled-color-light:#0003;--waveform-animation-curve:cubic-bezier(.34,1.56,.64,1);--waveform-animation-duration:.4s;--waveform-bar-delay-multiplier:.7ms;--waveform-timestamp-padding:.25rem;--waveform-timestamp-font-size:.75rem;--waveform-timestamp-border-radius:.125rem;--waveform-hover-line-width:2px;flex-direction:row;align-items:center;width:100%;height:100%;display:flex;position:relative}.proton-Waveform__container{z-index:0;flex:1;align-items:center;width:100%;height:100%;display:flex;position:relative}.proton-Waveform__container[data-disabled=true]{cursor:not-allowed}.proton-Waveform__timestamp{pointer-events:none;border-radius:var(--waveform-timestamp-border-radius);padding:0 var(--waveform-timestamp-padding);font-size:var(--waveform-timestamp-font-size);z-index:1;background-color:#0009;position:absolute}.proton-ui__theme--light .proton-Waveform__timestamp{color:#000c;background-color:#ffffffe6;box-shadow:0 2px 2px #0000004d}.proton-Waveform__timestamp--left{left:1px}.proton-Waveform__timestamp--right{right:3px}.proton-Waveform__hover-line{width:var(--waveform-hover-line-width);background-color:#ffffff80;position:absolute;top:0;bottom:0;transform:translate(-50%)}.proton-ui__theme--light .proton-Waveform__hover-line{background-color:#00000080}.proton-Waveform__bar-wrapper{flex-direction:column;justify-content:center;align-items:center;height:100%;display:flex;position:relative}.proton-Waveform__bar{background-color:var(--waveform-bar-color-dark);transform-origin:50%;width:100%;height:0;transition:height var(--waveform-animation-duration)var(--waveform-animation-curve);position:relative}.proton-Waveform__bar.proton-Waveform__bar--visible{height:var(--target-height);transition-delay:calc(var(--index)*var(--waveform-bar-delay-multiplier))}.proton-Waveform__bar.proton-Waveform__bar--upper{transform-origin:bottom}.proton-Waveform__bar.proton-Waveform__bar--lower{transform-origin:top}.proton-ui__theme--light .proton-Waveform__bar{background-color:var(--waveform-bar-color-light)}.proton-Waveform__bar.proton-Waveform__bar--disabled{background-color:var(--waveform-disabled-color-dark)}.proton-ui__theme--light .proton-Waveform__bar.proton-Waveform__bar--disabled{background-color:var(--waveform-disabled-color-light)}.proton-Waveform__bar.proton-Waveform__bar--disabled.proton-Waveform__bar--played{background-color:var(--waveform-disabled-color-dark)}.proton-ui__theme--light .proton-Waveform__bar.proton-Waveform__bar--disabled.proton-Waveform__bar--played{background-color:var(--waveform-disabled-color-light)}.proton-Waveform__bar.proton-Waveform__bar--played{background-color:var(--proton-color__primary)}.proton-Waveform__bar--hover{height:var(--hover-height);z-index:10;background-color:color-mix(in srgb,var(--proton-color__primary)50%,transparent);mix-blend-mode:darken;width:100%;position:absolute;top:50%;transform:translateY(-50%)}.proton-ui__theme--light .proton-Waveform__bar--hover{background-color:color-mix(in srgb,var(--proton-color__primary)50%,white);mix-blend-mode:lighten}.proton-Waveform__bar-unavailable{pointer-events:none;text-align:center;z-index:10;color:#fff;background-color:#000000b3;border-radius:4px;padding:3px 6px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.proton-ui__theme--light .proton-Waveform__bar-unavailable{color:#000;background-color:#fff;box-shadow:0 5px 5px #0000004d}.proton-Waveform__active-region{pointer-events:none;z-index:1;border:1.5px solid #ffffffb3;border-radius:4px;position:absolute;top:0;bottom:0}.proton-ui__theme--light .proton-Waveform__active-region{border-color:#0000004d}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@protonradio/proton-ui",
3
- "version": "0.11.31",
3
+ "version": "0.11.33-beta.1",
4
4
  "description": "",
5
5
  "main": "./dist/proton-ui.umd.js",
6
6
  "module": "./dist/proton-ui.es.js",