@studiocubics/components 0.0.16 → 0.0.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Cards/CollectionItemCard/CollectionItemCard.js.map +1 -1
- package/dist/Display/Divider/Divider.d.ts +13 -0
- package/dist/Display/Divider/Divider.js +2 -0
- package/dist/Display/Divider/Divider.js.map +1 -0
- package/dist/Display/Divider/Divider.module.css.js +2 -0
- package/dist/Display/Divider/Divider.module.css.js.map +1 -0
- package/dist/Display/_index.d.ts +1 -0
- package/dist/Inputs/Checkbox/Checkbox.js +1 -1
- package/dist/Inputs/Checkbox/Checkbox.js.map +1 -1
- package/dist/Inputs/PasswordInput/PasswordInput.js +1 -1
- package/dist/Inputs/PasswordInput/PasswordInput.js.map +1 -1
- package/dist/Inputs/Select/Select.js +1 -1
- package/dist/Inputs/Select/Select.js.map +1 -1
- package/dist/Inputs/Switch/Switch.js +1 -1
- package/dist/Inputs/Switch/Switch.js.map +1 -1
- package/dist/Inputs/TextAreaInput/TextAreaInput.js +1 -1
- package/dist/Inputs/TextAreaInput/TextAreaInput.js.map +1 -1
- package/dist/Inputs/TextInput/TextInput.js +1 -1
- package/dist/Inputs/TextInput/TextInput.js.map +1 -1
- package/dist/Layout/SectionWrapper/SectionWrapper.d.ts +3 -2
- package/dist/Layout/SectionWrapper/SectionWrapper.js +1 -1
- package/dist/Layout/SectionWrapper/SectionWrapper.js.map +1 -1
- package/dist/Layout/SectionWrapper/SectionWrapper.module.css.js +1 -1
- package/dist/index.css +1 -1
- package/dist/index.js +1 -1
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CollectionItemCard.js","sources":["../../../src/Cards/CollectionItemCard/CollectionItemCard.tsx"],"sourcesContent":["\"use client\";\n\nimport type { ComponentProps, ElementType, ReactNode } from \"react\";\nimport styles from \"./CollectionItemCard.module.css\";\nimport type {\n PolymorphicComponentProps,\n PolymorphicComponentType,\n} from \"@studiocubics/types\";\nimport { cn } from \"@studiocubics/utils\";\nimport {\n ClampedText,\n type ClampedTextProps,\n} from \"../../Typography/ClampedText/ClampedText\";\nimport { Chip, type ChipProps } from \"../../Display/Chip/Chip\";\n/**\n * Props specific to the CollectionItemCard component.\n *\n * These extend the intrinsic element props of whatever element is passed via `as`.\n * @group CollectionItemCard\n * @category Cards\n */\nexport interface CollectionItemCardBaseProps {\n thumbnail?: ReactNode;\n title: ReactNode;\n chip?: ReactNode;\n subtitle?: ReactNode;\n description?: ReactNode;\n footer?: ReactNode;\n slotProps?: {\n root?: ComponentProps<\"div\">;\n chip?: ChipProps;\n thumbnail?: ComponentProps<\"div\">;\n titleContainer?: ComponentProps<\"div\">;\n title?: ClampedTextProps;\n subtitle?: ClampedTextProps;\n description?: ClampedTextProps;\n footerContainer?: ComponentProps<\"div\">;\n };\n}\nconst defaultElement = \"a\";\ntype DefaultElement = typeof defaultElement;\n/**\n * Polymorphic props for the CollectionItemCard component.\n *\n * `C` defines the element type rendered by the component (e.g. `\"CollectionItemCard\"`, `\"a\"`, `\"div\"`).\n * All intrinsic props for `C` are supported unless overridden by `CollectionItemCardBaseProps`.\n *\n * @group CollectionItemCard\n * @category Cards\n */\nexport type CollectionItemCardProps<C extends ElementType = DefaultElement> =\n PolymorphicComponentProps<C, CollectionItemCardBaseProps>;\n\n/**\n * Base implementation for the CollectionItemCard component.\n *\n * This is a polymorphic component that defaults to rendering a `<CollectionItemCard>`.\n * Use the `as` prop to change the underlying element.\n *\n * @typeParam C - The intrinsic or custom element type to render.\n *\n * @group CollectionItemCard\n * @category Cards\n */\nfunction CollectionItemCardBase<C extends ElementType = DefaultElement>(\n props: CollectionItemCardProps<C>,\n) {\n const {\n as,\n className,\n ref,\n thumbnail,\n title,\n chip,\n subtitle,\n description,\n footer,\n slotProps = {},\n ...restProps\n } = props;\n const Component = as || defaultElement;\n\n const clickable = !!props.href || !!props.onClick;\n const componentProps = {\n className: cn(className, styles.main),\n ref,\n ...restProps,\n };\n\n return (\n <div\n {...slotProps.root}\n className={cn(\n styles.root,\n clickable ? styles.clickable : \"\",\n slotProps.root?.className,\n )}\n >\n {thumbnail && (\n <div\n {...slotProps.thumbnail}\n className={cn(styles.image, slotProps.thumbnail?.className)}\n >\n {thumbnail}\n </div>\n )}\n <Component {...componentProps}>\n <div\n {...slotProps.titleContainer}\n className={cn(styles.title, slotProps.titleContainer?.className)}\n >\n {chip &&\n (typeof chip == \"string\" ? (\n <Chip size=\"sm\" {...slotProps.chip}>\n {chip}\n </Chip>\n ) : (\n chip\n ))}\n <ClampedText as=\"h4\" {...slotProps.title}>\n {title}\n </ClampedText>\n </div>\n {subtitle && (\n <ClampedText\n {...slotProps.subtitle}\n as=\"div\"\n className={cn(styles.subtitle, slotProps.subtitle?.className)}\n >\n {subtitle}\n </ClampedText>\n )}\n {description && (\n <ClampedText\n {...slotProps.description}\n as=\"div\"\n className={cn(styles.description, slotProps.description?.className)}\n >\n {description}\n </ClampedText>\n )}\n </Component>\n {footer && (\n <div\n {...slotProps.footerContainer}\n className={cn(styles.footer, slotProps.footerContainer?.className)}\n >\n {footer}\n </div>\n )}\n </div>\n );\n}\nCollectionItemCardBase.displayName = \"CollectionItemCard\";\n\n/**\n * A polymorphic CollectionItemCard component.\n *\n * By default it renders a `<CollectionItemCard>`, but any element can be used via the `as` prop:\n *\n * ```tsx\n * <CollectionItemCard as=\"a\" href=\"/docs\">Read docs</CollectionItemCard>\n * ```\n *\n * @group CollectionItemCard\n * @category Cards\n */\nexport const CollectionItemCard =\n CollectionItemCardBase as PolymorphicComponentType<\n CollectionItemCardBaseProps,\n DefaultElement\n >;\n"],"names":["CollectionItemCardBase","props","as","className","ref","thumbnail","title","chip","subtitle","description","footer","slotProps","restProps","Component","clickable","href","onClick","componentProps","cn","styles","main","_jsxs","root","children","_jsx","image","titleContainer","Chip","size","ClampedText","footerContainer","displayName","CollectionItemCard"],"mappings":"
|
|
1
|
+
{"version":3,"file":"CollectionItemCard.js","sources":["../../../src/Cards/CollectionItemCard/CollectionItemCard.tsx"],"sourcesContent":["\"use client\";\n\nimport type { ComponentProps, ElementType, ReactNode } from \"react\";\nimport styles from \"./CollectionItemCard.module.css\";\nimport type {\n PolymorphicComponentProps,\n PolymorphicComponentType,\n} from \"@studiocubics/types\";\nimport { cn } from \"@studiocubics/utils\";\nimport {\n ClampedText,\n type ClampedTextProps,\n} from \"../../Typography/ClampedText/ClampedText\";\nimport { Chip, type ChipProps } from \"../../Display/Chip/Chip\";\n/**\n * Props specific to the CollectionItemCard component.\n *\n * These extend the intrinsic element props of whatever element is passed via `as`.\n * @group CollectionItemCard\n * @category Cards\n */\nexport interface CollectionItemCardBaseProps {\n thumbnail?: ReactNode;\n title: ReactNode;\n chip?: ReactNode;\n subtitle?: ReactNode;\n description?: ReactNode;\n footer?: ReactNode;\n slotProps?: {\n // TODO rename to container\n root?: ComponentProps<\"div\">;\n chip?: ChipProps;\n thumbnail?: ComponentProps<\"div\">;\n titleContainer?: ComponentProps<\"div\">;\n title?: ClampedTextProps;\n subtitle?: ClampedTextProps;\n description?: ClampedTextProps;\n footerContainer?: ComponentProps<\"div\">;\n };\n}\nconst defaultElement = \"a\";\ntype DefaultElement = typeof defaultElement;\n/**\n * Polymorphic props for the CollectionItemCard component.\n *\n * `C` defines the element type rendered by the component (e.g. `\"CollectionItemCard\"`, `\"a\"`, `\"div\"`).\n * All intrinsic props for `C` are supported unless overridden by `CollectionItemCardBaseProps`.\n *\n * @group CollectionItemCard\n * @category Cards\n */\nexport type CollectionItemCardProps<C extends ElementType = DefaultElement> =\n PolymorphicComponentProps<C, CollectionItemCardBaseProps>;\n\n/**\n * Base implementation for the CollectionItemCard component.\n *\n * This is a polymorphic component that defaults to rendering a `<CollectionItemCard>`.\n * Use the `as` prop to change the underlying element.\n *\n * @typeParam C - The intrinsic or custom element type to render.\n *\n * @group CollectionItemCard\n * @category Cards\n */\nfunction CollectionItemCardBase<C extends ElementType = DefaultElement>(\n props: CollectionItemCardProps<C>,\n) {\n const {\n as,\n className,\n ref,\n thumbnail,\n title,\n chip,\n subtitle,\n description,\n footer,\n slotProps = {},\n ...restProps\n } = props;\n const Component = as || defaultElement;\n\n const clickable = !!props.href || !!props.onClick;\n const componentProps = {\n className: cn(className, styles.main),\n ref,\n ...restProps,\n };\n\n return (\n <div\n // TODO rename to container\n {...slotProps.root}\n className={cn(\n styles.root,\n clickable ? styles.clickable : \"\",\n slotProps.root?.className,\n )}\n >\n {thumbnail && (\n <div\n {...slotProps.thumbnail}\n className={cn(styles.image, slotProps.thumbnail?.className)}\n >\n {thumbnail}\n </div>\n )}\n <Component {...componentProps}>\n <div\n {...slotProps.titleContainer}\n className={cn(styles.title, slotProps.titleContainer?.className)}\n >\n {chip &&\n (typeof chip == \"string\" ? (\n <Chip size=\"sm\" {...slotProps.chip}>\n {chip}\n </Chip>\n ) : (\n chip\n ))}\n <ClampedText as=\"h4\" {...slotProps.title}>\n {title}\n </ClampedText>\n </div>\n {subtitle && (\n <ClampedText\n {...slotProps.subtitle}\n as=\"div\"\n className={cn(styles.subtitle, slotProps.subtitle?.className)}\n >\n {subtitle}\n </ClampedText>\n )}\n {description && (\n <ClampedText\n {...slotProps.description}\n as=\"div\"\n className={cn(styles.description, slotProps.description?.className)}\n >\n {description}\n </ClampedText>\n )}\n </Component>\n {footer && (\n <div\n {...slotProps.footerContainer}\n className={cn(styles.footer, slotProps.footerContainer?.className)}\n >\n {footer}\n </div>\n )}\n </div>\n );\n}\nCollectionItemCardBase.displayName = \"CollectionItemCard\";\n\n/**\n * A polymorphic CollectionItemCard component.\n *\n * By default it renders a `<CollectionItemCard>`, but any element can be used via the `as` prop:\n *\n * ```tsx\n * <CollectionItemCard as=\"a\" href=\"/docs\">Read docs</CollectionItemCard>\n * ```\n *\n * @group CollectionItemCard\n * @category Cards\n */\nexport const CollectionItemCard =\n CollectionItemCardBase as PolymorphicComponentType<\n CollectionItemCardBaseProps,\n DefaultElement\n >;\n"],"names":["CollectionItemCardBase","props","as","className","ref","thumbnail","title","chip","subtitle","description","footer","slotProps","restProps","Component","clickable","href","onClick","componentProps","cn","styles","main","_jsxs","root","children","_jsx","image","titleContainer","Chip","size","ClampedText","footerContainer","displayName","CollectionItemCard"],"mappings":"sRAiEA,SAASA,EACPC,GAEA,MAAMC,GACJA,EAAEC,UACFA,EAASC,IACTA,EAAGC,UACHA,EAASC,MACTA,EAAKC,KACLA,EAAIC,SACJA,EAAQC,YACRA,EAAWC,OACXA,EAAMC,UACNA,EAAY,CAAA,KACTC,GACDX,EACEY,EAAYX,GAzCG,IA2CfY,IAAcb,EAAMc,QAAUd,EAAMe,QACpCC,EAAiB,CACrBd,UAAWe,EAAGf,EAAWgB,EAAOC,MAChChB,SACGQ,GAGL,OACES,EAAA,MAAA,IAEMV,EAAUW,KACdnB,UAAWe,EACTC,EAAOG,KACPR,EAAYK,EAAOL,UAAY,GAC/BH,EAAUW,MAAMnB,WACjBoB,SAAA,CAEAlB,GACCmB,YACMb,EAAUN,UACdF,UAAWe,EAAGC,EAAOM,MAAOd,EAAUN,WAAWF,oBAEhDE,IAGLgB,EAACR,EAAS,IAAKI,EAAcM,SAAA,CAC3BF,EAAA,MAAA,IACMV,EAAUe,eACdvB,UAAWe,EAAGC,EAAOb,MAAOK,EAAUe,gBAAgBvB,qBAErDI,IACiB,iBAARA,EACNiB,EAACG,EAAI,CAACC,KAAK,QAASjB,EAAUJ,KAAIgB,SAC/BhB,IACI,GAIXiB,EAACK,EAAW,CAAC3B,GAAG,QAASS,EAAUL,eAChCA,OAGJE,GACCgB,EAACK,EAAW,IACNlB,EAAUH,SACdN,GAAG,MACHC,UAAWe,EAAGC,EAAOX,SAAUG,EAAUH,UAAUL,WAAUoB,SAE5Df,IAGJC,GACCe,EAACK,EAAW,IACNlB,EAAUF,YACdP,GAAG,MACHC,UAAWe,EAAGC,EAAOV,YAAaE,EAAUF,aAAaN,WAAUoB,SAElEd,OAINC,GACCc,EAAA,MAAA,IACMb,EAAUmB,gBACd3B,UAAWe,EAAGC,EAAOT,OAAQC,EAAUmB,iBAAiB3B,WAAUoB,SAEjEb,MAKX,CACAV,EAAuB+B,YAAc,qBAc9B,MAAMC,EACXhC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { ComponentProps, ElementType } from "react";
|
|
2
|
+
import type { PolymorphicComponentProps, PolymorphicComponentType } from "@studiocubics/types";
|
|
3
|
+
export interface DividerBaseProps {
|
|
4
|
+
orientation?: "horizontal" | "vertical";
|
|
5
|
+
slotProps?: {
|
|
6
|
+
container?: ComponentProps<"div">;
|
|
7
|
+
};
|
|
8
|
+
}
|
|
9
|
+
declare const defaultElement = "hr";
|
|
10
|
+
type DefaultElement = typeof defaultElement;
|
|
11
|
+
export type DividerProps<C extends ElementType = DefaultElement> = PolymorphicComponentProps<C, DividerBaseProps>;
|
|
12
|
+
export declare const Divider: PolymorphicComponentType<DividerBaseProps, DefaultElement>;
|
|
13
|
+
export {};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{jsx as i,jsxs as r}from"react/jsx-runtime";import o from"./Divider.module.css.js";import{cn as s}from"@studiocubics/utils";function e(e){const{as:t,children:a,className:n,orientation:c="horizontal",slotProps:m,...l}=e,d=m??{},u=t||"hr",p={...l,className:s(n,o.divider,o[c])},N=i(u,{...p});return a?r("div",{...d?.container,className:s(o.container,o[c],d.container?.className),children:[N,a,N]}):N}e.displayName="Divider";const t=e;export{t as Divider};
|
|
2
|
+
//# sourceMappingURL=Divider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Divider.js","sources":["../../../src/Display/Divider/Divider.tsx"],"sourcesContent":["import type { ComponentProps, ElementType } from \"react\";\r\nimport styles from \"./Divider.module.css\";\r\nimport type {\r\n PolymorphicComponentProps,\r\n PolymorphicComponentType,\r\n} from \"@studiocubics/types\";\r\nimport { cn } from \"@studiocubics/utils\";\r\n\r\nexport interface DividerBaseProps {\r\n orientation?: \"horizontal\" | \"vertical\";\r\n slotProps?: { container?: ComponentProps<\"div\"> };\r\n}\r\n\r\nconst defaultElement = \"hr\";\r\ntype DefaultElement = typeof defaultElement;\r\n\r\nexport type DividerProps<C extends ElementType = DefaultElement> =\r\n PolymorphicComponentProps<C, DividerBaseProps>;\r\n\r\nfunction DividerBase<C extends ElementType = DefaultElement>(\r\n props: DividerProps<C>,\r\n) {\r\n const {\r\n as,\r\n children,\r\n className,\r\n orientation = \"horizontal\",\r\n slotProps: _slotProps,\r\n ...rest\r\n } = props as DividerProps<DefaultElement>;\r\n const slotProps: NonNullable<DividerBaseProps[\"slotProps\"]> =\r\n _slotProps ?? {};\r\n const Component = as || defaultElement;\r\n const componentProps = {\r\n ...rest,\r\n className: cn(className, styles.divider, styles[orientation]),\r\n };\r\n const line = <Component {...componentProps} />;\r\n if (children)\r\n return (\r\n <div\r\n {...slotProps?.container}\r\n className={cn(\r\n styles.container,\r\n styles[orientation],\r\n slotProps.container?.className,\r\n )}\r\n >\r\n {line}\r\n {children}\r\n {line}\r\n </div>\r\n );\r\n\r\n return line;\r\n}\r\n\r\nDividerBase.displayName = \"Divider\";\r\n\r\nexport const Divider = DividerBase as PolymorphicComponentType<\r\n DividerBaseProps,\r\n DefaultElement\r\n>;\r\n"],"names":["DividerBase","props","as","children","className","orientation","slotProps","_slotProps","rest","Component","componentProps","cn","styles","divider","line","_jsx","_jsxs","container","displayName","Divider"],"mappings":"kIAmBA,SAASA,EACPC,GAEA,MAAMC,GACJA,EAAEC,SACFA,EAAQC,UACRA,EAASC,YACTA,EAAc,aACdC,UAAWC,KACRC,GACDP,EACEK,EACJC,GAAc,CAAA,EACVE,EAAYP,GAnBG,KAoBfQ,EAAiB,IAClBF,EACHJ,UAAWO,EAAGP,EAAWQ,EAAOC,QAASD,EAAOP,KAE5CS,EAAOC,EAACN,EAAS,IAAKC,IAC5B,OAAIP,EAEAa,EAAA,MAAA,IACMV,GAAWW,UACfb,UAAWO,EACTC,EAAOK,UACPL,EAAOP,GACPC,EAAUW,WAAWb,WACtBD,SAAA,CAEAW,EACAX,EACAW,KAIAA,CACT,CAEAd,EAAYkB,YAAc,UAEnB,MAAMC,EAAUnB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Divider.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
package/dist/Display/_index.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use client";import{jsxs as e,jsx as r}from"react/jsx-runtime";import{useContext as t,useMemo as o,useState as n,useRef as i,useEffect as c}from"react";import{CheckboxGroupContext as a}from"./CheckboxProvider.js";import{
|
|
1
|
+
"use client";import{jsxs as e,jsx as r}from"react/jsx-runtime";import{useContext as t,useMemo as o,useState as n,useRef as i,useEffect as c}from"react";import{CheckboxGroupContext as a}from"./CheckboxProvider.js";import{cssSafeString as s,cn as l}from"@studiocubics/utils";import d from"./Checkbox.module.css.js";import{useRipple as m,eventWithRipple as p}from"../../Misc/Ripple/Ripple.js";function h(h){const{label:w,checked:b,indeterminate:f=!1,skipGroup:g,checkedIcon:v,indeterminateIcon:N,slotProps:x={},"aria-label":C,onChange:j,onTouchStart:W,onClick:z,htmlSize:L,id:M=s(w),size:S="md",color:R,...B}=h,I=t(a),P=o(()=>M??String(Math.random()),[M]),[T,y]=n(!1),E=i(null),F=i(!1),{rippleElements:G,createRipple:q}=m(),A=I&&!g?I.values[P]??!1:b??T;return c(()=>{!I||g||F.current||(F.current=!0,I.register(P))},[I,g,P]),c(()=>{E.current&&(E.current.indeterminate=f)},[f]),e("div",{...x.root,className:l(d.root,x.root?.className),"data-color":R,"data-size":S,children:[e("div",{...x.inputWrapper,className:l(d.inputWrapper,x.inputWrapper?.className),children:[G,r("input",{...B,ref:E,id:M,type:"checkbox",checked:A,"aria-checked":A??!1,"aria-label":C??w,onChange:e=>{const r=e.target.checked;I&&!g?I.update(P,r):y(r),j?.(e,r)},onTouchStart:p(q,W),onClick:p(q,z),size:L}),e("span",{children:[v??r(u,{checked:A}),N??r(k,{indeterminate:f})]})]}),w&&r("label",{...x.label,htmlFor:M,className:l(x.label?.className,d.label),children:w})]})}function u(e){const{checked:t,className:o,...n}=e;return r("svg",{...n,xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.3",strokeLinecap:"round",strokeLinejoin:"round",className:l(t?d.show:d.hide,d.checked,o),children:r("path",{d:"M5 13 9 17l10 -9"})})}function k(e){const{indeterminate:t,className:o,...n}=e;return r("svg",{...n,viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",className:l(t?d.show:d.hide,d.indeterminate,o),stroke:"currentColor",strokeWidth:"2.3",strokeLinecap:"round",strokeLinejoin:"round",children:r("path",{d:"M5 12h14"})})}export{h as Checkbox};
|
|
2
2
|
//# sourceMappingURL=Checkbox.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Checkbox.js","sources":["../../../src/Inputs/Checkbox/Checkbox.tsx"],"sourcesContent":["\"use client\";\n\nimport {\n type ComponentProps,\n type ReactElement,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { CheckboxGroupContext } from \"./CheckboxProvider\";\n\nimport { cn,
|
|
1
|
+
{"version":3,"file":"Checkbox.js","sources":["../../../src/Inputs/Checkbox/Checkbox.tsx"],"sourcesContent":["\"use client\";\n\nimport {\n type ComponentProps,\n type ReactElement,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { CheckboxGroupContext } from \"./CheckboxProvider\";\n\nimport { cn, cssSafeString } from \"@studiocubics/utils\";\nimport styles from \"./Checkbox.module.css\";\nimport {\n eventWithRipple,\n useRipple,\n type UseRippleProps,\n} from \"../../Misc/Ripple/Ripple\";\n\nexport interface CheckboxProps\n extends Omit<ComponentProps<\"input\">, \"onChange\" | \"type\" | \"size\"> {\n label?: string;\n checked?: boolean;\n indeterminate?: boolean;\n onChange?: (\n event: React.ChangeEvent<HTMLInputElement>,\n checked: boolean,\n ) => void;\n checkedIcon?: ReactElement<\n Required<Pick<CheckboxProps, \"checked\">> & ComponentProps<\"svg\">\n >;\n indeterminateIcon?: ReactElement<\n Required<Pick<CheckboxProps, \"indeterminate\">> & ComponentProps<\"svg\">\n >;\n slotProps?: {\n ripple?: UseRippleProps;\n startIcon?: ComponentProps<\"span\">;\n endIcon?: ComponentProps<\"span\">;\n root?: ComponentProps<\"div\">;\n inputWrapper?: ComponentProps<\"div\">;\n label?: ComponentProps<\"label\">;\n error?: ComponentProps<\"p\">;\n };\n /**\n * Skips registering with provider\n */\n skipGroup?: boolean;\n size?: \"sm\" | \"md\" | \"lg\";\n color?: \"primary\" | \"secondary\" | \"error\";\n htmlSize?: ComponentProps<\"input\">[\"size\"];\n}\n\nexport function Checkbox(props: CheckboxProps) {\n const {\n label,\n checked,\n indeterminate = false,\n skipGroup,\n checkedIcon,\n indeterminateIcon,\n slotProps = {},\n \"aria-label\": ariaLabel,\n onChange,\n onTouchStart,\n onClick,\n htmlSize,\n id = cssSafeString(label),\n size = \"md\",\n color,\n ...rest\n } = props;\n const group = useContext(CheckboxGroupContext);\n // Stable key: use provided id or fall back to auto-incremented index\n const groupId = useMemo(() => id ?? String(Math.random()), [id]);\n const [selfChecked, setSelfChecked] = useState(false);\n\n const inputRef = useRef<HTMLInputElement>(null);\n const isRegistered = useRef(false);\n\n const { rippleElements, createRipple } = useRipple();\n\n const isChecked =\n group && !skipGroup\n ? (group.values[groupId] ?? false)\n : (checked ?? selfChecked);\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const next = e.target.checked;\n if (group && !skipGroup) {\n group.update(groupId, next);\n } else {\n setSelfChecked(next);\n }\n onChange?.(e, next);\n };\n\n // Register with group if present\n useEffect(() => {\n if (!group || skipGroup || isRegistered.current) return;\n isRegistered.current = true;\n group.register(groupId);\n }, [group, skipGroup, groupId]);\n\n // Set indeterminate state\n useEffect(() => {\n if (inputRef.current) {\n inputRef.current.indeterminate = indeterminate;\n }\n }, [indeterminate]);\n\n return (\n <div\n // TODO rename to container\n {...slotProps.root}\n className={cn(styles.root, slotProps.root?.className)}\n data-color={color}\n data-size={size}\n >\n <div\n {...slotProps.inputWrapper}\n className={cn(styles.inputWrapper, slotProps.inputWrapper?.className)}\n >\n {rippleElements}\n <input\n {...rest}\n ref={inputRef}\n id={id}\n type=\"checkbox\"\n checked={isChecked}\n aria-checked={isChecked ?? false}\n aria-label={ariaLabel ?? label}\n onChange={handleChange}\n onTouchStart={eventWithRipple(createRipple, onTouchStart)}\n onClick={eventWithRipple(createRipple, onClick)}\n size={htmlSize}\n />\n <span>\n {checkedIcon ?? <CheckboxCheckedIcon checked={isChecked} />}\n {indeterminateIcon ?? (\n <CheckboxIndeterminateIcon indeterminate={indeterminate} />\n )}\n </span>\n </div>\n {label && (\n <label\n {...slotProps.label}\n htmlFor={id}\n className={cn(slotProps.label?.className, styles.label)}\n >\n {label}\n </label>\n )}\n </div>\n );\n}\n\nfunction CheckboxCheckedIcon(\n props: Required<Pick<CheckboxProps, \"checked\">> & ComponentProps<\"svg\">,\n) {\n const { checked, className, ...rest } = props;\n return (\n <svg\n {...rest}\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.3\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={cn(\n checked ? styles.show : styles.hide,\n styles.checked,\n className,\n )}\n >\n <path d=\"M5 13 9 17l10 -9\" />\n </svg>\n );\n}\n\nfunction CheckboxIndeterminateIcon(\n props: Required<Pick<CheckboxProps, \"indeterminate\">> & ComponentProps<\"svg\">,\n) {\n const { indeterminate, className, ...rest } = props;\n return (\n <svg\n {...rest}\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={cn(\n indeterminate ? styles.show : styles.hide,\n styles.indeterminate,\n className,\n )}\n stroke=\"currentColor\"\n strokeWidth=\"2.3\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M5 12h14\" />\n </svg>\n );\n}\n"],"names":["Checkbox","props","label","checked","indeterminate","skipGroup","checkedIcon","indeterminateIcon","slotProps","ariaLabel","onChange","onTouchStart","onClick","htmlSize","id","cssSafeString","size","color","rest","group","useContext","CheckboxGroupContext","groupId","useMemo","String","Math","random","selfChecked","setSelfChecked","useState","inputRef","useRef","isRegistered","rippleElements","createRipple","useRipple","isChecked","values","useEffect","current","register","_jsxs","root","className","cn","styles","children","inputWrapper","_jsx","ref","type","e","next","target","update","eventWithRipple","CheckboxCheckedIcon","CheckboxIndeterminateIcon","htmlFor","xmlns","viewBox","fill","stroke","strokeWidth","strokeLinecap","strokeLinejoin","show","hide","d"],"mappings":"sYAsDM,SAAUA,EAASC,GACvB,MAAMC,MACJA,EAAKC,QACLA,EAAOC,cACPA,GAAgB,EAAKC,UACrBA,EAASC,YACTA,EAAWC,kBACXA,EAAiBC,UACjBA,EAAY,CAAA,EACZ,aAAcC,EAASC,SACvBA,EAAQC,aACRA,EAAYC,QACZA,EAAOC,SACPA,EAAQC,GACRA,EAAKC,EAAcb,GAAMc,KACzBA,EAAO,KAAIC,MACXA,KACGC,GACDjB,EACEkB,EAAQC,EAAWC,GAEnBC,EAAUC,EAAQ,IAAMT,GAAMU,OAAOC,KAAKC,UAAW,CAACZ,KACrDa,EAAaC,GAAkBC,GAAS,GAEzCC,EAAWC,EAAyB,MACpCC,EAAeD,GAAO,IAEtBE,eAAEA,EAAcC,aAAEA,GAAiBC,IAEnCC,EACJjB,IAAUd,EACLc,EAAMkB,OAAOf,KAAY,EACzBnB,GAAWwB,EA0BlB,OAbAW,EAAU,MACHnB,GAASd,GAAa2B,EAAaO,UACxCP,EAAaO,SAAU,EACvBpB,EAAMqB,SAASlB,KACd,CAACH,EAAOd,EAAWiB,IAGtBgB,EAAU,KACJR,EAASS,UACXT,EAASS,QAAQnC,cAAgBA,IAElC,CAACA,IAGFqC,EAAA,MAAA,IAEMjC,EAAUkC,KACdC,UAAWC,EAAGC,EAAOH,KAAMlC,EAAUkC,MAAMC,wBAC/B1B,EAAK,YACND,EAAI8B,SAAA,CAEfL,YACMjC,EAAUuC,aACdJ,UAAWC,EAAGC,EAAOE,aAAcvC,EAAUuC,cAAcJ,WAAUG,SAAA,CAEpEb,EACDe,EAAA,QAAA,IACM9B,EACJ+B,IAAKnB,EACLhB,GAAIA,EACJoC,KAAK,WACL/C,QAASiC,iBACKA,IAAa,EAAK,aACpB3B,GAAaP,EACzBQ,SA7CcyC,IACpB,MAAMC,EAAOD,EAAEE,OAAOlD,QAClBgB,IAAUd,EACZc,EAAMmC,OAAOhC,EAAS8B,GAEtBxB,EAAewB,GAEjB1C,IAAWyC,EAAGC,IAuCRzC,aAAc4C,EAAgBrB,EAAcvB,GAC5CC,QAAS2C,EAAgBrB,EAActB,GACvCI,KAAMH,IAER4B,oBACGnC,GAAe0C,EAACQ,GAAoBrD,QAASiC,IAC7C7B,GACCyC,EAACS,EAAyB,CAACrD,cAAeA,UAI/CF,GACC8C,EAAA,QAAA,IACMxC,EAAUN,MACdwD,QAAS5C,EACT6B,UAAWC,EAAGpC,EAAUN,OAAOyC,UAAWE,EAAO3C,OAAM4C,SAEtD5C,MAKX,CAEA,SAASsD,EACPvD,GAEA,MAAME,QAAEA,EAAOwC,UAAEA,KAAczB,GAASjB,EACxC,OACE+C,EAAA,MAAA,IACM9B,EACJyC,MAAM,6BACNC,QAAQ,YACRC,KAAK,OACLC,OAAO,eACPC,YAAY,MACZC,cAAc,QACdC,eAAe,QACftB,UAAWC,EACTzC,EAAU0C,EAAOqB,KAAOrB,EAAOsB,KAC/BtB,EAAO1C,QACPwC,GACDG,SAEDE,EAAA,OAAA,CAAMoB,EAAE,sBAGd,CAEA,SAASX,EACPxD,GAEA,MAAMG,cAAEA,EAAauC,UAAEA,KAAczB,GAASjB,EAC9C,OACE+C,EAAA,MAAA,IACM9B,EACJ0C,QAAQ,YACRD,MAAM,6BACNhB,UAAWC,EACTxC,EAAgByC,EAAOqB,KAAOrB,EAAOsB,KACrCtB,EAAOzC,cACPuC,GAEFmB,OAAO,eACPC,YAAY,MACZC,cAAc,QACdC,eAAe,QAAOnB,SAEtBE,EAAA,OAAA,CAAMoB,EAAE,cAGd"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use client";import{jsxs as r,jsx as e}from"react/jsx-runtime";import{
|
|
1
|
+
"use client";import{jsxs as r,jsx as e}from"react/jsx-runtime";import{cssSafeString as t,cn as s}from"@studiocubics/utils";import{useState as o,useEffect as n}from"react";import{useRipple as i,eventWithRipple as a}from"../../Misc/Ripple/Ripple.js";import l from"./PasswordInput.module.css.js";import{InputErrors as c}from"../../Display/InputErrors/InputErrors.js";import{Button as d}from"../Button/Button.js";import{PasswordStrength as p}from"../../Display/PasswordStrength/PasswordStrength.js";import{usePasswordStrength as u,ALL_PASSWORD_TESTS as m,PASSWORD_REGEX as h}from"../../Display/PasswordStrength/usePasswordStrength.js";function g(g){const{startIcon:v,endIcon:b,label:N,error:S,fullWidth:k,hideVisibilityToggle:x=!1,disableStrengthMeter:I=!0,disableEndIconGutters:j=!1,disableStartIconGutters:y=!1,size:C="md",htmlSize:M,onTouchStart:P,onClick:W,onBlur:B,slotProps:T={},className:z,...E}=g,{rippleElements:G,createRipple:L}=i(T.ripple),[R,q]=o(S&&!!S.length),[D,F]=o(!1),V=u({password:"string"==typeof g.value?g.value:void 0,requiredTests:T.passwordStrength?.requiredTests??m,disableStrengthMeter:I}),$=g.id??t(N);return n(()=>{q(S&&!!S.length)},[S]),r("div",{...T.root,className:s(T.root?.className,l.root,l[`size_${C}`],k?l.fullWidth:void 0,R?l.errored:void 0),children:[N&&e("label",{...T.label,htmlFor:$,className:s(T.label?.className,l.label),children:N}),r("div",{...T.inputWrapper,className:s(T.inputWrapper?.className,l.inputWrapper),children:[v&&e("span",{...T.startIcon,className:s(l.iconContainer,T.startIcon?.className,y?l.disableGutters:void 0),children:v}),e("input",{id:$,pattern:I?void 0:V?.testsPassed.map(r=>{const e=h[r].ex;return e instanceof RegExp?e.source:e}).join("&"),className:s(z,l.input),type:D?"text":"password",onTouchStart:a(L,P),onClick:a(L,W),onBlur:r=>{q(!1),B?.(r)},size:M,...E}),!x&&e(d,{square:!0,size:"sm",type:"button",onClick:()=>F(!D),children:e(D?w:f,{width:24,height:24})}),b&&e("span",{...T.endIcon,className:s(l.iconContainer,T.endIcon?.className,j?l.disableGutters:void 0),children:b}),G]}),!I&&e(p,{strength:V?.strength,...T.passwordStrength}),R&&e(c,{...T.error,className:s(T.error?.className,l.errorText),error:S})]})}function w(t){return r("svg",{...t,xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.3",strokeLinecap:"round",strokeLinejoin:"round",children:[e("path",{d:"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0"}),e("circle",{cx:"12",cy:"12",r:"3"})]})}function f(t){return r("svg",{...t,xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.3",strokeLinecap:"round",strokeLinejoin:"round",children:[e("path",{d:"M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49"}),e("path",{d:"M14.084 14.158a3 3 0 0 1-4.242-4.242"}),e("path",{d:"M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143"}),e("path",{d:"m2 2 20 20"})]})}export{g as PasswordInput};
|
|
2
2
|
//# sourceMappingURL=PasswordInput.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PasswordInput.js","sources":["../../../src/Inputs/PasswordInput/PasswordInput.tsx"],"sourcesContent":["\"use client\";\n\nimport { cn, toCamelCase } from \"@studiocubics/utils\";\nimport {\n useEffect,\n useState,\n type ComponentProps,\n type ReactNode,\n} from \"react\";\nimport {\n eventWithRipple,\n useRipple,\n type UseRippleProps,\n} from \"../../Misc/Ripple/Ripple\";\nimport styles from \"./PasswordInput.module.css\";\nimport {\n InputErrors,\n type InputErrorsProps,\n} from \"../../Display/InputErrors/InputErrors\";\nimport { Button } from \"../Button/Button\";\nimport { PasswordStrength } from \"../../Display/PasswordStrength/PasswordStrength\";\nimport {\n ALL_PASSWORD_TESTS,\n PASSWORD_REGEX,\n usePasswordStrength,\n type PasswordStrengthProps,\n} from \"../../Display/PasswordStrength/usePasswordStrength\";\n\nexport interface PasswordInputProps\n extends Omit<ComponentProps<\"input\">, \"size\"> {\n startIcon?: ReactNode;\n endIcon?: ReactNode;\n label?: string;\n error?: string | string[];\n fullWidth?: boolean;\n /**\n * Use inputSize for <input size=\"10\"/>\n */\n size?: \"sm\" | \"md\" | \"lg\";\n htmlSize?: ComponentProps<\"input\">[\"size\"];\n hideVisibilityToggle?: boolean;\n disableStrengthMeter?: boolean;\n disableEndIconGutters?: boolean;\n disableStartIconGutters?: boolean;\n slotProps?: {\n ripple?: UseRippleProps;\n startIcon?: ComponentProps<\"span\">;\n endIcon?: ComponentProps<\"span\">;\n root?: ComponentProps<\"div\">;\n inputWrapper?: ComponentProps<\"div\">;\n label?: ComponentProps<\"label\">;\n error?: InputErrorsProps;\n passwordStrength?: PasswordStrengthProps;\n };\n}\n\nexport function PasswordInput(props: PasswordInputProps) {\n const {\n startIcon,\n endIcon,\n label,\n error,\n fullWidth,\n hideVisibilityToggle = false,\n disableStrengthMeter = true,\n disableEndIconGutters = false,\n disableStartIconGutters = false,\n size = \"md\",\n htmlSize,\n onTouchStart,\n onClick,\n onBlur,\n slotProps = {},\n className: inputClass,\n ...inputProps\n } = props;\n const { rippleElements, createRipple } = useRipple(slotProps.ripple);\n const [isErrored, setIsErrored] = useState(error && !!error.length);\n const [isVisible, setIsVisible] = useState(false);\n const passwordStrength = usePasswordStrength({\n password: typeof props.value == \"string\" ? props.value : undefined,\n requiredTests:\n slotProps.passwordStrength?.requiredTests ?? ALL_PASSWORD_TESTS,\n disableStrengthMeter,\n });\n const id = props.id ?? toCamelCase(label);\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 styles[`size_${size}`],\n fullWidth ? styles.fullWidth : undefined,\n isErrored ? styles.errored : undefined,\n )}\n >\n {label && (\n <label\n {...slotProps.label}\n htmlFor={id}\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 {startIcon && (\n <span\n {...slotProps.startIcon}\n className={cn(\n styles.iconContainer,\n slotProps.startIcon?.className,\n disableStartIconGutters ? styles.disableGutters : undefined,\n )}\n >\n {startIcon}\n </span>\n )}\n <input\n id={id}\n pattern={\n !disableStrengthMeter\n ? passwordStrength?.testsPassed\n .map((tp) => {\n const regex = PASSWORD_REGEX[tp].ex;\n return regex instanceof RegExp ? regex.source : regex;\n })\n .join(\"&\")\n : undefined\n }\n className={cn(inputClass, styles.input)}\n type={isVisible ? \"text\" : \"password\"}\n onTouchStart={eventWithRipple(createRipple, onTouchStart)}\n onClick={eventWithRipple(createRipple, onClick)}\n onBlur={(e) => {\n setIsErrored(false);\n onBlur?.(e);\n }}\n size={htmlSize}\n {...inputProps}\n />\n {!hideVisibilityToggle && (\n <Button\n square\n size=\"sm\"\n type=\"button\"\n onClick={() => setIsVisible(!isVisible)}\n >\n {isVisible ? (\n <EyeIcon width={24} height={24} />\n ) : (\n <EyeOffIcon width={24} height={24} />\n )}\n </Button>\n )}\n {endIcon && (\n <span\n {...slotProps.endIcon}\n className={cn(\n styles.iconContainer,\n slotProps.endIcon?.className,\n disableEndIconGutters ? styles.disableGutters : undefined,\n )}\n >\n {endIcon}\n </span>\n )}\n {rippleElements}\n </div>\n {!disableStrengthMeter && (\n <PasswordStrength\n strength={passwordStrength?.strength}\n {...slotProps.passwordStrength}\n />\n )}\n {isErrored && (\n <InputErrors\n {...slotProps.error}\n className={cn(slotProps.error?.className, styles.errorText)}\n error={error}\n />\n )}\n </div>\n );\n}\nfunction EyeIcon(props: ComponentProps<\"svg\">) {\n return (\n <svg\n {...props}\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.3\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0\" />\n <circle cx=\"12\" cy=\"12\" r=\"3\" />\n </svg>\n );\n}\nfunction EyeOffIcon(props: ComponentProps<\"svg\">) {\n return (\n <svg\n {...props}\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.3\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49\" />\n <path d=\"M14.084 14.158a3 3 0 0 1-4.242-4.242\" />\n <path d=\"M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143\" />\n <path d=\"m2 2 20 20\" />\n </svg>\n );\n}\n"],"names":["PasswordInput","props","startIcon","endIcon","label","error","fullWidth","hideVisibilityToggle","disableStrengthMeter","disableEndIconGutters","disableStartIconGutters","size","htmlSize","onTouchStart","onClick","onBlur","slotProps","className","inputClass","inputProps","rippleElements","createRipple","useRipple","ripple","isErrored","setIsErrored","useState","length","isVisible","setIsVisible","passwordStrength","usePasswordStrength","password","value","undefined","requiredTests","ALL_PASSWORD_TESTS","id","toCamelCase","useEffect","_jsxs","root","cn","styles","errored","children","_jsx","htmlFor","inputWrapper","iconContainer","disableGutters","pattern","testsPassed","map","tp","regex","PASSWORD_REGEX","ex","RegExp","source","join","input","type","eventWithRipple","e","Button","square","EyeIcon","EyeOffIcon","width","height","PasswordStrength","strength","InputErrors","errorText","xmlns","viewBox","fill","stroke","strokeWidth","strokeLinecap","strokeLinejoin","d","cx","cy","r"],"mappings":"qnBAwDM,SAAUA,EAAcC,GAC5B,MAAMC,UACJA,EAASC,QACTA,EAAOC,MACPA,EAAKC,MACLA,EAAKC,UACLA,EAASC,qBACTA,GAAuB,EAAKC,qBAC5BA,GAAuB,EAAIC,sBAC3BA,GAAwB,EAAKC,wBAC7BA,GAA0B,EAAKC,KAC/BA,EAAO,KAAIC,SACXA,EAAQC,aACRA,EAAYC,QACZA,EAAOC,OACPA,EAAMC,UACNA,EAAY,CAAA,EACZC,UAAWC,KACRC,GACDlB,GACEmB,eAAEA,EAAcC,aAAEA,GAAiBC,EAAUN,EAAUO,SACtDC,EAAWC,GAAgBC,EAASrB,KAAWA,EAAMsB,SACrDC,EAAWC,GAAgBH,GAAS,GACrCI,EAAmBC,EAAoB,CAC3CC,SAAgC,iBAAf/B,EAAMgC,MAAoBhC,EAAMgC,WAAQC,EACzDC,cACEnB,EAAUc,kBAAkBK,eAAiBC,EAC/C5B,yBAEI6B,EAAKpC,EAAMoC,IAAMC,EAAYlC,GAMnC,OAJAmC,EAAU,KACRd,EAAapB,KAAWA,EAAMsB,SAC7B,CAACtB,IAGFmC,EAAA,MAAA,IACMxB,EAAUyB,KACdxB,UAAWyB,EACT1B,EAAUyB,MAAMxB,UAChB0B,EAAOF,KACPE,EAAO,QAAQhC,KACfL,EAAYqC,EAAOrC,eAAY4B,EAC/BV,EAAYmB,EAAOC,aAAUV,GAC9BW,SAAA,CAEAzC,GACC0C,EAAA,QAAA,IACM9B,EAAUZ,MACd2C,QAASV,EACTpB,UAAWyB,EAAG1B,EAAUZ,OAAOa,UAAW0B,EAAOvC,OAAMyC,SAEtDzC,IAGLoC,EAAA,MAAA,IACMxB,EAAUgC,aACd/B,UAAWyB,EAAG1B,EAAUgC,cAAc/B,UAAW0B,EAAOK,cAAaH,SAAA,CAEpE3C,GACC4C,EAAA,OAAA,IACM9B,EAAUd,UACde,UAAWyB,EACTC,EAAOM,cACPjC,EAAUd,WAAWe,UACrBP,EAA0BiC,EAAOO,oBAAiBhB,GACnDW,SAEA3C,IAGL4C,EAAA,QAAA,CACET,GAAIA,EACJc,QACG3C,OAOG0B,EANAJ,GAAkBsB,YACfC,IAAKC,IACJ,MAAMC,EAAQC,EAAeF,GAAIG,GACjC,OAAOF,aAAiBG,OAASH,EAAMI,OAASJ,IAEjDK,KAAK,KAGd3C,UAAWyB,EAAGxB,EAAYyB,EAAOkB,OACjCC,KAAMlC,EAAY,OAAS,WAC3Bf,aAAckD,EAAgB1C,EAAcR,GAC5CC,QAASiD,EAAgB1C,EAAcP,GACvCC,OAASiD,IACPvC,GAAa,GACbV,IAASiD,IAEXrD,KAAMC,KACFO,KAEJZ,GACAuC,EAACmB,EAAM,CACLC,UACAvD,KAAK,KACLmD,KAAK,SACLhD,QAAS,IAAMe,GAAcD,GAAUiB,SAGrCC,EADDlB,EACEuC,EAEAC,EAFO,CAACC,MAAO,GAAIC,OAAQ,OAMjCnE,GACC2C,EAAA,OAAA,IACM9B,EAAUb,QACdc,UAAWyB,EACTC,EAAOM,cACPjC,EAAUb,SAASc,UACnBR,EAAwBkC,EAAOO,oBAAiBhB,GACjDW,SAEA1C,IAGJiB,MAEDZ,GACAsC,EAACyB,EAAgB,CACfC,SAAU1C,GAAkB0C,YACxBxD,EAAUc,mBAGjBN,GACCsB,EAAC2B,EAAW,IACNzD,EAAUX,MACdY,UAAWyB,EAAG1B,EAAUX,OAAOY,UAAW0B,EAAO+B,WACjDrE,MAAOA,MAKjB,CACA,SAAS8D,EAAQlE,GACf,OACEuC,EAAA,MAAA,IACMvC,EACJ0E,MAAM,6BACNC,QAAQ,YACRC,KAAK,OACLC,OAAO,eACPC,YAAY,MACZC,cAAc,QACdC,eAAe,QAAOpC,SAAA,CAEtBC,EAAA,OAAA,CAAMoC,EAAE,0GACRpC,EAAA,SAAA,CAAQqC,GAAG,KAAKC,GAAG,KAAKC,EAAE,QAGhC,CACA,SAASjB,EAAWnE,GAClB,OACEuC,EAAA,MAAA,IACMvC,EACJ0E,MAAM,6BACNC,QAAQ,YACRC,KAAK,OACLC,OAAO,eACPC,YAAY,MACZC,cAAc,QACdC,eAAe,QAAOpC,SAAA,CAEtBC,EAAA,OAAA,CAAMoC,EAAE,mGACRpC,EAAA,OAAA,CAAMoC,EAAE,yCACRpC,EAAA,OAAA,CAAMoC,EAAE,iGACRpC,EAAA,OAAA,CAAMoC,EAAE,iBAGd"}
|
|
1
|
+
{"version":3,"file":"PasswordInput.js","sources":["../../../src/Inputs/PasswordInput/PasswordInput.tsx"],"sourcesContent":["\"use client\";\n\nimport { cn, cssSafeString } from \"@studiocubics/utils\";\nimport {\n useEffect,\n useState,\n type ComponentProps,\n type ReactNode,\n} from \"react\";\nimport {\n eventWithRipple,\n useRipple,\n type UseRippleProps,\n} from \"../../Misc/Ripple/Ripple\";\nimport styles from \"./PasswordInput.module.css\";\nimport {\n InputErrors,\n type InputErrorsProps,\n} from \"../../Display/InputErrors/InputErrors\";\nimport { Button } from \"../Button/Button\";\nimport { PasswordStrength } from \"../../Display/PasswordStrength/PasswordStrength\";\nimport {\n ALL_PASSWORD_TESTS,\n PASSWORD_REGEX,\n usePasswordStrength,\n type PasswordStrengthProps,\n} from \"../../Display/PasswordStrength/usePasswordStrength\";\n\nexport interface PasswordInputProps\n extends Omit<ComponentProps<\"input\">, \"size\"> {\n startIcon?: ReactNode;\n endIcon?: ReactNode;\n label?: string;\n error?: string | string[];\n fullWidth?: boolean;\n /**\n * Use inputSize for <input size=\"10\"/>\n */\n size?: \"sm\" | \"md\" | \"lg\";\n htmlSize?: ComponentProps<\"input\">[\"size\"];\n hideVisibilityToggle?: boolean;\n disableStrengthMeter?: boolean;\n disableEndIconGutters?: boolean;\n disableStartIconGutters?: boolean;\n slotProps?: {\n ripple?: UseRippleProps;\n startIcon?: ComponentProps<\"span\">;\n endIcon?: ComponentProps<\"span\">;\n root?: ComponentProps<\"div\">;\n inputWrapper?: ComponentProps<\"div\">;\n label?: ComponentProps<\"label\">;\n error?: InputErrorsProps;\n passwordStrength?: PasswordStrengthProps;\n };\n}\n\nexport function PasswordInput(props: PasswordInputProps) {\n const {\n startIcon,\n endIcon,\n label,\n error,\n fullWidth,\n hideVisibilityToggle = false,\n disableStrengthMeter = true,\n disableEndIconGutters = false,\n disableStartIconGutters = false,\n // TODO add color\n size = \"md\",\n htmlSize,\n onTouchStart,\n onClick,\n onBlur,\n slotProps = {},\n className: inputClass,\n ...inputProps\n } = props;\n const { rippleElements, createRipple } = useRipple(slotProps.ripple);\n const [isErrored, setIsErrored] = useState(error && !!error.length);\n const [isVisible, setIsVisible] = useState(false);\n const passwordStrength = usePasswordStrength({\n password: typeof props.value == \"string\" ? props.value : undefined,\n requiredTests:\n slotProps.passwordStrength?.requiredTests ?? ALL_PASSWORD_TESTS,\n disableStrengthMeter,\n });\n const id = props.id ?? cssSafeString(label);\n\n useEffect(() => {\n setIsErrored(error && !!error.length);\n }, [error]);\n\n return (\n <div\n // TODO rename to container\n {...slotProps.root}\n className={cn(\n slotProps.root?.className,\n styles.root,\n styles[`size_${size}`],\n fullWidth ? styles.fullWidth : undefined,\n isErrored ? styles.errored : undefined,\n )}\n >\n {label && (\n <label\n {...slotProps.label}\n htmlFor={id}\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 {startIcon && (\n <span\n {...slotProps.startIcon}\n className={cn(\n styles.iconContainer,\n slotProps.startIcon?.className,\n disableStartIconGutters ? styles.disableGutters : undefined,\n )}\n >\n {startIcon}\n </span>\n )}\n <input\n id={id}\n pattern={\n !disableStrengthMeter\n ? passwordStrength?.testsPassed\n .map((tp) => {\n const regex = PASSWORD_REGEX[tp].ex;\n return regex instanceof RegExp ? regex.source : regex;\n })\n .join(\"&\")\n : undefined\n }\n className={cn(inputClass, styles.input)}\n type={isVisible ? \"text\" : \"password\"}\n onTouchStart={eventWithRipple(createRipple, onTouchStart)}\n onClick={eventWithRipple(createRipple, onClick)}\n onBlur={(e) => {\n setIsErrored(false);\n onBlur?.(e);\n }}\n size={htmlSize}\n {...inputProps}\n />\n {!hideVisibilityToggle && (\n <Button\n square\n size=\"sm\"\n type=\"button\"\n onClick={() => setIsVisible(!isVisible)}\n >\n {isVisible ? (\n <EyeIcon width={24} height={24} />\n ) : (\n <EyeOffIcon width={24} height={24} />\n )}\n </Button>\n )}\n {endIcon && (\n <span\n {...slotProps.endIcon}\n className={cn(\n styles.iconContainer,\n slotProps.endIcon?.className,\n disableEndIconGutters ? styles.disableGutters : undefined,\n )}\n >\n {endIcon}\n </span>\n )}\n {rippleElements}\n </div>\n {!disableStrengthMeter && (\n <PasswordStrength\n strength={passwordStrength?.strength}\n {...slotProps.passwordStrength}\n />\n )}\n {isErrored && (\n <InputErrors\n {...slotProps.error}\n className={cn(slotProps.error?.className, styles.errorText)}\n error={error}\n />\n )}\n </div>\n );\n}\nfunction EyeIcon(props: ComponentProps<\"svg\">) {\n return (\n <svg\n {...props}\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.3\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0\" />\n <circle cx=\"12\" cy=\"12\" r=\"3\" />\n </svg>\n );\n}\nfunction EyeOffIcon(props: ComponentProps<\"svg\">) {\n return (\n <svg\n {...props}\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.3\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49\" />\n <path d=\"M14.084 14.158a3 3 0 0 1-4.242-4.242\" />\n <path d=\"M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143\" />\n <path d=\"m2 2 20 20\" />\n </svg>\n );\n}\n"],"names":["PasswordInput","props","startIcon","endIcon","label","error","fullWidth","hideVisibilityToggle","disableStrengthMeter","disableEndIconGutters","disableStartIconGutters","size","htmlSize","onTouchStart","onClick","onBlur","slotProps","className","inputClass","inputProps","rippleElements","createRipple","useRipple","ripple","isErrored","setIsErrored","useState","length","isVisible","setIsVisible","passwordStrength","usePasswordStrength","password","value","undefined","requiredTests","ALL_PASSWORD_TESTS","id","cssSafeString","useEffect","_jsxs","root","cn","styles","errored","children","_jsx","htmlFor","inputWrapper","iconContainer","disableGutters","pattern","testsPassed","map","tp","regex","PASSWORD_REGEX","ex","RegExp","source","join","input","type","eventWithRipple","e","Button","square","EyeIcon","EyeOffIcon","width","height","PasswordStrength","strength","InputErrors","errorText","xmlns","viewBox","fill","stroke","strokeWidth","strokeLinecap","strokeLinejoin","d","cx","cy","r"],"mappings":"unBAwDM,SAAUA,EAAcC,GAC5B,MAAMC,UACJA,EAASC,QACTA,EAAOC,MACPA,EAAKC,MACLA,EAAKC,UACLA,EAASC,qBACTA,GAAuB,EAAKC,qBAC5BA,GAAuB,EAAIC,sBAC3BA,GAAwB,EAAKC,wBAC7BA,GAA0B,EAAKC,KAE/BA,EAAO,KAAIC,SACXA,EAAQC,aACRA,EAAYC,QACZA,EAAOC,OACPA,EAAMC,UACNA,EAAY,CAAA,EACZC,UAAWC,KACRC,GACDlB,GACEmB,eAAEA,EAAcC,aAAEA,GAAiBC,EAAUN,EAAUO,SACtDC,EAAWC,GAAgBC,EAASrB,KAAWA,EAAMsB,SACrDC,EAAWC,GAAgBH,GAAS,GACrCI,EAAmBC,EAAoB,CAC3CC,SAAgC,iBAAf/B,EAAMgC,MAAoBhC,EAAMgC,WAAQC,EACzDC,cACEnB,EAAUc,kBAAkBK,eAAiBC,EAC/C5B,yBAEI6B,EAAKpC,EAAMoC,IAAMC,EAAclC,GAMrC,OAJAmC,EAAU,KACRd,EAAapB,KAAWA,EAAMsB,SAC7B,CAACtB,IAGFmC,EAAA,MAAA,IAEMxB,EAAUyB,KACdxB,UAAWyB,EACT1B,EAAUyB,MAAMxB,UAChB0B,EAAOF,KACPE,EAAO,QAAQhC,KACfL,EAAYqC,EAAOrC,eAAY4B,EAC/BV,EAAYmB,EAAOC,aAAUV,GAC9BW,SAAA,CAEAzC,GACC0C,EAAA,QAAA,IACM9B,EAAUZ,MACd2C,QAASV,EACTpB,UAAWyB,EAAG1B,EAAUZ,OAAOa,UAAW0B,EAAOvC,OAAMyC,SAEtDzC,IAGLoC,EAAA,MAAA,IACMxB,EAAUgC,aACd/B,UAAWyB,EAAG1B,EAAUgC,cAAc/B,UAAW0B,EAAOK,cAAaH,SAAA,CAEpE3C,GACC4C,EAAA,OAAA,IACM9B,EAAUd,UACde,UAAWyB,EACTC,EAAOM,cACPjC,EAAUd,WAAWe,UACrBP,EAA0BiC,EAAOO,oBAAiBhB,GACnDW,SAEA3C,IAGL4C,EAAA,QAAA,CACET,GAAIA,EACJc,QACG3C,OAOG0B,EANAJ,GAAkBsB,YACfC,IAAKC,IACJ,MAAMC,EAAQC,EAAeF,GAAIG,GACjC,OAAOF,aAAiBG,OAASH,EAAMI,OAASJ,IAEjDK,KAAK,KAGd3C,UAAWyB,EAAGxB,EAAYyB,EAAOkB,OACjCC,KAAMlC,EAAY,OAAS,WAC3Bf,aAAckD,EAAgB1C,EAAcR,GAC5CC,QAASiD,EAAgB1C,EAAcP,GACvCC,OAASiD,IACPvC,GAAa,GACbV,IAASiD,IAEXrD,KAAMC,KACFO,KAEJZ,GACAuC,EAACmB,EAAM,CACLC,UACAvD,KAAK,KACLmD,KAAK,SACLhD,QAAS,IAAMe,GAAcD,GAAUiB,SAGrCC,EADDlB,EACEuC,EAEAC,EAFO,CAACC,MAAO,GAAIC,OAAQ,OAMjCnE,GACC2C,EAAA,OAAA,IACM9B,EAAUb,QACdc,UAAWyB,EACTC,EAAOM,cACPjC,EAAUb,SAASc,UACnBR,EAAwBkC,EAAOO,oBAAiBhB,GACjDW,SAEA1C,IAGJiB,MAEDZ,GACAsC,EAACyB,EAAgB,CACfC,SAAU1C,GAAkB0C,YACxBxD,EAAUc,mBAGjBN,GACCsB,EAAC2B,EAAW,IACNzD,EAAUX,MACdY,UAAWyB,EAAG1B,EAAUX,OAAOY,UAAW0B,EAAO+B,WACjDrE,MAAOA,MAKjB,CACA,SAAS8D,EAAQlE,GACf,OACEuC,EAAA,MAAA,IACMvC,EACJ0E,MAAM,6BACNC,QAAQ,YACRC,KAAK,OACLC,OAAO,eACPC,YAAY,MACZC,cAAc,QACdC,eAAe,QAAOpC,SAAA,CAEtBC,EAAA,OAAA,CAAMoC,EAAE,0GACRpC,EAAA,SAAA,CAAQqC,GAAG,KAAKC,GAAG,KAAKC,EAAE,QAGhC,CACA,SAASjB,EAAWnE,GAClB,OACEuC,EAAA,MAAA,IACMvC,EACJ0E,MAAM,6BACNC,QAAQ,YACRC,KAAK,OACLC,OAAO,eACPC,YAAY,MACZC,cAAc,QACdC,eAAe,QAAOpC,SAAA,CAEtBC,EAAA,OAAA,CAAMoC,EAAE,mGACRpC,EAAA,OAAA,CAAMoC,EAAE,yCACRpC,EAAA,OAAA,CAAMoC,EAAE,iGACRpC,EAAA,OAAA,CAAMoC,EAAE,iBAGd"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use client";import{jsxs as e,jsx as r}from"react/jsx-runtime";import{
|
|
1
|
+
"use client";import{jsxs as e,jsx as r}from"react/jsx-runtime";import{cssSafeString as s,cn as t}from"@studiocubics/utils";import{useState as l,useEffect as o}from"react";import a from"./Select.module.css.js";import{useRipple as i,eventWithRipple as n}from"../../Misc/Ripple/Ripple.js";import{InputErrors as c}from"../../Display/InputErrors/InputErrors.js";function p(p){const{startIcon:m,endIcon:d,label:u,error:N,fullWidth:h,disableEndIconGutters:b=!1,disableStartIconGutters:I=!1,size:f="md",htmlSize:v,onTouchStart:S,onClick:W,onBlur:j,slotProps:z,className:C,...E}=p,G=z??{},{rippleElements:x,createRipple:R}=i(G.ripple),[T,g]=l(N&&!!N.length),k=p.id??s(u);return o(()=>{g(N&&!!N.length)},[N]),e("div",{...G.root,className:t(G.root?.className,a.root,a[`size_${f}`],h?a.fullWidth:void 0,T?a.errored:void 0),children:[u&&r("label",{...G.label,htmlFor:k,className:t(G.label?.className,a.label),children:u}),e("div",{...G.inputWrapper,className:t(G.inputWrapper?.className,a.inputWrapper),children:[m&&r("span",{...G.startIcon,className:t(a.iconContainer,G.startIcon?.className,I?a.disableGutters:void 0),children:m}),r("select",{className:t(C,a.input),onTouchStart:n(R,S),onClick:n(R,W),onBlur:e=>{g(!1),j?.(e)},id:k,size:v,...E}),d&&r("span",{...G.endIcon,className:t(a.iconContainer,G.endIcon?.className,b?a.disableGutters:void 0),children:d}),x]}),T&&r(c,{...G.error,className:t(G.error?.className,a.errorText),error:N})]})}export{p as Select};
|
|
2
2
|
//# sourceMappingURL=Select.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Select.js","sources":["../../../src/Inputs/Select/Select.tsx"],"sourcesContent":["\"use client\";\n\nimport { cn,
|
|
1
|
+
{"version":3,"file":"Select.js","sources":["../../../src/Inputs/Select/Select.tsx"],"sourcesContent":["\"use client\";\n\nimport { cn, cssSafeString } from \"@studiocubics/utils\";\nimport {\n useEffect,\n useState,\n type ComponentProps,\n type ReactNode,\n} from \"react\";\nimport styles from \"./Select.module.css\";\nimport {\n eventWithRipple,\n useRipple,\n type UseRippleProps,\n} from \"../../Misc/Ripple/Ripple\";\nimport {\n InputErrors,\n type InputErrorsProps,\n} from \"../../Display/InputErrors/InputErrors\";\n\nexport interface SelectProps extends Omit<ComponentProps<\"select\">, \"size\"> {\n startIcon?: ReactNode;\n endIcon?: ReactNode;\n label?: string;\n error?: string | string[];\n fullWidth?: boolean;\n disableEndIconGutters?: boolean;\n disableStartIconGutters?: boolean;\n // TODO add color\n size?: \"sm\" | \"md\" | \"lg\";\n htmlSize?: ComponentProps<\"select\">[\"size\"];\n slotProps?: {\n ripple?: UseRippleProps;\n startIcon?: ComponentProps<\"span\">;\n endIcon?: ComponentProps<\"span\">;\n root?: ComponentProps<\"div\">;\n inputWrapper?: ComponentProps<\"div\">;\n label?: ComponentProps<\"label\">;\n error?: InputErrorsProps;\n };\n}\n\nexport function Select(props: SelectProps) {\n const {\n startIcon,\n endIcon,\n label,\n error,\n fullWidth,\n disableEndIconGutters = false,\n disableStartIconGutters = false,\n size = \"md\",\n htmlSize,\n onTouchStart,\n onClick,\n onBlur,\n slotProps: _slotProps,\n className: inputClass,\n ...inputProps\n } = props;\n const slotProps: NonNullable<SelectProps[\"slotProps\"]> = _slotProps ?? {};\n const { rippleElements, createRipple } = useRipple<HTMLSelectElement>(\n slotProps.ripple,\n );\n const [isErrored, setIsErrored] = useState(error && !!error.length);\n const id = props.id ?? cssSafeString(label);\n\n useEffect(() => {\n setIsErrored(error && !!error.length);\n }, [error]);\n\n return (\n <div\n // TODO rename to container\n {...slotProps.root}\n className={cn(\n slotProps.root?.className,\n styles.root,\n styles[`size_${size}`],\n fullWidth ? styles.fullWidth : undefined,\n isErrored ? styles.errored : undefined,\n )}\n >\n {label && (\n <label\n {...slotProps.label}\n htmlFor={id}\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 {startIcon && (\n <span\n {...slotProps.startIcon}\n className={cn(\n styles.iconContainer,\n slotProps.startIcon?.className,\n disableStartIconGutters ? styles.disableGutters : undefined,\n )}\n >\n {startIcon}\n </span>\n )}\n <select\n className={cn(inputClass, styles.input)}\n onTouchStart={eventWithRipple(createRipple, onTouchStart)}\n //TODO Causes issue on Firefox where the ripple fires after closing the dropdown\n onClick={eventWithRipple(createRipple, onClick)}\n onBlur={(e) => {\n setIsErrored(false);\n onBlur?.(e);\n }}\n id={id}\n size={htmlSize}\n {...inputProps}\n />\n {endIcon && (\n <span\n {...slotProps.endIcon}\n className={cn(\n styles.iconContainer,\n slotProps.endIcon?.className,\n disableEndIconGutters ? styles.disableGutters : undefined,\n )}\n >\n {endIcon}\n </span>\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":["Select","props","startIcon","endIcon","label","error","fullWidth","disableEndIconGutters","disableStartIconGutters","size","htmlSize","onTouchStart","onClick","onBlur","slotProps","_slotProps","className","inputClass","inputProps","rippleElements","createRipple","useRipple","ripple","isErrored","setIsErrored","useState","length","id","cssSafeString","useEffect","_jsxs","root","cn","styles","undefined","errored","_jsx","htmlFor","children","inputWrapper","iconContainer","disableGutters","input","eventWithRipple","e","InputErrors","errorText"],"mappings":"qWA0CM,SAAUA,EAAOC,GACrB,MAAMC,UACJA,EAASC,QACTA,EAAOC,MACPA,EAAKC,MACLA,EAAKC,UACLA,EAASC,sBACTA,GAAwB,EAAKC,wBAC7BA,GAA0B,EAAKC,KAC/BA,EAAO,KAAIC,SACXA,EAAQC,aACRA,EAAYC,QACZA,EAAOC,OACPA,EACAC,UAAWC,EACXC,UAAWC,KACRC,GACDjB,EACEa,EAAmDC,GAAc,CAAA,GACjEI,eAAEA,EAAcC,aAAEA,GAAiBC,EACvCP,EAAUQ,SAELC,EAAWC,GAAgBC,EAASpB,KAAWA,EAAMqB,QACtDC,EAAK1B,EAAM0B,IAAMC,EAAcxB,GAMrC,OAJAyB,EAAU,KACRL,EAAanB,KAAWA,EAAMqB,SAC7B,CAACrB,IAGFyB,EAAA,MAAA,IAEMhB,EAAUiB,KACdf,UAAWgB,EACTlB,EAAUiB,MAAMf,UAChBiB,EAAOF,KACPE,EAAO,QAAQxB,KACfH,EAAY2B,EAAO3B,eAAY4B,EAC/BX,EAAYU,EAAOE,aAAUD,aAG9B9B,GACCgC,EAAA,QAAA,IACMtB,EAAUV,MACdiC,QAASV,EACTX,UAAWgB,EAAGlB,EAAUV,OAAOY,UAAWiB,EAAO7B,OAAMkC,SAEtDlC,IAGL0B,EAAA,MAAA,IACMhB,EAAUyB,aACdvB,UAAWgB,EAAGlB,EAAUyB,cAAcvB,UAAWiB,EAAOM,wBAEvDrC,GACCkC,EAAA,OAAA,IACMtB,EAAUZ,UACdc,UAAWgB,EACTC,EAAOO,cACP1B,EAAUZ,WAAWc,UACrBR,EAA0ByB,EAAOQ,oBAAiBP,GACnDI,SAEApC,IAGLkC,EAAA,SAAA,CACEpB,UAAWgB,EAAGf,EAAYgB,EAAOS,OACjC/B,aAAcgC,EAAgBvB,EAAcT,GAE5CC,QAAS+B,EAAgBvB,EAAcR,GACvCC,OAAS+B,IACPpB,GAAa,GACbX,IAAS+B,IAEXjB,GAAIA,EACJlB,KAAMC,KACFQ,IAELf,GACCiC,EAAA,OAAA,IACMtB,EAAUX,QACda,UAAWgB,EACTC,EAAOO,cACP1B,EAAUX,SAASa,UACnBT,EAAwB0B,EAAOQ,oBAAiBP,GACjDI,SAEAnC,IAGJgB,KAEFI,GACCa,EAACS,MACK/B,EAAUT,MACdW,UAAWgB,EAAGlB,EAAUT,OAAOW,UAAWiB,EAAOa,WACjDzC,MAAOA,MAKjB"}
|
|
@@ -1,2 +1,2 @@
|
|
|
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{
|
|
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{cssSafeString as s,cn as u,mergeRefs 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),P=l.id??s(f);n(()=>{F.current=y},[y]);const V=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]),q=o(e=>{N||(M.current=!0,T.current=!1,D.current=e)},[N]),A=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&&V(e)}},[N,V]),B=o(()=>{M.current=!1},[]);return n(()=>{const e=e=>A(e.clientX),t=e=>A(e.touches[0].clientX);return document.addEventListener("mousemove",e),document.addEventListener("mouseup",B),document.addEventListener("touchmove",t),document.addEventListener("touchend",B),()=>{document.removeEventListener("mousemove",e),document.removeEventListener("mouseup",B),document.removeEventListener("touchmove",t),document.removeEventListener("touchend",B)}},[A,B]),e("div",{...L.root,"data-color":g,"data-size":w,className:u(L.root?.className,v,a.root,N?a.disabled:""),children:[e("div",{...L.inputWrapper,className:u(a.inputWrapper,L.inputWrapper?.className),children:[t("input",{...C,id:P,size:z,type:h,ref:i(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:u(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=>q(e.clientX),onTouchStart:e=>q(e.touches[0].clientX),children:E})})]}),f&&t("label",{...L.label,htmlFor:P,className:u(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 useCallback,\n} from \"react\";\nimport styles from \"./Switch.module.css\";\nimport { cn,
|
|
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, cssSafeString, 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<\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 const id = props.id ?? cssSafeString(label);\n\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 // TODO rename to container\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 id={id}\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={id}\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","id","cssSafeString","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"],"mappings":"6PAiEM,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,GACpBK,EAAK7B,EAAM6B,IAAMC,EAAcvB,GAErCwB,EAAU,KACRH,EAAWI,QAAUR,GACpB,CAACA,IAEJ,MAAMS,EAAgBC,EACnBC,IAEC,GADKhB,GAAcG,EAAmBa,GAClCnB,EAASgB,SAAW5B,EAAU,CAChC,MAAMgC,EAAcpB,EAASgB,QAC7BI,EAAYZ,QAAUW,EACtB,MAAME,EAAc,IAAIC,MAAM,SAAU,CAAEC,SAAS,IACnDH,EAAYI,cAAcH,EAC5B,GAEF,CAAClB,EAAcf,IAGXqC,EAAkBP,EACrBQ,IACKhC,IACJe,EAAWO,SAAU,EACrBN,EAAQM,SAAU,EAClBL,EAAWK,QAAUU,IAEvB,CAAChC,IAGGiC,EAAiBT,EACpBQ,IACC,IAAKjB,EAAWO,SAAWtB,EAAU,OAErC,MAAMkC,EAAQF,EAAUf,EAAWK,QAGnC,GAAIa,KAAKC,IAAIF,GAFK,GAEe,CAC/BlB,EAAQM,SAAU,EAClB,MAAMG,EAAaS,EAAQ,EACvBT,IAAeP,EAAWI,SAC5BC,EAAcE,EAElB,GAEF,CAACzB,EAAUuB,IAGPc,EAAgBb,EAAY,KAChCT,EAAWO,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,IAEM5C,EAAU6C,KAAI,aACN5C,EAAK,YACNC,EACXR,UAAWoD,EACT9C,EAAU6C,MAAMnD,UAChBA,EACAqD,EAAOF,KACP9C,EAAWgD,EAAOhD,SAAW,IAC9BiD,SAAA,CAEDJ,EAAA,MAAA,IACM5C,EAAUiD,aACdvD,UAAWoD,EAAGC,EAAOE,aAAcjD,EAAUiD,cAAcvD,WAAUsD,SAAA,CAErEE,EAAA,QAAA,IACM9C,EACJc,GAAIA,EACJhB,KAAMC,EACNX,KAAMA,EACNG,IAAKwD,EAAUxD,EAAKU,GACpBX,UAAWqD,EAAOK,MAClBC,KAAK,SAAQ,eACCxC,EAAO,aACThB,GAAaD,EACzBiB,QAASL,EAAeK,OAAUJ,EAClC6C,eAAiB9C,OAA8BC,EAAflB,EAChCQ,SAAUA,EACVN,SAAW6C,IACT,MAAMiB,EAAIjB,EAAEkB,cAAc3C,QACrBL,GAAcG,EAAmB4C,GAClC9D,GAAUA,EAAS6C,EAAGiB,MAG9BL,EAAA,OAAA,CACExD,UAAWoD,EAAGC,EAAOU,MAAO5C,EAAUkC,EAAOlC,QAAU,IACvD6C,QAAS,KACH3C,EAAQM,QACVN,EAAQM,SAAU,EAGpBhB,EAASgB,SAASsC,uBAER,OAAMX,SAElBE,UACEvD,IAAKY,EACLb,UAAWqD,EAAOa,MAClBC,YAAcvB,GAAMR,EAAgBQ,EAAEP,SACtC+B,aAAexB,GAAMR,EAAgBQ,EAAEE,QAAQ,GAAGT,SAAQiB,SAEzDlD,SAINF,GACCsD,cACMlD,EAAUJ,MACdmE,QAAS7C,EACTxB,UAAWoD,EAAG9C,EAAUJ,OAAOF,UAAWqD,EAAOnD,OAAMoD,SAEtDpD,MAKX"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use client";import{jsxs as r,jsx as e}from"react/jsx-runtime";import{
|
|
1
|
+
"use client";import{jsxs as r,jsx as e}from"react/jsx-runtime";import{cssSafeString as l,cn as o}from"@studiocubics/utils";import{useState as s,useEffect as t}from"react";import{useRipple as i,eventWithRipple as a}from"../../Misc/Ripple/Ripple.js";import p from"./TextAreaInput.module.css.js";import{InputErrors as c}from"../../Display/InputErrors/InputErrors.js";function m(m){const{label:n,error:u,fullWidth:d,disableResize:h=!1,onTouchStart:N,onClick:f,onBlur:b,slotProps:v={},className:x,...R}=m,{rippleElements:W,createRipple:j}=i(v.ripple),[T,E]=s(u&&!!u.length),I=m.id??l(n);return t(()=>{E(u&&!!u.length)},[u]),r("div",{...v.root,className:o(v.root?.className,p.root,d?p.fullWidth:void 0,T?p.errored:void 0),children:[n&&e("label",{...v.label,htmlFor:I,className:o(v.label?.className,p.label),children:n}),r("div",{...v.inputWrapper,className:o(v.inputWrapper?.className,p.inputWrapper),children:[e("textarea",{...R,id:I,className:o(x,p.input,h?p.disableResize:void 0),onTouchStart:a(j,N),onClick:a(j,f),onBlur:r=>{E(!1),b?.(r)}}),W]}),T&&e(c,{...v.error,className:o(v.error?.className,p.errorText),error:u})]})}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,
|
|
1
|
+
{"version":3,"file":"TextAreaInput.js","sources":["../../../src/Inputs/TextAreaInput/TextAreaInput.tsx"],"sourcesContent":["\"use client\";\n\nimport { cn, cssSafeString } 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 {\n InputErrors,\n type InputErrorsProps,\n} from \"../../Display/InputErrors/InputErrors\";\n\nexport interface TextAreaInputProps extends ComponentProps<\"textarea\"> {\n label?: string;\n error?: string | string[];\n disableResize?: boolean;\n fullWidth?: boolean;\n // TODO add color\n // TODO add size\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 const id = props.id ?? cssSafeString(label);\n\n useEffect(() => {\n setIsErrored(error && !!error.length);\n }, [error]);\n\n return (\n <div\n // TODO rename to container\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={id}\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 {...inputProps}\n id={id}\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 />\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","id","cssSafeString","useEffect","_jsxs","root","cn","styles","undefined","errored","children","_jsx","htmlFor","inputWrapper","input","eventWithRipple","e","InputErrors","errorText"],"mappings":"4WA+BM,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,QACtDC,EAAKpB,EAAMoB,IAAMC,EAAcpB,GAMrC,OAJAqB,EAAU,KACRL,EAAaf,KAAWA,EAAMiB,SAC7B,CAACjB,IAGFqB,EAAA,MAAA,IAEMf,EAAUgB,KACdf,UAAWgB,EACTjB,EAAUgB,MAAMf,UAChBiB,EAAOF,KACPrB,EAAYuB,EAAOvB,eAAYwB,EAC/BX,EAAYU,EAAOE,aAAUD,GAC9BE,SAAA,CAEA5B,GACC6B,EAAA,QAAA,IACMtB,EAAUP,MACd8B,QAASX,EACTX,UAAWgB,EAAGjB,EAAUP,OAAOQ,UAAWiB,EAAOzB,gBAEhDA,IAGLsB,EAAA,MAAA,IACMf,EAAUwB,aACdvB,UAAWgB,EAAGjB,EAAUwB,cAAcvB,UAAWiB,EAAOM,cAAaH,SAAA,CAErEC,EAAA,WAAA,IACMnB,EACJS,GAAIA,EACJX,UAAWgB,EACTf,EACAgB,EAAOO,MACP7B,EAAgBsB,EAAOtB,mBAAgBuB,GAEzCtB,aAAc6B,EAAgBrB,EAAcR,GAC5CC,QAAS4B,EAAgBrB,EAAcP,GACvCC,OAAS4B,IACPlB,GAAa,GACbV,IAAS4B,MAGZvB,KAEFI,GACCc,EAACM,MACK5B,EAAUN,MACdO,UAAWgB,EAAGjB,EAAUN,OAAOO,UAAWiB,EAAOW,WACjDnC,MAAOA,MAKjB"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use client";import{jsxs as e,jsx as r}from"react/jsx-runtime";import{
|
|
1
|
+
"use client";import{jsxs as e,jsx as r}from"react/jsx-runtime";import{cssSafeString as t,cn as s}from"@studiocubics/utils";import{useState as l,useEffect as o}from"react";import{useRipple as a,eventWithRipple as i}from"../../Misc/Ripple/Ripple.js";import n from"./TextInput.module.css.js";import{InputErrors as c}from"../../Display/InputErrors/InputErrors.js";function p(p){const{startIcon:m,endIcon:d,label:u,error:N,fullWidth:h,disableEndIconGutters:b=!1,disableStartIconGutters:I=!1,disableInputGutters:f,size:v="md",htmlSize:G,onTouchStart:x,onClick:W,onBlur:j,slotProps:z={},type:C="text",className:E,...S}=p,{rippleElements:T,createRipple:y}=a(z.ripple),[R,g]=l(N&&!!N.length),k=p.id??t(u);return o(()=>{g(N&&!!N.length)},[N]),e("div",{...z.root,className:s(z.root?.className,n.root,n[`size_${v}`],h?n.fullWidth:void 0,R?n.errored:void 0),children:[u&&r("label",{...z.label,htmlFor:k,className:s(z.label?.className,n.label),children:u}),e("div",{...z.inputWrapper,className:s(z.inputWrapper?.className,n.inputWrapper),children:[m&&r("span",{...z.startIcon,className:s(n.iconContainer,z.startIcon?.className,I?n.disableGutters:void 0),children:m}),r("input",{...S,type:C,id:k,className:s(E,n.input,f?n.disableGutters:""),onTouchStart:i(y,x),onClick:i(y,W),onBlur:e=>{g(!1),j?.(e)},size:G}),d&&r("span",{...z.endIcon,className:s(n.iconContainer,z.endIcon?.className,b?n.disableGutters:void 0),children:d}),T]}),R&&r(c,{...z.error,className:s(z.error?.className,n.errorText),error:N})]})}export{p as TextInput};
|
|
2
2
|
//# sourceMappingURL=TextInput.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TextInput.js","sources":["../../../src/Inputs/TextInput/TextInput.tsx"],"sourcesContent":["\"use client\";\n\nimport { cn,
|
|
1
|
+
{"version":3,"file":"TextInput.js","sources":["../../../src/Inputs/TextInput/TextInput.tsx"],"sourcesContent":["\"use client\";\n\nimport { cn, cssSafeString } from \"@studiocubics/utils\";\nimport {\n useEffect,\n useState,\n type ComponentProps,\n type ReactNode,\n} from \"react\";\nimport {\n eventWithRipple,\n useRipple,\n type UseRippleProps,\n} from \"../../Misc/Ripple/Ripple\";\nimport styles from \"./TextInput.module.css\";\nimport {\n InputErrors,\n type InputErrorsProps,\n} from \"../../Display/InputErrors/InputErrors\";\n\nexport interface TextInputProps extends Omit<ComponentProps<\"input\">, \"size\"> {\n startIcon?: ReactNode;\n endIcon?: ReactNode;\n label?: string;\n error?: string | string[];\n fullWidth?: boolean;\n // TODO add color\n /**\n * Use inputSize for <input size=\"10\"/>\n */\n size?: \"sm\" | \"md\" | \"lg\";\n htmlSize?: ComponentProps<\"input\">[\"size\"];\n disableEndIconGutters?: boolean;\n disableStartIconGutters?: boolean;\n disableInputGutters?: boolean;\n slotProps?: {\n ripple?: UseRippleProps;\n startIcon?: ComponentProps<\"span\">;\n endIcon?: ComponentProps<\"span\">;\n root?: ComponentProps<\"div\">;\n inputWrapper?: ComponentProps<\"div\">;\n label?: ComponentProps<\"label\">;\n error?: InputErrorsProps;\n };\n}\n\nexport function TextInput(props: TextInputProps) {\n const {\n startIcon,\n endIcon,\n label,\n error,\n fullWidth,\n disableEndIconGutters = false,\n disableStartIconGutters = false,\n disableInputGutters,\n size = \"md\",\n htmlSize,\n onTouchStart,\n onClick,\n onBlur,\n slotProps = {},\n type = \"text\",\n className,\n ...inputProps\n } = props;\n const { rippleElements, createRipple } = useRipple(slotProps.ripple);\n const [isErrored, setIsErrored] = useState(error && !!error.length);\n const id = props.id ?? cssSafeString(label);\n\n useEffect(() => {\n setIsErrored(error && !!error.length);\n }, [error]);\n\n return (\n <div\n // TODO rename to container\n {...slotProps.root}\n className={cn(\n slotProps.root?.className,\n styles.root,\n styles[`size_${size}`],\n fullWidth ? styles.fullWidth : undefined,\n isErrored ? styles.errored : undefined,\n )}\n >\n {label && (\n <label\n {...slotProps.label}\n htmlFor={id}\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 {startIcon && (\n <span\n {...slotProps.startIcon}\n className={cn(\n styles.iconContainer,\n slotProps.startIcon?.className,\n disableStartIconGutters ? styles.disableGutters : undefined,\n )}\n >\n {startIcon}\n </span>\n )}\n <input\n {...inputProps}\n type={type}\n id={id}\n className={cn(\n className,\n styles.input,\n disableInputGutters ? styles.disableGutters : \"\",\n )}\n onTouchStart={eventWithRipple(createRipple, onTouchStart)}\n onClick={eventWithRipple(createRipple, onClick)}\n onBlur={(e) => {\n setIsErrored(false);\n onBlur?.(e);\n }}\n size={htmlSize}\n />\n {endIcon && (\n <span\n {...slotProps.endIcon}\n className={cn(\n styles.iconContainer,\n slotProps.endIcon?.className,\n disableEndIconGutters ? styles.disableGutters : undefined,\n )}\n >\n {endIcon}\n </span>\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":["TextInput","props","startIcon","endIcon","label","error","fullWidth","disableEndIconGutters","disableStartIconGutters","disableInputGutters","size","htmlSize","onTouchStart","onClick","onBlur","slotProps","type","className","inputProps","rippleElements","createRipple","useRipple","ripple","isErrored","setIsErrored","useState","length","id","cssSafeString","useEffect","_jsxs","root","cn","styles","undefined","errored","_jsx","htmlFor","children","inputWrapper","iconContainer","disableGutters","input","eventWithRipple","e","InputErrors","errorText"],"mappings":"wWA8CM,SAAUA,EAAUC,GACxB,MAAMC,UACJA,EAASC,QACTA,EAAOC,MACPA,EAAKC,MACLA,EAAKC,UACLA,EAASC,sBACTA,GAAwB,EAAKC,wBAC7BA,GAA0B,EAAKC,oBAC/BA,EAAmBC,KACnBA,EAAO,KAAIC,SACXA,EAAQC,aACRA,EAAYC,QACZA,EAAOC,OACPA,EAAMC,UACNA,EAAY,CAAA,EAAEC,KACdA,EAAO,OAAMC,UACbA,KACGC,GACDjB,GACEkB,eAAEA,EAAcC,aAAEA,GAAiBC,EAAUN,EAAUO,SACtDC,EAAWC,GAAgBC,EAASpB,KAAWA,EAAMqB,QACtDC,EAAK1B,EAAM0B,IAAMC,EAAcxB,GAMrC,OAJAyB,EAAU,KACRL,EAAanB,KAAWA,EAAMqB,SAC7B,CAACrB,IAGFyB,YAEMf,EAAUgB,KACdd,UAAWe,EACTjB,EAAUgB,MAAMd,UAChBgB,EAAOF,KACPE,EAAO,QAAQvB,KACfJ,EAAY2B,EAAO3B,eAAY4B,EAC/BX,EAAYU,EAAOE,aAAUD,aAG9B9B,GACCgC,EAAA,QAAA,IACMrB,EAAUX,MACdiC,QAASV,EACTV,UAAWe,EAAGjB,EAAUX,OAAOa,UAAWgB,EAAO7B,OAAMkC,SAEtDlC,IAGL0B,EAAA,MAAA,IACMf,EAAUwB,aACdtB,UAAWe,EAAGjB,EAAUwB,cAActB,UAAWgB,EAAOM,wBAEvDrC,GACCkC,EAAA,OAAA,IACMrB,EAAUb,UACde,UAAWe,EACTC,EAAOO,cACPzB,EAAUb,WAAWe,UACrBT,EAA0ByB,EAAOQ,oBAAiBP,YAGnDhC,IAGLkC,EAAA,QAAA,IACMlB,EACJF,KAAMA,EACNW,GAAIA,EACJV,UAAWe,EACTf,EACAgB,EAAOS,MACPjC,EAAsBwB,EAAOQ,eAAiB,IAEhD7B,aAAc+B,EAAgBvB,EAAcR,GAC5CC,QAAS8B,EAAgBvB,EAAcP,GACvCC,OAAS8B,IACPpB,GAAa,GACbV,IAAS8B,IAEXlC,KAAMC,IAEPR,GACCiC,EAAA,OAAA,IACMrB,EAAUZ,QACdc,UAAWe,EACTC,EAAOO,cACPzB,EAAUZ,SAASc,UACnBV,EAAwB0B,EAAOQ,oBAAiBP,GACjDI,SAEAnC,IAGJgB,KAEFI,GACCa,EAACS,EAAW,IACN9B,EAAUV,MACdY,UAAWe,EAAGjB,EAAUV,OAAOY,UAAWgB,EAAOa,WACjDzC,MAAOA,MAKjB"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import type { ComponentProps, ReactNode } from "react";
|
|
2
2
|
export interface SectionWrapperProps extends Omit<ComponentProps<"section">, "title"> {
|
|
3
|
-
title
|
|
3
|
+
title?: ReactNode;
|
|
4
4
|
subtitle?: ReactNode;
|
|
5
5
|
noBorders?: boolean;
|
|
6
|
-
|
|
6
|
+
color?: "primary" | "secondary" | "error";
|
|
7
|
+
size?: "sm" | "md" | "lg";
|
|
7
8
|
slotProps?: {
|
|
8
9
|
header?: ComponentProps<"div">;
|
|
9
10
|
title?: ComponentProps<"h4">;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsxs as e,jsx as t}from"react/jsx-runtime";import r from"./SectionWrapper.module.css.js";import{cssSafeString as
|
|
1
|
+
import{jsxs as e,jsx as t}from"react/jsx-runtime";import r from"./SectionWrapper.module.css.js";import{cssSafeString as o,cn as s}from"@studiocubics/utils";function i(i){const{title:c,subtitle:n,children:a,noBorders:d,slotProps:l={},className:m,color:p,size:h="md",id:u=("string"==typeof c?o(c):void 0),...f}=i,N=!c&&!n;return e("section",{...f,className:s(m,r.root,d?r.noBorders:"",N?r.noHeader:""),"data-color":p,"data-size":h,id:u,children:[!N&&e("div",{...l.header,className:s(r.header,l.header?.className),children:["string"==typeof c?t("h4",{...l.title,children:c}):c,n&&"string"==typeof n?t("p",{...l.subtitle,children:n}):n]}),t("div",{...l.content,className:s(r.content,l.content?.className),children:a})]})}export{i as SectionWrapper};
|
|
2
2
|
//# sourceMappingURL=SectionWrapper.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SectionWrapper.js","sources":["../../../src/Layout/SectionWrapper/SectionWrapper.tsx"],"sourcesContent":["import type { ComponentProps, ReactNode } from \"react\";\nimport styles from \"./SectionWrapper.module.css\";\nimport { cn, cssSafeString } from \"@studiocubics/utils\";\n\nexport interface SectionWrapperProps\n extends Omit<ComponentProps<\"section\">, \"title\"> {\n title
|
|
1
|
+
{"version":3,"file":"SectionWrapper.js","sources":["../../../src/Layout/SectionWrapper/SectionWrapper.tsx"],"sourcesContent":["import type { ComponentProps, ReactNode } from \"react\";\nimport styles from \"./SectionWrapper.module.css\";\nimport { cn, cssSafeString } from \"@studiocubics/utils\";\n\nexport interface SectionWrapperProps\n extends Omit<ComponentProps<\"section\">, \"title\"> {\n title?: ReactNode;\n subtitle?: ReactNode;\n noBorders?: boolean;\n color?: \"primary\" | \"secondary\" | \"error\";\n // TODO sm currently doesnt do anything\n size?: \"sm\" | \"md\" | \"lg\";\n slotProps?: {\n header?: ComponentProps<\"div\">;\n title?: ComponentProps<\"h4\">;\n subtitle?: ComponentProps<\"p\">;\n content?: ComponentProps<\"div\">;\n };\n}\nexport function SectionWrapper(props: SectionWrapperProps) {\n const {\n title,\n subtitle,\n children,\n noBorders,\n slotProps = {},\n className,\n color,\n size = \"md\",\n id = typeof title == \"string\" ? cssSafeString(title) : undefined,\n ...rest\n } = props;\n const noHeader = !title && !subtitle;\n return (\n <section\n {...rest}\n className={cn(\n className,\n styles.root,\n noBorders ? styles.noBorders : \"\",\n noHeader ? styles.noHeader : \"\",\n )}\n data-color={color}\n data-size={size}\n id={id}\n >\n {!noHeader && (\n <div\n {...slotProps.header}\n className={cn(styles.header, slotProps.header?.className)}\n >\n {typeof title == \"string\" ? (\n <h4 {...slotProps.title}>{title}</h4>\n ) : (\n title\n )}\n {subtitle && typeof subtitle == \"string\" ? (\n <p {...slotProps.subtitle}>{subtitle}</p>\n ) : (\n subtitle\n )}\n </div>\n )}\n <div\n {...slotProps.content}\n className={cn(styles.content, slotProps.content?.className)}\n >\n {children}\n </div>\n </section>\n );\n}\n"],"names":["SectionWrapper","props","title","subtitle","children","noBorders","slotProps","className","color","size","id","cssSafeString","undefined","rest","noHeader","_jsxs","cn","styles","root","header","_jsx","content"],"mappings":"4JAmBM,SAAUA,EAAeC,GAC7B,MAAMC,MACJA,EAAKC,SACLA,EAAQC,SACRA,EAAQC,UACRA,EAASC,UACTA,EAAY,CAAA,EAAEC,UACdA,EAASC,MACTA,EAAKC,KACLA,EAAO,KAAIC,GACXA,GAAqB,iBAATR,EAAoBS,EAAcT,QAASU,MACpDC,GACDZ,EACEa,GAAYZ,IAAUC,EAC5B,OACEY,EAAA,UAAA,IACMF,EACJN,UAAWS,EACTT,EACAU,EAAOC,KACPb,EAAYY,EAAOZ,UAAY,GAC/BS,EAAWG,EAAOH,SAAW,IAC9B,aACWN,EAAK,YACNC,EACXC,GAAIA,EAAEN,SAAA,EAEJU,GACAC,EAAA,MAAA,IACMT,EAAUa,OACdZ,UAAWS,EAAGC,EAAOE,OAAQb,EAAUa,QAAQZ,WAAUH,SAAA,CAExC,iBAATF,EACNkB,EAAA,KAAA,IAAQd,EAAUJ,MAAKE,SAAGF,MAI3BC,GAA+B,iBAAZA,EAClBiB,EAAA,IAAA,IAAOd,EAAUH,SAAQC,SAAGD,IAAa,KAM/CiB,EAAA,MAAA,IACMd,EAAUe,QACdd,UAAWS,EAAGC,EAAOI,QAASf,EAAUe,SAASd,WAAUH,SAE1DA,MAIT"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var e={root:"SectionWrapper-module_root__K-O4Y",header:"SectionWrapper-module_header__8-h-6",noBorders:"SectionWrapper-module_noBorders__brOqe",content:"SectionWrapper-module_content__Ruu8X"};export{e as default};
|
|
1
|
+
var e={root:"SectionWrapper-module_root__K-O4Y",header:"SectionWrapper-module_header__8-h-6",noBorders:"SectionWrapper-module_noBorders__brOqe",content:"SectionWrapper-module_content__Ruu8X",noHeader:"SectionWrapper-module_noHeader__Ak-Rv"};export{e as default};
|
|
2
2
|
//# sourceMappingURL=SectionWrapper.module.css.js.map
|
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__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}}.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)}}.Toaster-module_root__jkhXJ{--margin:var(--spacing-gap-3);--peek:0px;height:calc(100% - var(--margin)*2);inset:var(--margin);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)}&[data-size=sm]{&>h4{font-size:1em}}&[data-size=md]{&>h4{font-size:1.2em}}&[data-size=lg]{&>h4{font-size:1.5em}}&[data-color=primary]{&>h4{color:var(--color-primary)}}&[data-color=secondary]{&>h4{color:var(--color-secondary)}}&[data-color=error]{&>h4{color:var(--color-error)}}&.ConfirmationForm-module_error__no9D0{& .ConfirmationForm-module_status__N5gJB{color:var(--color-error)}}}.ConfirmationForm-module_actions__TSHEJ{align-items:center;display:flex;gap:var(--spacing-gap-2);justify-content:flex-end}.ConfirmationForm-module_status__N5gJB{align-items:center;display:flex;flex:1}.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)}}.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}}.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)}.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)}.Divider-module_divider__BgWgK{background:var(--color-outline);border:none;display:flex;margin:0;padding:0}.Divider-module_divider__BgWgK.Divider-module_horizontal__X-JFV{align-self:stretch;flex:1;height:1px}.Divider-module_divider__BgWgK.Divider-module_vertical__A8ggo{align-self:stretch;flex:1;width:1px}.Divider-module_container__2-kIW{color:var(--color-on-background-faint);display:flex;gap:.5em}.Divider-module_container__2-kIW.Divider-module_horizontal__X-JFV{height:fit-content;width:100%}.Divider-module_container__2-kIW.Divider-module_horizontal__X-JFV>.Divider-module_divider__BgWgK.Divider-module_horizontal__X-JFV{align-self:center}.Divider-module_container__2-kIW.Divider-module_vertical__A8ggo{flex-direction:column;height:100%;width:fit-content}.Divider-module_container__2-kIW.Divider-module_vertical__A8ggo>.Divider-module_divider__BgWgK.Divider-module_vertical__A8ggo{align-self:center}.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}}.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)}}.Toaster-module_root__jkhXJ{--margin:var(--spacing-gap-3);--peek:0px;height:calc(100% - var(--margin)*2);inset:var(--margin);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)}&[data-size=sm]{&>h4{font-size:1em}}&[data-size=md]{&>h4{font-size:1.2em}}&[data-size=lg]{&>h4{font-size:1.5em}}&[data-color=primary]{&>h4{color:var(--color-primary)}}&[data-color=secondary]{&>h4{color:var(--color-secondary)}}&[data-color=error]{&>h4{color:var(--color-error)}}&.ConfirmationForm-module_error__no9D0{& .ConfirmationForm-module_status__N5gJB{color:var(--color-error)}}}.ConfirmationForm-module_actions__TSHEJ{align-items:center;display:flex;gap:var(--spacing-gap-2);justify-content:flex-end}.ConfirmationForm-module_status__N5gJB{align-items:center;display:flex;flex:1}.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)}}.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{--color:var(--color-on-background);--outline:var(--color-outline);--fs:var(--fs-body2);--gap:var(--spacing-gap-4);display:grid;gap:var(--gap);grid-template-columns:1fr;padding-block:var(--spacing-gap-3);padding-inline:var(--spacing-gap-4);&[data-color=primary]{--color:var(--color-primary);--outline:var(--color-primary-alpha)}&[data-color=secondary]{--color:var(--color-secondary);--outline:var(--color-secondary-alpha)}&[data-color=error]{--color:var(--color-error);--outline:var(--color-error-alpha)}&[data-size=lg]{--fs:var(--fs-body);--gap:var(--spacing-gap-8)}}.SectionWrapper-module_header__8-h-6{font-size:var(--fs);&>h4{color:var(--color);font-size:1em}&>p{color:var(--color-on-background-faint);font-size:.9em}}.SectionWrapper-module_root__K-O4Y:not(.SectionWrapper-module_noBorders__brOqe){border-top:1px solid var(--outline)}.SectionWrapper-module_content__Ruu8X{container-type:inline-size;display:flex;flex-direction:column}@container (min-width:600px){.SectionWrapper-module_root__K-O4Y{grid-template-columns:.4fr 1fr;&.SectionWrapper-module_noHeader__Ak-Rv{grid-template-columns: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}}.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)}.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{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{SearchInput}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}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{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{Divider}from"./Display/Divider/Divider.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{SearchInput}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}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{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.
|
|
8
|
+
"version": "0.0.18",
|
|
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.
|
|
38
|
-
"@studiocubics/types": "^0.0.
|
|
39
|
-
"@studiocubics/utils": "^0.0.
|
|
37
|
+
"@studiocubics/hooks": "^0.0.18",
|
|
38
|
+
"@studiocubics/types": "^0.0.18",
|
|
39
|
+
"@studiocubics/utils": "^0.0.18"
|
|
40
40
|
},
|
|
41
41
|
"devDependencies": {
|
|
42
42
|
"@eslint/js": "^9.39.1",
|