@studiocubics/components 0.0.5 → 0.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/dist/Cards/CollectionItemCard/CollectionItemCard.d.ts +3 -3
  2. package/dist/Cards/CollectionItemCard/CollectionItemCard.js +1 -1
  3. package/dist/Cards/CollectionItemCard/CollectionItemCard.js.map +1 -1
  4. package/dist/Cards/CollectionItemCard/CollectionItemCardActions.d.ts +5 -1
  5. package/dist/Cards/CollectionItemCard/CollectionItemCardActions.js +1 -1
  6. package/dist/Cards/CollectionItemCard/CollectionItemCardActions.js.map +1 -1
  7. package/dist/Forms/ConfirmationForm/ConfirmationForm.d.ts +1 -0
  8. package/dist/Forms/ConfirmationForm/ConfirmationForm.js +1 -1
  9. package/dist/Forms/ConfirmationForm/ConfirmationForm.js.map +1 -1
  10. package/dist/Forms/ConfirmationForm/ConfirmationForm.module.css.js +1 -1
  11. package/dist/Inputs/CloseButton/CloseButton.d.ts +4 -0
  12. package/dist/Inputs/CloseButton/CloseButton.js +2 -0
  13. package/dist/Inputs/CloseButton/CloseButton.js.map +1 -0
  14. package/dist/Inputs/CloseButton/CloseButton.module.css.js +2 -0
  15. package/dist/Inputs/CloseButton/CloseButton.module.css.js.map +1 -0
  16. package/dist/Inputs/SearchInput/SearchInput.d.ts +19 -0
  17. package/dist/Inputs/SearchInput/SearchInput.js +2 -0
  18. package/dist/Inputs/SearchInput/SearchInput.js.map +1 -0
  19. package/dist/Inputs/SearchInput/SearchInput.module.css.js +2 -0
  20. package/dist/Inputs/SearchInput/SearchInput.module.css.js.map +1 -0
  21. package/dist/Inputs/Select/Select.d.ts +3 -1
  22. package/dist/Inputs/Select/Select.js +1 -1
  23. package/dist/Inputs/Select/Select.js.map +1 -1
  24. package/dist/Inputs/Select/Select.module.css.js +1 -1
  25. package/dist/Inputs/TextInput/TextInput.d.ts +1 -0
  26. package/dist/Inputs/TextInput/TextInput.js +1 -1
  27. package/dist/Inputs/TextInput/TextInput.js.map +1 -1
  28. package/dist/Inputs/_index.d.ts +2 -0
  29. package/dist/Layout/PageLayoutTabs/PageLayoutTabs.d.ts +2 -0
  30. package/dist/Layout/PageLayoutTabs/PageLayoutTabs.js +1 -1
  31. package/dist/Layout/PageLayoutTabs/PageLayoutTabs.js.map +1 -1
  32. package/dist/Navigation/Tabs/Tab/Tab.js.map +1 -1
  33. package/dist/Navigation/Tabs/TabsBar/TabsBar.d.ts +3 -0
  34. package/dist/Navigation/Tabs/TabsBar/TabsBar.js +1 -1
  35. package/dist/Navigation/Tabs/TabsBar/TabsBar.js.map +1 -1
  36. package/dist/Navigation/Tabs/TabsBar/TabsBar.module.css.js +1 -1
  37. package/dist/Typography/CopyableText/CopyableText.js +1 -1
  38. package/dist/Typography/CopyableText/CopyableText.js.map +1 -1
  39. package/dist/Typography/PageTitle/PageTitle.d.ts +2 -2
  40. package/dist/Typography/PageTitle/PageTitle.js +1 -1
  41. package/dist/Typography/PageTitle/PageTitle.js.map +1 -1
  42. package/dist/Typography/VoidText/VoidText.d.ts +9 -0
  43. package/dist/Typography/VoidText/VoidText.js +2 -0
  44. package/dist/Typography/VoidText/VoidText.js.map +1 -0
  45. package/dist/Typography/VoidText/VoidText.module.css.js +2 -0
  46. package/dist/Typography/VoidText/VoidText.module.css.js.map +1 -0
  47. package/dist/Typography/_index.d.ts +2 -1
  48. package/dist/index.css +1 -1
  49. package/dist/index.js +1 -1
  50. package/package.json +4 -4
@@ -7,7 +7,7 @@ import { type ChipProps } from "../../Display/Chip/Chip";
7
7
  *
8
8
  * These extend the intrinsic element props of whatever element is passed via `as`.
9
9
  * @group CollectionItemCard
10
- * @category inputs
10
+ * @category Cards
11
11
  */
12
12
  export interface CollectionItemCardBaseProps {
13
13
  thumbnail?: ReactNode;
@@ -36,7 +36,7 @@ type DefaultElement = typeof defaultElement;
36
36
  * All intrinsic props for `C` are supported unless overridden by `CollectionItemCardBaseProps`.
37
37
  *
38
38
  * @group CollectionItemCard
39
- * @category inputs
39
+ * @category Cards
40
40
  */
41
41
  export type CollectionItemCardProps<C extends ElementType = DefaultElement> = PolymorphicComponentProps<C, CollectionItemCardBaseProps>;
42
42
  /**
@@ -49,7 +49,7 @@ export type CollectionItemCardProps<C extends ElementType = DefaultElement> = Po
49
49
  * ```
50
50
  *
51
51
  * @group CollectionItemCard
52
- * @category inputs
52
+ * @category Cards
53
53
  */
54
54
  export declare const CollectionItemCard: PolymorphicComponentType<CollectionItemCardBaseProps, DefaultElement>;
55
55
  export {};
@@ -1,2 +1,2 @@
1
- "use client";import{jsxs as e,jsx as i}from"react/jsx-runtime";import t from"./CollectionItemCard.module.css.js";import{cn as s}from"@studiocubics/utils";import{ClampedText as a}from"../../Typography/ClampedText/ClampedText.js";import{Chip as l}from"../../Display/Chip/Chip.js";function o(o){const{as:r,className:c,ref:m,thumbnail:n,title:d,chip:p,subtitle:h,description:u,footer:N,slotProps:f={},...C}=o,b=r||"a",y=!!o.href||!!o.onClick,j={className:s(c,t.main),ref:m,...C};return e("div",{...f.root,className:s(t.root,y?t.clickable:"",f.root?.className),children:[n&&i("div",{...f.thumbnail,className:s(t.image,f.thumbnail?.className),children:n}),e(b,{...j,children:[e("div",{...f.titleContainer,className:s(t.title,f.titleContainer?.className),children:[p&&("string"==typeof p?i(l,{size:"sm",...f.chip,children:p}):p),i(a,{as:"h4",...f.title,children:d})]}),h&&i(a,{...f.subtitle,className:s(t.subtitle,f.subtitle?.className),children:h}),u&&i(a,{...f.description,className:s(t.description,f.description?.className),children:u})]}),N&&i("div",{...f.footerContainer,className:s(t.footer,f.footerContainer?.className),children:N})]})}o.displayName="CollectionItemCard";const r=o;export{r as CollectionItemCard};
1
+ "use client";import{jsxs as e,jsx as i}from"react/jsx-runtime";import t from"./CollectionItemCard.module.css.js";import{cn as s}from"@studiocubics/utils";import{ClampedText as a}from"../../Typography/ClampedText/ClampedText.js";import{Chip as l}from"../../Display/Chip/Chip.js";function o(o){const{as:r,className:c,ref:m,thumbnail:n,title:d,chip:p,subtitle:h,description:u,footer:N,slotProps:f={},...C}=o,b=r||"a",v=!!o.href||!!o.onClick,y={className:s(c,t.main),ref:m,...C};return e("div",{...f.root,className:s(t.root,v?t.clickable:"",f.root?.className),children:[n&&i("div",{...f.thumbnail,className:s(t.image,f.thumbnail?.className),children:n}),e(b,{...y,children:[e("div",{...f.titleContainer,className:s(t.title,f.titleContainer?.className),children:[p&&("string"==typeof p?i(l,{size:"sm",...f.chip,children:p}):p),i(a,{as:"h4",...f.title,children:d})]}),h&&i(a,{...f.subtitle,as:"div",className:s(t.subtitle,f.subtitle?.className),children:h}),u&&i(a,{...f.description,as:"div",className:s(t.description,f.description?.className),children:u})]}),N&&i("div",{...f.footerContainer,className:s(t.footer,f.footerContainer?.className),children:N})]})}o.displayName="CollectionItemCard";const r=o;export{r as CollectionItemCard};
2
2
  //# sourceMappingURL=CollectionItemCard.js.map
@@ -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 inputs\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 inputs\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 inputs\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 className={cn(styles.subtitle, slotProps.subtitle?.className)}\n >\n {subtitle}\n </ClampedText>\n )}\n {description && (\n <ClampedText\n {...slotProps.description}\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 inputs\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,MAAKiB,SACrCjB,OAGJE,GACCgB,EAACK,EAAW,IACNlB,EAAUH,SACdL,UAAWe,EAAGC,EAAOX,SAAUG,EAAUH,UAAUL,WAAUoB,SAE5Df,IAGJC,GACCe,EAACK,EAAW,IACNlB,EAAUF,YACdN,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 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,7 +1,7 @@
1
1
  import { type ElementType, type ReactNode } from "react";
2
2
  import { type ButtonProps } from "../../Inputs/Button/Button";
3
3
  export type DocumentAction<C extends ElementType = "a"> = {
4
- label?: string;
4
+ label: string;
5
5
  } & (({
6
6
  actionType: "popover";
7
7
  popoverChildren: ReactNode;
@@ -13,6 +13,10 @@ export type DocumentAction<C extends ElementType = "a"> = {
13
13
  actionType: "link";
14
14
  href: string;
15
15
  icon: ReactNode;
16
+ } & ButtonProps) | ({
17
+ actionType: "dialog";
18
+ icon: ReactNode;
19
+ dialogChildren: ReactNode;
16
20
  } & ButtonProps));
17
21
  export declare function CollectionItemCardActions({ actions, }: {
18
22
  actions: DocumentAction[];
@@ -1,2 +1,2 @@
1
- import{jsx as o,Fragment as r,jsxs as n}from"react/jsx-runtime";import{useAnchorElement as e}from"@studiocubics/hooks";import{Fragment as t}from"react";import{Button as i}from"../../Inputs/Button/Button.js";import{Tooltip as c}from"../../Display/Tooltip/Tooltip.js";import{Popover as l}from"../../Layout/Popover/Popover.js";function a({actions:n}){return o(r,{children:n.map((r,n)=>{switch(r.actionType){case"popover":return o(p,{action:r},n);case"link":return o(s,{action:r},n);default:return o(t,{children:r.children},n)}})})}function p({action:t}){const{actionType:a,icon:p,popoverChildren:s,onClick:u,...d}=t,{anchorEl:h,open:m,handleClick:f,handleClose:C}=e();return n(r,{children:[o(c,{renderArrow:!0,title:t.label,children:o(i,{...d,onClick:o=>{f(o),u?.(o)},children:p})}),o(l,{open:m,anchorEl:h,onClose:C,children:s})]})}function s({action:r}){const{actionType:n,icon:e,...t}=r;return o(c,{renderArrow:!0,title:r.label,children:o(i,{...t,children:e})})}export{a as CollectionItemCardActions};
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};
2
2
  //# sourceMappingURL=CollectionItemCardActions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CollectionItemCardActions.js","sources":["../../../src/Cards/CollectionItemCard/CollectionItemCardActions.tsx"],"sourcesContent":["import { useAnchorElement } 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\";\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);\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 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"],"names":["CollectionItemCardActions","actions","_jsx","_Fragment","children","map","action","i","actionType","PopoverTypeAction","LinkTypeAction","Fragment","_","icon","popoverChildren","onClick","rest","anchorEl","open","handleClick","handleClose","useAnchorElement","_jsxs","Tooltip","renderArrow","title","label","Button","e","Popover","onClose"],"mappings":"oUA0BM,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,QACE,OAAOL,EAACS,EAAQ,CAAAP,SAAUE,EAAOF,UAAXG,OAKlC,CAEA,SAASE,GAAkBH,OACzBA,IAIA,MAAQE,WAAYI,EAACC,KAAEA,EAAIC,gBAAEA,EAAeC,QAAEA,KAAYC,GAASV,GAC7DW,SAAEA,EAAQC,KAAEA,EAAIC,YAAEA,EAAWC,YAAEA,GAAgBC,IACrD,OACEC,eACEpB,EAACqB,GAAQC,aAAW,EAACC,MAAOnB,EAAOoB,MAAKtB,SACtCF,EAACyB,EAAM,IACDX,EACJD,QAAUa,IACRT,EAAYS,GACZb,IAAUa,IACXxB,SAEAS,MAGLX,EAAC2B,EAAO,CAACX,KAAMA,EAAMD,SAAUA,EAAUa,QAASV,WAC/CN,MAIT,CACA,SAASJ,GAAeJ,OACtBA,IAIA,MAAQE,WAAYI,EAACC,KAAEA,KAASG,GAASV,EACzC,OACEJ,EAACqB,EAAO,CAACC,aAAW,EAACC,MAAOnB,EAAOoB,MAAKtB,SACtCF,EAACyB,EAAM,IAAKX,WAAOH,KAGzB"}
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"}
@@ -7,6 +7,7 @@ export interface ConfirmationFormProps extends ComponentProps<"form"> {
7
7
  confirmText?: string;
8
8
  cancelText?: string;
9
9
  disabled?: boolean;
10
+ size?: "sm" | "md" | "lg";
10
11
  slotProps?: {
11
12
  confirmButton?: ButtonProps;
12
13
  cancelButton?: ButtonProps;
@@ -1,2 +1,2 @@
1
- import{jsxs as t,jsx as n}from"react/jsx-runtime";import o from"./ConfirmationForm.module.css.js";import{cn as r}from"@studiocubics/utils";import{Button as i}from"../../Inputs/Button/Button.js";function e(e){const{onCancel:a,formTitle:c,variant:s="info",confirmText:d="Confirm",cancelText:l="Cancel",disabled:m,slotProps:u={},className:f,children:p,...b}=e;return t("form",{"aria-disabled":m,className:r(o.root,f,o[s]),...b,children:[n("h4",{children:c}),p,t("div",{className:o.actions,children:[n(i,{variant:"danger"==s?"contained":"text",disabled:m,type:"button",onClick:()=>a?.(),...u.cancelButton,children:l}),n(i,{disabled:m,variant:"danger"==s?"text":"contained",color:"danger"==s?"error":void 0,type:"submit",...u.confirmButton,children:d})]})]})}export{e as ConfirmationForm};
1
+ import{jsxs as t,jsx as i}from"react/jsx-runtime";import n from"./ConfirmationForm.module.css.js";import{cn as o}from"@studiocubics/utils";import{Button as e}from"../../Inputs/Button/Button.js";function r(r){const{onCancel:a,formTitle:c,variant:s="info",confirmText:l="Confirm",cancelText:d="Cancel",disabled:m,size:u="lg",slotProps:f={},className:p,children:b,...h}=r;return t("form",{"aria-disabled":m,className:o(n.root,p,n[`size_${u}`],n[s]),...h,children:[i("h4",{children:c}),b,t("div",{className:n.actions,children:[i(e,{variant:"danger"==s?"contained":"text",disabled:m,type:"button",onClick:()=>a?.(),size:f.cancelButton?.size||u,...f.cancelButton,children:d}),i(e,{disabled:m,variant:"danger"==s?"text":"contained",color:"danger"==s?"error":void 0,type:"submit",size:f.confirmButton?.size||u,...f.confirmButton,children:l})]})]})}export{r as ConfirmationForm};
2
2
  //# sourceMappingURL=ConfirmationForm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ConfirmationForm.js","sources":["../../../src/Forms/ConfirmationForm/ConfirmationForm.tsx"],"sourcesContent":["import type { ComponentProps } from \"react\";\nimport styles from \"./ConfirmationForm.module.css\";\nimport { cn } from \"@studiocubics/utils\";\nimport { Button, type ButtonProps } from \"../../Inputs/Button/Button\";\nexport interface ConfirmationFormProps extends ComponentProps<\"form\"> {\n formTitle?: string;\n onCancel?: () => void;\n variant?: \"danger\" | \"info\";\n confirmText?: string;\n cancelText?: string;\n disabled?: boolean;\n slotProps?: {\n confirmButton?: ButtonProps;\n cancelButton?: ButtonProps;\n };\n}\nexport function ConfirmationForm(props: ConfirmationFormProps) {\n const {\n onCancel,\n formTitle,\n variant = \"info\",\n confirmText = \"Confirm\",\n cancelText = \"Cancel\",\n disabled,\n slotProps = {},\n className,\n children,\n ...rest\n } = props;\n return (\n <form\n aria-disabled={disabled}\n className={cn(styles.root, className, styles[variant])}\n {...rest}\n >\n <h4>{formTitle}</h4>\n {children}\n <div className={styles.actions}>\n <Button\n variant={variant == \"danger\" ? \"contained\" : \"text\"}\n disabled={disabled}\n type=\"button\"\n onClick={() => onCancel?.()}\n {...slotProps.cancelButton}\n >\n {cancelText}\n </Button>\n <Button\n disabled={disabled}\n variant={variant == \"danger\" ? \"text\" : \"contained\"}\n color={variant == \"danger\" ? \"error\" : undefined}\n type=\"submit\"\n {...slotProps.confirmButton}\n >\n {confirmText}\n </Button>\n </div>\n </form>\n );\n}\n"],"names":["ConfirmationForm","props","onCancel","formTitle","variant","confirmText","cancelText","disabled","slotProps","className","children","rest","_jsxs","cn","styles","root","_jsx","actions","Button","type","onClick","cancelButton","color","undefined","confirmButton"],"mappings":"kMAgBM,SAAUA,EAAiBC,GAC/B,MAAMC,SACJA,EAAQC,UACRA,EAASC,QACTA,EAAU,OAAMC,YAChBA,EAAc,UAASC,WACvBA,EAAa,SAAQC,SACrBA,EAAQC,UACRA,EAAY,GAAEC,UACdA,EAASC,SACTA,KACGC,GACDV,EACJ,OACEW,EAAA,OAAA,CAAA,gBACiBL,EACfE,UAAWI,EAAGC,EAAOC,KAAMN,EAAWK,EAAOV,OACzCO,EAAID,SAAA,CAERM,EAAA,KAAA,CAAAN,SAAKP,IACJO,EACDE,EAAA,MAAA,CAAKH,UAAWK,EAAOG,QAAOP,SAAA,CAC5BM,EAACE,EAAM,CACLd,QAAoB,UAAXA,EAAsB,YAAc,OAC7CG,SAAUA,EACVY,KAAK,SACLC,QAAS,IAAMlB,SACXM,EAAUa,aAAYX,SAEzBJ,IAEHU,EAACE,EAAM,CACLX,SAAUA,EACVH,QAAoB,UAAXA,EAAsB,OAAS,YACxCkB,MAAkB,UAAXlB,EAAsB,aAAUmB,EACvCJ,KAAK,YACDX,EAAUgB,cAAad,SAE1BL,SAKX"}
1
+ {"version":3,"file":"ConfirmationForm.js","sources":["../../../src/Forms/ConfirmationForm/ConfirmationForm.tsx"],"sourcesContent":["import type { ComponentProps } from \"react\";\nimport styles from \"./ConfirmationForm.module.css\";\nimport { cn } from \"@studiocubics/utils\";\nimport { Button, type ButtonProps } from \"../../Inputs/Button/Button\";\nexport interface ConfirmationFormProps extends ComponentProps<\"form\"> {\n formTitle?: string;\n onCancel?: () => void;\n variant?: \"danger\" | \"info\";\n confirmText?: string;\n cancelText?: string;\n disabled?: boolean;\n size?: \"sm\" | \"md\" | \"lg\";\n slotProps?: {\n confirmButton?: ButtonProps;\n cancelButton?: ButtonProps;\n };\n}\nexport function ConfirmationForm(props: ConfirmationFormProps) {\n const {\n onCancel,\n formTitle,\n variant = \"info\",\n confirmText = \"Confirm\",\n cancelText = \"Cancel\",\n disabled,\n size = \"lg\",\n slotProps = {},\n className,\n children,\n ...rest\n } = props;\n return (\n <form\n aria-disabled={disabled}\n className={cn(\n styles.root,\n className,\n styles[`size_${size}`],\n styles[variant],\n )}\n {...rest}\n >\n <h4>{formTitle}</h4>\n {children}\n <div className={styles.actions}>\n <Button\n variant={variant == \"danger\" ? \"contained\" : \"text\"}\n disabled={disabled}\n type=\"button\"\n onClick={() => onCancel?.()}\n size={slotProps.cancelButton?.size || size}\n {...slotProps.cancelButton}\n >\n {cancelText}\n </Button>\n <Button\n disabled={disabled}\n variant={variant == \"danger\" ? \"text\" : \"contained\"}\n color={variant == \"danger\" ? \"error\" : undefined}\n type=\"submit\"\n size={slotProps.confirmButton?.size || size}\n {...slotProps.confirmButton}\n >\n {confirmText}\n </Button>\n </div>\n </form>\n );\n}\n"],"names":["ConfirmationForm","props","onCancel","formTitle","variant","confirmText","cancelText","disabled","size","slotProps","className","children","rest","_jsxs","cn","styles","root","_jsx","actions","Button","type","onClick","cancelButton","color","undefined","confirmButton"],"mappings":"kMAiBM,SAAUA,EAAiBC,GAC/B,MAAMC,SACJA,EAAQC,UACRA,EAASC,QACTA,EAAU,OAAMC,YAChBA,EAAc,UAASC,WACvBA,EAAa,SAAQC,SACrBA,EAAQC,KACRA,EAAO,KAAIC,UACXA,EAAY,CAAA,EAAEC,UACdA,EAASC,SACTA,KACGC,GACDX,EACJ,OACEY,EAAA,OAAA,CAAA,gBACiBN,EACfG,UAAWI,EACTC,EAAOC,KACPN,EACAK,EAAO,QAAQP,KACfO,EAAOX,OAELQ,YAEJK,EAAA,KAAA,CAAAN,SAAKR,IACJQ,EACDE,EAAA,MAAA,CAAKH,UAAWK,EAAOG,QAAOP,SAAA,CAC5BM,EAACE,EAAM,CACLf,QAAoB,UAAXA,EAAsB,YAAc,OAC7CG,SAAUA,EACVa,KAAK,SACLC,QAAS,IAAMnB,MACfM,KAAMC,EAAUa,cAAcd,MAAQA,KAClCC,EAAUa,aAAYX,SAEzBL,IAEHW,EAACE,EAAM,CACLZ,SAAUA,EACVH,QAAoB,UAAXA,EAAsB,OAAS,YACxCmB,MAAkB,UAAXnB,EAAsB,aAAUoB,EACvCJ,KAAK,SACLZ,KAAMC,EAAUgB,eAAejB,MAAQA,KACnCC,EAAUgB,uBAEbpB,SAKX"}
@@ -1,2 +1,2 @@
1
- var o={root:"ConfirmationForm-module_root__ltcoI",danger:"ConfirmationForm-module_danger__C1MyS",actions:"ConfirmationForm-module_actions__TSHEJ"};export{o as default};
1
+ var o={root:"ConfirmationForm-module_root__ltcoI",danger:"ConfirmationForm-module_danger__C1MyS",actions:"ConfirmationForm-module_actions__TSHEJ",size_sm:"ConfirmationForm-module_size_sm__0xJZd",size_md:"ConfirmationForm-module_size_md__ABTKZ",size_lg:"ConfirmationForm-module_size_lg__uqxZX"};export{o as default};
2
2
  //# sourceMappingURL=ConfirmationForm.module.css.js.map
@@ -0,0 +1,4 @@
1
+ import type { ComponentProps } from "react";
2
+ import { type ButtonProps } from "../Button/Button";
3
+ export declare function CloseIcon(props: ComponentProps<"svg">): import("react/jsx-runtime").JSX.Element;
4
+ export declare function CloseButton(props: Omit<ButtonProps, "children">): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,2 @@
1
+ import{jsxs as t,jsx as o}from"react/jsx-runtime";import{Button as r}from"../Button/Button.js";import{cn as e}from"@studiocubics/utils";import n from"./CloseButton.module.css.js";function s(r){const{width:e=24,height:n=e,...s}=r;return t("svg",{fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",...s,xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",width:e,height:n,children:[o("path",{d:"M18 6 6 18"}),o("path",{d:"m6 6 12 12"})]})}function i(t){const{className:i,...u}=t;return o(r,{square:!0,className:e(n.root,i),...u,children:o(s,{})})}export{i as CloseButton,s as CloseIcon};
2
+ //# sourceMappingURL=CloseButton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CloseButton.js","sources":["../../../src/Inputs/CloseButton/CloseButton.tsx"],"sourcesContent":["import type { ComponentProps } from \"react\";\nimport { Button, type ButtonProps } from \"../Button/Button\";\nimport { cn } from \"@studiocubics/utils\";\nimport styles from \"./CloseButton.module.css\";\n\nexport function CloseIcon(props: ComponentProps<\"svg\">) {\n const { width = 24, height = width, ...rest } = props;\n return (\n <svg\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n {...rest}\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n width={width}\n height={height}\n >\n <path d=\"M18 6 6 18\" />\n <path d=\"m6 6 12 12\" />\n </svg>\n );\n}\n\nexport function CloseButton(props: Omit<ButtonProps, \"children\">) {\n const { className, ...rest } = props;\n return (\n <Button square className={cn(styles.root, className)} {...rest}>\n <CloseIcon />\n </Button>\n );\n}\n"],"names":["CloseIcon","props","width","height","rest","_jsxs","fill","stroke","xmlns","viewBox","children","_jsx","d","CloseButton","className","Button","square","cn","styles","root"],"mappings":"mLAKM,SAAUA,EAAUC,GACxB,MAAMC,MAAEA,EAAQ,GAAEC,OAAEA,EAASD,KAAUE,GAASH,EAChD,OACEI,SACEC,KAAK,OACLC,OAAO,eAAc,eACR,IAAG,iBACD,0BACC,WACZH,EACJI,MAAM,6BACNC,QAAQ,YACRP,MAAOA,EACPC,OAAQA,EAAMO,SAAA,CAEdC,EAAA,OAAA,CAAMC,EAAE,eACRD,EAAA,OAAA,CAAMC,EAAE,iBAGd,CAEM,SAAUC,EAAYZ,GAC1B,MAAMa,UAAEA,KAAcV,GAASH,EAC/B,OACEU,EAACI,EAAM,CAACC,UAAOF,UAAWG,EAAGC,EAAOC,KAAML,MAAgBV,EAAIM,SAC5DC,EAACX,EAAS,CAAA,IAGhB"}
@@ -0,0 +1,2 @@
1
+ var o={root:"CloseButton-module_root__k-sSS"};export{o as default};
2
+ //# sourceMappingURL=CloseButton.module.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CloseButton.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,19 @@
1
+ import { type ComponentProps } from "react";
2
+ import { type ButtonProps } from "../Button/Button";
3
+ import { type TextInputProps } from "../TextInput/TextInput";
4
+ export interface SearchInputProps extends Omit<TextInputProps, "slotProps"> {
5
+ variant?: "collapsible" | "default";
6
+ slotProps?: TextInputProps["slotProps"] & {
7
+ searchInputRoot?: ComponentProps<"div">;
8
+ searchCollapseToggle?: ButtonProps;
9
+ searchButton?: ButtonProps;
10
+ clearButton?: ButtonProps;
11
+ };
12
+ onSearch?: (query: string) => void;
13
+ onClear?: () => void;
14
+ }
15
+ export declare function SearchOpenIcon(props: ComponentProps<"svg">): import("react/jsx-runtime").JSX.Element;
16
+ export declare function SearchIcon(props: ComponentProps<"svg">): import("react/jsx-runtime").JSX.Element;
17
+ export declare function SearchCloseIcon(props: ComponentProps<"svg">): import("react/jsx-runtime").JSX.Element;
18
+ export declare function ClearIcon(props: ComponentProps<"svg">): import("react/jsx-runtime").JSX.Element;
19
+ export declare function SearchInput(props: SearchInputProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,2 @@
1
+ "use client";import{jsxs as e,jsx as t}from"react/jsx-runtime";import{cn as r,mergeRefs as o}from"@studiocubics/utils";import{useState as n,useRef as s}from"react";import i from"./SearchInput.module.css.js";import{Button as l}from"../Button/Button.js";import{TextInput as a}from"../TextInput/TextInput.js";function c(r){const{width:o=24,height:n=o,...s}=r;return e("svg",{fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",...s,xmlns:"http://www.w3.org/2000/svg",width:o,height:n,viewBox:"0 0 24 24",children:[t("path",{d:"m21 21-4.3-4.3"}),t("path",{d:"M9 8.5 7 11l2 2.5"}),t("circle",{cx:"11",cy:"11",r:"8"})]})}function u(r){const{width:o=24,height:n=o,...s}=r;return e("svg",{fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",...s,xmlns:"http://www.w3.org/2000/svg",width:o,height:n,viewBox:"0 0 24 24",children:[t("path",{d:"m21 21-4.3-4.3"}),t("circle",{cx:"11",cy:"11",r:"8"})]})}function h(r){const{width:o=24,height:n=o,...s}=r;return e("svg",{fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",...s,xmlns:"http://www.w3.org/2000/svg",width:o,height:n,viewBox:"0 0 24 24",children:[t("path",{d:"m13 13.5 2-2.5-2-2.5"}),t("path",{d:"m21 21-4.3-4.3"}),t("circle",{cx:"11",cy:"11",r:"8"})]})}function d(r){const{width:o=24,height:n=o,...s}=r;return e("svg",{fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",...s,xmlns:"http://www.w3.org/2000/svg",width:o,height:n,viewBox:"0 0 24 24",children:[t("path",{d:"M18 6 6 18"}),t("path",{d:"m6 6 12 12"})]})}function p(p){const{ref:m,className:g,size:w="sm",variant:k="default",disabled:B,disableEndIconGutters:b,disableStartIconGutters:v,disableInputGutters:f,slotProps:C={},value:x,onChange:I,onSearch:N,onClear:j,...y}=p,[z,L]=n("collapsible"==k),[W,S]=n(""),T=s(null),G=void 0!==x,E=G?x:W;return e("div",{...C.searchInputRoot,className:r(i.root,z?i.collapsed:"",C.searchInputRoot?.className),children:[String(E).trim()?t(l,{...C.clearButton,size:C.clearButton?.size||w,className:r(i.clearButton,C.clearButton?.className),disabled:C.clearButton?.disabled||z,onClick:e=>{G||S(""),C.clearButton?.onClick?.(e),j?.()},type:C.clearButton?.type||"button",children:C.clearButton?.children??t(d,{})}):t(l,{...C.searchCollapseToggle,size:C.searchCollapseToggle?.size||w,onClick:e=>{C.searchCollapseToggle?.onClick?.(e),L(!z)},disabled:C.searchCollapseToggle?.disabled||"collapsible"!=k,type:C.searchCollapseToggle?.type||"button",children:t("collapsible"==k?z?c:h:u,{})}),t(a,{type:"search",ref:o(T,m),className:r(i.input,g),size:w,disableStartIconGutters:v||z,disableEndIconGutters:b||z,disableInputGutters:f||z,disabled:B||z,value:E,onChange:e=>{G||S(e.target.value),I?.(e)},slotProps:{...C,inputWrapper:{...C.inputWrapper,className:r(C.inputWrapper?.className,z?i.inputWrapper:"")}},...y}),t(l,{...C.searchButton,size:C.searchButton?.size||w,className:r(i.searchButton,C.searchButton?.className),disabled:C.searchButton?.disabled||z||!String(E).trim(),onClick:e=>{C.searchButton?.onClick?.(e),T.current?.value&&N?.(T.current?.value)},children:C.searchButton?.children??"Search"})]})}export{d as ClearIcon,h as SearchCloseIcon,u as SearchIcon,p as SearchInput,c as SearchOpenIcon};
2
+ //# sourceMappingURL=SearchInput.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SearchInput.js","sources":["../../../src/Inputs/SearchInput/SearchInput.tsx"],"sourcesContent":["\"use client\";\n\nimport { cn, mergeRefs } from \"@studiocubics/utils\";\nimport { useRef, useState, type ComponentProps } from \"react\";\nimport styles from \"./SearchInput.module.css\";\nimport { type ButtonProps, Button } from \"../Button/Button\";\nimport { type TextInputProps, TextInput } from \"../TextInput/TextInput\";\n\nexport interface SearchInputProps extends Omit<TextInputProps, \"slotProps\"> {\n variant?: \"collapsible\" | \"default\";\n slotProps?: TextInputProps[\"slotProps\"] & {\n searchInputRoot?: ComponentProps<\"div\">;\n searchCollapseToggle?: ButtonProps;\n searchButton?: ButtonProps;\n clearButton?: ButtonProps;\n };\n onSearch?: (query: string) => void;\n onClear?: () => void;\n // inputVariant:TextInputProps[\"variant\"]\n}\n\nexport function SearchOpenIcon(props: ComponentProps<\"svg\">) {\n const { width = 24, height = width, ...rest } = props;\n return (\n <svg\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n {...rest}\n xmlns=\"http://www.w3.org/2000/svg\"\n width={width}\n height={height}\n viewBox=\"0 0 24 24\"\n >\n {/* <path d=\"m13 13.5 2-2.5-2-2.5\" /> */}\n <path d=\"m21 21-4.3-4.3\" />\n <path d=\"M9 8.5 7 11l2 2.5\" />\n <circle cx=\"11\" cy=\"11\" r=\"8\" />\n </svg>\n );\n}\nexport function SearchIcon(props: ComponentProps<\"svg\">) {\n const { width = 24, height = width, ...rest } = props;\n return (\n <svg\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n {...rest}\n xmlns=\"http://www.w3.org/2000/svg\"\n width={width}\n height={height}\n viewBox=\"0 0 24 24\"\n >\n {/* <path d=\"m13 13.5 2-2.5-2-2.5\" /> */}\n <path d=\"m21 21-4.3-4.3\" />\n {/* <path d=\"M9 8.5 7 11l2 2.5\" /> */}\n <circle cx=\"11\" cy=\"11\" r=\"8\" />\n </svg>\n );\n}\nexport function SearchCloseIcon(props: ComponentProps<\"svg\">) {\n const { width = 24, height = width, ...rest } = props;\n return (\n <svg\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n {...rest}\n xmlns=\"http://www.w3.org/2000/svg\"\n width={width}\n height={height}\n viewBox=\"0 0 24 24\"\n >\n <path d=\"m13 13.5 2-2.5-2-2.5\" />\n <path d=\"m21 21-4.3-4.3\" />\n {/* <path d=\"M9 8.5 7 11l2 2.5\" /> */}\n <circle cx=\"11\" cy=\"11\" r=\"8\" />\n </svg>\n );\n}\nexport function ClearIcon(props: ComponentProps<\"svg\">) {\n const { width = 24, height = width, ...rest } = props;\n return (\n <svg\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n {...rest}\n xmlns=\"http://www.w3.org/2000/svg\"\n width={width}\n height={height}\n viewBox=\"0 0 24 24\"\n >\n <path d=\"M18 6 6 18\" />\n <path d=\"m6 6 12 12\" />\n </svg>\n );\n}\n\nexport function SearchInput(props: SearchInputProps) {\n const {\n ref,\n className,\n size = \"sm\",\n variant = \"default\",\n disabled,\n disableEndIconGutters,\n disableStartIconGutters,\n disableInputGutters,\n slotProps = {},\n value,\n onChange,\n onSearch,\n onClear,\n ...rest\n } = props;\n\n const [collapsed, setCollapsed] = useState(variant == \"collapsible\");\n const [internalValue, setInternalValue] = useState(\"\");\n const inputRef = useRef<HTMLInputElement>(null);\n\n // Use controlled value if provided, otherwise use internal state\n const isControlled = value !== undefined;\n const currentValue = isControlled ? value : internalValue;\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (!isControlled) {\n setInternalValue(e.target.value);\n }\n onChange?.(e);\n };\n\n const handleClear = (e: React.MouseEvent<HTMLButtonElement>) => {\n if (!isControlled) {\n setInternalValue(\"\");\n }\n slotProps.clearButton?.onClick?.(e);\n onClear?.();\n };\n\n return (\n <div\n {...slotProps.searchInputRoot}\n className={cn(\n styles.root,\n collapsed ? styles.collapsed : \"\",\n slotProps.searchInputRoot?.className,\n )}\n >\n {String(currentValue).trim() ? (\n <Button\n {...slotProps.clearButton}\n size={slotProps.clearButton?.size || size}\n className={cn(styles.clearButton, slotProps.clearButton?.className)}\n disabled={slotProps.clearButton?.disabled || collapsed}\n onClick={handleClear}\n type={slotProps.clearButton?.type || \"button\"}\n >\n {slotProps.clearButton?.children ?? <ClearIcon />}\n </Button>\n ) : (\n <Button\n {...slotProps.searchCollapseToggle}\n size={slotProps.searchCollapseToggle?.size || size}\n onClick={(e) => {\n slotProps.searchCollapseToggle?.onClick?.(e);\n setCollapsed(!collapsed);\n }}\n disabled={\n slotProps.searchCollapseToggle?.disabled || variant != \"collapsible\"\n }\n type={slotProps.searchCollapseToggle?.type || \"button\"}\n >\n {variant == \"collapsible\" ? (\n collapsed ? (\n <SearchOpenIcon />\n ) : (\n <SearchCloseIcon />\n )\n ) : (\n <SearchIcon />\n )}\n </Button>\n )}\n <TextInput\n type=\"search\"\n ref={mergeRefs(inputRef, ref)}\n className={cn(styles.input, className)}\n size={size}\n disableStartIconGutters={disableStartIconGutters || collapsed}\n disableEndIconGutters={disableEndIconGutters || collapsed}\n disableInputGutters={disableInputGutters || collapsed}\n disabled={disabled || collapsed}\n value={currentValue}\n onChange={handleChange}\n slotProps={{\n ...slotProps,\n inputWrapper: {\n ...slotProps.inputWrapper,\n className: cn(\n slotProps.inputWrapper?.className,\n collapsed ? styles.inputWrapper : \"\",\n ),\n },\n }}\n {...rest}\n />\n\n <Button\n {...slotProps.searchButton}\n size={slotProps.searchButton?.size || size}\n className={cn(styles.searchButton, slotProps.searchButton?.className)}\n disabled={\n slotProps.searchButton?.disabled ||\n collapsed ||\n !String(currentValue).trim()\n }\n onClick={(e) => {\n slotProps.searchButton?.onClick?.(e);\n if (inputRef.current?.value) onSearch?.(inputRef.current?.value);\n }}\n >\n {slotProps.searchButton?.children ?? \"Search\"}\n </Button>\n </div>\n );\n}\n"],"names":["SearchOpenIcon","props","width","height","rest","_jsxs","fill","stroke","strokeWidth","strokeLinecap","strokeLinejoin","xmlns","viewBox","_jsx","d","cx","cy","r","SearchIcon","children","SearchCloseIcon","ClearIcon","SearchInput","ref","className","size","variant","disabled","disableEndIconGutters","disableStartIconGutters","disableInputGutters","slotProps","value","onChange","onSearch","onClear","collapsed","setCollapsed","useState","internalValue","setInternalValue","inputRef","useRef","isControlled","undefined","currentValue","searchInputRoot","cn","styles","root","String","trim","Button","clearButton","onClick","e","type","searchCollapseToggle","TextInput","mergeRefs","input","target","inputWrapper","searchButton","current"],"mappings":"kTAqBM,SAAUA,EAAeC,GAC7B,MAAMC,MAAEA,EAAQ,GAAEC,OAAEA,EAASD,KAAUE,GAASH,EAChD,OACEI,EAAA,MAAA,CACEC,KAAK,OACLC,OAAO,eACPC,YAAY,IACZC,cAAc,QACdC,eAAe,WACXN,EACJO,MAAM,6BACNT,MAAOA,EACPC,OAAQA,EACRS,QAAQ,sBAGRC,EAAA,OAAA,CAAMC,EAAE,mBACRD,EAAA,OAAA,CAAMC,EAAE,sBACRD,EAAA,SAAA,CAAQE,GAAG,KAAKC,GAAG,KAAKC,EAAE,QAGhC,CACM,SAAUC,EAAWjB,GACzB,MAAMC,MAAEA,EAAQ,GAAEC,OAAEA,EAASD,KAAUE,GAASH,EAChD,OACEI,EAAA,MAAA,CACEC,KAAK,OACLC,OAAO,eACPC,YAAY,IACZC,cAAc,QACdC,eAAe,WACXN,EACJO,MAAM,6BACNT,MAAOA,EACPC,OAAQA,EACRS,QAAQ,YAAWO,SAAA,CAGnBN,EAAA,OAAA,CAAMC,EAAE,mBAERD,EAAA,SAAA,CAAQE,GAAG,KAAKC,GAAG,KAAKC,EAAE,QAGhC,CACM,SAAUG,EAAgBnB,GAC9B,MAAMC,MAAEA,EAAQ,GAAEC,OAAEA,EAASD,KAAUE,GAASH,EAChD,OACEI,EAAA,MAAA,CACEC,KAAK,OACLC,OAAO,eACPC,YAAY,IACZC,cAAc,QACdC,eAAe,WACXN,EACJO,MAAM,6BACNT,MAAOA,EACPC,OAAQA,EACRS,QAAQ,sBAERC,EAAA,OAAA,CAAMC,EAAE,yBACRD,EAAA,OAAA,CAAMC,EAAE,mBAERD,EAAA,SAAA,CAAQE,GAAG,KAAKC,GAAG,KAAKC,EAAE,QAGhC,CACM,SAAUI,EAAUpB,GACxB,MAAMC,MAAEA,EAAQ,GAAEC,OAAEA,EAASD,KAAUE,GAASH,EAChD,OACEI,EAAA,MAAA,CACEC,KAAK,OACLC,OAAO,eACPC,YAAY,IACZC,cAAc,QACdC,eAAe,WACXN,EACJO,MAAM,6BACNT,MAAOA,EACPC,OAAQA,EACRS,QAAQ,YAAWO,SAAA,CAEnBN,UAAMC,EAAE,eACRD,EAAA,OAAA,CAAMC,EAAE,iBAGd,CAEM,SAAUQ,EAAYrB,GAC1B,MAAMsB,IACJA,EAAGC,UACHA,EAASC,KACTA,EAAO,KAAIC,QACXA,EAAU,UAASC,SACnBA,EAAQC,sBACRA,EAAqBC,wBACrBA,EAAuBC,oBACvBA,EAAmBC,UACnBA,EAAY,CAAA,EAAEC,MACdA,EAAKC,SACLA,EAAQC,SACRA,EAAQC,QACRA,KACG/B,GACDH,GAEGmC,EAAWC,GAAgBC,EAAoB,eAAXZ,IACpCa,EAAeC,GAAoBF,EAAS,IAC7CG,EAAWC,EAAyB,MAGpCC,OAAyBC,IAAVZ,EACfa,EAAeF,EAAeX,EAAQO,EAiB5C,OACElC,EAAA,MAAA,IACM0B,EAAUe,gBACdtB,UAAWuB,EACTC,EAAOC,KACPb,EAAYY,EAAOZ,UAAY,GAC/BL,EAAUe,iBAAiBtB,WAC5BL,SAAA,CAEA+B,OAAOL,GAAcM,OACpBtC,EAACuC,EAAM,IACDrB,EAAUsB,YACd5B,KAAMM,EAAUsB,aAAa5B,MAAQA,EACrCD,UAAWuB,EAAGC,EAAOK,YAAatB,EAAUsB,aAAa7B,WACzDG,SAAUI,EAAUsB,aAAa1B,UAAYS,EAC7CkB,QAvBaC,IACdZ,GACHH,EAAiB,IAEnBT,EAAUsB,aAAaC,UAAUC,GACjCpB,OAmBMqB,KAAMzB,EAAUsB,aAAaG,MAAQ,SAAQrC,SAE5CY,EAAUsB,aAAalC,UAAYN,EAACQ,EAAS,CAAA,KAGhDR,EAACuC,EAAM,IACDrB,EAAU0B,qBACdhC,KAAMM,EAAU0B,sBAAsBhC,MAAQA,EAC9C6B,QAAUC,IACRxB,EAAU0B,sBAAsBH,UAAUC,GAC1ClB,GAAcD,IAEhBT,SACEI,EAAU0B,sBAAsB9B,UAAuB,eAAXD,EAE9C8B,KAAMzB,EAAU0B,sBAAsBD,MAAQ,SAAQrC,SAIlDN,EAFQ,eAAXa,EACCU,EACGpC,EAEAoB,EAGFF,EALgB,CAAA,KASvBL,EAAC6C,EAAS,CACRF,KAAK,SACLjC,IAAKoC,EAAUlB,EAAUlB,GACzBC,UAAWuB,EAAGC,EAAOY,MAAOpC,GAC5BC,KAAMA,EACNI,wBAAyBA,GAA2BO,EACpDR,sBAAuBA,GAAyBQ,EAChDN,oBAAqBA,GAAuBM,EAC5CT,SAAUA,GAAYS,EACtBJ,MAAOa,EACPZ,SArEgBsB,IACfZ,GACHH,EAAiBe,EAAEM,OAAO7B,OAE5BC,IAAWsB,IAkEPxB,UAAW,IACNA,EACH+B,aAAc,IACT/B,EAAU+B,aACbtC,UAAWuB,EACThB,EAAU+B,cAActC,UACxBY,EAAYY,EAAOc,aAAe,SAIpC1D,IAGNS,EAACuC,EAAM,IACDrB,EAAUgC,aACdtC,KAAMM,EAAUgC,cAActC,MAAQA,EACtCD,UAAWuB,EAAGC,EAAOe,aAAchC,EAAUgC,cAAcvC,WAC3DG,SACEI,EAAUgC,cAAcpC,UACxBS,IACCc,OAAOL,GAAcM,OAExBG,QAAUC,IACRxB,EAAUgC,cAAcT,UAAUC,GAC9Bd,EAASuB,SAAShC,OAAOE,IAAWO,EAASuB,SAAShC,QAC3Db,SAEAY,EAAUgC,cAAc5C,UAAY,aAI7C"}
@@ -0,0 +1,2 @@
1
+ var e={root:"SearchInput-module_root__OXR0e",collapsed:"SearchInput-module_collapsed__FpQ7U",input:"SearchInput-module_input__3iIbF",searchButton:"SearchInput-module_searchButton__3-1PX",inputWrapper:"SearchInput-module_inputWrapper__oFfGE"};export{e as default};
2
+ //# sourceMappingURL=SearchInput.module.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SearchInput.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -1,7 +1,7 @@
1
1
  import { type ComponentProps, type ReactNode } from "react";
2
2
  import { type UseRippleProps } from "../../Misc/Ripple/Ripple";
3
3
  import { type InputErrorsProps } from "../../Display/InputErrors/InputErrors";
4
- export interface SelectProps extends ComponentProps<"select"> {
4
+ export interface SelectProps extends Omit<ComponentProps<"select">, "size"> {
5
5
  startIcon?: ReactNode;
6
6
  endIcon?: ReactNode;
7
7
  label?: string;
@@ -9,6 +9,8 @@ export interface SelectProps extends ComponentProps<"select"> {
9
9
  fullWidth?: boolean;
10
10
  disableEndIconGutters?: boolean;
11
11
  disableStartIconGutters?: boolean;
12
+ size?: "sm" | "md" | "lg";
13
+ htmlSize?: ComponentProps<"select">["size"];
12
14
  slotProps?: {
13
15
  ripple?: UseRippleProps;
14
16
  startIcon?: ComponentProps<"span">;
@@ -1,2 +1,2 @@
1
- "use client";import{jsxs as r,jsx as e}from"react/jsx-runtime";import{cn as s}from"@studiocubics/utils";import{useState as o,useEffect as t}from"react";import l from"./Select.module.css.js";import{useRipple as a,eventWithRipple as i}from"../../Misc/Ripple/Ripple.js";import{InputErrors as n}from"../../Display/InputErrors/InputErrors.js";function c(c){const{startIcon:p,endIcon:m,label:d,error:u,fullWidth:N,disableEndIconGutters:h=!1,disableStartIconGutters:b=!1,onTouchStart:I,onClick:f,onBlur:v,slotProps:W,className:j,...C}=c,E=W??{},{rippleElements:G,createRipple:S}=a(E.ripple),[x,R]=o(u&&!!u.length);return t(()=>{R(u&&!!u.length)},[u]),r("div",{...E.root,className:s(E.root?.className,l.root,N?l.fullWidth:void 0,x?l.errored:void 0),children:[d&&e("label",{...E.label,htmlFor:d,className:s(E.label?.className,l.label),children:d}),r("div",{...E.inputWrapper,className:s(E.inputWrapper?.className,l.inputWrapper),children:[p&&e("span",{...E.startIcon,className:s(l.iconContainer,E.startIcon?.className,b?l.disableGutters:void 0),children:p}),e("select",{className:s(j,l.input),onTouchStart:i(S,I),onClick:i(S,f),onBlur:r=>{R(!1),v?.(r)},id:d,...C}),m&&e("span",{...E.endIcon,className:s(l.iconContainer,E.endIcon?.className,h?l.disableGutters:void 0),children:m}),G]}),x&&e(n,{...E.error,className:s(E.error?.className,l.errorText),error:u})]})}export{c as Select};
1
+ "use client";import{jsxs as e,jsx as r}from"react/jsx-runtime";import{cn as s}from"@studiocubics/utils";import{useState as t,useEffect as l}from"react";import o from"./Select.module.css.js";import{useRipple as a,eventWithRipple as i}from"../../Misc/Ripple/Ripple.js";import{InputErrors as n}from"../../Display/InputErrors/InputErrors.js";function c(c){const{startIcon:p,endIcon:m,label:d,error:u,fullWidth:N,disableEndIconGutters:h=!1,disableStartIconGutters:b=!1,size:I="md",htmlSize:f,onTouchStart:v,onClick:S,onBlur:W,slotProps:j,className:z,...C}=c,E=j??{},{rippleElements:G,createRipple:x}=a(E.ripple),[R,T]=t(u&&!!u.length);return l(()=>{T(u&&!!u.length)},[u]),e("div",{...E.root,className:s(E.root?.className,o.root,o[`size_${I}`],N?o.fullWidth:void 0,R?o.errored:void 0),children:[d&&r("label",{...E.label,htmlFor:d,className:s(E.label?.className,o.label),children:d}),e("div",{...E.inputWrapper,className:s(E.inputWrapper?.className,o.inputWrapper),children:[p&&r("span",{...E.startIcon,className:s(o.iconContainer,E.startIcon?.className,b?o.disableGutters:void 0),children:p}),r("select",{className:s(z,o.input),onTouchStart:i(x,v),onClick:i(x,S),onBlur:e=>{T(!1),W?.(e)},id:d,size:f,...C}),m&&r("span",{...E.endIcon,className:s(o.iconContainer,E.endIcon?.className,h?o.disableGutters:void 0),children:m}),G]}),R&&r(n,{...E.error,className:s(E.error?.className,o.errorText),error:u})]})}export{c as Select};
2
2
  //# sourceMappingURL=Select.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Select.js","sources":["../../../src/Inputs/Select/Select.tsx"],"sourcesContent":["\"use client\";\n\nimport { cn } 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 ComponentProps<\"select\"> {\n startIcon?: ReactNode;\n endIcon?: ReactNode;\n label?: string;\n error?: string | string[];\n fullWidth?: 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 };\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 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\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={label}\n className={cn(slotProps.label?.className, styles.label)}\n >\n {label}\n </label>\n )}\n <div\n {...slotProps.inputWrapper}\n className={cn(slotProps.inputWrapper?.className, styles.inputWrapper)}\n >\n {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={label}\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","onTouchStart","onClick","onBlur","slotProps","_slotProps","className","inputClass","inputProps","rippleElements","createRipple","useRipple","ripple","isErrored","setIsErrored","useState","length","useEffect","_jsxs","root","cn","styles","undefined","errored","_jsx","htmlFor","children","inputWrapper","iconContainer","disableGutters","input","eventWithRipple","e","id","InputErrors","errorText"],"mappings":"kVAuCM,SAAUA,EAAOC,GACrB,MAAMC,UACJA,EAASC,QACTA,EAAOC,MACPA,EAAKC,MACLA,EAAKC,UACLA,EAASC,sBACTA,GAAwB,EAAKC,wBAC7BA,GAA0B,EAAKC,aAC/BA,EAAYC,QACZA,EAAOC,OACPA,EACAC,UAAWC,EACXC,UAAWC,KACRC,GACDf,EACEW,EAAmDC,GAAc,CAAA,GACjEI,eAAEA,EAAcC,aAAEA,GAAiBC,EACvCP,EAAUQ,SAELC,EAAWC,GAAgBC,EAASlB,KAAWA,EAAMmB,QAM5D,OAJAC,EAAU,KACRH,EAAajB,KAAWA,EAAMmB,SAC7B,CAACnB,IAGFqB,EAAA,MAAA,IACMd,EAAUe,KACdb,UAAWc,EACThB,EAAUe,MAAMb,UAChBe,EAAOF,KACPrB,EAAYuB,EAAOvB,eAAYwB,EAC/BT,EAAYQ,EAAOE,aAAUD,aAG9B1B,GACC4B,EAAA,QAAA,IACMpB,EAAUR,MACd6B,QAAS7B,EACTU,UAAWc,EAAGhB,EAAUR,OAAOU,UAAWe,EAAOzB,OAAM8B,SAEtD9B,IAGLsB,EAAA,MAAA,IACMd,EAAUuB,aACdrB,UAAWc,EAAGhB,EAAUuB,cAAcrB,UAAWe,EAAOM,cAAaD,SAAA,CAEpEhC,GACC8B,EAAA,OAAA,IACMpB,EAAUV,UACdY,UAAWc,EACTC,EAAOO,cACPxB,EAAUV,WAAWY,UACrBN,EAA0BqB,EAAOQ,oBAAiBP,GACnDI,SAEAhC,IAGL8B,EAAA,SAAA,CACElB,UAAWc,EAAGb,EAAYc,EAAOS,OACjC7B,aAAc8B,EAAgBrB,EAAcT,GAE5CC,QAAS6B,EAAgBrB,EAAcR,GACvCC,OAAS6B,IACPlB,GAAa,GACbX,IAAS6B,IAEXC,GAAIrC,KACAY,IAELb,GACC6B,EAAA,OAAA,IACMpB,EAAUT,QACdW,UAAWc,EACTC,EAAOO,cACPxB,EAAUT,SAASW,UACnBP,EAAwBsB,EAAOQ,oBAAiBP,GACjDI,SAEA/B,IAGJc,KAEFI,GACCW,EAACU,EAAW,IACN9B,EAAUP,MACdS,UAAWc,EAAGhB,EAAUP,OAAOS,UAAWe,EAAOc,WACjDtC,MAAOA,MAKjB"}
1
+ {"version":3,"file":"Select.js","sources":["../../../src/Inputs/Select/Select.tsx"],"sourcesContent":["\"use client\";\n\nimport { cn } 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\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={label}\n className={cn(slotProps.label?.className, styles.label)}\n >\n {label}\n </label>\n )}\n <div\n {...slotProps.inputWrapper}\n className={cn(slotProps.inputWrapper?.className, styles.inputWrapper)}\n >\n {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={label}\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","useEffect","_jsxs","root","cn","styles","undefined","errored","_jsx","htmlFor","children","inputWrapper","iconContainer","disableGutters","input","eventWithRipple","e","id","InputErrors","errorText"],"mappings":"kVAyCM,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,QAM5D,OAJAC,EAAU,KACRH,EAAanB,KAAWA,EAAMqB,SAC7B,CAACrB,IAGFuB,EAAA,MAAA,IACMd,EAAUe,KACdb,UAAWc,EACThB,EAAUe,MAAMb,UAChBe,EAAOF,KACPE,EAAO,QAAQtB,KACfH,EAAYyB,EAAOzB,eAAY0B,EAC/BT,EAAYQ,EAAOE,aAAUD,aAG9B5B,GACC8B,EAAA,QAAA,IACMpB,EAAUV,MACd+B,QAAS/B,EACTY,UAAWc,EAAGhB,EAAUV,OAAOY,UAAWe,EAAO3B,OAAMgC,SAEtDhC,IAGLwB,EAAA,MAAA,IACMd,EAAUuB,aACdrB,UAAWc,EAAGhB,EAAUuB,cAAcrB,UAAWe,EAAOM,wBAEvDnC,GACCgC,EAAA,OAAA,IACMpB,EAAUZ,UACdc,UAAWc,EACTC,EAAOO,cACPxB,EAAUZ,WAAWc,UACrBR,EAA0BuB,EAAOQ,oBAAiBP,GACnDI,SAEAlC,IAGLgC,EAAA,SAAA,CACElB,UAAWc,EAAGb,EAAYc,EAAOS,OACjC7B,aAAc8B,EAAgBrB,EAAcT,GAE5CC,QAAS6B,EAAgBrB,EAAcR,GACvCC,OAAS6B,IACPlB,GAAa,GACbX,IAAS6B,IAEXC,GAAIvC,EACJK,KAAMC,KACFQ,IAELf,GACC+B,EAAA,OAAA,IACMpB,EAAUX,QACda,UAAWc,EACTC,EAAOO,cACPxB,EAAUX,SAASa,UACnBT,EAAwBwB,EAAOQ,oBAAiBP,GACjDI,SAEAjC,IAGJgB,KAEFI,GACCW,EAACU,MACK9B,EAAUT,MACdW,UAAWc,EAAGhB,EAAUT,OAAOW,UAAWe,EAAOc,WACjDxC,MAAOA,MAKjB"}
@@ -1,2 +1,2 @@
1
- var e={root:"Select-module_root__dxgVk",fullWidth:"Select-module_fullWidth__Sm-ZO",inputWrapper:"Select-module_inputWrapper__WbY3I",input:"Select-module_input__RZaAp",label:"Select-module_label__AHkLr",iconContainer:"Select-module_iconContainer__Xlvlm",disableGutters:"Select-module_disableGutters__7Lu6I",errored:"Select-module_errored__IDw1f"};export{e as default};
1
+ var e={root:"Select-module_root__dxgVk",fullWidth:"Select-module_fullWidth__Sm-ZO",inputWrapper:"Select-module_inputWrapper__WbY3I",input:"Select-module_input__RZaAp",label:"Select-module_label__AHkLr",iconContainer:"Select-module_iconContainer__Xlvlm",disableGutters:"Select-module_disableGutters__7Lu6I",errored:"Select-module_errored__IDw1f",size_sm:"Select-module_size_sm__6tbtv",size_md:"Select-module_size_md__x3Qop",size_lg:"Select-module_size_lg__-iW76"};export{e as default};
2
2
  //# sourceMappingURL=Select.module.css.js.map
@@ -14,6 +14,7 @@ export interface TextInputProps extends Omit<ComponentProps<"input">, "size"> {
14
14
  inputSize?: ComponentProps<"input">["size"];
15
15
  disableEndIconGutters?: boolean;
16
16
  disableStartIconGutters?: boolean;
17
+ disableInputGutters?: boolean;
17
18
  slotProps?: {
18
19
  ripple?: UseRippleProps;
19
20
  startIcon?: ComponentProps<"span">;
@@ -1,2 +1,2 @@
1
- "use client";import{jsxs as r,jsx as e}from"react/jsx-runtime";import{cn as t}from"@studiocubics/utils";import{useState as s,useEffect as o}from"react";import{useRipple as l,eventWithRipple as a}from"../../Misc/Ripple/Ripple.js";import i from"./TextInput.module.css.js";import{InputErrors as n}from"../../Display/InputErrors/InputErrors.js";function c(c){const{startIcon:p,endIcon:m,label:d,error:u,fullWidth:N,disableEndIconGutters:h=!1,disableStartIconGutters:I=!1,size:b="md",inputSize:f,onTouchStart:v,onClick:x,onBlur:W,slotProps:j={},className:z,...C}=c,{rippleElements:E,createRipple:G}=l(j.ripple),[S,T]=s(u&&!!u.length);return o(()=>{T(u&&!!u.length)},[u]),r("div",{...j.root,className:t(j.root?.className,i.root,i[`size_${b}`],N?i.fullWidth:void 0,S?i.errored:void 0),children:[d&&e("label",{...j.label,htmlFor:c.id||d,className:t(j.label?.className,i.label),children:d}),r("div",{...j.inputWrapper,className:t(j.inputWrapper?.className,i.inputWrapper),children:[p&&e("span",{...j.startIcon,className:t(i.iconContainer,j.startIcon?.className,I?i.disableGutters:void 0),children:p}),e("input",{type:"text",className:t(z,i.input),onTouchStart:a(G,v),onClick:a(G,x),onBlur:r=>{T(!1),W?.(r)},size:f,id:d,...C}),m&&e("span",{...j.endIcon,className:t(i.iconContainer,j.endIcon?.className,h?i.disableGutters:void 0),children:m}),E]}),S&&e(n,{...j.error,className:t(j.error?.className,i.errorText),error:u})]})}export{c as TextInput};
1
+ "use client";import{jsxs as e,jsx as r}from"react/jsx-runtime";import{cn as t}from"@studiocubics/utils";import{useState as s,useEffect as o}from"react";import{useRipple as l,eventWithRipple as a}from"../../Misc/Ripple/Ripple.js";import i from"./TextInput.module.css.js";import{InputErrors as n}from"../../Display/InputErrors/InputErrors.js";function c(c){const{startIcon:p,endIcon:m,label:u,error:d,fullWidth:N,disableEndIconGutters:b=!1,disableStartIconGutters:h=!1,disableInputGutters:I,size:f="md",inputSize:v,onTouchStart:G,onClick:x,onBlur:W,slotProps:j={},className:z,...C}=c,{rippleElements:E,createRipple:S}=l(j.ripple),[T,R]=s(d&&!!d.length);return o(()=>{R(d&&!!d.length)},[d]),e("div",{...j.root,className:t(j.root?.className,i.root,i[`size_${f}`],N?i.fullWidth:void 0,T?i.errored:void 0),children:[u&&r("label",{...j.label,htmlFor:c.id||u,className:t(j.label?.className,i.label),children:u}),e("div",{...j.inputWrapper,className:t(j.inputWrapper?.className,i.inputWrapper),children:[p&&r("span",{...j.startIcon,className:t(i.iconContainer,j.startIcon?.className,h?i.disableGutters:void 0),children:p}),r("input",{type:"text",className:t(z,i.input,I?i.disableGutters:""),onTouchStart:a(S,G),onClick:a(S,x),onBlur:e=>{R(!1),W?.(e)},size:v,id:u,...C}),m&&r("span",{...j.endIcon,className:t(i.iconContainer,j.endIcon?.className,b?i.disableGutters:void 0),children:m}),E]}),T&&r(n,{...j.error,className:t(j.error?.className,i.errorText),error:d})]})}export{c as TextInput};
2
2
  //# sourceMappingURL=TextInput.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TextInput.js","sources":["../../../src/Inputs/TextInput/TextInput.tsx"],"sourcesContent":["\"use client\";\n\nimport { cn } 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 inputSize?: ComponentProps<\"input\">[\"size\"];\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 };\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 size = \"md\",\n inputSize,\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\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={props.id || label}\n className={cn(slotProps.label?.className, styles.label)}\n >\n {label}\n </label>\n )}\n <div\n {...slotProps.inputWrapper}\n className={cn(slotProps.inputWrapper?.className, styles.inputWrapper)}\n >\n {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 type=\"text\"\n className={cn(inputClass, styles.input)}\n onTouchStart={eventWithRipple(createRipple, onTouchStart)}\n onClick={eventWithRipple(createRipple, onClick)}\n onBlur={(e) => {\n setIsErrored(false);\n onBlur?.(e);\n }}\n size={inputSize}\n id={label}\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":["TextInput","props","startIcon","endIcon","label","error","fullWidth","disableEndIconGutters","disableStartIconGutters","size","inputSize","onTouchStart","onClick","onBlur","slotProps","className","inputClass","inputProps","rippleElements","createRipple","useRipple","ripple","isErrored","setIsErrored","useState","length","useEffect","_jsxs","root","cn","styles","undefined","errored","children","_jsx","htmlFor","id","inputWrapper","iconContainer","disableGutters","type","input","eventWithRipple","e","InputErrors","errorText"],"mappings":"qVA4CM,SAAUA,EAAUC,GACxB,MAAMC,UACJA,EAASC,QACTA,EAAOC,MACPA,EAAKC,MACLA,EAAKC,UACLA,EAASC,sBACTA,GAAwB,EAAKC,wBAC7BA,GAA0B,EAAKC,KAC/BA,EAAO,KAAIC,UACXA,EAASC,aACTA,EAAYC,QACZA,EAAOC,OACPA,EAAMC,UACNA,EAAY,GACZC,UAAWC,KACRC,GACDhB,GACEiB,eAAEA,EAAcC,aAAEA,GAAiBC,EAAUN,EAAUO,SACtDC,EAAWC,GAAgBC,EAASnB,KAAWA,EAAMoB,QAM5D,OAJAC,EAAU,KACRH,EAAalB,KAAWA,EAAMoB,SAC7B,CAACpB,IAGFsB,EAAA,MAAA,IACMb,EAAUc,KACdb,UAAWc,EACTf,EAAUc,MAAMb,UAChBe,EAAOF,KACPE,EAAO,QAAQrB,KACfH,EAAYwB,EAAOxB,eAAYyB,EAC/BT,EAAYQ,EAAOE,aAAUD,GAC9BE,SAAA,CAEA7B,GACC8B,EAAA,QAAA,IACMpB,EAAUV,MACd+B,QAASlC,EAAMmC,IAAMhC,EACrBW,UAAWc,EAAGf,EAAUV,OAAOW,UAAWe,EAAO1B,OAAM6B,SAEtD7B,IAGLuB,EAAA,MAAA,IACMb,EAAUuB,aACdtB,UAAWc,EAAGf,EAAUuB,cAActB,UAAWe,EAAOO,wBAEvDnC,GACCgC,EAAA,OAAA,IACMpB,EAAUZ,UACda,UAAWc,EACTC,EAAOQ,cACPxB,EAAUZ,WAAWa,UACrBP,EAA0BsB,EAAOS,oBAAiBR,GACnDE,SAEA/B,IAGLgC,EAAA,QAAA,CACEM,KAAK,OACLzB,UAAWc,EAAGb,EAAYc,EAAOW,OACjC9B,aAAc+B,EAAgBvB,EAAcR,GAC5CC,QAAS8B,EAAgBvB,EAAcP,GACvCC,OAAS8B,IACPpB,GAAa,GACbV,IAAS8B,IAEXlC,KAAMC,EACN0B,GAAIhC,KACAa,IAELd,GACC+B,EAAA,OAAA,IACMpB,EAAUX,QACdY,UAAWc,EACTC,EAAOQ,cACPxB,EAAUX,SAASY,UACnBR,EAAwBuB,EAAOS,oBAAiBR,GACjDE,SAEA9B,IAGJe,KAEFI,GACCY,EAACU,MACK9B,EAAUT,MACdU,UAAWc,EAAGf,EAAUT,OAAOU,UAAWe,EAAOe,WACjDxC,MAAOA,MAKjB"}
1
+ {"version":3,"file":"TextInput.js","sources":["../../../src/Inputs/TextInput/TextInput.tsx"],"sourcesContent":["\"use client\";\n\nimport { cn } 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 inputSize?: 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 inputSize,\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\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={props.id || label}\n className={cn(slotProps.label?.className, styles.label)}\n >\n {label}\n </label>\n )}\n <div\n {...slotProps.inputWrapper}\n className={cn(slotProps.inputWrapper?.className, styles.inputWrapper)}\n >\n {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 type=\"text\"\n className={cn(\n inputClass,\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={inputSize}\n id={label}\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":["TextInput","props","startIcon","endIcon","label","error","fullWidth","disableEndIconGutters","disableStartIconGutters","disableInputGutters","size","inputSize","onTouchStart","onClick","onBlur","slotProps","className","inputClass","inputProps","rippleElements","createRipple","useRipple","ripple","isErrored","setIsErrored","useState","length","useEffect","_jsxs","root","cn","styles","undefined","errored","_jsx","htmlFor","id","inputWrapper","children","iconContainer","disableGutters","type","input","eventWithRipple","e","InputErrors","errorText"],"mappings":"qVA6CM,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,UACXA,EAASC,aACTA,EAAYC,QACZA,EAAOC,OACPA,EAAMC,UACNA,EAAY,CAAA,EACZC,UAAWC,KACRC,GACDjB,GACEkB,eAAEA,EAAcC,aAAEA,GAAiBC,EAAUN,EAAUO,SACtDC,EAAWC,GAAgBC,EAASpB,KAAWA,EAAMqB,QAM5D,OAJAC,EAAU,KACRH,EAAanB,KAAWA,EAAMqB,SAC7B,CAACrB,IAGFuB,YACMb,EAAUc,KACdb,UAAWc,EACTf,EAAUc,MAAMb,UAChBe,EAAOF,KACPE,EAAO,QAAQrB,KACfJ,EAAYyB,EAAOzB,eAAY0B,EAC/BT,EAAYQ,EAAOE,aAAUD,aAG9B5B,GACC8B,EAAA,QAAA,IACMnB,EAAUX,MACd+B,QAASlC,EAAMmC,IAAMhC,EACrBY,UAAWc,EAAGf,EAAUX,OAAOY,UAAWe,EAAO3B,gBAEhDA,IAGLwB,EAAA,MAAA,IACMb,EAAUsB,aACdrB,UAAWc,EAAGf,EAAUsB,cAAcrB,UAAWe,EAAOM,cAAaC,SAAA,CAEpEpC,GACCgC,aACMnB,EAAUb,UACdc,UAAWc,EACTC,EAAOQ,cACPxB,EAAUb,WAAWc,UACrBR,EAA0BuB,EAAOS,oBAAiBR,YAGnD9B,IAGLgC,EAAA,QAAA,CACEO,KAAK,OACLzB,UAAWc,EACTb,EACAc,EAAOW,MACPjC,EAAsBsB,EAAOS,eAAiB,IAEhD5B,aAAc+B,EAAgBvB,EAAcR,GAC5CC,QAAS8B,EAAgBvB,EAAcP,GACvCC,OAAS8B,IACPpB,GAAa,GACbV,IAAS8B,IAEXlC,KAAMC,EACNyB,GAAIhC,KACAc,IAELf,GACC+B,EAAA,OAAA,IACMnB,EAAUZ,QACda,UAAWc,EACTC,EAAOQ,cACPxB,EAAUZ,SAASa,UACnBT,EAAwBwB,EAAOS,oBAAiBR,GACjDM,SAEAnC,IAGJgB,KAEFI,GACCW,EAACW,MACK9B,EAAUV,MACdW,UAAWc,EAAGf,EAAUV,OAAOW,UAAWe,EAAOe,WACjDzC,MAAOA,MAKjB"}
@@ -1,6 +1,8 @@
1
1
  export * from "./Button/Button";
2
2
  export * from "./Checkbox/_index";
3
+ export * from "./CloseButton/CloseButton";
3
4
  export * from "./PasswordInput/PasswordInput";
5
+ export * from "./SearchInput/SearchInput";
4
6
  export * from "./Select/Select";
5
7
  export * from "./Switch/Switch";
6
8
  export * from "./TextInput/TextInput";
@@ -1,5 +1,6 @@
1
1
  import { type PageTitleProps } from "../../Typography/PageTitle/PageTitle";
2
2
  import type { ComponentProps, ElementType, ReactNode } from "react";
3
+ import { type TabsBarProps } from "../../Navigation/Tabs/TabsBar/TabsBar";
3
4
  import { type TabProps } from "../../Navigation/Tabs/Tab/Tab";
4
5
  import { type PageLayoutProps } from "../PageLayout/PageLayout";
5
6
  export interface PageLayoutTabsProps extends PageTitleProps {
@@ -8,6 +9,7 @@ export interface PageLayoutTabsProps extends PageTitleProps {
8
9
  LinkComponent?: ElementType<ComponentProps<any>>;
9
10
  selectedIndex?: number;
10
11
  slotProps?: PageLayoutProps["slotProps"] & {
12
+ tabsBar?: TabsBarProps;
11
13
  tab?: TabProps;
12
14
  };
13
15
  }
@@ -1,2 +1,2 @@
1
- "use client";import{jsx as o}from"react/jsx-runtime";import{cn as a}from"@studiocubics/utils";import{Tabs as s}from"../../Navigation/Tabs/Tabs.js";import{TabsBar as t}from"../../Navigation/Tabs/TabsBar/TabsBar.js";import{Tab as r}from"../../Navigation/Tabs/Tab/Tab.js";import{PageLayout as e}from"../PageLayout/PageLayout.js";import i from"./PageLayoutTabs.module.css.js";function m(m){const{children:n,menuItems:b=[],slotProps:c={},selectedIndex:d=0,LinkComponent:l="a",...p}=m;return o(e,{...p,slotProps:{...c,body:{...c.body,className:a(c.body?.className,i.body)}},titleBar:o(s,{children:o(t,{children:b.map((a,s)=>o(r,{...c.tab,as:l,selected:s==d,...a},s))})}),noBorders:!0,children:n})}export{m as PageLayoutTabs};
1
+ "use client";import{jsx as o}from"react/jsx-runtime";import{cn as a}from"@studiocubics/utils";import{Tabs as s}from"../../Navigation/Tabs/Tabs.js";import{TabsBar as t}from"../../Navigation/Tabs/TabsBar/TabsBar.js";import{Tab as r}from"../../Navigation/Tabs/Tab/Tab.js";import{PageLayout as e}from"../PageLayout/PageLayout.js";import i from"./PageLayoutTabs.module.css.js";function m(m){const{children:n,menuItems:b=[],slotProps:c={},selectedIndex:d=0,LinkComponent:l="a",...p}=m;return o(e,{...p,slotProps:{...c,body:{...c.body,className:a(c.body?.className,i.body)}},titleBar:o(s,{children:o(t,{...c.tabsBar,children:b.map((a,s)=>o(r,{...c.tab,as:l,selected:s==d,...a},s))})}),noBorders:!0,children:n})}export{m as PageLayoutTabs};
2
2
  //# sourceMappingURL=PageLayoutTabs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PageLayoutTabs.js","sources":["../../../src/Layout/PageLayoutTabs/PageLayoutTabs.tsx"],"sourcesContent":["\"use client\";\n\nimport { type PageTitleProps } from \"../../Typography/PageTitle/PageTitle\";\nimport type { ComponentProps, ElementType, ReactNode } from \"react\";\nimport { Tabs } from \"../../Navigation/Tabs/Tabs\";\nimport { TabsBar } from \"../../Navigation/Tabs/TabsBar/TabsBar\";\nimport { Tab, type TabProps } from \"../../Navigation/Tabs/Tab/Tab\";\nimport { PageLayout, type PageLayoutProps } from \"../PageLayout/PageLayout\";\nimport { cn } from \"@studiocubics/utils\";\nimport styles from \"./PageLayoutTabs.module.css\";\n\nexport interface PageLayoutTabsProps extends PageTitleProps {\n children: ReactNode;\n menuItems?: TabProps[];\n LinkComponent?: ElementType<ComponentProps<any>>;\n selectedIndex?: number;\n slotProps?: PageLayoutProps[\"slotProps\"] & {\n tab?: TabProps;\n };\n}\n\nexport function PageLayoutTabs(props: PageLayoutTabsProps) {\n const {\n children,\n menuItems = [],\n slotProps = {},\n selectedIndex = 0,\n LinkComponent = \"a\",\n ...rest\n } = props;\n\n return (\n <PageLayout\n {...rest}\n slotProps={{\n ...slotProps,\n body: {\n ...slotProps.body,\n className: cn(slotProps.body?.className, styles.body),\n },\n }}\n titleBar={\n <Tabs>\n <TabsBar>\n {menuItems.map((mi, i) => (\n <Tab\n key={i}\n {...slotProps.tab}\n as={LinkComponent}\n selected={i == selectedIndex}\n {...mi}\n />\n ))}\n </TabsBar>\n </Tabs>\n }\n noBorders\n >\n {children}\n </PageLayout>\n );\n}\n"],"names":["PageLayoutTabs","props","children","menuItems","slotProps","selectedIndex","LinkComponent","rest","_jsx","PageLayout","body","className","cn","styles","titleBar","Tabs","TabsBar","map","mi","i","Tab","tab","as","selected","noBorders"],"mappings":"oXAqBM,SAAUA,EAAeC,GAC7B,MAAMC,SACJA,EAAQC,UACRA,EAAY,GAAEC,UACdA,EAAY,CAAA,EAAEC,cACdA,EAAgB,EAACC,cACjBA,EAAgB,OACbC,GACDN,EAEJ,OACEO,EAACC,MACKF,EACJH,UAAW,IACNA,EACHM,KAAM,IACDN,EAAUM,KACbC,UAAWC,EAAGR,EAAUM,MAAMC,UAAWE,EAAOH,QAGpDI,SACEN,EAACO,YACCP,EAACQ,EAAO,CAAAd,SACLC,EAAUc,IAAI,CAACC,EAAIC,IAClBX,EAACY,EAAG,IAEEhB,EAAUiB,IACdC,GAAIhB,EACJiB,SAAUJ,GAAKd,KACXa,GAJCC,QAUfK,WAAS,EAAAtB,SAERA,GAGP"}
1
+ {"version":3,"file":"PageLayoutTabs.js","sources":["../../../src/Layout/PageLayoutTabs/PageLayoutTabs.tsx"],"sourcesContent":["\"use client\";\n\nimport { type PageTitleProps } from \"../../Typography/PageTitle/PageTitle\";\nimport type { ComponentProps, ElementType, ReactNode } from \"react\";\nimport { Tabs } from \"../../Navigation/Tabs/Tabs\";\nimport {\n TabsBar,\n type TabsBarProps,\n} from \"../../Navigation/Tabs/TabsBar/TabsBar\";\nimport { Tab, type TabProps } from \"../../Navigation/Tabs/Tab/Tab\";\nimport { PageLayout, type PageLayoutProps } from \"../PageLayout/PageLayout\";\nimport { cn } from \"@studiocubics/utils\";\nimport styles from \"./PageLayoutTabs.module.css\";\n\nexport interface PageLayoutTabsProps extends PageTitleProps {\n children: ReactNode;\n menuItems?: TabProps[];\n LinkComponent?: ElementType<ComponentProps<any>>;\n selectedIndex?: number;\n slotProps?: PageLayoutProps[\"slotProps\"] & {\n tabsBar?: TabsBarProps;\n tab?: TabProps;\n };\n}\n\nexport function PageLayoutTabs(props: PageLayoutTabsProps) {\n const {\n children,\n menuItems = [],\n slotProps = {},\n selectedIndex = 0,\n LinkComponent = \"a\",\n ...rest\n } = props;\n\n return (\n <PageLayout\n {...rest}\n slotProps={{\n ...slotProps,\n body: {\n ...slotProps.body,\n className: cn(slotProps.body?.className, styles.body),\n },\n }}\n titleBar={\n <Tabs>\n <TabsBar {...slotProps.tabsBar}>\n {menuItems.map((mi, i) => (\n <Tab\n key={i}\n {...slotProps.tab}\n as={LinkComponent}\n selected={i == selectedIndex}\n {...mi}\n />\n ))}\n </TabsBar>\n </Tabs>\n }\n noBorders\n >\n {children}\n </PageLayout>\n );\n}\n"],"names":["PageLayoutTabs","props","children","menuItems","slotProps","selectedIndex","LinkComponent","rest","_jsx","PageLayout","body","className","cn","styles","titleBar","Tabs","TabsBar","tabsBar","map","mi","i","Tab","tab","as","selected","noBorders"],"mappings":"oXAyBM,SAAUA,EAAeC,GAC7B,MAAMC,SACJA,EAAQC,UACRA,EAAY,GAAEC,UACdA,EAAY,CAAA,EAAEC,cACdA,EAAgB,EAACC,cACjBA,EAAgB,OACbC,GACDN,EAEJ,OACEO,EAACC,MACKF,EACJH,UAAW,IACNA,EACHM,KAAM,IACDN,EAAUM,KACbC,UAAWC,EAAGR,EAAUM,MAAMC,UAAWE,EAAOH,QAGpDI,SACEN,EAACO,EAAI,CAAAb,SACHM,EAACQ,EAAO,IAAKZ,EAAUa,QAAOf,SAC3BC,EAAUe,IAAI,CAACC,EAAIC,IAClBZ,EAACa,EAAG,IAEEjB,EAAUkB,IACdC,GAAIjB,EACJkB,SAAUJ,GAAKf,KACXc,GAJCC,QAUfK,WAAS,EAAAvB,SAERA,GAGP"}
@@ -1 +1 @@
1
- {"version":3,"file":"Tab.js","sources":["../../../../src/Navigation/Tabs/Tab/Tab.tsx"],"sourcesContent":["\"use client\";\n\nimport {\n type ComponentProps,\n type ElementType,\n type ReactNode,\n useEffect,\n useRef,\n type MouseEvent,\n} from \"react\";\nimport styles from \"./Tab.module.css\";\nimport { useTabs } from \"../Tabs\";\nimport { cn, mergeRefs } from \"@studiocubics/utils\";\nimport type {\n PolymorphicComponentProps,\n PolymorphicComponentType,\n} from \"@studiocubics/types\";\n\n/**\n * Props specific to the Tab component.\n *\n * These extend the intrinsic element props of whatever element is passed via `as`.\n * @group Tab\n * @category inputs\n */\nexport interface TabBaseProps {\n selected?: boolean;\n startIcon?: ReactNode;\n endIcon?: ReactNode;\n disabled?: boolean;\n href?: ComponentProps<\"a\">[\"href\"];\n slotProps?: {\n startIcon?: ComponentProps<\"span\">;\n endIcon?: ComponentProps<\"span\">;\n };\n}\nconst defaultElement = \"button\";\ntype DefaultElement = typeof defaultElement;\n/**\n * Polymorphic props for the Tab component.\n *\n * `C` defines the element type rendered by the component (e.g. `\"Tab\"`, `\"a\"`, `\"div\"`).\n * All intrinsic props for `C` are supported unless overridden by `TabBaseProps`.\n *\n * @group Tab\n * @category inputs\n */\nexport type TabProps<C extends ElementType = DefaultElement> =\n PolymorphicComponentProps<C, TabBaseProps>;\n\n/**\n * Base implementation for the Tab component.\n *\n * This is a polymorphic component that defaults to rendering a `<Tab>`.\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 Tab\n * @category inputs\n */\nfunction TabBase<C extends ElementType = DefaultElement>(props: TabProps<C>) {\n const {\n as,\n className,\n selected: _selected,\n startIcon,\n endIcon,\n disabled,\n href,\n onClick,\n onTouchStart,\n children,\n slotProps = {},\n ref,\n ...restProps\n } = props;\n const { activeTab, setActiveTab } = useTabs();\n const tabRef = useRef<HTMLButtonElement>(null);\n\n const clickable = !disabled && (!!href || !!onClick);\n const selected = tabRef.current != null ? activeTab == tabRef.current : false;\n const Component = (as || defaultElement) as ElementType;\n\n function handleClick(e: MouseEvent<HTMLButtonElement>) {\n if (disabled) return;\n if (tabRef.current)\n tabRef.current.scrollIntoView({\n block: \"nearest\",\n inline: \"center\",\n behavior: \"smooth\",\n });\n setActiveTab(tabRef.current);\n if (onClick) onClick(e);\n }\n\n useEffect(() => {\n if (_selected) setActiveTab(tabRef.current);\n }, [_selected]);\n\n const componentProps = {\n className: cn(\n className,\n styles.root,\n selected ? styles.selected : undefined,\n clickable ? styles.clickable : undefined,\n disabled ? styles.disabled : undefined,\n ),\n onClick: handleClick,\n disabled,\n href: disabled ? \"\" : href,\n ref: mergeRefs(ref, tabRef),\n ...restProps,\n };\n\n return (\n <Component {...componentProps}>\n {startIcon && (\n <span\n {...slotProps.startIcon}\n className={cn(styles.iconContainer, slotProps.startIcon?.className)}\n >\n {startIcon}\n </span>\n )}\n {children}\n {endIcon && (\n <span\n {...slotProps.endIcon}\n className={cn(styles.iconContainer, slotProps.endIcon?.className)}\n >\n {endIcon}\n </span>\n )}\n </Component>\n );\n}\nTabBase.displayName = \"Tab\";\n\n/**\n * A polymorphic Tab component.\n *\n * By default it renders a `<Tab>`, but any element can be used via the `as` prop:\n *\n * ```tsx\n * <Tab as=\"a\" href=\"/docs\">Read docs</Tab>\n * ```\n *\n * @group Tab\n * @category inputs\n */\nexport const Tab = TabBase as PolymorphicComponentType<\n TabBaseProps,\n DefaultElement\n>;\n"],"names":["TabBase","props","as","className","selected","_selected","startIcon","endIcon","disabled","href","onClick","onTouchStart","children","slotProps","ref","restProps","activeTab","setActiveTab","useTabs","tabRef","useRef","clickable","current","Component","useEffect","componentProps","cn","styles","root","undefined","e","scrollIntoView","block","inline","behavior","mergeRefs","_jsxs","_jsx","iconContainer","displayName","Tab"],"mappings":"6OA6DA,SAASA,EAAgDC,GACvD,MAAMC,GACJA,EAAEC,UACFA,EACAC,SAAUC,EAASC,UACnBA,EAASC,QACTA,EAAOC,SACPA,EAAQC,KACRA,EAAIC,QACJA,EAAOC,aACPA,EAAYC,SACZA,EAAQC,UACRA,EAAY,CAAA,EAAEC,IACdA,KACGC,GACDd,GACEe,UAAEA,EAASC,aAAEA,GAAiBC,IAC9BC,EAASC,EAA0B,MAEnCC,IAAab,IAAeC,IAAUC,GACtCN,EAA6B,MAAlBe,EAAOG,SAAkBN,GAAaG,EAAOG,QACxDC,EAAarB,GA9CE,SA4DrBsB,EAAU,KACJnB,GAAWY,EAAaE,EAAOG,UAClC,CAACjB,IAEJ,MAAMoB,EAAiB,CACrBtB,UAAWuB,EACTvB,EACAwB,EAAOC,KACPxB,EAAWuB,EAAOvB,cAAWyB,EAC7BR,EAAYM,EAAON,eAAYQ,EAC/BrB,EAAWmB,EAAOnB,cAAWqB,GAE/BnB,QAxBF,SAAqBoB,GACftB,IACAW,EAAOG,SACTH,EAAOG,QAAQS,eAAe,CAC5BC,MAAO,UACPC,OAAQ,SACRC,SAAU,WAEdjB,EAAaE,EAAOG,SAChBZ,GAASA,EAAQoB,GACvB,EAeEtB,WACAC,KAAMD,EAAW,GAAKC,EACtBK,IAAKqB,EAAUrB,EAAKK,MACjBJ,GAGL,OACEqB,EAACb,EAAS,IAAKE,EAAcb,SAAA,CAC1BN,GACC+B,EAAA,OAAA,IACMxB,EAAUP,UACdH,UAAWuB,EAAGC,EAAOW,cAAezB,EAAUP,WAAWH,oBAExDG,IAGJM,EACAL,GACC8B,EAAA,OAAA,IACMxB,EAAUN,QACdJ,UAAWuB,EAAGC,EAAOW,cAAezB,EAAUN,SAASJ,WAAUS,SAEhEL,MAKX,CACAP,EAAQuC,YAAc,MAcf,MAAMC,EAAMxC"}
1
+ {"version":3,"file":"Tab.js","sources":["../../../../src/Navigation/Tabs/Tab/Tab.tsx"],"sourcesContent":["\"use client\";\n\nimport {\n type ComponentProps,\n type ElementType,\n type ReactNode,\n useEffect,\n useRef,\n type MouseEvent,\n} from \"react\";\nimport styles from \"./Tab.module.css\";\nimport { useTabs } from \"../Tabs\";\nimport { cn, mergeRefs } from \"@studiocubics/utils\";\nimport type {\n PolymorphicComponentProps,\n PolymorphicComponentType,\n} from \"@studiocubics/types\";\n\n/**\n * Props specific to the Tab component.\n *\n * These extend the intrinsic element props of whatever element is passed via `as`.\n * @group Tab\n * @category inputs\n */\nexport interface TabBaseProps {\n selected?: boolean;\n startIcon?: ReactNode;\n endIcon?: ReactNode;\n disabled?: boolean;\n href?: ComponentProps<\"a\">[\"href\"];\n // TODO add defaultSelected here\n slotProps?: {\n startIcon?: ComponentProps<\"span\">;\n endIcon?: ComponentProps<\"span\">;\n };\n}\nconst defaultElement = \"button\";\ntype DefaultElement = typeof defaultElement;\n/**\n * Polymorphic props for the Tab component.\n *\n * `C` defines the element type rendered by the component (e.g. `\"Tab\"`, `\"a\"`, `\"div\"`).\n * All intrinsic props for `C` are supported unless overridden by `TabBaseProps`.\n *\n * @group Tab\n * @category inputs\n */\nexport type TabProps<C extends ElementType = DefaultElement> =\n PolymorphicComponentProps<C, TabBaseProps>;\n\n/**\n * Base implementation for the Tab component.\n *\n * This is a polymorphic component that defaults to rendering a `<Tab>`.\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 Tab\n * @category inputs\n * \n * //TODO fix this garbage\n */\nfunction TabBase<C extends ElementType = DefaultElement>(props: TabProps<C>) {\n const {\n as,\n className,\n selected: _selected,\n startIcon,\n endIcon,\n disabled,\n href,\n onClick,\n onTouchStart,\n children,\n slotProps = {},\n ref,\n ...restProps\n } = props;\n const { activeTab, setActiveTab } = useTabs();\n const tabRef = useRef<HTMLButtonElement>(null);\n\n const clickable = !disabled && (!!href || !!onClick);\n const selected = tabRef.current != null ? activeTab == tabRef.current : false;\n const Component = (as || defaultElement) as ElementType;\n\n function handleClick(e: MouseEvent<HTMLButtonElement>) {\n if (disabled) return;\n if (tabRef.current)\n tabRef.current.scrollIntoView({\n block: \"nearest\",\n inline: \"center\",\n behavior: \"smooth\",\n });\n setActiveTab(tabRef.current);\n if (onClick) onClick(e);\n }\n\n useEffect(() => {\n if (_selected) setActiveTab(tabRef.current);\n }, [_selected]);\n\n const componentProps = {\n className: cn(\n className,\n styles.root,\n selected ? styles.selected : undefined,\n clickable ? styles.clickable : undefined,\n disabled ? styles.disabled : undefined,\n ),\n onClick: handleClick,\n disabled,\n href: disabled ? \"\" : href,\n ref: mergeRefs(ref, tabRef),\n ...restProps,\n };\n\n return (\n <Component {...componentProps}>\n {startIcon && (\n <span\n {...slotProps.startIcon}\n className={cn(styles.iconContainer, slotProps.startIcon?.className)}\n >\n {startIcon}\n </span>\n )}\n {children}\n {endIcon && (\n <span\n {...slotProps.endIcon}\n className={cn(styles.iconContainer, slotProps.endIcon?.className)}\n >\n {endIcon}\n </span>\n )}\n </Component>\n );\n}\nTabBase.displayName = \"Tab\";\n\n/**\n * A polymorphic Tab component.\n *\n * By default it renders a `<Tab>`, but any element can be used via the `as` prop:\n *\n * ```tsx\n * <Tab as=\"a\" href=\"/docs\">Read docs</Tab>\n * ```\n *\n * @group Tab\n * @category inputs\n */\nexport const Tab = TabBase as PolymorphicComponentType<\n TabBaseProps,\n DefaultElement\n>;\n"],"names":["TabBase","props","as","className","selected","_selected","startIcon","endIcon","disabled","href","onClick","onTouchStart","children","slotProps","ref","restProps","activeTab","setActiveTab","useTabs","tabRef","useRef","clickable","current","Component","useEffect","componentProps","cn","styles","root","undefined","e","scrollIntoView","block","inline","behavior","mergeRefs","_jsxs","_jsx","iconContainer","displayName","Tab"],"mappings":"6OAgEA,SAASA,EAAgDC,GACvD,MAAMC,GACJA,EAAEC,UACFA,EACAC,SAAUC,EAASC,UACnBA,EAASC,QACTA,EAAOC,SACPA,EAAQC,KACRA,EAAIC,QACJA,EAAOC,aACPA,EAAYC,SACZA,EAAQC,UACRA,EAAY,CAAA,EAAEC,IACdA,KACGC,GACDd,GACEe,UAAEA,EAASC,aAAEA,GAAiBC,IAC9BC,EAASC,EAA0B,MAEnCC,IAAab,IAAeC,IAAUC,GACtCN,EAA6B,MAAlBe,EAAOG,SAAkBN,GAAaG,EAAOG,QACxDC,EAAarB,GAhDE,SA8DrBsB,EAAU,KACJnB,GAAWY,EAAaE,EAAOG,UAClC,CAACjB,IAEJ,MAAMoB,EAAiB,CACrBtB,UAAWuB,EACTvB,EACAwB,EAAOC,KACPxB,EAAWuB,EAAOvB,cAAWyB,EAC7BR,EAAYM,EAAON,eAAYQ,EAC/BrB,EAAWmB,EAAOnB,cAAWqB,GAE/BnB,QAxBF,SAAqBoB,GACftB,IACAW,EAAOG,SACTH,EAAOG,QAAQS,eAAe,CAC5BC,MAAO,UACPC,OAAQ,SACRC,SAAU,WAEdjB,EAAaE,EAAOG,SAChBZ,GAASA,EAAQoB,GACvB,EAeEtB,WACAC,KAAMD,EAAW,GAAKC,EACtBK,IAAKqB,EAAUrB,EAAKK,MACjBJ,GAGL,OACEqB,EAACb,EAAS,IAAKE,EAAcb,SAAA,CAC1BN,GACC+B,EAAA,OAAA,IACMxB,EAAUP,UACdH,UAAWuB,EAAGC,EAAOW,cAAezB,EAAUP,WAAWH,oBAExDG,IAGJM,EACAL,GACC8B,EAAA,OAAA,IACMxB,EAAUN,QACdJ,UAAWuB,EAAGC,EAAOW,cAAezB,EAAUN,SAASJ,WAAUS,SAEhEL,MAKX,CACAP,EAAQuC,YAAc,MAcf,MAAMC,EAAMxC"}
@@ -12,4 +12,7 @@ export type TabsBarProps<M extends ElementType = typeof GlassCard> = ComponentPr
12
12
  marker?: ComponentProps<M>;
13
13
  };
14
14
  };
15
+ /**
16
+ * //TODO fix this garbage
17
+ */
15
18
  export declare function TabsBar(props: TabsBarProps): import("react/jsx-runtime").JSX.Element;
@@ -1,2 +1,2 @@
1
- "use client";import{jsx as r,Fragment as e,jsxs as t}from"react/jsx-runtime";import{useRef as a,useEffect as s}from"react";import{useTabs as n}from"../Tabs.js";import o from"./TabsBar.module.css.js";import{cn as c}from"@studiocubics/utils";import{GlassCard as l}from"../../../Cards/GlassCard/GlassCard.js";import{Tab as i}from"../Tab/Tab.js";function m(e){const{as:t=l,className:a,...s}=e;return r(t,{className:c(o.markerInner,a),...s})}function u(l){const{children:u,className:d,column:f=!1,marker:p=m,color:h="default",tabs:b,renderTab:v=t=>r(e,{children:t}),slotProps:N={},...C}=l,{activeTab:k}=n(),w=a(null),T=a(null);s(()=>{if(!T.current||!w.current||!k)return;const r=()=>{if(!T.current||!w.current||!k)return;const r=k.getBoundingClientRect(),e=T.current.getBoundingClientRect();w.current.style.width=`${r.width}px`,w.current.style.height=`${r.height}px`,w.current.style.left=`${r.left-e.left+T.current.scrollLeft}px`,w.current.style.top=`${r.top-e.top+T.current.scrollTop}px`};r();const e=new ResizeObserver(r);return e.observe(T.current),()=>e.disconnect()},[k]);const g=null!=b?b.map((e,t)=>r(i,{"data-value":e,selected:0===t,className:c(o.tab,k?.dataset.value===e?o.active:""),children:v(e)},e)):u;return r("nav",{...C,"data-color":h,className:c(o.root,d),children:t("div",{...N.overflowContainer,ref:T,className:c(o.overflowContainer,f?o.column:o.row,N.overflowContainer?.className),children:[g,r("span",{...N.markerContainer,ref:w,className:c(o.marker,N.markerContainer?.className),children:r(p,{...N.marker,className:c(o.markerGlass,N.marker?.className)})})]})})}export{u as TabsBar};
1
+ "use client";import{jsx as r,Fragment as e,jsxs as t}from"react/jsx-runtime";import{useRef as a,useEffect as s}from"react";import{useTabs as n}from"../Tabs.js";import o from"./TabsBar.module.css.js";import{cn as c}from"@studiocubics/utils";import{GlassCard as l}from"../../../Cards/GlassCard/GlassCard.js";import{Tab as i}from"../Tab/Tab.js";function m(e){const{as:t=l,className:a,...s}=e;return r(t,{className:c(o.markerInner,a),...s})}function u(l){const{children:u,className:d,column:f=!1,marker:p=m,color:h="default",tabs:b,renderTab:v=t=>r(e,{children:t}),slotProps:N={},...C}=l,{activeTab:k}=n(),w=a(null),T=a(null);s(()=>{if(!T.current||!w.current||!k)return;const r=()=>{if(!T.current||!w.current||!k)return;const r=k.getBoundingClientRect(),e=T.current.getBoundingClientRect();w.current.style.width=`${r.width}px`,w.current.style.height=`${r.height}px`,w.current.style.left=`${r.left-e.left+T.current.scrollLeft}px`,w.current.style.top=`${r.top-e.top+T.current.scrollTop}px`};r();const e=new ResizeObserver(r);return e.observe(T.current),()=>e.disconnect()},[k]);const g=null!=b?b.map((e,t)=>r(i,{"data-value":e,"data-active":k?.dataset.value===e,selected:0===t,className:c(o.tab),children:v(e)},e)):u;return r("nav",{...C,"data-color":h,className:c(o.root,d),children:t("div",{...N.overflowContainer,ref:T,className:c(o.overflowContainer,f?o.column:o.row,N.overflowContainer?.className),children:[g,r("span",{...N.markerContainer,ref:w,className:c(o.marker,N.markerContainer?.className),children:r(p,{...N.marker,className:c(o.markerGlass,N.marker?.className)})})]})})}export{u as TabsBar};
2
2
  //# sourceMappingURL=TabsBar.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TabsBar.js","sources":["../../../../src/Navigation/Tabs/TabsBar/TabsBar.tsx"],"sourcesContent":["\"use client\";\n\nimport {\n useRef,\n useEffect,\n type ReactNode,\n type ComponentProps,\n type ElementType,\n type ReactElement,\n} from \"react\";\nimport { useTabs } from \"../Tabs\";\nimport styles from \"./TabsBar.module.css\";\nimport { cn } from \"@studiocubics/utils\";\nimport { GlassCard } from \"../../../Cards/GlassCard/GlassCard\";\nimport { Tab } from \"../Tab/Tab\";\nimport type { PolymorphicComponentProps } from \"@studiocubics/types\";\n\nfunction DefaultMarker<C extends ElementType>(\n props: PolymorphicComponentProps<C, object>,\n) {\n const { as: Component = GlassCard, className, ...rest } = props;\n return <Component className={cn(styles.markerInner, className)} {...rest} />;\n}\n\nexport type TabsBarProps<M extends ElementType = typeof GlassCard> =\n ComponentProps<\"nav\"> & {\n column?: boolean;\n marker?: M;\n color?: \"default\" | \"primary\" | \"secondary\";\n tabs?: string[];\n renderTab?: (t: string) => ReactElement;\n slotProps?: {\n overflowContainer?: ComponentProps<\"div\">;\n markerContainer?: ComponentProps<\"span\">;\n marker?: ComponentProps<M>;\n };\n };\n\nexport function TabsBar(props: TabsBarProps) {\n const {\n children,\n className,\n column = false,\n marker: Marker = DefaultMarker,\n color = \"default\",\n tabs,\n renderTab = (t) => <>{t}</>,\n slotProps = {},\n ...rest\n } = props;\n\n const { activeTab } = useTabs();\n const markerRef = useRef<HTMLSpanElement>(null);\n const rootRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (!rootRef.current || !markerRef.current || !activeTab) return;\n\n const update = () => {\n if (!rootRef.current || !markerRef.current || !activeTab) return;\n\n const tabRect = activeTab.getBoundingClientRect();\n const rootRect = rootRef.current.getBoundingClientRect();\n\n markerRef.current.style.width = `${tabRect.width}px`;\n markerRef.current.style.height = `${tabRect.height}px`;\n markerRef.current.style.left = `${tabRect.left - rootRect.left + rootRef.current.scrollLeft}px`;\n markerRef.current.style.top = `${tabRect.top - rootRect.top + rootRef.current.scrollTop}px`;\n };\n\n update();\n\n const ro = new ResizeObserver(update);\n ro.observe(rootRef.current);\n\n return () => ro.disconnect();\n }, [activeTab]);\n\n const content: ReactNode =\n tabs != null\n ? tabs.map((t, i) => (\n <Tab\n key={t}\n data-value={t}\n selected={i === 0}\n className={cn(\n styles.tab,\n activeTab?.dataset.value === t ? styles.active : \"\",\n )}\n >\n {renderTab(t)}\n </Tab>\n ))\n : children;\n\n return (\n <nav {...rest} data-color={color} className={cn(styles.root, className)}>\n <div\n {...slotProps.overflowContainer}\n ref={rootRef}\n className={cn(\n styles.overflowContainer,\n column ? styles.column : styles.row,\n slotProps.overflowContainer?.className,\n )}\n >\n {content}\n <span\n {...slotProps.markerContainer}\n ref={markerRef}\n className={cn(styles.marker, slotProps.markerContainer?.className)}\n >\n <Marker\n {...slotProps.marker}\n className={cn(styles.markerGlass, slotProps.marker?.className)}\n />\n </span>\n </div>\n </nav>\n );\n}\n"],"names":["DefaultMarker","props","as","Component","GlassCard","className","rest","_jsx","cn","styles","markerInner","TabsBar","children","column","marker","Marker","color","tabs","renderTab","t","slotProps","activeTab","useTabs","markerRef","useRef","rootRef","useEffect","current","update","tabRect","getBoundingClientRect","rootRect","style","width","height","left","scrollLeft","top","scrollTop","ro","ResizeObserver","observe","disconnect","content","map","i","Tab","selected","tab","dataset","value","active","root","_jsxs","overflowContainer","ref","row","markerContainer","markerGlass"],"mappings":"sVAiBA,SAASA,EACPC,GAEA,MAAQC,GAAIC,EAAYC,EAASC,UAAEA,KAAcC,GAASL,EAC1D,OAAOM,EAACJ,EAAS,CAACE,UAAWG,EAAGC,EAAOC,YAAaL,MAAgBC,GACtE,CAgBM,SAAUK,EAAQV,GACtB,MAAMW,SACJA,EAAQP,UACRA,EAASQ,OACTA,GAAS,EACTC,OAAQC,EAASf,EAAagB,MAC9BA,EAAQ,UAASC,KACjBA,EAAIC,UACJA,EAAaC,GAAMZ,cAAGY,IAAKC,UAC3BA,EAAY,CAAA,KACTd,GACDL,GAEEoB,UAAEA,GAAcC,IAChBC,EAAYC,EAAwB,MACpCC,EAAUD,EAAuB,MAEvCE,EAAU,KACR,IAAKD,EAAQE,UAAYJ,EAAUI,UAAYN,EAAW,OAE1D,MAAMO,EAAS,KACb,IAAKH,EAAQE,UAAYJ,EAAUI,UAAYN,EAAW,OAE1D,MAAMQ,EAAUR,EAAUS,wBACpBC,EAAWN,EAAQE,QAAQG,wBAEjCP,EAAUI,QAAQK,MAAMC,MAAQ,GAAGJ,EAAQI,UAC3CV,EAAUI,QAAQK,MAAME,OAAS,GAAGL,EAAQK,WAC5CX,EAAUI,QAAQK,MAAMG,KAAO,GAAGN,EAAQM,KAAOJ,EAASI,KAAOV,EAAQE,QAAQS,eACjFb,EAAUI,QAAQK,MAAMK,IAAM,GAAGR,EAAQQ,IAAMN,EAASM,IAAMZ,EAAQE,QAAQW,eAGhFV,IAEA,MAAMW,EAAK,IAAIC,eAAeZ,GAG9B,OAFAW,EAAGE,QAAQhB,EAAQE,SAEZ,IAAMY,EAAGG,cACf,CAACrB,IAEJ,MAAMsB,EACI,MAAR1B,EACIA,EAAK2B,IAAI,CAACzB,EAAG0B,IACXtC,EAACuC,EAAG,CAAA,aAEU3B,EACZ4B,SAAgB,IAANF,EACVxC,UAAWG,EACTC,EAAOuC,IACP3B,GAAW4B,QAAQC,QAAU/B,EAAIV,EAAO0C,OAAS,IAClDvC,SAEAM,EAAUC,IARNA,IAWTP,EAEN,OACEL,YAASD,EAAI,aAAcU,EAAOX,UAAWG,EAAGC,EAAO2C,KAAM/C,GAAUO,SACrEyC,EAAA,MAAA,IACMjC,EAAUkC,kBACdC,IAAK9B,EACLpB,UAAWG,EACTC,EAAO6C,kBACPzC,EAASJ,EAAOI,OAASJ,EAAO+C,IAChCpC,EAAUkC,mBAAmBjD,WAC9BO,SAAA,CAEA+B,EACDpC,EAAA,OAAA,IACMa,EAAUqC,gBACdF,IAAKhC,EACLlB,UAAWG,EAAGC,EAAOK,OAAQM,EAAUqC,iBAAiBpD,WAAUO,SAElEL,EAACQ,EAAM,IACDK,EAAUN,OACdT,UAAWG,EAAGC,EAAOiD,YAAatC,EAAUN,QAAQT,mBAMhE"}
1
+ {"version":3,"file":"TabsBar.js","sources":["../../../../src/Navigation/Tabs/TabsBar/TabsBar.tsx"],"sourcesContent":["\"use client\";\n\nimport {\n useRef,\n useEffect,\n type ReactNode,\n type ComponentProps,\n type ElementType,\n type ReactElement,\n} from \"react\";\nimport { useTabs } from \"../Tabs\";\nimport styles from \"./TabsBar.module.css\";\nimport { cn } from \"@studiocubics/utils\";\nimport { GlassCard } from \"../../../Cards/GlassCard/GlassCard\";\nimport { Tab } from \"../Tab/Tab\";\nimport type { PolymorphicComponentProps } from \"@studiocubics/types\";\n\nfunction DefaultMarker<C extends ElementType>(\n props: PolymorphicComponentProps<C, object>,\n) {\n const { as: Component = GlassCard, className, ...rest } = props;\n return <Component className={cn(styles.markerInner, className)} {...rest} />;\n}\n\nexport type TabsBarProps<M extends ElementType = typeof GlassCard> =\n ComponentProps<\"nav\"> & {\n column?: boolean;\n marker?: M;\n color?: \"default\" | \"primary\" | \"secondary\";\n tabs?: string[];\n renderTab?: (t: string) => ReactElement;\n slotProps?: {\n overflowContainer?: ComponentProps<\"div\">;\n markerContainer?: ComponentProps<\"span\">;\n marker?: ComponentProps<M>;\n };\n };\n/**\n * //TODO fix this garbage\n */\nexport function TabsBar(props: TabsBarProps) {\n const {\n children,\n className,\n column = false,\n marker: Marker = DefaultMarker,\n color = \"default\",\n tabs,\n renderTab = (t) => <>{t}</>,\n slotProps = {},\n ...rest\n } = props;\n\n const { activeTab } = useTabs();\n const markerRef = useRef<HTMLSpanElement>(null);\n const rootRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (!rootRef.current || !markerRef.current || !activeTab) return;\n\n const update = () => {\n if (!rootRef.current || !markerRef.current || !activeTab) return;\n\n const tabRect = activeTab.getBoundingClientRect();\n const rootRect = rootRef.current.getBoundingClientRect();\n\n markerRef.current.style.width = `${tabRect.width}px`;\n markerRef.current.style.height = `${tabRect.height}px`;\n markerRef.current.style.left = `${tabRect.left - rootRect.left + rootRef.current.scrollLeft}px`;\n markerRef.current.style.top = `${tabRect.top - rootRect.top + rootRef.current.scrollTop}px`;\n };\n\n update();\n\n const ro = new ResizeObserver(update);\n ro.observe(rootRef.current);\n\n return () => ro.disconnect();\n }, [activeTab]);\n\n const content: ReactNode =\n tabs != null\n ? tabs.map((t, i) => (\n <Tab\n key={t}\n data-value={t}\n data-active={activeTab?.dataset.value === t}\n selected={i === 0}\n className={cn(styles.tab)}\n >\n {renderTab(t)}\n </Tab>\n ))\n : children;\n\n return (\n <nav {...rest} data-color={color} className={cn(styles.root, className)}>\n <div\n {...slotProps.overflowContainer}\n ref={rootRef}\n className={cn(\n styles.overflowContainer,\n column ? styles.column : styles.row,\n slotProps.overflowContainer?.className,\n )}\n >\n {content}\n <span\n {...slotProps.markerContainer}\n ref={markerRef}\n className={cn(styles.marker, slotProps.markerContainer?.className)}\n >\n <Marker\n {...slotProps.marker}\n className={cn(styles.markerGlass, slotProps.marker?.className)}\n />\n </span>\n </div>\n </nav>\n );\n}\n"],"names":["DefaultMarker","props","as","Component","GlassCard","className","rest","_jsx","cn","styles","markerInner","TabsBar","children","column","marker","Marker","color","tabs","renderTab","t","slotProps","activeTab","useTabs","markerRef","useRef","rootRef","useEffect","current","update","tabRect","getBoundingClientRect","rootRect","style","width","height","left","scrollLeft","top","scrollTop","ro","ResizeObserver","observe","disconnect","content","map","i","Tab","dataset","value","selected","tab","root","_jsxs","overflowContainer","ref","row","markerContainer","markerGlass"],"mappings":"sVAiBA,SAASA,EACPC,GAEA,MAAQC,GAAIC,EAAYC,EAASC,UAAEA,KAAcC,GAASL,EAC1D,OAAOM,EAACJ,EAAS,CAACE,UAAWG,EAAGC,EAAOC,YAAaL,MAAgBC,GACtE,CAkBM,SAAUK,EAAQV,GACtB,MAAMW,SACJA,EAAQP,UACRA,EAASQ,OACTA,GAAS,EACTC,OAAQC,EAASf,EAAagB,MAC9BA,EAAQ,UAASC,KACjBA,EAAIC,UACJA,EAAaC,GAAMZ,cAAGY,IAAKC,UAC3BA,EAAY,CAAA,KACTd,GACDL,GAEEoB,UAAEA,GAAcC,IAChBC,EAAYC,EAAwB,MACpCC,EAAUD,EAAuB,MAEvCE,EAAU,KACR,IAAKD,EAAQE,UAAYJ,EAAUI,UAAYN,EAAW,OAE1D,MAAMO,EAAS,KACb,IAAKH,EAAQE,UAAYJ,EAAUI,UAAYN,EAAW,OAE1D,MAAMQ,EAAUR,EAAUS,wBACpBC,EAAWN,EAAQE,QAAQG,wBAEjCP,EAAUI,QAAQK,MAAMC,MAAQ,GAAGJ,EAAQI,UAC3CV,EAAUI,QAAQK,MAAME,OAAS,GAAGL,EAAQK,WAC5CX,EAAUI,QAAQK,MAAMG,KAAO,GAAGN,EAAQM,KAAOJ,EAASI,KAAOV,EAAQE,QAAQS,eACjFb,EAAUI,QAAQK,MAAMK,IAAM,GAAGR,EAAQQ,IAAMN,EAASM,IAAMZ,EAAQE,QAAQW,eAGhFV,IAEA,MAAMW,EAAK,IAAIC,eAAeZ,GAG9B,OAFAW,EAAGE,QAAQhB,EAAQE,SAEZ,IAAMY,EAAGG,cACf,CAACrB,IAEJ,MAAMsB,EACI,MAAR1B,EACIA,EAAK2B,IAAI,CAACzB,EAAG0B,IACXtC,EAACuC,EAAG,CAAA,aAEU3B,gBACCE,GAAW0B,QAAQC,QAAU7B,EAC1C8B,SAAgB,IAANJ,EACVxC,UAAWG,EAAGC,EAAOyC,KAAItC,SAExBM,EAAUC,IANNA,IASTP,EAEN,OACEL,YAASD,EAAI,aAAcU,EAAOX,UAAWG,EAAGC,EAAO0C,KAAM9C,GAAUO,SACrEwC,EAAA,MAAA,IACMhC,EAAUiC,kBACdC,IAAK7B,EACLpB,UAAWG,EACTC,EAAO4C,kBACPxC,EAASJ,EAAOI,OAASJ,EAAO8C,IAChCnC,EAAUiC,mBAAmBhD,WAC9BO,SAAA,CAEA+B,EACDpC,EAAA,OAAA,IACMa,EAAUoC,gBACdF,IAAK/B,EACLlB,UAAWG,EAAGC,EAAOK,OAAQM,EAAUoC,iBAAiBnD,WAAUO,SAElEL,EAACQ,EAAM,IACDK,EAAUN,OACdT,UAAWG,EAAGC,EAAOgD,YAAarC,EAAUN,QAAQT,mBAMhE"}
@@ -1,2 +1,2 @@
1
- var a={root:"TabsBar-module_root__Uve19",overflowContainer:"TabsBar-module_overflowContainer__FuUXd",row:"TabsBar-module_row__5PKvn",column:"TabsBar-module_column__8Mc64",tab:"TabsBar-module_tab__jD1nX",active:"TabsBar-module_active__ESPgA",marker:"TabsBar-module_marker__2e4am",markerInner:"TabsBar-module_markerInner__T0FZ3"};export{a as default};
1
+ var r={root:"TabsBar-module_root__Uve19",overflowContainer:"TabsBar-module_overflowContainer__FuUXd",row:"TabsBar-module_row__5PKvn",column:"TabsBar-module_column__8Mc64",tab:"TabsBar-module_tab__jD1nX",marker:"TabsBar-module_marker__2e4am",markerInner:"TabsBar-module_markerInner__T0FZ3"};export{r as default};
2
2
  //# sourceMappingURL=TabsBar.module.css.js.map
@@ -1,2 +1,2 @@
1
- "use client";import{jsxs as t,jsx as o}from"react/jsx-runtime";import{cn as r}from"@studiocubics/utils";import{useState as e,useEffect as i}from"react";import n from"./CopyableText.module.css.js";import{useDelayedAction as s}from"@studiocubics/hooks";import{Button as c}from"../../Inputs/Button/Button.js";function l(l){const{as:u,children:h,className:m,disabled:p=!1,slotProps:w={},...f}=l,[k,x]=e(!1),b=s(),g=u||"div",v={...f,className:r(m,n.root)};return i(()=>{k&&b(()=>x(!1),2e3)},[b,k]),t(g,{...v,children:[o("span",{children:h}),o(c,{disabled:p,square:!0,size:"sm",...w.button,onClick:async function(t){await navigator.clipboard.writeText(h),x(!0),w.button?.onClick?.(t)},children:o(k?a:d,{width:24,height:24})})]})}l.displayName="CopyableText";const u=l;function d(r){return t("svg",{...r,xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.3",strokeLinecap:"round",strokeLinejoin:"round",children:[o("rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2"}),o("path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"})]})}function a(t){return o("svg",{...t,xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.3",strokeLinecap:"round",strokeLinejoin:"round",children:o("path",{d:"M4 12 9 17l11 -11"})})}export{d as CopyIcon,u as CopyableText};
1
+ "use client";import{jsxs as t,jsx as o}from"react/jsx-runtime";import{cn as r}from"@studiocubics/utils";import{useState as e,useEffect as i}from"react";import n from"./CopyableText.module.css.js";import{useDelayedAction as s}from"@studiocubics/hooks";import{Button as c}from"../../Inputs/Button/Button.js";function l(l){const{as:u,children:p,className:h,disabled:m=!1,slotProps:w={},...f}=l,[k,x]=e(!1),b=s(),g=u||"div",v={...f,className:r(h,n.root)};return i(()=>{k&&b(()=>x(!1),2e3)},[b,k]),t(g,{...v,children:[o("span",{children:p}),o(c,{disabled:m,square:!0,size:"sm",type:"button",...w.button,onClick:async function(t){await navigator.clipboard.writeText(p),x(!0),w.button?.onClick?.(t)},children:o(k?a:d,{width:24,height:24})})]})}l.displayName="CopyableText";const u=l;function d(r){return t("svg",{...r,xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.3",strokeLinecap:"round",strokeLinejoin:"round",children:[o("rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2"}),o("path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"})]})}function a(t){return o("svg",{...t,xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.3",strokeLinecap:"round",strokeLinejoin:"round",children:o("path",{d:"M4 12 9 17l11 -11"})})}export{d as CopyIcon,u as CopyableText};
2
2
  //# sourceMappingURL=CopyableText.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CopyableText.js","sources":["../../../src/Typography/CopyableText/CopyableText.tsx"],"sourcesContent":["\"use client\";\n\nimport type {\n PolymorphicComponentProps,\n PolymorphicComponentType,\n} from \"@studiocubics/types\";\nimport { cn } from \"@studiocubics/utils\";\nimport {\n type ComponentProps,\n type MouseEvent,\n useEffect,\n useState,\n type ElementType,\n} from \"react\";\nimport styles from \"./CopyableText.module.css\";\nimport { useDelayedAction } from \"@studiocubics/hooks\";\nimport { Button, type ButtonProps } from \"../../Inputs/Button/Button\";\n\nexport interface CopyableTextBaseProps {\n children: string;\n disabled?: boolean;\n slotProps?: {\n button?: ButtonProps;\n };\n}\n\nconst defaultElement = \"div\";\ntype DefaultElement = typeof defaultElement;\n\nexport type CopyableTextProps<C extends ElementType = DefaultElement> =\n PolymorphicComponentProps<C, CopyableTextBaseProps>;\n\nfunction CopyableTextBase<C extends ElementType = DefaultElement>(\n props: CopyableTextProps<C>,\n) {\n const {\n as,\n children,\n className,\n disabled = false,\n slotProps = {},\n ...rest\n } = props as CopyableTextProps<DefaultElement>;\n\n const [copied, setCopied] = useState(false);\n const delay = useDelayedAction();\n const Component = (as || defaultElement) as ElementType;\n const componentProps = { ...rest, className: cn(className, styles.root) };\n\n async function handleCopy(e: MouseEvent<HTMLButtonElement>) {\n await navigator.clipboard.writeText(children);\n setCopied(true);\n slotProps.button?.onClick?.(e);\n }\n useEffect(() => {\n if (copied) {\n delay(() => setCopied(false), 2000);\n }\n }, [delay, copied]);\n return (\n <Component {...componentProps}>\n <span>{children}</span>\n <Button\n disabled={disabled}\n square\n size=\"sm\"\n {...slotProps.button}\n onClick={handleCopy}\n >\n {copied ? (\n <CheckIcon width={24} height={24} />\n ) : (\n <CopyIcon width={24} height={24} />\n )}\n </Button>\n </Component>\n );\n}\n\nCopyableTextBase.displayName = \"CopyableText\";\n\nexport const CopyableText = CopyableTextBase as PolymorphicComponentType<\n CopyableTextBaseProps,\n DefaultElement\n>;\n\nexport function CopyIcon(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 <rect width=\"14\" height=\"14\" x=\"8\" y=\"8\" rx=\"2\" ry=\"2\" />\n <path d=\"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2\" />\n </svg>\n );\n}\n// TODO convert to animated check icon\nfunction CheckIcon(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=\"M4 12 9 17l11 -11\" />\n </svg>\n );\n}\n"],"names":["CopyableTextBase","props","as","children","className","disabled","slotProps","rest","copied","setCopied","useState","delay","useDelayedAction","Component","componentProps","cn","styles","root","useEffect","_jsxs","_jsx","Button","square","size","button","onClick","async","e","navigator","clipboard","writeText","CheckIcon","CopyIcon","width","height","displayName","CopyableText","xmlns","viewBox","fill","stroke","strokeWidth","strokeLinecap","strokeLinejoin","x","y","rx","ry","d"],"mappings":"kTAgCA,SAASA,EACPC,GAEA,MAAMC,GACJA,EAAEC,SACFA,EAAQC,UACRA,EAASC,SACTA,GAAW,EAAKC,UAChBA,EAAY,CAAA,KACTC,GACDN,GAEGO,EAAQC,GAAaC,GAAS,GAC/BC,EAAQC,IACRC,EAAaX,GApBE,MAqBfY,EAAiB,IAAKP,EAAMH,UAAWW,EAAGX,EAAWY,EAAOC,OAYlE,OALAC,EAAU,KACJV,GACFG,EAAM,IAAMF,GAAU,GAAQ,MAE/B,CAACE,EAAOH,IAETW,EAACN,EAAS,IAAKC,EAAcX,SAAA,CAC3BiB,EAAA,OAAA,CAAAjB,SAAOA,IACPiB,EAACC,GACChB,SAAUA,EACViB,QAAM,EACNC,KAAK,QACDjB,EAAUkB,OACdC,QAlBNC,eAA0BC,SAClBC,UAAUC,UAAUC,UAAU3B,GACpCM,GAAU,GACVH,EAAUkB,QAAQC,UAAUE,EAC9B,WAiBQP,EADDZ,EACEuB,EAEAC,EAFS,CAACC,MAAO,GAAIC,OAAQ,SAOxC,CAEAlC,EAAiBmC,YAAc,eAExB,MAAMC,EAAepC,EAKtB,SAAUgC,EAAS/B,GACvB,OACEkB,EAAA,MAAA,IACMlB,EACJoC,MAAM,6BACNC,QAAQ,YACRC,KAAK,OACLC,OAAO,eACPC,YAAY,MACZC,cAAc,QACdC,eAAe,QAAOxC,SAAA,CAEtBiB,EAAA,OAAA,CAAMa,MAAM,KAAKC,OAAO,KAAKU,EAAE,IAAIC,EAAE,IAAIC,GAAG,IAAIC,GAAG,MACnD3B,EAAA,OAAA,CAAM4B,EAAE,8DAGd,CAEA,SAASjB,EAAU9B,GACjB,OACEmB,EAAA,MAAA,IACMnB,EACJoC,MAAM,6BACNC,QAAQ,YACRC,KAAK,OACLC,OAAO,eACPC,YAAY,MACZC,cAAc,QACdC,eAAe,QAAOxC,SAEtBiB,UAAM4B,EAAE,uBAGd"}
1
+ {"version":3,"file":"CopyableText.js","sources":["../../../src/Typography/CopyableText/CopyableText.tsx"],"sourcesContent":["\"use client\";\n\nimport type {\n PolymorphicComponentProps,\n PolymorphicComponentType,\n} from \"@studiocubics/types\";\nimport { cn } from \"@studiocubics/utils\";\nimport {\n type ComponentProps,\n type MouseEvent,\n useEffect,\n useState,\n type ElementType,\n} from \"react\";\nimport styles from \"./CopyableText.module.css\";\nimport { useDelayedAction } from \"@studiocubics/hooks\";\nimport { Button, type ButtonProps } from \"../../Inputs/Button/Button\";\n\nexport interface CopyableTextBaseProps {\n children: string;\n disabled?: boolean;\n slotProps?: {\n button?: ButtonProps;\n };\n}\n\nconst defaultElement = \"div\";\ntype DefaultElement = typeof defaultElement;\n\nexport type CopyableTextProps<C extends ElementType = DefaultElement> =\n PolymorphicComponentProps<C, CopyableTextBaseProps>;\n\nfunction CopyableTextBase<C extends ElementType = DefaultElement>(\n props: CopyableTextProps<C>,\n) {\n const {\n as,\n children,\n className,\n disabled = false,\n slotProps = {},\n ...rest\n } = props as CopyableTextProps<DefaultElement>;\n\n const [copied, setCopied] = useState(false);\n const delay = useDelayedAction();\n const Component = (as || defaultElement) as ElementType;\n const componentProps = { ...rest, className: cn(className, styles.root) };\n\n async function handleCopy(e: MouseEvent<HTMLButtonElement>) {\n await navigator.clipboard.writeText(children);\n setCopied(true);\n slotProps.button?.onClick?.(e);\n }\n useEffect(() => {\n if (copied) {\n delay(() => setCopied(false), 2000);\n }\n }, [delay, copied]);\n return (\n <Component {...componentProps}>\n <span>{children}</span>\n <Button\n disabled={disabled}\n square\n size=\"sm\"\n type=\"button\"\n {...slotProps.button}\n onClick={handleCopy}\n >\n {copied ? (\n <CheckIcon width={24} height={24} />\n ) : (\n <CopyIcon width={24} height={24} />\n )}\n </Button>\n </Component>\n );\n}\n\nCopyableTextBase.displayName = \"CopyableText\";\n\nexport const CopyableText = CopyableTextBase as PolymorphicComponentType<\n CopyableTextBaseProps,\n DefaultElement\n>;\n\nexport function CopyIcon(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 <rect width=\"14\" height=\"14\" x=\"8\" y=\"8\" rx=\"2\" ry=\"2\" />\n <path d=\"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2\" />\n </svg>\n );\n}\n// TODO convert to animated check icon\nfunction CheckIcon(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=\"M4 12 9 17l11 -11\" />\n </svg>\n );\n}\n"],"names":["CopyableTextBase","props","as","children","className","disabled","slotProps","rest","copied","setCopied","useState","delay","useDelayedAction","Component","componentProps","cn","styles","root","useEffect","_jsxs","_jsx","Button","square","size","type","button","onClick","async","e","navigator","clipboard","writeText","CheckIcon","CopyIcon","width","height","displayName","CopyableText","xmlns","viewBox","fill","stroke","strokeWidth","strokeLinecap","strokeLinejoin","x","y","rx","ry","d"],"mappings":"kTAgCA,SAASA,EACPC,GAEA,MAAMC,GACJA,EAAEC,SACFA,EAAQC,UACRA,EAASC,SACTA,GAAW,EAAKC,UAChBA,EAAY,CAAA,KACTC,GACDN,GAEGO,EAAQC,GAAaC,GAAS,GAC/BC,EAAQC,IACRC,EAAaX,GApBE,MAqBfY,EAAiB,IAAKP,EAAMH,UAAWW,EAAGX,EAAWY,EAAOC,OAYlE,OALAC,EAAU,KACJV,GACFG,EAAM,IAAMF,GAAU,GAAQ,MAE/B,CAACE,EAAOH,IAETW,EAACN,EAAS,IAAKC,EAAcX,SAAA,CAC3BiB,EAAA,OAAA,CAAAjB,SAAOA,IACPiB,EAACC,EAAM,CACLhB,SAAUA,EACViB,QAAM,EACNC,KAAK,KACLC,KAAK,YACDlB,EAAUmB,OACdC,QAnBNC,eAA0BC,SAClBC,UAAUC,UAAUC,UAAU5B,GACpCM,GAAU,GACVH,EAAUmB,QAAQC,UAAUE,EAC9B,EAeyBzB,SAGjBiB,EADDZ,EACEwB,EAEAC,EAFS,CAACC,MAAO,GAAIC,OAAQ,SAOxC,CAEAnC,EAAiBoC,YAAc,eAExB,MAAMC,EAAerC,EAKtB,SAAUiC,EAAShC,GACvB,OACEkB,EAAA,MAAA,IACMlB,EACJqC,MAAM,6BACNC,QAAQ,YACRC,KAAK,OACLC,OAAO,eACPC,YAAY,MACZC,cAAc,QACdC,eAAe,QAAOzC,SAAA,CAEtBiB,EAAA,OAAA,CAAMc,MAAM,KAAKC,OAAO,KAAKU,EAAE,IAAIC,EAAE,IAAIC,GAAG,IAAIC,GAAG,MACnD5B,EAAA,OAAA,CAAM6B,EAAE,8DAGd,CAEA,SAASjB,EAAU/B,GACjB,OACEmB,EAAA,MAAA,IACMnB,EACJqC,MAAM,6BACNC,QAAQ,YACRC,KAAK,OACLC,OAAO,eACPC,YAAY,MACZC,cAAc,QACdC,eAAe,QAAOzC,SAEtBiB,UAAM6B,EAAE,uBAGd"}
@@ -1,9 +1,9 @@
1
1
  import type { ReactNode } from "react";
2
2
  export interface PageTitleProps {
3
- title: ReactNode;
3
+ title?: ReactNode;
4
4
  actions?: ReactNode;
5
5
  subtitle?: ReactNode;
6
6
  size?: "sm" | "md" | "lg";
7
7
  noBorders?: boolean;
8
8
  }
9
- export declare function PageTitle({ title, subtitle, actions, size, noBorders, }: PageTitleProps): import("react/jsx-runtime").JSX.Element;
9
+ export declare function PageTitle({ title, subtitle, actions, size, noBorders, }: PageTitleProps): import("react/jsx-runtime").JSX.Element | undefined;
@@ -1,2 +1,2 @@
1
- import{jsxs as i,jsx as e}from"react/jsx-runtime";import r from"./PageTitle.module.css.js";import{cn as s}from"@studiocubics/utils";function o({title:o,subtitle:t,actions:c,size:n="md",noBorders:d=!1}){return i("div",{className:s(r.root,r[`size_${n}`],d?r.noBorder:""),children:[i("div",{className:r.main,children:[e("h1",{children:o}),e("h2",{children:t})]}),c&&e("div",{className:r.actions,children:c})]})}export{o as PageTitle};
1
+ import{jsxs as i,jsx as e}from"react/jsx-runtime";import r from"./PageTitle.module.css.js";import{cn as s}from"@studiocubics/utils";function o({title:o,subtitle:t,actions:c,size:n="md",noBorders:d=!1}){if(o||t||c)return i("div",{className:s(r.root,r[`size_${n}`],d?r.noBorder:""),children:[i("div",{className:r.main,children:[o&&e("h1",{children:o}),t&&e("h2",{children:t})]}),c&&e("div",{className:r.actions,children:c})]})}export{o as PageTitle};
2
2
  //# sourceMappingURL=PageTitle.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PageTitle.js","sources":["../../../src/Typography/PageTitle/PageTitle.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport styles from \"./PageTitle.module.css\";\nimport { cn } from \"@studiocubics/utils\";\n\nexport interface PageTitleProps {\n title: ReactNode;\n actions?: ReactNode;\n subtitle?: ReactNode;\n size?: \"sm\" | \"md\" | \"lg\";\n noBorders?: boolean;\n}\n\nexport function PageTitle({\n title,\n subtitle,\n actions,\n size = \"md\",\n noBorders = false,\n}: PageTitleProps) {\n return (\n <div\n className={cn(\n styles.root,\n styles[`size_${size}`],\n noBorders ? styles.noBorder : \"\"\n )}\n >\n <div className={styles.main}>\n <h1>{title}</h1>\n <h2>{subtitle}</h2>\n </div>\n {actions && <div className={styles.actions}>{actions}</div>}\n </div>\n );\n}\n"],"names":["PageTitle","title","subtitle","actions","size","noBorders","_jsxs","className","cn","styles","root","noBorder","children","main","_jsx"],"mappings":"6IAYgBA,GAAUC,MACxBA,EAAKC,SACLA,EAAQC,QACRA,EAAOC,KACPA,EAAO,KAAIC,UACXA,GAAY,IAEZ,OACEC,EAAA,MAAA,CACEC,UAAWC,EACTC,EAAOC,KACPD,EAAO,QAAQL,KACfC,EAAYI,EAAOE,SAAW,IAC/BC,SAAA,CAEDN,EAAA,MAAA,CAAKC,UAAWE,EAAOI,KAAID,SAAA,CACzBE,EAAA,KAAA,CAAAF,SAAKX,IACLa,EAAA,KAAA,CAAAF,SAAKV,OAENC,GAAWW,EAAA,MAAA,CAAKP,UAAWE,EAAON,QAAOS,SAAGT,MAGnD"}
1
+ {"version":3,"file":"PageTitle.js","sources":["../../../src/Typography/PageTitle/PageTitle.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport styles from \"./PageTitle.module.css\";\nimport { cn } from \"@studiocubics/utils\";\n\nexport interface PageTitleProps {\n title?: ReactNode;\n actions?: ReactNode;\n subtitle?: ReactNode;\n size?: \"sm\" | \"md\" | \"lg\";\n noBorders?: boolean;\n}\n\nexport function PageTitle({\n title,\n subtitle,\n actions,\n size = \"md\",\n noBorders = false,\n}: PageTitleProps) {\n if (!title && !subtitle && !actions) return;\n return (\n <div\n className={cn(\n styles.root,\n styles[`size_${size}`],\n noBorders ? styles.noBorder : \"\",\n )}\n >\n <div className={styles.main}>\n {title && <h1>{title}</h1>}\n {subtitle && <h2>{subtitle}</h2>}\n </div>\n {actions && <div className={styles.actions}>{actions}</div>}\n </div>\n );\n}\n"],"names":["PageTitle","title","subtitle","actions","size","noBorders","_jsxs","className","cn","styles","root","noBorder","children","main","_jsx"],"mappings":"6IAYgBA,GAAUC,MACxBA,EAAKC,SACLA,EAAQC,QACRA,EAAOC,KACPA,EAAO,KAAIC,UACXA,GAAY,IAEZ,GAAKJ,GAAUC,GAAaC,EAC5B,OACEG,EAAA,MAAA,CACEC,UAAWC,EACTC,EAAOC,KACPD,EAAO,QAAQL,KACfC,EAAYI,EAAOE,SAAW,IAC/BC,SAAA,CAEDN,EAAA,MAAA,CAAKC,UAAWE,EAAOI,KAAID,SAAA,CACxBX,GAASa,EAAA,KAAA,CAAAF,SAAKX,IACdC,GAAYY,iBAAKZ,OAEnBC,GAAWW,EAAA,MAAA,CAAKP,UAAWE,EAAON,QAAOS,SAAGT,MAGnD"}
@@ -0,0 +1,9 @@
1
+ import type { PolymorphicComponentProps, PolymorphicComponentType } from "@studiocubics/types";
2
+ import type { ElementType } from "react";
3
+ export interface VoidTextBaseProps {
4
+ }
5
+ declare const defaultElement = "p";
6
+ type DefaultElement = typeof defaultElement;
7
+ export type VoidTextProps<C extends ElementType = DefaultElement> = PolymorphicComponentProps<C, VoidTextBaseProps>;
8
+ export declare const VoidText: PolymorphicComponentType<VoidTextBaseProps, DefaultElement>;
9
+ export {};
@@ -0,0 +1,2 @@
1
+ import{jsx as o}from"react/jsx-runtime";import{cn as t}from"@studiocubics/utils";import s from"./VoidText.module.css.js";function e(e){const{as:i,children:r="No content available!",className:c,...a}=e,m=i||"p",n={className:t(c,s.root),...a};return o(m,{...n,children:r})}e.displayName="VoidText";const i=e;export{i as VoidText};
2
+ //# sourceMappingURL=VoidText.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VoidText.js","sources":["../../../src/Typography/VoidText/VoidText.tsx"],"sourcesContent":["import type {\n PolymorphicComponentProps,\n PolymorphicComponentType,\n} from \"@studiocubics/types\";\nimport { cn } from \"@studiocubics/utils\";\nimport type { ElementType } from \"react\";\nimport styles from \"./VoidText.module.css\";\n\nexport interface VoidTextBaseProps {}\n\nconst defaultElement = \"p\";\ntype DefaultElement = typeof defaultElement;\n\nexport type VoidTextProps<C extends ElementType = DefaultElement> =\n PolymorphicComponentProps<C, VoidTextBaseProps>;\n\nfunction VoidTextBase<C extends ElementType = DefaultElement>(\n props: VoidTextProps<C>,\n) {\n const {\n as,\n children = \"No content available!\",\n className,\n ...rest\n } = props as VoidTextProps<DefaultElement>;\n const Component = as || defaultElement;\n const componentProps = { className: cn(className, styles.root), ...rest };\n return <Component {...componentProps}>{children}</Component>;\n}\n\nVoidTextBase.displayName = \"VoidText\";\n\nexport const VoidText = VoidTextBase as PolymorphicComponentType<\n VoidTextBaseProps,\n DefaultElement\n>;\n"],"names":["VoidTextBase","props","as","children","className","rest","Component","componentProps","cn","styles","root","_jsx","displayName","VoidText"],"mappings":"yHAgBA,SAASA,EACPC,GAEA,MAAMC,GACJA,EAAEC,SACFA,EAAW,wBAAuBC,UAClCA,KACGC,GACDJ,EACEK,EAAYJ,GAfG,IAgBfK,EAAiB,CAAEH,UAAWI,EAAGJ,EAAWK,EAAOC,SAAUL,GACnE,OAAOM,EAACL,EAAS,IAAKC,EAAcJ,SAAGA,GACzC,CAEAH,EAAaY,YAAc,WAEpB,MAAMC,EAAWb"}
@@ -0,0 +1,2 @@
1
+ var o={root:"VoidText-module_root__otzOq"};export{o as default};
2
+ //# sourceMappingURL=VoidText.module.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VoidText.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -1,3 +1,4 @@
1
- export * from "./PageTitle/PageTitle";
2
1
  export * from "./ClampedText/ClampedText";
3
2
  export * from "./CopyableText/CopyableText";
3
+ export * from "./PageTitle/PageTitle";
4
+ export * from "./VoidText/VoidText";
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{background:var(--color-surface-alpha)}.CollectionItemCard-module_root__v3IlF{align-items:stretch;background-color:var(--color-background);border-radius:var(--shape-br-md);display:flex;flex-direction:column;overflow:hidden;pointer-events:none}.CollectionItemCard-module_image__TfkAn{align-items:center;display:flex;height:20svh;justify-content:center;overflow:hidden;width:100%;&>img{height:100%;object-fit:cover;width:100%}}.CollectionItemCard-module_main__47qRO{border-radius:calc(var(--shape-br-md) - var(--spacing-gap));color:var(--color-on-surface);display:flex;flex:1;flex-direction:column;gap:.1618em;margin:var(--spacing-gap);overflow:hidden;padding:var(--spacing-gap-2) calc(var(--spacing-gap-2)*1.618);pointer-events:all;transition:all var(--transition-time) var(--transition-tf);&>p{align-items:center;display:flex}}.CollectionItemCard-module_description__BQapV{color:var(--color-on-background-faint);font-size:.8em}.CollectionItemCard-module_subtitle__gThMk{color:var(--color-on-background-faint);font-size:1em}.CollectionItemCard-module_clickable__d3rRV{transition:all var(--transition-time) var(--transition-tf);&>.CollectionItemCard-module_main__47qRO{background:var(--color-background);cursor:pointer}&:has(.CollectionItemCard-module_main__47qRO:hover){background:var(--color-background-faint)}}.CollectionItemCard-module_title__B-sLi{align-items:center;display:flex;gap:var(--spacing-gap-2);&>h4{flex:1;font-size:1.2em}}.CollectionItemCard-module_footer__-8LZo{display:flex;justify-content:flex-end;pointer-events:all}@container (min-width:600px){.CollectionItemCard-module_root__v3IlF{flex-direction:row;&>.CollectionItemCard-module_image__TfkAn{aspect-ratio:1;height:auto;max-width:6rem;min-width:3rem;width:10vw}}}.ClampedText-module_root__WGLiO{-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.Chip-module_root__aw3YS{--badge-outline-color:var(--color-outline);--badge-color:var(--color-on-surface);--badge-background:var(--color-surface);align-items:center;background:var(--badge-background);border:1px solid var(--badge-outline-color);color:var(--badge-color);display:flex;flex-wrap:wrap;font-size:.9em;gap:var(--spacing-gap);width:fit-content}.Chip-module_outlined__MdLuF{background:none}.Chip-module_contained__h-xuY{border:none}.Chip-module_size_sm__v0VIz{border-radius:var(--shape-br-xs);font-size:.8em;padding:calc(var(--spacing-gap)/2) calc((var(--spacing-gap)/2)*1.618)}.Chip-module_size_md__Shvvz{border-radius:var(--shape-br-sm);padding:calc(var(--spacing-gap-2)/2) calc((var(--spacing-gap-2)/2)*1.618)}.Chip-module_size_lg__sqT26{border-radius:var(--shape-br-sm);font-size:1em;padding:calc(var(--spacing-gap-3)/2) calc((var(--spacing-gap-3)/2)*1.618)}.Chip-module_root__aw3YS[data-color=primary]{--badge-color:var(--color-primary);--badge-background:none;--badge-outline-color:var(--color-primary)}.Chip-module_root__aw3YS[data-color=secondary]{--badge-color:var(--color-secondary);--badge-background:none;--badge-outline-color:var(--color-secondary)}.Chip-module_root__aw3YS[data-color=error]{--badge-color:var(--color-error);--badge-background:none;--badge-outline-color:var(--color-error)}.Chip-module_contained__h-xuY[data-color=primary]{--badge-color:var(--color-on-primary);--badge-background:var(--color-primary)}.Chip-module_contained__h-xuY[data-color=secondary]{--badge-color:var(--color-on-secondary);--badge-background:var(--color-secondary)}.Chip-module_contained__h-xuY[data-color=error]{--badge-color:var(--color-on-error);--badge-background:var(--color-error)}.Ripple-module_container__4Dv-f{border-radius:inherit;inset:0;overflow:hidden;pointer-events:none;position:absolute}.Ripple-module_ripple__-a0Jv{--ripple-color:currentColor;--ripple-duration:750ms;animation:Ripple-module_ripple-expand__jWi54 var(--ripple-duration,.75s) var(--transition-tf);background:var(--ripple-color);border-radius:50%;filter:blur(10px);opacity:.6;pointer-events:none;position:absolute;transform:scale(0)}@keyframes Ripple-module_ripple-expand__jWi54{to{opacity:0;transform:scale(2)}}.Button-module_root__hmumx{--button-color:var(--color-on-background);--button-background:none;--button-hover-color:var(--color-on-background);--button-hover-background:var(--color-background-faint);--button-outline-color:var(--color-on-background);align-items:center;background:var(--button-background);border:none;color:var(--button-color);cursor:pointer;display:flex;font-family:var(--font-p);font-size:var(--fs-body2);font-weight:700;gap:var(--spacing-gap);justify-content:center;padding:var(--spacing-gap) calc(var(--spacing-gap-3)*1.618);position:relative;transition:all var(--transition-time) var(--transition-tf);&:not(:disabled):hover{background:color-mix(in srgb,var(--button-hover-background) 50%,transparent);color:var(--button-hover-color)}&:disabled{opacity:.5}}.Button-module_iconContainer__-VER1{align-items:center;display:flex;height:max-content;justify-content:center}.Button-module_square__Wu8jt{padding:var(--spacing-gap-2)}.Button-module_root__hmumx:disabled{cursor:not-allowed}.Button-module_root__hmumx:focus-visible{outline:var(--focus-ring)}.Button-module_size_sm__Qk6rp{border-radius:var(--shape-br-sm);font-size:.9em;padding:var(--spacing-gap) calc(var(--spacing-gap)*1.618);&.Button-module_square__Wu8jt{padding:var(--spacing-gap)}}.Button-module_size_md__qWVt-{border-radius:var(--shape-br-md);padding:var(--spacing-gap-2) calc(var(--spacing-gap-2)*1.618);&.Button-module_square__Wu8jt{padding:var(--spacing-gap-2)}}.Button-module_size_lg__e7Ely{border-radius:var(--shape-br-lg);font-size:var(--fs-body);padding:var(--spacing-gap-3) calc(var(--spacing-gap-3)*1.618);&.Button-module_square__Wu8jt{padding:var(--spacing-gap-3)}}.Button-module_contained__tlUyK{--button-color:var(--color-background);--button-background:var(--color-on-background);&:not(:disabled):hover{background:var(--button-hover-background)}}.Button-module_outlined__rgbFf{border:1px solid var(--button-outline-color)}.Button-module_position_absolute__NN8P1{position:absolute}.Button-module_position_relative__r0CV0{position:relative}.Button-module_position_fixed__LilZy{position:fixed}.Button-module_position_sticky__2ixpW{position:sticky}.Button-module_fullWidth__5o7qa{width:100%}.Button-module_root__hmumx[data-color=primary]{--button-color:var(--color-primary);--button-background:none;--button-hover-color:var(--color-on-primary-container);--button-hover-background:var(--color-primary-container);--button-outline-color:var(--color-primary)}.Button-module_root__hmumx[data-color=secondary]{--button-color:var(--color-secondary);--button-background:none;--button-hover-color:var(--color-on-secondary-container);--button-hover-background:var(--color-secondary-container);--button-outline-color:var(--color-secondary)}.Button-module_root__hmumx[data-color=error]{--button-color:var(--color-error);--button-background:none;--button-hover-color:var(--color-on-error-container);--button-hover-background:var(--color-error-container);--button-outline-color:var(--color-error)}.Button-module_contained__tlUyK[data-color=primary]{--button-color:var(--color-on-primary);--button-background:var(--color-primary)}.Button-module_contained__tlUyK[data-color=secondary]{--button-color:var(--color-on-secondary);--button-background:var(--color-secondary)}.Button-module_contained__tlUyK[data-color=error]{--button-color:var(--color-on-error);--button-background:var(--color-error)}.Tooltip-module_root__nip6a{--spacing-arrow-offset:6px;background:var(--color-surface);border-radius:var(--shape-br-sm);color:var(--color-on-surface);font-size:var(--fs-body2);font-weight:700;padding:var(--spacing-gap) var(--spacing-gap-2);pointer-events:none;position:fixed;text-align:center;z-index:9999}.Tooltip-module_root__nip6a.Tooltip-module_arrow-bottom__CuvK2{margin-bottom:var(--spacing-arrow-offset)}.Tooltip-module_root__nip6a.Tooltip-module_arrow-top__XaUyR{margin-top:var(--spacing-arrow-offset)}.Tooltip-module_root__nip6a.Tooltip-module_arrow-right__O1HnI{margin-left:var(--spacing-arrow-offset)}.Tooltip-module_root__nip6a.Tooltip-module_arrow-left__4o1J4{margin-right:var(--spacing-arrow-offset)}.Tooltip-module_root__nip6a.Tooltip-module_arrow-topLeft__WyNAm{border-top-left-radius:0}.Tooltip-module_root__nip6a.Tooltip-module_arrow-topRight__-ILdh{border-top-right-radius:0}.Tooltip-module_root__nip6a.Tooltip-module_arrow-bottomLeft__E6w40{border-bottom-left-radius:0}.Tooltip-module_root__nip6a.Tooltip-module_arrow-bottomRight__mefBZ{border-bottom-right-radius:0}.Tooltip-module_root__nip6a:after{content:"";height:0;position:absolute;width:0}.Tooltip-module_arrow-bottom__CuvK2:after{border-color:var(--color-surface) transparent transparent transparent;border-style:solid;border-width:var(--spacing-arrow-offset) var(--spacing-arrow-offset) 0 var(--spacing-arrow-offset);bottom:calc(var(--spacing-arrow-offset)*-1);left:50%;transform:translateX(-50%)}.Tooltip-module_arrow-top__XaUyR:after{border-color:transparent transparent var(--color-surface) transparent;border-style:solid;border-width:0 var(--spacing-arrow-offset) var(--spacing-arrow-offset) var(--spacing-arrow-offset);left:50%;top:calc(var(--spacing-arrow-offset)*-1);transform:translateX(-50%)}.Tooltip-module_arrow-right__O1HnI:after{border-color:transparent transparent transparent var(--color-surface);border-style:solid;border-width:var(--spacing-arrow-offset) 0 var(--spacing-arrow-offset) var(--spacing-arrow-offset);right:calc(var(--spacing-arrow-offset)*-1);top:50%;transform:translateY(-50%)}.Tooltip-module_arrow-left__4o1J4:after{border-color:transparent var(--color-surface) transparent transparent;border-style:solid;border-width:var(--spacing-arrow-offset) var(--spacing-arrow-offset) var(--spacing-arrow-offset) 0;left:calc(var(--spacing-arrow-offset)*-1);top:50%;transform:translateY(-50%)}.Tooltip-module_arrow-topLeft__WyNAm:after{left:0}.Tooltip-module_arrow-topLeft__WyNAm:after,.Tooltip-module_arrow-topRight__-ILdh:after{border-color:transparent transparent var(--color-surface) transparent;border-style:solid;border-width:0 var(--spacing-arrow-offset) var(--spacing-arrow-offset) var(--spacing-arrow-offset);top:calc(var(--spacing-arrow-offset)*-1)}.Tooltip-module_arrow-topRight__-ILdh:after{right:0}.Tooltip-module_arrow-bottomLeft__E6w40:after{left:0}.Tooltip-module_arrow-bottomLeft__E6w40:after,.Tooltip-module_arrow-bottomRight__mefBZ:after{border-color:var(--color-surface) transparent transparent transparent;border-style:solid;border-width:var(--spacing-arrow-offset) var(--spacing-arrow-offset) 0 var(--spacing-arrow-offset);bottom:calc(var(--spacing-arrow-offset)*-1)}.Tooltip-module_arrow-bottomRight__mefBZ:after{right:0}.Popover-module_root__HE-kk{background:none;border:none;position:absolute}.Popover-module_root__HE-kk.Popover-module_open__1aLk-::backdrop{cursor:auto}.GlassCard-module_root__rmCxh{--glass-tint:var(--color-primary);--glass-border-width:2px;--glass-border-radius:var(--shape-br-md);--glass-border-color:var(--color-outline);--glass-mouse-pointer-color:color-mix(in srgb,var(--color-primary) 50%,transparent);--glass-shadow:color-mix(in srgb,var(--color-primary) 15%,transparent);--glass-backdrop-blur:5px;--glass-position:relative;backdrop-filter:blur(var(--glass-backdrop-blur));border-radius:var(--glass-border-radius);box-shadow:inset 0 0 4px var(--glass-shadow);isolation:isolate;position:var(--glass-position);&:after{--glass-reflection-i:color-mix(in srgb,var(--glass-tint) 20%,transparent);--glass-reflection:color-mix(in srgb,var(--glass-tint) 40%,transparent);--glass-reflection-w:#ffffff79;background-image:linear-gradient(var(--gradient-angle,255deg),var(--glass-reflection-w) 0,var(--glass-reflection) .5%,transparent 30%,transparent 70%,var(--glass-reflection-i) 100%);opacity:var(--glass-reflection-intensity,1);z-index:-2}&:after,&:before{border-radius:inherit;content:"";inset:0;mask:linear-gradient(#000 0 0) exclude,linear-gradient(#000 0 0) content-box;padding:var(--glass-border-width);position:absolute}&:before{background:radial-gradient(250px circle at var(--mouse-x) var(--mouse-y),var(--glass-mouse-pointer-color),transparent 40%);opacity:1;pointer-events:none;transition:opacity var(--transition-time);z-index:-1}}.Accordion-module_summary__3uXXu{align-items:center;border-radius:var(--shape-br-md);cursor:pointer;display:flex;gap:var(--spacing-gap);isolation:isolate;padding:var(--spacing-gap);position:relative;transition:all var(--transition-time) var(--transition-tf);&:hover{background:var(--color-background-faint)}}.Accordion-module_highlight__YzcnA{inset:0;position:absolute;z-index:-1}.Accordion-module_summaryContent__-Wu52{border-radius:calc(var(--shape-br-md) - var(--spacing-gap));container-type:inline-size;flex:1;overflow:hidden}.Accordion-module_marker__7gmt8{flex:0 0 var(--spacing-gap-4);height:var(--spacing-gap-4);position:relative;width:var(--spacing-gap-4);&>svg{inset:0;position:absolute}}.Accordion-module_root__-tG1G{background:var(--color-background);border-radius:var(--shape-br-md);margin-block:0;overflow:hidden;transition:margin-block var(--transition-time) var(--transition-tf);@media (prefers-reduced-motion:no-preference){interpolate-size:allow-keywords}&::details-content{max-height:0;overflow:hidden;transition:content-visibility var(--transition-time) allow-discrete,max-height var(--transition-time) var(--transition-tf)}&[open]{margin-block:var(--spacing-gap-2);&>.Accordion-module_summary__3uXXu{background:var(--color-surface)}&::details-content{max-height:999px;@supports (interpolate-size:allow-keywords){max-height:auto}}}}.Accordion-module_content__NPbBr{padding:var(--spacing-gap-3)}.IdentityDisplay-module_root__nEI-t{border-radius:var(--shape-br-md);display:flex;flex-direction:column;overflow:hidden;padding:var(--spacing-gap-2);position:relative;transition:padding var(--transition-time) var(--transition-tf),width .1s var(--transition-time) var(--transition-tf),color var(--transition-time) var(--transition-tf),background var(--transition-time) var(--transition-tf)}.IdentityDisplay-module_clickable__Xloez{cursor:pointer;&:hover{background:var(--color-primary-container);color:var(--color-on-primary-container)}}.IdentityDisplay-module_main__27-fb{align-items:center;display:flex;gap:var(--spacing-gap-2)}.IdentityDisplay-module_image__YD-pm{align-items:center;display:flex;justify-content:center;&>img{border-radius:50%;height:48px;object-fit:cover;overflow:hidden;width:48px}}.IdentityDisplay-module_details__kSAvW{color:inherit;display:flex;flex-direction:column;& h4{font-size:1.1em;font-weight:700}& h4,&>p{overflow:hidden;text-align:left;text-overflow:ellipsis;white-space:nowrap}&>p{color:var(--color-on-background-faint);font-size:.9em;font-weight:400}}.IdentityDisplay-module_desc__QHEz8{font-size:.9em}.IdentityDisplay-module_image-only__LBjOr{padding:0;& .IdentityDisplay-module_image__YD-pm,& .IdentityDisplay-module_main__27-fb{width:100%}.IdentityDisplay-module_desc__QHEz8,.IdentityDisplay-module_details__kSAvW{display:none}}.IdentityDisplay-module_square__f2jb0{.IdentityDisplay-module_main__27-fb{align-items:center;flex-direction:column}.IdentityDisplay-module_details__kSAvW{&>h4,&>p{text-align:center}}.IdentityDisplay-module_desc__QHEz8{display:none}}.IdentityDisplay-module_compact__ilrg-{.IdentityDisplay-module_desc__QHEz8{display:none}}.PoweredByBanner-module_root__EtEjU{align-items:center;color:inherit;display:flex;gap:var(--spacing-gap);justify-content:center;padding-block:var(--spacing-gap);width:100%}.PoweredByBanner-module_size_sm__8S6Jb{font-size:var(--fs-body2)}.PoweredByBanner-module_size_md__HKrCD{font-size:var(--fs-body)}.PoweredByBanner-module_size_lg__6oEhl{font-size:var(--fs-body);font-weight:700}.Cursor-module_root__xyOg-{height:100vh;isolation:isolate;left:0;pointer-events:none;position:fixed;top:0;width:100%;z-index:-1}.Cursor-module_main__FUTOy{background:radial-gradient(41.94% 82.95% at 50% 50%,color-mix(in srgb,var(--color-primary) 50%,transparent) 0,color-mix(in srgb,var(--color-secondary) 50%,transparent) 100%);border-radius:50%;filter:blur(90px);position:absolute;transition-duration:var(--transition-time);transition-property:width,height,filter;transition-timing-function:var(--transition-tf);translate:-50% -50%}@keyframes Spinner-module_spinning__1J1HL{12%{x:13px;y:1px}25%{x:13px;y:1px}37%{x:13px;y:13px}50%{x:13px;y:13px}62%{x:1px;y:13px}75%{x:1px;y:13px}87%{x:1px;y:1px}}.Spinner-module_main__dBojo{animation:Spinner-module_spinning__1J1HL 1.6s linear infinite;animation-delay:-1.6s}.Spinner-module_trailing__jtCPy{fill-opacity:.5;animation-delay:-1s}.TransitionAnimation-module_growEnter__bI9tZ{max-height:0;max-width:0;opacity:0;overflow:hidden;transform:scale(0)}.TransitionAnimation-module_growEnterActive__yXQ1B{transition:transform var(--transition-tf),max-width var(--transition-tf),max-height var(--transition-tf),opacity var(--transition-tf)}.TransitionAnimation-module_growEnterActive__yXQ1B,.TransitionAnimation-module_growExit__xZ6nz{max-height:100vh;max-width:100vw;opacity:1;overflow:hidden;transform:scale(1)}.TransitionAnimation-module_growExitActive__t6tOi{max-height:0;max-width:0;opacity:0;overflow:hidden;transform:scale(0);transition:transform var(--transition-tf),max-width var(--transition-tf),max-height var(--transition-tf),opacity var(--transition-tf)}.TransitionAnimation-module_fadeEnter__ZQc-U{opacity:0}.TransitionAnimation-module_fadeEnterActive__ZQP8J{opacity:1;transition:opacity var(--transition-tf)}.TransitionAnimation-module_fadeExit__eYDrT{opacity:1}.TransitionAnimation-module_fadeExitActive__1HT2J{opacity:0;transition:opacity var(--transition-tf)}.TransitionAnimation-module_slideEnter__9OKMI{opacity:0;transform:translateY(-20px)}.TransitionAnimation-module_slideEnterActive__DMXWB{opacity:1;transform:translateY(0);transition:transform var(--transition-tf),opacity var(--transition-tf)}.TransitionAnimation-module_slideExit__P7dM2{opacity:1;transform:translateY(0)}.TransitionAnimation-module_slideExitActive__Z4put{opacity:0;transform:translateY(-20px);transition:transform var(--transition-tf),opacity var(--transition-tf)}.TransitionAnimation-module_zoomEnter__6ELcc{max-height:0;max-width:0;opacity:0;overflow:hidden;transform:scale(.5)}.TransitionAnimation-module_zoomEnterActive__2T6j4{transition:transform var(--transition-tf),max-width var(--transition-tf),max-height var(--transition-tf),opacity var(--transition-tf)}.TransitionAnimation-module_zoomEnterActive__2T6j4,.TransitionAnimation-module_zoomExit__SUc94{max-height:100vh;max-width:100vw;opacity:1;overflow:hidden;transform:scale(1)}.TransitionAnimation-module_zoomExitActive__QWH8r{max-height:0;max-width:0;opacity:0;overflow:hidden;transform:scale(1.5);transition:transform var(--transition-tf),max-width var(--transition-tf),max-height var(--transition-tf),opacity var(--transition-tf)}.InputErrors-module_root__APxhq{color:var(--color-error);display:flex;flex-direction:column;font-size:.9em}.Kbd-module_root__OFPCy{align-items:center;display:flex;gap:var(--spacing-gap)}.Kbd-module_kbd__F-c6z{--kbd-size-x:1;--kbd-size-y:1;--kbd-base:30px;display:flex;flex-direction:column;font-family:ui-monospace,SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:60%;gap:.1em;height:calc(var(--kbd-size-y)*var(--kbd-base));justify-content:center;padding:.2em;text-align:center;width:calc(var(--kbd-size-x)*var(--kbd-base));&.Kbd-module_surface__xpquz{background:#313133;border-radius:.4em;color:#ebd6dc}}.LabeledValue-module_root__Vu-iA{align-items:center;display:flex;flex-direction:row;padding-block:var(--spacing-gap);&>.LabeledValue-module_content__EIsuq{flex:1}&>label{color:var(--color-on-background-faint);font-size:.9em;padding-right:var(--spacing-gap-2)}&>.LabeledValue-module_content__EIsuq{border-left:1px solid var(--color-outline);padding-left:var(--spacing-gap-2)}}@container (max-width:400px){.LabeledValue-module_root__Vu-iA{flex-direction:column;&>label{padding-right:0}&>.LabeledValue-module_content__EIsuq{border-left:none;padding-left:0}}}.List-module_root__VY-ni{display:flex;flex-direction:column;list-style-type:none;padding-inline:var(--spacing-gap-3);position:relative}.List-module_root__VY-ni:has(.List-module_shortened__cbFoK){padding:0}.List-module_secondary__lU6qH{border-left:1px solid var(--color-outline);margin-left:var(--spacing-gap-3);margin-block:var(--spacing-gap-2);padding-inline:var(--spacing-gap)}.List-module_listItem__8lcu6{--list-color:var(--color-on-background);--list-background:transparent;--list-hover-color:var(--color-on-background);--list-hover-background:var(--color-background-faint);--list-selected-color:var(--color-primary);--list-selected-background:none;--list-selected-hover-color:var(--color-on-background);--list-selected-hover-background:none;align-items:center;background:var(--list-background);border-radius:var(--shape-br-sm);color:var(--list-color);display:flex;gap:var(--spacing-gap);justify-content:center;overflow:hidden;padding:calc(var(--spacing-gap-3)/1.75) calc(var(--spacing-gap-3)*1.618/1.75);position:relative;transition:all var(--transition-time) var(--transition-tf)}.List-module_listItem__8lcu6.List-module_clickable__3Fj4n{cursor:pointer}.List-module_listItem__8lcu6.List-module_clickable__3Fj4n:not(.List-module_selected__nXBs4):not(:disabled):hover{background:color-mix(in srgb,var(--list-hover-background) 50%,transparent);color:var(--list-hover-color)}.List-module_listItem__8lcu6:focus-visible{outline:var(--focus-ring)}.List-module_selected__nXBs4{background:var(--list-selected-background);color:var(--list-selected-color);&:hover{background:var(--list-selected-hover-background);color:var(--list-selected-hover-color)}}.List-module_disabled__RJxHm{background:var(--color-background-faint);color:var(--color-on-background-faint);cursor:not-allowed}.List-module_shortened__cbFoK{gap:0;&>:not(.List-module_primaryIcon__WyWmw){max-width:0}}.List-module_content__Q2M2b{flex:1;font-weight:700;overflow:hidden}.List-module_content__Q2M2b,.List-module_iconContainer__ZHqxe{align-items:center;color:inherit;display:flex;max-width:50ch;transition:max-width var(--transition-time) var(--transition-tf)}.List-module_iconContainer__ZHqxe{justify-content:center}.List-module_dropDownIcon__XfJpu{display:block;position:relative}.List-module_dropDownIcon__XfJpu.List-module_openSublist__Izz1t{rotate:180deg}.List-module_marker__o4rTn{--glass-border-radius:var(--shape-br-sm);background-color:color-mix(in srgb,var(--color-background) 50%,transparent);display:none;left:0;position:absolute;transition:width 0s linear,top var(--transition-time) var(--transition-tf),left var(--transition-time) var(--transition-tf);width:0;z-index:-1}.List-module_listItem__8lcu6[data-color=primary]{--list-color:var(--color-primary);--list-background:transparent;--list-hover-color:var(--color-on-primary-container);--list-hover-background:var(--color-primary-container);--list-selected-color:none;--list-selected-background:none;--list-selected-hover-color:var(--color-on-background);--list-selected-hover-background:none}.List-module_listItem__8lcu6[data-color=secondary]{--list-color:var(--color-secondary);--list-background:transparent;--list-hover-color:var(--color-on-secondary-container);--list-hover-background:var(--color-secondary-container);--list-selected-color:none;--list-selected-background:none;--list-selected-hover-color:var(--color-on-background);--list-selected-hover-background:none}.List-module_listItem__8lcu6[data-color=error]{--list-color:var(--color-error);--list-background:transparent;--list-hover-color:var(--color-on-error-container);--list-hover-background:var(--color-error-container);--list-selected-color:none;--list-selected-background:none;--list-selected-hover-color:var(--color-on-secondary);--list-selected-hover-background:none}.Skeleton-module_root__Ft3Ey{--skeleton-color-main:var(--color-surface);--skeleton-color-wave:color-mix(in srgb,var(--color-surface) 80%,var(--color-primary) 10%);animation:Skeleton-module_throb__SxiMC 2s var(--transition-tf) infinite;background-image:linear-gradient(to right,var(--skeleton-color-main) 0,var(--skeleton-color-wave) 50%,var(--skeleton-color-main) 100%);background-repeat:repeat-x;background-size:1000px 1000px;border-radius:var(--shape-br-md)}.Skeleton-module_large__LnDji{font-size:2rem}.Skeleton-module_medium__LjhY7{font-size:1.2rem}.Skeleton-module_small__j9Re2{font-size:.75rem}@keyframes Skeleton-module_wave__mC2od{0%{background-position:0 0}to{background-position:-200% 0}}@keyframes Skeleton-module_throb__SxiMC{0%{background:var(--color-surface)}50%{background:color-mix(in srgb,var(--color-primary) 10%,var(--color-surface) 100%)}to{background:var(--color-surface)}}.ConfirmationForm-module_root__ltcoI{color:var(--color-on-background-faint);display:flex;flex-direction:column;font-size:var(--fs-body2);gap:var(--spacing-gap-3);&>h4{border-bottom:1px solid var(--color-outline);color:var(--color-on-background-faint);font-size:1.2em;padding-bottom:var(--spacing-gap-3)}}.ConfirmationForm-module_danger__C1MyS{&>h4{color:var(--color-error)}}.ConfirmationForm-module_actions__TSHEJ{display:flex;gap:var(--spacing-gap-2);justify-content:flex-end}.CheckboxGroup-module_root__yODdU{display:flex;flex-direction:column;gap:var(--spacing-gap-2);padding-top:var(--spacing-gap-3)}.CheckboxGroup-module_legend__q-7v4{font-family:var(--font-h);font-weight:700}.Checkbox-module_root__52eFu{--input-border:var(--color-outline);--input-color:var(--color-on-surface);--input-fs:var(--fs-body2);--input-background:var(--color-surface);--input-focus-background:var(--color-background);--input-checked-color:var(--color-surface);--input-checked-background:var(--color-on-surface);--input-indeterminate-color:var(--color-surface);--input-indeterminate-background:var(--color-on-surface);align-items:center;display:flex;gap:var(--spacing-gap-2)}.Checkbox-module_inputWrapper__JZjHc{border-radius:var(--shape-br-xs);display:flex;height:fit-content;overflow:hidden;position:relative;&>input[type=checkbox]{background:var(--input-background);border:2.3px solid var(--input-border);border-radius:inherit;color:var(--input-color);cursor:pointer;font:inherit;height:var(--spacing-gap-4);transition:all var(--transition-time) var(--transition-tf);width:var(--spacing-gap-4)}&:has(input[type=checkbox]:checked){--input-color:var(--input-checked-color);--input-background:var(--input-checked-background)}&:has(input[type=checkbox]:indeterminate){--input-color:var(--input-indeterminate-color);--input-background:var(--input-indeterminate-background)}}.Checkbox-module_inputWrapper__JZjHc>span{color:var(--input-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 var(--transition-time) var(--transition-tf) forwards}.Checkbox-module_hide__j-2PL path{animation:Checkbox-module_draw-check__THEN8 var(--transition-time) var(--transition-tf) reverse}@keyframes Checkbox-module_draw-check__THEN8{to{stroke-dashoffset:0}}.Checkbox-module_label__4Llik{cursor:pointer}.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}.Select-module_root__dxgVk{--input-border:var(--color-outline);--input-color:var(--color-on-surface);--input-fs:var(--fs-body2);--input-background:var(--color-surface);--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)}}.Switch-module_root__iigu-{--switch-track-width:54px;--switch-track-height:30px;--switch-thumb-width:60%;--switch-track-color:var(--color-background-alpha);--switch-track-checked-color:var(--color-background);--switch-thumb-color:var(--color-primary-container);--switch-thumb-checked-color:var(--color-primary);--switch-thumb-text-color:var(--color-on-primary-container);--switch-thumb-checked-text-color:var(--color-on-primary);align-items:center;display:flex;gap:var(--spacing-gap-2);&:not(.Switch-module_disabled__OpgQK) .Switch-module_switch__JRFZI:hover .Switch-module_thumb__s4iLS{scale:1}}.Switch-module_inputWrapper__o8uEI{height:var(--switch-track-height);overflow:hidden;padding-inline:.2em;position:relative;width:var(--switch-track-width)}.Switch-module_disabled__OpgQK{--switch-thumb-color:var(--color-surface-alpha);--switch-thumb-text-color:var(--color-on-surface);--switch-thumb-checked-color:var(--color-background-faint);--switch-thumb-checked-text-color:var(--color-on-background-faint);& .Switch-module_label__vk4At,& .Switch-module_switch__JRFZI{cursor:not-allowed}}.Switch-module_input__pSFbl{inset:0;opacity:0;position:absolute}.Switch-module_inputWrapper__o8uEI:has(.Switch-module_input__pSFbl:focus) .Switch-module_switch__JRFZI{background:var(--switch-track-checked-color);border:var(--focus-ring)}.Switch-module_switch__JRFZI{background-color:var(--switch-track-color);border:1px solid var(--color-outline);border-radius:var(--shape-br-md);cursor:pointer;display:block;height:100%;position:relative;width:100%;&.Switch-module_checked__7JJ9o{background:var(--switch-track-checked-color);& .Switch-module_thumb__s4iLS{animation:Switch-module_checkon__B-djH var(--transition-time) var(--transition-tf) forwards;background-color:var(--switch-thumb-checked-color);color:var(--switch-thumb-checked-text-color);left:50%}}}.Switch-module_thumb__s4iLS{align-items:center;animation:Switch-module_checkoff__8YwSV var(--transition-time) var(--transition-tf) forwards;background-color:var(--switch-thumb-color);border-radius:var(--shape-br-md);color:var(--switch-thumb-text-color);display:flex;height:100%;justify-content:center;left:0;position:absolute;scale:80%;top:50%;transition:all var(--transition-time) var(--transition-tf);translate:0 -50%;width:var(--switch-thumb-width)}.Switch-module_label__vk4At{cursor:pointer}@keyframes Switch-module_checkon__B-djH{0%{height:100%;left:0;width:var(--switch-thumb-width)}50%{height:80%;left:0;width:100%}to{height:100%;left:calc(100% - var(--switch-thumb-width));width:var(--switch-thumb-width)}}@keyframes Switch-module_checkoff__8YwSV{0%{height:100%;left:50%;width:var(--switch-thumb-width)}50%{height:80%;left:0;width:100%}to{height:100%;left:0;width:var(--switch-thumb-width)}}.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_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_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)}}.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-faint);--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)}}.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_root__tN0RQ::backdrop{backdrop-filter:var(--backdrop-blur)}.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{--bar-color:var(--color-background-alpha);--bar-tab-color-text:var(--color-on-background);--bar-marker-color:transparent;--bar-marker-color-text:var(--color-primary);--bar-marker-hover-text:var(--color-on-background);backdrop-filter:blur(5px);background-color:var(--bar-color);border-radius:var(--shape-br-sm);display:flex;margin-inline:auto;max-width:100%;overflow:hidden}.TabsBar-module_root__Uve19[data-color=primary]{--bar-color:var(--color-primary-container);--bar-tab-color-text:var(--color-on-primary-container);--bar-marker-color:var(--color-primary);--bar-marker-color-text:var(--color-on-primary);--bar-marker-hover-text:var(--color-on-primary-container)}.TabsBar-module_root__Uve19[data-color=secondary]{--bar-color:var(--color-secondary-container);--bar-tab-color-text:var(--color-on-secondary-container);--bar-marker-color:var(--color-secondary);--bar-marker-color-text:var(--color-on-secondary);--bar-marker-hover-text:var(--color-on-secondary-container)}.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(--bar-tab-color-text)}.TabsBar-module_active__ESPgA{color:var(--bar-marker-color-text);transition:color var(--transition-time) var(--transition-tf)}.TabsBar-module_active__ESPgA:hover{color:var(--bar-marker-hover-text)}.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(--bar-marker-color);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-on-background);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(--color-background-faint);color:var(--color-on-surface)}.Tab-module_selected__vToav{color:var(--color-primary);font-weight:700;&:hover{background-color:transparent;color:var(--color-on-surface)}}.Tab-module_disabled__Leret{color:var(--color-on-background-faint);cursor:not-allowed}.Tab-module_iconContainer__-SQ6s{align-items:center;color:inherit;display:flex;justify-content:center}.PageLayoutTabs-module_body__baK6C{padding-inline:var(--spacing-gap-3)}.SectionWrapper-module_root__K-O4Y{display:grid;gap:var(--spacing-gap-2);grid-template-columns:1fr;padding-block:var(--spacing-gap-3);padding-inline:var(--spacing-gap-4)}.SectionWrapper-module_header__8-h-6{&>h4{font-size:1em}&>p{color:var(--color-on-background-faint);font-size:var(--fs-body2)}}.SectionWrapper-module_root__K-O4Y:not(.SectionWrapper-module_noBorders__brOqe){border-top:1px solid var(--color-outline)}.SectionWrapper-module_content__Ruu8X{container-type:inline-size;display:flex;flex-direction:column;font-size:var(--fs-body2)}@container (min-width:600px){.SectionWrapper-module_root__K-O4Y{grid-template-columns:.4fr 1fr}}.Sidebar-module_root__1stxg{--sidebar-closed-width:4rem;--sidebar-open-width:20rem;--sidebar-body-height:65dvh;--sidebar-header-height:4.875rem;--sidebar-color-surface:var(--color-surface-alpha);display:flex;flex-direction:column;gap:var(--spacing-gap);height:100%;isolation:isolate}@media (min-width:600px){.Sidebar-module_root__1stxg{flex-direction:row}}.SidebarBody-module_root__yPbfH{backdrop-filter:var(--backdrop-blur);background-color:var(--color-surface-alpha);height:var(--sidebar-body-height);left:-100%;overflow-x:hidden;position:fixed;top:var(--sidebar-header-height);transition:left var(--transition-time) var(--transition-tf);width:var(--sidebar-open-width)}.SidebarBody-module_open__gtCKF{left:0;overflow-x:auto}@media (min-width:600px){.SidebarBody-module_root__yPbfH{backdrop-filter:none;background-color:transparent;flex:1;height:unset;left:0;position:relative;top:0;width:unset}.SidebarBody-module_open__gtCKF{left:0}}.SidebarDrawer-module_root__CJch2{background:var(--color-surface);display:flex;flex-direction:row;transition:width var(--transition-time) var(--transition-tf);width:100%;z-index:-1}@media (min-width:600px){.SidebarDrawer-module_root__CJch2{background:var(--sidebar-color-surface);flex-direction:column;width:var(--sidebar-closed-width);z-index:0}.SidebarDrawer-module_open__E60Tc{width:var(--sidebar-open-width)}}.SidebarFooter-module_root__AdFmj{backdrop-filter:var(--backdrop-blur);background-color:var(--color-surface-alpha);height:calc(100dvh - var(--sidebar-body-height) - var(--sidebar-header-height));left:-100%;overflow:auto;padding-bottom:var(--spacing-gap-2);padding-top:var(--spacing-gap-1);position:fixed;top:calc(var(--sidebar-header-height) + var(--sidebar-body-height));transition:left var(--transition-time) var(--transition-tf);width:var(--sidebar-open-width)}.SidebarFooter-module_open__qHsZf{left:0}@media (min-width:600px){.SidebarFooter-module_root__AdFmj{backdrop-filter:none;background-color:transparent;height:unset;left:0;position:relative;top:0;width:unset}.SidebarFooter-module_open__qHsZf{left:0}}.SidebarViewport-module_root__KAGAg{container-type:inline-size;flex:1;overflow:auto;z-index:-3}@media (min-width:600px){.SidebarViewport-module_root__KAGAg{z-index:0}}.Table-module_root__-0lhT{max-height:100%;max-width:100%;overflow:auto}.Table-module_table__f1fEX{border-radius:var(--shape-br-md);display:grid;font-family:system-ui,-apple-system,BlinkMacSystemFont,sans-serif;font-size:var(--fs-body2);line-height:1.4;overflow:hidden;width:100%}.Table-module_tableCell__tKgEQ{background:var(--color-background);border-bottom:1px solid var(--color-outline);border-right:1px solid var(--color-outline);overflow:hidden;padding:8px 12px;text-overflow:ellipsis;user-select:none;white-space:nowrap;&:hover{background:var(--color-background-faint)}&:focus-visible{outline:2px solid var(--color-primary);outline-offset:-2px}&:nth-child(n){border-right:none}&[data-selected=true]{background:var(--color-surface);outline:2px solid var(--color-primary);outline-offset:-2px;z-index:1}}.Pagination-module_root__at76F{display:flex;flex-wrap:wrap;gap:var(--spacing-gap-2);list-style-type:none}.Pagination-module_item__2GFks{--pagination-item-fs:var(--fs-body2);align-items:center;border-radius:var(--shape-br-sm);color:var(--color-on-background);cursor:pointer;display:flex;font-size:var(--pagination-item-fs);height:32px;justify-content:center;min-width:fit-content;padding-inline:var(--spacing-gap);transition:all var(--transition-time) var(--transition-tf);width:32px}.Pagination-module_disabled__KG8Cb{cursor:not-allowed;opacity:.5}.Pagination-module_item__2GFks:not(.Pagination-module_disabled__KG8Cb):hover{background:var(--color-surface)}.Pagination-module_activeItem__BVg0A{outline:1px solid var(--color-primary)}.Pagination-module_icon__OcxQW>svg{--pagination-item-icon-size:calc(var(--pagination-item-fs)*1.25);height:var(--pagination-item-icon-size);width:var(--pagination-item-icon-size)}.Pagination-module_icon__OcxQW:nth-child(2)~.Pagination-module_icon__OcxQW{transform:rotate(180deg)}.Breadcrumbs-module_root__KmBxB{align-items:center;display:flex;gap:1ch;&>svg{color:var(--color-on-background-faint)}}.Breadcrumbs-module_item__G3HWH{color:var(--color-on-background-faint);display:content;&:not(.Breadcrumbs-module_activeItem__-C8yn):hover{color:var(--color-primary)}}.Breadcrumbs-module_activeItem__-C8yn{color:var(--color-on-background)}.Breadcrumbs-module_ellipses__R-y7b{color:var(--color-on-background-faint)}.CopyableText-module_root__bhwTN{align-items:center;display:flex;gap:var(--spacing-gap);&>span{-ms-overflow-style:none;background-color:var(--color-surface);border-radius:var(--shape-br-sm);flex:1;font-size:.9em;overflow:auto hidden;padding:var(--spacing-gap);scrollbar-width:none;text-overflow:ellipsis;white-space:nowrap;&::-webkit-scrollbar{display:none}}}
1
+ .Card-module_square__SK-KQ{aspect-ratio:1}.Card-module_fullWidth__pIEIZ{width:100%}.Card-module_size_sm__B3eSI{border-radius:var(--shape-br-sm);padding:var(--spacing-gap-2)}.Card-module_size_md__15alI{border-radius:var(--shape-br-md);padding:var(--spacing-gap-4)}.Card-module_size_lg__HCTUY{border-radius:var(--shape-br-lg);padding:var(--spacing-gap-6)}.Card-module_outlined__TPads{background:none;border:1px solid var(--color-outline)}.Card-module_contained__EFPqh{backdrop-filter:var(--backdrop-blur);background:var(--color-surface-alpha)}.CollectionItemCard-module_root__v3IlF{align-items:stretch;background-color:var(--color-background);border-radius:var(--shape-br-md);display:flex;flex-direction:column;overflow:hidden;pointer-events:none}.CollectionItemCard-module_image__TfkAn{align-items:center;display:flex;height:20svh;justify-content:center;overflow:hidden;width:100%;&>img{height:100%;object-fit:cover;width:100%}}.CollectionItemCard-module_main__47qRO{border-radius:calc(var(--shape-br-md) - var(--spacing-gap));color:var(--color-on-surface);display:flex;flex:1;flex-direction:column;gap:.1618em;margin:var(--spacing-gap);overflow:hidden;padding:var(--spacing-gap-2) calc(var(--spacing-gap-2)*1.618);pointer-events:all;transition:all var(--transition-time) var(--transition-tf);&>p{align-items:center;display:flex}}.CollectionItemCard-module_description__BQapV{color:var(--color-on-background-faint);font-size:.8em}.CollectionItemCard-module_subtitle__gThMk{color:var(--color-on-background-faint);font-size:1em}.CollectionItemCard-module_clickable__d3rRV{transition:all var(--transition-time) var(--transition-tf);&>.CollectionItemCard-module_main__47qRO{background:var(--color-background);cursor:pointer}&:has(.CollectionItemCard-module_main__47qRO:hover){background:var(--color-background-faint)}}.CollectionItemCard-module_title__B-sLi{align-items:center;display:flex;gap:var(--spacing-gap-2);&>h4{flex:1;font-size:1.2em}}.CollectionItemCard-module_footer__-8LZo{display:flex;justify-content:flex-end;pointer-events:all}@container (min-width:600px){.CollectionItemCard-module_root__v3IlF{flex-direction:row;&>.CollectionItemCard-module_image__TfkAn{aspect-ratio:1;height:auto;max-width:6rem;min-width:3rem;width:10vw}}}.ClampedText-module_root__WGLiO{-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.Chip-module_root__aw3YS{--badge-outline-color:var(--color-outline);--badge-color:var(--color-on-surface);--badge-background:var(--color-surface);align-items:center;background:var(--badge-background);border:1px solid var(--badge-outline-color);color:var(--badge-color);display:flex;flex-wrap:wrap;font-size:.9em;gap:var(--spacing-gap);width:fit-content}.Chip-module_outlined__MdLuF{background:none}.Chip-module_contained__h-xuY{border:none}.Chip-module_size_sm__v0VIz{border-radius:var(--shape-br-xs);font-size:.8em;padding:calc(var(--spacing-gap)/2) calc((var(--spacing-gap)/2)*1.618)}.Chip-module_size_md__Shvvz{border-radius:var(--shape-br-sm);padding:calc(var(--spacing-gap-2)/2) calc((var(--spacing-gap-2)/2)*1.618)}.Chip-module_size_lg__sqT26{border-radius:var(--shape-br-sm);font-size:1em;padding:calc(var(--spacing-gap-3)/2) calc((var(--spacing-gap-3)/2)*1.618)}.Chip-module_root__aw3YS[data-color=primary]{--badge-color:var(--color-primary);--badge-background:none;--badge-outline-color:var(--color-primary)}.Chip-module_root__aw3YS[data-color=secondary]{--badge-color:var(--color-secondary);--badge-background:none;--badge-outline-color:var(--color-secondary)}.Chip-module_root__aw3YS[data-color=error]{--badge-color:var(--color-error);--badge-background:none;--badge-outline-color:var(--color-error)}.Chip-module_contained__h-xuY[data-color=primary]{--badge-color:var(--color-on-primary);--badge-background:var(--color-primary)}.Chip-module_contained__h-xuY[data-color=secondary]{--badge-color:var(--color-on-secondary);--badge-background:var(--color-secondary)}.Chip-module_contained__h-xuY[data-color=error]{--badge-color:var(--color-on-error);--badge-background:var(--color-error)}.Ripple-module_container__4Dv-f{border-radius:inherit;inset:0;overflow:hidden;pointer-events:none;position:absolute}.Ripple-module_ripple__-a0Jv{--ripple-color:currentColor;--ripple-duration:750ms;animation:Ripple-module_ripple-expand__jWi54 var(--ripple-duration,.75s) var(--transition-tf);background:var(--ripple-color);border-radius:50%;filter:blur(10px);opacity:.6;pointer-events:none;position:absolute;transform:scale(0)}@keyframes Ripple-module_ripple-expand__jWi54{to{opacity:0;transform:scale(2)}}.Button-module_root__hmumx{--button-color:var(--color-on-background);--button-background:none;--button-hover-color:var(--color-on-background);--button-hover-background:var(--color-background-faint);--button-outline-color:var(--color-on-background);align-items:center;background:var(--button-background);border:none;color:var(--button-color);cursor:pointer;display:flex;font-family:var(--font-p);font-size:var(--fs-body2);font-weight:700;gap:var(--spacing-gap);justify-content:center;padding:var(--spacing-gap) calc(var(--spacing-gap-3)*1.618);position:relative;transition:all var(--transition-time) var(--transition-tf);&:not(:disabled):hover{background:color-mix(in srgb,var(--button-hover-background) 50%,transparent);color:var(--button-hover-color)}&:disabled{opacity:.5}}.Button-module_iconContainer__-VER1{align-items:center;display:flex;height:max-content;justify-content:center}.Button-module_square__Wu8jt{padding:var(--spacing-gap-2)}.Button-module_root__hmumx:disabled{cursor:not-allowed}.Button-module_root__hmumx:focus-visible{outline:var(--focus-ring)}.Button-module_size_sm__Qk6rp{border-radius:var(--shape-br-sm);font-size:.9em;padding:var(--spacing-gap) calc(var(--spacing-gap)*1.618);&.Button-module_square__Wu8jt{padding:var(--spacing-gap)}}.Button-module_size_md__qWVt-{border-radius:var(--shape-br-md);padding:var(--spacing-gap-2) calc(var(--spacing-gap-2)*1.618);&.Button-module_square__Wu8jt{padding:var(--spacing-gap-2)}}.Button-module_size_lg__e7Ely{border-radius:var(--shape-br-lg);font-size:var(--fs-body);padding:var(--spacing-gap-3) calc(var(--spacing-gap-3)*1.618);&.Button-module_square__Wu8jt{padding:var(--spacing-gap-3)}}.Button-module_contained__tlUyK{--button-color:var(--color-background);--button-background:var(--color-on-background);&:not(:disabled):hover{background:var(--button-hover-background)}}.Button-module_outlined__rgbFf{border:1px solid var(--button-outline-color)}.Button-module_position_absolute__NN8P1{position:absolute}.Button-module_position_relative__r0CV0{position:relative}.Button-module_position_fixed__LilZy{position:fixed}.Button-module_position_sticky__2ixpW{position:sticky}.Button-module_fullWidth__5o7qa{width:100%}.Button-module_root__hmumx[data-color=primary]{--button-color:var(--color-primary);--button-background:none;--button-hover-color:var(--color-on-primary-container);--button-hover-background:var(--color-primary-container);--button-outline-color:var(--color-primary)}.Button-module_root__hmumx[data-color=secondary]{--button-color:var(--color-secondary);--button-background:none;--button-hover-color:var(--color-on-secondary-container);--button-hover-background:var(--color-secondary-container);--button-outline-color:var(--color-secondary)}.Button-module_root__hmumx[data-color=error]{--button-color:var(--color-error);--button-background:none;--button-hover-color:var(--color-on-error-container);--button-hover-background:var(--color-error-container);--button-outline-color:var(--color-error)}.Button-module_contained__tlUyK[data-color=primary]{--button-color:var(--color-on-primary);--button-background:var(--color-primary)}.Button-module_contained__tlUyK[data-color=secondary]{--button-color:var(--color-on-secondary);--button-background:var(--color-secondary)}.Button-module_contained__tlUyK[data-color=error]{--button-color:var(--color-on-error);--button-background:var(--color-error)}.Tooltip-module_root__nip6a{--spacing-arrow-offset:6px;background:var(--color-surface);border-radius:var(--shape-br-sm);color:var(--color-on-surface);font-size:var(--fs-body2);font-weight:700;padding:var(--spacing-gap) var(--spacing-gap-2);pointer-events:none;position:fixed;text-align:center;z-index:9999}.Tooltip-module_root__nip6a.Tooltip-module_arrow-bottom__CuvK2{margin-bottom:var(--spacing-arrow-offset)}.Tooltip-module_root__nip6a.Tooltip-module_arrow-top__XaUyR{margin-top:var(--spacing-arrow-offset)}.Tooltip-module_root__nip6a.Tooltip-module_arrow-right__O1HnI{margin-left:var(--spacing-arrow-offset)}.Tooltip-module_root__nip6a.Tooltip-module_arrow-left__4o1J4{margin-right:var(--spacing-arrow-offset)}.Tooltip-module_root__nip6a.Tooltip-module_arrow-topLeft__WyNAm{border-top-left-radius:0}.Tooltip-module_root__nip6a.Tooltip-module_arrow-topRight__-ILdh{border-top-right-radius:0}.Tooltip-module_root__nip6a.Tooltip-module_arrow-bottomLeft__E6w40{border-bottom-left-radius:0}.Tooltip-module_root__nip6a.Tooltip-module_arrow-bottomRight__mefBZ{border-bottom-right-radius:0}.Tooltip-module_root__nip6a:after{content:"";height:0;position:absolute;width:0}.Tooltip-module_arrow-bottom__CuvK2:after{border-color:var(--color-surface) transparent transparent transparent;border-style:solid;border-width:var(--spacing-arrow-offset) var(--spacing-arrow-offset) 0 var(--spacing-arrow-offset);bottom:calc(var(--spacing-arrow-offset)*-1);left:50%;transform:translateX(-50%)}.Tooltip-module_arrow-top__XaUyR:after{border-color:transparent transparent var(--color-surface) transparent;border-style:solid;border-width:0 var(--spacing-arrow-offset) var(--spacing-arrow-offset) var(--spacing-arrow-offset);left:50%;top:calc(var(--spacing-arrow-offset)*-1);transform:translateX(-50%)}.Tooltip-module_arrow-right__O1HnI:after{border-color:transparent transparent transparent var(--color-surface);border-style:solid;border-width:var(--spacing-arrow-offset) 0 var(--spacing-arrow-offset) var(--spacing-arrow-offset);right:calc(var(--spacing-arrow-offset)*-1);top:50%;transform:translateY(-50%)}.Tooltip-module_arrow-left__4o1J4:after{border-color:transparent var(--color-surface) transparent transparent;border-style:solid;border-width:var(--spacing-arrow-offset) var(--spacing-arrow-offset) var(--spacing-arrow-offset) 0;left:calc(var(--spacing-arrow-offset)*-1);top:50%;transform:translateY(-50%)}.Tooltip-module_arrow-topLeft__WyNAm:after{left:0}.Tooltip-module_arrow-topLeft__WyNAm:after,.Tooltip-module_arrow-topRight__-ILdh:after{border-color:transparent transparent var(--color-surface) transparent;border-style:solid;border-width:0 var(--spacing-arrow-offset) var(--spacing-arrow-offset) var(--spacing-arrow-offset);top:calc(var(--spacing-arrow-offset)*-1)}.Tooltip-module_arrow-topRight__-ILdh:after{right:0}.Tooltip-module_arrow-bottomLeft__E6w40:after{left:0}.Tooltip-module_arrow-bottomLeft__E6w40:after,.Tooltip-module_arrow-bottomRight__mefBZ:after{border-color:var(--color-surface) transparent transparent transparent;border-style:solid;border-width:var(--spacing-arrow-offset) var(--spacing-arrow-offset) 0 var(--spacing-arrow-offset);bottom:calc(var(--spacing-arrow-offset)*-1)}.Tooltip-module_arrow-bottomRight__mefBZ:after{right:0}.Popover-module_root__HE-kk{background:none;border:none;position:absolute}.Popover-module_root__HE-kk.Popover-module_open__1aLk-::backdrop{cursor:auto}.Dialog-module_root__tN0RQ[open]{backdrop-filter:var(--backdrop-blur);background-color:var(--color-surface);border-radius:var(--shape-br-lg);margin:auto;max-height:80%;max-width:45rem;min-width:350px;overflow:hidden;padding:var(--spacing-gap-6);width:50%}.Dialog-module_root__tN0RQ::backdrop{backdrop-filter:var(--backdrop-blur)}.GlassCard-module_root__rmCxh{--glass-tint:var(--color-primary);--glass-border-width:2px;--glass-border-radius:var(--shape-br-md);--glass-border-color:var(--color-outline);--glass-mouse-pointer-color:color-mix(in srgb,var(--color-primary) 50%,transparent);--glass-shadow:color-mix(in srgb,var(--color-primary) 15%,transparent);--glass-backdrop-blur:5px;--glass-position:relative;backdrop-filter:blur(var(--glass-backdrop-blur));border-radius:var(--glass-border-radius);box-shadow:inset 0 0 4px var(--glass-shadow);isolation:isolate;position:var(--glass-position);&:after{--glass-reflection-i:color-mix(in srgb,var(--glass-tint) 20%,transparent);--glass-reflection:color-mix(in srgb,var(--glass-tint) 40%,transparent);--glass-reflection-w:#ffffff79;background-image:linear-gradient(var(--gradient-angle,255deg),var(--glass-reflection-w) 0,var(--glass-reflection) .5%,transparent 30%,transparent 70%,var(--glass-reflection-i) 100%);opacity:var(--glass-reflection-intensity,1);z-index:-2}&:after,&:before{border-radius:inherit;content:"";inset:0;mask:linear-gradient(#000 0 0) exclude,linear-gradient(#000 0 0) content-box;padding:var(--glass-border-width);position:absolute}&:before{background:radial-gradient(250px circle at var(--mouse-x) var(--mouse-y),var(--glass-mouse-pointer-color),transparent 40%);opacity:1;pointer-events:none;transition:opacity var(--transition-time);z-index:-1}}.Accordion-module_summary__3uXXu{align-items:center;border-radius:var(--shape-br-md);cursor:pointer;display:flex;gap:var(--spacing-gap);isolation:isolate;padding:var(--spacing-gap);position:relative;transition:all var(--transition-time) var(--transition-tf);&:hover{background:var(--color-background-faint)}}.Accordion-module_highlight__YzcnA{inset:0;position:absolute;z-index:-1}.Accordion-module_summaryContent__-Wu52{border-radius:calc(var(--shape-br-md) - var(--spacing-gap));container-type:inline-size;flex:1;overflow:hidden}.Accordion-module_marker__7gmt8{flex:0 0 var(--spacing-gap-4);height:var(--spacing-gap-4);position:relative;width:var(--spacing-gap-4);&>svg{inset:0;position:absolute}}.Accordion-module_root__-tG1G{background:var(--color-background);border-radius:var(--shape-br-md);margin-block:0;overflow:hidden;transition:margin-block var(--transition-time) var(--transition-tf);@media (prefers-reduced-motion:no-preference){interpolate-size:allow-keywords}&::details-content{max-height:0;overflow:hidden;transition:content-visibility var(--transition-time) allow-discrete,max-height var(--transition-time) var(--transition-tf)}&[open]{margin-block:var(--spacing-gap-2);&>.Accordion-module_summary__3uXXu{background:var(--color-surface)}&::details-content{max-height:999px;@supports (interpolate-size:allow-keywords){max-height:auto}}}}.Accordion-module_content__NPbBr{padding:var(--spacing-gap-3)}.IdentityDisplay-module_root__nEI-t{border-radius:var(--shape-br-md);display:flex;flex-direction:column;overflow:hidden;padding:var(--spacing-gap-2);position:relative;transition:padding var(--transition-time) var(--transition-tf),width .1s var(--transition-time) var(--transition-tf),color var(--transition-time) var(--transition-tf),background var(--transition-time) var(--transition-tf)}.IdentityDisplay-module_clickable__Xloez{cursor:pointer;&:hover{background:var(--color-primary-container);color:var(--color-on-primary-container)}}.IdentityDisplay-module_main__27-fb{align-items:center;display:flex;gap:var(--spacing-gap-2)}.IdentityDisplay-module_image__YD-pm{align-items:center;display:flex;justify-content:center;&>img{border-radius:50%;height:48px;object-fit:cover;overflow:hidden;width:48px}}.IdentityDisplay-module_details__kSAvW{color:inherit;display:flex;flex-direction:column;& h4{font-size:1.1em;font-weight:700}& h4,&>p{overflow:hidden;text-align:left;text-overflow:ellipsis;white-space:nowrap}&>p{color:var(--color-on-background-faint);font-size:.9em;font-weight:400}}.IdentityDisplay-module_desc__QHEz8{font-size:.9em}.IdentityDisplay-module_image-only__LBjOr{padding:0;& .IdentityDisplay-module_image__YD-pm,& .IdentityDisplay-module_main__27-fb{width:100%}.IdentityDisplay-module_desc__QHEz8,.IdentityDisplay-module_details__kSAvW{display:none}}.IdentityDisplay-module_square__f2jb0{.IdentityDisplay-module_main__27-fb{align-items:center;flex-direction:column}.IdentityDisplay-module_details__kSAvW{&>h4,&>p{text-align:center}}.IdentityDisplay-module_desc__QHEz8{display:none}}.IdentityDisplay-module_compact__ilrg-{.IdentityDisplay-module_desc__QHEz8{display:none}}.PoweredByBanner-module_root__EtEjU{align-items:center;color:inherit;display:flex;gap:var(--spacing-gap);justify-content:center;padding-block:var(--spacing-gap);width:100%}.PoweredByBanner-module_size_sm__8S6Jb{font-size:var(--fs-body2)}.PoweredByBanner-module_size_md__HKrCD{font-size:var(--fs-body)}.PoweredByBanner-module_size_lg__6oEhl{font-size:var(--fs-body);font-weight:700}.Cursor-module_root__xyOg-{height:100vh;isolation:isolate;left:0;pointer-events:none;position:fixed;top:0;width:100%;z-index:-1}.Cursor-module_main__FUTOy{background:radial-gradient(41.94% 82.95% at 50% 50%,color-mix(in srgb,var(--color-primary) 50%,transparent) 0,color-mix(in srgb,var(--color-secondary) 50%,transparent) 100%);border-radius:50%;filter:blur(90px);position:absolute;transition-duration:var(--transition-time);transition-property:width,height,filter;transition-timing-function:var(--transition-tf);translate:-50% -50%}@keyframes Spinner-module_spinning__1J1HL{12%{x:13px;y:1px}25%{x:13px;y:1px}37%{x:13px;y:13px}50%{x:13px;y:13px}62%{x:1px;y:13px}75%{x:1px;y:13px}87%{x:1px;y:1px}}.Spinner-module_main__dBojo{animation:Spinner-module_spinning__1J1HL 1.6s linear infinite;animation-delay:-1.6s}.Spinner-module_trailing__jtCPy{fill-opacity:.5;animation-delay:-1s}.TransitionAnimation-module_growEnter__bI9tZ{max-height:0;max-width:0;opacity:0;overflow:hidden;transform:scale(0)}.TransitionAnimation-module_growEnterActive__yXQ1B{transition:transform var(--transition-tf),max-width var(--transition-tf),max-height var(--transition-tf),opacity var(--transition-tf)}.TransitionAnimation-module_growEnterActive__yXQ1B,.TransitionAnimation-module_growExit__xZ6nz{max-height:100vh;max-width:100vw;opacity:1;overflow:hidden;transform:scale(1)}.TransitionAnimation-module_growExitActive__t6tOi{max-height:0;max-width:0;opacity:0;overflow:hidden;transform:scale(0);transition:transform var(--transition-tf),max-width var(--transition-tf),max-height var(--transition-tf),opacity var(--transition-tf)}.TransitionAnimation-module_fadeEnter__ZQc-U{opacity:0}.TransitionAnimation-module_fadeEnterActive__ZQP8J{opacity:1;transition:opacity var(--transition-tf)}.TransitionAnimation-module_fadeExit__eYDrT{opacity:1}.TransitionAnimation-module_fadeExitActive__1HT2J{opacity:0;transition:opacity var(--transition-tf)}.TransitionAnimation-module_slideEnter__9OKMI{opacity:0;transform:translateY(-20px)}.TransitionAnimation-module_slideEnterActive__DMXWB{opacity:1;transform:translateY(0);transition:transform var(--transition-tf),opacity var(--transition-tf)}.TransitionAnimation-module_slideExit__P7dM2{opacity:1;transform:translateY(0)}.TransitionAnimation-module_slideExitActive__Z4put{opacity:0;transform:translateY(-20px);transition:transform var(--transition-tf),opacity var(--transition-tf)}.TransitionAnimation-module_zoomEnter__6ELcc{max-height:0;max-width:0;opacity:0;overflow:hidden;transform:scale(.5)}.TransitionAnimation-module_zoomEnterActive__2T6j4{transition:transform var(--transition-tf),max-width var(--transition-tf),max-height var(--transition-tf),opacity var(--transition-tf)}.TransitionAnimation-module_zoomEnterActive__2T6j4,.TransitionAnimation-module_zoomExit__SUc94{max-height:100vh;max-width:100vw;opacity:1;overflow:hidden;transform:scale(1)}.TransitionAnimation-module_zoomExitActive__QWH8r{max-height:0;max-width:0;opacity:0;overflow:hidden;transform:scale(1.5);transition:transform var(--transition-tf),max-width var(--transition-tf),max-height var(--transition-tf),opacity var(--transition-tf)}.InputErrors-module_root__APxhq{color:var(--color-error);display:flex;flex-direction:column;font-size:.9em}.Kbd-module_root__OFPCy{align-items:center;display:flex;gap:var(--spacing-gap)}.Kbd-module_kbd__F-c6z{--kbd-size-x:1;--kbd-size-y:1;--kbd-base:30px;display:flex;flex-direction:column;font-family:ui-monospace,SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:60%;gap:.1em;height:calc(var(--kbd-size-y)*var(--kbd-base));justify-content:center;padding:.2em;text-align:center;width:calc(var(--kbd-size-x)*var(--kbd-base));&.Kbd-module_surface__xpquz{background:#313133;border-radius:.4em;color:#ebd6dc}}.LabeledValue-module_root__Vu-iA{align-items:center;display:flex;flex-direction:row;padding-block:var(--spacing-gap);&>.LabeledValue-module_content__EIsuq{flex:1}&>label{color:var(--color-on-background-faint);font-size:.9em;padding-right:var(--spacing-gap-2)}&>.LabeledValue-module_content__EIsuq{border-left:1px solid var(--color-outline);padding-left:var(--spacing-gap-2)}}@container (max-width:400px){.LabeledValue-module_root__Vu-iA{flex-direction:column;&>label{padding-right:0}&>.LabeledValue-module_content__EIsuq{border-left:none;padding-left:0}}}.List-module_root__VY-ni{display:flex;flex-direction:column;list-style-type:none;padding-inline:var(--spacing-gap-3);position:relative}.List-module_root__VY-ni:has(.List-module_shortened__cbFoK){padding:0}.List-module_secondary__lU6qH{border-left:1px solid var(--color-outline);margin-left:var(--spacing-gap-3);margin-block:var(--spacing-gap-2);padding-inline:var(--spacing-gap)}.List-module_listItem__8lcu6{--list-color:var(--color-on-background);--list-background:transparent;--list-hover-color:var(--color-on-background);--list-hover-background:var(--color-background-faint);--list-selected-color:var(--color-primary);--list-selected-background:none;--list-selected-hover-color:var(--color-on-background);--list-selected-hover-background:none;align-items:center;background:var(--list-background);border-radius:var(--shape-br-sm);color:var(--list-color);display:flex;gap:var(--spacing-gap);justify-content:center;overflow:hidden;padding:calc(var(--spacing-gap-3)/1.75) calc(var(--spacing-gap-3)*1.618/1.75);position:relative;transition:all var(--transition-time) var(--transition-tf)}.List-module_listItem__8lcu6.List-module_clickable__3Fj4n{cursor:pointer}.List-module_listItem__8lcu6.List-module_clickable__3Fj4n:not(.List-module_selected__nXBs4):not(:disabled):hover{background:color-mix(in srgb,var(--list-hover-background) 50%,transparent);color:var(--list-hover-color)}.List-module_listItem__8lcu6:focus-visible{outline:var(--focus-ring)}.List-module_selected__nXBs4{background:var(--list-selected-background);color:var(--list-selected-color);&:hover{background:var(--list-selected-hover-background);color:var(--list-selected-hover-color)}}.List-module_disabled__RJxHm{background:var(--color-background-faint);color:var(--color-on-background-faint);cursor:not-allowed}.List-module_shortened__cbFoK{gap:0;&>:not(.List-module_primaryIcon__WyWmw){max-width:0}}.List-module_content__Q2M2b{flex:1;font-weight:700;overflow:hidden}.List-module_content__Q2M2b,.List-module_iconContainer__ZHqxe{align-items:center;color:inherit;display:flex;max-width:50ch;transition:max-width var(--transition-time) var(--transition-tf)}.List-module_iconContainer__ZHqxe{justify-content:center}.List-module_dropDownIcon__XfJpu{display:block;position:relative}.List-module_dropDownIcon__XfJpu.List-module_openSublist__Izz1t{rotate:180deg}.List-module_marker__o4rTn{--glass-border-radius:var(--shape-br-sm);background-color:color-mix(in srgb,var(--color-background) 50%,transparent);display:none;left:0;position:absolute;transition:width 0s linear,top var(--transition-time) var(--transition-tf),left var(--transition-time) var(--transition-tf);width:0;z-index:-1}.List-module_listItem__8lcu6[data-color=primary]{--list-color:var(--color-primary);--list-background:transparent;--list-hover-color:var(--color-on-primary-container);--list-hover-background:var(--color-primary-container);--list-selected-color:none;--list-selected-background:none;--list-selected-hover-color:var(--color-on-background);--list-selected-hover-background:none}.List-module_listItem__8lcu6[data-color=secondary]{--list-color:var(--color-secondary);--list-background:transparent;--list-hover-color:var(--color-on-secondary-container);--list-hover-background:var(--color-secondary-container);--list-selected-color:none;--list-selected-background:none;--list-selected-hover-color:var(--color-on-background);--list-selected-hover-background:none}.List-module_listItem__8lcu6[data-color=error]{--list-color:var(--color-error);--list-background:transparent;--list-hover-color:var(--color-on-error-container);--list-hover-background:var(--color-error-container);--list-selected-color:none;--list-selected-background:none;--list-selected-hover-color:var(--color-on-secondary);--list-selected-hover-background:none}.Skeleton-module_root__Ft3Ey{--skeleton-color-main:var(--color-surface);--skeleton-color-wave:color-mix(in srgb,var(--color-surface) 80%,var(--color-primary) 10%);animation:Skeleton-module_throb__SxiMC 2s var(--transition-tf) infinite;background-image:linear-gradient(to right,var(--skeleton-color-main) 0,var(--skeleton-color-wave) 50%,var(--skeleton-color-main) 100%);background-repeat:repeat-x;background-size:1000px 1000px;border-radius:var(--shape-br-md)}.Skeleton-module_large__LnDji{font-size:2rem}.Skeleton-module_medium__LjhY7{font-size:1.2rem}.Skeleton-module_small__j9Re2{font-size:.75rem}@keyframes Skeleton-module_wave__mC2od{0%{background-position:0 0}to{background-position:-200% 0}}@keyframes Skeleton-module_throb__SxiMC{0%{background:var(--color-surface)}50%{background:color-mix(in srgb,var(--color-primary) 10%,var(--color-surface) 100%)}to{background:var(--color-surface)}}.ConfirmationForm-module_root__ltcoI{color:var(--color-on-background-faint);display:flex;flex-direction:column;font-size:var(--fs-body2);gap:var(--spacing-gap-3);&>h4{border-bottom:1px solid var(--color-outline);color:var(--color-on-background-faint);font-size:1.2em;padding-bottom:var(--spacing-gap-3)}}.ConfirmationForm-module_danger__C1MyS{&>h4{color:var(--color-error)}}.ConfirmationForm-module_actions__TSHEJ{display:flex;gap:var(--spacing-gap-2);justify-content:flex-end}.ConfirmationForm-module_size_sm__0xJZd{&>h4{font-size:.9em}}.ConfirmationForm-module_size_md__ABTKZ{&>h4{font-size:1em}}.ConfirmationForm-module_size_lg__uqxZX{&>h4{font-size:1.2em}}.CheckboxGroup-module_root__yODdU{display:flex;flex-direction:column;gap:var(--spacing-gap-2);padding-top:var(--spacing-gap-3)}.CheckboxGroup-module_legend__q-7v4{font-family:var(--font-h);font-weight:700}.Checkbox-module_root__52eFu{--input-border:var(--color-outline);--input-color:var(--color-on-surface);--input-fs:var(--fs-body2);--input-background:var(--color-surface);--input-focus-background:var(--color-background);--input-checked-color:var(--color-surface);--input-checked-background:var(--color-on-surface);--input-indeterminate-color:var(--color-surface);--input-indeterminate-background:var(--color-on-surface);align-items:center;display:flex;gap:var(--spacing-gap-2)}.Checkbox-module_inputWrapper__JZjHc{border-radius:var(--shape-br-xs);display:flex;height:fit-content;overflow:hidden;position:relative;&>input[type=checkbox]{background:var(--input-background);border:2.3px solid var(--input-border);border-radius:inherit;color:var(--input-color);cursor:pointer;font:inherit;height:var(--spacing-gap-4);transition:all var(--transition-time) var(--transition-tf);width:var(--spacing-gap-4)}&:has(input[type=checkbox]:checked){--input-color:var(--input-checked-color);--input-background:var(--input-checked-background)}&:has(input[type=checkbox]:indeterminate){--input-color:var(--input-indeterminate-color);--input-background:var(--input-indeterminate-background)}}.Checkbox-module_inputWrapper__JZjHc>span{color:var(--input-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 var(--transition-time) var(--transition-tf) forwards}.Checkbox-module_hide__j-2PL path{animation:Checkbox-module_draw-check__THEN8 var(--transition-time) var(--transition-tf) reverse}@keyframes Checkbox-module_draw-check__THEN8{to{stroke-dashoffset:0}}.Checkbox-module_label__4Llik{cursor:pointer}.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}.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}.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-surface);--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}}}.Switch-module_root__iigu-{--switch-track-width:54px;--switch-track-height:30px;--switch-thumb-width:60%;--switch-track-color:var(--color-background-alpha);--switch-track-checked-color:var(--color-background);--switch-thumb-color:var(--color-primary-container);--switch-thumb-checked-color:var(--color-primary);--switch-thumb-text-color:var(--color-on-primary-container);--switch-thumb-checked-text-color:var(--color-on-primary);align-items:center;display:flex;gap:var(--spacing-gap-2);&:not(.Switch-module_disabled__OpgQK) .Switch-module_switch__JRFZI:hover .Switch-module_thumb__s4iLS{scale:1}}.Switch-module_inputWrapper__o8uEI{height:var(--switch-track-height);overflow:hidden;padding-inline:.2em;position:relative;width:var(--switch-track-width)}.Switch-module_disabled__OpgQK{--switch-thumb-color:var(--color-surface-alpha);--switch-thumb-text-color:var(--color-on-surface);--switch-thumb-checked-color:var(--color-background-faint);--switch-thumb-checked-text-color:var(--color-on-background-faint);& .Switch-module_label__vk4At,& .Switch-module_switch__JRFZI{cursor:not-allowed}}.Switch-module_input__pSFbl{inset:0;opacity:0;position:absolute}.Switch-module_inputWrapper__o8uEI:has(.Switch-module_input__pSFbl:focus) .Switch-module_switch__JRFZI{background:var(--switch-track-checked-color);border:var(--focus-ring)}.Switch-module_switch__JRFZI{background-color:var(--switch-track-color);border:1px solid var(--color-outline);border-radius:var(--shape-br-md);cursor:pointer;display:block;height:100%;position:relative;width:100%;&.Switch-module_checked__7JJ9o{background:var(--switch-track-checked-color);& .Switch-module_thumb__s4iLS{animation:Switch-module_checkon__B-djH var(--transition-time) var(--transition-tf) forwards;background-color:var(--switch-thumb-checked-color);color:var(--switch-thumb-checked-text-color);left:50%}}}.Switch-module_thumb__s4iLS{align-items:center;animation:Switch-module_checkoff__8YwSV var(--transition-time) var(--transition-tf) forwards;background-color:var(--switch-thumb-color);border-radius:var(--shape-br-md);color:var(--switch-thumb-text-color);display:flex;height:100%;justify-content:center;left:0;position:absolute;scale:80%;top:50%;transition:all var(--transition-time) var(--transition-tf);translate:0 -50%;width:var(--switch-thumb-width)}.Switch-module_label__vk4At{cursor:pointer}@keyframes Switch-module_checkon__B-djH{0%{height:100%;left:0;width:var(--switch-thumb-width)}50%{height:80%;left:0;width:100%}to{height:100%;left:calc(100% - var(--switch-thumb-width));width:var(--switch-thumb-width)}}@keyframes Switch-module_checkoff__8YwSV{0%{height:100%;left:50%;width:var(--switch-thumb-width)}50%{height:80%;left:0;width:100%}to{height:100%;left:0;width:var(--switch-thumb-width)}}.TextAreaInput-module_root__HtNc8{--input-border:var(--color-outline);--input-color:var(--color-on-surface);--input-fs:var(--fs-body2);--input-background:var(--color-background-faint);--input-focus-background:var(--color-background);display:flex;flex-direction:column;font-size:var(--input-fs);gap:var(--spacing-gap);&.TextAreaInput-module_fullWidth__TUiOx{width:100%}&:has(.TextAreaInput-module_inputWrapper__P-2Yf>.TextAreaInput-module_input__1xpZl:focus){&>.TextAreaInput-module_inputWrapper__P-2Yf{background:var(--input-focus-background);outline:none}.TextAreaInput-module_label__Fgykg{color:var(--input-color)}}&:has(.TextAreaInput-module_inputWrapper__P-2Yf>.TextAreaInput-module_input__1xpZl:disabled){opacity:.5}}.TextAreaInput-module_inputWrapper__P-2Yf{background:var(--input-background);border-radius:var(--shape-br-sm);display:flex;outline:1px solid var(--input-border);position:relative}.TextAreaInput-module_label__Fgykg{color:var(--color-on-background-faint);font-size:.9em;margin-left:var(--spacing-gap)}.TextAreaInput-module_input__1xpZl{background:none;border:none;color:var(--input-color);flex:1 1 100%;font-family:var(--font-p);font-size:inherit;padding:calc(var(--spacing-gap-2)*1.618);&:focus{outline:none}&.TextAreaInput-module_disableResize__uaUnX{resize:none}}.TextAreaInput-module_errored__HJAUZ{--input-border:var(--color-error);--input-color:var(--color-error);&>.TextAreaInput-module_inputWrapper__P-2Yf{outline:1px solid var(--input-border)}&>.TextAreaInput-module_label__Fgykg{color:var(--input-color)}}.Drawer-module_drawer__i-80z{margin-block:auto;margin-left:auto;margin-right:0;max-height:100%}.PageLayout-module_root__H4l4t{display:flex;flex-direction:column;height:100%;overflow:hidden}.PageLayout-module_titleBar__Be27V{padding-inline:var(--spacing-gap-3)}.PageLayout-module_body__yjAdc{flex:1;overflow:hidden auto;padding-block:var(--spacing-gap-2)}.PageLayout-module_footer__iR2sk{display:flex;justify-content:center;padding-bottom:3dvh;padding-top:var(--spacing-gap-2)}.PageTitle-module_root__qgEO4{border-bottom:1px solid var(--color-outline);display:flex;gap:var(--spacing-gap-3);justify-content:space-between;padding:var(--spacing-gap-4);width:100%;& h1{font-size:var(--fs-h2)}& h2{color:var(--color-on-background-faint);font-size:var(--fs-body2);font-weight:400}}.PageTitle-module_noBorder__hoNLA{border-bottom:none}.PageTitle-module_size_lg__VBUCT{padding:var(--spacing-gap-6);& h1{font-size:var(--fs-h1)}& h2{font-size:var(--fs-body)}}.PageTitle-module_size_sm__QmF4G{padding:var(--spacing-gap-2);& h1{font-size:var(--fs-h4)}}.PageTitle-module_main__bncFv{display:flex;flex-direction:column;justify-content:flex-end}.PageTitle-module_actions__Wef1k{align-items:center;display:flex;flex:1;gap:var(--spacing-gap-2);justify-content:flex-end;overflow:hidden}.PageLayoutPagination-module_list__lyhYm{display:flex;flex-direction:column;gap:var(--spacing-gap)}.TabsBar-module_root__Uve19{--bgcolor:var(--color-background-alpha);--color:var(--color-on-background);--tab-hover-bgcolor:var(--color-background-faint);--tab-hover-color:var(--color-on-surface);--tab-active-color:var(--color-primary);--tab-active-hover-color:var(--color-on-background);--tab-marker-bgcolor:transparent;backdrop-filter:blur(5px);background-color:var(--bgcolor);border-radius:var(--shape-br-sm);display:flex;margin-inline:auto;max-width:100%;overflow:hidden}.TabsBar-module_root__Uve19[data-color=primary]{--bgcolor:var(--color-primary-container);--color:var(--color-on-primary-container);--tab-hover-bgcolor:var(--color-primary-alpha);--tab-hover-color:var(--color-on-primary);--tab-active-color:var(--color-on-primary);--tab-active-hover-color:var(--color-on-primary-container);--tab-marker-bgcolor:var(--color-primary)}.TabsBar-module_root__Uve19[data-color=secondary]{--bgcolor:var(--color-secondary-container);--color:var(--color-on-secondary-container);--tab-hover-bgcolor:var(--color-secondary-alpha);--tab-hover-color:var(--color-on-secondary);--tab-active-color:var(--color-on-secondary);--tab-active-hover-color:var(--color-on-secondary-container);--tab-marker-bgcolor:var(--color-secondary)}.TabsBar-module_overflowContainer__FuUXd{display:flex;gap:var(--spacing-gap);isolation:isolate;position:relative}.TabsBar-module_row__5PKvn{overflow:auto hidden;padding:var(--spacing-gap) var(--spacing-gap-2);width:max-content}.TabsBar-module_column__8Mc64{flex-direction:column;height:100%;overflow:hidden auto;padding:var(--spacing-gap-2);width:100%}.TabsBar-module_tab__jD1nX{color:var(--color)}.TabsBar-module_active__ESPgA{color:var(--tab-active-color);transition:color var(--transition-time) var(--transition-tf)}.TabsBar-module_active__ESPgA:hover{color:var(--tab-active-hover-color)}.TabsBar-module_marker__2e4am{border-radius:var(--shape-br-xs);left:0;position:absolute;transition:all var(--transition-time) var(--transition-tf);z-index:-1}.TabsBar-module_markerInner__T0FZ3{background-color:var(--tab-marker-bgcolor);border-radius:inherit;height:100%;width:100%}.Tab-module_root__ySv89{text-wrap:nowrap;align-items:center;background-color:transparent;border:none;border-radius:var(--shape-br-sm);color:var(--color);cursor:pointer;display:flex;font-family:var(--font-p);font-size:var(--fs-body2);gap:var(--spacing-gap);padding:var(--spacing-gap) var(--spacing-gap-2);position:relative;transition:background-color var(--transition-time) var(--transition-tf)}.Tab-module_clickable__d8Iy-:not(.Tab-module_selected__vToav):hover{background-color:var(--tab-hover-bgcolor);color:var(--tab-hover-color)}.Tab-module_selected__vToav{color:var(--tab-active-color);font-weight:700;&:hover{background-color:var(--bar-active-color);color:var(--bar-active-hover-color-text)}}.Tab-module_disabled__Leret{color:var(--color-on-background-faint);cursor:not-allowed}.Tab-module_iconContainer__-SQ6s{align-items:center;color:inherit;display:flex;justify-content:center}.PageLayoutTabs-module_body__baK6C{padding-inline:var(--spacing-gap-3)}.SectionWrapper-module_root__K-O4Y{display:grid;gap:var(--spacing-gap-2);grid-template-columns:1fr;padding-block:var(--spacing-gap-3);padding-inline:var(--spacing-gap-4)}.SectionWrapper-module_header__8-h-6{&>h4{font-size:1em}&>p{color:var(--color-on-background-faint);font-size:var(--fs-body2)}}.SectionWrapper-module_root__K-O4Y:not(.SectionWrapper-module_noBorders__brOqe){border-top:1px solid var(--color-outline)}.SectionWrapper-module_content__Ruu8X{container-type:inline-size;display:flex;flex-direction:column;font-size:var(--fs-body2)}@container (min-width:600px){.SectionWrapper-module_root__K-O4Y{grid-template-columns:.4fr 1fr}}.Sidebar-module_root__1stxg{--sidebar-closed-width:4rem;--sidebar-open-width:20rem;--sidebar-body-height:65dvh;--sidebar-header-height:4.875rem;--sidebar-color-surface:var(--color-surface-alpha);display:flex;flex-direction:column;gap:var(--spacing-gap);height:100%;isolation:isolate}@media (min-width:600px){.Sidebar-module_root__1stxg{flex-direction:row}}.SidebarBody-module_root__yPbfH{backdrop-filter:var(--backdrop-blur);background-color:var(--color-surface-alpha);height:var(--sidebar-body-height);left:-100%;overflow-x:hidden;position:fixed;top:var(--sidebar-header-height);transition:left var(--transition-time) var(--transition-tf);width:var(--sidebar-open-width)}.SidebarBody-module_open__gtCKF{left:0;overflow-x:auto}@media (min-width:600px){.SidebarBody-module_root__yPbfH{backdrop-filter:none;background-color:transparent;flex:1;height:unset;left:0;position:relative;top:0;width:unset}.SidebarBody-module_open__gtCKF{left:0}}.SidebarDrawer-module_root__CJch2{background:var(--color-surface);display:flex;flex-direction:row;transition:width var(--transition-time) var(--transition-tf);width:100%;z-index:-1}@media (min-width:600px){.SidebarDrawer-module_root__CJch2{background:var(--sidebar-color-surface);flex-direction:column;width:var(--sidebar-closed-width);z-index:0}.SidebarDrawer-module_open__E60Tc{width:var(--sidebar-open-width)}}.SidebarFooter-module_root__AdFmj{backdrop-filter:var(--backdrop-blur);background-color:var(--color-surface-alpha);height:calc(100dvh - var(--sidebar-body-height) - var(--sidebar-header-height));left:-100%;overflow:auto;padding-bottom:var(--spacing-gap-2);padding-top:var(--spacing-gap-1);position:fixed;top:calc(var(--sidebar-header-height) + var(--sidebar-body-height));transition:left var(--transition-time) var(--transition-tf);width:var(--sidebar-open-width)}.SidebarFooter-module_open__qHsZf{left:0}@media (min-width:600px){.SidebarFooter-module_root__AdFmj{backdrop-filter:none;background-color:transparent;height:unset;left:0;position:relative;top:0;width:unset}.SidebarFooter-module_open__qHsZf{left:0}}.SidebarViewport-module_root__KAGAg{container-type:inline-size;flex:1;overflow:auto;z-index:-3}@media (min-width:600px){.SidebarViewport-module_root__KAGAg{z-index:0}}.Table-module_root__-0lhT{max-height:100%;max-width:100%;overflow:auto}.Table-module_table__f1fEX{border-radius:var(--shape-br-md);display:grid;font-family:system-ui,-apple-system,BlinkMacSystemFont,sans-serif;font-size:var(--fs-body2);line-height:1.4;overflow:hidden;width:100%}.Table-module_tableCell__tKgEQ{background:var(--color-background);border-bottom:1px solid var(--color-outline);border-right:1px solid var(--color-outline);overflow:hidden;padding:8px 12px;text-overflow:ellipsis;user-select:none;white-space:nowrap;&:hover{background:var(--color-background-faint)}&:focus-visible{outline:2px solid var(--color-primary);outline-offset:-2px}&:nth-child(n){border-right:none}&[data-selected=true]{background:var(--color-surface);outline:2px solid var(--color-primary);outline-offset:-2px;z-index:1}}.Pagination-module_root__at76F{display:flex;flex-wrap:wrap;gap:var(--spacing-gap-2);list-style-type:none}.Pagination-module_item__2GFks{--pagination-item-fs:var(--fs-body2);align-items:center;border-radius:var(--shape-br-sm);color:var(--color-on-background);cursor:pointer;display:flex;font-size:var(--pagination-item-fs);height:32px;justify-content:center;min-width:fit-content;padding-inline:var(--spacing-gap);transition:all var(--transition-time) var(--transition-tf);width:32px}.Pagination-module_disabled__KG8Cb{cursor:not-allowed;opacity:.5}.Pagination-module_item__2GFks:not(.Pagination-module_disabled__KG8Cb):hover{background:var(--color-surface)}.Pagination-module_activeItem__BVg0A{outline:1px solid var(--color-primary)}.Pagination-module_icon__OcxQW>svg{--pagination-item-icon-size:calc(var(--pagination-item-fs)*1.25);height:var(--pagination-item-icon-size);width:var(--pagination-item-icon-size)}.Pagination-module_icon__OcxQW:nth-child(2)~.Pagination-module_icon__OcxQW{transform:rotate(180deg)}.Breadcrumbs-module_root__KmBxB{align-items:center;display:flex;gap:1ch;&>svg{color:var(--color-on-background-faint)}}.Breadcrumbs-module_item__G3HWH{color:var(--color-on-background-faint);display:content;&:not(.Breadcrumbs-module_activeItem__-C8yn):hover{color:var(--color-primary)}}.Breadcrumbs-module_activeItem__-C8yn{color:var(--color-on-background)}.Breadcrumbs-module_ellipses__R-y7b{color:var(--color-on-background-faint)}.CopyableText-module_root__bhwTN{align-items:center;display:flex;gap:var(--spacing-gap);&>span{-ms-overflow-style:none;background-color:var(--color-surface);border-radius:var(--shape-br-sm);flex:1;font-size:.9em;overflow:auto hidden;padding:var(--spacing-gap);scrollbar-width:none;text-overflow:ellipsis;white-space:nowrap;&::-webkit-scrollbar{display:none}}}.VoidText-module_root__otzOq{color:var(--color-on-background-faint);font-weight:700;opacity:.5;text-align:center;width:100%}
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- export{Card}from"./Cards/Card/Card.js";export{CollectionItemCard}from"./Cards/CollectionItemCard/CollectionItemCard.js";export{CollectionItemCardActions}from"./Cards/CollectionItemCard/CollectionItemCardActions.js";export{GlassCard}from"./Cards/GlassCard/GlassCard.js";export{Accordion,AccordionContext}from"./Display/Accordion/Accordion.js";export{AccordionItem}from"./Display/Accordion/AccordionItem.js";export{Chip}from"./Display/Chip/Chip.js";export{IdentityDisplay}from"./Display/IdentityDisplay/IdentityDisplay.js";export{InputErrors}from"./Display/InputErrors/InputErrors.js";export{Kbd}from"./Display/Kbd/Kbd.js";export{buttonList}from"./Display/Kbd/buttonList.js";export{LabeledValue}from"./Display/LabeledValue/LabeledValue.js";export{List,ListItem,useList}from"./Display/List/List.js";export{Skeleton}from"./Display/Skeleton/Skeleton.js";export{Toaster}from"./Display/Toast/Toaster.js";export{dismiss,subscribe,toast}from"./Display/Toast/toast.js";export{Tooltip}from"./Display/Tooltip/Tooltip.js";export{useTooltip}from"./Display/Tooltip/useTooltip.js";export{ConfirmationForm}from"./Forms/ConfirmationForm/ConfirmationForm.js";export{Button,ButtonBase}from"./Inputs/Button/Button.js";export{Checkbox}from"./Inputs/Checkbox/Checkbox.js";export{CheckboxSelectAll}from"./Inputs/Checkbox/CheckboxSelectAll.js";export{CheckboxGroup,CheckboxGroupContext}from"./Inputs/Checkbox/CheckboxGroup/CheckboxGroup.js";export{PasswordInput}from"./Inputs/PasswordInput/PasswordInput.js";export{Select}from"./Inputs/Select/Select.js";export{Switch}from"./Inputs/Switch/Switch.js";export{TextInput}from"./Inputs/TextInput/TextInput.js";export{TextAreaInput}from"./Inputs/TextAreaInput/TextAreaInput.js";export{ThemeToggleListItem}from"./Inputs/ThemeToggle/ThemeToggleListItem.js";export{Dialog}from"./Layout/Dialog/Dialog.js";export{Drawer}from"./Layout/Drawer/Drawer.js";export{PageLayout}from"./Layout/PageLayout/PageLayout.js";export{PageLayoutPagination}from"./Layout/PageLayoutPagination/PageLayoutPagination.js";export{PageLayoutTabs}from"./Layout/PageLayoutTabs/PageLayoutTabs.js";export{Popover}from"./Layout/Popover/Popover.js";export{SectionWrapper}from"./Layout/SectionWrapper/SectionWrapper.js";export{SIDEBAR_COOKIE,SIDEBAR_COOKIE_MAX_AGE,Sidebar,useSidebar}from"./Layout/Sidebar/Sidebar.js";export{SidebarBody}from"./Layout/Sidebar/SidebarBody/SidebarBody.js";export{SidebarDrawer}from"./Layout/Sidebar/SidebarDrawer/SidebarDrawer.js";export{SidebarFooter}from"./Layout/Sidebar/SidebarFooter/SidebarFooter.js";export{SidebarHeader}from"./Layout/Sidebar/SidebarHeader/SidebarHeader.js";export{SidebarViewport}from"./Layout/Sidebar/SidebarViewport/SidebarViewport.js";export{Table,TableCell,renderCell,useTable}from"./Layout/Table/Table.js";export{TableFooter}from"./Layout/Table/TableFooter.js";export{TableHeader}from"./Layout/Table/TableHeader.js";export{getColumnCount,isAOA,isAOO,isOCR,isOOA}from"./Layout/Table/tableUtils.js";export{eventWithRipple,useRipple}from"./Misc/Ripple/Ripple.js";export{PoweredByBanner}from"./Misc/PoweredByBanner/PoweredByBanner.js";export{Cursor}from"./Misc/Cursor/Cursor.js";export{CubicsUILogo,StudioCubicsLogo}from"./Misc/Logos.js";export{Spinner}from"./Misc/Spinner/Spinner.js";export{TransitionAnimation}from"./Misc/TransitionAnimation/TransitionAnimation.js";export{Pagination}from"./Navigation/Pagination/Pagination.js";export{PaginationItem}from"./Navigation/Pagination/PaginationItem.js";export{usePagination}from"./Navigation/Pagination/usePagination.js";export{Breadcrumbs,ChevronRightIcon,EllipsisIcon}from"./Navigation/Breadcrumbs/Breadcrumbs.js";export{BreadcrumbsItem}from"./Navigation/Breadcrumbs/BreadcrumbsItem.js";export{useBreadcrumbs}from"./Navigation/Breadcrumbs/useBreadcrumbs.js";export{Tabs,useTabs}from"./Navigation/Tabs/Tabs.js";export{Tab}from"./Navigation/Tabs/Tab/Tab.js";export{TabsBar}from"./Navigation/Tabs/TabsBar/TabsBar.js";export{PageTitle}from"./Typography/PageTitle/PageTitle.js";export{ClampedText}from"./Typography/ClampedText/ClampedText.js";export{CopyIcon,CopyableText}from"./Typography/CopyableText/CopyableText.js";
1
+ export{Card}from"./Cards/Card/Card.js";export{CollectionItemCard}from"./Cards/CollectionItemCard/CollectionItemCard.js";export{CollectionItemCardActions}from"./Cards/CollectionItemCard/CollectionItemCardActions.js";export{GlassCard}from"./Cards/GlassCard/GlassCard.js";export{Accordion,AccordionContext}from"./Display/Accordion/Accordion.js";export{AccordionItem}from"./Display/Accordion/AccordionItem.js";export{Chip}from"./Display/Chip/Chip.js";export{IdentityDisplay}from"./Display/IdentityDisplay/IdentityDisplay.js";export{InputErrors}from"./Display/InputErrors/InputErrors.js";export{Kbd}from"./Display/Kbd/Kbd.js";export{buttonList}from"./Display/Kbd/buttonList.js";export{LabeledValue}from"./Display/LabeledValue/LabeledValue.js";export{List,ListItem,useList}from"./Display/List/List.js";export{Skeleton}from"./Display/Skeleton/Skeleton.js";export{Toaster}from"./Display/Toast/Toaster.js";export{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{CheckboxSelectAll}from"./Inputs/Checkbox/CheckboxSelectAll.js";export{CheckboxGroup,CheckboxGroupContext}from"./Inputs/Checkbox/CheckboxGroup/CheckboxGroup.js";export{CloseButton,CloseIcon}from"./Inputs/CloseButton/CloseButton.js";export{PasswordInput}from"./Inputs/PasswordInput/PasswordInput.js";export{ClearIcon,SearchCloseIcon,SearchIcon,SearchInput,SearchOpenIcon}from"./Inputs/SearchInput/SearchInput.js";export{Select}from"./Inputs/Select/Select.js";export{Switch}from"./Inputs/Switch/Switch.js";export{TextInput}from"./Inputs/TextInput/TextInput.js";export{TextAreaInput}from"./Inputs/TextAreaInput/TextAreaInput.js";export{ThemeToggleListItem}from"./Inputs/ThemeToggle/ThemeToggleListItem.js";export{Dialog}from"./Layout/Dialog/Dialog.js";export{Drawer}from"./Layout/Drawer/Drawer.js";export{PageLayout}from"./Layout/PageLayout/PageLayout.js";export{PageLayoutPagination}from"./Layout/PageLayoutPagination/PageLayoutPagination.js";export{PageLayoutTabs}from"./Layout/PageLayoutTabs/PageLayoutTabs.js";export{Popover}from"./Layout/Popover/Popover.js";export{SectionWrapper}from"./Layout/SectionWrapper/SectionWrapper.js";export{SIDEBAR_COOKIE,SIDEBAR_COOKIE_MAX_AGE,Sidebar,useSidebar}from"./Layout/Sidebar/Sidebar.js";export{SidebarBody}from"./Layout/Sidebar/SidebarBody/SidebarBody.js";export{SidebarDrawer}from"./Layout/Sidebar/SidebarDrawer/SidebarDrawer.js";export{SidebarFooter}from"./Layout/Sidebar/SidebarFooter/SidebarFooter.js";export{SidebarHeader}from"./Layout/Sidebar/SidebarHeader/SidebarHeader.js";export{SidebarViewport}from"./Layout/Sidebar/SidebarViewport/SidebarViewport.js";export{Table,TableCell,renderCell,useTable}from"./Layout/Table/Table.js";export{TableFooter}from"./Layout/Table/TableFooter.js";export{TableHeader}from"./Layout/Table/TableHeader.js";export{getColumnCount,isAOA,isAOO,isOCR,isOOA}from"./Layout/Table/tableUtils.js";export{eventWithRipple,useRipple}from"./Misc/Ripple/Ripple.js";export{PoweredByBanner}from"./Misc/PoweredByBanner/PoweredByBanner.js";export{Cursor}from"./Misc/Cursor/Cursor.js";export{CubicsUILogo,StudioCubicsLogo}from"./Misc/Logos.js";export{Spinner}from"./Misc/Spinner/Spinner.js";export{TransitionAnimation}from"./Misc/TransitionAnimation/TransitionAnimation.js";export{Pagination}from"./Navigation/Pagination/Pagination.js";export{PaginationItem}from"./Navigation/Pagination/PaginationItem.js";export{usePagination}from"./Navigation/Pagination/usePagination.js";export{Breadcrumbs,ChevronRightIcon,EllipsisIcon}from"./Navigation/Breadcrumbs/Breadcrumbs.js";export{BreadcrumbsItem}from"./Navigation/Breadcrumbs/BreadcrumbsItem.js";export{useBreadcrumbs}from"./Navigation/Breadcrumbs/useBreadcrumbs.js";export{Tabs,useTabs}from"./Navigation/Tabs/Tabs.js";export{Tab}from"./Navigation/Tabs/Tab/Tab.js";export{TabsBar}from"./Navigation/Tabs/TabsBar/TabsBar.js";export{ClampedText}from"./Typography/ClampedText/ClampedText.js";export{CopyIcon,CopyableText}from"./Typography/CopyableText/CopyableText.js";export{PageTitle}from"./Typography/PageTitle/PageTitle.js";export{VoidText}from"./Typography/VoidText/VoidText.js";
2
2
  //# sourceMappingURL=index.js.map
package/package.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "access": "public"
6
6
  },
7
7
  "private": false,
8
- "version": "0.0.5",
8
+ "version": "0.0.6",
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.5",
38
- "@studiocubics/types": "^0.0.5",
39
- "@studiocubics/utils": "^0.0.5"
37
+ "@studiocubics/hooks": "^0.0.6",
38
+ "@studiocubics/types": "^0.0.6",
39
+ "@studiocubics/utils": "^0.0.6"
40
40
  },
41
41
  "devDependencies": {
42
42
  "@eslint/js": "^9.39.1",