@mage-ui/components 0.0.85 → 0.0.87

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.
@@ -14,6 +14,7 @@ type ButtonProps = ComponentProps<'button'> & {
14
14
  endSlot?: ReactNode;
15
15
  children?: ReactNode;
16
16
  component?: 'button' | 'span';
17
+ loading?: boolean;
17
18
  };
18
19
  declare const Button: ({
19
20
  classNames,
@@ -1 +1 @@
1
- {"version":3,"file":"Button.d.ts","names":[],"sources":["../../../../src/components/buttons/button/Button.tsx"],"sourcesContent":[],"mappings":";;;;KAWY,WAAA,GAAc;;;IAAd,KAAA,CAAA,EAAA,MAAW;IAAA,KAAA,CAAA,EAAA,MAAA;IAAG,OAAA,CAAA,EAAA,MAAA;IAQZ,MAAA,CAAA,EAAA,MAAA;;WAED,CAAA,EAFC,SAED;EAAS,OAAA,CAAA,EADV,SACU;EAIT,QAAA,CAuBZ,EA3BY,SA2BZ;EAAA,SAAA,CAAA,EAAA,QAAA,GAAA,MAAA;;AAvBsB,cAAV,MAAU,EAAA,CAAA;EAAA,UAAA;EAAA,SAAA;EAAA,OAAA;EAAA,QAAA;EAAA,GAAA;AAAA,CAAA,EAMpB,WANoB,EAAA,GAMT,kBAAA,CAAA,GAAA,CAAA,OANS"}
1
+ {"version":3,"file":"Button.d.ts","names":[],"sources":["../../../../src/components/buttons/button/Button.tsx"],"sourcesContent":[],"mappings":";;;;KAWY,WAAA,GAAc;;;IAAd,KAAA,CAAA,EAAA,MAAW;IAAA,KAAA,CAAA,EAAA,MAAA;IAAG,OAAA,CAAA,EAAA,MAAA;IAQZ,MAAA,CAAA,EAAA,MAAA;;WAED,CAAA,EAFC,SAED;EAAS,OAAA,CAAA,EADV,SACU;EAKT,QAAA,CAuBZ,EA5BY,SA4BZ;EAAA,SAAA,CAAA,EAAA,QAAA,GAAA,MAAA;SAvBsB,CAAA,EAAA,OAAA;;AAAA,cAAV,MAAU,EAAA,CAAA;EAAA,UAAA;EAAA,SAAA;EAAA,OAAA;EAAA,QAAA;EAAA,GAAA;AAAA,CAAA,EAMpB,WANoB,EAAA,GAMT,kBAAA,CAAA,GAAA,CAAA,OANS"}
@@ -1 +1 @@
1
- {"version":3,"file":"Button.js","names":["Button","MantineButton"],"sources":["../../../../src/components/buttons/button/Button.tsx"],"sourcesContent":["import type { ComponentProps, ReactNode } from 'react';\n\nimport {\n button,\n buttonInner,\n buttonLabel,\n buttonLoader,\n buttonSection,\n} from '@mage-ui/styled-system/recipes';\nimport { Button as MantineButton } from '@mantine/core';\n\nexport type ButtonProps = ComponentProps<'button'> & {\n classNames?: {\n root?: string;\n inner?: string;\n label?: string;\n section?: string;\n loader?: string;\n };\n startSlot?: ReactNode;\n endSlot?: ReactNode;\n children?: ReactNode;\n component?: 'button' | 'span';\n};\n\nexport const Button = ({\n classNames,\n startSlot,\n endSlot,\n children,\n ...props\n}: ButtonProps) => {\n return (\n <MantineButton\n classNames={{\n root: classNames?.root ?? button(),\n inner: classNames?.inner ?? buttonInner(),\n label: classNames?.label ?? buttonLabel(),\n section: classNames?.section ?? buttonSection(),\n loader: classNames?.loader ?? buttonLoader(),\n }}\n leftSection={startSlot}\n rightSection={endSlot}\n {...props}\n >\n {children}\n </MantineButton>\n );\n};\n"],"mappings":"8MAyBA,MAAaA,GAAU,CACrB,aACA,YACA,UACA,WACA,GAAG,KAGD,EAACC,EAAAA,CACC,WAAY,CACV,KAAM,GAAY,MAAQ,GAAQ,CAClC,MAAO,GAAY,OAAS,GAAa,CACzC,MAAO,GAAY,OAAS,GAAa,CACzC,QAAS,GAAY,SAAW,GAAe,CAC/C,OAAQ,GAAY,QAAU,GAAc,CAC7C,CACD,YAAa,EACb,aAAc,EACd,GAAI,EAEH,YACa"}
1
+ {"version":3,"file":"Button.js","names":["Button","MantineButton"],"sources":["../../../../src/components/buttons/button/Button.tsx"],"sourcesContent":["import type { ComponentProps, ReactNode } from 'react';\n\nimport {\n button,\n buttonInner,\n buttonLabel,\n buttonLoader,\n buttonSection,\n} from '@mage-ui/styled-system/recipes';\nimport { Button as MantineButton } from '@mantine/core';\n\nexport type ButtonProps = ComponentProps<'button'> & {\n classNames?: {\n root?: string;\n inner?: string;\n label?: string;\n section?: string;\n loader?: string;\n };\n startSlot?: ReactNode;\n endSlot?: ReactNode;\n children?: ReactNode;\n component?: 'button' | 'span';\n loading?: boolean;\n};\n\nexport const Button = ({\n classNames,\n startSlot,\n endSlot,\n children,\n ...props\n}: ButtonProps) => {\n return (\n <MantineButton\n classNames={{\n root: classNames?.root ?? button(),\n inner: classNames?.inner ?? buttonInner(),\n label: classNames?.label ?? buttonLabel(),\n section: classNames?.section ?? buttonSection(),\n loader: classNames?.loader ?? buttonLoader(),\n }}\n leftSection={startSlot}\n rightSection={endSlot}\n {...props}\n >\n {children}\n </MantineButton>\n );\n};\n"],"mappings":"8MA0BA,MAAaA,GAAU,CACrB,aACA,YACA,UACA,WACA,GAAG,KAGD,EAACC,EAAAA,CACC,WAAY,CACV,KAAM,GAAY,MAAQ,GAAQ,CAClC,MAAO,GAAY,OAAS,GAAa,CACzC,MAAO,GAAY,OAAS,GAAa,CACzC,QAAS,GAAY,SAAW,GAAe,CAC/C,OAAQ,GAAY,QAAU,GAAc,CAC7C,CACD,YAAa,EACb,aAAc,EACd,GAAI,EAEH,YACa"}
@@ -1,5 +1,5 @@
1
1
  import { ButtonProps } from "../button/Button.js";
2
- import * as react_jsx_runtime5 from "react/jsx-runtime";
2
+ import * as react_jsx_runtime4 from "react/jsx-runtime";
3
3
 
4
4
  //#region src/components/buttons/button-icon/ButtonIcon.d.ts
5
5
  type ButtonIconProps = ButtonProps & {
@@ -15,7 +15,7 @@ declare const ButtonIcon: ({
15
15
  icon,
16
16
  classNames,
17
17
  ...props
18
- }: ButtonIconProps) => react_jsx_runtime5.JSX.Element;
18
+ }: ButtonIconProps) => react_jsx_runtime4.JSX.Element;
19
19
  //#endregion
20
20
  export { ButtonIcon, ButtonIconProps };
21
21
  //# sourceMappingURL=ButtonIcon.d.ts.map
@@ -14,6 +14,7 @@ import { FormIfFieldProps } from "./controls/FormIfField.js";
14
14
  import * as react_jsx_runtime18 from "react/jsx-runtime";
15
15
  import * as react0 from "react";
16
16
  import { ReactNode } from "react";
17
+ import { FieldErrors } from "react-hook-form";
17
18
  import { ZodEffects, ZodObject, ZodRawShape, z } from "zod";
18
19
 
19
20
  //#region src/components/forms/form/Form.d.ts
@@ -23,6 +24,7 @@ type FormProps = {
23
24
  onSubmit: (formData: object) => void;
24
25
  children: React.ReactNode;
25
26
  className?: string;
27
+ externalErrors?: FieldErrors;
26
28
  };
27
29
  declare const Form: {
28
30
  ({
@@ -31,6 +33,7 @@ declare const Form: {
31
33
  onSubmit,
32
34
  children,
33
35
  className,
36
+ externalErrors,
34
37
  ...props
35
38
  }: FormProps): react_jsx_runtime18.JSX.Element;
36
39
  InputText: {
@@ -1 +1 @@
1
- {"version":3,"file":"Form.d.ts","names":[],"sources":["../../../../src/components/forms/form/Form.tsx"],"sourcesContent":[],"mappings":";;;;;;;;;;;;;;;;;;;KAyBY,SAAA;;UAEF,UAAU,eAAe,WAAW,UAAU;;YAE5C,KAAA,CAAM;;;cAIL;;;;;;;;KAOV,YAAS,mBAAA,CAAA,GAAA,CAAA;;;;OAAA;;;;;;;IAfA,CAAA;MAAA,IAAA;MAAS,OAAA;MAAA,GAAA;IAAA,CAAA,mBAAA,CAAA,iCAAA;IAAA,WAAA,EAAA,MAAA;IAED,KAAA,EAAA;MAAV,QAAA,EAAA,CAAA,OAAA,CAAA,EAAA,MAAA,EAAA,aAAA,aAAA,EAAA,OAAA,EAAA,OAAA,CAAA;IAA8C,CAAA;;eAArB,EAAA;IAEvB,CAAA;MAAA,IAAM;MAAA,OAAA;MAAA,QAAA;MAAA,GAAA;IAAA,CAAA,wBAAA,CAAA,iCAAA;IAAS,WAAA,EAAA,MAAA;IAId,KAmCZ,EAAA;MAAA,QAAA,EAAA,CAAA,OAAA,CAAA,EAAA,MAAA,EAAA,aAAA,YAAA,EAAA,MAAA,CAAA;;;;;;;;;;UA5BW,EAAA;IAAA,CAAA;MAAA,IAAA;MAAA,OAAA;MAAA,GAAA;IAAA,CAAA,mBAAA,CAAA,iCAAA"}
1
+ {"version":3,"file":"Form.d.ts","names":[],"sources":["../../../../src/components/forms/form/Form.tsx"],"sourcesContent":[],"mappings":";;;;;;;;;;;;;;;;;;;;KAyBY,SAAA;;UAEF,UAAU,eAAe,WAAW,UAAU;;YAE5C,KAAA,CAAM;;mBAEC;;cAGN;;;;;;;;;KAQV,YAAS,mBAAA,CAAA,GAAA,CAAA;;;;OAAA;;;;;;EAjBA,QAAA,EAAA;IAAS,CAAA;MAAA,IAAA;MAAA,OAAA;MAAA,GAAA;IAAA,CAAA,mBAAA,CAAA,iCAAA;IAED,WAAA,EAAA,MAAA;IAAV,KAAA,EAAA;MAA8C,QAAA,EAAA,CAAA,OAAA,CAAA,EAAA,MAAA,EAAA,aAAA,aAAA,EAAA,OAAA,EAAA,OAAA,CAAA;IAAV,CAAA;;eAE5B,EAAA;IAEC,CAAA;MAAA,IAAA;MAAA,OAAA;MAAA,QAAA;MAAA,GAAA;IAAA,CAAA,wBAAA,CAAA,iCAAA;IAAW,WAAA,EAAA,MAAA;IAGjB,KA0CZ,EAAA;MAAA,QAAA,EAAA,CAAA,OAAA,CAAA,EAAA,MAAA,EAAA,aAAA,YAAA,EAAA,MAAA,CAAA;;;;;;;;;;UAlCE,EAAA;IAAS,CAAA;MAAA,IAAA;MAAA,OAAA;MAAA,GAAA;IAAA,CAAA,mBAAA,CAAA,iCAAA;IAAA,WAAA,EAAA,MAAA"}
@@ -1,2 +1,2 @@
1
- import{FormCheckbox as e}from"./controls/FormCheckbox.js";import{FormCheckboxGroup as t}from"./controls/FormCheckboxGroup.js";import{FormCombobox as n}from"./controls/FormCombobox.js";import{FormControl as r}from"./controls/FormControl.js";import{FormDatePicker as i}from"./controls/FormDatePicker.js";import{FormIfField as a}from"./controls/FormIfField.js";import{FormInputFile as o}from"./controls/FormInputFile.js";import{FormInputPassword as s}from"./controls/FormInputPassword.js";import{FormInputText as c}from"./controls/FormInputText.js";import{FormRadio as l}from"./controls/FormRadio.js";import{FormRadioGroup as u}from"./controls/FormRadioGroup.js";import{FormSelect as d}from"./controls/FormSelect.js";import{FormTextarea as f}from"./controls/FormTextarea.js";import{jsx as p}from"react/jsx-runtime";import{Children as m,cloneElement as h,isValidElement as g}from"react";import{FormProvider as _,useForm as v}from"react-hook-form";import{ZodEffects as y,z as b}from"zod";import{zodResolver as x}from"@hookform/resolvers/zod";const S=({defaultValues:e,rules:t=b.object({}).refine(()=>{}),onSubmit:n,children:r,className:i,...a})=>{let o=t instanceof y?t._def.schema:t,s=v({shouldFocusError:!0,...t&&Object.keys(o?.shape||{}).length>0?{resolver:x(o)}:{},defaultValues:e}),{register:c,handleSubmit:l,formState:{errors:u}}=s;return p(_,{...s,children:p(`form`,{onSubmit:l(n),className:i??void 0,...a,children:T(r,c,u,o)})})},C=[c,t,e,n,u,l,f,d,i,o,s,a,r],w=(e,t)=>{let n=e?.shape?.[t]||void 0;return n===void 0?!1:!(n.isOptional()||n.isNullable())},T=(e,t,n,r)=>m.map(e,e=>{if(!g(e))return e;let i=e.props;if(C.some(t=>e.type===t)&&i.name){let a={required:w(r,i.name),error:n[i.name]?.message,...i,...t(i.name,{setValueAs:e=>e===``||e===null?void 0:e})};return h(e,a)}return i.children?h(e,i,T(i.children,t,n,r)):e});S.InputText=c,S.Checkbox=e,S.CheckboxGroup=t,S.Combobox=n,S.RadioGroup=u,S.Radio=l,S.Textarea=f,S.Select=d,S.DatePicker=i,S.InputFile=o,S.InputPassword=s,S.IfField=a,S.Control=r;export{S as Form};
1
+ import{FormCheckbox as e}from"./controls/FormCheckbox.js";import{FormCheckboxGroup as t}from"./controls/FormCheckboxGroup.js";import{FormCombobox as n}from"./controls/FormCombobox.js";import{FormControl as r}from"./controls/FormControl.js";import{FormDatePicker as i}from"./controls/FormDatePicker.js";import{FormIfField as a}from"./controls/FormIfField.js";import{FormInputFile as o}from"./controls/FormInputFile.js";import{FormInputPassword as s}from"./controls/FormInputPassword.js";import{FormInputText as c}from"./controls/FormInputText.js";import{FormRadio as l}from"./controls/FormRadio.js";import{FormRadioGroup as u}from"./controls/FormRadioGroup.js";import{FormSelect as d}from"./controls/FormSelect.js";import{FormTextarea as f}from"./controls/FormTextarea.js";import{jsx as p}from"react/jsx-runtime";import{Children as m,cloneElement as h,isValidElement as g}from"react";import{FormProvider as _,useForm as v}from"react-hook-form";import{ZodEffects as y,z as b}from"zod";import{zodResolver as x}from"@hookform/resolvers/zod";const S=({defaultValues:e,rules:t=b.object({}).refine(()=>{}),onSubmit:n,children:r,className:i,externalErrors:a={},...o})=>{let s=t instanceof y?t._def.schema:t,c=v({shouldFocusError:!0,...t&&Object.keys(s?.shape||{}).length>0?{resolver:x(s)}:{},defaultValues:e}),{register:l,handleSubmit:u,formState:{errors:d}}=c;return p(_,{...c,children:p(`form`,{onSubmit:u(n),className:i??void 0,...o,children:T(r,l,d,a,s)})})},C=[c,t,e,n,u,l,f,d,i,o,s,a,r],w=(e,t)=>{let n=e?.shape?.[t]||void 0;return n===void 0?!1:!(n.isOptional()||n.isNullable())},T=(e,t,n,r,i)=>m.map(e,e=>{if(!g(e))return e;let a=e.props;if(C.some(t=>e.type===t)&&a.name){let o=n[a.name]?.message||r[a.name]?.message,s={required:w(i,a.name),error:o,...a,...t(a.name,{setValueAs:e=>e===``||e===null?void 0:e})};return h(e,s)}return a.children?h(e,a,T(a.children,t,n,r,i)):e});S.InputText=c,S.Checkbox=e,S.CheckboxGroup=t,S.Combobox=n,S.RadioGroup=u,S.Radio=l,S.Textarea=f,S.Select=d,S.DatePicker=i,S.InputFile=o,S.InputPassword=s,S.IfField=a,S.Control=r;export{S as Form};
2
2
  //# sourceMappingURL=Form.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Form.js","names":["schema: ZodObject<ZodRawShape>"],"sources":["../../../../src/components/forms/form/Form.tsx"],"sourcesContent":["import { Children, cloneElement, isValidElement, type ReactNode } from 'react';\nimport {\n type FieldErrors,\n FormProvider,\n type UseFormRegister,\n useForm,\n} from 'react-hook-form';\nimport { ZodEffects, type ZodObject, type ZodRawShape, z } from 'zod';\n\nimport { zodResolver } from '@hookform/resolvers/zod';\n\nimport { FormCheckbox } from './controls/FormCheckbox';\nimport { FormCheckboxGroup } from './controls/FormCheckboxGroup';\nimport { FormCombobox } from './controls/FormCombobox';\nimport { FormControl } from './controls/FormControl';\nimport { FormDatePicker } from './controls/FormDatePicker';\nimport { FormIfField } from './controls/FormIfField';\nimport { FormInputFile } from './controls/FormInputFile';\nimport { FormInputPassword } from './controls/FormInputPassword';\nimport { FormInputText } from './controls/FormInputText';\nimport { FormRadio } from './controls/FormRadio';\nimport { FormRadioGroup } from './controls/FormRadioGroup';\nimport { FormSelect } from './controls/FormSelect';\nimport { FormTextarea } from './controls/FormTextarea';\n\nexport type FormProps = {\n defaultValues?: object;\n rules?: ZodObject<ZodRawShape> | ZodEffects<ZodObject<ZodRawShape>>;\n onSubmit: (formData: object) => void;\n children: React.ReactNode;\n className?: string;\n};\n\nexport const Form = ({\n defaultValues,\n rules = z.object({}).refine(() => {}),\n onSubmit,\n children,\n className,\n ...props\n}: FormProps) => {\n const schema: ZodObject<ZodRawShape> =\n rules instanceof ZodEffects ? rules._def.schema : rules;\n\n const form = useForm({\n shouldFocusError: true,\n ...(rules && Object.keys(schema?.shape || {}).length > 0\n ? { resolver: zodResolver(schema) }\n : {}),\n defaultValues,\n });\n const {\n register,\n handleSubmit,\n formState: { errors },\n } = form;\n\n return (\n <FormProvider {...form}>\n <form\n onSubmit={handleSubmit(onSubmit)}\n className={className ?? undefined}\n {...props}\n >\n {renderChildrenRecursively(children, register, errors, schema)}\n </form>\n </FormProvider>\n );\n};\n\nconst controlList = [\n FormInputText,\n FormCheckboxGroup,\n FormCheckbox,\n FormCombobox,\n FormRadioGroup,\n FormRadio,\n FormTextarea,\n FormSelect,\n FormDatePicker,\n FormInputFile,\n FormInputPassword,\n FormIfField,\n FormControl,\n];\n\nconst isRequired = (schema: ZodObject<ZodRawShape>, field: string) => {\n const shape = schema?.shape?.[field] || undefined;\n if (shape === undefined) {\n return false;\n }\n\n return !(shape.isOptional() || shape.isNullable());\n};\n\nconst renderChildrenRecursively = (\n children: React.ReactNode,\n register: UseFormRegister<Record<string, string>>,\n errors: FieldErrors,\n rules: ZodObject<ZodRawShape>,\n): ReactNode => {\n return Children.map(children, (child) => {\n if (!isValidElement(child)) {\n return child;\n }\n\n const props = child.props as {\n name?: string;\n type?: string;\n children?: ReactNode;\n };\n\n if (controlList.some((control) => child.type === control)) {\n if (props.name) {\n const newProps = {\n required: isRequired(rules, props.name),\n error: errors[props.name]?.message,\n ...props,\n ...register(props.name, {\n setValueAs: (value: unknown) => {\n return value === '' || value === null ? undefined : value;\n },\n }),\n };\n return cloneElement(child, newProps);\n }\n }\n\n if (props.children) {\n return cloneElement(\n child,\n props,\n renderChildrenRecursively(props.children, register, errors, rules),\n );\n }\n\n return child;\n });\n};\n\nForm.InputText = FormInputText;\nForm.Checkbox = FormCheckbox;\nForm.CheckboxGroup = FormCheckboxGroup;\nForm.Combobox = FormCombobox;\nForm.RadioGroup = FormRadioGroup;\nForm.Radio = FormRadio;\nForm.Textarea = FormTextarea;\nForm.Select = FormSelect;\nForm.DatePicker = FormDatePicker;\nForm.InputFile = FormInputFile;\nForm.InputPassword = FormInputPassword;\nForm.IfField = FormIfField;\nForm.Control = FormControl;\n"],"mappings":"6gCAiCA,MAAa,GAAQ,CACnB,gBACA,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,WAAa,GAAG,CACrC,WACA,WACA,YACA,GAAG,KACY,CACf,IAAMA,EACJ,aAAiB,EAAa,EAAM,KAAK,OAAS,EAE9C,EAAO,EAAQ,CACnB,iBAAkB,GAClB,GAAI,GAAS,OAAO,KAAK,GAAQ,OAAS,EAAE,CAAC,CAAC,OAAS,EACnD,CAAE,SAAU,EAAY,EAAO,CAAE,CACjC,EAAE,CACN,gBACD,CAAC,CACI,CACJ,WACA,eACA,UAAW,CAAE,WACX,EAEJ,OACE,EAAC,EAAA,CAAa,GAAI,WAChB,EAAC,OAAA,CACC,SAAU,EAAa,EAAS,CAChC,UAAW,GAAa,IAAA,GACxB,GAAI,WAEH,EAA0B,EAAU,EAAU,EAAQ,EAAO,EACzD,EACM,EAIb,EAAc,CAClB,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACD,CAEK,GAAc,EAAgC,IAAkB,CACpE,IAAM,EAAQ,GAAQ,QAAQ,IAAU,IAAA,GAKxC,OAJI,IAAU,IAAA,GACL,GAGF,EAAE,EAAM,YAAY,EAAI,EAAM,YAAY,GAG7C,GACJ,EACA,EACA,EACA,IAEO,EAAS,IAAI,EAAW,GAAU,CACvC,GAAI,CAAC,EAAe,EAAM,CACxB,OAAO,EAGT,IAAM,EAAQ,EAAM,MAMpB,GAAI,EAAY,KAAM,GAAY,EAAM,OAAS,EAAQ,EACnD,EAAM,KAAM,CACd,IAAM,EAAW,CACf,SAAU,EAAW,EAAO,EAAM,KAAK,CACvC,MAAO,EAAO,EAAM,OAAO,QAC3B,GAAG,EACH,GAAG,EAAS,EAAM,KAAM,CACtB,WAAa,GACJ,IAAU,IAAM,IAAU,KAAO,IAAA,GAAY,EAEvD,CAAC,CACH,CACD,OAAO,EAAa,EAAO,EAAS,CAYxC,OARI,EAAM,SACD,EACL,EACA,EACA,EAA0B,EAAM,SAAU,EAAU,EAAQ,EAAM,CACnE,CAGI,GACP,CAGJ,EAAK,UAAY,EACjB,EAAK,SAAW,EAChB,EAAK,cAAgB,EACrB,EAAK,SAAW,EAChB,EAAK,WAAa,EAClB,EAAK,MAAQ,EACb,EAAK,SAAW,EAChB,EAAK,OAAS,EACd,EAAK,WAAa,EAClB,EAAK,UAAY,EACjB,EAAK,cAAgB,EACrB,EAAK,QAAU,EACf,EAAK,QAAU"}
1
+ {"version":3,"file":"Form.js","names":["schema: ZodObject<ZodRawShape>"],"sources":["../../../../src/components/forms/form/Form.tsx"],"sourcesContent":["import { Children, cloneElement, isValidElement, type ReactNode } from 'react';\nimport {\n type FieldErrors,\n FormProvider,\n type UseFormRegister,\n useForm,\n} from 'react-hook-form';\nimport { ZodEffects, type ZodObject, type ZodRawShape, z } from 'zod';\n\nimport { zodResolver } from '@hookform/resolvers/zod';\n\nimport { FormCheckbox } from './controls/FormCheckbox';\nimport { FormCheckboxGroup } from './controls/FormCheckboxGroup';\nimport { FormCombobox } from './controls/FormCombobox';\nimport { FormControl } from './controls/FormControl';\nimport { FormDatePicker } from './controls/FormDatePicker';\nimport { FormIfField } from './controls/FormIfField';\nimport { FormInputFile } from './controls/FormInputFile';\nimport { FormInputPassword } from './controls/FormInputPassword';\nimport { FormInputText } from './controls/FormInputText';\nimport { FormRadio } from './controls/FormRadio';\nimport { FormRadioGroup } from './controls/FormRadioGroup';\nimport { FormSelect } from './controls/FormSelect';\nimport { FormTextarea } from './controls/FormTextarea';\n\nexport type FormProps = {\n defaultValues?: object;\n rules?: ZodObject<ZodRawShape> | ZodEffects<ZodObject<ZodRawShape>>;\n onSubmit: (formData: object) => void;\n children: React.ReactNode;\n className?: string;\n externalErrors?: FieldErrors;\n};\n\nexport const Form = ({\n defaultValues,\n rules = z.object({}).refine(() => {}),\n onSubmit,\n children,\n className,\n externalErrors = {},\n ...props\n}: FormProps) => {\n const schema: ZodObject<ZodRawShape> =\n rules instanceof ZodEffects ? rules._def.schema : rules;\n\n const form = useForm({\n shouldFocusError: true,\n ...(rules && Object.keys(schema?.shape || {}).length > 0\n ? { resolver: zodResolver(schema) }\n : {}),\n defaultValues,\n });\n const {\n register,\n handleSubmit,\n formState: { errors },\n } = form;\n\n return (\n <FormProvider {...form}>\n <form\n onSubmit={handleSubmit(onSubmit)}\n className={className ?? undefined}\n {...props}\n >\n {renderChildrenRecursively(\n children,\n register,\n errors,\n externalErrors,\n schema,\n )}\n </form>\n </FormProvider>\n );\n};\n\nconst controlList = [\n FormInputText,\n FormCheckboxGroup,\n FormCheckbox,\n FormCombobox,\n FormRadioGroup,\n FormRadio,\n FormTextarea,\n FormSelect,\n FormDatePicker,\n FormInputFile,\n FormInputPassword,\n FormIfField,\n FormControl,\n];\n\nconst isRequired = (schema: ZodObject<ZodRawShape>, field: string) => {\n const shape = schema?.shape?.[field] || undefined;\n if (shape === undefined) {\n return false;\n }\n\n return !(shape.isOptional() || shape.isNullable());\n};\n\nconst renderChildrenRecursively = (\n children: React.ReactNode,\n register: UseFormRegister<Record<string, string>>,\n errors: FieldErrors,\n externalErrors: FieldErrors,\n rules: ZodObject<ZodRawShape>,\n): ReactNode => {\n return Children.map(children, (child) => {\n if (!isValidElement(child)) {\n return child;\n }\n\n const props = child.props as {\n name?: string;\n type?: string;\n children?: ReactNode;\n };\n\n if (controlList.some((control) => child.type === control)) {\n if (props.name) {\n const errorMessage =\n errors[props.name]?.message || externalErrors[props.name]?.message;\n const newProps = {\n required: isRequired(rules, props.name),\n error: errorMessage,\n ...props,\n ...register(props.name, {\n setValueAs: (value: unknown) => {\n return value === '' || value === null ? undefined : value;\n },\n }),\n };\n return cloneElement(child, newProps);\n }\n }\n\n if (props.children) {\n return cloneElement(\n child,\n props,\n renderChildrenRecursively(\n props.children,\n register,\n errors,\n externalErrors,\n rules,\n ),\n );\n }\n\n return child;\n });\n};\n\nForm.InputText = FormInputText;\nForm.Checkbox = FormCheckbox;\nForm.CheckboxGroup = FormCheckboxGroup;\nForm.Combobox = FormCombobox;\nForm.RadioGroup = FormRadioGroup;\nForm.Radio = FormRadio;\nForm.Textarea = FormTextarea;\nForm.Select = FormSelect;\nForm.DatePicker = FormDatePicker;\nForm.InputFile = FormInputFile;\nForm.InputPassword = FormInputPassword;\nForm.IfField = FormIfField;\nForm.Control = FormControl;\n"],"mappings":"6gCAkCA,MAAa,GAAQ,CACnB,gBACA,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,WAAa,GAAG,CACrC,WACA,WACA,YACA,iBAAiB,EAAE,CACnB,GAAG,KACY,CACf,IAAMA,EACJ,aAAiB,EAAa,EAAM,KAAK,OAAS,EAE9C,EAAO,EAAQ,CACnB,iBAAkB,GAClB,GAAI,GAAS,OAAO,KAAK,GAAQ,OAAS,EAAE,CAAC,CAAC,OAAS,EACnD,CAAE,SAAU,EAAY,EAAO,CAAE,CACjC,EAAE,CACN,gBACD,CAAC,CACI,CACJ,WACA,eACA,UAAW,CAAE,WACX,EAEJ,OACE,EAAC,EAAA,CAAa,GAAI,WAChB,EAAC,OAAA,CACC,SAAU,EAAa,EAAS,CAChC,UAAW,GAAa,IAAA,GACxB,GAAI,WAEH,EACC,EACA,EACA,EACA,EACA,EACD,EACI,EACM,EAIb,EAAc,CAClB,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACD,CAEK,GAAc,EAAgC,IAAkB,CACpE,IAAM,EAAQ,GAAQ,QAAQ,IAAU,IAAA,GAKxC,OAJI,IAAU,IAAA,GACL,GAGF,EAAE,EAAM,YAAY,EAAI,EAAM,YAAY,GAG7C,GACJ,EACA,EACA,EACA,EACA,IAEO,EAAS,IAAI,EAAW,GAAU,CACvC,GAAI,CAAC,EAAe,EAAM,CACxB,OAAO,EAGT,IAAM,EAAQ,EAAM,MAMpB,GAAI,EAAY,KAAM,GAAY,EAAM,OAAS,EAAQ,EACnD,EAAM,KAAM,CACd,IAAM,EACJ,EAAO,EAAM,OAAO,SAAW,EAAe,EAAM,OAAO,QACvD,EAAW,CACf,SAAU,EAAW,EAAO,EAAM,KAAK,CACvC,MAAO,EACP,GAAG,EACH,GAAG,EAAS,EAAM,KAAM,CACtB,WAAa,GACJ,IAAU,IAAM,IAAU,KAAO,IAAA,GAAY,EAEvD,CAAC,CACH,CACD,OAAO,EAAa,EAAO,EAAS,CAkBxC,OAdI,EAAM,SACD,EACL,EACA,EACA,EACE,EAAM,SACN,EACA,EACA,EACA,EACD,CACF,CAGI,GACP,CAGJ,EAAK,UAAY,EACjB,EAAK,SAAW,EAChB,EAAK,cAAgB,EACrB,EAAK,SAAW,EAChB,EAAK,WAAa,EAClB,EAAK,MAAQ,EACb,EAAK,SAAW,EAChB,EAAK,OAAS,EACd,EAAK,WAAa,EAClB,EAAK,UAAY,EACjB,EAAK,cAAgB,EACrB,EAAK,QAAU,EACf,EAAK,QAAU"}
@@ -1,4 +1,4 @@
1
- import * as react_jsx_runtime4 from "react/jsx-runtime";
1
+ import * as react_jsx_runtime5 from "react/jsx-runtime";
2
2
  import { ReactNode } from "react";
3
3
 
4
4
  //#region src/components/navigation/breadcrumbs/Breadcrumbs.d.ts
@@ -17,7 +17,7 @@ declare const Breadcrumbs: {
17
17
  separator,
18
18
  children,
19
19
  classNames
20
- }: BreadcrumbsProps): react_jsx_runtime4.JSX.Element;
20
+ }: BreadcrumbsProps): react_jsx_runtime5.JSX.Element;
21
21
  Item: {
22
22
  ({
23
23
  children
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mage-ui/components",
3
- "version": "0.0.85",
3
+ "version": "0.0.87",
4
4
  "private": false,
5
5
  "description": "",
6
6
  "keywords": [],
@@ -26,8 +26,8 @@
26
26
  "rimraf": "^6.0.1",
27
27
  "tsdown": "^0.15.6",
28
28
  "typescript": "^5.9.3",
29
- "@mage-ui/preset": "0.0.85",
30
- "@mage-ui/styled-system": "0.0.85"
29
+ "@mage-ui/preset": "0.0.87",
30
+ "@mage-ui/styled-system": "0.0.87"
31
31
  },
32
32
  "peerDependencies": {
33
33
  "@hookform/resolvers": "^5.2.2",