@studiocubics/components 0.0.17 → 0.0.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
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":"sRAgEA,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,IACMV,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"}
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"}
@@ -1,3 +1,4 @@
1
+ import { useAnchorElement, useDisclosure } from "@studiocubics/hooks";
1
2
  import { type ElementType, type ReactNode } from "react";
2
3
  import { type ButtonProps } from "../../Inputs/Button/Button";
3
4
  export type DocumentAction<C extends ElementType = "a"> = {
@@ -6,6 +7,7 @@ export type DocumentAction<C extends ElementType = "a"> = {
6
7
  actionType: "popover";
7
8
  popoverChildren: ReactNode;
8
9
  icon: ReactNode;
10
+ anchorElementDefaults?: ReturnType<typeof useAnchorElement>;
9
11
  } & ButtonProps<C>) | {
10
12
  actionType: "node";
11
13
  children: ReactNode;
@@ -17,6 +19,7 @@ export type DocumentAction<C extends ElementType = "a"> = {
17
19
  actionType: "dialog";
18
20
  icon: ReactNode;
19
21
  dialogChildren: ReactNode;
22
+ disclosureDefaults?: ReturnType<typeof useDisclosure>;
20
23
  } & ButtonProps));
21
24
  export declare function CollectionItemCardActions({ actions, }: {
22
25
  actions: DocumentAction[];
@@ -1,2 +1,2 @@
1
- "use client";import{jsx as o,Fragment as n,jsxs as r}from"react/jsx-runtime";import{useDisclosure as e,useAnchorElement as i}from"@studiocubics/hooks";import{Fragment as t}from"react";import{Button as c}from"../../Inputs/Button/Button.js";import{Tooltip as l}from"../../Display/Tooltip/Tooltip.js";import{Popover as a}from"../../Layout/Popover/Popover.js";import{Dialog as p}from"../../Layout/Dialog/Dialog.js";function d({actions:r}){return o(n,{children:r.map((n,r)=>{switch(n.actionType){case"popover":return o(s,{action:n},r);case"link":return o(h,{action:n},r);case"dialog":return o(u,{action:n},r);default:return o(t,{children:n.children},r)}})})}function s({action:e}){const{actionType:t,icon:p,popoverChildren:d,onClick:s,...h}=e,{anchorEl:u,open:m,handleClick:f,handleClose:C}=i();return r(n,{children:[o(l,{renderArrow:!0,title:e.label,children:o(c,{...h,onClick:o=>{f(o),s?.(o)},children:p})}),o(a,{open:m,anchorEl:u,onClose:C,children:d})]})}function h({action:n}){const{actionType:r,icon:e,...i}=n;return o(l,{renderArrow:!0,title:n.label,children:o(c,{...i,children:e})})}function u({action:i}){const{actionType:t,icon:a,dialogChildren:d,onClick:s,...h}=i,{open:u,handleOpen:m,handleClose:f}=e();return r(n,{children:[o(l,{renderArrow:!0,title:i.label,children:o(c,{...h,onClick:o=>{m(),s?.(o)},children:a})}),o(p,{open:u,onClose:f,children:d})]})}export{d as CollectionItemCardActions};
1
+ "use client";import{jsx as n,Fragment as o,jsxs as e}from"react/jsx-runtime";import{useDisclosure as r,useAnchorElement as i}from"@studiocubics/hooks";import{Fragment as t}from"react";import{Button as l}from"../../Inputs/Button/Button.js";import{Tooltip as c}from"../../Display/Tooltip/Tooltip.js";import{Popover as a}from"../../Layout/Popover/Popover.js";import{Dialog as d}from"../../Layout/Dialog/Dialog.js";function p({actions:e}){return n(o,{children:e.map((o,e)=>{switch(o.actionType){case"popover":return n(h,{action:o},e);case"link":return n(u,{action:o},e);case"dialog":return n(m,{action:o},e);default:return n(t,{children:o.children},e)}})})}function s(n,o){return n||o}function h({action:r}){const{actionType:t,icon:d,popoverChildren:p,anchorElementDefaults:h,onClick:u,...m}=r,{anchorEl:f,open:C,handleClick:k,handleClose:y}=i();return e(o,{children:[n(c,{renderArrow:!0,title:r.label,children:n(l,{...m,onClick:n=>{s(h?.handleClick,k),u?.(n)},children:d})}),n(a,{open:s(h?.open,C),anchorEl:s(h?.anchorEl,f),onClose:s(h?.handleClose,y),children:p})]})}function u({action:o}){const{actionType:e,icon:r,...i}=o;return n(c,{renderArrow:!0,title:o.label,children:n(l,{...i,children:r})})}function m({action:i}){const{actionType:t,icon:a,dialogChildren:p,disclosureDefaults:h,onClick:u,...m}=i,{open:f,handleOpen:C,handleClose:k}=r();return e(o,{children:[n(c,{renderArrow:!0,title:i.label,children:n(l,{...m,onClick:n=>{s(h?.handleOpen,C),u?.(n)},children:a})}),n(d,{open:s(h?.open,f),onClose:s(h?.handleClose,k),children:p})]})}export{p as CollectionItemCardActions};
2
2
  //# sourceMappingURL=CollectionItemCardActions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CollectionItemCardActions.js","sources":["../../../src/Cards/CollectionItemCard/CollectionItemCardActions.tsx"],"sourcesContent":["\"use client\";\n\nimport { useAnchorElement, useDisclosure } from \"@studiocubics/hooks\";\nimport {\n type ElementType,\n type ReactNode,\n type MouseEvent,\n Fragment,\n} from \"react\";\nimport { Button, type ButtonProps } from \"../../Inputs/Button/Button\";\nimport { Tooltip } from \"../../Display/Tooltip/Tooltip\";\nimport { Popover } from \"../../Layout/Popover/Popover\";\nimport { Dialog } from \"../../Layout/Dialog/Dialog\";\n\nexport type DocumentAction<C extends ElementType = \"a\"> = {\n label: string;\n} & (\n | ({\n actionType: \"popover\";\n popoverChildren: ReactNode;\n icon: ReactNode;\n } & ButtonProps<C>)\n | { actionType: \"node\"; children: ReactNode }\n | ({\n actionType: \"link\";\n href: string;\n icon: ReactNode;\n } & ButtonProps) //TODO Avoid 'as' conflict\n | ({\n actionType: \"dialog\";\n icon: ReactNode;\n dialogChildren: ReactNode;\n } & ButtonProps)\n);\nexport function CollectionItemCardActions({\n actions,\n}: {\n actions: DocumentAction[];\n}) {\n return (\n <>\n {actions.map((action, i) => {\n switch (action.actionType) {\n case \"popover\":\n return <PopoverTypeAction key={i} action={action} />;\n case \"link\":\n return <LinkTypeAction key={i} action={action} />;\n case \"dialog\":\n return <DialogTypeAction key={i} action={action} />;\n default:\n return <Fragment key={i}>{action.children}</Fragment>;\n }\n })}\n </>\n );\n}\n\nfunction PopoverTypeAction({\n action,\n}: {\n action: DocumentAction & { actionType: \"popover\" };\n}) {\n const { actionType: _, icon, popoverChildren, onClick, ...rest } = action;\n const { anchorEl, open, handleClick, handleClose } = useAnchorElement();\n return (\n <>\n <Tooltip renderArrow title={action.label}>\n <Button\n {...rest}\n onClick={(e: MouseEvent<HTMLAnchorElement>) => {\n handleClick(e);\n onClick?.(e);\n }}\n >\n {icon}\n </Button>\n </Tooltip>\n <Popover open={open} anchorEl={anchorEl} onClose={handleClose}>\n {popoverChildren}\n </Popover>\n </>\n );\n}\nfunction LinkTypeAction({\n action,\n}: {\n action: DocumentAction & { actionType: \"link\" };\n}) {\n const { actionType: _, icon, ...rest } = action;\n return (\n <Tooltip renderArrow title={action.label}>\n <Button {...rest}>{icon}</Button>\n </Tooltip>\n );\n}\n\nfunction DialogTypeAction({\n action,\n}: {\n action: DocumentAction & { actionType: \"dialog\" };\n}) {\n const { actionType: _, icon, dialogChildren, onClick, ...rest } = action;\n const { open, handleOpen, handleClose } = useDisclosure();\n return (\n <>\n <Tooltip renderArrow title={action.label}>\n <Button\n {...rest}\n onClick={(e: MouseEvent<HTMLButtonElement>) => {\n handleOpen();\n onClick?.(e);\n }}\n >\n {icon}\n </Button>\n </Tooltip>\n <Dialog open={open} onClose={handleClose}>\n {dialogChildren}\n </Dialog>\n </>\n );\n}\n"],"names":["CollectionItemCardActions","actions","_jsx","_Fragment","children","map","action","i","actionType","PopoverTypeAction","LinkTypeAction","DialogTypeAction","Fragment","_","icon","popoverChildren","onClick","rest","anchorEl","open","handleClick","handleClose","useAnchorElement","_jsxs","Tooltip","renderArrow","title","label","Button","e","Popover","onClose","dialogChildren","handleOpen","useDisclosure","Dialog"],"mappings":"2ZAkCM,SAAUA,GAA0BC,QACxCA,IAIA,OACEC,EAAAC,EAAA,CAAAC,SACGH,EAAQI,IAAI,CAACC,EAAQC,KACpB,OAAQD,EAAOE,YACb,IAAK,UACH,OAAON,EAACO,EAAiB,CAASH,OAAQA,GAAXC,GACjC,IAAK,OACH,OAAOL,EAACQ,EAAc,CAASJ,OAAQA,GAAXC,GAC9B,IAAK,SACH,OAAOL,EAACS,EAAgB,CAASL,OAAQA,GAAXC,GAChC,QACE,OAAOL,EAACU,EAAQ,CAAAR,SAAUE,EAAOF,UAAXG,OAKlC,CAEA,SAASE,GAAkBH,OACzBA,IAIA,MAAQE,WAAYK,EAACC,KAAEA,EAAIC,gBAAEA,EAAeC,QAAEA,KAAYC,GAASX,GAC7DY,SAAEA,EAAQC,KAAEA,EAAIC,YAAEA,EAAWC,YAAEA,GAAgBC,IACrD,OACEC,eACErB,EAACsB,GAAQC,aAAW,EAACC,MAAOpB,EAAOqB,MAAKvB,SACtCF,EAAC0B,EAAM,IACDX,EACJD,QAAUa,IACRT,EAAYS,GACZb,IAAUa,IACXzB,SAEAU,MAGLZ,EAAC4B,EAAO,CAACX,KAAMA,EAAMD,SAAUA,EAAUa,QAASV,WAC/CN,MAIT,CACA,SAASL,GAAeJ,OACtBA,IAIA,MAAQE,WAAYK,EAACC,KAAEA,KAASG,GAASX,EACzC,OACEJ,EAACsB,EAAO,CAACC,aAAW,EAACC,MAAOpB,EAAOqB,MAAKvB,SACtCF,EAAC0B,EAAM,IAAKX,WAAOH,KAGzB,CAEA,SAASH,GAAiBL,OACxBA,IAIA,MAAQE,WAAYK,EAACC,KAAEA,EAAIkB,eAAEA,EAAchB,QAAEA,KAAYC,GAASX,GAC5Da,KAAEA,EAAIc,WAAEA,EAAUZ,YAAEA,GAAgBa,IAC1C,OACEX,eACErB,EAACsB,GAAQC,aAAW,EAACC,MAAOpB,EAAOqB,MAAKvB,SACtCF,EAAC0B,EAAM,IACDX,EACJD,QAAUa,IACRI,IACAjB,IAAUa,IACXzB,SAEAU,MAGLZ,EAACiC,GAAOhB,KAAMA,EAAMY,QAASV,EAAWjB,SACrC4B,MAIT"}
1
+ {"version":3,"file":"CollectionItemCardActions.js","sources":["../../../src/Cards/CollectionItemCard/CollectionItemCardActions.tsx"],"sourcesContent":["\"use client\";\n\nimport { useAnchorElement, useDisclosure } from \"@studiocubics/hooks\";\nimport {\n type ElementType,\n type ReactNode,\n type MouseEvent,\n Fragment,\n isValidElement,\n} from \"react\";\nimport { Button, type ButtonProps } from \"../../Inputs/Button/Button\";\nimport { Tooltip } from \"../../Display/Tooltip/Tooltip\";\nimport { Popover } from \"../../Layout/Popover/Popover\";\nimport { Dialog } from \"../../Layout/Dialog/Dialog\";\n\nexport type DocumentAction<C extends ElementType = \"a\"> = {\n label: string;\n} & (\n | ({\n actionType: \"popover\";\n popoverChildren: ReactNode;\n icon: ReactNode;\n anchorElementDefaults?: ReturnType<typeof useAnchorElement>;\n } & ButtonProps<C>)\n | { actionType: \"node\"; children: ReactNode }\n | ({\n actionType: \"link\";\n href: string;\n icon: ReactNode;\n } & ButtonProps) //TODO Avoid 'as' conflict\n | ({\n actionType: \"dialog\";\n icon: ReactNode;\n dialogChildren: ReactNode;\n disclosureDefaults?: ReturnType<typeof useDisclosure>;\n } & ButtonProps)\n);\nexport function CollectionItemCardActions({\n actions,\n}: {\n actions: DocumentAction[];\n}) {\n return (\n <>\n {actions.map((action, i) => {\n switch (action.actionType) {\n case \"popover\":\n return <PopoverTypeAction key={i} action={action} />;\n case \"link\":\n return <LinkTypeAction key={i} action={action} />;\n case \"dialog\":\n return <DialogTypeAction key={i} action={action} />;\n default:\n return <Fragment key={i}>{action.children}</Fragment>;\n }\n })}\n </>\n );\n}\nfunction override<T>(a: T | undefined | null, b: T) {\n if (a) return a;\n return b;\n}\n\nfunction PopoverTypeAction({\n action,\n}: {\n action: DocumentAction & { actionType: \"popover\" };\n}) {\n const {\n actionType: _,\n icon,\n popoverChildren,\n anchorElementDefaults,\n onClick,\n ...rest\n } = action;\n const { anchorEl, open, handleClick, handleClose } = useAnchorElement();\n return (\n <>\n <Tooltip renderArrow title={action.label}>\n <Button\n {...rest}\n onClick={(e: MouseEvent<HTMLAnchorElement>) => {\n override(anchorElementDefaults?.handleClick, handleClick);\n onClick?.(e);\n }}\n >\n {icon}\n </Button>\n </Tooltip>\n <Popover\n open={override(anchorElementDefaults?.open, open)}\n anchorEl={override(anchorElementDefaults?.anchorEl, anchorEl)}\n onClose={override(anchorElementDefaults?.handleClose, handleClose)}\n >\n {popoverChildren}\n </Popover>\n </>\n );\n}\nfunction LinkTypeAction({\n action,\n}: {\n action: DocumentAction & { actionType: \"link\" };\n}) {\n const { actionType: _, icon, ...rest } = action;\n return (\n <Tooltip renderArrow title={action.label}>\n <Button {...rest}>{icon}</Button>\n </Tooltip>\n );\n}\n\nfunction DialogTypeAction({\n action,\n}: {\n action: DocumentAction & { actionType: \"dialog\" };\n}) {\n const {\n actionType: _,\n icon,\n dialogChildren,\n disclosureDefaults,\n onClick,\n ...rest\n } = action;\n const { open, handleOpen, handleClose } = useDisclosure();\n\n return (\n <>\n <Tooltip renderArrow title={action.label}>\n <Button\n {...rest}\n onClick={(e: MouseEvent<HTMLButtonElement>) => {\n override(disclosureDefaults?.handleOpen, handleOpen);\n onClick?.(e);\n }}\n >\n {icon}\n </Button>\n </Tooltip>\n <Dialog\n open={override(disclosureDefaults?.open, open)}\n onClose={override(disclosureDefaults?.handleClose, handleClose)}\n >\n {dialogChildren}\n </Dialog>\n </>\n );\n}\n"],"names":["CollectionItemCardActions","actions","_jsx","_Fragment","children","map","action","i","actionType","PopoverTypeAction","LinkTypeAction","DialogTypeAction","Fragment","override","a","b","_","icon","popoverChildren","anchorElementDefaults","onClick","rest","anchorEl","open","handleClick","handleClose","useAnchorElement","_jsxs","Tooltip","renderArrow","title","label","Button","e","Popover","onClose","dialogChildren","disclosureDefaults","handleOpen","useDisclosure","Dialog"],"mappings":"2ZAqCM,SAAUA,GAA0BC,QACxCA,IAIA,OACEC,EAAAC,EAAA,CAAAC,SACGH,EAAQI,IAAI,CAACC,EAAQC,KACpB,OAAQD,EAAOE,YACb,IAAK,UACH,OAAON,EAACO,EAAiB,CAASH,OAAQA,GAAXC,GACjC,IAAK,OACH,OAAOL,EAACQ,EAAc,CAASJ,OAAQA,GAAXC,GAC9B,IAAK,SACH,OAAOL,EAACS,EAAgB,CAASL,OAAQA,GAAXC,GAChC,QACE,OAAOL,EAACU,EAAQ,CAAAR,SAAUE,EAAOF,UAAXG,OAKlC,CACA,SAASM,EAAYC,EAAyBC,GAC5C,OAAID,GACGC,CACT,CAEA,SAASN,GAAkBH,OACzBA,IAIA,MACEE,WAAYQ,EAACC,KACbA,EAAIC,gBACJA,EAAeC,sBACfA,EAAqBC,QACrBA,KACGC,GACDf,GACEgB,SAAEA,EAAQC,KAAEA,EAAIC,YAAEA,EAAWC,YAAEA,GAAgBC,IACrD,OACEC,eACEzB,EAAC0B,GAAQC,aAAW,EAACC,MAAOxB,EAAOyB,MAAK3B,SACtCF,EAAC8B,EAAM,IACDX,EACJD,QAAUa,IACRpB,EAASM,GAAuBK,YAAaA,GAC7CJ,IAAUa,IACX7B,SAEAa,MAGLf,EAACgC,GACCX,KAAMV,EAASM,GAAuBI,KAAMA,GAC5CD,SAAUT,EAASM,GAAuBG,SAAUA,GACpDa,QAAStB,EAASM,GAAuBM,YAAaA,YAErDP,MAIT,CACA,SAASR,GAAeJ,OACtBA,IAIA,MAAQE,WAAYQ,EAACC,KAAEA,KAASI,GAASf,EACzC,OACEJ,EAAC0B,EAAO,CAACC,aAAW,EAACC,MAAOxB,EAAOyB,MAAK3B,SACtCF,EAAC8B,EAAM,IAAKX,WAAOJ,KAGzB,CAEA,SAASN,GAAiBL,OACxBA,IAIA,MACEE,WAAYQ,EAACC,KACbA,EAAImB,eACJA,EAAcC,mBACdA,EAAkBjB,QAClBA,KACGC,GACDf,GACEiB,KAAEA,EAAIe,WAAEA,EAAUb,YAAEA,GAAgBc,IAE1C,OACEZ,eACEzB,EAAC0B,GAAQC,aAAW,EAACC,MAAOxB,EAAOyB,MAAK3B,SACtCF,EAAC8B,EAAM,IACDX,EACJD,QAAUa,IACRpB,EAASwB,GAAoBC,WAAYA,GACzClB,IAAUa,IACX7B,SAEAa,MAGLf,EAACsC,EAAM,CACLjB,KAAMV,EAASwB,GAAoBd,KAAMA,GACzCY,QAAStB,EAASwB,GAAoBZ,YAAaA,GAAYrB,SAE9DgC,MAIT"}
@@ -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,2 @@
1
+ var i={divider:"Divider-module_divider__BgWgK",horizontal:"Divider-module_horizontal__X-JFV",vertical:"Divider-module_vertical__A8ggo",container:"Divider-module_container__2-kIW"};export{i as default};
2
+ //# sourceMappingURL=Divider.module.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Divider.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -1,5 +1,6 @@
1
1
  export * from "./Accordion/_index";
2
2
  export * from "./Chip/Chip";
3
+ export * from "./Divider/Divider";
3
4
  export * from "./IdentityDisplay/IdentityDisplay";
4
5
  export * from "./InputErrors/InputErrors";
5
6
  export * from "./Kbd/_index";
@@ -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, 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 {...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,IACMjC,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,SA5CcyC,IACpB,MAAMC,EAAOD,EAAEE,OAAOlD,QAClBgB,IAAUd,EACZc,EAAMmC,OAAOhC,EAAS8B,GAEtBxB,EAAewB,GAEjB1C,IAAWyC,EAAGC,IAsCRzC,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
+ {"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 +1 @@
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 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 {...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,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,EAAclC,GAMrC,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 +1 @@
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 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 {...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":"qWAyCM,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,IACMhB,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
+ {"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 +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, 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 {...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,IACM5C,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
+ {"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 +1 @@
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 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 {...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":"4WA6BM,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,IACMf,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
+ {"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 +1 @@
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 /**\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 {...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":"wWA6CM,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,YACMf,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
+ {"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"}
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{--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:var(--fs-body2)}}.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%}
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{align-items:stretch;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.17",
8
+ "version": "0.0.19",
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.17",
38
- "@studiocubics/types": "^0.0.17",
39
- "@studiocubics/utils": "^0.0.17"
37
+ "@studiocubics/hooks": "^0.0.19",
38
+ "@studiocubics/types": "^0.0.19",
39
+ "@studiocubics/utils": "^0.0.19"
40
40
  },
41
41
  "devDependencies": {
42
42
  "@eslint/js": "^9.39.1",