@fransek/ui 0.1.0

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 (76) hide show
  1. package/README.md +9 -0
  2. package/dist/cjs/components/button/Button.d.ts +25 -0
  3. package/dist/cjs/components/button/Button.js +27 -0
  4. package/dist/cjs/components/button/Button.js.map +1 -0
  5. package/dist/cjs/components/button/index.d.ts +1 -0
  6. package/dist/cjs/components/checkbox/Checkbox.d.ts +13 -0
  7. package/dist/cjs/components/checkbox/Checkbox.js +28 -0
  8. package/dist/cjs/components/checkbox/Checkbox.js.map +1 -0
  9. package/dist/cjs/components/checkbox/index.d.ts +1 -0
  10. package/dist/cjs/components/checkbox-group/CheckboxGroup.d.ts +14 -0
  11. package/dist/cjs/components/checkbox-group/CheckboxGroup.js +42 -0
  12. package/dist/cjs/components/checkbox-group/CheckboxGroup.js.map +1 -0
  13. package/dist/cjs/components/checkbox-group/index.d.ts +1 -0
  14. package/dist/cjs/components/field/Field.d.ts +16 -0
  15. package/dist/cjs/components/field/Field.js +27 -0
  16. package/dist/cjs/components/field/Field.js.map +1 -0
  17. package/dist/cjs/components/field/index.d.ts +1 -0
  18. package/dist/cjs/components/input/Input.d.ts +8 -0
  19. package/dist/cjs/components/input/Input.js +14 -0
  20. package/dist/cjs/components/input/Input.js.map +1 -0
  21. package/dist/cjs/components/input/index.d.ts +1 -0
  22. package/dist/cjs/components/radio/Radio.d.ts +18 -0
  23. package/dist/cjs/components/radio/Radio.js +47 -0
  24. package/dist/cjs/components/radio/Radio.js.map +1 -0
  25. package/dist/cjs/components/radio/index.d.ts +1 -0
  26. package/dist/cjs/components/select/Select.d.ts +24 -0
  27. package/dist/cjs/components/select/Select.js +29 -0
  28. package/dist/cjs/components/select/Select.js.map +1 -0
  29. package/dist/cjs/components/select/index.d.ts +1 -0
  30. package/dist/cjs/index.css +1 -0
  31. package/dist/cjs/index.d.ts +8 -0
  32. package/dist/cjs/index.js +26 -0
  33. package/dist/cjs/index.js.map +1 -0
  34. package/dist/cjs/lib/types.d.ts +7 -0
  35. package/dist/cjs/lib/utils.d.ts +10 -0
  36. package/dist/cjs/lib/utils.js +11 -0
  37. package/dist/cjs/lib/utils.js.map +1 -0
  38. package/dist/cjs/theme.css +1 -0
  39. package/dist/esm/components/button/Button.d.ts +25 -0
  40. package/dist/esm/components/button/Button.js +25 -0
  41. package/dist/esm/components/button/Button.js.map +1 -0
  42. package/dist/esm/components/button/index.d.ts +1 -0
  43. package/dist/esm/components/checkbox/Checkbox.d.ts +13 -0
  44. package/dist/esm/components/checkbox/Checkbox.js +26 -0
  45. package/dist/esm/components/checkbox/Checkbox.js.map +1 -0
  46. package/dist/esm/components/checkbox/index.d.ts +1 -0
  47. package/dist/esm/components/checkbox-group/CheckboxGroup.d.ts +14 -0
  48. package/dist/esm/components/checkbox-group/CheckboxGroup.js +20 -0
  49. package/dist/esm/components/checkbox-group/CheckboxGroup.js.map +1 -0
  50. package/dist/esm/components/checkbox-group/index.d.ts +1 -0
  51. package/dist/esm/components/field/Field.d.ts +16 -0
  52. package/dist/esm/components/field/Field.js +23 -0
  53. package/dist/esm/components/field/Field.js.map +1 -0
  54. package/dist/esm/components/field/index.d.ts +1 -0
  55. package/dist/esm/components/input/Input.d.ts +8 -0
  56. package/dist/esm/components/input/Input.js +12 -0
  57. package/dist/esm/components/input/Input.js.map +1 -0
  58. package/dist/esm/components/input/index.d.ts +1 -0
  59. package/dist/esm/components/radio/Radio.d.ts +18 -0
  60. package/dist/esm/components/radio/Radio.js +25 -0
  61. package/dist/esm/components/radio/Radio.js.map +1 -0
  62. package/dist/esm/components/radio/index.d.ts +1 -0
  63. package/dist/esm/components/select/Select.d.ts +24 -0
  64. package/dist/esm/components/select/Select.js +27 -0
  65. package/dist/esm/components/select/Select.js.map +1 -0
  66. package/dist/esm/components/select/index.d.ts +1 -0
  67. package/dist/esm/index.css +70 -0
  68. package/dist/esm/index.d.ts +8 -0
  69. package/dist/esm/index.js +9 -0
  70. package/dist/esm/index.js.map +1 -0
  71. package/dist/esm/lib/types.d.ts +7 -0
  72. package/dist/esm/lib/utils.d.ts +10 -0
  73. package/dist/esm/lib/utils.js +9 -0
  74. package/dist/esm/lib/utils.js.map +1 -0
  75. package/dist/esm/theme.css +72 -0
  76. package/package.json +121 -0
@@ -0,0 +1,25 @@
1
+ import { Button as Button$1 } from '@base-ui/react/button';
2
+ import React__default from 'react';
3
+ import { cn } from '../../lib/utils.js';
4
+
5
+ function Button({ variant = "primary", size = "md", children, className, ...props }) {
6
+ return (React__default.createElement(Button$1, { className: cn("font-inherit focus-visible:outline-highlight m-0 flex items-center justify-center gap-2 rounded-lg px-3 py-2 outline-0 select-none focus-visible:outline-2 focus-visible:outline-offset-2 data-disabled:cursor-not-allowed data-disabled:opacity-60", variantStyles[variant], sizeStyles[size], className), focusableWhenDisabled: true, ...props }, children));
7
+ }
8
+ const variantStyles = {
9
+ primary: "bg-primary text-on-primary hover:bg-primary/90 active:bg-primary/80",
10
+ secondary: "bg-secondary text-on-secondary hover:bg-secondary/90 active:bg-secondary/80",
11
+ muted: "bg-muted text-on-muted hover:bg-muted/90 active:bg-muted/80",
12
+ error: "bg-error text-on-error hover:bg-error/90 active:bg-error/80",
13
+ success: "bg-success text-on-success hover:bg-success/90 active:bg-success/80",
14
+ outline: "bg-transparent border text-foreground hover:bg-muted/10 active:bg-muted/20",
15
+ ghost: "bg-transparent text-foreground hover:bg-muted/10 active:bg-muted/20",
16
+ link: "bg-transparent text-link-foreground hover:underline underline-offset-4",
17
+ };
18
+ const sizeStyles = {
19
+ sm: "text-sm",
20
+ md: "text-base",
21
+ lg: "text-lg",
22
+ };
23
+
24
+ export { Button };
25
+ //# sourceMappingURL=Button.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Button.js","sources":["../../../../src/components/button/Button.tsx"],"sourcesContent":["import {\n Button as BaseButton,\n ButtonProps as BaseButtonProps,\n} from \"@base-ui/react/button\";\nimport React from \"react\";\nimport { cn } from \"../../lib/utils\";\n\nexport interface ButtonProps extends BaseButtonProps {\n variant?: ButtonVariant;\n size?: ButtonSize;\n}\n\nexport function Button({\n variant = \"primary\",\n size = \"md\",\n children,\n className,\n ...props\n}: ButtonProps) {\n return (\n <BaseButton\n className={cn(\n \"font-inherit focus-visible:outline-highlight m-0 flex items-center justify-center gap-2 rounded-lg px-3 py-2 outline-0 select-none focus-visible:outline-2 focus-visible:outline-offset-2 data-disabled:cursor-not-allowed data-disabled:opacity-60\",\n variantStyles[variant],\n sizeStyles[size],\n className,\n )}\n focusableWhenDisabled\n {...props}\n >\n {children}\n </BaseButton>\n );\n}\n\nconst variantStyles = {\n primary:\n \"bg-primary text-on-primary hover:bg-primary/90 active:bg-primary/80\",\n secondary:\n \"bg-secondary text-on-secondary hover:bg-secondary/90 active:bg-secondary/80\",\n muted: \"bg-muted text-on-muted hover:bg-muted/90 active:bg-muted/80\",\n error: \"bg-error text-on-error hover:bg-error/90 active:bg-error/80\",\n success:\n \"bg-success text-on-success hover:bg-success/90 active:bg-success/80\",\n outline:\n \"bg-transparent border text-foreground hover:bg-muted/10 active:bg-muted/20\",\n ghost: \"bg-transparent text-foreground hover:bg-muted/10 active:bg-muted/20\",\n link: \"bg-transparent text-link-foreground hover:underline underline-offset-4\",\n};\n\nconst sizeStyles = {\n sm: \"text-sm\",\n md: \"text-base\",\n lg: \"text-lg\",\n};\n\nexport type ButtonVariant = keyof typeof variantStyles;\nexport type ButtonSize = keyof typeof sizeStyles;\n"],"names":["React","BaseButton"],"mappings":";;;;SAYgB,MAAM,CAAC,EACrB,OAAO,GAAG,SAAS,EACnB,IAAI,GAAG,IAAI,EACX,QAAQ,EACR,SAAS,EACT,GAAG,KAAK,EACI,EAAA;AACZ,IAAA,QACEA,cAAA,CAAA,aAAA,CAACC,QAAU,EAAA,EACT,SAAS,EAAE,EAAE,CACX,qPAAqP,EACrP,aAAa,CAAC,OAAO,CAAC,EACtB,UAAU,CAAC,IAAI,CAAC,EAChB,SAAS,CACV,EACD,qBAAqB,EAAA,IAAA,EAAA,GACjB,KAAK,EAAA,EAER,QAAQ,CACE;AAEjB;AAEA,MAAM,aAAa,GAAG;AACpB,IAAA,OAAO,EACL,qEAAqE;AACvE,IAAA,SAAS,EACP,6EAA6E;AAC/E,IAAA,KAAK,EAAE,6DAA6D;AACpE,IAAA,KAAK,EAAE,6DAA6D;AACpE,IAAA,OAAO,EACL,qEAAqE;AACvE,IAAA,OAAO,EACL,4EAA4E;AAC9E,IAAA,KAAK,EAAE,qEAAqE;AAC5E,IAAA,IAAI,EAAE,wEAAwE;CAC/E;AAED,MAAM,UAAU,GAAG;AACjB,IAAA,EAAE,EAAE,SAAS;AACb,IAAA,EAAE,EAAE,WAAW;AACf,IAAA,EAAE,EAAE,SAAS;CACd;;;;"}
@@ -0,0 +1 @@
1
+ export * from "./Button";
@@ -0,0 +1,13 @@
1
+ import { CheckboxRootProps as BaseCheckboxRootProps, CheckboxIndicatorProps } from "@base-ui/react/checkbox";
2
+ import React from "react";
3
+ import { BasicFieldProps } from "../../lib/utils";
4
+ import { FieldProps } from "../field/Field";
5
+ interface CheckboxProps extends BaseCheckboxRootProps, Omit<BasicFieldProps, "label"> {
6
+ label?: React.ReactNode;
7
+ labelProps?: React.LabelHTMLAttributes<HTMLLabelElement>;
8
+ indicatorProps?: CheckboxIndicatorProps;
9
+ iconProps?: React.SVGProps<SVGSVGElement>;
10
+ fieldProps?: FieldProps;
11
+ }
12
+ export declare function Checkbox({ label, className, fieldProps, description, isValidating: _isValidating, isValidatingMessage, errorMessage, labelProps: { className: labelClassName, ...labelProps }, indicatorProps: { className: indicatorClassName, ...indicatorProps }, iconProps: { className: iconClassName, ...iconProps }, ...props }: CheckboxProps): React.JSX.Element;
13
+ export {};
@@ -0,0 +1,26 @@
1
+ import { Checkbox as Checkbox$1 } from '@base-ui/react/checkbox';
2
+ import { Field } from '@base-ui/react/field';
3
+ import { CheckIcon } from 'lucide-react';
4
+ import React__default from 'react';
5
+ import { cn } from '../../lib/utils.js';
6
+ import { useCheckboxGroupContext } from '../checkbox-group/CheckboxGroup.js';
7
+ import { useFieldContext, Field as Field$1 } from '../field/Field.js';
8
+
9
+ function Checkbox({ label, className, fieldProps, description, isValidating: _isValidating, isValidatingMessage, errorMessage, labelProps: { className: labelClassName, ...labelProps } = {}, indicatorProps: { className: indicatorClassName, ...indicatorProps } = {}, iconProps: { className: iconClassName, ...iconProps } = {}, ...props }) {
10
+ const labelId = React__default.useId();
11
+ const isInCheckboxGroup = useCheckboxGroupContext();
12
+ const { isValidating: groupIsValidating } = useFieldContext();
13
+ const isValidating = isInCheckboxGroup ? groupIsValidating : _isValidating;
14
+ const children = (React__default.createElement(Field.Label, { className: cn("text-foreground flex items-center gap-2 text-base", labelClassName), ...labelProps },
15
+ React__default.createElement(Checkbox$1.Root, { className: cn("data-validating:not-data-invalid:animate-validating data-invalid:border-error-foreground data-invalid:data-checked:bg-error data-invalid:data-checked:border-error data-checked:bg-primary data-checked:border-primary focus-visible:outline-highlight flex size-5 items-center justify-center rounded-sm border outline-offset-2 focus-visible:outline-2", className), "aria-labelledby": labelId, "data-validating": isValidating ? "" : undefined, ...props },
16
+ React__default.createElement(Checkbox$1.Indicator, { className: cn("text-on-primary data-invalid:border-error data-invalid:bg-error flex data-unchecked:hidden", indicatorClassName), ...indicatorProps },
17
+ React__default.createElement(CheckIcon, { className: cn("size-4", iconClassName), ...iconProps }))),
18
+ React__default.createElement("span", { id: labelId }, label)));
19
+ if (isInCheckboxGroup) {
20
+ return React__default.createElement(Field.Item, null, children);
21
+ }
22
+ return (React__default.createElement(Field$1, { isValidating: isValidating, isValidatingMessage: isValidatingMessage, errorMessage: errorMessage, description: description, ...fieldProps }, children));
23
+ }
24
+
25
+ export { Checkbox };
26
+ //# sourceMappingURL=Checkbox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Checkbox.js","sources":["../../../../src/components/checkbox/Checkbox.tsx"],"sourcesContent":["import {\n Checkbox as BaseCheckbox,\n CheckboxRootProps as BaseCheckboxRootProps,\n CheckboxIndicatorProps,\n} from \"@base-ui/react/checkbox\";\nimport { Field as BaseField } from \"@base-ui/react/field\";\nimport { CheckIcon } from \"lucide-react\";\nimport React from \"react\";\nimport { BasicFieldProps, cn } from \"../../lib/utils\";\nimport { useCheckboxGroupContext } from \"../checkbox-group/CheckboxGroup\";\nimport { Field, FieldProps, useFieldContext } from \"../field/Field\";\n\ninterface CheckboxProps\n extends BaseCheckboxRootProps, Omit<BasicFieldProps, \"label\"> {\n label?: React.ReactNode;\n labelProps?: React.LabelHTMLAttributes<HTMLLabelElement>;\n indicatorProps?: CheckboxIndicatorProps;\n iconProps?: React.SVGProps<SVGSVGElement>;\n fieldProps?: FieldProps;\n}\n\nexport function Checkbox({\n label,\n className,\n fieldProps,\n description,\n isValidating: _isValidating,\n isValidatingMessage,\n errorMessage,\n labelProps: { className: labelClassName, ...labelProps } = {},\n indicatorProps: { className: indicatorClassName, ...indicatorProps } = {},\n iconProps: { className: iconClassName, ...iconProps } = {},\n ...props\n}: CheckboxProps) {\n const labelId = React.useId();\n const isInCheckboxGroup = useCheckboxGroupContext();\n const { isValidating: groupIsValidating } = useFieldContext();\n const isValidating = isInCheckboxGroup ? groupIsValidating : _isValidating;\n\n const children = (\n <BaseField.Label\n className={cn(\n \"text-foreground flex items-center gap-2 text-base\",\n labelClassName,\n )}\n {...labelProps}\n >\n <BaseCheckbox.Root\n className={cn(\n \"data-validating:not-data-invalid:animate-validating data-invalid:border-error-foreground data-invalid:data-checked:bg-error data-invalid:data-checked:border-error data-checked:bg-primary data-checked:border-primary focus-visible:outline-highlight flex size-5 items-center justify-center rounded-sm border outline-offset-2 focus-visible:outline-2\",\n className,\n )}\n aria-labelledby={labelId}\n data-validating={isValidating ? \"\" : undefined}\n {...props}\n >\n <BaseCheckbox.Indicator\n className={cn(\n \"text-on-primary data-invalid:border-error data-invalid:bg-error flex data-unchecked:hidden\",\n indicatorClassName,\n )}\n {...indicatorProps}\n >\n <CheckIcon className={cn(\"size-4\", iconClassName)} {...iconProps} />\n </BaseCheckbox.Indicator>\n </BaseCheckbox.Root>\n <span id={labelId}>{label}</span>\n </BaseField.Label>\n );\n\n if (isInCheckboxGroup) {\n return <BaseField.Item>{children}</BaseField.Item>;\n }\n\n return (\n <Field\n isValidating={isValidating}\n isValidatingMessage={isValidatingMessage}\n errorMessage={errorMessage}\n description={description}\n {...fieldProps}\n >\n {children}\n </Field>\n );\n}\n"],"names":["React","BaseField","BaseCheckbox","Field"],"mappings":";;;;;;;;AAqBM,SAAU,QAAQ,CAAC,EACvB,KAAK,EACL,SAAS,EACT,UAAU,EACV,WAAW,EACX,YAAY,EAAE,aAAa,EAC3B,mBAAmB,EACnB,YAAY,EACZ,UAAU,EAAE,EAAE,SAAS,EAAE,cAAc,EAAE,GAAG,UAAU,EAAE,GAAG,EAAE,EAC7D,cAAc,EAAE,EAAE,SAAS,EAAE,kBAAkB,EAAE,GAAG,cAAc,EAAE,GAAG,EAAE,EACzE,SAAS,EAAE,EAAE,SAAS,EAAE,aAAa,EAAE,GAAG,SAAS,EAAE,GAAG,EAAE,EAC1D,GAAG,KAAK,EACM,EAAA;AACd,IAAA,MAAM,OAAO,GAAGA,cAAK,CAAC,KAAK,EAAE;AAC7B,IAAA,MAAM,iBAAiB,GAAG,uBAAuB,EAAE;IACnD,MAAM,EAAE,YAAY,EAAE,iBAAiB,EAAE,GAAG,eAAe,EAAE;IAC7D,MAAM,YAAY,GAAG,iBAAiB,GAAG,iBAAiB,GAAG,aAAa;AAE1E,IAAA,MAAM,QAAQ,IACZA,cAAA,CAAA,aAAA,CAACC,KAAS,CAAC,KAAK,EAAA,EACd,SAAS,EAAE,EAAE,CACX,mDAAmD,EACnD,cAAc,CACf,KACG,UAAU,EAAA;QAEdD,cAAA,CAAA,aAAA,CAACE,UAAY,CAAC,IAAI,EAAA,EAChB,SAAS,EAAE,EAAE,CACX,2VAA2V,EAC3V,SAAS,CACV,qBACgB,OAAO,EAAA,iBAAA,EACP,YAAY,GAAG,EAAE,GAAG,SAAS,EAAA,GAC1C,KAAK,EAAA;AAET,YAAAF,cAAA,CAAA,aAAA,CAACE,UAAY,CAAC,SAAS,EAAA,EACrB,SAAS,EAAE,EAAE,CACX,4FAA4F,EAC5F,kBAAkB,CACnB,KACG,cAAc,EAAA;AAElB,gBAAAF,cAAA,CAAA,aAAA,CAAC,SAAS,EAAA,EAAC,SAAS,EAAE,EAAE,CAAC,QAAQ,EAAE,aAAa,CAAC,EAAA,GAAM,SAAS,EAAA,CAAI,CAC7C,CACP;QACpBA,cAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAM,EAAE,EAAE,OAAO,EAAA,EAAG,KAAK,CAAQ,CACjB,CACnB;IAED,IAAI,iBAAiB,EAAE;AACrB,QAAA,OAAOA,6BAACC,KAAS,CAAC,IAAI,EAAA,IAAA,EAAE,QAAQ,CAAkB;IACpD;IAEA,QACED,cAAA,CAAA,aAAA,CAACG,OAAK,EAAA,EACJ,YAAY,EAAE,YAAY,EAC1B,mBAAmB,EAAE,mBAAmB,EACxC,YAAY,EAAE,YAAY,EAC1B,WAAW,EAAE,WAAW,EAAA,GACpB,UAAU,EAAA,EAEb,QAAQ,CACH;AAEZ;;;;"}
@@ -0,0 +1 @@
1
+ export * from "./Checkbox";
@@ -0,0 +1,14 @@
1
+ import { CheckboxGroupProps as BaseCheckboxGroupProps } from "@base-ui/react/checkbox-group";
2
+ import { FieldsetLegendProps, FieldsetRootProps } from "@base-ui/react/fieldset";
3
+ import * as React from "react";
4
+ import { BasicFieldProps } from "../../lib/utils";
5
+ import { FieldProps } from "../field/Field";
6
+ interface CheckboxGroupProps extends BaseCheckboxGroupProps, BasicFieldProps {
7
+ children?: React.ReactNode;
8
+ fieldProps?: FieldProps;
9
+ fieldsetProps?: FieldsetRootProps;
10
+ legendProps?: FieldsetLegendProps;
11
+ }
12
+ export declare function CheckboxGroup({ children, label, isValidating, isValidatingMessage, errorMessage, description, fieldProps, fieldsetProps: { className: fieldsetClassName, ...fieldsetProps }, legendProps: { className: legendClassName, ...legendProps }, ...props }: CheckboxGroupProps): React.JSX.Element;
13
+ export declare function useCheckboxGroupContext(): boolean;
14
+ export {};
@@ -0,0 +1,20 @@
1
+ import { CheckboxGroup as CheckboxGroup$1 } from '@base-ui/react/checkbox-group';
2
+ import { Fieldset } from '@base-ui/react/fieldset';
3
+ import * as React from 'react';
4
+ import { cn } from '../../lib/utils.js';
5
+ import { Field } from '../field/Field.js';
6
+
7
+ function CheckboxGroup({ children, label, isValidating, isValidatingMessage, errorMessage, description, fieldProps, fieldsetProps: { className: fieldsetClassName, ...fieldsetProps } = {}, legendProps: { className: legendClassName, ...legendProps } = {}, ...props }) {
8
+ return (React.createElement(CheckboxGroupContext.Provider, { value: true },
9
+ React.createElement(Field, { isValidating: isValidating, isValidatingMessage: isValidatingMessage, errorMessage: errorMessage, description: description, ...fieldProps },
10
+ React.createElement(Fieldset.Root, { render: React.createElement(CheckboxGroup$1, { ...props }), className: cn("flex flex-col gap-1", fieldsetClassName), ...fieldsetProps },
11
+ React.createElement(Fieldset.Legend, { className: cn("text-foreground text-sm font-semibold", legendClassName), ...legendProps }, label),
12
+ children))));
13
+ }
14
+ const CheckboxGroupContext = React.createContext(false);
15
+ function useCheckboxGroupContext() {
16
+ return React.useContext(CheckboxGroupContext);
17
+ }
18
+
19
+ export { CheckboxGroup, useCheckboxGroupContext };
20
+ //# sourceMappingURL=CheckboxGroup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CheckboxGroup.js","sources":["../../../../src/components/checkbox-group/CheckboxGroup.tsx"],"sourcesContent":["import {\n CheckboxGroup as BaseCheckboxGroup,\n CheckboxGroupProps as BaseCheckboxGroupProps,\n} from \"@base-ui/react/checkbox-group\";\nimport {\n Fieldset,\n FieldsetLegendProps,\n FieldsetRootProps,\n} from \"@base-ui/react/fieldset\";\nimport * as React from \"react\";\nimport { BasicFieldProps, cn } from \"../../lib/utils\";\nimport { Field, FieldProps } from \"../field/Field\";\n\ninterface CheckboxGroupProps extends BaseCheckboxGroupProps, BasicFieldProps {\n children?: React.ReactNode;\n fieldProps?: FieldProps;\n fieldsetProps?: FieldsetRootProps;\n legendProps?: FieldsetLegendProps;\n}\n\nexport function CheckboxGroup({\n children,\n label,\n isValidating,\n isValidatingMessage,\n errorMessage,\n description,\n fieldProps,\n fieldsetProps: { className: fieldsetClassName, ...fieldsetProps } = {},\n legendProps: { className: legendClassName, ...legendProps } = {},\n ...props\n}: CheckboxGroupProps) {\n return (\n <CheckboxGroupContext.Provider value={true}>\n <Field\n isValidating={isValidating}\n isValidatingMessage={isValidatingMessage}\n errorMessage={errorMessage}\n description={description}\n {...fieldProps}\n >\n <Fieldset.Root\n render={<BaseCheckboxGroup {...props} />}\n className={cn(\"flex flex-col gap-1\", fieldsetClassName)}\n {...fieldsetProps}\n >\n <Fieldset.Legend\n className={cn(\n \"text-foreground text-sm font-semibold\",\n legendClassName,\n )}\n {...legendProps}\n >\n {label}\n </Fieldset.Legend>\n {children}\n </Fieldset.Root>\n </Field>\n </CheckboxGroupContext.Provider>\n );\n}\n\nconst CheckboxGroupContext = React.createContext<boolean>(false);\n\nexport function useCheckboxGroupContext() {\n return React.useContext(CheckboxGroupContext);\n}\n"],"names":["BaseCheckboxGroup"],"mappings":";;;;;;AAoBM,SAAU,aAAa,CAAC,EAC5B,QAAQ,EACR,KAAK,EACL,YAAY,EACZ,mBAAmB,EACnB,YAAY,EACZ,WAAW,EACX,UAAU,EACV,aAAa,EAAE,EAAE,SAAS,EAAE,iBAAiB,EAAE,GAAG,aAAa,EAAE,GAAG,EAAE,EACtE,WAAW,EAAE,EAAE,SAAS,EAAE,eAAe,EAAE,GAAG,WAAW,EAAE,GAAG,EAAE,EAChE,GAAG,KAAK,EACW,EAAA;IACnB,QACE,oBAAC,oBAAoB,CAAC,QAAQ,EAAA,EAAC,KAAK,EAAE,IAAI,EAAA;AACxC,QAAA,KAAA,CAAA,aAAA,CAAC,KAAK,EAAA,EACJ,YAAY,EAAE,YAAY,EAC1B,mBAAmB,EAAE,mBAAmB,EACxC,YAAY,EAAE,YAAY,EAC1B,WAAW,EAAE,WAAW,KACpB,UAAU,EAAA;YAEd,KAAA,CAAA,aAAA,CAAC,QAAQ,CAAC,IAAI,EAAA,EACZ,MAAM,EAAE,KAAA,CAAA,aAAA,CAACA,eAAiB,EAAA,EAAA,GAAK,KAAK,GAAI,EACxC,SAAS,EAAE,EAAE,CAAC,qBAAqB,EAAE,iBAAiB,CAAC,EAAA,GACnD,aAAa,EAAA;AAEjB,gBAAA,KAAA,CAAA,aAAA,CAAC,QAAQ,CAAC,MAAM,EAAA,EACd,SAAS,EAAE,EAAE,CACX,uCAAuC,EACvC,eAAe,CAChB,EAAA,GACG,WAAW,EAAA,EAEd,KAAK,CACU;AACjB,gBAAA,QAAQ,CACK,CACV,CACsB;AAEpC;AAEA,MAAM,oBAAoB,GAAG,KAAK,CAAC,aAAa,CAAU,KAAK,CAAC;SAEhD,uBAAuB,GAAA;AACrC,IAAA,OAAO,KAAK,CAAC,UAAU,CAAC,oBAAoB,CAAC;AAC/C;;;;"}
@@ -0,0 +1 @@
1
+ export * from "./CheckboxGroup";
@@ -0,0 +1,16 @@
1
+ import { FieldRootProps as BaseFieldRootProps, FieldDescriptionProps, FieldErrorProps, FieldLabelProps } from "@base-ui/react/field";
2
+ import React from "react";
3
+ import { BasicFieldProps } from "../../lib/utils";
4
+ export interface FieldProps extends BaseFieldRootProps, BasicFieldProps {
5
+ labelProps?: FieldLabelProps;
6
+ errorMessageProps?: FieldErrorProps;
7
+ descriptionProps?: FieldDescriptionProps;
8
+ isValidatingMessageProps?: FieldDescriptionProps;
9
+ }
10
+ export declare function Field({ label, isValidating, isValidatingMessage, errorMessage, className, description, children, labelProps: { className: labelClassName, ...labelProps }, errorMessageProps: { className: errorMessageClassName, ...errorMessageProps }, descriptionProps: { className: descriptionClassName, ...descriptionProps }, isValidatingMessageProps: { className: isValidatingMessageClassName, ...isValidatingMessageProps }, ...props }: FieldProps): React.JSX.Element;
11
+ export declare const FieldContext: React.Context<{
12
+ isValidating: boolean;
13
+ }>;
14
+ export declare function useFieldContext(): {
15
+ isValidating: boolean;
16
+ };
@@ -0,0 +1,23 @@
1
+ import { Field as Field$1 } from '@base-ui/react/field';
2
+ import React__default from 'react';
3
+ import { cn } from '../../lib/utils.js';
4
+
5
+ function Field({ label, isValidating, isValidatingMessage, errorMessage, className, description, children, labelProps: { className: labelClassName, ...labelProps } = {}, errorMessageProps: { className: errorMessageClassName, ...errorMessageProps } = {}, descriptionProps: { className: descriptionClassName, ...descriptionProps } = {}, isValidatingMessageProps: { className: isValidatingMessageClassName, ...isValidatingMessageProps } = {}, ...props }) {
6
+ const invalid = !!errorMessage;
7
+ return (React__default.createElement(FieldContext.Provider, { value: { isValidating: !!isValidating } },
8
+ React__default.createElement(Field$1.Root, { className: cn("flex flex-col gap-1", className), invalid: invalid, "data-validating": isValidating ? "" : undefined, ...props },
9
+ label && (React__default.createElement(Field$1.Label, { className: cn("text-foreground text-sm font-semibold", labelClassName), ...labelProps }, label)),
10
+ children,
11
+ React__default.createElement(Field$1.Error, { className: cn("text-error-foreground text-sm", errorMessageClassName), match: invalid, ...errorMessageProps }, errorMessage),
12
+ isValidating && isValidatingMessage && !errorMessage && (React__default.createElement(Field$1.Description, { className: cn("text-primary-foreground text-sm", isValidatingMessageClassName), ...isValidatingMessageProps }, isValidatingMessage)),
13
+ description && (React__default.createElement(Field$1.Description, { className: cn("text-muted-foreground text-sm", descriptionClassName), ...descriptionProps }, description)))));
14
+ }
15
+ const FieldContext = React__default.createContext({
16
+ isValidating: false,
17
+ });
18
+ function useFieldContext() {
19
+ return React__default.useContext(FieldContext);
20
+ }
21
+
22
+ export { Field, FieldContext, useFieldContext };
23
+ //# sourceMappingURL=Field.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Field.js","sources":["../../../../src/components/field/Field.tsx"],"sourcesContent":["import {\n Field as BaseField,\n FieldRootProps as BaseFieldRootProps,\n FieldDescriptionProps,\n FieldErrorProps,\n FieldLabelProps,\n} from \"@base-ui/react/field\";\nimport React from \"react\";\nimport { BasicFieldProps, cn } from \"../../lib/utils\";\n\nexport interface FieldProps extends BaseFieldRootProps, BasicFieldProps {\n labelProps?: FieldLabelProps;\n errorMessageProps?: FieldErrorProps;\n descriptionProps?: FieldDescriptionProps;\n isValidatingMessageProps?: FieldDescriptionProps;\n}\n\nexport function Field({\n label,\n isValidating,\n isValidatingMessage,\n errorMessage,\n className,\n description,\n children,\n labelProps: { className: labelClassName, ...labelProps } = {},\n errorMessageProps: {\n className: errorMessageClassName,\n ...errorMessageProps\n } = {},\n descriptionProps: {\n className: descriptionClassName,\n ...descriptionProps\n } = {},\n isValidatingMessageProps: {\n className: isValidatingMessageClassName,\n ...isValidatingMessageProps\n } = {},\n ...props\n}: FieldProps) {\n const invalid = !!errorMessage;\n\n return (\n <FieldContext.Provider value={{ isValidating: !!isValidating }}>\n <BaseField.Root\n className={cn(\"flex flex-col gap-1\", className)}\n invalid={invalid}\n data-validating={isValidating ? \"\" : undefined}\n {...props}\n >\n {label && (\n <BaseField.Label\n className={cn(\n \"text-foreground text-sm font-semibold\",\n labelClassName,\n )}\n {...labelProps}\n >\n {label}\n </BaseField.Label>\n )}\n {children}\n <BaseField.Error\n className={cn(\"text-error-foreground text-sm\", errorMessageClassName)}\n match={invalid}\n {...errorMessageProps}\n >\n {errorMessage}\n </BaseField.Error>\n {isValidating && isValidatingMessage && !errorMessage && (\n <BaseField.Description\n className={cn(\n \"text-primary-foreground text-sm\",\n isValidatingMessageClassName,\n )}\n {...isValidatingMessageProps}\n >\n {isValidatingMessage}\n </BaseField.Description>\n )}\n {description && (\n <BaseField.Description\n className={cn(\n \"text-muted-foreground text-sm\",\n descriptionClassName,\n )}\n {...descriptionProps}\n >\n {description}\n </BaseField.Description>\n )}\n </BaseField.Root>\n </FieldContext.Provider>\n );\n}\n\nexport const FieldContext = React.createContext({\n isValidating: false,\n});\n\nexport function useFieldContext() {\n return React.useContext(FieldContext);\n}\n"],"names":["React","BaseField"],"mappings":";;;;AAiBM,SAAU,KAAK,CAAC,EACpB,KAAK,EACL,YAAY,EACZ,mBAAmB,EACnB,YAAY,EACZ,SAAS,EACT,WAAW,EACX,QAAQ,EACR,UAAU,EAAE,EAAE,SAAS,EAAE,cAAc,EAAE,GAAG,UAAU,EAAE,GAAG,EAAE,EAC7D,iBAAiB,EAAE,EACjB,SAAS,EAAE,qBAAqB,EAChC,GAAG,iBAAiB,EACrB,GAAG,EAAE,EACN,gBAAgB,EAAE,EAChB,SAAS,EAAE,oBAAoB,EAC/B,GAAG,gBAAgB,EACpB,GAAG,EAAE,EACN,wBAAwB,EAAE,EACxB,SAAS,EAAE,4BAA4B,EACvC,GAAG,wBAAwB,EAC5B,GAAG,EAAE,EACN,GAAG,KAAK,EACG,EAAA;AACX,IAAA,MAAM,OAAO,GAAG,CAAC,CAAC,YAAY;AAE9B,IAAA,QACEA,cAAA,CAAA,aAAA,CAAC,YAAY,CAAC,QAAQ,EAAA,EAAC,KAAK,EAAE,EAAE,YAAY,EAAE,CAAC,CAAC,YAAY,EAAE,EAAA;QAC5DA,cAAA,CAAA,aAAA,CAACC,OAAS,CAAC,IAAI,EAAA,EACb,SAAS,EAAE,EAAE,CAAC,qBAAqB,EAAE,SAAS,CAAC,EAC/C,OAAO,EAAE,OAAO,EAAA,iBAAA,EACC,YAAY,GAAG,EAAE,GAAG,SAAS,EAAA,GAC1C,KAAK,EAAA;YAER,KAAK,KACJD,cAAA,CAAA,aAAA,CAACC,OAAS,CAAC,KAAK,EAAA,EACd,SAAS,EAAE,EAAE,CACX,uCAAuC,EACvC,cAAc,CACf,EAAA,GACG,UAAU,EAAA,EAEb,KAAK,CACU,CACnB;YACA,QAAQ;YACTD,cAAA,CAAA,aAAA,CAACC,OAAS,CAAC,KAAK,EAAA,EACd,SAAS,EAAE,EAAE,CAAC,+BAA+B,EAAE,qBAAqB,CAAC,EACrE,KAAK,EAAE,OAAO,KACV,iBAAiB,EAAA,EAEpB,YAAY,CACG;YACjB,YAAY,IAAI,mBAAmB,IAAI,CAAC,YAAY,KACnDD,cAAA,CAAA,aAAA,CAACC,OAAS,CAAC,WAAW,EAAA,EACpB,SAAS,EAAE,EAAE,CACX,iCAAiC,EACjC,4BAA4B,CAC7B,EAAA,GACG,wBAAwB,EAAA,EAE3B,mBAAmB,CACE,CACzB;YACA,WAAW,KACVD,cAAA,CAAA,aAAA,CAACC,OAAS,CAAC,WAAW,EAAA,EACpB,SAAS,EAAE,EAAE,CACX,+BAA+B,EAC/B,oBAAoB,CACrB,EAAA,GACG,gBAAgB,EAAA,EAEnB,WAAW,CACU,CACzB,CACc,CACK;AAE5B;AAEO,MAAM,YAAY,GAAGD,cAAK,CAAC,aAAa,CAAC;AAC9C,IAAA,YAAY,EAAE,KAAK;AACpB,CAAA;SAEe,eAAe,GAAA;AAC7B,IAAA,OAAOA,cAAK,CAAC,UAAU,CAAC,YAAY,CAAC;AACvC;;;;"}
@@ -0,0 +1 @@
1
+ export * from "./Field";
@@ -0,0 +1,8 @@
1
+ import { InputProps as BaseInputProps } from "@base-ui/react/input";
2
+ import React from "react";
3
+ import { BasicFieldProps } from "../../lib/utils";
4
+ import { FieldProps } from "../field/Field";
5
+ export interface InputProps extends BaseInputProps, BasicFieldProps {
6
+ fieldProps?: FieldProps;
7
+ }
8
+ export declare function Input({ label, isValidating, isValidatingMessage, errorMessage, className, description, fieldProps, ...props }: InputProps): React.JSX.Element;
@@ -0,0 +1,12 @@
1
+ import { Input as Input$1 } from '@base-ui/react/input';
2
+ import React__default from 'react';
3
+ import { cn } from '../../lib/utils.js';
4
+ import { Field } from '../field/Field.js';
5
+
6
+ function Input({ label, isValidating, isValidatingMessage, errorMessage, className, description, fieldProps, ...props }) {
7
+ return (React__default.createElement(Field, { label: label, isValidating: isValidating, isValidatingMessage: isValidatingMessage, errorMessage: errorMessage, description: description, ...fieldProps },
8
+ React__default.createElement(Input$1, { className: cn("data-invalid:not-focus:border-error-foreground data-validating:not-data-invalid:animate-validating focus:border-highlight placeholder:text-muted-foreground w-full min-w-40 rounded-lg border p-2 transition-colors outline-none", className), "data-validating": isValidating ? "" : undefined, ...props })));
9
+ }
10
+
11
+ export { Input };
12
+ //# sourceMappingURL=Input.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Input.js","sources":["../../../../src/components/input/Input.tsx"],"sourcesContent":["import {\n Input as BaseInput,\n InputProps as BaseInputProps,\n} from \"@base-ui/react/input\";\nimport React from \"react\";\nimport { BasicFieldProps, cn } from \"../../lib/utils\";\nimport { Field, FieldProps } from \"../field/Field\";\n\nexport interface InputProps extends BaseInputProps, BasicFieldProps {\n fieldProps?: FieldProps;\n}\n\nexport function Input({\n label,\n isValidating,\n isValidatingMessage,\n errorMessage,\n className,\n description,\n fieldProps,\n ...props\n}: InputProps) {\n return (\n <Field\n label={label}\n isValidating={isValidating}\n isValidatingMessage={isValidatingMessage}\n errorMessage={errorMessage}\n description={description}\n {...fieldProps}\n >\n <BaseInput\n className={cn(\n \"data-invalid:not-focus:border-error-foreground data-validating:not-data-invalid:animate-validating focus:border-highlight placeholder:text-muted-foreground w-full min-w-40 rounded-lg border p-2 transition-colors outline-none\",\n className,\n )}\n data-validating={isValidating ? \"\" : undefined}\n {...props}\n />\n </Field>\n );\n}\n"],"names":["React","BaseInput"],"mappings":";;;;;AAYM,SAAU,KAAK,CAAC,EACpB,KAAK,EACL,YAAY,EACZ,mBAAmB,EACnB,YAAY,EACZ,SAAS,EACT,WAAW,EACX,UAAU,EACV,GAAG,KAAK,EACG,EAAA;IACX,QACEA,cAAA,CAAA,aAAA,CAAC,KAAK,EAAA,EACJ,KAAK,EAAE,KAAK,EACZ,YAAY,EAAE,YAAY,EAC1B,mBAAmB,EAAE,mBAAmB,EACxC,YAAY,EAAE,YAAY,EAC1B,WAAW,EAAE,WAAW,EAAA,GACpB,UAAU,EAAA;QAEdA,cAAA,CAAA,aAAA,CAACC,OAAS,EAAA,EACR,SAAS,EAAE,EAAE,CACX,kOAAkO,EAClO,SAAS,CACV,EAAA,iBAAA,EACgB,YAAY,GAAG,EAAE,GAAG,SAAS,EAAA,GAC1C,KAAK,EAAA,CACT,CACI;AAEZ;;;;"}
@@ -0,0 +1 @@
1
+ export * from "./Input";
@@ -0,0 +1,18 @@
1
+ import { RadioIndicatorProps, RadioRootProps } from "@base-ui/react/radio";
2
+ import { RadioGroupProps as BaseRadioGroupProps } from "@base-ui/react/radio-group";
3
+ import * as React from "react";
4
+ import { BasicFieldProps } from "../../lib/utils";
5
+ import { FieldProps } from "../field/Field";
6
+ interface RadioProps extends RadioRootProps {
7
+ label?: React.ReactNode;
8
+ indicatorProps?: RadioIndicatorProps;
9
+ }
10
+ export declare function Radio({ label, indicatorProps: { className: indicatorClassName, ...indicatorProps }, ...props }: RadioProps): React.JSX.Element;
11
+ export declare namespace Radio {
12
+ var Group: typeof RadioGroup;
13
+ }
14
+ interface RadioGroupProps extends BaseRadioGroupProps, BasicFieldProps {
15
+ fieldProps?: FieldProps;
16
+ }
17
+ export declare function RadioGroup({ isValidating, isValidatingMessage, errorMessage, description, fieldProps, label, children, ...props }: RadioGroupProps): React.JSX.Element;
18
+ export {};
@@ -0,0 +1,25 @@
1
+ import { Fieldset } from '@base-ui/react/fieldset';
2
+ import { Radio as Radio$1 } from '@base-ui/react/radio';
3
+ import { RadioGroup as RadioGroup$1 } from '@base-ui/react/radio-group';
4
+ import * as React from 'react';
5
+ import { cn } from '../../lib/utils.js';
6
+ import { useFieldContext, Field } from '../field/Field.js';
7
+
8
+ function Radio({ label, indicatorProps: { className: indicatorClassName, ...indicatorProps } = {}, ...props }) {
9
+ const id = React.useId();
10
+ const { isValidating } = useFieldContext();
11
+ return (React.createElement("label", { className: "flex items-center gap-2", id: id },
12
+ React.createElement(Radio$1.Root, { className: cn("data-validating:not-data-invalid:animate-validating focus-visible:outline-highlight data-checked:border-primary-foreground data-invalid:border-error-foreground flex size-5 items-center justify-center rounded-full border focus-visible:outline-2 focus-visible:outline-offset-2"), "aria-labelledby": id, "data-validating": isValidating ? "" : undefined, ...props },
13
+ React.createElement(Radio$1.Indicator, { className: cn("before:bg-primary data-invalid:before:bg-error flex before:size-3 before:rounded-full data-unchecked:hidden", indicatorClassName), ...indicatorProps })),
14
+ label));
15
+ }
16
+ function RadioGroup({ isValidating, isValidatingMessage, errorMessage, description, fieldProps, label, children, ...props }) {
17
+ return (React.createElement(Field, { isValidating: isValidating, isValidatingMessage: isValidatingMessage, errorMessage: errorMessage, description: description, ...fieldProps },
18
+ React.createElement(Fieldset.Root, { render: React.createElement(RadioGroup$1, { ...props }), className: "flex flex-col gap-1" },
19
+ React.createElement(Fieldset.Legend, { className: "text-foreground text-sm font-semibold" }, label),
20
+ children)));
21
+ }
22
+ Radio.Group = RadioGroup;
23
+
24
+ export { Radio, RadioGroup };
25
+ //# sourceMappingURL=Radio.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Radio.js","sources":["../../../../src/components/radio/Radio.tsx"],"sourcesContent":["import { Fieldset } from \"@base-ui/react/fieldset\";\nimport {\n Radio as BaseRadio,\n RadioIndicatorProps,\n RadioRootProps,\n} from \"@base-ui/react/radio\";\nimport {\n RadioGroup as BaseRadioGroup,\n RadioGroupProps as BaseRadioGroupProps,\n} from \"@base-ui/react/radio-group\";\nimport * as React from \"react\";\nimport { BasicFieldProps, cn } from \"../../lib/utils\";\nimport { Field, FieldProps, useFieldContext } from \"../field/Field\";\n\ninterface RadioProps extends RadioRootProps {\n label?: React.ReactNode;\n indicatorProps?: RadioIndicatorProps;\n}\n\nexport function Radio({\n label,\n indicatorProps: { className: indicatorClassName, ...indicatorProps } = {},\n ...props\n}: RadioProps) {\n const id = React.useId();\n const { isValidating } = useFieldContext();\n\n return (\n <label className=\"flex items-center gap-2\" id={id}>\n <BaseRadio.Root\n className={cn(\n \"data-validating:not-data-invalid:animate-validating focus-visible:outline-highlight data-checked:border-primary-foreground data-invalid:border-error-foreground flex size-5 items-center justify-center rounded-full border focus-visible:outline-2 focus-visible:outline-offset-2\",\n )}\n aria-labelledby={id}\n data-validating={isValidating ? \"\" : undefined}\n {...props}\n >\n <BaseRadio.Indicator\n className={cn(\n \"before:bg-primary data-invalid:before:bg-error flex before:size-3 before:rounded-full data-unchecked:hidden\",\n indicatorClassName,\n )}\n {...indicatorProps}\n />\n </BaseRadio.Root>\n {label}\n </label>\n );\n}\n\ninterface RadioGroupProps extends BaseRadioGroupProps, BasicFieldProps {\n fieldProps?: FieldProps;\n}\n\nexport function RadioGroup({\n isValidating,\n isValidatingMessage,\n errorMessage,\n description,\n fieldProps,\n label,\n children,\n ...props\n}: RadioGroupProps) {\n return (\n <Field\n isValidating={isValidating}\n isValidatingMessage={isValidatingMessage}\n errorMessage={errorMessage}\n description={description}\n {...fieldProps}\n >\n <Fieldset.Root\n render={<BaseRadioGroup {...props} />}\n className=\"flex flex-col gap-1\"\n >\n <Fieldset.Legend className=\"text-foreground text-sm font-semibold\">\n {label}\n </Fieldset.Legend>\n {children}\n </Fieldset.Root>\n </Field>\n );\n}\n\nRadio.Group = RadioGroup;\n"],"names":["BaseRadio","BaseRadioGroup"],"mappings":";;;;;;;AAmBM,SAAU,KAAK,CAAC,EACpB,KAAK,EACL,cAAc,EAAE,EAAE,SAAS,EAAE,kBAAkB,EAAE,GAAG,cAAc,EAAE,GAAG,EAAE,EACzE,GAAG,KAAK,EACG,EAAA;AACX,IAAA,MAAM,EAAE,GAAG,KAAK,CAAC,KAAK,EAAE;AACxB,IAAA,MAAM,EAAE,YAAY,EAAE,GAAG,eAAe,EAAE;IAE1C,QACE,+BAAO,SAAS,EAAC,yBAAyB,EAAC,EAAE,EAAE,EAAE,EAAA;QAC/C,KAAA,CAAA,aAAA,CAACA,OAAS,CAAC,IAAI,EAAA,EACb,SAAS,EAAE,EAAE,CACX,oRAAoR,CACrR,EAAA,iBAAA,EACgB,EAAE,EAAA,iBAAA,EACF,YAAY,GAAG,EAAE,GAAG,SAAS,EAAA,GAC1C,KAAK,EAAA;AAET,YAAA,KAAA,CAAA,aAAA,CAACA,OAAS,CAAC,SAAS,EAAA,EAClB,SAAS,EAAE,EAAE,CACX,6GAA6G,EAC7G,kBAAkB,CACnB,EAAA,GACG,cAAc,GAClB,CACa;QAChB,KAAK,CACA;AAEZ;AAMM,SAAU,UAAU,CAAC,EACzB,YAAY,EACZ,mBAAmB,EACnB,YAAY,EACZ,WAAW,EACX,UAAU,EACV,KAAK,EACL,QAAQ,EACR,GAAG,KAAK,EACQ,EAAA;IAChB,QACE,oBAAC,KAAK,EAAA,EACJ,YAAY,EAAE,YAAY,EAC1B,mBAAmB,EAAE,mBAAmB,EACxC,YAAY,EAAE,YAAY,EAC1B,WAAW,EAAE,WAAW,KACpB,UAAU,EAAA;AAEd,QAAA,KAAA,CAAA,aAAA,CAAC,QAAQ,CAAC,IAAI,EAAA,EACZ,MAAM,EAAE,KAAA,CAAA,aAAA,CAACC,YAAc,EAAA,EAAA,GAAK,KAAK,EAAA,CAAI,EACrC,SAAS,EAAC,qBAAqB,EAAA;YAE/B,KAAA,CAAA,aAAA,CAAC,QAAQ,CAAC,MAAM,EAAA,EAAC,SAAS,EAAC,uCAAuC,EAAA,EAC/D,KAAK,CACU;YACjB,QAAQ,CACK,CACV;AAEZ;AAEA,KAAK,CAAC,KAAK,GAAG,UAAU;;;;"}
@@ -0,0 +1 @@
1
+ export * from "./Radio";
@@ -0,0 +1,24 @@
1
+ import { SelectRootProps as BaseSelectProps, SelectIconProps, SelectItemIndicatorProps, SelectItemProps, SelectItemTextProps, SelectListProps, SelectPopupProps, SelectPortalProps, SelectPositionerProps, SelectScrollDownArrowProps, SelectScrollUpArrowProps, SelectTriggerProps, SelectValueProps } from "@base-ui/react/select";
2
+ import React from "react";
3
+ import { BasicFieldProps } from "../../lib/utils";
4
+ import { FieldProps } from "../field/Field";
5
+ export interface SelectProps<T> extends BaseSelectProps<T>, BasicFieldProps {
6
+ className?: string;
7
+ placeholder?: React.ReactNode;
8
+ fieldProps?: FieldProps;
9
+ triggerProps?: SelectTriggerProps;
10
+ valueProps?: SelectValueProps;
11
+ selectIconProps?: SelectIconProps;
12
+ iconProps?: React.ComponentPropsWithoutRef<"svg">;
13
+ portalProps?: SelectPortalProps;
14
+ positionerProps?: SelectPositionerProps;
15
+ popupProps?: SelectPopupProps;
16
+ scrollUpArrowProps?: SelectScrollUpArrowProps;
17
+ listProps?: SelectListProps;
18
+ itemProps?: SelectItemProps;
19
+ itemIndicatorProps?: SelectItemIndicatorProps;
20
+ checkIconProps?: React.ComponentPropsWithoutRef<"svg">;
21
+ itemTextProps?: SelectItemTextProps;
22
+ scrollDownArrowProps?: SelectScrollDownArrowProps;
23
+ }
24
+ export declare function Select<T>({ label, isValidating, isValidatingMessage, errorMessage, className, description, fieldProps, items, placeholder, triggerProps: { className: triggerClassName, ...triggerProps }, valueProps: { className: valueClassName, ...valueProps }, selectIconProps: { className: selectIconClassName, ...selectIconProps }, iconProps: { className: iconClassName, ...iconProps }, portalProps, positionerProps: { className: positionerClassName, ...positionerProps }, popupProps: { className: popupClassName, ...popupProps }, scrollUpArrowProps: { className: scrollUpArrowClassName, ...scrollUpArrowProps }, listProps: { className: listClassName, ...listProps }, itemProps: { className: itemClassName, ...itemProps }, itemIndicatorProps: { className: itemIndicatorClassName, ...itemIndicatorProps }, checkIconProps: { className: checkIconClassName, ...checkIconProps }, itemTextProps: { className: itemTextClassName, ...itemTextProps }, scrollDownArrowProps: { className: scrollDownArrowClassName, ...scrollDownArrowProps }, ...props }: SelectProps<T>): React.JSX.Element;
@@ -0,0 +1,27 @@
1
+ import { Select as Select$1 } from '@base-ui/react/select';
2
+ import { ChevronsUpDown, Check } from 'lucide-react';
3
+ import React__default from 'react';
4
+ import { cn } from '../../lib/utils.js';
5
+ import { Field } from '../field/Field.js';
6
+
7
+ function Select({ label, isValidating, isValidatingMessage, errorMessage, className, description, fieldProps, items, placeholder, triggerProps: { className: triggerClassName, ...triggerProps } = {}, valueProps: { className: valueClassName, ...valueProps } = {}, selectIconProps: { className: selectIconClassName, ...selectIconProps } = {}, iconProps: { className: iconClassName, ...iconProps } = {}, portalProps, positionerProps: { className: positionerClassName, ...positionerProps } = {}, popupProps: { className: popupClassName, ...popupProps } = {}, scrollUpArrowProps: { className: scrollUpArrowClassName, ...scrollUpArrowProps } = {}, listProps: { className: listClassName, ...listProps } = {}, itemProps: { className: itemClassName, ...itemProps } = {}, itemIndicatorProps: { className: itemIndicatorClassName, ...itemIndicatorProps } = {}, checkIconProps: { className: checkIconClassName, ...checkIconProps } = {}, itemTextProps: { className: itemTextClassName, ...itemTextProps } = {}, scrollDownArrowProps: { className: scrollDownArrowClassName, ...scrollDownArrowProps } = {}, ...props }) {
8
+ return (React__default.createElement(Field, { label: label, isValidating: isValidating, isValidatingMessage: isValidatingMessage, errorMessage: errorMessage, description: description, ...fieldProps },
9
+ React__default.createElement(Select$1.Root, { items: items, ...props },
10
+ React__default.createElement(Select$1.Trigger, { className: cn("data-invalid:not-focus:border-error-foreground data-validating:not-data-invalid:animate-validating bg-background hover:bg-card data-popup-open:bg-card focus-visible:border-highlight flex min-w-40 items-center justify-between gap-3 rounded-lg border p-2 text-base transition-colors outline-none select-none", className, triggerClassName), "data-validating": isValidating ? "" : undefined, ...triggerProps },
11
+ React__default.createElement(Select$1.Value, { className: cn("data-placeholder:opacity-60", valueClassName), placeholder: placeholder, ...valueProps }),
12
+ React__default.createElement(Select$1.Icon, { className: cn("flex", selectIconClassName), ...selectIconProps },
13
+ React__default.createElement(ChevronsUpDown, { className: cn("size-4", iconClassName), ...iconProps }))),
14
+ React__default.createElement(Select$1.Portal, { ...portalProps },
15
+ React__default.createElement(Select$1.Positioner, { className: cn("z-10 outline-none select-none", positionerClassName), sideOffset: 8, ...positionerProps },
16
+ React__default.createElement(Select$1.Popup, { className: cn("group bg-background outline-border min-w-(--anchor-width) origin-(--transform-origin) rounded-lg bg-clip-padding shadow-lg outline transition-[transform,scale,opacity] data-ending-style:scale-90 data-ending-style:opacity-0 data-starting-style:scale-90 data-starting-style:opacity-0 data-[side=none]:min-w-[calc(var(--anchor-width)+1.25rem)] data-[side=none]:data-ending-style:transition-none data-[side=none]:data-starting-style:scale-100 data-[side=none]:data-starting-style:opacity-100 data-[side=none]:data-starting-style:transition-none", popupClassName), ...popupProps },
17
+ React__default.createElement(Select$1.ScrollUpArrow, { className: cn("bg-background top-0 z-1 flex h-4 w-full cursor-default items-center justify-center rounded-lg text-center text-xs before:absolute before:left-0 before:h-full before:w-full before:content-[''] data-[side=none]:before:-top-full", scrollUpArrowClassName), ...scrollUpArrowProps }),
18
+ React__default.createElement(Select$1.List, { className: cn("relative max-h-(--available-height) scroll-py-6 overflow-y-auto py-1", listClassName), ...listProps }, Array.isArray(items) &&
19
+ items.map(({ label, value }) => (React__default.createElement(Select$1.Item, { key: label, value: value, className: cn("data-highlighted:before:bg-primary data-highlighted:text-on-primary grid cursor-default grid-cols-[0.75rem_1fr] items-center gap-2 py-2 pr-4 pl-2.5 text-sm leading-4 outline-none select-none group-data-[side=none]:pr-12 group-data-[side=none]:text-base group-data-[side=none]:leading-4 data-highlighted:relative data-highlighted:z-0 data-highlighted:before:absolute data-highlighted:before:inset-x-1 data-highlighted:before:inset-y-0 data-highlighted:before:z-[-1] data-highlighted:before:rounded-sm pointer-coarse:py-2.5 pointer-coarse:text-[0.925rem]", itemClassName), ...itemProps },
20
+ React__default.createElement(Select$1.ItemIndicator, { className: cn("col-start-1", itemIndicatorClassName), ...itemIndicatorProps },
21
+ React__default.createElement(Check, { className: cn("size-3", checkIconClassName), ...checkIconProps })),
22
+ React__default.createElement(Select$1.ItemText, { className: cn("col-start-2", itemTextClassName), ...itemTextProps }, label))))),
23
+ React__default.createElement(Select$1.ScrollDownArrow, { className: cn("bg-background bottom-0 z-1 flex h-4 w-full cursor-default items-center justify-center rounded-lg text-center text-xs before:absolute before:left-0 before:h-full before:w-full before:content-[''] data-[side=none]:before:-bottom-full", scrollDownArrowClassName), ...scrollDownArrowProps })))))));
24
+ }
25
+
26
+ export { Select };
27
+ //# sourceMappingURL=Select.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Select.js","sources":["../../../../src/components/select/Select.tsx"],"sourcesContent":["import {\n Select as BaseSelect,\n SelectRootProps as BaseSelectProps,\n SelectIconProps,\n SelectItemIndicatorProps,\n SelectItemProps,\n SelectItemTextProps,\n SelectListProps,\n SelectPopupProps,\n SelectPortalProps,\n SelectPositionerProps,\n SelectScrollDownArrowProps,\n SelectScrollUpArrowProps,\n SelectTriggerProps,\n SelectValueProps,\n} from \"@base-ui/react/select\";\nimport { Check, ChevronsUpDown } from \"lucide-react\";\nimport React from \"react\";\nimport { BasicFieldProps, cn } from \"../../lib/utils\";\nimport { Field, FieldProps } from \"../field/Field\";\n\nexport interface SelectProps<T> extends BaseSelectProps<T>, BasicFieldProps {\n className?: string;\n placeholder?: React.ReactNode;\n fieldProps?: FieldProps;\n triggerProps?: SelectTriggerProps;\n valueProps?: SelectValueProps;\n selectIconProps?: SelectIconProps;\n iconProps?: React.ComponentPropsWithoutRef<\"svg\">;\n portalProps?: SelectPortalProps;\n positionerProps?: SelectPositionerProps;\n popupProps?: SelectPopupProps;\n scrollUpArrowProps?: SelectScrollUpArrowProps;\n listProps?: SelectListProps;\n itemProps?: SelectItemProps;\n itemIndicatorProps?: SelectItemIndicatorProps;\n checkIconProps?: React.ComponentPropsWithoutRef<\"svg\">;\n itemTextProps?: SelectItemTextProps;\n scrollDownArrowProps?: SelectScrollDownArrowProps;\n}\n\nexport function Select<T>({\n label,\n isValidating,\n isValidatingMessage,\n errorMessage,\n className,\n description,\n fieldProps,\n items,\n placeholder,\n triggerProps: { className: triggerClassName, ...triggerProps } = {},\n valueProps: { className: valueClassName, ...valueProps } = {},\n selectIconProps: { className: selectIconClassName, ...selectIconProps } = {},\n iconProps: { className: iconClassName, ...iconProps } = {},\n portalProps,\n positionerProps: { className: positionerClassName, ...positionerProps } = {},\n popupProps: { className: popupClassName, ...popupProps } = {},\n scrollUpArrowProps: {\n className: scrollUpArrowClassName,\n ...scrollUpArrowProps\n } = {},\n listProps: { className: listClassName, ...listProps } = {},\n itemProps: { className: itemClassName, ...itemProps } = {},\n itemIndicatorProps: {\n className: itemIndicatorClassName,\n ...itemIndicatorProps\n } = {},\n checkIconProps: { className: checkIconClassName, ...checkIconProps } = {},\n itemTextProps: { className: itemTextClassName, ...itemTextProps } = {},\n scrollDownArrowProps: {\n className: scrollDownArrowClassName,\n ...scrollDownArrowProps\n } = {},\n ...props\n}: SelectProps<T>) {\n return (\n <Field\n label={label}\n isValidating={isValidating}\n isValidatingMessage={isValidatingMessage}\n errorMessage={errorMessage}\n description={description}\n {...fieldProps}\n >\n <BaseSelect.Root items={items} {...props}>\n <BaseSelect.Trigger\n className={cn(\n \"data-invalid:not-focus:border-error-foreground data-validating:not-data-invalid:animate-validating bg-background hover:bg-card data-popup-open:bg-card focus-visible:border-highlight flex min-w-40 items-center justify-between gap-3 rounded-lg border p-2 text-base transition-colors outline-none select-none\",\n className,\n triggerClassName,\n )}\n data-validating={isValidating ? \"\" : undefined}\n {...triggerProps}\n >\n <BaseSelect.Value\n className={cn(\"data-placeholder:opacity-60\", valueClassName)}\n placeholder={placeholder}\n {...valueProps}\n />\n <BaseSelect.Icon\n className={cn(\"flex\", selectIconClassName)}\n {...selectIconProps}\n >\n <ChevronsUpDown\n className={cn(\"size-4\", iconClassName)}\n {...iconProps}\n />\n </BaseSelect.Icon>\n </BaseSelect.Trigger>\n <BaseSelect.Portal {...portalProps}>\n <BaseSelect.Positioner\n className={cn(\"z-10 outline-none select-none\", positionerClassName)}\n sideOffset={8}\n {...positionerProps}\n >\n <BaseSelect.Popup\n className={cn(\n \"group bg-background outline-border min-w-(--anchor-width) origin-(--transform-origin) rounded-lg bg-clip-padding shadow-lg outline transition-[transform,scale,opacity] data-ending-style:scale-90 data-ending-style:opacity-0 data-starting-style:scale-90 data-starting-style:opacity-0 data-[side=none]:min-w-[calc(var(--anchor-width)+1.25rem)] data-[side=none]:data-ending-style:transition-none data-[side=none]:data-starting-style:scale-100 data-[side=none]:data-starting-style:opacity-100 data-[side=none]:data-starting-style:transition-none\",\n popupClassName,\n )}\n {...popupProps}\n >\n <BaseSelect.ScrollUpArrow\n className={cn(\n \"bg-background top-0 z-1 flex h-4 w-full cursor-default items-center justify-center rounded-lg text-center text-xs before:absolute before:left-0 before:h-full before:w-full before:content-[''] data-[side=none]:before:-top-full\",\n scrollUpArrowClassName,\n )}\n {...scrollUpArrowProps}\n />\n <BaseSelect.List\n className={cn(\n \"relative max-h-(--available-height) scroll-py-6 overflow-y-auto py-1\",\n listClassName,\n )}\n {...listProps}\n >\n {Array.isArray(items) &&\n items.map(({ label, value }) => (\n <BaseSelect.Item\n key={label}\n value={value}\n className={cn(\n \"data-highlighted:before:bg-primary data-highlighted:text-on-primary grid cursor-default grid-cols-[0.75rem_1fr] items-center gap-2 py-2 pr-4 pl-2.5 text-sm leading-4 outline-none select-none group-data-[side=none]:pr-12 group-data-[side=none]:text-base group-data-[side=none]:leading-4 data-highlighted:relative data-highlighted:z-0 data-highlighted:before:absolute data-highlighted:before:inset-x-1 data-highlighted:before:inset-y-0 data-highlighted:before:z-[-1] data-highlighted:before:rounded-sm pointer-coarse:py-2.5 pointer-coarse:text-[0.925rem]\",\n itemClassName,\n )}\n {...itemProps}\n >\n <BaseSelect.ItemIndicator\n className={cn(\"col-start-1\", itemIndicatorClassName)}\n {...itemIndicatorProps}\n >\n <Check\n className={cn(\"size-3\", checkIconClassName)}\n {...checkIconProps}\n />\n </BaseSelect.ItemIndicator>\n <BaseSelect.ItemText\n className={cn(\"col-start-2\", itemTextClassName)}\n {...itemTextProps}\n >\n {label}\n </BaseSelect.ItemText>\n </BaseSelect.Item>\n ))}\n </BaseSelect.List>\n <BaseSelect.ScrollDownArrow\n className={cn(\n \"bg-background bottom-0 z-1 flex h-4 w-full cursor-default items-center justify-center rounded-lg text-center text-xs before:absolute before:left-0 before:h-full before:w-full before:content-[''] data-[side=none]:before:-bottom-full\",\n scrollDownArrowClassName,\n )}\n {...scrollDownArrowProps}\n />\n </BaseSelect.Popup>\n </BaseSelect.Positioner>\n </BaseSelect.Portal>\n </BaseSelect.Root>\n </Field>\n );\n}\n"],"names":["React","BaseSelect"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export * from "./Select";
@@ -0,0 +1,70 @@
1
+ @import url("https://fonts.googleapis.com/css2?family=Noto+Sans:ital,wght@0,100..900;1,100..900&display=swap");
2
+ @import "tailwindcss";
3
+ @source "./components/**/*.{ts,tsx,js,jsx}";
4
+ :root {
5
+ --background: #0a0a0a;
6
+ --foreground: #ededed;
7
+ --border: #333;
8
+ --card: #141414;
9
+ --primary: #3b2d7c;
10
+ --on-primary: #fff;
11
+ --primary-foreground: #946fd1;
12
+ --secondary: #e6e6e6;
13
+ --on-secondary: #000;
14
+ --secondary-foreground: #fff;
15
+ --muted: #5e5e5e;
16
+ --on-muted: #d1d1d1;
17
+ --muted-foreground: #919191;
18
+ --error: #972626;
19
+ --on-error: #fff;
20
+ --error-foreground: #d94141;
21
+ --success: #2d7e45;
22
+ --on-success: #fff;
23
+ --success-foreground: #47c26c;
24
+ --link: #3b82f6;
25
+ }
26
+ @theme inline {
27
+ --color-background: var(--background);
28
+ --color-foreground: var(--foreground);
29
+ --color-border: var(--border);
30
+ --color-card: var(--card);
31
+ --color-primary: var(--primary);
32
+ --color-on-primary: var(--on-primary);
33
+ --color-primary-foreground: var(--primary-foreground);
34
+ --color-secondary: var(--secondary);
35
+ --color-on-secondary: var(--on-secondary);
36
+ --color-secondary-foreground: var(--secondary-foreground);
37
+ --color-muted: var(--muted);
38
+ --color-on-muted: var(--on-muted);
39
+ --color-muted-foreground: var(--muted-foreground);
40
+ --color-error: var(--error);
41
+ --color-on-error: var(--on-error);
42
+ --color-error-foreground: var(--error-foreground);
43
+ --color-success: var(--success);
44
+ --color-on-success: var(--on-success);
45
+ --color-success-foreground: var(--success-foreground);
46
+ --color-link: var(--link);
47
+ --animate-validating: validating 1.5s ease-in-out infinite;
48
+ @keyframes validating {
49
+ 0%,
50
+ to {
51
+ border-color: var(--primary);
52
+ }
53
+ 50% {
54
+ border-color: var(--primary-foreground);
55
+ }
56
+ }
57
+ }
58
+ body {
59
+ background-color: var(--background);
60
+ color: var(--foreground);
61
+ font-family:
62
+ Noto Sans,
63
+ sans-serif;
64
+ font-optical-sizing: auto;
65
+ font-style: normal;
66
+ font-variation-settings: "wdth" 100;
67
+ }
68
+ * {
69
+ border-color: var(--border);
70
+ }
@@ -0,0 +1,8 @@
1
+ export * from "./components/button";
2
+ export * from "./components/checkbox";
3
+ export * from "./components/checkbox-group";
4
+ export * from "./components/field";
5
+ export * from "./components/input";
6
+ export * from "./components/radio";
7
+ export * from "./components/select";
8
+ export * from "./lib/utils";
@@ -0,0 +1,9 @@
1
+ export { Button } from './components/button/Button.js';
2
+ export { Checkbox } from './components/checkbox/Checkbox.js';
3
+ export { CheckboxGroup, useCheckboxGroupContext } from './components/checkbox-group/CheckboxGroup.js';
4
+ export { Field, FieldContext, useFieldContext } from './components/field/Field.js';
5
+ export { Input } from './components/input/Input.js';
6
+ export { Radio, RadioGroup } from './components/radio/Radio.js';
7
+ export { Select } from './components/select/Select.js';
8
+ export { cn } from './lib/utils.js';
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;"}
@@ -0,0 +1,7 @@
1
+ export interface FieldProps {
2
+ label?: string;
3
+ errorMessage?: React.ReactNode;
4
+ isValidating?: boolean;
5
+ isValidatingMessage?: React.ReactNode;
6
+ description?: React.ReactNode;
7
+ }
@@ -0,0 +1,10 @@
1
+ import { type ClassValue } from "clsx";
2
+ import React from "react";
3
+ export declare function cn(...inputs: ClassValue[]): string;
4
+ export interface BasicFieldProps {
5
+ label?: React.ReactNode;
6
+ errorMessage?: React.ReactNode;
7
+ isValidating?: boolean;
8
+ isValidatingMessage?: React.ReactNode;
9
+ description?: React.ReactNode;
10
+ }
@@ -0,0 +1,9 @@
1
+ import { clsx } from 'clsx';
2
+ import { twMerge } from 'tailwind-merge';
3
+
4
+ function cn(...inputs) {
5
+ return twMerge(clsx(inputs));
6
+ }
7
+
8
+ export { cn };
9
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sources":["../../../src/lib/utils.ts"],"sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\nimport React from \"react\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\nexport interface BasicFieldProps {\n label?: React.ReactNode;\n errorMessage?: React.ReactNode;\n isValidating?: boolean;\n isValidatingMessage?: React.ReactNode;\n description?: React.ReactNode;\n}\n"],"names":[],"mappings":";;;AAIM,SAAU,EAAE,CAAC,GAAG,MAAoB,EAAA;AACxC,IAAA,OAAO,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC9B;;;;"}
@@ -0,0 +1,72 @@
1
+ @import url("https://fonts.googleapis.com/css2?family=Noto+Sans:ital,wght@0,100..900;1,100..900&display=swap");
2
+ @import "tailwindcss";
3
+ @source "../components/**/*.{ts,tsx,js,jsx}";
4
+ :root {
5
+ --background: #0a0a0a;
6
+ --foreground: #ededed;
7
+ --border: #333;
8
+ --card: #141414;
9
+ --primary: #3b2d7c;
10
+ --on-primary: #fff;
11
+ --primary-foreground: #946fd1;
12
+ --secondary: #e6e6e6;
13
+ --on-secondary: #000;
14
+ --secondary-foreground: #fff;
15
+ --muted: #5e5e5e;
16
+ --on-muted: #d1d1d1;
17
+ --muted-foreground: #919191;
18
+ --error: #972626;
19
+ --on-error: #fff;
20
+ --error-foreground: #d94141;
21
+ --success: #2d7e45;
22
+ --on-success: #fff;
23
+ --success-foreground: #47c26c;
24
+ --link: #3b82f6;
25
+ }
26
+ @theme inline {
27
+ --color-background: var(--background);
28
+ --color-foreground: var(--foreground);
29
+ --color-border: var(--border);
30
+ --color-card: var(--card);
31
+ --color-primary: var(--primary);
32
+ --color-on-primary: var(--on-primary);
33
+ --color-primary-foreground: var(--primary-foreground);
34
+ --color-secondary: var(--secondary);
35
+ --color-on-secondary: var(--on-secondary);
36
+ --color-secondary-foreground: var(--secondary-foreground);
37
+ --color-muted: var(--muted);
38
+ --color-on-muted: var(--on-muted);
39
+ --color-muted-foreground: var(--muted-foreground);
40
+ --color-error: var(--error);
41
+ --color-on-error: var(--on-error);
42
+ --color-error-foreground: var(--error-foreground);
43
+ --color-success: var(--success);
44
+ --color-on-success: var(--on-success);
45
+ --color-success-foreground: var(--success-foreground);
46
+ --color-link: var(--link);
47
+ --animate-validating: validating 1.5s ease-in-out infinite;
48
+ @keyframes validating {
49
+ 0%,
50
+ to {
51
+ border-color: var(--primary);
52
+ }
53
+ 50% {
54
+ border-color: var(--primary-foreground);
55
+ }
56
+ }
57
+ }
58
+ @layer components {
59
+ .fransek-ui {
60
+ color: var(--foreground);
61
+ font-family:
62
+ Noto Sans,
63
+ sans-serif;
64
+ font-optical-sizing: auto;
65
+ font-style: normal;
66
+ font-variation-settings: "wdth" 100;
67
+ &,
68
+ * {
69
+ border-color: var(--border);
70
+ }
71
+ }
72
+ }