@protonradio/proton-ui 0.11.0-beta.17 → 0.11.0-beta.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/README.md +153 -73
  2. package/dist/breakpoint-9y1_8U_b.mjs +10 -0
  3. package/dist/breakpoint-9y1_8U_b.mjs.map +1 -0
  4. package/dist/breakpoint-DtqbboOa.js +2 -0
  5. package/dist/breakpoint-DtqbboOa.js.map +1 -0
  6. package/dist/constants.cjs.js +1 -1
  7. package/dist/constants.cjs.js.map +1 -1
  8. package/dist/constants.d.ts +4 -147
  9. package/dist/constants.es.js +7 -19
  10. package/dist/constants.es.js.map +1 -1
  11. package/dist/darkTheme-DUWn6YJ-.mjs +345 -0
  12. package/dist/darkTheme-DUWn6YJ-.mjs.map +1 -0
  13. package/dist/darkTheme-ann6VTfq.js +2 -0
  14. package/dist/darkTheme-ann6VTfq.js.map +1 -0
  15. package/dist/hooks.cjs.js +1 -1
  16. package/dist/hooks.cjs.js.map +1 -1
  17. package/dist/hooks.d.ts +34 -5
  18. package/dist/hooks.es.js +36 -4
  19. package/dist/hooks.es.js.map +1 -1
  20. package/dist/icons.svg +10 -10
  21. package/dist/image-BlhKzTx8.js +2 -0
  22. package/dist/image-BlhKzTx8.js.map +1 -0
  23. package/dist/image-C8M6y5Op.mjs +205 -0
  24. package/dist/image-C8M6y5Op.mjs.map +1 -0
  25. package/dist/index.cjs.js +12 -12
  26. package/dist/index.cjs.js.map +1 -1
  27. package/dist/index.d.ts +482 -276
  28. package/dist/index.es.js +9765 -11073
  29. package/dist/index.es.js.map +1 -1
  30. package/dist/navigation-BB0MBIiR.js +2 -0
  31. package/dist/navigation-BB0MBIiR.js.map +1 -0
  32. package/dist/navigation-Bj7Pex9j.mjs +43 -0
  33. package/dist/navigation-Bj7Pex9j.mjs.map +1 -0
  34. package/dist/style.css +1 -1
  35. package/dist/theme-DQsfWeLo.mjs +12 -0
  36. package/dist/theme-DQsfWeLo.mjs.map +1 -0
  37. package/dist/theme-Dc0Ahjq9.js +2 -0
  38. package/dist/theme-Dc0Ahjq9.js.map +1 -0
  39. package/dist/useBreakpoint-CjRyGKN-.mjs.map +1 -1
  40. package/dist/useBreakpoint-DA-JqOu3.js.map +1 -1
  41. package/dist/utils.cjs.js +1 -1
  42. package/dist/utils.cjs.js.map +1 -1
  43. package/dist/utils.d.ts +32 -44
  44. package/dist/utils.es.js +17 -451
  45. package/dist/utils.es.js.map +1 -1
  46. package/package.json +104 -100
  47. package/dist/palettes-BX86v-qb.js +0 -2
  48. package/dist/palettes-BX86v-qb.js.map +0 -1
  49. package/dist/palettes-mcF0lNKY.mjs +0 -171
  50. package/dist/palettes-mcF0lNKY.mjs.map +0 -1
@@ -0,0 +1,2 @@
1
+ "use strict";function c(...t){return t.filter(l).join(" ")}const l=t=>typeof t=="string"||t instanceof String,r=async(t,n)=>{let e=!1;if(navigator.clipboard)try{await navigator.clipboard.writeText(t),e=!0}catch(a){n?n==null||n(a):console.error(a)}else e=p(t);return e||(n?n==null||n(new Error("Failed to copy to clipboard")):console.error("Failed to copy to clipboard")),e},p=(t,{target:n=document.body}={})=>{if(typeof t!="string")throw new TypeError(`Expected parameter \`text\` to be a \`string\`, got \`${typeof t}\`.`);const e=document.createElement("textarea"),a=document.activeElement;e.value=t,e.setAttribute("readonly",""),e.style.contain="strict",e.style.position="absolute",e.style.left="-9999px",e.style.fontSize="12pt";const o=document.getSelection(),i=o.rangeCount>0&&o.getRangeAt(0);n.append(e),e.select(),e.selectionStart=0,e.selectionEnd=t.length;let s=!1;try{s=document.execCommand("copy")}catch{}return e.remove(),i&&(o.removeAllRanges(),o.addRange(i)),a instanceof HTMLElement&&a.focus(),s},d=t=>t.startsWith("http"),u=(t,n)=>{if(t.metaKey||t.altKey||t.ctrlKey||t.shiftKey||t.button&&t.button!==0)return;t.preventDefault();const e=n.startsWith("/")?n:`/${n}`;window.history.pushState({},"",e),window.dispatchEvent(new PopStateEvent("popstate"))};exports.copyTextToClipboard=r;exports.csx=c;exports.handleInternalNavigation=u;exports.isUrlExternal=d;
2
+ //# sourceMappingURL=navigation-BB0MBIiR.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"navigation-BB0MBIiR.js","sources":["../src/utils/string.ts","../src/utils/copy.ts","../src/utils/navigation.ts"],"sourcesContent":["/**\r\n * Concatenates class names into a single string, filtering out non-string values.\r\n */\r\nexport function csx(...classnames: unknown[]): string {\r\n return classnames.filter(isString).join(\" \");\r\n}\r\n\r\nconst isString = (x: unknown): boolean =>\r\n typeof x === \"string\" || x instanceof String;\r\n","export const copyTextToClipboard = async (\r\n text: string,\r\n onError?: (error: Error) => void\r\n): Promise<boolean> => {\r\n let copySuccess = false;\r\n if (navigator.clipboard) {\r\n try {\r\n await navigator.clipboard.writeText(text);\r\n copySuccess = true;\r\n } catch (error) {\r\n onError ? onError?.(error) : console.error(error);\r\n }\r\n } else {\r\n copySuccess = DEPRECATED_copyTextToClipboard(text);\r\n }\r\n if (!copySuccess) {\r\n onError ? onError?.(new Error(\"Failed to copy to clipboard\")) : console.error(\"Failed to copy to clipboard\");\r\n }\r\n return copySuccess;\r\n};\r\n\r\n/**\r\n * Fallback legacy function to copy text to clipboard for browsers that don't support navigator.clipboard.writeText\r\n * @reference https://github.com/sindresorhus/copy-text-to-clipboard/blob/main/index.js\r\n * @deprecated Use navigator.clipboard.writeText instead\r\n */\r\nconst DEPRECATED_copyTextToClipboard = (\r\n text,\r\n { target = document.body } = {}\r\n) => {\r\n if (typeof text !== \"string\") {\r\n throw new TypeError(\r\n `Expected parameter \\`text\\` to be a \\`string\\`, got \\`${typeof text}\\`.`\r\n );\r\n }\r\n\r\n const element = document.createElement(\"textarea\");\r\n const previouslyFocusedElement = document.activeElement;\r\n\r\n element.value = text;\r\n\r\n // Prevent keyboard from showing on mobile\r\n element.setAttribute(\"readonly\", \"\");\r\n\r\n element.style.contain = \"strict\";\r\n element.style.position = \"absolute\";\r\n element.style.left = \"-9999px\";\r\n element.style.fontSize = \"12pt\"; // Prevent zooming on iOS\r\n\r\n const selection = document.getSelection();\r\n const originalRange = selection.rangeCount > 0 && selection.getRangeAt(0);\r\n\r\n target.append(element);\r\n element.select();\r\n\r\n // Explicit selection workaround for iOS\r\n element.selectionStart = 0;\r\n element.selectionEnd = text.length;\r\n\r\n let isSuccess = false;\r\n try {\r\n isSuccess = document.execCommand(\"copy\");\r\n } catch {}\r\n\r\n element.remove();\r\n\r\n if (originalRange) {\r\n selection.removeAllRanges();\r\n selection.addRange(originalRange);\r\n }\r\n\r\n // Get the focus back on the previously focused element, if any\r\n if (previouslyFocusedElement instanceof HTMLElement) {\r\n previouslyFocusedElement.focus();\r\n }\r\n\r\n return isSuccess;\r\n};\r\n","/**\r\n * [isUrlExternal] - determine if passed absolute url is external to the current domain.\r\n */\r\nexport const isUrlExternal = (url: string) => {\r\n return url.startsWith(\"http\");\r\n};\r\n\r\n/**\r\n * Handles internal navigation clicks by preventing default browser behavior and\r\n * programmatically updating the URL and history state.\r\n *\r\n * @param e - The click event from the anchor element\r\n * @param to - The destination path to navigate to\r\n *\r\n * @remarks\r\n * - Converts relative paths to absolute by prepending \"/\" if needed\r\n * - Updates browser history using pushState and dispatches a popstate event\r\n */\r\nexport const handleInternalNavigation = (\r\n e: React.MouseEvent<HTMLAnchorElement>,\r\n to: string\r\n) => {\r\n // Don't handle navigation if modifier keys are pressed\r\n if (e.metaKey || e.altKey || e.ctrlKey || e.shiftKey) {\r\n return;\r\n }\r\n\r\n // Don't handle middle clicks or right clicks\r\n if (e.button && e.button !== 0) {\r\n return;\r\n }\r\n\r\n e.preventDefault();\r\n\r\n // Handle relative paths\r\n const resolvedPath = to.startsWith(\"/\") ? to : `/${to}`;\r\n window.history.pushState({}, \"\", resolvedPath);\r\n window.dispatchEvent(new PopStateEvent(\"popstate\"));\r\n};\r\n"],"names":["csx","classnames","isString","x","copyTextToClipboard","text","onError","copySuccess","error","DEPRECATED_copyTextToClipboard","target","element","previouslyFocusedElement","selection","originalRange","isSuccess","isUrlExternal","url","handleInternalNavigation","e","to","resolvedPath"],"mappings":"aAGO,SAASA,KAAOC,EAA+B,CACpD,OAAOA,EAAW,OAAOC,CAAQ,EAAE,KAAK,GAAG,CAC7C,CAEA,MAAMA,EAAYC,GAChB,OAAOA,GAAM,UAAYA,aAAa,OCR3BC,EAAsB,MACjCC,EACAC,IACqB,CACrB,IAAIC,EAAc,GAClB,GAAI,UAAU,UACR,GAAA,CACI,MAAA,UAAU,UAAU,UAAUF,CAAI,EAC1BE,EAAA,SACPC,EAAO,CACdF,EAAUA,GAAA,MAAAA,EAAUE,GAAS,QAAQ,MAAMA,CAAK,CAClD,MAEAD,EAAcE,EAA+BJ,CAAI,EAEnD,OAAKE,IACOD,EAAAA,GAAA,MAAAA,EAAU,IAAI,MAAM,6BAA6B,GAAK,QAAQ,MAAM,6BAA6B,GAEtGC,CACT,EAOME,EAAiC,CACrCJ,EACA,CAAE,OAAAK,EAAS,SAAS,IAAS,EAAA,KAC1B,CACC,GAAA,OAAOL,GAAS,SAClB,MAAM,IAAI,UACR,yDAAyD,OAAOA,CAAI,KAAA,EAIlE,MAAAM,EAAU,SAAS,cAAc,UAAU,EAC3CC,EAA2B,SAAS,cAE1CD,EAAQ,MAAQN,EAGRM,EAAA,aAAa,WAAY,EAAE,EAEnCA,EAAQ,MAAM,QAAU,SACxBA,EAAQ,MAAM,SAAW,WACzBA,EAAQ,MAAM,KAAO,UACrBA,EAAQ,MAAM,SAAW,OAEnB,MAAAE,EAAY,SAAS,eACrBC,EAAgBD,EAAU,WAAa,GAAKA,EAAU,WAAW,CAAC,EAExEH,EAAO,OAAOC,CAAO,EACrBA,EAAQ,OAAO,EAGfA,EAAQ,eAAiB,EACzBA,EAAQ,aAAeN,EAAK,OAE5B,IAAIU,EAAY,GACZ,GAAA,CACUA,EAAA,SAAS,YAAY,MAAM,CAAA,MACjC,CAAC,CAET,OAAAJ,EAAQ,OAAO,EAEXG,IACFD,EAAU,gBAAgB,EAC1BA,EAAU,SAASC,CAAa,GAI9BF,aAAoC,aACtCA,EAAyB,MAAM,EAG1BG,CACT,EC1EaC,EAAiBC,GACrBA,EAAI,WAAW,MAAM,EAcjBC,EAA2B,CACtCC,EACAC,IACG,CAOH,GALID,EAAE,SAAWA,EAAE,QAAUA,EAAE,SAAWA,EAAE,UAKxCA,EAAE,QAAUA,EAAE,SAAW,EAC3B,OAGFA,EAAE,eAAe,EAGjB,MAAME,EAAeD,EAAG,WAAW,GAAG,EAAIA,EAAK,IAAIA,CAAE,GACrD,OAAO,QAAQ,UAAU,CAAC,EAAG,GAAIC,CAAY,EAC7C,OAAO,cAAc,IAAI,cAAc,UAAU,CAAC,CACpD"}
@@ -0,0 +1,43 @@
1
+ function r(...t) {
2
+ return t.filter(i).join(" ");
3
+ }
4
+ const i = (t) => typeof t == "string" || t instanceof String, p = async (t, n) => {
5
+ let e = !1;
6
+ if (navigator.clipboard)
7
+ try {
8
+ await navigator.clipboard.writeText(t), e = !0;
9
+ } catch (a) {
10
+ n ? n == null || n(a) : console.error(a);
11
+ }
12
+ else
13
+ e = l(t);
14
+ return e || (n ? n == null || n(new Error("Failed to copy to clipboard")) : console.error("Failed to copy to clipboard")), e;
15
+ }, l = (t, { target: n = document.body } = {}) => {
16
+ if (typeof t != "string")
17
+ throw new TypeError(
18
+ `Expected parameter \`text\` to be a \`string\`, got \`${typeof t}\`.`
19
+ );
20
+ const e = document.createElement("textarea"), a = document.activeElement;
21
+ e.value = t, e.setAttribute("readonly", ""), e.style.contain = "strict", e.style.position = "absolute", e.style.left = "-9999px", e.style.fontSize = "12pt";
22
+ const o = document.getSelection(), s = o.rangeCount > 0 && o.getRangeAt(0);
23
+ n.append(e), e.select(), e.selectionStart = 0, e.selectionEnd = t.length;
24
+ let c = !1;
25
+ try {
26
+ c = document.execCommand("copy");
27
+ } catch {
28
+ }
29
+ return e.remove(), s && (o.removeAllRanges(), o.addRange(s)), a instanceof HTMLElement && a.focus(), c;
30
+ }, d = (t) => t.startsWith("http"), u = (t, n) => {
31
+ if (t.metaKey || t.altKey || t.ctrlKey || t.shiftKey || t.button && t.button !== 0)
32
+ return;
33
+ t.preventDefault();
34
+ const e = n.startsWith("/") ? n : `/${n}`;
35
+ window.history.pushState({}, "", e), window.dispatchEvent(new PopStateEvent("popstate"));
36
+ };
37
+ export {
38
+ p as a,
39
+ r as c,
40
+ u as h,
41
+ d as i
42
+ };
43
+ //# sourceMappingURL=navigation-Bj7Pex9j.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"navigation-Bj7Pex9j.mjs","sources":["../src/utils/string.ts","../src/utils/copy.ts","../src/utils/navigation.ts"],"sourcesContent":["/**\r\n * Concatenates class names into a single string, filtering out non-string values.\r\n */\r\nexport function csx(...classnames: unknown[]): string {\r\n return classnames.filter(isString).join(\" \");\r\n}\r\n\r\nconst isString = (x: unknown): boolean =>\r\n typeof x === \"string\" || x instanceof String;\r\n","export const copyTextToClipboard = async (\r\n text: string,\r\n onError?: (error: Error) => void\r\n): Promise<boolean> => {\r\n let copySuccess = false;\r\n if (navigator.clipboard) {\r\n try {\r\n await navigator.clipboard.writeText(text);\r\n copySuccess = true;\r\n } catch (error) {\r\n onError ? onError?.(error) : console.error(error);\r\n }\r\n } else {\r\n copySuccess = DEPRECATED_copyTextToClipboard(text);\r\n }\r\n if (!copySuccess) {\r\n onError ? onError?.(new Error(\"Failed to copy to clipboard\")) : console.error(\"Failed to copy to clipboard\");\r\n }\r\n return copySuccess;\r\n};\r\n\r\n/**\r\n * Fallback legacy function to copy text to clipboard for browsers that don't support navigator.clipboard.writeText\r\n * @reference https://github.com/sindresorhus/copy-text-to-clipboard/blob/main/index.js\r\n * @deprecated Use navigator.clipboard.writeText instead\r\n */\r\nconst DEPRECATED_copyTextToClipboard = (\r\n text,\r\n { target = document.body } = {}\r\n) => {\r\n if (typeof text !== \"string\") {\r\n throw new TypeError(\r\n `Expected parameter \\`text\\` to be a \\`string\\`, got \\`${typeof text}\\`.`\r\n );\r\n }\r\n\r\n const element = document.createElement(\"textarea\");\r\n const previouslyFocusedElement = document.activeElement;\r\n\r\n element.value = text;\r\n\r\n // Prevent keyboard from showing on mobile\r\n element.setAttribute(\"readonly\", \"\");\r\n\r\n element.style.contain = \"strict\";\r\n element.style.position = \"absolute\";\r\n element.style.left = \"-9999px\";\r\n element.style.fontSize = \"12pt\"; // Prevent zooming on iOS\r\n\r\n const selection = document.getSelection();\r\n const originalRange = selection.rangeCount > 0 && selection.getRangeAt(0);\r\n\r\n target.append(element);\r\n element.select();\r\n\r\n // Explicit selection workaround for iOS\r\n element.selectionStart = 0;\r\n element.selectionEnd = text.length;\r\n\r\n let isSuccess = false;\r\n try {\r\n isSuccess = document.execCommand(\"copy\");\r\n } catch {}\r\n\r\n element.remove();\r\n\r\n if (originalRange) {\r\n selection.removeAllRanges();\r\n selection.addRange(originalRange);\r\n }\r\n\r\n // Get the focus back on the previously focused element, if any\r\n if (previouslyFocusedElement instanceof HTMLElement) {\r\n previouslyFocusedElement.focus();\r\n }\r\n\r\n return isSuccess;\r\n};\r\n","/**\r\n * [isUrlExternal] - determine if passed absolute url is external to the current domain.\r\n */\r\nexport const isUrlExternal = (url: string) => {\r\n return url.startsWith(\"http\");\r\n};\r\n\r\n/**\r\n * Handles internal navigation clicks by preventing default browser behavior and\r\n * programmatically updating the URL and history state.\r\n *\r\n * @param e - The click event from the anchor element\r\n * @param to - The destination path to navigate to\r\n *\r\n * @remarks\r\n * - Converts relative paths to absolute by prepending \"/\" if needed\r\n * - Updates browser history using pushState and dispatches a popstate event\r\n */\r\nexport const handleInternalNavigation = (\r\n e: React.MouseEvent<HTMLAnchorElement>,\r\n to: string\r\n) => {\r\n // Don't handle navigation if modifier keys are pressed\r\n if (e.metaKey || e.altKey || e.ctrlKey || e.shiftKey) {\r\n return;\r\n }\r\n\r\n // Don't handle middle clicks or right clicks\r\n if (e.button && e.button !== 0) {\r\n return;\r\n }\r\n\r\n e.preventDefault();\r\n\r\n // Handle relative paths\r\n const resolvedPath = to.startsWith(\"/\") ? to : `/${to}`;\r\n window.history.pushState({}, \"\", resolvedPath);\r\n window.dispatchEvent(new PopStateEvent(\"popstate\"));\r\n};\r\n"],"names":["csx","classnames","isString","x","copyTextToClipboard","text","onError","copySuccess","error","DEPRECATED_copyTextToClipboard","target","element","previouslyFocusedElement","selection","originalRange","isSuccess","isUrlExternal","url","handleInternalNavigation","e","to","resolvedPath"],"mappings":"AAGO,SAASA,KAAOC,GAA+B;AACpD,SAAOA,EAAW,OAAOC,CAAQ,EAAE,KAAK,GAAG;AAC7C;AAEA,MAAMA,IAAW,CAACC,MAChB,OAAOA,KAAM,YAAYA,aAAa,QCR3BC,IAAsB,OACjCC,GACAC,MACqB;AACrB,MAAIC,IAAc;AAClB,MAAI,UAAU;AACR,QAAA;AACI,YAAA,UAAU,UAAU,UAAUF,CAAI,GAC1BE,IAAA;AAAA,aACPC,GAAO;AACd,MAAAF,IAAUA,KAAA,QAAAA,EAAUE,KAAS,QAAQ,MAAMA,CAAK;AAAA,IAClD;AAAA;AAEA,IAAAD,IAAcE,EAA+BJ,CAAI;AAEnD,SAAKE,MACOD,IAAAA,KAAA,QAAAA,EAAU,IAAI,MAAM,6BAA6B,KAAK,QAAQ,MAAM,6BAA6B,IAEtGC;AACT,GAOME,IAAiC,CACrCJ,GACA,EAAE,QAAAK,IAAS,SAAS,KAAS,IAAA,OAC1B;AACC,MAAA,OAAOL,KAAS;AAClB,UAAM,IAAI;AAAA,MACR,yDAAyD,OAAOA,CAAI;AAAA,IAAA;AAIlE,QAAAM,IAAU,SAAS,cAAc,UAAU,GAC3CC,IAA2B,SAAS;AAE1C,EAAAD,EAAQ,QAAQN,GAGRM,EAAA,aAAa,YAAY,EAAE,GAEnCA,EAAQ,MAAM,UAAU,UACxBA,EAAQ,MAAM,WAAW,YACzBA,EAAQ,MAAM,OAAO,WACrBA,EAAQ,MAAM,WAAW;AAEnB,QAAAE,IAAY,SAAS,gBACrBC,IAAgBD,EAAU,aAAa,KAAKA,EAAU,WAAW,CAAC;AAExE,EAAAH,EAAO,OAAOC,CAAO,GACrBA,EAAQ,OAAO,GAGfA,EAAQ,iBAAiB,GACzBA,EAAQ,eAAeN,EAAK;AAE5B,MAAIU,IAAY;AACZ,MAAA;AACU,IAAAA,IAAA,SAAS,YAAY,MAAM;AAAA,EAAA,QACjC;AAAA,EAAC;AAET,SAAAJ,EAAQ,OAAO,GAEXG,MACFD,EAAU,gBAAgB,GAC1BA,EAAU,SAASC,CAAa,IAI9BF,aAAoC,eACtCA,EAAyB,MAAM,GAG1BG;AACT,GC1EaC,IAAgB,CAACC,MACrBA,EAAI,WAAW,MAAM,GAcjBC,IAA2B,CACtCC,GACAC,MACG;AAOH,MALID,EAAE,WAAWA,EAAE,UAAUA,EAAE,WAAWA,EAAE,YAKxCA,EAAE,UAAUA,EAAE,WAAW;AAC3B;AAGF,EAAAA,EAAE,eAAe;AAGjB,QAAME,IAAeD,EAAG,WAAW,GAAG,IAAIA,IAAK,IAAIA,CAAE;AACrD,SAAO,QAAQ,UAAU,CAAC,GAAG,IAAIC,CAAY,GAC7C,OAAO,cAAc,IAAI,cAAc,UAAU,CAAC;AACpD;"}
package/dist/style.css CHANGED
@@ -1 +1 @@
1
- :root{--proton-color__primary:#e26014;--proton-color__primary-light:#fbe5d7;--proton-color__primary-lightest:#fff7f0;--proton-color__secondary:#f2f2f2;--proton-color__gray-super-dark:#141211;--proton-color__gray-dark:#4d4d4d;--proton-color__gray-medium:#7d7d7d;--proton-color__gray-medium-light:#b1b1b1;--proton-color__gray-light:#ddd;--proton-color__gray-lightest:#f0f1f2;--proton-color__gray-super-light:#f7f8f9;--proton-color__white:#fff;--proton-color__danger-super-dark:#991b1b;--proton-color__danger-dark:#a80724;--proton-color__danger-medium:#e23f5c;--proton-color__danger-light:#f16880;--proton-color__danger-super-light:#ffe1e1;--proton-color__warning-dark:#8b5600;--proton-color__warning-medium:#b37208;--proton-color__warning-light:#ffac23;--proton-color__warning-super-light:#fff0c9;--proton-color__success-dark:#247800;--proton-color__success-medium:#339a07;--proton-color__success-light:#66cf39;--proton-color__success-super-light:#deffd1;--proton-control__text-color:var(--proton-color__white);--proton-control__background-color:var(--proton-color__white);--proton-control__background-color-light:var(--proton-color__gray-super-light);--proton-control__border-color:var(--proton-color__gray-dark);--proton-control__shadow-color:var(--proton-color__gray-dark);--proton-control__border-radius:4px}.proton-Button{--proton-icon-text-gap:.3em;--proton-button-edge-padding:1.05em;color:var(--proton-color__white);border-radius:var(--proton-control__border-radius);padding:.5em var(--proton-button-edge-padding);letter-spacing:.05em;cursor:pointer;box-sizing:border-box;border:0;align-items:center;text-decoration:none;transition:filter .1s,background-color .1s;display:inline-flex;position:relative}.proton-Button__icon-decorator{padding-right:var(--proton-icon-text-gap);justify-content:center;align-items:center;line-height:1;display:flex;position:relative}.proton-Button__icon-decorator--fullWidth{left:var(--proton-button-edge-padding);position:absolute}.proton-Button__text{box-sizing:border-box;text-align:center;white-space:nowrap;text-overflow:ellipsis;margin:auto;overflow:hidden}.proton-Button:hover{filter:brightness(1.08);cursor:pointer;color:var(--proton-color__white);text-decoration:none}.proton-Button--primary,.proton-Button--primary:hover{background-color:var(--proton-color__primary)}.proton-Button--secondary,.proton-Button--secondary:hover{background-color:var(--proton-color__gray-light);color:var(--proton-control__text-color)}.proton-ui__theme--custom-dark .proton-Button--secondary{background-color:var(--proton-control__background-color-light)}.proton-Button--danger{background-color:var(--proton-color__danger-medium)}.proton-Button--success{background-color:var(--proton-color__success-medium)}.proton-Button--translucent{background-color:var(--proton-control__background-color-light)}.proton-Button--translucent:hover{background-color:#ffffff38}.proton-Button--disabled,.proton-Button--disabled:hover{opacity:.5;filter:none;cursor:not-allowed}.proton-Button:focus{outline:solid var(--proton-color__primary)1px;border:none}.proton-Button:focus-visible{outline:solid var(--proton-color__primary)1px;border:none}.proton-Button--fullWidth{width:100%;display:flex}.proton-Button--small{padding:.2rem .6rem;font-size:.875rem}.proton-Button--medium{--proton-button-edge-padding:1rem;padding:.4rem 1rem;font-size:1rem}.proton-Button--large{--proton-button-edge-padding:1.2rem;padding:.6rem 1.6rem;font-size:1.2rem}.proton-Button--xlarge{--proton-button-edge-padding:1.3rem;padding:1rem 2rem .8rem;font-size:1.3rem}.proton-Button--2xlarge{--proton-button-edge-padding:1.6rem;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(50%);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;max-height:100vh;overflow:none;flex:1;width:100%;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:14px 14px 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__card>div{flex-direction:column;flex:1;display:flex}.proton-ActionMenu__cancel-button{margin:0 12px 16px}.proton-ActionMenu__cancel-button button{justify-content:center;width:100%}.proton-ActionMenu__content{padding:12px 12px 0}.proton-ActionMenu__list{flex-direction:column;margin:10px 0;display:flex}.proton-ActionMenu__list--disabled{opacity:.5;cursor:not-allowed}.proton-ActionMenu__item{color:inherit;cursor:pointer;justify-content:space-between;align-items:center;padding:12px 8px 12px 12px;text-decoration:none;transition:background-color .2s;display:flex}.proton-ActionMenu__item:hover,.proton-ActionMenu__item:focus{background-color:var(--proton-color__gray-super-light);border:none;outline:none}.proton-ui__theme--dark .proton-ActionMenu__item:hover,.proton-ui__theme--dark .proton-ActionMenu__item:focus,.proton-ui__theme--custom-dark .proton-ActionMenu__item:focus,.proton-ui__theme--custom-dark .proton-ActionMenu__item:hover{background-color:var(--proton-color__gray-light)}.proton-ActionMenu__item[aria-checked=true]{background-color:var(--proton-color__primary-light);color:var(--proton-color__primary)}.proton-ui__theme--custom-dark .proton-ActionMenu__item[aria-checked=true],.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]{opacity:.5;cursor:not-allowed}.proton-ActionMenu__item[aria-disabled=true]:hover{background-color:#0000}.proton-ActionMenu__content:has(.proton-ListBox){padding:0}html .proton-ActionMenu__content>.proton-ListBox{box-shadow:none;background:0 0;border:none;border-radius:0;margin-bottom:12px}.proton-ActionMenu__title{justify-content:center;align-items:center;margin:.75rem;font-weight:600;display:flex;position:relative}.proton-ActionMenu__title button{-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer;color:var(--proton-control__text-color);background:0 0;border:none;border-radius:3px;justify-content:center;align-items:center;padding:.35rem;display:flex}.proton-ActionMenu__title button:hover{background:#ffffff1a}.proton-ActionMenu__description{color:var(--proton-control__text-color);opacity:.7;font-size:.875rem}.proton-ActionMenu__item-label{font-weight:500}.proton-Badge{letter-spacing:.2em;text-align:center;text-transform:uppercase;white-space:nowrap;height:1.6rem;color:var(--proton-control__text-color);border-radius:10rem;padding-bottom:calc(1rem - 1.1em);padding-left:1rem;padding-right:calc(1rem - .2em);font-size:max(11px,min(.6875rem + .1vw,16px));font-weight:500;line-height:1.8rem;display:inline-block}.proton-ui__theme--custom-dark.proton-Badge:not([class*=proton-Badge--]),.proton-ui__theme--dark.proton-Badge:not([class*=proton-Badge--]){background-color:var(--proton-control__background-color-light)}.proton-ui__theme--light.proton-Badge:not([class*=proton-Badge--]){background-color:var(--proton-color__secondary);color:#666}.proton-Badge--secondary{background-color:var(--proton-control__background-color-light)}.proton-ui__theme--light.proton-Badge--secondary{background-color:var(--proton-color__secondary);color:#666}.proton-ui__theme--custom-dark.proton-Badge--secondary{background-color:var(--proton-color__secondary);color:var(--proton-color__white)}.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}:root{--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}.proton-ui__theme--custom-dark,.proton-ui__theme--dark{--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{background-color:var(--banner-bg);-webkit-backdrop-filter:var(--banner-blur);backdrop-filter:var(--banner-blur);--tw-backdrop-blur:var(--banner-blur);margin:0}.proton-Banner--rounded{border-radius:.375rem}.proton-Banner__wrapper{align-items:flex-start;padding:2rem;display:flex}.proton-Banner__wrapper--compact{padding:16px}.proton-Banner__content-wrapper{min-width:0;color:var(--banner-content);flex:1}.proton-Banner__container{padding:0 10px}.proton-Banner__title{letter-spacing:.01rem;color:var(--banner-title);margin:0;font-size:max(14px,min(1.8rem,20px));font-weight:600;line-height:18px}.proton-Banner__content{color:var(--banner-content);margin:6px 0 0}.proton-Banner__icon{fill:var(--banner-icon);height:20px}.proton-Banner__actions{gap:.5rem;margin:6px 0 0;display:flex}@media (min-width:768px){.proton-Banner__container{grid-gap:8px;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 12px}.proton-Banner__wrapper:not(:has(.proton-Banner__content)){align-items:center}}.proton-ButtonGroup{border:1px solid var(--proton-color__gray-light);border-radius:4px;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 6px #00000026}.proton-ButtonGroup__option--selected+.proton-ButtonGroup__option{border-left:1px solid #0000}.proton-MenuTrigger{display:inline-block;position:relative}.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:5px 16px 4px;font-size:.8em;font-weight:700}.proton-MenuTrigger__button{cursor:pointer;color:var(--proton-control__text-color);background:0 0;border:none;border-radius:4px;justify-content:center;align-items:center;padding:4px;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-control__border-color)}.proton-MenuTrigger__button:hover{background-color:#60606026}.proton-ui__theme--dark .proton-MenuTrigger__button:hover{background-color:#ffffff1a}.proton-MenuTrigger__menu-item.proton-ListBox__item,.proton-MenuTrigger__menu-item a{color:var(--proton-control__text-color);grid-template-areas:"label kbd""desc kbd";text-decoration:none;display:grid}:is(.proton-MenuTrigger__menu-item.proton-ListBox__item,.proton-MenuTrigger__menu-item a)[data-has-submenu=true]{grid-template-columns:unset;grid-template-areas:unset;justify-content:space-between;align-items:center;display:flex}:is(.proton-MenuTrigger__menu-item.proton-ListBox__item,.proton-MenuTrigger__menu-item a) [slot=label]{grid-area:label;font-weight:500}:is(.proton-MenuTrigger__menu-item.proton-ListBox__item,.proton-MenuTrigger__menu-item a) [slot=description]{opacity:.7;grid-area:desc;font-size:small}.proton-MenuTrigger__chevron{width:1em;height:1em;fill:var(--proton-control__text-color);padding-left:8px}.proton-ButtonWithSelect{align-items:stretch;display:flex;position:relative}.proton-ButtonWithSelect button:focus{box-shadow:inset 0 0 0 2px var(--proton-color__primary-light);outline:none}.proton-ButtonWithSelect__button{flex:var(--flex);align-items:stretch;display:flex}.proton-ButtonWithSelect__button button{border-top-right-radius:0;border-bottom-right-radius:0;align-items:center;display:flex;position:relative;overflow:hidden}.proton-ButtonWithSelect__button button: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-Dialog{background-color:var(--proton-control__background-color);border-radius:var(--proton-control__border-radius);box-shadow:0 0 2px 0 var(--proton-control__shadow-color),0 0 12px 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,.proton-ui__theme--custom-dark .proton-Dialog{background-color:var(--proton-color__gray-light)}.proton-Dialog__header{margin-top:0;margin-bottom:5px}.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}.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:1px solid #0000;flex:1;padding-left:12px;font-size:18px;font-weight:400;transition:outline .2s ease-in-out,background-color .2s ease-in-out,color .2s ease-in-out,border .2s ease-in-out,opacity .2s ease-in-out}.proton-ui__theme--custom-dark .proton-Input,.proton-ui__theme--dark .proton-Input{background-color:var(--proton-control__background-color-light);outline:none}.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{flex-direction:column;flex:1;display:flex}.proton-Input__container-inner{flex:1;align-items:center;width:100%;display:flex;position:relative}.proton-Input__descriptor{z-index:1;background-position:50%;background-repeat:no-repeat;background-size:50%;justify-content:center;align-items:center;height:100%;display:flex;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;padding-right:12px;right:0}.proton-Input__container-inner:has(.proton-Input__prefix) .proton-Input{padding-left:var(--prefix-width,32px)}.proton-Input__container-inner:has(.proton-Input__suffix) .proton-Input{padding-right:calc(12px + var(--suffix-width,44px))}.proton-Input__text{opacity:.55;color:var(--proton-control__text-color);padding:4px 0;font-size:12px;font-weight:500}.proton-ui__theme--custom-dark .proton-Input__text{color:var(--proton-control__text-color)}.proton-Input__error{color:var(--proton-color__danger-medium);opacity:1}.proton-Input__label-top{padding-top:22px;padding-bottom:8px}.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:12px;transform:translateY(-140%)}.proton-Input:focus+.proton-Input__label{color:var(--proton-color__primary);opacity:1}.proton-ui__theme--custom-dark .proton-Input:focus+.proton-Input__label{color:var(--proton-color__primary-light)}.proton-CopyInput-button{all:unset;color:var(--proton-control__text-color);text-transform:uppercase;letter-spacing:.2em;justify-content:center;align-items:center;padding-left:14px;padding-right:12px;font-size:12px;font-weight:600;line-height:1rem;display:flex}.proton-Input__suffix{padding-right:0}.proton-CopyInput-button-container{cursor:pointer;align-items:center;width:100%;height:100%;display:flex}.proton-CopyInput-button svg{margin-bottom:1px;transition:color .2s}.proton-CopyInput-button-text{margin-left:.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-container{border-left:1px solid var(--proton-control__border-color);align-items:center;height:100%;transition:background-color .2s;display:flex}.proton-ui__theme--light .proton-CopyInput-button-container:hover{background-color:var(--proton-control__background-color-light)}.proton-SearchInput__wrapper{width:100%}.proton-SearchInput__wrapper input{border-radius:50px;padding-left:44px!important}.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]::-ms-clear{width:0;height:0;display:none}.proton-SearchInput__wrapper input[type=search]::-ms-reveal{width:0;height:0;display:none}.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 1px 4px -1px var(--proton-control__shadow-color);opacity:1;border-radius:8px;padding:32px;transition:opacity .2s ease-in-out;position:relative;overflow:visible}.proton-Modal__content{margin-top:8px}.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:4px 8px;display:flex}.proton-Modal>div{text-align:center;width:100%}}.proton-Modal__title{word-break:break-word;color:var(--proton-control__text-color);margin-bottom:2px;font-size:max(16px,min(3rem,28px));font-weight:700;line-height:1.2}.proton-Modal__subtitle{color:var(--proton-control__text-color);opacity:.92;margin:0;font-size:max(16px,min(1.4rem,20px));font-weight:500;line-height:1.5}.proton-Modal__body{word-break:break-word;margin:16px 0;line-height:1.5}.proton-Modal__actions{justify-content:center;gap:1rem;margin-top:16px;display:flex}.proton-Modal__close-button{cursor:pointer;color:var(--proton-control__text-color);background:0 0;border:none;border-radius:.25rem;padding:8px;font-size:2.2rem;font-weight:800;line-height:1;transition:opacity .15s;position:absolute;top:6px;right:12px}.proton-Modal__close-button:focus,.proton-Modal__close-button:hover{opacity:.8}.proton-ui__theme--dark .proton-Modal,.proton-ui__theme--custom-dark .proton-Modal{background-color:var(--proton-control__background-color-light)}.proton-ui__theme--light .proton-Modal__title{color:var(--proton-color__gray-super-dark)}.proton-Popover{transform-origin:top}.arrow{fill:var(--proton-control__background-color);stroke-width:1px;width:12px;height:12px;position:absolute}.proton-ui__theme--dark .arrow,.proton-ui__theme--custom-dark .arrow{fill:var(--proton-color__gray-light)}.arrow[data-placement=top]{top:100%;transform:translate(-50%)}.arrow[data-placement=bottom]{bottom:100%;transform:translate(-50%)rotate(180deg)}.arrow[data-placement=left]{left:100%;transform:translateY(-50%)rotate(-90deg)}.arrow[data-placement=right]{right:100%;transform:translateY(-50%)rotate(90deg)}.proton-Popover[data-placement=top]{--origin:translateY(10px)scaleY(.9)}.proton-Popover[data-placement=bottom]{--origin:translateY(-10px)scaleY(.9)}.proton-Popover[data-placement=left]{--origin:translateX(18px)scaleX(.96)}.proton-Popover[data-placement=right]{--origin:translateX(-18px)scaleX(.96)}.proton-Popover[data-entering]{animation:.2s ease-out forwards popoverSlide}@keyframes popoverSlide{0%{opacity:0;transform:var(--origin)}to{opacity:1;transform:translateY(0)scaleY(1)scaleX(1)}}.proton-ListBox{--listbox-bg-color:var(--proton-control__background-color);--listbox-item-bg-color:var(--proton-control__background-color);letter-spacing:.05em;border-radius:var(--proton-control__border-radius);background:var(--listbox-bg-color);border:1px solid var(--proton-control__border-color);min-width:100px;color:var(--proton-control__text-color);box-shadow:0 0 3px var(--proton-control__shadow-color);margin:.5rem 0 0;padding:0;list-style:none;overflow:auto}.proton-ListBox__item{background:var(--listbox-item-bg-color);cursor:pointer;outline:none;justify-content:space-between;padding:8px 16px;transition:background-color .2s,color .2s;display:flex}.proton-ListBox__item[aria-checked=true]{--listbox-item-bg-color:var(--proton-color__primary-light);color:var(--proton-color__primary);font-weight:500}.proton-ListBox__item[aria-checked=true]:hover,.proton-ListBox__item[aria-checked=true][data-focused=true]{--listbox-item-bg-color:var(--proton-color__primary-light)}.proton-ListBox__item[aria-selected=true]{--listbox-item-bg-color:var(--proton-color__primary-light);color:var(--proton-color__primary);font-weight:500}.proton-ListBox__item[aria-selected=true]:hover,.proton-ListBox__item[aria-selected=true][data-focused=true]{--listbox-item-bg-color:var(--proton-color__primary-light)}.proton-ListBox__item[data-focused=true]{box-shadow:inset 0 0 5px var(--proton-color__primary)}.proton-ListBox__item:hover{--listbox-item-bg-color:var(--proton-control__background-color-light);box-shadow:none}.proton-ListBox__item[aria-disabled=true],.proton-ListBox__item[data-disabled=true]{opacity:.5;cursor:not-allowed}.proton-Select{flex-direction:column;width:100%;margin:0;display:flex}.proton-Select__label{color:var(--proton-control__text-color);margin-bottom:2px}.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}button.proton-Select__trigger{letter-spacing:.05em;cursor:pointer;background:var(--proton-control__background-color);outline:1px solid var(--proton-control__border-color);border:1px solid #0000;font-weight:400;transition:outline .2s;position:relative}.proton-ui__theme--custom-dark button.proton-Select__trigger,.proton-ui__theme--dark button.proton-Select__trigger{background:var(--proton-control__background-color);border:1px solid var(--proton-control__border-color);outline:none}button.proton-Select__trigger:hover:after{content:"";z-index:1;background-color:#00000005;width:100%;height:100%;position:absolute;top:0;left:0}.proton-ui__theme--custom-dark button.proton-Select__trigger:hover:after,.proton-ui__theme--dark button.proton-Select__trigger:hover:after{background-color:#ffffff05}button.proton-Select__trigger:focus{outline:solid var(--proton-color__primary)1px;border:1px solid #0000}button.proton-Select__trigger:focus-visible{outline:solid var(--proton-color__primary)1px;border:1px solid #0000}.proton-ui__theme--custom-dark button.proton-Select__trigger:focus{outline:solid var(--proton-color__gray-lightest)1px;border:1px solid #0000}.proton-ui__theme--custom-dark button.proton-Select__trigger:focus-visible{outline:solid var(--proton-color__gray-lightest)1px;border:1px solid #0000}.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-Table{border-collapse:collapse;color:var(--proton-control__text-color);width:100%;font-weight:300}.proton-Table__header{cursor:default;letter-spacing:.1em;text-transform:uppercase;text-align:left;outline:none;padding:7px 10px;font-size:max(10px,min(.75rem,12px));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 2px}.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:7px 10px}.proton-Table__cell--center{text-align:center}.proton-Table__cell--right{text-align:right}.proton-TextEllipsis{vertical-align:middle;color:var(--proton-control__text-color,inherit);font-family:inherit;font-size:inherit;line-height:inherit;width: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-color__gray-super-dark);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;text-decoration:none;transition:color .15s}.proton-TextEmphasis a:hover{color:var(--proton-color__primary);text-decoration:none}.proton-ui__theme--custom-dark .proton-TextEmphasis,.proton-ui__theme--dark .proton-TextEmphasis{color:var(--proton-control__text-color)}.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:2px}.proton-TextEmphasis--tooltip:not(:hover){transition-delay:.2s}.proton__Tooltip{background-color:var(--proton-control__background-color);color:var(--proton-control__text-color);position:absolute}.proton-ui__theme--dark.proton__Tooltip,.proton-ui__theme--custom-dark.proton__Tooltip{background-color:var(--proton-color__gray-light)}.proton__TooltipTrigger{all:unset}.proton__Tooltip[data-placement=top]{--origin:translateY(4px);margin-bottom:8px}.proton__Tooltip[data-placement=bottom]{--origin:translateY(-4px);margin-top:8px}.proton__Tooltip[data-placement=bottom] .proton__TooltipArrow svg{transform:rotate(180deg)}.proton__Tooltip[data-placement=right]{--origin:translateX(-4px);margin-left:8px}.proton__Tooltip[data-placement=right] .proton__TooltipArrow svg{transform:rotate(90deg)}.proton__Tooltip[data-placement=left]{--origin:translateX(4px);margin-right:8px}.proton__Tooltip[data-placement=left] .proton__TooltipArrow svg{transform:rotate(-90deg)}.proton__Tooltip .proton__TooltipArrow svg{fill:var(--proton-control__background-color);display:block}.proton__Tooltip .proton-ui__theme--custom-dark.proton__TooltipArrow svg{fill:var(--proton-color__gray-light)}.proton__Tooltip .proton-ui__theme--dark.proton__TooltipArrow svg{fill:var(--proton-color__gray-light)}.proton__Tooltip[data-entering]{animation:.2s slide}.proton__Tooltip[data-exiting]{animation:.2s reverse slide}@keyframes slide{0%{opacity:0;transform:var(--origin)}to{opacity:1;transform:translateY(0)}}@keyframes shimmer{0%{background-position:-300px 0}to{background-position:800px 0}}.tombstone{background-position:-300px 0;background-repeat:no-repeat;background-size:300px 100%;animation:1.5s linear infinite shimmer}.tombstone.light{background-color:#d1d1d1;background-image:linear-gradient(-90deg,#d1d1d1,#b8b8b8,#d1d1d1)}.tombstone.dark{background-color:#3c3c3c;background-image:linear-gradient(-90deg,#363636,#292727,#353535)}.tombstone.custom-dark{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)}:root{--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}.proton-Waveform{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-ui__theme--dark .proton-Waveform__timestamp{background-color:var(--proton-control__background-color)}.proton-ui__theme--custom-dark .proton-Waveform__timestamp{background-color:var(--proton-control__primary-dark)}.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-ui__theme--dark .proton-Waveform__bar-unavailable{background-color:var(--proton-control__background-color)}.proton-ui__theme--custom-dark .proton-Waveform__bar-unavailable{background-color:var(--proton-control__primary-dark)}.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-icon-text-gap:.3em;--proton-button-edge-padding:1.05em;color:var(--proton-color__white);border-radius:var(--proton-control__border-radius);padding:.5em var(--proton-button-edge-padding);letter-spacing:.05em;cursor:pointer;box-sizing:border-box;border:0;align-items:center;transition:filter .1s,background-color .1s;display:inline-flex;position:relative}.proton-Button__icon-decorator{padding-right:var(--proton-icon-text-gap);justify-content:center;align-items:center;line-height:1;display:flex;position:relative}.proton-Button__icon-decorator--fullWidth{left:var(--proton-button-edge-padding);position:absolute}.proton-Button__text{box-sizing:border-box;text-align:center;white-space:nowrap;text-overflow:ellipsis;margin:auto;overflow:hidden}.proton-Button:hover{filter:brightness(1.08);cursor:pointer;color:var(--proton-color__white)}.proton-Button--primary,.proton-Button--primary:hover{background-color:var(--proton-color__primary)}.proton-Button--secondary,.proton-Button--secondary:hover{background-color:var(--proton-color__gray-light);color:var(--proton-control__text-color)}.proton-ui__theme--custom-dark .proton-Button--secondary{background-color:var(--proton-control__background-color-light)}.proton-Button--danger{background-color:var(--proton-color__danger-medium)}.proton-Button--success{background-color:var(--proton-color__success-medium)}.proton-Button--translucent{background-color:var(--proton-control__background-color-light)}.proton-Button--translucent:hover{background-color:#ffffff38}.proton-Button--disabled,.proton-Button--disabled:hover{opacity:.5;filter:none;cursor:not-allowed}.proton-Button:focus{outline:solid var(--proton-color__primary)1px;border:none}.proton-Button:focus-visible{outline:solid var(--proton-color__primary)1px;border:none}.proton-Button--fullWidth{width:100%;display:flex}.proton-Button--small{padding:.2rem .6rem;font-size:.875rem}.proton-Button--medium{--proton-button-edge-padding:1rem;padding:.4rem 1rem;font-size:1rem}.proton-Button--large{--proton-button-edge-padding:1.2rem;padding:.6rem 1.6rem;font-size:1.2rem}.proton-Button--xlarge{--proton-button-edge-padding:1.3rem;padding:1rem 2rem .8rem;font-size:1.3rem}.proton-Button--2xlarge{--proton-button-edge-padding:1.6rem;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;max-height:100vh;overflow:none;flex:1;width:100%;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__card>div{flex-direction:column;flex:1;display:flex}.proton-ActionMenu__cancel-button{margin:0 .75rem 1rem}.proton-ActionMenu__cancel-button button{justify-content:center;width:100%}.proton-ActionMenu__content{padding:.75rem .75rem 0}.proton-ActionMenu__list{flex-direction:column;margin:.625rem 0;display:flex}.proton-ActionMenu__list--disabled{opacity:.5;cursor:not-allowed}.proton-ActionMenu__item{color:inherit;cursor:pointer;justify-content:space-between;align-items:center;padding:.75rem .5rem .75rem .75rem;transition:background-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]{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]{opacity:.5;cursor:not-allowed}.proton-ActionMenu__item[aria-disabled=true]:hover{background-color:#0000}.proton-ActionMenu__title{justify-content:center;align-items:center;margin:.75rem;font-weight:600;display:flex;position:relative}.proton-ActionMenu__title button{-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer;color:var(--proton-control__text-color);background:0 0;border:none;border-radius:.1875rem;justify-content:center;align-items:center;padding:.35rem;display:flex}.proton-ActionMenu__title button:hover{background:var(--proton-control__hover-color)}.proton-ActionMenu__description{color:var(--proton-control__text-color);opacity:.7;font-size:.875rem}.proton-ActionMenu__item-label{font-weight:500}.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-bottom:calc(1rem - 1.1em);padding-left:1rem;padding-right:calc(1rem - .2em);font-size:.75rem;font-weight:500;line-height:1.8rem;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}.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{display:inline-block;position:relative}.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-ListBox__item,.proton-MenuTrigger__menu-item a{color:var(--proton-control__text-color);grid-template-areas:"label kbd""desc kbd";display:grid}:is(.proton-MenuTrigger__menu-item.proton-ListBox__item,.proton-MenuTrigger__menu-item a)[data-has-submenu=true]{grid-template-columns:unset;grid-template-areas:unset;justify-content:space-between;align-items:center;display:flex}:is(.proton-MenuTrigger__menu-item.proton-ListBox__item,.proton-MenuTrigger__menu-item a) [slot=label]{grid-area:label;font-weight:500}:is(.proton-MenuTrigger__menu-item.proton-ListBox__item,.proton-MenuTrigger__menu-item a) [slot=description]{opacity:.7;grid-area:desc;font-size:small}.proton-MenuTrigger__chevron{width:1em;height:1em;fill:var(--proton-control__text-color);padding-left:.5rem}.proton-ButtonWithSelect{align-items:stretch;display:flex;position:relative}.proton-ButtonWithSelect button:focus{box-shadow:inset 0 0 0 2px var(--proton-color__primary-light);outline:none}.proton-ButtonWithSelect__button{flex:var(--flex);align-items:stretch;display:flex}.proton-ButtonWithSelect__button button{border-top-right-radius:0;border-bottom-right-radius:0;align-items:center;display:flex;position:relative;overflow:hidden}.proton-ButtonWithSelect__button button: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-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-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}.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{flex-direction:column;flex:1;display:flex}.proton-Input__container-inner{flex:1;align-items:center;width:100%;display:flex;position:relative}.proton-Input__descriptor{z-index:1;background-position:50%;background-repeat:no-repeat;background-size:50%;justify-content:center;align-items:center;height:100%;display:flex;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;padding-right:.75rem;right:0}.proton-Input__container-inner:has(.proton-Input__prefix) .proton-Input{padding-left:var(--prefix-width,32px)}.proton-Input__container-inner:has(.proton-Input__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;color:var(--proton-control__text-color);text-transform:uppercase;letter-spacing:.2em;justify-content:center;align-items:center;padding-left:.875rem;padding-right:.75rem;font-size:.75rem;font-weight:600;line-height:1rem;display:flex}.proton-Input__suffix{padding-right:0}.proton-CopyInput-button-container{cursor:pointer;align-items:center;width:100%;height:100%;display:flex}.proton-CopyInput-button svg{margin-bottom:.0625rem;transition:color .2s}.proton-CopyInput-button-text{margin-left:.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-container{border-left:1px solid var(--proton-control__border-color);align-items:center;height:100%;transition:background-color .2s;display:flex}.proton-ui__theme--light .proton-CopyInput-button-container:hover{background-color:var(--proton-control__background-color-light)}.proton-SearchInput__wrapper{width:100%}.proton-SearchInput__wrapper input{border-radius:3.125rem;padding-left:2.75rem!important}.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{transform-origin:top}.arrow{fill:var(--proton-control__background-color);stroke-width:1px;width:12px;height:12px;position:absolute}.proton-ui__theme--dark .arrow{fill:var(--proton-control__background-color-light)}.arrow[data-placement=top]{top:100%;transform:translate(-50%)}.arrow[data-placement=bottom]{bottom:100%;transform:translate(-50%)rotate(180deg)}.arrow[data-placement=left]{left:100%;transform:translateY(-50%)rotate(-90deg)}.arrow[data-placement=right]{right:100%;transform:translateY(-50%)rotate(90deg)}.proton-Popover[data-placement=top]{--origin:translateY(10px)scaleY(.9)}.proton-Popover[data-placement=bottom]{--origin:translateY(-10px)scaleY(.9)}.proton-Popover[data-placement=left]{--origin:translateX(18px)scaleX(.96)}.proton-Popover[data-placement=right]{--origin:translateX(-18px)scaleX(.96)}.proton-Popover[data-entering]{animation:.2s ease-out forwards popoverSlide}@keyframes popoverSlide{0%{opacity:0;transform:var(--origin)}to{opacity:1;transform:translateY(0)scaleY(1)scaleX(1)}}.proton-ListBox{--listbox-bg-color:var(--proton-control__background-color);--listbox-item-bg-color:var(--proton-control__background-color);letter-spacing:.05em;border-radius:var(--proton-control__border-radius);background:var(--listbox-bg-color);border:1px solid var(--proton-control__border-color);min-width:100px;color:var(--proton-control__text-color);box-shadow:0 0 .1875rem var(--proton-control__shadow-color);margin:.5rem 0 0;padding:0;list-style:none;overflow:auto}.proton-ListBox__item{background:var(--listbox-item-bg-color);cursor:pointer;outline:none;justify-content:space-between;padding:.5rem 1rem;transition:background-color .2s,color .2s;display:flex}.proton-ListBox__item[aria-checked=true]{--listbox-item-bg-color:var(--proton-color__primary-light);color:var(--proton-color__primary);font-weight:500}.proton-ListBox__item[aria-checked=true]:hover{--listbox-item-bg-color:var(--proton-color__primary-light);opacity:.75}.proton-ListBox__item[aria-checked=true][data-focused=true]{--listbox-item-bg-color:var(--proton-color__primary-light)}.proton-ListBox__item[aria-selected=true]{--listbox-item-bg-color:var(--proton-color__primary-light);color:var(--proton-color__primary);font-weight:500}.proton-ListBox__item[aria-selected=true]:hover{--listbox-item-bg-color:var(--proton-color__primary-light);opacity:.75}.proton-ListBox__item[aria-selected=true][data-focused=true]{--listbox-item-bg-color:var(--proton-color__primary-light)}.proton-ListBox__item[data-focused=true]{--listbox-item-bg-color:var(--proton-control__hover-color)}.proton-ListBox__item:hover{--listbox-item-bg-color:var(--proton-control__hover-color);box-shadow:none}.proton-ListBox__item[aria-disabled=true],.proton-ListBox__item[data-disabled=true]{opacity:.5;cursor:not-allowed}.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}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-Table{border-collapse:collapse;color:var(--proton-control__text-color);width:100%;font-weight:300}.proton-Table__header{cursor:default;letter-spacing:.1em;text-transform:uppercase;text-align:left;outline:none;padding:.4375rem .625rem;font-size:.75rem;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-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);position:absolute}.proton-ui__theme--dark.proton__Tooltip{background-color:var(--proton-control__background-color-light)}.proton__TooltipTrigger{all:unset}.proton__Tooltip[data-placement=top]{--origin:translateY(4px);margin-bottom:.5rem}.proton__Tooltip[data-placement=bottom]{--origin:translateY(-4px);margin-top:.5rem}.proton__Tooltip[data-placement=bottom] .proton__TooltipArrow svg{transform:rotate(180deg)}.proton__Tooltip[data-placement=right]{--origin:translateX(-4px);margin-left:.5rem}.proton__Tooltip[data-placement=right] .proton__TooltipArrow svg{transform:rotate(90deg)}.proton__Tooltip[data-placement=left]{--origin:translateX(4px);margin-right:.5rem}.proton__Tooltip[data-placement=left] .proton__TooltipArrow svg{transform:rotate(-90deg)}.proton__Tooltip .proton__TooltipArrow svg{fill:var(--proton-control__background-color);display:block}.proton__Tooltip .proton-ui__theme--custom-dark.proton__TooltipArrow svg{fill:var(--proton-color__gray-light)}.proton__Tooltip .proton-ui__theme--dark.proton__TooltipArrow svg{fill:var(--proton-color__gray-light)}.proton__Tooltip[data-entering]{animation:.2s slide}.proton__Tooltip[data-exiting]{animation:.2s reverse slide}@keyframes slide{0%{opacity:0;transform:var(--origin)}to{opacity:1;transform:translateY(0)}}@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-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}
@@ -0,0 +1,12 @@
1
+ const t = {
2
+ DARK: "dark",
3
+ LIGHT: "light"
4
+ }, o = {
5
+ [t.DARK]: "proton-ui__theme--dark",
6
+ [t.LIGHT]: "proton-ui__theme--light"
7
+ };
8
+ export {
9
+ t as T,
10
+ o as a
11
+ };
12
+ //# sourceMappingURL=theme-DQsfWeLo.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme-DQsfWeLo.mjs","sources":["../src/constants/theme.ts"],"sourcesContent":["export const THEMES = {\r\n DARK: \"dark\",\r\n LIGHT: \"light\",\r\n} as const;\r\n\r\nexport type Theme = (typeof THEMES)[keyof typeof THEMES];\r\n\r\nexport const THEME_CLASSES = {\r\n [THEMES.DARK]: \"proton-ui__theme--dark\",\r\n [THEMES.LIGHT]: \"proton-ui__theme--light\",\r\n};"],"names":["THEMES","THEME_CLASSES"],"mappings":"AAAO,MAAMA,IAAS;AAAA,EACpB,MAAM;AAAA,EACN,OAAO;AACT,GAIaC,IAAgB;AAAA,EAC3B,CAACD,EAAO,IAAI,GAAG;AAAA,EACf,CAACA,EAAO,KAAK,GAAG;AAClB;"}
@@ -0,0 +1,2 @@
1
+ "use strict";const t={DARK:"dark",LIGHT:"light"},E={[t.DARK]:"proton-ui__theme--dark",[t.LIGHT]:"proton-ui__theme--light"};exports.THEMES=t;exports.THEME_CLASSES=E;
2
+ //# sourceMappingURL=theme-Dc0Ahjq9.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme-Dc0Ahjq9.js","sources":["../src/constants/theme.ts"],"sourcesContent":["export const THEMES = {\r\n DARK: \"dark\",\r\n LIGHT: \"light\",\r\n} as const;\r\n\r\nexport type Theme = (typeof THEMES)[keyof typeof THEMES];\r\n\r\nexport const THEME_CLASSES = {\r\n [THEMES.DARK]: \"proton-ui__theme--dark\",\r\n [THEMES.LIGHT]: \"proton-ui__theme--light\",\r\n};"],"names":["THEMES","THEME_CLASSES"],"mappings":"aAAO,MAAMA,EAAS,CACpB,KAAM,OACN,MAAO,OACT,EAIaC,EAAgB,CAC3B,CAACD,EAAO,IAAI,EAAG,yBACf,CAACA,EAAO,KAAK,EAAG,yBAClB"}
@@ -1 +1 @@
1
- {"version":3,"file":"useBreakpoint-CjRyGKN-.mjs","sources":["../src/hooks/useIsClosing.tsx","../src/hooks/useLockBodyScroll.tsx","../src/hooks/useBreakpoint.tsx"],"sourcesContent":["import { useState, useCallback, RefObject, useEffect } from \"react\";\n\ninterface UseIsClosingOptions {\n /**\n * Duration of the closing animation in milliseconds\n * @default 200\n */\n duration?: number;\n /**\n * Callback to run after the closing animation completes\n */\n onClose?: () => void;\n /**\n * When passed, the fade-out class will be added to @ScreenOverlay on close\n */\n overlayRef?: RefObject<HTMLElement>;\n}\n\n/**\n * Hook to manage the closing animation state of a component\n * @interface UseIsClosingOptions\n * @returns Object containing isClosing state and handleClose function\n */\nexport function useIsClosing({\n duration = 200,\n onClose,\n overlayRef,\n}: UseIsClosingOptions) {\n const [isClosing, setIsClosing] = useState(false);\n const [timeoutId, setTimeoutId] = useState<number>();\n\n const handleClose = useCallback(() => {\n if (duration <= 0) {\n console.warn(\n \"useIsClosing: Duration must be positive. Executing onClose immediately.\"\n );\n onClose?.();\n return;\n }\n\n setIsClosing(true);\n\n if (overlayRef?.current) {\n overlayRef.current.classList.add(\"proton-ScreenOverlay__fade-out\");\n }\n\n const id = setTimeout(() => {\n onClose?.();\n setIsClosing(false);\n }, duration);\n\n setTimeoutId(id);\n }, [duration, onClose, overlayRef]);\n\n useEffect(() => {\n return () => {\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n };\n }, [timeoutId]);\n\n return {\n isClosing,\n handleClose,\n };\n}\n","import { useLayoutEffect } from \"react\";\n\n/**\n * A React hook that prevents body scrolling while a component is mounted.\n * Useful for modals, overlays, and other components that should prevent background scrolling.\n */\nexport function useLockBodyScroll(isActive: boolean = true) {\n useLayoutEffect(() => {\n if (!isActive) return;\n\n // Get original body overflow\n const originalStyle = window.getComputedStyle(document.body).overflow;\n // Prevent scrolling on mount\n document.body.style.overflow = \"hidden\";\n // Re-enable scrolling when component unmounts\n return () => {\n document.body.style.overflow = originalStyle;\n };\n }, [isActive]); // Empty array ensures effect is only run on mount and unmount\n}\n","import { useState } from \"react\";\n\nimport { useEffect } from \"react\";\nimport { Breakpoint } from \"../constants\";\n\ntype BreakpointDirection = \"up\" | \"down\";\n\nexport function useBreakpoint(\n breakpoint: Breakpoint,\n direction: BreakpointDirection = \"down\"\n) {\n const query =\n direction === \"down\"\n ? `(max-width: ${breakpoint}px)`\n : `(min-width: ${breakpoint}px)`;\n\n const [matches, setMatches] = useState(() =>\n typeof window !== \"undefined\" ? window.matchMedia(query).matches : false\n );\n\n useEffect(() => {\n if (typeof window === \"undefined\") return;\n\n const mediaQuery = window.matchMedia(query);\n const handler = (event: MediaQueryListEvent) => {\n setMatches(event.matches);\n };\n\n mediaQuery.addEventListener(\"change\", handler);\n return () => mediaQuery.removeEventListener(\"change\", handler);\n }, [query]);\n\n return matches;\n}\n"],"names":["useIsClosing","duration","onClose","overlayRef","isClosing","setIsClosing","useState","timeoutId","setTimeoutId","handleClose","useCallback","id","useEffect","useLockBodyScroll","isActive","useLayoutEffect","originalStyle","useBreakpoint","breakpoint","direction","query","matches","setMatches","mediaQuery","handler","event"],"mappings":";AAuBO,SAASA,EAAa;AAAA,EAC3B,UAAAC,IAAW;AAAA,EACX,SAAAC;AAAA,EACA,YAAAC;AACF,GAAwB;AACtB,QAAM,CAACC,GAAWC,CAAY,IAAIC,EAAS,EAAK,GAC1C,CAACC,GAAWC,CAAY,IAAIF,EAAiB,GAE7CG,IAAcC,EAAY,MAAM;AACpC,QAAIT,KAAY,GAAG;AACT,cAAA;AAAA,QACN;AAAA,MAAA,GAEQC,KAAA,QAAAA;AACV;AAAA,IACF;AAEA,IAAAG,EAAa,EAAI,GAEbF,KAAA,QAAAA,EAAY,WACHA,EAAA,QAAQ,UAAU,IAAI,gCAAgC;AAG7D,UAAAQ,IAAK,WAAW,MAAM;AAChB,MAAAT,KAAA,QAAAA,KACVG,EAAa,EAAK;AAAA,OACjBJ,CAAQ;AAEX,IAAAO,EAAaG,CAAE;AAAA,EACd,GAAA,CAACV,GAAUC,GAASC,CAAU,CAAC;AAElC,SAAAS,EAAU,MACD,MAAM;AACX,IAAIL,KACF,aAAaA,CAAS;AAAA,EACxB,GAED,CAACA,CAAS,CAAC,GAEP;AAAA,IACL,WAAAH;AAAA,IACA,aAAAK;AAAA,EAAA;AAEJ;AC5DgB,SAAAI,EAAkBC,IAAoB,IAAM;AAC1D,EAAAC,EAAgB,MAAM;AACpB,QAAI,CAACD,EAAU;AAGf,UAAME,IAAgB,OAAO,iBAAiB,SAAS,IAAI,EAAE;AAEpD,oBAAA,KAAK,MAAM,WAAW,UAExB,MAAM;AACF,eAAA,KAAK,MAAM,WAAWA;AAAA,IAAA;AAAA,EACjC,GACC,CAACF,CAAQ,CAAC;AACf;ACZgB,SAAAG,EACdC,GACAC,IAAiC,QACjC;AACA,QAAMC,IACJD,MAAc,SACV,eAAeD,CAAU,QACzB,eAAeA,CAAU,OAEzB,CAACG,GAASC,CAAU,IAAIhB;AAAA,IAAS,MACrC,OAAO,SAAW,MAAc,OAAO,WAAWc,CAAK,EAAE,UAAU;AAAA,EAAA;AAGrE,SAAAR,EAAU,MAAM;AACV,QAAA,OAAO,SAAW,IAAa;AAE7B,UAAAW,IAAa,OAAO,WAAWH,CAAK,GACpCI,IAAU,CAACC,MAA+B;AAC9C,MAAAH,EAAWG,EAAM,OAAO;AAAA,IAAA;AAGf,WAAAF,EAAA,iBAAiB,UAAUC,CAAO,GACtC,MAAMD,EAAW,oBAAoB,UAAUC,CAAO;AAAA,EAAA,GAC5D,CAACJ,CAAK,CAAC,GAEHC;AACT;"}
1
+ {"version":3,"file":"useBreakpoint-CjRyGKN-.mjs","sources":["../src/hooks/useIsClosing.tsx","../src/hooks/useLockBodyScroll.tsx","../src/hooks/useBreakpoint.tsx"],"sourcesContent":["import { useState, useCallback, RefObject, useEffect } from \"react\";\r\n\r\ninterface UseIsClosingOptions {\r\n /**\r\n * Duration of the closing animation in milliseconds\r\n * @default 200\r\n */\r\n duration?: number;\r\n /**\r\n * Callback to run after the closing animation completes\r\n */\r\n onClose?: () => void;\r\n /**\r\n * When passed, the fade-out class will be added to @ScreenOverlay on close\r\n */\r\n overlayRef?: RefObject<HTMLElement>;\r\n}\r\n\r\n/**\r\n * Hook to manage the closing animation state of a component\r\n * @interface UseIsClosingOptions\r\n * @returns Object containing isClosing state and handleClose function\r\n */\r\nexport function useIsClosing({\r\n duration = 200,\r\n onClose,\r\n overlayRef,\r\n}: UseIsClosingOptions) {\r\n const [isClosing, setIsClosing] = useState(false);\r\n const [timeoutId, setTimeoutId] = useState<number>();\r\n\r\n const handleClose = useCallback(() => {\r\n if (duration <= 0) {\r\n console.warn(\r\n \"useIsClosing: Duration must be positive. Executing onClose immediately.\"\r\n );\r\n onClose?.();\r\n return;\r\n }\r\n\r\n setIsClosing(true);\r\n\r\n if (overlayRef?.current) {\r\n overlayRef.current.classList.add(\"proton-ScreenOverlay__fade-out\");\r\n }\r\n\r\n const id = setTimeout(() => {\r\n onClose?.();\r\n setIsClosing(false);\r\n }, duration);\r\n\r\n setTimeoutId(id);\r\n }, [duration, onClose, overlayRef]);\r\n\r\n useEffect(() => {\r\n return () => {\r\n if (timeoutId) {\r\n clearTimeout(timeoutId);\r\n }\r\n };\r\n }, [timeoutId]);\r\n\r\n return {\r\n isClosing,\r\n handleClose,\r\n };\r\n}\r\n","import { useLayoutEffect } from \"react\";\r\n\r\n/**\r\n * A React hook that prevents body scrolling while a component is mounted.\r\n * Useful for modals, overlays, and other components that should prevent background scrolling.\r\n */\r\nexport function useLockBodyScroll(isActive: boolean = true) {\r\n useLayoutEffect(() => {\r\n if (!isActive) return;\r\n\r\n // Get original body overflow\r\n const originalStyle = window.getComputedStyle(document.body).overflow;\r\n // Prevent scrolling on mount\r\n document.body.style.overflow = \"hidden\";\r\n // Re-enable scrolling when component unmounts\r\n return () => {\r\n document.body.style.overflow = originalStyle;\r\n };\r\n }, [isActive]); // Empty array ensures effect is only run on mount and unmount\r\n}\r\n","import { useState } from \"react\";\r\n\r\nimport { useEffect } from \"react\";\r\nimport { Breakpoint } from \"../constants\";\r\n\r\ntype BreakpointDirection = \"up\" | \"down\";\r\n\r\nexport function useBreakpoint(\r\n breakpoint: Breakpoint,\r\n direction: BreakpointDirection = \"down\"\r\n) {\r\n const query =\r\n direction === \"down\"\r\n ? `(max-width: ${breakpoint}px)`\r\n : `(min-width: ${breakpoint}px)`;\r\n\r\n const [matches, setMatches] = useState(() =>\r\n typeof window !== \"undefined\" ? window.matchMedia(query).matches : false\r\n );\r\n\r\n useEffect(() => {\r\n if (typeof window === \"undefined\") return;\r\n\r\n const mediaQuery = window.matchMedia(query);\r\n const handler = (event: MediaQueryListEvent) => {\r\n setMatches(event.matches);\r\n };\r\n\r\n mediaQuery.addEventListener(\"change\", handler);\r\n return () => mediaQuery.removeEventListener(\"change\", handler);\r\n }, [query]);\r\n\r\n return matches;\r\n}\r\n"],"names":["useIsClosing","duration","onClose","overlayRef","isClosing","setIsClosing","useState","timeoutId","setTimeoutId","handleClose","useCallback","id","useEffect","useLockBodyScroll","isActive","useLayoutEffect","originalStyle","useBreakpoint","breakpoint","direction","query","matches","setMatches","mediaQuery","handler","event"],"mappings":";AAuBO,SAASA,EAAa;AAAA,EAC3B,UAAAC,IAAW;AAAA,EACX,SAAAC;AAAA,EACA,YAAAC;AACF,GAAwB;AACtB,QAAM,CAACC,GAAWC,CAAY,IAAIC,EAAS,EAAK,GAC1C,CAACC,GAAWC,CAAY,IAAIF,EAAiB,GAE7CG,IAAcC,EAAY,MAAM;AACpC,QAAIT,KAAY,GAAG;AACT,cAAA;AAAA,QACN;AAAA,MAAA,GAEQC,KAAA,QAAAA;AACV;AAAA,IACF;AAEA,IAAAG,EAAa,EAAI,GAEbF,KAAA,QAAAA,EAAY,WACHA,EAAA,QAAQ,UAAU,IAAI,gCAAgC;AAG7D,UAAAQ,IAAK,WAAW,MAAM;AAChB,MAAAT,KAAA,QAAAA,KACVG,EAAa,EAAK;AAAA,OACjBJ,CAAQ;AAEX,IAAAO,EAAaG,CAAE;AAAA,EACd,GAAA,CAACV,GAAUC,GAASC,CAAU,CAAC;AAElC,SAAAS,EAAU,MACD,MAAM;AACX,IAAIL,KACF,aAAaA,CAAS;AAAA,EACxB,GAED,CAACA,CAAS,CAAC,GAEP;AAAA,IACL,WAAAH;AAAA,IACA,aAAAK;AAAA,EAAA;AAEJ;AC5DgB,SAAAI,EAAkBC,IAAoB,IAAM;AAC1D,EAAAC,EAAgB,MAAM;AACpB,QAAI,CAACD,EAAU;AAGf,UAAME,IAAgB,OAAO,iBAAiB,SAAS,IAAI,EAAE;AAEpD,oBAAA,KAAK,MAAM,WAAW,UAExB,MAAM;AACF,eAAA,KAAK,MAAM,WAAWA;AAAA,IAAA;AAAA,EACjC,GACC,CAACF,CAAQ,CAAC;AACf;ACZgB,SAAAG,EACdC,GACAC,IAAiC,QACjC;AACA,QAAMC,IACJD,MAAc,SACV,eAAeD,CAAU,QACzB,eAAeA,CAAU,OAEzB,CAACG,GAASC,CAAU,IAAIhB;AAAA,IAAS,MACrC,OAAO,SAAW,MAAc,OAAO,WAAWc,CAAK,EAAE,UAAU;AAAA,EAAA;AAGrE,SAAAR,EAAU,MAAM;AACV,QAAA,OAAO,SAAW,IAAa;AAE7B,UAAAW,IAAa,OAAO,WAAWH,CAAK,GACpCI,IAAU,CAACC,MAA+B;AAC9C,MAAAH,EAAWG,EAAM,OAAO;AAAA,IAAA;AAGf,WAAAF,EAAA,iBAAiB,UAAUC,CAAO,GACtC,MAAMD,EAAW,oBAAoB,UAAUC,CAAO;AAAA,EAAA,GAC5D,CAACJ,CAAK,CAAC,GAEHC;AACT;"}
@@ -1 +1 @@
1
- {"version":3,"file":"useBreakpoint-DA-JqOu3.js","sources":["../src/hooks/useIsClosing.tsx","../src/hooks/useLockBodyScroll.tsx","../src/hooks/useBreakpoint.tsx"],"sourcesContent":["import { useState, useCallback, RefObject, useEffect } from \"react\";\n\ninterface UseIsClosingOptions {\n /**\n * Duration of the closing animation in milliseconds\n * @default 200\n */\n duration?: number;\n /**\n * Callback to run after the closing animation completes\n */\n onClose?: () => void;\n /**\n * When passed, the fade-out class will be added to @ScreenOverlay on close\n */\n overlayRef?: RefObject<HTMLElement>;\n}\n\n/**\n * Hook to manage the closing animation state of a component\n * @interface UseIsClosingOptions\n * @returns Object containing isClosing state and handleClose function\n */\nexport function useIsClosing({\n duration = 200,\n onClose,\n overlayRef,\n}: UseIsClosingOptions) {\n const [isClosing, setIsClosing] = useState(false);\n const [timeoutId, setTimeoutId] = useState<number>();\n\n const handleClose = useCallback(() => {\n if (duration <= 0) {\n console.warn(\n \"useIsClosing: Duration must be positive. Executing onClose immediately.\"\n );\n onClose?.();\n return;\n }\n\n setIsClosing(true);\n\n if (overlayRef?.current) {\n overlayRef.current.classList.add(\"proton-ScreenOverlay__fade-out\");\n }\n\n const id = setTimeout(() => {\n onClose?.();\n setIsClosing(false);\n }, duration);\n\n setTimeoutId(id);\n }, [duration, onClose, overlayRef]);\n\n useEffect(() => {\n return () => {\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n };\n }, [timeoutId]);\n\n return {\n isClosing,\n handleClose,\n };\n}\n","import { useLayoutEffect } from \"react\";\n\n/**\n * A React hook that prevents body scrolling while a component is mounted.\n * Useful for modals, overlays, and other components that should prevent background scrolling.\n */\nexport function useLockBodyScroll(isActive: boolean = true) {\n useLayoutEffect(() => {\n if (!isActive) return;\n\n // Get original body overflow\n const originalStyle = window.getComputedStyle(document.body).overflow;\n // Prevent scrolling on mount\n document.body.style.overflow = \"hidden\";\n // Re-enable scrolling when component unmounts\n return () => {\n document.body.style.overflow = originalStyle;\n };\n }, [isActive]); // Empty array ensures effect is only run on mount and unmount\n}\n","import { useState } from \"react\";\n\nimport { useEffect } from \"react\";\nimport { Breakpoint } from \"../constants\";\n\ntype BreakpointDirection = \"up\" | \"down\";\n\nexport function useBreakpoint(\n breakpoint: Breakpoint,\n direction: BreakpointDirection = \"down\"\n) {\n const query =\n direction === \"down\"\n ? `(max-width: ${breakpoint}px)`\n : `(min-width: ${breakpoint}px)`;\n\n const [matches, setMatches] = useState(() =>\n typeof window !== \"undefined\" ? window.matchMedia(query).matches : false\n );\n\n useEffect(() => {\n if (typeof window === \"undefined\") return;\n\n const mediaQuery = window.matchMedia(query);\n const handler = (event: MediaQueryListEvent) => {\n setMatches(event.matches);\n };\n\n mediaQuery.addEventListener(\"change\", handler);\n return () => mediaQuery.removeEventListener(\"change\", handler);\n }, [query]);\n\n return matches;\n}\n"],"names":["useIsClosing","duration","onClose","overlayRef","isClosing","setIsClosing","useState","timeoutId","setTimeoutId","handleClose","useCallback","id","useEffect","useLockBodyScroll","isActive","useLayoutEffect","originalStyle","useBreakpoint","breakpoint","direction","query","matches","setMatches","mediaQuery","handler","event"],"mappings":"sCAuBO,SAASA,EAAa,CAC3B,SAAAC,EAAW,IACX,QAAAC,EACA,WAAAC,CACF,EAAwB,CACtB,KAAM,CAACC,EAAWC,CAAY,EAAIC,WAAS,EAAK,EAC1C,CAACC,EAAWC,CAAY,EAAIF,EAAiB,SAAA,EAE7CG,EAAcC,EAAAA,YAAY,IAAM,CACpC,GAAIT,GAAY,EAAG,CACT,QAAA,KACN,yEAAA,EAEQC,GAAA,MAAAA,IACV,MACF,CAEAG,EAAa,EAAI,EAEbF,GAAA,MAAAA,EAAY,SACHA,EAAA,QAAQ,UAAU,IAAI,gCAAgC,EAG7D,MAAAQ,EAAK,WAAW,IAAM,CAChBT,GAAA,MAAAA,IACVG,EAAa,EAAK,GACjBJ,CAAQ,EAEXO,EAAaG,CAAE,CACd,EAAA,CAACV,EAAUC,EAASC,CAAU,CAAC,EAElCS,OAAAA,EAAAA,UAAU,IACD,IAAM,CACPL,GACF,aAAaA,CAAS,CACxB,EAED,CAACA,CAAS,CAAC,EAEP,CACL,UAAAH,EACA,YAAAK,CAAA,CAEJ,CC5DgB,SAAAI,EAAkBC,EAAoB,GAAM,CAC1DC,EAAAA,gBAAgB,IAAM,CACpB,GAAI,CAACD,EAAU,OAGf,MAAME,EAAgB,OAAO,iBAAiB,SAAS,IAAI,EAAE,SAEpD,gBAAA,KAAK,MAAM,SAAW,SAExB,IAAM,CACF,SAAA,KAAK,MAAM,SAAWA,CAAA,CACjC,EACC,CAACF,CAAQ,CAAC,CACf,CCZgB,SAAAG,EACdC,EACAC,EAAiC,OACjC,CACA,MAAMC,EACJD,IAAc,OACV,eAAeD,CAAU,MACzB,eAAeA,CAAU,MAEzB,CAACG,EAASC,CAAU,EAAIhB,EAAA,SAAS,IACrC,OAAO,OAAW,IAAc,OAAO,WAAWc,CAAK,EAAE,QAAU,EAAA,EAGrER,OAAAA,EAAAA,UAAU,IAAM,CACV,GAAA,OAAO,OAAW,IAAa,OAE7B,MAAAW,EAAa,OAAO,WAAWH,CAAK,EACpCI,EAAWC,GAA+B,CAC9CH,EAAWG,EAAM,OAAO,CAAA,EAGf,OAAAF,EAAA,iBAAiB,SAAUC,CAAO,EACtC,IAAMD,EAAW,oBAAoB,SAAUC,CAAO,CAAA,EAC5D,CAACJ,CAAK,CAAC,EAEHC,CACT"}
1
+ {"version":3,"file":"useBreakpoint-DA-JqOu3.js","sources":["../src/hooks/useIsClosing.tsx","../src/hooks/useLockBodyScroll.tsx","../src/hooks/useBreakpoint.tsx"],"sourcesContent":["import { useState, useCallback, RefObject, useEffect } from \"react\";\r\n\r\ninterface UseIsClosingOptions {\r\n /**\r\n * Duration of the closing animation in milliseconds\r\n * @default 200\r\n */\r\n duration?: number;\r\n /**\r\n * Callback to run after the closing animation completes\r\n */\r\n onClose?: () => void;\r\n /**\r\n * When passed, the fade-out class will be added to @ScreenOverlay on close\r\n */\r\n overlayRef?: RefObject<HTMLElement>;\r\n}\r\n\r\n/**\r\n * Hook to manage the closing animation state of a component\r\n * @interface UseIsClosingOptions\r\n * @returns Object containing isClosing state and handleClose function\r\n */\r\nexport function useIsClosing({\r\n duration = 200,\r\n onClose,\r\n overlayRef,\r\n}: UseIsClosingOptions) {\r\n const [isClosing, setIsClosing] = useState(false);\r\n const [timeoutId, setTimeoutId] = useState<number>();\r\n\r\n const handleClose = useCallback(() => {\r\n if (duration <= 0) {\r\n console.warn(\r\n \"useIsClosing: Duration must be positive. Executing onClose immediately.\"\r\n );\r\n onClose?.();\r\n return;\r\n }\r\n\r\n setIsClosing(true);\r\n\r\n if (overlayRef?.current) {\r\n overlayRef.current.classList.add(\"proton-ScreenOverlay__fade-out\");\r\n }\r\n\r\n const id = setTimeout(() => {\r\n onClose?.();\r\n setIsClosing(false);\r\n }, duration);\r\n\r\n setTimeoutId(id);\r\n }, [duration, onClose, overlayRef]);\r\n\r\n useEffect(() => {\r\n return () => {\r\n if (timeoutId) {\r\n clearTimeout(timeoutId);\r\n }\r\n };\r\n }, [timeoutId]);\r\n\r\n return {\r\n isClosing,\r\n handleClose,\r\n };\r\n}\r\n","import { useLayoutEffect } from \"react\";\r\n\r\n/**\r\n * A React hook that prevents body scrolling while a component is mounted.\r\n * Useful for modals, overlays, and other components that should prevent background scrolling.\r\n */\r\nexport function useLockBodyScroll(isActive: boolean = true) {\r\n useLayoutEffect(() => {\r\n if (!isActive) return;\r\n\r\n // Get original body overflow\r\n const originalStyle = window.getComputedStyle(document.body).overflow;\r\n // Prevent scrolling on mount\r\n document.body.style.overflow = \"hidden\";\r\n // Re-enable scrolling when component unmounts\r\n return () => {\r\n document.body.style.overflow = originalStyle;\r\n };\r\n }, [isActive]); // Empty array ensures effect is only run on mount and unmount\r\n}\r\n","import { useState } from \"react\";\r\n\r\nimport { useEffect } from \"react\";\r\nimport { Breakpoint } from \"../constants\";\r\n\r\ntype BreakpointDirection = \"up\" | \"down\";\r\n\r\nexport function useBreakpoint(\r\n breakpoint: Breakpoint,\r\n direction: BreakpointDirection = \"down\"\r\n) {\r\n const query =\r\n direction === \"down\"\r\n ? `(max-width: ${breakpoint}px)`\r\n : `(min-width: ${breakpoint}px)`;\r\n\r\n const [matches, setMatches] = useState(() =>\r\n typeof window !== \"undefined\" ? window.matchMedia(query).matches : false\r\n );\r\n\r\n useEffect(() => {\r\n if (typeof window === \"undefined\") return;\r\n\r\n const mediaQuery = window.matchMedia(query);\r\n const handler = (event: MediaQueryListEvent) => {\r\n setMatches(event.matches);\r\n };\r\n\r\n mediaQuery.addEventListener(\"change\", handler);\r\n return () => mediaQuery.removeEventListener(\"change\", handler);\r\n }, [query]);\r\n\r\n return matches;\r\n}\r\n"],"names":["useIsClosing","duration","onClose","overlayRef","isClosing","setIsClosing","useState","timeoutId","setTimeoutId","handleClose","useCallback","id","useEffect","useLockBodyScroll","isActive","useLayoutEffect","originalStyle","useBreakpoint","breakpoint","direction","query","matches","setMatches","mediaQuery","handler","event"],"mappings":"sCAuBO,SAASA,EAAa,CAC3B,SAAAC,EAAW,IACX,QAAAC,EACA,WAAAC,CACF,EAAwB,CACtB,KAAM,CAACC,EAAWC,CAAY,EAAIC,WAAS,EAAK,EAC1C,CAACC,EAAWC,CAAY,EAAIF,EAAiB,SAAA,EAE7CG,EAAcC,EAAAA,YAAY,IAAM,CACpC,GAAIT,GAAY,EAAG,CACT,QAAA,KACN,yEAAA,EAEQC,GAAA,MAAAA,IACV,MACF,CAEAG,EAAa,EAAI,EAEbF,GAAA,MAAAA,EAAY,SACHA,EAAA,QAAQ,UAAU,IAAI,gCAAgC,EAG7D,MAAAQ,EAAK,WAAW,IAAM,CAChBT,GAAA,MAAAA,IACVG,EAAa,EAAK,GACjBJ,CAAQ,EAEXO,EAAaG,CAAE,CACd,EAAA,CAACV,EAAUC,EAASC,CAAU,CAAC,EAElCS,OAAAA,EAAAA,UAAU,IACD,IAAM,CACPL,GACF,aAAaA,CAAS,CACxB,EAED,CAACA,CAAS,CAAC,EAEP,CACL,UAAAH,EACA,YAAAK,CAAA,CAEJ,CC5DgB,SAAAI,EAAkBC,EAAoB,GAAM,CAC1DC,EAAAA,gBAAgB,IAAM,CACpB,GAAI,CAACD,EAAU,OAGf,MAAME,EAAgB,OAAO,iBAAiB,SAAS,IAAI,EAAE,SAEpD,gBAAA,KAAK,MAAM,SAAW,SAExB,IAAM,CACF,SAAA,KAAK,MAAM,SAAWA,CAAA,CACjC,EACC,CAACF,CAAQ,CAAC,CACf,CCZgB,SAAAG,EACdC,EACAC,EAAiC,OACjC,CACA,MAAMC,EACJD,IAAc,OACV,eAAeD,CAAU,MACzB,eAAeA,CAAU,MAEzB,CAACG,EAASC,CAAU,EAAIhB,EAAA,SAAS,IACrC,OAAO,OAAW,IAAc,OAAO,WAAWc,CAAK,EAAE,QAAU,EAAA,EAGrER,OAAAA,EAAAA,UAAU,IAAM,CACV,GAAA,OAAO,OAAW,IAAa,OAE7B,MAAAW,EAAa,OAAO,WAAWH,CAAK,EACpCI,EAAWC,GAA+B,CAC9CH,EAAWG,EAAM,OAAO,CAAA,EAGf,OAAAF,EAAA,iBAAiB,SAAUC,CAAO,EACtC,IAAMD,EAAW,oBAAoB,SAAUC,CAAO,CAAA,EAC5D,CAACJ,CAAK,CAAC,EAEHC,CACT"}
package/dist/utils.cjs.js CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const g=require("color2k"),_=require("./palettes-BX86v-qb.js");var L=function(n,r){return n<r?-1:n>r?1:0},K=function(n){return n.reduce(function(r,a){return r+a},0)},k=function(){function n(a){this.colors=a}var r=n.prototype;return r.palette=function(){return this.colors},r.map=function(a){return a},n}(),z=function(){function n(e,t,u){return(e<<10)+(t<<5)+u}function r(e){var t=[],u=!1;function s(){t.sort(e),u=!0}return{push:function(c){t.push(c),u=!1},peek:function(c){return u||s(),c===void 0&&(c=t.length-1),t[c]},pop:function(){return u||s(),t.pop()},size:function(){return t.length},map:function(c){return t.map(c)},debug:function(){return u||s(),t}}}function a(e,t,u,s,c,o,m){var f=this;f.r1=e,f.r2=t,f.g1=u,f.g2=s,f.b1=c,f.b2=o,f.histo=m}function l(){this.vboxes=new r(function(e,t){return L(e.vbox.count()*e.vbox.volume(),t.vbox.count()*t.vbox.volume())})}function h(e,t){if(t.count()){var u=t.r2-t.r1+1,s=t.g2-t.g1+1,c=Math.max.apply(null,[u,s,t.b2-t.b1+1]);if(t.count()==1)return[t.copy()];var o,m,f,v,d=0,p=[],D=[];if(c==u)for(o=t.r1;o<=t.r2;o++){for(v=0,m=t.g1;m<=t.g2;m++)for(f=t.b1;f<=t.b2;f++)v+=e[n(o,m,f)]||0;p[o]=d+=v}else if(c==s)for(o=t.g1;o<=t.g2;o++){for(v=0,m=t.r1;m<=t.r2;m++)for(f=t.b1;f<=t.b2;f++)v+=e[n(m,o,f)]||0;p[o]=d+=v}else for(o=t.b1;o<=t.b2;o++){for(v=0,m=t.r1;m<=t.r2;m++)for(f=t.g1;f<=t.g2;f++)v+=e[n(m,f,o)]||0;p[o]=d+=v}return p.forEach(function(y,R){D[R]=d-y}),function(y){var R,S,b,A,E,w=y+"1",C=y+"2",G=0;for(o=t[w];o<=t[C];o++)if(p[o]>d/2){for(b=t.copy(),A=t.copy(),E=(R=o-t[w])<=(S=t[C]-o)?Math.min(t[C]-1,~~(o+S/2)):Math.max(t[w],~~(o-1-R/2));!p[E];)E++;for(G=D[E];!G&&p[E-1];)G=D[--E];return b[C]=E,A[w]=b[C]+1,[b,A]}}(c==u?"r":c==s?"g":"b")}}return a.prototype={volume:function(e){var t=this;return t._volume&&!e||(t._volume=(t.r2-t.r1+1)*(t.g2-t.g1+1)*(t.b2-t.b1+1)),t._volume},count:function(e){var t=this,u=t.histo;if(!t._count_set||e){var s,c,o,m=0;for(s=t.r1;s<=t.r2;s++)for(c=t.g1;c<=t.g2;c++)for(o=t.b1;o<=t.b2;o++)m+=u[n(s,c,o)]||0;t._count=m,t._count_set=!0}return t._count},copy:function(){var e=this;return new a(e.r1,e.r2,e.g1,e.g2,e.b1,e.b2,e.histo)},avg:function(e){var t=this,u=t.histo;if(!t._avg||e){var s,c,o,m,f=0,v=0,d=0,p=0;if(t.r1===t.r2&&t.g1===t.g2&&t.b1===t.b2)t._avg=[t.r1<<3,t.g1<<3,t.b1<<3];else{for(c=t.r1;c<=t.r2;c++)for(o=t.g1;o<=t.g2;o++)for(m=t.b1;m<=t.b2;m++)f+=s=u[n(c,o,m)]||0,v+=s*(c+.5)*8,d+=s*(o+.5)*8,p+=s*(m+.5)*8;t._avg=f?[~~(v/f),~~(d/f),~~(p/f)]:[~~(8*(t.r1+t.r2+1)/2),~~(8*(t.g1+t.g2+1)/2),~~(8*(t.b1+t.b2+1)/2)]}}return t._avg},contains:function(e){var t=this,u=e[0]>>3;return gval=e[1]>>3,bval=e[2]>>3,u>=t.r1&&u<=t.r2&&gval>=t.g1&&gval<=t.g2&&bval>=t.b1&&bval<=t.b2}},l.prototype={push:function(e){this.vboxes.push({vbox:e,color:e.avg()})},palette:function(){return this.vboxes.map(function(e){return e.color})},size:function(){return this.vboxes.size()},map:function(e){for(var t=this.vboxes,u=0;u<t.size();u++)if(t.peek(u).vbox.contains(e))return t.peek(u).color;return this.nearest(e)},nearest:function(e){for(var t,u,s,c=this.vboxes,o=0;o<c.size();o++)((u=Math.sqrt(Math.pow(e[0]-c.peek(o).color[0],2)+Math.pow(e[1]-c.peek(o).color[1],2)+Math.pow(e[2]-c.peek(o).color[2],2)))<t||t===void 0)&&(t=u,s=c.peek(o).color);return s},forcebw:function(){var e=this.vboxes;e.sort(function(c,o){return L(K(c.color),K(o.color))});var t=e[0].color;t[0]<5&&t[1]<5&&t[2]<5&&(e[0].color=[0,0,0]);var u=e.length-1,s=e[u].color;s[0]>251&&s[1]>251&&s[2]>251&&(e[u].color=[255,255,255])}},{quantize:function(e,t){if(!Number.isInteger(t)||t<1||t>256)throw new Error("Invalid maximum color count. It must be an integer between 1 and 256.");if(!e.length||t<2||t>256||!e.length||t<2||t>256)return!1;for(var u=[],s=new Set,c=0;c<e.length;c++){var o=e[c],m=o.join(",");s.has(m)||(s.add(m),u.push(o))}if(u.length<=t)return new k(u);var f=function(R){var S,b=new Array(32768);return R.forEach(function(A){S=n(A[0]>>3,A[1]>>3,A[2]>>3),b[S]=(b[S]||0)+1}),b}(e);f.forEach(function(){});var v=function(R,S){var b,A,E,w=1e6,C=0,G=1e6,U=0,T=1e6,H=0;return R.forEach(function(Y){(b=Y[0]>>3)<w?w=b:b>C&&(C=b),(A=Y[1]>>3)<G?G=A:A>U&&(U=A),(E=Y[2]>>3)<T?T=E:E>H&&(H=E)}),new a(w,C,G,U,T,H,S)}(e,f),d=new r(function(R,S){return L(R.count(),S.count())});function p(R,S){for(var b,A=R.size(),E=0;E<1e3;){if(A>=S||E++>1e3)return;if((b=R.pop()).count()){var w=h(f,b),C=w[0],G=w[1];if(!C)return;R.push(C),G&&(R.push(G),A++)}else R.push(b),E++}}d.push(v),p(d,.75*t);for(var D=new r(function(R,S){return L(R.count()*R.volume(),S.count()*S.volume())});d.size();)D.push(d.pop());p(D,t);for(var y=new l;D.size();)y.push(D.pop());return y}}}().quantize,W=function(n){this.canvas=document.createElement("canvas"),this.context=this.canvas.getContext("2d"),this.width=this.canvas.width=n.naturalWidth,this.height=this.canvas.height=n.naturalHeight,this.context.drawImage(n,0,0,this.width,this.height)};W.prototype.getImageData=function(){return this.context.getImageData(0,0,this.width,this.height)};var M=function(){};M.prototype.getColor=function(n,r){return r===void 0&&(r=10),this.getPalette(n,5,r)[0]},M.prototype.getPalette=function(n,r,a){var l=function(u){var s=u.colorCount,c=u.quality;if(s!==void 0&&Number.isInteger(s)){if(s===1)throw new Error("colorCount should be between 2 and 20. To get one color, call getColor() instead of getPalette()");s=Math.max(s,2),s=Math.min(s,20)}else s=10;return(c===void 0||!Number.isInteger(c)||c<1)&&(c=10),{colorCount:s,quality:c}}({colorCount:r,quality:a}),h=new W(n),e=function(u,s,c){for(var o,m,f,v,d,p=u,D=[],y=0;y<s;y+=c)m=p[0+(o=4*y)],f=p[o+1],v=p[o+2],((d=p[o+3])===void 0||d>=125)&&(m>250&&f>250&&v>250||D.push([m,f,v]));return D}(h.getImageData().data,h.width*h.height,l.quality),t=z(e,l.colorCount);return t?t.palette():null},M.prototype.getColorFromUrl=function(n,r,a){var l=this,h=document.createElement("img");h.addEventListener("load",function(){var e=l.getPalette(h,5,a);r(e[0],n)}),h.src=n},M.prototype.getImageData=function(n,r){var a=new XMLHttpRequest;a.open("GET",n,!0),a.responseType="arraybuffer",a.onload=function(){if(this.status==200){var l=new Uint8Array(this.response);i=l.length;for(var h=new Array(i),e=0;e<l.length;e++)h[e]=String.fromCharCode(l[e]);var t=h.join(""),u=window.btoa(t);r("data:image/png;base64,"+u)}},a.send()},M.prototype.getColorAsync=function(n,r,a){var l=this;this.getImageData(n,function(h){var e=document.createElement("img");e.addEventListener("load",function(){var t=l.getPalette(e,5,a);r(t[0],this)}),e.src=h})};const F=(n,r)=>r===void 0?`rgb(${n[0]}, ${n[1]}, ${n[2]})`:`rgba(${n[0]}, ${n[1]}, ${n[2]}, ${r})`,q=(n,r)=>g.toRgba(g.transparentize(n,r)),x=(n,r)=>g.toRgba(g.saturate(n,r)),N=(n,r)=>g.toRgba(g.desaturate(n,r));function $(n){return n instanceof HTMLImageElement?Promise.resolve(B(n)):X(n)}function B(n){try{return new M().getColor(n)}catch{return[255,255,255]}}function X(n){return new Promise((r,a)=>{const l=document.createElement("img");l.crossOrigin="anonymous",l.onload=()=>{try{const h=new M().getColor(l);r(h)}catch{r([255,255,255])}},l.onerror=()=>a(new Error("Failed to load image")),l.src=n})}const J=n=>{const r=F(n),a=g.getScale("#FFFFFF",r,"#000000"),l=Array.from({length:12},(o,m)=>{const f=a(m/11);return N(f,.0085)}),h=l.map(o=>x(j(o),.005)),e=g.toRgba(x(g.adjustHue(r,180),1)),t=g.getScale("#FFFFFF",e,"#000000"),u=Array.from({length:12},(o,m)=>{const f=t(m/11);return N(f,.1)}),s=u.map(o=>N(j(o),.22)),c=Q(x(h[5],.115));return{BASE_COLOR:F(n),BRAND:{PRIMARY:c,PRIMARY_LIGHT:I(c,.25,{min:.6,max:.8}),SECONDARY:N(s[4],.02)},PRIMARY:{PRIMARY_SUPER_DARK:I(P(l[9]),-.6,{min:0,max:.02}),PRIMARY_DARK:I(P(l[8]),-.4,{min:.01,max:.02}),PRIMARY_MEDIUM:I(h[7],-.2,{min:0,max:.11}),PRIMARY_MEDIUM_LIGHT:I(N(h[6],.1),.08),PRIMARY_LIGHT:I(x(h[5],.1),.16),PRIMARY_LIGHTEST:I(x(h[3],.2),.12,{min:.5,max:.9}),PRIMARY_SUPER_LIGHT:I(h[1],.02,{min:.86,max:.98})},SECONDARY:{SECONDARY_SUPER_DARK:I(P(u[9]),-.6,{min:0,max:.02}),SECONDARY_DARK:I(P(u[8]),-.4,{min:.01,max:.02}),SECONDARY_MEDIUM:I(s[7],-.2,{min:0,max:.11}),SECONDARY_MEDIUM_LIGHT:I(s[6],.1),SECONDARY_LIGHT:I(x(s[5],.1),.16),SECONDARY_LIGHTEST:I(x(s[3],.2),.12,{min:.5,max:.9}),SECONDARY_SUPER_LIGHT:I(s[0],.02,{min:.86,max:.98})},SUCCESS:{SUCCESS_DARK:_.SUCCESS.DARK,SUCCESS_MEDIUM:_.SUCCESS.MEDIUM,SUCCESS_LIGHT:_.SUCCESS.LIGHT,SUCCESS_SUPER_LIGHT:_.SUCCESS.SUPER_LIGHT},WARNING:{WARNING_DARK:_.WARNING.DARK,WARNING_MEDIUM:_.WARNING.MEDIUM,WARNING_LIGHT:_.WARNING.LIGHT,WARNING_SUPER_LIGHT:_.WARNING.SUPER_LIGHT},DANGER:{DANGER_SUPER_DARK:_.DANGER.SUPER_DARK,DANGER_DARK:_.DANGER.DARK,DANGER_MEDIUM:_.DANGER.MEDIUM,DANGER_LIGHT:_.DANGER.LIGHT,DANGER_SUPER_LIGHT:_.DANGER.SUPER_LIGHT}}},I=(n,r,a={min:.03,max:.97})=>{let l=n,h=g.getLuminance(l);if(a.min<0&&(a.min=0),a.max>1&&(a.max=1),a.min>=a.max)throw new Error("Invalid range: min must be less than max");if(r>0){const t=a.max-h;if(t<=0)return g.toRgba(l);const u=r*(t/(1-h));l=g.lighten(l,u)}else if(r<0){const t=h-a.min;if(t<=0)return g.toRgba(l);const u=r*(t/h);l=g.darken(l,Math.abs(u))}const e=g.getLuminance(l);return(e>a.max||e<a.min)&&(l=O(l,a)),g.toRgba(l)},O=(n,r)=>{let a=n,l=g.getLuminance(a);for(;l>r.max;)a=g.darken(a,.05),l=g.getLuminance(a);for(;l<r.min;)a=g.lighten(a,.05),l=g.getLuminance(a);return g.toRgba(a)},P=n=>{for(;g.hasBadContrast(n,"readable",_.GRAYSCALE.GRAY_DARK);)n=g.lighten(n,.01);return g.toRgba(n)},Q=n=>{for(;g.hasBadContrast(_.GRAYSCALE.GRAY_SUPER_LIGHT,"readable",n);)n=g.darken(n,.01);return g.toRgba(n)},j=n=>{let r=n,a=g.getLuminance(g.toRgba(r)),l=0;const h=6;for(;a<.16&&l<h;)l++,r=g.lighten(r,.1),a=g.getLuminance(g.toRgba(r));for(;a>.6&&l<h;)l++,r=g.darken(r,.1),a=g.getLuminance(g.toRgba(r));return g.toRgba(r)},V=n=>typeof n=="string"||n instanceof String;function Z(...n){return n.filter(V).join(" ")}const tt=n=>n.startsWith("http"),nt=(n,r)=>{if(n.metaKey||n.altKey||n.ctrlKey||n.shiftKey||n.button&&n.button!==0)return;n.preventDefault();const a=r.startsWith("/")?r:`/${r}`;window.history.pushState({},"",a),window.dispatchEvent(new PopStateEvent("popstate"))};Object.defineProperty(exports,"toHex",{enumerable:!0,get:()=>g.toHex});Object.defineProperty(exports,"toRgba",{enumerable:!0,get:()=>g.toRgba});exports.arrayToRgbString=F;exports.csx=Z;exports.desaturate=N;exports.generatePalette=J;exports.getDominantColor=$;exports.handleInternalNavigation=nt;exports.isUrlExternal=tt;exports.saturate=x;exports.transparentize=q;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./darkTheme-ann6VTfq.js"),t=require("./navigation-BB0MBIiR.js"),a=require("./image-BlhKzTx8.js");exports.arrayToRgbString=e.arrayToRgbString;exports.darken=e.darken;exports.desaturate=e.desaturate;exports.lighten=e.lighten;exports.saturate=e.saturate;exports.toHex=e.toHex;exports.toRgba=e.toRgba;exports.transparentize=e.transparentize;exports.copyTextToClipboard=t.copyTextToClipboard;exports.csx=t.csx;exports.handleInternalNavigation=t.handleInternalNavigation;exports.isUrlExternal=t.isUrlExternal;exports.generatePalette=a.generatePalette;exports.getDominantColor=a.getDominantColor;
2
2
  //# sourceMappingURL=utils.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.cjs.js","sources":["../node_modules/colorthief/dist/color-thief.mjs","../src/utils/color.ts","../src/utils/utils.ts"],"sourcesContent":["var t=function(t,r){return t<r?-1:t>r?1:0},r=function(t){return t.reduce(function(t,r){return t+r},0)},n=/*#__PURE__*/function(){function t(t){this.colors=t}var r=t.prototype;return r.palette=function(){return this.colors},r.map=function(t){return t},t}(),o=function(){function o(t,r,n){return(t<<10)+(r<<5)+n}function e(t){var r=[],n=!1;function o(){r.sort(t),n=!0}return{push:function(t){r.push(t),n=!1},peek:function(t){return n||o(),void 0===t&&(t=r.length-1),r[t]},pop:function(){return n||o(),r.pop()},size:function(){return r.length},map:function(t){return r.map(t)},debug:function(){return n||o(),r}}}function i(t,r,n,o,e,i,u){var a=this;a.r1=t,a.r2=r,a.g1=n,a.g2=o,a.b1=e,a.b2=i,a.histo=u}function u(){this.vboxes=new e(function(r,n){return t(r.vbox.count()*r.vbox.volume(),n.vbox.count()*n.vbox.volume())})}function a(t,r){if(r.count()){var n=r.r2-r.r1+1,e=r.g2-r.g1+1,i=Math.max.apply(null,[n,e,r.b2-r.b1+1]);if(1==r.count())return[r.copy()];var u,a,c,f,s=0,h=[],v=[];if(i==n)for(u=r.r1;u<=r.r2;u++){for(f=0,a=r.g1;a<=r.g2;a++)for(c=r.b1;c<=r.b2;c++)f+=t[o(u,a,c)]||0;h[u]=s+=f}else if(i==e)for(u=r.g1;u<=r.g2;u++){for(f=0,a=r.r1;a<=r.r2;a++)for(c=r.b1;c<=r.b2;c++)f+=t[o(a,u,c)]||0;h[u]=s+=f}else for(u=r.b1;u<=r.b2;u++){for(f=0,a=r.r1;a<=r.r2;a++)for(c=r.g1;c<=r.g2;c++)f+=t[o(a,c,u)]||0;h[u]=s+=f}return h.forEach(function(t,r){v[r]=s-t}),function(t){var n,o,e,i,a,c=t+\"1\",f=t+\"2\",l=0;for(u=r[c];u<=r[f];u++)if(h[u]>s/2){for(e=r.copy(),i=r.copy(),a=(n=u-r[c])<=(o=r[f]-u)?Math.min(r[f]-1,~~(u+o/2)):Math.max(r[c],~~(u-1-n/2));!h[a];)a++;for(l=v[a];!l&&h[a-1];)l=v[--a];return e[f]=a,i[c]=e[f]+1,[e,i]}}(i==n?\"r\":i==e?\"g\":\"b\")}}return i.prototype={volume:function(t){var r=this;return r._volume&&!t||(r._volume=(r.r2-r.r1+1)*(r.g2-r.g1+1)*(r.b2-r.b1+1)),r._volume},count:function(t){var r=this,n=r.histo;if(!r._count_set||t){var e,i,u,a=0;for(e=r.r1;e<=r.r2;e++)for(i=r.g1;i<=r.g2;i++)for(u=r.b1;u<=r.b2;u++)a+=n[o(e,i,u)]||0;r._count=a,r._count_set=!0}return r._count},copy:function(){var t=this;return new i(t.r1,t.r2,t.g1,t.g2,t.b1,t.b2,t.histo)},avg:function(t){var r=this,n=r.histo;if(!r._avg||t){var e,i,u,a,c=0,f=0,s=0,h=0;if(r.r1===r.r2&&r.g1===r.g2&&r.b1===r.b2)r._avg=[r.r1<<3,r.g1<<3,r.b1<<3];else{for(i=r.r1;i<=r.r2;i++)for(u=r.g1;u<=r.g2;u++)for(a=r.b1;a<=r.b2;a++)c+=e=n[o(i,u,a)]||0,f+=e*(i+.5)*8,s+=e*(u+.5)*8,h+=e*(a+.5)*8;r._avg=c?[~~(f/c),~~(s/c),~~(h/c)]:[~~(8*(r.r1+r.r2+1)/2),~~(8*(r.g1+r.g2+1)/2),~~(8*(r.b1+r.b2+1)/2)]}}return r._avg},contains:function(t){var r=this,n=t[0]>>3;return gval=t[1]>>3,bval=t[2]>>3,n>=r.r1&&n<=r.r2&&gval>=r.g1&&gval<=r.g2&&bval>=r.b1&&bval<=r.b2}},u.prototype={push:function(t){this.vboxes.push({vbox:t,color:t.avg()})},palette:function(){return this.vboxes.map(function(t){return t.color})},size:function(){return this.vboxes.size()},map:function(t){for(var r=this.vboxes,n=0;n<r.size();n++)if(r.peek(n).vbox.contains(t))return r.peek(n).color;return this.nearest(t)},nearest:function(t){for(var r,n,o,e=this.vboxes,i=0;i<e.size();i++)((n=Math.sqrt(Math.pow(t[0]-e.peek(i).color[0],2)+Math.pow(t[1]-e.peek(i).color[1],2)+Math.pow(t[2]-e.peek(i).color[2],2)))<r||void 0===r)&&(r=n,o=e.peek(i).color);return o},forcebw:function(){var n=this.vboxes;n.sort(function(n,o){return t(r(n.color),r(o.color))});var o=n[0].color;o[0]<5&&o[1]<5&&o[2]<5&&(n[0].color=[0,0,0]);var e=n.length-1,i=n[e].color;i[0]>251&&i[1]>251&&i[2]>251&&(n[e].color=[255,255,255])}},{quantize:function(r,c){if(!Number.isInteger(c)||c<1||c>256)throw new Error(\"Invalid maximum color count. It must be an integer between 1 and 256.\");if(!r.length||c<2||c>256)return!1;if(!r.length||c<2||c>256)return!1;for(var f=[],s=new Set,h=0;h<r.length;h++){var v=r[h],l=v.join(\",\");s.has(l)||(s.add(l),f.push(v))}if(f.length<=c)return new n(f);var g=function(t){var r,n=new Array(32768);return t.forEach(function(t){r=o(t[0]>>3,t[1]>>3,t[2]>>3),n[r]=(n[r]||0)+1}),n}(r);g.forEach(function(){});var p=function(t,r){var n,o,e,u=1e6,a=0,c=1e6,f=0,s=1e6,h=0;return t.forEach(function(t){(n=t[0]>>3)<u?u=n:n>a&&(a=n),(o=t[1]>>3)<c?c=o:o>f&&(f=o),(e=t[2]>>3)<s?s=e:e>h&&(h=e)}),new i(u,a,c,f,s,h,r)}(r,g),b=new e(function(r,n){return t(r.count(),n.count())});function m(t,r){for(var n,o=t.size(),e=0;e<1e3;){if(o>=r)return;if(e++>1e3)return;if((n=t.pop()).count()){var i=a(g,n),u=i[0],c=i[1];if(!u)return;t.push(u),c&&(t.push(c),o++)}else t.push(n),e++}}b.push(p),m(b,.75*c);for(var d=new e(function(r,n){return t(r.count()*r.volume(),n.count()*n.volume())});b.size();)d.push(b.pop());m(d,c);for(var w=new u;d.size();)w.push(d.pop());return w}}}().quantize,e=function(t){this.canvas=document.createElement(\"canvas\"),this.context=this.canvas.getContext(\"2d\"),this.width=this.canvas.width=t.naturalWidth,this.height=this.canvas.height=t.naturalHeight,this.context.drawImage(t,0,0,this.width,this.height)};e.prototype.getImageData=function(){return this.context.getImageData(0,0,this.width,this.height)};var u=function(){};u.prototype.getColor=function(t,r){return void 0===r&&(r=10),this.getPalette(t,5,r)[0]},u.prototype.getPalette=function(t,r,n){var i=function(t){var r=t.colorCount,n=t.quality;if(void 0!==r&&Number.isInteger(r)){if(1===r)throw new Error(\"colorCount should be between 2 and 20. To get one color, call getColor() instead of getPalette()\");r=Math.max(r,2),r=Math.min(r,20)}else r=10;return(void 0===n||!Number.isInteger(n)||n<1)&&(n=10),{colorCount:r,quality:n}}({colorCount:r,quality:n}),u=new e(t),a=function(t,r,n){for(var o,e,i,u,a,c=t,f=[],s=0;s<r;s+=n)e=c[0+(o=4*s)],i=c[o+1],u=c[o+2],(void 0===(a=c[o+3])||a>=125)&&(e>250&&i>250&&u>250||f.push([e,i,u]));return f}(u.getImageData().data,u.width*u.height,i.quality),c=o(a,i.colorCount);return c?c.palette():null},u.prototype.getColorFromUrl=function(t,r,n){var o=this,e=document.createElement(\"img\");e.addEventListener(\"load\",function(){var i=o.getPalette(e,5,n);r(i[0],t)}),e.src=t},u.prototype.getImageData=function(t,r){var n=new XMLHttpRequest;n.open(\"GET\",t,!0),n.responseType=\"arraybuffer\",n.onload=function(){if(200==this.status){var t=new Uint8Array(this.response);i=t.length;for(var n=new Array(i),o=0;o<t.length;o++)n[o]=String.fromCharCode(t[o]);var e=n.join(\"\"),u=window.btoa(e);r(\"data:image/png;base64,\"+u)}},n.send()},u.prototype.getColorAsync=function(t,r,n){var o=this;this.getImageData(t,function(t){var e=document.createElement(\"img\");e.addEventListener(\"load\",function(){var t=o.getPalette(e,5,n);r(t[0],this)}),e.src=t})};export{u as default};\n","import {\n desaturate as _desaturate,\n saturate as _saturate,\n transparentize as _transparentize,\n adjustHue,\n darken,\n getLuminance,\n getScale,\n hasBadContrast,\n lighten,\n toRgba,\n} from \"color2k\";\nimport ColorThief from \"colorthief\";\nimport { COLORS } from \"../constants\";\nimport { Palette } from \"../constants/palettes\";\n\n// Include any functions we wish to expose from color2k\nexport { toHex, toRgba } from \"color2k\";\n\nexport type RGBArray = [number, number, number];\n\n/**\n * Converts an RGB array to a CSS string representation.\n * @param rgb - The RGB array to convert.\n * @param opacity - Optional opacity value.\n * @returns A CSS string representation of the RGB array, using `rgb()`, or `rgba()` if an opacity value is provided.\n */\nexport const arrayToRgbString = (rgb: RGBArray, opacity?: number): string => {\n return opacity === undefined\n ? `rgb(${rgb[0]}, ${rgb[1]}, ${rgb[2]})`\n : `rgba(${rgb[0]}, ${rgb[1]}, ${rgb[2]}, ${opacity})`;\n};\n\n/**\n * Transparentizes an input color.\n *\n * @param color - The color string to transparentize.\n * @param amount - The amount to increase the opacity of the color by, given as a decimal between 0 and 1.\n * @returns An RGBA color string.\n */\nexport const transparentize = (color: string, amount: number): string => {\n return toRgba(_transparentize(color, amount));\n};\n\n/**\n * Saturates a color.\n *\n * @param color - Input color\n * @param amount - The amount to saturate, given as a decimal between 0 and 1\n * @returns An RGBA color string.\n */\nexport const saturate = (color: string, amount: number): string => {\n return toRgba(_saturate(color, amount));\n};\n\n/**\n * Desaturates a color.\n *\n * @param color - Input color\n * @param amount - The amount to desaturate, given as a decimal between 0 and 1\n * @returns An RGBA color string.\n */\nexport const desaturate = (color: string, amount: number): string => {\n return toRgba(_desaturate(color, amount));\n};\n\n/**\n * Gets the dominant color of an image. Avoids issues with low contrast colors.\n * @reference https://github.com/lokesh/color-thief/issues/40\n * @param image - The image to get the dominant color from.\n * @returns A Promise that resolves to an RGB array.\n */\nexport function getDominantColor(image: HTMLImageElement): Promise<RGBArray>;\nexport function getDominantColor(image: string): Promise<RGBArray>;\nexport function getDominantColor(\n image: HTMLImageElement | string\n): Promise<RGBArray> {\n if (image instanceof HTMLImageElement) {\n return Promise.resolve(getDominantColorFromImage(image));\n } else {\n return getDominantColorFromImageUrl(image);\n }\n}\n\nfunction getDominantColorFromImage(image: HTMLImageElement): RGBArray {\n try {\n const colorThief = new ColorThief();\n const baseColor = colorThief.getColor(image);\n return baseColor;\n } catch {\n return [255, 255, 255];\n }\n}\n\nfunction getDominantColorFromImageUrl(url: string): Promise<RGBArray> {\n return new Promise((resolve, reject) => {\n const imgElement = document.createElement(\"img\");\n imgElement.crossOrigin = \"anonymous\";\n\n imgElement.onload = () => {\n try {\n const baseColor = new ColorThief().getColor(imgElement);\n resolve(baseColor);\n } catch {\n resolve([255, 255, 255]);\n }\n };\n\n imgElement.onerror = () => reject(new Error(\"Failed to load image\"));\n imgElement.src = url;\n });\n}\n\n/**\n * Generates a complete color palette based on a primary color input.\n * The palette includes primary and secondary color scales with varying shades.\n *\n * @param primaryColor - The base RGB color array to generate the palette from\n * @returns A Palette object containing:\n * - BRAND colors (primary, light primary, and secondary)\n * - PRIMARY scale (7 shades from super dark to super light)\n * - SECONDARY scale (7 shades from super dark to super light)\n *\n * The function:\n * 1. Creates a 12-color scale from white to the primary color to black\n * 2. Generates a complementary secondary color by shifting the hue 180 degrees\n * 3. Creates another 12-color scale for the secondary color\n * 4. Maps specific positions from these scales to create the final palette structure\n */\nexport const generatePalette = (baseColor: RGBArray): Palette => {\n const primaryRgba = arrayToRgbString(baseColor);\n\n const primaryScaleFunc = getScale(\"#FFFFFF\", primaryRgba, \"#000000\");\n const primaryScale = Array.from({ length: 12 }, (_, i) => {\n const color = primaryScaleFunc(i / 11);\n return desaturate(color, 0.0085);\n });\n\n const adjustedPrimaryScale = primaryScale.map((color) =>\n saturate(adjustBrightnessForLuminance(color), 0.005)\n );\n\n const secondaryColor = toRgba(saturate(adjustHue(primaryRgba, 180), 1));\n\n const secondaryScaleFunc = getScale(\"#FFFFFF\", secondaryColor, \"#000000\");\n const secondaryScale = Array.from({ length: 12 }, (_, i) => {\n const color = secondaryScaleFunc(i / 11);\n return desaturate(color, 0.1);\n });\n\n const adjustedSecondaryScale = secondaryScale.map((color) =>\n desaturate(adjustBrightnessForLuminance(color), 0.22)\n );\n\n const brandPrimary = darkenForContrast(\n saturate(adjustedPrimaryScale[5], 0.115)\n );\n\n return {\n BASE_COLOR: arrayToRgbString(baseColor),\n BRAND: {\n PRIMARY: brandPrimary,\n PRIMARY_LIGHT: lightenWithinRange(brandPrimary, 0.25, {\n min: 0.6,\n max: 0.8,\n }),\n SECONDARY: desaturate(adjustedSecondaryScale[4], 0.02),\n },\n PRIMARY: {\n //backgrounds\n PRIMARY_SUPER_DARK: lightenWithinRange(\n lightenForContrast(primaryScale[9]),\n -0.6,\n {\n min: 0.0,\n max: 0.02,\n }\n ),\n PRIMARY_DARK: lightenWithinRange(\n lightenForContrast(primaryScale[8]),\n -0.4,\n {\n min: 0.01,\n max: 0.02,\n }\n ),\n //interactive components\n PRIMARY_MEDIUM: lightenWithinRange(adjustedPrimaryScale[7], -0.2, {\n min: 0.0,\n max: 0.11,\n }),\n //borders and seperators\n PRIMARY_MEDIUM_LIGHT: lightenWithinRange(\n desaturate(adjustedPrimaryScale[6], 0.1),\n 0.08\n ),\n //solid colors\n PRIMARY_LIGHT: lightenWithinRange(\n saturate(adjustedPrimaryScale[5], 0.1),\n 0.16\n ),\n //accessible text\n PRIMARY_LIGHTEST: lightenWithinRange(\n saturate(adjustedPrimaryScale[3], 0.2),\n 0.12,\n {\n min: 0.5,\n max: 0.9,\n }\n ),\n PRIMARY_SUPER_LIGHT: lightenWithinRange(adjustedPrimaryScale[1], 0.02, {\n min: 0.86,\n max: 0.98,\n }),\n },\n SECONDARY: {\n //backgrounds\n SECONDARY_SUPER_DARK: lightenWithinRange(\n lightenForContrast(secondaryScale[9]),\n -0.6,\n {\n min: 0.0,\n max: 0.02,\n }\n ),\n SECONDARY_DARK: lightenWithinRange(\n lightenForContrast(secondaryScale[8]),\n -0.4,\n {\n min: 0.01,\n max: 0.02,\n }\n ),\n // interactive components\n SECONDARY_MEDIUM: lightenWithinRange(adjustedSecondaryScale[7], -0.2, {\n min: 0.0,\n max: 0.11,\n }),\n //borders and seperators\n SECONDARY_MEDIUM_LIGHT: lightenWithinRange(\n adjustedSecondaryScale[6],\n 0.1\n ),\n //solid colors\n SECONDARY_LIGHT: lightenWithinRange(\n saturate(adjustedSecondaryScale[5], 0.1),\n 0.16\n ),\n //accessible text\n SECONDARY_LIGHTEST: lightenWithinRange(\n saturate(adjustedSecondaryScale[3], 0.2),\n 0.12,\n {\n min: 0.5,\n max: 0.9,\n }\n ),\n SECONDARY_SUPER_LIGHT: lightenWithinRange(\n adjustedSecondaryScale[0],\n 0.02,\n {\n min: 0.86,\n max: 0.98,\n }\n ),\n },\n SUCCESS: {\n SUCCESS_DARK: COLORS.SUCCESS.DARK,\n SUCCESS_MEDIUM: COLORS.SUCCESS.MEDIUM,\n SUCCESS_LIGHT: COLORS.SUCCESS.LIGHT,\n SUCCESS_SUPER_LIGHT: COLORS.SUCCESS.SUPER_LIGHT,\n },\n WARNING: {\n WARNING_DARK: COLORS.WARNING.DARK,\n WARNING_MEDIUM: COLORS.WARNING.MEDIUM,\n WARNING_LIGHT: COLORS.WARNING.LIGHT,\n WARNING_SUPER_LIGHT: COLORS.WARNING.SUPER_LIGHT,\n },\n DANGER: {\n DANGER_SUPER_DARK: COLORS.DANGER.SUPER_DARK,\n DANGER_DARK: COLORS.DANGER.DARK,\n DANGER_MEDIUM: COLORS.DANGER.MEDIUM,\n DANGER_LIGHT: COLORS.DANGER.LIGHT,\n DANGER_SUPER_LIGHT: COLORS.DANGER.SUPER_LIGHT,\n },\n };\n};\n\nconst lightenWithinRange = (\n color: string,\n amount: number,\n range: { min: number; max: number } = { min: 0.03, max: 0.97 }\n): string => {\n let adjustedColor = color;\n let currentLuminance = getLuminance(adjustedColor);\n\n // Validate range bounds\n if (range.min < 0) range.min = 0;\n if (range.max > 1) range.max = 1;\n if (range.min >= range.max) {\n throw new Error(\"Invalid range: min must be less than max\");\n }\n\n // For lightening (positive amount)\n if (amount > 0) {\n // Calculate how much we can lighten before hitting max\n const remainingLuminance = range.max - currentLuminance;\n if (remainingLuminance <= 0) return toRgba(adjustedColor);\n\n // Scale the amount based on remaining room to lighten\n const scaledAmount = amount * (remainingLuminance / (1 - currentLuminance));\n adjustedColor = lighten(adjustedColor, scaledAmount);\n }\n // For darkening (negative amount)\n else if (amount < 0) {\n // Calculate how much we can darken before hitting min\n const remainingLuminance = currentLuminance - range.min;\n if (remainingLuminance <= 0) return toRgba(adjustedColor);\n\n // Scale the amount based on remaining room to darken\n const scaledAmount = amount * (remainingLuminance / currentLuminance);\n adjustedColor = darken(adjustedColor, Math.abs(scaledAmount));\n }\n\n // Verify final luminance is within bounds\n const finalLuminance = getLuminance(adjustedColor);\n if (finalLuminance > range.max) {\n adjustedColor = adjustBrightnessWithinRange(adjustedColor, range);\n } else if (finalLuminance < range.min) {\n adjustedColor = adjustBrightnessWithinRange(adjustedColor, range);\n }\n\n return toRgba(adjustedColor);\n};\n\nconst adjustBrightnessWithinRange = (\n color: string,\n range: { min: number; max: number }\n): string => {\n let adjustedColor = color;\n let luminance = getLuminance(adjustedColor);\n\n // Darken if too bright\n while (luminance > range.max) {\n adjustedColor = darken(adjustedColor, 0.05);\n luminance = getLuminance(adjustedColor);\n }\n\n // Lighten if too dark\n while (luminance < range.min) {\n adjustedColor = lighten(adjustedColor, 0.05);\n luminance = getLuminance(adjustedColor);\n }\n\n return toRgba(adjustedColor);\n};\n\nconst lightenForContrast = (color: string): string => {\n while (hasBadContrast(color, \"readable\", COLORS.GRAYSCALE.GRAY_DARK)) {\n color = lighten(color, 0.01);\n }\n return toRgba(color);\n};\n\nconst darkenForContrast = (color: string): string => {\n while (hasBadContrast(COLORS.GRAYSCALE.GRAY_SUPER_LIGHT, \"readable\", color)) {\n color = darken(color, 0.01);\n }\n return toRgba(color);\n};\n\nconst adjustBrightnessForLuminance = (color: string): string => {\n let currentColor = color;\n let currentLuminance = getLuminance(toRgba(currentColor));\n let adjustmentAttempts = 0;\n const MAX_ATTEMPTS = 6;\n\n while (currentLuminance < 0.16 && adjustmentAttempts < MAX_ATTEMPTS) {\n adjustmentAttempts++;\n currentColor = lighten(currentColor, 0.1);\n currentLuminance = getLuminance(toRgba(currentColor));\n }\n\n while (currentLuminance > 0.6 && adjustmentAttempts < MAX_ATTEMPTS) {\n adjustmentAttempts++;\n currentColor = darken(currentColor, 0.1);\n currentLuminance = getLuminance(toRgba(currentColor));\n }\n\n return toRgba(currentColor);\n};\n","const isString = (x: unknown): boolean =>\n typeof x === \"string\" || x instanceof String;\n\nexport function csx(...classnames: unknown[]): string {\n return classnames.filter(isString).join(\" \");\n}\n\n/**\n * [isUrlExternal] - determine if passed absolute url is external to the current domain.\n */\nexport const isUrlExternal = (url: string) => {\n return url.startsWith(\"http\");\n};\n\n/**\n * Handles internal navigation clicks by preventing default browser behavior and\n * programmatically updating the URL and history state.\n *\n * @param e - The click event from the anchor element\n * @param to - The destination path to navigate to\n *\n * @remarks\n * - Converts relative paths to absolute by prepending \"/\" if needed\n * - Updates browser history using pushState and dispatches a popstate event\n */\nexport const handleInternalNavigation = (\n e: React.MouseEvent<HTMLAnchorElement>,\n to: string\n) => {\n // Don't handle navigation if modifier keys are pressed\n if (e.metaKey || e.altKey || e.ctrlKey || e.shiftKey) {\n return;\n }\n\n // Don't handle middle clicks or right clicks\n if (e.button && e.button !== 0) {\n return;\n }\n\n e.preventDefault();\n\n // Handle relative paths\n const resolvedPath = to.startsWith(\"/\") ? to : `/${to}`;\n window.history.pushState({}, \"\", resolvedPath);\n window.dispatchEvent(new PopStateEvent(\"popstate\"));\n};\n"],"names":["t","r","n","o","e","i","u","a","c","f","s","h","v","l","g","p","b","m","d","w","arrayToRgbString","rgb","opacity","transparentize","color","amount","toRgba","_transparentize","saturate","_saturate","desaturate","_desaturate","getDominantColor","image","getDominantColorFromImage","getDominantColorFromImageUrl","ColorThief","url","resolve","reject","imgElement","baseColor","generatePalette","primaryRgba","primaryScaleFunc","getScale","primaryScale","_","adjustedPrimaryScale","adjustBrightnessForLuminance","secondaryColor","adjustHue","secondaryScaleFunc","secondaryScale","adjustedSecondaryScale","brandPrimary","darkenForContrast","lightenWithinRange","lightenForContrast","COLORS.SUCCESS","COLORS.WARNING","COLORS.DANGER","range","adjustedColor","currentLuminance","getLuminance","remainingLuminance","scaledAmount","lighten","darken","finalLuminance","adjustBrightnessWithinRange","luminance","hasBadContrast","COLORS.GRAYSCALE","currentColor","adjustmentAttempts","MAX_ATTEMPTS","isString","x","csx","classnames","isUrlExternal","handleInternalNavigation","to","resolvedPath"],"mappings":"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","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"utils.cjs.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
package/dist/utils.d.ts CHANGED
@@ -1,3 +1,5 @@
1
+ import { darken } from 'color2k';
2
+ import { lighten } from 'color2k';
1
3
  import { toHex } from 'color2k';
2
4
  import { toRgba } from 'color2k';
3
5
 
@@ -9,8 +11,15 @@ import { toRgba } from 'color2k';
9
11
  */
10
12
  export declare const arrayToRgbString: (rgb: RGBArray, opacity?: number) => string;
11
13
 
14
+ export declare const copyTextToClipboard: (text: string, onError?: (error: Error) => void) => Promise<boolean>;
15
+
16
+ /**
17
+ * Concatenates class names into a single string, filtering out non-string values.
18
+ */
12
19
  export declare function csx(...classnames: unknown[]): string;
13
20
 
21
+ export { darken }
22
+
14
23
  /**
15
24
  * Desaturates a color.
16
25
  *
@@ -36,7 +45,7 @@ export declare const desaturate: (color: string, amount: number) => string;
36
45
  * 3. Creates another 12-color scale for the secondary color
37
46
  * 4. Maps specific positions from these scales to create the final palette structure
38
47
  */
39
- export declare const generatePalette: (baseColor: RGBArray) => Palette;
48
+ export declare const generatePalette: (baseColor: RGBArray_2) => ProtonPalette;
40
49
 
41
50
  /**
42
51
  * Gets the dominant color of an image. Avoids issues with low contrast colors.
@@ -44,9 +53,9 @@ export declare const generatePalette: (baseColor: RGBArray) => Palette;
44
53
  * @param image - The image to get the dominant color from.
45
54
  * @returns A Promise that resolves to an RGB array.
46
55
  */
47
- export declare function getDominantColor(image: HTMLImageElement): Promise<RGBArray>;
56
+ export declare function getDominantColor(image: HTMLImageElement): Promise<RGBArray_2>;
48
57
 
49
- export declare function getDominantColor(image: string): Promise<RGBArray>;
58
+ export declare function getDominantColor(image: string): Promise<RGBArray_2>;
50
59
 
51
60
  /**
52
61
  * Handles internal navigation clicks by preventing default browser behavior and
@@ -66,54 +75,38 @@ export declare const handleInternalNavigation: (e: React.MouseEvent<HTMLAnchorEl
66
75
  */
67
76
  export declare const isUrlExternal: (url: string) => boolean;
68
77
 
69
- declare type Palette = {
78
+ export { lighten }
79
+
80
+ declare type ProtonColorScale = {
81
+ SUPER_DARK: string;
82
+ DARK: string;
83
+ MEDIUM: string;
84
+ MEDIUM_LIGHT: string;
85
+ LIGHT: string;
86
+ LIGHTEST: string;
87
+ SUPER_LIGHT: string;
88
+ WHITE: string;
89
+ };
90
+
91
+ declare type ProtonPalette = {
70
92
  BASE_COLOR: string;
71
93
  BRAND: {
72
94
  PRIMARY: string;
73
95
  PRIMARY_LIGHT: string;
74
- SECONDARY: string;
75
- };
76
- PRIMARY: {
77
- PRIMARY_SUPER_DARK: string;
78
- PRIMARY_DARK: string;
79
- PRIMARY_MEDIUM: string;
80
- PRIMARY_MEDIUM_LIGHT: string;
81
- PRIMARY_LIGHT: string;
82
- PRIMARY_LIGHTEST: string;
83
96
  PRIMARY_SUPER_LIGHT: string;
84
- };
85
- SECONDARY: {
86
- SECONDARY_SUPER_DARK: string;
87
- SECONDARY_DARK: string;
88
- SECONDARY_MEDIUM: string;
89
- SECONDARY_MEDIUM_LIGHT: string;
97
+ SECONDARY: string;
90
98
  SECONDARY_LIGHT: string;
91
- SECONDARY_LIGHTEST: string;
92
99
  SECONDARY_SUPER_LIGHT: string;
93
100
  };
94
- SUCCESS: {
95
- SUCCESS_DARK: string;
96
- SUCCESS_MEDIUM: string;
97
- SUCCESS_LIGHT: string;
98
- SUCCESS_SUPER_LIGHT: string;
99
- };
100
- WARNING: {
101
- WARNING_DARK: string;
102
- WARNING_MEDIUM: string;
103
- WARNING_LIGHT: string;
104
- WARNING_SUPER_LIGHT: string;
105
- };
106
- DANGER: {
107
- DANGER_SUPER_DARK: string;
108
- DANGER_DARK: string;
109
- DANGER_MEDIUM: string;
110
- DANGER_LIGHT: string;
111
- DANGER_SUPER_LIGHT: string;
112
- };
101
+ PRIMARY: ProtonColorScale;
102
+ SECONDARY: ProtonColorScale;
103
+ GRAYSCALE: ProtonColorScale;
113
104
  };
114
105
 
115
106
  export declare type RGBArray = [number, number, number];
116
107
 
108
+ declare type RGBArray_2 = [number, number, number];
109
+
117
110
  /**
118
111
  * Saturates a color.
119
112
  *
@@ -137,8 +130,3 @@ export { toRgba }
137
130
  export declare const transparentize: (color: string, amount: number) => string;
138
131
 
139
132
  export { }
140
-
141
-
142
- declare namespace ButtonGroup {
143
- var Option: (props: ButtonGroupOptionProps) => import("react/jsx-runtime").JSX.Element;
144
- }