@iziui/react 0.0.86-rc → 0.0.88-rc

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 (68) hide show
  1. package/dist/.types/actions/ButtonIcon/ButtonIcon.d.ts +1 -1
  2. package/dist/.types/actions/ButtonIcon/ButtonIcon.d.ts.map +1 -1
  3. package/dist/.types/display/Icon/Icon.d.ts +2 -0
  4. package/dist/.types/display/Icon/Icon.d.ts.map +1 -1
  5. package/dist/.types/display/Icon/Icon.stories.d.ts.map +1 -1
  6. package/dist/.types/lab/Form/Form.stories.d.ts.map +1 -1
  7. package/dist/.types/lab/Form/useForm.d.ts +1 -1
  8. package/dist/.types/lab/Form/useForm.d.ts.map +1 -1
  9. package/dist/chunks/{Alert-c5rRrf_E.cjs → Alert-Cc5S-AfT.cjs} +2 -2
  10. package/dist/chunks/{Alert-c5rRrf_E.cjs.map → Alert-Cc5S-AfT.cjs.map} +1 -1
  11. package/dist/chunks/{Alert-CxSNWq4w.js → Alert-DJexLc9y.js} +2 -2
  12. package/dist/chunks/{Alert-CxSNWq4w.js.map → Alert-DJexLc9y.js.map} +1 -1
  13. package/dist/chunks/ButtonIcon-B-M87M5L.cjs +2 -0
  14. package/dist/chunks/ButtonIcon-B-M87M5L.cjs.map +1 -0
  15. package/dist/chunks/ButtonIcon-D0YH7wS6.js +2 -0
  16. package/dist/chunks/ButtonIcon-D0YH7wS6.js.map +1 -0
  17. package/dist/chunks/{DrawerContent-CQrCertn.cjs → DrawerContent-CvWZGjje.cjs} +2 -2
  18. package/dist/chunks/{DrawerContent-CQrCertn.cjs.map → DrawerContent-CvWZGjje.cjs.map} +1 -1
  19. package/dist/chunks/{DrawerContent-DuvNqOEG.js → DrawerContent-DswF1783.js} +2 -2
  20. package/dist/chunks/{DrawerContent-DuvNqOEG.js.map → DrawerContent-DswF1783.js.map} +1 -1
  21. package/dist/chunks/Icon-0KfCwKWR.js +2 -0
  22. package/dist/chunks/Icon-0KfCwKWR.js.map +1 -0
  23. package/dist/chunks/Icon-Dv3oduiN.cjs +2 -0
  24. package/dist/chunks/Icon-Dv3oduiN.cjs.map +1 -0
  25. package/dist/chunks/useForm-BNLOy0E6.cjs +2 -0
  26. package/dist/chunks/{useForm-TyKbw7O8.cjs.map → useForm-BNLOy0E6.cjs.map} +1 -1
  27. package/dist/chunks/useForm-iwGfb88g.js +2 -0
  28. package/dist/chunks/{useForm-3oClzOJC.js.map → useForm-iwGfb88g.js.map} +1 -1
  29. package/dist/components/Alert/index.cjs +1 -1
  30. package/dist/components/Alert/index.js +1 -1
  31. package/dist/components/Avatar/index.cjs +1 -1
  32. package/dist/components/Avatar/index.js +1 -1
  33. package/dist/components/ButtonIcon/index.cjs +1 -1
  34. package/dist/components/ButtonIcon/index.js +1 -1
  35. package/dist/components/ColorPicker/index.cjs +1 -1
  36. package/dist/components/ColorPicker/index.js +1 -1
  37. package/dist/components/Drawer/index.cjs +1 -1
  38. package/dist/components/Drawer/index.js +1 -1
  39. package/dist/components/Icon/index.cjs +1 -1
  40. package/dist/components/Icon/index.js +1 -1
  41. package/dist/components/Modal/index.cjs +1 -1
  42. package/dist/components/Modal/index.cjs.map +1 -1
  43. package/dist/components/Modal/index.js +1 -1
  44. package/dist/components/Modal/index.js.map +1 -1
  45. package/dist/components/Select/index.cjs +1 -1
  46. package/dist/components/Select/index.js +1 -1
  47. package/dist/components/Switch/index.cjs +1 -1
  48. package/dist/components/Switch/index.cjs.map +1 -1
  49. package/dist/components/Switch/index.js +1 -1
  50. package/dist/components/Switch/index.js.map +1 -1
  51. package/dist/components/Toast/index.cjs +1 -1
  52. package/dist/components/Toast/index.js +1 -1
  53. package/dist/index.cjs +1 -1
  54. package/dist/index.js +1 -1
  55. package/dist/lab/Form/index.cjs +1 -1
  56. package/dist/lab/Form/index.js +1 -1
  57. package/dist/style.css +4 -4
  58. package/package.json +1 -1
  59. package/dist/chunks/ButtonIcon-Cad6goHv.js +0 -2
  60. package/dist/chunks/ButtonIcon-Cad6goHv.js.map +0 -1
  61. package/dist/chunks/ButtonIcon-QfMInabj.cjs +0 -2
  62. package/dist/chunks/ButtonIcon-QfMInabj.cjs.map +0 -1
  63. package/dist/chunks/Icon-BGZ3K3Nf.js +0 -2
  64. package/dist/chunks/Icon-BGZ3K3Nf.js.map +0 -1
  65. package/dist/chunks/Icon-D5fDXkwG.cjs +0 -2
  66. package/dist/chunks/Icon-D5fDXkwG.cjs.map +0 -1
  67. package/dist/chunks/useForm-3oClzOJC.js +0 -2
  68. package/dist/chunks/useForm-TyKbw7O8.cjs +0 -2
@@ -6,6 +6,6 @@ export interface ButtonIconProps extends PropsWithChildren<ButtonHTMLAttributes<
6
6
  size?: number;
7
7
  children: ReactElement<IconProps>;
8
8
  }
9
- declare const _default: import('react').FC<import('../../theme').Sx<ButtonIconProps>>;
9
+ declare const _default: import('react').FC<import('../../_internal/core/system').Sx<ButtonIconProps>>;
10
10
  export default _default;
11
11
  //# sourceMappingURL=ButtonIcon.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ButtonIcon.d.ts","sourceRoot":"","sources":["../../../../src/actions/ButtonIcon/ButtonIcon.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,oBAAoB,EAAE,KAAK,iBAAiB,EAAE,KAAK,YAAY,EAAE,MAAM,OAAO,CAAC;AAI3G,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAIhD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAKhD,OAAO,0CAA0C,CAAC;AAElD,MAAM,WAAW,eAAgB,SAAQ,iBAAiB,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;IACjG,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC;CACnC;;AAkCD,wBAA2C"}
1
+ {"version":3,"file":"ButtonIcon.d.ts","sourceRoot":"","sources":["../../../../src/actions/ButtonIcon/ButtonIcon.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,oBAAoB,EAAE,KAAK,iBAAiB,EAAE,KAAK,YAAY,EAAE,MAAM,OAAO,CAAC;AAI3G,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAGhD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAIhD,OAAO,0CAA0C,CAAC;AAElD,MAAM,WAAW,eAAgB,SAAQ,iBAAiB,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;IACjG,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC;CACnC;;AA8BD,wBAA2C"}
@@ -1,7 +1,9 @@
1
1
  import { HTMLAttributes } from 'react';
2
+ import { Colors } from '../../_internal/core/theme';
2
3
  export interface IconProps extends HTMLAttributes<HTMLElement> {
3
4
  name: string;
4
5
  size?: number;
6
+ color?: Colors;
5
7
  }
6
8
  declare const _default: import('react').FC<import('../../_internal/core/system').Sx<IconProps>>;
7
9
  export default _default;
@@ -1 +1 @@
1
- {"version":3,"file":"Icon.d.ts","sourceRoot":"","sources":["../../../../src/display/Icon/Icon.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAQvC,OAAO,oCAAoC,CAAC;AAE5C,MAAM,WAAW,SAAU,SAAQ,cAAc,CAAC,WAAW,CAAC;IAC5D,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;;AAeD,wBAAqC"}
1
+ {"version":3,"file":"Icon.d.ts","sourceRoot":"","sources":["../../../../src/display/Icon/Icon.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAKvC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAIhD,OAAO,oCAAoC,CAAC;AAE5C,MAAM,WAAW,SAAU,SAAQ,cAAc,CAAC,WAAW,CAAC;IAC5D,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;;AAgBD,wBAAqC"}
@@ -1 +1 @@
1
- {"version":3,"file":"Icon.stories.d.ts","sourceRoot":"","sources":["../../../../src/display/Icon/Icon.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAOvD,OAAO,IAAI,MAAM,QAAQ,CAAC;AAK1B,eAAO,MAAM,WAAW,EAAE,QAAQ,CAAC,OAAO,IAAI,CAa7C,CAAC;AAEF,eAAO,MAAM,IAAI,EAAE,QAAQ,CAAC,OAAO,IAAI,CAqBtC,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,QAAQ,CAAC,OAAO,IAAI,CAczC,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,QAAQ,CAAC,OAAO,IAAI,CAE5C,CAAC;AAEF,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,IAAI,CAqE3B,CAAC;AAEF,eAAe,IAAI,CAAC"}
1
+ {"version":3,"file":"Icon.stories.d.ts","sourceRoot":"","sources":["../../../../src/display/Icon/Icon.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAOvD,OAAO,IAAI,MAAM,QAAQ,CAAC;AAK1B,eAAO,MAAM,WAAW,EAAE,QAAQ,CAAC,OAAO,IAAI,CAa7C,CAAC;AAEF,eAAO,MAAM,IAAI,EAAE,QAAQ,CAAC,OAAO,IAAI,CAqBtC,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,QAAQ,CAAC,OAAO,IAAI,CAezC,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,QAAQ,CAAC,OAAO,IAAI,CAE5C,CAAC;AAEF,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,IAAI,CAqE3B,CAAC;AAEF,eAAe,IAAI,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"Form.stories.d.ts","sourceRoot":"","sources":["../../../../src/lab/Form/Form.stories.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAOvD,OAAO,IAAI,MAAM,QAAQ,CAAC;AAU1B,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,IAAI,CAe3B,CAAC;AAeF,eAAO,MAAM,QAAQ,EAAE,QAAQ,CAAC,OAAO,IAAI,CAiC1C,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,QAAQ,CAAC,OAAO,IAAI,CA+B1C,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,QAAQ,CAAC,OAAO,IAAI,CAsB7C,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,QAAQ,CAAC,OAAO,IAAI,CAyD5C,CAAC;AAEF,eAAe,IAAI,CAAC"}
1
+ {"version":3,"file":"Form.stories.d.ts","sourceRoot":"","sources":["../../../../src/lab/Form/Form.stories.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AASvD,OAAO,IAAI,MAAM,QAAQ,CAAC;AAU1B,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,IAAI,CAe3B,CAAC;AAeF,eAAO,MAAM,QAAQ,EAAE,QAAQ,CAAC,OAAO,IAAI,CAiC1C,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,QAAQ,CAAC,OAAO,IAAI,CA+B1C,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,QAAQ,CAAC,OAAO,IAAI,CAsB7C,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,QAAQ,CAAC,OAAO,IAAI,CA+D5C,CAAC;AAEF,eAAe,IAAI,CAAC"}
@@ -7,6 +7,6 @@ type UseForm<T extends Record<string, any>> = {
7
7
  handle: Handle<T>;
8
8
  validator?: Validator<T>;
9
9
  };
10
- export default function useForm<T extends Record<any, any>>({ form, handle, validator }: UseForm<T>): FormGroup<T>;
10
+ export default function useForm<T extends Record<any, any>>({ form, handle, validator }: UseForm<T>, deps: readonly unknown[]): FormGroup<T>;
11
11
  export {};
12
12
  //# sourceMappingURL=useForm.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useForm.d.ts","sourceRoot":"","sources":["../../../../src/lab/Form/useForm.ts"],"names":[],"mappings":"AAEA,OAAO,SAAS,MAAM,aAAa,CAAC;AAEpC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGrD,KAAK,OAAO,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI;IAC5C,IAAI,EAAE;SAAG,CAAC,IAAI,MAAM,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KAAE,CAAC;IAC5C,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IAClB,SAAS,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;CAC1B,CAAA;AAcD,MAAM,CAAC,OAAO,UAAU,OAAO,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAC1D,IAAI,EACJ,MAAM,EACN,SAAS,EACV,EAAE,OAAO,CAAC,CAAC,CAAC,gBAuBZ"}
1
+ {"version":3,"file":"useForm.d.ts","sourceRoot":"","sources":["../../../../src/lab/Form/useForm.ts"],"names":[],"mappings":"AAEA,OAAO,SAAS,MAAM,aAAa,CAAC;AAEpC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGrD,KAAK,OAAO,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI;IAC5C,IAAI,EAAE;SAAG,CAAC,IAAI,MAAM,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KAAE,CAAC;IAC5C,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IAClB,SAAS,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;CAC1B,CAAA;AAcD,MAAM,CAAC,OAAO,UAAU,OAAO,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAC1D,IAAI,EACJ,MAAM,EACN,SAAS,EACV,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,OAAO,EAAE,gBA2BtC"}
@@ -1,2 +1,2 @@
1
- "use strict";const e=require("react/jsx-runtime"),d=require("react"),t=require("./index-DYxwT4uW.cjs"),i=require("./joinClass-Jk3EszKD.cjs"),j=require("./useTheme-DhX2tM8O.cjs"),a=require("./Stack-DsVkiTT_.cjs"),$=require("./Typography-C7B3jwUf.cjs"),q=require("./ButtonIcon-QfMInabj.cjs"),y=require("./createComponent-BBXW0GJ6.cjs"),h=require("./Icon-D5fDXkwG.cjs");function g({children:n,icon:s,color:r="primary",onClose:c,...o}){const{theme:{mode:l}}=j.useTheme(),u=i.joinClass(`${t.prefix}-alert`,`${t.prefix}-alert--${l}`,`${t.prefix}-alert--${r}`,o.className),m=i.joinClass(`${t.prefix}-alert__button`,`${t.prefix}-alert__button--${r}`),x=()=>typeof n=="string"?e.jsx($.Typography,{variant:"body1",style:{color:"currentcolor"},children:n}):n,f=p=>d.cloneElement(p,{color:`${r}.dark`});return e.jsxs(a.Stack,{fullWidth:!0,gap:0,flexDirection:"row",alignItems:"center",justifyContent:"center",...o,className:u,children:[e.jsxs(a.Stack,{fullWidth:!0,gap:8,flexDirection:"row",alignItems:"center",className:`${t.prefix}-alert__content`,children:[s&&f(s),x()]}),c&&e.jsx("div",{children:e.jsx(q.ButtonIcon,{className:m,onClick:c,color:r,style:{color:"currentColor"},children:e.jsx(h.Icon,{name:"times"})})})]})}const C=y.createComponent(g);exports.Alert=C;
2
- //# sourceMappingURL=Alert-c5rRrf_E.cjs.map
1
+ "use strict";const e=require("react/jsx-runtime"),d=require("react"),t=require("./index-DYxwT4uW.cjs"),i=require("./joinClass-Jk3EszKD.cjs"),j=require("./useTheme-DhX2tM8O.cjs"),a=require("./Stack-DsVkiTT_.cjs"),$=require("./Typography-C7B3jwUf.cjs"),q=require("./ButtonIcon-B-M87M5L.cjs"),y=require("./createComponent-BBXW0GJ6.cjs"),h=require("./Icon-Dv3oduiN.cjs");function g({children:n,icon:s,color:r="primary",onClose:c,...o}){const{theme:{mode:l}}=j.useTheme(),u=i.joinClass(`${t.prefix}-alert`,`${t.prefix}-alert--${l}`,`${t.prefix}-alert--${r}`,o.className),m=i.joinClass(`${t.prefix}-alert__button`,`${t.prefix}-alert__button--${r}`),x=()=>typeof n=="string"?e.jsx($.Typography,{variant:"body1",style:{color:"currentcolor"},children:n}):n,f=p=>d.cloneElement(p,{color:`${r}.dark`});return e.jsxs(a.Stack,{fullWidth:!0,gap:0,flexDirection:"row",alignItems:"center",justifyContent:"center",...o,className:u,children:[e.jsxs(a.Stack,{fullWidth:!0,gap:8,flexDirection:"row",alignItems:"center",className:`${t.prefix}-alert__content`,children:[s&&f(s),x()]}),c&&e.jsx("div",{children:e.jsx(q.ButtonIcon,{className:m,onClick:c,color:r,style:{color:"currentColor"},children:e.jsx(h.Icon,{name:"times"})})})]})}const C=y.createComponent(g);exports.Alert=C;
2
+ //# sourceMappingURL=Alert-Cc5S-AfT.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Alert-c5rRrf_E.cjs","sources":["../../src/feedback/Alert/Alert.tsx"],"sourcesContent":["import { cloneElement, type HtmlHTMLAttributes } from 'react';\n\nimport { prefix } from '@iziui/tokens/web/js';\n\nimport type { Colors } from '@iziui/core/theme';\nimport { joinClass } from '@iziui/core/utils/joinClass';\n\nimport { useTheme } from '@/theme';\nimport Stack from '@/layout/Stack';\nimport Typography from '@/display/Typography';\nimport ButtonIcon from '@/actions/ButtonIcon';\nimport createComponent from '@/core/createComponent';\nimport Icon, { type IconProps } from '@/display/Icon';\n\nimport '@iziui/styles/components/Alert.scss';\n\nexport interface AlertProps extends HtmlHTMLAttributes<HTMLDivElement> {\n color?: Colors;\n icon?: React.JSX.Element;\n children: React.ReactNode;\n onClose?: () => void;\n}\n\nfunction Alert({\n children,\n icon,\n color = 'primary',\n onClose,\n ...props\n}: AlertProps) {\n const { theme: { mode } } = useTheme();\n\n const className = joinClass(\n `${prefix}-alert`,\n `${prefix}-alert--${mode}`,\n `${prefix}-alert--${color}`,\n props.className\n );\n\n const classNameAction = joinClass(\n `${prefix}-alert__button`,\n `${prefix}-alert__button--${color}`,\n );\n\n const renderMessage = () => {\n if (typeof children === 'string') {\n return (\n <Typography variant=\"body1\" style={{ color: 'currentcolor' }}>\n {children}\n </Typography>\n );\n }\n\n return children;\n };\n\n const renderIcon = (icon: React.JSX.Element) => {\n return cloneElement<IconProps>(icon, {\n color: `${color}.dark`\n });\n };\n\n return (\n <Stack\n fullWidth\n gap={0}\n flexDirection=\"row\"\n alignItems=\"center\"\n justifyContent=\"center\"\n {...props}\n className={className}\n >\n <Stack\n fullWidth\n gap={8}\n flexDirection=\"row\"\n alignItems=\"center\"\n className={`${prefix}-alert__content`}\n >\n {icon && renderIcon(icon)}\n {renderMessage()}\n </Stack>\n {\n onClose && (\n <div>\n <ButtonIcon\n className={classNameAction}\n onClick={onClose}\n color={color}\n style={{ color: 'currentColor' }}\n >\n <Icon name=\"times\" />\n </ButtonIcon>\n </div>)\n }\n </Stack>\n );\n}\n\nexport default createComponent(Alert);"],"names":["Alert","children","icon","color","onClose","props","mode","useTheme","className","joinClass","prefix","classNameAction","renderMessage","jsx","Typography","renderIcon","cloneElement","jsxs","Stack","ButtonIcon","Icon","createComponent"],"mappings":"+WAuBA,SAASA,EAAM,CACb,SAAAC,EACA,KAAAC,EACA,MAAAC,EAAQ,UACR,QAAAC,EACA,GAAGC,CACL,EAAe,CACb,KAAM,CAAE,MAAO,CAAE,KAAAC,CAAA,CAAK,EAAMC,EAAAA,SAAA,EAEtBC,EAAYC,EAAAA,UAChB,GAAGC,EAAAA,MAAM,SACT,GAAGA,EAAAA,MAAM,WAAWJ,CAAI,GACxB,GAAGI,EAAAA,MAAM,WAAWP,CAAK,GACzBE,EAAM,SAAA,EAGFM,EAAkBF,EAAAA,UACtB,GAAGC,EAAAA,MAAM,iBACT,GAAGA,EAAAA,MAAM,mBAAmBP,CAAK,EAAA,EAG7BS,EAAgB,IAChB,OAAOX,GAAa,SAEpBY,MAACC,EAAAA,YAAW,QAAQ,QAAQ,MAAO,CAAE,MAAO,gBACzC,SAAAb,EACH,EAIGA,EAGHc,EAAcb,GACXc,EAAAA,aAAwBd,EAAM,CACnC,MAAO,GAAGC,CAAK,OAAA,CAChB,EAGH,OACEc,EAAAA,KAACC,EAAAA,MAAA,CACC,UAAS,GACT,IAAK,EACL,cAAc,MACd,WAAW,SACX,eAAe,SACd,GAAGb,EACJ,UAAAG,EAEA,SAAA,CAAAS,EAAAA,KAACC,EAAAA,MAAA,CACC,UAAS,GACT,IAAK,EACL,cAAc,MACd,WAAW,SACX,UAAW,GAAGR,EAAAA,MAAM,kBAEnB,SAAA,CAAAR,GAAQa,EAAWb,CAAI,EACvBU,EAAA,CAAc,CAAA,CAAA,EAGfR,SACG,MAAA,CACC,SAAAS,EAAAA,IAACM,EAAAA,WAAA,CACC,UAAWR,EACX,QAASP,EACT,MAAAD,EACA,MAAO,CAAE,MAAO,cAAA,EAEhB,SAAAU,EAAAA,IAACO,EAAAA,KAAA,CAAK,KAAK,OAAA,CAAQ,CAAA,CAAA,CACrB,CACF,CAAA,CAAA,CAAA,CAIV,CAEA,MAAApB,EAAeqB,EAAAA,gBAAgBrB,CAAK"}
1
+ {"version":3,"file":"Alert-Cc5S-AfT.cjs","sources":["../../src/feedback/Alert/Alert.tsx"],"sourcesContent":["import { cloneElement, type HtmlHTMLAttributes } from 'react';\n\nimport { prefix } from '@iziui/tokens/web/js';\n\nimport type { Colors } from '@iziui/core/theme';\nimport { joinClass } from '@iziui/core/utils/joinClass';\n\nimport { useTheme } from '@/theme';\nimport Stack from '@/layout/Stack';\nimport Typography from '@/display/Typography';\nimport ButtonIcon from '@/actions/ButtonIcon';\nimport createComponent from '@/core/createComponent';\nimport Icon, { type IconProps } from '@/display/Icon';\n\nimport '@iziui/styles/components/Alert.scss';\n\nexport interface AlertProps extends HtmlHTMLAttributes<HTMLDivElement> {\n color?: Colors;\n icon?: React.JSX.Element;\n children: React.ReactNode;\n onClose?: () => void;\n}\n\nfunction Alert({\n children,\n icon,\n color = 'primary',\n onClose,\n ...props\n}: AlertProps) {\n const { theme: { mode } } = useTheme();\n\n const className = joinClass(\n `${prefix}-alert`,\n `${prefix}-alert--${mode}`,\n `${prefix}-alert--${color}`,\n props.className\n );\n\n const classNameAction = joinClass(\n `${prefix}-alert__button`,\n `${prefix}-alert__button--${color}`,\n );\n\n const renderMessage = () => {\n if (typeof children === 'string') {\n return (\n <Typography variant=\"body1\" style={{ color: 'currentcolor' }}>\n {children}\n </Typography>\n );\n }\n\n return children;\n };\n\n const renderIcon = (icon: React.JSX.Element) => {\n return cloneElement<IconProps>(icon, {\n color: `${color}.dark`\n });\n };\n\n return (\n <Stack\n fullWidth\n gap={0}\n flexDirection=\"row\"\n alignItems=\"center\"\n justifyContent=\"center\"\n {...props}\n className={className}\n >\n <Stack\n fullWidth\n gap={8}\n flexDirection=\"row\"\n alignItems=\"center\"\n className={`${prefix}-alert__content`}\n >\n {icon && renderIcon(icon)}\n {renderMessage()}\n </Stack>\n {\n onClose && (\n <div>\n <ButtonIcon\n className={classNameAction}\n onClick={onClose}\n color={color}\n style={{ color: 'currentColor' }}\n >\n <Icon name=\"times\" />\n </ButtonIcon>\n </div>)\n }\n </Stack>\n );\n}\n\nexport default createComponent(Alert);"],"names":["Alert","children","icon","color","onClose","props","mode","useTheme","className","joinClass","prefix","classNameAction","renderMessage","jsx","Typography","renderIcon","cloneElement","jsxs","Stack","ButtonIcon","Icon","createComponent"],"mappings":"+WAuBA,SAASA,EAAM,CACb,SAAAC,EACA,KAAAC,EACA,MAAAC,EAAQ,UACR,QAAAC,EACA,GAAGC,CACL,EAAe,CACb,KAAM,CAAE,MAAO,CAAE,KAAAC,CAAA,CAAK,EAAMC,EAAAA,SAAA,EAEtBC,EAAYC,EAAAA,UAChB,GAAGC,EAAAA,MAAM,SACT,GAAGA,EAAAA,MAAM,WAAWJ,CAAI,GACxB,GAAGI,EAAAA,MAAM,WAAWP,CAAK,GACzBE,EAAM,SAAA,EAGFM,EAAkBF,EAAAA,UACtB,GAAGC,EAAAA,MAAM,iBACT,GAAGA,EAAAA,MAAM,mBAAmBP,CAAK,EAAA,EAG7BS,EAAgB,IAChB,OAAOX,GAAa,SAEpBY,MAACC,EAAAA,YAAW,QAAQ,QAAQ,MAAO,CAAE,MAAO,gBACzC,SAAAb,EACH,EAIGA,EAGHc,EAAcb,GACXc,EAAAA,aAAwBd,EAAM,CACnC,MAAO,GAAGC,CAAK,OAAA,CAChB,EAGH,OACEc,EAAAA,KAACC,EAAAA,MAAA,CACC,UAAS,GACT,IAAK,EACL,cAAc,MACd,WAAW,SACX,eAAe,SACd,GAAGb,EACJ,UAAAG,EAEA,SAAA,CAAAS,EAAAA,KAACC,EAAAA,MAAA,CACC,UAAS,GACT,IAAK,EACL,cAAc,MACd,WAAW,SACX,UAAW,GAAGR,EAAAA,MAAM,kBAEnB,SAAA,CAAAR,GAAQa,EAAWb,CAAI,EACvBU,EAAA,CAAc,CAAA,CAAA,EAGfR,SACG,MAAA,CACC,SAAAS,EAAAA,IAACM,EAAAA,WAAA,CACC,UAAWR,EACX,QAASP,EACT,MAAAD,EACA,MAAO,CAAE,MAAO,cAAA,EAEhB,SAAAU,EAAAA,IAACO,EAAAA,KAAA,CAAK,KAAK,OAAA,CAAQ,CAAA,CAAA,CACrB,CACF,CAAA,CAAA,CAAA,CAIV,CAEA,MAAApB,EAAeqB,EAAAA,gBAAgBrB,CAAK"}
@@ -1,2 +1,2 @@
1
- import{jsxs as m,jsx as e}from"react/jsx-runtime";import{cloneElement as y}from"react";import{p as t}from"./index-CZ41y9Hn.js";import{j as c}from"./joinClass-anSpaauN.js";import{u as g}from"./useTheme-g5gOUmLf.js";import{S as i}from"./Stack-D0feJnm7.js";import{T as h}from"./Typography-hazfs4Ye.js";import{B as x}from"./ButtonIcon-Cad6goHv.js";import{c as I}from"./createComponent-DZqrA_Tp.js";import{I as _}from"./Icon-BGZ3K3Nf.js";function j({children:o,icon:n,color:r="primary",onClose:a,...s}){const{theme:{mode:l}}=g(),f=c(`${t}-alert`,`${t}-alert--${l}`,`${t}-alert--${r}`,s.className),p=c(`${t}-alert__button`,`${t}-alert__button--${r}`),u=()=>typeof o=="string"?e(h,{variant:"body1",style:{color:"currentcolor"},children:o}):o,$=d=>y(d,{color:`${r}.dark`});return m(i,{fullWidth:!0,gap:0,flexDirection:"row",alignItems:"center",justifyContent:"center",...s,className:f,children:[m(i,{fullWidth:!0,gap:8,flexDirection:"row",alignItems:"center",className:`${t}-alert__content`,children:[n&&$(n),u()]}),a&&e("div",{children:e(x,{className:p,onClick:a,color:r,style:{color:"currentColor"},children:e(_,{name:"times"})})})]})}const S=I(j);export{S as A};
2
- //# sourceMappingURL=Alert-CxSNWq4w.js.map
1
+ import{jsxs as m,jsx as e}from"react/jsx-runtime";import{cloneElement as y}from"react";import{p as t}from"./index-CZ41y9Hn.js";import{j as c}from"./joinClass-anSpaauN.js";import{u as g}from"./useTheme-g5gOUmLf.js";import{S as i}from"./Stack-D0feJnm7.js";import{T as h}from"./Typography-hazfs4Ye.js";import{B as x}from"./ButtonIcon-D0YH7wS6.js";import{c as I}from"./createComponent-DZqrA_Tp.js";import{I as _}from"./Icon-0KfCwKWR.js";function j({children:o,icon:n,color:r="primary",onClose:a,...s}){const{theme:{mode:l}}=g(),f=c(`${t}-alert`,`${t}-alert--${l}`,`${t}-alert--${r}`,s.className),p=c(`${t}-alert__button`,`${t}-alert__button--${r}`),u=()=>typeof o=="string"?e(h,{variant:"body1",style:{color:"currentcolor"},children:o}):o,$=d=>y(d,{color:`${r}.dark`});return m(i,{fullWidth:!0,gap:0,flexDirection:"row",alignItems:"center",justifyContent:"center",...s,className:f,children:[m(i,{fullWidth:!0,gap:8,flexDirection:"row",alignItems:"center",className:`${t}-alert__content`,children:[n&&$(n),u()]}),a&&e("div",{children:e(x,{className:p,onClick:a,color:r,style:{color:"currentColor"},children:e(_,{name:"times"})})})]})}const S=I(j);export{S as A};
2
+ //# sourceMappingURL=Alert-DJexLc9y.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Alert-CxSNWq4w.js","sources":["../../src/feedback/Alert/Alert.tsx"],"sourcesContent":["import { cloneElement, type HtmlHTMLAttributes } from 'react';\n\nimport { prefix } from '@iziui/tokens/web/js';\n\nimport type { Colors } from '@iziui/core/theme';\nimport { joinClass } from '@iziui/core/utils/joinClass';\n\nimport { useTheme } from '@/theme';\nimport Stack from '@/layout/Stack';\nimport Typography from '@/display/Typography';\nimport ButtonIcon from '@/actions/ButtonIcon';\nimport createComponent from '@/core/createComponent';\nimport Icon, { type IconProps } from '@/display/Icon';\n\nimport '@iziui/styles/components/Alert.scss';\n\nexport interface AlertProps extends HtmlHTMLAttributes<HTMLDivElement> {\n color?: Colors;\n icon?: React.JSX.Element;\n children: React.ReactNode;\n onClose?: () => void;\n}\n\nfunction Alert({\n children,\n icon,\n color = 'primary',\n onClose,\n ...props\n}: AlertProps) {\n const { theme: { mode } } = useTheme();\n\n const className = joinClass(\n `${prefix}-alert`,\n `${prefix}-alert--${mode}`,\n `${prefix}-alert--${color}`,\n props.className\n );\n\n const classNameAction = joinClass(\n `${prefix}-alert__button`,\n `${prefix}-alert__button--${color}`,\n );\n\n const renderMessage = () => {\n if (typeof children === 'string') {\n return (\n <Typography variant=\"body1\" style={{ color: 'currentcolor' }}>\n {children}\n </Typography>\n );\n }\n\n return children;\n };\n\n const renderIcon = (icon: React.JSX.Element) => {\n return cloneElement<IconProps>(icon, {\n color: `${color}.dark`\n });\n };\n\n return (\n <Stack\n fullWidth\n gap={0}\n flexDirection=\"row\"\n alignItems=\"center\"\n justifyContent=\"center\"\n {...props}\n className={className}\n >\n <Stack\n fullWidth\n gap={8}\n flexDirection=\"row\"\n alignItems=\"center\"\n className={`${prefix}-alert__content`}\n >\n {icon && renderIcon(icon)}\n {renderMessage()}\n </Stack>\n {\n onClose && (\n <div>\n <ButtonIcon\n className={classNameAction}\n onClick={onClose}\n color={color}\n style={{ color: 'currentColor' }}\n >\n <Icon name=\"times\" />\n </ButtonIcon>\n </div>)\n }\n </Stack>\n );\n}\n\nexport default createComponent(Alert);"],"names":["Alert","children","icon","color","onClose","props","mode","useTheme","className","joinClass","prefix","classNameAction","renderMessage","jsx","Typography","renderIcon","cloneElement","jsxs","Stack","ButtonIcon","Icon","Alert$1","createComponent"],"mappings":"ibAuBA,SAASA,EAAM,CACb,SAAAC,EACA,KAAAC,EACA,MAAAC,EAAQ,UACR,QAAAC,EACA,GAAGC,CACL,EAAe,CACb,KAAM,CAAE,MAAO,CAAE,KAAAC,CAAA,CAAK,EAAMC,EAAA,EAEtBC,EAAYC,EAChB,GAAGC,CAAM,SACT,GAAGA,CAAM,WAAWJ,CAAI,GACxB,GAAGI,CAAM,WAAWP,CAAK,GACzBE,EAAM,SAAA,EAGFM,EAAkBF,EACtB,GAAGC,CAAM,iBACT,GAAGA,CAAM,mBAAmBP,CAAK,EAAA,EAG7BS,EAAgB,IAChB,OAAOX,GAAa,SAEpBY,EAACC,GAAW,QAAQ,QAAQ,MAAO,CAAE,MAAO,gBACzC,SAAAb,EACH,EAIGA,EAGHc,EAAcb,GACXc,EAAwBd,EAAM,CACnC,MAAO,GAAGC,CAAK,OAAA,CAChB,EAGH,OACEc,EAACC,EAAA,CACC,UAAS,GACT,IAAK,EACL,cAAc,MACd,WAAW,SACX,eAAe,SACd,GAAGb,EACJ,UAAAG,EAEA,SAAA,CAAAS,EAACC,EAAA,CACC,UAAS,GACT,IAAK,EACL,cAAc,MACd,WAAW,SACX,UAAW,GAAGR,CAAM,kBAEnB,SAAA,CAAAR,GAAQa,EAAWb,CAAI,EACvBU,EAAA,CAAc,CAAA,CAAA,EAGfR,KACG,MAAA,CACC,SAAAS,EAACM,EAAA,CACC,UAAWR,EACX,QAASP,EACT,MAAAD,EACA,MAAO,CAAE,MAAO,cAAA,EAEhB,SAAAU,EAACO,EAAA,CAAK,KAAK,OAAA,CAAQ,CAAA,CAAA,CACrB,CACF,CAAA,CAAA,CAAA,CAIV,CAEA,MAAAC,EAAeC,EAAgBtB,CAAK"}
1
+ {"version":3,"file":"Alert-DJexLc9y.js","sources":["../../src/feedback/Alert/Alert.tsx"],"sourcesContent":["import { cloneElement, type HtmlHTMLAttributes } from 'react';\n\nimport { prefix } from '@iziui/tokens/web/js';\n\nimport type { Colors } from '@iziui/core/theme';\nimport { joinClass } from '@iziui/core/utils/joinClass';\n\nimport { useTheme } from '@/theme';\nimport Stack from '@/layout/Stack';\nimport Typography from '@/display/Typography';\nimport ButtonIcon from '@/actions/ButtonIcon';\nimport createComponent from '@/core/createComponent';\nimport Icon, { type IconProps } from '@/display/Icon';\n\nimport '@iziui/styles/components/Alert.scss';\n\nexport interface AlertProps extends HtmlHTMLAttributes<HTMLDivElement> {\n color?: Colors;\n icon?: React.JSX.Element;\n children: React.ReactNode;\n onClose?: () => void;\n}\n\nfunction Alert({\n children,\n icon,\n color = 'primary',\n onClose,\n ...props\n}: AlertProps) {\n const { theme: { mode } } = useTheme();\n\n const className = joinClass(\n `${prefix}-alert`,\n `${prefix}-alert--${mode}`,\n `${prefix}-alert--${color}`,\n props.className\n );\n\n const classNameAction = joinClass(\n `${prefix}-alert__button`,\n `${prefix}-alert__button--${color}`,\n );\n\n const renderMessage = () => {\n if (typeof children === 'string') {\n return (\n <Typography variant=\"body1\" style={{ color: 'currentcolor' }}>\n {children}\n </Typography>\n );\n }\n\n return children;\n };\n\n const renderIcon = (icon: React.JSX.Element) => {\n return cloneElement<IconProps>(icon, {\n color: `${color}.dark`\n });\n };\n\n return (\n <Stack\n fullWidth\n gap={0}\n flexDirection=\"row\"\n alignItems=\"center\"\n justifyContent=\"center\"\n {...props}\n className={className}\n >\n <Stack\n fullWidth\n gap={8}\n flexDirection=\"row\"\n alignItems=\"center\"\n className={`${prefix}-alert__content`}\n >\n {icon && renderIcon(icon)}\n {renderMessage()}\n </Stack>\n {\n onClose && (\n <div>\n <ButtonIcon\n className={classNameAction}\n onClick={onClose}\n color={color}\n style={{ color: 'currentColor' }}\n >\n <Icon name=\"times\" />\n </ButtonIcon>\n </div>)\n }\n </Stack>\n );\n}\n\nexport default createComponent(Alert);"],"names":["Alert","children","icon","color","onClose","props","mode","useTheme","className","joinClass","prefix","classNameAction","renderMessage","jsx","Typography","renderIcon","cloneElement","jsxs","Stack","ButtonIcon","Icon","Alert$1","createComponent"],"mappings":"ibAuBA,SAASA,EAAM,CACb,SAAAC,EACA,KAAAC,EACA,MAAAC,EAAQ,UACR,QAAAC,EACA,GAAGC,CACL,EAAe,CACb,KAAM,CAAE,MAAO,CAAE,KAAAC,CAAA,CAAK,EAAMC,EAAA,EAEtBC,EAAYC,EAChB,GAAGC,CAAM,SACT,GAAGA,CAAM,WAAWJ,CAAI,GACxB,GAAGI,CAAM,WAAWP,CAAK,GACzBE,EAAM,SAAA,EAGFM,EAAkBF,EACtB,GAAGC,CAAM,iBACT,GAAGA,CAAM,mBAAmBP,CAAK,EAAA,EAG7BS,EAAgB,IAChB,OAAOX,GAAa,SAEpBY,EAACC,GAAW,QAAQ,QAAQ,MAAO,CAAE,MAAO,gBACzC,SAAAb,EACH,EAIGA,EAGHc,EAAcb,GACXc,EAAwBd,EAAM,CACnC,MAAO,GAAGC,CAAK,OAAA,CAChB,EAGH,OACEc,EAACC,EAAA,CACC,UAAS,GACT,IAAK,EACL,cAAc,MACd,WAAW,SACX,eAAe,SACd,GAAGb,EACJ,UAAAG,EAEA,SAAA,CAAAS,EAACC,EAAA,CACC,UAAS,GACT,IAAK,EACL,cAAc,MACd,WAAW,SACX,UAAW,GAAGR,CAAM,kBAEnB,SAAA,CAAAR,GAAQa,EAAWb,CAAI,EACvBU,EAAA,CAAc,CAAA,CAAA,EAGfR,KACG,MAAA,CACC,SAAAS,EAACM,EAAA,CACC,UAAWR,EACX,QAASP,EACT,MAAAD,EACA,MAAO,CAAE,MAAO,cAAA,EAEhB,SAAAU,EAACO,EAAA,CAAK,KAAK,OAAA,CAAQ,CAAA,CAAA,CACrB,CACF,CAAA,CAAA,CAAA,CAIV,CAEA,MAAAC,EAAeC,EAAgBtB,CAAK"}
@@ -0,0 +1,2 @@
1
+ "use strict";const r=require("react/jsx-runtime"),m=require("react"),c=require("./index-DYxwT4uW.cjs"),p=require("./joinClass-Jk3EszKD.cjs"),q=require("./Ripple-Dy4i91j1.cjs"),x=require("./createComponent-BBXW0GJ6.cjs");function j({children:i,size:t=40,color:n="primary",...e}){const[o,u]=[t,t],l=p.joinClass(`${c.prefix}-button-icon`,n&&`${c.prefix}-button-icon--${n}`,e.className),a=s=>m.cloneElement(s,{size:o/1.5,...s.props,style:{color:"currentColor"}});return r.jsxs("button",{...e,className:l,style:{...e.style,width:o,height:u},children:[a(i),r.jsx(q.Ripple,{})]})}const C=x.createComponent(j);exports.ButtonIcon=C;
2
+ //# sourceMappingURL=ButtonIcon-B-M87M5L.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ButtonIcon-B-M87M5L.cjs","sources":["../../src/actions/ButtonIcon/ButtonIcon.tsx"],"sourcesContent":["import { cloneElement, type ButtonHTMLAttributes, type PropsWithChildren, type ReactElement } from 'react';\n\nimport { prefix } from '@iziui/tokens/web/js';\n\nimport type { Colors } from '@iziui/core/theme';\nimport { joinClass } from '@iziui/core/utils/joinClass';\n\nimport type { IconProps } from '@/display/Icon';\nimport Ripple from '@/actions/Ripple';\nimport createComponent from '@/core/createComponent';\n\nimport '@iziui/styles/components/ButtonIcon.scss';\n\nexport interface ButtonIconProps extends PropsWithChildren<ButtonHTMLAttributes<HTMLButtonElement>> {\n color?: Colors;\n size?: number;\n children: ReactElement<IconProps>;\n};\nfunction ButtonIcon({ children, size = 40, color = 'primary', ...props }: ButtonIconProps) {\n const [width, height] = [size, size];\n\n const classess = joinClass(\n `${prefix}-button-icon`,\n color && `${prefix}-button-icon--${color}`,\n props.className\n );\n\n const renderIcon = (icon: ReactElement<IconProps>) => {\n return cloneElement(icon, {\n size: width / 1.5,\n ...icon.props,\n style: { color: 'currentColor' }\n });\n };\n\n return (\n <button\n {...props}\n className={classess}\n style={{ ...props.style, width, height }}\n >\n {renderIcon(children)}\n <Ripple />\n </button>\n );\n}\n\nexport default createComponent(ButtonIcon);"],"names":["ButtonIcon","children","size","color","props","width","height","classess","joinClass","prefix","renderIcon","icon","cloneElement","jsxs","Ripple","createComponent"],"mappings":"4NAkBA,SAASA,EAAW,CAAE,SAAAC,EAAU,KAAAC,EAAO,GAAI,MAAAC,EAAQ,UAAW,GAAGC,GAA0B,CACzF,KAAM,CAACC,EAAOC,CAAM,EAAI,CAACJ,EAAMA,CAAI,EAE7BK,EAAWC,EAAAA,UACf,GAAGC,EAAAA,MAAM,eACTN,GAAS,GAAGM,EAAAA,MAAM,iBAAiBN,CAAK,GACxCC,EAAM,SAAA,EAGFM,EAAcC,GACXC,EAAAA,aAAaD,EAAM,CACxB,KAAMN,EAAQ,IACd,GAAGM,EAAK,MACR,MAAO,CAAE,MAAO,cAAA,CAAe,CAChC,EAGH,OACEE,EAAAA,KAAC,SAAA,CACE,GAAGT,EACJ,UAAWG,EACX,MAAO,CAAE,GAAGH,EAAM,MAAO,MAAAC,EAAO,OAAAC,CAAA,EAE/B,SAAA,CAAAI,EAAWT,CAAQ,QACnBa,EAAAA,OAAA,CAAA,CAAO,CAAA,CAAA,CAAA,CAGd,CAEA,MAAAd,EAAee,EAAAA,gBAAgBf,CAAU"}
@@ -0,0 +1,2 @@
1
+ import{jsxs as l,jsx as p}from"react/jsx-runtime";import{cloneElement as u}from"react";import{p as e}from"./index-CZ41y9Hn.js";import{j as f}from"./joinClass-anSpaauN.js";import{R as h}from"./Ripple-Bq9bxg4k.js";import{c as j}from"./createComponent-DZqrA_Tp.js";function x({children:c,size:o=40,color:r="primary",...t}){const[n,m]=[o,o],i=f(`${e}-button-icon`,r&&`${e}-button-icon--${r}`,t.className),a=s=>u(s,{size:n/1.5,...s.props,style:{color:"currentColor"}});return l("button",{...t,className:i,style:{...t.style,width:n,height:m},children:[a(c),p(h,{})]})}const I=j(x);export{I as B};
2
+ //# sourceMappingURL=ButtonIcon-D0YH7wS6.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ButtonIcon-D0YH7wS6.js","sources":["../../src/actions/ButtonIcon/ButtonIcon.tsx"],"sourcesContent":["import { cloneElement, type ButtonHTMLAttributes, type PropsWithChildren, type ReactElement } from 'react';\n\nimport { prefix } from '@iziui/tokens/web/js';\n\nimport type { Colors } from '@iziui/core/theme';\nimport { joinClass } from '@iziui/core/utils/joinClass';\n\nimport type { IconProps } from '@/display/Icon';\nimport Ripple from '@/actions/Ripple';\nimport createComponent from '@/core/createComponent';\n\nimport '@iziui/styles/components/ButtonIcon.scss';\n\nexport interface ButtonIconProps extends PropsWithChildren<ButtonHTMLAttributes<HTMLButtonElement>> {\n color?: Colors;\n size?: number;\n children: ReactElement<IconProps>;\n};\nfunction ButtonIcon({ children, size = 40, color = 'primary', ...props }: ButtonIconProps) {\n const [width, height] = [size, size];\n\n const classess = joinClass(\n `${prefix}-button-icon`,\n color && `${prefix}-button-icon--${color}`,\n props.className\n );\n\n const renderIcon = (icon: ReactElement<IconProps>) => {\n return cloneElement(icon, {\n size: width / 1.5,\n ...icon.props,\n style: { color: 'currentColor' }\n });\n };\n\n return (\n <button\n {...props}\n className={classess}\n style={{ ...props.style, width, height }}\n >\n {renderIcon(children)}\n <Ripple />\n </button>\n );\n}\n\nexport default createComponent(ButtonIcon);"],"names":["ButtonIcon","children","size","color","props","width","height","classess","joinClass","prefix","renderIcon","icon","cloneElement","jsxs","Ripple","ButtonIcon$1","createComponent"],"mappings":"sQAkBA,SAASA,EAAW,CAAE,SAAAC,EAAU,KAAAC,EAAO,GAAI,MAAAC,EAAQ,UAAW,GAAGC,GAA0B,CACzF,KAAM,CAACC,EAAOC,CAAM,EAAI,CAACJ,EAAMA,CAAI,EAE7BK,EAAWC,EACf,GAAGC,CAAM,eACTN,GAAS,GAAGM,CAAM,iBAAiBN,CAAK,GACxCC,EAAM,SAAA,EAGFM,EAAcC,GACXC,EAAaD,EAAM,CACxB,KAAMN,EAAQ,IACd,GAAGM,EAAK,MACR,MAAO,CAAE,MAAO,cAAA,CAAe,CAChC,EAGH,OACEE,EAAC,SAAA,CACE,GAAGT,EACJ,UAAWG,EACX,MAAO,CAAE,GAAGH,EAAM,MAAO,MAAAC,EAAO,OAAAC,CAAA,EAE/B,SAAA,CAAAI,EAAWT,CAAQ,IACnBa,EAAA,CAAA,CAAO,CAAA,CAAA,CAAA,CAGd,CAEA,MAAAC,EAAeC,EAAgBhB,CAAU"}
@@ -1,2 +1,2 @@
1
- "use strict";const u=require("react"),s=require("react/jsx-runtime"),a=require("./index-DYxwT4uW.cjs"),o=require("./joinClass-Jk3EszKD.cjs"),m=require("./Stack-DsVkiTT_.cjs"),d=require("./createComponent-BBXW0GJ6.cjs"),N=require("./ButtonIcon-QfMInabj.cjs"),$=require("./Icon-D5fDXkwG.cjs");function y(t=!1){const[e,r]=u.useState(!1);return u.useEffect(()=>{r(t)},[t]),[e,()=>{r(i=>!i)}]}function b({open:t,header:e,body:r,footer:c,direction:i="right",onClose:_,...w}){const[f,l]=u.useState({visible:!1,animation:"hide"}),C=300,x=o.joinClass(`${a.prefix}-drawer`,w.className),D=o.joinClass(`${a.prefix}-drawer__content`,`${a.prefix}-drawer__content--${i}`,`${a.prefix}-drawer__content--${i}--${f.animation}`),j=o.joinClass(`${a.prefix}-drawer__overlay`,`${a.prefix}-drawer__overlay--${f.animation}`);u.useEffect(()=>{let n;if(t){n=v();return}return n=h(),()=>{clearTimeout(n)}},[t]);const v=()=>(l(n=>({...n,visible:!0})),setTimeout(()=>{l(n=>({...n,animation:"show"})),document.body.style.overflow="hidden"},100)),h=()=>(l(n=>({...n,animation:"hide"})),setTimeout(()=>{l(n=>({...n,visible:!1})),document.body.style.overflow=""},C));return f.visible&&s.jsxs("div",{...w,className:x,children:[s.jsxs(m.Stack,{className:D,children:[e,r,c]}),s.jsx("div",{"data-testid":"drawer-overlay",className:j,onClick:_})]})}const p=d.createComponent(b);function q({children:t,...e}){const r=o.joinClass(`${a.prefix}-drawer__footer`,e.className);return s.jsx("div",{...e,className:r,children:t})}const I=d.createComponent(q);function g({children:t,onClose:e,...r}){const c=o.joinClass(`${a.prefix}-drawer__header`,r.className);return s.jsxs(m.Stack,{flexDirection:"row",alignItems:"center",justifyContent:"space-between",...r,className:c,children:[t,e&&s.jsx(N.ButtonIcon,{onClick:e,color:"grey","aria-label":"Fechar","data-testid":"drawer-close-button",children:s.jsx($.Icon,{name:"times"})})]})}const k=d.createComponent(g);function S({children:t,...e}){const r=o.joinClass(`${a.prefix}-drawer__content__container`,e.className);return s.jsx("div",{...e,className:r,children:t})}const T=d.createComponent(S);exports.DrawerContent_default=T;exports.DrawerFooter_default=I;exports.DrawerHeader_default=k;exports.Drawer_default=p;exports.useDrawer=y;
2
- //# sourceMappingURL=DrawerContent-CQrCertn.cjs.map
1
+ "use strict";const u=require("react"),s=require("react/jsx-runtime"),a=require("./index-DYxwT4uW.cjs"),o=require("./joinClass-Jk3EszKD.cjs"),m=require("./Stack-DsVkiTT_.cjs"),d=require("./createComponent-BBXW0GJ6.cjs"),N=require("./ButtonIcon-B-M87M5L.cjs"),$=require("./Icon-Dv3oduiN.cjs");function y(t=!1){const[e,r]=u.useState(!1);return u.useEffect(()=>{r(t)},[t]),[e,()=>{r(i=>!i)}]}function b({open:t,header:e,body:r,footer:c,direction:i="right",onClose:_,...w}){const[f,l]=u.useState({visible:!1,animation:"hide"}),C=300,x=o.joinClass(`${a.prefix}-drawer`,w.className),D=o.joinClass(`${a.prefix}-drawer__content`,`${a.prefix}-drawer__content--${i}`,`${a.prefix}-drawer__content--${i}--${f.animation}`),j=o.joinClass(`${a.prefix}-drawer__overlay`,`${a.prefix}-drawer__overlay--${f.animation}`);u.useEffect(()=>{let n;if(t){n=v();return}return n=h(),()=>{clearTimeout(n)}},[t]);const v=()=>(l(n=>({...n,visible:!0})),setTimeout(()=>{l(n=>({...n,animation:"show"})),document.body.style.overflow="hidden"},100)),h=()=>(l(n=>({...n,animation:"hide"})),setTimeout(()=>{l(n=>({...n,visible:!1})),document.body.style.overflow=""},C));return f.visible&&s.jsxs("div",{...w,className:x,children:[s.jsxs(m.Stack,{className:D,children:[e,r,c]}),s.jsx("div",{"data-testid":"drawer-overlay",className:j,onClick:_})]})}const p=d.createComponent(b);function q({children:t,...e}){const r=o.joinClass(`${a.prefix}-drawer__footer`,e.className);return s.jsx("div",{...e,className:r,children:t})}const I=d.createComponent(q);function g({children:t,onClose:e,...r}){const c=o.joinClass(`${a.prefix}-drawer__header`,r.className);return s.jsxs(m.Stack,{flexDirection:"row",alignItems:"center",justifyContent:"space-between",...r,className:c,children:[t,e&&s.jsx(N.ButtonIcon,{onClick:e,color:"grey","aria-label":"Fechar","data-testid":"drawer-close-button",children:s.jsx($.Icon,{name:"times"})})]})}const k=d.createComponent(g);function S({children:t,...e}){const r=o.joinClass(`${a.prefix}-drawer__content__container`,e.className);return s.jsx("div",{...e,className:r,children:t})}const T=d.createComponent(S);exports.DrawerContent_default=T;exports.DrawerFooter_default=I;exports.DrawerHeader_default=k;exports.Drawer_default=p;exports.useDrawer=y;
2
+ //# sourceMappingURL=DrawerContent-CvWZGjje.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"DrawerContent-CQrCertn.cjs","sources":["../../src/navigation/Drawer/useDrawer.ts","../../src/navigation/Drawer/Drawer.tsx","../../src/navigation/Drawer/DrawerFooter.tsx","../../src/navigation/Drawer/DrawerHeader.tsx","../../src/navigation/Drawer/DrawerContent.tsx"],"sourcesContent":["import { useEffect, useState } from 'react';\n\ntype UseDrawer = [boolean, () => void]\n\nexport default function useDrawer(open = false): UseDrawer {\n const [_open, setOpen] = useState(false);\n\n useEffect(() => { setOpen(open); }, [open]);\n\n const toogleDrawer = () => { setOpen(prev => !prev); };\n\n return [_open, toogleDrawer];\n}","import { useEffect, useState, type HTMLAttributes } from 'react';\n\nimport { prefix } from '@iziui/tokens/web/js';\n\nimport { joinClass } from '@iziui/core/utils';\n\nimport Stack from '@/layout/Stack';\n\nimport createComponent from '../../core/createComponent';\n\nimport '@iziui/styles/components/Drawer.scss';\n\ntype Direction = 'right' | 'left' | 'bottom';\ntype AnimationClass = 'show' | 'hide';\ntype Config = { animation: AnimationClass; visible: boolean };\n\nexport interface DrawerProps extends HTMLAttributes<HTMLDivElement> {\n open: boolean;\n direction?: Direction;\n body: React.JSX.Element;\n header?: React.JSX.Element;\n footer?: React.JSX.Element;\n onClose: () => void;\n};\n\nfunction Drawer({\n open,\n header,\n body,\n footer,\n direction = 'right',\n onClose,\n ...props\n}: DrawerProps) {\n const [config, setConfig] = useState<Config>({ visible: false, animation: 'hide' });\n\n const ANIMATION_DURATION = 300;\n\n const cls = joinClass(\n `${prefix}-drawer`,\n props.className\n );\n\n const contentCls = joinClass(\n `${prefix}-drawer__content`,\n `${prefix}-drawer__content--${direction}`,\n `${prefix}-drawer__content--${direction}--${config.animation}`,\n );\n\n const overlayCls = joinClass(\n `${prefix}-drawer__overlay`,\n `${prefix}-drawer__overlay--${config.animation}`,\n );\n\n useEffect(() => {\n let timer: NodeJS.Timeout;\n\n if (open) {\n timer = handleOpen();\n return;\n }\n\n timer = handleClose();\n\n return () => {\n clearTimeout(timer);\n };\n }, [open]);\n\n const handleOpen = () => {\n setConfig(prev => ({ ...prev, visible: true }));\n\n return setTimeout(() => {\n setConfig(prev => ({ ...prev, animation: 'show' }));\n document.body.style.overflow = 'hidden';\n }, 100);\n };\n\n const handleClose = () => {\n setConfig(prev => ({ ...prev, animation: 'hide' }));\n\n return setTimeout(() => {\n setConfig(prev => ({ ...prev, visible: false }));\n document.body.style.overflow = '';\n }, ANIMATION_DURATION);\n };\n\n return (\n config.visible && (\n <div {...props} className={cls}>\n <Stack className={contentCls}>\n {header}\n {body}\n {footer}\n </Stack>\n <div\n data-testid=\"drawer-overlay\"\n className={overlayCls}\n onClick={onClose}\n />\n </div>\n )\n );\n}\n\nexport default createComponent(Drawer);\n","import { HtmlHTMLAttributes, PropsWithChildren } from 'react';\n\nimport { prefix } from '@iziui/tokens/web/js';\n\nimport { joinClass } from '@iziui/core/utils/joinClass';\n\nimport createComponent from '../../core/createComponent';\n\ntype DrawerFooterProps = PropsWithChildren<HtmlHTMLAttributes<HTMLDivElement>>\n\nfunction DrawerFooter({ children, ...props }: DrawerFooterProps) {\n const cls = joinClass(\n `${prefix}-drawer__footer`,\n props.className\n );\n\n return (\n <div {...props} className={cls}>\n {children}\n </div>\n );\n}\n\nexport default createComponent(DrawerFooter);\n","import { HtmlHTMLAttributes } from 'react';\n\nimport { prefix } from '@iziui/tokens/web/js';\n\nimport { joinClass } from '@iziui/core/utils/joinClass';\n\nimport Stack from '@/layout/Stack';\nimport ButtonIcon from '@/actions/ButtonIcon';\nimport Icon from '@/display/Icon';\n\nimport createComponent from '../../core/createComponent';\n\ninterface DrawerHeaderProps extends HtmlHTMLAttributes<HTMLDivElement> {\n onClose: () => void;\n}\n\nfunction DrawerHeader({ children, onClose, ...props }: DrawerHeaderProps) {\n const cls = joinClass(\n `${prefix}-drawer__header`,\n props.className\n );\n\n return (\n <Stack\n flexDirection=\"row\"\n alignItems=\"center\"\n justifyContent=\"space-between\"\n {...props}\n className={cls}\n >\n {children}\n {\n onClose && (\n <ButtonIcon\n onClick={onClose}\n color=\"grey\"\n aria-label=\"Fechar\"\n data-testid=\"drawer-close-button\"\n >\n <Icon name=\"times\" />\n </ButtonIcon>\n )\n }\n </Stack>\n );\n}\n\nexport default createComponent(DrawerHeader);","import { HtmlHTMLAttributes, PropsWithChildren } from 'react';\n\nimport { prefix } from '@iziui/tokens/web/js';\n\nimport { joinClass } from '@iziui/core/utils/joinClass';\n\nimport createComponent from '../../core/createComponent';\n\ntype DrawerContentProps = PropsWithChildren<HtmlHTMLAttributes<HTMLDivElement>>\n\nfunction DrawerContent({ children, ...props }: DrawerContentProps) {\n const cls = joinClass(\n `${prefix}-drawer__content__container`,\n props.className\n );\n\n return (\n <div {...props} className={cls}>\n {children}\n </div>\n );\n}\n\nexport default createComponent(DrawerContent);"],"names":["useDrawer","open","_open","setOpen","useState","useEffect","prev","Drawer","header","body","footer","direction","onClose","props","config","setConfig","ANIMATION_DURATION","cls","joinClass","prefix","contentCls","overlayCls","timer","handleOpen","handleClose","jsxs","Stack","jsx","Drawer_default","createComponent","DrawerFooter","children","DrawerFooter_default","DrawerHeader","ButtonIcon","Icon","DrawerHeader_default","DrawerContent","DrawerContent_default"],"mappings":"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"}
1
+ {"version":3,"file":"DrawerContent-CvWZGjje.cjs","sources":["../../src/navigation/Drawer/useDrawer.ts","../../src/navigation/Drawer/Drawer.tsx","../../src/navigation/Drawer/DrawerFooter.tsx","../../src/navigation/Drawer/DrawerHeader.tsx","../../src/navigation/Drawer/DrawerContent.tsx"],"sourcesContent":["import { useEffect, useState } from 'react';\n\ntype UseDrawer = [boolean, () => void]\n\nexport default function useDrawer(open = false): UseDrawer {\n const [_open, setOpen] = useState(false);\n\n useEffect(() => { setOpen(open); }, [open]);\n\n const toogleDrawer = () => { setOpen(prev => !prev); };\n\n return [_open, toogleDrawer];\n}","import { useEffect, useState, type HTMLAttributes } from 'react';\n\nimport { prefix } from '@iziui/tokens/web/js';\n\nimport { joinClass } from '@iziui/core/utils';\n\nimport Stack from '@/layout/Stack';\n\nimport createComponent from '../../core/createComponent';\n\nimport '@iziui/styles/components/Drawer.scss';\n\ntype Direction = 'right' | 'left' | 'bottom';\ntype AnimationClass = 'show' | 'hide';\ntype Config = { animation: AnimationClass; visible: boolean };\n\nexport interface DrawerProps extends HTMLAttributes<HTMLDivElement> {\n open: boolean;\n direction?: Direction;\n body: React.JSX.Element;\n header?: React.JSX.Element;\n footer?: React.JSX.Element;\n onClose: () => void;\n};\n\nfunction Drawer({\n open,\n header,\n body,\n footer,\n direction = 'right',\n onClose,\n ...props\n}: DrawerProps) {\n const [config, setConfig] = useState<Config>({ visible: false, animation: 'hide' });\n\n const ANIMATION_DURATION = 300;\n\n const cls = joinClass(\n `${prefix}-drawer`,\n props.className\n );\n\n const contentCls = joinClass(\n `${prefix}-drawer__content`,\n `${prefix}-drawer__content--${direction}`,\n `${prefix}-drawer__content--${direction}--${config.animation}`,\n );\n\n const overlayCls = joinClass(\n `${prefix}-drawer__overlay`,\n `${prefix}-drawer__overlay--${config.animation}`,\n );\n\n useEffect(() => {\n let timer: NodeJS.Timeout;\n\n if (open) {\n timer = handleOpen();\n return;\n }\n\n timer = handleClose();\n\n return () => {\n clearTimeout(timer);\n };\n }, [open]);\n\n const handleOpen = () => {\n setConfig(prev => ({ ...prev, visible: true }));\n\n return setTimeout(() => {\n setConfig(prev => ({ ...prev, animation: 'show' }));\n document.body.style.overflow = 'hidden';\n }, 100);\n };\n\n const handleClose = () => {\n setConfig(prev => ({ ...prev, animation: 'hide' }));\n\n return setTimeout(() => {\n setConfig(prev => ({ ...prev, visible: false }));\n document.body.style.overflow = '';\n }, ANIMATION_DURATION);\n };\n\n return (\n config.visible && (\n <div {...props} className={cls}>\n <Stack className={contentCls}>\n {header}\n {body}\n {footer}\n </Stack>\n <div\n data-testid=\"drawer-overlay\"\n className={overlayCls}\n onClick={onClose}\n />\n </div>\n )\n );\n}\n\nexport default createComponent(Drawer);\n","import { HtmlHTMLAttributes, PropsWithChildren } from 'react';\n\nimport { prefix } from '@iziui/tokens/web/js';\n\nimport { joinClass } from '@iziui/core/utils/joinClass';\n\nimport createComponent from '../../core/createComponent';\n\ntype DrawerFooterProps = PropsWithChildren<HtmlHTMLAttributes<HTMLDivElement>>\n\nfunction DrawerFooter({ children, ...props }: DrawerFooterProps) {\n const cls = joinClass(\n `${prefix}-drawer__footer`,\n props.className\n );\n\n return (\n <div {...props} className={cls}>\n {children}\n </div>\n );\n}\n\nexport default createComponent(DrawerFooter);\n","import { HtmlHTMLAttributes } from 'react';\n\nimport { prefix } from '@iziui/tokens/web/js';\n\nimport { joinClass } from '@iziui/core/utils/joinClass';\n\nimport Stack from '@/layout/Stack';\nimport ButtonIcon from '@/actions/ButtonIcon';\nimport Icon from '@/display/Icon';\n\nimport createComponent from '../../core/createComponent';\n\ninterface DrawerHeaderProps extends HtmlHTMLAttributes<HTMLDivElement> {\n onClose: () => void;\n}\n\nfunction DrawerHeader({ children, onClose, ...props }: DrawerHeaderProps) {\n const cls = joinClass(\n `${prefix}-drawer__header`,\n props.className\n );\n\n return (\n <Stack\n flexDirection=\"row\"\n alignItems=\"center\"\n justifyContent=\"space-between\"\n {...props}\n className={cls}\n >\n {children}\n {\n onClose && (\n <ButtonIcon\n onClick={onClose}\n color=\"grey\"\n aria-label=\"Fechar\"\n data-testid=\"drawer-close-button\"\n >\n <Icon name=\"times\" />\n </ButtonIcon>\n )\n }\n </Stack>\n );\n}\n\nexport default createComponent(DrawerHeader);","import { HtmlHTMLAttributes, PropsWithChildren } from 'react';\n\nimport { prefix } from '@iziui/tokens/web/js';\n\nimport { joinClass } from '@iziui/core/utils/joinClass';\n\nimport createComponent from '../../core/createComponent';\n\ntype DrawerContentProps = PropsWithChildren<HtmlHTMLAttributes<HTMLDivElement>>\n\nfunction DrawerContent({ children, ...props }: DrawerContentProps) {\n const cls = joinClass(\n `${prefix}-drawer__content__container`,\n props.className\n );\n\n return (\n <div {...props} className={cls}>\n {children}\n </div>\n );\n}\n\nexport default createComponent(DrawerContent);"],"names":["useDrawer","open","_open","setOpen","useState","useEffect","prev","Drawer","header","body","footer","direction","onClose","props","config","setConfig","ANIMATION_DURATION","cls","joinClass","prefix","contentCls","overlayCls","timer","handleOpen","handleClose","jsxs","Stack","jsx","Drawer_default","createComponent","DrawerFooter","children","DrawerFooter_default","DrawerHeader","ButtonIcon","Icon","DrawerHeader_default","DrawerContent","DrawerContent_default"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{useState as w,useEffect as _}from"react";import{jsxs as f,jsx as s}from"react/jsx-runtime";import{p as n}from"./index-CZ41y9Hn.js";import{j as o}from"./joinClass-anSpaauN.js";import{S as v}from"./Stack-D0feJnm7.js";import{c as m}from"./createComponent-DZqrA_Tp.js";import{B as g}from"./ButtonIcon-Cad6goHv.js";import{I}from"./Icon-BGZ3K3Nf.js";function M(t=!1){const[e,r]=w(!1);return _(()=>{r(t)},[t]),[e,()=>{r(i=>!i)}]}function p({open:t,header:e,body:r,footer:c,direction:i="right",onClose:D,...u}){const[d,l]=w({visible:!1,animation:"hide"}),h=300,N=o(`${n}-drawer`,u.className),$=o(`${n}-drawer__content`,`${n}-drawer__content--${i}`,`${n}-drawer__content--${i}--${d.animation}`),b=o(`${n}-drawer__overlay`,`${n}-drawer__overlay--${d.animation}`);_(()=>{let a;if(t){a=y();return}return a=C(),()=>{clearTimeout(a)}},[t]);const y=()=>(l(a=>({...a,visible:!0})),setTimeout(()=>{l(a=>({...a,animation:"show"})),document.body.style.overflow="hidden"},100)),C=()=>(l(a=>({...a,animation:"hide"})),setTimeout(()=>{l(a=>({...a,visible:!1})),document.body.style.overflow=""},h));return d.visible&&f("div",{...u,className:N,children:[f(v,{className:$,children:[e,r,c]}),s("div",{"data-testid":"drawer-overlay",className:b,onClick:D})]})}const R=m(p);function j({children:t,...e}){const r=o(`${n}-drawer__footer`,e.className);return s("div",{...e,className:r,children:t})}const U=m(j);function x({children:t,onClose:e,...r}){const c=o(`${n}-drawer__header`,r.className);return f(v,{flexDirection:"row",alignItems:"center",justifyContent:"space-between",...r,className:c,children:[t,e&&s(g,{onClick:e,color:"grey","aria-label":"Fechar","data-testid":"drawer-close-button",children:s(I,{name:"times"})})]})}const q=m(x);function T({children:t,...e}){const r=o(`${n}-drawer__content__container`,e.className);return s("div",{...e,className:r,children:t})}const z=m(T);export{R as D,z as a,U as b,q as c,M as u};
2
- //# sourceMappingURL=DrawerContent-DuvNqOEG.js.map
1
+ import{useState as w,useEffect as _}from"react";import{jsxs as f,jsx as s}from"react/jsx-runtime";import{p as n}from"./index-CZ41y9Hn.js";import{j as o}from"./joinClass-anSpaauN.js";import{S as v}from"./Stack-D0feJnm7.js";import{c as m}from"./createComponent-DZqrA_Tp.js";import{B as g}from"./ButtonIcon-D0YH7wS6.js";import{I}from"./Icon-0KfCwKWR.js";function M(t=!1){const[e,r]=w(!1);return _(()=>{r(t)},[t]),[e,()=>{r(i=>!i)}]}function p({open:t,header:e,body:r,footer:c,direction:i="right",onClose:D,...u}){const[d,l]=w({visible:!1,animation:"hide"}),h=300,N=o(`${n}-drawer`,u.className),$=o(`${n}-drawer__content`,`${n}-drawer__content--${i}`,`${n}-drawer__content--${i}--${d.animation}`),b=o(`${n}-drawer__overlay`,`${n}-drawer__overlay--${d.animation}`);_(()=>{let a;if(t){a=y();return}return a=C(),()=>{clearTimeout(a)}},[t]);const y=()=>(l(a=>({...a,visible:!0})),setTimeout(()=>{l(a=>({...a,animation:"show"})),document.body.style.overflow="hidden"},100)),C=()=>(l(a=>({...a,animation:"hide"})),setTimeout(()=>{l(a=>({...a,visible:!1})),document.body.style.overflow=""},h));return d.visible&&f("div",{...u,className:N,children:[f(v,{className:$,children:[e,r,c]}),s("div",{"data-testid":"drawer-overlay",className:b,onClick:D})]})}const R=m(p);function j({children:t,...e}){const r=o(`${n}-drawer__footer`,e.className);return s("div",{...e,className:r,children:t})}const U=m(j);function x({children:t,onClose:e,...r}){const c=o(`${n}-drawer__header`,r.className);return f(v,{flexDirection:"row",alignItems:"center",justifyContent:"space-between",...r,className:c,children:[t,e&&s(g,{onClick:e,color:"grey","aria-label":"Fechar","data-testid":"drawer-close-button",children:s(I,{name:"times"})})]})}const q=m(x);function T({children:t,...e}){const r=o(`${n}-drawer__content__container`,e.className);return s("div",{...e,className:r,children:t})}const z=m(T);export{R as D,z as a,U as b,q as c,M as u};
2
+ //# sourceMappingURL=DrawerContent-DswF1783.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DrawerContent-DuvNqOEG.js","sources":["../../src/navigation/Drawer/useDrawer.ts","../../src/navigation/Drawer/Drawer.tsx","../../src/navigation/Drawer/DrawerFooter.tsx","../../src/navigation/Drawer/DrawerHeader.tsx","../../src/navigation/Drawer/DrawerContent.tsx"],"sourcesContent":["import { useEffect, useState } from 'react';\n\ntype UseDrawer = [boolean, () => void]\n\nexport default function useDrawer(open = false): UseDrawer {\n const [_open, setOpen] = useState(false);\n\n useEffect(() => { setOpen(open); }, [open]);\n\n const toogleDrawer = () => { setOpen(prev => !prev); };\n\n return [_open, toogleDrawer];\n}","import { useEffect, useState, type HTMLAttributes } from 'react';\n\nimport { prefix } from '@iziui/tokens/web/js';\n\nimport { joinClass } from '@iziui/core/utils';\n\nimport Stack from '@/layout/Stack';\n\nimport createComponent from '../../core/createComponent';\n\nimport '@iziui/styles/components/Drawer.scss';\n\ntype Direction = 'right' | 'left' | 'bottom';\ntype AnimationClass = 'show' | 'hide';\ntype Config = { animation: AnimationClass; visible: boolean };\n\nexport interface DrawerProps extends HTMLAttributes<HTMLDivElement> {\n open: boolean;\n direction?: Direction;\n body: React.JSX.Element;\n header?: React.JSX.Element;\n footer?: React.JSX.Element;\n onClose: () => void;\n};\n\nfunction Drawer({\n open,\n header,\n body,\n footer,\n direction = 'right',\n onClose,\n ...props\n}: DrawerProps) {\n const [config, setConfig] = useState<Config>({ visible: false, animation: 'hide' });\n\n const ANIMATION_DURATION = 300;\n\n const cls = joinClass(\n `${prefix}-drawer`,\n props.className\n );\n\n const contentCls = joinClass(\n `${prefix}-drawer__content`,\n `${prefix}-drawer__content--${direction}`,\n `${prefix}-drawer__content--${direction}--${config.animation}`,\n );\n\n const overlayCls = joinClass(\n `${prefix}-drawer__overlay`,\n `${prefix}-drawer__overlay--${config.animation}`,\n );\n\n useEffect(() => {\n let timer: NodeJS.Timeout;\n\n if (open) {\n timer = handleOpen();\n return;\n }\n\n timer = handleClose();\n\n return () => {\n clearTimeout(timer);\n };\n }, [open]);\n\n const handleOpen = () => {\n setConfig(prev => ({ ...prev, visible: true }));\n\n return setTimeout(() => {\n setConfig(prev => ({ ...prev, animation: 'show' }));\n document.body.style.overflow = 'hidden';\n }, 100);\n };\n\n const handleClose = () => {\n setConfig(prev => ({ ...prev, animation: 'hide' }));\n\n return setTimeout(() => {\n setConfig(prev => ({ ...prev, visible: false }));\n document.body.style.overflow = '';\n }, ANIMATION_DURATION);\n };\n\n return (\n config.visible && (\n <div {...props} className={cls}>\n <Stack className={contentCls}>\n {header}\n {body}\n {footer}\n </Stack>\n <div\n data-testid=\"drawer-overlay\"\n className={overlayCls}\n onClick={onClose}\n />\n </div>\n )\n );\n}\n\nexport default createComponent(Drawer);\n","import { HtmlHTMLAttributes, PropsWithChildren } from 'react';\n\nimport { prefix } from '@iziui/tokens/web/js';\n\nimport { joinClass } from '@iziui/core/utils/joinClass';\n\nimport createComponent from '../../core/createComponent';\n\ntype DrawerFooterProps = PropsWithChildren<HtmlHTMLAttributes<HTMLDivElement>>\n\nfunction DrawerFooter({ children, ...props }: DrawerFooterProps) {\n const cls = joinClass(\n `${prefix}-drawer__footer`,\n props.className\n );\n\n return (\n <div {...props} className={cls}>\n {children}\n </div>\n );\n}\n\nexport default createComponent(DrawerFooter);\n","import { HtmlHTMLAttributes } from 'react';\n\nimport { prefix } from '@iziui/tokens/web/js';\n\nimport { joinClass } from '@iziui/core/utils/joinClass';\n\nimport Stack from '@/layout/Stack';\nimport ButtonIcon from '@/actions/ButtonIcon';\nimport Icon from '@/display/Icon';\n\nimport createComponent from '../../core/createComponent';\n\ninterface DrawerHeaderProps extends HtmlHTMLAttributes<HTMLDivElement> {\n onClose: () => void;\n}\n\nfunction DrawerHeader({ children, onClose, ...props }: DrawerHeaderProps) {\n const cls = joinClass(\n `${prefix}-drawer__header`,\n props.className\n );\n\n return (\n <Stack\n flexDirection=\"row\"\n alignItems=\"center\"\n justifyContent=\"space-between\"\n {...props}\n className={cls}\n >\n {children}\n {\n onClose && (\n <ButtonIcon\n onClick={onClose}\n color=\"grey\"\n aria-label=\"Fechar\"\n data-testid=\"drawer-close-button\"\n >\n <Icon name=\"times\" />\n </ButtonIcon>\n )\n }\n </Stack>\n );\n}\n\nexport default createComponent(DrawerHeader);","import { HtmlHTMLAttributes, PropsWithChildren } from 'react';\n\nimport { prefix } from '@iziui/tokens/web/js';\n\nimport { joinClass } from '@iziui/core/utils/joinClass';\n\nimport createComponent from '../../core/createComponent';\n\ntype DrawerContentProps = PropsWithChildren<HtmlHTMLAttributes<HTMLDivElement>>\n\nfunction DrawerContent({ children, ...props }: DrawerContentProps) {\n const cls = joinClass(\n `${prefix}-drawer__content__container`,\n props.className\n );\n\n return (\n <div {...props} className={cls}>\n {children}\n </div>\n );\n}\n\nexport default createComponent(DrawerContent);"],"names":["useDrawer","open","_open","setOpen","useState","useEffect","prev","Drawer","header","body","footer","direction","onClose","props","config","setConfig","ANIMATION_DURATION","cls","joinClass","prefix","contentCls","overlayCls","timer","handleOpen","handleClose","jsxs","Stack","jsx","Drawer_default","createComponent","DrawerFooter","children","DrawerFooter_default","DrawerHeader","ButtonIcon","Icon","DrawerHeader_default","DrawerContent","DrawerContent_default"],"mappings":"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"}
1
+ {"version":3,"file":"DrawerContent-DswF1783.js","sources":["../../src/navigation/Drawer/useDrawer.ts","../../src/navigation/Drawer/Drawer.tsx","../../src/navigation/Drawer/DrawerFooter.tsx","../../src/navigation/Drawer/DrawerHeader.tsx","../../src/navigation/Drawer/DrawerContent.tsx"],"sourcesContent":["import { useEffect, useState } from 'react';\n\ntype UseDrawer = [boolean, () => void]\n\nexport default function useDrawer(open = false): UseDrawer {\n const [_open, setOpen] = useState(false);\n\n useEffect(() => { setOpen(open); }, [open]);\n\n const toogleDrawer = () => { setOpen(prev => !prev); };\n\n return [_open, toogleDrawer];\n}","import { useEffect, useState, type HTMLAttributes } from 'react';\n\nimport { prefix } from '@iziui/tokens/web/js';\n\nimport { joinClass } from '@iziui/core/utils';\n\nimport Stack from '@/layout/Stack';\n\nimport createComponent from '../../core/createComponent';\n\nimport '@iziui/styles/components/Drawer.scss';\n\ntype Direction = 'right' | 'left' | 'bottom';\ntype AnimationClass = 'show' | 'hide';\ntype Config = { animation: AnimationClass; visible: boolean };\n\nexport interface DrawerProps extends HTMLAttributes<HTMLDivElement> {\n open: boolean;\n direction?: Direction;\n body: React.JSX.Element;\n header?: React.JSX.Element;\n footer?: React.JSX.Element;\n onClose: () => void;\n};\n\nfunction Drawer({\n open,\n header,\n body,\n footer,\n direction = 'right',\n onClose,\n ...props\n}: DrawerProps) {\n const [config, setConfig] = useState<Config>({ visible: false, animation: 'hide' });\n\n const ANIMATION_DURATION = 300;\n\n const cls = joinClass(\n `${prefix}-drawer`,\n props.className\n );\n\n const contentCls = joinClass(\n `${prefix}-drawer__content`,\n `${prefix}-drawer__content--${direction}`,\n `${prefix}-drawer__content--${direction}--${config.animation}`,\n );\n\n const overlayCls = joinClass(\n `${prefix}-drawer__overlay`,\n `${prefix}-drawer__overlay--${config.animation}`,\n );\n\n useEffect(() => {\n let timer: NodeJS.Timeout;\n\n if (open) {\n timer = handleOpen();\n return;\n }\n\n timer = handleClose();\n\n return () => {\n clearTimeout(timer);\n };\n }, [open]);\n\n const handleOpen = () => {\n setConfig(prev => ({ ...prev, visible: true }));\n\n return setTimeout(() => {\n setConfig(prev => ({ ...prev, animation: 'show' }));\n document.body.style.overflow = 'hidden';\n }, 100);\n };\n\n const handleClose = () => {\n setConfig(prev => ({ ...prev, animation: 'hide' }));\n\n return setTimeout(() => {\n setConfig(prev => ({ ...prev, visible: false }));\n document.body.style.overflow = '';\n }, ANIMATION_DURATION);\n };\n\n return (\n config.visible && (\n <div {...props} className={cls}>\n <Stack className={contentCls}>\n {header}\n {body}\n {footer}\n </Stack>\n <div\n data-testid=\"drawer-overlay\"\n className={overlayCls}\n onClick={onClose}\n />\n </div>\n )\n );\n}\n\nexport default createComponent(Drawer);\n","import { HtmlHTMLAttributes, PropsWithChildren } from 'react';\n\nimport { prefix } from '@iziui/tokens/web/js';\n\nimport { joinClass } from '@iziui/core/utils/joinClass';\n\nimport createComponent from '../../core/createComponent';\n\ntype DrawerFooterProps = PropsWithChildren<HtmlHTMLAttributes<HTMLDivElement>>\n\nfunction DrawerFooter({ children, ...props }: DrawerFooterProps) {\n const cls = joinClass(\n `${prefix}-drawer__footer`,\n props.className\n );\n\n return (\n <div {...props} className={cls}>\n {children}\n </div>\n );\n}\n\nexport default createComponent(DrawerFooter);\n","import { HtmlHTMLAttributes } from 'react';\n\nimport { prefix } from '@iziui/tokens/web/js';\n\nimport { joinClass } from '@iziui/core/utils/joinClass';\n\nimport Stack from '@/layout/Stack';\nimport ButtonIcon from '@/actions/ButtonIcon';\nimport Icon from '@/display/Icon';\n\nimport createComponent from '../../core/createComponent';\n\ninterface DrawerHeaderProps extends HtmlHTMLAttributes<HTMLDivElement> {\n onClose: () => void;\n}\n\nfunction DrawerHeader({ children, onClose, ...props }: DrawerHeaderProps) {\n const cls = joinClass(\n `${prefix}-drawer__header`,\n props.className\n );\n\n return (\n <Stack\n flexDirection=\"row\"\n alignItems=\"center\"\n justifyContent=\"space-between\"\n {...props}\n className={cls}\n >\n {children}\n {\n onClose && (\n <ButtonIcon\n onClick={onClose}\n color=\"grey\"\n aria-label=\"Fechar\"\n data-testid=\"drawer-close-button\"\n >\n <Icon name=\"times\" />\n </ButtonIcon>\n )\n }\n </Stack>\n );\n}\n\nexport default createComponent(DrawerHeader);","import { HtmlHTMLAttributes, PropsWithChildren } from 'react';\n\nimport { prefix } from '@iziui/tokens/web/js';\n\nimport { joinClass } from '@iziui/core/utils/joinClass';\n\nimport createComponent from '../../core/createComponent';\n\ntype DrawerContentProps = PropsWithChildren<HtmlHTMLAttributes<HTMLDivElement>>\n\nfunction DrawerContent({ children, ...props }: DrawerContentProps) {\n const cls = joinClass(\n `${prefix}-drawer__content__container`,\n props.className\n );\n\n return (\n <div {...props} className={cls}>\n {children}\n </div>\n );\n}\n\nexport default createComponent(DrawerContent);"],"names":["useDrawer","open","_open","setOpen","useState","useEffect","prev","Drawer","header","body","footer","direction","onClose","props","config","setConfig","ANIMATION_DURATION","cls","joinClass","prefix","contentCls","overlayCls","timer","handleOpen","handleClose","jsxs","Stack","jsx","Drawer_default","createComponent","DrawerFooter","children","DrawerFooter_default","DrawerHeader","ButtonIcon","Icon","DrawerHeader_default","DrawerContent","DrawerContent_default"],"mappings":"+VAIA,SAAwBA,EAAUC,EAAO,GAAkB,CACzD,KAAM,CAACC,EAAOC,CAAO,EAAIC,EAAS,EAAK,EAEvC,OAAAC,EAAU,IAAM,CAAEF,EAAQF,CAAI,CAAG,EAAG,CAACA,CAAI,CAAC,EAInC,CAACC,EAFa,IAAM,CAAEC,EAAQG,GAAQ,CAACA,CAAI,CAAG,CAE1B,CAC7B,CCaA,SAASC,EAAO,CACd,KAAAN,EACA,OAAAO,EACA,KAAAC,EACA,OAAAC,EACA,UAAAC,EAAY,QACZ,QAAAC,EACA,GAAGC,CACL,EAAgB,CACd,KAAM,CAACC,EAAQC,CAAS,EAAIX,EAAiB,CAAE,QAAS,GAAO,UAAW,OAAQ,EAE5EY,EAAqB,IAErBC,EAAMC,EACV,GAAGC,CAAM,UACTN,EAAM,SAAA,EAGFO,EAAaF,EACjB,GAAGC,CAAM,mBACT,GAAGA,CAAM,qBAAqBR,CAAS,GACvC,GAAGQ,CAAM,qBAAqBR,CAAS,KAAKG,EAAO,SAAS,EAAA,EAGxDO,EAAaH,EACjB,GAAGC,CAAM,mBACT,GAAGA,CAAM,qBAAqBL,EAAO,SAAS,EAAA,EAGhDT,EAAU,IAAM,CACd,IAAIiB,EAEJ,GAAIrB,EAAM,CACRqB,EAAQC,EAAA,EACR,MACF,CAEA,OAAAD,EAAQE,EAAA,EAED,IAAM,CACX,aAAaF,CAAK,CACpB,CACF,EAAG,CAACrB,CAAI,CAAC,EAET,MAAMsB,EAAa,KACjBR,MAAmB,CAAE,GAAGT,EAAM,QAAS,IAAO,EAEvC,WAAW,IAAM,CACtBS,MAAmB,CAAE,GAAGT,EAAM,UAAW,QAAS,EAClD,SAAS,KAAK,MAAM,SAAW,QACjC,EAAG,GAAG,GAGFkB,EAAc,KAClBT,MAAmB,CAAE,GAAGT,EAAM,UAAW,QAAS,EAE3C,WAAW,IAAM,CACtBS,MAAmB,CAAE,GAAGT,EAAM,QAAS,IAAQ,EAC/C,SAAS,KAAK,MAAM,SAAW,EACjC,EAAGU,CAAkB,GAGvB,OACEF,EAAO,SACLW,EAAC,OAAK,GAAGZ,EAAO,UAAWI,EACzB,SAAA,CAAAQ,EAACC,EAAA,CAAM,UAAWN,EACf,SAAA,CAAAZ,EACAC,EACAC,CAAA,EACH,EACAiB,EAAC,MAAA,CACC,cAAY,iBACZ,UAAWN,EACX,QAAST,CAAA,CAAA,CACX,EACF,CAGN,CAEA,MAAAgB,EAAeC,EAAgBtB,CAAM,EC/FrC,SAASuB,EAAa,CAAE,SAAAC,EAAU,GAAGlB,GAA4B,CAC/D,MAAMI,EAAMC,EACV,GAAGC,CAAM,kBACTN,EAAM,SAAA,EAGR,SACG,MAAA,CAAK,GAAGA,EAAO,UAAWI,EACxB,SAAAc,EACH,CAEJ,CAEA,MAAAC,EAAeH,EAAgBC,CAAY,ECP3C,SAASG,EAAa,CAAE,SAAAF,EAAU,QAAAnB,EAAS,GAAGC,GAA4B,CACxE,MAAMI,EAAMC,EACV,GAAGC,CAAM,kBACTN,EAAM,SAAA,EAGR,OACEY,EAACC,EAAA,CACC,cAAc,MACd,WAAW,SACX,eAAe,gBACd,GAAGb,EACJ,UAAWI,EAEV,SAAA,CAAAc,EAECnB,GACEe,EAACO,EAAA,CACC,QAAStB,EACT,MAAM,OACN,aAAW,SACX,cAAY,sBAEZ,SAAAe,EAACQ,EAAA,CAAK,KAAK,OAAA,CAAQ,CAAA,CAAA,CACrB,CAAA,CAAA,CAKV,CAEA,MAAAC,EAAeP,EAAgBI,CAAY,ECrC3C,SAASI,EAAc,CAAE,SAAAN,EAAU,GAAGlB,GAA6B,CACjE,MAAMI,EAAMC,EACV,GAAGC,CAAM,8BACTN,EAAM,SAAA,EAGR,SACG,MAAA,CAAK,GAAGA,EAAO,UAAWI,EACxB,SAAAc,EACH,CAEJ,CAEA,MAAAO,EAAeT,EAAgBQ,CAAa"}
@@ -0,0 +1,2 @@
1
+ import{jsx as e}from"react/jsx-runtime";import{p as t}from"./index-CZ41y9Hn.js";import{j as m}from"./joinClass-anSpaauN.js";import{c as a}from"./createComponent-DZqrA_Tp.js";function r({name:i,color:s,size:n=24,...o}){const c=m(`${t}-icon`,s&&`${t}-icon--${s}`,"uil",`uil-${i}`,o.className);return e("i",{...o,className:c,style:{fontSize:n,...o.style}})}const u=a(r);export{u as I};
2
+ //# sourceMappingURL=Icon-0KfCwKWR.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Icon-0KfCwKWR.js","sources":["../../src/display/Icon/Icon.tsx"],"sourcesContent":["import { HTMLAttributes } from 'react';\n\nimport { prefix } from '@iziui/tokens/web/js';\n\nimport { joinClass } from '@iziui/core/utils';\nimport type { Colors } from '@iziui/core/theme';\n\nimport createComponent from '../../core/createComponent';\n\nimport '@iziui/styles/components/Icon.scss';\n\nexport interface IconProps extends HTMLAttributes<HTMLElement> {\n name: string;\n size?: number;\n color?: Colors;\n}\n\nfunction Icon({ name, color, size = 24, ...props }: IconProps) {\n const clss = joinClass(\n `${prefix}-icon`,\n color && `${prefix}-icon--${color}`,\n 'uil',\n `uil-${name}`,\n props.className\n );\n\n return (\n <i {...props} className={clss} style={{ fontSize: size, ...props.style }}></i>\n );\n}\n\nexport default createComponent(Icon);"],"names":["Icon","name","color","size","props","clss","joinClass","prefix","jsx","Icon$1","createComponent"],"mappings":"8KAiBA,SAASA,EAAK,CAAE,KAAAC,EAAM,MAAAC,EAAO,KAAAC,EAAO,GAAI,GAAGC,GAAoB,CAC7D,MAAMC,EAAOC,EACX,GAAGC,CAAM,QACTL,GAAS,GAAGK,CAAM,UAAUL,CAAK,GACjC,MACA,OAAOD,CAAI,GACXG,EAAM,SAAA,EAGR,OACEI,EAAC,IAAA,CAAG,GAAGJ,EAAO,UAAWC,EAAM,MAAO,CAAE,SAAUF,EAAM,GAAGC,EAAM,MAAM,CAAG,CAE9E,CAEA,MAAAK,EAAeC,EAAgBV,CAAI"}
@@ -0,0 +1,2 @@
1
+ "use strict";const o=require("react/jsx-runtime"),s=require("./index-DYxwT4uW.cjs"),r=require("./joinClass-Jk3EszKD.cjs"),u=require("./createComponent-BBXW0GJ6.cjs");function a({name:i,color:n,size:t=24,...e}){const c=r.joinClass(`${s.prefix}-icon`,n&&`${s.prefix}-icon--${n}`,"uil",`uil-${i}`,e.className);return o.jsx("i",{...e,className:c,style:{fontSize:t,...e.style}})}const l=u.createComponent(a);exports.Icon=l;
2
+ //# sourceMappingURL=Icon-Dv3oduiN.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Icon-Dv3oduiN.cjs","sources":["../../src/display/Icon/Icon.tsx"],"sourcesContent":["import { HTMLAttributes } from 'react';\n\nimport { prefix } from '@iziui/tokens/web/js';\n\nimport { joinClass } from '@iziui/core/utils';\nimport type { Colors } from '@iziui/core/theme';\n\nimport createComponent from '../../core/createComponent';\n\nimport '@iziui/styles/components/Icon.scss';\n\nexport interface IconProps extends HTMLAttributes<HTMLElement> {\n name: string;\n size?: number;\n color?: Colors;\n}\n\nfunction Icon({ name, color, size = 24, ...props }: IconProps) {\n const clss = joinClass(\n `${prefix}-icon`,\n color && `${prefix}-icon--${color}`,\n 'uil',\n `uil-${name}`,\n props.className\n );\n\n return (\n <i {...props} className={clss} style={{ fontSize: size, ...props.style }}></i>\n );\n}\n\nexport default createComponent(Icon);"],"names":["Icon","name","color","size","props","clss","joinClass","prefix","jsx","createComponent"],"mappings":"sKAiBA,SAASA,EAAK,CAAE,KAAAC,EAAM,MAAAC,EAAO,KAAAC,EAAO,GAAI,GAAGC,GAAoB,CAC7D,MAAMC,EAAOC,EAAAA,UACX,GAAGC,EAAAA,MAAM,QACTL,GAAS,GAAGK,EAAAA,MAAM,UAAUL,CAAK,GACjC,MACA,OAAOD,CAAI,GACXG,EAAM,SAAA,EAGR,OACEI,EAAAA,IAAC,IAAA,CAAG,GAAGJ,EAAO,UAAWC,EAAM,MAAO,CAAE,SAAUF,EAAM,GAAGC,EAAM,MAAM,CAAG,CAE9E,CAEA,MAAAJ,EAAeS,EAAAA,gBAAgBT,CAAI"}
@@ -0,0 +1,2 @@
1
+ "use strict";const l=require("react"),h=require("react/jsx-runtime"),f=l.createContext(null);function g({formGroup:s,debug:t=!1,children:e,...r}){const n=u=>{u.preventDefault(),s.submit()};return h.jsxs(f,{value:s,children:[h.jsx("form",{...r,style:{width:"100%",...r.style},onSubmit:n,noValidate:!0,children:e}),t&&h.jsx("pre",{style:{width:"100%",maxHeight:350,padding:15,borderRadius:4,overflow:"auto",color:"#333",background:"#e5e5e5",boxShadow:"0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24)"},children:JSON.stringify(s,null,2)})]})}function v(){const s=l.useContext(f);if(!s)throw new Error("useFormGroup must be used inside <FormProvider> (or <Form />).");return s}function y(s){const t=v();return{control:t.controls[s],update:n=>{t.setValues(u=>(u[s]=n,u))}}}function b({controlName:s,field:t,action:e="input"}){const{control:r,update:n}=y(s);return(i=>{const a=o=>["radio","checkbox"].includes(o.type)?o.target.checked:o.target.value;return l.cloneElement(i,{onBlur:o=>{e==="blur"&&n(a(o)),i.props.onBlur&&i.props.onBlur(o)},onInput:o=>{e==="input"&&n(a(o)),i.props.onInput&&i.props.onInput(o)},onChange:o=>{e==="change"&&n(a(o)),i.props.onChange&&i.props.onChange(o)}})})(t(r))}class c{constructor(t,e,r){this.controls=t,this.handle=e,this.validator=r}controls;handle;validator;_valid=!1;_hydrate;get hydrate(){return this._hydrate}set hydrate(t){this._hydrate=t}get isValid(){return this._valid}set isValid(t){this._valid=t}get errors(){return Object.values(this.controls).filter(t=>t.error)}get values(){const t={};return this.eachControl((e,r)=>({[r]:e.value})).forEach(e=>{for(const r in e)t[r]=e[r]}),t}setValues(t){const e=typeof t=="function"?t(this.values):t;for(const r of Object.keys(e))this.controls[r].value=e[r];this.validate(),this.hydrate(this),this.handle.change&&this.handle.change(this)}eachControl(t){return Object.keys(this.controls).map(e=>t(this.controls[e],e))}submit(){this.handle.submit&&(this.eachControl(t=>{t.dirty=!0}),this.validate(),this.hydrate(this),this.handle.submit(this))}reset(){this.eachControl(t=>t.reset()),this.hydrate(this)}validate(){Object.entries(this.controls).map(([t,e])=>{let r=e.validate();this.validator&&this.validator[t]&&(r=this.validator[t](this)||""),e.error=r}),this.isValid=!this.errors.length,this.hydrate(this)}}class C{_value;defaultValue;validators=[];type;error="";dirty=!1;constructor({defaultValue:t,type:e="text",validators:r}){this.type=e,this._value=t,this.defaultValue=t,r&&(this.validators=r)}get value(){return this._value}set value(t){this.dirty=!0,this._value=t,this.validate()}get isInvalid(){return!!(this.dirty&&this.error)}reset(){this.value=this.defaultValue,this.dirty=!1}validate(){const t=this.validators.map(e=>e(this)).filter(Boolean);return this.error=t[0]||"",this.error}}function p(s){return Object.entries(s).reduce((t,e)=>{const r=e[0],n=e[1];return t[r]=new C(n),t},{})}function x({form:s,handle:t,validator:e},r){const[n,u]=l.useState(new c(p(s),t,e));l.useEffect(()=>{u(new c(p(s),t,e))},[...r]);const i=a=>{u(o=>{const m=a.controls,d=new c(m,t,e);return d.hydrate=o.hydrate,d})};return n.hydrate=i,n}exports.Control=b;exports.Form=g;exports.useControl=y;exports.useForm=x;exports.useFormGroup=v;
2
+ //# sourceMappingURL=useForm-BNLOy0E6.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"useForm-TyKbw7O8.cjs","sources":["../../src/lab/Form/Form.tsx","../../src/lab/Form/useFormGroup.ts","../../src/lab/Form/useControl.ts","../../src/lab/Form/Control.tsx","../../src/lab/Form/FormGroup.ts","../../src/lab/Form/FormControl.ts","../../src/lab/Form/useForm.ts"],"sourcesContent":["import { createContext, SubmitEvent, HTMLAttributes } from 'react';\n\nimport type FormGroup from './FormGroup';\n\nexport const FormContext = createContext<FormGroup<any> | null>(null);\n\ninterface FormProps<T extends Record<string, any>> extends HTMLAttributes<HTMLFormElement> {\n formGroup: FormGroup<T>;\n debug?: boolean;\n}\n\nexport default function Form<T extends Record<string, any>>({\n formGroup,\n debug = false,\n children,\n ...props\n}: FormProps<T>) {\n const submit = (event: SubmitEvent<HTMLFormElement>) => {\n event.preventDefault();\n formGroup.submit();\n };\n\n return (\n <FormContext value={formGroup}>\n <form\n {...props}\n style={{ width: '100%', ...props.style }}\n onSubmit={submit}\n noValidate\n >\n {children}\n </form>\n {\n debug && (\n <pre style={{\n width: '100%',\n maxHeight: 350,\n padding: 15,\n borderRadius: 4,\n overflow: 'auto',\n color: '#333',\n background: '#e5e5e5',\n boxShadow: '0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24)',\n }}>\n {JSON.stringify(formGroup, null, 2)}\n </pre>\n )\n }\n </FormContext>\n );\n}","import { useContext } from 'react';\n\nimport type FormGroup from './FormGroup';\nimport { FormContext } from './Form';\n\nexport default function useFormGroup<T extends Record<string, any>>() {\n const context = useContext(FormContext);\n\n if (!context) throw new Error('useFormGroup must be used inside <FormProvider> (or <Form />).');\n\n return context as FormGroup<T>;\n}","import useFormGroup from './useFormGroup';\n\nexport default function useControl<\n T extends Record<string, any>,\n K extends keyof T = keyof T,\n>(controlName: K) {\n const formGroup = useFormGroup<T>();\n const control = formGroup.controls[controlName];\n\n const update = (value: T[K]) => {\n formGroup.setValues((data) => {\n data[controlName] = value;\n\n return data;\n });\n };\n\n return { control, update };\n}","import { ChangeEvent, cloneElement, InputEvent, InputHTMLAttributes, ReactElement } from 'react';\n\nimport useControl from './useControl';\nimport type { AbstractControl } from './AbstractControl';\n\ninterface ControlProps<\n T extends Record<string, any>,\n K extends keyof T,\n> {\n controlName: K;\n action?: 'change' | 'input' | 'blur';\n field: (control: AbstractControl<T>[K]) => React.JSX.Element;\n}\n\nexport default function Control<\n T extends Record<string, any>,\n K extends keyof T\n>({\n controlName,\n field,\n action = 'input'\n}: ControlProps<T, K>) {\n const { control, update } = useControl<T, K>(controlName);\n\n const renderChildren = (child: ReactElement<InputHTMLAttributes<HTMLInputElement>>) => {\n const getValue = (e: ChangeEvent<HTMLInputElement> | InputEvent<HTMLInputElement>) => {\n if (['radio', 'checkbox'].includes(e.type)) { return e.target['checked']; }\n\n return e.target['value'];\n };\n\n return cloneElement(child, {\n onBlur: (e) => {\n if (action === 'blur') { update(getValue(e)); };\n\n if (child.props.onBlur) { child.props.onBlur(e); }\n },\n onInput: (e) => {\n if (action === 'input') { update(getValue(e)); };\n\n if (child.props.onInput) { child.props.onInput(e); }\n },\n onChange: (e) => {\n if (action === 'change') { update(getValue(e)); };\n\n if (child.props.onChange) { child.props.onChange(e); }\n },\n });\n };\n\n return (\n renderChildren(field(control))\n );\n}","import type { AbstractControl } from './AbstractControl';\nimport type FormControl from './FormControl';\n\ntype Hydrate<T extends Record<string, any>> = (data: FormGroup<T>) => void;\ntype SetValues<F> = Partial<F> | ((values: F) => Partial<F>);\n\nexport type Validator<T extends Record<string, any>> = Partial<{\n [K in keyof T]: (data: FormGroup<T>) => string | void;\n}>\n\nexport interface Handle<T extends Record<string, any>> {\n change?: (form: FormGroup<T>) => void;\n submit?: (form: FormGroup<T>) => void;\n}\n\nexport default class FormGroup<T extends Record<string, any>> {\n private _valid = false;\n private _hydrate!: Hydrate<T>;\n\n constructor(\n public controls: AbstractControl<T>,\n public handle: Handle<T>,\n public validator?: Validator<T>,\n ) { }\n\n /**\n * Atualiza o estado interno do componente.\n * @private\n * @description Este método é usado internamente pela biblioteca.\n * Para atualizar valores externamente, use {@link setValues}.\n*/\n get hydrate() { return this._hydrate; }\n set hydrate(fn: (values: FormGroup<T>) => any) { this._hydrate = fn; }\n\n get isValid(): boolean { return this._valid; }\n set isValid(validity: boolean) { this._valid = validity; }\n\n get errors() {\n return Object.values<FormControl<T[keyof T]>>(this.controls)\n .filter(c => c.error);\n }\n\n get values(): T {\n const values: Record<string, any> = {};\n\n this.eachControl((control, key) => ({ [key as string]: control.value }))\n .forEach(control => { for (const prop in control) { values[prop] = control[prop]; } });\n\n return values as T;\n }\n\n public setValues(fn: SetValues<T>): void;\n public setValues(partialForm: Partial<T>): void;\n public setValues(arg: Partial<T> | SetValues<T>) {\n const partial =\n typeof arg === 'function'\n ? arg(this.values)\n : arg;\n\n for (const key of Object.keys(partial)) {\n this.controls[key].value = partial[key] as T[keyof T];\n }\n\n this.validate();\n\n this.hydrate(this);\n\n if (!this.handle.change) { return; }\n\n this.handle.change(this);\n }\n\n private eachControl(fn: <K extends keyof T>(control: FormControl<T[K]>, key?: K) => any) {\n return Object.keys(this.controls).map(k => fn(this.controls[k], k));\n }\n\n public submit() {\n if (!this.handle.submit) { return; }\n\n this.eachControl((control) => { control.dirty = true; });\n\n this.validate();\n\n this.hydrate(this);\n this.handle.submit(this);\n }\n\n public reset() {\n this.eachControl((control) => control.reset());\n this.hydrate(this);\n }\n\n public validate() {\n Object.entries(this.controls).map(([key, control]) => {\n let error = control.validate();\n\n if (this.validator && this.validator[key]) {\n error = this.validator[key](this) || '';\n }\n\n control.error = error;\n });\n\n this.isValid = !this.errors.length;\n this.hydrate(this);\n }\n}","type Type = 'text' | 'email';\ntype Validator<C> = (control: FormControl<C>) => string | false | void;\n\ntype Data<T> = {\n defaultValue: T;\n type?: Type;\n validators?: Validator<T>[];\n}\n\nexport type Constructor<V> = ConstructorParameters<typeof FormControl<V>>[number];\n\nexport default class FormControl<V> implements Pick<Data<V>, 'type'> {\n private _value!: V;\n private defaultValue: V;\n private validators: Validator<V>[] = [];\n\n public type: Type;\n public error = '';\n public dirty = false;\n\n constructor({\n defaultValue,\n type = 'text',\n validators,\n }: Data<V>) {\n this.type = type;\n this._value = defaultValue;\n this.defaultValue = defaultValue;\n\n if (validators) { this.validators = validators; }\n }\n\n get value(): V { return this._value; }\n set value(value: V) {\n this.dirty = true;\n this._value = value;\n this.validate();\n }\n\n get isInvalid() { return Boolean(this.dirty && this.error); }\n\n public reset() {\n this.value = this.defaultValue;\n this.dirty = false;\n }\n\n public validate() {\n const errors = this.validators\n .map(v => v(this))\n .filter(Boolean);\n\n this.error = errors[0] || '';\n\n return this.error;\n }\n}\n","import { useState } from 'react';\n\nimport FormGroup from './FormGroup';\nimport FormControl from './FormControl';\nimport type { Constructor } from './FormControl';\nimport type { Handle, Validator } from './FormGroup';\nimport type { AbstractControl } from './AbstractControl';\n\ntype UseForm<T extends Record<string, any>> = {\n form: { [K in keyof T]: Constructor<T[K]> };\n handle: Handle<T>;\n validator?: Validator<T>;\n}\n\nfunction makingControls<T extends Record<string, any>>(form: { [K in keyof T]: Constructor<T[K]> }) {\n return Object.entries(form)\n .reduce((acc, data) => {\n const key = data[0] as keyof T;\n const value = data[1] as Constructor<T[keyof T]>;\n\n acc[key] = new FormControl(value);\n\n return acc;\n }, {} as AbstractControl<T>);\n}\n\nexport default function useForm<T extends Record<any, any>>({\n form,\n handle,\n validator\n}: UseForm<T>) {\n const [formGroup, setFormGroup] = useState<FormGroup<T>>(\n new FormGroup(\n makingControls(form),\n handle,\n validator\n )\n );\n\n const hydrate = (form: FormGroup<T>) => {\n setFormGroup(prev => {\n const controls = form.controls;\n\n const newFormGroup = new FormGroup(controls, handle, validator);\n newFormGroup.hydrate = prev.hydrate;\n\n return newFormGroup;\n });\n };\n\n formGroup.hydrate = hydrate;\n\n return formGroup;\n}"],"names":["FormContext","createContext","Form","formGroup","debug","children","props","submit","event","jsxs","jsx","useFormGroup","context","useContext","useControl","controlName","value","data","Control","field","action","control","update","child","getValue","e","cloneElement","FormGroup","controls","handle","validator","fn","validity","c","values","key","prop","arg","partial","k","error","FormControl","defaultValue","type","validators","errors","v","makingControls","form","acc","useForm","setFormGroup","useState","hydrate","prev","newFormGroup"],"mappings":"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"}
1
+ {"version":3,"file":"useForm-BNLOy0E6.cjs","sources":["../../src/lab/Form/Form.tsx","../../src/lab/Form/useFormGroup.ts","../../src/lab/Form/useControl.ts","../../src/lab/Form/Control.tsx","../../src/lab/Form/FormGroup.ts","../../src/lab/Form/FormControl.ts","../../src/lab/Form/useForm.ts"],"sourcesContent":["import { createContext, SubmitEvent, HTMLAttributes } from 'react';\n\nimport type FormGroup from './FormGroup';\n\nexport const FormContext = createContext<FormGroup<any> | null>(null);\n\ninterface FormProps<T extends Record<string, any>> extends HTMLAttributes<HTMLFormElement> {\n formGroup: FormGroup<T>;\n debug?: boolean;\n}\n\nexport default function Form<T extends Record<string, any>>({\n formGroup,\n debug = false,\n children,\n ...props\n}: FormProps<T>) {\n const submit = (event: SubmitEvent<HTMLFormElement>) => {\n event.preventDefault();\n formGroup.submit();\n };\n\n return (\n <FormContext value={formGroup}>\n <form\n {...props}\n style={{ width: '100%', ...props.style }}\n onSubmit={submit}\n noValidate\n >\n {children}\n </form>\n {\n debug && (\n <pre style={{\n width: '100%',\n maxHeight: 350,\n padding: 15,\n borderRadius: 4,\n overflow: 'auto',\n color: '#333',\n background: '#e5e5e5',\n boxShadow: '0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24)',\n }}>\n {JSON.stringify(formGroup, null, 2)}\n </pre>\n )\n }\n </FormContext>\n );\n}","import { useContext } from 'react';\n\nimport type FormGroup from './FormGroup';\nimport { FormContext } from './Form';\n\nexport default function useFormGroup<T extends Record<string, any>>() {\n const context = useContext(FormContext);\n\n if (!context) throw new Error('useFormGroup must be used inside <FormProvider> (or <Form />).');\n\n return context as FormGroup<T>;\n}","import useFormGroup from './useFormGroup';\n\nexport default function useControl<\n T extends Record<string, any>,\n K extends keyof T = keyof T,\n>(controlName: K) {\n const formGroup = useFormGroup<T>();\n const control = formGroup.controls[controlName];\n\n const update = (value: T[K]) => {\n formGroup.setValues((data) => {\n data[controlName] = value;\n\n return data;\n });\n };\n\n return { control, update };\n}","import { ChangeEvent, cloneElement, InputEvent, InputHTMLAttributes, ReactElement } from 'react';\n\nimport useControl from './useControl';\nimport type { AbstractControl } from './AbstractControl';\n\ninterface ControlProps<\n T extends Record<string, any>,\n K extends keyof T,\n> {\n controlName: K;\n action?: 'change' | 'input' | 'blur';\n field: (control: AbstractControl<T>[K]) => React.JSX.Element;\n}\n\nexport default function Control<\n T extends Record<string, any>,\n K extends keyof T\n>({\n controlName,\n field,\n action = 'input'\n}: ControlProps<T, K>) {\n const { control, update } = useControl<T, K>(controlName);\n\n const renderChildren = (child: ReactElement<InputHTMLAttributes<HTMLInputElement>>) => {\n const getValue = (e: ChangeEvent<HTMLInputElement> | InputEvent<HTMLInputElement>) => {\n if (['radio', 'checkbox'].includes(e.type)) { return e.target['checked']; }\n\n return e.target['value'];\n };\n\n return cloneElement(child, {\n onBlur: (e) => {\n if (action === 'blur') { update(getValue(e)); };\n\n if (child.props.onBlur) { child.props.onBlur(e); }\n },\n onInput: (e) => {\n if (action === 'input') { update(getValue(e)); };\n\n if (child.props.onInput) { child.props.onInput(e); }\n },\n onChange: (e) => {\n if (action === 'change') { update(getValue(e)); };\n\n if (child.props.onChange) { child.props.onChange(e); }\n },\n });\n };\n\n return (\n renderChildren(field(control))\n );\n}","import type { AbstractControl } from './AbstractControl';\nimport type FormControl from './FormControl';\n\ntype Hydrate<T extends Record<string, any>> = (data: FormGroup<T>) => void;\ntype SetValues<F> = Partial<F> | ((values: F) => Partial<F>);\n\nexport type Validator<T extends Record<string, any>> = Partial<{\n [K in keyof T]: (data: FormGroup<T>) => string | void;\n}>\n\nexport interface Handle<T extends Record<string, any>> {\n change?: (form: FormGroup<T>) => void;\n submit?: (form: FormGroup<T>) => void;\n}\n\nexport default class FormGroup<T extends Record<string, any>> {\n private _valid = false;\n private _hydrate!: Hydrate<T>;\n\n constructor(\n public controls: AbstractControl<T>,\n public handle: Handle<T>,\n public validator?: Validator<T>,\n ) { }\n\n /**\n * Atualiza o estado interno do componente.\n * @private\n * @description Este método é usado internamente pela biblioteca.\n * Para atualizar valores externamente, use {@link setValues}.\n*/\n get hydrate() { return this._hydrate; }\n set hydrate(fn: (values: FormGroup<T>) => any) { this._hydrate = fn; }\n\n get isValid(): boolean { return this._valid; }\n set isValid(validity: boolean) { this._valid = validity; }\n\n get errors() {\n return Object.values<FormControl<T[keyof T]>>(this.controls)\n .filter(c => c.error);\n }\n\n get values(): T {\n const values: Record<string, any> = {};\n\n this.eachControl((control, key) => ({ [key as string]: control.value }))\n .forEach(control => { for (const prop in control) { values[prop] = control[prop]; } });\n\n return values as T;\n }\n\n public setValues(fn: SetValues<T>): void;\n public setValues(partialForm: Partial<T>): void;\n public setValues(arg: Partial<T> | SetValues<T>) {\n const partial =\n typeof arg === 'function'\n ? arg(this.values)\n : arg;\n\n for (const key of Object.keys(partial)) {\n this.controls[key].value = partial[key] as T[keyof T];\n }\n\n this.validate();\n\n this.hydrate(this);\n\n if (!this.handle.change) { return; }\n\n this.handle.change(this);\n }\n\n private eachControl(fn: <K extends keyof T>(control: FormControl<T[K]>, key?: K) => any) {\n return Object.keys(this.controls).map(k => fn(this.controls[k], k));\n }\n\n public submit() {\n if (!this.handle.submit) { return; }\n\n this.eachControl((control) => { control.dirty = true; });\n\n this.validate();\n\n this.hydrate(this);\n this.handle.submit(this);\n }\n\n public reset() {\n this.eachControl((control) => control.reset());\n this.hydrate(this);\n }\n\n public validate() {\n Object.entries(this.controls).map(([key, control]) => {\n let error = control.validate();\n\n if (this.validator && this.validator[key]) {\n error = this.validator[key](this) || '';\n }\n\n control.error = error;\n });\n\n this.isValid = !this.errors.length;\n this.hydrate(this);\n }\n}","type Type = 'text' | 'email';\ntype Validator<C> = (control: FormControl<C>) => string | false | void;\n\ntype Data<T> = {\n defaultValue: T;\n type?: Type;\n validators?: Validator<T>[];\n}\n\nexport type Constructor<V> = ConstructorParameters<typeof FormControl<V>>[number];\n\nexport default class FormControl<V> implements Pick<Data<V>, 'type'> {\n private _value!: V;\n private defaultValue: V;\n private validators: Validator<V>[] = [];\n\n public type: Type;\n public error = '';\n public dirty = false;\n\n constructor({\n defaultValue,\n type = 'text',\n validators,\n }: Data<V>) {\n this.type = type;\n this._value = defaultValue;\n this.defaultValue = defaultValue;\n\n if (validators) { this.validators = validators; }\n }\n\n get value(): V { return this._value; }\n set value(value: V) {\n this.dirty = true;\n this._value = value;\n this.validate();\n }\n\n get isInvalid() { return Boolean(this.dirty && this.error); }\n\n public reset() {\n this.value = this.defaultValue;\n this.dirty = false;\n }\n\n public validate() {\n const errors = this.validators\n .map(v => v(this))\n .filter(Boolean);\n\n this.error = errors[0] || '';\n\n return this.error;\n }\n}\n","import { useEffect, useState } from 'react';\n\nimport FormGroup from './FormGroup';\nimport FormControl from './FormControl';\nimport type { Constructor } from './FormControl';\nimport type { Handle, Validator } from './FormGroup';\nimport type { AbstractControl } from './AbstractControl';\n\ntype UseForm<T extends Record<string, any>> = {\n form: { [K in keyof T]: Constructor<T[K]> };\n handle: Handle<T>;\n validator?: Validator<T>;\n}\n\nfunction makingControls<T extends Record<string, any>>(form: { [K in keyof T]: Constructor<T[K]> }) {\n return Object.entries(form)\n .reduce((acc, data) => {\n const key = data[0] as keyof T;\n const value = data[1] as Constructor<T[keyof T]>;\n\n acc[key] = new FormControl(value);\n\n return acc;\n }, {} as AbstractControl<T>);\n}\n\nexport default function useForm<T extends Record<any, any>>({\n form,\n handle,\n validator\n}: UseForm<T>, deps: readonly unknown[]) {\n const [formGroup, setFormGroup] = useState<FormGroup<T>>(\n new FormGroup(\n makingControls(form),\n handle,\n validator\n )\n );\n\n useEffect(() => {\n setFormGroup(new FormGroup(makingControls(form), handle, validator));\n }, [...deps]);\n\n const hydrate = (form: FormGroup<T>) => {\n setFormGroup(prev => {\n const controls = form.controls;\n\n const newFormGroup = new FormGroup(controls, handle, validator);\n newFormGroup.hydrate = prev.hydrate;\n\n return newFormGroup;\n });\n };\n\n formGroup.hydrate = hydrate;\n\n return formGroup;\n}"],"names":["FormContext","createContext","Form","formGroup","debug","children","props","submit","event","jsxs","jsx","useFormGroup","context","useContext","useControl","controlName","value","data","Control","field","action","control","update","child","getValue","e","cloneElement","FormGroup","controls","handle","validator","fn","validity","c","values","key","prop","arg","partial","k","error","FormControl","defaultValue","type","validators","errors","v","makingControls","form","acc","useForm","deps","setFormGroup","useState","useEffect","hydrate","prev","newFormGroup"],"mappings":"qEAIaA,EAAcC,EAAAA,cAAqC,IAAI,EAOpE,SAAwBC,EAAoC,CAC1D,UAAAC,EACA,MAAAC,EAAQ,GACR,SAAAC,EACA,GAAGC,CACL,EAAiB,CACf,MAAMC,EAAUC,GAAwC,CACtDA,EAAM,eAAA,EACNL,EAAU,OAAA,CACZ,EAEA,OACEM,EAAAA,KAACT,EAAA,CAAY,MAAOG,EAClB,SAAA,CAAAO,EAAAA,IAAC,OAAA,CACE,GAAGJ,EACJ,MAAO,CAAE,MAAO,OAAQ,GAAGA,EAAM,KAAA,EACjC,SAAUC,EACV,WAAU,GAET,SAAAF,CAAA,CAAA,EAGDD,GACEM,EAAAA,IAAC,MAAA,CAAI,MAAO,CACV,MAAO,OACP,UAAW,IACX,QAAS,GACT,aAAc,EACd,SAAU,OACV,MAAO,OACP,WAAY,UACZ,UAAW,wDAAA,EAEV,SAAA,KAAK,UAAUP,EAAW,KAAM,CAAC,CAAA,CACpC,CAAA,EAGN,CAEJ,CC7CA,SAAwBQ,GAA8C,CACpE,MAAMC,EAAUC,EAAAA,WAAWb,CAAW,EAEtC,GAAI,CAACY,EAAS,MAAM,IAAI,MAAM,gEAAgE,EAE9F,OAAOA,CACT,CCTA,SAAwBE,EAGtBC,EAAgB,CAChB,MAAMZ,EAAYQ,EAAA,EAWlB,MAAO,CAAE,QAVOR,EAAU,SAASY,CAAW,EAU5B,OARFC,GAAgB,CAC9Bb,EAAU,UAAWc,IACnBA,EAAKF,CAAW,EAAIC,EAEbC,EACR,CACH,CAEkB,CACpB,CCJA,SAAwBC,EAGtB,CACA,YAAAH,EACA,MAAAI,EACA,OAAAC,EAAS,OACX,EAAuB,CACrB,KAAM,CAAE,QAAAC,EAAS,OAAAC,GAAWR,EAAiBC,CAAW,EA4BxD,OA1BwBQ,GAA+D,CACrF,MAAMC,EAAYC,GACZ,CAAC,QAAS,UAAU,EAAE,SAASA,EAAE,IAAI,EAAYA,EAAE,OAAO,QAEvDA,EAAE,OAAO,MAGlB,OAAOC,EAAAA,aAAaH,EAAO,CACzB,OAASE,GAAM,CACTL,IAAW,QAAUE,EAAOE,EAASC,CAAC,CAAC,EAEvCF,EAAM,MAAM,QAAUA,EAAM,MAAM,OAAOE,CAAC,CAChD,EACA,QAAUA,GAAM,CACVL,IAAW,SAAWE,EAAOE,EAASC,CAAC,CAAC,EAExCF,EAAM,MAAM,SAAWA,EAAM,MAAM,QAAQE,CAAC,CAClD,EACA,SAAWA,GAAM,CACXL,IAAW,UAAYE,EAAOE,EAASC,CAAC,CAAC,EAEzCF,EAAM,MAAM,UAAYA,EAAM,MAAM,SAASE,CAAC,CACpD,CAAA,CACD,CACH,GAGiBN,EAAME,CAAO,CAAC,CAEjC,CCtCA,MAAqBM,CAAyC,CAI5D,YACSC,EACAC,EACAC,EACP,CAHO,KAAA,SAAAF,EACA,KAAA,OAAAC,EACA,KAAA,UAAAC,CACL,CAHK,SACA,OACA,UAND,OAAS,GACT,SAcR,IAAI,SAAU,CAAE,OAAO,KAAK,QAAU,CACtC,IAAI,QAAQC,EAAmC,CAAE,KAAK,SAAWA,CAAI,CAErE,IAAI,SAAmB,CAAE,OAAO,KAAK,MAAQ,CAC7C,IAAI,QAAQC,EAAmB,CAAE,KAAK,OAASA,CAAU,CAEzD,IAAI,QAAS,CACX,OAAO,OAAO,OAAgC,KAAK,QAAQ,EACxD,OAAOC,GAAKA,EAAE,KAAK,CACxB,CAEA,IAAI,QAAY,CACd,MAAMC,EAA8B,CAAA,EAEpC,YAAK,YAAY,CAACb,EAASc,KAAS,CAAE,CAACA,CAAa,EAAGd,EAAQ,KAAA,EAAQ,EACpE,QAAQA,GAAW,CAAE,UAAWe,KAAQf,EAAWa,EAAOE,CAAI,EAAIf,EAAQe,CAAI,CAAK,CAAC,EAEhFF,CACT,CAIO,UAAUG,EAAgC,CAC/C,MAAMC,EACJ,OAAOD,GAAQ,WACXA,EAAI,KAAK,MAAM,EACfA,EAEN,UAAWF,KAAO,OAAO,KAAKG,CAAO,EACnC,KAAK,SAASH,CAAG,EAAE,MAAQG,EAAQH,CAAG,EAGxC,KAAK,SAAA,EAEL,KAAK,QAAQ,IAAI,EAEZ,KAAK,OAAO,QAEjB,KAAK,OAAO,OAAO,IAAI,CACzB,CAEQ,YAAYJ,EAAqE,CACvF,OAAO,OAAO,KAAK,KAAK,QAAQ,EAAE,IAAIQ,GAAKR,EAAG,KAAK,SAASQ,CAAC,EAAGA,CAAC,CAAC,CACpE,CAEO,QAAS,CACT,KAAK,OAAO,SAEjB,KAAK,YAAalB,GAAY,CAAEA,EAAQ,MAAQ,EAAM,CAAC,EAEvD,KAAK,SAAA,EAEL,KAAK,QAAQ,IAAI,EACjB,KAAK,OAAO,OAAO,IAAI,EACzB,CAEO,OAAQ,CACb,KAAK,YAAaA,GAAYA,EAAQ,OAAO,EAC7C,KAAK,QAAQ,IAAI,CACnB,CAEO,UAAW,CAChB,OAAO,QAAQ,KAAK,QAAQ,EAAE,IAAI,CAAC,CAACc,EAAKd,CAAO,IAAM,CACpD,IAAImB,EAAQnB,EAAQ,SAAA,EAEhB,KAAK,WAAa,KAAK,UAAUc,CAAG,IACtCK,EAAQ,KAAK,UAAUL,CAAG,EAAE,IAAI,GAAK,IAGvCd,EAAQ,MAAQmB,CAClB,CAAC,EAED,KAAK,QAAU,CAAC,KAAK,OAAO,OAC5B,KAAK,QAAQ,IAAI,CACnB,CACF,CC/FA,MAAqBC,CAAgD,CAC3D,OACA,aACA,WAA6B,CAAA,EAE9B,KACA,MAAQ,GACR,MAAQ,GAEf,YAAY,CACV,aAAAC,EACA,KAAAC,EAAO,OACP,WAAAC,CAAA,EACU,CACV,KAAK,KAAOD,EACZ,KAAK,OAASD,EACd,KAAK,aAAeA,EAEhBE,IAAc,KAAK,WAAaA,EACtC,CAEA,IAAI,OAAW,CAAE,OAAO,KAAK,MAAQ,CACrC,IAAI,MAAM5B,EAAU,CAClB,KAAK,MAAQ,GACb,KAAK,OAASA,EACd,KAAK,SAAA,CACP,CAEA,IAAI,WAAY,CAAE,MAAO,GAAQ,KAAK,OAAS,KAAK,MAAQ,CAErD,OAAQ,CACb,KAAK,MAAQ,KAAK,aAClB,KAAK,MAAQ,EACf,CAEO,UAAW,CAChB,MAAM6B,EAAS,KAAK,WACjB,IAAIC,GAAKA,EAAE,IAAI,CAAC,EAChB,OAAO,OAAO,EAEjB,YAAK,MAAQD,EAAO,CAAC,GAAK,GAEnB,KAAK,KACd,CACF,CCzCA,SAASE,EAA8CC,EAA6C,CAClG,OAAO,OAAO,QAAQA,CAAI,EACvB,OAAO,CAACC,EAAKhC,IAAS,CACrB,MAAMkB,EAAMlB,EAAK,CAAC,EACZD,EAAQC,EAAK,CAAC,EAEpB,OAAAgC,EAAId,CAAG,EAAI,IAAIM,EAAYzB,CAAK,EAEzBiC,CACT,EAAG,CAAA,CAAwB,CAC/B,CAEA,SAAwBC,EAAoC,CAC1D,KAAAF,EACA,OAAAnB,EACA,UAAAC,CACF,EAAeqB,EAA0B,CACvC,KAAM,CAAChD,EAAWiD,CAAY,EAAIC,EAAAA,SAChC,IAAI1B,EACFoB,EAAeC,CAAI,EACnBnB,EACAC,CAAA,CACF,EAGFwB,EAAAA,UAAU,IAAM,CACdF,EAAa,IAAIzB,EAAUoB,EAAeC,CAAI,EAAGnB,EAAQC,CAAS,CAAC,CACrE,EAAG,CAAC,GAAGqB,CAAI,CAAC,EAEZ,MAAMI,EAAWP,GAAuB,CACtCI,EAAaI,GAAQ,CACnB,MAAM5B,EAAWoB,EAAK,SAEhBS,EAAe,IAAI9B,EAAUC,EAAUC,EAAQC,CAAS,EAC9D,OAAA2B,EAAa,QAAUD,EAAK,QAErBC,CACT,CAAC,CACH,EAEA,OAAAtD,EAAU,QAAUoD,EAEbpD,CACT"}
@@ -0,0 +1,2 @@
1
+ import{createContext as v,useContext as y,cloneElement as m,useState as g,useEffect as b}from"react";import{jsxs as C,jsx as c}from"react/jsx-runtime";const p=v(null);function j({formGroup:s,debug:t=!1,children:e,...r}){const n=a=>{a.preventDefault(),s.submit()};return C(p,{value:s,children:[c("form",{...r,style:{width:"100%",...r.style},onSubmit:n,noValidate:!0,children:e}),t&&c("pre",{style:{width:"100%",maxHeight:350,padding:15,borderRadius:4,overflow:"auto",color:"#333",background:"#e5e5e5",boxShadow:"0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24)"},children:JSON.stringify(s,null,2)})]})}function x(){const s=y(p);if(!s)throw new Error("useFormGroup must be used inside <FormProvider> (or <Form />).");return s}function F(s){const t=x();return{control:t.controls[s],update:n=>{t.setValues(a=>(a[s]=n,a))}}}function k({controlName:s,field:t,action:e="input"}){const{control:r,update:n}=F(s);return(i=>{const u=o=>["radio","checkbox"].includes(o.type)?o.target.checked:o.target.value;return m(i,{onBlur:o=>{e==="blur"&&n(u(o)),i.props.onBlur&&i.props.onBlur(o)},onInput:o=>{e==="input"&&n(u(o)),i.props.onInput&&i.props.onInput(o)},onChange:o=>{e==="change"&&n(u(o)),i.props.onChange&&i.props.onChange(o)}})})(t(r))}class l{constructor(t,e,r){this.controls=t,this.handle=e,this.validator=r}controls;handle;validator;_valid=!1;_hydrate;get hydrate(){return this._hydrate}set hydrate(t){this._hydrate=t}get isValid(){return this._valid}set isValid(t){this._valid=t}get errors(){return Object.values(this.controls).filter(t=>t.error)}get values(){const t={};return this.eachControl((e,r)=>({[r]:e.value})).forEach(e=>{for(const r in e)t[r]=e[r]}),t}setValues(t){const e=typeof t=="function"?t(this.values):t;for(const r of Object.keys(e))this.controls[r].value=e[r];this.validate(),this.hydrate(this),this.handle.change&&this.handle.change(this)}eachControl(t){return Object.keys(this.controls).map(e=>t(this.controls[e],e))}submit(){this.handle.submit&&(this.eachControl(t=>{t.dirty=!0}),this.validate(),this.hydrate(this),this.handle.submit(this))}reset(){this.eachControl(t=>t.reset()),this.hydrate(this)}validate(){Object.entries(this.controls).map(([t,e])=>{let r=e.validate();this.validator&&this.validator[t]&&(r=this.validator[t](this)||""),e.error=r}),this.isValid=!this.errors.length,this.hydrate(this)}}class w{_value;defaultValue;validators=[];type;error="";dirty=!1;constructor({defaultValue:t,type:e="text",validators:r}){this.type=e,this._value=t,this.defaultValue=t,r&&(this.validators=r)}get value(){return this._value}set value(t){this.dirty=!0,this._value=t,this.validate()}get isInvalid(){return!!(this.dirty&&this.error)}reset(){this.value=this.defaultValue,this.dirty=!1}validate(){const t=this.validators.map(e=>e(this)).filter(Boolean);return this.error=t[0]||"",this.error}}function d(s){return Object.entries(s).reduce((t,e)=>{const r=e[0],n=e[1];return t[r]=new w(n),t},{})}function O({form:s,handle:t,validator:e},r){const[n,a]=g(new l(d(s),t,e));b(()=>{a(new l(d(s),t,e))},[...r]);const i=u=>{a(o=>{const f=u.controls,h=new l(f,t,e);return h.hydrate=o.hydrate,h})};return n.hydrate=i,n}export{k as C,j as F,O as a,x as b,F as u};
2
+ //# sourceMappingURL=useForm-iwGfb88g.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useForm-3oClzOJC.js","sources":["../../src/lab/Form/Form.tsx","../../src/lab/Form/useFormGroup.ts","../../src/lab/Form/useControl.ts","../../src/lab/Form/Control.tsx","../../src/lab/Form/FormGroup.ts","../../src/lab/Form/FormControl.ts","../../src/lab/Form/useForm.ts"],"sourcesContent":["import { createContext, SubmitEvent, HTMLAttributes } from 'react';\n\nimport type FormGroup from './FormGroup';\n\nexport const FormContext = createContext<FormGroup<any> | null>(null);\n\ninterface FormProps<T extends Record<string, any>> extends HTMLAttributes<HTMLFormElement> {\n formGroup: FormGroup<T>;\n debug?: boolean;\n}\n\nexport default function Form<T extends Record<string, any>>({\n formGroup,\n debug = false,\n children,\n ...props\n}: FormProps<T>) {\n const submit = (event: SubmitEvent<HTMLFormElement>) => {\n event.preventDefault();\n formGroup.submit();\n };\n\n return (\n <FormContext value={formGroup}>\n <form\n {...props}\n style={{ width: '100%', ...props.style }}\n onSubmit={submit}\n noValidate\n >\n {children}\n </form>\n {\n debug && (\n <pre style={{\n width: '100%',\n maxHeight: 350,\n padding: 15,\n borderRadius: 4,\n overflow: 'auto',\n color: '#333',\n background: '#e5e5e5',\n boxShadow: '0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24)',\n }}>\n {JSON.stringify(formGroup, null, 2)}\n </pre>\n )\n }\n </FormContext>\n );\n}","import { useContext } from 'react';\n\nimport type FormGroup from './FormGroup';\nimport { FormContext } from './Form';\n\nexport default function useFormGroup<T extends Record<string, any>>() {\n const context = useContext(FormContext);\n\n if (!context) throw new Error('useFormGroup must be used inside <FormProvider> (or <Form />).');\n\n return context as FormGroup<T>;\n}","import useFormGroup from './useFormGroup';\n\nexport default function useControl<\n T extends Record<string, any>,\n K extends keyof T = keyof T,\n>(controlName: K) {\n const formGroup = useFormGroup<T>();\n const control = formGroup.controls[controlName];\n\n const update = (value: T[K]) => {\n formGroup.setValues((data) => {\n data[controlName] = value;\n\n return data;\n });\n };\n\n return { control, update };\n}","import { ChangeEvent, cloneElement, InputEvent, InputHTMLAttributes, ReactElement } from 'react';\n\nimport useControl from './useControl';\nimport type { AbstractControl } from './AbstractControl';\n\ninterface ControlProps<\n T extends Record<string, any>,\n K extends keyof T,\n> {\n controlName: K;\n action?: 'change' | 'input' | 'blur';\n field: (control: AbstractControl<T>[K]) => React.JSX.Element;\n}\n\nexport default function Control<\n T extends Record<string, any>,\n K extends keyof T\n>({\n controlName,\n field,\n action = 'input'\n}: ControlProps<T, K>) {\n const { control, update } = useControl<T, K>(controlName);\n\n const renderChildren = (child: ReactElement<InputHTMLAttributes<HTMLInputElement>>) => {\n const getValue = (e: ChangeEvent<HTMLInputElement> | InputEvent<HTMLInputElement>) => {\n if (['radio', 'checkbox'].includes(e.type)) { return e.target['checked']; }\n\n return e.target['value'];\n };\n\n return cloneElement(child, {\n onBlur: (e) => {\n if (action === 'blur') { update(getValue(e)); };\n\n if (child.props.onBlur) { child.props.onBlur(e); }\n },\n onInput: (e) => {\n if (action === 'input') { update(getValue(e)); };\n\n if (child.props.onInput) { child.props.onInput(e); }\n },\n onChange: (e) => {\n if (action === 'change') { update(getValue(e)); };\n\n if (child.props.onChange) { child.props.onChange(e); }\n },\n });\n };\n\n return (\n renderChildren(field(control))\n );\n}","import type { AbstractControl } from './AbstractControl';\nimport type FormControl from './FormControl';\n\ntype Hydrate<T extends Record<string, any>> = (data: FormGroup<T>) => void;\ntype SetValues<F> = Partial<F> | ((values: F) => Partial<F>);\n\nexport type Validator<T extends Record<string, any>> = Partial<{\n [K in keyof T]: (data: FormGroup<T>) => string | void;\n}>\n\nexport interface Handle<T extends Record<string, any>> {\n change?: (form: FormGroup<T>) => void;\n submit?: (form: FormGroup<T>) => void;\n}\n\nexport default class FormGroup<T extends Record<string, any>> {\n private _valid = false;\n private _hydrate!: Hydrate<T>;\n\n constructor(\n public controls: AbstractControl<T>,\n public handle: Handle<T>,\n public validator?: Validator<T>,\n ) { }\n\n /**\n * Atualiza o estado interno do componente.\n * @private\n * @description Este método é usado internamente pela biblioteca.\n * Para atualizar valores externamente, use {@link setValues}.\n*/\n get hydrate() { return this._hydrate; }\n set hydrate(fn: (values: FormGroup<T>) => any) { this._hydrate = fn; }\n\n get isValid(): boolean { return this._valid; }\n set isValid(validity: boolean) { this._valid = validity; }\n\n get errors() {\n return Object.values<FormControl<T[keyof T]>>(this.controls)\n .filter(c => c.error);\n }\n\n get values(): T {\n const values: Record<string, any> = {};\n\n this.eachControl((control, key) => ({ [key as string]: control.value }))\n .forEach(control => { for (const prop in control) { values[prop] = control[prop]; } });\n\n return values as T;\n }\n\n public setValues(fn: SetValues<T>): void;\n public setValues(partialForm: Partial<T>): void;\n public setValues(arg: Partial<T> | SetValues<T>) {\n const partial =\n typeof arg === 'function'\n ? arg(this.values)\n : arg;\n\n for (const key of Object.keys(partial)) {\n this.controls[key].value = partial[key] as T[keyof T];\n }\n\n this.validate();\n\n this.hydrate(this);\n\n if (!this.handle.change) { return; }\n\n this.handle.change(this);\n }\n\n private eachControl(fn: <K extends keyof T>(control: FormControl<T[K]>, key?: K) => any) {\n return Object.keys(this.controls).map(k => fn(this.controls[k], k));\n }\n\n public submit() {\n if (!this.handle.submit) { return; }\n\n this.eachControl((control) => { control.dirty = true; });\n\n this.validate();\n\n this.hydrate(this);\n this.handle.submit(this);\n }\n\n public reset() {\n this.eachControl((control) => control.reset());\n this.hydrate(this);\n }\n\n public validate() {\n Object.entries(this.controls).map(([key, control]) => {\n let error = control.validate();\n\n if (this.validator && this.validator[key]) {\n error = this.validator[key](this) || '';\n }\n\n control.error = error;\n });\n\n this.isValid = !this.errors.length;\n this.hydrate(this);\n }\n}","type Type = 'text' | 'email';\ntype Validator<C> = (control: FormControl<C>) => string | false | void;\n\ntype Data<T> = {\n defaultValue: T;\n type?: Type;\n validators?: Validator<T>[];\n}\n\nexport type Constructor<V> = ConstructorParameters<typeof FormControl<V>>[number];\n\nexport default class FormControl<V> implements Pick<Data<V>, 'type'> {\n private _value!: V;\n private defaultValue: V;\n private validators: Validator<V>[] = [];\n\n public type: Type;\n public error = '';\n public dirty = false;\n\n constructor({\n defaultValue,\n type = 'text',\n validators,\n }: Data<V>) {\n this.type = type;\n this._value = defaultValue;\n this.defaultValue = defaultValue;\n\n if (validators) { this.validators = validators; }\n }\n\n get value(): V { return this._value; }\n set value(value: V) {\n this.dirty = true;\n this._value = value;\n this.validate();\n }\n\n get isInvalid() { return Boolean(this.dirty && this.error); }\n\n public reset() {\n this.value = this.defaultValue;\n this.dirty = false;\n }\n\n public validate() {\n const errors = this.validators\n .map(v => v(this))\n .filter(Boolean);\n\n this.error = errors[0] || '';\n\n return this.error;\n }\n}\n","import { useState } from 'react';\n\nimport FormGroup from './FormGroup';\nimport FormControl from './FormControl';\nimport type { Constructor } from './FormControl';\nimport type { Handle, Validator } from './FormGroup';\nimport type { AbstractControl } from './AbstractControl';\n\ntype UseForm<T extends Record<string, any>> = {\n form: { [K in keyof T]: Constructor<T[K]> };\n handle: Handle<T>;\n validator?: Validator<T>;\n}\n\nfunction makingControls<T extends Record<string, any>>(form: { [K in keyof T]: Constructor<T[K]> }) {\n return Object.entries(form)\n .reduce((acc, data) => {\n const key = data[0] as keyof T;\n const value = data[1] as Constructor<T[keyof T]>;\n\n acc[key] = new FormControl(value);\n\n return acc;\n }, {} as AbstractControl<T>);\n}\n\nexport default function useForm<T extends Record<any, any>>({\n form,\n handle,\n validator\n}: UseForm<T>) {\n const [formGroup, setFormGroup] = useState<FormGroup<T>>(\n new FormGroup(\n makingControls(form),\n handle,\n validator\n )\n );\n\n const hydrate = (form: FormGroup<T>) => {\n setFormGroup(prev => {\n const controls = form.controls;\n\n const newFormGroup = new FormGroup(controls, handle, validator);\n newFormGroup.hydrate = prev.hydrate;\n\n return newFormGroup;\n });\n };\n\n formGroup.hydrate = hydrate;\n\n return formGroup;\n}"],"names":["FormContext","createContext","Form","formGroup","debug","children","props","submit","event","jsxs","jsx","useFormGroup","context","useContext","useControl","controlName","value","data","Control","field","action","control","update","child","getValue","e","cloneElement","FormGroup","controls","handle","validator","fn","validity","c","values","key","prop","arg","partial","k","error","FormControl","defaultValue","type","validators","errors","v","makingControls","form","acc","useForm","setFormGroup","useState","hydrate","prev","newFormGroup"],"mappings":"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"}
1
+ {"version":3,"file":"useForm-iwGfb88g.js","sources":["../../src/lab/Form/Form.tsx","../../src/lab/Form/useFormGroup.ts","../../src/lab/Form/useControl.ts","../../src/lab/Form/Control.tsx","../../src/lab/Form/FormGroup.ts","../../src/lab/Form/FormControl.ts","../../src/lab/Form/useForm.ts"],"sourcesContent":["import { createContext, SubmitEvent, HTMLAttributes } from 'react';\n\nimport type FormGroup from './FormGroup';\n\nexport const FormContext = createContext<FormGroup<any> | null>(null);\n\ninterface FormProps<T extends Record<string, any>> extends HTMLAttributes<HTMLFormElement> {\n formGroup: FormGroup<T>;\n debug?: boolean;\n}\n\nexport default function Form<T extends Record<string, any>>({\n formGroup,\n debug = false,\n children,\n ...props\n}: FormProps<T>) {\n const submit = (event: SubmitEvent<HTMLFormElement>) => {\n event.preventDefault();\n formGroup.submit();\n };\n\n return (\n <FormContext value={formGroup}>\n <form\n {...props}\n style={{ width: '100%', ...props.style }}\n onSubmit={submit}\n noValidate\n >\n {children}\n </form>\n {\n debug && (\n <pre style={{\n width: '100%',\n maxHeight: 350,\n padding: 15,\n borderRadius: 4,\n overflow: 'auto',\n color: '#333',\n background: '#e5e5e5',\n boxShadow: '0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24)',\n }}>\n {JSON.stringify(formGroup, null, 2)}\n </pre>\n )\n }\n </FormContext>\n );\n}","import { useContext } from 'react';\n\nimport type FormGroup from './FormGroup';\nimport { FormContext } from './Form';\n\nexport default function useFormGroup<T extends Record<string, any>>() {\n const context = useContext(FormContext);\n\n if (!context) throw new Error('useFormGroup must be used inside <FormProvider> (or <Form />).');\n\n return context as FormGroup<T>;\n}","import useFormGroup from './useFormGroup';\n\nexport default function useControl<\n T extends Record<string, any>,\n K extends keyof T = keyof T,\n>(controlName: K) {\n const formGroup = useFormGroup<T>();\n const control = formGroup.controls[controlName];\n\n const update = (value: T[K]) => {\n formGroup.setValues((data) => {\n data[controlName] = value;\n\n return data;\n });\n };\n\n return { control, update };\n}","import { ChangeEvent, cloneElement, InputEvent, InputHTMLAttributes, ReactElement } from 'react';\n\nimport useControl from './useControl';\nimport type { AbstractControl } from './AbstractControl';\n\ninterface ControlProps<\n T extends Record<string, any>,\n K extends keyof T,\n> {\n controlName: K;\n action?: 'change' | 'input' | 'blur';\n field: (control: AbstractControl<T>[K]) => React.JSX.Element;\n}\n\nexport default function Control<\n T extends Record<string, any>,\n K extends keyof T\n>({\n controlName,\n field,\n action = 'input'\n}: ControlProps<T, K>) {\n const { control, update } = useControl<T, K>(controlName);\n\n const renderChildren = (child: ReactElement<InputHTMLAttributes<HTMLInputElement>>) => {\n const getValue = (e: ChangeEvent<HTMLInputElement> | InputEvent<HTMLInputElement>) => {\n if (['radio', 'checkbox'].includes(e.type)) { return e.target['checked']; }\n\n return e.target['value'];\n };\n\n return cloneElement(child, {\n onBlur: (e) => {\n if (action === 'blur') { update(getValue(e)); };\n\n if (child.props.onBlur) { child.props.onBlur(e); }\n },\n onInput: (e) => {\n if (action === 'input') { update(getValue(e)); };\n\n if (child.props.onInput) { child.props.onInput(e); }\n },\n onChange: (e) => {\n if (action === 'change') { update(getValue(e)); };\n\n if (child.props.onChange) { child.props.onChange(e); }\n },\n });\n };\n\n return (\n renderChildren(field(control))\n );\n}","import type { AbstractControl } from './AbstractControl';\nimport type FormControl from './FormControl';\n\ntype Hydrate<T extends Record<string, any>> = (data: FormGroup<T>) => void;\ntype SetValues<F> = Partial<F> | ((values: F) => Partial<F>);\n\nexport type Validator<T extends Record<string, any>> = Partial<{\n [K in keyof T]: (data: FormGroup<T>) => string | void;\n}>\n\nexport interface Handle<T extends Record<string, any>> {\n change?: (form: FormGroup<T>) => void;\n submit?: (form: FormGroup<T>) => void;\n}\n\nexport default class FormGroup<T extends Record<string, any>> {\n private _valid = false;\n private _hydrate!: Hydrate<T>;\n\n constructor(\n public controls: AbstractControl<T>,\n public handle: Handle<T>,\n public validator?: Validator<T>,\n ) { }\n\n /**\n * Atualiza o estado interno do componente.\n * @private\n * @description Este método é usado internamente pela biblioteca.\n * Para atualizar valores externamente, use {@link setValues}.\n*/\n get hydrate() { return this._hydrate; }\n set hydrate(fn: (values: FormGroup<T>) => any) { this._hydrate = fn; }\n\n get isValid(): boolean { return this._valid; }\n set isValid(validity: boolean) { this._valid = validity; }\n\n get errors() {\n return Object.values<FormControl<T[keyof T]>>(this.controls)\n .filter(c => c.error);\n }\n\n get values(): T {\n const values: Record<string, any> = {};\n\n this.eachControl((control, key) => ({ [key as string]: control.value }))\n .forEach(control => { for (const prop in control) { values[prop] = control[prop]; } });\n\n return values as T;\n }\n\n public setValues(fn: SetValues<T>): void;\n public setValues(partialForm: Partial<T>): void;\n public setValues(arg: Partial<T> | SetValues<T>) {\n const partial =\n typeof arg === 'function'\n ? arg(this.values)\n : arg;\n\n for (const key of Object.keys(partial)) {\n this.controls[key].value = partial[key] as T[keyof T];\n }\n\n this.validate();\n\n this.hydrate(this);\n\n if (!this.handle.change) { return; }\n\n this.handle.change(this);\n }\n\n private eachControl(fn: <K extends keyof T>(control: FormControl<T[K]>, key?: K) => any) {\n return Object.keys(this.controls).map(k => fn(this.controls[k], k));\n }\n\n public submit() {\n if (!this.handle.submit) { return; }\n\n this.eachControl((control) => { control.dirty = true; });\n\n this.validate();\n\n this.hydrate(this);\n this.handle.submit(this);\n }\n\n public reset() {\n this.eachControl((control) => control.reset());\n this.hydrate(this);\n }\n\n public validate() {\n Object.entries(this.controls).map(([key, control]) => {\n let error = control.validate();\n\n if (this.validator && this.validator[key]) {\n error = this.validator[key](this) || '';\n }\n\n control.error = error;\n });\n\n this.isValid = !this.errors.length;\n this.hydrate(this);\n }\n}","type Type = 'text' | 'email';\ntype Validator<C> = (control: FormControl<C>) => string | false | void;\n\ntype Data<T> = {\n defaultValue: T;\n type?: Type;\n validators?: Validator<T>[];\n}\n\nexport type Constructor<V> = ConstructorParameters<typeof FormControl<V>>[number];\n\nexport default class FormControl<V> implements Pick<Data<V>, 'type'> {\n private _value!: V;\n private defaultValue: V;\n private validators: Validator<V>[] = [];\n\n public type: Type;\n public error = '';\n public dirty = false;\n\n constructor({\n defaultValue,\n type = 'text',\n validators,\n }: Data<V>) {\n this.type = type;\n this._value = defaultValue;\n this.defaultValue = defaultValue;\n\n if (validators) { this.validators = validators; }\n }\n\n get value(): V { return this._value; }\n set value(value: V) {\n this.dirty = true;\n this._value = value;\n this.validate();\n }\n\n get isInvalid() { return Boolean(this.dirty && this.error); }\n\n public reset() {\n this.value = this.defaultValue;\n this.dirty = false;\n }\n\n public validate() {\n const errors = this.validators\n .map(v => v(this))\n .filter(Boolean);\n\n this.error = errors[0] || '';\n\n return this.error;\n }\n}\n","import { useEffect, useState } from 'react';\n\nimport FormGroup from './FormGroup';\nimport FormControl from './FormControl';\nimport type { Constructor } from './FormControl';\nimport type { Handle, Validator } from './FormGroup';\nimport type { AbstractControl } from './AbstractControl';\n\ntype UseForm<T extends Record<string, any>> = {\n form: { [K in keyof T]: Constructor<T[K]> };\n handle: Handle<T>;\n validator?: Validator<T>;\n}\n\nfunction makingControls<T extends Record<string, any>>(form: { [K in keyof T]: Constructor<T[K]> }) {\n return Object.entries(form)\n .reduce((acc, data) => {\n const key = data[0] as keyof T;\n const value = data[1] as Constructor<T[keyof T]>;\n\n acc[key] = new FormControl(value);\n\n return acc;\n }, {} as AbstractControl<T>);\n}\n\nexport default function useForm<T extends Record<any, any>>({\n form,\n handle,\n validator\n}: UseForm<T>, deps: readonly unknown[]) {\n const [formGroup, setFormGroup] = useState<FormGroup<T>>(\n new FormGroup(\n makingControls(form),\n handle,\n validator\n )\n );\n\n useEffect(() => {\n setFormGroup(new FormGroup(makingControls(form), handle, validator));\n }, [...deps]);\n\n const hydrate = (form: FormGroup<T>) => {\n setFormGroup(prev => {\n const controls = form.controls;\n\n const newFormGroup = new FormGroup(controls, handle, validator);\n newFormGroup.hydrate = prev.hydrate;\n\n return newFormGroup;\n });\n };\n\n formGroup.hydrate = hydrate;\n\n return formGroup;\n}"],"names":["FormContext","createContext","Form","formGroup","debug","children","props","submit","event","jsxs","jsx","useFormGroup","context","useContext","useControl","controlName","value","data","Control","field","action","control","update","child","getValue","e","cloneElement","FormGroup","controls","handle","validator","fn","validity","c","values","key","prop","arg","partial","k","error","FormControl","defaultValue","type","validators","errors","v","makingControls","form","acc","useForm","deps","setFormGroup","useState","useEffect","hydrate","prev","newFormGroup"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("../../chunks/Alert-c5rRrf_E.cjs");require("react/jsx-runtime");require("react");require("../../chunks/index-DYxwT4uW.cjs");require("../../chunks/joinClass-Jk3EszKD.cjs");require("../../chunks/useTheme-DhX2tM8O.cjs");require("../../chunks/generateSupportColors-CTMoGhDf.cjs");require("../../chunks/Stack-DsVkiTT_.cjs");require("../../chunks/createComponent-BBXW0GJ6.cjs");require("../../chunks/Typography-C7B3jwUf.cjs");require("../../chunks/convertPathToColor-D8eBpd_D.cjs");require("../../chunks/ButtonIcon-QfMInabj.cjs");require("../../chunks/Ripple-Dy4i91j1.cjs");require("../../chunks/Icon-D5fDXkwG.cjs");exports.default=e.Alert;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("../../chunks/Alert-Cc5S-AfT.cjs");require("react/jsx-runtime");require("react");require("../../chunks/index-DYxwT4uW.cjs");require("../../chunks/joinClass-Jk3EszKD.cjs");require("../../chunks/useTheme-DhX2tM8O.cjs");require("../../chunks/generateSupportColors-CTMoGhDf.cjs");require("../../chunks/Stack-DsVkiTT_.cjs");require("../../chunks/createComponent-BBXW0GJ6.cjs");require("../../chunks/Typography-C7B3jwUf.cjs");require("../../chunks/convertPathToColor-D8eBpd_D.cjs");require("../../chunks/ButtonIcon-B-M87M5L.cjs");require("../../chunks/Ripple-Dy4i91j1.cjs");require("../../chunks/Icon-Dv3oduiN.cjs");exports.default=e.Alert;
2
2
  //# sourceMappingURL=index.cjs.map
@@ -1,2 +1,2 @@
1
- import{A as b}from"../../chunks/Alert-CxSNWq4w.js";import"react/jsx-runtime";import"react";import"../../chunks/index-CZ41y9Hn.js";import"../../chunks/joinClass-anSpaauN.js";import"../../chunks/useTheme-g5gOUmLf.js";import"../../chunks/generateSupportColors-BN5t8dA-.js";import"../../chunks/Stack-D0feJnm7.js";import"../../chunks/createComponent-DZqrA_Tp.js";import"../../chunks/Typography-hazfs4Ye.js";import"../../chunks/convertPathToColor-DtOjH4ZP.js";import"../../chunks/ButtonIcon-Cad6goHv.js";import"../../chunks/Ripple-Bq9bxg4k.js";import"../../chunks/Icon-BGZ3K3Nf.js";export{b as default};
1
+ import{A as b}from"../../chunks/Alert-DJexLc9y.js";import"react/jsx-runtime";import"react";import"../../chunks/index-CZ41y9Hn.js";import"../../chunks/joinClass-anSpaauN.js";import"../../chunks/useTheme-g5gOUmLf.js";import"../../chunks/generateSupportColors-BN5t8dA-.js";import"../../chunks/Stack-D0feJnm7.js";import"../../chunks/createComponent-DZqrA_Tp.js";import"../../chunks/Typography-hazfs4Ye.js";import"../../chunks/convertPathToColor-DtOjH4ZP.js";import"../../chunks/ButtonIcon-D0YH7wS6.js";import"../../chunks/Ripple-Bq9bxg4k.js";import"../../chunks/Icon-0KfCwKWR.js";export{b as default};
2
2
  //# sourceMappingURL=index.js.map
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const o=require("react/jsx-runtime"),t=require("../../chunks/index-DYxwT4uW.cjs"),f=require("../../chunks/joinClass-Jk3EszKD.cjs"),d=require("../../chunks/Ripple-Dy4i91j1.cjs"),g=require("../../chunks/createComponent-BBXW0GJ6.cjs"),v=require("../../chunks/Icon-D5fDXkwG.cjs"),x=require("../../chunks/Typography-C7B3jwUf.cjs");require("react");require("../../chunks/useTheme-DhX2tM8O.cjs");require("../../chunks/generateSupportColors-CTMoGhDf.cjs");require("../../chunks/convertPathToColor-D8eBpd_D.cjs");function s(e){return e.normalize("NFD").trim().toLowerCase().replace(/a-zA-Z0-9_.-+/g,"").replace(/_/g,"").replace(/[^\w\s]/gi,"")}function m(e){const a=e.trim().split(" "),i=a.length===1,r=s(a[0]).charAt(0).toLocaleUpperCase(),c=i?s(a[0]).charAt(1).toLocaleUpperCase():s(a.reverse()[0]).charAt(0).toLocaleUpperCase();return r+c}function y({src:e,alt:a,name:i,size:r=40,variant:c="circular",color:u="primary",icon:l,...n}){const h=f.joinClass(`${t.prefix}-avatar`,`${t.prefix}-avatar--${c}`,`${t.prefix}-avatar--${u}`,e&&`${t.prefix}-avatar--image`,i&&`${t.prefix}-avatar--name`,!e&&!i||l&&`${t.prefix}-avatar--icon`,n.onClick&&`${t.prefix}-avatar--clickable`,n.className),p=()=>e?o.jsx("img",{src:e,alt:a,width:r,height:r,sizes:"100vw",loading:"lazy",style:{width:"100%",height:"auto"}}):i?o.jsx(x.Typography,{style:{fontSize:r/2,color:"currentColor"},children:m(i)}):l||o.jsx(v.Icon,{name:"user",size:r/1.6,style:{color:"currentColor"}});return o.jsxs("div",{...n,style:{width:r,height:r,...n.style},className:h,children:[p(),n.children,n.onClick&&o.jsx(d.Ripple,{})]})}const C=g.createComponent(y);exports.default=C;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const o=require("react/jsx-runtime"),t=require("../../chunks/index-DYxwT4uW.cjs"),f=require("../../chunks/joinClass-Jk3EszKD.cjs"),d=require("../../chunks/Ripple-Dy4i91j1.cjs"),g=require("../../chunks/createComponent-BBXW0GJ6.cjs"),v=require("../../chunks/Icon-Dv3oduiN.cjs"),x=require("../../chunks/Typography-C7B3jwUf.cjs");require("react");require("../../chunks/useTheme-DhX2tM8O.cjs");require("../../chunks/generateSupportColors-CTMoGhDf.cjs");require("../../chunks/convertPathToColor-D8eBpd_D.cjs");function s(e){return e.normalize("NFD").trim().toLowerCase().replace(/a-zA-Z0-9_.-+/g,"").replace(/_/g,"").replace(/[^\w\s]/gi,"")}function m(e){const a=e.trim().split(" "),i=a.length===1,r=s(a[0]).charAt(0).toLocaleUpperCase(),c=i?s(a[0]).charAt(1).toLocaleUpperCase():s(a.reverse()[0]).charAt(0).toLocaleUpperCase();return r+c}function y({src:e,alt:a,name:i,size:r=40,variant:c="circular",color:u="primary",icon:l,...n}){const h=f.joinClass(`${t.prefix}-avatar`,`${t.prefix}-avatar--${c}`,`${t.prefix}-avatar--${u}`,e&&`${t.prefix}-avatar--image`,i&&`${t.prefix}-avatar--name`,!e&&!i||l&&`${t.prefix}-avatar--icon`,n.onClick&&`${t.prefix}-avatar--clickable`,n.className),p=()=>e?o.jsx("img",{src:e,alt:a,width:r,height:r,sizes:"100vw",loading:"lazy",style:{width:"100%",height:"auto"}}):i?o.jsx(x.Typography,{style:{fontSize:r/2,color:"currentColor"},children:m(i)}):l||o.jsx(v.Icon,{name:"user",size:r/1.6,style:{color:"currentColor"}});return o.jsxs("div",{...n,style:{width:r,height:r,...n.style},className:h,children:[p(),n.children,n.onClick&&o.jsx(d.Ripple,{})]})}const C=g.createComponent(y);exports.default=C;
2
2
  //# sourceMappingURL=index.cjs.map
@@ -1,2 +1,2 @@
1
- import{jsxs as h,jsx as n}from"react/jsx-runtime";import{p as r}from"../../chunks/index-CZ41y9Hn.js";import{j as u}from"../../chunks/joinClass-anSpaauN.js";import{R as g}from"../../chunks/Ripple-Bq9bxg4k.js";import{c as v}from"../../chunks/createComponent-DZqrA_Tp.js";import{I as d}from"../../chunks/Icon-BGZ3K3Nf.js";import{T as C}from"../../chunks/Typography-hazfs4Ye.js";import"react";import"../../chunks/useTheme-g5gOUmLf.js";import"../../chunks/generateSupportColors-BN5t8dA-.js";import"../../chunks/convertPathToColor-DtOjH4ZP.js";function s(t){return t.normalize("NFD").trim().toLowerCase().replace(/a-zA-Z0-9_.-+/g,"").replace(/_/g,"").replace(/[^\w\s]/gi,"")}function y(t){const e=t.trim().split(" "),o=e.length===1,a=s(e[0]).charAt(0).toLocaleUpperCase(),l=o?s(e[0]).charAt(1).toLocaleUpperCase():s(e.reverse()[0]).charAt(0).toLocaleUpperCase();return a+l}function $({src:t,alt:e,name:o,size:a=40,variant:l="circular",color:m="primary",icon:c,...i}){const p=u(`${r}-avatar`,`${r}-avatar--${l}`,`${r}-avatar--${m}`,t&&`${r}-avatar--image`,o&&`${r}-avatar--name`,!t&&!o||c&&`${r}-avatar--icon`,i.onClick&&`${r}-avatar--clickable`,i.className),f=()=>t?n("img",{src:t,alt:e,width:a,height:a,sizes:"100vw",loading:"lazy",style:{width:"100%",height:"auto"}}):o?n(C,{style:{fontSize:a/2,color:"currentColor"},children:y(o)}):c||n(d,{name:"user",size:a/1.6,style:{color:"currentColor"}});return h("div",{...i,style:{width:a,height:a,...i.style},className:p,children:[f(),i.children,i.onClick&&n(g,{})]})}const R=v($);export{R as default};
1
+ import{jsxs as h,jsx as n}from"react/jsx-runtime";import{p as r}from"../../chunks/index-CZ41y9Hn.js";import{j as u}from"../../chunks/joinClass-anSpaauN.js";import{R as g}from"../../chunks/Ripple-Bq9bxg4k.js";import{c as v}from"../../chunks/createComponent-DZqrA_Tp.js";import{I as d}from"../../chunks/Icon-0KfCwKWR.js";import{T as C}from"../../chunks/Typography-hazfs4Ye.js";import"react";import"../../chunks/useTheme-g5gOUmLf.js";import"../../chunks/generateSupportColors-BN5t8dA-.js";import"../../chunks/convertPathToColor-DtOjH4ZP.js";function s(t){return t.normalize("NFD").trim().toLowerCase().replace(/a-zA-Z0-9_.-+/g,"").replace(/_/g,"").replace(/[^\w\s]/gi,"")}function y(t){const e=t.trim().split(" "),o=e.length===1,a=s(e[0]).charAt(0).toLocaleUpperCase(),l=o?s(e[0]).charAt(1).toLocaleUpperCase():s(e.reverse()[0]).charAt(0).toLocaleUpperCase();return a+l}function $({src:t,alt:e,name:o,size:a=40,variant:l="circular",color:m="primary",icon:c,...i}){const p=u(`${r}-avatar`,`${r}-avatar--${l}`,`${r}-avatar--${m}`,t&&`${r}-avatar--image`,o&&`${r}-avatar--name`,!t&&!o||c&&`${r}-avatar--icon`,i.onClick&&`${r}-avatar--clickable`,i.className),f=()=>t?n("img",{src:t,alt:e,width:a,height:a,sizes:"100vw",loading:"lazy",style:{width:"100%",height:"auto"}}):o?n(C,{style:{fontSize:a/2,color:"currentColor"},children:y(o)}):c||n(d,{name:"user",size:a/1.6,style:{color:"currentColor"}});return h("div",{...i,style:{width:a,height:a,...i.style},className:p,children:[f(),i.children,i.onClick&&n(g,{})]})}const R=v($);export{R as default};
2
2
  //# sourceMappingURL=index.js.map
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("../../chunks/ButtonIcon-QfMInabj.cjs");require("react/jsx-runtime");require("react");require("../../chunks/index-DYxwT4uW.cjs");require("../../chunks/joinClass-Jk3EszKD.cjs");require("../../chunks/convertPathToColor-D8eBpd_D.cjs");require("../../chunks/useTheme-DhX2tM8O.cjs");require("../../chunks/generateSupportColors-CTMoGhDf.cjs");require("../../chunks/Ripple-Dy4i91j1.cjs");require("../../chunks/createComponent-BBXW0GJ6.cjs");exports.default=e.ButtonIcon;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("../../chunks/ButtonIcon-B-M87M5L.cjs");require("react/jsx-runtime");require("react");require("../../chunks/index-DYxwT4uW.cjs");require("../../chunks/joinClass-Jk3EszKD.cjs");require("../../chunks/Ripple-Dy4i91j1.cjs");require("../../chunks/createComponent-BBXW0GJ6.cjs");require("../../chunks/useTheme-DhX2tM8O.cjs");require("../../chunks/generateSupportColors-CTMoGhDf.cjs");exports.default=e.ButtonIcon;
2
2
  //# sourceMappingURL=index.cjs.map
@@ -1,2 +1,2 @@
1
- import{B as s}from"../../chunks/ButtonIcon-Cad6goHv.js";import"react/jsx-runtime";import"react";import"../../chunks/index-CZ41y9Hn.js";import"../../chunks/joinClass-anSpaauN.js";import"../../chunks/convertPathToColor-DtOjH4ZP.js";import"../../chunks/useTheme-g5gOUmLf.js";import"../../chunks/generateSupportColors-BN5t8dA-.js";import"../../chunks/Ripple-Bq9bxg4k.js";import"../../chunks/createComponent-DZqrA_Tp.js";export{s as default};
1
+ import{B as l}from"../../chunks/ButtonIcon-D0YH7wS6.js";import"react/jsx-runtime";import"react";import"../../chunks/index-CZ41y9Hn.js";import"../../chunks/joinClass-anSpaauN.js";import"../../chunks/Ripple-Bq9bxg4k.js";import"../../chunks/createComponent-DZqrA_Tp.js";import"../../chunks/useTheme-g5gOUmLf.js";import"../../chunks/generateSupportColors-BN5t8dA-.js";export{l as default};
2
2
  //# sourceMappingURL=index.js.map