@studiocubics/components 0.0.11 → 0.0.12

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.
@@ -1 +1,21 @@
1
- export declare function Toaster(): import("react/jsx-runtime").JSX.Element | null;
1
+ import type { PositionStringEdge } from "@studiocubics/types";
2
+ import { type ComponentProps } from "react";
3
+ export declare function CloseIcon(props: ComponentProps<"svg">): import("react/jsx-runtime").JSX.Element;
4
+ export interface ToasterProps {
5
+ defaultPosition?: PositionStringEdge;
6
+ /**
7
+ * Gap between each toast in px
8
+ * @default 8
9
+ */
10
+ peekGap?: number;
11
+ /**
12
+ * Duration of exit animation in ms
13
+ * @default 200
14
+ */
15
+ exitDuration?: number;
16
+ /**
17
+ * @default 5
18
+ */
19
+ maxToastCount?: number;
20
+ }
21
+ export declare function Toaster(props: ToasterProps): import("react/jsx-runtime").JSX.Element;
@@ -1,2 +1,2 @@
1
- "use client";import{jsx as e,jsxs as t}from"react/jsx-runtime";import{useState as n,useEffect as r}from"react";import{subscribe as o,dismiss as i}from"./toast.js";import{Button as s}from"../../Inputs/Button/Button.js";function l(){const[l,a]=n([]);return r(()=>()=>{o(a)},[]),0===l.length?null:e("div",{style:c,children:l.map(n=>t("div",{style:d,children:[e("span",{children:n.message}),e(s,{square:!0,onClick:()=>i(n.id),style:p,children:"×"})]},n.id))})}const c={position:"fixed",top:16,right:16,display:"flex",flexDirection:"column",gap:8,zIndex:1e3},d={background:"#111",color:"#fff",padding:"12px 16px",borderRadius:6,minWidth:200,display:"flex",justifyContent:"space-between",alignItems:"center"},p={background:"transparent",border:"none",color:"#fff",fontSize:16,cursor:"pointer"};export{l as Toaster};
1
+ "use client";import{jsx as t,jsxs as o}from"react/jsx-runtime";import{useState as s,useEffect as i}from"react";import"../../Cards/Card/Card.js";import"../../Cards/CollectionItemCard/CollectionItemCard.js";import"@studiocubics/hooks";import{Button as r}from"../../Inputs/Button/Button.js";import"react-dom";import"@studiocubics/utils";import{GlassCard as e}from"../../Cards/GlassCard/GlassCard.js";import"../../Inputs/Checkbox/CheckboxProvider.js";import"../InputErrors/InputErrors.js";import"../Accordion/Accordion.js";import"../Chip/Chip.js";import"../IdentityDisplay/IdentityDisplay.js";import"../Kbd/buttonList.js";import"../List/List.js";import{subscribe as n,dismiss as a,addDismissInterceptor as d}from"./toast.js";import p from"./Toaster.module.css.js";function m(s){const{width:i=24,height:r=i,...e}=s;return o("svg",{fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",...e,xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",width:i,height:r,children:[t("path",{d:"M18 6 6 18"}),t("path",{d:"m6 6 12 12"})]})}function c(o){const{defaultPosition:r="top right",peekGap:e=12,exitDuration:a=200,maxToastCount:m=5}=o,[c,l]=s([]),[h,C]=s(new Set);return i(()=>n(l,m),[]),i(()=>{d((t,o)=>{C(s=>{if(s.has(t))return s;const i=new Set(s).add(t);return setTimeout(()=>{o(),C(o=>{const s=new Set(o);return s.delete(t),s})},a),i})})},[a]),t("div",{className:p.root,children:c.map((o,s)=>t(u,{toast:o,defaultPosition:r,dismissing:h,peekGap:e,toasts:c,index:s},o.id))})}function u({toast:i,defaultPosition:n,dismissing:d,peekGap:c,toasts:u,index:l}){const[h,C]=(i.position??n).split(" "),[j,f]=s(!1);return console.log({toast:i}),o(e,{className:p.toast,"data-pos-y":h,"data-pos-x":C,"data-color":i.color,onMouseEnter:()=>f(!0),onMouseLeave:()=>f(!1),"data-dismissing":d.has(i.id)?"":void 0,style:{"--peek":l*c+"px",zIndex:j?u.length+1:void 0},children:[t("span",{children:i.message}),t(r,{size:"sm",square:!0,onClick:()=>a(i.id),children:t(m,{})})]},i.id)}export{m as CloseIcon,c as Toaster};
2
2
  //# sourceMappingURL=Toaster.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Toaster.js","sources":["../../../src/Display/Toast/Toaster.tsx"],"sourcesContent":["\"use client\";\n// TODO complete toaster\nimport { useEffect, useState } from \"react\";\nimport { subscribe, dismiss, type Toast } from \"./toast\";\nimport { Button } from \"../../Inputs/Button/Button\";\n\nexport function Toaster() {\n const [toasts, setToasts] = useState<Toast[]>([]);\n\n useEffect(() => {\n return () => {\n subscribe(setToasts);\n };\n }, []);\n\n if (toasts.length === 0) return null;\n\n return (\n <div style={containerStyle}>\n {toasts.map((t) => (\n <div key={t.id} style={toastStyle}>\n <span>{t.message}</span>\n <Button square onClick={() => dismiss(t.id)} style={closeStyle}>\n ×\n </Button>\n </div>\n ))}\n </div>\n );\n}\n\nconst containerStyle: React.CSSProperties = {\n position: \"fixed\",\n top: 16,\n right: 16,\n display: \"flex\",\n flexDirection: \"column\",\n gap: 8,\n zIndex: 1000,\n};\n\nconst toastStyle: React.CSSProperties = {\n background: \"#111\",\n color: \"#fff\",\n padding: \"12px 16px\",\n borderRadius: 6,\n minWidth: 200,\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n};\n\nconst closeStyle: React.CSSProperties = {\n background: \"transparent\",\n border: \"none\",\n color: \"#fff\",\n fontSize: 16,\n cursor: \"pointer\",\n};\n"],"names":["Toaster","toasts","setToasts","useState","useEffect","subscribe","length","_jsx","style","containerStyle","children","map","t","_jsxs","toastStyle","message","Button","square","onClick","dismiss","id","closeStyle","position","top","right","display","flexDirection","gap","zIndex","background","color","padding","borderRadius","minWidth","justifyContent","alignItems","border","fontSize","cursor"],"mappings":"mOAMgBA,IACd,MAAOC,EAAQC,GAAaC,EAAkB,IAQ9C,OANAC,EAAU,IACD,KACLC,EAAUH,IAEX,IAEmB,IAAlBD,EAAOK,OAAqB,KAG9BC,EAAA,MAAA,CAAKC,MAAOC,EAAcC,SACvBT,EAAOU,IAAKC,GACXC,EAAA,MAAA,CAAgBL,MAAOM,EAAUJ,SAAA,CAC/BH,EAAA,OAAA,CAAAG,SAAOE,EAAEG,UACTR,EAACS,EAAM,CAACC,QAAM,EAACC,QAAS,IAAMC,EAAQP,EAAEQ,IAAKZ,MAAOa,EAAUX,SAAA,QAFtDE,EAAEQ,MASpB,CAEA,MAAMX,EAAsC,CAC1Ca,SAAU,QACVC,IAAK,GACLC,MAAO,GACPC,QAAS,OACTC,cAAe,SACfC,IAAK,EACLC,OAAQ,KAGJd,EAAkC,CACtCe,WAAY,OACZC,MAAO,OACPC,QAAS,YACTC,aAAc,EACdC,SAAU,IACVR,QAAS,OACTS,eAAgB,gBAChBC,WAAY,UAGRd,EAAkC,CACtCQ,WAAY,cACZO,OAAQ,OACRN,MAAO,OACPO,SAAU,GACVC,OAAQ"}
1
+ {"version":3,"file":"Toaster.js","sources":["../../../src/Display/Toast/Toaster.tsx"],"sourcesContent":["\"use client\";\n\nimport type { PositionStringEdge } from \"@studiocubics/types\";\nimport {\n type ComponentProps,\n useState,\n useEffect,\n type CSSProperties,\n} from \"react\";\nimport { GlassCard } from \"../../Cards/_index\";\nimport { Button } from \"../../Inputs/_index\";\nimport { type Toast, addDismissInterceptor, dismiss, subscribe } from \"./toast\";\nimport styles from \"./Toaster.module.css\";\n\nexport function CloseIcon(props: ComponentProps<\"svg\">) {\n const { width = 24, height = width, ...rest } = props;\n return (\n <svg\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n {...rest}\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n width={width}\n height={height}\n >\n <path d=\"M18 6 6 18\" />\n <path d=\"m6 6 12 12\" />\n </svg>\n );\n}\n\nexport interface ToasterProps {\n defaultPosition?: PositionStringEdge;\n /**\n * Gap between each toast in px\n * @default 8\n */\n peekGap?: number;\n /**\n * Duration of exit animation in ms\n * @default 200\n */\n exitDuration?: number;\n /**\n * @default 5\n */\n maxToastCount?: number;\n}\n\nexport function Toaster(props: ToasterProps) {\n const {\n defaultPosition: defaultPosition = \"top right\",\n peekGap = 12,\n exitDuration = 200,\n maxToastCount = 5,\n } = props;\n const [toasts, setToasts] = useState<Toast[]>([]);\n // Track which toast IDs are currently playing their exit animation\n const [dismissing, setDismissing] = useState<Set<string>>(new Set());\n\n useEffect(() => {\n return subscribe(setToasts, maxToastCount);\n }, []);\n\n useEffect(() => {\n // Register interceptor so all dismiss() calls (auto + manual) go through exit animation\n addDismissInterceptor((id, confirm) => {\n // No-op if already animating out\n setDismissing((prev) => {\n if (prev.has(id)) return prev;\n const next = new Set(prev).add(id);\n setTimeout(() => {\n confirm();\n setDismissing((p) => {\n const n = new Set(p);\n n.delete(id);\n return n;\n });\n }, exitDuration);\n return next;\n });\n });\n }, [exitDuration]);\n\n return (\n <div className={styles.root}>\n {toasts.map((t, i) => (\n <ToastComponent\n key={t.id}\n toast={t}\n defaultPosition={defaultPosition}\n dismissing={dismissing}\n peekGap={peekGap}\n toasts={toasts}\n index={i}\n />\n ))}\n </div>\n );\n}\nfunction ToastComponent({\n toast,\n defaultPosition,\n dismissing,\n peekGap,\n toasts,\n index,\n}: {\n toast: Toast;\n defaultPosition: PositionStringEdge;\n dismissing: Set<string>;\n peekGap: number;\n toasts: Toast[];\n index: number;\n}) {\n const [y, x] = (toast.position ?? defaultPosition).split(\" \");\n const [isHovering, setIsHovering] = useState(false);\n console.log({ toast });\n\n return (\n <GlassCard\n key={toast.id}\n className={styles.toast}\n data-pos-y={y}\n data-pos-x={x}\n data-color={toast.color}\n onMouseEnter={() => setIsHovering(true)}\n onMouseLeave={() => setIsHovering(false)}\n data-dismissing={dismissing.has(toast.id) ? \"\" : undefined}\n style={\n {\n \"--peek\": `${index * peekGap}px`,\n zIndex: isHovering ? toasts.length + 1 : undefined,\n } as CSSProperties\n }\n >\n <span>{toast.message}</span>\n {/* dismiss() goes through interceptor → exit animation → confirmDismiss */}\n <Button size=\"sm\" square onClick={() => dismiss(toast.id)}>\n <CloseIcon />\n </Button>\n </GlassCard>\n );\n}\n"],"names":["CloseIcon","props","width","height","rest","_jsxs","fill","stroke","strokeWidth","strokeLinecap","strokeLinejoin","xmlns","viewBox","children","_jsx","d","Toaster","defaultPosition","peekGap","exitDuration","maxToastCount","toasts","setToasts","useState","dismissing","setDismissing","Set","useEffect","subscribe","addDismissInterceptor","id","confirm","prev","has","next","add","setTimeout","p","n","delete","className","styles","root","map","t","i","ToastComponent","toast","index","y","x","position","split","isHovering","setIsHovering","console","log","GlassCard","color","onMouseEnter","onMouseLeave","undefined","style","zIndex","length","message","Button","size","square","onClick","dismiss"],"mappings":"wvBAcM,SAAUA,EAAUC,GACxB,MAAMC,MAAEA,EAAQ,GAAEC,OAAEA,EAASD,KAAUE,GAASH,EAChD,OACEI,EAAA,MAAA,CACEC,KAAK,OACLC,OAAO,eACPC,YAAY,IACZC,cAAc,QACdC,eAAe,WACXN,EACJO,MAAM,6BACNC,QAAQ,YACRV,MAAOA,EACPC,OAAQA,EAAMU,SAAA,CAEdC,UAAMC,EAAE,eACRD,EAAA,OAAA,CAAMC,EAAE,iBAGd,CAoBM,SAAUC,EAAQf,GACtB,MACEgB,gBAAiBA,EAAkB,YAAWC,QAC9CA,EAAU,GAAEC,aACZA,EAAe,IAAGC,cAClBA,EAAgB,GACdnB,GACGoB,EAAQC,GAAaC,EAAkB,KAEvCC,EAAYC,GAAiBF,EAAsB,IAAIG,KA0B9D,OAxBAC,EAAU,IACDC,EAAUN,EAAWF,GAC3B,IAEHO,EAAU,KAERE,EAAsB,CAACC,EAAIC,KAEzBN,EAAeO,IACb,GAAIA,EAAKC,IAAIH,GAAK,OAAOE,EACzB,MAAME,EAAO,IAAIR,IAAIM,GAAMG,IAAIL,GAS/B,OARAM,WAAW,KACTL,IACAN,EAAeY,IACb,MAAMC,EAAI,IAAIZ,IAAIW,GAElB,OADAC,EAAEC,OAAOT,GACFQ,KAERnB,GACIe,OAGV,CAACf,IAGFL,EAAA,MAAA,CAAK0B,UAAWC,EAAOC,KAAI7B,SACxBQ,EAAOsB,IAAI,CAACC,EAAGC,IACd/B,EAACgC,EAAc,CAEbC,MAAOH,EACP3B,gBAAiBA,EACjBO,WAAYA,EACZN,QAASA,EACTG,OAAQA,EACR2B,MAAOH,GANFD,EAAEd,MAWjB,CACA,SAASgB,GAAeC,MACtBA,EAAK9B,gBACLA,EAAeO,WACfA,EAAUN,QACVA,EAAOG,OACPA,EAAM2B,MACNA,IASA,MAAOC,EAAGC,IAAMH,EAAMI,UAAYlC,GAAiBmC,MAAM,MAClDC,EAAYC,GAAiB/B,GAAS,GAG7C,OAFAgC,QAAQC,IAAI,CAAET,UAGZ1C,EAACoD,EAAS,CAERjB,UAAWC,EAAOM,MAAK,aACXE,EAAC,aACDC,eACAH,EAAMW,MAClBC,aAAc,IAAML,GAAc,GAClCM,aAAc,IAAMN,GAAc,GAAM,kBACvB9B,EAAWS,IAAIc,EAAMjB,IAAM,QAAK+B,EACjDC,MACE,CACE,SAAad,EAAQ9B,EAAX,KACV6C,OAAQV,EAAahC,EAAO2C,OAAS,OAAIH,GACzBhD,SAAA,CAGpBC,mBAAOiC,EAAMkB,UAEbnD,EAACoD,EAAM,CAACC,KAAK,KAAKC,QAAM,EAACC,QAAS,IAAMC,EAAQvB,EAAMjB,IAAGjB,SACvDC,EAACd,EAAS,CAAA,OAlBP+C,EAAMjB,GAsBjB"}
@@ -0,0 +1,2 @@
1
+ var o={root:"Toaster-module_root__jkhXJ",toast:"Toaster-module_toast__fX24q"};export{o as default};
2
+ //# sourceMappingURL=Toaster.module.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Toaster.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -1,12 +1,19 @@
1
+ import type { PositionStringEdge } from "@studiocubics/types";
1
2
  export type Toast = {
2
3
  id: string;
3
4
  message: string;
4
5
  duration?: number;
6
+ position?: PositionStringEdge;
7
+ color?: "primary" | "secondary" | "error";
5
8
  };
9
+ export type ToastOptions = Omit<Toast, "id" | "message">;
6
10
  type Listener = (toasts: Toast[]) => void;
7
- export declare function subscribe(listener: Listener): () => boolean;
8
- export declare function toast(message: string, options?: {
9
- duration?: number;
10
- }): void;
11
+ declare let dismissInterceptor: ((id: string, confirm: () => void) => void) | null;
12
+ export declare function subscribe(listener: Listener, max: number): () => void;
13
+ /** Registered by Toaster so it can play the exit animation before removal */
14
+ export declare function addDismissInterceptor(fn: typeof dismissInterceptor): void;
15
+ export declare function toast(message: string, options?: ToastOptions): void;
11
16
  export declare function dismiss(id: string): void;
17
+ /** Actually removes the toast from state — called after exit animation completes */
18
+ export declare function confirmDismiss(id: string): void;
12
19
  export {};
@@ -1,2 +1,2 @@
1
- let t=[];const n=new Set;function e(){n.forEach(n=>n(t))}function o(t){return n.add(t),()=>n.delete(t)}function i(n,o){const i=crypto.randomUUID(),d={id:i,message:n,duration:o?.duration??3e3};t=[...t,d],e(),d.duration<=2e4&&setTimeout(()=>{r(i)},d.duration)}function r(n){t=t.filter(t=>t.id!==n),e()}export{r as dismiss,o as subscribe,i as toast};
1
+ let n=[],t=3;const o=new Set;let e=null;function i(){o.forEach(t=>t(n))}function c(n,e){return o.add(n),t=e,()=>{o.delete(n)}}function u(n){e=n}function l(o,e){const c=crypto.randomUUID();console.log({message:o,options:e});const u={id:c,message:o,duration:2e4,...e};if(n=[...n,u],n.length>t){n.slice(0,n.length-t).forEach(n=>r(n.id))}i(),u.duration<=2e4&&setTimeout(()=>{r(c)},u.duration)}function r(n){e?e(n,()=>s(n)):s(n)}function s(t){n=n.filter(n=>n.id!==t),i()}export{u as addDismissInterceptor,s as confirmDismiss,r as dismiss,c as subscribe,l as toast};
2
2
  //# sourceMappingURL=toast.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"toast.js","sources":["../../../src/Display/Toast/toast.ts"],"sourcesContent":["export type Toast = {\n id: string;\n message: string;\n duration?: number;\n};\n\ntype Listener = (toasts: Toast[]) => void;\n\nlet toasts: Toast[] = [];\nconst listeners = new Set<Listener>();\n\nfunction emit() {\n listeners.forEach((l) => l(toasts));\n}\n\nexport function subscribe(listener: Listener) {\n listeners.add(listener);\n return () => listeners.delete(listener);\n}\n\nexport function toast(message: string, options?: { duration?: number }) {\n const id = crypto.randomUUID();\n\n const t: Required<Toast> = {\n id,\n message,\n duration: options?.duration ?? 3000,\n };\n\n toasts = [...toasts, t];\n emit();\n\n // Its a toast not a lecture!\n if (t.duration <= 20000) {\n setTimeout(() => {\n dismiss(id);\n }, t.duration);\n }\n}\n\nexport function dismiss(id: string) {\n toasts = toasts.filter((t) => t.id !== id);\n emit();\n}\n"],"names":["toasts","listeners","Set","emit","forEach","l","subscribe","listener","add","delete","toast","message","options","id","crypto","randomUUID","t","duration","setTimeout","dismiss","filter"],"mappings":"AAQA,IAAIA,EAAkB,GACtB,MAAMC,EAAY,IAAIC,IAEtB,SAASC,IACPF,EAAUG,QAASC,GAAMA,EAAEL,GAC7B,CAEM,SAAUM,EAAUC,GAExB,OADAN,EAAUO,IAAID,GACP,IAAMN,EAAUQ,OAAOF,EAChC,CAEM,SAAUG,EAAMC,EAAiBC,GACrC,MAAMC,EAAKC,OAAOC,aAEZC,EAAqB,CACzBH,KACAF,UACAM,SAAUL,GAASK,UAAY,KAGjCjB,EAAS,IAAIA,EAAQgB,GACrBb,IAGIa,EAAEC,UAAY,KAChBC,WAAW,KACTC,EAAQN,IACPG,EAAEC,SAET,CAEM,SAAUE,EAAQN,GACtBb,EAASA,EAAOoB,OAAQJ,GAAMA,EAAEH,KAAOA,GACvCV,GACF"}
1
+ {"version":3,"file":"toast.js","sources":["../../../src/Display/Toast/toast.ts"],"sourcesContent":["import type { PositionStringEdge } from \"@studiocubics/types\";\n\nexport type Toast = {\n id: string;\n message: string;\n duration?: number;\n position?: PositionStringEdge;\n color?: \"primary\" | \"secondary\" | \"error\";\n};\nexport type ToastOptions = Omit<Toast, \"id\" | \"message\">;\ntype Listener = (toasts: Toast[]) => void;\n\nlet toasts: Toast[] = [];\nlet maxToastCount = 3; // adjust as needed\n\nconst listeners = new Set<Listener>();\n// Called before actually removing a toast, set by Toaster to trigger exit animation\nlet dismissInterceptor: ((id: string, confirm: () => void) => void) | null =\n null;\n\nfunction emit() {\n listeners.forEach((l) => l(toasts));\n}\n\nexport function subscribe(listener: Listener, max: number) {\n listeners.add(listener);\n maxToastCount = max;\n return () => {\n listeners.delete(listener);\n };\n}\n\n/** Registered by Toaster so it can play the exit animation before removal */\nexport function addDismissInterceptor(fn: typeof dismissInterceptor) {\n dismissInterceptor = fn;\n}\n\nexport function toast(message: string, options?: ToastOptions) {\n const id = crypto.randomUUID();\n\n console.log({ message, options });\n\n const t = {\n id,\n message,\n duration: 20000,\n ...options,\n };\n\n toasts = [...toasts, t];\n\n // Remove oldest toasts if over the limit\n if (toasts.length > maxToastCount) {\n const overflow = toasts.slice(0, toasts.length - maxToastCount);\n overflow.forEach((old) => dismiss(old.id));\n }\n\n emit();\n\n // Its a toast not a lecture!\n if (t.duration <= 20000) {\n setTimeout(() => {\n dismiss(id);\n }, t.duration);\n }\n}\n\nexport function dismiss(id: string) {\n if (dismissInterceptor) {\n // calls confirmDismiss when animation is done\n dismissInterceptor(id, () => confirmDismiss(id));\n } else {\n confirmDismiss(id);\n }\n}\n\n/** Actually removes the toast from state — called after exit animation completes */\nexport function confirmDismiss(id: string) {\n toasts = toasts.filter((t) => t.id !== id);\n emit();\n}\n"],"names":["toasts","maxToastCount","listeners","Set","dismissInterceptor","emit","forEach","l","subscribe","listener","max","add","delete","addDismissInterceptor","fn","toast","message","options","id","crypto","randomUUID","console","log","t","duration","length","slice","old","dismiss","setTimeout","confirmDismiss","filter"],"mappings":"AAYA,IAAIA,EAAkB,GAClBC,EAAgB,EAEpB,MAAMC,EAAY,IAAIC,IAEtB,IAAIC,EACF,KAEF,SAASC,IACPH,EAAUI,QAASC,GAAMA,EAAEP,GAC7B,CAEM,SAAUQ,EAAUC,EAAoBC,GAG5C,OAFAR,EAAUS,IAAIF,GACdR,EAAgBS,EACT,KACLR,EAAUU,OAAOH,GAErB,CAGM,SAAUI,EAAsBC,GACpCV,EAAqBU,CACvB,CAEM,SAAUC,EAAMC,EAAiBC,GACrC,MAAMC,EAAKC,OAAOC,aAElBC,QAAQC,IAAI,CAAEN,UAASC,YAEvB,MAAMM,EAAI,CACRL,KACAF,UACAQ,SAAU,OACPP,GAML,GAHAjB,EAAS,IAAIA,EAAQuB,GAGjBvB,EAAOyB,OAASxB,EAAe,CAChBD,EAAO0B,MAAM,EAAG1B,EAAOyB,OAASxB,GACxCK,QAASqB,GAAQC,EAAQD,EAAIT,IACxC,CAEAb,IAGIkB,EAAEC,UAAY,KAChBK,WAAW,KACTD,EAAQV,IACPK,EAAEC,SAET,CAEM,SAAUI,EAAQV,GAClBd,EAEFA,EAAmBc,EAAI,IAAMY,EAAeZ,IAE5CY,EAAeZ,EAEnB,CAGM,SAAUY,EAAeZ,GAC7BlB,EAASA,EAAO+B,OAAQR,GAAMA,EAAEL,KAAOA,GACvCb,GACF"}
@@ -1,2 +1,2 @@
1
- "use client";import{jsxs as r,Fragment as o,jsx as t}from"react/jsx-runtime";import{useMemo as e,Children as i,useEffect as n,isValidElement as m,cloneElement as c}from"react";import{createPortal as s}from"react-dom";import{useTooltip as l}from"./useTooltip.js";import p from"./Tooltip.module.css.js";import a from"./getArrowDirection.js";import{cn as f}from"@studiocubics/utils";function d({title:d,children:u,renderArrow:h=!1,anchorOrigin:g,transformOrigin:w,margin:b}){const x=e(()=>({anchorOrigin:g??"bottom center",transformOrigin:w??"top center",margin:b??8}),[g,w,b]),{anchorRef:j,showTooltip:y,tooltipRef:O,position:T,updatePosition:$}=l(x),v=h?a(g??"bottom center",w??"top center"):null,A=i.only(u);return n(()=>{y&&$()},[d,y,$]),d?r(o,{children:[y&&s(t("div",{className:f(p.root,h&&v?p[`arrow-${v}`]:""),ref:O,style:{left:`${T.x}px`,top:`${T.y}px`},children:d}),document.body),(()=>{if(m(A))return c(A,{ref:j});throw new Error("Children passed to Tooltip should be a valid react element")})()]}):A}export{d as Tooltip};
1
+ "use client";import{jsxs as r,Fragment as o,jsx as t}from"react/jsx-runtime";import{useMemo as e,Children as i,useEffect as n,isValidElement as m,cloneElement as c}from"react";import{createPortal as s}from"react-dom";import{useTooltip as l}from"./useTooltip.js";import p from"./Tooltip.module.css.js";import a from"./getArrowDirection.js";import{cn as f}from"@studiocubics/utils";function d({title:d,children:u,renderArrow:h=!1,anchorOrigin:g,transformOrigin:w,margin:b}){const x=e(()=>({anchorOrigin:g??"bottom center",transformOrigin:w??"top center",margin:b??8}),[g,w,b]),{anchorRef:j,showTooltip:y,tooltipRef:O,position:T,updatePosition:$}=l(x),v=h?a(g??"bottom center",w??"top center"):null,A=i.only(u);return n(()=>{y&&$()},[d,y,$]),d?r(o,{children:[y&&s(t("div",{className:f(p.root,h&&v?p[`arrow_${v}`]:""),ref:O,style:{left:`${T.x}px`,top:`${T.y}px`},children:d}),document.body),(()=>{if(m(A))return c(A,{ref:j});throw new Error("Children passed to Tooltip should be a valid react element")})()]}):A}export{d as Tooltip};
2
2
  //# sourceMappingURL=Tooltip.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Tooltip.js","sources":["../../../src/Display/Tooltip/Tooltip.tsx"],"sourcesContent":["\"use client\";\n\nimport {\n Children,\n cloneElement,\n isValidElement,\n useEffect,\n useMemo,\n type ReactElement,\n type ReactNode,\n type RefObject,\n} from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { useTooltip } from \"./useTooltip\";\nimport styles from \"./Tooltip.module.css\";\nimport getArrowDirection from \"./getArrowDirection\";\nimport { cn, type SafePositionOptions } from \"@studiocubics/utils\";\n\nexport interface TooltipProps extends SafePositionOptions {\n title?: ReactNode;\n renderArrow?: boolean;\n children: ReactElement;\n}\n\nexport function Tooltip({\n title,\n children,\n renderArrow = false,\n anchorOrigin,\n transformOrigin,\n margin,\n}: TooltipProps) {\n const options = useMemo(() => {\n return {\n anchorOrigin: anchorOrigin ?? \"bottom center\",\n transformOrigin: transformOrigin ?? \"top center\",\n margin: margin ?? 8,\n };\n }, [anchorOrigin, transformOrigin, margin]);\n const { anchorRef, showTooltip, tooltipRef, position, updatePosition } =\n useTooltip(options);\n\n const direction = renderArrow\n ? getArrowDirection(\n anchorOrigin ?? \"bottom center\",\n transformOrigin ?? \"top center\"\n )\n : null;\n\n // Ensure only one child is passed\n const child = Children.only(children);\n\n const childWithRef = () => {\n if (isValidElement(child))\n return cloneElement(child, { ref: anchorRef } as {\n ref: RefObject<HTMLElement | null>;\n });\n else {\n throw new Error(\n \"Children passed to Tooltip should be a valid react element\"\n );\n }\n };\n\n useEffect(() => {\n if (showTooltip) updatePosition();\n }, [title, showTooltip, updatePosition]);\n\n if (!title) return child;\n\n return (\n <>\n {showTooltip &&\n createPortal(\n <div\n className={cn(\n styles.root,\n renderArrow && direction ? styles[`arrow-${direction}`] : \"\"\n )}\n ref={tooltipRef}\n style={{\n left: `${position.x}px`,\n top: `${position.y}px`,\n }}\n >\n {title}\n </div>,\n document.body\n )}\n {childWithRef()}\n </>\n );\n}\n"],"names":["Tooltip","title","children","renderArrow","anchorOrigin","transformOrigin","margin","options","useMemo","anchorRef","showTooltip","tooltipRef","position","updatePosition","useTooltip","direction","getArrowDirection","child","Children","only","useEffect","_jsxs","createPortal","_jsx","className","cn","styles","root","ref","style","left","x","top","y","document","body","isValidElement","cloneElement","Error","childWithRef"],"mappings":"qYAwBgBA,GAAQC,MACtBA,EAAKC,SACLA,EAAQC,YACRA,GAAc,EAAKC,aACnBA,EAAYC,gBACZA,EAAeC,OACfA,IAEA,MAAMC,EAAUC,EAAQ,KACf,CACLJ,aAAcA,GAAgB,gBAC9BC,gBAAiBA,GAAmB,aACpCC,OAAQA,GAAU,IAEnB,CAACF,EAAcC,EAAiBC,KAC7BG,UAAEA,EAASC,YAAEA,EAAWC,WAAEA,EAAUC,SAAEA,EAAQC,eAAEA,GACpDC,EAAWP,GAEPQ,EAAYZ,EACda,EACEZ,GAAgB,gBAChBC,GAAmB,cAErB,KAGEY,EAAQC,EAASC,KAAKjB,GAkB5B,OAJAkB,EAAU,KACJV,GAAaG,KAChB,CAACZ,EAAOS,EAAaG,IAEnBZ,EAGHoB,eACGX,GACCY,EACEC,EAAA,MAAA,CACEC,UAAWC,EACTC,EAAOC,KACPxB,GAAeY,EAAYW,EAAO,SAASX,KAAe,IAE5Da,IAAKjB,EACLkB,MAAO,CACLC,KAAM,GAAGlB,EAASmB,MAClBC,IAAK,GAAGpB,EAASqB,OAClB/B,SAEAD,IAEHiC,SAASC,MAnCI,MACnB,GAAIC,EAAenB,GACjB,OAAOoB,EAAapB,EAAO,CAAEW,IAAKnB,IAIlC,MAAM,IAAI6B,MACR,+DA8BDC,MArBctB,CAwBrB"}
1
+ {"version":3,"file":"Tooltip.js","sources":["../../../src/Display/Tooltip/Tooltip.tsx"],"sourcesContent":["\"use client\";\n\nimport {\n Children,\n cloneElement,\n isValidElement,\n useEffect,\n useMemo,\n type ReactElement,\n type ReactNode,\n type RefObject,\n} from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { useTooltip } from \"./useTooltip\";\nimport styles from \"./Tooltip.module.css\";\nimport getArrowDirection from \"./getArrowDirection\";\nimport { cn, type SafePositionOptions } from \"@studiocubics/utils\";\n\nexport interface TooltipProps extends SafePositionOptions {\n title?: ReactNode;\n renderArrow?: boolean;\n children: ReactElement;\n}\n\nexport function Tooltip({\n title,\n children,\n renderArrow = false,\n anchorOrigin,\n transformOrigin,\n margin,\n}: TooltipProps) {\n const options = useMemo(() => {\n return {\n anchorOrigin: anchorOrigin ?? \"bottom center\",\n transformOrigin: transformOrigin ?? \"top center\",\n margin: margin ?? 8,\n };\n }, [anchorOrigin, transformOrigin, margin]);\n const { anchorRef, showTooltip, tooltipRef, position, updatePosition } =\n useTooltip(options);\n\n const direction = renderArrow\n ? getArrowDirection(\n anchorOrigin ?? \"bottom center\",\n transformOrigin ?? \"top center\"\n )\n : null;\n\n // Ensure only one child is passed\n const child = Children.only(children);\n\n const childWithRef = () => {\n if (isValidElement(child))\n return cloneElement(child, { ref: anchorRef } as {\n ref: RefObject<HTMLElement | null>;\n });\n else {\n throw new Error(\n \"Children passed to Tooltip should be a valid react element\"\n );\n }\n };\n\n useEffect(() => {\n if (showTooltip) updatePosition();\n }, [title, showTooltip, updatePosition]);\n\n if (!title) return child;\n\n return (\n <>\n {showTooltip &&\n createPortal(\n <div\n className={cn(\n styles.root,\n renderArrow && direction ? styles[`arrow_${direction}`] : \"\"\n )}\n ref={tooltipRef}\n style={{\n left: `${position.x}px`,\n top: `${position.y}px`,\n }}\n >\n {title}\n </div>,\n document.body\n )}\n {childWithRef()}\n </>\n );\n}\n"],"names":["Tooltip","title","children","renderArrow","anchorOrigin","transformOrigin","margin","options","useMemo","anchorRef","showTooltip","tooltipRef","position","updatePosition","useTooltip","direction","getArrowDirection","child","Children","only","useEffect","_jsxs","createPortal","_jsx","className","cn","styles","root","ref","style","left","x","top","y","document","body","isValidElement","cloneElement","Error","childWithRef"],"mappings":"qYAwBgBA,GAAQC,MACtBA,EAAKC,SACLA,EAAQC,YACRA,GAAc,EAAKC,aACnBA,EAAYC,gBACZA,EAAeC,OACfA,IAEA,MAAMC,EAAUC,EAAQ,KACf,CACLJ,aAAcA,GAAgB,gBAC9BC,gBAAiBA,GAAmB,aACpCC,OAAQA,GAAU,IAEnB,CAACF,EAAcC,EAAiBC,KAC7BG,UAAEA,EAASC,YAAEA,EAAWC,WAAEA,EAAUC,SAAEA,EAAQC,eAAEA,GACpDC,EAAWP,GAEPQ,EAAYZ,EACda,EACEZ,GAAgB,gBAChBC,GAAmB,cAErB,KAGEY,EAAQC,EAASC,KAAKjB,GAkB5B,OAJAkB,EAAU,KACJV,GAAaG,KAChB,CAACZ,EAAOS,EAAaG,IAEnBZ,EAGHoB,eACGX,GACCY,EACEC,EAAA,MAAA,CACEC,UAAWC,EACTC,EAAOC,KACPxB,GAAeY,EAAYW,EAAO,SAASX,KAAe,IAE5Da,IAAKjB,EACLkB,MAAO,CACLC,KAAM,GAAGlB,EAASmB,MAClBC,IAAK,GAAGpB,EAASqB,OAClB/B,SAEAD,IAEHiC,SAASC,MAnCI,MACnB,GAAIC,EAAenB,GACjB,OAAOoB,EAAapB,EAAO,CAAEW,IAAKnB,IAIlC,MAAM,IAAI6B,MACR,+DA8BDC,MArBctB,CAwBrB"}
@@ -1,2 +1,2 @@
1
- var o={root:"Tooltip-module_root__nip6a","arrow-bottom":"Tooltip-module_arrow-bottom__CuvK2","arrow-top":"Tooltip-module_arrow-top__XaUyR","arrow-right":"Tooltip-module_arrow-right__O1HnI","arrow-left":"Tooltip-module_arrow-left__4o1J4","arrow-topLeft":"Tooltip-module_arrow-topLeft__WyNAm","arrow-topRight":"Tooltip-module_arrow-topRight__-ILdh","arrow-bottomLeft":"Tooltip-module_arrow-bottomLeft__E6w40","arrow-bottomRight":"Tooltip-module_arrow-bottomRight__mefBZ"};export{o as default};
1
+ var o={root:"Tooltip-module_root__nip6a",arrow_bottom:"Tooltip-module_arrow_bottom__9gsgJ",arrow_top:"Tooltip-module_arrow_top__w9xkd",arrow_right:"Tooltip-module_arrow_right__5XexK",arrow_left:"Tooltip-module_arrow_left__DB9W9",arrow_topLeft:"Tooltip-module_arrow_topLeft__6gV4I",arrow_topRight:"Tooltip-module_arrow_topRight__L5URY",arrow_bottomLeft:"Tooltip-module_arrow_bottomLeft__igebI",arrow_bottomRight:"Tooltip-module_arrow_bottomRight__iDyHl"};export{o as default};
2
2
  //# sourceMappingURL=Tooltip.module.css.js.map
@@ -1,2 +1,2 @@
1
- import{jsxs as t,jsx as i}from"react/jsx-runtime";import n from"./ConfirmationForm.module.css.js";import{cn as o}from"@studiocubics/utils";import{Button as e}from"../../Inputs/Button/Button.js";function r(r){const{onCancel:a,formTitle:c,variant:s="info",confirmText:l="Confirm",cancelText:d="Cancel",disabled:m,size:u="lg",slotProps:f={},className:p,children:b,...h}=r;return t("form",{"aria-disabled":m,className:o(n.root,p,n[`size_${u}`],n[s]),...h,children:[i("h4",{children:c}),b,t("div",{className:n.actions,children:[i(e,{variant:"danger"==s?"contained":"text",disabled:m,type:"button",onClick:()=>a?.(),size:f.cancelButton?.size||u,...f.cancelButton,children:d}),i(e,{disabled:m,variant:"danger"==s?"text":"contained",color:"danger"==s?"error":void 0,type:"submit",size:f.confirmButton?.size||u,...f.confirmButton,children:l})]})]})}export{r as ConfirmationForm};
1
+ import{jsxs as t,jsx as i}from"react/jsx-runtime";import n from"./ConfirmationForm.module.css.js";import{cn as o}from"@studiocubics/utils";import{Button as e}from"../../Inputs/Button/Button.js";function r(r){const{onCancel:a,formTitle:c,variant:s="info",confirmText:d="Confirm",cancelText:l="Cancel",disabled:m,size:u="md",slotProps:f={},className:p,children:b,...h}=r;return t("form",{"aria-disabled":m,className:o(n.root,p,n[`size_${u}`],n[s]),...h,children:[i("h4",{children:c}),b,t("div",{className:n.actions,children:[i(e,{variant:"danger"==s?"contained":"text",disabled:m,type:"button",onClick:()=>a?.(),size:f.cancelButton?.size||u,...f.cancelButton,children:l}),i(e,{disabled:m,variant:"danger"==s?"text":"contained",color:"danger"==s?"error":void 0,type:"submit",size:f.confirmButton?.size||u,...f.confirmButton,children:d})]})]})}export{r as ConfirmationForm};
2
2
  //# sourceMappingURL=ConfirmationForm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ConfirmationForm.js","sources":["../../../src/Forms/ConfirmationForm/ConfirmationForm.tsx"],"sourcesContent":["import type { ComponentProps } from \"react\";\nimport styles from \"./ConfirmationForm.module.css\";\nimport { cn } from \"@studiocubics/utils\";\nimport { Button, type ButtonProps } from \"../../Inputs/Button/Button\";\nexport interface ConfirmationFormProps extends ComponentProps<\"form\"> {\n formTitle?: string;\n onCancel?: () => void;\n variant?: \"danger\" | \"info\";\n confirmText?: string;\n cancelText?: string;\n disabled?: boolean;\n size?: \"sm\" | \"md\" | \"lg\";\n slotProps?: {\n confirmButton?: ButtonProps;\n cancelButton?: ButtonProps;\n };\n}\nexport function ConfirmationForm(props: ConfirmationFormProps) {\n const {\n onCancel,\n formTitle,\n variant = \"info\",\n confirmText = \"Confirm\",\n cancelText = \"Cancel\",\n disabled,\n size = \"lg\",\n slotProps = {},\n className,\n children,\n ...rest\n } = props;\n return (\n <form\n aria-disabled={disabled}\n className={cn(\n styles.root,\n className,\n styles[`size_${size}`],\n styles[variant],\n )}\n {...rest}\n >\n <h4>{formTitle}</h4>\n {children}\n <div className={styles.actions}>\n <Button\n variant={variant == \"danger\" ? \"contained\" : \"text\"}\n disabled={disabled}\n type=\"button\"\n onClick={() => onCancel?.()}\n size={slotProps.cancelButton?.size || size}\n {...slotProps.cancelButton}\n >\n {cancelText}\n </Button>\n <Button\n disabled={disabled}\n variant={variant == \"danger\" ? \"text\" : \"contained\"}\n color={variant == \"danger\" ? \"error\" : undefined}\n type=\"submit\"\n size={slotProps.confirmButton?.size || size}\n {...slotProps.confirmButton}\n >\n {confirmText}\n </Button>\n </div>\n </form>\n );\n}\n"],"names":["ConfirmationForm","props","onCancel","formTitle","variant","confirmText","cancelText","disabled","size","slotProps","className","children","rest","_jsxs","cn","styles","root","_jsx","actions","Button","type","onClick","cancelButton","color","undefined","confirmButton"],"mappings":"kMAiBM,SAAUA,EAAiBC,GAC/B,MAAMC,SACJA,EAAQC,UACRA,EAASC,QACTA,EAAU,OAAMC,YAChBA,EAAc,UAASC,WACvBA,EAAa,SAAQC,SACrBA,EAAQC,KACRA,EAAO,KAAIC,UACXA,EAAY,CAAA,EAAEC,UACdA,EAASC,SACTA,KACGC,GACDX,EACJ,OACEY,EAAA,OAAA,CAAA,gBACiBN,EACfG,UAAWI,EACTC,EAAOC,KACPN,EACAK,EAAO,QAAQP,KACfO,EAAOX,OAELQ,YAEJK,EAAA,KAAA,CAAAN,SAAKR,IACJQ,EACDE,EAAA,MAAA,CAAKH,UAAWK,EAAOG,QAAOP,SAAA,CAC5BM,EAACE,EAAM,CACLf,QAAoB,UAAXA,EAAsB,YAAc,OAC7CG,SAAUA,EACVa,KAAK,SACLC,QAAS,IAAMnB,MACfM,KAAMC,EAAUa,cAAcd,MAAQA,KAClCC,EAAUa,aAAYX,SAEzBL,IAEHW,EAACE,EAAM,CACLZ,SAAUA,EACVH,QAAoB,UAAXA,EAAsB,OAAS,YACxCmB,MAAkB,UAAXnB,EAAsB,aAAUoB,EACvCJ,KAAK,SACLZ,KAAMC,EAAUgB,eAAejB,MAAQA,KACnCC,EAAUgB,uBAEbpB,SAKX"}
1
+ {"version":3,"file":"ConfirmationForm.js","sources":["../../../src/Forms/ConfirmationForm/ConfirmationForm.tsx"],"sourcesContent":["import type { ComponentProps } from \"react\";\nimport styles from \"./ConfirmationForm.module.css\";\nimport { cn } from \"@studiocubics/utils\";\nimport { Button, type ButtonProps } from \"../../Inputs/Button/Button\";\nexport interface ConfirmationFormProps extends ComponentProps<\"form\"> {\n formTitle?: string;\n onCancel?: () => void;\n variant?: \"danger\" | \"info\";\n confirmText?: string;\n cancelText?: string;\n disabled?: boolean;\n size?: \"sm\" | \"md\" | \"lg\";\n slotProps?: {\n confirmButton?: ButtonProps;\n cancelButton?: ButtonProps;\n };\n}\nexport function ConfirmationForm(props: ConfirmationFormProps) {\n const {\n onCancel,\n formTitle,\n variant = \"info\",\n confirmText = \"Confirm\",\n cancelText = \"Cancel\",\n disabled,\n size = \"md\",\n slotProps = {},\n className,\n children,\n ...rest\n } = props;\n return (\n <form\n aria-disabled={disabled}\n className={cn(\n styles.root,\n className,\n styles[`size_${size}`],\n styles[variant],\n )}\n {...rest}\n >\n <h4>{formTitle}</h4>\n {children}\n <div className={styles.actions}>\n <Button\n variant={variant == \"danger\" ? \"contained\" : \"text\"}\n disabled={disabled}\n type=\"button\"\n onClick={() => onCancel?.()}\n size={slotProps.cancelButton?.size || size}\n {...slotProps.cancelButton}\n >\n {cancelText}\n </Button>\n <Button\n disabled={disabled}\n variant={variant == \"danger\" ? \"text\" : \"contained\"}\n color={variant == \"danger\" ? \"error\" : undefined}\n type=\"submit\"\n size={slotProps.confirmButton?.size || size}\n {...slotProps.confirmButton}\n >\n {confirmText}\n </Button>\n </div>\n </form>\n );\n}\n"],"names":["ConfirmationForm","props","onCancel","formTitle","variant","confirmText","cancelText","disabled","size","slotProps","className","children","rest","_jsxs","cn","styles","root","_jsx","actions","Button","type","onClick","cancelButton","color","undefined","confirmButton"],"mappings":"kMAiBM,SAAUA,EAAiBC,GAC/B,MAAMC,SACJA,EAAQC,UACRA,EAASC,QACTA,EAAU,OAAMC,YAChBA,EAAc,UAASC,WACvBA,EAAa,SAAQC,SACrBA,EAAQC,KACRA,EAAO,KAAIC,UACXA,EAAY,CAAA,EAAEC,UACdA,EAASC,SACTA,KACGC,GACDX,EACJ,OACEY,EAAA,OAAA,CAAA,gBACiBN,EACfG,UAAWI,EACTC,EAAOC,KACPN,EACAK,EAAO,QAAQP,KACfO,EAAOX,OAELQ,YAEJK,EAAA,KAAA,CAAAN,SAAKR,IACJQ,EACDE,EAAA,MAAA,CAAKH,UAAWK,EAAOG,QAAOP,SAAA,CAC5BM,EAACE,EAAM,CACLf,QAAoB,UAAXA,EAAsB,YAAc,OAC7CG,SAAUA,EACVa,KAAK,SACLC,QAAS,IAAMnB,MACfM,KAAMC,EAAUa,cAAcd,MAAQA,KAClCC,EAAUa,aAAYX,SAEzBL,IAEHW,EAACE,EAAM,CACLZ,SAAUA,EACVH,QAAoB,UAAXA,EAAsB,OAAS,YACxCmB,MAAkB,UAAXnB,EAAsB,aAAUoB,EACvCJ,KAAK,SACLZ,KAAMC,EAAUgB,eAAejB,MAAQA,KACnCC,EAAUgB,uBAEbpB,SAKX"}
@@ -1,2 +1,2 @@
1
- import{jsxs as t,jsx as o}from"react/jsx-runtime";import{Button as r}from"../Button/Button.js";import{cn as e}from"@studiocubics/utils";import n from"./CloseButton.module.css.js";function s(r){const{width:e=24,height:n=e,...s}=r;return t("svg",{fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",...s,xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",width:e,height:n,children:[o("path",{d:"M18 6 6 18"}),o("path",{d:"m6 6 12 12"})]})}function i(t){const{className:i,...u}=t;return o(r,{square:!0,className:e(n.root,i),...u,children:o(s,{})})}export{i as CloseButton,s as CloseIcon};
1
+ import{jsx as t,jsxs as o}from"react/jsx-runtime";import{Button as r}from"../Button/Button.js";import{cn as e}from"@studiocubics/utils";import n from"./CloseButton.module.css.js";function s(r){const{width:e=24,height:n=e,...s}=r;return o("svg",{fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",...s,xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",width:e,height:n,children:[t("path",{d:"M18 6 6 18"}),t("path",{d:"m6 6 12 12"})]})}function i(o){const{className:i,...u}=o;return t(r,{square:!0,className:e(n.root,i),...u,children:t(s,{})})}export{i as CloseButton,s as CloseIcon};
2
2
  //# sourceMappingURL=CloseButton.js.map
@@ -1,6 +1,8 @@
1
1
  import { type TextInputProps } from "./TextInput/TextInput";
2
- export declare function ReadTimeInput(props: {
3
- value: string;
4
- onChange: (v: string) => void;
5
- separator?: string;
6
- } & Omit<TextInputProps, "onChange" | "value">): import("react/jsx-runtime").JSX.Element;
2
+ export declare const ReadTimeInputSeparator = " ";
3
+ export interface ReadTimeInputProps {
4
+ value?: string;
5
+ defaultValue?: string;
6
+ onChange?: (v: string) => void;
7
+ }
8
+ export declare function ReadTimeInput(props: ReadTimeInputProps & Omit<TextInputProps, "onChange" | "value" | "defaultValue">): import("react/jsx-runtime").JSX.Element;
@@ -1,2 +1,2 @@
1
- "use client";import{jsx as e}from"react/jsx-runtime";import{useState as t,useEffect as n}from"react";import{TextInput as r}from"./TextInput/TextInput.js";import{Select as o}from"./Select/Select.js";const a=["Second","Minute","Hour"];function u(u){const{value:i,onChange:c,separator:l=" ",...p}=u,m=i.split(l),[s,v]=t(m[0]),[$,f]=t(m[1]?.replace(/s$/i,"")??"Minute"),g=1!==Number(s);return n(()=>{c(`${s}${l}${$}${g?"s":""}`)},[s,$,l,c,g]),e(r,{...p,type:"number",value:s,onChange:e=>v(e.target.value),endIcon:e(o,{value:$,onChange:e=>f(e.target.value),children:a.map(t=>e("option",{value:t,children:g?t:`${t}s`},t))})})}export{u as ReadTimeInput};
1
+ "use client";import{jsxs as e,Fragment as t,jsx as n}from"react/jsx-runtime";import{useState as r,useEffect as a}from"react";import{TextInput as u}from"./TextInput/TextInput.js";import{Select as o}from"./Select/Select.js";const i=["Second","Minute","Hour"],l=" ";function c(l){const{value:c,defaultValue:s,name:d,onChange:m,disabled:p,...f}=l,[h,v]=r(""),g=c??h,b=function(e){const t=e?.split(" ");return{num:t?.[0]??"",unit:t?.[1]?.replace(/s$/i,"")??"Minute"}}(g??s),[$,x]=r(b.num),[y,C]=r(b.unit),j=Number($)>1;return a(()=>{const e=$?`${$} ${y}${j?"s":""}`:"";v(e),m?.(e)},[$,y,m,j]),e(t,{children:[d&&n("input",{hidden:!0,value:g,name:d,onChange:e=>m?.($?e.target.value:"")}),n(u,{...f,type:"number",value:$,disabled:p,onChange:e=>x(e.target.value),onKeyDown:e=>{/^\d$/.test(e.key)||["Backspace","Delete","ArrowLeft","ArrowRight","Tab"].includes(e.key)||e.preventDefault()},endIcon:n(o,{value:y,disabled:p,onChange:e=>C(e.target.value),children:i.map(e=>n("option",{value:e,children:j?`${e}s`:e},e))})})]})}export{c as ReadTimeInput,l as ReadTimeInputSeparator};
2
2
  //# sourceMappingURL=ReadTimeInput.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ReadTimeInput.js","sources":["../../src/Inputs/ReadTimeInput.tsx"],"sourcesContent":["\"use client\";\n\nimport { useEffect, useState } from \"react\";\nimport { TextInput, type TextInputProps } from \"./TextInput/TextInput\";\nimport { Select } from \"./Select/Select\";\n\nconst UNITS = [\"Second\", \"Minute\", \"Hour\"];\n\nexport function ReadTimeInput(\n props: {\n value: string;\n onChange: (v: string) => void;\n separator?: string;\n } & Omit<TextInputProps, \"onChange\" | \"value\">,\n) {\n const { value, onChange, separator = \" \", ...rest } = props;\n const initial = value.split(separator);\n const [num, setNum] = useState(initial[0]);\n const [unit, setUnit] = useState(initial[1]?.replace(/s$/i, \"\") ?? \"Minute\");\n\n const plural = Number(num) !== 1;\n\n useEffect(() => {\n onChange(`${num}${separator}${unit}${plural ? \"s\" : \"\"}`);\n }, [num, unit, separator, onChange, plural]);\n\n return (\n <TextInput\n {...rest}\n type=\"number\"\n value={num}\n onChange={(e) => setNum(e.target.value)}\n endIcon={\n <Select value={unit} onChange={(e) => setUnit(e.target.value)}>\n {UNITS.map((u) => (\n <option key={u} value={u}>\n {plural ? u : `${u}s`}\n </option>\n ))}\n </Select>\n }\n />\n );\n}\n"],"names":["UNITS","ReadTimeInput","props","value","onChange","separator","rest","initial","split","num","setNum","useState","unit","setUnit","replace","plural","Number","useEffect","_jsx","TextInput","type","e","target","endIcon","Select","children","map","u"],"mappings":"sMAMA,MAAMA,EAAQ,CAAC,SAAU,SAAU,QAE7B,SAAUC,EACdC,GAMA,MAAMC,MAAEA,EAAKC,SAAEA,EAAQC,UAAEA,EAAY,OAAQC,GAASJ,EAChDK,EAAUJ,EAAMK,MAAMH,IACrBI,EAAKC,GAAUC,EAASJ,EAAQ,KAChCK,EAAMC,GAAWF,EAASJ,EAAQ,IAAIO,QAAQ,MAAO,KAAO,UAE7DC,EAAyB,IAAhBC,OAAOP,GAMtB,OAJAQ,EAAU,KACRb,EAAS,GAAGK,IAAMJ,IAAYO,IAAOG,EAAS,IAAM,OACnD,CAACN,EAAKG,EAAMP,EAAWD,EAAUW,IAGlCG,EAACC,MACKb,EACJc,KAAK,SACLjB,MAAOM,EACPL,SAAWiB,GAAMX,EAAOW,EAAEC,OAAOnB,OACjCoB,QACEL,EAACM,EAAM,CAACrB,MAAOS,EAAMR,SAAWiB,GAAMR,EAAQQ,EAAEC,OAAOnB,OAAMsB,SAC1DzB,EAAM0B,IAAKC,GACVT,EAAA,SAAA,CAAgBf,MAAOwB,EAACF,SACrBV,EAASY,EAAI,GAAGA,MADNA,OAQzB"}
1
+ {"version":3,"file":"ReadTimeInput.js","sources":["../../src/Inputs/ReadTimeInput.tsx"],"sourcesContent":["\"use client\";\n\nimport { useEffect, useState } from \"react\";\nimport { TextInput, type TextInputProps } from \"./TextInput/TextInput\";\nimport { Select } from \"./Select/Select\";\n\nconst UNITS = [\"Second\", \"Minute\", \"Hour\"];\n\nexport const ReadTimeInputSeparator = \" \";\n\nfunction parseValue(value?: string) {\n const parts = value?.split(ReadTimeInputSeparator);\n return {\n num: parts?.[0] ?? \"\",\n unit: parts?.[1]?.replace(/s$/i, \"\") ?? \"Minute\",\n };\n}\nexport interface ReadTimeInputProps {\n value?: string;\n defaultValue?: string;\n onChange?: (v: string) => void;\n}\n\nexport function ReadTimeInput(\n props: ReadTimeInputProps &\n Omit<TextInputProps, \"onChange\" | \"value\" | \"defaultValue\">,\n) {\n const {\n value: outerValue,\n defaultValue,\n name,\n onChange,\n disabled,\n ...rest\n } = props;\n const [innerValue, setInnerValue] = useState(\"\");\n const value = outerValue ?? innerValue;\n const initial = parseValue(value ?? defaultValue);\n\n const [num, setNum] = useState(initial.num);\n const [unit, setUnit] = useState(initial.unit);\n\n const plural = Number(num) > 1;\n\n useEffect(() => {\n const newValue = num\n ? `${num}${ReadTimeInputSeparator}${unit}${plural ? \"s\" : \"\"}`\n : \"\";\n setInnerValue(newValue);\n onChange?.(newValue);\n }, [num, unit, onChange, plural]);\n\n return (\n <>\n {name && (\n <input\n hidden\n value={value}\n name={name}\n onChange={(e) => onChange?.(num ? e.target.value : \"\")}\n />\n )}\n <TextInput\n {...rest}\n type=\"number\"\n value={num}\n disabled={disabled}\n onChange={(e) => setNum(e.target.value)}\n onKeyDown={(e) => {\n // Block anything that isn't a digit, backspace, delete, or arrow keys\n if (\n !/^\\d$/.test(e.key) &&\n ![\"Backspace\", \"Delete\", \"ArrowLeft\", \"ArrowRight\", \"Tab\"].includes(\n e.key,\n )\n ) {\n e.preventDefault();\n }\n }}\n endIcon={\n <Select\n value={unit}\n disabled={disabled}\n onChange={(e) => setUnit(e.target.value)}\n >\n {UNITS.map((u) => (\n <option key={u} value={u}>\n {!plural ? u : `${u}s`}\n </option>\n ))}\n </Select>\n }\n />\n </>\n );\n}\n"],"names":["UNITS","ReadTimeInputSeparator","ReadTimeInput","props","value","outerValue","defaultValue","name","onChange","disabled","rest","innerValue","setInnerValue","useState","initial","parts","split","num","unit","replace","parseValue","setNum","setUnit","plural","Number","useEffect","newValue","_jsxs","_Fragment","children","_jsx","hidden","e","target","TextInput","type","onKeyDown","test","key","includes","preventDefault","endIcon","Select","map","u"],"mappings":"8NAMA,MAAMA,EAAQ,CAAC,SAAU,SAAU,QAEtBC,EAAyB,IAehC,SAAUC,EACdC,GAGA,MACEC,MAAOC,EAAUC,aACjBA,EAAYC,KACZA,EAAIC,SACJA,EAAQC,SACRA,KACGC,GACDP,GACGQ,EAAYC,GAAiBC,EAAS,IACvCT,EAAQC,GAAcM,EACtBG,EA3BR,SAAoBV,GAClB,MAAMW,EAAQX,GAAOY,MAHe,KAIpC,MAAO,CACLC,IAAKF,IAAQ,IAAM,GACnBG,KAAMH,IAAQ,IAAII,QAAQ,MAAO,KAAO,SAE5C,CAqBkBC,CAAWhB,GAASE,IAE7BW,EAAKI,GAAUR,EAASC,EAAQG,MAChCC,EAAMI,GAAWT,EAASC,EAAQI,MAEnCK,EAASC,OAAOP,GAAO,EAU7B,OARAQ,EAAU,KACR,MAAMC,EAAWT,EACb,GAAGA,KAA+BC,IAAOK,EAAS,IAAM,KACxD,GACJX,EAAcc,GACdlB,IAAWkB,IACV,CAACT,EAAKC,EAAMV,EAAUe,IAGvBI,EAAAC,EAAA,CAAAC,SAAA,CACGtB,GACCuB,WACEC,QAAM,EACN3B,MAAOA,EACPG,KAAMA,EACNC,SAAWwB,GAAMxB,IAAWS,EAAMe,EAAEC,OAAO7B,MAAQ,MAGvD0B,EAACI,EAAS,IACJxB,EACJyB,KAAK,SACL/B,MAAOa,EACPR,SAAUA,EACVD,SAAWwB,GAAMX,EAAOW,EAAEC,OAAO7B,OACjCgC,UAAYJ,IAGP,OAAOK,KAAKL,EAAEM,MACd,CAAC,YAAa,SAAU,YAAa,aAAc,OAAOC,SACzDP,EAAEM,MAGJN,EAAEQ,kBAGNC,QACEX,EAACY,EAAM,CACLtC,MAAOc,EACPT,SAAUA,EACVD,SAAWwB,GAAMV,EAAQU,EAAEC,OAAO7B,OAAMyB,SAEvC7B,EAAM2C,IAAKC,GACVd,EAAA,SAAA,CAAgB1B,MAAOwC,EAACf,SACpBN,EAAa,GAAGqB,KAAPA,GADAA,UAS3B"}
@@ -5,7 +5,7 @@ import { type ChangeEvent, type ComponentProps, type ReactNode } from "react";
5
5
  * @group switch
6
6
  * @category inputs
7
7
  */
8
- export interface SwitchProps extends Omit<ComponentProps<"input">, "defaultValue" | "value" | "onChange"> {
8
+ export interface SwitchProps extends Omit<ComponentProps<"input">, "defaultValue" | "value" | "onChange" | "size"> {
9
9
  /**
10
10
  * Default value of the switch in boolean
11
11
  */
@@ -30,9 +30,14 @@ export interface SwitchProps extends Omit<ComponentProps<"input">, "defaultValue
30
30
  * Switch slots props
31
31
  */
32
32
  slotProps?: {
33
+ root?: ComponentProps<"div">;
33
34
  inputWrapper?: ComponentProps<"div">;
34
35
  label?: ComponentProps<"label">;
36
+ track?: ComponentProps<"span">;
35
37
  };
38
+ color?: "primary" | "secondary" | "error";
39
+ size?: "sm" | "md" | "lg";
40
+ htmlSize?: ComponentProps<"input">["size"];
36
41
  }
37
42
  /**
38
43
  * A switch can be used to show on/off state for form inputs, theme toggles etc.
@@ -1,2 +1,2 @@
1
- "use client";import{jsxs as e,jsx as t}from"react/jsx-runtime";import{useRef as n,useState as r,useEffect as c}from"react";import o from"./Switch.module.css.js";import{cn as a,mergeRefs as s}from"@studiocubics/utils";function i(i){const{value:u,defaultValue:l,type:d="checkbox",onChange:m,className:h,ref:p,label:v,"aria-label":b,icon:f,disabled:E,slotProps:N={},...g}=i,L=n(null),k=n(null),[w,X]=r(u),[j,x]=r(!1),y=n(0),C=n(!1);c(()=>{X(u)},[u]);const T=e=>{E||(x(!0),y.current=e,C.current=w??!1)},W=e=>{if(!j||E)return;const t=e-y.current;if(Math.abs(t)>10){const e=t>0;if(e!==w&&(X(e),L.current&&m)){L.current.checked=e;const t=new Event("change",{bubbles:!0});Object.defineProperty(t,"currentTarget",{value:L.current}),m(t,e)}}},M=()=>{x(!1)};return c(()=>{const e=e=>W(e.clientX),t=e=>W(e.touches[0].clientX),n=()=>M(),r=()=>M();return j&&(document.addEventListener("mousemove",e),document.addEventListener("mouseup",n),document.addEventListener("touchmove",t),document.addEventListener("touchend",r)),()=>{document.removeEventListener("mousemove",e),document.removeEventListener("mouseup",n),document.removeEventListener("touchmove",t),document.removeEventListener("touchend",r)}},[j,w]),e("div",{className:a(h,o.root,E?o.disabled:""),children:[e("div",{...N.inputWrapper,className:a(o.inputWrapper,N.inputWrapper?.className),children:[t("input",{...g,id:v,type:d,ref:s(p,L),className:o.input,role:"switch","aria-checked":w??!1,"aria-label":b||v,disabled:E,onChange:e=>{const t=e.currentTarget.checked;X(t),m&&m(e,t)}}),t("span",{className:a(o.switch,w?o.checked:"",j?o.dragging:""),onClick:()=>!j&&L.current?.click(),"aria-hidden":"true",children:t("span",{ref:k,className:o.thumb,onMouseDown:e=>T(e.clientX),onTouchStart:e=>T(e.touches[0].clientX),children:f})})]}),v&&t("label",{...N.label,htmlFor:i.id||v,className:a(N.label?.className,o.label),children:v})]})}export{i as Switch};
1
+ "use client";import{jsxs as e,jsx as t}from"react/jsx-runtime";import{useRef as r,useState as c,useEffect as n,useCallback as o}from"react";import a from"./Switch.module.css.js";import{cn as s,mergeRefs as u,toCamelCase as i}from"@studiocubics/utils";function l(l){const{value:d,defaultValue:m,type:h="checkbox",onChange:p,className:v,ref:b,label:f,"aria-label":k,icon:E,disabled:N,slotProps:L={},color:g,size:w="md",htmlSize:z,...C}=l,X=r(null),x=r(null),S=void 0!==d,[W,j]=c(m??!1),y=S?d??!1:W,M=r(!1),T=r(!1),D=r(0),F=r(y);n(()=>{F.current=y},[y]);const P=o(e=>{if(S||j(e),X.current&&p){const t=X.current;t.checked=e;const r=new Event("change",{bubbles:!0});t.dispatchEvent(r)}},[S,p]),V=o(e=>{N||(M.current=!0,T.current=!1,D.current=e)},[N]),q=o(e=>{if(!M.current||N)return;const t=e-D.current;if(Math.abs(t)>10){T.current=!0;const e=t>0;e!==F.current&&P(e)}},[N,P]),A=o(()=>{M.current=!1},[]);return n(()=>{const e=e=>q(e.clientX),t=e=>q(e.touches[0].clientX);return document.addEventListener("mousemove",e),document.addEventListener("mouseup",A),document.addEventListener("touchmove",t),document.addEventListener("touchend",A),()=>{document.removeEventListener("mousemove",e),document.removeEventListener("mouseup",A),document.removeEventListener("touchmove",t),document.removeEventListener("touchend",A)}},[q,A]),e("div",{...L.root,"data-color":g,"data-size":w,className:s(L.root?.className,v,a.root,N?a.disabled:""),children:[e("div",{...L.inputWrapper,className:s(a.inputWrapper,L.inputWrapper?.className),children:[t("input",{...C,size:z,type:h,ref:u(b,X),className:a.input,role:"switch","aria-checked":y,"aria-label":k??f,checked:S?y:void 0,defaultChecked:S?void 0:m,disabled:N,onChange:e=>{const t=e.currentTarget.checked;S||j(t),p&&p(e,t)}}),t("span",{className:s(a.track,y?a.checked:""),onClick:()=>{T.current?T.current=!1:X.current?.click()},"aria-hidden":"true",children:t("span",{ref:x,className:a.thumb,onMouseDown:e=>V(e.clientX),onTouchStart:e=>V(e.touches[0].clientX),children:E})})]}),f&&t("label",{...L.label,htmlFor:l.id??i(f),className:s(L.label?.className,a.label),children:f})]})}export{l as Switch};
2
2
  //# sourceMappingURL=Switch.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Switch.js","sources":["../../../src/Inputs/Switch/Switch.tsx"],"sourcesContent":["\"use client\";\n\nimport {\n type ChangeEvent,\n type ComponentProps,\n type ReactNode,\n useEffect,\n useRef,\n useState,\n} from \"react\";\nimport styles from \"./Switch.module.css\";\nimport { cn, mergeRefs } from \"@studiocubics/utils\";\n\n/**\n * Props for the Switch component\n *\n * @group switch\n * @category inputs\n */\nexport interface SwitchProps\n extends Omit<ComponentProps<\"input\">, \"defaultValue\" | \"value\" | \"onChange\"> {\n /**\n * Default value of the switch in boolean\n */\n defaultValue?: boolean;\n /**\n * Value of the switch in boolean\n */\n value?: boolean | null;\n /**\n * Event handler for when the value of the switch changes\n */\n onChange?: (e: ChangeEvent<HTMLInputElement>, checked: boolean) => void;\n /**\n * Label for the switch\n */\n label?: string;\n /**\n * Icon to render in the thumb of the switch\n */\n icon?: ReactNode;\n /**\n * Switch slots props\n */\n slotProps?: {\n inputWrapper?: ComponentProps<\"div\">;\n label?: ComponentProps<\"label\">;\n };\n // TODO add size\n // TODO add color\n}\n\n/**\n * A switch can be used to show on/off state for form inputs, theme toggles etc.\n *\n * @group switch\n * @category inputs\n */\nexport function Switch(props: SwitchProps) {\n const {\n value,\n defaultValue,\n type = \"checkbox\",\n onChange,\n className,\n ref,\n label,\n \"aria-label\": ariaLabel,\n icon,\n disabled,\n slotProps = {},\n ...rest\n } = props;\n\n const inputRef = useRef<HTMLInputElement>(null);\n const thumbRef = useRef<HTMLSpanElement>(null);\n const [checked, setChecked] = useState(value);\n const [isDragging, setIsDragging] = useState(false);\n const dragStartX = useRef(0);\n const dragStartChecked = useRef(false);\n\n useEffect(() => {\n setChecked(value);\n }, [value]);\n\n const handleDragStart = (clientX: number) => {\n if (disabled) return;\n setIsDragging(true);\n dragStartX.current = clientX;\n dragStartChecked.current = checked ?? false;\n };\n\n const handleDragMove = (clientX: number) => {\n if (!isDragging || disabled) return;\n\n const delta = clientX - dragStartX.current;\n const threshold = 10; // Minimum drag distance to trigger change\n\n if (Math.abs(delta) > threshold) {\n const newChecked = delta > 0;\n if (newChecked !== checked) {\n setChecked(newChecked);\n if (inputRef.current && onChange) {\n inputRef.current.checked = newChecked;\n const event = new Event(\"change\", { bubbles: true }) as any;\n Object.defineProperty(event, \"currentTarget\", {\n value: inputRef.current,\n });\n onChange(event, newChecked);\n }\n }\n }\n };\n\n const handleDragEnd = () => {\n setIsDragging(false);\n };\n\n useEffect(() => {\n const handleMouseMove = (e: MouseEvent) => handleDragMove(e.clientX);\n const handleTouchMove = (e: TouchEvent) =>\n handleDragMove(e.touches[0].clientX);\n const handleMouseUp = () => handleDragEnd();\n const handleTouchEnd = () => handleDragEnd();\n\n if (isDragging) {\n document.addEventListener(\"mousemove\", handleMouseMove);\n document.addEventListener(\"mouseup\", handleMouseUp);\n document.addEventListener(\"touchmove\", handleTouchMove);\n document.addEventListener(\"touchend\", handleTouchEnd);\n }\n\n return () => {\n document.removeEventListener(\"mousemove\", handleMouseMove);\n document.removeEventListener(\"mouseup\", handleMouseUp);\n document.removeEventListener(\"touchmove\", handleTouchMove);\n document.removeEventListener(\"touchend\", handleTouchEnd);\n };\n }, [isDragging, checked]);\n\n return (\n <div\n className={cn(className, styles.root, disabled ? styles.disabled : \"\")}\n >\n <div\n {...slotProps.inputWrapper}\n className={cn(styles.inputWrapper, slotProps.inputWrapper?.className)}\n >\n <input\n {...rest}\n id={label}\n type={type}\n ref={mergeRefs(ref, inputRef)}\n className={styles.input}\n role=\"switch\"\n aria-checked={checked ?? false}\n aria-label={ariaLabel || label}\n disabled={disabled}\n onChange={(e) => {\n const c = e.currentTarget.checked;\n setChecked(c);\n if (onChange) onChange(e, c);\n }}\n />\n <span\n className={cn(\n styles.switch,\n checked ? styles.checked : \"\",\n isDragging ? styles.dragging : \"\"\n )}\n onClick={() => !isDragging && inputRef.current?.click()}\n aria-hidden=\"true\"\n >\n <span\n ref={thumbRef}\n className={styles.thumb}\n onMouseDown={(e) => handleDragStart(e.clientX)}\n onTouchStart={(e) => handleDragStart(e.touches[0].clientX)}\n >\n {icon}\n </span>\n </span>\n </div>\n {label && (\n <label\n {...slotProps.label}\n htmlFor={props.id || label}\n className={cn(slotProps.label?.className, styles.label)}\n >\n {label}\n </label>\n )}\n </div>\n );\n}\n"],"names":["Switch","props","value","defaultValue","type","onChange","className","ref","label","ariaLabel","icon","disabled","slotProps","rest","inputRef","useRef","thumbRef","checked","setChecked","useState","isDragging","setIsDragging","dragStartX","dragStartChecked","useEffect","handleDragStart","clientX","current","handleDragMove","delta","Math","abs","newChecked","event","Event","bubbles","Object","defineProperty","handleDragEnd","handleMouseMove","e","handleTouchMove","touches","handleMouseUp","handleTouchEnd","document","addEventListener","removeEventListener","_jsxs","cn","styles","root","children","inputWrapper","_jsx","id","mergeRefs","input","role","c","currentTarget","switch","dragging","onClick","click","thumb","onMouseDown","onTouchStart","htmlFor"],"mappings":"yNA0DM,SAAUA,EAAOC,GACrB,MAAMC,MACJA,EAAKC,aACLA,EAAYC,KACZA,EAAO,WAAUC,SACjBA,EAAQC,UACRA,EAASC,IACTA,EAAGC,MACHA,EACA,aAAcC,EAASC,KACvBA,EAAIC,SACJA,EAAQC,UACRA,EAAY,MACTC,GACDZ,EAEEa,EAAWC,EAAyB,MACpCC,EAAWD,EAAwB,OAClCE,EAASC,GAAcC,EAASjB,IAChCkB,EAAYC,GAAiBF,GAAS,GACvCG,EAAaP,EAAO,GACpBQ,EAAmBR,GAAO,GAEhCS,EAAU,KACRN,EAAWhB,IACV,CAACA,IAEJ,MAAMuB,EAAmBC,IACnBf,IACJU,GAAc,GACdC,EAAWK,QAAUD,EACrBH,EAAiBI,QAAUV,IAAW,IAGlCW,EAAkBF,IACtB,IAAKN,GAAcT,EAAU,OAE7B,MAAMkB,EAAQH,EAAUJ,EAAWK,QAGnC,GAAIG,KAAKC,IAAIF,GAFK,GAEe,CAC/B,MAAMG,EAAaH,EAAQ,EAC3B,GAAIG,IAAef,IACjBC,EAAWc,GACPlB,EAASa,SAAWtB,GAAU,CAChCS,EAASa,QAAQV,QAAUe,EAC3B,MAAMC,EAAQ,IAAIC,MAAM,SAAU,CAAEC,SAAS,IAC7CC,OAAOC,eAAeJ,EAAO,gBAAiB,CAC5C/B,MAAOY,EAASa,UAElBtB,EAAS4B,EAAOD,EAClB,CAEJ,GAGIM,EAAgB,KACpBjB,GAAc,IAyBhB,OAtBAG,EAAU,KACR,MAAMe,EAAmBC,GAAkBZ,EAAeY,EAAEd,SACtDe,EAAmBD,GACvBZ,EAAeY,EAAEE,QAAQ,GAAGhB,SACxBiB,EAAgB,IAAML,IACtBM,EAAiB,IAAMN,IAS7B,OAPIlB,IACFyB,SAASC,iBAAiB,YAAaP,GACvCM,SAASC,iBAAiB,UAAWH,GACrCE,SAASC,iBAAiB,YAAaL,GACvCI,SAASC,iBAAiB,WAAYF,IAGjC,KACLC,SAASE,oBAAoB,YAAaR,GAC1CM,SAASE,oBAAoB,UAAWJ,GACxCE,SAASE,oBAAoB,YAAaN,GAC1CI,SAASE,oBAAoB,WAAYH,KAE1C,CAACxB,EAAYH,IAGd+B,SACE1C,UAAW2C,EAAG3C,EAAW4C,EAAOC,KAAMxC,EAAWuC,EAAOvC,SAAW,IAAGyC,SAAA,CAEtEJ,YACMpC,EAAUyC,aACd/C,UAAW2C,EAAGC,EAAOG,aAAczC,EAAUyC,cAAc/C,WAAU8C,SAAA,CAErEE,EAAA,QAAA,IACMzC,EACJ0C,GAAI/C,EACJJ,KAAMA,EACNG,IAAKiD,EAAUjD,EAAKO,GACpBR,UAAW4C,EAAOO,MAClBC,KAAK,SAAQ,eACCzC,IAAW,EAAK,aAClBR,GAAaD,EACzBG,SAAUA,EACVN,SAAWmC,IACT,MAAMmB,EAAInB,EAAEoB,cAAc3C,QAC1BC,EAAWyC,GACPtD,GAAUA,EAASmC,EAAGmB,MAG9BL,EAAA,OAAA,CACEhD,UAAW2C,EACTC,EAAOW,OACP5C,EAAUiC,EAAOjC,QAAU,GAC3BG,EAAa8B,EAAOY,SAAW,IAEjCC,QAAS,KAAO3C,GAAcN,EAASa,SAASqC,QAAO,cAC3C,OAAMZ,SAElBE,EAAA,OAAA,CACE/C,IAAKS,EACLV,UAAW4C,EAAOe,MAClBC,YAAc1B,GAAMf,EAAgBe,EAAEd,SACtCyC,aAAe3B,GAAMf,EAAgBe,EAAEE,QAAQ,GAAGhB,SAAQ0B,SAEzD1C,SAINF,GACC8C,EAAA,QAAA,IACM1C,EAAUJ,MACd4D,QAASnE,EAAMsD,IAAM/C,EACrBF,UAAW2C,EAAGrC,EAAUJ,OAAOF,UAAW4C,EAAO1C,OAAM4C,SAEtD5C,MAKX"}
1
+ {"version":3,"file":"Switch.js","sources":["../../../src/Inputs/Switch/Switch.tsx"],"sourcesContent":["\"use client\";\n\nimport {\n type ChangeEvent,\n type ComponentProps,\n type ReactNode,\n useEffect,\n useRef,\n useState,\n useCallback,\n} from \"react\";\nimport styles from \"./Switch.module.css\";\nimport { cn, mergeRefs, toCamelCase } from \"@studiocubics/utils\";\n\n/**\n * Props for the Switch component\n *\n * @group switch\n * @category inputs\n */\nexport interface SwitchProps\n extends Omit<\n ComponentProps<\"input\">,\n \"defaultValue\" | \"value\" | \"onChange\" | \"size\"\n > {\n /**\n * Default value of the switch in boolean\n */\n defaultValue?: boolean;\n /**\n * Value of the switch in boolean\n */\n value?: boolean | null;\n /**\n * Event handler for when the value of the switch changes\n */\n onChange?: (e: ChangeEvent<HTMLInputElement>, checked: boolean) => void;\n /**\n * Label for the switch\n */\n label?: string;\n /**\n * Icon to render in the thumb of the switch\n */\n icon?: ReactNode;\n /**\n * Switch slots props\n */\n slotProps?: {\n root?: ComponentProps<\"div\">;\n inputWrapper?: ComponentProps<\"div\">;\n label?: ComponentProps<\"label\">;\n track?: ComponentProps<\"span\">;\n };\n color?: \"primary\" | \"secondary\" | \"error\";\n size?: \"sm\" | \"md\" | \"lg\";\n htmlSize?: ComponentProps<\"input\">[\"size\"];\n}\n\n/**\n * A switch can be used to show on/off state for form inputs, theme toggles etc.\n *\n * @group switch\n * @category inputs\n */\nexport function Switch(props: SwitchProps) {\n const {\n value,\n defaultValue,\n type = \"checkbox\",\n onChange,\n className,\n ref,\n label,\n \"aria-label\": ariaLabel,\n icon,\n disabled,\n slotProps = {},\n color,\n size = \"md\",\n htmlSize,\n ...rest\n } = props;\n\n const inputRef = useRef<HTMLInputElement>(null);\n const thumbRef = useRef<HTMLSpanElement>(null);\n\n const isControlled = value !== undefined;\n const [internalChecked, setInternalChecked] = useState<boolean>(\n defaultValue ?? false,\n );\n const checked = isControlled ? (value ?? false) : internalChecked;\n\n const isDragging = useRef(false);\n const didDrag = useRef(false);\n const dragStartX = useRef(0);\n\n const checkedRef = useRef(checked);\n useEffect(() => {\n checkedRef.current = checked;\n }, [checked]);\n\n const triggerChange = useCallback(\n (newChecked: boolean) => {\n if (!isControlled) setInternalChecked(newChecked);\n if (inputRef.current && onChange) {\n const nativeInput = inputRef.current;\n nativeInput.checked = newChecked;\n const nativeEvent = new Event(\"change\", { bubbles: true });\n nativeInput.dispatchEvent(nativeEvent);\n }\n },\n [isControlled, onChange],\n );\n\n const handleDragStart = useCallback(\n (clientX: number) => {\n if (disabled) return;\n isDragging.current = true;\n didDrag.current = false;\n dragStartX.current = clientX;\n },\n [disabled],\n );\n\n const handleDragMove = useCallback(\n (clientX: number) => {\n if (!isDragging.current || disabled) return;\n\n const delta = clientX - dragStartX.current;\n const threshold = 10; // Minimum drag distance to trigger change\n\n if (Math.abs(delta) > threshold) {\n didDrag.current = true;\n const newChecked = delta > 0;\n if (newChecked !== checkedRef.current) {\n triggerChange(newChecked);\n }\n }\n },\n [disabled, triggerChange],\n );\n\n const handleDragEnd = useCallback(() => {\n isDragging.current = false;\n // didDrag.current is intentionally NOT reset here;\n // it stays true until the subsequent click event reads and clears it\n }, []);\n\n useEffect(() => {\n const handleMouseMove = (e: MouseEvent) => handleDragMove(e.clientX);\n const handleTouchMove = (e: TouchEvent) =>\n handleDragMove(e.touches[0].clientX);\n\n document.addEventListener(\"mousemove\", handleMouseMove);\n document.addEventListener(\"mouseup\", handleDragEnd);\n document.addEventListener(\"touchmove\", handleTouchMove);\n document.addEventListener(\"touchend\", handleDragEnd);\n\n return () => {\n document.removeEventListener(\"mousemove\", handleMouseMove);\n document.removeEventListener(\"mouseup\", handleDragEnd);\n document.removeEventListener(\"touchmove\", handleTouchMove);\n document.removeEventListener(\"touchend\", handleDragEnd);\n };\n }, [handleDragMove, handleDragEnd]);\n\n return (\n <div\n {...slotProps.root}\n data-color={color}\n data-size={size}\n className={cn(\n slotProps.root?.className,\n className,\n styles.root,\n disabled ? styles.disabled : \"\",\n )}\n >\n <div\n {...slotProps.inputWrapper}\n className={cn(styles.inputWrapper, slotProps.inputWrapper?.className)}\n >\n <input\n {...rest}\n size={htmlSize}\n type={type}\n ref={mergeRefs(ref, inputRef)}\n className={styles.input}\n role=\"switch\"\n aria-checked={checked}\n aria-label={ariaLabel ?? label}\n checked={isControlled ? checked : undefined}\n defaultChecked={!isControlled ? defaultValue : undefined}\n disabled={disabled}\n onChange={(e) => {\n const c = e.currentTarget.checked;\n if (!isControlled) setInternalChecked(c);\n if (onChange) onChange(e, c);\n }}\n />\n <span\n className={cn(styles.track, checked ? styles.checked : \"\")}\n onClick={() => {\n if (didDrag.current) {\n didDrag.current = false;\n return;\n }\n inputRef.current?.click();\n }}\n aria-hidden=\"true\"\n >\n <span\n ref={thumbRef}\n className={styles.thumb}\n onMouseDown={(e) => handleDragStart(e.clientX)}\n onTouchStart={(e) => handleDragStart(e.touches[0].clientX)}\n >\n {icon}\n </span>\n </span>\n </div>\n {label && (\n <label\n {...slotProps.label}\n htmlFor={props.id ?? toCamelCase(label)}\n className={cn(slotProps.label?.className, styles.label)}\n >\n {label}\n </label>\n )}\n </div>\n );\n}\n"],"names":["Switch","props","value","defaultValue","type","onChange","className","ref","label","ariaLabel","icon","disabled","slotProps","color","size","htmlSize","rest","inputRef","useRef","thumbRef","isControlled","undefined","internalChecked","setInternalChecked","useState","checked","isDragging","didDrag","dragStartX","checkedRef","useEffect","current","triggerChange","useCallback","newChecked","nativeInput","nativeEvent","Event","bubbles","dispatchEvent","handleDragStart","clientX","handleDragMove","delta","Math","abs","handleDragEnd","handleMouseMove","e","handleTouchMove","touches","document","addEventListener","removeEventListener","_jsxs","root","cn","styles","children","inputWrapper","_jsx","mergeRefs","input","role","defaultChecked","c","currentTarget","track","onClick","click","thumb","onMouseDown","onTouchStart","htmlFor","id","toCamelCase"],"mappings":"2PAiEM,SAAUA,EAAOC,GACrB,MAAMC,MACJA,EAAKC,aACLA,EAAYC,KACZA,EAAO,WAAUC,SACjBA,EAAQC,UACRA,EAASC,IACTA,EAAGC,MACHA,EACA,aAAcC,EAASC,KACvBA,EAAIC,SACJA,EAAQC,UACRA,EAAY,CAAA,EAAEC,MACdA,EAAKC,KACLA,EAAO,KAAIC,SACXA,KACGC,GACDf,EAEEgB,EAAWC,EAAyB,MACpCC,EAAWD,EAAwB,MAEnCE,OAAyBC,IAAVnB,GACdoB,EAAiBC,GAAsBC,EAC5CrB,IAAgB,GAEZsB,EAAUL,EAAgBlB,IAAS,EAASoB,EAE5CI,EAAaR,GAAO,GACpBS,EAAUT,GAAO,GACjBU,EAAaV,EAAO,GAEpBW,EAAaX,EAAOO,GAC1BK,EAAU,KACRD,EAAWE,QAAUN,GACpB,CAACA,IAEJ,MAAMO,EAAgBC,EACnBC,IAEC,GADKd,GAAcG,EAAmBW,GAClCjB,EAASc,SAAW1B,EAAU,CAChC,MAAM8B,EAAclB,EAASc,QAC7BI,EAAYV,QAAUS,EACtB,MAAME,EAAc,IAAIC,MAAM,SAAU,CAAEC,SAAS,IACnDH,EAAYI,cAAcH,EAC5B,GAEF,CAAChB,EAAcf,IAGXmC,EAAkBP,EACrBQ,IACK9B,IACJe,EAAWK,SAAU,EACrBJ,EAAQI,SAAU,EAClBH,EAAWG,QAAUU,IAEvB,CAAC9B,IAGG+B,EAAiBT,EACpBQ,IACC,IAAKf,EAAWK,SAAWpB,EAAU,OAErC,MAAMgC,EAAQF,EAAUb,EAAWG,QAGnC,GAAIa,KAAKC,IAAIF,GAFK,GAEe,CAC/BhB,EAAQI,SAAU,EAClB,MAAMG,EAAaS,EAAQ,EACvBT,IAAeL,EAAWE,SAC5BC,EAAcE,EAElB,GAEF,CAACvB,EAAUqB,IAGPc,EAAgBb,EAAY,KAChCP,EAAWK,SAAU,GAGpB,IAoBH,OAlBAD,EAAU,KACR,MAAMiB,EAAmBC,GAAkBN,EAAeM,EAAEP,SACtDQ,EAAmBD,GACvBN,EAAeM,EAAEE,QAAQ,GAAGT,SAO9B,OALAU,SAASC,iBAAiB,YAAaL,GACvCI,SAASC,iBAAiB,UAAWN,GACrCK,SAASC,iBAAiB,YAAaH,GACvCE,SAASC,iBAAiB,WAAYN,GAE/B,KACLK,SAASE,oBAAoB,YAAaN,GAC1CI,SAASE,oBAAoB,UAAWP,GACxCK,SAASE,oBAAoB,YAAaJ,GAC1CE,SAASE,oBAAoB,WAAYP,KAE1C,CAACJ,EAAgBI,IAGlBQ,EAAA,MAAA,IACM1C,EAAU2C,KAAI,aACN1C,EAAK,YACNC,EACXR,UAAWkD,EACT5C,EAAU2C,MAAMjD,UAChBA,EACAmD,EAAOF,KACP5C,EAAW8C,EAAO9C,SAAW,IAC9B+C,SAAA,CAEDJ,EAAA,MAAA,IACM1C,EAAU+C,aACdrD,UAAWkD,EAAGC,EAAOE,aAAc/C,EAAU+C,cAAcrD,WAAUoD,SAAA,CAErEE,EAAA,QAAA,IACM5C,EACJF,KAAMC,EACNX,KAAMA,EACNG,IAAKsD,EAAUtD,EAAKU,GACpBX,UAAWmD,EAAOK,MAClBC,KAAK,SAAQ,eACCtC,EAAO,aACThB,GAAaD,EACzBiB,QAASL,EAAeK,OAAUJ,EAClC2C,eAAiB5C,OAA8BC,EAAflB,EAChCQ,SAAUA,EACVN,SAAW2C,IACT,MAAMiB,EAAIjB,EAAEkB,cAAczC,QACrBL,GAAcG,EAAmB0C,GAClC5D,GAAUA,EAAS2C,EAAGiB,MAG9BL,EAAA,OAAA,CACEtD,UAAWkD,EAAGC,EAAOU,MAAO1C,EAAUgC,EAAOhC,QAAU,IACvD2C,QAAS,KACHzC,EAAQI,QACVJ,EAAQI,SAAU,EAGpBd,EAASc,SAASsC,uBAER,OAAMX,SAElBE,UACErD,IAAKY,EACLb,UAAWmD,EAAOa,MAClBC,YAAcvB,GAAMR,EAAgBQ,EAAEP,SACtC+B,aAAexB,GAAMR,EAAgBQ,EAAEE,QAAQ,GAAGT,SAAQiB,SAEzDhD,SAINF,GACCoD,EAAA,QAAA,IACMhD,EAAUJ,MACdiE,QAASxE,EAAMyE,IAAMC,EAAYnE,GACjCF,UAAWkD,EAAG5C,EAAUJ,OAAOF,UAAWmD,EAAOjD,OAAMkD,SAEtDlD,MAKX"}
@@ -1,2 +1,2 @@
1
- var _={root:"Switch-module_root__iigu-",disabled:"Switch-module_disabled__OpgQK",switch:"Switch-module_switch__JRFZI",thumb:"Switch-module_thumb__s4iLS",inputWrapper:"Switch-module_inputWrapper__o8uEI",label:"Switch-module_label__vk4At",input:"Switch-module_input__pSFbl",checked:"Switch-module_checked__7JJ9o"};export{_ as default};
1
+ var _={root:"Switch-module_root__iigu-",disabled:"Switch-module_disabled__OpgQK",track:"Switch-module_track__lLt7Y",thumb:"Switch-module_thumb__s4iLS",inputWrapper:"Switch-module_inputWrapper__o8uEI",label:"Switch-module_label__vk4At",input:"Switch-module_input__pSFbl",checked:"Switch-module_checked__7JJ9o"};export{_ as default};
2
2
  //# sourceMappingURL=Switch.module.css.js.map
@@ -1,2 +1,2 @@
1
- "use client";import{jsxs as r,jsx as i}from"react/jsx-runtime";import{cn as s}from"@studiocubics/utils";import{useState as t,useEffect as e}from"react";import{useRipple as o,eventWithRipple as l}from"../../Misc/Ripple/Ripple.js";import a from"./TextAreaInput.module.css.js";import"../../Display/Accordion/Accordion.js";import"../../Cards/GlassCard/GlassCard.js";import"../../Display/Chip/Chip.js";import"../../Display/IdentityDisplay/IdentityDisplay.js";import{InputErrors as p}from"../../Display/InputErrors/InputErrors.js";import"../../Display/Kbd/buttonList.js";import"../../Display/List/List.js";import"../Button/Button.js";import"react-dom";function m(m){const{label:c,error:n,fullWidth:d,disableResize:u=!1,onTouchStart:h,onClick:j,onBlur:b,slotProps:y={},className:N,...f}=m,{rippleElements:D,createRipple:C}=o(y.ripple),[v,x]=t(n&&!!n.length);return e(()=>{x(n&&!!n.length)},[n]),r("div",{...y.root,className:s(y.root?.className,a.root,d?a.fullWidth:void 0,v?a.errored:void 0),children:[c&&i("label",{...y.label,htmlFor:m.id||c,className:s(y.label?.className,a.label),children:c}),r("div",{...y.inputWrapper,className:s(y.inputWrapper?.className,a.inputWrapper),children:[i("textarea",{className:s(N,a.input,u?a.disableResize:void 0),onTouchStart:l(C,h),onClick:l(C,j),onBlur:r=>{x(!1),b?.(r)},id:c,...f}),D]}),v&&i(p,{...y.error,className:s(y.error?.className,a.errorText),error:n})]})}export{m as TextAreaInput};
1
+ "use client";import{jsxs as r,jsx as o}from"react/jsx-runtime";import{cn as i}from"@studiocubics/utils";import{useState as t,useEffect as s}from"react";import{useRipple as e,eventWithRipple as l}from"../../Misc/Ripple/Ripple.js";import a from"./TextAreaInput.module.css.js";import"../../Display/Accordion/Accordion.js";import"../../Cards/GlassCard/GlassCard.js";import"../../Display/Chip/Chip.js";import"../../Display/IdentityDisplay/IdentityDisplay.js";import{InputErrors as p}from"../../Display/InputErrors/InputErrors.js";import"../../Display/Kbd/buttonList.js";import"../../Display/List/List.js";import"../../Cards/Card/Card.js";import"../../Cards/CollectionItemCard/CollectionItemCard.js";import"@studiocubics/hooks";import"../Button/Button.js";import"react-dom";import"../Checkbox/CheckboxProvider.js";function m(m){const{label:c,error:d,fullWidth:n,disableResize:u=!1,onTouchStart:C,onClick:h,onBlur:j,slotProps:b={},className:y,...N}=m,{rippleElements:f,createRipple:D}=e(b.ripple),[x,I]=t(d&&!!d.length);return s(()=>{I(d&&!!d.length)},[d]),r("div",{...b.root,className:i(b.root?.className,a.root,n?a.fullWidth:void 0,x?a.errored:void 0),children:[c&&o("label",{...b.label,htmlFor:m.id||c,className:i(b.label?.className,a.label),children:c}),r("div",{...b.inputWrapper,className:i(b.inputWrapper?.className,a.inputWrapper),children:[o("textarea",{className:i(y,a.input,u?a.disableResize:void 0),onTouchStart:l(D,C),onClick:l(D,h),onBlur:r=>{I(!1),j?.(r)},id:c,...N}),f]}),x&&o(p,{...b.error,className:i(b.error?.className,a.errorText),error:d})]})}export{m as TextAreaInput};
2
2
  //# sourceMappingURL=TextAreaInput.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TextAreaInput.js","sources":["../../../src/Inputs/TextAreaInput/TextAreaInput.tsx"],"sourcesContent":["\"use client\";\n\nimport { cn } from \"@studiocubics/utils\";\nimport { useEffect, useState, type ComponentProps } from \"react\";\nimport {\n eventWithRipple,\n useRipple,\n type UseRippleProps,\n} from \"../../Misc/Ripple/Ripple\";\nimport styles from \"./TextAreaInput.module.css\";\nimport { InputErrors, type InputErrorsProps } from \"../../Display/_index\";\n\nexport interface TextAreaInputProps extends ComponentProps<\"textarea\"> {\n label?: string;\n error?: string | string[];\n disableResize?: boolean;\n fullWidth?: boolean;\n slotProps?: {\n ripple?: UseRippleProps;\n root?: ComponentProps<\"div\">;\n inputWrapper?: ComponentProps<\"div\">;\n label?: ComponentProps<\"label\">;\n error?: InputErrorsProps;\n };\n}\n\nexport function TextAreaInput(props: TextAreaInputProps) {\n const {\n label,\n error,\n fullWidth,\n disableResize = false,\n onTouchStart,\n onClick,\n onBlur,\n slotProps = {},\n className: inputClass,\n ...inputProps\n } = props;\n\n const { rippleElements, createRipple } = useRipple(slotProps.ripple);\n const [isErrored, setIsErrored] = useState(error && !!error.length);\n\n useEffect(() => {\n setIsErrored(error && !!error.length);\n }, [error]);\n\n return (\n <div\n {...slotProps.root}\n className={cn(\n slotProps.root?.className,\n styles.root,\n fullWidth ? styles.fullWidth : undefined,\n isErrored ? styles.errored : undefined\n )}\n >\n {label && (\n <label\n {...slotProps.label}\n htmlFor={props.id || label}\n className={cn(slotProps.label?.className, styles.label)}\n >\n {label}\n </label>\n )}\n <div\n {...slotProps.inputWrapper}\n className={cn(slotProps.inputWrapper?.className, styles.inputWrapper)}\n >\n <textarea\n className={cn(\n inputClass,\n styles.input,\n disableResize ? styles.disableResize : undefined\n )}\n onTouchStart={eventWithRipple(createRipple, onTouchStart)}\n onClick={eventWithRipple(createRipple, onClick)}\n onBlur={(e) => {\n setIsErrored(false);\n onBlur?.(e);\n }}\n id={label}\n {...inputProps}\n />\n {rippleElements}\n </div>\n {isErrored && (\n <InputErrors\n {...slotProps.error}\n className={cn(slotProps.error?.className, styles.errorText)}\n error={error}\n />\n )}\n </div>\n );\n}\n"],"names":["TextAreaInput","props","label","error","fullWidth","disableResize","onTouchStart","onClick","onBlur","slotProps","className","inputClass","inputProps","rippleElements","createRipple","useRipple","ripple","isErrored","setIsErrored","useState","length","useEffect","_jsxs","root","cn","styles","undefined","errored","children","_jsx","htmlFor","id","inputWrapper","input","eventWithRipple","e","InputErrors","errorText"],"mappings":"soBA0BM,SAAUA,EAAcC,GAC5B,MAAMC,MACJA,EAAKC,MACLA,EAAKC,UACLA,EAASC,cACTA,GAAgB,EAAKC,aACrBA,EAAYC,QACZA,EAAOC,OACPA,EAAMC,UACNA,EAAY,CAAA,EACZC,UAAWC,KACRC,GACDX,GAEEY,eAAEA,EAAcC,aAAEA,GAAiBC,EAAUN,EAAUO,SACtDC,EAAWC,GAAgBC,EAAShB,KAAWA,EAAMiB,QAM5D,OAJAC,EAAU,KACRH,EAAaf,KAAWA,EAAMiB,SAC7B,CAACjB,IAGFmB,EAAA,MAAA,IACMb,EAAUc,KACdb,UAAWc,EACTf,EAAUc,MAAMb,UAChBe,EAAOF,KACPnB,EAAYqB,EAAOrB,eAAYsB,EAC/BT,EAAYQ,EAAOE,aAAUD,GAC9BE,SAAA,CAEA1B,GACC2B,EAAA,QAAA,IACMpB,EAAUP,MACd4B,QAAS7B,EAAM8B,IAAM7B,EACrBQ,UAAWc,EAAGf,EAAUP,OAAOQ,UAAWe,EAAOvB,OAAM0B,SAEtD1B,IAGLoB,EAAA,MAAA,IACMb,EAAUuB,aACdtB,UAAWc,EAAGf,EAAUuB,cAActB,UAAWe,EAAOO,cAAaJ,SAAA,CAErEC,EAAA,WAAA,CACEnB,UAAWc,EACTb,EACAc,EAAOQ,MACP5B,EAAgBoB,EAAOpB,mBAAgBqB,GAEzCpB,aAAc4B,EAAgBpB,EAAcR,GAC5CC,QAAS2B,EAAgBpB,EAAcP,GACvCC,OAAS2B,IACPjB,GAAa,GACbV,IAAS2B,IAEXJ,GAAI7B,KACAU,IAELC,KAEFI,GACCY,EAACO,EAAW,IACN3B,EAAUN,MACdO,UAAWc,EAAGf,EAAUN,OAAOO,UAAWe,EAAOY,WACjDlC,MAAOA,MAKjB"}
1
+ {"version":3,"file":"TextAreaInput.js","sources":["../../../src/Inputs/TextAreaInput/TextAreaInput.tsx"],"sourcesContent":["\"use client\";\n\nimport { cn } from \"@studiocubics/utils\";\nimport { useEffect, useState, type ComponentProps } from \"react\";\nimport {\n eventWithRipple,\n useRipple,\n type UseRippleProps,\n} from \"../../Misc/Ripple/Ripple\";\nimport styles from \"./TextAreaInput.module.css\";\nimport { InputErrors, type InputErrorsProps } from \"../../Display/_index\";\n\nexport interface TextAreaInputProps extends ComponentProps<\"textarea\"> {\n label?: string;\n error?: string | string[];\n disableResize?: boolean;\n fullWidth?: boolean;\n slotProps?: {\n ripple?: UseRippleProps;\n root?: ComponentProps<\"div\">;\n inputWrapper?: ComponentProps<\"div\">;\n label?: ComponentProps<\"label\">;\n error?: InputErrorsProps;\n };\n}\n\nexport function TextAreaInput(props: TextAreaInputProps) {\n const {\n label,\n error,\n fullWidth,\n disableResize = false,\n onTouchStart,\n onClick,\n onBlur,\n slotProps = {},\n className: inputClass,\n ...inputProps\n } = props;\n\n const { rippleElements, createRipple } = useRipple(slotProps.ripple);\n const [isErrored, setIsErrored] = useState(error && !!error.length);\n\n useEffect(() => {\n setIsErrored(error && !!error.length);\n }, [error]);\n\n return (\n <div\n {...slotProps.root}\n className={cn(\n slotProps.root?.className,\n styles.root,\n fullWidth ? styles.fullWidth : undefined,\n isErrored ? styles.errored : undefined\n )}\n >\n {label && (\n <label\n {...slotProps.label}\n htmlFor={props.id || label}\n className={cn(slotProps.label?.className, styles.label)}\n >\n {label}\n </label>\n )}\n <div\n {...slotProps.inputWrapper}\n className={cn(slotProps.inputWrapper?.className, styles.inputWrapper)}\n >\n <textarea\n className={cn(\n inputClass,\n styles.input,\n disableResize ? styles.disableResize : undefined\n )}\n onTouchStart={eventWithRipple(createRipple, onTouchStart)}\n onClick={eventWithRipple(createRipple, onClick)}\n onBlur={(e) => {\n setIsErrored(false);\n onBlur?.(e);\n }}\n id={label}\n {...inputProps}\n />\n {rippleElements}\n </div>\n {isErrored && (\n <InputErrors\n {...slotProps.error}\n className={cn(slotProps.error?.className, styles.errorText)}\n error={error}\n />\n )}\n </div>\n );\n}\n"],"names":["TextAreaInput","props","label","error","fullWidth","disableResize","onTouchStart","onClick","onBlur","slotProps","className","inputClass","inputProps","rippleElements","createRipple","useRipple","ripple","isErrored","setIsErrored","useState","length","useEffect","_jsxs","root","cn","styles","undefined","errored","children","_jsx","htmlFor","id","inputWrapper","input","eventWithRipple","e","InputErrors","errorText"],"mappings":"wyBA0BM,SAAUA,EAAcC,GAC5B,MAAMC,MACJA,EAAKC,MACLA,EAAKC,UACLA,EAASC,cACTA,GAAgB,EAAKC,aACrBA,EAAYC,QACZA,EAAOC,OACPA,EAAMC,UACNA,EAAY,CAAA,EACZC,UAAWC,KACRC,GACDX,GAEEY,eAAEA,EAAcC,aAAEA,GAAiBC,EAAUN,EAAUO,SACtDC,EAAWC,GAAgBC,EAAShB,KAAWA,EAAMiB,QAM5D,OAJAC,EAAU,KACRH,EAAaf,KAAWA,EAAMiB,SAC7B,CAACjB,IAGFmB,EAAA,MAAA,IACMb,EAAUc,KACdb,UAAWc,EACTf,EAAUc,MAAMb,UAChBe,EAAOF,KACPnB,EAAYqB,EAAOrB,eAAYsB,EAC/BT,EAAYQ,EAAOE,aAAUD,GAC9BE,SAAA,CAEA1B,GACC2B,EAAA,QAAA,IACMpB,EAAUP,MACd4B,QAAS7B,EAAM8B,IAAM7B,EACrBQ,UAAWc,EAAGf,EAAUP,OAAOQ,UAAWe,EAAOvB,OAAM0B,SAEtD1B,IAGLoB,EAAA,MAAA,IACMb,EAAUuB,aACdtB,UAAWc,EAAGf,EAAUuB,cAActB,UAAWe,EAAOO,cAAaJ,SAAA,CAErEC,EAAA,WAAA,CACEnB,UAAWc,EACTb,EACAc,EAAOQ,MACP5B,EAAgBoB,EAAOpB,mBAAgBqB,GAEzCpB,aAAc4B,EAAgBpB,EAAcR,GAC5CC,QAAS2B,EAAgBpB,EAAcP,GACvCC,OAAS2B,IACPjB,GAAa,GACbV,IAAS2B,IAEXJ,GAAI7B,KACAU,IAELC,KAEFI,GACCY,EAACO,EAAW,IACN3B,EAAUN,MACdO,UAAWc,EAAGf,EAAUN,OAAOO,UAAWe,EAAOY,WACjDlC,MAAOA,MAKjB"}
@@ -1 +1 @@
1
- {"version":3,"file":"Dialog.js","sources":["../../../src/Layout/Dialog/Dialog.tsx"],"sourcesContent":["\"use client\";\n\nimport {\n type ComponentProps,\n type ReactNode,\n useEffect,\n useRef,\n useState,\n} from \"react\";\nimport ReactDOM from \"react-dom\";\nimport styles from \"./Dialog.module.css\";\nimport { cn } from \"@studiocubics/utils\";\n\nexport type CloseReason = \"backdropClick\" | \"escapeKeyDown\";\n\ntype OmittedProps = \"onClose\" | \"onCancel\";\n\nexport interface DialogProps\n extends Omit<ComponentProps<\"dialog\">, OmittedProps> {\n open: boolean;\n onClose: (event: Event | MouseEvent, reason: CloseReason) => void;\n children?: ReactNode;\n fullWidth?: boolean;\n fullScreen?: boolean;\n disablePortal?: boolean;\n}\n\nexport function Dialog(props: DialogProps) {\n const {\n open,\n onClose,\n children,\n fullWidth = false,\n fullScreen = false,\n disablePortal = false,\n className = \"\",\n style,\n ...rest\n } = props;\n const dialogRef = useRef<HTMLDialogElement>(null);\n const [mounted, setMounted] = useState(false);\n // Only mark as mounted on client\n useEffect(() => {\n setMounted(true);\n }, []);\n\n // Show or close dialog using native API\n useEffect(() => {\n if (!mounted) return;\n\n const dialog = dialogRef.current;\n if (!dialog) return;\n\n if (open && !dialog.open) {\n dialog.showModal();\n } else if (!open && dialog.open) {\n dialog.close();\n }\n }, [open, mounted]);\n\n // Close handlers\n useEffect(() => {\n if (!mounted) return;\n\n const dialog = dialogRef.current;\n if (!dialog) return;\n\n function handleCancel(e: Event) {\n e.preventDefault();\n onClose(e, \"escapeKeyDown\");\n }\n\n function handleClick(e: MouseEvent) {\n if (!dialog) return;\n const rect = dialog.getBoundingClientRect();\n const isInDialog =\n rect.top <= e.clientY &&\n e.clientY <= rect.top + rect.height &&\n rect.left <= e.clientX &&\n e.clientX <= rect.left + rect.width;\n\n if (!isInDialog) {\n onClose(e, \"backdropClick\");\n }\n }\n\n dialog.addEventListener(\"cancel\", handleCancel);\n dialog.addEventListener(\"click\", handleClick);\n\n return () => {\n dialog.removeEventListener(\"cancel\", handleCancel);\n dialog.removeEventListener(\"click\", handleClick);\n };\n }, [onClose, mounted]);\n\n const dialogContent = (\n <dialog\n {...rest}\n ref={dialogRef}\n style={{\n width: fullWidth || fullScreen ? \"100%\" : undefined,\n height: fullScreen ? \"100%\" : undefined,\n ...style,\n }}\n className={cn(\n className,\n styles.root,\n fullScreen ? styles.fullScreen : \"\",\n fullWidth ? styles.fullWidth : \"\",\n )}\n >\n {children}\n </dialog>\n );\n\n // Only render portal on client\n if (!mounted) return null;\n if (!open) return null;\n\n if (disablePortal) return dialogContent;\n\n return ReactDOM.createPortal(dialogContent, document.body);\n}\n"],"names":["Dialog","props","open","onClose","children","fullWidth","fullScreen","disablePortal","className","style","rest","dialogRef","useRef","mounted","setMounted","useState","useEffect","dialog","current","showModal","close","addEventListener","handleCancel","handleClick","removeEventListener","e","preventDefault","rect","getBoundingClientRect","top","clientY","height","left","clientX","width","dialogContent","_jsx","ref","undefined","cn","styles","root","ReactDOM","createPortal","document","body"],"mappings":"yNA2BM,SAAUA,EAAOC,GACrB,MAAMC,KACJA,EAAIC,QACJA,EAAOC,SACPA,EAAQC,UACRA,GAAY,EAAKC,WACjBA,GAAa,EAAKC,cAClBA,GAAgB,EAAKC,UACrBA,EAAY,GAAEC,MACdA,KACGC,GACDT,EACEU,EAAYC,EAA0B,OACrCC,EAASC,GAAcC,GAAS,GAEvCC,EAAU,KACRF,GAAW,IACV,IAGHE,EAAU,KACR,IAAKH,EAAS,OAEd,MAAMI,EAASN,EAAUO,QACpBD,IAEDf,IAASe,EAAOf,KAClBe,EAAOE,aACGjB,GAAQe,EAAOf,MACzBe,EAAOG,UAER,CAAClB,EAAMW,IAGVG,EAAU,KACR,IAAKH,EAAS,OAEd,MAAMI,EAASN,EAAUO,QACzB,GAAKD,EAwBL,OAHAA,EAAOI,iBAAiB,SAAUC,GAClCL,EAAOI,iBAAiB,QAASE,GAE1B,KACLN,EAAOO,oBAAoB,SAAUF,GACrCL,EAAOO,oBAAoB,QAASD,IAxBtC,SAASD,EAAaG,GACpBA,EAAEC,iBACFvB,EAAQsB,EAAG,gBACb,CAEA,SAASF,EAAYE,GACnB,IAAKR,EAAQ,OACb,MAAMU,EAAOV,EAAOW,wBAElBD,EAAKE,KAAOJ,EAAEK,SACdL,EAAEK,SAAWH,EAAKE,IAAMF,EAAKI,QAC7BJ,EAAKK,MAAQP,EAAEQ,SACfR,EAAEQ,SAAWN,EAAKK,KAAOL,EAAKO,OAG9B/B,EAAQsB,EAAG,gBAEf,GASC,CAACtB,EAASU,IAEb,MAAMsB,EACJC,EAAA,SAAA,IACM1B,EACJ2B,IAAK1B,EACLF,MAAO,CACLyB,MAAO7B,GAAaC,EAAa,YAASgC,EAC1CP,OAAQzB,EAAa,YAASgC,KAC3B7B,GAELD,UAAW+B,EACT/B,EACAgC,EAAOC,KACPnC,EAAakC,EAAOlC,WAAa,GACjCD,EAAYmC,EAAOnC,UAAY,aAGhCD,IAKL,OAAKS,GACAX,EAEDK,EAAsB4B,EAEnBO,EAASC,aAAaR,EAAeS,SAASC,MALhC,IAMvB"}
1
+ {"version":3,"file":"Dialog.js","sources":["../../../src/Layout/Dialog/Dialog.tsx"],"sourcesContent":["\"use client\";\n\nimport {\n type ComponentProps,\n type ReactNode,\n useEffect,\n useRef,\n useState,\n} from \"react\";\nimport ReactDOM from \"react-dom\";\nimport styles from \"./Dialog.module.css\";\nimport { cn } from \"@studiocubics/utils\";\n\nexport type CloseReason = \"backdropClick\" | \"escapeKeyDown\";\n\ntype OmittedProps = \"onClose\" | \"onCancel\";\n\nexport interface DialogProps\n extends Omit<ComponentProps<\"dialog\">, OmittedProps> {\n open: boolean;\n onClose: (event: Event | MouseEvent, reason: CloseReason) => void;\n children?: ReactNode;\n fullWidth?: boolean;\n fullScreen?: boolean;\n disablePortal?: boolean;\n}\n// TODO fix dialog not reopening when closed with esc\nexport function Dialog(props: DialogProps) {\n const {\n open,\n onClose,\n children,\n fullWidth = false,\n fullScreen = false,\n disablePortal = false,\n className = \"\",\n style,\n ...rest\n } = props;\n const dialogRef = useRef<HTMLDialogElement>(null);\n const [mounted, setMounted] = useState(false);\n // Only mark as mounted on client\n useEffect(() => {\n setMounted(true);\n }, []);\n\n // Show or close dialog using native API\n useEffect(() => {\n if (!mounted) return;\n\n const dialog = dialogRef.current;\n if (!dialog) return;\n\n if (open && !dialog.open) {\n dialog.showModal();\n } else if (!open && dialog.open) {\n dialog.close();\n }\n }, [open, mounted]);\n\n // Close handlers\n useEffect(() => {\n if (!mounted) return;\n\n const dialog = dialogRef.current;\n if (!dialog) return;\n\n function handleCancel(e: Event) {\n e.preventDefault();\n onClose(e, \"escapeKeyDown\");\n }\n\n function handleClick(e: MouseEvent) {\n if (!dialog) return;\n const rect = dialog.getBoundingClientRect();\n const isInDialog =\n rect.top <= e.clientY &&\n e.clientY <= rect.top + rect.height &&\n rect.left <= e.clientX &&\n e.clientX <= rect.left + rect.width;\n\n if (!isInDialog) {\n onClose(e, \"backdropClick\");\n }\n }\n\n dialog.addEventListener(\"cancel\", handleCancel);\n dialog.addEventListener(\"click\", handleClick);\n\n return () => {\n dialog.removeEventListener(\"cancel\", handleCancel);\n dialog.removeEventListener(\"click\", handleClick);\n };\n }, [onClose, mounted]);\n\n const dialogContent = (\n <dialog\n {...rest}\n ref={dialogRef}\n style={{\n width: fullWidth || fullScreen ? \"100%\" : undefined,\n height: fullScreen ? \"100%\" : undefined,\n ...style,\n }}\n className={cn(\n className,\n styles.root,\n fullScreen ? styles.fullScreen : \"\",\n fullWidth ? styles.fullWidth : \"\",\n )}\n >\n {children}\n </dialog>\n );\n\n // Only render portal on client\n if (!mounted) return null;\n if (!open) return null;\n\n if (disablePortal) return dialogContent;\n\n return ReactDOM.createPortal(dialogContent, document.body);\n}\n"],"names":["Dialog","props","open","onClose","children","fullWidth","fullScreen","disablePortal","className","style","rest","dialogRef","useRef","mounted","setMounted","useState","useEffect","dialog","current","showModal","close","addEventListener","handleCancel","handleClick","removeEventListener","e","preventDefault","rect","getBoundingClientRect","top","clientY","height","left","clientX","width","dialogContent","_jsx","ref","undefined","cn","styles","root","ReactDOM","createPortal","document","body"],"mappings":"yNA2BM,SAAUA,EAAOC,GACrB,MAAMC,KACJA,EAAIC,QACJA,EAAOC,SACPA,EAAQC,UACRA,GAAY,EAAKC,WACjBA,GAAa,EAAKC,cAClBA,GAAgB,EAAKC,UACrBA,EAAY,GAAEC,MACdA,KACGC,GACDT,EACEU,EAAYC,EAA0B,OACrCC,EAASC,GAAcC,GAAS,GAEvCC,EAAU,KACRF,GAAW,IACV,IAGHE,EAAU,KACR,IAAKH,EAAS,OAEd,MAAMI,EAASN,EAAUO,QACpBD,IAEDf,IAASe,EAAOf,KAClBe,EAAOE,aACGjB,GAAQe,EAAOf,MACzBe,EAAOG,UAER,CAAClB,EAAMW,IAGVG,EAAU,KACR,IAAKH,EAAS,OAEd,MAAMI,EAASN,EAAUO,QACzB,GAAKD,EAwBL,OAHAA,EAAOI,iBAAiB,SAAUC,GAClCL,EAAOI,iBAAiB,QAASE,GAE1B,KACLN,EAAOO,oBAAoB,SAAUF,GACrCL,EAAOO,oBAAoB,QAASD,IAxBtC,SAASD,EAAaG,GACpBA,EAAEC,iBACFvB,EAAQsB,EAAG,gBACb,CAEA,SAASF,EAAYE,GACnB,IAAKR,EAAQ,OACb,MAAMU,EAAOV,EAAOW,wBAElBD,EAAKE,KAAOJ,EAAEK,SACdL,EAAEK,SAAWH,EAAKE,IAAMF,EAAKI,QAC7BJ,EAAKK,MAAQP,EAAEQ,SACfR,EAAEQ,SAAWN,EAAKK,KAAOL,EAAKO,OAG9B/B,EAAQsB,EAAG,gBAEf,GASC,CAACtB,EAASU,IAEb,MAAMsB,EACJC,EAAA,SAAA,IACM1B,EACJ2B,IAAK1B,EACLF,MAAO,CACLyB,MAAO7B,GAAaC,EAAa,YAASgC,EAC1CP,OAAQzB,EAAa,YAASgC,KAC3B7B,GAELD,UAAW+B,EACT/B,EACAgC,EAAOC,KACPnC,EAAakC,EAAOlC,WAAa,GACjCD,EAAYmC,EAAOnC,UAAY,aAGhCD,IAKL,OAAKS,GACAX,EAEDK,EAAsB4B,EAEnBO,EAASC,aAAaR,EAAeS,SAASC,MALhC,IAMvB"}
@@ -1,2 +1,2 @@
1
- import{jsxs as o,Fragment as r,jsx as t}from"react/jsx-runtime";import{useDisclosure as i}from"@studiocubics/hooks";import{Button as s}from"../../Inputs/Button/Button.js";import"react";import"../../Inputs/Checkbox/CheckboxProvider.js";import{cn as e}from"@studiocubics/utils";import"../../Display/InputErrors/InputErrors.js";import"../../Display/Accordion/Accordion.js";import"../../Cards/GlassCard/GlassCard.js";import"../../Display/Chip/Chip.js";import"../../Display/IdentityDisplay/IdentityDisplay.js";import"../../Display/Kbd/buttonList.js";import"../../Display/List/List.js";import"react-dom";import{Dialog as n}from"../Dialog/Dialog.js";import p from"./Drawer.module.css.js";const l=r=>o("svg",{width:"24",height:"24",stroke:"currentColor",...r,xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",children:[t("rect",{width:"18",height:"18",x:"3",y:"3",rx:"2"}),t("path",{d:"M9 3v18"}),t("path",{d:"m16 15-3-3 3-3"})]}),d=r=>o("svg",{width:"24",height:"24",stroke:"currentColor",...r,xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",children:[t("rect",{width:"18",height:"18",x:"3",y:"3",rx:"2"}),t("path",{d:"M15 3v18"}),t("path",{d:"m8 9 3 3-3 3"})]});function h(h){const{side:a="right",slotProps:c,children:m,className:u,...w}=h,{open:j,handleOpen:g,handleClose:k}=i();return o(r,{children:[t(s,{onClick:g,children:t("left"==a?d:l,{})}),t(n,{open:j,onClose:k,className:e(u,p.drawer),...w,children:m})]})}export{h as Drawer};
1
+ import{jsxs as r,Fragment as o,jsx as t}from"react/jsx-runtime";import{useDisclosure as i}from"@studiocubics/hooks";import{Button as s}from"../../Inputs/Button/Button.js";import"react";import"../../Inputs/Checkbox/CheckboxProvider.js";import{cn as e}from"@studiocubics/utils";import"../../Display/InputErrors/InputErrors.js";import"../../Display/Accordion/Accordion.js";import"../../Cards/GlassCard/GlassCard.js";import"../../Display/Chip/Chip.js";import"../../Display/IdentityDisplay/IdentityDisplay.js";import"../../Display/Kbd/buttonList.js";import"../../Display/List/List.js";import"../../Cards/Card/Card.js";import"../../Cards/CollectionItemCard/CollectionItemCard.js";import"react-dom";import{Dialog as n}from"../Dialog/Dialog.js";import l from"./Drawer.module.css.js";const p=o=>r("svg",{width:"24",height:"24",stroke:"currentColor",...o,xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",children:[t("rect",{width:"18",height:"18",x:"3",y:"3",rx:"2"}),t("path",{d:"M9 3v18"}),t("path",{d:"m16 15-3-3 3-3"})]}),d=o=>r("svg",{width:"24",height:"24",stroke:"currentColor",...o,xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",children:[t("rect",{width:"18",height:"18",x:"3",y:"3",rx:"2"}),t("path",{d:"M15 3v18"}),t("path",{d:"m8 9 3 3-3 3"})]});function a(a){const{side:m="right",slotProps:c,children:h,className:u,...C}=a,{open:w,handleOpen:j,handleClose:g}=i();return r(o,{children:[t(s,{onClick:j,children:t("left"==m?d:p,{})}),t(n,{open:w,onClose:g,className:e(u,l.drawer),...C,children:h})]})}export{a as Drawer};
2
2
  //# sourceMappingURL=Drawer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Drawer.js","sources":["../../../src/Layout/Drawer/Drawer.tsx"],"sourcesContent":["import { useDisclosure } from \"@studiocubics/hooks\";\nimport { Button, type ButtonProps } from \"../../Inputs/_index\";\nimport { Dialog, type DialogProps } from \"../../Layout/Dialog/Dialog\";\nimport type { ComponentProps } from \"react\";\nimport { cn } from \"@studiocubics/utils\";\nimport styles from \"./Drawer.module.css\";\n\nexport interface DrawerProps extends Omit<DialogProps, \"open\" | \"onClose\"> {\n /**\n * @default \"right\"\n */\n side?: \"right\" | \"left\";\n\n slotProps?: {\n button?: ButtonProps;\n };\n}\n\nconst PanelLeft = (props: ComponentProps<\"svg\">) => {\n return (\n <svg\n width=\"24\"\n height=\"24\"\n stroke=\"currentColor\"\n {...props}\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n >\n <rect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\" />\n <path d=\"M9 3v18\" />\n <path d=\"m16 15-3-3 3-3\" />\n </svg>\n );\n};\nconst PanelRight = (props: ComponentProps<\"svg\">) => {\n return (\n <svg\n width=\"24\"\n height=\"24\"\n stroke=\"currentColor\"\n {...props}\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n >\n <rect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\" />\n <path d=\"M15 3v18\" />\n <path d=\"m8 9 3 3-3 3\" />\n </svg>\n );\n};\n\n/**\n * Opens a drawer from the side of the screen\n */\nexport function Drawer(props: DrawerProps) {\n const { side = \"right\", slotProps, children, className, ...rest } = props;\n const { open, handleOpen, handleClose } = useDisclosure();\n\n return (\n <>\n <Button onClick={handleOpen}>\n {side == \"left\" ? <PanelRight /> : <PanelLeft />}\n </Button>\n <Dialog\n open={open}\n onClose={handleClose}\n className={cn(className, styles.drawer)}\n {...rest}\n >\n {children}\n </Dialog>\n </>\n );\n}\n"],"names":["PanelLeft","props","_jsxs","width","height","stroke","xmlns","viewBox","fill","children","_jsx","x","y","rx","d","PanelRight","Drawer","side","slotProps","className","rest","open","handleOpen","handleClose","useDisclosure","_Fragment","Button","onClick","Dialog","onClose","cn","styles","drawer"],"mappings":"yqBAkBA,MAAMA,EAAaC,GAEfC,EAAA,MAAA,CACEC,MAAM,KACNC,OAAO,KACPC,OAAO,kBACHJ,EACJK,MAAM,6BACNC,QAAQ,YACRC,KAAK,OAAM,eACE,IAAG,iBACD,0BACC,QAAOC,SAAA,CAEvBC,EAAA,OAAA,CAAMP,MAAM,KAAKC,OAAO,KAAKO,EAAE,IAAIC,EAAE,IAAIC,GAAG,MAC5CH,EAAA,OAAA,CAAMI,EAAE,YACRJ,EAAA,OAAA,CAAMI,EAAE,sBAIRC,EAAcd,GAEhBC,EAAA,MAAA,CACEC,MAAM,KACNC,OAAO,KACPC,OAAO,kBACHJ,EACJK,MAAM,6BACNC,QAAQ,YACRC,KAAK,OAAM,eACE,IAAG,iBACD,0BACC,QAAOC,SAAA,CAEvBC,EAAA,OAAA,CAAMP,MAAM,KAAKC,OAAO,KAAKO,EAAE,IAAIC,EAAE,IAAIC,GAAG,MAC5CH,EAAA,OAAA,CAAMI,EAAE,aACRJ,EAAA,OAAA,CAAMI,EAAE,oBAQR,SAAUE,EAAOf,GACrB,MAAMgB,KAAEA,EAAO,QAAOC,UAAEA,EAAST,SAAEA,EAAQU,UAAEA,KAAcC,GAASnB,GAC9DoB,KAAEA,EAAIC,WAAEA,EAAUC,YAAEA,GAAgBC,IAE1C,OACEtB,EAAAuB,EAAA,CAAAhB,SAAA,CACEC,EAACgB,EAAM,CAACC,QAASL,EAAUb,SACPC,EAAT,QAARO,EAAkBF,EAAiBf,EAAP,CAAA,KAE/BU,EAACkB,EAAM,CACLP,KAAMA,EACNQ,QAASN,EACTJ,UAAWW,EAAGX,EAAWY,EAAOC,WAC5BZ,EAAIX,SAEPA,MAIT"}
1
+ {"version":3,"file":"Drawer.js","sources":["../../../src/Layout/Drawer/Drawer.tsx"],"sourcesContent":["import { useDisclosure } from \"@studiocubics/hooks\";\nimport { Button, type ButtonProps } from \"../../Inputs/_index\";\nimport { Dialog, type DialogProps } from \"../../Layout/Dialog/Dialog\";\nimport type { ComponentProps } from \"react\";\nimport { cn } from \"@studiocubics/utils\";\nimport styles from \"./Drawer.module.css\";\n\nexport interface DrawerProps extends Omit<DialogProps, \"open\" | \"onClose\"> {\n /**\n * @default \"right\"\n */\n side?: \"right\" | \"left\";\n\n slotProps?: {\n button?: ButtonProps;\n };\n}\n\nconst PanelLeft = (props: ComponentProps<\"svg\">) => {\n return (\n <svg\n width=\"24\"\n height=\"24\"\n stroke=\"currentColor\"\n {...props}\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n >\n <rect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\" />\n <path d=\"M9 3v18\" />\n <path d=\"m16 15-3-3 3-3\" />\n </svg>\n );\n};\nconst PanelRight = (props: ComponentProps<\"svg\">) => {\n return (\n <svg\n width=\"24\"\n height=\"24\"\n stroke=\"currentColor\"\n {...props}\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n >\n <rect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\" />\n <path d=\"M15 3v18\" />\n <path d=\"m8 9 3 3-3 3\" />\n </svg>\n );\n};\n\n/**\n * Opens a drawer from the side of the screen\n */\nexport function Drawer(props: DrawerProps) {\n const { side = \"right\", slotProps, children, className, ...rest } = props;\n const { open, handleOpen, handleClose } = useDisclosure();\n\n return (\n <>\n <Button onClick={handleOpen}>\n {side == \"left\" ? <PanelRight /> : <PanelLeft />}\n </Button>\n <Dialog\n open={open}\n onClose={handleClose}\n className={cn(className, styles.drawer)}\n {...rest}\n >\n {children}\n </Dialog>\n </>\n );\n}\n"],"names":["PanelLeft","props","_jsxs","width","height","stroke","xmlns","viewBox","fill","children","_jsx","x","y","rx","d","PanelRight","Drawer","side","slotProps","className","rest","open","handleOpen","handleClose","useDisclosure","_Fragment","Button","onClick","Dialog","onClose","cn","styles","drawer"],"mappings":"uwBAkBA,MAAMA,EAAaC,GAEfC,EAAA,MAAA,CACEC,MAAM,KACNC,OAAO,KACPC,OAAO,kBACHJ,EACJK,MAAM,6BACNC,QAAQ,YACRC,KAAK,OAAM,eACE,IAAG,iBACD,0BACC,QAAOC,SAAA,CAEvBC,EAAA,OAAA,CAAMP,MAAM,KAAKC,OAAO,KAAKO,EAAE,IAAIC,EAAE,IAAIC,GAAG,MAC5CH,EAAA,OAAA,CAAMI,EAAE,YACRJ,EAAA,OAAA,CAAMI,EAAE,sBAIRC,EAAcd,GAEhBC,EAAA,MAAA,CACEC,MAAM,KACNC,OAAO,KACPC,OAAO,kBACHJ,EACJK,MAAM,6BACNC,QAAQ,YACRC,KAAK,OAAM,eACE,IAAG,iBACD,0BACC,QAAOC,SAAA,CAEvBC,EAAA,OAAA,CAAMP,MAAM,KAAKC,OAAO,KAAKO,EAAE,IAAIC,EAAE,IAAIC,GAAG,MAC5CH,EAAA,OAAA,CAAMI,EAAE,aACRJ,EAAA,OAAA,CAAMI,EAAE,oBAQR,SAAUE,EAAOf,GACrB,MAAMgB,KAAEA,EAAO,QAAOC,UAAEA,EAAST,SAAEA,EAAQU,UAAEA,KAAcC,GAASnB,GAC9DoB,KAAEA,EAAIC,WAAEA,EAAUC,YAAEA,GAAgBC,IAE1C,OACEtB,EAAAuB,EAAA,CAAAhB,SAAA,CACEC,EAACgB,EAAM,CAACC,QAASL,EAAUb,SACPC,EAAT,QAARO,EAAkBF,EAAiBf,EAAP,CAAA,KAE/BU,EAACkB,EAAM,CACLP,KAAMA,EACNQ,QAASN,EACTJ,UAAWW,EAAGX,EAAWY,EAAOC,WAC5BZ,EAAIX,SAEPA,MAIT"}
package/dist/index.css CHANGED
@@ -1 +1 @@
1
- .Card-module_square__SK-KQ{aspect-ratio:1}.Card-module_fullWidth__pIEIZ{width:100%}.Card-module_size_sm__B3eSI{border-radius:var(--shape-br-sm);padding:var(--spacing-gap-2)}.Card-module_size_md__15alI{border-radius:var(--shape-br-md);padding:var(--spacing-gap-4)}.Card-module_size_lg__HCTUY{border-radius:var(--shape-br-lg);padding:var(--spacing-gap-6)}.Card-module_outlined__TPads{background:none;border:1px solid var(--color-outline)}.Card-module_contained__EFPqh{backdrop-filter:var(--backdrop-blur);background:var(--color-surface-alpha)}.CollectionItemCard-module_root__v3IlF{align-items:stretch;background-color:var(--color-background);border-radius:var(--shape-br-md);display:flex;flex-direction:column;overflow:hidden;pointer-events:none}.CollectionItemCard-module_image__TfkAn{align-items:center;display:flex;height:20svh;justify-content:center;overflow:hidden;width:100%;&>img{height:100%;object-fit:cover;width:100%}}.CollectionItemCard-module_main__47qRO{border-radius:calc(var(--shape-br-md) - var(--spacing-gap));color:var(--color-on-surface);display:flex;flex:1;flex-direction:column;gap:.1618em;margin:var(--spacing-gap);overflow:hidden;padding:var(--spacing-gap-2) calc(var(--spacing-gap-2)*1.618);pointer-events:all;transition:all var(--transition-time) var(--transition-tf);&>p{align-items:center;display:flex}}.CollectionItemCard-module_description__BQapV{color:var(--color-on-background-faint);font-size:.8em}.CollectionItemCard-module_subtitle__gThMk{color:var(--color-on-background-faint);font-size:1em}.CollectionItemCard-module_clickable__d3rRV{transition:all var(--transition-time) var(--transition-tf);&>.CollectionItemCard-module_main__47qRO{background:var(--color-background);cursor:pointer}&:has(.CollectionItemCard-module_main__47qRO:hover){background:var(--color-background-faint)}}.CollectionItemCard-module_title__B-sLi{align-items:center;display:flex;gap:var(--spacing-gap-2);&>h4{flex:1;font-size:1.2em}}.CollectionItemCard-module_footer__-8LZo{display:flex;justify-content:flex-end;pointer-events:all}@container (min-width:600px){.CollectionItemCard-module_root__v3IlF{flex-direction:row;&>.CollectionItemCard-module_image__TfkAn{aspect-ratio:1;height:auto;max-width:6rem;min-width:3rem;width:10vw}}}.ClampedText-module_root__WGLiO{-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.Chip-module_root__aw3YS{--badge-outline-color:var(--color-outline);--badge-color:var(--color-on-surface);--badge-background:var(--color-surface);align-items:center;background:var(--badge-background);border:1px solid var(--badge-outline-color);color:var(--badge-color);display:flex;flex-wrap:wrap;font-size:.9em;gap:var(--spacing-gap);width:fit-content}.Chip-module_outlined__MdLuF{background:none}.Chip-module_contained__h-xuY{border:none}.Chip-module_size_sm__v0VIz{border-radius:var(--shape-br-xs);font-size:.8em;padding:calc(var(--spacing-gap)/2) calc((var(--spacing-gap)/2)*1.618)}.Chip-module_size_md__Shvvz{border-radius:var(--shape-br-sm);padding:calc(var(--spacing-gap-2)/2) calc((var(--spacing-gap-2)/2)*1.618)}.Chip-module_size_lg__sqT26{border-radius:var(--shape-br-sm);font-size:1em;padding:calc(var(--spacing-gap-3)/2) calc((var(--spacing-gap-3)/2)*1.618)}.Chip-module_root__aw3YS[data-color=primary]{--badge-color:var(--color-primary);--badge-background:none;--badge-outline-color:var(--color-primary)}.Chip-module_root__aw3YS[data-color=secondary]{--badge-color:var(--color-secondary);--badge-background:none;--badge-outline-color:var(--color-secondary)}.Chip-module_root__aw3YS[data-color=error]{--badge-color:var(--color-error);--badge-background:none;--badge-outline-color:var(--color-error)}.Chip-module_contained__h-xuY[data-color=primary]{--badge-color:var(--color-on-primary);--badge-background:var(--color-primary)}.Chip-module_contained__h-xuY[data-color=secondary]{--badge-color:var(--color-on-secondary);--badge-background:var(--color-secondary)}.Chip-module_contained__h-xuY[data-color=error]{--badge-color:var(--color-on-error);--badge-background:var(--color-error)}.Ripple-module_container__4Dv-f{border-radius:inherit;inset:0;overflow:hidden;pointer-events:none;position:absolute}.Ripple-module_ripple__-a0Jv{--ripple-color:currentColor;--ripple-duration:750ms;animation:Ripple-module_ripple-expand__jWi54 var(--ripple-duration,.75s) var(--transition-tf);background:var(--ripple-color);border-radius:50%;filter:blur(10px);opacity:.6;pointer-events:none;position:absolute;transform:scale(0)}@keyframes Ripple-module_ripple-expand__jWi54{to{opacity:0;transform:scale(2)}}.Button-module_root__hmumx{--button-color:var(--color-on-background);--button-background:none;--button-hover-color:var(--color-on-background);--button-hover-background:var(--color-background-faint);--button-outline-color:var(--color-on-background);align-items:center;background:var(--button-background);border:none;color:var(--button-color);cursor:pointer;display:flex;font-family:var(--font-p);font-size:var(--fs-body2);font-weight:700;gap:var(--spacing-gap);justify-content:center;padding:var(--spacing-gap) calc(var(--spacing-gap-3)*1.618);position:relative;transition:all var(--transition-time) var(--transition-tf);&:not(:disabled):hover{background:color-mix(in srgb,var(--button-hover-background) 50%,transparent);color:var(--button-hover-color)}&:disabled{opacity:.5}}.Button-module_iconContainer__-VER1{align-items:center;display:flex;height:max-content;justify-content:center}.Button-module_square__Wu8jt{padding:var(--spacing-gap-2)}.Button-module_root__hmumx:disabled{cursor:not-allowed}.Button-module_root__hmumx:focus-visible{outline:var(--focus-ring)}.Button-module_size_sm__Qk6rp{border-radius:var(--shape-br-sm);font-size:.9em;padding:var(--spacing-gap) calc(var(--spacing-gap)*1.618);&.Button-module_square__Wu8jt{padding:var(--spacing-gap)}}.Button-module_size_md__qWVt-{border-radius:var(--shape-br-md);padding:var(--spacing-gap-2) calc(var(--spacing-gap-2)*1.618);&.Button-module_square__Wu8jt{padding:var(--spacing-gap-2)}}.Button-module_size_lg__e7Ely{border-radius:var(--shape-br-lg);font-size:var(--fs-body);padding:var(--spacing-gap-3) calc(var(--spacing-gap-3)*1.618);&.Button-module_square__Wu8jt{padding:var(--spacing-gap-3)}}.Button-module_contained__tlUyK{--button-color:var(--color-background);--button-background:var(--color-on-background);&:not(:disabled):hover{background:var(--button-hover-background)}}.Button-module_outlined__rgbFf{border:1px solid var(--button-outline-color)}.Button-module_position_absolute__NN8P1{position:absolute}.Button-module_position_relative__r0CV0{position:relative}.Button-module_position_fixed__LilZy{position:fixed}.Button-module_position_sticky__2ixpW{position:sticky}.Button-module_fullWidth__5o7qa{width:100%}.Button-module_root__hmumx[data-color=primary]{--button-color:var(--color-primary);--button-background:none;--button-hover-color:var(--color-on-primary-container);--button-hover-background:var(--color-primary-container);--button-outline-color:var(--color-primary)}.Button-module_root__hmumx[data-color=secondary]{--button-color:var(--color-secondary);--button-background:none;--button-hover-color:var(--color-on-secondary-container);--button-hover-background:var(--color-secondary-container);--button-outline-color:var(--color-secondary)}.Button-module_root__hmumx[data-color=error]{--button-color:var(--color-error);--button-background:none;--button-hover-color:var(--color-on-error-container);--button-hover-background:var(--color-error-container);--button-outline-color:var(--color-error)}.Button-module_contained__tlUyK[data-color=primary]{--button-color:var(--color-on-primary);--button-background:var(--color-primary)}.Button-module_contained__tlUyK[data-color=secondary]{--button-color:var(--color-on-secondary);--button-background:var(--color-secondary)}.Button-module_contained__tlUyK[data-color=error]{--button-color:var(--color-on-error);--button-background:var(--color-error)}.Tooltip-module_root__nip6a{--spacing-arrow-offset:6px;background:var(--color-surface);border-radius:var(--shape-br-sm);color:var(--color-on-surface);font-size:var(--fs-body2);font-weight:700;padding:var(--spacing-gap) var(--spacing-gap-2);pointer-events:none;position:fixed;text-align:center;z-index:9999}.Tooltip-module_root__nip6a.Tooltip-module_arrow-bottom__CuvK2{margin-bottom:var(--spacing-arrow-offset)}.Tooltip-module_root__nip6a.Tooltip-module_arrow-top__XaUyR{margin-top:var(--spacing-arrow-offset)}.Tooltip-module_root__nip6a.Tooltip-module_arrow-right__O1HnI{margin-left:var(--spacing-arrow-offset)}.Tooltip-module_root__nip6a.Tooltip-module_arrow-left__4o1J4{margin-right:var(--spacing-arrow-offset)}.Tooltip-module_root__nip6a.Tooltip-module_arrow-topLeft__WyNAm{border-top-left-radius:0}.Tooltip-module_root__nip6a.Tooltip-module_arrow-topRight__-ILdh{border-top-right-radius:0}.Tooltip-module_root__nip6a.Tooltip-module_arrow-bottomLeft__E6w40{border-bottom-left-radius:0}.Tooltip-module_root__nip6a.Tooltip-module_arrow-bottomRight__mefBZ{border-bottom-right-radius:0}.Tooltip-module_root__nip6a:after{content:"";height:0;position:absolute;width:0}.Tooltip-module_arrow-bottom__CuvK2:after{border-color:var(--color-surface) transparent transparent transparent;border-style:solid;border-width:var(--spacing-arrow-offset) var(--spacing-arrow-offset) 0 var(--spacing-arrow-offset);bottom:calc(var(--spacing-arrow-offset)*-1);left:50%;transform:translateX(-50%)}.Tooltip-module_arrow-top__XaUyR:after{border-color:transparent transparent var(--color-surface) transparent;border-style:solid;border-width:0 var(--spacing-arrow-offset) var(--spacing-arrow-offset) var(--spacing-arrow-offset);left:50%;top:calc(var(--spacing-arrow-offset)*-1);transform:translateX(-50%)}.Tooltip-module_arrow-right__O1HnI:after{border-color:transparent transparent transparent var(--color-surface);border-style:solid;border-width:var(--spacing-arrow-offset) 0 var(--spacing-arrow-offset) var(--spacing-arrow-offset);right:calc(var(--spacing-arrow-offset)*-1);top:50%;transform:translateY(-50%)}.Tooltip-module_arrow-left__4o1J4:after{border-color:transparent var(--color-surface) transparent transparent;border-style:solid;border-width:var(--spacing-arrow-offset) var(--spacing-arrow-offset) var(--spacing-arrow-offset) 0;left:calc(var(--spacing-arrow-offset)*-1);top:50%;transform:translateY(-50%)}.Tooltip-module_arrow-topLeft__WyNAm:after{left:0}.Tooltip-module_arrow-topLeft__WyNAm:after,.Tooltip-module_arrow-topRight__-ILdh:after{border-color:transparent transparent var(--color-surface) transparent;border-style:solid;border-width:0 var(--spacing-arrow-offset) var(--spacing-arrow-offset) var(--spacing-arrow-offset);top:calc(var(--spacing-arrow-offset)*-1)}.Tooltip-module_arrow-topRight__-ILdh:after{right:0}.Tooltip-module_arrow-bottomLeft__E6w40:after{left:0}.Tooltip-module_arrow-bottomLeft__E6w40:after,.Tooltip-module_arrow-bottomRight__mefBZ:after{border-color:var(--color-surface) transparent transparent transparent;border-style:solid;border-width:var(--spacing-arrow-offset) var(--spacing-arrow-offset) 0 var(--spacing-arrow-offset);bottom:calc(var(--spacing-arrow-offset)*-1)}.Tooltip-module_arrow-bottomRight__mefBZ:after{right:0}.Popover-module_root__HE-kk{background:none;border:none;position:absolute}.Popover-module_root__HE-kk.Popover-module_open__1aLk-::backdrop{cursor:auto}.Dialog-module_root__tN0RQ[open]{backdrop-filter:var(--backdrop-blur);background-color:var(--color-surface);border-radius:var(--shape-br-lg);margin:auto;max-height:80%;max-width:45rem;min-width:350px;overflow:hidden;padding:var(--spacing-gap-6);width:50%;&.Dialog-module_fullScreen__BG9mu,&.Dialog-module_fullWidth__WXiYO{max-width:unset;width:100%}&.Dialog-module_fullScreen__BG9mu{height:100%;max-height:unset}}.Dialog-module_root__tN0RQ::backdrop{backdrop-filter:var(--backdrop-blur)}.GlassCard-module_root__rmCxh{--glass-tint:var(--color-primary);--glass-border-width:2px;--glass-border-radius:var(--shape-br-md);--glass-border-color:var(--color-outline);--glass-mouse-pointer-color:color-mix(in srgb,var(--color-primary) 50%,transparent);--glass-shadow:color-mix(in srgb,var(--color-primary) 15%,transparent);--glass-backdrop-blur:5px;--glass-position:relative;backdrop-filter:blur(var(--glass-backdrop-blur));border-radius:var(--glass-border-radius);box-shadow:inset 0 0 4px var(--glass-shadow);isolation:isolate;position:var(--glass-position);&:after{--glass-reflection-i:color-mix(in srgb,var(--glass-tint) 20%,transparent);--glass-reflection:color-mix(in srgb,var(--glass-tint) 40%,transparent);--glass-reflection-w:#ffffff79;background-image:linear-gradient(var(--gradient-angle,255deg),var(--glass-reflection-w) 0,var(--glass-reflection) .5%,transparent 30%,transparent 70%,var(--glass-reflection-i) 100%);opacity:var(--glass-reflection-intensity,1);z-index:-2}&:after,&:before{border-radius:inherit;content:"";inset:0;mask:linear-gradient(#000 0 0) exclude,linear-gradient(#000 0 0) content-box;padding:var(--glass-border-width);position:absolute}&:before{background:radial-gradient(250px circle at var(--mouse-x) var(--mouse-y),var(--glass-mouse-pointer-color),transparent 40%);opacity:1;pointer-events:none;transition:opacity var(--transition-time);z-index:-1}}.Accordion-module_summary__3uXXu{align-items:center;border-radius:var(--shape-br-md);cursor:pointer;display:flex;gap:var(--spacing-gap);isolation:isolate;padding:var(--spacing-gap);position:relative;transition:all var(--transition-time) var(--transition-tf);&:hover{background:var(--color-background-faint)}}.Accordion-module_highlight__YzcnA{inset:0;position:absolute;z-index:-1}.Accordion-module_summaryContent__-Wu52{border-radius:calc(var(--shape-br-md) - var(--spacing-gap));container-type:inline-size;flex:1;overflow:hidden}.Accordion-module_marker__7gmt8{flex:0 0 var(--spacing-gap-4);height:var(--spacing-gap-4);position:relative;width:var(--spacing-gap-4);&>svg{inset:0;position:absolute}}.Accordion-module_root__-tG1G{background:var(--color-background);border-radius:var(--shape-br-md);margin-block:0;overflow:hidden;transition:margin-block var(--transition-time) var(--transition-tf);@media (prefers-reduced-motion:no-preference){interpolate-size:allow-keywords}&::details-content{max-height:0;overflow:hidden;transition:content-visibility var(--transition-time) allow-discrete,max-height var(--transition-time) var(--transition-tf)}&[open]{margin-block:var(--spacing-gap-2);&>.Accordion-module_summary__3uXXu{background:var(--color-surface)}&::details-content{max-height:999px;@supports (interpolate-size:allow-keywords){max-height:auto}}}}.Accordion-module_content__NPbBr{padding:var(--spacing-gap-3)}.IdentityDisplay-module_root__nEI-t{border-radius:var(--shape-br-md);display:flex;flex-direction:column;overflow:hidden;padding:var(--spacing-gap-2);position:relative;transition:padding var(--transition-time) var(--transition-tf),width .1s var(--transition-time) var(--transition-tf),color var(--transition-time) var(--transition-tf),background var(--transition-time) var(--transition-tf)}.IdentityDisplay-module_clickable__Xloez{cursor:pointer;&:hover{background:var(--color-primary-container);color:var(--color-on-primary-container)}}.IdentityDisplay-module_main__27-fb{align-items:center;display:flex;gap:var(--spacing-gap-2)}.IdentityDisplay-module_image__YD-pm{align-items:center;display:flex;justify-content:center;&>img{border-radius:50%;height:48px;object-fit:cover;overflow:hidden;width:48px}}.IdentityDisplay-module_details__kSAvW{color:inherit;display:flex;flex-direction:column;& h4{font-size:1.1em;font-weight:700}& h4,&>p{overflow:hidden;text-align:left;text-overflow:ellipsis;white-space:nowrap}&>p{color:var(--color-on-background-faint);font-size:.9em;font-weight:400}}.IdentityDisplay-module_desc__QHEz8{font-size:.9em}.IdentityDisplay-module_image-only__LBjOr{padding:0;& .IdentityDisplay-module_image__YD-pm,& .IdentityDisplay-module_main__27-fb{width:100%}.IdentityDisplay-module_desc__QHEz8,.IdentityDisplay-module_details__kSAvW{display:none}}.IdentityDisplay-module_square__f2jb0{.IdentityDisplay-module_main__27-fb{align-items:center;flex-direction:column}.IdentityDisplay-module_details__kSAvW{&>h4,&>p{text-align:center}}.IdentityDisplay-module_desc__QHEz8{display:none}}.IdentityDisplay-module_compact__ilrg-{.IdentityDisplay-module_desc__QHEz8{display:none}}.PoweredByBanner-module_root__EtEjU{align-items:center;color:inherit;display:flex;gap:var(--spacing-gap);justify-content:center;padding-block:var(--spacing-gap);width:100%}.PoweredByBanner-module_size_sm__8S6Jb{font-size:var(--fs-body2)}.PoweredByBanner-module_size_md__HKrCD{font-size:var(--fs-body)}.PoweredByBanner-module_size_lg__6oEhl{font-size:var(--fs-body);font-weight:700}.Cursor-module_root__xyOg-{height:100vh;isolation:isolate;left:0;pointer-events:none;position:fixed;top:0;width:100%;z-index:-1}.Cursor-module_main__FUTOy{background:radial-gradient(41.94% 82.95% at 50% 50%,color-mix(in srgb,var(--color-primary) 50%,transparent) 0,color-mix(in srgb,var(--color-secondary) 50%,transparent) 100%);border-radius:50%;filter:blur(90px);position:absolute;transition-duration:var(--transition-time);transition-property:width,height,filter;transition-timing-function:var(--transition-tf);translate:-50% -50%}@keyframes Spinner-module_spinning__1J1HL{12%{x:13px;y:1px}25%{x:13px;y:1px}37%{x:13px;y:13px}50%{x:13px;y:13px}62%{x:1px;y:13px}75%{x:1px;y:13px}87%{x:1px;y:1px}}.Spinner-module_main__dBojo{animation:Spinner-module_spinning__1J1HL 1.6s linear infinite;animation-delay:-1.6s}.Spinner-module_trailing__jtCPy{fill-opacity:.5;animation-delay:-1s}.TransitionAnimation-module_growEnter__bI9tZ{max-height:0;max-width:0;opacity:0;overflow:hidden;transform:scale(0)}.TransitionAnimation-module_growEnterActive__yXQ1B{transition:transform var(--transition-tf),max-width var(--transition-tf),max-height var(--transition-tf),opacity var(--transition-tf)}.TransitionAnimation-module_growEnterActive__yXQ1B,.TransitionAnimation-module_growExit__xZ6nz{max-height:100vh;max-width:100vw;opacity:1;overflow:hidden;transform:scale(1)}.TransitionAnimation-module_growExitActive__t6tOi{max-height:0;max-width:0;opacity:0;overflow:hidden;transform:scale(0);transition:transform var(--transition-tf),max-width var(--transition-tf),max-height var(--transition-tf),opacity var(--transition-tf)}.TransitionAnimation-module_fadeEnter__ZQc-U{opacity:0}.TransitionAnimation-module_fadeEnterActive__ZQP8J{opacity:1;transition:opacity var(--transition-tf)}.TransitionAnimation-module_fadeExit__eYDrT{opacity:1}.TransitionAnimation-module_fadeExitActive__1HT2J{opacity:0;transition:opacity var(--transition-tf)}.TransitionAnimation-module_slideEnter__9OKMI{opacity:0;transform:translateY(-20px)}.TransitionAnimation-module_slideEnterActive__DMXWB{opacity:1;transform:translateY(0);transition:transform var(--transition-tf),opacity var(--transition-tf)}.TransitionAnimation-module_slideExit__P7dM2{opacity:1;transform:translateY(0)}.TransitionAnimation-module_slideExitActive__Z4put{opacity:0;transform:translateY(-20px);transition:transform var(--transition-tf),opacity var(--transition-tf)}.TransitionAnimation-module_zoomEnter__6ELcc{max-height:0;max-width:0;opacity:0;overflow:hidden;transform:scale(.5)}.TransitionAnimation-module_zoomEnterActive__2T6j4{transition:transform var(--transition-tf),max-width var(--transition-tf),max-height var(--transition-tf),opacity var(--transition-tf)}.TransitionAnimation-module_zoomEnterActive__2T6j4,.TransitionAnimation-module_zoomExit__SUc94{max-height:100vh;max-width:100vw;opacity:1;overflow:hidden;transform:scale(1)}.TransitionAnimation-module_zoomExitActive__QWH8r{max-height:0;max-width:0;opacity:0;overflow:hidden;transform:scale(1.5);transition:transform var(--transition-tf),max-width var(--transition-tf),max-height var(--transition-tf),opacity var(--transition-tf)}.InputErrors-module_root__APxhq{color:var(--color-error);display:flex;flex-direction:column;font-size:.9em}.Kbd-module_root__OFPCy{align-items:center;display:flex;gap:var(--spacing-gap)}.Kbd-module_kbd__F-c6z{--kbd-size-x:1;--kbd-size-y:1;--kbd-base:30px;display:flex;flex-direction:column;font-family:ui-monospace,SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:60%;gap:.1em;height:calc(var(--kbd-size-y)*var(--kbd-base));justify-content:center;padding:.2em;text-align:center;width:calc(var(--kbd-size-x)*var(--kbd-base));&.Kbd-module_surface__xpquz{background:#313133;border-radius:.4em;color:#ebd6dc}}.LabeledValue-module_root__Vu-iA{align-items:center;display:flex;flex-direction:row;padding-block:var(--spacing-gap);&>.LabeledValue-module_content__EIsuq{flex:1}&>label{color:var(--color-on-background-faint);font-size:.9em;padding-right:var(--spacing-gap-2)}&>.LabeledValue-module_content__EIsuq{border-left:1px solid var(--color-outline);padding-left:var(--spacing-gap-2)}}@container (max-width:400px){.LabeledValue-module_root__Vu-iA{flex-direction:column;&>label{padding-right:0}&>.LabeledValue-module_content__EIsuq{border-left:none;padding-left:0}}}.List-module_root__VY-ni{display:flex;flex-direction:column;list-style-type:none;padding-inline:var(--spacing-gap-3);position:relative}.List-module_root__VY-ni:has(.List-module_shortened__cbFoK){padding:0}.List-module_secondary__lU6qH{border-left:1px solid var(--color-outline);margin-left:var(--spacing-gap-3);margin-block:var(--spacing-gap-2);padding-inline:var(--spacing-gap)}.List-module_listItem__8lcu6{--list-color:var(--color-on-background);--list-background:transparent;--list-hover-color:var(--color-on-background);--list-hover-background:var(--color-background-faint);--list-selected-color:var(--color-primary);--list-selected-background:none;--list-selected-hover-color:var(--color-on-background);--list-selected-hover-background:none;align-items:center;background:var(--list-background);border-radius:var(--shape-br-sm);color:var(--list-color);display:flex;gap:var(--spacing-gap);justify-content:center;overflow:hidden;padding:calc(var(--spacing-gap-3)/1.75) calc(var(--spacing-gap-3)*1.618/1.75);position:relative;transition:all var(--transition-time) var(--transition-tf)}.List-module_listItem__8lcu6.List-module_clickable__3Fj4n{cursor:pointer}.List-module_listItem__8lcu6.List-module_clickable__3Fj4n:not(.List-module_selected__nXBs4):not(:disabled):hover{background:color-mix(in srgb,var(--list-hover-background) 50%,transparent);color:var(--list-hover-color)}.List-module_listItem__8lcu6:focus-visible{outline:var(--focus-ring)}.List-module_selected__nXBs4{background:var(--list-selected-background);color:var(--list-selected-color);&:hover{background:var(--list-selected-hover-background);color:var(--list-selected-hover-color)}}.List-module_disabled__RJxHm{background:var(--color-background-faint);color:var(--color-on-background-faint);cursor:not-allowed}.List-module_shortened__cbFoK{gap:0;&>:not(.List-module_primaryIcon__WyWmw){max-width:0}}.List-module_content__Q2M2b{flex:1;font-weight:700;overflow:hidden}.List-module_content__Q2M2b,.List-module_iconContainer__ZHqxe{align-items:center;color:inherit;display:flex;max-width:50ch;transition:max-width var(--transition-time) var(--transition-tf)}.List-module_iconContainer__ZHqxe{justify-content:center}.List-module_dropDownIcon__XfJpu{display:block;position:relative}.List-module_dropDownIcon__XfJpu.List-module_openSublist__Izz1t{rotate:180deg}.List-module_marker__o4rTn{--glass-border-radius:var(--shape-br-sm);background-color:color-mix(in srgb,var(--color-background) 50%,transparent);display:none;left:0;position:absolute;transition:width 0s linear,top var(--transition-time) var(--transition-tf),left var(--transition-time) var(--transition-tf);width:0;z-index:-1}.List-module_listItem__8lcu6[data-color=primary]{--list-color:var(--color-primary);--list-background:transparent;--list-hover-color:var(--color-on-primary-container);--list-hover-background:var(--color-primary-container);--list-selected-color:none;--list-selected-background:none;--list-selected-hover-color:var(--color-on-background);--list-selected-hover-background:none}.List-module_listItem__8lcu6[data-color=secondary]{--list-color:var(--color-secondary);--list-background:transparent;--list-hover-color:var(--color-on-secondary-container);--list-hover-background:var(--color-secondary-container);--list-selected-color:none;--list-selected-background:none;--list-selected-hover-color:var(--color-on-background);--list-selected-hover-background:none}.List-module_listItem__8lcu6[data-color=error]{--list-color:var(--color-error);--list-background:transparent;--list-hover-color:var(--color-on-error-container);--list-hover-background:var(--color-error-container);--list-selected-color:none;--list-selected-background:none;--list-selected-hover-color:var(--color-on-secondary);--list-selected-hover-background:none}.Skeleton-module_root__Ft3Ey{--skeleton-color-main:var(--color-surface);--skeleton-color-wave:color-mix(in srgb,var(--color-surface) 80%,var(--color-primary) 10%);animation:Skeleton-module_throb__SxiMC 2s var(--transition-tf) infinite;background-image:linear-gradient(to right,var(--skeleton-color-main) 0,var(--skeleton-color-wave) 50%,var(--skeleton-color-main) 100%);background-repeat:repeat-x;background-size:1000px 1000px;border-radius:var(--shape-br-md)}.Skeleton-module_large__LnDji{font-size:2rem}.Skeleton-module_medium__LjhY7{font-size:1.2rem}.Skeleton-module_small__j9Re2{font-size:.75rem}@keyframes Skeleton-module_wave__mC2od{0%{background-position:0 0}to{background-position:-200% 0}}@keyframes Skeleton-module_throb__SxiMC{0%{background:var(--color-surface)}50%{background:color-mix(in srgb,var(--color-primary) 10%,var(--color-surface) 100%)}to{background:var(--color-surface)}}.ConfirmationForm-module_root__ltcoI{color:var(--color-on-background-faint);display:flex;flex-direction:column;font-size:var(--fs-body2);gap:var(--spacing-gap-3);&>h4{border-bottom:1px solid var(--color-outline);color:var(--color-on-background-faint);font-size:1.2em;padding-bottom:var(--spacing-gap-3)}}.ConfirmationForm-module_danger__C1MyS{&>h4{color:var(--color-error)}}.ConfirmationForm-module_actions__TSHEJ{display:flex;gap:var(--spacing-gap-2);justify-content:flex-end}.ConfirmationForm-module_size_sm__0xJZd{&>h4{font-size:.9em}}.ConfirmationForm-module_size_md__ABTKZ{&>h4{font-size:1em}}.ConfirmationForm-module_size_lg__uqxZX{&>h4{font-size:1.2em}}.Checkbox-module_root__52eFu{--outline:var(--color-outline);--color:var(--color-on-surface);--bgcolor:var(--color-surface);--focus-bgcolor:var(--color-background);--checked-outline:var(--color-on-surface);--checked-color:var(--color-surface);--checked-bgcolor:var(--color-on-surface);--indeterminate-outline:var(--color-on-surface);--indeterminate-color:var(--color-surface);--indeterminate-bgcolor:var(--color-on-surface);--disabled-outline:var(--color-background-alpha);--disabled-color:var(--color-on-background-faint);--disabled-bgcolor:var(--color-background-faint);--fs:var(--fs-body2);--size:var(--spacing-gap-4);--gap:var(--spacing-gap-2);--br:var(--shape-br-xs);align-items:center;display:flex;gap:var(--spacing-gap-2);&[data-color=primary]{--outline:var(--color-primary-alpha);--color:var(--color-primary);--bgcolor:var(--color-primary-alpha);--focus-bgcolor:var(--color-primary-container);--checked-outline:var(--color-primary);--checked-color:var(--color-on-primary-container);--checked-bgcolor:var(--color-primary-container);--indeterminate-outline:var(--color-primary);--indeterminate-color:var(--color-on-primary);--indeterminate-bgcolor:var(--color-primary)}&[data-color=secondary]{--outline:var(--color-secondary-alpha);--color:var(--color-secondary);--bgcolor:var(--color-secondary-alpha);--focus-bgcolor:var(--color-secondary-container);--checked-outline:var(--color-secondary);--checked-color:var(--color-on-secondary-container);--checked-bgcolor:var(--color-secondary-container);--indeterminate-outline:var(--color-secondary);--indeterminate-color:var(--color-on-secondary);--indeterminate-bgcolor:var(--color-secondary)}&[data-color=tertiary]{--outline:var(--color-tertiary-alpha);--color:var(--color-tertiary);--bgcolor:var(--color-tertiary-alpha);--focus-bgcolor:var(--color-tertiary-container);--checked-outline:var(--color-tertiary);--checked-color:var(--color-on-tertiary-container);--checked-bgcolor:var(--color-tertiary-container);--indeterminate-outline:var(--color-tertiary);--indeterminate-color:var(--color-on-tertiary);--indeterminate-bgcolor:var(--color-tertiary)}&[data-size=sm]{--fs:var(--fs-body2);--size:var(--spacing-gap-3);--gap:var(--spacing-gap);--br:var(--shape-br-xs)}&[data-size=lg]{--fs:var(--fs-body);--size:var(--spacing-gap-5);--gap:var(--spacing-gap-3);--br:var(--shape-br-sm)}}.Checkbox-module_inputWrapper__JZjHc{border-radius:var(--br);display:flex;height:fit-content;overflow:hidden;position:relative;&:has(input[type=checkbox]:checked){--color:var(--checked-color);--bgcolor:var(--checked-bgcolor);--outline:var(--checked-outline)}&:has(input[type=checkbox]:indeterminate){--color:var(--indeterminate-color);--bgcolor:var(--indeterminate-bgcolor);--outline:var(--indeterminate-outline)}&:has(input[type=checkbox]:disabled){--color:var(--disabled-color);--bgcolor:var(--disabled-bgcolor);--outline:var(--disabled-outline);opacity:.5}}.Checkbox-module_inputWrapper__JZjHc>input[type=checkbox]{background:var(--bgcolor);border:2.3px solid var(--outline);border-radius:inherit;color:var(--color);cursor:pointer;font:inherit;height:var(--size);transition:all var(--transition-time) var(--transition-tf);width:var(--size);&:disabled{cursor:not-allowed}}.Checkbox-module_inputWrapper__JZjHc>span{color:var(--color);height:100%;inset:0;pointer-events:none;position:absolute;&>svg{position:absolute}}.Checkbox-module_show__jXFKu{display:block}.Checkbox-module_hide__j-2PL{display:none}.Checkbox-module_show__jXFKu path{stroke-dasharray:45;stroke-dashoffset:45;animation:Checkbox-module_draw-check__THEN8 calc(var(--transition-time)*2) var(--transition-tf) forwards}.Checkbox-module_hide__j-2PL path{animation:Checkbox-module_draw-check__THEN8 calc(var(--transition-time)*2) var(--transition-tf) reverse}.Checkbox-module_label__4Llik{cursor:pointer}@keyframes Checkbox-module_draw-check__THEN8{to{stroke-dashoffset:0}}.CloseButton-module_root__k-sSS{position:absolute;right:var(--spacing-gap-3);top:var(--spacing-gap-3)}.PasswordInput-module_root__NPboh{--input-border:var(--color-outline);--input-color:var(--color-on-surface);--input-fs:var(--fs-body2);--input-background:var(--color-background-alpha);--input-focus-background:var(--color-background);display:flex;flex-direction:column;font-size:var(--input-fs);gap:var(--spacing-gap);&.PasswordInput-module_fullWidth__rpxCo{width:100%}&:has(.PasswordInput-module_inputWrapper__mq2VY>.PasswordInput-module_input__4CMJv:focus){&>.PasswordInput-module_inputWrapper__mq2VY{background:var(--input-focus-background);outline:none}.PasswordInput-module_label__3PGfK{color:var(--input-color)}}&:has(.PasswordInput-module_inputWrapper__mq2VY>.PasswordInput-module_input__4CMJv:disabled){opacity:.5}}.PasswordInput-module_inputWrapper__mq2VY{background:var(--input-background);border-radius:var(--shape-br-sm);display:flex;outline:1px solid var(--input-border);position:relative}.PasswordInput-module_label__3PGfK{color:var(--color-on-background-faint);cursor:pointer;margin-left:var(--spacing-gap);width:max-content}.PasswordInput-module_input__4CMJv{background:none;border:none;color:var(--input-color);flex:1 1 100%;font-family:var(--font-p);font-size:inherit;&:focus{outline:none}}.PasswordInput-module_iconContainer__Irk1R{align-items:center;color:var(--color-on-background-faint);display:flex;font-size:inherit;justify-content:center;&:first-of-type{margin-left:var(--spacing-gap-2);&.PasswordInput-module_disableGutters__Do0n8{margin-left:0}}&:nth-of-type(2){margin-right:var(--spacing-gap-2);&.PasswordInput-module_disableGutters__Do0n8{margin-right:0}}}.PasswordInput-module_errored__eEIPd{--input-border:var(--color-error);--input-color:var(--color-error);&>.PasswordInput-module_inputWrapper__mq2VY{outline:1px solid var(--input-border);&>.PasswordInput-module_iconContainer__Irk1R{color:var(--input-color)}}&>.PasswordInput-module_label__3PGfK{color:var(--input-color)}}.PasswordInput-module_size_sm__zlHt4{.PasswordInput-module_label__3PGfK{font-size:.8em}.PasswordInput-module_input__4CMJv{padding:var(--spacing-gap) calc(var(--spacing-gap)*1.618)}}.PasswordInput-module_size_md__-PLMI{.PasswordInput-module_label__3PGfK{font-size:.9em}.PasswordInput-module_input__4CMJv{padding:var(--spacing-gap-2) calc(var(--spacing-gap-2)*1.618)}}.PasswordInput-module_size_lg__bWNCd{.PasswordInput-module_label__3PGfK{font-size:1em}.PasswordInput-module_input__4CMJv{padding:var(--spacing-gap-3) calc(var(--spacing-gap-3)*1.618)}}.PasswordStrength-module_root__YPak5{align-items:center;display:flex;flex-wrap:wrap;gap:var(--spacing-gap);padding-inline:var(--spacing-gap);scale:1 0;transition:scale var(--transition-time) var(--transition-tf)}.PasswordStrength-module_title__PnvjF{flex:0 0 auto;font-size:.5rem}.PasswordStrength-module_strengthBars__VDp4V{align-items:flex-start;display:flex;flex:1 1 50%;gap:var(--spacing-gap)}.PasswordStrength-module_bar__cVDvu{background-color:currentColor;border-radius:999px;flex:1 1 25%;scale:0 0;transform-origin:top left;transition:all var(--transition-time) var(--transition-tf)}.PasswordStrength-module_weak__1uds9{height:3px;opacity:.3}.PasswordStrength-module_medium__iDdic{height:5px;opacity:.5}.PasswordStrength-module_good__WkBFX{height:7px;opacity:.8}.PasswordStrength-module_strong__WKvRA{height:9px}.PasswordStrength-module_show__D2ml-{scale:1 1}.TextInput-module_root__PFCcK{--input-border:var(--color-outline);--input-color:var(--color-on-surface);--input-fs:var(--fs-body2);--input-background:var(--color-background-alpha);--input-focus-background:var(--color-background);display:flex;flex-direction:column;font-size:var(--input-fs);gap:var(--spacing-gap);&.TextInput-module_fullWidth__AT0dl{width:100%}&:has(.TextInput-module_inputWrapper__SJTji>.TextInput-module_input__I-YSj:focus){&>.TextInput-module_inputWrapper__SJTji{background:var(--input-focus-background);outline:none}.TextInput-module_label__AVOE4{color:var(--input-color)}}&:has(.TextInput-module_inputWrapper__SJTji>.TextInput-module_input__I-YSj:disabled){opacity:.5}}.TextInput-module_inputWrapper__SJTji{background:var(--input-background);border-radius:var(--shape-br-sm);display:flex;outline:1px solid var(--input-border);position:relative}.TextInput-module_label__AVOE4{color:var(--color-on-background-faint);cursor:pointer;margin-left:var(--spacing-gap);width:max-content}.TextInput-module_input__I-YSj{background:none;border:none;color:var(--input-color);flex:1 1 100%;font-family:var(--font-p);font-size:inherit;&:focus{outline:none}}.TextInput-module_iconContainer__Mkob8{align-items:center;color:var(--color-on-background-faint);display:flex;font-size:inherit;justify-content:center;&:first-of-type{margin-left:var(--spacing-gap-2);&.TextInput-module_disableGutters__zleWJ{margin-left:0}}&:nth-of-type(2){margin-right:var(--spacing-gap-2);&.TextInput-module_disableGutters__zleWJ{margin-right:0}}}.TextInput-module_errored__OtcwB{--input-border:var(--color-error);--input-color:var(--color-error);&>.TextInput-module_inputWrapper__SJTji{outline:1px solid var(--input-border);&>.TextInput-module_iconContainer__Mkob8{color:var(--input-color)}}&>.TextInput-module_label__AVOE4{color:var(--input-color)}}.TextInput-module_size_sm__5Y5wE{.TextInput-module_label__AVOE4{font-size:.8em}.TextInput-module_input__I-YSj{padding:var(--spacing-gap) calc(var(--spacing-gap)*1.618);&.TextInput-module_disableGutters__zleWJ{padding:0}}}.TextInput-module_size_md__ngwcL{.TextInput-module_label__AVOE4{font-size:.9em}.TextInput-module_input__I-YSj{padding:var(--spacing-gap-2) calc(var(--spacing-gap-2)*1.618);&.TextInput-module_disableGutters__zleWJ{padding:0}}}.TextInput-module_size_lg__vFWvg{.TextInput-module_label__AVOE4{font-size:1em}.TextInput-module_input__I-YSj{padding:var(--spacing-gap-3) calc(var(--spacing-gap-3)*1.618);&.TextInput-module_disableGutters__zleWJ{padding:0}}}.Select-module_root__dxgVk{--input-border:var(--color-outline);--input-color:var(--color-on-surface);--input-fs:var(--fs-body2);--input-background:var(--color-background-alpha);--input-focus-background:var(--color-background);display:flex;flex-direction:column;font-size:var(--input-fs);gap:var(--spacing-gap);&.Select-module_fullWidth__Sm-ZO{width:100%}&:has(.Select-module_inputWrapper__WbY3I>.Select-module_input__RZaAp:focus,.Select-module_inputWrapper__WbY3I>.Select-module_input__RZaAp:open){&>.Select-module_inputWrapper__WbY3I{background:var(--input-focus-background);outline:none}.Select-module_label__AHkLr{color:var(--input-color)}}&:has(.Select-module_inputWrapper__WbY3I>.Select-module_input__RZaAp:disabled){opacity:.5}}.Select-module_inputWrapper__WbY3I{background:var(--input-background);border-radius:var(--shape-br-sm);display:flex;outline:1px solid var(--input-border);position:relative}.Select-module_label__AHkLr{color:var(--color-on-background-faint);cursor:pointer;font-size:.9em;margin-left:var(--spacing-gap);width:fit-content}.Select-module_input__RZaAp{appearance:base-select;background-color:var(--input-background);border:none;border-radius:var(--shape-br-sm);color:var(--input-color);cursor:pointer;flex:1 1 100%;font-family:var(--font-p);font-size:inherit;padding:var(--spacing-gap-2) calc(var(--spacing-gap-2)*1.618);transition:all var(--transition-time) var(--transition-tf);&:focus,&:open{background-color:var(--input-focus-background);outline:none}&>option{appearance:base-select;background-color:var(--input-background);border-radius:var(--shape-br-sm);cursor:pointer;font-family:var(--font-p),sans-serif;padding:var(--spacing-gap);transition:all var(--transition-time) var(--transition-tf);&:hover{background-color:var(--input-focus-background)}&:checked{background-color:var(--color-primary-container);color:var(--color-on-primary-container);font-weight:700;transition:all var(--transition-time) var(--transition-tf);&:hover{background-color:var(--color-primary);color:var(--color-on-primary)}}&::checkmark{display:none}}}.Select-module_input__RZaAp::picker(select){appearance:base-select;background-color:var(--input-background);border:1px solid var(--color-outline);border-radius:var(--shape-br-sm);padding:var(--spacing-gap)}.Select-module_input__RZaAp::picker-icon{transition:rotate var(--transition-time) var(--transition-tf)}.Select-module_input__RZaAp:open::picker-icon{rotate:180deg}.Select-module_iconContainer__Xlvlm{align-items:center;color:var(--color-on-background-faint);display:flex;font-size:inherit;justify-content:center;&:first-of-type{margin-left:var(--spacing-gap-2);&.Select-module_disableGutters__7Lu6I{margin-left:0}}&:nth-of-type(2){margin-right:var(--spacing-gap-2);&.Select-module_disableGutters__7Lu6I{margin-right:0}}}.Select-module_errored__IDw1f{--input-border:var(--color-error);--input-color:var(--color-error);&>.Select-module_inputWrapper__WbY3I{outline:1px solid var(--input-border);&>.Select-module_iconContainer__Xlvlm{color:var(--input-color)}}&>.Select-module_label__AHkLr{color:var(--input-color)}}.Select-module_size_sm__6tbtv{.Select-module_label__AHkLr{font-size:.8em}.Select-module_input__RZaAp{padding:var(--spacing-gap) calc(var(--spacing-gap)*1.618);&.Select-module_disableGutters__7Lu6I{padding:0}}}.Select-module_size_md__x3Qop{.Select-module_label__AHkLr{font-size:.9em}.Select-module_input__RZaAp{padding:var(--spacing-gap-2) calc(var(--spacing-gap-2)*1.618);&.Select-module_disableGutters__7Lu6I{padding:0}}}.Select-module_size_lg__-iW76{.Select-module_label__AHkLr{font-size:1em}.Select-module_input__RZaAp{padding:var(--spacing-gap-3) calc(var(--spacing-gap-3)*1.618);&.Select-module_disableGutters__7Lu6I{padding:0}}}.SearchInput-module_root__OXR0e{align-items:center;display:flex;gap:var(--spacing-gap)}.SearchInput-module_collapsed__FpQ7U{& .SearchInput-module_input__3iIbF{overflow:hidden;padding:0;width:0}& .SearchInput-module_searchButton__3-1PX{opacity:0;overflow:hidden;padding:0;width:0}}.SearchInput-module_input__3iIbF{transition:all var(--transition-time) var(--transition-tf);width:22ch}.SearchInput-module_inputWrapper__oFfGE{outline:none!important}.Switch-module_root__iigu-{--switch-track-width:54px;--switch-track-height:30px;--switch-thumb-width:60%;--switch-track-color:var(--color-background-alpha);--switch-track-checked-color:var(--color-background);--switch-thumb-color:var(--color-primary-container);--switch-thumb-checked-color:var(--color-primary);--switch-thumb-text-color:var(--color-on-primary-container);--switch-thumb-checked-text-color:var(--color-on-primary);align-items:center;display:flex;gap:var(--spacing-gap-2);&:not(.Switch-module_disabled__OpgQK) .Switch-module_switch__JRFZI:hover .Switch-module_thumb__s4iLS{scale:1}}.Switch-module_inputWrapper__o8uEI{height:var(--switch-track-height);overflow:hidden;padding-inline:.2em;position:relative;width:var(--switch-track-width)}.Switch-module_disabled__OpgQK{--switch-thumb-color:var(--color-surface-alpha);--switch-thumb-text-color:var(--color-on-surface);--switch-thumb-checked-color:var(--color-background-faint);--switch-thumb-checked-text-color:var(--color-on-background-faint);& .Switch-module_label__vk4At,& .Switch-module_switch__JRFZI{cursor:not-allowed}}.Switch-module_input__pSFbl{inset:0;opacity:0;position:absolute}.Switch-module_inputWrapper__o8uEI:has(.Switch-module_input__pSFbl:focus) .Switch-module_switch__JRFZI{background:var(--switch-track-checked-color);border:var(--focus-ring)}.Switch-module_switch__JRFZI{background-color:var(--switch-track-color);border:1px solid var(--color-outline);border-radius:var(--shape-br-md);cursor:pointer;display:block;height:100%;position:relative;width:100%;&.Switch-module_checked__7JJ9o{background:var(--switch-track-checked-color);& .Switch-module_thumb__s4iLS{animation:Switch-module_checkon__B-djH var(--transition-time) var(--transition-tf) forwards;background-color:var(--switch-thumb-checked-color);color:var(--switch-thumb-checked-text-color);left:50%}}}.Switch-module_thumb__s4iLS{align-items:center;animation:Switch-module_checkoff__8YwSV var(--transition-time) var(--transition-tf) forwards;background-color:var(--switch-thumb-color);border-radius:var(--shape-br-md);color:var(--switch-thumb-text-color);display:flex;height:100%;justify-content:center;left:0;position:absolute;scale:80%;top:50%;transition:all var(--transition-time) var(--transition-tf);translate:0 -50%;width:var(--switch-thumb-width)}.Switch-module_label__vk4At{cursor:pointer}@keyframes Switch-module_checkon__B-djH{0%{height:100%;left:0;width:var(--switch-thumb-width)}50%{height:80%;left:0;width:100%}to{height:100%;left:calc(100% - var(--switch-thumb-width));width:var(--switch-thumb-width)}}@keyframes Switch-module_checkoff__8YwSV{0%{height:100%;left:50%;width:var(--switch-thumb-width)}50%{height:80%;left:0;width:100%}to{height:100%;left:0;width:var(--switch-thumb-width)}}.TextAreaInput-module_root__HtNc8{--input-border:var(--color-outline);--input-color:var(--color-on-surface);--input-fs:var(--fs-body2);--input-background:var(--color-background-alpha);--input-focus-background:var(--color-background);display:flex;flex-direction:column;font-size:var(--input-fs);gap:var(--spacing-gap);&.TextAreaInput-module_fullWidth__TUiOx{width:100%}&:has(.TextAreaInput-module_inputWrapper__P-2Yf>.TextAreaInput-module_input__1xpZl:focus){&>.TextAreaInput-module_inputWrapper__P-2Yf{background:var(--input-focus-background);outline:none}.TextAreaInput-module_label__Fgykg{color:var(--input-color)}}&:has(.TextAreaInput-module_inputWrapper__P-2Yf>.TextAreaInput-module_input__1xpZl:disabled){opacity:.5}}.TextAreaInput-module_inputWrapper__P-2Yf{background:var(--input-background);border-radius:var(--shape-br-sm);display:flex;outline:1px solid var(--input-border);position:relative}.TextAreaInput-module_label__Fgykg{color:var(--color-on-background-faint);font-size:.9em;margin-left:var(--spacing-gap)}.TextAreaInput-module_input__1xpZl{background:none;border:none;color:var(--input-color);flex:1 1 100%;font-family:var(--font-p);font-size:inherit;padding:calc(var(--spacing-gap-2)*1.618);&:focus{outline:none}&.TextAreaInput-module_disableResize__uaUnX{resize:none}}.TextAreaInput-module_errored__HJAUZ{--input-border:var(--color-error);--input-color:var(--color-error);&>.TextAreaInput-module_inputWrapper__P-2Yf{outline:1px solid var(--input-border)}&>.TextAreaInput-module_label__Fgykg{color:var(--input-color)}}.Drawer-module_drawer__i-80z{margin-block:auto;margin-left:auto;margin-right:0;max-height:100%}.PageLayout-module_root__H4l4t{display:flex;flex-direction:column;height:100%;overflow:hidden}.PageLayout-module_titleBar__Be27V{padding-inline:var(--spacing-gap-3)}.PageLayout-module_body__yjAdc{flex:1;overflow:hidden auto;padding-block:var(--spacing-gap-2)}.PageLayout-module_footer__iR2sk{display:flex;justify-content:center;padding-bottom:3dvh;padding-top:var(--spacing-gap-2)}.PageTitle-module_root__qgEO4{border-bottom:1px solid var(--color-outline);display:flex;gap:var(--spacing-gap-3);justify-content:space-between;padding:var(--spacing-gap-4);width:100%;& h1{font-size:var(--fs-h2)}& h2{color:var(--color-on-background-faint);font-size:var(--fs-body2);font-weight:400}}.PageTitle-module_noBorder__hoNLA{border-bottom:none}.PageTitle-module_size_lg__VBUCT{padding:var(--spacing-gap-6);& h1{font-size:var(--fs-h1)}& h2{font-size:var(--fs-body)}}.PageTitle-module_size_sm__QmF4G{padding:var(--spacing-gap-2);& h1{font-size:var(--fs-h4)}}.PageTitle-module_main__bncFv{display:flex;flex-direction:column;justify-content:flex-end}.PageTitle-module_actions__Wef1k{align-items:center;display:flex;flex:1;gap:var(--spacing-gap-2);justify-content:flex-end;overflow:hidden}.PageLayoutPagination-module_list__lyhYm{display:flex;flex-direction:column;gap:var(--spacing-gap)}.TabsBar-module_root__Uve19{--bgcolor:var(--color-background-alpha);--color:var(--color-on-background);--tab-hover-bgcolor:var(--color-background-faint);--tab-hover-color:var(--color-on-surface);--tab-active-color:var(--color-primary);--tab-active-hover-color:var(--color-on-background);--tab-marker-bgcolor:transparent;backdrop-filter:blur(5px);background-color:var(--bgcolor);border-radius:var(--shape-br-sm);display:flex;margin-inline:auto;max-width:100%;overflow:hidden}.TabsBar-module_root__Uve19[data-color=primary]{--bgcolor:var(--color-primary-container);--color:var(--color-on-primary-container);--tab-hover-bgcolor:var(--color-primary-alpha);--tab-hover-color:var(--color-on-primary);--tab-active-color:var(--color-on-primary);--tab-active-hover-color:var(--color-on-primary-container);--tab-marker-bgcolor:var(--color-primary)}.TabsBar-module_root__Uve19[data-color=secondary]{--bgcolor:var(--color-secondary-container);--color:var(--color-on-secondary-container);--tab-hover-bgcolor:var(--color-secondary-alpha);--tab-hover-color:var(--color-on-secondary);--tab-active-color:var(--color-on-secondary);--tab-active-hover-color:var(--color-on-secondary-container);--tab-marker-bgcolor:var(--color-secondary)}.TabsBar-module_overflowContainer__FuUXd{display:flex;gap:var(--spacing-gap);isolation:isolate;position:relative}.TabsBar-module_row__5PKvn{overflow:auto hidden;padding:var(--spacing-gap) var(--spacing-gap-2);width:max-content}.TabsBar-module_column__8Mc64{flex-direction:column;height:100%;overflow:hidden auto;padding:var(--spacing-gap-2);width:100%}.TabsBar-module_tab__jD1nX{color:var(--color)}.TabsBar-module_active__ESPgA{color:var(--tab-active-color);transition:color var(--transition-time) var(--transition-tf)}.TabsBar-module_active__ESPgA:hover{color:var(--tab-active-hover-color)}.TabsBar-module_marker__2e4am{border-radius:var(--shape-br-xs);left:0;position:absolute;transition:all var(--transition-time) var(--transition-tf);z-index:-1}.TabsBar-module_markerInner__T0FZ3{background-color:var(--tab-marker-bgcolor);border-radius:inherit;height:100%;width:100%}.Tab-module_root__ySv89{text-wrap:nowrap;align-items:center;background-color:transparent;border:none;border-radius:var(--shape-br-sm);color:var(--color);cursor:pointer;display:flex;font-family:var(--font-p);font-size:var(--fs-body2);gap:var(--spacing-gap);padding:var(--spacing-gap) var(--spacing-gap-2);position:relative;transition:background-color var(--transition-time) var(--transition-tf)}.Tab-module_clickable__d8Iy-:not(.Tab-module_selected__vToav):hover{background-color:var(--tab-hover-bgcolor);color:var(--tab-hover-color)}.Tab-module_selected__vToav{color:var(--tab-active-color);font-weight:700;&:hover{background-color:var(--bar-active-color);color:var(--bar-active-hover-color-text)}}.Tab-module_disabled__Leret{color:var(--color-on-background-faint);cursor:not-allowed}.Tab-module_iconContainer__-SQ6s{align-items:center;color:inherit;display:flex;justify-content:center}.PageLayoutTabs-module_body__baK6C{padding-inline:var(--spacing-gap-3)}.SectionWrapper-module_root__K-O4Y{display:grid;gap:var(--spacing-gap-2);grid-template-columns:1fr;padding-block:var(--spacing-gap-3);padding-inline:var(--spacing-gap-4)}.SectionWrapper-module_header__8-h-6{&>h4{font-size:1em}&>p{color:var(--color-on-background-faint);font-size:var(--fs-body2)}}.SectionWrapper-module_root__K-O4Y:not(.SectionWrapper-module_noBorders__brOqe){border-top:1px solid var(--color-outline)}.SectionWrapper-module_content__Ruu8X{container-type:inline-size;display:flex;flex-direction:column;font-size:var(--fs-body2)}@container (min-width:600px){.SectionWrapper-module_root__K-O4Y{grid-template-columns:.4fr 1fr}}.Sidebar-module_root__1stxg{--sidebar-closed-width:4rem;--sidebar-open-width:20rem;--sidebar-body-height:65dvh;--sidebar-header-height:4.875rem;--sidebar-color-surface:var(--color-surface-alpha);display:flex;flex-direction:column;gap:var(--spacing-gap);height:100%;isolation:isolate}@media (min-width:600px){.Sidebar-module_root__1stxg{flex-direction:row}}.SidebarBody-module_root__yPbfH{backdrop-filter:var(--backdrop-blur);background-color:var(--color-surface-alpha);height:var(--sidebar-body-height);left:-100%;overflow-x:hidden;position:fixed;top:var(--sidebar-header-height);transition:left var(--transition-time) var(--transition-tf);width:var(--sidebar-open-width)}.SidebarBody-module_open__gtCKF{left:0;overflow-x:auto}@media (min-width:600px){.SidebarBody-module_root__yPbfH{backdrop-filter:none;background-color:transparent;flex:1;height:unset;left:0;position:relative;top:0;width:unset}.SidebarBody-module_open__gtCKF{left:0}}.SidebarDrawer-module_root__CJch2{background:var(--color-surface);display:flex;flex-direction:row;transition:width var(--transition-time) var(--transition-tf);width:100%;z-index:-1}@media (min-width:600px){.SidebarDrawer-module_root__CJch2{background:var(--sidebar-color-surface);flex-direction:column;width:var(--sidebar-closed-width);z-index:0}.SidebarDrawer-module_open__E60Tc{width:var(--sidebar-open-width)}}.SidebarFooter-module_root__AdFmj{backdrop-filter:var(--backdrop-blur);background-color:var(--color-surface-alpha);height:calc(100dvh - var(--sidebar-body-height) - var(--sidebar-header-height));left:-100%;overflow:auto;padding-bottom:var(--spacing-gap-2);padding-top:var(--spacing-gap-1);position:fixed;top:calc(var(--sidebar-header-height) + var(--sidebar-body-height));transition:left var(--transition-time) var(--transition-tf);width:var(--sidebar-open-width)}.SidebarFooter-module_open__qHsZf{left:0}@media (min-width:600px){.SidebarFooter-module_root__AdFmj{backdrop-filter:none;background-color:transparent;height:unset;left:0;position:relative;top:0;width:unset}.SidebarFooter-module_open__qHsZf{left:0}}.SidebarViewport-module_root__KAGAg{container-type:inline-size;flex:1;overflow:auto;z-index:-3}@media (min-width:600px){.SidebarViewport-module_root__KAGAg{z-index:0}}.Table-module_root__-0lhT{max-height:100%;max-width:100%;overflow:auto}.Table-module_table__f1fEX{border-radius:var(--shape-br-md);display:grid;font-family:system-ui,-apple-system,BlinkMacSystemFont,sans-serif;font-size:var(--fs-body2);line-height:1.4;overflow:hidden;width:100%}.Table-module_tableCell__tKgEQ{background:var(--color-background);border-bottom:1px solid var(--color-outline);border-right:1px solid var(--color-outline);overflow:hidden;padding:8px 12px;text-overflow:ellipsis;user-select:none;white-space:nowrap;&:hover{background:var(--color-background-faint)}&:focus-visible{outline:2px solid var(--color-primary);outline-offset:-2px}&:nth-child(n){border-right:none}&[data-selected=true]{background:var(--color-surface);outline:2px solid var(--color-primary);outline-offset:-2px;z-index:1}}.Pagination-module_root__at76F{display:flex;flex-wrap:wrap;gap:var(--spacing-gap-2);list-style-type:none}.Pagination-module_item__2GFks{--pagination-item-fs:var(--fs-body2);align-items:center;border-radius:var(--shape-br-sm);color:var(--color-on-background);cursor:pointer;display:flex;font-size:var(--pagination-item-fs);height:32px;justify-content:center;min-width:fit-content;padding-inline:var(--spacing-gap);transition:all var(--transition-time) var(--transition-tf);width:32px}.Pagination-module_disabled__KG8Cb{cursor:not-allowed;opacity:.5}.Pagination-module_item__2GFks:not(.Pagination-module_disabled__KG8Cb):hover{background:var(--color-surface)}.Pagination-module_activeItem__BVg0A{outline:1px solid var(--color-primary)}.Pagination-module_icon__OcxQW>svg{--pagination-item-icon-size:calc(var(--pagination-item-fs)*1.25);height:var(--pagination-item-icon-size);width:var(--pagination-item-icon-size)}.Pagination-module_icon__OcxQW:nth-child(2)~.Pagination-module_icon__OcxQW{transform:rotate(180deg)}.Breadcrumbs-module_root__KmBxB{align-items:center;display:flex;gap:1ch;&>svg{color:var(--color-on-background-faint)}}.Breadcrumbs-module_item__G3HWH{color:var(--color-on-background-faint);display:content;&:not(.Breadcrumbs-module_activeItem__-C8yn):hover{color:var(--color-primary)}}.Breadcrumbs-module_activeItem__-C8yn{color:var(--color-on-background)}.Breadcrumbs-module_ellipses__R-y7b{color:var(--color-on-background-faint)}.CopyableText-module_root__bhwTN{align-items:center;display:flex;gap:var(--spacing-gap);&>span{-ms-overflow-style:none;background-color:var(--color-surface);border-radius:var(--shape-br-sm);flex:1;font-size:.9em;overflow:auto hidden;padding:var(--spacing-gap);scrollbar-width:none;text-overflow:ellipsis;white-space:nowrap;&::-webkit-scrollbar{display:none}}}.VoidText-module_root__otzOq{color:var(--color-on-background-faint);font-weight:700;opacity:.5;text-align:center;width:100%}
1
+ .Card-module_square__SK-KQ{aspect-ratio:1}.Card-module_fullWidth__pIEIZ{width:100%}.Card-module_size_sm__B3eSI{border-radius:var(--shape-br-sm);padding:var(--spacing-gap-2)}.Card-module_size_md__15alI{border-radius:var(--shape-br-md);padding:var(--spacing-gap-4)}.Card-module_size_lg__HCTUY{border-radius:var(--shape-br-lg);padding:var(--spacing-gap-6)}.Card-module_outlined__TPads{background:none;border:1px solid var(--color-outline)}.Card-module_contained__EFPqh{backdrop-filter:var(--backdrop-blur);background:var(--color-surface-alpha)}.CollectionItemCard-module_root__v3IlF{align-items:stretch;background-color:var(--color-background);border-radius:var(--shape-br-md);display:flex;flex-direction:column;overflow:hidden;pointer-events:none}.CollectionItemCard-module_image__TfkAn{align-items:center;display:flex;height:20svh;justify-content:center;overflow:hidden;width:100%;&>img{height:100%;object-fit:cover;width:100%}}.CollectionItemCard-module_main__47qRO{border-radius:calc(var(--shape-br-md) - var(--spacing-gap));color:var(--color-on-surface);display:flex;flex:1;flex-direction:column;gap:.1618em;margin:var(--spacing-gap);overflow:hidden;padding:var(--spacing-gap-2) calc(var(--spacing-gap-2)*1.618);pointer-events:all;transition:all var(--transition-time) var(--transition-tf);&>p{align-items:center;display:flex}}.CollectionItemCard-module_description__BQapV{color:var(--color-on-background-faint);font-size:.8em}.CollectionItemCard-module_subtitle__gThMk{color:var(--color-on-background-faint);font-size:1em}.CollectionItemCard-module_clickable__d3rRV{transition:all var(--transition-time) var(--transition-tf);&>.CollectionItemCard-module_main__47qRO{background:var(--color-background);cursor:pointer}&:has(.CollectionItemCard-module_main__47qRO:hover){background:var(--color-background-faint)}}.CollectionItemCard-module_title__B-sLi{align-items:center;display:flex;gap:var(--spacing-gap-2);&>h4{flex:1;font-size:1.2em}}.CollectionItemCard-module_footer__-8LZo{display:flex;justify-content:flex-end;pointer-events:all}@container (min-width:600px){.CollectionItemCard-module_root__v3IlF{flex-direction:row;&>.CollectionItemCard-module_image__TfkAn{aspect-ratio:1;height:auto;max-width:6rem;min-width:3rem;width:10vw}}}.ClampedText-module_root__WGLiO{-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.Chip-module_root__aw3YS{--badge-outline-color:var(--color-outline);--badge-color:var(--color-on-surface);--badge-background:var(--color-surface);align-items:center;background:var(--badge-background);border:1px solid var(--badge-outline-color);color:var(--badge-color);display:flex;flex-wrap:wrap;font-size:.9em;gap:var(--spacing-gap);width:fit-content}.Chip-module_outlined__MdLuF{background:none}.Chip-module_contained__h-xuY{border:none}.Chip-module_size_sm__v0VIz{border-radius:var(--shape-br-xs);font-size:.8em;padding:calc(var(--spacing-gap)/2) calc((var(--spacing-gap)/2)*1.618)}.Chip-module_size_md__Shvvz{border-radius:var(--shape-br-sm);padding:calc(var(--spacing-gap-2)/2) calc((var(--spacing-gap-2)/2)*1.618)}.Chip-module_size_lg__sqT26{border-radius:var(--shape-br-sm);font-size:1em;padding:calc(var(--spacing-gap-3)/2) calc((var(--spacing-gap-3)/2)*1.618)}.Chip-module_root__aw3YS[data-color=primary]{--badge-color:var(--color-primary);--badge-background:none;--badge-outline-color:var(--color-primary)}.Chip-module_root__aw3YS[data-color=secondary]{--badge-color:var(--color-secondary);--badge-background:none;--badge-outline-color:var(--color-secondary)}.Chip-module_root__aw3YS[data-color=error]{--badge-color:var(--color-error);--badge-background:none;--badge-outline-color:var(--color-error)}.Chip-module_contained__h-xuY[data-color=primary]{--badge-color:var(--color-on-primary);--badge-background:var(--color-primary)}.Chip-module_contained__h-xuY[data-color=secondary]{--badge-color:var(--color-on-secondary);--badge-background:var(--color-secondary)}.Chip-module_contained__h-xuY[data-color=error]{--badge-color:var(--color-on-error);--badge-background:var(--color-error)}.Ripple-module_container__4Dv-f{border-radius:inherit;inset:0;overflow:hidden;pointer-events:none;position:absolute}.Ripple-module_ripple__-a0Jv{--ripple-color:currentColor;--ripple-duration:750ms;animation:Ripple-module_ripple-expand__jWi54 var(--ripple-duration,.75s) var(--transition-tf);background:var(--ripple-color);border-radius:50%;filter:blur(10px);opacity:.6;pointer-events:none;position:absolute;transform:scale(0)}@keyframes Ripple-module_ripple-expand__jWi54{to{opacity:0;transform:scale(2)}}.Button-module_root__hmumx{--button-color:var(--color-on-background);--button-background:none;--button-hover-color:var(--color-on-background);--button-hover-background:var(--color-background-faint);--button-outline-color:var(--color-on-background);align-items:center;background:var(--button-background);border:none;color:var(--button-color);cursor:pointer;display:flex;font-family:var(--font-p);font-size:var(--fs-body2);font-weight:700;gap:var(--spacing-gap);justify-content:center;padding:var(--spacing-gap) calc(var(--spacing-gap-3)*1.618);position:relative;transition:all var(--transition-time) var(--transition-tf);&:not(:disabled):hover{background:color-mix(in srgb,var(--button-hover-background) 50%,transparent);color:var(--button-hover-color)}&:disabled{opacity:.5}}.Button-module_iconContainer__-VER1{align-items:center;display:flex;height:max-content;justify-content:center}.Button-module_square__Wu8jt{padding:var(--spacing-gap-2)}.Button-module_root__hmumx:disabled{cursor:not-allowed}.Button-module_root__hmumx:focus-visible{outline:var(--focus-ring)}.Button-module_size_sm__Qk6rp{border-radius:var(--shape-br-sm);font-size:.9em;padding:var(--spacing-gap) calc(var(--spacing-gap)*1.618);&.Button-module_square__Wu8jt{padding:var(--spacing-gap)}}.Button-module_size_md__qWVt-{border-radius:var(--shape-br-md);padding:var(--spacing-gap-2) calc(var(--spacing-gap-2)*1.618);&.Button-module_square__Wu8jt{padding:var(--spacing-gap-2)}}.Button-module_size_lg__e7Ely{border-radius:var(--shape-br-lg);font-size:var(--fs-body);padding:var(--spacing-gap-3) calc(var(--spacing-gap-3)*1.618);&.Button-module_square__Wu8jt{padding:var(--spacing-gap-3)}}.Button-module_contained__tlUyK{--button-color:var(--color-background);--button-background:var(--color-on-background);&:not(:disabled):hover{background:var(--button-hover-background)}}.Button-module_outlined__rgbFf{border:1px solid var(--button-outline-color)}.Button-module_position_absolute__NN8P1{position:absolute}.Button-module_position_relative__r0CV0{position:relative}.Button-module_position_fixed__LilZy{position:fixed}.Button-module_position_sticky__2ixpW{position:sticky}.Button-module_fullWidth__5o7qa{width:100%}.Button-module_root__hmumx[data-color=primary]{--button-color:var(--color-primary);--button-background:none;--button-hover-color:var(--color-on-primary-container);--button-hover-background:var(--color-primary-container);--button-outline-color:var(--color-primary)}.Button-module_root__hmumx[data-color=secondary]{--button-color:var(--color-secondary);--button-background:none;--button-hover-color:var(--color-on-secondary-container);--button-hover-background:var(--color-secondary-container);--button-outline-color:var(--color-secondary)}.Button-module_root__hmumx[data-color=error]{--button-color:var(--color-error);--button-background:none;--button-hover-color:var(--color-on-error-container);--button-hover-background:var(--color-error-container);--button-outline-color:var(--color-error)}.Button-module_contained__tlUyK[data-color=primary]{--button-color:var(--color-on-primary);--button-background:var(--color-primary)}.Button-module_contained__tlUyK[data-color=secondary]{--button-color:var(--color-on-secondary);--button-background:var(--color-secondary)}.Button-module_contained__tlUyK[data-color=error]{--button-color:var(--color-on-error);--button-background:var(--color-error)}.Tooltip-module_root__nip6a{--spacing-arrow-offset:6px;background:var(--color-surface);border-radius:var(--shape-br-sm);color:var(--color-on-surface);font-size:var(--fs-body2);font-weight:700;padding:var(--spacing-gap) var(--spacing-gap-2);pointer-events:none;position:fixed;text-align:center;z-index:9999}.Tooltip-module_root__nip6a.Tooltip-module_arrow_bottom__9gsgJ{margin-bottom:var(--spacing-arrow-offset)}.Tooltip-module_root__nip6a.Tooltip-module_arrow_top__w9xkd{margin-top:var(--spacing-arrow-offset)}.Tooltip-module_root__nip6a.Tooltip-module_arrow_right__5XexK{margin-left:var(--spacing-arrow-offset)}.Tooltip-module_root__nip6a.Tooltip-module_arrow_left__DB9W9{margin-right:var(--spacing-arrow-offset)}.Tooltip-module_root__nip6a.Tooltip-module_arrow_topLeft__6gV4I{border-top-left-radius:0}.Tooltip-module_root__nip6a.Tooltip-module_arrow_topRight__L5URY{border-top-right-radius:0}.Tooltip-module_root__nip6a.Tooltip-module_arrow_bottomLeft__igebI{border-bottom-left-radius:0}.Tooltip-module_root__nip6a.Tooltip-module_arrow_bottomRight__iDyHl{border-bottom-right-radius:0}.Tooltip-module_root__nip6a:after{content:"";height:0;position:absolute;width:0}.Tooltip-module_arrow_bottom__9gsgJ:after{border-color:var(--color-surface) transparent transparent transparent;border-style:solid;border-width:var(--spacing-arrow-offset) var(--spacing-arrow-offset) 0 var(--spacing-arrow-offset);bottom:calc(var(--spacing-arrow-offset)*-1);left:50%;transform:translateX(-50%)}.Tooltip-module_arrow_top__w9xkd:after{border-color:transparent transparent var(--color-surface) transparent;border-style:solid;border-width:0 var(--spacing-arrow-offset) var(--spacing-arrow-offset) var(--spacing-arrow-offset);left:50%;top:calc(var(--spacing-arrow-offset)*-1);transform:translateX(-50%)}.Tooltip-module_arrow_right__5XexK:after{border-color:transparent transparent transparent var(--color-surface);border-style:solid;border-width:var(--spacing-arrow-offset) 0 var(--spacing-arrow-offset) var(--spacing-arrow-offset);right:calc(var(--spacing-arrow-offset)*-1);top:50%;transform:translateY(-50%)}.Tooltip-module_arrow_left__DB9W9:after{border-color:transparent var(--color-surface) transparent transparent;border-style:solid;border-width:var(--spacing-arrow-offset) var(--spacing-arrow-offset) var(--spacing-arrow-offset) 0;left:calc(var(--spacing-arrow-offset)*-1);top:50%;transform:translateY(-50%)}.Tooltip-module_arrow_topLeft__6gV4I:after{left:0}.Tooltip-module_arrow_topLeft__6gV4I:after,.Tooltip-module_arrow_topRight__L5URY:after{border-color:transparent transparent var(--color-surface) transparent;border-style:solid;border-width:0 var(--spacing-arrow-offset) var(--spacing-arrow-offset) var(--spacing-arrow-offset);top:calc(var(--spacing-arrow-offset)*-1)}.Tooltip-module_arrow_topRight__L5URY:after{right:0}.Tooltip-module_arrow_bottomLeft__igebI:after{left:0}.Tooltip-module_arrow_bottomLeft__igebI:after,.Tooltip-module_arrow_bottomRight__iDyHl:after{border-color:var(--color-surface) transparent transparent transparent;border-style:solid;border-width:var(--spacing-arrow-offset) var(--spacing-arrow-offset) 0 var(--spacing-arrow-offset);bottom:calc(var(--spacing-arrow-offset)*-1)}.Tooltip-module_arrow_bottomRight__iDyHl:after{right:0}.Popover-module_root__HE-kk{background:none;border:none;position:absolute}.Popover-module_root__HE-kk.Popover-module_open__1aLk-::backdrop{cursor:auto}.Dialog-module_root__tN0RQ[open]{backdrop-filter:var(--backdrop-blur);background-color:var(--color-surface);border-radius:var(--shape-br-lg);margin:auto;max-height:80%;max-width:45rem;min-width:350px;overflow:hidden;padding:var(--spacing-gap-6);width:50%;&.Dialog-module_fullScreen__BG9mu,&.Dialog-module_fullWidth__WXiYO{max-width:unset;width:100%}&.Dialog-module_fullScreen__BG9mu{height:100%;max-height:unset}}.Dialog-module_root__tN0RQ::backdrop{backdrop-filter:var(--backdrop-blur)}.GlassCard-module_root__rmCxh{--glass-tint:var(--color-primary);--glass-border-width:2px;--glass-border-radius:var(--shape-br-md);--glass-border-color:var(--color-outline);--glass-mouse-pointer-color:color-mix(in srgb,var(--glass-tint) 50%,transparent);--glass-shadow:color-mix(in srgb,var(--glass-tint) 15%,transparent);--glass-backdrop-blur:5px;--glass-position:relative;backdrop-filter:blur(var(--glass-backdrop-blur));border-radius:var(--glass-border-radius);box-shadow:inset 0 0 4px var(--glass-shadow);isolation:isolate;position:var(--glass-position);&:after{--glass-reflection-i:color-mix(in srgb,var(--glass-tint) 20%,transparent);--glass-reflection:color-mix(in srgb,var(--glass-tint) 40%,transparent);--glass-reflection-w:#ffffff79;background-image:linear-gradient(var(--gradient-angle,255deg),var(--glass-reflection-w) 0,var(--glass-reflection) .5%,transparent 30%,transparent 70%,var(--glass-reflection-i) 100%);opacity:var(--glass-reflection-intensity,1);z-index:-2}&:after,&:before{border-radius:inherit;content:"";inset:0;mask:linear-gradient(#000 0 0) exclude,linear-gradient(#000 0 0) content-box;padding:var(--glass-border-width);position:absolute}&:before{background:radial-gradient(250px circle at var(--mouse-x) var(--mouse-y),var(--glass-mouse-pointer-color),transparent 40%);opacity:1;pointer-events:none;transition:opacity var(--transition-time);z-index:-1}}.Accordion-module_summary__3uXXu{align-items:center;border-radius:var(--shape-br-md);cursor:pointer;display:flex;gap:var(--spacing-gap);isolation:isolate;padding:var(--spacing-gap);position:relative;transition:all var(--transition-time) var(--transition-tf);&:hover{background:var(--color-background-faint)}}.Accordion-module_highlight__YzcnA{inset:0;position:absolute;z-index:-1}.Accordion-module_summaryContent__-Wu52{border-radius:calc(var(--shape-br-md) - var(--spacing-gap));container-type:inline-size;flex:1;overflow:hidden}.Accordion-module_marker__7gmt8{flex:0 0 var(--spacing-gap-4);height:var(--spacing-gap-4);position:relative;width:var(--spacing-gap-4);&>svg{inset:0;position:absolute}}.Accordion-module_root__-tG1G{background:var(--color-background);border-radius:var(--shape-br-md);margin-block:0;overflow:hidden;transition:margin-block var(--transition-time) var(--transition-tf);@media (prefers-reduced-motion:no-preference){interpolate-size:allow-keywords}&::details-content{max-height:0;overflow:hidden;transition:content-visibility var(--transition-time) allow-discrete,max-height var(--transition-time) var(--transition-tf)}&[open]{margin-block:var(--spacing-gap-2);&>.Accordion-module_summary__3uXXu{background:var(--color-surface)}&::details-content{max-height:999px;@supports (interpolate-size:allow-keywords){max-height:auto}}}}.Accordion-module_content__NPbBr{padding:var(--spacing-gap-3)}.IdentityDisplay-module_root__nEI-t{border-radius:var(--shape-br-md);display:flex;flex-direction:column;overflow:hidden;padding:var(--spacing-gap-2);position:relative;transition:padding var(--transition-time) var(--transition-tf),width .1s var(--transition-time) var(--transition-tf),color var(--transition-time) var(--transition-tf),background var(--transition-time) var(--transition-tf)}.IdentityDisplay-module_clickable__Xloez{cursor:pointer;&:hover{background:var(--color-primary-container);color:var(--color-on-primary-container)}}.IdentityDisplay-module_main__27-fb{align-items:center;display:flex;gap:var(--spacing-gap-2)}.IdentityDisplay-module_image__YD-pm{align-items:center;display:flex;justify-content:center;&>img{border-radius:50%;height:48px;object-fit:cover;overflow:hidden;width:48px}}.IdentityDisplay-module_details__kSAvW{color:inherit;display:flex;flex-direction:column;& h4{font-size:1.1em;font-weight:700}& h4,&>p{overflow:hidden;text-align:left;text-overflow:ellipsis;white-space:nowrap}&>p{color:var(--color-on-background-faint);font-size:.9em;font-weight:400}}.IdentityDisplay-module_desc__QHEz8{font-size:.9em}.IdentityDisplay-module_image-only__LBjOr{padding:0;& .IdentityDisplay-module_image__YD-pm,& .IdentityDisplay-module_main__27-fb{width:100%}.IdentityDisplay-module_desc__QHEz8,.IdentityDisplay-module_details__kSAvW{display:none}}.IdentityDisplay-module_square__f2jb0{.IdentityDisplay-module_main__27-fb{align-items:center;flex-direction:column}.IdentityDisplay-module_details__kSAvW{&>h4,&>p{text-align:center}}.IdentityDisplay-module_desc__QHEz8{display:none}}.IdentityDisplay-module_compact__ilrg-{.IdentityDisplay-module_desc__QHEz8{display:none}}.PoweredByBanner-module_root__EtEjU{align-items:center;color:inherit;display:flex;gap:var(--spacing-gap);justify-content:center;padding-block:var(--spacing-gap);width:100%}.PoweredByBanner-module_size_sm__8S6Jb{font-size:var(--fs-body2)}.PoweredByBanner-module_size_md__HKrCD{font-size:var(--fs-body)}.PoweredByBanner-module_size_lg__6oEhl{font-size:var(--fs-body);font-weight:700}.Cursor-module_root__xyOg-{height:100vh;isolation:isolate;left:0;pointer-events:none;position:fixed;top:0;width:100%;z-index:-1}.Cursor-module_main__FUTOy{background:radial-gradient(41.94% 82.95% at 50% 50%,color-mix(in srgb,var(--color-primary) 50%,transparent) 0,color-mix(in srgb,var(--color-secondary) 50%,transparent) 100%);border-radius:50%;filter:blur(90px);position:absolute;transition-duration:var(--transition-time);transition-property:width,height,filter;transition-timing-function:var(--transition-tf);translate:-50% -50%}@keyframes Spinner-module_spinning__1J1HL{12%{x:13px;y:1px}25%{x:13px;y:1px}37%{x:13px;y:13px}50%{x:13px;y:13px}62%{x:1px;y:13px}75%{x:1px;y:13px}87%{x:1px;y:1px}}.Spinner-module_main__dBojo{animation:Spinner-module_spinning__1J1HL 1.6s linear infinite;animation-delay:-1.6s}.Spinner-module_trailing__jtCPy{fill-opacity:.5;animation-delay:-1s}.TransitionAnimation-module_growEnter__bI9tZ{max-height:0;max-width:0;opacity:0;overflow:hidden;transform:scale(0)}.TransitionAnimation-module_growEnterActive__yXQ1B{transition:transform var(--transition-tf),max-width var(--transition-tf),max-height var(--transition-tf),opacity var(--transition-tf)}.TransitionAnimation-module_growEnterActive__yXQ1B,.TransitionAnimation-module_growExit__xZ6nz{max-height:100vh;max-width:100vw;opacity:1;overflow:hidden;transform:scale(1)}.TransitionAnimation-module_growExitActive__t6tOi{max-height:0;max-width:0;opacity:0;overflow:hidden;transform:scale(0);transition:transform var(--transition-tf),max-width var(--transition-tf),max-height var(--transition-tf),opacity var(--transition-tf)}.TransitionAnimation-module_fadeEnter__ZQc-U{opacity:0}.TransitionAnimation-module_fadeEnterActive__ZQP8J{opacity:1;transition:opacity var(--transition-tf)}.TransitionAnimation-module_fadeExit__eYDrT{opacity:1}.TransitionAnimation-module_fadeExitActive__1HT2J{opacity:0;transition:opacity var(--transition-tf)}.TransitionAnimation-module_slideEnter__9OKMI{opacity:0;transform:translateY(-20px)}.TransitionAnimation-module_slideEnterActive__DMXWB{opacity:1;transform:translateY(0);transition:transform var(--transition-tf),opacity var(--transition-tf)}.TransitionAnimation-module_slideExit__P7dM2{opacity:1;transform:translateY(0)}.TransitionAnimation-module_slideExitActive__Z4put{opacity:0;transform:translateY(-20px);transition:transform var(--transition-tf),opacity var(--transition-tf)}.TransitionAnimation-module_zoomEnter__6ELcc{max-height:0;max-width:0;opacity:0;overflow:hidden;transform:scale(.5)}.TransitionAnimation-module_zoomEnterActive__2T6j4{transition:transform var(--transition-tf),max-width var(--transition-tf),max-height var(--transition-tf),opacity var(--transition-tf)}.TransitionAnimation-module_zoomEnterActive__2T6j4,.TransitionAnimation-module_zoomExit__SUc94{max-height:100vh;max-width:100vw;opacity:1;overflow:hidden;transform:scale(1)}.TransitionAnimation-module_zoomExitActive__QWH8r{max-height:0;max-width:0;opacity:0;overflow:hidden;transform:scale(1.5);transition:transform var(--transition-tf),max-width var(--transition-tf),max-height var(--transition-tf),opacity var(--transition-tf)}.InputErrors-module_root__APxhq{color:var(--color-error);display:flex;flex-direction:column;font-size:.9em}.Kbd-module_root__OFPCy{align-items:center;display:flex;gap:var(--spacing-gap)}.Kbd-module_kbd__F-c6z{--kbd-size-x:1;--kbd-size-y:1;--kbd-base:30px;display:flex;flex-direction:column;font-family:ui-monospace,SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:60%;gap:.1em;height:calc(var(--kbd-size-y)*var(--kbd-base));justify-content:center;padding:.2em;text-align:center;width:calc(var(--kbd-size-x)*var(--kbd-base));&.Kbd-module_surface__xpquz{background:#313133;border-radius:.4em;color:#ebd6dc}}.LabeledValue-module_root__Vu-iA{align-items:center;display:flex;flex-direction:row;padding-block:var(--spacing-gap);&>.LabeledValue-module_content__EIsuq{flex:1}&>label{color:var(--color-on-background-faint);font-size:.9em;padding-right:var(--spacing-gap-2)}&>.LabeledValue-module_content__EIsuq{border-left:1px solid var(--color-outline);padding-left:var(--spacing-gap-2)}}@container (max-width:400px){.LabeledValue-module_root__Vu-iA{flex-direction:column;&>label{padding-right:0}&>.LabeledValue-module_content__EIsuq{border-left:none;padding-left:0}}}.List-module_root__VY-ni{display:flex;flex-direction:column;list-style-type:none;padding-inline:var(--spacing-gap-3);position:relative}.List-module_root__VY-ni:has(.List-module_shortened__cbFoK){padding:0}.List-module_secondary__lU6qH{border-left:1px solid var(--color-outline);margin-left:var(--spacing-gap-3);margin-block:var(--spacing-gap-2);padding-inline:var(--spacing-gap)}.List-module_listItem__8lcu6{--list-color:var(--color-on-background);--list-background:transparent;--list-hover-color:var(--color-on-background);--list-hover-background:var(--color-background-faint);--list-selected-color:var(--color-primary);--list-selected-background:none;--list-selected-hover-color:var(--color-on-background);--list-selected-hover-background:none;align-items:center;background:var(--list-background);border-radius:var(--shape-br-sm);color:var(--list-color);display:flex;gap:var(--spacing-gap);justify-content:center;overflow:hidden;padding:calc(var(--spacing-gap-3)/1.75) calc(var(--spacing-gap-3)*1.618/1.75);position:relative;transition:all var(--transition-time) var(--transition-tf)}.List-module_listItem__8lcu6.List-module_clickable__3Fj4n{cursor:pointer}.List-module_listItem__8lcu6.List-module_clickable__3Fj4n:not(.List-module_selected__nXBs4):not(:disabled):hover{background:color-mix(in srgb,var(--list-hover-background) 50%,transparent);color:var(--list-hover-color)}.List-module_listItem__8lcu6:focus-visible{outline:var(--focus-ring)}.List-module_selected__nXBs4{background:var(--list-selected-background);color:var(--list-selected-color);&:hover{background:var(--list-selected-hover-background);color:var(--list-selected-hover-color)}}.List-module_disabled__RJxHm{background:var(--color-background-faint);color:var(--color-on-background-faint);cursor:not-allowed}.List-module_shortened__cbFoK{gap:0;&>:not(.List-module_primaryIcon__WyWmw){max-width:0}}.List-module_content__Q2M2b{flex:1;font-weight:700;overflow:hidden}.List-module_content__Q2M2b,.List-module_iconContainer__ZHqxe{align-items:center;color:inherit;display:flex;max-width:50ch;transition:max-width var(--transition-time) var(--transition-tf)}.List-module_iconContainer__ZHqxe{justify-content:center}.List-module_dropDownIcon__XfJpu{display:block;position:relative}.List-module_dropDownIcon__XfJpu.List-module_openSublist__Izz1t{rotate:180deg}.List-module_marker__o4rTn{--glass-border-radius:var(--shape-br-sm);background-color:color-mix(in srgb,var(--color-background) 50%,transparent);display:none;left:0;position:absolute;transition:width 0s linear,top var(--transition-time) var(--transition-tf),left var(--transition-time) var(--transition-tf);width:0;z-index:-1}.List-module_listItem__8lcu6[data-color=primary]{--list-color:var(--color-primary);--list-background:transparent;--list-hover-color:var(--color-on-primary-container);--list-hover-background:var(--color-primary-container);--list-selected-color:none;--list-selected-background:none;--list-selected-hover-color:var(--color-on-background);--list-selected-hover-background:none}.List-module_listItem__8lcu6[data-color=secondary]{--list-color:var(--color-secondary);--list-background:transparent;--list-hover-color:var(--color-on-secondary-container);--list-hover-background:var(--color-secondary-container);--list-selected-color:none;--list-selected-background:none;--list-selected-hover-color:var(--color-on-background);--list-selected-hover-background:none}.List-module_listItem__8lcu6[data-color=error]{--list-color:var(--color-error);--list-background:transparent;--list-hover-color:var(--color-on-error-container);--list-hover-background:var(--color-error-container);--list-selected-color:none;--list-selected-background:none;--list-selected-hover-color:var(--color-on-secondary);--list-selected-hover-background:none}.Skeleton-module_root__Ft3Ey{--skeleton-color-main:var(--color-surface);--skeleton-color-wave:color-mix(in srgb,var(--color-surface) 80%,var(--color-primary) 10%);animation:Skeleton-module_throb__SxiMC 2s var(--transition-tf) infinite;background-image:linear-gradient(to right,var(--skeleton-color-main) 0,var(--skeleton-color-wave) 50%,var(--skeleton-color-main) 100%);background-repeat:repeat-x;background-size:1000px 1000px;border-radius:var(--shape-br-md)}.Skeleton-module_large__LnDji{font-size:2rem}.Skeleton-module_medium__LjhY7{font-size:1.2rem}.Skeleton-module_small__j9Re2{font-size:.75rem}@keyframes Skeleton-module_wave__mC2od{0%{background-position:0 0}to{background-position:-200% 0}}@keyframes Skeleton-module_throb__SxiMC{0%{background:var(--color-surface)}50%{background:color-mix(in srgb,var(--color-primary) 10%,var(--color-surface) 100%)}to{background:var(--color-surface)}}.Checkbox-module_root__52eFu{--outline:var(--color-outline);--color:var(--color-on-surface);--bgcolor:var(--color-surface);--focus-bgcolor:var(--color-background);--checked-outline:var(--color-on-surface);--checked-color:var(--color-surface);--checked-bgcolor:var(--color-on-surface);--indeterminate-outline:var(--color-on-surface);--indeterminate-color:var(--color-surface);--indeterminate-bgcolor:var(--color-on-surface);--disabled-outline:var(--color-background-alpha);--disabled-color:var(--color-on-background-faint);--disabled-bgcolor:var(--color-background-faint);--fs:var(--fs-body2);--size:var(--spacing-gap-4);--gap:var(--spacing-gap-2);--br:var(--shape-br-xs);align-items:center;display:flex;gap:var(--spacing-gap-2);&[data-color=primary]{--outline:var(--color-primary-alpha);--color:var(--color-primary);--bgcolor:var(--color-primary-alpha);--focus-bgcolor:var(--color-primary-container);--checked-outline:var(--color-primary);--checked-color:var(--color-on-primary-container);--checked-bgcolor:var(--color-primary-container);--indeterminate-outline:var(--color-primary);--indeterminate-color:var(--color-on-primary);--indeterminate-bgcolor:var(--color-primary)}&[data-color=secondary]{--outline:var(--color-secondary-alpha);--color:var(--color-secondary);--bgcolor:var(--color-secondary-alpha);--focus-bgcolor:var(--color-secondary-container);--checked-outline:var(--color-secondary);--checked-color:var(--color-on-secondary-container);--checked-bgcolor:var(--color-secondary-container);--indeterminate-outline:var(--color-secondary);--indeterminate-color:var(--color-on-secondary);--indeterminate-bgcolor:var(--color-secondary)}&[data-color=tertiary]{--outline:var(--color-tertiary-alpha);--color:var(--color-tertiary);--bgcolor:var(--color-tertiary-alpha);--focus-bgcolor:var(--color-tertiary-container);--checked-outline:var(--color-tertiary);--checked-color:var(--color-on-tertiary-container);--checked-bgcolor:var(--color-tertiary-container);--indeterminate-outline:var(--color-tertiary);--indeterminate-color:var(--color-on-tertiary);--indeterminate-bgcolor:var(--color-tertiary)}&[data-size=sm]{--fs:var(--fs-body2);--size:var(--spacing-gap-3);--gap:var(--spacing-gap);--br:var(--shape-br-xs)}&[data-size=lg]{--fs:var(--fs-body);--size:var(--spacing-gap-5);--gap:var(--spacing-gap-3);--br:var(--shape-br-sm)}}.Checkbox-module_inputWrapper__JZjHc{border-radius:var(--br);display:flex;height:fit-content;overflow:hidden;position:relative;&:has(input[type=checkbox]:checked){--color:var(--checked-color);--bgcolor:var(--checked-bgcolor);--outline:var(--checked-outline)}&:has(input[type=checkbox]:indeterminate){--color:var(--indeterminate-color);--bgcolor:var(--indeterminate-bgcolor);--outline:var(--indeterminate-outline)}&:has(input[type=checkbox]:disabled){--color:var(--disabled-color);--bgcolor:var(--disabled-bgcolor);--outline:var(--disabled-outline);opacity:.5}}.Checkbox-module_inputWrapper__JZjHc>input[type=checkbox]{background:var(--bgcolor);border:2.3px solid var(--outline);border-radius:inherit;color:var(--color);cursor:pointer;font:inherit;height:var(--size);transition:all var(--transition-time) var(--transition-tf);width:var(--size);&:disabled{cursor:not-allowed}}.Checkbox-module_inputWrapper__JZjHc>span{color:var(--color);height:100%;inset:0;pointer-events:none;position:absolute;&>svg{position:absolute}}.Checkbox-module_show__jXFKu{display:block}.Checkbox-module_hide__j-2PL{display:none}.Checkbox-module_show__jXFKu path{stroke-dasharray:45;stroke-dashoffset:45;animation:Checkbox-module_draw-check__THEN8 calc(var(--transition-time)*2) var(--transition-tf) forwards}.Checkbox-module_hide__j-2PL path{animation:Checkbox-module_draw-check__THEN8 calc(var(--transition-time)*2) var(--transition-tf) reverse}.Checkbox-module_label__4Llik{cursor:pointer}@keyframes Checkbox-module_draw-check__THEN8{to{stroke-dashoffset:0}}.CloseButton-module_root__k-sSS{position:absolute;right:var(--spacing-gap-3);top:var(--spacing-gap-3)}.PasswordInput-module_root__NPboh{--input-border:var(--color-outline);--input-color:var(--color-on-surface);--input-fs:var(--fs-body2);--input-background:var(--color-background-alpha);--input-focus-background:var(--color-background);display:flex;flex-direction:column;font-size:var(--input-fs);gap:var(--spacing-gap);&.PasswordInput-module_fullWidth__rpxCo{width:100%}&:has(.PasswordInput-module_inputWrapper__mq2VY>.PasswordInput-module_input__4CMJv:focus){&>.PasswordInput-module_inputWrapper__mq2VY{background:var(--input-focus-background);outline:none}.PasswordInput-module_label__3PGfK{color:var(--input-color)}}&:has(.PasswordInput-module_inputWrapper__mq2VY>.PasswordInput-module_input__4CMJv:disabled){opacity:.5}}.PasswordInput-module_inputWrapper__mq2VY{background:var(--input-background);border-radius:var(--shape-br-sm);display:flex;outline:1px solid var(--input-border);position:relative}.PasswordInput-module_label__3PGfK{color:var(--color-on-background-faint);cursor:pointer;margin-left:var(--spacing-gap);width:max-content}.PasswordInput-module_input__4CMJv{background:none;border:none;color:var(--input-color);flex:1 1 100%;font-family:var(--font-p);font-size:inherit;&:focus{outline:none}}.PasswordInput-module_iconContainer__Irk1R{align-items:center;color:var(--color-on-background-faint);display:flex;font-size:inherit;justify-content:center;&:first-of-type{margin-left:var(--spacing-gap-2);&.PasswordInput-module_disableGutters__Do0n8{margin-left:0}}&:nth-of-type(2){margin-right:var(--spacing-gap-2);&.PasswordInput-module_disableGutters__Do0n8{margin-right:0}}}.PasswordInput-module_errored__eEIPd{--input-border:var(--color-error);--input-color:var(--color-error);&>.PasswordInput-module_inputWrapper__mq2VY{outline:1px solid var(--input-border);&>.PasswordInput-module_iconContainer__Irk1R{color:var(--input-color)}}&>.PasswordInput-module_label__3PGfK{color:var(--input-color)}}.PasswordInput-module_size_sm__zlHt4{.PasswordInput-module_label__3PGfK{font-size:.8em}.PasswordInput-module_input__4CMJv{padding:var(--spacing-gap) calc(var(--spacing-gap)*1.618)}}.PasswordInput-module_size_md__-PLMI{.PasswordInput-module_label__3PGfK{font-size:.9em}.PasswordInput-module_input__4CMJv{padding:var(--spacing-gap-2) calc(var(--spacing-gap-2)*1.618)}}.PasswordInput-module_size_lg__bWNCd{.PasswordInput-module_label__3PGfK{font-size:1em}.PasswordInput-module_input__4CMJv{padding:var(--spacing-gap-3) calc(var(--spacing-gap-3)*1.618)}}.PasswordStrength-module_root__YPak5{align-items:center;display:flex;flex-wrap:wrap;gap:var(--spacing-gap);padding-inline:var(--spacing-gap);scale:1 0;transition:scale var(--transition-time) var(--transition-tf)}.PasswordStrength-module_title__PnvjF{flex:0 0 auto;font-size:.5rem}.PasswordStrength-module_strengthBars__VDp4V{align-items:flex-start;display:flex;flex:1 1 50%;gap:var(--spacing-gap)}.PasswordStrength-module_bar__cVDvu{background-color:currentColor;border-radius:999px;flex:1 1 25%;scale:0 0;transform-origin:top left;transition:all var(--transition-time) var(--transition-tf)}.PasswordStrength-module_weak__1uds9{height:3px;opacity:.3}.PasswordStrength-module_medium__iDdic{height:5px;opacity:.5}.PasswordStrength-module_good__WkBFX{height:7px;opacity:.8}.PasswordStrength-module_strong__WKvRA{height:9px}.PasswordStrength-module_show__D2ml-{scale:1 1}.TextInput-module_root__PFCcK{--input-border:var(--color-outline);--input-color:var(--color-on-surface);--input-fs:var(--fs-body2);--input-background:var(--color-background-alpha);--input-focus-background:var(--color-background);display:flex;flex-direction:column;font-size:var(--input-fs);gap:var(--spacing-gap);&.TextInput-module_fullWidth__AT0dl{width:100%}&:has(.TextInput-module_inputWrapper__SJTji>.TextInput-module_input__I-YSj:focus){&>.TextInput-module_inputWrapper__SJTji{background:var(--input-focus-background);outline:none}.TextInput-module_label__AVOE4{color:var(--input-color)}}&:has(.TextInput-module_inputWrapper__SJTji>.TextInput-module_input__I-YSj:disabled){opacity:.5}}.TextInput-module_inputWrapper__SJTji{background:var(--input-background);border-radius:var(--shape-br-sm);display:flex;outline:1px solid var(--input-border);position:relative}.TextInput-module_label__AVOE4{color:var(--color-on-background-faint);cursor:pointer;margin-left:var(--spacing-gap);width:max-content}.TextInput-module_input__I-YSj{background:none;border:none;color:var(--input-color);flex:1 1 100%;font-family:var(--font-p);font-size:inherit;&:focus{outline:none}}.TextInput-module_iconContainer__Mkob8{align-items:center;color:var(--color-on-background-faint);display:flex;font-size:inherit;justify-content:center;&:first-of-type{margin-left:var(--spacing-gap-2);&.TextInput-module_disableGutters__zleWJ{margin-left:0}}&:nth-of-type(2){margin-right:var(--spacing-gap-2);&.TextInput-module_disableGutters__zleWJ{margin-right:0}}}.TextInput-module_errored__OtcwB{--input-border:var(--color-error);--input-color:var(--color-error);&>.TextInput-module_inputWrapper__SJTji{outline:1px solid var(--input-border);&>.TextInput-module_iconContainer__Mkob8{color:var(--input-color)}}&>.TextInput-module_label__AVOE4{color:var(--input-color)}}.TextInput-module_size_sm__5Y5wE{.TextInput-module_label__AVOE4{font-size:.8em}.TextInput-module_input__I-YSj{padding:var(--spacing-gap) calc(var(--spacing-gap)*1.618);&.TextInput-module_disableGutters__zleWJ{padding:0}}}.TextInput-module_size_md__ngwcL{.TextInput-module_label__AVOE4{font-size:.9em}.TextInput-module_input__I-YSj{padding:var(--spacing-gap-2) calc(var(--spacing-gap-2)*1.618);&.TextInput-module_disableGutters__zleWJ{padding:0}}}.TextInput-module_size_lg__vFWvg{.TextInput-module_label__AVOE4{font-size:1em}.TextInput-module_input__I-YSj{padding:var(--spacing-gap-3) calc(var(--spacing-gap-3)*1.618);&.TextInput-module_disableGutters__zleWJ{padding:0}}}.Select-module_root__dxgVk{--input-border:var(--color-outline);--input-color:var(--color-on-surface);--input-fs:var(--fs-body2);--input-background:var(--color-background-alpha);--input-focus-background:var(--color-background);display:flex;flex-direction:column;font-size:var(--input-fs);gap:var(--spacing-gap);&.Select-module_fullWidth__Sm-ZO{width:100%}&:has(.Select-module_inputWrapper__WbY3I>.Select-module_input__RZaAp:focus,.Select-module_inputWrapper__WbY3I>.Select-module_input__RZaAp:open){&>.Select-module_inputWrapper__WbY3I{background:var(--input-focus-background);outline:none}.Select-module_label__AHkLr{color:var(--input-color)}}&:has(.Select-module_inputWrapper__WbY3I>.Select-module_input__RZaAp:disabled){opacity:.5}}.Select-module_inputWrapper__WbY3I{background:var(--input-background);border-radius:var(--shape-br-sm);display:flex;outline:1px solid var(--input-border);position:relative}.Select-module_label__AHkLr{color:var(--color-on-background-faint);cursor:pointer;font-size:.9em;margin-left:var(--spacing-gap);width:fit-content}.Select-module_input__RZaAp{appearance:base-select;background-color:var(--input-background);border:none;border-radius:var(--shape-br-sm);color:var(--input-color);cursor:pointer;flex:1 1 100%;font-family:var(--font-p);font-size:inherit;padding:var(--spacing-gap-2) calc(var(--spacing-gap-2)*1.618);transition:all var(--transition-time) var(--transition-tf);&:focus,&:open{background-color:var(--input-focus-background);outline:none}&>option{appearance:base-select;background-color:var(--input-background);border-radius:var(--shape-br-sm);cursor:pointer;font-family:var(--font-p),sans-serif;padding:var(--spacing-gap);transition:all var(--transition-time) var(--transition-tf);&:hover{background-color:var(--input-focus-background)}&:checked{background-color:var(--color-primary-container);color:var(--color-on-primary-container);font-weight:700;transition:all var(--transition-time) var(--transition-tf);&:hover{background-color:var(--color-primary);color:var(--color-on-primary)}}&::checkmark{display:none}}}.Select-module_input__RZaAp::picker(select){appearance:base-select;background-color:var(--input-background);border:1px solid var(--color-outline);border-radius:var(--shape-br-sm);padding:var(--spacing-gap)}.Select-module_input__RZaAp::picker-icon{transition:rotate var(--transition-time) var(--transition-tf)}.Select-module_input__RZaAp:open::picker-icon{rotate:180deg}.Select-module_iconContainer__Xlvlm{align-items:center;color:var(--color-on-background-faint);display:flex;font-size:inherit;justify-content:center;&:first-of-type{margin-left:var(--spacing-gap-2);&.Select-module_disableGutters__7Lu6I{margin-left:0}}&:nth-of-type(2){margin-right:var(--spacing-gap-2);&.Select-module_disableGutters__7Lu6I{margin-right:0}}}.Select-module_errored__IDw1f{--input-border:var(--color-error);--input-color:var(--color-error);&>.Select-module_inputWrapper__WbY3I{outline:1px solid var(--input-border);&>.Select-module_iconContainer__Xlvlm{color:var(--input-color)}}&>.Select-module_label__AHkLr{color:var(--input-color)}}.Select-module_size_sm__6tbtv{.Select-module_label__AHkLr{font-size:.8em}.Select-module_input__RZaAp{padding:var(--spacing-gap) calc(var(--spacing-gap)*1.618);&.Select-module_disableGutters__7Lu6I{padding:0}}}.Select-module_size_md__x3Qop{.Select-module_label__AHkLr{font-size:.9em}.Select-module_input__RZaAp{padding:var(--spacing-gap-2) calc(var(--spacing-gap-2)*1.618);&.Select-module_disableGutters__7Lu6I{padding:0}}}.Select-module_size_lg__-iW76{.Select-module_label__AHkLr{font-size:1em}.Select-module_input__RZaAp{padding:var(--spacing-gap-3) calc(var(--spacing-gap-3)*1.618);&.Select-module_disableGutters__7Lu6I{padding:0}}}.SearchInput-module_root__OXR0e{align-items:center;display:flex;gap:var(--spacing-gap)}.SearchInput-module_collapsed__FpQ7U{& .SearchInput-module_input__3iIbF{overflow:hidden;padding:0;width:0}& .SearchInput-module_searchButton__3-1PX{opacity:0;overflow:hidden;padding:0;width:0}}.SearchInput-module_input__3iIbF{transition:all var(--transition-time) var(--transition-tf);width:22ch}.SearchInput-module_inputWrapper__oFfGE{outline:none!important}.Switch-module_root__iigu-{--br:var(--shape-br-md);--track-width:calc(var(--spacing-gap-6)*1.74353);--track-height:var(--spacing-gap-6);--thumb-width:60%;--track-bg:var(--color-background-alpha);--track-checked-bg:var(--color-background);--thumb-bg:var(--color-on-background-faint);--thumb-checked-bg:var(--color-on-surface);--thumb-color:var(--color-background-faint);--thumb-checked-color:var(--color-surface);align-items:center;display:flex;gap:var(--spacing-gap-2);&:not(.Switch-module_disabled__OpgQK) .Switch-module_track__lLt7Y:hover .Switch-module_thumb__s4iLS{scale:1}&[data-color=primary]{--track-bg:var(--color-background-alpha);--track-checked-bg:var(--color-background);--thumb-bg:var(--color-primary-alpha);--thumb-checked-bg:var(--color-primary);--thumb-color:var(--color-on-primary-container);--thumb-checked-color:var(--color-on-primary)}&[data-color=secondary]{--track-bg:var(--color-background-alpha);--track-checked-bg:var(--color-background);--thumb-bg:var(--color-secondary-alpha);--thumb-checked-bg:var(--color-secondary);--thumb-color:var(--color-on-secondary-container);--thumb-checked-color:var(--color-on-secondary)}&[data-color=error]{--track-bg:var(--color-background-alpha);--track-checked-bg:var(--color-background);--thumb-bg:var(--color-error-alpha);--thumb-checked-bg:var(--color-error);--thumb-color:var(--color-on-error-container);--thumb-checked-color:var(--color-on-error)}&[data-size=sm]{--track-width:calc(var(--spacing-gap-4)*1.74353);--track-height:var(--spacing-gap-4);--br:var(--shape-br-xs)}&[data-size=lg]{--track-width:calc(var(--spacing-gap-8)*1.74353);--track-height:var(--spacing-gap-8);--br:var(--shape-br-md)}}.Switch-module_inputWrapper__o8uEI{height:var(--track-height);padding-inline:.2em;position:relative;width:var(--track-width)}.Switch-module_disabled__OpgQK{--thumb-bg:var(--color-surface-alpha);--thumb-color:var(--color-on-surface);--thumb-checked-bg:var(--color-background-faint);--thumb-checked-color:var(--color-on-background-faint);& .Switch-module_label__vk4At,& .Switch-module_track__lLt7Y{cursor:not-allowed}}.Switch-module_input__pSFbl{inset:0;opacity:0;position:absolute}.Switch-module_inputWrapper__o8uEI:has(.Switch-module_input__pSFbl:focus) .Switch-module_track__lLt7Y{background:var(--track-checked-bg);border:var(--focus-ring)}.Switch-module_track__lLt7Y{background-color:var(--track-bg);border:1px solid var(--color-outline);border-radius:calc(var(--br)*1.2);cursor:pointer;display:block;height:100%;position:relative;width:100%;&.Switch-module_checked__7JJ9o{background:var(--track-checked-bg);& .Switch-module_thumb__s4iLS{animation:Switch-module_checkon__B-djH var(--transition-time) var(--transition-tf) forwards;background-color:var(--thumb-checked-bg);color:var(--thumb-checked-color);left:50%}}}.Switch-module_thumb__s4iLS{align-items:center;animation:Switch-module_checkoff__8YwSV var(--transition-time) var(--transition-tf) forwards;background-color:var(--thumb-bg);border-radius:var(--br);color:var(--thumb-color);display:flex;height:100%;justify-content:center;left:0;position:absolute;scale:.8;top:50%;transition:all var(--transition-time) var(--transition-tf);translate:0 -50%;width:var(--thumb-width)}.Switch-module_label__vk4At{cursor:pointer}@keyframes Switch-module_checkon__B-djH{0%{height:100%;left:0;width:var(--thumb-width)}50%{height:80%;left:0;width:100%}to{height:100%;left:calc(100% - var(--thumb-width));width:var(--thumb-width)}}@keyframes Switch-module_checkoff__8YwSV{0%{height:100%;left:50%;width:var(--thumb-width)}50%{height:80%;left:0;width:100%}to{height:100%;left:0;width:var(--thumb-width)}}.TextAreaInput-module_root__HtNc8{--input-border:var(--color-outline);--input-color:var(--color-on-surface);--input-fs:var(--fs-body2);--input-background:var(--color-background-alpha);--input-focus-background:var(--color-background);display:flex;flex-direction:column;font-size:var(--input-fs);gap:var(--spacing-gap);&.TextAreaInput-module_fullWidth__TUiOx{width:100%}&:has(.TextAreaInput-module_inputWrapper__P-2Yf>.TextAreaInput-module_input__1xpZl:focus){&>.TextAreaInput-module_inputWrapper__P-2Yf{background:var(--input-focus-background);outline:none}.TextAreaInput-module_label__Fgykg{color:var(--input-color)}}&:has(.TextAreaInput-module_inputWrapper__P-2Yf>.TextAreaInput-module_input__1xpZl:disabled){opacity:.5}}.TextAreaInput-module_inputWrapper__P-2Yf{background:var(--input-background);border-radius:var(--shape-br-sm);display:flex;outline:1px solid var(--input-border);position:relative}.TextAreaInput-module_label__Fgykg{color:var(--color-on-background-faint);font-size:.9em;margin-left:var(--spacing-gap)}.TextAreaInput-module_input__1xpZl{background:none;border:none;color:var(--input-color);flex:1 1 100%;font-family:var(--font-p);font-size:inherit;padding:calc(var(--spacing-gap-2)*1.618);&:focus{outline:none}&.TextAreaInput-module_disableResize__uaUnX{resize:none}}.TextAreaInput-module_errored__HJAUZ{--input-border:var(--color-error);--input-color:var(--color-error);&>.TextAreaInput-module_inputWrapper__P-2Yf{outline:1px solid var(--input-border)}&>.TextAreaInput-module_label__Fgykg{color:var(--input-color)}}.Toaster-module_root__jkhXJ{--margin:var(--spacing-gap-3);--peek:0px;height:calc(100% - var(--margin)*2);inset:var(--margin);outline:1px solid red;pointer-events:none;position:fixed;width:calc(100% - var(--margin)*2);z-index:9999}.Toaster-module_toast__fX24q{align-items:center;background:var(--color-background-alpha);border-radius:var(--shape-br-md);color:var(--color-on-surface);display:flex;justify-content:space-between;max-width:340px;min-width:340px;padding:var(--spacing-gap-2) var(--spacing-gap-3);pointer-events:all;position:absolute;&[data-color=primary]{--glass-tint:var(--color-primary);background:var(--color-primary-alpha)}&[data-color=secondary]{--glass-tint:var(--color-secondary);background:var(--color-secondary-alpha)}&[data-color=error]{--glass-tint:var(--color-error);background:var(--color-error-alpha)}&[data-dismissing]{animation:Toaster-module_toast-exit__qsd8p .2s ease forwards}&[data-pos-y=top]{top:var(--peek);&:not([data-dismissing]){animation:Toaster-module_toast-enter-top__KP-c- .25s cubic-bezier(.34,1.56,.64,1) forwards}&[data-dismissing]{animation:Toaster-module_toast-exit-top__wkj2T .2s ease forwards}}&[data-pos-y=center]{top:calc(50% + var(--peek));translate:0 -50%;&:not([data-dismissing]){animation:Toaster-module_toast-enter-center-y__lg4Dp .25s cubic-bezier(.34,1.56,.64,1) forwards}&[data-dismissing]{animation:Toaster-module_toast-exit-center-y__60hoY .2s ease forwards}}&[data-pos-y=bottom]{bottom:var(--peek);&:not([data-dismissing]){animation:Toaster-module_toast-enter-bottom__n8V24 .25s cubic-bezier(.34,1.56,.64,1) forwards}&[data-dismissing]{animation:Toaster-module_toast-exit-bottom__WK7KT .2s ease forwards}}&[data-pos-x=left]{left:0}&[data-pos-x=center]{left:50%;translate:-50% 0}&[data-pos-x=right]{right:0}}@keyframes Toaster-module_toast-enter-top__KP-c-{0%{opacity:0;translate:0 -16px}to{opacity:1;translate:0 0}}@keyframes Toaster-module_toast-enter-bottom__n8V24{0%{opacity:0;translate:0 16px}to{opacity:1;translate:0 0}}@keyframes Toaster-module_toast-enter-center-y__lg4Dp{0%{opacity:0;translate:0 -16px}to{opacity:1;translate:0 0}}@keyframes Toaster-module_toast-exit-top__wkj2T{0%{opacity:1;translate:0 0}to{opacity:0;translate:0 -16px}}@keyframes Toaster-module_toast-exit-bottom__WK7KT{0%{opacity:1;translate:0 0}to{opacity:0;translate:0 16px}}@keyframes Toaster-module_toast-exit-center-y__60hoY{0%{opacity:1;translate:0 0}to{opacity:0;translate:0 -16px}}.ConfirmationForm-module_root__ltcoI{color:var(--color-on-background-faint);display:flex;flex-direction:column;font-size:var(--fs-body2);gap:var(--spacing-gap-3);&>h4{border-bottom:1px solid var(--color-outline);color:var(--color-on-background-faint);font-size:1.2em;padding-bottom:var(--spacing-gap-3)}}.ConfirmationForm-module_danger__C1MyS{&>h4{color:var(--color-error)}}.ConfirmationForm-module_actions__TSHEJ{display:flex;gap:var(--spacing-gap-2);justify-content:flex-end}.ConfirmationForm-module_size_sm__0xJZd{&>h4{font-size:1em}}.ConfirmationForm-module_size_md__ABTKZ{&>h4{font-size:1.2em}}.ConfirmationForm-module_size_lg__uqxZX{&>h4{font-size:1.5em}}.Drawer-module_drawer__i-80z{margin-block:auto;margin-left:auto;margin-right:0;max-height:100%}.PageLayout-module_root__H4l4t{display:flex;flex-direction:column;height:100%;overflow:hidden}.PageLayout-module_titleBar__Be27V{padding-inline:var(--spacing-gap-3)}.PageLayout-module_body__yjAdc{flex:1;overflow:hidden auto;padding-block:var(--spacing-gap-2)}.PageLayout-module_footer__iR2sk{display:flex;justify-content:center;padding-bottom:3dvh;padding-top:var(--spacing-gap-2)}.PageTitle-module_root__qgEO4{border-bottom:1px solid var(--color-outline);display:flex;gap:var(--spacing-gap-3);justify-content:space-between;padding:var(--spacing-gap-4);width:100%;& h1{font-size:var(--fs-h2)}& h2{color:var(--color-on-background-faint);font-size:var(--fs-body2);font-weight:400}}.PageTitle-module_noBorder__hoNLA{border-bottom:none}.PageTitle-module_size_lg__VBUCT{padding:var(--spacing-gap-6);& h1{font-size:var(--fs-h1)}& h2{font-size:var(--fs-body)}}.PageTitle-module_size_sm__QmF4G{padding:var(--spacing-gap-2);& h1{font-size:var(--fs-h4)}}.PageTitle-module_main__bncFv{display:flex;flex-direction:column;justify-content:flex-end}.PageTitle-module_actions__Wef1k{align-items:center;display:flex;flex:1;gap:var(--spacing-gap-2);justify-content:flex-end;overflow:hidden}.PageLayoutPagination-module_list__lyhYm{display:flex;flex-direction:column;gap:var(--spacing-gap)}.TabsBar-module_root__Uve19{--bgcolor:var(--color-background-alpha);--color:var(--color-on-background);--tab-hover-bgcolor:var(--color-background-faint);--tab-hover-color:var(--color-on-surface);--tab-active-color:var(--color-primary);--tab-active-hover-color:var(--color-on-background);--tab-marker-bgcolor:transparent;backdrop-filter:blur(5px);background-color:var(--bgcolor);border-radius:var(--shape-br-sm);display:flex;margin-inline:auto;max-width:100%;overflow:hidden}.TabsBar-module_root__Uve19[data-color=primary]{--bgcolor:var(--color-primary-container);--color:var(--color-on-primary-container);--tab-hover-bgcolor:var(--color-primary-alpha);--tab-hover-color:var(--color-on-primary);--tab-active-color:var(--color-on-primary);--tab-active-hover-color:var(--color-on-primary-container);--tab-marker-bgcolor:var(--color-primary)}.TabsBar-module_root__Uve19[data-color=secondary]{--bgcolor:var(--color-secondary-container);--color:var(--color-on-secondary-container);--tab-hover-bgcolor:var(--color-secondary-alpha);--tab-hover-color:var(--color-on-secondary);--tab-active-color:var(--color-on-secondary);--tab-active-hover-color:var(--color-on-secondary-container);--tab-marker-bgcolor:var(--color-secondary)}.TabsBar-module_overflowContainer__FuUXd{display:flex;gap:var(--spacing-gap);isolation:isolate;position:relative}.TabsBar-module_row__5PKvn{overflow:auto hidden;padding:var(--spacing-gap) var(--spacing-gap-2);width:max-content}.TabsBar-module_column__8Mc64{flex-direction:column;height:100%;overflow:hidden auto;padding:var(--spacing-gap-2);width:100%}.TabsBar-module_tab__jD1nX{color:var(--color)}.TabsBar-module_active__ESPgA{color:var(--tab-active-color);transition:color var(--transition-time) var(--transition-tf)}.TabsBar-module_active__ESPgA:hover{color:var(--tab-active-hover-color)}.TabsBar-module_marker__2e4am{border-radius:var(--shape-br-xs);left:0;position:absolute;transition:all var(--transition-time) var(--transition-tf);z-index:-1}.TabsBar-module_markerInner__T0FZ3{background-color:var(--tab-marker-bgcolor);border-radius:inherit;height:100%;width:100%}.Tab-module_root__ySv89{text-wrap:nowrap;align-items:center;background-color:transparent;border:none;border-radius:var(--shape-br-sm);color:var(--color);cursor:pointer;display:flex;font-family:var(--font-p);font-size:var(--fs-body2);gap:var(--spacing-gap);padding:var(--spacing-gap) var(--spacing-gap-2);position:relative;transition:background-color var(--transition-time) var(--transition-tf)}.Tab-module_clickable__d8Iy-:not(.Tab-module_selected__vToav):hover{background-color:var(--tab-hover-bgcolor);color:var(--tab-hover-color)}.Tab-module_selected__vToav{color:var(--tab-active-color);font-weight:700;&:hover{background-color:var(--bar-active-color);color:var(--bar-active-hover-color-text)}}.Tab-module_disabled__Leret{color:var(--color-on-background-faint);cursor:not-allowed}.Tab-module_iconContainer__-SQ6s{align-items:center;color:inherit;display:flex;justify-content:center}.PageLayoutTabs-module_body__baK6C{padding-inline:var(--spacing-gap-3)}.SectionWrapper-module_root__K-O4Y{display:grid;gap:var(--spacing-gap-2);grid-template-columns:1fr;padding-block:var(--spacing-gap-3);padding-inline:var(--spacing-gap-4)}.SectionWrapper-module_header__8-h-6{&>h4{font-size:1em}&>p{color:var(--color-on-background-faint);font-size:var(--fs-body2)}}.SectionWrapper-module_root__K-O4Y:not(.SectionWrapper-module_noBorders__brOqe){border-top:1px solid var(--color-outline)}.SectionWrapper-module_content__Ruu8X{container-type:inline-size;display:flex;flex-direction:column;font-size:var(--fs-body2)}@container (min-width:600px){.SectionWrapper-module_root__K-O4Y{grid-template-columns:.4fr 1fr}}.Sidebar-module_root__1stxg{--sidebar-closed-width:4rem;--sidebar-open-width:20rem;--sidebar-body-height:65dvh;--sidebar-header-height:4.875rem;--sidebar-color-surface:var(--color-surface-alpha);display:flex;flex-direction:column;gap:var(--spacing-gap);height:100%;isolation:isolate}@media (min-width:600px){.Sidebar-module_root__1stxg{flex-direction:row}}.SidebarBody-module_root__yPbfH{backdrop-filter:var(--backdrop-blur);background-color:var(--color-surface-alpha);height:var(--sidebar-body-height);left:-100%;overflow-x:hidden;position:fixed;top:var(--sidebar-header-height);transition:left var(--transition-time) var(--transition-tf);width:var(--sidebar-open-width)}.SidebarBody-module_open__gtCKF{left:0;overflow-x:auto}@media (min-width:600px){.SidebarBody-module_root__yPbfH{backdrop-filter:none;background-color:transparent;flex:1;height:unset;left:0;position:relative;top:0;width:unset}.SidebarBody-module_open__gtCKF{left:0}}.SidebarDrawer-module_root__CJch2{background:var(--color-surface);display:flex;flex-direction:row;transition:width var(--transition-time) var(--transition-tf);width:100%;z-index:-1}@media (min-width:600px){.SidebarDrawer-module_root__CJch2{background:var(--sidebar-color-surface);flex-direction:column;width:var(--sidebar-closed-width);z-index:0}.SidebarDrawer-module_open__E60Tc{width:var(--sidebar-open-width)}}.SidebarFooter-module_root__AdFmj{backdrop-filter:var(--backdrop-blur);background-color:var(--color-surface-alpha);height:calc(100dvh - var(--sidebar-body-height) - var(--sidebar-header-height));left:-100%;overflow:auto;padding-bottom:var(--spacing-gap-2);padding-top:var(--spacing-gap-1);position:fixed;top:calc(var(--sidebar-header-height) + var(--sidebar-body-height));transition:left var(--transition-time) var(--transition-tf);width:var(--sidebar-open-width)}.SidebarFooter-module_open__qHsZf{left:0}@media (min-width:600px){.SidebarFooter-module_root__AdFmj{backdrop-filter:none;background-color:transparent;height:unset;left:0;position:relative;top:0;width:unset}.SidebarFooter-module_open__qHsZf{left:0}}.SidebarViewport-module_root__KAGAg{container-type:inline-size;flex:1;overflow:auto;z-index:-3}@media (min-width:600px){.SidebarViewport-module_root__KAGAg{z-index:0}}.Table-module_root__-0lhT{max-height:100%;max-width:100%;overflow:auto}.Table-module_table__f1fEX{border-radius:var(--shape-br-md);display:grid;font-family:system-ui,-apple-system,BlinkMacSystemFont,sans-serif;font-size:var(--fs-body2);line-height:1.4;overflow:hidden;width:100%}.Table-module_tableCell__tKgEQ{background:var(--color-background);border-bottom:1px solid var(--color-outline);border-right:1px solid var(--color-outline);overflow:hidden;padding:8px 12px;text-overflow:ellipsis;user-select:none;white-space:nowrap;&:hover{background:var(--color-background-faint)}&:focus-visible{outline:2px solid var(--color-primary);outline-offset:-2px}&:nth-child(n){border-right:none}&[data-selected=true]{background:var(--color-surface);outline:2px solid var(--color-primary);outline-offset:-2px;z-index:1}}.Pagination-module_root__at76F{display:flex;flex-wrap:wrap;gap:var(--spacing-gap-2);list-style-type:none}.Pagination-module_item__2GFks{--pagination-item-fs:var(--fs-body2);align-items:center;border-radius:var(--shape-br-sm);color:var(--color-on-background);cursor:pointer;display:flex;font-size:var(--pagination-item-fs);height:32px;justify-content:center;min-width:fit-content;padding-inline:var(--spacing-gap);transition:all var(--transition-time) var(--transition-tf);width:32px}.Pagination-module_disabled__KG8Cb{cursor:not-allowed;opacity:.5}.Pagination-module_item__2GFks:not(.Pagination-module_disabled__KG8Cb):hover{background:var(--color-surface)}.Pagination-module_activeItem__BVg0A{outline:1px solid var(--color-primary)}.Pagination-module_icon__OcxQW>svg{--pagination-item-icon-size:calc(var(--pagination-item-fs)*1.25);height:var(--pagination-item-icon-size);width:var(--pagination-item-icon-size)}.Pagination-module_icon__OcxQW:nth-child(2)~.Pagination-module_icon__OcxQW{transform:rotate(180deg)}.Breadcrumbs-module_root__KmBxB{align-items:center;display:flex;gap:1ch;&>svg{color:var(--color-on-background-faint)}}.Breadcrumbs-module_item__G3HWH{color:var(--color-on-background-faint);display:content;&:not(.Breadcrumbs-module_activeItem__-C8yn):hover{color:var(--color-primary)}}.Breadcrumbs-module_activeItem__-C8yn{color:var(--color-on-background)}.Breadcrumbs-module_ellipses__R-y7b{color:var(--color-on-background-faint)}.CopyableText-module_root__bhwTN{align-items:center;display:flex;gap:var(--spacing-gap);&>span{-ms-overflow-style:none;background-color:var(--color-surface);border-radius:var(--shape-br-sm);flex:1;font-size:.9em;overflow:auto hidden;padding:var(--spacing-gap);scrollbar-width:none;text-overflow:ellipsis;white-space:nowrap;&::-webkit-scrollbar{display:none}}}.VoidText-module_root__otzOq{color:var(--color-on-background-faint);font-weight:700;opacity:.5;text-align:center;width:100%}
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- export{Card}from"./Cards/Card/Card.js";export{CollectionItemCard}from"./Cards/CollectionItemCard/CollectionItemCard.js";export{CollectionItemCardActions}from"./Cards/CollectionItemCard/CollectionItemCardActions.js";export{GlassCard}from"./Cards/GlassCard/GlassCard.js";export{Accordion,AccordionContext}from"./Display/Accordion/Accordion.js";export{AccordionItem}from"./Display/Accordion/AccordionItem.js";export{Chip}from"./Display/Chip/Chip.js";export{IdentityDisplay}from"./Display/IdentityDisplay/IdentityDisplay.js";export{InputErrors}from"./Display/InputErrors/InputErrors.js";export{Kbd}from"./Display/Kbd/Kbd.js";export{buttonList}from"./Display/Kbd/buttonList.js";export{LabeledValue}from"./Display/LabeledValue/LabeledValue.js";export{List,ListItem,useList}from"./Display/List/List.js";export{Skeleton}from"./Display/Skeleton/Skeleton.js";export{Toaster}from"./Display/Toast/Toaster.js";export{dismiss,subscribe,toast}from"./Display/Toast/toast.js";export{Tooltip}from"./Display/Tooltip/Tooltip.js";export{useTooltip}from"./Display/Tooltip/useTooltip.js";export{ConfirmationForm}from"./Forms/ConfirmationForm/ConfirmationForm.js";export{Button,ButtonBase}from"./Inputs/Button/Button.js";export{Checkbox}from"./Inputs/Checkbox/Checkbox.js";export{CheckboxGroupContext,CheckboxProvider,useCheckbox}from"./Inputs/Checkbox/CheckboxProvider.js";export{CheckboxSelectAll}from"./Inputs/Checkbox/CheckboxSelectAll.js";export{CloseButton,CloseIcon}from"./Inputs/CloseButton/CloseButton.js";export{PasswordInput}from"./Inputs/PasswordInput/PasswordInput.js";export{ReadTimeInput}from"./Inputs/ReadTimeInput.js";export{ClearIcon,SearchCloseIcon,SearchIcon,SearchInput,SearchOpenIcon}from"./Inputs/SearchInput/SearchInput.js";export{Select}from"./Inputs/Select/Select.js";export{Switch}from"./Inputs/Switch/Switch.js";export{TextInput}from"./Inputs/TextInput/TextInput.js";export{TextAreaInput}from"./Inputs/TextAreaInput/TextAreaInput.js";export{ThemeToggleListItem}from"./Inputs/ThemeToggle/ThemeToggleListItem.js";export{Dialog}from"./Layout/Dialog/Dialog.js";export{Drawer}from"./Layout/Drawer/Drawer.js";export{PageLayout}from"./Layout/PageLayout/PageLayout.js";export{PageLayoutPagination}from"./Layout/PageLayoutPagination/PageLayoutPagination.js";export{PageLayoutTabs}from"./Layout/PageLayoutTabs/PageLayoutTabs.js";export{Popover}from"./Layout/Popover/Popover.js";export{SectionWrapper}from"./Layout/SectionWrapper/SectionWrapper.js";export{SIDEBAR_COOKIE,SIDEBAR_COOKIE_MAX_AGE,Sidebar,useSidebar}from"./Layout/Sidebar/Sidebar.js";export{SidebarBody}from"./Layout/Sidebar/SidebarBody/SidebarBody.js";export{SidebarDrawer}from"./Layout/Sidebar/SidebarDrawer/SidebarDrawer.js";export{SidebarFooter}from"./Layout/Sidebar/SidebarFooter/SidebarFooter.js";export{SidebarHeader}from"./Layout/Sidebar/SidebarHeader/SidebarHeader.js";export{SidebarViewport}from"./Layout/Sidebar/SidebarViewport/SidebarViewport.js";export{Table,TableCell,renderCell,useTable}from"./Layout/Table/Table.js";export{TableFooter}from"./Layout/Table/TableFooter.js";export{TableHeader}from"./Layout/Table/TableHeader.js";export{getColumnCount,isAOA,isAOO,isOCR,isOOA}from"./Layout/Table/tableUtils.js";export{eventWithRipple,useRipple}from"./Misc/Ripple/Ripple.js";export{PoweredByBanner}from"./Misc/PoweredByBanner/PoweredByBanner.js";export{Cursor}from"./Misc/Cursor/Cursor.js";export{CubicsUILogo,StudioCubicsLogo}from"./Misc/Logos.js";export{Spinner}from"./Misc/Spinner/Spinner.js";export{TransitionAnimation}from"./Misc/TransitionAnimation/TransitionAnimation.js";export{Pagination}from"./Navigation/Pagination/Pagination.js";export{PaginationItem}from"./Navigation/Pagination/PaginationItem.js";export{usePagination}from"./Navigation/Pagination/usePagination.js";export{Breadcrumbs,ChevronRightIcon,EllipsisIcon}from"./Navigation/Breadcrumbs/Breadcrumbs.js";export{BreadcrumbsItem}from"./Navigation/Breadcrumbs/BreadcrumbsItem.js";export{useBreadcrumbs}from"./Navigation/Breadcrumbs/useBreadcrumbs.js";export{Tabs,useTabs}from"./Navigation/Tabs/Tabs.js";export{Tab}from"./Navigation/Tabs/Tab/Tab.js";export{TabsBar}from"./Navigation/Tabs/TabsBar/TabsBar.js";export{ClampedText}from"./Typography/ClampedText/ClampedText.js";export{CopyIcon,CopyableText}from"./Typography/CopyableText/CopyableText.js";export{PageTitle}from"./Typography/PageTitle/PageTitle.js";export{VoidText}from"./Typography/VoidText/VoidText.js";
1
+ export{Card}from"./Cards/Card/Card.js";export{CollectionItemCard}from"./Cards/CollectionItemCard/CollectionItemCard.js";export{CollectionItemCardActions}from"./Cards/CollectionItemCard/CollectionItemCardActions.js";export{GlassCard}from"./Cards/GlassCard/GlassCard.js";export{Accordion,AccordionContext}from"./Display/Accordion/Accordion.js";export{AccordionItem}from"./Display/Accordion/AccordionItem.js";export{Chip}from"./Display/Chip/Chip.js";export{IdentityDisplay}from"./Display/IdentityDisplay/IdentityDisplay.js";export{InputErrors}from"./Display/InputErrors/InputErrors.js";export{Kbd}from"./Display/Kbd/Kbd.js";export{buttonList}from"./Display/Kbd/buttonList.js";export{LabeledValue}from"./Display/LabeledValue/LabeledValue.js";export{List,ListItem,useList}from"./Display/List/List.js";export{Skeleton}from"./Display/Skeleton/Skeleton.js";export{Toaster}from"./Display/Toast/Toaster.js";export{addDismissInterceptor,confirmDismiss,dismiss,subscribe,toast}from"./Display/Toast/toast.js";export{Tooltip}from"./Display/Tooltip/Tooltip.js";export{useTooltip}from"./Display/Tooltip/useTooltip.js";export{ConfirmationForm}from"./Forms/ConfirmationForm/ConfirmationForm.js";export{Button,ButtonBase}from"./Inputs/Button/Button.js";export{Checkbox}from"./Inputs/Checkbox/Checkbox.js";export{CheckboxGroupContext,CheckboxProvider,useCheckbox}from"./Inputs/Checkbox/CheckboxProvider.js";export{CheckboxSelectAll}from"./Inputs/Checkbox/CheckboxSelectAll.js";export{CloseButton}from"./Inputs/CloseButton/CloseButton.js";export{PasswordInput}from"./Inputs/PasswordInput/PasswordInput.js";export{ReadTimeInput,ReadTimeInputSeparator}from"./Inputs/ReadTimeInput.js";export{ClearIcon,SearchCloseIcon,SearchIcon,SearchInput,SearchOpenIcon}from"./Inputs/SearchInput/SearchInput.js";export{Select}from"./Inputs/Select/Select.js";export{Switch}from"./Inputs/Switch/Switch.js";export{TextInput}from"./Inputs/TextInput/TextInput.js";export{TextAreaInput}from"./Inputs/TextAreaInput/TextAreaInput.js";export{ThemeToggleListItem}from"./Inputs/ThemeToggle/ThemeToggleListItem.js";export{Dialog}from"./Layout/Dialog/Dialog.js";export{Drawer}from"./Layout/Drawer/Drawer.js";export{PageLayout}from"./Layout/PageLayout/PageLayout.js";export{PageLayoutPagination}from"./Layout/PageLayoutPagination/PageLayoutPagination.js";export{PageLayoutTabs}from"./Layout/PageLayoutTabs/PageLayoutTabs.js";export{Popover}from"./Layout/Popover/Popover.js";export{SectionWrapper}from"./Layout/SectionWrapper/SectionWrapper.js";export{SIDEBAR_COOKIE,SIDEBAR_COOKIE_MAX_AGE,Sidebar,useSidebar}from"./Layout/Sidebar/Sidebar.js";export{SidebarBody}from"./Layout/Sidebar/SidebarBody/SidebarBody.js";export{SidebarDrawer}from"./Layout/Sidebar/SidebarDrawer/SidebarDrawer.js";export{SidebarFooter}from"./Layout/Sidebar/SidebarFooter/SidebarFooter.js";export{SidebarHeader}from"./Layout/Sidebar/SidebarHeader/SidebarHeader.js";export{SidebarViewport}from"./Layout/Sidebar/SidebarViewport/SidebarViewport.js";export{Table,TableCell,renderCell,useTable}from"./Layout/Table/Table.js";export{TableFooter}from"./Layout/Table/TableFooter.js";export{TableHeader}from"./Layout/Table/TableHeader.js";export{getColumnCount,isAOA,isAOO,isOCR,isOOA}from"./Layout/Table/tableUtils.js";export{eventWithRipple,useRipple}from"./Misc/Ripple/Ripple.js";export{PoweredByBanner}from"./Misc/PoweredByBanner/PoweredByBanner.js";export{Cursor}from"./Misc/Cursor/Cursor.js";export{CubicsUILogo,StudioCubicsLogo}from"./Misc/Logos.js";export{Spinner}from"./Misc/Spinner/Spinner.js";export{TransitionAnimation}from"./Misc/TransitionAnimation/TransitionAnimation.js";export{Pagination}from"./Navigation/Pagination/Pagination.js";export{PaginationItem}from"./Navigation/Pagination/PaginationItem.js";export{usePagination}from"./Navigation/Pagination/usePagination.js";export{Breadcrumbs,ChevronRightIcon,EllipsisIcon}from"./Navigation/Breadcrumbs/Breadcrumbs.js";export{BreadcrumbsItem}from"./Navigation/Breadcrumbs/BreadcrumbsItem.js";export{useBreadcrumbs}from"./Navigation/Breadcrumbs/useBreadcrumbs.js";export{Tabs,useTabs}from"./Navigation/Tabs/Tabs.js";export{Tab}from"./Navigation/Tabs/Tab/Tab.js";export{TabsBar}from"./Navigation/Tabs/TabsBar/TabsBar.js";export{ClampedText}from"./Typography/ClampedText/ClampedText.js";export{CopyIcon,CopyableText}from"./Typography/CopyableText/CopyableText.js";export{PageTitle}from"./Typography/PageTitle/PageTitle.js";export{VoidText}from"./Typography/VoidText/VoidText.js";
2
2
  //# sourceMappingURL=index.js.map
package/package.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "access": "public"
6
6
  },
7
7
  "private": false,
8
- "version": "0.0.11",
8
+ "version": "0.0.12",
9
9
  "keywords": [
10
10
  "@studiocubics",
11
11
  "cubics",
@@ -34,9 +34,9 @@
34
34
  "react-dom": ">= 19"
35
35
  },
36
36
  "dependencies": {
37
- "@studiocubics/hooks": "^0.0.11",
38
- "@studiocubics/types": "^0.0.11",
39
- "@studiocubics/utils": "^0.0.11"
37
+ "@studiocubics/hooks": "^0.0.12",
38
+ "@studiocubics/types": "^0.0.12",
39
+ "@studiocubics/utils": "^0.0.12"
40
40
  },
41
41
  "devDependencies": {
42
42
  "@eslint/js": "^9.39.1",