@protonradio/proton-ui 0.11.22 → 0.11.23-beta.2

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 e=require("../../../node_modules/react/jsx-runtime.cjs.js"),n=require("react");;/* empty css */const a=require("../../../utils/string.cjs.js"),f=n.forwardRef(({checked:d,defaultChecked:j,onChange:i,name:s,value:m,isDisabled:p=!1,isRequired:u=!1,id:I,"data-testid":_,label:o,description:c,error:t,indeterminate:l=!1},v)=>{const C=n.useRef(null),[R,y]=n.useState(d??j??!1),r=v||C,g=d??R;n.useEffect(()=>{r.current&&(r.current.indeterminate=l)},[l,r]);const E=N=>{const b=N.target.checked;y(b),i==null||i(b)},h=I||`${s}-checkbox`,x=typeof t=="string"?`${s}-error`:void 0,k=typeof c=="string"?`${s}-description`:void 0;return e.jsxRuntimeExports.jsxs("div",{children:[e.jsxRuntimeExports.jsx("div",{className:a.csx(p&&"proton-CheckboxInput--disabled"),children:e.jsxRuntimeExports.jsxs("div",{className:"proton-CheckboxInput__container",children:[typeof o=="string"?e.jsxRuntimeExports.jsx("label",{htmlFor:h,className:"proton-CheckboxInput__label",children:o}):o,e.jsxRuntimeExports.jsx("input",{ref:r,id:h,name:s,type:"checkbox",checked:g,value:m,disabled:p,required:u,onChange:E,className:a.csx("proton-CheckboxInput__input",t&&"proton-CheckboxInput__input--error"),"aria-label":o?void 0:s,"aria-invalid":!!t,"aria-errormessage":x,"aria-describedby":[x,k].filter(Boolean).join(" ")||void 0,"data-testid":_}),typeof c=="string"?e.jsxRuntimeExports.jsxs("div",{id:k,className:"proton-CheckboxInput__text","aria-live":"polite",children:[c,u&&e.jsxRuntimeExports.jsx("span",{"aria-hidden":"true",className:"proton-CheckboxInput__text",children:" *"})]}):c]})}),typeof t=="string"?e.jsxRuntimeExports.jsx("div",{role:"alert",className:a.csx("proton-CheckboxInput__error","proton-CheckboxInput__text"),id:x,children:t}):t]})});f.displayName="ProtonUICheckboxInput";exports.CheckboxInput=f;
2
+ //# sourceMappingURL=CheckboxInput.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CheckboxInput.cjs.js","sources":["../../../../src/components/Input/CheckboxInput/CheckboxInput.tsx"],"sourcesContent":["\"use client\";\n\nimport React, { forwardRef, useEffect, useRef, useState } from \"react\";\n\nimport { csx } from \"../../../utils\";\nimport \"./CheckboxInput.css\";\n\nexport interface CheckboxInputProps {\n /**\n * Whether the checkbox is checked (controlled mode).\n */\n checked?: boolean;\n\n /**\n * Whether the checkbox is checked by default (uncontrolled mode).\n */\n defaultChecked?: boolean;\n\n /** The error attribute of the checkbox input. */\n error?: React.ReactNode | string;\n\n /** The description attribute of the checkbox input. */\n description?: React.ReactNode | string;\n\n /** The test id attribute of the checkbox input. */\n \"data-testid\"?: string;\n\n /**\n * Callback fired when the checkbox state changes.\n */\n onChange?: (checked: boolean) => void;\n\n /**\n * Whether the checkbox is in an indeterminate state. Used for checkboxes that are neither checked nor unchecked.\n * @external https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/indeterminate\n * @reference @external https://medium.com/indigoag-eng/indeterminate-checkboxes-are-weird-704b246c0f19\n */\n indeterminate?: boolean;\n\n /** The id attribute of the checkbox input. */\n id?: string;\n\n /** Whether the checkbox is disabled. */\n isDisabled?: boolean;\n\n /** Whether the checkbox is required. */\n isRequired?: boolean;\n\n /** The name attribute of the checkbox input. */\n name: string;\n\n /** The label attribute of the checkbox input. */\n label?: string | React.ReactNode;\n\n /**\n * The value attribute of the checkbox input (for form submission).\n * @external https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/checkbox#value\n */\n value?: string;\n}\n\n/**\n * A checkbox input component with support for labels, descriptions, error states, and controlled/uncontrolled modes.\n *\n * API:\n * - {@link CheckboxInputProps}\n */\nexport const CheckboxInput = forwardRef<HTMLInputElement, CheckboxInputProps>(\n (\n {\n checked: controlledChecked,\n defaultChecked,\n onChange,\n name,\n value,\n isDisabled = false,\n isRequired = false,\n id,\n \"data-testid\": testId,\n label,\n description,\n error,\n indeterminate = false,\n },\n forwardedRef: React.RefObject<HTMLInputElement>\n ) => {\n const checkboxRef = useRef<HTMLInputElement>(null);\n const [checked, setChecked] = useState(\n controlledChecked ?? defaultChecked ?? false\n );\n const ref = forwardedRef || checkboxRef;\n const isChecked = controlledChecked ?? checked;\n\n // indeterminate state can only be set via JS\n useEffect(() => {\n if (ref.current) {\n ref.current.indeterminate = indeterminate;\n }\n }, [indeterminate, ref]);\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const newChecked = e.target.checked;\n setChecked(newChecked);\n onChange?.(newChecked);\n };\n\n const checkboxId = id || `${name}-checkbox`;\n const errorId = typeof error === \"string\" ? `${name}-error` : undefined;\n const descriptionId =\n typeof description === \"string\" ? `${name}-description` : undefined;\n\n return (\n <div>\n <div className={csx(isDisabled && \"proton-CheckboxInput--disabled\")}>\n <div className=\"proton-CheckboxInput__container\">\n {typeof label === \"string\" ? (\n <label\n htmlFor={checkboxId}\n className=\"proton-CheckboxInput__label\"\n >\n {label}\n </label>\n ) : (\n label\n )}\n\n <input\n ref={ref}\n id={checkboxId}\n name={name}\n type=\"checkbox\"\n checked={isChecked}\n value={value}\n disabled={isDisabled}\n required={isRequired}\n onChange={handleChange}\n className={csx(\n \"proton-CheckboxInput__input\",\n error && \"proton-CheckboxInput__input--error\"\n )}\n aria-label={!label ? name : undefined}\n aria-invalid={Boolean(error)}\n aria-errormessage={errorId}\n aria-describedby={\n [errorId, descriptionId].filter(Boolean).join(\" \") || undefined\n }\n data-testid={testId}\n />\n\n {typeof description === \"string\" ? (\n <div\n id={descriptionId}\n className=\"proton-CheckboxInput__text\"\n aria-live=\"polite\"\n >\n {description}\n {isRequired && (\n <span\n aria-hidden=\"true\"\n className=\"proton-CheckboxInput__text\"\n >\n &nbsp;*\n </span>\n )}\n </div>\n ) : (\n description\n )}\n </div>\n </div>\n\n {typeof error === \"string\" ? (\n <div\n role=\"alert\"\n className={csx(\n \"proton-CheckboxInput__error\",\n \"proton-CheckboxInput__text\"\n )}\n id={errorId}\n >\n {error}\n </div>\n ) : (\n error\n )}\n </div>\n );\n }\n);\n\nCheckboxInput.displayName = \"ProtonUICheckboxInput\";\n"],"names":["CheckboxInput","forwardRef","controlledChecked","defaultChecked","onChange","name","value","isDisabled","isRequired","id","testId","label","description","error","indeterminate","forwardedRef","checkboxRef","useRef","checked","setChecked","useState","ref","isChecked","useEffect","handleChange","e","newChecked","checkboxId","errorId","descriptionId","jsx","csx","jsxs"],"mappings":"2PAmEaA,EAAgBC,EAAA,WAC3B,CACE,CACE,QAASC,EACT,eAAAC,EACA,SAAAC,EACA,KAAAC,EACA,MAAAC,EACA,WAAAC,EAAa,GACb,WAAAC,EAAa,GACb,GAAAC,EACA,cAAeC,EACf,MAAAC,EACA,YAAAC,EACA,MAAAC,EACA,cAAAC,EAAgB,IAElBC,IACG,CACG,MAAAC,EAAcC,SAAyB,IAAI,EAC3C,CAACC,EAASC,CAAU,EAAIC,EAAA,SAC5BlB,GAAqBC,GAAkB,EAAA,EAEnCkB,EAAMN,GAAgBC,EACtBM,EAAYpB,GAAqBgB,EAGvCK,EAAAA,UAAU,IAAM,CACVF,EAAI,UACNA,EAAI,QAAQ,cAAgBP,EAC9B,EACC,CAACA,EAAeO,CAAG,CAAC,EAEjB,MAAAG,EAAgBC,GAA2C,CACzD,MAAAC,EAAaD,EAAE,OAAO,QAC5BN,EAAWO,CAAU,EACrBtB,GAAA,MAAAA,EAAWsB,EAAU,EAGjBC,EAAalB,GAAM,GAAGJ,CAAI,YAC1BuB,EAAU,OAAOf,GAAU,SAAW,GAAGR,CAAI,SAAW,OACxDwB,EACJ,OAAOjB,GAAgB,SAAW,GAAGP,CAAI,eAAiB,OAE5D,gCACG,MACC,CAAA,SAAA,CAACyB,EAAAA,kBAAAA,IAAA,MAAA,CAAI,UAAWC,EAAI,IAAAxB,GAAc,gCAAgC,EAChE,SAAAyB,EAAA,kBAAA,KAAC,MAAI,CAAA,UAAU,kCACZ,SAAA,CAAA,OAAOrB,GAAU,SAChBmB,EAAA,kBAAA,IAAC,QAAA,CACC,QAASH,EACT,UAAU,8BAET,SAAAhB,CAAA,CAAA,EAGHA,EAGFmB,EAAA,kBAAA,IAAC,QAAA,CACC,IAAAT,EACA,GAAIM,EACJ,KAAAtB,EACA,KAAK,WACL,QAASiB,EACT,MAAAhB,EACA,SAAUC,EACV,SAAUC,EACV,SAAUgB,EACV,UAAWO,EAAA,IACT,8BACAlB,GAAS,oCACX,EACA,aAAaF,EAAe,OAAPN,EACrB,eAAc,EAAQQ,EACtB,oBAAmBe,EACnB,mBACE,CAACA,EAASC,CAAa,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,GAAK,OAExD,cAAanB,CAAA,CACf,EAEC,OAAOE,GAAgB,SACtBoB,EAAA,kBAAA,KAAC,MAAA,CACC,GAAIH,EACJ,UAAU,6BACV,YAAU,SAET,SAAA,CAAAjB,EACAJ,GACCsB,EAAA,kBAAA,IAAC,OAAA,CACC,cAAY,OACZ,UAAU,6BACX,SAAA,IAAA,CAED,CAAA,CAAA,CAAA,EAIJlB,CAAA,CAAA,CAEJ,CACF,CAAA,EAEC,OAAOC,GAAU,SAChBiB,EAAA,kBAAA,IAAC,MAAA,CACC,KAAK,QACL,UAAWC,EAAA,IACT,8BACA,4BACF,EACA,GAAIH,EAEH,SAAAf,CAAA,CAAA,EAGHA,CAEJ,CAAA,CAAA,CAEJ,CACF,EAEAb,EAAc,YAAc"}
@@ -0,0 +1,103 @@
1
+ import { j as e } from "../../../node_modules/react/jsx-runtime.es.js";
2
+ import { forwardRef as R, useRef as $, useState as w, useEffect as B } from "react";
3
+ /* empty css */
4
+ import { csx as a } from "../../../utils/string.es.js";
5
+ const E = R(
6
+ ({
7
+ checked: d,
8
+ defaultChecked: k,
9
+ onChange: n,
10
+ name: o,
11
+ value: b,
12
+ isDisabled: p = !1,
13
+ isRequired: l = !1,
14
+ id: _,
15
+ "data-testid": I,
16
+ label: s,
17
+ description: c,
18
+ error: t,
19
+ indeterminate: x = !1
20
+ }, m) => {
21
+ const j = $(null), [v, C] = w(
22
+ d ?? k ?? !1
23
+ ), r = m || j, y = d ?? v;
24
+ B(() => {
25
+ r.current && (r.current.indeterminate = x);
26
+ }, [x, r]);
27
+ const N = (g) => {
28
+ const f = g.target.checked;
29
+ C(f), n == null || n(f);
30
+ }, h = _ || `${o}-checkbox`, i = typeof t == "string" ? `${o}-error` : void 0, u = typeof c == "string" ? `${o}-description` : void 0;
31
+ return /* @__PURE__ */ e.jsxs("div", { children: [
32
+ /* @__PURE__ */ e.jsx("div", { className: a(p && "proton-CheckboxInput--disabled"), children: /* @__PURE__ */ e.jsxs("div", { className: "proton-CheckboxInput__container", children: [
33
+ typeof s == "string" ? /* @__PURE__ */ e.jsx(
34
+ "label",
35
+ {
36
+ htmlFor: h,
37
+ className: "proton-CheckboxInput__label",
38
+ children: s
39
+ }
40
+ ) : s,
41
+ /* @__PURE__ */ e.jsx(
42
+ "input",
43
+ {
44
+ ref: r,
45
+ id: h,
46
+ name: o,
47
+ type: "checkbox",
48
+ checked: y,
49
+ value: b,
50
+ disabled: p,
51
+ required: l,
52
+ onChange: N,
53
+ className: a(
54
+ "proton-CheckboxInput__input",
55
+ t && "proton-CheckboxInput__input--error"
56
+ ),
57
+ "aria-label": s ? void 0 : o,
58
+ "aria-invalid": !!t,
59
+ "aria-errormessage": i,
60
+ "aria-describedby": [i, u].filter(Boolean).join(" ") || void 0,
61
+ "data-testid": I
62
+ }
63
+ ),
64
+ typeof c == "string" ? /* @__PURE__ */ e.jsxs(
65
+ "div",
66
+ {
67
+ id: u,
68
+ className: "proton-CheckboxInput__text",
69
+ "aria-live": "polite",
70
+ children: [
71
+ c,
72
+ l && /* @__PURE__ */ e.jsx(
73
+ "span",
74
+ {
75
+ "aria-hidden": "true",
76
+ className: "proton-CheckboxInput__text",
77
+ children: " *"
78
+ }
79
+ )
80
+ ]
81
+ }
82
+ ) : c
83
+ ] }) }),
84
+ typeof t == "string" ? /* @__PURE__ */ e.jsx(
85
+ "div",
86
+ {
87
+ role: "alert",
88
+ className: a(
89
+ "proton-CheckboxInput__error",
90
+ "proton-CheckboxInput__text"
91
+ ),
92
+ id: i,
93
+ children: t
94
+ }
95
+ ) : t
96
+ ] });
97
+ }
98
+ );
99
+ E.displayName = "ProtonUICheckboxInput";
100
+ export {
101
+ E as CheckboxInput
102
+ };
103
+ //# sourceMappingURL=CheckboxInput.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CheckboxInput.es.js","sources":["../../../../src/components/Input/CheckboxInput/CheckboxInput.tsx"],"sourcesContent":["\"use client\";\n\nimport React, { forwardRef, useEffect, useRef, useState } from \"react\";\n\nimport { csx } from \"../../../utils\";\nimport \"./CheckboxInput.css\";\n\nexport interface CheckboxInputProps {\n /**\n * Whether the checkbox is checked (controlled mode).\n */\n checked?: boolean;\n\n /**\n * Whether the checkbox is checked by default (uncontrolled mode).\n */\n defaultChecked?: boolean;\n\n /** The error attribute of the checkbox input. */\n error?: React.ReactNode | string;\n\n /** The description attribute of the checkbox input. */\n description?: React.ReactNode | string;\n\n /** The test id attribute of the checkbox input. */\n \"data-testid\"?: string;\n\n /**\n * Callback fired when the checkbox state changes.\n */\n onChange?: (checked: boolean) => void;\n\n /**\n * Whether the checkbox is in an indeterminate state. Used for checkboxes that are neither checked nor unchecked.\n * @external https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/indeterminate\n * @reference @external https://medium.com/indigoag-eng/indeterminate-checkboxes-are-weird-704b246c0f19\n */\n indeterminate?: boolean;\n\n /** The id attribute of the checkbox input. */\n id?: string;\n\n /** Whether the checkbox is disabled. */\n isDisabled?: boolean;\n\n /** Whether the checkbox is required. */\n isRequired?: boolean;\n\n /** The name attribute of the checkbox input. */\n name: string;\n\n /** The label attribute of the checkbox input. */\n label?: string | React.ReactNode;\n\n /**\n * The value attribute of the checkbox input (for form submission).\n * @external https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/checkbox#value\n */\n value?: string;\n}\n\n/**\n * A checkbox input component with support for labels, descriptions, error states, and controlled/uncontrolled modes.\n *\n * API:\n * - {@link CheckboxInputProps}\n */\nexport const CheckboxInput = forwardRef<HTMLInputElement, CheckboxInputProps>(\n (\n {\n checked: controlledChecked,\n defaultChecked,\n onChange,\n name,\n value,\n isDisabled = false,\n isRequired = false,\n id,\n \"data-testid\": testId,\n label,\n description,\n error,\n indeterminate = false,\n },\n forwardedRef: React.RefObject<HTMLInputElement>\n ) => {\n const checkboxRef = useRef<HTMLInputElement>(null);\n const [checked, setChecked] = useState(\n controlledChecked ?? defaultChecked ?? false\n );\n const ref = forwardedRef || checkboxRef;\n const isChecked = controlledChecked ?? checked;\n\n // indeterminate state can only be set via JS\n useEffect(() => {\n if (ref.current) {\n ref.current.indeterminate = indeterminate;\n }\n }, [indeterminate, ref]);\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const newChecked = e.target.checked;\n setChecked(newChecked);\n onChange?.(newChecked);\n };\n\n const checkboxId = id || `${name}-checkbox`;\n const errorId = typeof error === \"string\" ? `${name}-error` : undefined;\n const descriptionId =\n typeof description === \"string\" ? `${name}-description` : undefined;\n\n return (\n <div>\n <div className={csx(isDisabled && \"proton-CheckboxInput--disabled\")}>\n <div className=\"proton-CheckboxInput__container\">\n {typeof label === \"string\" ? (\n <label\n htmlFor={checkboxId}\n className=\"proton-CheckboxInput__label\"\n >\n {label}\n </label>\n ) : (\n label\n )}\n\n <input\n ref={ref}\n id={checkboxId}\n name={name}\n type=\"checkbox\"\n checked={isChecked}\n value={value}\n disabled={isDisabled}\n required={isRequired}\n onChange={handleChange}\n className={csx(\n \"proton-CheckboxInput__input\",\n error && \"proton-CheckboxInput__input--error\"\n )}\n aria-label={!label ? name : undefined}\n aria-invalid={Boolean(error)}\n aria-errormessage={errorId}\n aria-describedby={\n [errorId, descriptionId].filter(Boolean).join(\" \") || undefined\n }\n data-testid={testId}\n />\n\n {typeof description === \"string\" ? (\n <div\n id={descriptionId}\n className=\"proton-CheckboxInput__text\"\n aria-live=\"polite\"\n >\n {description}\n {isRequired && (\n <span\n aria-hidden=\"true\"\n className=\"proton-CheckboxInput__text\"\n >\n &nbsp;*\n </span>\n )}\n </div>\n ) : (\n description\n )}\n </div>\n </div>\n\n {typeof error === \"string\" ? (\n <div\n role=\"alert\"\n className={csx(\n \"proton-CheckboxInput__error\",\n \"proton-CheckboxInput__text\"\n )}\n id={errorId}\n >\n {error}\n </div>\n ) : (\n error\n )}\n </div>\n );\n }\n);\n\nCheckboxInput.displayName = \"ProtonUICheckboxInput\";\n"],"names":["CheckboxInput","forwardRef","controlledChecked","defaultChecked","onChange","name","value","isDisabled","isRequired","id","testId","label","description","error","indeterminate","forwardedRef","checkboxRef","useRef","checked","setChecked","useState","ref","isChecked","useEffect","handleChange","e","newChecked","checkboxId","errorId","descriptionId","jsx","csx","jsxs"],"mappings":";;;;AAmEO,MAAMA,IAAgBC;AAAA,EAC3B,CACE;AAAA,IACE,SAASC;AAAA,IACT,gBAAAC;AAAA,IACA,UAAAC;AAAA,IACA,MAAAC;AAAA,IACA,OAAAC;AAAA,IACA,YAAAC,IAAa;AAAA,IACb,YAAAC,IAAa;AAAA,IACb,IAAAC;AAAA,IACA,eAAeC;AAAA,IACf,OAAAC;AAAA,IACA,aAAAC;AAAA,IACA,OAAAC;AAAA,IACA,eAAAC,IAAgB;AAAA,KAElBC,MACG;AACG,UAAAC,IAAcC,EAAyB,IAAI,GAC3C,CAACC,GAASC,CAAU,IAAIC;AAAA,MAC5BlB,KAAqBC,KAAkB;AAAA,IAAA,GAEnCkB,IAAMN,KAAgBC,GACtBM,IAAYpB,KAAqBgB;AAGvC,IAAAK,EAAU,MAAM;AACd,MAAIF,EAAI,YACNA,EAAI,QAAQ,gBAAgBP;AAAA,IAC9B,GACC,CAACA,GAAeO,CAAG,CAAC;AAEjB,UAAAG,IAAe,CAACC,MAA2C;AACzD,YAAAC,IAAaD,EAAE,OAAO;AAC5B,MAAAN,EAAWO,CAAU,GACrBtB,KAAA,QAAAA,EAAWsB;AAAA,IAAU,GAGjBC,IAAalB,KAAM,GAAGJ,CAAI,aAC1BuB,IAAU,OAAOf,KAAU,WAAW,GAAGR,CAAI,WAAW,QACxDwB,IACJ,OAAOjB,KAAgB,WAAW,GAAGP,CAAI,iBAAiB;AAE5D,kCACG,OACC,EAAA,UAAA;AAAA,MAACyB,gBAAAA,EAAAA,IAAA,OAAA,EAAI,WAAWC,EAAIxB,KAAc,gCAAgC,GAChE,UAAAyB,gBAAAA,EAAA,KAAC,OAAI,EAAA,WAAU,mCACZ,UAAA;AAAA,QAAA,OAAOrB,KAAU,WAChBmB,gBAAAA,EAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,SAASH;AAAA,YACT,WAAU;AAAA,YAET,UAAAhB;AAAA,UAAA;AAAA,QAAA,IAGHA;AAAA,QAGFmB,gBAAAA,EAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,KAAAT;AAAA,YACA,IAAIM;AAAA,YACJ,MAAAtB;AAAA,YACA,MAAK;AAAA,YACL,SAASiB;AAAA,YACT,OAAAhB;AAAA,YACA,UAAUC;AAAA,YACV,UAAUC;AAAA,YACV,UAAUgB;AAAA,YACV,WAAWO;AAAA,cACT;AAAA,cACAlB,KAAS;AAAA,YACX;AAAA,YACA,cAAaF,IAAe,SAAPN;AAAA,YACrB,gBAAc,EAAQQ;AAAA,YACtB,qBAAmBe;AAAA,YACnB,oBACE,CAACA,GAASC,CAAa,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,KAAK;AAAA,YAExD,eAAanB;AAAA,UAAA;AAAA,QACf;AAAA,QAEC,OAAOE,KAAgB,WACtBoB,gBAAAA,EAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,IAAIH;AAAA,YACJ,WAAU;AAAA,YACV,aAAU;AAAA,YAET,UAAA;AAAA,cAAAjB;AAAA,cACAJ,KACCsB,gBAAAA,EAAA;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,eAAY;AAAA,kBACZ,WAAU;AAAA,kBACX,UAAA;AAAA,gBAAA;AAAA,cAED;AAAA,YAAA;AAAA,UAAA;AAAA,QAAA,IAIJlB;AAAA,MAAA,EAAA,CAEJ,EACF,CAAA;AAAA,MAEC,OAAOC,KAAU,WAChBiB,gBAAAA,EAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,MAAK;AAAA,UACL,WAAWC;AAAA,YACT;AAAA,YACA;AAAA,UACF;AAAA,UACA,IAAIH;AAAA,UAEH,UAAAf;AAAA,QAAA;AAAA,MAAA,IAGHA;AAAA,IAEJ,EAAA,CAAA;AAAA,EAEJ;AACF;AAEAb,EAAc,cAAc;"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("../../../node_modules/react/jsx-runtime.cjs.js"),c=require("react");;/* empty css */const E=require("../BaseInput/Input.cjs.js"),v=require("../../../utils/string.cjs.js"),S=({name:p="search",placeholder:a="Search...",autoComplete:o,isClearable:d=!0,isDisabled:h=!1,error:j,defaultValue:m,value:s,"data-testid":x="proton-SearchInput",onChange:r,onClear:i})=>{const u=c.useRef(null),[l,n]=c.useState(s??m??"");c.useEffect(()=>{s!==void 0&&n(s)},[s]);const f=e=>{n(e),r==null||r(e)},R=()=>{var e;n(""),r==null||r(""),i==null||i(),(e=u.current)==null||e.focus()};return t.jsxRuntimeExports.jsx("div",{className:"proton-SearchInput__wrapper","data-testid":x,role:"search",children:t.jsxRuntimeExports.jsx(E.Input,{type:"search",onChange:f,value:l,name:p,placeholder:a,autoComplete:o,error:j,ref:u,isDisabled:h,prefix:t.jsxRuntimeExports.jsxs("svg",{"aria-hidden":"true",width:"2.8em",height:"1.6em",viewBox:"0 0 24 24",onClick:()=>{var e;return(e=u.current)==null?void 0:e.focus()},children:[t.jsxRuntimeExports.jsx("title",{children:"Magnifying Glass"}),t.jsxRuntimeExports.jsx("path",{fill:"currentColor",d:"M10.5 18.5a8 8 0 1 1 0-16 8 8 0 0 1 0 16Zm0-1a7 7 0 1 0 0-14 7 7 0 0 0 0 14Zm5.25-.75 4.5 4.5-1.25 1.25-4.5-4.5 1.25-1.25Z"})]}),suffix:d&&l.length>0?t.jsxRuntimeExports.jsx("button",{type:"button",className:v.csx("proton-SearchInput__button","proton-Input__descriptor","proton-Input__suffix"),"data-testid":`${x}-clear`,onClick:R,"aria-label":"Clear search",children:t.jsxRuntimeExports.jsxs("svg",{"aria-hidden":"true",viewBox:"0 0 50 50",width:"2.2em",height:"1.2em",children:[t.jsxRuntimeExports.jsx("title",{children:"Clear"}),t.jsxRuntimeExports.jsx("path",{fill:"currentColor",d:"m37.304 11.282l1.414 1.414l-26.022 26.02l-1.414-1.413z"}),t.jsxRuntimeExports.jsx("path",{fill:"currentColor",d:"m12.696 11.282l26.022 26.02l-1.414 1.415l-26.022-26.02z"})]})}):null})})};exports.SearchInput=S;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("../../../node_modules/react/jsx-runtime.cjs.js"),c=require("react");;/* empty css */const E=require("../BaseInput/Input.cjs.js"),S=require("../../../utils/string.cjs.js"),v=({name:o="search",placeholder:a="Search...",autoComplete:x,isClearable:p=!0,isDisabled:d=!1,error:h,defaultValue:j,value:m,"data-testid":u="proton-SearchInput",onChange:r,onClear:s})=>{const i=c.useRef(null),[l,n]=c.useState(m??j??""),f=e=>{n(e),r==null||r(e)},R=()=>{var e;n(""),r==null||r(""),s==null||s(),(e=i.current)==null||e.focus()};return t.jsxRuntimeExports.jsx("div",{className:"proton-SearchInput__wrapper","data-testid":u,role:"search",children:t.jsxRuntimeExports.jsx(E.Input,{type:"search",onChange:f,value:l,name:o,placeholder:a,autoComplete:x,error:h,ref:i,isDisabled:d,prefix:t.jsxRuntimeExports.jsxs("svg",{"aria-hidden":"true",width:"2.8em",height:"1.6em",viewBox:"0 0 24 24",onClick:()=>{var e;return(e=i.current)==null?void 0:e.focus()},children:[t.jsxRuntimeExports.jsx("title",{children:"Magnifying Glass"}),t.jsxRuntimeExports.jsx("path",{fill:"currentColor",d:"M10.5 18.5a8 8 0 1 1 0-16 8 8 0 0 1 0 16Zm0-1a7 7 0 1 0 0-14 7 7 0 0 0 0 14Zm5.25-.75 4.5 4.5-1.25 1.25-4.5-4.5 1.25-1.25Z"})]}),suffix:p&&l.length>0?t.jsxRuntimeExports.jsx("button",{type:"button",className:S.csx("proton-SearchInput__button","proton-Input__descriptor","proton-Input__suffix"),"data-testid":`${u}-clear`,onClick:R,"aria-label":"Clear search",children:t.jsxRuntimeExports.jsxs("svg",{"aria-hidden":"true",viewBox:"0 0 50 50",width:"2.2em",height:"1.2em",children:[t.jsxRuntimeExports.jsx("title",{children:"Clear"}),t.jsxRuntimeExports.jsx("path",{fill:"currentColor",d:"m37.304 11.282l1.414 1.414l-26.022 26.02l-1.414-1.413z"}),t.jsxRuntimeExports.jsx("path",{fill:"currentColor",d:"m12.696 11.282l26.022 26.02l-1.414 1.415l-26.022-26.02z"})]})}):null})})};exports.SearchInput=v;
2
2
  //# sourceMappingURL=SearchInput.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SearchInput.cjs.js","sources":["../../../../src/components/Input/SearchInput/SearchInput.tsx"],"sourcesContent":["\"use client\";\n\nimport { useEffect, useRef, useState } from \"react\";\nimport \"./SearchInput.css\";\nimport { csx } from \"../../../utils\";\nimport { Input, type BaseInputProps } from \"../BaseInput/Input\";\n\nexport interface SearchInputProps\n extends Omit<\n BaseInputProps,\n | \"prefix\"\n | \"suffix\"\n | \"value\"\n | \"onChange\"\n | \"description\"\n | \"descriptionPosition\"\n | \"label\"\n > {\n /** The initial value of the input. */\n defaultValue?: string;\n\n /** Should the clear button be shown when there is text? */\n isClearable?: boolean;\n\n /** Called when the input value changes. */\n onChange?: (value: string) => void;\n\n /** Called when the clear button is clicked. */\n onClear?: () => void;\n\n /** The current value of the input (for controlled usage) */\n value?: string;\n}\n\n/**\n * A search input component with optional clear functionality and URL parameter sync.\n *\n * API:\n * - {@link SearchInputProps}\n * - extends {@link BaseInputProps}\n */\nexport const SearchInput = ({\n name = \"search\",\n placeholder = \"Search...\",\n autoComplete,\n isClearable = true,\n isDisabled = false,\n error,\n defaultValue,\n value: controlledValue,\n \"data-testid\": testId = \"proton-SearchInput\",\n onChange,\n onClear,\n}: SearchInputProps) => {\n const inputRef = useRef<HTMLInputElement>(null);\n const [value, setValue] = useState(controlledValue ?? defaultValue ?? \"\");\n\n // Sync with controlled value if provided\n useEffect(() => {\n if (controlledValue !== undefined) {\n setValue(controlledValue);\n }\n }, [controlledValue]);\n\n const handleChange = (newValue: string) => {\n setValue(newValue);\n onChange?.(newValue);\n };\n\n const handleClear = () => {\n setValue(\"\");\n onChange?.(\"\");\n onClear?.();\n inputRef.current?.focus();\n };\n\n return (\n <div\n className=\"proton-SearchInput__wrapper\"\n data-testid={testId}\n role=\"search\"\n >\n <Input\n type=\"search\"\n onChange={handleChange}\n value={value}\n name={name}\n placeholder={placeholder}\n autoComplete={autoComplete}\n error={error}\n ref={inputRef}\n isDisabled={isDisabled}\n prefix={\n <svg\n aria-hidden=\"true\"\n width=\"2.8em\"\n height=\"1.6em\"\n viewBox=\"0 0 24 24\"\n onClick={() => inputRef.current?.focus()}\n >\n <title>Magnifying Glass</title>\n <path\n fill=\"currentColor\"\n d=\"M10.5 18.5a8 8 0 1 1 0-16 8 8 0 0 1 0 16Zm0-1a7 7 0 1 0 0-14 7 7 0 0 0 0 14Zm5.25-.75 4.5 4.5-1.25 1.25-4.5-4.5 1.25-1.25Z\"\n />\n </svg>\n }\n suffix={\n isClearable && value.length > 0 ? (\n <button\n type=\"button\"\n className={csx(\n \"proton-SearchInput__button\",\n \"proton-Input__descriptor\",\n \"proton-Input__suffix\"\n )}\n data-testid={`${testId}-clear`}\n onClick={handleClear}\n aria-label=\"Clear search\"\n >\n <svg\n aria-hidden=\"true\"\n viewBox=\"0 0 50 50\"\n width=\"2.2em\"\n height=\"1.2em\"\n >\n <title>Clear</title>\n <path\n fill=\"currentColor\"\n d=\"m37.304 11.282l1.414 1.414l-26.022 26.02l-1.414-1.413z\"\n />\n <path\n fill=\"currentColor\"\n d=\"m12.696 11.282l26.022 26.02l-1.414 1.415l-26.022-26.02z\"\n />\n </svg>\n </button>\n ) : null\n }\n />\n </div>\n );\n};\n"],"names":["SearchInput","name","placeholder","autoComplete","isClearable","isDisabled","error","defaultValue","controlledValue","testId","onChange","onClear","inputRef","useRef","value","setValue","useState","useEffect","handleChange","newValue","handleClear","_a","jsx","Input","jsxs","csx"],"mappings":"gSAyCaA,EAAc,CAAC,CAC1B,KAAAC,EAAO,SACP,YAAAC,EAAc,YACd,aAAAC,EACA,YAAAC,EAAc,GACd,WAAAC,EAAa,GACb,MAAAC,EACA,aAAAC,EACA,MAAOC,EACP,cAAeC,EAAS,qBACxB,SAAAC,EACA,QAAAC,CACF,IAAwB,CAChB,MAAAC,EAAWC,SAAyB,IAAI,EACxC,CAACC,EAAOC,CAAQ,EAAIC,EAAS,SAAAR,GAAmBD,GAAgB,EAAE,EAGxEU,EAAAA,UAAU,IAAM,CACVT,IAAoB,QACtBO,EAASP,CAAe,CAC1B,EACC,CAACA,CAAe,CAAC,EAEd,MAAAU,EAAgBC,GAAqB,CACzCJ,EAASI,CAAQ,EACjBT,GAAA,MAAAA,EAAWS,EAAQ,EAGfC,EAAc,IAAM,OACxBL,EAAS,EAAE,EACXL,GAAA,MAAAA,EAAW,IACDC,GAAA,MAAAA,KACVU,EAAAT,EAAS,UAAT,MAAAS,EAAkB,OAAM,EAIxB,OAAAC,EAAA,kBAAA,IAAC,MAAA,CACC,UAAU,8BACV,cAAab,EACb,KAAK,SAEL,SAAAa,EAAA,kBAAA,IAACC,EAAA,MAAA,CACC,KAAK,SACL,SAAUL,EACV,MAAAJ,EACA,KAAAb,EACA,YAAAC,EACA,aAAAC,EACA,MAAAG,EACA,IAAKM,EACL,WAAAP,EACA,OACEmB,EAAA,kBAAA,KAAC,MAAA,CACC,cAAY,OACZ,MAAM,QACN,OAAO,QACP,QAAQ,YACR,QAAS,IAAM,OAAA,OAAAH,EAAAT,EAAS,UAAT,YAAAS,EAAkB,SAEjC,SAAA,CAAAC,EAAAA,kBAAAA,IAAC,SAAM,SAAgB,kBAAA,CAAA,EACvBA,EAAA,kBAAA,IAAC,OAAA,CACC,KAAK,eACL,EAAE,4HAAA,CACJ,CAAA,CAAA,CACF,EAEF,OACElB,GAAeU,EAAM,OAAS,EAC5BQ,EAAA,kBAAA,IAAC,SAAA,CACC,KAAK,SACL,UAAWG,EAAA,IACT,6BACA,2BACA,sBACF,EACA,cAAa,GAAGhB,CAAM,SACtB,QAASW,EACT,aAAW,eAEX,SAAAI,EAAA,kBAAA,KAAC,MAAA,CACC,cAAY,OACZ,QAAQ,YACR,MAAM,QACN,OAAO,QAEP,SAAA,CAAAF,EAAAA,kBAAAA,IAAC,SAAM,SAAK,OAAA,CAAA,EACZA,EAAA,kBAAA,IAAC,OAAA,CACC,KAAK,eACL,EAAE,wDAAA,CACJ,EACAA,EAAA,kBAAA,IAAC,OAAA,CACC,KAAK,eACL,EAAE,yDAAA,CACJ,CAAA,CAAA,CACF,CAAA,CAAA,EAEA,IAAA,CAER,CAAA,CAAA,CAGN"}
1
+ {"version":3,"file":"SearchInput.cjs.js","sources":["../../../../src/components/Input/SearchInput/SearchInput.tsx"],"sourcesContent":["\"use client\";\n\nimport { useEffect, useRef, useState } from \"react\";\nimport \"./SearchInput.css\";\nimport { csx } from \"../../../utils\";\nimport { Input, type BaseInputProps } from \"../BaseInput/Input\";\n\nexport interface SearchInputProps\n extends Omit<\n BaseInputProps,\n | \"prefix\"\n | \"suffix\"\n | \"value\"\n | \"onChange\"\n | \"description\"\n | \"descriptionPosition\"\n | \"label\"\n > {\n /** The initial value of the input. */\n defaultValue?: string;\n\n /** Should the clear button be shown when there is text? */\n isClearable?: boolean;\n\n /** Called when the input value changes. */\n onChange?: (value: string) => void;\n\n /** Called when the clear button is clicked. */\n onClear?: () => void;\n\n /** The current value of the input (for controlled usage) */\n value?: string;\n}\n\n/**\n * A search input component with optional clear functionality and URL parameter sync.\n *\n * API:\n * - {@link SearchInputProps}\n * - extends {@link BaseInputProps}\n */\nexport const SearchInput = ({\n name = \"search\",\n placeholder = \"Search...\",\n autoComplete,\n isClearable = true,\n isDisabled = false,\n error,\n defaultValue,\n value: controlledValue,\n \"data-testid\": testId = \"proton-SearchInput\",\n onChange,\n onClear,\n}: SearchInputProps) => {\n const inputRef = useRef<HTMLInputElement>(null);\n const [value, setValue] = useState(controlledValue ?? defaultValue ?? \"\");\n\n const handleChange = (newValue: string) => {\n setValue(newValue);\n onChange?.(newValue);\n };\n\n const handleClear = () => {\n setValue(\"\");\n onChange?.(\"\");\n onClear?.();\n inputRef.current?.focus();\n };\n\n return (\n <div\n className=\"proton-SearchInput__wrapper\"\n data-testid={testId}\n role=\"search\"\n >\n <Input\n type=\"search\"\n onChange={handleChange}\n value={value}\n name={name}\n placeholder={placeholder}\n autoComplete={autoComplete}\n error={error}\n ref={inputRef}\n isDisabled={isDisabled}\n prefix={\n <svg\n aria-hidden=\"true\"\n width=\"2.8em\"\n height=\"1.6em\"\n viewBox=\"0 0 24 24\"\n onClick={() => inputRef.current?.focus()}\n >\n <title>Magnifying Glass</title>\n <path\n fill=\"currentColor\"\n d=\"M10.5 18.5a8 8 0 1 1 0-16 8 8 0 0 1 0 16Zm0-1a7 7 0 1 0 0-14 7 7 0 0 0 0 14Zm5.25-.75 4.5 4.5-1.25 1.25-4.5-4.5 1.25-1.25Z\"\n />\n </svg>\n }\n suffix={\n isClearable && value.length > 0 ? (\n <button\n type=\"button\"\n className={csx(\n \"proton-SearchInput__button\",\n \"proton-Input__descriptor\",\n \"proton-Input__suffix\"\n )}\n data-testid={`${testId}-clear`}\n onClick={handleClear}\n aria-label=\"Clear search\"\n >\n <svg\n aria-hidden=\"true\"\n viewBox=\"0 0 50 50\"\n width=\"2.2em\"\n height=\"1.2em\"\n >\n <title>Clear</title>\n <path\n fill=\"currentColor\"\n d=\"m37.304 11.282l1.414 1.414l-26.022 26.02l-1.414-1.413z\"\n />\n <path\n fill=\"currentColor\"\n d=\"m12.696 11.282l26.022 26.02l-1.414 1.415l-26.022-26.02z\"\n />\n </svg>\n </button>\n ) : null\n }\n />\n </div>\n );\n};\n"],"names":["SearchInput","name","placeholder","autoComplete","isClearable","isDisabled","error","defaultValue","controlledValue","testId","onChange","onClear","inputRef","useRef","value","setValue","useState","handleChange","newValue","handleClear","_a","jsx","Input","jsxs","csx"],"mappings":"gSAyCaA,EAAc,CAAC,CAC1B,KAAAC,EAAO,SACP,YAAAC,EAAc,YACd,aAAAC,EACA,YAAAC,EAAc,GACd,WAAAC,EAAa,GACb,MAAAC,EACA,aAAAC,EACA,MAAOC,EACP,cAAeC,EAAS,qBACxB,SAAAC,EACA,QAAAC,CACF,IAAwB,CAChB,MAAAC,EAAWC,SAAyB,IAAI,EACxC,CAACC,EAAOC,CAAQ,EAAIC,EAAS,SAAAR,GAAmBD,GAAgB,EAAE,EAElEU,EAAgBC,GAAqB,CACzCH,EAASG,CAAQ,EACjBR,GAAA,MAAAA,EAAWQ,EAAQ,EAGfC,EAAc,IAAM,OACxBJ,EAAS,EAAE,EACXL,GAAA,MAAAA,EAAW,IACDC,GAAA,MAAAA,KACVS,EAAAR,EAAS,UAAT,MAAAQ,EAAkB,OAAM,EAIxB,OAAAC,EAAA,kBAAA,IAAC,MAAA,CACC,UAAU,8BACV,cAAaZ,EACb,KAAK,SAEL,SAAAY,EAAA,kBAAA,IAACC,EAAA,MAAA,CACC,KAAK,SACL,SAAUL,EACV,MAAAH,EACA,KAAAb,EACA,YAAAC,EACA,aAAAC,EACA,MAAAG,EACA,IAAKM,EACL,WAAAP,EACA,OACEkB,EAAA,kBAAA,KAAC,MAAA,CACC,cAAY,OACZ,MAAM,QACN,OAAO,QACP,QAAQ,YACR,QAAS,IAAM,OAAA,OAAAH,EAAAR,EAAS,UAAT,YAAAQ,EAAkB,SAEjC,SAAA,CAAAC,EAAAA,kBAAAA,IAAC,SAAM,SAAgB,kBAAA,CAAA,EACvBA,EAAA,kBAAA,IAAC,OAAA,CACC,KAAK,eACL,EAAE,4HAAA,CACJ,CAAA,CAAA,CACF,EAEF,OACEjB,GAAeU,EAAM,OAAS,EAC5BO,EAAA,kBAAA,IAAC,SAAA,CACC,KAAK,SACL,UAAWG,EAAA,IACT,6BACA,2BACA,sBACF,EACA,cAAa,GAAGf,CAAM,SACtB,QAASU,EACT,aAAW,eAEX,SAAAI,EAAA,kBAAA,KAAC,MAAA,CACC,cAAY,OACZ,QAAQ,YACR,MAAM,QACN,OAAO,QAEP,SAAA,CAAAF,EAAAA,kBAAAA,IAAC,SAAM,SAAK,OAAA,CAAA,EACZA,EAAA,kBAAA,IAAC,OAAA,CACC,KAAK,eACL,EAAE,wDAAA,CACJ,EACAA,EAAA,kBAAA,IAAC,OAAA,CACC,KAAK,eACL,EAAE,yDAAA,CACJ,CAAA,CAAA,CACF,CAAA,CAAA,EAEA,IAAA,CAER,CAAA,CAAA,CAGN"}
@@ -1,49 +1,45 @@
1
1
  import { j as t } from "../../../node_modules/react/jsx-runtime.es.js";
2
- import { useRef as v, useState as _, useEffect as I } from "react";
2
+ import { useRef as _, useState as v } from "react";
3
3
  /* empty css */
4
- import { Input as S } from "../BaseInput/Input.es.js";
5
- import { csx as b } from "../../../utils/string.es.js";
6
- const z = ({
7
- name: u = "search",
8
- placeholder: o = "Search...",
9
- autoComplete: d,
10
- isClearable: f = !0,
11
- isDisabled: h = !1,
12
- error: n,
4
+ import { Input as I } from "../BaseInput/Input.es.js";
5
+ import { csx as S } from "../../../utils/string.es.js";
6
+ const k = ({
7
+ name: o = "search",
8
+ placeholder: u = "Search...",
9
+ autoComplete: p,
10
+ isClearable: n = !0,
11
+ isDisabled: d = !1,
12
+ error: h,
13
13
  defaultValue: m,
14
- value: s,
15
- "data-testid": a = "proton-SearchInput",
14
+ value: f,
15
+ "data-testid": l = "proton-SearchInput",
16
16
  onChange: e,
17
- onClear: i
17
+ onClear: s
18
18
  }) => {
19
- const c = v(null), [p, l] = _(s ?? m ?? "");
20
- I(() => {
21
- s !== void 0 && l(s);
22
- }, [s]);
23
- const x = (r) => {
24
- l(r), e == null || e(r);
19
+ const i = _(null), [a, c] = v(f ?? m ?? ""), x = (r) => {
20
+ c(r), e == null || e(r);
25
21
  }, j = () => {
26
22
  var r;
27
- l(""), e == null || e(""), i == null || i(), (r = c.current) == null || r.focus();
23
+ c(""), e == null || e(""), s == null || s(), (r = i.current) == null || r.focus();
28
24
  };
29
25
  return /* @__PURE__ */ t.jsx(
30
26
  "div",
31
27
  {
32
28
  className: "proton-SearchInput__wrapper",
33
- "data-testid": a,
29
+ "data-testid": l,
34
30
  role: "search",
35
31
  children: /* @__PURE__ */ t.jsx(
36
- S,
32
+ I,
37
33
  {
38
34
  type: "search",
39
35
  onChange: x,
40
- value: p,
41
- name: u,
42
- placeholder: o,
43
- autoComplete: d,
44
- error: n,
45
- ref: c,
46
- isDisabled: h,
36
+ value: a,
37
+ name: o,
38
+ placeholder: u,
39
+ autoComplete: p,
40
+ error: h,
41
+ ref: i,
42
+ isDisabled: d,
47
43
  prefix: /* @__PURE__ */ t.jsxs(
48
44
  "svg",
49
45
  {
@@ -53,7 +49,7 @@ const z = ({
53
49
  viewBox: "0 0 24 24",
54
50
  onClick: () => {
55
51
  var r;
56
- return (r = c.current) == null ? void 0 : r.focus();
52
+ return (r = i.current) == null ? void 0 : r.focus();
57
53
  },
58
54
  children: [
59
55
  /* @__PURE__ */ t.jsx("title", { children: "Magnifying Glass" }),
@@ -67,16 +63,16 @@ const z = ({
67
63
  ]
68
64
  }
69
65
  ),
70
- suffix: f && p.length > 0 ? /* @__PURE__ */ t.jsx(
66
+ suffix: n && a.length > 0 ? /* @__PURE__ */ t.jsx(
71
67
  "button",
72
68
  {
73
69
  type: "button",
74
- className: b(
70
+ className: S(
75
71
  "proton-SearchInput__button",
76
72
  "proton-Input__descriptor",
77
73
  "proton-Input__suffix"
78
74
  ),
79
- "data-testid": `${a}-clear`,
75
+ "data-testid": `${l}-clear`,
80
76
  onClick: j,
81
77
  "aria-label": "Clear search",
82
78
  children: /* @__PURE__ */ t.jsxs(
@@ -113,6 +109,6 @@ const z = ({
113
109
  );
114
110
  };
115
111
  export {
116
- z as SearchInput
112
+ k as SearchInput
117
113
  };
118
114
  //# sourceMappingURL=SearchInput.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SearchInput.es.js","sources":["../../../../src/components/Input/SearchInput/SearchInput.tsx"],"sourcesContent":["\"use client\";\n\nimport { useEffect, useRef, useState } from \"react\";\nimport \"./SearchInput.css\";\nimport { csx } from \"../../../utils\";\nimport { Input, type BaseInputProps } from \"../BaseInput/Input\";\n\nexport interface SearchInputProps\n extends Omit<\n BaseInputProps,\n | \"prefix\"\n | \"suffix\"\n | \"value\"\n | \"onChange\"\n | \"description\"\n | \"descriptionPosition\"\n | \"label\"\n > {\n /** The initial value of the input. */\n defaultValue?: string;\n\n /** Should the clear button be shown when there is text? */\n isClearable?: boolean;\n\n /** Called when the input value changes. */\n onChange?: (value: string) => void;\n\n /** Called when the clear button is clicked. */\n onClear?: () => void;\n\n /** The current value of the input (for controlled usage) */\n value?: string;\n}\n\n/**\n * A search input component with optional clear functionality and URL parameter sync.\n *\n * API:\n * - {@link SearchInputProps}\n * - extends {@link BaseInputProps}\n */\nexport const SearchInput = ({\n name = \"search\",\n placeholder = \"Search...\",\n autoComplete,\n isClearable = true,\n isDisabled = false,\n error,\n defaultValue,\n value: controlledValue,\n \"data-testid\": testId = \"proton-SearchInput\",\n onChange,\n onClear,\n}: SearchInputProps) => {\n const inputRef = useRef<HTMLInputElement>(null);\n const [value, setValue] = useState(controlledValue ?? defaultValue ?? \"\");\n\n // Sync with controlled value if provided\n useEffect(() => {\n if (controlledValue !== undefined) {\n setValue(controlledValue);\n }\n }, [controlledValue]);\n\n const handleChange = (newValue: string) => {\n setValue(newValue);\n onChange?.(newValue);\n };\n\n const handleClear = () => {\n setValue(\"\");\n onChange?.(\"\");\n onClear?.();\n inputRef.current?.focus();\n };\n\n return (\n <div\n className=\"proton-SearchInput__wrapper\"\n data-testid={testId}\n role=\"search\"\n >\n <Input\n type=\"search\"\n onChange={handleChange}\n value={value}\n name={name}\n placeholder={placeholder}\n autoComplete={autoComplete}\n error={error}\n ref={inputRef}\n isDisabled={isDisabled}\n prefix={\n <svg\n aria-hidden=\"true\"\n width=\"2.8em\"\n height=\"1.6em\"\n viewBox=\"0 0 24 24\"\n onClick={() => inputRef.current?.focus()}\n >\n <title>Magnifying Glass</title>\n <path\n fill=\"currentColor\"\n d=\"M10.5 18.5a8 8 0 1 1 0-16 8 8 0 0 1 0 16Zm0-1a7 7 0 1 0 0-14 7 7 0 0 0 0 14Zm5.25-.75 4.5 4.5-1.25 1.25-4.5-4.5 1.25-1.25Z\"\n />\n </svg>\n }\n suffix={\n isClearable && value.length > 0 ? (\n <button\n type=\"button\"\n className={csx(\n \"proton-SearchInput__button\",\n \"proton-Input__descriptor\",\n \"proton-Input__suffix\"\n )}\n data-testid={`${testId}-clear`}\n onClick={handleClear}\n aria-label=\"Clear search\"\n >\n <svg\n aria-hidden=\"true\"\n viewBox=\"0 0 50 50\"\n width=\"2.2em\"\n height=\"1.2em\"\n >\n <title>Clear</title>\n <path\n fill=\"currentColor\"\n d=\"m37.304 11.282l1.414 1.414l-26.022 26.02l-1.414-1.413z\"\n />\n <path\n fill=\"currentColor\"\n d=\"m12.696 11.282l26.022 26.02l-1.414 1.415l-26.022-26.02z\"\n />\n </svg>\n </button>\n ) : null\n }\n />\n </div>\n );\n};\n"],"names":["SearchInput","name","placeholder","autoComplete","isClearable","isDisabled","error","defaultValue","controlledValue","testId","onChange","onClear","inputRef","useRef","value","setValue","useState","useEffect","handleChange","newValue","handleClear","_a","jsx","Input","jsxs","csx"],"mappings":";;;;;AAyCO,MAAMA,IAAc,CAAC;AAAA,EAC1B,MAAAC,IAAO;AAAA,EACP,aAAAC,IAAc;AAAA,EACd,cAAAC;AAAA,EACA,aAAAC,IAAc;AAAA,EACd,YAAAC,IAAa;AAAA,EACb,OAAAC;AAAA,EACA,cAAAC;AAAA,EACA,OAAOC;AAAA,EACP,eAAeC,IAAS;AAAA,EACxB,UAAAC;AAAA,EACA,SAAAC;AACF,MAAwB;AAChB,QAAAC,IAAWC,EAAyB,IAAI,GACxC,CAACC,GAAOC,CAAQ,IAAIC,EAASR,KAAmBD,KAAgB,EAAE;AAGxE,EAAAU,EAAU,MAAM;AACd,IAAIT,MAAoB,UACtBO,EAASP,CAAe;AAAA,EAC1B,GACC,CAACA,CAAe,CAAC;AAEd,QAAAU,IAAe,CAACC,MAAqB;AACzC,IAAAJ,EAASI,CAAQ,GACjBT,KAAA,QAAAA,EAAWS;AAAA,EAAQ,GAGfC,IAAc,MAAM;;AACxB,IAAAL,EAAS,EAAE,GACXL,KAAA,QAAAA,EAAW,KACDC,KAAA,QAAAA,MACVU,IAAAT,EAAS,YAAT,QAAAS,EAAkB;AAAA,EAAM;AAIxB,SAAAC,gBAAAA,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAU;AAAA,MACV,eAAab;AAAA,MACb,MAAK;AAAA,MAEL,UAAAa,gBAAAA,EAAA;AAAA,QAACC;AAAA,QAAA;AAAA,UACC,MAAK;AAAA,UACL,UAAUL;AAAA,UACV,OAAAJ;AAAA,UACA,MAAAb;AAAA,UACA,aAAAC;AAAA,UACA,cAAAC;AAAA,UACA,OAAAG;AAAA,UACA,KAAKM;AAAA,UACL,YAAAP;AAAA,UACA,QACEmB,gBAAAA,EAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,eAAY;AAAA,cACZ,OAAM;AAAA,cACN,QAAO;AAAA,cACP,SAAQ;AAAA,cACR,SAAS,MAAM;;AAAA,wBAAAH,IAAAT,EAAS,YAAT,gBAAAS,EAAkB;AAAA;AAAA,cAEjC,UAAA;AAAA,gBAAAC,gBAAAA,EAAAA,IAAC,WAAM,UAAgB,mBAAA,CAAA;AAAA,gBACvBA,gBAAAA,EAAA;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC,MAAK;AAAA,oBACL,GAAE;AAAA,kBAAA;AAAA,gBACJ;AAAA,cAAA;AAAA,YAAA;AAAA,UACF;AAAA,UAEF,QACElB,KAAeU,EAAM,SAAS,IAC5BQ,gBAAAA,EAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,MAAK;AAAA,cACL,WAAWG;AAAA,gBACT;AAAA,gBACA;AAAA,gBACA;AAAA,cACF;AAAA,cACA,eAAa,GAAGhB,CAAM;AAAA,cACtB,SAASW;AAAA,cACT,cAAW;AAAA,cAEX,UAAAI,gBAAAA,EAAA;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,eAAY;AAAA,kBACZ,SAAQ;AAAA,kBACR,OAAM;AAAA,kBACN,QAAO;AAAA,kBAEP,UAAA;AAAA,oBAAAF,gBAAAA,EAAAA,IAAC,WAAM,UAAK,QAAA,CAAA;AAAA,oBACZA,gBAAAA,EAAA;AAAA,sBAAC;AAAA,sBAAA;AAAA,wBACC,MAAK;AAAA,wBACL,GAAE;AAAA,sBAAA;AAAA,oBACJ;AAAA,oBACAA,gBAAAA,EAAA;AAAA,sBAAC;AAAA,sBAAA;AAAA,wBACC,MAAK;AAAA,wBACL,GAAE;AAAA,sBAAA;AAAA,oBACJ;AAAA,kBAAA;AAAA,gBAAA;AAAA,cACF;AAAA,YAAA;AAAA,UAAA,IAEA;AAAA,QAAA;AAAA,MAER;AAAA,IAAA;AAAA,EAAA;AAGN;"}
1
+ {"version":3,"file":"SearchInput.es.js","sources":["../../../../src/components/Input/SearchInput/SearchInput.tsx"],"sourcesContent":["\"use client\";\n\nimport { useEffect, useRef, useState } from \"react\";\nimport \"./SearchInput.css\";\nimport { csx } from \"../../../utils\";\nimport { Input, type BaseInputProps } from \"../BaseInput/Input\";\n\nexport interface SearchInputProps\n extends Omit<\n BaseInputProps,\n | \"prefix\"\n | \"suffix\"\n | \"value\"\n | \"onChange\"\n | \"description\"\n | \"descriptionPosition\"\n | \"label\"\n > {\n /** The initial value of the input. */\n defaultValue?: string;\n\n /** Should the clear button be shown when there is text? */\n isClearable?: boolean;\n\n /** Called when the input value changes. */\n onChange?: (value: string) => void;\n\n /** Called when the clear button is clicked. */\n onClear?: () => void;\n\n /** The current value of the input (for controlled usage) */\n value?: string;\n}\n\n/**\n * A search input component with optional clear functionality and URL parameter sync.\n *\n * API:\n * - {@link SearchInputProps}\n * - extends {@link BaseInputProps}\n */\nexport const SearchInput = ({\n name = \"search\",\n placeholder = \"Search...\",\n autoComplete,\n isClearable = true,\n isDisabled = false,\n error,\n defaultValue,\n value: controlledValue,\n \"data-testid\": testId = \"proton-SearchInput\",\n onChange,\n onClear,\n}: SearchInputProps) => {\n const inputRef = useRef<HTMLInputElement>(null);\n const [value, setValue] = useState(controlledValue ?? defaultValue ?? \"\");\n\n const handleChange = (newValue: string) => {\n setValue(newValue);\n onChange?.(newValue);\n };\n\n const handleClear = () => {\n setValue(\"\");\n onChange?.(\"\");\n onClear?.();\n inputRef.current?.focus();\n };\n\n return (\n <div\n className=\"proton-SearchInput__wrapper\"\n data-testid={testId}\n role=\"search\"\n >\n <Input\n type=\"search\"\n onChange={handleChange}\n value={value}\n name={name}\n placeholder={placeholder}\n autoComplete={autoComplete}\n error={error}\n ref={inputRef}\n isDisabled={isDisabled}\n prefix={\n <svg\n aria-hidden=\"true\"\n width=\"2.8em\"\n height=\"1.6em\"\n viewBox=\"0 0 24 24\"\n onClick={() => inputRef.current?.focus()}\n >\n <title>Magnifying Glass</title>\n <path\n fill=\"currentColor\"\n d=\"M10.5 18.5a8 8 0 1 1 0-16 8 8 0 0 1 0 16Zm0-1a7 7 0 1 0 0-14 7 7 0 0 0 0 14Zm5.25-.75 4.5 4.5-1.25 1.25-4.5-4.5 1.25-1.25Z\"\n />\n </svg>\n }\n suffix={\n isClearable && value.length > 0 ? (\n <button\n type=\"button\"\n className={csx(\n \"proton-SearchInput__button\",\n \"proton-Input__descriptor\",\n \"proton-Input__suffix\"\n )}\n data-testid={`${testId}-clear`}\n onClick={handleClear}\n aria-label=\"Clear search\"\n >\n <svg\n aria-hidden=\"true\"\n viewBox=\"0 0 50 50\"\n width=\"2.2em\"\n height=\"1.2em\"\n >\n <title>Clear</title>\n <path\n fill=\"currentColor\"\n d=\"m37.304 11.282l1.414 1.414l-26.022 26.02l-1.414-1.413z\"\n />\n <path\n fill=\"currentColor\"\n d=\"m12.696 11.282l26.022 26.02l-1.414 1.415l-26.022-26.02z\"\n />\n </svg>\n </button>\n ) : null\n }\n />\n </div>\n );\n};\n"],"names":["SearchInput","name","placeholder","autoComplete","isClearable","isDisabled","error","defaultValue","controlledValue","testId","onChange","onClear","inputRef","useRef","value","setValue","useState","handleChange","newValue","handleClear","_a","jsx","Input","jsxs","csx"],"mappings":";;;;;AAyCO,MAAMA,IAAc,CAAC;AAAA,EAC1B,MAAAC,IAAO;AAAA,EACP,aAAAC,IAAc;AAAA,EACd,cAAAC;AAAA,EACA,aAAAC,IAAc;AAAA,EACd,YAAAC,IAAa;AAAA,EACb,OAAAC;AAAA,EACA,cAAAC;AAAA,EACA,OAAOC;AAAA,EACP,eAAeC,IAAS;AAAA,EACxB,UAAAC;AAAA,EACA,SAAAC;AACF,MAAwB;AAChB,QAAAC,IAAWC,EAAyB,IAAI,GACxC,CAACC,GAAOC,CAAQ,IAAIC,EAASR,KAAmBD,KAAgB,EAAE,GAElEU,IAAe,CAACC,MAAqB;AACzC,IAAAH,EAASG,CAAQ,GACjBR,KAAA,QAAAA,EAAWQ;AAAA,EAAQ,GAGfC,IAAc,MAAM;;AACxB,IAAAJ,EAAS,EAAE,GACXL,KAAA,QAAAA,EAAW,KACDC,KAAA,QAAAA,MACVS,IAAAR,EAAS,YAAT,QAAAQ,EAAkB;AAAA,EAAM;AAIxB,SAAAC,gBAAAA,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAU;AAAA,MACV,eAAaZ;AAAA,MACb,MAAK;AAAA,MAEL,UAAAY,gBAAAA,EAAA;AAAA,QAACC;AAAA,QAAA;AAAA,UACC,MAAK;AAAA,UACL,UAAUL;AAAA,UACV,OAAAH;AAAA,UACA,MAAAb;AAAA,UACA,aAAAC;AAAA,UACA,cAAAC;AAAA,UACA,OAAAG;AAAA,UACA,KAAKM;AAAA,UACL,YAAAP;AAAA,UACA,QACEkB,gBAAAA,EAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,eAAY;AAAA,cACZ,OAAM;AAAA,cACN,QAAO;AAAA,cACP,SAAQ;AAAA,cACR,SAAS,MAAM;;AAAA,wBAAAH,IAAAR,EAAS,YAAT,gBAAAQ,EAAkB;AAAA;AAAA,cAEjC,UAAA;AAAA,gBAAAC,gBAAAA,EAAAA,IAAC,WAAM,UAAgB,mBAAA,CAAA;AAAA,gBACvBA,gBAAAA,EAAA;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC,MAAK;AAAA,oBACL,GAAE;AAAA,kBAAA;AAAA,gBACJ;AAAA,cAAA;AAAA,YAAA;AAAA,UACF;AAAA,UAEF,QACEjB,KAAeU,EAAM,SAAS,IAC5BO,gBAAAA,EAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,MAAK;AAAA,cACL,WAAWG;AAAA,gBACT;AAAA,gBACA;AAAA,gBACA;AAAA,cACF;AAAA,cACA,eAAa,GAAGf,CAAM;AAAA,cACtB,SAASU;AAAA,cACT,cAAW;AAAA,cAEX,UAAAI,gBAAAA,EAAA;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,eAAY;AAAA,kBACZ,SAAQ;AAAA,kBACR,OAAM;AAAA,kBACN,QAAO;AAAA,kBAEP,UAAA;AAAA,oBAAAF,gBAAAA,EAAAA,IAAC,WAAM,UAAK,QAAA,CAAA;AAAA,oBACZA,gBAAAA,EAAA;AAAA,sBAAC;AAAA,sBAAA;AAAA,wBACC,MAAK;AAAA,wBACL,GAAE;AAAA,sBAAA;AAAA,oBACJ;AAAA,oBACAA,gBAAAA,EAAA;AAAA,sBAAC;AAAA,sBAAA;AAAA,wBACC,MAAK;AAAA,wBACL,GAAE;AAAA,sBAAA;AAAA,oBACJ;AAAA,kBAAA;AAAA,gBAAA;AAAA,cACF;AAAA,YAAA;AAAA,UAAA,IAEA;AAAA,QAAA;AAAA,MAER;AAAA,IAAA;AAAA,EAAA;AAGN;"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("../../node_modules/react/jsx-runtime.cjs.js"),R=require("react"),E=require("../../hooks/useIsClosing.cjs.js"),_=require("../Button/Button.cjs.js");;/* empty css */const b=require("../ScreenOverlay/ScreenOverlay.cjs.js"),C=require("../../hooks/useBreakpoint.cjs.js"),g=require("../../constants/breakpoint.cjs.js"),h=require("../../utils/string.cjs.js"),d=({children:t})=>s.jsxRuntimeExports.jsx("h2",{className:"proton-Modal__title",children:t}),x=({children:t})=>s.jsxRuntimeExports.jsx("h3",{className:"proton-Modal__subtitle",children:t}),j=({children:t})=>s.jsxRuntimeExports.jsx("div",{className:"proton-Modal__body",children:t}),q=t=>s.jsxRuntimeExports.jsx("div",{className:"proton-Modal__action",children:s.jsxRuntimeExports.jsx(_.Button,{...t})}),v=({children:t})=>s.jsxRuntimeExports.jsx("div",{className:"proton-Modal__actions",children:t}),N=({title:t,subtitle:o,body:e,onClose:n,children:r,isClosing:i,"data-testid":l})=>s.jsxRuntimeExports.jsxs("div",{"data-testid":l,className:h.csx("proton-Modal",i&&"proton-Modal--closing"),role:"dialog",tabIndex:-1,children:[s.jsxRuntimeExports.jsx("button",{name:"Close",className:"proton-Modal__close-button",onClick:n,"aria-label":"Close",children:"×"}),t&&s.jsxRuntimeExports.jsx(d,{children:t}),o&&s.jsxRuntimeExports.jsx(x,{children:o}),e&&s.jsxRuntimeExports.jsx(j,{children:e}),s.jsxRuntimeExports.jsx("div",{className:"proton-Modal__content",children:r})]}),B=({isOpen:t,onClose:o,title:e,subtitle:n,body:r,children:i,isOverlay:l=!0,"data-testid":p})=>{const a=R.useRef(null),{isClosing:m,handleClose:c}=E.useIsClosing({onClose:o,overlayRef:a}),M=C.useBreakpoint(g.BREAKPOINTS.MEDIUM);if(!t)return null;const u=s.jsxRuntimeExports.jsx(N,{isOpen:t,title:e,subtitle:n,body:r,onClose:c,isClosing:m,"data-testid":p,children:i});return l||M?s.jsxRuntimeExports.jsx(b.ScreenOverlay,{fadeIn:!0,ref:a,onClose:c,children:u}):u},y=Object.assign(B,{Title:d,Subtitle:x,Body:j,Action:q,Actions:v});exports.Modal=y;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("../../node_modules/react/jsx-runtime.cjs.js"),R=require("react"),E=require("../../hooks/useIsClosing.cjs.js"),_=require("../Button/Button.cjs.js");;/* empty css */const b=require("../ScreenOverlay/ScreenOverlay.cjs.js"),C=require("../../hooks/useBreakpoint.cjs.js"),g=require("../../constants/breakpoint.cjs.js"),h=require("../../utils/string.cjs.js"),d=({children:t})=>o.jsxRuntimeExports.jsx("h2",{className:"proton-Modal__title",children:t}),x=({children:t})=>o.jsxRuntimeExports.jsx("h3",{className:"proton-Modal__subtitle",children:t}),j=({children:t})=>o.jsxRuntimeExports.jsx("div",{className:"proton-Modal__body",children:t}),q=t=>o.jsxRuntimeExports.jsx("div",{className:"proton-Modal__action",children:o.jsxRuntimeExports.jsx(_.Button,{...t})}),v=({children:t})=>o.jsxRuntimeExports.jsx("div",{className:"proton-Modal__actions",children:t}),N=({title:t,subtitle:s,body:e,onClose:n,children:r,isClosing:i,"data-testid":a})=>o.jsxRuntimeExports.jsxs("div",{"data-testid":a,className:h.csx("proton-Modal",i&&"proton-Modal--closing"),"aria-modal":"true",role:"dialog",tabIndex:-1,children:[o.jsxRuntimeExports.jsx("button",{name:"Close",className:"proton-Modal__close-button",onClick:n,"aria-label":"Close",children:"×"}),t&&o.jsxRuntimeExports.jsx(d,{children:t}),s&&o.jsxRuntimeExports.jsx(x,{children:s}),e&&o.jsxRuntimeExports.jsx(j,{children:e}),o.jsxRuntimeExports.jsx("div",{className:"proton-Modal__content",children:r})]}),B=({isOpen:t,onClose:s,title:e,subtitle:n,body:r,children:i,isOverlay:a=!0,"data-testid":p})=>{const l=R.useRef(null),{isClosing:m,handleClose:c}=E.useIsClosing({onClose:s,overlayRef:l}),M=C.useBreakpoint(g.BREAKPOINTS.MEDIUM);if(!t)return null;const u=o.jsxRuntimeExports.jsx(N,{isOpen:t,title:e,subtitle:n,body:r,onClose:c,isClosing:m,"data-testid":p,children:i});return a||M?o.jsxRuntimeExports.jsx(b.ScreenOverlay,{fadeIn:!0,ref:l,onClose:c,children:u}):u},y=Object.assign(B,{Title:d,Subtitle:x,Body:j,Action:q,Actions:v});exports.Modal=y;
2
2
  //# sourceMappingURL=Modal.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Modal.cjs.js","sources":["../../../src/components/Modal/Modal.tsx"],"sourcesContent":["\"use client\";\n\nimport { useRef } from \"react\";\nimport { BREAKPOINTS } from \"../../constants\";\nimport { useBreakpoint } from \"../../hooks\";\nimport { useIsClosing } from \"../../hooks/useIsClosing\";\nimport { csx } from \"../../utils\";\nimport { Button, ButtonProps } from \"../Button/Button\";\nimport \"./Modal.css\";\nimport { ScreenOverlay } from \"../ScreenOverlay/ScreenOverlay\";\n\nconst ModalTitle = ({ children }: { children: React.ReactNode }) => {\n return <h2 className=\"proton-Modal__title\">{children}</h2>;\n};\n\nconst ModalSubtitle = ({ children }: { children: React.ReactNode }) => {\n return <h3 className=\"proton-Modal__subtitle\">{children}</h3>;\n};\n\nconst ModalBody = ({ children }: { children: React.ReactNode }) => {\n return <div className=\"proton-Modal__body\">{children}</div>;\n};\n\nconst ModalAction = (buttonProps: ButtonProps) => {\n return (\n <div className=\"proton-Modal__action\">\n <Button {...buttonProps} />\n </div>\n );\n};\n\nconst ModalActions = ({ children }: { children: React.ReactNode }) => {\n return <div className=\"proton-Modal__actions\">{children}</div>;\n};\n\nconst ModalContent = ({\n title,\n subtitle,\n body,\n onClose,\n children,\n isClosing,\n \"data-testid\": dataTestId,\n}: ModalProps & {\n isClosing: boolean;\n}) => {\n return (\n <div\n data-testid={dataTestId}\n className={csx(\"proton-Modal\", isClosing && \"proton-Modal--closing\")}\n role=\"dialog\"\n tabIndex={-1}\n >\n <button\n name=\"Close\"\n className=\"proton-Modal__close-button\"\n onClick={onClose}\n aria-label=\"Close\"\n >\n ×\n </button>\n {title && <ModalTitle>{title}</ModalTitle>}\n {subtitle && <ModalSubtitle>{subtitle}</ModalSubtitle>}\n {body && <ModalBody>{body}</ModalBody>}\n <div className=\"proton-Modal__content\">{children}</div>\n </div>\n );\n};\n\nexport interface ModalProps {\n /**\n * Optional body text content for the modal\n * */\n body?: string;\n /**\n * Content to render inside the modal\n * */\n children: React.ReactNode;\n /**\n * data-testid for the modal\n * */\n \"data-testid\"?: string;\n /**\n * Controls the visibility of the modal\n * */\n isOpen: boolean;\n /**\n * Whether to show the modal with an overlay background.\n * @default true\n * */\n isOverlay?: boolean;\n /**\n * Callback function when modal is closed\n * */\n onClose?: () => void;\n /**\n * Optional subtitle text below the modal title\n * */\n subtitle?: string;\n /**\n * Optional title text for the modal header\n * */\n title?: string;\n}\n\n/**\n * Modal component with overlay support and responsive behavior.\n *\n * API:\n * - {@link ModalProps}\n */\nconst ModalWrapper = ({\n isOpen,\n onClose,\n title,\n subtitle,\n body,\n children,\n isOverlay = true,\n \"data-testid\": dataTestId,\n}: ModalProps) => {\n const overlayRef = useRef<HTMLDivElement>(null);\n const { isClosing, handleClose } = useIsClosing({\n onClose,\n overlayRef,\n });\n const isMobile = useBreakpoint(BREAKPOINTS.MEDIUM);\n\n if (!isOpen) return null;\n\n const modalContent = (\n <ModalContent\n isOpen={isOpen}\n title={title}\n subtitle={subtitle}\n body={body}\n onClose={handleClose}\n isClosing={isClosing}\n data-testid={dataTestId}\n >\n {children}\n </ModalContent>\n );\n\n return isOverlay || isMobile ? (\n <ScreenOverlay fadeIn ref={overlayRef} onClose={handleClose}>\n {modalContent}\n </ScreenOverlay>\n ) : (\n modalContent\n );\n};\n\nexport const Modal = Object.assign(ModalWrapper, {\n /**\n * Renders a h2 styled title\n * */\n Title: ModalTitle,\n /**\n * Renders a h3 styled subtitle\n * */\n Subtitle: ModalSubtitle,\n /**\n * Renders a div styled body\n * */\n Body: ModalBody,\n /**\n * Renders a Proton Button action\n * - @prop buttonProps {@link ButtonProps}\n * */\n Action: ModalAction,\n /**\n * Renders a group of Proton Buttons\n * */\n Actions: ModalActions,\n});\n"],"names":["ModalTitle","children","jsx","ModalSubtitle","ModalBody","ModalAction","buttonProps","Button","ModalActions","ModalContent","title","subtitle","body","onClose","isClosing","dataTestId","jsxs","csx","ModalWrapper","isOpen","isOverlay","overlayRef","useRef","handleClose","useIsClosing","isMobile","useBreakpoint","BREAKPOINTS","modalContent","ScreenOverlay","Modal"],"mappings":"+cAWMA,EAAa,CAAC,CAAE,SAAAC,KACZC,EAAAA,kBAAAA,IAAA,KAAA,CAAG,UAAU,sBAAuB,SAAAD,CAAS,CAAA,EAGjDE,EAAgB,CAAC,CAAE,SAAAF,KACfC,EAAAA,kBAAAA,IAAA,KAAA,CAAG,UAAU,yBAA0B,SAAAD,CAAS,CAAA,EAGpDG,EAAY,CAAC,CAAE,SAAAH,KACXC,EAAAA,kBAAAA,IAAA,MAAA,CAAI,UAAU,qBAAsB,SAAAD,CAAS,CAAA,EAGjDI,EAAeC,GAEjBJ,wBAAC,OAAI,UAAU,uBACb,iCAACK,EAAQ,OAAA,CAAA,GAAGD,CAAa,CAAA,CAC3B,CAAA,EAIEE,EAAe,CAAC,CAAE,SAAAP,KACdC,EAAAA,kBAAAA,IAAA,MAAA,CAAI,UAAU,wBAAyB,SAAAD,CAAS,CAAA,EAGpDQ,EAAe,CAAC,CACpB,MAAAC,EACA,SAAAC,EACA,KAAAC,EACA,QAAAC,EACA,SAAAZ,EACA,UAAAa,EACA,cAAeC,CACjB,IAIIC,EAAA,kBAAA,KAAC,MAAA,CACC,cAAaD,EACb,UAAWE,EAAA,IAAI,eAAgBH,GAAa,uBAAuB,EACnE,KAAK,SACL,SAAU,GAEV,SAAA,CAAAZ,EAAA,kBAAA,IAAC,SAAA,CACC,KAAK,QACL,UAAU,6BACV,QAASW,EACT,aAAW,QACZ,SAAA,GAAA,CAED,EACCH,GAAUR,EAAAA,kBAAAA,IAAAF,EAAA,CAAY,SAAMU,CAAA,CAAA,EAC5BC,GAAaT,EAAAA,kBAAAA,IAAAC,EAAA,CAAe,SAASQ,CAAA,CAAA,EACrCC,GAASV,EAAAA,kBAAAA,IAAAE,EAAA,CAAW,SAAKQ,CAAA,CAAA,EACzBV,EAAAA,kBAAAA,IAAA,MAAA,CAAI,UAAU,wBAAyB,SAAAD,CAAS,CAAA,CAAA,CAAA,CAAA,EA+CjDiB,EAAe,CAAC,CACpB,OAAAC,EACA,QAAAN,EACA,MAAAH,EACA,SAAAC,EACA,KAAAC,EACA,SAAAX,EACA,UAAAmB,EAAY,GACZ,cAAeL,CACjB,IAAkB,CACV,MAAAM,EAAaC,SAAuB,IAAI,EACxC,CAAE,UAAAR,EAAW,YAAAS,CAAY,EAAIC,eAAa,CAC9C,QAAAX,EACA,WAAAQ,CAAA,CACD,EACKI,EAAWC,EAAAA,cAAcC,EAAA,YAAY,MAAM,EAE7C,GAAA,CAACR,EAAe,OAAA,KAEpB,MAAMS,EACJ1B,EAAA,kBAAA,IAACO,EAAA,CACC,OAAAU,EACA,MAAAT,EACA,SAAAC,EACA,KAAAC,EACA,QAASW,EACT,UAAAT,EACA,cAAaC,EAEZ,SAAAd,CAAA,CAAA,EAIE,OAAAmB,GAAaK,EAClBvB,EAAAA,kBAAAA,IAAC2B,EAAAA,cAAc,CAAA,OAAM,GAAC,IAAKR,EAAY,QAASE,EAC7C,SAAAK,CAAA,CACH,EAEAA,CAEJ,EAEaE,EAAQ,OAAO,OAAOZ,EAAc,CAI/C,MAAOlB,EAIP,SAAUG,EAIV,KAAMC,EAKN,OAAQC,EAIR,QAASG,CACX,CAAC"}
1
+ {"version":3,"file":"Modal.cjs.js","sources":["../../../src/components/Modal/Modal.tsx"],"sourcesContent":["\"use client\";\n\nimport { useRef } from \"react\";\nimport { BREAKPOINTS } from \"../../constants\";\nimport { useBreakpoint } from \"../../hooks\";\nimport { useIsClosing } from \"../../hooks/useIsClosing\";\nimport { csx } from \"../../utils\";\nimport { Button, ButtonProps } from \"../Button/Button\";\nimport \"./Modal.css\";\nimport { ScreenOverlay } from \"../ScreenOverlay/ScreenOverlay\";\n\nconst ModalTitle = ({ children }: { children: React.ReactNode }) => {\n return <h2 className=\"proton-Modal__title\">{children}</h2>;\n};\n\nconst ModalSubtitle = ({ children }: { children: React.ReactNode }) => {\n return <h3 className=\"proton-Modal__subtitle\">{children}</h3>;\n};\n\nconst ModalBody = ({ children }: { children: React.ReactNode }) => {\n return <div className=\"proton-Modal__body\">{children}</div>;\n};\n\nconst ModalAction = (buttonProps: ButtonProps) => {\n return (\n <div className=\"proton-Modal__action\">\n <Button {...buttonProps} />\n </div>\n );\n};\n\nconst ModalActions = ({ children }: { children: React.ReactNode }) => {\n return <div className=\"proton-Modal__actions\">{children}</div>;\n};\n\nconst ModalContent = ({\n title,\n subtitle,\n body,\n onClose,\n children,\n isClosing,\n \"data-testid\": dataTestId,\n}: ModalProps & {\n isClosing: boolean;\n}) => {\n return (\n <div\n data-testid={dataTestId}\n className={csx(\"proton-Modal\", isClosing && \"proton-Modal--closing\")}\n aria-modal=\"true\"\n role=\"dialog\"\n tabIndex={-1}\n >\n <button\n name=\"Close\"\n className=\"proton-Modal__close-button\"\n onClick={onClose}\n aria-label=\"Close\"\n >\n ×\n </button>\n {title && <ModalTitle>{title}</ModalTitle>}\n {subtitle && <ModalSubtitle>{subtitle}</ModalSubtitle>}\n {body && <ModalBody>{body}</ModalBody>}\n <div className=\"proton-Modal__content\">{children}</div>\n </div>\n );\n};\n\nexport interface ModalProps {\n /**\n * Optional body text content for the modal\n * */\n body?: string;\n /**\n * Content to render inside the modal\n * */\n children: React.ReactNode;\n /**\n * data-testid for the modal\n * */\n \"data-testid\"?: string;\n /**\n * Controls the visibility of the modal\n * */\n isOpen: boolean;\n /**\n * Whether to show the modal with an overlay background.\n * @default true\n * */\n isOverlay?: boolean;\n /**\n * Callback function when modal is closed\n * */\n onClose?: () => void;\n /**\n * Optional subtitle text below the modal title\n * */\n subtitle?: string;\n /**\n * Optional title text for the modal header\n * */\n title?: string;\n}\n\n/**\n * Modal component with overlay support and responsive behavior.\n *\n * API:\n * - {@link ModalProps}\n */\nconst ModalWrapper = ({\n isOpen,\n onClose,\n title,\n subtitle,\n body,\n children,\n isOverlay = true,\n \"data-testid\": dataTestId,\n}: ModalProps) => {\n const overlayRef = useRef<HTMLDivElement>(null);\n const { isClosing, handleClose } = useIsClosing({\n onClose,\n overlayRef,\n });\n const isMobile = useBreakpoint(BREAKPOINTS.MEDIUM);\n\n if (!isOpen) return null;\n\n const modalContent = (\n <ModalContent\n isOpen={isOpen}\n title={title}\n subtitle={subtitle}\n body={body}\n onClose={handleClose}\n isClosing={isClosing}\n data-testid={dataTestId}\n >\n {children}\n </ModalContent>\n );\n\n return isOverlay || isMobile ? (\n <ScreenOverlay fadeIn ref={overlayRef} onClose={handleClose}>\n {modalContent}\n </ScreenOverlay>\n ) : (\n modalContent\n );\n};\n\nexport const Modal = Object.assign(ModalWrapper, {\n /**\n * Renders a h2 styled title\n * */\n Title: ModalTitle,\n /**\n * Renders a h3 styled subtitle\n * */\n Subtitle: ModalSubtitle,\n /**\n * Renders a div styled body\n * */\n Body: ModalBody,\n /**\n * Renders a Proton Button action\n * - @prop buttonProps {@link ButtonProps}\n * */\n Action: ModalAction,\n /**\n * Renders a group of Proton Buttons\n * */\n Actions: ModalActions,\n});\n"],"names":["ModalTitle","children","jsx","ModalSubtitle","ModalBody","ModalAction","buttonProps","Button","ModalActions","ModalContent","title","subtitle","body","onClose","isClosing","dataTestId","jsxs","csx","ModalWrapper","isOpen","isOverlay","overlayRef","useRef","handleClose","useIsClosing","isMobile","useBreakpoint","BREAKPOINTS","modalContent","ScreenOverlay","Modal"],"mappings":"+cAWMA,EAAa,CAAC,CAAE,SAAAC,KACZC,EAAAA,kBAAAA,IAAA,KAAA,CAAG,UAAU,sBAAuB,SAAAD,CAAS,CAAA,EAGjDE,EAAgB,CAAC,CAAE,SAAAF,KACfC,EAAAA,kBAAAA,IAAA,KAAA,CAAG,UAAU,yBAA0B,SAAAD,CAAS,CAAA,EAGpDG,EAAY,CAAC,CAAE,SAAAH,KACXC,EAAAA,kBAAAA,IAAA,MAAA,CAAI,UAAU,qBAAsB,SAAAD,CAAS,CAAA,EAGjDI,EAAeC,GAEjBJ,wBAAC,OAAI,UAAU,uBACb,iCAACK,EAAQ,OAAA,CAAA,GAAGD,CAAa,CAAA,CAC3B,CAAA,EAIEE,EAAe,CAAC,CAAE,SAAAP,KACdC,EAAAA,kBAAAA,IAAA,MAAA,CAAI,UAAU,wBAAyB,SAAAD,CAAS,CAAA,EAGpDQ,EAAe,CAAC,CACpB,MAAAC,EACA,SAAAC,EACA,KAAAC,EACA,QAAAC,EACA,SAAAZ,EACA,UAAAa,EACA,cAAeC,CACjB,IAIIC,EAAA,kBAAA,KAAC,MAAA,CACC,cAAaD,EACb,UAAWE,EAAA,IAAI,eAAgBH,GAAa,uBAAuB,EACnE,aAAW,OACX,KAAK,SACL,SAAU,GAEV,SAAA,CAAAZ,EAAA,kBAAA,IAAC,SAAA,CACC,KAAK,QACL,UAAU,6BACV,QAASW,EACT,aAAW,QACZ,SAAA,GAAA,CAED,EACCH,GAAUR,EAAAA,kBAAAA,IAAAF,EAAA,CAAY,SAAMU,CAAA,CAAA,EAC5BC,GAAaT,EAAAA,kBAAAA,IAAAC,EAAA,CAAe,SAASQ,CAAA,CAAA,EACrCC,GAASV,EAAAA,kBAAAA,IAAAE,EAAA,CAAW,SAAKQ,CAAA,CAAA,EACzBV,EAAAA,kBAAAA,IAAA,MAAA,CAAI,UAAU,wBAAyB,SAAAD,CAAS,CAAA,CAAA,CAAA,CAAA,EA+CjDiB,EAAe,CAAC,CACpB,OAAAC,EACA,QAAAN,EACA,MAAAH,EACA,SAAAC,EACA,KAAAC,EACA,SAAAX,EACA,UAAAmB,EAAY,GACZ,cAAeL,CACjB,IAAkB,CACV,MAAAM,EAAaC,SAAuB,IAAI,EACxC,CAAE,UAAAR,EAAW,YAAAS,CAAY,EAAIC,eAAa,CAC9C,QAAAX,EACA,WAAAQ,CAAA,CACD,EACKI,EAAWC,EAAAA,cAAcC,EAAA,YAAY,MAAM,EAE7C,GAAA,CAACR,EAAe,OAAA,KAEpB,MAAMS,EACJ1B,EAAA,kBAAA,IAACO,EAAA,CACC,OAAAU,EACA,MAAAT,EACA,SAAAC,EACA,KAAAC,EACA,QAASW,EACT,UAAAT,EACA,cAAaC,EAEZ,SAAAd,CAAA,CAAA,EAIE,OAAAmB,GAAaK,EAClBvB,EAAAA,kBAAAA,IAAC2B,EAAAA,cAAc,CAAA,OAAM,GAAC,IAAKR,EAAY,QAASE,EAC7C,SAAAK,CAAA,CACH,EAEAA,CAEJ,EAEaE,EAAQ,OAAO,OAAOZ,EAAc,CAI/C,MAAOlB,EAIP,SAAUG,EAIV,KAAMC,EAKN,OAAQC,EAIR,QAASG,CACX,CAAC"}
@@ -13,13 +13,14 @@ const m = ({ children: o }) => /* @__PURE__ */ t.jsx("h2", { className: "proton-
13
13
  body: n,
14
14
  onClose: e,
15
15
  children: r,
16
- isClosing: l,
17
- "data-testid": a
16
+ isClosing: a,
17
+ "data-testid": l
18
18
  }) => /* @__PURE__ */ t.jsxs(
19
19
  "div",
20
20
  {
21
- "data-testid": a,
22
- className: v("proton-Modal", l && "proton-Modal--closing"),
21
+ "data-testid": l,
22
+ className: v("proton-Modal", a && "proton-Modal--closing"),
23
+ "aria-modal": "true",
23
24
  role: "dialog",
24
25
  tabIndex: -1,
25
26
  children: [
@@ -45,8 +46,8 @@ const m = ({ children: o }) => /* @__PURE__ */ t.jsx("h2", { className: "proton-
45
46
  title: n,
46
47
  subtitle: e,
47
48
  body: r,
48
- children: l,
49
- isOverlay: a = !0,
49
+ children: a,
50
+ isOverlay: l = !0,
50
51
  "data-testid": M
51
52
  }) => {
52
53
  const i = _(null), { isClosing: x, handleClose: d } = f({
@@ -64,10 +65,10 @@ const m = ({ children: o }) => /* @__PURE__ */ t.jsx("h2", { className: "proton-
64
65
  onClose: d,
65
66
  isClosing: x,
66
67
  "data-testid": M,
67
- children: l
68
+ children: a
68
69
  }
69
70
  );
70
- return a || j ? /* @__PURE__ */ t.jsx(C, { fadeIn: !0, ref: i, onClose: d, children: c }) : c;
71
+ return l || j ? /* @__PURE__ */ t.jsx(C, { fadeIn: !0, ref: i, onClose: d, children: c }) : c;
71
72
  }, P = Object.assign(I, {
72
73
  /**
73
74
  * Renders a h2 styled title
@@ -1 +1 @@
1
- {"version":3,"file":"Modal.es.js","sources":["../../../src/components/Modal/Modal.tsx"],"sourcesContent":["\"use client\";\n\nimport { useRef } from \"react\";\nimport { BREAKPOINTS } from \"../../constants\";\nimport { useBreakpoint } from \"../../hooks\";\nimport { useIsClosing } from \"../../hooks/useIsClosing\";\nimport { csx } from \"../../utils\";\nimport { Button, ButtonProps } from \"../Button/Button\";\nimport \"./Modal.css\";\nimport { ScreenOverlay } from \"../ScreenOverlay/ScreenOverlay\";\n\nconst ModalTitle = ({ children }: { children: React.ReactNode }) => {\n return <h2 className=\"proton-Modal__title\">{children}</h2>;\n};\n\nconst ModalSubtitle = ({ children }: { children: React.ReactNode }) => {\n return <h3 className=\"proton-Modal__subtitle\">{children}</h3>;\n};\n\nconst ModalBody = ({ children }: { children: React.ReactNode }) => {\n return <div className=\"proton-Modal__body\">{children}</div>;\n};\n\nconst ModalAction = (buttonProps: ButtonProps) => {\n return (\n <div className=\"proton-Modal__action\">\n <Button {...buttonProps} />\n </div>\n );\n};\n\nconst ModalActions = ({ children }: { children: React.ReactNode }) => {\n return <div className=\"proton-Modal__actions\">{children}</div>;\n};\n\nconst ModalContent = ({\n title,\n subtitle,\n body,\n onClose,\n children,\n isClosing,\n \"data-testid\": dataTestId,\n}: ModalProps & {\n isClosing: boolean;\n}) => {\n return (\n <div\n data-testid={dataTestId}\n className={csx(\"proton-Modal\", isClosing && \"proton-Modal--closing\")}\n role=\"dialog\"\n tabIndex={-1}\n >\n <button\n name=\"Close\"\n className=\"proton-Modal__close-button\"\n onClick={onClose}\n aria-label=\"Close\"\n >\n ×\n </button>\n {title && <ModalTitle>{title}</ModalTitle>}\n {subtitle && <ModalSubtitle>{subtitle}</ModalSubtitle>}\n {body && <ModalBody>{body}</ModalBody>}\n <div className=\"proton-Modal__content\">{children}</div>\n </div>\n );\n};\n\nexport interface ModalProps {\n /**\n * Optional body text content for the modal\n * */\n body?: string;\n /**\n * Content to render inside the modal\n * */\n children: React.ReactNode;\n /**\n * data-testid for the modal\n * */\n \"data-testid\"?: string;\n /**\n * Controls the visibility of the modal\n * */\n isOpen: boolean;\n /**\n * Whether to show the modal with an overlay background.\n * @default true\n * */\n isOverlay?: boolean;\n /**\n * Callback function when modal is closed\n * */\n onClose?: () => void;\n /**\n * Optional subtitle text below the modal title\n * */\n subtitle?: string;\n /**\n * Optional title text for the modal header\n * */\n title?: string;\n}\n\n/**\n * Modal component with overlay support and responsive behavior.\n *\n * API:\n * - {@link ModalProps}\n */\nconst ModalWrapper = ({\n isOpen,\n onClose,\n title,\n subtitle,\n body,\n children,\n isOverlay = true,\n \"data-testid\": dataTestId,\n}: ModalProps) => {\n const overlayRef = useRef<HTMLDivElement>(null);\n const { isClosing, handleClose } = useIsClosing({\n onClose,\n overlayRef,\n });\n const isMobile = useBreakpoint(BREAKPOINTS.MEDIUM);\n\n if (!isOpen) return null;\n\n const modalContent = (\n <ModalContent\n isOpen={isOpen}\n title={title}\n subtitle={subtitle}\n body={body}\n onClose={handleClose}\n isClosing={isClosing}\n data-testid={dataTestId}\n >\n {children}\n </ModalContent>\n );\n\n return isOverlay || isMobile ? (\n <ScreenOverlay fadeIn ref={overlayRef} onClose={handleClose}>\n {modalContent}\n </ScreenOverlay>\n ) : (\n modalContent\n );\n};\n\nexport const Modal = Object.assign(ModalWrapper, {\n /**\n * Renders a h2 styled title\n * */\n Title: ModalTitle,\n /**\n * Renders a h3 styled subtitle\n * */\n Subtitle: ModalSubtitle,\n /**\n * Renders a div styled body\n * */\n Body: ModalBody,\n /**\n * Renders a Proton Button action\n * - @prop buttonProps {@link ButtonProps}\n * */\n Action: ModalAction,\n /**\n * Renders a group of Proton Buttons\n * */\n Actions: ModalActions,\n});\n"],"names":["ModalTitle","children","jsx","ModalSubtitle","ModalBody","ModalAction","buttonProps","Button","ModalActions","ModalContent","title","subtitle","body","onClose","isClosing","dataTestId","jsxs","csx","ModalWrapper","isOpen","isOverlay","overlayRef","useRef","handleClose","useIsClosing","isMobile","useBreakpoint","BREAKPOINTS","modalContent","ScreenOverlay","Modal"],"mappings":";;;;;;;;;AAWA,MAAMA,IAAa,CAAC,EAAE,UAAAC,QACZC,gBAAAA,EAAAA,IAAA,MAAA,EAAG,WAAU,uBAAuB,UAAAD,EAAS,CAAA,GAGjDE,IAAgB,CAAC,EAAE,UAAAF,QACfC,gBAAAA,EAAAA,IAAA,MAAA,EAAG,WAAU,0BAA0B,UAAAD,EAAS,CAAA,GAGpDG,IAAY,CAAC,EAAE,UAAAH,QACXC,gBAAAA,EAAAA,IAAA,OAAA,EAAI,WAAU,sBAAsB,UAAAD,EAAS,CAAA,GAGjDI,IAAc,CAACC,MAEjBJ,gBAAAA,MAAC,SAAI,WAAU,wBACb,gCAACK,GAAQ,EAAA,GAAGD,EAAa,CAAA,EAC3B,CAAA,GAIEE,IAAe,CAAC,EAAE,UAAAP,QACdC,gBAAAA,EAAAA,IAAA,OAAA,EAAI,WAAU,yBAAyB,UAAAD,EAAS,CAAA,GAGpDQ,IAAe,CAAC;AAAA,EACpB,OAAAC;AAAA,EACA,UAAAC;AAAA,EACA,MAAAC;AAAA,EACA,SAAAC;AAAA,EACA,UAAAZ;AAAA,EACA,WAAAa;AAAA,EACA,eAAeC;AACjB,MAIIC,gBAAAA,EAAA;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,eAAaD;AAAA,IACb,WAAWE,EAAI,gBAAgBH,KAAa,uBAAuB;AAAA,IACnE,MAAK;AAAA,IACL,UAAU;AAAA,IAEV,UAAA;AAAA,MAAAZ,gBAAAA,EAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,MAAK;AAAA,UACL,WAAU;AAAA,UACV,SAASW;AAAA,UACT,cAAW;AAAA,UACZ,UAAA;AAAA,QAAA;AAAA,MAED;AAAA,MACCH,KAAUR,gBAAAA,EAAAA,IAAAF,GAAA,EAAY,UAAMU,EAAA,CAAA;AAAA,MAC5BC,KAAaT,gBAAAA,EAAAA,IAAAC,GAAA,EAAe,UAASQ,EAAA,CAAA;AAAA,MACrCC,KAASV,gBAAAA,EAAAA,IAAAE,GAAA,EAAW,UAAKQ,EAAA,CAAA;AAAA,MACzBV,gBAAAA,EAAAA,IAAA,OAAA,EAAI,WAAU,yBAAyB,UAAAD,EAAS,CAAA;AAAA,IAAA;AAAA,EAAA;AAAA,GA+CjDiB,IAAe,CAAC;AAAA,EACpB,QAAAC;AAAA,EACA,SAAAN;AAAA,EACA,OAAAH;AAAA,EACA,UAAAC;AAAA,EACA,MAAAC;AAAA,EACA,UAAAX;AAAA,EACA,WAAAmB,IAAY;AAAA,EACZ,eAAeL;AACjB,MAAkB;AACV,QAAAM,IAAaC,EAAuB,IAAI,GACxC,EAAE,WAAAR,GAAW,aAAAS,EAAY,IAAIC,EAAa;AAAA,IAC9C,SAAAX;AAAA,IACA,YAAAQ;AAAA,EAAA,CACD,GACKI,IAAWC,EAAcC,EAAY,MAAM;AAE7C,MAAA,CAACR,EAAe,QAAA;AAEpB,QAAMS,IACJ1B,gBAAAA,EAAA;AAAA,IAACO;AAAA,IAAA;AAAA,MACC,QAAAU;AAAA,MACA,OAAAT;AAAA,MACA,UAAAC;AAAA,MACA,MAAAC;AAAA,MACA,SAASW;AAAA,MACT,WAAAT;AAAA,MACA,eAAaC;AAAA,MAEZ,UAAAd;AAAA,IAAA;AAAA,EAAA;AAIE,SAAAmB,KAAaK,IAClBvB,gBAAAA,EAAAA,IAAC2B,GAAc,EAAA,QAAM,IAAC,KAAKR,GAAY,SAASE,GAC7C,UAAAK,EAAA,CACH,IAEAA;AAEJ,GAEaE,IAAQ,OAAO,OAAOZ,GAAc;AAAA;AAAA;AAAA;AAAA,EAI/C,OAAOlB;AAAA;AAAA;AAAA;AAAA,EAIP,UAAUG;AAAA;AAAA;AAAA;AAAA,EAIV,MAAMC;AAAA;AAAA;AAAA;AAAA;AAAA,EAKN,QAAQC;AAAA;AAAA;AAAA;AAAA,EAIR,SAASG;AACX,CAAC;"}
1
+ {"version":3,"file":"Modal.es.js","sources":["../../../src/components/Modal/Modal.tsx"],"sourcesContent":["\"use client\";\n\nimport { useRef } from \"react\";\nimport { BREAKPOINTS } from \"../../constants\";\nimport { useBreakpoint } from \"../../hooks\";\nimport { useIsClosing } from \"../../hooks/useIsClosing\";\nimport { csx } from \"../../utils\";\nimport { Button, ButtonProps } from \"../Button/Button\";\nimport \"./Modal.css\";\nimport { ScreenOverlay } from \"../ScreenOverlay/ScreenOverlay\";\n\nconst ModalTitle = ({ children }: { children: React.ReactNode }) => {\n return <h2 className=\"proton-Modal__title\">{children}</h2>;\n};\n\nconst ModalSubtitle = ({ children }: { children: React.ReactNode }) => {\n return <h3 className=\"proton-Modal__subtitle\">{children}</h3>;\n};\n\nconst ModalBody = ({ children }: { children: React.ReactNode }) => {\n return <div className=\"proton-Modal__body\">{children}</div>;\n};\n\nconst ModalAction = (buttonProps: ButtonProps) => {\n return (\n <div className=\"proton-Modal__action\">\n <Button {...buttonProps} />\n </div>\n );\n};\n\nconst ModalActions = ({ children }: { children: React.ReactNode }) => {\n return <div className=\"proton-Modal__actions\">{children}</div>;\n};\n\nconst ModalContent = ({\n title,\n subtitle,\n body,\n onClose,\n children,\n isClosing,\n \"data-testid\": dataTestId,\n}: ModalProps & {\n isClosing: boolean;\n}) => {\n return (\n <div\n data-testid={dataTestId}\n className={csx(\"proton-Modal\", isClosing && \"proton-Modal--closing\")}\n aria-modal=\"true\"\n role=\"dialog\"\n tabIndex={-1}\n >\n <button\n name=\"Close\"\n className=\"proton-Modal__close-button\"\n onClick={onClose}\n aria-label=\"Close\"\n >\n ×\n </button>\n {title && <ModalTitle>{title}</ModalTitle>}\n {subtitle && <ModalSubtitle>{subtitle}</ModalSubtitle>}\n {body && <ModalBody>{body}</ModalBody>}\n <div className=\"proton-Modal__content\">{children}</div>\n </div>\n );\n};\n\nexport interface ModalProps {\n /**\n * Optional body text content for the modal\n * */\n body?: string;\n /**\n * Content to render inside the modal\n * */\n children: React.ReactNode;\n /**\n * data-testid for the modal\n * */\n \"data-testid\"?: string;\n /**\n * Controls the visibility of the modal\n * */\n isOpen: boolean;\n /**\n * Whether to show the modal with an overlay background.\n * @default true\n * */\n isOverlay?: boolean;\n /**\n * Callback function when modal is closed\n * */\n onClose?: () => void;\n /**\n * Optional subtitle text below the modal title\n * */\n subtitle?: string;\n /**\n * Optional title text for the modal header\n * */\n title?: string;\n}\n\n/**\n * Modal component with overlay support and responsive behavior.\n *\n * API:\n * - {@link ModalProps}\n */\nconst ModalWrapper = ({\n isOpen,\n onClose,\n title,\n subtitle,\n body,\n children,\n isOverlay = true,\n \"data-testid\": dataTestId,\n}: ModalProps) => {\n const overlayRef = useRef<HTMLDivElement>(null);\n const { isClosing, handleClose } = useIsClosing({\n onClose,\n overlayRef,\n });\n const isMobile = useBreakpoint(BREAKPOINTS.MEDIUM);\n\n if (!isOpen) return null;\n\n const modalContent = (\n <ModalContent\n isOpen={isOpen}\n title={title}\n subtitle={subtitle}\n body={body}\n onClose={handleClose}\n isClosing={isClosing}\n data-testid={dataTestId}\n >\n {children}\n </ModalContent>\n );\n\n return isOverlay || isMobile ? (\n <ScreenOverlay fadeIn ref={overlayRef} onClose={handleClose}>\n {modalContent}\n </ScreenOverlay>\n ) : (\n modalContent\n );\n};\n\nexport const Modal = Object.assign(ModalWrapper, {\n /**\n * Renders a h2 styled title\n * */\n Title: ModalTitle,\n /**\n * Renders a h3 styled subtitle\n * */\n Subtitle: ModalSubtitle,\n /**\n * Renders a div styled body\n * */\n Body: ModalBody,\n /**\n * Renders a Proton Button action\n * - @prop buttonProps {@link ButtonProps}\n * */\n Action: ModalAction,\n /**\n * Renders a group of Proton Buttons\n * */\n Actions: ModalActions,\n});\n"],"names":["ModalTitle","children","jsx","ModalSubtitle","ModalBody","ModalAction","buttonProps","Button","ModalActions","ModalContent","title","subtitle","body","onClose","isClosing","dataTestId","jsxs","csx","ModalWrapper","isOpen","isOverlay","overlayRef","useRef","handleClose","useIsClosing","isMobile","useBreakpoint","BREAKPOINTS","modalContent","ScreenOverlay","Modal"],"mappings":";;;;;;;;;AAWA,MAAMA,IAAa,CAAC,EAAE,UAAAC,QACZC,gBAAAA,EAAAA,IAAA,MAAA,EAAG,WAAU,uBAAuB,UAAAD,EAAS,CAAA,GAGjDE,IAAgB,CAAC,EAAE,UAAAF,QACfC,gBAAAA,EAAAA,IAAA,MAAA,EAAG,WAAU,0BAA0B,UAAAD,EAAS,CAAA,GAGpDG,IAAY,CAAC,EAAE,UAAAH,QACXC,gBAAAA,EAAAA,IAAA,OAAA,EAAI,WAAU,sBAAsB,UAAAD,EAAS,CAAA,GAGjDI,IAAc,CAACC,MAEjBJ,gBAAAA,MAAC,SAAI,WAAU,wBACb,gCAACK,GAAQ,EAAA,GAAGD,EAAa,CAAA,EAC3B,CAAA,GAIEE,IAAe,CAAC,EAAE,UAAAP,QACdC,gBAAAA,EAAAA,IAAA,OAAA,EAAI,WAAU,yBAAyB,UAAAD,EAAS,CAAA,GAGpDQ,IAAe,CAAC;AAAA,EACpB,OAAAC;AAAA,EACA,UAAAC;AAAA,EACA,MAAAC;AAAA,EACA,SAAAC;AAAA,EACA,UAAAZ;AAAA,EACA,WAAAa;AAAA,EACA,eAAeC;AACjB,MAIIC,gBAAAA,EAAA;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,eAAaD;AAAA,IACb,WAAWE,EAAI,gBAAgBH,KAAa,uBAAuB;AAAA,IACnE,cAAW;AAAA,IACX,MAAK;AAAA,IACL,UAAU;AAAA,IAEV,UAAA;AAAA,MAAAZ,gBAAAA,EAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,MAAK;AAAA,UACL,WAAU;AAAA,UACV,SAASW;AAAA,UACT,cAAW;AAAA,UACZ,UAAA;AAAA,QAAA;AAAA,MAED;AAAA,MACCH,KAAUR,gBAAAA,EAAAA,IAAAF,GAAA,EAAY,UAAMU,EAAA,CAAA;AAAA,MAC5BC,KAAaT,gBAAAA,EAAAA,IAAAC,GAAA,EAAe,UAASQ,EAAA,CAAA;AAAA,MACrCC,KAASV,gBAAAA,EAAAA,IAAAE,GAAA,EAAW,UAAKQ,EAAA,CAAA;AAAA,MACzBV,gBAAAA,EAAAA,IAAA,OAAA,EAAI,WAAU,yBAAyB,UAAAD,EAAS,CAAA;AAAA,IAAA;AAAA,EAAA;AAAA,GA+CjDiB,IAAe,CAAC;AAAA,EACpB,QAAAC;AAAA,EACA,SAAAN;AAAA,EACA,OAAAH;AAAA,EACA,UAAAC;AAAA,EACA,MAAAC;AAAA,EACA,UAAAX;AAAA,EACA,WAAAmB,IAAY;AAAA,EACZ,eAAeL;AACjB,MAAkB;AACV,QAAAM,IAAaC,EAAuB,IAAI,GACxC,EAAE,WAAAR,GAAW,aAAAS,EAAY,IAAIC,EAAa;AAAA,IAC9C,SAAAX;AAAA,IACA,YAAAQ;AAAA,EAAA,CACD,GACKI,IAAWC,EAAcC,EAAY,MAAM;AAE7C,MAAA,CAACR,EAAe,QAAA;AAEpB,QAAMS,IACJ1B,gBAAAA,EAAA;AAAA,IAACO;AAAA,IAAA;AAAA,MACC,QAAAU;AAAA,MACA,OAAAT;AAAA,MACA,UAAAC;AAAA,MACA,MAAAC;AAAA,MACA,SAASW;AAAA,MACT,WAAAT;AAAA,MACA,eAAaC;AAAA,MAEZ,UAAAd;AAAA,IAAA;AAAA,EAAA;AAIE,SAAAmB,KAAaK,IAClBvB,gBAAAA,EAAAA,IAAC2B,GAAc,EAAA,QAAM,IAAC,KAAKR,GAAY,SAASE,GAC7C,UAAAK,EAAA,CACH,IAEAA;AAEJ,GAEaE,IAAQ,OAAO,OAAOZ,GAAc;AAAA;AAAA;AAAA;AAAA,EAI/C,OAAOlB;AAAA;AAAA;AAAA;AAAA,EAIP,UAAUG;AAAA;AAAA;AAAA;AAAA,EAIV,MAAMC;AAAA;AAAA;AAAA;AAAA;AAAA,EAKN,QAAQC;AAAA;AAAA;AAAA;AAAA,EAIR,SAASG;AACX,CAAC;"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("../../node_modules/react/jsx-runtime.cjs.js"),n=require("react");;/* empty css */const m=require("radix-ui"),a=require("../ThemeProvider.cjs.js"),y=require("../../utils/string.cjs.js"),i=n.forwardRef(({fadeIn:o=!1,onClose:e,children:c},s)=>{const{theme:d,palette:u}=a.useTheme();return n.useEffect(()=>{if(!e)return;const r=l=>{l.key==="Escape"&&e()};return document.addEventListener("keydown",r),()=>{document.removeEventListener("keydown",r)}},[e]),t.jsxRuntimeExports.jsx(m.Portal.Root,{children:t.jsxRuntimeExports.jsx(a.ThemeProvider,{theme:d,palette:u,children:t.jsxRuntimeExports.jsx("div",{ref:s,id:"background","aria-label":"Background overlay","aria-modal":"true","data-testid":"screen-overlay",className:y.csx("proton-ScreenOverlay__background","proton-ScreenOverlay__z-index",o&&"proton-ScreenOverlay__fade-in"),onClick:r=>{e&&r.target===r.currentTarget&&e()},children:c})})})});i.displayName="ProtonUIScreenOverlay";exports.ScreenOverlay=i;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("../../node_modules/react/jsx-runtime.cjs.js"),n=require("react");;/* empty css */const y=require("radix-ui"),a=require("../ThemeProvider.cjs.js"),m=require("../../utils/string.cjs.js"),i=n.forwardRef(({fadeIn:c=!1,onClose:e,children:o},s)=>{const{theme:d,palette:u}=a.useTheme();return n.useEffect(()=>{if(!e)return;const r=l=>{l.key==="Escape"&&e()};return document.addEventListener("keydown",r),()=>{document.removeEventListener("keydown",r)}},[e]),t.jsxRuntimeExports.jsx(y.Portal.Root,{children:t.jsxRuntimeExports.jsx(a.ThemeProvider,{theme:d,palette:u,children:t.jsxRuntimeExports.jsx("div",{ref:s,id:"background","aria-label":"Background overlay","data-testid":"screen-overlay",className:m.csx("proton-ScreenOverlay__background","proton-ScreenOverlay__z-index",c&&"proton-ScreenOverlay__fade-in"),onClick:r=>{e&&r.target===r.currentTarget&&e()},children:o})})})});i.displayName="ProtonUIScreenOverlay";exports.ScreenOverlay=i;
2
2
  //# sourceMappingURL=ScreenOverlay.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ScreenOverlay.cjs.js","sources":["../../../src/components/ScreenOverlay/ScreenOverlay.tsx"],"sourcesContent":["\"use client\";\n\nimport { forwardRef, useEffect } from \"react\";\nimport \"./ScreenOverlay.css\";\nimport { csx } from \"../../utils\";\nimport { Portal } from \"radix-ui\";\nimport { useTheme, ThemeProvider } from \"../ThemeProvider\";\n\ninterface ScreenOverlayProps {\n /**\n * Children to render inside the overlay.\n */\n children?: React.ReactNode;\n\n /**\n * Whether to fade in the overlay.\n */\n fadeIn?: boolean;\n\n /**\n * Callback function to handle events (click or ESC key).\n */\n onClose?: () => void;\n\n /**\n * Ref to the overlay element.\n */\n ref?: React.RefObject<HTMLDivElement>;\n}\n\n/**\n * Base Overlay component for creating modal-like backgrounds.\n *\n * API:\n * - {@link ScreenOverlayProps}\n */\nexport const ScreenOverlay = forwardRef<HTMLDivElement, ScreenOverlayProps>(\n ({ fadeIn = false, onClose, children }, ref) => {\n const { theme, palette } = useTheme();\n\n useEffect(() => {\n if (!onClose) return;\n\n const handleEscKey = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") onClose();\n };\n\n document.addEventListener(\"keydown\", handleEscKey);\n return () => {\n document.removeEventListener(\"keydown\", handleEscKey);\n };\n }, [onClose]);\n\n return (\n <Portal.Root>\n <ThemeProvider theme={theme} palette={palette}>\n <div\n ref={ref}\n id=\"background\"\n aria-label=\"Background overlay\"\n aria-modal=\"true\"\n data-testid=\"screen-overlay\"\n className={csx(\n \"proton-ScreenOverlay__background\",\n \"proton-ScreenOverlay__z-index\",\n fadeIn && \"proton-ScreenOverlay__fade-in\"\n )}\n onClick={(event: React.MouseEvent) => {\n if (!onClose) return;\n\n // Only trigger onClose if the click was directly on the background element\n if (event.target === event.currentTarget) {\n onClose();\n }\n }}\n >\n {children}\n </div>\n </ThemeProvider>\n </Portal.Root>\n );\n }\n);\n\nScreenOverlay.displayName = \"ProtonUIScreenOverlay\";\n"],"names":["ScreenOverlay","forwardRef","fadeIn","onClose","children","ref","theme","palette","useTheme","useEffect","handleEscKey","event","Portal","jsx","ThemeProvider","csx"],"mappings":"gTAoCaA,EAAgBC,EAAA,WAC3B,CAAC,CAAE,OAAAC,EAAS,GAAO,QAAAC,EAAS,SAAAC,CAAA,EAAYC,IAAQ,CAC9C,KAAM,CAAE,MAAAC,EAAO,QAAAC,CAAQ,EAAIC,EAAS,SAAA,EAEpCC,OAAAA,EAAAA,UAAU,IAAM,CACd,GAAI,CAACN,EAAS,OAER,MAAAO,EAAgBC,GAAyB,CACzCA,EAAM,MAAQ,UAAkBR,EAAA,CAAA,EAG7B,gBAAA,iBAAiB,UAAWO,CAAY,EAC1C,IAAM,CACF,SAAA,oBAAoB,UAAWA,CAAY,CAAA,CACtD,EACC,CAACP,CAAO,CAAC,0BAGTS,EAAAA,OAAO,KAAP,CACC,SAACC,wBAAAC,EAAAA,cAAA,CAAc,MAAAR,EAAc,QAAAC,EAC3B,SAAAM,EAAA,kBAAA,IAAC,MAAA,CACC,IAAAR,EACA,GAAG,aACH,aAAW,qBACX,aAAW,OACX,cAAY,iBACZ,UAAWU,EAAA,IACT,mCACA,gCACAb,GAAU,+BACZ,EACA,QAAUS,GAA4B,CAC/BR,GAGDQ,EAAM,SAAWA,EAAM,eACjBR,GAEZ,EAEC,SAAAC,CAAA,CAAA,CAEL,CAAA,CACF,CAAA,CAEJ,CACF,EAEAJ,EAAc,YAAc"}
1
+ {"version":3,"file":"ScreenOverlay.cjs.js","sources":["../../../src/components/ScreenOverlay/ScreenOverlay.tsx"],"sourcesContent":["\"use client\";\n\nimport { forwardRef, useEffect } from \"react\";\nimport \"./ScreenOverlay.css\";\nimport { csx } from \"../../utils\";\nimport { Portal } from \"radix-ui\";\nimport { useTheme, ThemeProvider } from \"../ThemeProvider\";\n\ninterface ScreenOverlayProps {\n /**\n * Children to render inside the overlay.\n */\n children?: React.ReactNode;\n\n /**\n * Whether to fade in the overlay.\n */\n fadeIn?: boolean;\n\n /**\n * Callback function to handle events (click or ESC key).\n */\n onClose?: () => void;\n\n /**\n * Ref to the overlay element.\n */\n ref?: React.RefObject<HTMLDivElement>;\n}\n\n/**\n * Base Overlay component for creating modal-like backgrounds.\n *\n * API:\n * - {@link ScreenOverlayProps}\n */\nexport const ScreenOverlay = forwardRef<HTMLDivElement, ScreenOverlayProps>(\n ({ fadeIn = false, onClose, children }, ref) => {\n const { theme, palette } = useTheme();\n\n useEffect(() => {\n if (!onClose) return;\n\n const handleEscKey = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") onClose();\n };\n\n document.addEventListener(\"keydown\", handleEscKey);\n return () => {\n document.removeEventListener(\"keydown\", handleEscKey);\n };\n }, [onClose]);\n\n return (\n <Portal.Root>\n <ThemeProvider theme={theme} palette={palette}>\n <div\n ref={ref}\n id=\"background\"\n aria-label=\"Background overlay\"\n data-testid=\"screen-overlay\"\n className={csx(\n \"proton-ScreenOverlay__background\",\n \"proton-ScreenOverlay__z-index\",\n fadeIn && \"proton-ScreenOverlay__fade-in\"\n )}\n onClick={(event: React.MouseEvent) => {\n if (!onClose) return;\n\n // Only trigger onClose if the click was directly on the background element\n if (event.target === event.currentTarget) {\n onClose();\n }\n }}\n >\n {children}\n </div>\n </ThemeProvider>\n </Portal.Root>\n );\n }\n);\n\nScreenOverlay.displayName = \"ProtonUIScreenOverlay\";\n"],"names":["ScreenOverlay","forwardRef","fadeIn","onClose","children","ref","theme","palette","useTheme","useEffect","handleEscKey","event","Portal","jsx","ThemeProvider","csx"],"mappings":"gTAoCaA,EAAgBC,EAAA,WAC3B,CAAC,CAAE,OAAAC,EAAS,GAAO,QAAAC,EAAS,SAAAC,CAAA,EAAYC,IAAQ,CAC9C,KAAM,CAAE,MAAAC,EAAO,QAAAC,CAAQ,EAAIC,EAAS,SAAA,EAEpCC,OAAAA,EAAAA,UAAU,IAAM,CACd,GAAI,CAACN,EAAS,OAER,MAAAO,EAAgBC,GAAyB,CACzCA,EAAM,MAAQ,UAAkBR,EAAA,CAAA,EAG7B,gBAAA,iBAAiB,UAAWO,CAAY,EAC1C,IAAM,CACF,SAAA,oBAAoB,UAAWA,CAAY,CAAA,CACtD,EACC,CAACP,CAAO,CAAC,0BAGTS,EAAAA,OAAO,KAAP,CACC,SAACC,wBAAAC,EAAAA,cAAA,CAAc,MAAAR,EAAc,QAAAC,EAC3B,SAAAM,EAAA,kBAAA,IAAC,MAAA,CACC,IAAAR,EACA,GAAG,aACH,aAAW,qBACX,cAAY,iBACZ,UAAWU,EAAA,IACT,mCACA,gCACAb,GAAU,+BACZ,EACA,QAAUS,GAA4B,CAC/BR,GAGDQ,EAAM,SAAWA,EAAM,eACjBR,GAEZ,EAEC,SAAAC,CAAA,CAAA,CAEL,CAAA,CACF,CAAA,CAEJ,CACF,EAEAJ,EAAc,YAAc"}
@@ -5,7 +5,7 @@ import { Portal as f } from "radix-ui";
5
5
  import { useTheme as l, ThemeProvider as p } from "../ThemeProvider.es.js";
6
6
  import { csx as u } from "../../utils/string.es.js";
7
7
  const y = m(
8
- ({ fadeIn: a = !1, onClose: e, children: o }, n) => {
8
+ ({ fadeIn: o = !1, onClose: e, children: n }, a) => {
9
9
  const { theme: i, palette: c } = l();
10
10
  return s(() => {
11
11
  if (!e) return;
@@ -18,20 +18,19 @@ const y = m(
18
18
  }, [e]), /* @__PURE__ */ t.jsx(f.Root, { children: /* @__PURE__ */ t.jsx(p, { theme: i, palette: c, children: /* @__PURE__ */ t.jsx(
19
19
  "div",
20
20
  {
21
- ref: n,
21
+ ref: a,
22
22
  id: "background",
23
23
  "aria-label": "Background overlay",
24
- "aria-modal": "true",
25
24
  "data-testid": "screen-overlay",
26
25
  className: u(
27
26
  "proton-ScreenOverlay__background",
28
27
  "proton-ScreenOverlay__z-index",
29
- a && "proton-ScreenOverlay__fade-in"
28
+ o && "proton-ScreenOverlay__fade-in"
30
29
  ),
31
30
  onClick: (r) => {
32
31
  e && r.target === r.currentTarget && e();
33
32
  },
34
- children: o
33
+ children: n
35
34
  }
36
35
  ) }) });
37
36
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ScreenOverlay.es.js","sources":["../../../src/components/ScreenOverlay/ScreenOverlay.tsx"],"sourcesContent":["\"use client\";\n\nimport { forwardRef, useEffect } from \"react\";\nimport \"./ScreenOverlay.css\";\nimport { csx } from \"../../utils\";\nimport { Portal } from \"radix-ui\";\nimport { useTheme, ThemeProvider } from \"../ThemeProvider\";\n\ninterface ScreenOverlayProps {\n /**\n * Children to render inside the overlay.\n */\n children?: React.ReactNode;\n\n /**\n * Whether to fade in the overlay.\n */\n fadeIn?: boolean;\n\n /**\n * Callback function to handle events (click or ESC key).\n */\n onClose?: () => void;\n\n /**\n * Ref to the overlay element.\n */\n ref?: React.RefObject<HTMLDivElement>;\n}\n\n/**\n * Base Overlay component for creating modal-like backgrounds.\n *\n * API:\n * - {@link ScreenOverlayProps}\n */\nexport const ScreenOverlay = forwardRef<HTMLDivElement, ScreenOverlayProps>(\n ({ fadeIn = false, onClose, children }, ref) => {\n const { theme, palette } = useTheme();\n\n useEffect(() => {\n if (!onClose) return;\n\n const handleEscKey = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") onClose();\n };\n\n document.addEventListener(\"keydown\", handleEscKey);\n return () => {\n document.removeEventListener(\"keydown\", handleEscKey);\n };\n }, [onClose]);\n\n return (\n <Portal.Root>\n <ThemeProvider theme={theme} palette={palette}>\n <div\n ref={ref}\n id=\"background\"\n aria-label=\"Background overlay\"\n aria-modal=\"true\"\n data-testid=\"screen-overlay\"\n className={csx(\n \"proton-ScreenOverlay__background\",\n \"proton-ScreenOverlay__z-index\",\n fadeIn && \"proton-ScreenOverlay__fade-in\"\n )}\n onClick={(event: React.MouseEvent) => {\n if (!onClose) return;\n\n // Only trigger onClose if the click was directly on the background element\n if (event.target === event.currentTarget) {\n onClose();\n }\n }}\n >\n {children}\n </div>\n </ThemeProvider>\n </Portal.Root>\n );\n }\n);\n\nScreenOverlay.displayName = \"ProtonUIScreenOverlay\";\n"],"names":["ScreenOverlay","forwardRef","fadeIn","onClose","children","ref","theme","palette","useTheme","useEffect","handleEscKey","event","Portal","jsx","ThemeProvider","csx"],"mappings":";;;;;;AAoCO,MAAMA,IAAgBC;AAAA,EAC3B,CAAC,EAAE,QAAAC,IAAS,IAAO,SAAAC,GAAS,UAAAC,EAAA,GAAYC,MAAQ;AAC9C,UAAM,EAAE,OAAAC,GAAO,SAAAC,EAAQ,IAAIC,EAAS;AAEpC,WAAAC,EAAU,MAAM;AACd,UAAI,CAACN,EAAS;AAER,YAAAO,IAAe,CAACC,MAAyB;AACzC,QAAAA,EAAM,QAAQ,YAAkBR,EAAA;AAAA,MAAA;AAG7B,sBAAA,iBAAiB,WAAWO,CAAY,GAC1C,MAAM;AACF,iBAAA,oBAAoB,WAAWA,CAAY;AAAA,MAAA;AAAA,IACtD,GACC,CAACP,CAAO,CAAC,yBAGTS,EAAO,MAAP,EACC,UAACC,gBAAAA,MAAAC,GAAA,EAAc,OAAAR,GAAc,SAAAC,GAC3B,UAAAM,gBAAAA,EAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAAR;AAAA,QACA,IAAG;AAAA,QACH,cAAW;AAAA,QACX,cAAW;AAAA,QACX,eAAY;AAAA,QACZ,WAAWU;AAAA,UACT;AAAA,UACA;AAAA,UACAb,KAAU;AAAA,QACZ;AAAA,QACA,SAAS,CAACS,MAA4B;AACpC,UAAKR,KAGDQ,EAAM,WAAWA,EAAM,iBACjBR;QAEZ;AAAA,QAEC,UAAAC;AAAA,MAAA;AAAA,IAAA,EAEL,CAAA,EACF,CAAA;AAAA,EAEJ;AACF;AAEAJ,EAAc,cAAc;"}
1
+ {"version":3,"file":"ScreenOverlay.es.js","sources":["../../../src/components/ScreenOverlay/ScreenOverlay.tsx"],"sourcesContent":["\"use client\";\n\nimport { forwardRef, useEffect } from \"react\";\nimport \"./ScreenOverlay.css\";\nimport { csx } from \"../../utils\";\nimport { Portal } from \"radix-ui\";\nimport { useTheme, ThemeProvider } from \"../ThemeProvider\";\n\ninterface ScreenOverlayProps {\n /**\n * Children to render inside the overlay.\n */\n children?: React.ReactNode;\n\n /**\n * Whether to fade in the overlay.\n */\n fadeIn?: boolean;\n\n /**\n * Callback function to handle events (click or ESC key).\n */\n onClose?: () => void;\n\n /**\n * Ref to the overlay element.\n */\n ref?: React.RefObject<HTMLDivElement>;\n}\n\n/**\n * Base Overlay component for creating modal-like backgrounds.\n *\n * API:\n * - {@link ScreenOverlayProps}\n */\nexport const ScreenOverlay = forwardRef<HTMLDivElement, ScreenOverlayProps>(\n ({ fadeIn = false, onClose, children }, ref) => {\n const { theme, palette } = useTheme();\n\n useEffect(() => {\n if (!onClose) return;\n\n const handleEscKey = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") onClose();\n };\n\n document.addEventListener(\"keydown\", handleEscKey);\n return () => {\n document.removeEventListener(\"keydown\", handleEscKey);\n };\n }, [onClose]);\n\n return (\n <Portal.Root>\n <ThemeProvider theme={theme} palette={palette}>\n <div\n ref={ref}\n id=\"background\"\n aria-label=\"Background overlay\"\n data-testid=\"screen-overlay\"\n className={csx(\n \"proton-ScreenOverlay__background\",\n \"proton-ScreenOverlay__z-index\",\n fadeIn && \"proton-ScreenOverlay__fade-in\"\n )}\n onClick={(event: React.MouseEvent) => {\n if (!onClose) return;\n\n // Only trigger onClose if the click was directly on the background element\n if (event.target === event.currentTarget) {\n onClose();\n }\n }}\n >\n {children}\n </div>\n </ThemeProvider>\n </Portal.Root>\n );\n }\n);\n\nScreenOverlay.displayName = \"ProtonUIScreenOverlay\";\n"],"names":["ScreenOverlay","forwardRef","fadeIn","onClose","children","ref","theme","palette","useTheme","useEffect","handleEscKey","event","Portal","jsx","ThemeProvider","csx"],"mappings":";;;;;;AAoCO,MAAMA,IAAgBC;AAAA,EAC3B,CAAC,EAAE,QAAAC,IAAS,IAAO,SAAAC,GAAS,UAAAC,EAAA,GAAYC,MAAQ;AAC9C,UAAM,EAAE,OAAAC,GAAO,SAAAC,EAAQ,IAAIC,EAAS;AAEpC,WAAAC,EAAU,MAAM;AACd,UAAI,CAACN,EAAS;AAER,YAAAO,IAAe,CAACC,MAAyB;AACzC,QAAAA,EAAM,QAAQ,YAAkBR,EAAA;AAAA,MAAA;AAG7B,sBAAA,iBAAiB,WAAWO,CAAY,GAC1C,MAAM;AACF,iBAAA,oBAAoB,WAAWA,CAAY;AAAA,MAAA;AAAA,IACtD,GACC,CAACP,CAAO,CAAC,yBAGTS,EAAO,MAAP,EACC,UAACC,gBAAAA,MAAAC,GAAA,EAAc,OAAAR,GAAc,SAAAC,GAC3B,UAAAM,gBAAAA,EAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAAR;AAAA,QACA,IAAG;AAAA,QACH,cAAW;AAAA,QACX,eAAY;AAAA,QACZ,WAAWU;AAAA,UACT;AAAA,UACA;AAAA,UACAb,KAAU;AAAA,QACZ;AAAA,QACA,SAAS,CAACS,MAA4B;AACpC,UAAKR,KAGDQ,EAAM,WAAWA,EAAM,iBACjBR;QAEZ;AAAA,QAEC,UAAAC;AAAA,MAAA;AAAA,IAAA,EAEL,CAAA,EACF,CAAA;AAAA,EAEJ;AACF;AAEAJ,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"),r=require("./components/Badge/Badge.cjs.js"),e=require("./components/Banner/Banner.cjs.js"),t=require("./components/Button/Button.cjs.js"),i=require("./components/ButtonGroup/ButtonGroup.cjs.js"),u=require("./components/ButtonWithSelect/ButtonWithSelect.cjs.js"),a=require("./components/DataTable/DataTable.cjs.js"),c=require("./components/Dialog/Dialog.cjs.js"),s=require("./components/Elevation/Elevation.cjs.js"),l=require("./components/Icon/Icon.cjs.js"),T=require("./components/ImageBackground/ImageBackground.cjs.js"),p=require("./components/Input/BaseInput/Input.cjs.js"),B=require("./components/Input/CopyInput/CopyInput.cjs.js"),q=require("./components/Input/SearchInput/SearchInput.cjs.js"),S=require("./components/Menu/MenuTrigger.cjs.js"),g=require("./components/Modal/Modal.cjs.js"),I=require("./components/Popover/Popover.cjs.js"),m=require("./components/ScreenOverlay/ScreenOverlay.cjs.js"),h=require("./components/Select/Select.cjs.js"),d=require("./components/Switch/Switch.cjs.js"),v=require("./components/Table/Table.cjs.js"),E=require("./components/Text/TextEllipsis/TextEllipsis.cjs.js"),N=require("./components/Text/TextEmphasis/TextEmphasis.cjs.js"),o=require("./components/ThemeProvider.cjs.js"),b=require("./components/Tombstone/Tombstone.cjs.js"),A=require("./components/Tooltip/Tooltip.cjs.js"),M=require("./components/Waveform/Waveform.cjs.js");exports.ActionMenu=n.ActionMenu;exports.Badge=r.Badge;exports.BadgeVariants=r.BadgeVariants;exports.BANNER_ICONS=e.BANNER_ICONS;exports.BANNER_VARIANTS=e.BANNER_VARIANTS;exports.Banner=e.Banner;exports.Button=t.Button;exports.ButtonSizes=t.ButtonSizes;exports.ButtonVariants=t.ButtonVariants;exports.ButtonGroup=i.ButtonGroup;exports.ButtonWithSelect=u.ButtonWithSelect;exports.DataTable=a.DataTable;exports.Dialog=c.Dialog;exports.Elevation=s.Elevation;exports.Icon=l.Icon;exports.ImageBackground=T.ImageBackground;exports.Input=p.Input;exports.CopyInput=B.CopyInput;exports.SearchInput=q.SearchInput;exports.MenuTrigger=S.MenuTrigger;exports.Modal=g.Modal;exports.Popover=I.Popover;exports.ScreenOverlay=m.ScreenOverlay;exports.Select=h.Select;exports.Switch=d.Switch;exports.Table=v.Table;exports.TextEllipsis=E.TextEllipsis;exports.TextEmphasis=N.TextEmphasis;exports.ThemeProvider=o.ThemeProvider;exports.useTheme=o.useTheme;exports.Tombstone=b.Tombstone;exports.Tooltip=A.Tooltip;exports.Waveform=M.Waveform;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("./components/ActionMenu/ActionMenu.cjs.js"),r=require("./components/Badge/Badge.cjs.js"),e=require("./components/Banner/Banner.cjs.js"),t=require("./components/Button/Button.cjs.js"),i=require("./components/ButtonGroup/ButtonGroup.cjs.js"),u=require("./components/ButtonWithSelect/ButtonWithSelect.cjs.js"),a=require("./components/DataTable/DataTable.cjs.js"),c=require("./components/Dialog/Dialog.cjs.js"),s=require("./components/Elevation/Elevation.cjs.js"),l=require("./components/Icon/Icon.cjs.js"),p=require("./components/ImageBackground/ImageBackground.cjs.js"),T=require("./components/Input/BaseInput/Input.cjs.js"),q=require("./components/Input/CheckboxInput/CheckboxInput.cjs.js"),B=require("./components/Input/CopyInput/CopyInput.cjs.js"),S=require("./components/Input/SearchInput/SearchInput.cjs.js"),g=require("./components/Menu/MenuTrigger.cjs.js"),I=require("./components/Modal/Modal.cjs.js"),h=require("./components/Popover/Popover.cjs.js"),m=require("./components/ScreenOverlay/ScreenOverlay.cjs.js"),d=require("./components/Select/Select.cjs.js"),v=require("./components/Switch/Switch.cjs.js"),b=require("./components/Table/Table.cjs.js"),E=require("./components/Text/TextEllipsis/TextEllipsis.cjs.js"),N=require("./components/Text/TextEmphasis/TextEmphasis.cjs.js"),o=require("./components/ThemeProvider.cjs.js"),A=require("./components/Tombstone/Tombstone.cjs.js"),M=require("./components/Tooltip/Tooltip.cjs.js"),x=require("./components/Waveform/Waveform.cjs.js");exports.ActionMenu=n.ActionMenu;exports.Badge=r.Badge;exports.BadgeVariants=r.BadgeVariants;exports.BANNER_ICONS=e.BANNER_ICONS;exports.BANNER_VARIANTS=e.BANNER_VARIANTS;exports.Banner=e.Banner;exports.Button=t.Button;exports.ButtonSizes=t.ButtonSizes;exports.ButtonVariants=t.ButtonVariants;exports.ButtonGroup=i.ButtonGroup;exports.ButtonWithSelect=u.ButtonWithSelect;exports.DataTable=a.DataTable;exports.Dialog=c.Dialog;exports.Elevation=s.Elevation;exports.Icon=l.Icon;exports.ImageBackground=p.ImageBackground;exports.Input=T.Input;exports.CheckboxInput=q.CheckboxInput;exports.CopyInput=B.CopyInput;exports.SearchInput=S.SearchInput;exports.MenuTrigger=g.MenuTrigger;exports.Modal=I.Modal;exports.Popover=h.Popover;exports.ScreenOverlay=m.ScreenOverlay;exports.Select=d.Select;exports.Switch=v.Switch;exports.Table=b.Table;exports.TextEllipsis=E.TextEllipsis;exports.TextEmphasis=N.TextEmphasis;exports.ThemeProvider=o.ThemeProvider;exports.useTheme=o.useTheme;exports.Tombstone=A.Tombstone;exports.Tooltip=M.Tooltip;exports.Waveform=x.Waveform;
2
2
  //# sourceMappingURL=index.cjs.js.map
package/dist/index.d.ts CHANGED
@@ -445,6 +445,56 @@ declare interface ButtonWithSelectProps extends ButtonProps {
445
445
  selectedKey?: string;
446
446
  }
447
447
 
448
+ /**
449
+ * A checkbox input component with support for labels, descriptions, error states, and controlled/uncontrolled modes.
450
+ *
451
+ * API:
452
+ * - {@link CheckboxInputProps}
453
+ */
454
+ export declare const CheckboxInput: default_2.ForwardRefExoticComponent<CheckboxInputProps & default_2.RefAttributes<HTMLInputElement>>;
455
+
456
+ declare interface CheckboxInputProps {
457
+ /**
458
+ * Whether the checkbox is checked (controlled mode).
459
+ */
460
+ checked?: boolean;
461
+ /**
462
+ * Whether the checkbox is checked by default (uncontrolled mode).
463
+ */
464
+ defaultChecked?: boolean;
465
+ /** The error attribute of the checkbox input. */
466
+ error?: default_2.ReactNode | string;
467
+ /** The description attribute of the checkbox input. */
468
+ description?: default_2.ReactNode | string;
469
+ /** The test id attribute of the checkbox input. */
470
+ "data-testid"?: string;
471
+ /**
472
+ * Callback fired when the checkbox state changes.
473
+ */
474
+ onChange?: (checked: boolean) => void;
475
+ /**
476
+ * Whether the checkbox is in an indeterminate state. Used for checkboxes that are neither checked nor unchecked.
477
+ * @external https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/indeterminate
478
+ * @reference @external https://medium.com/indigoag-eng/indeterminate-checkboxes-are-weird-704b246c0f19
479
+ */
480
+ indeterminate?: boolean;
481
+ /** The id attribute of the checkbox input. */
482
+ id?: string;
483
+ /** Whether the checkbox is disabled. */
484
+ isDisabled?: boolean;
485
+ /** Whether the checkbox is required. */
486
+ isRequired?: boolean;
487
+ /** The name attribute of the checkbox input. */
488
+ name: string;
489
+ /** The label attribute of the checkbox input. */
490
+ label?: string | default_2.ReactNode;
491
+ /**
492
+ * The value attribute of the checkbox input (for form submission).
493
+ * @external https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/checkbox#value
494
+ */
495
+ value?: string;
496
+ }
497
+
448
498
  /**
449
499
  * Input with a button to copy value to the clipboard.
450
500
  *
package/dist/index.es.js CHANGED
@@ -1,63 +1,65 @@
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
- import { BANNER_ICONS as f, BANNER_VARIANTS as a, Banner as n } from "./components/Banner/Banner.es.js";
3
+ import { BANNER_ICONS as f, BANNER_VARIANTS as n, Banner as a } from "./components/Banner/Banner.es.js";
4
4
  import { Button as u, ButtonSizes as l, ButtonVariants as B } from "./components/Button/Button.es.js";
5
- import { ButtonGroup as s } from "./components/ButtonGroup/ButtonGroup.es.js";
6
- import { ButtonWithSelect as S } from "./components/ButtonWithSelect/ButtonWithSelect.es.js";
7
- import { DataTable as I } from "./components/DataTable/DataTable.es.js";
5
+ import { ButtonGroup as c } from "./components/ButtonGroup/ButtonGroup.es.js";
6
+ import { ButtonWithSelect as I } from "./components/ButtonWithSelect/ButtonWithSelect.es.js";
7
+ import { DataTable as g } from "./components/DataTable/DataTable.es.js";
8
8
  import { Dialog as N } from "./components/Dialog/Dialog.es.js";
9
9
  import { Elevation as v } from "./components/Elevation/Elevation.es.js";
10
10
  import { Icon as E } from "./components/Icon/Icon.es.js";
11
- import { ImageBackground as M } from "./components/ImageBackground/ImageBackground.es.js";
12
- import { Input as V } from "./components/Input/BaseInput/Input.es.js";
13
- import { CopyInput as C } from "./components/Input/CopyInput/CopyInput.es.js";
14
- import { SearchInput as O } from "./components/Input/SearchInput/SearchInput.es.js";
15
- import { MenuTrigger as W } from "./components/Menu/MenuTrigger.es.js";
16
- import { Modal as k } from "./components/Modal/Modal.es.js";
17
- import { Popover as z } from "./components/Popover/Popover.es.js";
18
- import { ScreenOverlay as j } from "./components/ScreenOverlay/ScreenOverlay.es.js";
19
- import { Select as F } from "./components/Select/Select.es.js";
20
- import { Switch as J } from "./components/Switch/Switch.es.js";
21
- import { Table as L } from "./components/Table/Table.es.js";
22
- import { TextEllipsis as U } from "./components/Text/TextEllipsis/TextEllipsis.es.js";
23
- import { TextEmphasis as Y } from "./components/Text/TextEmphasis/TextEmphasis.es.js";
24
- import { ThemeProvider as $, useTheme as oo } from "./components/ThemeProvider.es.js";
25
- import { Tombstone as eo } from "./components/Tombstone/Tombstone.es.js";
26
- import { Tooltip as po } from "./components/Tooltip/Tooltip.es.js";
27
- import { Waveform as xo } from "./components/Waveform/Waveform.es.js";
11
+ import { ImageBackground as C } from "./components/ImageBackground/ImageBackground.es.js";
12
+ import { Input as R } from "./components/Input/BaseInput/Input.es.js";
13
+ import { CheckboxInput as k } from "./components/Input/CheckboxInput/CheckboxInput.es.js";
14
+ import { CopyInput as D } from "./components/Input/CopyInput/CopyInput.es.js";
15
+ import { SearchInput as P } from "./components/Input/SearchInput/SearchInput.es.js";
16
+ import { MenuTrigger as _ } from "./components/Menu/MenuTrigger.es.js";
17
+ import { Modal as z } from "./components/Modal/Modal.es.js";
18
+ import { Popover as j } from "./components/Popover/Popover.es.js";
19
+ import { ScreenOverlay as F } from "./components/ScreenOverlay/ScreenOverlay.es.js";
20
+ import { Select as J } from "./components/Select/Select.es.js";
21
+ import { Switch as L } from "./components/Switch/Switch.es.js";
22
+ import { Table as U } from "./components/Table/Table.es.js";
23
+ import { TextEllipsis as Y } from "./components/Text/TextEllipsis/TextEllipsis.es.js";
24
+ import { TextEmphasis as $ } from "./components/Text/TextEmphasis/TextEmphasis.es.js";
25
+ import { ThemeProvider as ro, useTheme as eo } from "./components/ThemeProvider.es.js";
26
+ import { Tombstone as po } from "./components/Tombstone/Tombstone.es.js";
27
+ import { Tooltip as xo } from "./components/Tooltip/Tooltip.es.js";
28
+ import { Waveform as no } from "./components/Waveform/Waveform.es.js";
28
29
  export {
29
30
  e as ActionMenu,
30
31
  f as BANNER_ICONS,
31
- a as BANNER_VARIANTS,
32
+ n as BANNER_VARIANTS,
32
33
  p as Badge,
33
34
  m as BadgeVariants,
34
- n as Banner,
35
+ a as Banner,
35
36
  u as Button,
36
- s as ButtonGroup,
37
+ c as ButtonGroup,
37
38
  l as ButtonSizes,
38
39
  B as ButtonVariants,
39
- S as ButtonWithSelect,
40
- C as CopyInput,
41
- I as DataTable,
40
+ I as ButtonWithSelect,
41
+ k as CheckboxInput,
42
+ D as CopyInput,
43
+ g as DataTable,
42
44
  N as Dialog,
43
45
  v as Elevation,
44
46
  E as Icon,
45
- M as ImageBackground,
46
- V as Input,
47
- W as MenuTrigger,
48
- k as Modal,
49
- z as Popover,
50
- j as ScreenOverlay,
51
- O as SearchInput,
52
- F as Select,
53
- J as Switch,
54
- L as Table,
55
- U as TextEllipsis,
56
- Y as TextEmphasis,
57
- $ as ThemeProvider,
58
- eo as Tombstone,
59
- po as Tooltip,
60
- xo as Waveform,
61
- oo as useTheme
47
+ C as ImageBackground,
48
+ R as Input,
49
+ _ as MenuTrigger,
50
+ z as Modal,
51
+ j as Popover,
52
+ F as ScreenOverlay,
53
+ P as SearchInput,
54
+ J as Select,
55
+ L as Switch,
56
+ U as Table,
57
+ Y as TextEllipsis,
58
+ $ as TextEmphasis,
59
+ ro as ThemeProvider,
60
+ po as Tombstone,
61
+ xo as Tooltip,
62
+ no as Waveform,
63
+ eo as useTheme
62
64
  };
63
65
  //# 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{width:100%;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);min-height:40px;max-height:52px;color:var(--proton-control__text-color);border:none;flex:1;padding-left:.75rem;font-size:1.125rem;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-inner{width: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{opacity:.55;color:var(--proton-control__text-color);padding:.25rem 0;font-size:.75rem;font-weight:500}.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-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-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{width:100%;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);min-height:40px;max-height:52px;color:var(--proton-control__text-color);border:none;flex:1;padding-left:.75rem;font-size:1.125rem;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-inner{width: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{opacity:.55;color:var(--proton-control__text-color);padding:.25rem 0;font-size:.75rem;font-weight:500}.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);width:20px;height:20px;margin:0;transition:background-color .1s ease-in-out,border-color .1s ease-in-out,box-shadow .1s ease-in-out;position:relative}.proton-CheckboxInput__input: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:50%;left:50%;transform:translate(-50%,-50%)rotate(45deg)}.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{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-size:16px;font-weight:400;line-height:1.5}.proton-CheckboxInput--disabled .proton-CheckboxInput__label{opacity:.6;cursor:not-allowed}.proton-CheckboxInput__text{opacity:.65;color:var(--proton-control__text-color);font-size:14px;font-weight:500}.proton-CheckboxInput__error{color:var(--proton-color__danger-medium);opacity:1;margin-top:4px}.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}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@protonradio/proton-ui",
3
- "version": "0.11.22",
3
+ "version": "0.11.23-beta.2",
4
4
  "description": "",
5
5
  "main": "./dist/proton-ui.umd.js",
6
6
  "module": "./dist/proton-ui.es.js",