@mage-ui/components 1.0.143 → 1.0.144

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 (34) hide show
  1. package/dist/components/controls/checkbox/Checkbox.d.mts +2 -1
  2. package/dist/components/controls/checkbox/Checkbox.d.mts.map +1 -1
  3. package/dist/components/controls/checkbox/Checkbox.mjs.map +1 -1
  4. package/dist/components/controls/checkbox-group/CheckboxGroup.d.mts +2 -2
  5. package/dist/components/controls/checkbox-group/CheckboxGroup.d.mts.map +1 -1
  6. package/dist/components/controls/checkbox-group/CheckboxGroup.mjs +1 -1
  7. package/dist/components/controls/checkbox-group/CheckboxGroup.mjs.map +1 -1
  8. package/dist/components/controls/checkbox-tree/CheckboxTree.d.mts +51 -0
  9. package/dist/components/controls/checkbox-tree/CheckboxTree.d.mts.map +1 -0
  10. package/dist/components/controls/checkbox-tree/CheckboxTree.mjs +2 -0
  11. package/dist/components/controls/checkbox-tree/CheckboxTree.mjs.map +1 -0
  12. package/dist/components/controls/index.d.mts +1 -0
  13. package/dist/components/data-display/avatar/Avatar.d.mts +3 -1
  14. package/dist/components/data-display/avatar/Avatar.d.mts.map +1 -1
  15. package/dist/components/data-display/avatar/Avatar.mjs +1 -1
  16. package/dist/components/data-display/avatar/Avatar.mjs.map +1 -1
  17. package/dist/components/forms/Form.d.mts +12 -0
  18. package/dist/components/forms/Form.d.mts.map +1 -1
  19. package/dist/components/forms/Form.mjs +1 -1
  20. package/dist/components/forms/Form.mjs.map +1 -1
  21. package/dist/components/forms/controls/FormCheckboxTree.d.mts +12 -0
  22. package/dist/components/forms/controls/FormCheckboxTree.d.mts.map +1 -0
  23. package/dist/components/forms/controls/FormCheckboxTree.mjs +2 -0
  24. package/dist/components/forms/controls/FormCheckboxTree.mjs.map +1 -0
  25. package/dist/components/forms/controls/index.mjs +1 -1
  26. package/dist/components/forms/controls/index.mjs.map +1 -1
  27. package/dist/components/forms/controls/register-components.mjs +1 -1
  28. package/dist/components/forms/controls/register-components.mjs.map +1 -1
  29. package/dist/components/forms/rules/extract-form-rules.mjs +1 -1
  30. package/dist/components/forms/rules/extract-form-rules.mjs.map +1 -1
  31. package/dist/components/index.d.mts +1 -0
  32. package/dist/index.d.mts +2 -1
  33. package/dist/index.mjs +1 -1
  34. package/package.json +2 -2
@@ -5,6 +5,7 @@ import { ComponentProps, ReactNode } from "react";
5
5
  type CheckboxProps = Omit<ComponentProps<'input'>, 'size' | 'children'> & {
6
6
  indeterminate?: boolean;
7
7
  label?: ReactNode;
8
+ description?: ReactNode;
8
9
  error?: string;
9
10
  classNames?: {
10
11
  checkbox?: string;
@@ -40,7 +41,7 @@ declare const Checkbox: {
40
41
  children,
41
42
  value,
42
43
  onChange,
43
- withAsterisk,
44
+ hiddenLabel,
44
45
  required,
45
46
  disabled,
46
47
  classNames
@@ -1 +1 @@
1
- {"version":3,"file":"Checkbox.d.mts","names":[],"sources":["../../../../src/components/controls/checkbox/Checkbox.tsx"],"mappings":";;;;KAsBY,aAAA,GAAgB,IAAA,CAC1B,cAAA;EAGA,aAAA;EACA,KAAA,GAAQ,SAAA;EACR,KAAA;EACA,UAAA;IACE,QAAA;IACA,IAAA;IACA,KAAA;IACA,IAAA;IACA,KAAA;IACA,IAAA;IACA,SAAA;IACA,YAAA;IACA,aAAA;IACA,KAAA;IACA,WAAA;IACA,KAAA;EAAA;EAEF,WAAA;AAAA;AAAA,cAGW,QAAA;EAAA;;;;;;;KAOV,aAAA,GAAgB,SAAA"}
1
+ {"version":3,"file":"Checkbox.d.mts","names":[],"sources":["../../../../src/components/controls/checkbox/Checkbox.tsx"],"mappings":";;;;KAsBY,aAAA,GAAgB,IAAA,CAC1B,cAAA;EAGA,aAAA;EACA,KAAA,GAAQ,SAAA;EACR,WAAA,GAAc,SAAA;EACd,KAAA;EACA,UAAA;IACE,QAAA;IACA,IAAA;IACA,KAAA;IACA,IAAA;IACA,KAAA;IACA,IAAA;IACA,SAAA;IACA,YAAA;IACA,aAAA;IACA,KAAA;IACA,WAAA;IACA,KAAA;EAAA;EAEF,WAAA;AAAA;AAAA,cAGW,QAAA;EAAA;;;;;;;KAOV,aAAA,GAAgB,SAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"Checkbox.mjs","names":["Checkbox","MantineCheckbox"],"sources":["../../../../src/components/controls/checkbox/Checkbox.tsx"],"sourcesContent":["import type { ComponentProps, ReactNode } from 'react';\n\nimport { cx } from '@mage-ui/styled-system/css';\nimport { visuallyHidden } from '@mage-ui/styled-system/patterns';\nimport {\n checkbox,\n checkboxBody,\n checkboxBodyError,\n checkboxDescription,\n checkboxError,\n checkboxIcon,\n checkboxInner,\n checkboxInput,\n checkboxLabel,\n checkboxLabelRequired,\n checkboxLabelWrapper,\n checkboxRoot,\n} from '@mage-ui/styled-system/recipes';\nimport { Checkbox as MantineCheckbox } from '@mantine/core';\n\nimport { CheckboxGroup } from '../checkbox-group/CheckboxGroup';\n\nexport type CheckboxProps = Omit<\n ComponentProps<'input'>,\n 'size' | 'children'\n> & {\n indeterminate?: boolean;\n label?: ReactNode;\n error?: string;\n classNames?: {\n checkbox?: string;\n root?: string;\n input?: string;\n icon?: string;\n inner?: string;\n body?: string;\n bodyError?: string;\n labelWrapper?: string;\n labelRequired?: string;\n label?: string;\n description?: string;\n error?: string;\n };\n hiddenLabel?: boolean;\n};\n\nexport const Checkbox = ({\n classNames,\n label,\n hiddenLabel,\n error,\n required,\n ...props\n}: CheckboxProps): ReactNode => {\n const RequiredAsterisk = () =>\n required ? (\n <span className={classNames?.labelRequired ?? checkboxLabelRequired()}>\n {' '}\n *\n </span>\n ) : null;\n\n return (\n <MantineCheckbox\n classNames={{\n root: cx(\n classNames?.checkbox ?? checkbox(),\n classNames?.root ?? checkboxRoot(),\n ),\n input: cx(classNames?.input ?? checkboxInput(), 'peer'),\n icon: classNames?.icon ?? checkboxIcon(),\n inner: classNames?.inner ?? checkboxInner(),\n body: cx(\n classNames?.body ?? checkboxBody(),\n error && (classNames?.bodyError ?? checkboxBodyError()),\n ),\n labelWrapper: classNames?.labelWrapper ?? checkboxLabelWrapper(),\n label: cx(\n classNames?.label ?? checkboxLabel(),\n hiddenLabel && visuallyHidden(),\n ),\n description: classNames?.description ?? checkboxDescription(),\n error: classNames?.error ?? checkboxError(),\n }}\n label={\n <>\n {label}\n <RequiredAsterisk />\n </>\n }\n {...props}\n />\n );\n};\n\nCheckbox.displayName = 'Checkbox';\nCheckbox.Group = CheckboxGroup;\n"],"mappings":"+jBA8CA,MAAaA,GAAY,CACvB,aACA,QACA,cACA,QACA,WACA,GAAG,KAWD,EAACC,EAAD,CACE,WAAY,CACV,KAAM,EACJ,GAAY,UAAY,GAAU,CAClC,GAAY,MAAQ,GAAc,CACnC,CACD,MAAO,EAAG,GAAY,OAAS,GAAe,CAAE,OAAO,CACvD,KAAM,GAAY,MAAQ,GAAc,CACxC,MAAO,GAAY,OAAS,GAAe,CAC3C,KAAM,EACJ,GAAY,MAAQ,GAAc,CAClC,IAAU,GAAY,WAAa,GAAmB,EACvD,CACD,aAAc,GAAY,cAAgB,GAAsB,CAChE,MAAO,EACL,GAAY,OAAS,GAAe,CACpC,GAAe,GAAgB,CAChC,CACD,YAAa,GAAY,aAAe,GAAqB,CAC7D,MAAO,GAAY,OAAS,GAAe,CAC5C,CACD,MACE,EAAA,EAAA,CAAA,SAAA,CACG,EACD,MAhCN,EACE,EAAC,OAAD,CAAM,UAAW,GAAY,eAAiB,GAAuB,UAArE,CACG,IAAI,IAEA,GACL,KA2BE,EAAoB,CAAA,CACnB,CAAA,CAAA,CAEL,GAAI,EACJ,CAAA,CAIN,EAAS,YAAc,WACvB,EAAS,MAAQ"}
1
+ {"version":3,"file":"Checkbox.mjs","names":["Checkbox","MantineCheckbox"],"sources":["../../../../src/components/controls/checkbox/Checkbox.tsx"],"sourcesContent":["import type { ComponentProps, ReactNode } from 'react';\n\nimport { cx } from '@mage-ui/styled-system/css';\nimport { visuallyHidden } from '@mage-ui/styled-system/patterns';\nimport {\n checkbox,\n checkboxBody,\n checkboxBodyError,\n checkboxDescription,\n checkboxError,\n checkboxIcon,\n checkboxInner,\n checkboxInput,\n checkboxLabel,\n checkboxLabelRequired,\n checkboxLabelWrapper,\n checkboxRoot,\n} from '@mage-ui/styled-system/recipes';\nimport { Checkbox as MantineCheckbox } from '@mantine/core';\n\nimport { CheckboxGroup } from '../checkbox-group/CheckboxGroup';\n\nexport type CheckboxProps = Omit<\n ComponentProps<'input'>,\n 'size' | 'children'\n> & {\n indeterminate?: boolean;\n label?: ReactNode;\n description?: ReactNode;\n error?: string;\n classNames?: {\n checkbox?: string;\n root?: string;\n input?: string;\n icon?: string;\n inner?: string;\n body?: string;\n bodyError?: string;\n labelWrapper?: string;\n labelRequired?: string;\n label?: string;\n description?: string;\n error?: string;\n };\n hiddenLabel?: boolean;\n};\n\nexport const Checkbox = ({\n classNames,\n label,\n hiddenLabel,\n error,\n required,\n ...props\n}: CheckboxProps): ReactNode => {\n const RequiredAsterisk = () =>\n required ? (\n <span className={classNames?.labelRequired ?? checkboxLabelRequired()}>\n {' '}\n *\n </span>\n ) : null;\n\n return (\n <MantineCheckbox\n classNames={{\n root: cx(\n classNames?.checkbox ?? checkbox(),\n classNames?.root ?? checkboxRoot(),\n ),\n input: cx(classNames?.input ?? checkboxInput(), 'peer'),\n icon: classNames?.icon ?? checkboxIcon(),\n inner: classNames?.inner ?? checkboxInner(),\n body: cx(\n classNames?.body ?? checkboxBody(),\n error && (classNames?.bodyError ?? checkboxBodyError()),\n ),\n labelWrapper: classNames?.labelWrapper ?? checkboxLabelWrapper(),\n label: cx(\n classNames?.label ?? checkboxLabel(),\n hiddenLabel && visuallyHidden(),\n ),\n description: classNames?.description ?? checkboxDescription(),\n error: classNames?.error ?? checkboxError(),\n }}\n label={\n <>\n {label}\n <RequiredAsterisk />\n </>\n }\n {...props}\n />\n );\n};\n\nCheckbox.displayName = 'Checkbox';\nCheckbox.Group = CheckboxGroup;\n"],"mappings":"+jBA+CA,MAAaA,GAAY,CACvB,aACA,QACA,cACA,QACA,WACA,GAAG,KAWD,EAACC,EAAD,CACE,WAAY,CACV,KAAM,EACJ,GAAY,UAAY,GAAU,CAClC,GAAY,MAAQ,GAAc,CACnC,CACD,MAAO,EAAG,GAAY,OAAS,GAAe,CAAE,OAAO,CACvD,KAAM,GAAY,MAAQ,GAAc,CACxC,MAAO,GAAY,OAAS,GAAe,CAC3C,KAAM,EACJ,GAAY,MAAQ,GAAc,CAClC,IAAU,GAAY,WAAa,GAAmB,EACvD,CACD,aAAc,GAAY,cAAgB,GAAsB,CAChE,MAAO,EACL,GAAY,OAAS,GAAe,CACpC,GAAe,GAAgB,CAChC,CACD,YAAa,GAAY,aAAe,GAAqB,CAC7D,MAAO,GAAY,OAAS,GAAe,CAC5C,CACD,MACE,EAAA,EAAA,CAAA,SAAA,CACG,EACD,MAhCN,EACE,EAAC,OAAD,CAAM,UAAW,GAAY,eAAiB,GAAuB,UAArE,CACG,IAAI,IAEA,GACL,KA2BE,EAAoB,CAAA,CACnB,CAAA,CAAA,CAEL,GAAI,EACJ,CAAA,CAIN,EAAS,YAAc,WACvB,EAAS,MAAQ"}
@@ -8,7 +8,7 @@ type CheckboxGroupProps = {
8
8
  children?: ReactNode;
9
9
  value?: string[];
10
10
  onChange?: (value: string[]) => void;
11
- withAsterisk?: boolean;
11
+ hiddenLabel?: boolean;
12
12
  required?: boolean;
13
13
  disabled?: boolean;
14
14
  classNames?: {
@@ -18,7 +18,7 @@ type CheckboxGroupProps = {
18
18
  required?: string;
19
19
  description?: string;
20
20
  error?: string;
21
- list?: string;
21
+ group?: string;
22
22
  };
23
23
  };
24
24
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"CheckboxGroup.d.mts","names":[],"sources":["../../../../src/components/controls/checkbox-group/CheckboxGroup.tsx"],"mappings":";;;KAcY,kBAAA;EACV,KAAA,GAAQ,SAAA;EACR,KAAA,GAAQ,SAAA;EACR,WAAA,GAAc,SAAA;EACd,QAAA,GAAW,SAAA;EACX,KAAA;EACA,QAAA,IAAY,KAAA;EACZ,YAAA;EACA,QAAA;EACA,QAAA;EACA,UAAA;IACE,aAAA;IACA,IAAA;IACA,KAAA;IACA,QAAA;IACA,WAAA;IACA,KAAA;IACA,IAAA;EAAA;AAAA"}
1
+ {"version":3,"file":"CheckboxGroup.d.mts","names":[],"sources":["../../../../src/components/controls/checkbox-group/CheckboxGroup.tsx"],"mappings":";;;KAeY,kBAAA;EACV,KAAA,GAAQ,SAAA;EACR,KAAA,GAAQ,SAAA;EACR,WAAA,GAAc,SAAA;EACd,QAAA,GAAW,SAAA;EACX,KAAA;EACA,QAAA,IAAY,KAAA;EACZ,WAAA;EACA,QAAA;EACA,QAAA;EACA,UAAA;IACE,aAAA;IACA,IAAA;IACA,KAAA;IACA,QAAA;IACA,WAAA;IACA,KAAA;IACA,KAAA;EAAA;AAAA"}
@@ -1,2 +1,2 @@
1
- import{cx as e}from"@mage-ui/styled-system/css";import{checkboxGroup as t,checkboxGroupDescription as n,checkboxGroupError as r,checkboxGroupGroup as i,checkboxGroupLabel as a,checkboxGroupRequired as o,checkboxGroupRoot as s}from"@mage-ui/styled-system/recipes";import{Checkbox as c}from"@mantine/core";import{jsx as l}from"react/jsx-runtime";const u=({label:u,error:d,description:f,children:p,value:m,onChange:h,withAsterisk:g,required:_,disabled:v,classNames:y})=>l(c.Group,{classNames:{root:e(y?.checkboxGroup??t(),y?.root??s()),label:y?.label??a(),required:y?.required??o(),description:y?.description??n(),error:y?.error??r()},label:u,description:f,error:d,value:m,onChange:h,disabled:v,required:_,withAsterisk:g,children:l(`div`,{className:y?.list??i(),children:p})});u.displayName=`Checkbox.Group`;export{u as CheckboxGroup};
1
+ import{cx as e}from"@mage-ui/styled-system/css";import{checkboxGroup as t,checkboxGroupDescription as n,checkboxGroupError as r,checkboxGroupGroup as i,checkboxGroupLabel as a,checkboxGroupRequired as o,checkboxGroupRoot as s}from"@mage-ui/styled-system/recipes";import{Checkbox as c}from"@mantine/core";import{jsx as l}from"react/jsx-runtime";import{visuallyHidden as u}from"@mage-ui/styled-system/patterns";const d=({label:d,error:f,description:p,children:m,value:h,onChange:g,hiddenLabel:_,required:v,disabled:y,classNames:b})=>l(c.Group,{classNames:{root:e(b?.checkboxGroup??t(),b?.root??s()),label:e(b?.label??a(),_&&u()),required:b?.required??o(),description:b?.description??n(),error:b?.error??r()},label:d,description:p,error:f,value:h,onChange:g,disabled:y,required:v,withAsterisk:v,children:l(`div`,{className:b?.group??i(),children:m})});d.displayName=`Checkbox.Group`;export{d as CheckboxGroup};
2
2
  //# sourceMappingURL=CheckboxGroup.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"CheckboxGroup.mjs","names":["CheckboxMantine"],"sources":["../../../../src/components/controls/checkbox-group/CheckboxGroup.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\n\nimport { cx } from '@mage-ui/styled-system/css';\nimport {\n checkboxGroup,\n checkboxGroupDescription,\n checkboxGroupError,\n checkboxGroupGroup,\n checkboxGroupLabel,\n checkboxGroupRequired,\n checkboxGroupRoot,\n} from '@mage-ui/styled-system/recipes';\nimport { Checkbox as CheckboxMantine } from '@mantine/core';\n\nexport type CheckboxGroupProps = {\n label?: ReactNode;\n error?: ReactNode;\n description?: ReactNode;\n children?: ReactNode;\n value?: string[];\n onChange?: (value: string[]) => void;\n withAsterisk?: boolean;\n required?: boolean;\n disabled?: boolean;\n classNames?: {\n checkboxGroup?: string;\n root?: string;\n label?: string;\n required?: string;\n description?: string;\n error?: string;\n list?: string;\n };\n};\n\nexport const CheckboxGroup = ({\n label,\n error,\n description,\n children,\n value,\n onChange,\n withAsterisk,\n required,\n disabled,\n classNames,\n}: CheckboxGroupProps): ReactNode => {\n return (\n <CheckboxMantine.Group\n classNames={{\n root: cx(\n classNames?.checkboxGroup ?? checkboxGroup(),\n classNames?.root ?? checkboxGroupRoot(),\n ),\n label: classNames?.label ?? checkboxGroupLabel(),\n required: classNames?.required ?? checkboxGroupRequired(),\n description: classNames?.description ?? checkboxGroupDescription(),\n error: classNames?.error ?? checkboxGroupError(),\n }}\n label={label}\n description={description}\n error={error}\n value={value}\n onChange={onChange}\n disabled={disabled}\n required={required}\n withAsterisk={withAsterisk}\n >\n <div className={classNames?.list ?? checkboxGroupGroup()}>{children}</div>\n </CheckboxMantine.Group>\n );\n};\n\nCheckboxGroup.displayName = 'Checkbox.Group';\n"],"mappings":"wVAmCA,MAAa,GAAiB,CAC5B,QACA,QACA,cACA,WACA,QACA,WACA,eACA,WACA,WACA,gBAGE,EAACA,EAAgB,MAAjB,CACE,WAAY,CACV,KAAM,EACJ,GAAY,eAAiB,GAAe,CAC5C,GAAY,MAAQ,GAAmB,CACxC,CACD,MAAO,GAAY,OAAS,GAAoB,CAChD,SAAU,GAAY,UAAY,GAAuB,CACzD,YAAa,GAAY,aAAe,GAA0B,CAClE,MAAO,GAAY,OAAS,GAAoB,CACjD,CACM,QACM,cACN,QACA,QACG,WACA,WACA,WACI,wBAEd,EAAC,MAAD,CAAK,UAAW,GAAY,MAAQ,GAAoB,CAAG,WAAe,CAAA,CACpD,CAAA,CAI5B,EAAc,YAAc"}
1
+ {"version":3,"file":"CheckboxGroup.mjs","names":["CheckboxMantine"],"sources":["../../../../src/components/controls/checkbox-group/CheckboxGroup.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\n\nimport { cx } from '@mage-ui/styled-system/css';\nimport { visuallyHidden } from '@mage-ui/styled-system/patterns';\nimport {\n checkboxGroup,\n checkboxGroupDescription,\n checkboxGroupError,\n checkboxGroupGroup,\n checkboxGroupLabel,\n checkboxGroupRequired,\n checkboxGroupRoot,\n} from '@mage-ui/styled-system/recipes';\nimport { Checkbox as CheckboxMantine } from '@mantine/core';\n\nexport type CheckboxGroupProps = {\n label?: ReactNode;\n error?: ReactNode;\n description?: ReactNode;\n children?: ReactNode;\n value?: string[];\n onChange?: (value: string[]) => void;\n hiddenLabel?: boolean;\n required?: boolean;\n disabled?: boolean;\n classNames?: {\n checkboxGroup?: string;\n root?: string;\n label?: string;\n required?: string;\n description?: string;\n error?: string;\n group?: string;\n };\n};\n\nexport const CheckboxGroup = ({\n label,\n error,\n description,\n children,\n value,\n onChange,\n hiddenLabel,\n required,\n disabled,\n classNames,\n}: CheckboxGroupProps): ReactNode => {\n return (\n <CheckboxMantine.Group\n classNames={{\n root: cx(\n classNames?.checkboxGroup ?? checkboxGroup(),\n classNames?.root ?? checkboxGroupRoot(),\n ),\n label: cx(\n classNames?.label ?? checkboxGroupLabel(),\n hiddenLabel && visuallyHidden(),\n ),\n required: classNames?.required ?? checkboxGroupRequired(),\n description: classNames?.description ?? checkboxGroupDescription(),\n error: classNames?.error ?? checkboxGroupError(),\n }}\n label={label}\n description={description}\n error={error}\n value={value}\n onChange={onChange}\n disabled={disabled}\n required={required}\n withAsterisk={required}\n >\n <div className={classNames?.group ?? checkboxGroupGroup()}>\n {children}\n </div>\n </CheckboxMantine.Group>\n );\n};\n\nCheckboxGroup.displayName = 'Checkbox.Group';\n"],"mappings":"yZAoCA,MAAa,GAAiB,CAC5B,QACA,QACA,cACA,WACA,QACA,WACA,cACA,WACA,WACA,gBAGE,EAACA,EAAgB,MAAjB,CACE,WAAY,CACV,KAAM,EACJ,GAAY,eAAiB,GAAe,CAC5C,GAAY,MAAQ,GAAmB,CACxC,CACD,MAAO,EACL,GAAY,OAAS,GAAoB,CACzC,GAAe,GAAgB,CAChC,CACD,SAAU,GAAY,UAAY,GAAuB,CACzD,YAAa,GAAY,aAAe,GAA0B,CAClE,MAAO,GAAY,OAAS,GAAoB,CACjD,CACM,QACM,cACN,QACA,QACG,WACA,WACA,WACV,aAAc,WAEd,EAAC,MAAD,CAAK,UAAW,GAAY,OAAS,GAAoB,CACtD,WACG,CAAA,CACgB,CAAA,CAI5B,EAAc,YAAc"}
@@ -0,0 +1,51 @@
1
+ import { CheckboxGroupProps } from "../checkbox-group/CheckboxGroup.mjs";
2
+ import { CheckboxProps } from "../checkbox/Checkbox.mjs";
3
+ import { ReactNode } from "react";
4
+
5
+ //#region src/components/controls/checkbox-tree/CheckboxTree.d.ts
6
+ type CheckboxTreeItem = {
7
+ value: string;
8
+ label: ReactNode;
9
+ description?: ReactNode;
10
+ disabled?: boolean;
11
+ };
12
+ type CheckboxTreeProps = Omit<CheckboxGroupProps, 'classNames' | 'children' | 'value' | 'onChange'> & {
13
+ parentLabel: ReactNode;
14
+ items: CheckboxTreeItem[];
15
+ value?: string[];
16
+ defaultValue?: string[];
17
+ onChange?: (value: string[]) => void;
18
+ classNames?: {
19
+ checkboxTree?: string;
20
+ root?: string;
21
+ label?: string;
22
+ description?: string;
23
+ required?: string;
24
+ error?: string;
25
+ group?: string;
26
+ list?: string;
27
+ item?: string;
28
+ checkbox?: CheckboxProps['classNames'];
29
+ parentCheckbox?: CheckboxProps['classNames'];
30
+ };
31
+ };
32
+ declare const CheckboxTree: {
33
+ ({
34
+ parentLabel,
35
+ items,
36
+ value,
37
+ defaultValue,
38
+ onChange,
39
+ label,
40
+ description,
41
+ error,
42
+ required,
43
+ disabled,
44
+ hiddenLabel,
45
+ classNames
46
+ }: CheckboxTreeProps): ReactNode;
47
+ displayName: string;
48
+ };
49
+ //#endregion
50
+ export { CheckboxTree, CheckboxTreeItem, CheckboxTreeProps };
51
+ //# sourceMappingURL=CheckboxTree.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CheckboxTree.d.mts","names":[],"sources":["../../../../src/components/controls/checkbox-tree/CheckboxTree.tsx"],"mappings":";;;;;KAqBY,gBAAA;EACV,KAAA;EACA,KAAA,EAAO,SAAA;EACP,WAAA,GAAc,SAAA;EACd,QAAA;AAAA;AAAA,KAGU,iBAAA,GAAoB,IAAA,CAC9B,kBAAA;EAGA,WAAA,EAAa,SAAA;EACb,KAAA,EAAO,gBAAA;EACP,KAAA;EACA,YAAA;EACA,QAAA,IAAY,KAAA;EACZ,UAAA;IACE,YAAA;IACA,IAAA;IACA,KAAA;IACA,WAAA;IACA,QAAA;IACA,KAAA;IACA,KAAA;IACA,IAAA;IACA,IAAA;IACA,QAAA,GAAW,aAAA;IACX,cAAA,GAAiB,aAAA;EAAA;AAAA;AAAA,cAMR,YAAA;EAAA;;;;;;;;;;;;;KAaV,iBAAA,GAAoB,SAAA"}
@@ -0,0 +1,2 @@
1
+ import{CheckboxGroup as e}from"../checkbox-group/CheckboxGroup.mjs";import{Checkbox as t}from"../checkbox/Checkbox.mjs";import{checkboxTree as n,checkboxTreeCheckbox as r,checkboxTreeDescription as i,checkboxTreeError as a,checkboxTreeGroup as o,checkboxTreeItem as s,checkboxTreeLabel as c,checkboxTreeList as l,checkboxTreeRequired as u,checkboxTreeRoot as d}from"@mage-ui/styled-system/recipes";import{jsx as f,jsxs as p}from"react/jsx-runtime";import{useId as m,useMemo as h,useState as g}from"react";const _=e=>Array.from(new Set(e)),v=({parentLabel:v,items:y,value:b,defaultValue:x,onChange:S,label:C,description:w,error:T,required:E,disabled:D,hiddenLabel:O,classNames:k})=>{let A=`${m()}-parent`,[j,M]=g(()=>x??[]),N=h(()=>y.map(e=>e.value),[y]),P=h(()=>new Set(N),[N]),F=h(()=>y.filter(e=>!e.disabled).map(e=>e.value),[y]),I=b??j,L=h(()=>I.filter(e=>P.has(e)),[P,I]),R=h(()=>L.filter(e=>F.includes(e)),[F,L]),z=F.length>0&&R.length===F.length,B=R.length>0&&!z,V=e=>{let t=_(e).filter(e=>P.has(e));b===void 0&&M(t),S?.(t)},H=()=>{V(z?[]:F)},U=e=>{if(e.includes(A)!==z){H();return}V(e.filter(e=>e!==A))},W=z?[...L,A]:L;return p(e,{label:C,description:w,error:T,required:E,disabled:D||void 0,hiddenLabel:O,value:W,onChange:U,classNames:{checkboxGroup:k?.checkboxTree??n(),root:k?.root??d(),label:k?.label??c(),description:k?.description??i(),error:k?.error??a(),required:k?.required??u(),group:k?.group??o()},children:[f(t,{checked:z,classNames:{checkbox:k?.parentCheckbox?.checkbox??r()},disabled:D||F.length===0,indeterminate:B,label:v,value:A}),f(`ul`,{className:k?.list??l(),children:y.map(e=>f(`li`,{className:k?.item??s(),children:f(t,{checked:L.includes(e.value),classNames:{checkbox:k?.checkbox?.checkbox??r()},description:e.description,disabled:D||e.disabled,label:e.label,value:e.value})},e.value))})]})};v.displayName=`CheckboxTree`;export{v as CheckboxTree};
2
+ //# sourceMappingURL=CheckboxTree.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CheckboxTree.mjs","names":[],"sources":["../../../../src/components/controls/checkbox-tree/CheckboxTree.tsx"],"sourcesContent":["import { type ReactNode, useId, useMemo, useState } from 'react';\n\nimport {\n checkboxTree,\n checkboxTreeCheckbox,\n checkboxTreeDescription,\n checkboxTreeError,\n checkboxTreeGroup,\n checkboxTreeItem,\n checkboxTreeLabel,\n checkboxTreeList,\n checkboxTreeRequired,\n checkboxTreeRoot,\n} from '@mage-ui/styled-system/recipes';\n\nimport { Checkbox, type CheckboxProps } from '../checkbox/Checkbox';\nimport {\n CheckboxGroup,\n type CheckboxGroupProps,\n} from '../checkbox-group/CheckboxGroup';\n\nexport type CheckboxTreeItem = {\n value: string;\n label: ReactNode;\n description?: ReactNode;\n disabled?: boolean;\n};\n\nexport type CheckboxTreeProps = Omit<\n CheckboxGroupProps,\n 'classNames' | 'children' | 'value' | 'onChange'\n> & {\n parentLabel: ReactNode;\n items: CheckboxTreeItem[];\n value?: string[];\n defaultValue?: string[];\n onChange?: (value: string[]) => void;\n classNames?: {\n checkboxTree?: string;\n root?: string;\n label?: string;\n description?: string;\n required?: string;\n error?: string;\n group?: string;\n list?: string;\n item?: string;\n checkbox?: CheckboxProps['classNames'];\n parentCheckbox?: CheckboxProps['classNames'];\n };\n};\n\nconst uniqueValues = (values: string[]) => Array.from(new Set(values));\n\nexport const CheckboxTree = ({\n parentLabel,\n items,\n value,\n defaultValue,\n onChange,\n label,\n description,\n error,\n required,\n disabled,\n hiddenLabel,\n classNames,\n}: CheckboxTreeProps): ReactNode => {\n const parentValue = `${useId()}-parent`;\n const [uncontrolledValue, setUncontrolledValue] = useState(\n () => defaultValue ?? [],\n );\n\n const itemValues = useMemo(() => items.map((item) => item.value), [items]);\n const itemValueSet = useMemo(() => new Set(itemValues), [itemValues]);\n const enabledItemValues = useMemo(\n () => items.filter((item) => !item.disabled).map((item) => item.value),\n [items],\n );\n\n const selectedValue = value ?? uncontrolledValue;\n const selectedItems = useMemo(\n () => selectedValue.filter((itemValue) => itemValueSet.has(itemValue)),\n [itemValueSet, selectedValue],\n );\n const selectedEnabledItems = useMemo(\n () =>\n selectedItems.filter((itemValue) =>\n enabledItemValues.includes(itemValue),\n ),\n [enabledItemValues, selectedItems],\n );\n\n const allChecked =\n enabledItemValues.length > 0 &&\n selectedEnabledItems.length === enabledItemValues.length;\n const indeterminate = selectedEnabledItems.length > 0 && !allChecked;\n\n const setSelectedItems = (nextValue: string[]) => {\n const nextSelectedItems = uniqueValues(nextValue).filter((itemValue) =>\n itemValueSet.has(itemValue),\n );\n\n if (value === undefined) {\n setUncontrolledValue(nextSelectedItems);\n }\n\n onChange?.(nextSelectedItems);\n };\n\n const handleParentChange = () => {\n setSelectedItems(allChecked ? [] : enabledItemValues);\n };\n\n const handleGroupChange = (nextValue: string[]) => {\n const nextParentChecked = nextValue.includes(parentValue);\n\n if (nextParentChecked !== allChecked) {\n handleParentChange();\n return;\n }\n\n setSelectedItems(\n nextValue.filter((itemValue) => itemValue !== parentValue),\n );\n };\n\n const groupValue = allChecked\n ? [...selectedItems, parentValue]\n : selectedItems;\n\n return (\n <CheckboxGroup\n label={label}\n description={description}\n error={error}\n required={required}\n disabled={disabled || undefined}\n hiddenLabel={hiddenLabel}\n value={groupValue}\n onChange={handleGroupChange}\n classNames={{\n checkboxGroup: classNames?.checkboxTree ?? checkboxTree(),\n root: classNames?.root ?? checkboxTreeRoot(),\n label: classNames?.label ?? checkboxTreeLabel(),\n description: classNames?.description ?? checkboxTreeDescription(),\n error: classNames?.error ?? checkboxTreeError(),\n required: classNames?.required ?? checkboxTreeRequired(),\n group: classNames?.group ?? checkboxTreeGroup(),\n }}\n >\n <Checkbox\n checked={allChecked}\n classNames={{\n checkbox:\n classNames?.parentCheckbox?.checkbox ?? checkboxTreeCheckbox(),\n }}\n disabled={disabled || enabledItemValues.length === 0}\n indeterminate={indeterminate}\n label={parentLabel}\n value={parentValue}\n />\n\n {/* TODO: scroll area? */}\n <ul className={classNames?.list ?? checkboxTreeList()}>\n {items.map((item) => (\n <li\n key={item.value}\n className={classNames?.item ?? checkboxTreeItem()}\n >\n <Checkbox\n checked={selectedItems.includes(item.value)}\n classNames={{\n checkbox:\n classNames?.checkbox?.checkbox ?? checkboxTreeCheckbox(),\n }}\n description={item.description}\n disabled={disabled || item.disabled}\n label={item.label}\n value={item.value}\n />\n </li>\n ))}\n </ul>\n </CheckboxGroup>\n );\n};\n\nCheckboxTree.displayName = 'CheckboxTree';\n"],"mappings":"yfAoDA,MAAM,EAAgB,GAAqB,MAAM,KAAK,IAAI,IAAI,EAAO,CAAC,CAEzD,GAAgB,CAC3B,cACA,QACA,QACA,eACA,WACA,QACA,cACA,QACA,WACA,WACA,cACA,gBACkC,CAClC,IAAM,EAAc,GAAG,GAAO,CAAC,SACzB,CAAC,EAAmB,GAAwB,MAC1C,GAAgB,EAAE,CACzB,CAEK,EAAa,MAAc,EAAM,IAAK,GAAS,EAAK,MAAM,CAAE,CAAC,EAAM,CAAC,CACpE,EAAe,MAAc,IAAI,IAAI,EAAW,CAAE,CAAC,EAAW,CAAC,CAC/D,EAAoB,MAClB,EAAM,OAAQ,GAAS,CAAC,EAAK,SAAS,CAAC,IAAK,GAAS,EAAK,MAAM,CACtE,CAAC,EAAM,CACR,CAEK,EAAgB,GAAS,EACzB,EAAgB,MACd,EAAc,OAAQ,GAAc,EAAa,IAAI,EAAU,CAAC,CACtE,CAAC,EAAc,EAAc,CAC9B,CACK,EAAuB,MAEzB,EAAc,OAAQ,GACpB,EAAkB,SAAS,EAAU,CACtC,CACH,CAAC,EAAmB,EAAc,CACnC,CAEK,EACJ,EAAkB,OAAS,GAC3B,EAAqB,SAAW,EAAkB,OAC9C,EAAgB,EAAqB,OAAS,GAAK,CAAC,EAEpD,EAAoB,GAAwB,CAChD,IAAM,EAAoB,EAAa,EAAU,CAAC,OAAQ,GACxD,EAAa,IAAI,EAAU,CAC5B,CAEG,IAAU,IAAA,IACZ,EAAqB,EAAkB,CAGzC,IAAW,EAAkB,EAGzB,MAA2B,CAC/B,EAAiB,EAAa,EAAE,CAAG,EAAkB,EAGjD,EAAqB,GAAwB,CAGjD,GAF0B,EAAU,SAAS,EAAY,GAE/B,EAAY,CACpC,GAAoB,CACpB,OAGF,EACE,EAAU,OAAQ,GAAc,IAAc,EAAY,CAC3D,EAGG,EAAa,EACf,CAAC,GAAG,EAAe,EAAY,CAC/B,EAEJ,OACE,EAAC,EAAD,CACS,QACM,cACN,QACG,WACV,SAAU,GAAY,IAAA,GACT,cACb,MAAO,EACP,SAAU,EACV,WAAY,CACV,cAAe,GAAY,cAAgB,GAAc,CACzD,KAAM,GAAY,MAAQ,GAAkB,CAC5C,MAAO,GAAY,OAAS,GAAmB,CAC/C,YAAa,GAAY,aAAe,GAAyB,CACjE,MAAO,GAAY,OAAS,GAAmB,CAC/C,SAAU,GAAY,UAAY,GAAsB,CACxD,MAAO,GAAY,OAAS,GAAmB,CAChD,UAjBH,CAmBE,EAAC,EAAD,CACE,QAAS,EACT,WAAY,CACV,SACE,GAAY,gBAAgB,UAAY,GAAsB,CACjE,CACD,SAAU,GAAY,EAAkB,SAAW,EACpC,gBACf,MAAO,EACP,MAAO,EACP,CAAA,CAGF,EAAC,KAAD,CAAI,UAAW,GAAY,MAAQ,GAAkB,UAClD,EAAM,IAAK,GACV,EAAC,KAAD,CAEE,UAAW,GAAY,MAAQ,GAAkB,UAEjD,EAAC,EAAD,CACE,QAAS,EAAc,SAAS,EAAK,MAAM,CAC3C,WAAY,CACV,SACE,GAAY,UAAU,UAAY,GAAsB,CAC3D,CACD,YAAa,EAAK,YAClB,SAAU,GAAY,EAAK,SAC3B,MAAO,EAAK,MACZ,MAAO,EAAK,MACZ,CAAA,CACC,CAdE,EAAK,MAcP,CACL,CACC,CAAA,CACS,IAIpB,EAAa,YAAc"}
@@ -1,5 +1,6 @@
1
1
  import { AvatarUpload, AvatarUploadProps } from "./avatar-upload/AvatarUpload.mjs";
2
2
  import { Checkbox, CheckboxProps } from "./checkbox/Checkbox.mjs";
3
+ import { CheckboxTree, CheckboxTreeItem, CheckboxTreeProps } from "./checkbox-tree/CheckboxTree.mjs";
3
4
  import { DatePicker, DatePickerClassNames, DatePickerDate, DatePickerProps, DatePickerValue } from "./date-picker/DatePicker.mjs";
4
5
  import { DateTimePicker, DateTimePickerClassNames, DateTimePickerDate, DateTimePickerProps, DateTimePickerValue } from "./date-time-picker/DateTimePicker.mjs";
5
6
  import { TextInput, TextInputProps } from "./text-input/TextInput.mjs";
@@ -12,12 +12,14 @@ type AvatarProps = {
12
12
  image?: string;
13
13
  placeholder?: string;
14
14
  };
15
+ isHighlighted?: boolean;
15
16
  } & AvatarVariantProps;
16
17
  declare const Avatar: ({
17
18
  classNames,
18
19
  name,
19
20
  src,
20
- alt
21
+ alt,
22
+ isHighlighted
21
23
  }: AvatarProps) => react_jsx_runtime0.JSX.Element;
22
24
  //#endregion
23
25
  export { Avatar, AvatarProps };
@@ -1 +1 @@
1
- {"version":3,"file":"Avatar.d.mts","names":[],"sources":["../../../../src/components/data-display/avatar/Avatar.tsx"],"mappings":";;;;KAUY,WAAA;EACV,IAAA;EACA,GAAA;EACA,GAAA;EACA,UAAA;IACE,MAAA;IACA,IAAA;IACA,KAAA;IACA,WAAA;EAAA;AAAA,IAEA,kBAAA;AAAA,cAES,MAAA;EAAU,UAAA;EAAA,IAAA;EAAA,GAAA;EAAA;AAAA,GAAgC,WAAA,KAAW,kBAAA,CAAA,GAAA,CAAA,OAAA"}
1
+ {"version":3,"file":"Avatar.d.mts","names":[],"sources":["../../../../src/components/data-display/avatar/Avatar.tsx"],"mappings":";;;;KAUY,WAAA;EACV,IAAA;EACA,GAAA;EACA,GAAA;EACA,UAAA;IACE,MAAA;IACA,IAAA;IACA,KAAA;IACA,WAAA;EAAA;EAEF,aAAA;AAAA,IACE,kBAAA;AAAA,cAES,MAAA;EAAU,UAAA;EAAA,IAAA;EAAA,GAAA;EAAA,GAAA;EAAA;AAAA,GAMpB,WAAA,KAAW,kBAAA,CAAA,GAAA,CAAA,OAAA"}
@@ -1,2 +1,2 @@
1
- import{cx as e}from"@mage-ui/styled-system/css";import{avatar as t,avatarImage as n,avatarPlaceholder as r,avatarRoot as i}from"@mage-ui/styled-system/recipes";import{Avatar as a}from"@mantine/core";import{jsx as o}from"react/jsx-runtime";const s=({classNames:s,name:c,src:l,alt:u})=>o(a,{name:c,src:l,alt:u||c,classNames:{root:e(s?.avatar??t(),s?.root??i()),image:s?.image??n(),placeholder:s?.placeholder??r()}});export{s as Avatar};
1
+ import{cx as e}from"@mage-ui/styled-system/css";import{avatar as t,avatarImage as n,avatarPlaceholder as r,avatarRoot as i}from"@mage-ui/styled-system/recipes";import{Avatar as a}from"@mantine/core";import{jsx as o}from"react/jsx-runtime";const s=({classNames:s,name:c,src:l,alt:u,isHighlighted:d})=>o(a,{name:c,src:l,alt:u||c,classNames:{root:e(s?.avatar??t(),s?.root??i()),image:s?.image??n(),placeholder:s?.placeholder??r()},"data-highlighted":d});export{s as Avatar};
2
2
  //# sourceMappingURL=Avatar.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Avatar.mjs","names":["Avatar","MantineAvatar"],"sources":["../../../../src/components/data-display/avatar/Avatar.tsx"],"sourcesContent":["import { cx } from '@mage-ui/styled-system/css';\nimport {\n type AvatarVariantProps,\n avatar,\n avatarImage,\n avatarPlaceholder,\n avatarRoot,\n} from '@mage-ui/styled-system/recipes';\nimport { Avatar as MantineAvatar } from '@mantine/core';\n\nexport type AvatarProps = {\n name: string;\n src?: string;\n alt?: string;\n classNames?: {\n avatar?: string;\n root?: string;\n image?: string;\n placeholder?: string;\n };\n} & AvatarVariantProps;\n\nexport const Avatar = ({ classNames, name, src, alt }: AvatarProps) => {\n return (\n <MantineAvatar\n name={name}\n src={src}\n alt={alt || name}\n classNames={{\n root: cx(\n classNames?.avatar ?? avatar(),\n classNames?.root ?? avatarRoot(),\n ),\n image: classNames?.image ?? avatarImage(),\n placeholder: classNames?.placeholder ?? avatarPlaceholder(),\n }}\n />\n );\n};\n"],"mappings":"+OAsBA,MAAaA,GAAU,CAAE,aAAY,OAAM,MAAK,SAE5C,EAACC,EAAD,CACQ,OACD,MACL,IAAK,GAAO,EACZ,WAAY,CACV,KAAM,EACJ,GAAY,QAAU,GAAQ,CAC9B,GAAY,MAAQ,GAAY,CACjC,CACD,MAAO,GAAY,OAAS,GAAa,CACzC,YAAa,GAAY,aAAe,GAAmB,CAC5D,CACD,CAAA"}
1
+ {"version":3,"file":"Avatar.mjs","names":["Avatar","MantineAvatar"],"sources":["../../../../src/components/data-display/avatar/Avatar.tsx"],"sourcesContent":["import { cx } from '@mage-ui/styled-system/css';\nimport {\n type AvatarVariantProps,\n avatar,\n avatarImage,\n avatarPlaceholder,\n avatarRoot,\n} from '@mage-ui/styled-system/recipes';\nimport { Avatar as MantineAvatar } from '@mantine/core';\n\nexport type AvatarProps = {\n name: string;\n src?: string;\n alt?: string;\n classNames?: {\n avatar?: string;\n root?: string;\n image?: string;\n placeholder?: string;\n };\n isHighlighted?: boolean;\n} & AvatarVariantProps;\n\nexport const Avatar = ({\n classNames,\n name,\n src,\n alt,\n isHighlighted,\n}: AvatarProps) => {\n return (\n <MantineAvatar\n name={name}\n src={src}\n alt={alt || name}\n classNames={{\n root: cx(\n classNames?.avatar ?? avatar(),\n classNames?.root ?? avatarRoot(),\n ),\n image: classNames?.image ?? avatarImage(),\n placeholder: classNames?.placeholder ?? avatarPlaceholder(),\n }}\n data-highlighted={isHighlighted}\n />\n );\n};\n"],"mappings":"+OAuBA,MAAaA,GAAU,CACrB,aACA,OACA,MACA,MACA,mBAGE,EAACC,EAAD,CACQ,OACD,MACL,IAAK,GAAO,EACZ,WAAY,CACV,KAAM,EACJ,GAAY,QAAU,GAAQ,CAC9B,GAAY,MAAQ,GAAY,CACjC,CACD,MAAO,GAAY,OAAS,GAAa,CACzC,YAAa,GAAY,aAAe,GAAmB,CAC5D,CACD,mBAAkB,EAClB,CAAA"}
@@ -3,6 +3,7 @@ import { TextareaProps } from "../controls/textarea/Textarea.mjs";
3
3
  import { FormDropzoneS3Props } from "./controls/FormDropzoneS3.mjs";
4
4
  import { FormSubmitProps } from "./controls/FormSubmit.mjs";
5
5
  import { FormCheckboxProps } from "./controls/FormCheckbox.mjs";
6
+ import { FormCheckboxTreeProps } from "./controls/FormCheckboxTree.mjs";
6
7
  import { FormPasswordProps } from "./controls/FormPassword.mjs";
7
8
  import { FormSelectProps } from "./controls/FormSelect.mjs";
8
9
  import { FormComboboxProps } from "./controls/FormCombobox.mjs";
@@ -108,6 +109,17 @@ declare const Form: {
108
109
  }: FormCheckboxProps): react_jsx_runtime0.JSX.Element;
109
110
  displayName: string;
110
111
  };
112
+ CheckboxTree: {
113
+ ({
114
+ $rule,
115
+ defaultValue,
116
+ isSubmitting,
117
+ name,
118
+ disabled,
119
+ ...props
120
+ }: FormCheckboxTreeProps): react_jsx_runtime0.JSX.Element;
121
+ displayName: string;
122
+ };
111
123
  Password: {
112
124
  ({
113
125
  $rule,
@@ -1 +1 @@
1
- {"version":3,"file":"Form.d.mts","names":[],"sources":["../../../src/components/forms/Form.tsx"],"mappings":";;;;;;;;;;;;;;;;;;;;KA2BK,YAAA;EACH,IAAA;EACA,OAAA;EACA,MAAA;EACA,GAAA;AAAA;AAAA,KAGU,SAAA,WAAoB,WAAA;EAC9B,QAAA,GAAW,MAAA;IAAU,IAAA,EAAM,CAAA;EAAA,MAAQ,OAAA;EACnC,aAAA,IAAiB,QAAA,EAAU,YAAA;EAC3B,eAAA,IAAmB,MAAA;IACjB,OAAA;IACA,QAAA,EAAU,eAAA,CAAgB,CAAA;IAC1B,MAAA;EAAA;EAEF,aAAA;EACA,QAAA,EAAU,SAAA;EACV,MAAA,GAAS,SAAA,CAAU,MAAA,SAAe,UAAA;EAClC,CAAA,IACE,GAAA,UACA,QAAA,GAAW,MAAA,kBACX,QAAA,uBACY,KAAA,CAAM,SAAA;EAEpB,oBAAA;EACA,UAAA;IACE,IAAA;IACA,IAAA;EAAA;AAAA;AAAA,cAYS,IAAA;EAAA,WAAkB,WAAA;IAAW,QAAA;IAAA,aAAA;IAAA,eAAA;IAAA,aAAA;IAAA,QAAA;IAAA,MAAA;IAAA,CAAA;IAAA,oBAAA;IAAA;EAAA,GAUvC,SAAA,CAAU,CAAA,IAAE,kBAAA,CAAA,GAAA,CAAA,OAAA"}
1
+ {"version":3,"file":"Form.d.mts","names":[],"sources":["../../../src/components/forms/Form.tsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;KA4BK,YAAA;EACH,IAAA;EACA,OAAA;EACA,MAAA;EACA,GAAA;AAAA;AAAA,KAGU,SAAA,WAAoB,WAAA;EAC9B,QAAA,GAAW,MAAA;IAAU,IAAA,EAAM,CAAA;EAAA,MAAQ,OAAA;EACnC,aAAA,IAAiB,QAAA,EAAU,YAAA;EAC3B,eAAA,IAAmB,MAAA;IACjB,OAAA;IACA,QAAA,EAAU,eAAA,CAAgB,CAAA;IAC1B,MAAA;EAAA;EAEF,aAAA;EACA,QAAA,EAAU,SAAA;EACV,MAAA,GAAS,SAAA,CAAU,MAAA,SAAe,UAAA;EAClC,CAAA,IACE,GAAA,UACA,QAAA,GAAW,MAAA,kBACX,QAAA,uBACY,KAAA,CAAM,SAAA,EAtBL;EAwBf,oBAAA;EACA,UAAA;IACE,IAAA;IACA,IAAA;EAAA;AAAA;AAAA,cAYS,IAAA;EAAA,WAAkB,WAAA;IAAW,QAAA;IAAA,aAAA;IAAA,eAAA;IAAA,aAAA;IAAA,QAAA;IAAA,MAAA;IAAA,CAAA;IAAA,oBAAA;IAAA;EAAA,GAUvC,SAAA,CAAU,CAAA,IAAE,kBAAA,CAAA,GAAA,CAAA,OAAA"}
@@ -1,2 +1,2 @@
1
- import{FormAutocomplete as e}from"./controls/FormAutocomplete.mjs";import{FormCheckbox as t}from"./controls/FormCheckbox.mjs";import{FormCombobox as n}from"./controls/FormCombobox.mjs";import{FormDatePicker as r}from"./controls/FormDatePicker.mjs";import{FormDateTimePicker as i}from"./controls/FormDateTimePicker.mjs";import{FormDropzone as a}from"./controls/FormDropzone.mjs";import{FormS3Context as o}from"./FormS3Context.mjs";import{FormDropzoneS3 as s}from"./controls/FormDropzoneS3.mjs";import{FormFileInput as c}from"./controls/FormFileInput.mjs";import{FormFileInputMultiple as l}from"./controls/FormFileInputMultiple.mjs";import{FormHidden as u}from"./controls/FormHidden.mjs";import{FormPassword as d}from"./controls/FormPassword.mjs";import{FormSelect as f}from"./controls/FormSelect.mjs";import{FormSubmit as p}from"./controls/FormSubmit.mjs";import{FormTextarea as m}from"./controls/FormTextarea.mjs";import{FormTextInput as h}from"./controls/FormTextInput.mjs";import{FormBase as g}from"./FormBase.mjs";import{FormErrorBox as _}from"./FormErrorBox.mjs";import{form as v,formRoot as y}from"@mage-ui/styled-system/recipes";import{jsx as b}from"react/jsx-runtime";import{useRef as x}from"react";const S=({$fetcher:e,onValidSubmit:t,onInvalidSubmit:n,invalidStatus:r=[],children:i,schema:a,t:s,s3UploadErrorMessage:c,classNames:l})=>{let u=x(new Map),d={registerS3Upload:(e,t)=>{u.current.set(e,t)},unregisterS3Upload:e=>{u.current.delete(e)}},f=async e=>{let t=Array.from(u.current.values());await Promise.all(t.map(t=>t(e)))};return b(o.Provider,{value:d,children:b(g,{onSubmit:async({data:i,setError:a})=>{await e({data:i}).then(async e=>{let n=e;if(n?.statusCode&&n.statusCode>=400)throw n;try{await f(e)}catch(e){console.error(`S3 upload error:`,e),a(`root.serverError`,{type:`s3`,message:c??`Failed to upload files`});return}t?.(e||{})}).catch(e=>{switch(e.statusCode){case 400:case 422:e.cause?.issues&&Object.keys(e.cause.issues).forEach(t=>{a(t,{type:`server`,message:e.cause?.issues?.[t]})}),a(`root.serverError`,{type:`server`,message:e?.message??`Something went wrong`});break;default:if(r.includes(e.statusCode)){n?.({message:e.message,setError:a,status:e.statusCode});break}throw e}})},schema:a,errorBox:_,t:s,classNames:{form:l?.form??v(),root:l?.root??y()},children:i})})};S.displayName=`Form`,S.TextInput=h,S.Textarea=m,S.Submit=p,S.Hidden=u,S.Checkbox=t,S.Password=d,S.Select=f,S.Combobox=n,S.Autocomplete=e,S.DatePicker=r,S.DateTimePicker=i,S.FileInput=c,S.FileInputMultiple=l,S.Dropzone=a,S.DropzoneS3=s;export{S as Form};
1
+ import{FormAutocomplete as e}from"./controls/FormAutocomplete.mjs";import{FormCheckbox as t}from"./controls/FormCheckbox.mjs";import{FormCheckboxTree as n}from"./controls/FormCheckboxTree.mjs";import{FormCombobox as r}from"./controls/FormCombobox.mjs";import{FormDatePicker as i}from"./controls/FormDatePicker.mjs";import{FormDateTimePicker as a}from"./controls/FormDateTimePicker.mjs";import{FormDropzone as o}from"./controls/FormDropzone.mjs";import{FormS3Context as s}from"./FormS3Context.mjs";import{FormDropzoneS3 as c}from"./controls/FormDropzoneS3.mjs";import{FormFileInput as l}from"./controls/FormFileInput.mjs";import{FormFileInputMultiple as u}from"./controls/FormFileInputMultiple.mjs";import{FormHidden as d}from"./controls/FormHidden.mjs";import{FormPassword as f}from"./controls/FormPassword.mjs";import{FormSelect as p}from"./controls/FormSelect.mjs";import{FormSubmit as m}from"./controls/FormSubmit.mjs";import{FormTextarea as h}from"./controls/FormTextarea.mjs";import{FormTextInput as g}from"./controls/FormTextInput.mjs";import{FormBase as _}from"./FormBase.mjs";import{FormErrorBox as v}from"./FormErrorBox.mjs";import{form as y,formRoot as b}from"@mage-ui/styled-system/recipes";import{jsx as x}from"react/jsx-runtime";import{useRef as S}from"react";const C=({$fetcher:e,onValidSubmit:t,onInvalidSubmit:n,invalidStatus:r=[],children:i,schema:a,t:o,s3UploadErrorMessage:c,classNames:l})=>{let u=S(new Map),d={registerS3Upload:(e,t)=>{u.current.set(e,t)},unregisterS3Upload:e=>{u.current.delete(e)}},f=async e=>{let t=Array.from(u.current.values());await Promise.all(t.map(t=>t(e)))};return x(s.Provider,{value:d,children:x(_,{onSubmit:async({data:i,setError:a})=>{await e({data:i}).then(async e=>{let n=e;if(n?.statusCode&&n.statusCode>=400)throw n;try{await f(e)}catch(e){console.error(`S3 upload error:`,e),a(`root.serverError`,{type:`s3`,message:c??`Failed to upload files`});return}t?.(e||{})}).catch(e=>{switch(e.statusCode){case 400:case 422:e.cause?.issues&&Object.keys(e.cause.issues).forEach(t=>{a(t,{type:`server`,message:e.cause?.issues?.[t]})}),a(`root.serverError`,{type:`server`,message:e?.message??`Something went wrong`});break;default:if(r.includes(e.statusCode)){n?.({message:e.message,setError:a,status:e.statusCode});break}throw e}})},schema:a,errorBox:v,t:o,classNames:{form:l?.form??y(),root:l?.root??b()},children:i})})};C.displayName=`Form`,C.TextInput=g,C.Textarea=h,C.Submit=m,C.Hidden=d,C.Checkbox=t,C.CheckboxTree=n,C.Password=f,C.Select=p,C.Combobox=r,C.Autocomplete=e,C.DatePicker=i,C.DateTimePicker=a,C.FileInput=l,C.FileInputMultiple=u,C.Dropzone=o,C.DropzoneS3=c;export{C as Form};
2
2
  //# sourceMappingURL=Form.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Form.mjs","names":[],"sources":["../../../src/components/forms/Form.tsx"],"sourcesContent":["import type React from 'react';\nimport type { ReactNode } from 'react';\nimport { useRef } from 'react';\nimport type { FieldValues, UseFormSetError } from 'react-hook-form';\nimport type { ZodObject, ZodTypeAny } from 'zod';\n\nimport { form, formRoot } from '@mage-ui/styled-system/recipes';\n\nimport { FormAutocomplete } from './controls/FormAutocomplete';\nimport { FormCheckbox } from './controls/FormCheckbox';\nimport { FormCombobox } from './controls/FormCombobox';\nimport { FormDatePicker } from './controls/FormDatePicker';\nimport { FormDateTimePicker } from './controls/FormDateTimePicker';\nimport { FormDropzone } from './controls/FormDropzone';\nimport { FormDropzoneS3 } from './controls/FormDropzoneS3';\nimport { FormFileInput } from './controls/FormFileInput';\nimport { FormFileInputMultiple } from './controls/FormFileInputMultiple';\nimport { FormHidden } from './controls/FormHidden';\nimport { FormPassword } from './controls/FormPassword';\nimport { FormSelect } from './controls/FormSelect';\nimport { FormSubmit } from './controls/FormSubmit';\nimport { FormTextarea } from './controls/FormTextarea';\nimport { FormTextInput } from './controls/FormTextInput';\nimport { FormBase } from './FormBase';\nimport { FormErrorBox } from './FormErrorBox';\nimport { FormS3Context, type S3UploadCallback } from './FormS3Context';\n\ntype FormResponse = {\n body?: object;\n details?: string;\n status?: number;\n url?: string;\n};\n\nexport type FormProps<T extends FieldValues> = {\n $fetcher: (params: { data: T }) => Promise<unknown>;\n onValidSubmit?: (response: FormResponse) => void;\n onInvalidSubmit?: (params: {\n message: string;\n setError: UseFormSetError<T>;\n status: number;\n }) => void;\n invalidStatus?: number[];\n children: ReactNode;\n schema?: ZodObject<Record<string, ZodTypeAny>>;\n t?: (\n key: string,\n bindings?: Record<string, string>,\n fallback?: string,\n ) => string | React.ReactNode;\n /** Mensaje mostrado al usuario si falla la subida de archivos a S3 tras el submit. */\n s3UploadErrorMessage?: string;\n classNames?: {\n form?: string;\n root?: string;\n };\n};\n\ntype FormError = {\n statusCode: number;\n message: string;\n cause?: {\n issues: Record<string, string>;\n };\n};\n\nexport const Form = <T extends FieldValues>({\n $fetcher,\n onValidSubmit,\n onInvalidSubmit,\n invalidStatus = [],\n children,\n schema,\n t,\n s3UploadErrorMessage,\n classNames,\n}: FormProps<T>) => {\n const s3CallbacksRef = useRef<Map<string, S3UploadCallback>>(new Map());\n\n const s3ContextValue = {\n registerS3Upload: (name: string, cb: S3UploadCallback) => {\n s3CallbacksRef.current.set(name, cb);\n },\n unregisterS3Upload: (name: string) => {\n s3CallbacksRef.current.delete(name);\n },\n };\n\n const runS3Uploads = async (response: unknown): Promise<void> => {\n const callbacks = Array.from(s3CallbacksRef.current.values());\n await Promise.all(callbacks.map((cb) => cb(response)));\n };\n\n const onSubmit = async ({\n data,\n setError,\n }: {\n data: FieldValues;\n setError: UseFormSetError<FieldValues>;\n }) => {\n await $fetcher({ data: data as T })\n .then(async (response) => {\n const res = response as FormError & FormResponse;\n if (res?.statusCode && res.statusCode >= 400) {\n throw res;\n }\n\n try {\n await runS3Uploads(response);\n } catch (e) {\n console.error('S3 upload error:', e);\n setError('root.serverError', {\n type: 's3',\n message: s3UploadErrorMessage ?? 'Failed to upload files',\n });\n return;\n }\n onValidSubmit?.((response || {}) as FormResponse);\n })\n .catch((error: FormError) => {\n switch (error.statusCode) {\n case 400:\n case 422: {\n if (error.cause?.issues) {\n Object.keys(error.cause.issues).forEach((key) => {\n setError(key, {\n type: 'server',\n message: error.cause?.issues?.[key],\n });\n });\n }\n setError('root.serverError', {\n type: 'server',\n message: error?.message ?? 'Something went wrong',\n });\n break;\n }\n default:\n if (invalidStatus.includes(error.statusCode)) {\n onInvalidSubmit?.({\n message: error.message,\n setError: setError as UseFormSetError<T>,\n status: error.statusCode,\n });\n break;\n }\n throw error;\n }\n });\n };\n\n return (\n <FormS3Context.Provider value={s3ContextValue}>\n <FormBase\n onSubmit={onSubmit}\n schema={schema}\n errorBox={FormErrorBox}\n t={t}\n classNames={{\n form: classNames?.form ?? form(),\n root: classNames?.root ?? formRoot(),\n }}\n >\n {children}\n </FormBase>\n </FormS3Context.Provider>\n );\n};\n\nForm.displayName = 'Form';\nForm.TextInput = FormTextInput;\nForm.Textarea = FormTextarea;\nForm.Submit = FormSubmit;\nForm.Hidden = FormHidden;\nForm.Checkbox = FormCheckbox;\nForm.Password = FormPassword;\nForm.Select = FormSelect;\nForm.Combobox = FormCombobox;\nForm.Autocomplete = FormAutocomplete;\nForm.DatePicker = FormDatePicker;\nForm.DateTimePicker = FormDateTimePicker;\nForm.FileInput = FormFileInput;\nForm.FileInputMultiple = FormFileInputMultiple;\nForm.Dropzone = FormDropzone;\nForm.DropzoneS3 = FormDropzoneS3;\n"],"mappings":"srCAkEA,MAAa,GAA+B,CAC1C,WACA,gBACA,kBACA,gBAAgB,EAAE,CAClB,WACA,SACA,IACA,uBACA,gBACkB,CAClB,IAAM,EAAiB,EAAsC,IAAI,IAAM,CAEjE,EAAiB,CACrB,kBAAmB,EAAc,IAAyB,CACxD,EAAe,QAAQ,IAAI,EAAM,EAAG,EAEtC,mBAAqB,GAAiB,CACpC,EAAe,QAAQ,OAAO,EAAK,EAEtC,CAEK,EAAe,KAAO,IAAqC,CAC/D,IAAM,EAAY,MAAM,KAAK,EAAe,QAAQ,QAAQ,CAAC,CAC7D,MAAM,QAAQ,IAAI,EAAU,IAAK,GAAO,EAAG,EAAS,CAAC,CAAC,EA6DxD,OACE,EAAC,EAAc,SAAf,CAAwB,MAAO,WAC7B,EAAC,EAAD,CACY,SA7DC,MAAO,CACtB,OACA,cAII,CACJ,MAAM,EAAS,CAAQ,OAAW,CAAC,CAChC,KAAK,KAAO,IAAa,CACxB,IAAM,EAAM,EACZ,GAAI,GAAK,YAAc,EAAI,YAAc,IACvC,MAAM,EAGR,GAAI,CACF,MAAM,EAAa,EAAS,OACrB,EAAG,CACV,QAAQ,MAAM,mBAAoB,EAAE,CACpC,EAAS,mBAAoB,CAC3B,KAAM,KACN,QAAS,GAAwB,yBAClC,CAAC,CACF,OAEF,IAAiB,GAAY,EAAE,CAAkB,EACjD,CACD,MAAO,GAAqB,CAC3B,OAAQ,EAAM,WAAd,CACE,IAAK,KACL,IAAK,KACC,EAAM,OAAO,QACf,OAAO,KAAK,EAAM,MAAM,OAAO,CAAC,QAAS,GAAQ,CAC/C,EAAS,EAAK,CACZ,KAAM,SACN,QAAS,EAAM,OAAO,SAAS,GAChC,CAAC,EACF,CAEJ,EAAS,mBAAoB,CAC3B,KAAM,SACN,QAAS,GAAO,SAAW,uBAC5B,CAAC,CACF,MAEF,QACE,GAAI,EAAc,SAAS,EAAM,WAAW,CAAE,CAC5C,IAAkB,CAChB,QAAS,EAAM,QACL,WACV,OAAQ,EAAM,WACf,CAAC,CACF,MAEF,MAAM,IAEV,EAOQ,SACR,SAAU,EACP,IACH,WAAY,CACV,KAAM,GAAY,MAAQ,GAAM,CAChC,KAAM,GAAY,MAAQ,GAAU,CACrC,CAEA,WACQ,CAAA,CACY,CAAA,EAI7B,EAAK,YAAc,OACnB,EAAK,UAAY,EACjB,EAAK,SAAW,EAChB,EAAK,OAAS,EACd,EAAK,OAAS,EACd,EAAK,SAAW,EAChB,EAAK,SAAW,EAChB,EAAK,OAAS,EACd,EAAK,SAAW,EAChB,EAAK,aAAe,EACpB,EAAK,WAAa,EAClB,EAAK,eAAiB,EACtB,EAAK,UAAY,EACjB,EAAK,kBAAoB,EACzB,EAAK,SAAW,EAChB,EAAK,WAAa"}
1
+ {"version":3,"file":"Form.mjs","names":[],"sources":["../../../src/components/forms/Form.tsx"],"sourcesContent":["import type React from 'react';\nimport type { ReactNode } from 'react';\nimport { useRef } from 'react';\nimport type { FieldValues, UseFormSetError } from 'react-hook-form';\nimport type { ZodObject, ZodTypeAny } from 'zod';\n\nimport { form, formRoot } from '@mage-ui/styled-system/recipes';\n\nimport { FormAutocomplete } from './controls/FormAutocomplete';\nimport { FormCheckbox } from './controls/FormCheckbox';\nimport { FormCheckboxTree } from './controls/FormCheckboxTree';\nimport { FormCombobox } from './controls/FormCombobox';\nimport { FormDatePicker } from './controls/FormDatePicker';\nimport { FormDateTimePicker } from './controls/FormDateTimePicker';\nimport { FormDropzone } from './controls/FormDropzone';\nimport { FormDropzoneS3 } from './controls/FormDropzoneS3';\nimport { FormFileInput } from './controls/FormFileInput';\nimport { FormFileInputMultiple } from './controls/FormFileInputMultiple';\nimport { FormHidden } from './controls/FormHidden';\nimport { FormPassword } from './controls/FormPassword';\nimport { FormSelect } from './controls/FormSelect';\nimport { FormSubmit } from './controls/FormSubmit';\nimport { FormTextarea } from './controls/FormTextarea';\nimport { FormTextInput } from './controls/FormTextInput';\nimport { FormBase } from './FormBase';\nimport { FormErrorBox } from './FormErrorBox';\nimport { FormS3Context, type S3UploadCallback } from './FormS3Context';\n\ntype FormResponse = {\n body?: object;\n details?: string;\n status?: number;\n url?: string;\n};\n\nexport type FormProps<T extends FieldValues> = {\n $fetcher: (params: { data: T }) => Promise<unknown>;\n onValidSubmit?: (response: FormResponse) => void;\n onInvalidSubmit?: (params: {\n message: string;\n setError: UseFormSetError<T>;\n status: number;\n }) => void;\n invalidStatus?: number[];\n children: ReactNode;\n schema?: ZodObject<Record<string, ZodTypeAny>>;\n t?: (\n key: string,\n bindings?: Record<string, string>,\n fallback?: string,\n ) => string | React.ReactNode;\n /** Mensaje mostrado al usuario si falla la subida de archivos a S3 tras el submit. */\n s3UploadErrorMessage?: string;\n classNames?: {\n form?: string;\n root?: string;\n };\n};\n\ntype FormError = {\n statusCode: number;\n message: string;\n cause?: {\n issues: Record<string, string>;\n };\n};\n\nexport const Form = <T extends FieldValues>({\n $fetcher,\n onValidSubmit,\n onInvalidSubmit,\n invalidStatus = [],\n children,\n schema,\n t,\n s3UploadErrorMessage,\n classNames,\n}: FormProps<T>) => {\n const s3CallbacksRef = useRef<Map<string, S3UploadCallback>>(new Map());\n\n const s3ContextValue = {\n registerS3Upload: (name: string, cb: S3UploadCallback) => {\n s3CallbacksRef.current.set(name, cb);\n },\n unregisterS3Upload: (name: string) => {\n s3CallbacksRef.current.delete(name);\n },\n };\n\n const runS3Uploads = async (response: unknown): Promise<void> => {\n const callbacks = Array.from(s3CallbacksRef.current.values());\n await Promise.all(callbacks.map((cb) => cb(response)));\n };\n\n const onSubmit = async ({\n data,\n setError,\n }: {\n data: FieldValues;\n setError: UseFormSetError<FieldValues>;\n }) => {\n await $fetcher({ data: data as T })\n .then(async (response) => {\n const res = response as FormError & FormResponse;\n if (res?.statusCode && res.statusCode >= 400) {\n throw res;\n }\n\n try {\n await runS3Uploads(response);\n } catch (e) {\n console.error('S3 upload error:', e);\n setError('root.serverError', {\n type: 's3',\n message: s3UploadErrorMessage ?? 'Failed to upload files',\n });\n return;\n }\n onValidSubmit?.((response || {}) as FormResponse);\n })\n .catch((error: FormError) => {\n switch (error.statusCode) {\n case 400:\n case 422: {\n if (error.cause?.issues) {\n Object.keys(error.cause.issues).forEach((key) => {\n setError(key, {\n type: 'server',\n message: error.cause?.issues?.[key],\n });\n });\n }\n setError('root.serverError', {\n type: 'server',\n message: error?.message ?? 'Something went wrong',\n });\n break;\n }\n default:\n if (invalidStatus.includes(error.statusCode)) {\n onInvalidSubmit?.({\n message: error.message,\n setError: setError as UseFormSetError<T>,\n status: error.statusCode,\n });\n break;\n }\n throw error;\n }\n });\n };\n\n return (\n <FormS3Context.Provider value={s3ContextValue}>\n <FormBase\n onSubmit={onSubmit}\n schema={schema}\n errorBox={FormErrorBox}\n t={t}\n classNames={{\n form: classNames?.form ?? form(),\n root: classNames?.root ?? formRoot(),\n }}\n >\n {children}\n </FormBase>\n </FormS3Context.Provider>\n );\n};\n\nForm.displayName = 'Form';\nForm.TextInput = FormTextInput;\nForm.Textarea = FormTextarea;\nForm.Submit = FormSubmit;\nForm.Hidden = FormHidden;\nForm.Checkbox = FormCheckbox;\nForm.CheckboxTree = FormCheckboxTree;\nForm.Password = FormPassword;\nForm.Select = FormSelect;\nForm.Combobox = FormCombobox;\nForm.Autocomplete = FormAutocomplete;\nForm.DatePicker = FormDatePicker;\nForm.DateTimePicker = FormDateTimePicker;\nForm.FileInput = FormFileInput;\nForm.FileInputMultiple = FormFileInputMultiple;\nForm.Dropzone = FormDropzone;\nForm.DropzoneS3 = FormDropzoneS3;\n"],"mappings":"yvCAmEA,MAAa,GAA+B,CAC1C,WACA,gBACA,kBACA,gBAAgB,EAAE,CAClB,WACA,SACA,IACA,uBACA,gBACkB,CAClB,IAAM,EAAiB,EAAsC,IAAI,IAAM,CAEjE,EAAiB,CACrB,kBAAmB,EAAc,IAAyB,CACxD,EAAe,QAAQ,IAAI,EAAM,EAAG,EAEtC,mBAAqB,GAAiB,CACpC,EAAe,QAAQ,OAAO,EAAK,EAEtC,CAEK,EAAe,KAAO,IAAqC,CAC/D,IAAM,EAAY,MAAM,KAAK,EAAe,QAAQ,QAAQ,CAAC,CAC7D,MAAM,QAAQ,IAAI,EAAU,IAAK,GAAO,EAAG,EAAS,CAAC,CAAC,EA6DxD,OACE,EAAC,EAAc,SAAf,CAAwB,MAAO,WAC7B,EAAC,EAAD,CACY,SA7DC,MAAO,CACtB,OACA,cAII,CACJ,MAAM,EAAS,CAAQ,OAAW,CAAC,CAChC,KAAK,KAAO,IAAa,CACxB,IAAM,EAAM,EACZ,GAAI,GAAK,YAAc,EAAI,YAAc,IACvC,MAAM,EAGR,GAAI,CACF,MAAM,EAAa,EAAS,OACrB,EAAG,CACV,QAAQ,MAAM,mBAAoB,EAAE,CACpC,EAAS,mBAAoB,CAC3B,KAAM,KACN,QAAS,GAAwB,yBAClC,CAAC,CACF,OAEF,IAAiB,GAAY,EAAE,CAAkB,EACjD,CACD,MAAO,GAAqB,CAC3B,OAAQ,EAAM,WAAd,CACE,IAAK,KACL,IAAK,KACC,EAAM,OAAO,QACf,OAAO,KAAK,EAAM,MAAM,OAAO,CAAC,QAAS,GAAQ,CAC/C,EAAS,EAAK,CACZ,KAAM,SACN,QAAS,EAAM,OAAO,SAAS,GAChC,CAAC,EACF,CAEJ,EAAS,mBAAoB,CAC3B,KAAM,SACN,QAAS,GAAO,SAAW,uBAC5B,CAAC,CACF,MAEF,QACE,GAAI,EAAc,SAAS,EAAM,WAAW,CAAE,CAC5C,IAAkB,CAChB,QAAS,EAAM,QACL,WACV,OAAQ,EAAM,WACf,CAAC,CACF,MAEF,MAAM,IAEV,EAOQ,SACR,SAAU,EACP,IACH,WAAY,CACV,KAAM,GAAY,MAAQ,GAAM,CAChC,KAAM,GAAY,MAAQ,GAAU,CACrC,CAEA,WACQ,CAAA,CACY,CAAA,EAI7B,EAAK,YAAc,OACnB,EAAK,UAAY,EACjB,EAAK,SAAW,EAChB,EAAK,OAAS,EACd,EAAK,OAAS,EACd,EAAK,SAAW,EAChB,EAAK,aAAe,EACpB,EAAK,SAAW,EAChB,EAAK,OAAS,EACd,EAAK,SAAW,EAChB,EAAK,aAAe,EACpB,EAAK,WAAa,EAClB,EAAK,eAAiB,EACtB,EAAK,UAAY,EACjB,EAAK,kBAAoB,EACzB,EAAK,SAAW,EAChB,EAAK,WAAa"}
@@ -0,0 +1,12 @@
1
+ import { CheckboxTreeProps } from "../../controls/checkbox-tree/CheckboxTree.mjs";
2
+ //#region src/components/forms/controls/FormCheckboxTree.d.ts
3
+ type FormCheckboxTreeProps = Omit<CheckboxTreeProps, 'defaultValue' | 'onChange' | 'value'> & {
4
+ $rule?: string;
5
+ defaultValue?: string[];
6
+ error?: string;
7
+ isSubmitting?: boolean;
8
+ name: string;
9
+ };
10
+ //#endregion
11
+ export { FormCheckboxTreeProps };
12
+ //# sourceMappingURL=FormCheckboxTree.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormCheckboxTree.d.mts","names":[],"sources":["../../../../src/components/forms/controls/FormCheckboxTree.tsx"],"mappings":";;KAOY,qBAAA,GAAwB,IAAA,CAClC,iBAAA;EAGA,KAAA;EACA,YAAA;EACA,KAAA;EACA,YAAA;EACA,IAAA;AAAA"}
@@ -0,0 +1,2 @@
1
+ import{CheckboxTree as e}from"../../controls/checkbox-tree/CheckboxTree.mjs";import{jsx as t}from"react/jsx-runtime";import{Controller as n}from"react-hook-form";const r=({$rule:r,defaultValue:i,isSubmitting:a,name:o,disabled:s,...c})=>t(n,{name:o,defaultValue:i??[],render:({field:{onChange:n,value:r}})=>t(e,{disabled:a||s,value:r??[],...c,onChange:n})});r.displayName=`Form.CheckboxTree`;export{r as FormCheckboxTree};
2
+ //# sourceMappingURL=FormCheckboxTree.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormCheckboxTree.mjs","names":[],"sources":["../../../../src/components/forms/controls/FormCheckboxTree.tsx"],"sourcesContent":["import { Controller } from 'react-hook-form';\n\nimport {\n CheckboxTree,\n type CheckboxTreeProps,\n} from '@/components/controls/checkbox-tree/CheckboxTree';\n\nexport type FormCheckboxTreeProps = Omit<\n CheckboxTreeProps,\n 'defaultValue' | 'onChange' | 'value'\n> & {\n $rule?: string;\n defaultValue?: string[];\n error?: string;\n isSubmitting?: boolean;\n name: string;\n};\n\nexport const FormCheckboxTree = ({\n $rule,\n defaultValue,\n isSubmitting,\n name,\n disabled,\n ...props\n}: FormCheckboxTreeProps) => {\n return (\n <Controller\n name={name}\n defaultValue={defaultValue ?? []}\n render={({ field: { onChange, value } }) => (\n <CheckboxTree\n disabled={isSubmitting || disabled}\n value={value ?? []}\n {...props}\n onChange={onChange}\n />\n )}\n />\n );\n};\n\nFormCheckboxTree.displayName = 'Form.CheckboxTree';\n"],"mappings":"kKAkBA,MAAa,GAAoB,CAC/B,QACA,eACA,eACA,OACA,WACA,GAAG,KAGD,EAAC,EAAD,CACQ,OACN,aAAc,GAAgB,EAAE,CAChC,QAAS,CAAE,MAAO,CAAE,WAAU,YAC5B,EAAC,EAAD,CACE,SAAU,GAAgB,EAC1B,MAAO,GAAS,EAAE,CAClB,GAAI,EACM,WACV,CAAA,CAEJ,CAAA,CAIN,EAAiB,YAAc"}
@@ -1,2 +1,2 @@
1
- import{FormAutocomplete as e}from"./FormAutocomplete.mjs";import{FormCheckbox as t}from"./FormCheckbox.mjs";import{FormCombobox as n}from"./FormCombobox.mjs";import{FormDatePicker as r}from"./FormDatePicker.mjs";import{FormDateTimePicker as i}from"./FormDateTimePicker.mjs";import{FormDropzone as a}from"./FormDropzone.mjs";import{FormDropzoneS3 as o}from"./FormDropzoneS3.mjs";import{FormFileInput as s}from"./FormFileInput.mjs";import{FormFileInputMultiple as c}from"./FormFileInputMultiple.mjs";import{FormHidden as l}from"./FormHidden.mjs";import{FormPassword as u}from"./FormPassword.mjs";import{FormSelect as d}from"./FormSelect.mjs";import{FormSubmit as f}from"./FormSubmit.mjs";import{FormTextarea as p}from"./FormTextarea.mjs";import{FormTextInput as m}from"./FormTextInput.mjs";const h=[f,m,p,u,l,t,d,n,e,r,i,s,c,a,o];export{h as controls};
1
+ import{FormAutocomplete as e}from"./FormAutocomplete.mjs";import{FormCheckbox as t}from"./FormCheckbox.mjs";import{FormCheckboxTree as n}from"./FormCheckboxTree.mjs";import{FormCombobox as r}from"./FormCombobox.mjs";import{FormDatePicker as i}from"./FormDatePicker.mjs";import{FormDateTimePicker as a}from"./FormDateTimePicker.mjs";import{FormDropzone as o}from"./FormDropzone.mjs";import{FormDropzoneS3 as s}from"./FormDropzoneS3.mjs";import{FormFileInput as c}from"./FormFileInput.mjs";import{FormFileInputMultiple as l}from"./FormFileInputMultiple.mjs";import{FormHidden as u}from"./FormHidden.mjs";import{FormPassword as d}from"./FormPassword.mjs";import{FormSelect as f}from"./FormSelect.mjs";import{FormSubmit as p}from"./FormSubmit.mjs";import{FormTextarea as m}from"./FormTextarea.mjs";import{FormTextInput as h}from"./FormTextInput.mjs";const g=[p,h,m,d,u,t,n,f,r,e,i,a,c,l,o,s];export{g as controls};
2
2
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":[],"sources":["../../../../src/components/forms/controls/index.ts"],"sourcesContent":["import { FormAutocomplete } from './FormAutocomplete';\nimport { FormCheckbox } from './FormCheckbox';\nimport { FormCombobox } from './FormCombobox';\nimport { FormDatePicker } from './FormDatePicker';\nimport { FormDateTimePicker } from './FormDateTimePicker';\nimport { FormDropzone } from './FormDropzone';\nimport { FormDropzoneS3 } from './FormDropzoneS3';\nimport { FormFileInput } from './FormFileInput';\nimport { FormFileInputMultiple } from './FormFileInputMultiple';\nimport { FormHidden } from './FormHidden';\nimport { FormPassword } from './FormPassword';\nimport { FormSelect } from './FormSelect';\nimport { FormSubmit } from './FormSubmit';\nimport { FormTextarea } from './FormTextarea';\nimport { FormTextInput } from './FormTextInput';\n\nexport const controls = [\n FormSubmit,\n FormTextInput,\n FormTextarea,\n FormPassword,\n FormHidden,\n FormCheckbox,\n FormSelect,\n FormCombobox,\n FormAutocomplete,\n FormDatePicker,\n FormDateTimePicker,\n FormFileInput,\n FormFileInputMultiple,\n FormDropzone,\n FormDropzoneS3,\n] as React.ComponentType[];\n"],"mappings":"oxBAgBA,MAAa,EAAW,CACtB,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACD"}
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../../../../src/components/forms/controls/index.ts"],"sourcesContent":["import { FormAutocomplete } from './FormAutocomplete';\nimport { FormCheckbox } from './FormCheckbox';\nimport { FormCheckboxTree } from './FormCheckboxTree';\nimport { FormCombobox } from './FormCombobox';\nimport { FormDatePicker } from './FormDatePicker';\nimport { FormDateTimePicker } from './FormDateTimePicker';\nimport { FormDropzone } from './FormDropzone';\nimport { FormDropzoneS3 } from './FormDropzoneS3';\nimport { FormFileInput } from './FormFileInput';\nimport { FormFileInputMultiple } from './FormFileInputMultiple';\nimport { FormHidden } from './FormHidden';\nimport { FormPassword } from './FormPassword';\nimport { FormSelect } from './FormSelect';\nimport { FormSubmit } from './FormSubmit';\nimport { FormTextarea } from './FormTextarea';\nimport { FormTextInput } from './FormTextInput';\n\nexport const controls = [\n FormSubmit,\n FormTextInput,\n FormTextarea,\n FormPassword,\n FormHidden,\n FormCheckbox,\n FormCheckboxTree,\n FormSelect,\n FormCombobox,\n FormAutocomplete,\n FormDatePicker,\n FormDateTimePicker,\n FormFileInput,\n FormFileInputMultiple,\n FormDropzone,\n FormDropzoneS3,\n] as React.ComponentType[];\n"],"mappings":"80BAiBA,MAAa,EAAW,CACtB,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACD"}
@@ -1,2 +1,2 @@
1
- "use client";import{Fragment as e,jsx as t}from"react/jsx-runtime";import{Children as n,cloneElement as r,isValidElement as i}from"react";const a=new Set([`Form.Password`,`Form.Checkbox`,`Form.Select`,`Form.Combobox`,`Form.Autocomplete`,`Form.DatePicker`,`Form.DateTimePicker`,`Form.Hidden`,`Form.FileInput`,`Form.FileInputMultiple`,`Form.Dropzone`,`Form.DropzoneS3`]),o=(e,t,n)=>{if(e)try{let r=JSON.parse(e),i={...r.bindings,attribute:t},a=n?n(r.key,i,r.fallback):r.fallback;return String(a).replace(/{attribute}/g,t)}catch{return e.replace(/{attribute}/g,t)}},s=({children:s,register:c,componentTypes:l,errors:u={},t:d})=>{let f=e=>n.map(e,e=>{if(!i(e))return e;let t=e.props;if(l.some(t=>e.type===t)){let n=t.name,i=u[n??``]?.message?.toString(),s=n?o(i,n,d):void 0,l=e.type.displayName;return r(e,{...n!==void 0&&!a.has(l??``)&&n?c(n):{},error:s})}return t.children?r(e,{children:f(t.children)}):e});return t(e,{children:f(s)})};export{s as RegisteredFormChildren};
1
+ "use client";import{Fragment as e,jsx as t}from"react/jsx-runtime";import{Children as n,cloneElement as r,isValidElement as i}from"react";const a=new Set([`Form.Password`,`Form.Checkbox`,`Form.CheckboxTree`,`Form.Select`,`Form.Combobox`,`Form.Autocomplete`,`Form.DatePicker`,`Form.DateTimePicker`,`Form.Hidden`,`Form.FileInput`,`Form.FileInputMultiple`,`Form.Dropzone`,`Form.DropzoneS3`]),o=(e,t,n)=>{if(e)try{let r=JSON.parse(e),i={...r.bindings,attribute:t},a=n?n(r.key,i,r.fallback):r.fallback;return String(a).replace(/{attribute}/g,t)}catch{return e.replace(/{attribute}/g,t)}},s=({children:s,register:c,componentTypes:l,errors:u={},t:d})=>{let f=e=>n.map(e,e=>{if(!i(e))return e;let t=e.props;if(l.some(t=>e.type===t)){let n=t.name,i=u[n??``]?.message?.toString(),s=n?o(i,n,d):void 0,l=e.type.displayName;return r(e,{...n!==void 0&&!a.has(l??``)&&n?c(n):{},error:s})}return t.children?r(e,{children:f(t.children)}):e});return t(e,{children:f(s)})};export{s as RegisteredFormChildren};
2
2
  //# sourceMappingURL=register-components.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"register-components.mjs","names":[],"sources":["../../../../src/components/forms/controls/register-components.tsx"],"sourcesContent":["'use client';\n\nimport type React from 'react';\nimport { Children, cloneElement, isValidElement } from 'react';\nimport type { FieldErrors, UseFormRegister } from 'react-hook-form';\n\ninterface TranslationMessage {\n key: string;\n bindings: Record<string, string>;\n fallback: string;\n}\n\nconst controllerDisplayNames = new Set([\n 'Form.Password',\n 'Form.Checkbox',\n 'Form.Select',\n 'Form.Combobox',\n 'Form.Autocomplete',\n 'Form.DatePicker',\n 'Form.DateTimePicker',\n 'Form.Hidden',\n 'Form.FileInput',\n 'Form.FileInputMultiple',\n 'Form.Dropzone',\n 'Form.DropzoneS3',\n]);\n\nconst parseAndTranslate = (\n message: string | undefined,\n fieldName: string,\n t?: (\n key: string,\n bindings?: Record<string, string>,\n fallback?: string,\n ) => string | React.ReactNode,\n): string | undefined => {\n if (!message) return undefined;\n\n try {\n const parsed: TranslationMessage = JSON.parse(message);\n const bindings = { ...parsed.bindings, attribute: fieldName };\n const result = t\n ? t(parsed.key, bindings, parsed.fallback)\n : parsed.fallback;\n return String(result).replace(/{attribute}/g, fieldName);\n } catch {\n return message.replace(/{attribute}/g, fieldName);\n }\n};\n\ninterface RegisteredFormChildrenProps {\n children: React.ReactNode;\n register: UseFormRegister<Record<string, unknown>>;\n componentTypes: React.ComponentType[];\n errors?: FieldErrors<Record<string, unknown>>;\n t?: (\n key: string,\n bindings?: Record<string, string>,\n fallback?: string,\n ) => string | React.ReactNode;\n}\n\nexport const RegisteredFormChildren = ({\n children,\n register,\n componentTypes,\n errors = {},\n t,\n}: RegisteredFormChildrenProps): React.ReactNode => {\n const processChildren = (nodes: React.ReactNode): React.ReactNode => {\n return Children.map(nodes, (child) => {\n if (!isValidElement(child)) {\n return child;\n }\n\n const childProps = child.props as {\n name?: string;\n children?: React.ReactNode;\n };\n\n if (\n componentTypes.some((type: React.ComponentType) => child.type === type)\n ) {\n const fieldName = childProps.name;\n const errorMessage = errors[fieldName ?? '']?.message?.toString();\n const translatedError = fieldName\n ? parseAndTranslate(errorMessage, fieldName, t)\n : undefined;\n const displayName = (\n child.type as React.ComponentType & { displayName?: string }\n ).displayName;\n const shouldRegister =\n fieldName !== undefined &&\n !controllerDisplayNames.has(displayName ?? '');\n const registrationProps =\n shouldRegister && fieldName ? register(fieldName) : {};\n\n return cloneElement(child, {\n ...registrationProps,\n error: translatedError,\n } as Partial<typeof child.props>);\n }\n\n if (childProps.children) {\n return cloneElement(child, {\n children: processChildren(childProps.children),\n } as Partial<typeof child.props>);\n }\n\n return child;\n });\n };\n\n return <>{processChildren(children)}</>;\n};\n"],"mappings":"0IAYA,MAAM,EAAyB,IAAI,IAAI,CACrC,gBACA,gBACA,cACA,gBACA,oBACA,kBACA,sBACA,cACA,iBACA,yBACA,gBACA,kBACD,CAAC,CAEI,GACJ,EACA,EACA,IAKuB,CAClB,KAEL,GAAI,CACF,IAAM,EAA6B,KAAK,MAAM,EAAQ,CAChD,EAAW,CAAE,GAAG,EAAO,SAAU,UAAW,EAAW,CACvD,EAAS,EACX,EAAE,EAAO,IAAK,EAAU,EAAO,SAAS,CACxC,EAAO,SACX,OAAO,OAAO,EAAO,CAAC,QAAQ,eAAgB,EAAU,MAClD,CACN,OAAO,EAAQ,QAAQ,eAAgB,EAAU,GAgBxC,GAA0B,CACrC,WACA,WACA,iBACA,SAAS,EAAE,CACX,OACkD,CAClD,IAAM,EAAmB,GAChB,EAAS,IAAI,EAAQ,GAAU,CACpC,GAAI,CAAC,EAAe,EAAM,CACxB,OAAO,EAGT,IAAM,EAAa,EAAM,MAKzB,GACE,EAAe,KAAM,GAA8B,EAAM,OAAS,EAAK,CACvE,CACA,IAAM,EAAY,EAAW,KACvB,EAAe,EAAO,GAAa,KAAK,SAAS,UAAU,CAC3D,EAAkB,EACpB,EAAkB,EAAc,EAAW,EAAE,CAC7C,IAAA,GACE,EACJ,EAAM,KACN,YAOF,OAAO,EAAa,EAAO,CACzB,GANA,IAAc,IAAA,IACd,CAAC,EAAuB,IAAI,GAAe,GAAG,EAE5B,EAAY,EAAS,EAAU,CAAG,EAAE,CAItD,MAAO,EACR,CAAgC,CASnC,OANI,EAAW,SACN,EAAa,EAAO,CACzB,SAAU,EAAgB,EAAW,SAAS,CAC/C,CAAgC,CAG5B,GACP,CAGJ,OAAO,EAAA,EAAA,CAAA,SAAG,EAAgB,EAAS,CAAI,CAAA"}
1
+ {"version":3,"file":"register-components.mjs","names":[],"sources":["../../../../src/components/forms/controls/register-components.tsx"],"sourcesContent":["'use client';\n\nimport type React from 'react';\nimport { Children, cloneElement, isValidElement } from 'react';\nimport type { FieldErrors, UseFormRegister } from 'react-hook-form';\n\ninterface TranslationMessage {\n key: string;\n bindings: Record<string, string>;\n fallback: string;\n}\n\nconst controllerDisplayNames = new Set([\n 'Form.Password',\n 'Form.Checkbox',\n 'Form.CheckboxTree',\n 'Form.Select',\n 'Form.Combobox',\n 'Form.Autocomplete',\n 'Form.DatePicker',\n 'Form.DateTimePicker',\n 'Form.Hidden',\n 'Form.FileInput',\n 'Form.FileInputMultiple',\n 'Form.Dropzone',\n 'Form.DropzoneS3',\n]);\n\nconst parseAndTranslate = (\n message: string | undefined,\n fieldName: string,\n t?: (\n key: string,\n bindings?: Record<string, string>,\n fallback?: string,\n ) => string | React.ReactNode,\n): string | undefined => {\n if (!message) return undefined;\n\n try {\n const parsed: TranslationMessage = JSON.parse(message);\n const bindings = { ...parsed.bindings, attribute: fieldName };\n const result = t\n ? t(parsed.key, bindings, parsed.fallback)\n : parsed.fallback;\n return String(result).replace(/{attribute}/g, fieldName);\n } catch {\n return message.replace(/{attribute}/g, fieldName);\n }\n};\n\ninterface RegisteredFormChildrenProps {\n children: React.ReactNode;\n register: UseFormRegister<Record<string, unknown>>;\n componentTypes: React.ComponentType[];\n errors?: FieldErrors<Record<string, unknown>>;\n t?: (\n key: string,\n bindings?: Record<string, string>,\n fallback?: string,\n ) => string | React.ReactNode;\n}\n\nexport const RegisteredFormChildren = ({\n children,\n register,\n componentTypes,\n errors = {},\n t,\n}: RegisteredFormChildrenProps): React.ReactNode => {\n const processChildren = (nodes: React.ReactNode): React.ReactNode => {\n return Children.map(nodes, (child) => {\n if (!isValidElement(child)) {\n return child;\n }\n\n const childProps = child.props as {\n name?: string;\n children?: React.ReactNode;\n };\n\n if (\n componentTypes.some((type: React.ComponentType) => child.type === type)\n ) {\n const fieldName = childProps.name;\n const errorMessage = errors[fieldName ?? '']?.message?.toString();\n const translatedError = fieldName\n ? parseAndTranslate(errorMessage, fieldName, t)\n : undefined;\n const displayName = (\n child.type as React.ComponentType & { displayName?: string }\n ).displayName;\n const shouldRegister =\n fieldName !== undefined &&\n !controllerDisplayNames.has(displayName ?? '');\n const registrationProps =\n shouldRegister && fieldName ? register(fieldName) : {};\n\n return cloneElement(child, {\n ...registrationProps,\n error: translatedError,\n } as Partial<typeof child.props>);\n }\n\n if (childProps.children) {\n return cloneElement(child, {\n children: processChildren(childProps.children),\n } as Partial<typeof child.props>);\n }\n\n return child;\n });\n };\n\n return <>{processChildren(children)}</>;\n};\n"],"mappings":"0IAYA,MAAM,EAAyB,IAAI,IAAI,CACrC,gBACA,gBACA,oBACA,cACA,gBACA,oBACA,kBACA,sBACA,cACA,iBACA,yBACA,gBACA,kBACD,CAAC,CAEI,GACJ,EACA,EACA,IAKuB,CAClB,KAEL,GAAI,CACF,IAAM,EAA6B,KAAK,MAAM,EAAQ,CAChD,EAAW,CAAE,GAAG,EAAO,SAAU,UAAW,EAAW,CACvD,EAAS,EACX,EAAE,EAAO,IAAK,EAAU,EAAO,SAAS,CACxC,EAAO,SACX,OAAO,OAAO,EAAO,CAAC,QAAQ,eAAgB,EAAU,MAClD,CACN,OAAO,EAAQ,QAAQ,eAAgB,EAAU,GAgBxC,GAA0B,CACrC,WACA,WACA,iBACA,SAAS,EAAE,CACX,OACkD,CAClD,IAAM,EAAmB,GAChB,EAAS,IAAI,EAAQ,GAAU,CACpC,GAAI,CAAC,EAAe,EAAM,CACxB,OAAO,EAGT,IAAM,EAAa,EAAM,MAKzB,GACE,EAAe,KAAM,GAA8B,EAAM,OAAS,EAAK,CACvE,CACA,IAAM,EAAY,EAAW,KACvB,EAAe,EAAO,GAAa,KAAK,SAAS,UAAU,CAC3D,EAAkB,EACpB,EAAkB,EAAc,EAAW,EAAE,CAC7C,IAAA,GACE,EACJ,EAAM,KACN,YAOF,OAAO,EAAa,EAAO,CACzB,GANA,IAAc,IAAA,IACd,CAAC,EAAuB,IAAI,GAAe,GAAG,EAE5B,EAAY,EAAS,EAAU,CAAG,EAAE,CAItD,MAAO,EACR,CAAgC,CASnC,OANI,EAAW,SACN,EAAa,EAAO,CACzB,SAAU,EAAgB,EAAW,SAAS,CAC/C,CAAgC,CAG5B,GACP,CAGJ,OAAO,EAAA,EAAA,CAAA,SAAG,EAAgB,EAAS,CAAI,CAAA"}
@@ -1,2 +1,2 @@
1
- import{findFormComponents as e}from"../controls/find-form-components.mjs";import{PASSWORD_RULES as t}from"./password-rules.mjs";import n from"./password.mjs";import{parseRules as r}from"./zod.mjs";import{z as i}from"zod";const a=(e,t)=>{if(!e.name||!e.$rule?.includes(`confirmed`))return;let n=e.$rule.split(`|`).find(e=>e.startsWith(`confirmed`)),r=n?.includes(`:`)?n.split(`:`)[1]:`${e.name}_confirmation`;t.confirmedFields.push({field:e.name,target:r})},o=(e,t)=>{e.name&&(e.$rule?.includes(`required`)?(t.rules[e.name]=i.boolean().optional().or(i.literal(!1)),t.requiredBooleanFields.push(e.name)):t.rules[e.name]=i.boolean().optional())},s=(e,a)=>{if(!e.name)return;let o=i.string(),s=e.$rule?e.$rule.split(`|`).filter(e=>e.trim()!==`password`).join(`|`):``;s&&(o=r(s));let c=e.rules||(e.$rule?.includes(`password`)?t:[]);c.length>0&&(o=n(o,c));let l=!e.$rule||e.$rule.includes(`optional`)||s.includes(`optional`);a.rules[e.name]=l?o.optional():o},c=(e,t)=>{e.name&&(t.rules[e.name]=e.$rule?r(e.$rule):i.string().optional())},l=(e,t)=>{e.name&&(t.rules[e.name]=i.any().optional())},u=(e,t)=>{e.name&&(t.rules[e.name]=e.$rule?r(e.$rule):i.string().nullable().optional())},d=JSON.stringify({key:`required`,fallback:`El campo {attribute} es obligatorio.`,bindings:{}}),f=(e,t,n)=>{e.name&&(e.$rule?.includes(`required`)?t.rules[e.name]=n?i.any().refine(e=>Array.isArray(e)&&e.length>0,{message:d}):i.any().refine(e=>e instanceof File,{message:d}):t.rules[e.name]=i.any().optional())},p=(e,t)=>t.confirmedFields.length===0&&t.requiredBooleanFields.length===0?e:e.superRefine((e,n)=>{t.confirmedFields.forEach(({field:t,target:r})=>{e[t]!==e[r]&&n.addIssue({code:i.ZodIssueCode.custom,message:JSON.stringify({key:`confirmed`,fallback:`La confirmación no coincide.`,bindings:{}}),path:[r]})}),t.requiredBooleanFields.forEach(t=>{e[t]!==!0&&n.addIssue({code:i.ZodIssueCode.custom,message:JSON.stringify({key:`required`,fallback:`El campo {attribute} es obligatorio.`,bindings:{}}),path:[t]})})}),m=(t,n)=>{let r={rules:{},confirmedFields:[],requiredBooleanFields:[]};return e(t,n).forEach(e=>{let t=e.props,n=e.type.displayName;t.name&&(a(t,r),n===`Form.Checkbox`?o(t,r):n===`Form.Password`?s(t,r):n===`Form.Select`||n===`Form.Combobox`||n===`Form.Autocomplete`?l(t,r):n===`Form.DatePicker`||n===`Form.DateTimePicker`?u(t,r):n===`Form.FileInput`?f(t,r,!1):n===`Form.FileInputMultiple`||n===`Form.Dropzone`||n===`Form.DropzoneS3`?f(t,r,!0):c(t,r))}),p(i.object(r.rules).loose(),r)};export{m as extractFormRules};
1
+ import{findFormComponents as e}from"../controls/find-form-components.mjs";import{PASSWORD_RULES as t}from"./password-rules.mjs";import n from"./password.mjs";import{parseRules as r}from"./zod.mjs";import{z as i}from"zod";const a=(e,t)=>{if(!e.name||!e.$rule?.includes(`confirmed`))return;let n=e.$rule.split(`|`).find(e=>e.startsWith(`confirmed`)),r=n?.includes(`:`)?n.split(`:`)[1]:`${e.name}_confirmation`;t.confirmedFields.push({field:e.name,target:r})},o=(e,t)=>{e.name&&(e.$rule?.includes(`required`)?(t.rules[e.name]=i.boolean().optional().or(i.literal(!1)),t.requiredBooleanFields.push(e.name)):t.rules[e.name]=i.boolean().optional())},s=(e,t)=>{e.name&&(e.$rule?.includes(`required`)?t.rules[e.name]=i.any().refine(e=>Array.isArray(e)&&e.length>0,{message:f}):t.rules[e.name]=i.array(i.string()).optional())},c=(e,a)=>{if(!e.name)return;let o=i.string(),s=e.$rule?e.$rule.split(`|`).filter(e=>e.trim()!==`password`).join(`|`):``;s&&(o=r(s));let c=e.rules||(e.$rule?.includes(`password`)?t:[]);c.length>0&&(o=n(o,c));let l=!e.$rule||e.$rule.includes(`optional`)||s.includes(`optional`);a.rules[e.name]=l?o.optional():o},l=(e,t)=>{e.name&&(t.rules[e.name]=e.$rule?r(e.$rule):i.string().optional())},u=(e,t)=>{e.name&&(t.rules[e.name]=i.any().optional())},d=(e,t)=>{e.name&&(t.rules[e.name]=e.$rule?r(e.$rule):i.string().nullable().optional())},f=JSON.stringify({key:`required`,fallback:`El campo {attribute} es obligatorio.`,bindings:{}}),p=(e,t,n)=>{e.name&&(e.$rule?.includes(`required`)?t.rules[e.name]=n?i.any().refine(e=>Array.isArray(e)&&e.length>0,{message:f}):i.any().refine(e=>e instanceof File,{message:f}):t.rules[e.name]=i.any().optional())},m=(e,t)=>t.confirmedFields.length===0&&t.requiredBooleanFields.length===0?e:e.superRefine((e,n)=>{t.confirmedFields.forEach(({field:t,target:r})=>{e[t]!==e[r]&&n.addIssue({code:i.ZodIssueCode.custom,message:JSON.stringify({key:`confirmed`,fallback:`La confirmación no coincide.`,bindings:{}}),path:[r]})}),t.requiredBooleanFields.forEach(t=>{e[t]!==!0&&n.addIssue({code:i.ZodIssueCode.custom,message:JSON.stringify({key:`required`,fallback:`El campo {attribute} es obligatorio.`,bindings:{}}),path:[t]})})}),h=(t,n)=>{let r={rules:{},confirmedFields:[],requiredBooleanFields:[]};return e(t,n).forEach(e=>{let t=e.props,n=e.type.displayName;t.name&&(a(t,r),n===`Form.Checkbox`?o(t,r):n===`Form.CheckboxTree`?s(t,r):n===`Form.Password`?c(t,r):n===`Form.Select`||n===`Form.Combobox`||n===`Form.Autocomplete`?u(t,r):n===`Form.DatePicker`||n===`Form.DateTimePicker`?d(t,r):n===`Form.FileInput`?p(t,r,!1):n===`Form.FileInputMultiple`||n===`Form.Dropzone`||n===`Form.DropzoneS3`?p(t,r,!0):l(t,r))}),m(i.object(r.rules).loose(),r)};export{h as extractFormRules};
2
2
  //# sourceMappingURL=extract-form-rules.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"extract-form-rules.mjs","names":["passwordRule"],"sources":["../../../../src/components/forms/rules/extract-form-rules.ts"],"sourcesContent":["import type React from 'react';\nimport type { FieldValues } from 'react-hook-form';\nimport { type ZodTypeAny, z } from 'zod';\n\nimport type { PasswordRuleDefinition } from '@/components/controls/password-input/usePasswordRules';\n\nimport { findFormComponents } from '../controls/find-form-components';\nimport passwordRule from './password';\nimport { PASSWORD_RULES } from './password-rules';\nimport { parseRules } from './zod';\n\ntype FormRuleContext = {\n rules: Record<string, ZodTypeAny>;\n confirmedFields: { field: string; target: string }[];\n requiredBooleanFields: string[];\n};\n\ntype ComponentProps = {\n name?: string;\n $rule?: string;\n rules?: PasswordRuleDefinition[];\n};\n\nconst processConfirmedRule = (\n props: ComponentProps,\n context: FormRuleContext,\n) => {\n if (!props.name || !props.$rule?.includes('confirmed')) return;\n\n const rulesList = props.$rule.split('|');\n const confirmedRule = rulesList.find((r) => r.startsWith('confirmed'));\n const target = confirmedRule?.includes(':')\n ? confirmedRule.split(':')[1]\n : `${props.name}_confirmation`;\n\n context.confirmedFields.push({ field: props.name, target });\n};\n\nconst processCheckbox = (props: ComponentProps, context: FormRuleContext) => {\n if (!props.name) return;\n\n if (props.$rule?.includes('required')) {\n context.rules[props.name] = z.boolean().optional().or(z.literal(false));\n context.requiredBooleanFields.push(props.name);\n } else {\n context.rules[props.name] = z.boolean().optional();\n }\n};\n\nconst processPassword = (props: ComponentProps, context: FormRuleContext) => {\n if (!props.name) return;\n\n let baseSchema: ZodTypeAny = z.string();\n const otherRules = props.$rule\n ? props.$rule\n .split('|')\n .filter((r) => r.trim() !== 'password')\n .join('|')\n : '';\n\n if (otherRules) {\n baseSchema = parseRules(otherRules);\n }\n\n const passwordRules =\n props.rules || (props.$rule?.includes('password') ? PASSWORD_RULES : []);\n\n if (passwordRules.length > 0) {\n baseSchema = passwordRule(baseSchema, passwordRules);\n }\n\n const isOptional =\n !props.$rule ||\n props.$rule.includes('optional') ||\n otherRules.includes('optional');\n\n context.rules[props.name] = isOptional ? baseSchema.optional() : baseSchema;\n};\n\nconst processDefault = (props: ComponentProps, context: FormRuleContext) => {\n if (!props.name) return;\n context.rules[props.name] = props.$rule\n ? parseRules(props.$rule)\n : z.string().optional();\n};\n\nconst processDropdown = (props: ComponentProps, context: FormRuleContext) => {\n if (!props.name) return;\n context.rules[props.name] = z.any().optional();\n};\n\nconst processDatePicker = (props: ComponentProps, context: FormRuleContext) => {\n if (!props.name) return;\n context.rules[props.name] = props.$rule\n ? parseRules(props.$rule)\n : z.string().nullable().optional();\n};\n\nconst requiredMessage = JSON.stringify({\n key: 'required',\n fallback: 'El campo {attribute} es obligatorio.',\n bindings: {},\n});\n\nconst processFileInput = (\n props: ComponentProps,\n context: FormRuleContext,\n multiple: boolean,\n) => {\n if (!props.name) return;\n\n if (props.$rule?.includes('required')) {\n context.rules[props.name] = multiple\n ? z.any().refine((val) => Array.isArray(val) && val.length > 0, {\n message: requiredMessage,\n })\n : z\n .any()\n .refine((val) => val instanceof File, { message: requiredMessage });\n } else {\n context.rules[props.name] = z.any().optional();\n }\n};\n\nconst applyRefinements = (\n schema: z.ZodObject<FieldValues>,\n context: FormRuleContext,\n) => {\n if (\n context.confirmedFields.length === 0 &&\n context.requiredBooleanFields.length === 0\n ) {\n return schema;\n }\n\n return schema.superRefine((data, ctx) => {\n context.confirmedFields.forEach(({ field, target }) => {\n if (data[field] !== data[target]) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: JSON.stringify({\n key: 'confirmed',\n fallback: 'La confirmación no coincide.',\n bindings: {},\n }),\n path: [target],\n });\n }\n });\n\n context.requiredBooleanFields.forEach((field) => {\n if (data[field] !== true) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: JSON.stringify({\n key: 'required',\n fallback: 'El campo {attribute} es obligatorio.',\n bindings: {},\n }),\n path: [field],\n });\n }\n });\n });\n};\n\nexport const extractFormRules = (\n children: React.ReactNode,\n componentTypes: React.ComponentType[],\n): ZodTypeAny => {\n const context: FormRuleContext = {\n rules: {},\n confirmedFields: [],\n requiredBooleanFields: [],\n };\n\n const components = findFormComponents(children, componentTypes);\n\n components.forEach((component) => {\n const props = component.props as ComponentProps;\n const displayName = (component.type as { displayName?: string })\n .displayName;\n\n if (props.name) {\n processConfirmedRule(props, context);\n\n if (displayName === 'Form.Checkbox') {\n processCheckbox(props, context);\n } else if (displayName === 'Form.Password') {\n processPassword(props, context);\n } else if (\n displayName === 'Form.Select' ||\n displayName === 'Form.Combobox' ||\n displayName === 'Form.Autocomplete'\n ) {\n processDropdown(props, context);\n } else if (\n displayName === 'Form.DatePicker' ||\n displayName === 'Form.DateTimePicker'\n ) {\n processDatePicker(props, context);\n } else if (displayName === 'Form.FileInput') {\n processFileInput(props, context, false);\n } else if (\n displayName === 'Form.FileInputMultiple' ||\n displayName === 'Form.Dropzone' ||\n displayName === 'Form.DropzoneS3'\n ) {\n processFileInput(props, context, true);\n } else {\n processDefault(props, context);\n }\n }\n });\n\n return applyRefinements(z.object(context.rules).loose(), context);\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"extract-form-rules.mjs","names":["passwordRule"],"sources":["../../../../src/components/forms/rules/extract-form-rules.ts"],"sourcesContent":["import type React from 'react';\nimport type { FieldValues } from 'react-hook-form';\nimport { type ZodTypeAny, z } from 'zod';\n\nimport type { PasswordRuleDefinition } from '@/components/controls/password-input/usePasswordRules';\n\nimport { findFormComponents } from '../controls/find-form-components';\nimport passwordRule from './password';\nimport { PASSWORD_RULES } from './password-rules';\nimport { parseRules } from './zod';\n\ntype FormRuleContext = {\n rules: Record<string, ZodTypeAny>;\n confirmedFields: { field: string; target: string }[];\n requiredBooleanFields: string[];\n};\n\ntype ComponentProps = {\n name?: string;\n $rule?: string;\n rules?: PasswordRuleDefinition[];\n};\n\nconst processConfirmedRule = (\n props: ComponentProps,\n context: FormRuleContext,\n) => {\n if (!props.name || !props.$rule?.includes('confirmed')) return;\n\n const rulesList = props.$rule.split('|');\n const confirmedRule = rulesList.find((r) => r.startsWith('confirmed'));\n const target = confirmedRule?.includes(':')\n ? confirmedRule.split(':')[1]\n : `${props.name}_confirmation`;\n\n context.confirmedFields.push({ field: props.name, target });\n};\n\nconst processCheckbox = (props: ComponentProps, context: FormRuleContext) => {\n if (!props.name) return;\n\n if (props.$rule?.includes('required')) {\n context.rules[props.name] = z.boolean().optional().or(z.literal(false));\n context.requiredBooleanFields.push(props.name);\n } else {\n context.rules[props.name] = z.boolean().optional();\n }\n};\n\nconst processCheckboxTree = (\n props: ComponentProps,\n context: FormRuleContext,\n) => {\n if (!props.name) return;\n\n if (props.$rule?.includes('required')) {\n context.rules[props.name] = z\n .any()\n .refine((val) => Array.isArray(val) && val.length > 0, {\n message: requiredMessage,\n });\n } else {\n context.rules[props.name] = z.array(z.string()).optional();\n }\n};\n\nconst processPassword = (props: ComponentProps, context: FormRuleContext) => {\n if (!props.name) return;\n\n let baseSchema: ZodTypeAny = z.string();\n const otherRules = props.$rule\n ? props.$rule\n .split('|')\n .filter((r) => r.trim() !== 'password')\n .join('|')\n : '';\n\n if (otherRules) {\n baseSchema = parseRules(otherRules);\n }\n\n const passwordRules =\n props.rules || (props.$rule?.includes('password') ? PASSWORD_RULES : []);\n\n if (passwordRules.length > 0) {\n baseSchema = passwordRule(baseSchema, passwordRules);\n }\n\n const isOptional =\n !props.$rule ||\n props.$rule.includes('optional') ||\n otherRules.includes('optional');\n\n context.rules[props.name] = isOptional ? baseSchema.optional() : baseSchema;\n};\n\nconst processDefault = (props: ComponentProps, context: FormRuleContext) => {\n if (!props.name) return;\n context.rules[props.name] = props.$rule\n ? parseRules(props.$rule)\n : z.string().optional();\n};\n\nconst processDropdown = (props: ComponentProps, context: FormRuleContext) => {\n if (!props.name) return;\n context.rules[props.name] = z.any().optional();\n};\n\nconst processDatePicker = (props: ComponentProps, context: FormRuleContext) => {\n if (!props.name) return;\n context.rules[props.name] = props.$rule\n ? parseRules(props.$rule)\n : z.string().nullable().optional();\n};\n\nconst requiredMessage = JSON.stringify({\n key: 'required',\n fallback: 'El campo {attribute} es obligatorio.',\n bindings: {},\n});\n\nconst processFileInput = (\n props: ComponentProps,\n context: FormRuleContext,\n multiple: boolean,\n) => {\n if (!props.name) return;\n\n if (props.$rule?.includes('required')) {\n context.rules[props.name] = multiple\n ? z.any().refine((val) => Array.isArray(val) && val.length > 0, {\n message: requiredMessage,\n })\n : z\n .any()\n .refine((val) => val instanceof File, { message: requiredMessage });\n } else {\n context.rules[props.name] = z.any().optional();\n }\n};\n\nconst applyRefinements = (\n schema: z.ZodObject<FieldValues>,\n context: FormRuleContext,\n) => {\n if (\n context.confirmedFields.length === 0 &&\n context.requiredBooleanFields.length === 0\n ) {\n return schema;\n }\n\n return schema.superRefine((data, ctx) => {\n context.confirmedFields.forEach(({ field, target }) => {\n if (data[field] !== data[target]) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: JSON.stringify({\n key: 'confirmed',\n fallback: 'La confirmación no coincide.',\n bindings: {},\n }),\n path: [target],\n });\n }\n });\n\n context.requiredBooleanFields.forEach((field) => {\n if (data[field] !== true) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: JSON.stringify({\n key: 'required',\n fallback: 'El campo {attribute} es obligatorio.',\n bindings: {},\n }),\n path: [field],\n });\n }\n });\n });\n};\n\nexport const extractFormRules = (\n children: React.ReactNode,\n componentTypes: React.ComponentType[],\n): ZodTypeAny => {\n const context: FormRuleContext = {\n rules: {},\n confirmedFields: [],\n requiredBooleanFields: [],\n };\n\n const components = findFormComponents(children, componentTypes);\n\n components.forEach((component) => {\n const props = component.props as ComponentProps;\n const displayName = (component.type as { displayName?: string })\n .displayName;\n\n if (props.name) {\n processConfirmedRule(props, context);\n\n if (displayName === 'Form.Checkbox') {\n processCheckbox(props, context);\n } else if (displayName === 'Form.CheckboxTree') {\n processCheckboxTree(props, context);\n } else if (displayName === 'Form.Password') {\n processPassword(props, context);\n } else if (\n displayName === 'Form.Select' ||\n displayName === 'Form.Combobox' ||\n displayName === 'Form.Autocomplete'\n ) {\n processDropdown(props, context);\n } else if (\n displayName === 'Form.DatePicker' ||\n displayName === 'Form.DateTimePicker'\n ) {\n processDatePicker(props, context);\n } else if (displayName === 'Form.FileInput') {\n processFileInput(props, context, false);\n } else if (\n displayName === 'Form.FileInputMultiple' ||\n displayName === 'Form.Dropzone' ||\n displayName === 'Form.DropzoneS3'\n ) {\n processFileInput(props, context, true);\n } else {\n processDefault(props, context);\n }\n }\n });\n\n return applyRefinements(z.object(context.rules).loose(), context);\n};\n"],"mappings":"6NAuBA,MAAM,GACJ,EACA,IACG,CACH,GAAI,CAAC,EAAM,MAAQ,CAAC,EAAM,OAAO,SAAS,YAAY,CAAE,OAGxD,IAAM,EADY,EAAM,MAAM,MAAM,IAAI,CACR,KAAM,GAAM,EAAE,WAAW,YAAY,CAAC,CAChE,EAAS,GAAe,SAAS,IAAI,CACvC,EAAc,MAAM,IAAI,CAAC,GACzB,GAAG,EAAM,KAAK,eAElB,EAAQ,gBAAgB,KAAK,CAAE,MAAO,EAAM,KAAM,SAAQ,CAAC,EAGvD,GAAmB,EAAuB,IAA6B,CACtE,EAAM,OAEP,EAAM,OAAO,SAAS,WAAW,EACnC,EAAQ,MAAM,EAAM,MAAQ,EAAE,SAAS,CAAC,UAAU,CAAC,GAAG,EAAE,QAAQ,GAAM,CAAC,CACvE,EAAQ,sBAAsB,KAAK,EAAM,KAAK,EAE9C,EAAQ,MAAM,EAAM,MAAQ,EAAE,SAAS,CAAC,UAAU,GAIhD,GACJ,EACA,IACG,CACE,EAAM,OAEP,EAAM,OAAO,SAAS,WAAW,CACnC,EAAQ,MAAM,EAAM,MAAQ,EACzB,KAAK,CACL,OAAQ,GAAQ,MAAM,QAAQ,EAAI,EAAI,EAAI,OAAS,EAAG,CACrD,QAAS,EACV,CAAC,CAEJ,EAAQ,MAAM,EAAM,MAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,UAAU,GAIxD,GAAmB,EAAuB,IAA6B,CAC3E,GAAI,CAAC,EAAM,KAAM,OAEjB,IAAI,EAAyB,EAAE,QAAQ,CACjC,EAAa,EAAM,MACrB,EAAM,MACH,MAAM,IAAI,CACV,OAAQ,GAAM,EAAE,MAAM,GAAK,WAAW,CACtC,KAAK,IAAI,CACZ,GAEA,IACF,EAAa,EAAW,EAAW,EAGrC,IAAM,EACJ,EAAM,QAAU,EAAM,OAAO,SAAS,WAAW,CAAG,EAAiB,EAAE,EAErE,EAAc,OAAS,IACzB,EAAaA,EAAa,EAAY,EAAc,EAGtD,IAAM,EACJ,CAAC,EAAM,OACP,EAAM,MAAM,SAAS,WAAW,EAChC,EAAW,SAAS,WAAW,CAEjC,EAAQ,MAAM,EAAM,MAAQ,EAAa,EAAW,UAAU,CAAG,GAG7D,GAAkB,EAAuB,IAA6B,CACrE,EAAM,OACX,EAAQ,MAAM,EAAM,MAAQ,EAAM,MAC9B,EAAW,EAAM,MAAM,CACvB,EAAE,QAAQ,CAAC,UAAU,GAGrB,GAAmB,EAAuB,IAA6B,CACtE,EAAM,OACX,EAAQ,MAAM,EAAM,MAAQ,EAAE,KAAK,CAAC,UAAU,GAG1C,GAAqB,EAAuB,IAA6B,CACxE,EAAM,OACX,EAAQ,MAAM,EAAM,MAAQ,EAAM,MAC9B,EAAW,EAAM,MAAM,CACvB,EAAE,QAAQ,CAAC,UAAU,CAAC,UAAU,GAGhC,EAAkB,KAAK,UAAU,CACrC,IAAK,WACL,SAAU,uCACV,SAAU,EAAE,CACb,CAAC,CAEI,GACJ,EACA,EACA,IACG,CACE,EAAM,OAEP,EAAM,OAAO,SAAS,WAAW,CACnC,EAAQ,MAAM,EAAM,MAAQ,EACxB,EAAE,KAAK,CAAC,OAAQ,GAAQ,MAAM,QAAQ,EAAI,EAAI,EAAI,OAAS,EAAG,CAC5D,QAAS,EACV,CAAC,CACF,EACG,KAAK,CACL,OAAQ,GAAQ,aAAe,KAAM,CAAE,QAAS,EAAiB,CAAC,CAEzE,EAAQ,MAAM,EAAM,MAAQ,EAAE,KAAK,CAAC,UAAU,GAI5C,GACJ,EACA,IAGE,EAAQ,gBAAgB,SAAW,GACnC,EAAQ,sBAAsB,SAAW,EAElC,EAGF,EAAO,aAAa,EAAM,IAAQ,CACvC,EAAQ,gBAAgB,SAAS,CAAE,QAAO,YAAa,CACjD,EAAK,KAAW,EAAK,IACvB,EAAI,SAAS,CACX,KAAM,EAAE,aAAa,OACrB,QAAS,KAAK,UAAU,CACtB,IAAK,YACL,SAAU,+BACV,SAAU,EAAE,CACb,CAAC,CACF,KAAM,CAAC,EAAO,CACf,CAAC,EAEJ,CAEF,EAAQ,sBAAsB,QAAS,GAAU,CAC3C,EAAK,KAAW,IAClB,EAAI,SAAS,CACX,KAAM,EAAE,aAAa,OACrB,QAAS,KAAK,UAAU,CACtB,IAAK,WACL,SAAU,uCACV,SAAU,EAAE,CACb,CAAC,CACF,KAAM,CAAC,EAAM,CACd,CAAC,EAEJ,EACF,CAGS,GACX,EACA,IACe,CACf,IAAM,EAA2B,CAC/B,MAAO,EAAE,CACT,gBAAiB,EAAE,CACnB,sBAAuB,EAAE,CAC1B,CA2CD,OAzCmB,EAAmB,EAAU,EAAe,CAEpD,QAAS,GAAc,CAChC,IAAM,EAAQ,EAAU,MAClB,EAAe,EAAU,KAC5B,YAEC,EAAM,OACR,EAAqB,EAAO,EAAQ,CAEhC,IAAgB,gBAClB,EAAgB,EAAO,EAAQ,CACtB,IAAgB,oBACzB,EAAoB,EAAO,EAAQ,CAC1B,IAAgB,gBACzB,EAAgB,EAAO,EAAQ,CAE/B,IAAgB,eAChB,IAAgB,iBAChB,IAAgB,oBAEhB,EAAgB,EAAO,EAAQ,CAE/B,IAAgB,mBAChB,IAAgB,sBAEhB,EAAkB,EAAO,EAAQ,CACxB,IAAgB,iBACzB,EAAiB,EAAO,EAAS,GAAM,CAEvC,IAAgB,0BAChB,IAAgB,iBAChB,IAAgB,kBAEhB,EAAiB,EAAO,EAAS,GAAK,CAEtC,EAAe,EAAO,EAAQ,GAGlC,CAEK,EAAiB,EAAE,OAAO,EAAQ,MAAM,CAAC,OAAO,CAAE,EAAQ"}
@@ -49,6 +49,7 @@ import { UploadedFiles, UploadedFilesClassNames, UploadedFilesItemClassNames, Up
49
49
  import { UploadingFiles, UploadingFilesClassNames, UploadingFilesItemClassNames, UploadingFilesItemErrorClassNames, UploadingFilesItemErrorProps, UploadingFilesItemProps, UploadingFilesProps } from "./data-display/uploading-files/UploadingFiles.mjs";
50
50
  import { AvatarUpload, AvatarUploadProps } from "./controls/avatar-upload/AvatarUpload.mjs";
51
51
  import { Checkbox, CheckboxProps } from "./controls/checkbox/Checkbox.mjs";
52
+ import { CheckboxTree, CheckboxTreeItem, CheckboxTreeProps } from "./controls/checkbox-tree/CheckboxTree.mjs";
52
53
  import { DatePicker, DatePickerClassNames, DatePickerDate, DatePickerProps, DatePickerValue } from "./controls/date-picker/DatePicker.mjs";
53
54
  import { DateTimePicker, DateTimePickerClassNames, DateTimePickerDate, DateTimePickerProps, DateTimePickerValue } from "./controls/date-time-picker/DateTimePicker.mjs";
54
55
  import { HorizontalDivider, HorizontalDividerProps } from "./misc/horizontal-divider/HorizontalDivider.mjs";
package/dist/index.d.mts CHANGED
@@ -49,6 +49,7 @@ import { UploadedFiles, UploadedFilesClassNames, UploadedFilesItemClassNames, Up
49
49
  import { UploadingFiles, UploadingFilesClassNames, UploadingFilesItemClassNames, UploadingFilesItemErrorClassNames, UploadingFilesItemErrorProps, UploadingFilesItemProps, UploadingFilesProps } from "./components/data-display/uploading-files/UploadingFiles.mjs";
50
50
  import { AvatarUpload, AvatarUploadProps } from "./components/controls/avatar-upload/AvatarUpload.mjs";
51
51
  import { Checkbox, CheckboxProps } from "./components/controls/checkbox/Checkbox.mjs";
52
+ import { CheckboxTree, CheckboxTreeItem, CheckboxTreeProps } from "./components/controls/checkbox-tree/CheckboxTree.mjs";
52
53
  import { DatePicker, DatePickerClassNames, DatePickerDate, DatePickerProps, DatePickerValue } from "./components/controls/date-picker/DatePicker.mjs";
53
54
  import { DateTimePicker, DateTimePickerClassNames, DateTimePickerDate, DateTimePickerProps, DateTimePickerValue } from "./components/controls/date-time-picker/DateTimePicker.mjs";
54
55
  import { HorizontalDivider, HorizontalDividerProps } from "./components/misc/horizontal-divider/HorizontalDivider.mjs";
@@ -94,4 +95,4 @@ import { Modals } from "./components/overlays/modal/index.mjs";
94
95
  import { Toast, ToastIntent, ToastOptions, ToastProviderProps } from "./components/overlays/toast/Toast.mjs";
95
96
  import { Tooltip, TooltipProps } from "./components/overlays/tooltip/Tooltip.mjs";
96
97
  import { MageUiProvider, MageUiProviderProps } from "./providers/MageUiProvider.mjs";
97
- export { Autocomplete, AutocompleteProps, Avatar, AvatarDropzone, AvatarDropzoneProps, AvatarDropzoneS3, AvatarDropzoneS3Props, AvatarProps, AvatarUpload, AvatarUploadProps, Badge, BadgeProps, Breadcrumbs, BreadcrumbsBarProps, BreadcrumbsProps, Button, ButtonAction, ButtonActionProps, ButtonIcon, ButtonIconProps, ButtonIconVisual, ButtonIconVisualProps, ButtonLoader, ButtonProps, ButtonVisual, ButtonVisualProps, Calendar, CalendarEvent, CalendarProps, CalendarView, Card, CardBase, CardBody, CardClassNames, CardFooter, CardHeader, CardProps, CardRoot, Checkbox, CheckboxProps, ColumnDef, Combobox, ComboboxProps, DEFAULT_DATA_TABLE_LABELS, DataTable, DataTableBottomSlot, DataTableBottomSlotProps, DataTableClassNames, DataTableColumnMeta, DataTableContextProvider, DataTableContextValue, DataTableExpansionConfig, DataTableExtraColumnConfig, DataTableFeedback, DataTableFiltersConfig, DataTableLabels, DataTablePageSize, DataTablePageSizeProps, DataTablePagination, DataTablePaginationConfig, DataTablePaginationProps, DataTableProps, DataTableRecord, DataTableSearchConfig, DataTableSelectionConfig, DataTableSortingConfig, DataTableTableConfig, DataTableTopSlot, DataTableTopSlotProps, DateLocalizer, DatePicker, DatePickerClassNames, DatePickerDate, DatePickerProps, DatePickerValue, DateTimePicker, DateTimePickerClassNames, DateTimePickerDate, DateTimePickerProps, DateTimePickerValue, DescriptionList, DescriptionListClassNames, DescriptionListItemProps, DescriptionListProps, DocumentItem, DocumentItemProps, Dropzone, DropzoneProps, DropzoneS3, DropzoneS3Props, DropzoneS3Texts, ExpandedState, FileData, FileIcon, FileIconProps, FileInput, FileInputMultiple, FileInputMultipleProps, FileInputProps, FileMetadata, FluidGrid, FluidGridProps, Form, FormDropzoneS3Props, FormProps, FormS3Context, FormS3ContextValue, Grid, GridClassNames, HorizontalDivider, HorizontalDividerProps, Icon, IconProps, IconRaw, IconRawProps, IconSvg, IconSvgProps, IconWrapped, IconWrappedProps, Indicator, IndicatorProps, LoaderDot, LoaderDotProps, LoaderOval, LoaderOvalProps, LogoImage, LogoImageProps, LogoSvg, LogoSvgProps, MageUiProvider, MageUiProviderProps, Menu, MenuProps, Modal, ModalClassNames, ModalIntent, ModalProps, ModalRegistry, ModalRegistryEntry, ModalRootProps, Modals, NavigationMenu, NavigationMenuProps, NotificationBanner, NotificationBannerIntent, NotificationBannerProps, PASSWORD_RULES, Pagination, PaginationClassNames, PaginationRootProps, PaginationState, PasswordInput, PasswordInputProps, PasswordRule, PasswordRuleDefinition, PasswordSegment, PasswordStrengthInput, PasswordStrengthInputProps, Radio, RadioProps, RemovableItem, RemovableItemProps, ResourceItem, ResourceItemProps, RowSelectionState, S3FileMeta, S3InitBody, S3InitResponse, S3UploadCallback, ScrollArea, ScrollAreaAutosize, ScrollAreaAutosizeProps, ScrollAreaClassNames, ScrollAreaProps, Select, SelectProps, Sidebar, SidebarClassNames, SidebarProps, SortingState, Switch, SwitchGroup, SwitchGroupProps, SwitchProps, Table, TableBodyProps, TableCaptionProps, TableCellProps, TableClassNames, TableFootProps, TableHeadProps, TableHeaderCellProps, TableProps, TableRowProps, Tag, TagGroup, TagGroupProps, TagProps, TextInput, TextInputProps, Textarea, TextareaProps, Toast, ToastIntent, ToastOptions, ToastProviderProps, Tooltip, TooltipProps, UploadTarget, UploadedFile, UploadedFileDetails, UploadedFileDetailsProps, UploadedFileProps, UploadedFiles, UploadedFilesClassNames, UploadedFilesItemClassNames, UploadedFilesItemProps, UploadedFilesProps, UploadingFiles, UploadingFilesClassNames, UploadingFilesItemClassNames, UploadingFilesItemErrorClassNames, UploadingFilesItemErrorProps, UploadingFilesItemProps, UploadingFilesProps, Virtual, VirtualItem, VirtualPadding, VirtualProps, VisuallyHidden, VisuallyHiddenProps, getFileExtension, useDataTableContext, useFormS3Context, usePasswordRules, z };
98
+ export { Autocomplete, AutocompleteProps, Avatar, AvatarDropzone, AvatarDropzoneProps, AvatarDropzoneS3, AvatarDropzoneS3Props, AvatarProps, AvatarUpload, AvatarUploadProps, Badge, BadgeProps, Breadcrumbs, BreadcrumbsBarProps, BreadcrumbsProps, Button, ButtonAction, ButtonActionProps, ButtonIcon, ButtonIconProps, ButtonIconVisual, ButtonIconVisualProps, ButtonLoader, ButtonProps, ButtonVisual, ButtonVisualProps, Calendar, CalendarEvent, CalendarProps, CalendarView, Card, CardBase, CardBody, CardClassNames, CardFooter, CardHeader, CardProps, CardRoot, Checkbox, CheckboxProps, CheckboxTree, CheckboxTreeItem, CheckboxTreeProps, ColumnDef, Combobox, ComboboxProps, DEFAULT_DATA_TABLE_LABELS, DataTable, DataTableBottomSlot, DataTableBottomSlotProps, DataTableClassNames, DataTableColumnMeta, DataTableContextProvider, DataTableContextValue, DataTableExpansionConfig, DataTableExtraColumnConfig, DataTableFeedback, DataTableFiltersConfig, DataTableLabels, DataTablePageSize, DataTablePageSizeProps, DataTablePagination, DataTablePaginationConfig, DataTablePaginationProps, DataTableProps, DataTableRecord, DataTableSearchConfig, DataTableSelectionConfig, DataTableSortingConfig, DataTableTableConfig, DataTableTopSlot, DataTableTopSlotProps, DateLocalizer, DatePicker, DatePickerClassNames, DatePickerDate, DatePickerProps, DatePickerValue, DateTimePicker, DateTimePickerClassNames, DateTimePickerDate, DateTimePickerProps, DateTimePickerValue, DescriptionList, DescriptionListClassNames, DescriptionListItemProps, DescriptionListProps, DocumentItem, DocumentItemProps, Dropzone, DropzoneProps, DropzoneS3, DropzoneS3Props, DropzoneS3Texts, ExpandedState, FileData, FileIcon, FileIconProps, FileInput, FileInputMultiple, FileInputMultipleProps, FileInputProps, FileMetadata, FluidGrid, FluidGridProps, Form, FormDropzoneS3Props, FormProps, FormS3Context, FormS3ContextValue, Grid, GridClassNames, HorizontalDivider, HorizontalDividerProps, Icon, IconProps, IconRaw, IconRawProps, IconSvg, IconSvgProps, IconWrapped, IconWrappedProps, Indicator, IndicatorProps, LoaderDot, LoaderDotProps, LoaderOval, LoaderOvalProps, LogoImage, LogoImageProps, LogoSvg, LogoSvgProps, MageUiProvider, MageUiProviderProps, Menu, MenuProps, Modal, ModalClassNames, ModalIntent, ModalProps, ModalRegistry, ModalRegistryEntry, ModalRootProps, Modals, NavigationMenu, NavigationMenuProps, NotificationBanner, NotificationBannerIntent, NotificationBannerProps, PASSWORD_RULES, Pagination, PaginationClassNames, PaginationRootProps, PaginationState, PasswordInput, PasswordInputProps, PasswordRule, PasswordRuleDefinition, PasswordSegment, PasswordStrengthInput, PasswordStrengthInputProps, Radio, RadioProps, RemovableItem, RemovableItemProps, ResourceItem, ResourceItemProps, RowSelectionState, S3FileMeta, S3InitBody, S3InitResponse, S3UploadCallback, ScrollArea, ScrollAreaAutosize, ScrollAreaAutosizeProps, ScrollAreaClassNames, ScrollAreaProps, Select, SelectProps, Sidebar, SidebarClassNames, SidebarProps, SortingState, Switch, SwitchGroup, SwitchGroupProps, SwitchProps, Table, TableBodyProps, TableCaptionProps, TableCellProps, TableClassNames, TableFootProps, TableHeadProps, TableHeaderCellProps, TableProps, TableRowProps, Tag, TagGroup, TagGroupProps, TagProps, TextInput, TextInputProps, Textarea, TextareaProps, Toast, ToastIntent, ToastOptions, ToastProviderProps, Tooltip, TooltipProps, UploadTarget, UploadedFile, UploadedFileDetails, UploadedFileDetailsProps, UploadedFileProps, UploadedFiles, UploadedFilesClassNames, UploadedFilesItemClassNames, UploadedFilesItemProps, UploadedFilesProps, UploadingFiles, UploadingFilesClassNames, UploadingFilesItemClassNames, UploadingFilesItemErrorClassNames, UploadingFilesItemErrorProps, UploadingFilesItemProps, UploadingFilesProps, Virtual, VirtualItem, VirtualPadding, VirtualProps, VisuallyHidden, VisuallyHiddenProps, getFileExtension, useDataTableContext, useFormS3Context, usePasswordRules, z };
package/dist/index.mjs CHANGED
@@ -1 +1 @@
1
- import{Button as e}from"./components/buttons/button/Button.mjs";import{VisuallyHidden as t}from"./components/misc/visually-hidden/VisuallyHidden.mjs";import{ButtonAction as n}from"./components/buttons/button-action/ButtonAction.mjs";import{ButtonLoader as r}from"./components/buttons/button-action/ButtonLoader.mjs";import{Avatar as i}from"./components/data-display/avatar/Avatar.mjs";import{Badge as a}from"./components/data-display/badge/Badge.mjs";import{Tooltip as o}from"./components/overlays/tooltip/Tooltip.mjs";import{Calendar as s}from"./components/data-display/calendar/Calendar.mjs";import{Virtual as c}from"./components/misc/virtual/Virtual.mjs";import{ScrollArea as l}from"./components/misc/scroll-area/ScrollArea.mjs";import{Table as u}from"./components/data-display/table/Table.mjs";import{IconRaw as d}from"./components/data-display/icons/icon-raw/IconRaw.mjs";import{Icon as f}from"./components/data-display/icons/icon/Icon.mjs";import{DEFAULT_DATA_TABLE_LABELS as p,DataTableContextProvider as m,useDataTableContext as h}from"./components/data-display/datatables/useDataTableContext.mjs";import{Checkbox as g}from"./components/controls/checkbox/Checkbox.mjs";import{DataTable as _}from"./components/data-display/datatables/DataTable.mjs";import{HorizontalDivider as v}from"./components/misc/horizontal-divider/HorizontalDivider.mjs";import{ScrollAreaAutosize as y}from"./components/misc/scroll-area-autosize/ScrollAreaAutosize.mjs";import{TextInput as b}from"./components/controls/text-input/TextInput.mjs";import{IconWrapped as x}from"./components/data-display/icons/icon-wrapped/IconWrapped.mjs";import{Select as S}from"./components/controls/dropdown/select/Select.mjs";import{DataTablePageSize as C}from"./components/data-display/datatables/DataTablePageSize.mjs";import{Pagination as w}from"./components/navigations/pagination/Pagination.mjs";import{DataTablePagination as T}from"./components/data-display/datatables/DataTablePagination.mjs";import{DataTableBottomSlot as E}from"./components/data-display/datatables/DataTableBottomSlot.mjs";import{DataTableFeedback as D}from"./components/data-display/datatables/DataTableFeedback.mjs";import{DataTableTopSlot as O}from"./components/data-display/datatables/DataTableTopSlot.mjs";import{DescriptionList as k}from"./components/data-display/description-list/DescriptionList.mjs";import{FileIcon as A}from"./components/data-display/file-icon/FileIcon.mjs";import{ResourceItem as j}from"./components/data-display/resource-item/ResourceItem.mjs";import{DocumentItem as M}from"./components/data-display/document-item/DocumentItem.mjs";import{IconSvg as N}from"./components/data-display/icons/icon-svg/IconSvg.mjs";import{Indicator as P}from"./components/data-display/indicator/Indicator.mjs";import{LoaderDot as F}from"./components/data-display/loader-dot/LoaderDot.mjs";import{LoaderOval as I}from"./components/data-display/loader-oval/LoaderOval.mjs";import{LogoImage as L}from"./components/data-display/logos/logo-image/LogoImage.mjs";import{LogoSvg as R}from"./components/data-display/logos/logo-svg/LogoSvg.mjs";import{NotificationBanner as z}from"./components/data-display/notification-banner/NotificationBanner.mjs";import{RemovableItem as B}from"./components/data-display/removable-item/RemovableItem.mjs";import{TagGroup as V}from"./components/data-display/tag-group/TagGroup.mjs";import{Tag as H}from"./components/data-display/tag/Tag.mjs";import{UploadedFile as U}from"./components/data-display/uploaded-file/UploadedFile.mjs";import{UploadedFileDetails as W}from"./components/data-display/uploaded-file/UploadedFileDetails.mjs";import{UploadedFiles as G}from"./components/data-display/uploaded-files/UploadedFiles.mjs";import{UploadingFiles as K}from"./components/data-display/uploading-files/UploadingFiles.mjs";import{ButtonIcon as q}from"./components/buttons/button-icon/ButtonIcon.mjs";import{ButtonIconVisual as J}from"./components/buttons/button-icon-visual/ButtonIconVisual.mjs";import{ButtonVisual as Y}from"./components/buttons/button-visual/ButtonVisual.mjs";import{Modal as X}from"./components/overlays/modal/Modal.mjs";import{Modals as Z}from"./components/overlays/modal/index.mjs";import{Toast as Q}from"./components/overlays/toast/Toast.mjs";import{AvatarUpload as $}from"./components/controls/avatar-upload/AvatarUpload.mjs";import{DatePicker as ee}from"./components/controls/date-picker/DatePicker.mjs";import{DateTimePicker as te}from"./components/controls/date-time-picker/DateTimePicker.mjs";import{Autocomplete as ne}from"./components/controls/dropdown/autocomplete/Autocomplete.mjs";import{Combobox as re}from"./components/controls/dropdown/combobox/Combobox.mjs";import{AvatarDropzone as ie}from"./components/controls/dropzone/avatar/AvatarDropzone.mjs";import{getFileExtension as ae}from"./components/controls/dropzone/use-s3-upload.mjs";import{AvatarDropzoneS3 as oe}from"./components/controls/dropzone/avatar/AvatarDropzoneS3.mjs";import{Dropzone as se}from"./components/controls/dropzone/Dropzone.mjs";import{DropzoneS3 as ce}from"./components/controls/dropzone/DropzoneS3.mjs";import{FileInput as le}from"./components/controls/file-input/FileInput.mjs";import{FileInputMultiple as ue}from"./components/controls/file-input/FileInputMultiple.mjs";import{PasswordInput as de}from"./components/controls/password-input/PasswordInput.mjs";import{PasswordStrengthInput as fe}from"./components/controls/password-input/PasswordStrengthInput.mjs";import{usePasswordRules as pe}from"./components/controls/password-input/usePasswordRules.mjs";import{Radio as me}from"./components/controls/radio/Radio.mjs";import{SwitchGroup as he}from"./components/controls/switch-group/SwitchGroup.mjs";import{Switch as ge}from"./components/controls/switch/Switch.mjs";import{Textarea as _e}from"./components/controls/textarea/Textarea.mjs";import{FormS3Context as ve,useFormS3Context as ye}from"./components/forms/FormS3Context.mjs";import{PASSWORD_RULES as be}from"./components/forms/rules/password-rules.mjs";import{z as xe}from"./components/forms/rules/zod.mjs";import{Form as Se}from"./components/forms/Form.mjs";import{Card as Ce,CardBase as we,CardBody as Te,CardFooter as Ee,CardHeader as De,CardRoot as Oe}from"./components/layouts/card/Card.mjs";import{FluidGrid as ke}from"./components/layouts/fluid-grid/FluidGrid.mjs";import{Grid as Ae}from"./components/layouts/grid/Grid.mjs";import{Breadcrumbs as je}from"./components/navigations/breadcrumbs/Breadcrumbs.mjs";import{Menu as Me}from"./components/navigations/menu/Menu.mjs";import{NavigationMenu as Ne}from"./components/navigations/navigation-menu/NavigationMenu.mjs";import{Sidebar as Pe}from"./components/navigations/sidebars/sidebar/Sidebar.mjs";import{MageUiProvider as Fe}from"./providers/MageUiProvider.mjs";export{ne as Autocomplete,i as Avatar,ie as AvatarDropzone,oe as AvatarDropzoneS3,$ as AvatarUpload,a as Badge,je as Breadcrumbs,e as Button,n as ButtonAction,q as ButtonIcon,J as ButtonIconVisual,r as ButtonLoader,Y as ButtonVisual,s as Calendar,Ce as Card,we as CardBase,Te as CardBody,Ee as CardFooter,De as CardHeader,Oe as CardRoot,g as Checkbox,re as Combobox,p as DEFAULT_DATA_TABLE_LABELS,_ as DataTable,E as DataTableBottomSlot,m as DataTableContextProvider,D as DataTableFeedback,C as DataTablePageSize,T as DataTablePagination,O as DataTableTopSlot,ee as DatePicker,te as DateTimePicker,k as DescriptionList,M as DocumentItem,se as Dropzone,ce as DropzoneS3,A as FileIcon,le as FileInput,ue as FileInputMultiple,ke as FluidGrid,Se as Form,ve as FormS3Context,Ae as Grid,v as HorizontalDivider,f as Icon,d as IconRaw,N as IconSvg,x as IconWrapped,P as Indicator,F as LoaderDot,I as LoaderOval,L as LogoImage,R as LogoSvg,Fe as MageUiProvider,Me as Menu,X as Modal,Z as Modals,Ne as NavigationMenu,z as NotificationBanner,be as PASSWORD_RULES,w as Pagination,de as PasswordInput,fe as PasswordStrengthInput,me as Radio,B as RemovableItem,j as ResourceItem,l as ScrollArea,y as ScrollAreaAutosize,S as Select,Pe as Sidebar,ge as Switch,he as SwitchGroup,u as Table,H as Tag,V as TagGroup,b as TextInput,_e as Textarea,Q as Toast,o as Tooltip,U as UploadedFile,W as UploadedFileDetails,G as UploadedFiles,K as UploadingFiles,c as Virtual,t as VisuallyHidden,ae as getFileExtension,h as useDataTableContext,ye as useFormS3Context,pe as usePasswordRules,xe as z};
1
+ import{Button as e}from"./components/buttons/button/Button.mjs";import{VisuallyHidden as t}from"./components/misc/visually-hidden/VisuallyHidden.mjs";import{ButtonAction as n}from"./components/buttons/button-action/ButtonAction.mjs";import{ButtonLoader as r}from"./components/buttons/button-action/ButtonLoader.mjs";import{Avatar as i}from"./components/data-display/avatar/Avatar.mjs";import{Badge as a}from"./components/data-display/badge/Badge.mjs";import{Tooltip as o}from"./components/overlays/tooltip/Tooltip.mjs";import{Calendar as s}from"./components/data-display/calendar/Calendar.mjs";import{Virtual as c}from"./components/misc/virtual/Virtual.mjs";import{ScrollArea as l}from"./components/misc/scroll-area/ScrollArea.mjs";import{Table as u}from"./components/data-display/table/Table.mjs";import{IconRaw as d}from"./components/data-display/icons/icon-raw/IconRaw.mjs";import{Icon as f}from"./components/data-display/icons/icon/Icon.mjs";import{DEFAULT_DATA_TABLE_LABELS as p,DataTableContextProvider as m,useDataTableContext as h}from"./components/data-display/datatables/useDataTableContext.mjs";import{Checkbox as g}from"./components/controls/checkbox/Checkbox.mjs";import{DataTable as _}from"./components/data-display/datatables/DataTable.mjs";import{HorizontalDivider as v}from"./components/misc/horizontal-divider/HorizontalDivider.mjs";import{ScrollAreaAutosize as y}from"./components/misc/scroll-area-autosize/ScrollAreaAutosize.mjs";import{TextInput as b}from"./components/controls/text-input/TextInput.mjs";import{IconWrapped as x}from"./components/data-display/icons/icon-wrapped/IconWrapped.mjs";import{Select as S}from"./components/controls/dropdown/select/Select.mjs";import{DataTablePageSize as C}from"./components/data-display/datatables/DataTablePageSize.mjs";import{Pagination as w}from"./components/navigations/pagination/Pagination.mjs";import{DataTablePagination as T}from"./components/data-display/datatables/DataTablePagination.mjs";import{DataTableBottomSlot as E}from"./components/data-display/datatables/DataTableBottomSlot.mjs";import{DataTableFeedback as D}from"./components/data-display/datatables/DataTableFeedback.mjs";import{DataTableTopSlot as O}from"./components/data-display/datatables/DataTableTopSlot.mjs";import{DescriptionList as k}from"./components/data-display/description-list/DescriptionList.mjs";import{FileIcon as A}from"./components/data-display/file-icon/FileIcon.mjs";import{ResourceItem as j}from"./components/data-display/resource-item/ResourceItem.mjs";import{DocumentItem as M}from"./components/data-display/document-item/DocumentItem.mjs";import{IconSvg as N}from"./components/data-display/icons/icon-svg/IconSvg.mjs";import{Indicator as P}from"./components/data-display/indicator/Indicator.mjs";import{LoaderDot as F}from"./components/data-display/loader-dot/LoaderDot.mjs";import{LoaderOval as I}from"./components/data-display/loader-oval/LoaderOval.mjs";import{LogoImage as L}from"./components/data-display/logos/logo-image/LogoImage.mjs";import{LogoSvg as R}from"./components/data-display/logos/logo-svg/LogoSvg.mjs";import{NotificationBanner as z}from"./components/data-display/notification-banner/NotificationBanner.mjs";import{RemovableItem as B}from"./components/data-display/removable-item/RemovableItem.mjs";import{TagGroup as V}from"./components/data-display/tag-group/TagGroup.mjs";import{Tag as H}from"./components/data-display/tag/Tag.mjs";import{UploadedFile as U}from"./components/data-display/uploaded-file/UploadedFile.mjs";import{UploadedFileDetails as W}from"./components/data-display/uploaded-file/UploadedFileDetails.mjs";import{UploadedFiles as G}from"./components/data-display/uploaded-files/UploadedFiles.mjs";import{UploadingFiles as K}from"./components/data-display/uploading-files/UploadingFiles.mjs";import{ButtonIcon as q}from"./components/buttons/button-icon/ButtonIcon.mjs";import{ButtonIconVisual as J}from"./components/buttons/button-icon-visual/ButtonIconVisual.mjs";import{ButtonVisual as Y}from"./components/buttons/button-visual/ButtonVisual.mjs";import{Modal as X}from"./components/overlays/modal/Modal.mjs";import{Modals as Z}from"./components/overlays/modal/index.mjs";import{Toast as Q}from"./components/overlays/toast/Toast.mjs";import{AvatarUpload as $}from"./components/controls/avatar-upload/AvatarUpload.mjs";import{CheckboxTree as ee}from"./components/controls/checkbox-tree/CheckboxTree.mjs";import{DatePicker as te}from"./components/controls/date-picker/DatePicker.mjs";import{DateTimePicker as ne}from"./components/controls/date-time-picker/DateTimePicker.mjs";import{Autocomplete as re}from"./components/controls/dropdown/autocomplete/Autocomplete.mjs";import{Combobox as ie}from"./components/controls/dropdown/combobox/Combobox.mjs";import{AvatarDropzone as ae}from"./components/controls/dropzone/avatar/AvatarDropzone.mjs";import{getFileExtension as oe}from"./components/controls/dropzone/use-s3-upload.mjs";import{AvatarDropzoneS3 as se}from"./components/controls/dropzone/avatar/AvatarDropzoneS3.mjs";import{Dropzone as ce}from"./components/controls/dropzone/Dropzone.mjs";import{DropzoneS3 as le}from"./components/controls/dropzone/DropzoneS3.mjs";import{FileInput as ue}from"./components/controls/file-input/FileInput.mjs";import{FileInputMultiple as de}from"./components/controls/file-input/FileInputMultiple.mjs";import{PasswordInput as fe}from"./components/controls/password-input/PasswordInput.mjs";import{PasswordStrengthInput as pe}from"./components/controls/password-input/PasswordStrengthInput.mjs";import{usePasswordRules as me}from"./components/controls/password-input/usePasswordRules.mjs";import{Radio as he}from"./components/controls/radio/Radio.mjs";import{SwitchGroup as ge}from"./components/controls/switch-group/SwitchGroup.mjs";import{Switch as _e}from"./components/controls/switch/Switch.mjs";import{Textarea as ve}from"./components/controls/textarea/Textarea.mjs";import{FormS3Context as ye,useFormS3Context as be}from"./components/forms/FormS3Context.mjs";import{PASSWORD_RULES as xe}from"./components/forms/rules/password-rules.mjs";import{z as Se}from"./components/forms/rules/zod.mjs";import{Form as Ce}from"./components/forms/Form.mjs";import{Card as we,CardBase as Te,CardBody as Ee,CardFooter as De,CardHeader as Oe,CardRoot as ke}from"./components/layouts/card/Card.mjs";import{FluidGrid as Ae}from"./components/layouts/fluid-grid/FluidGrid.mjs";import{Grid as je}from"./components/layouts/grid/Grid.mjs";import{Breadcrumbs as Me}from"./components/navigations/breadcrumbs/Breadcrumbs.mjs";import{Menu as Ne}from"./components/navigations/menu/Menu.mjs";import{NavigationMenu as Pe}from"./components/navigations/navigation-menu/NavigationMenu.mjs";import{Sidebar as Fe}from"./components/navigations/sidebars/sidebar/Sidebar.mjs";import{MageUiProvider as Ie}from"./providers/MageUiProvider.mjs";export{re as Autocomplete,i as Avatar,ae as AvatarDropzone,se as AvatarDropzoneS3,$ as AvatarUpload,a as Badge,Me as Breadcrumbs,e as Button,n as ButtonAction,q as ButtonIcon,J as ButtonIconVisual,r as ButtonLoader,Y as ButtonVisual,s as Calendar,we as Card,Te as CardBase,Ee as CardBody,De as CardFooter,Oe as CardHeader,ke as CardRoot,g as Checkbox,ee as CheckboxTree,ie as Combobox,p as DEFAULT_DATA_TABLE_LABELS,_ as DataTable,E as DataTableBottomSlot,m as DataTableContextProvider,D as DataTableFeedback,C as DataTablePageSize,T as DataTablePagination,O as DataTableTopSlot,te as DatePicker,ne as DateTimePicker,k as DescriptionList,M as DocumentItem,ce as Dropzone,le as DropzoneS3,A as FileIcon,ue as FileInput,de as FileInputMultiple,Ae as FluidGrid,Ce as Form,ye as FormS3Context,je as Grid,v as HorizontalDivider,f as Icon,d as IconRaw,N as IconSvg,x as IconWrapped,P as Indicator,F as LoaderDot,I as LoaderOval,L as LogoImage,R as LogoSvg,Ie as MageUiProvider,Ne as Menu,X as Modal,Z as Modals,Pe as NavigationMenu,z as NotificationBanner,xe as PASSWORD_RULES,w as Pagination,fe as PasswordInput,pe as PasswordStrengthInput,he as Radio,B as RemovableItem,j as ResourceItem,l as ScrollArea,y as ScrollAreaAutosize,S as Select,Fe as Sidebar,_e as Switch,ge as SwitchGroup,u as Table,H as Tag,V as TagGroup,b as TextInput,ve as Textarea,Q as Toast,o as Tooltip,U as UploadedFile,W as UploadedFileDetails,G as UploadedFiles,K as UploadingFiles,c as Virtual,t as VisuallyHidden,oe as getFileExtension,h as useDataTableContext,be as useFormS3Context,me as usePasswordRules,Se as z};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mage-ui/components",
3
- "version": "1.0.143",
3
+ "version": "1.0.144",
4
4
  "private": false,
5
5
  "description": "",
6
6
  "keywords": [],
@@ -25,7 +25,7 @@
25
25
  "rimraf": "^6.1.3",
26
26
  "tsdown": "^0.21.4",
27
27
  "typescript": "^5.9.3",
28
- "@mage-ui/preset": "1.0.143",
28
+ "@mage-ui/preset": "1.0.144",
29
29
  "@mage-ui/styled-system": "1.0.8"
30
30
  },
31
31
  "peerDependencies": {