@iziui/react 0.0.63-rc → 0.0.65-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.
- package/dist/.types/lab/Form/Form.d.ts.map +1 -1
- package/dist/.types/lab/Form/Form.stories.d.ts.map +1 -1
- package/dist/.types/lab/Form/FormGroup.d.ts.map +1 -1
- package/dist/.types/lab/Form/useForm.d.ts +1 -1
- package/dist/.types/lab/Form/useForm.d.ts.map +1 -1
- package/dist/chunks/{Alert-MsPKPqJS.cjs → Alert-C1vwma3Y.cjs} +2 -2
- package/dist/chunks/{Alert-MsPKPqJS.cjs.map → Alert-C1vwma3Y.cjs.map} +1 -1
- package/dist/chunks/{Alert-DGWFTr3e.js → Alert-Cn-EvcSp.js} +2 -2
- package/dist/chunks/{Alert-DGWFTr3e.js.map → Alert-Cn-EvcSp.js.map} +1 -1
- package/dist/chunks/{Box-DV6szmfA.js → Box-DD-rZ2rr.js} +2 -2
- package/dist/chunks/{Box-DV6szmfA.js.map → Box-DD-rZ2rr.js.map} +1 -1
- package/dist/chunks/{Box-DX4Re8mw.cjs → Box-ut8xLHQT.cjs} +2 -2
- package/dist/chunks/{Box-DX4Re8mw.cjs.map → Box-ut8xLHQT.cjs.map} +1 -1
- package/dist/chunks/{ButtonIcon-BP2upur5.js → ButtonIcon-CsX4oYeI.js} +2 -2
- package/dist/chunks/{ButtonIcon-BP2upur5.js.map → ButtonIcon-CsX4oYeI.js.map} +1 -1
- package/dist/chunks/{ButtonIcon-Bk1sFlaj.cjs → ButtonIcon-Cz8zJH-E.cjs} +2 -2
- package/dist/chunks/{ButtonIcon-Bk1sFlaj.cjs.map → ButtonIcon-Cz8zJH-E.cjs.map} +1 -1
- package/dist/chunks/{Card-CVrUgBCJ.cjs → Card-B8XSgLaD.cjs} +2 -2
- package/dist/chunks/{Card-CVrUgBCJ.cjs.map → Card-B8XSgLaD.cjs.map} +1 -1
- package/dist/chunks/{Card-BjoXz5bX.js → Card-DOsl4_nu.js} +2 -2
- package/dist/chunks/{Card-BjoXz5bX.js.map → Card-DOsl4_nu.js.map} +1 -1
- package/dist/chunks/{CardContent-5JyK0TcD.cjs → CardContent-BivcVoIc.cjs} +2 -2
- package/dist/chunks/{CardContent-5JyK0TcD.cjs.map → CardContent-BivcVoIc.cjs.map} +1 -1
- package/dist/chunks/{CardContent-srKirxQF.js → CardContent-C8ypE7yH.js} +2 -2
- package/dist/chunks/{CardContent-srKirxQF.js.map → CardContent-C8ypE7yH.js.map} +1 -1
- package/dist/chunks/{Drawer-C3RaAzs0.cjs → Drawer-0wOdungj.cjs} +2 -2
- package/dist/chunks/{Drawer-C3RaAzs0.cjs.map → Drawer-0wOdungj.cjs.map} +1 -1
- package/dist/chunks/{Drawer-ijxxjWs1.js → Drawer-D1lAWrdi.js} +2 -2
- package/dist/chunks/{Drawer-ijxxjWs1.js.map → Drawer-D1lAWrdi.js.map} +1 -1
- package/dist/chunks/{Icon-BfSirxGe.js → Icon-CCIgEwA9.js} +2 -2
- package/dist/chunks/{Icon-BfSirxGe.js.map → Icon-CCIgEwA9.js.map} +1 -1
- package/dist/chunks/{Icon-C_2Qoqhh.cjs → Icon-COl2Nhp9.cjs} +2 -2
- package/dist/chunks/{Icon-C_2Qoqhh.cjs.map → Icon-COl2Nhp9.cjs.map} +1 -1
- package/dist/chunks/{MenuButton-ybz5rxD_.cjs → MenuButton-AyzSxRY0.cjs} +2 -2
- package/dist/chunks/{MenuButton-ybz5rxD_.cjs.map → MenuButton-AyzSxRY0.cjs.map} +1 -1
- package/dist/chunks/{MenuButton-DG-M7g1U.js → MenuButton-DLf22r80.js} +2 -2
- package/dist/chunks/{MenuButton-DG-M7g1U.js.map → MenuButton-DLf22r80.js.map} +1 -1
- package/dist/chunks/{Stack-BXkZSPdw.js → Stack-DK5pfu2w.js} +2 -2
- package/dist/chunks/{Stack-BXkZSPdw.js.map → Stack-DK5pfu2w.js.map} +1 -1
- package/dist/chunks/{Stack-Bpv8iA8b.cjs → Stack-beBM7a60.cjs} +2 -2
- package/dist/chunks/{Stack-Bpv8iA8b.cjs.map → Stack-beBM7a60.cjs.map} +1 -1
- package/dist/chunks/{Typography-CPUKMAJT.cjs → Typography-DitZ-9b5.cjs} +2 -2
- package/dist/chunks/{Typography-CPUKMAJT.cjs.map → Typography-DitZ-9b5.cjs.map} +1 -1
- package/dist/chunks/{Typography-BDFesZK7.js → Typography-v-XX3oAk.js} +2 -2
- package/dist/chunks/{Typography-BDFesZK7.js.map → Typography-v-XX3oAk.js.map} +1 -1
- package/dist/chunks/{createComponent-ixuQW53A.cjs → createComponent-CTufIEiN.cjs} +2 -2
- package/dist/chunks/{createComponent-ixuQW53A.cjs.map → createComponent-CTufIEiN.cjs.map} +1 -1
- package/dist/chunks/{createComponent-C6TL60ri.js → createComponent-WNQRXK89.js} +2 -2
- package/dist/chunks/{createComponent-C6TL60ri.js.map → createComponent-WNQRXK89.js.map} +1 -1
- package/dist/chunks/generateSupportColors-BN5t8dA-.js +2 -0
- package/dist/chunks/generateSupportColors-BN5t8dA-.js.map +1 -0
- package/dist/chunks/generateSupportColors-CTMoGhDf.cjs +2 -0
- package/dist/chunks/generateSupportColors-CTMoGhDf.cjs.map +1 -0
- package/dist/chunks/useForm-3oClzOJC.js +2 -0
- package/dist/chunks/useForm-3oClzOJC.js.map +1 -0
- package/dist/chunks/useForm-TyKbw7O8.cjs +2 -0
- package/dist/chunks/useForm-TyKbw7O8.cjs.map +1 -0
- package/dist/chunks/{useMenu-CA-D2bkv.js → useMenu-BNL22pOQ.js} +2 -2
- package/dist/chunks/{useMenu-CA-D2bkv.js.map → useMenu-BNL22pOQ.js.map} +1 -1
- package/dist/chunks/{useMenu-eNouSUEO.cjs → useMenu-C0u9aTiR.cjs} +2 -2
- package/dist/chunks/{useMenu-eNouSUEO.cjs.map → useMenu-C0u9aTiR.cjs.map} +1 -1
- package/dist/chunks/useTheme-DoESyi5h.cjs +2 -0
- package/dist/chunks/useTheme-DoESyi5h.cjs.map +1 -0
- package/dist/chunks/useTheme-njpgklWP.js +2 -0
- package/dist/chunks/useTheme-njpgklWP.js.map +1 -0
- package/dist/components/Alert/index.cjs +1 -1
- package/dist/components/Alert/index.js +1 -1
- package/dist/components/Avatar/index.cjs +1 -1
- package/dist/components/Avatar/index.cjs.map +1 -1
- package/dist/components/Avatar/index.js +1 -1
- package/dist/components/Avatar/index.js.map +1 -1
- package/dist/components/Box/index.cjs +1 -1
- package/dist/components/Box/index.js +1 -1
- package/dist/components/Button/index.cjs +1 -1
- package/dist/components/Button/index.cjs.map +1 -1
- package/dist/components/Button/index.js +1 -1
- package/dist/components/Button/index.js.map +1 -1
- package/dist/components/ButtonIcon/index.cjs +1 -1
- package/dist/components/ButtonIcon/index.js +1 -1
- package/dist/components/Card/index.cjs +1 -1
- package/dist/components/Card/index.js +1 -1
- package/dist/components/Checkbox/index.cjs +1 -1
- package/dist/components/Checkbox/index.cjs.map +1 -1
- package/dist/components/Checkbox/index.js +1 -1
- package/dist/components/Checkbox/index.js.map +1 -1
- package/dist/components/CheckboxGroup/index.cjs +1 -1
- package/dist/components/CheckboxGroup/index.cjs.map +1 -1
- package/dist/components/CheckboxGroup/index.js +1 -1
- package/dist/components/CheckboxGroup/index.js.map +1 -1
- package/dist/components/Chip/index.cjs +1 -1
- package/dist/components/Chip/index.cjs.map +1 -1
- package/dist/components/Chip/index.js +1 -1
- package/dist/components/Chip/index.js.map +1 -1
- package/dist/components/ColorPicker/index.cjs +1 -1
- package/dist/components/ColorPicker/index.cjs.map +1 -1
- package/dist/components/ColorPicker/index.js +1 -1
- package/dist/components/ColorPicker/index.js.map +1 -1
- package/dist/components/Container/index.cjs +1 -1
- package/dist/components/Container/index.cjs.map +1 -1
- package/dist/components/Container/index.js +1 -1
- package/dist/components/Container/index.js.map +1 -1
- package/dist/components/Divider/index.cjs +1 -1
- package/dist/components/Divider/index.cjs.map +1 -1
- package/dist/components/Divider/index.js +1 -1
- package/dist/components/Divider/index.js.map +1 -1
- package/dist/components/Drawer/index.cjs +1 -1
- package/dist/components/Drawer/index.js +1 -1
- package/dist/components/Icon/index.cjs +1 -1
- package/dist/components/Icon/index.js +1 -1
- package/dist/components/Input/index.cjs +1 -1
- package/dist/components/Input/index.cjs.map +1 -1
- package/dist/components/Input/index.js +1 -1
- package/dist/components/Input/index.js.map +1 -1
- package/dist/components/InputFile/index.cjs +1 -1
- package/dist/components/InputFile/index.cjs.map +1 -1
- package/dist/components/InputFile/index.js +1 -1
- package/dist/components/InputFile/index.js.map +1 -1
- package/dist/components/Loading/index.cjs +1 -1
- package/dist/components/Loading/index.cjs.map +1 -1
- package/dist/components/Loading/index.js +1 -1
- package/dist/components/Loading/index.js.map +1 -1
- package/dist/components/Menu/index.cjs +1 -1
- package/dist/components/Menu/index.js +1 -1
- package/dist/components/Modal/index.cjs +1 -1
- package/dist/components/Modal/index.cjs.map +1 -1
- package/dist/components/Modal/index.js +1 -1
- package/dist/components/Modal/index.js.map +1 -1
- package/dist/components/Select/index.cjs +1 -1
- package/dist/components/Select/index.cjs.map +1 -1
- package/dist/components/Select/index.js +1 -1
- package/dist/components/Select/index.js.map +1 -1
- package/dist/components/Skeleton/index.cjs +1 -1
- package/dist/components/Skeleton/index.cjs.map +1 -1
- package/dist/components/Skeleton/index.js +1 -1
- package/dist/components/Skeleton/index.js.map +1 -1
- package/dist/components/Stack/index.cjs +1 -1
- package/dist/components/Stack/index.js +1 -1
- package/dist/components/Switchs/index.cjs +1 -1
- package/dist/components/Switchs/index.cjs.map +1 -1
- package/dist/components/Switchs/index.js +1 -1
- package/dist/components/Switchs/index.js.map +1 -1
- package/dist/components/Table/index.cjs +1 -1
- package/dist/components/Table/index.cjs.map +1 -1
- package/dist/components/Table/index.js +1 -1
- package/dist/components/Table/index.js.map +1 -1
- package/dist/components/Toast/index.cjs +1 -1
- package/dist/components/Toast/index.cjs.map +1 -1
- package/dist/components/Toast/index.js +1 -1
- package/dist/components/Toast/index.js.map +1 -1
- package/dist/components/Tooltip/index.cjs +1 -1
- package/dist/components/Tooltip/index.cjs.map +1 -1
- package/dist/components/Tooltip/index.js +1 -1
- package/dist/components/Tooltip/index.js.map +1 -1
- package/dist/components/Typography/index.cjs +1 -1
- package/dist/components/Typography/index.js +1 -1
- package/dist/core/index.cjs +2 -0
- package/dist/core/index.cjs.map +1 -0
- package/dist/core/index.d.ts +1 -0
- package/dist/core/index.js +2 -0
- package/dist/core/index.js.map +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.js +1 -1
- package/dist/lab/Form/index.cjs +1 -1
- package/dist/lab/Form/index.js +1 -1
- package/dist/theme/index.cjs +1 -1
- package/dist/theme/index.js +1 -1
- package/package.json +6 -1
- package/dist/chunks/useForm-D3kD3cxE.cjs +0 -2
- package/dist/chunks/useForm-D3kD3cxE.cjs.map +0 -1
- package/dist/chunks/useForm-DBk4Of85.js +0 -2
- package/dist/chunks/useForm-DBk4Of85.js.map +0 -1
- package/dist/chunks/useTheme-BkUhhydo.js +0 -2
- package/dist/chunks/useTheme-BkUhhydo.js.map +0 -1
- package/dist/chunks/useTheme-DwBpyW-5.cjs +0 -2
- package/dist/chunks/useTheme-DwBpyW-5.cjs.map +0 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsxs as l,jsx as t}from"react/jsx-runtime";import{useState as
|
|
1
|
+
import{jsxs as l,jsx as t}from"react/jsx-runtime";import{useState as p,useMemo as u,useEffect as w}from"react";import{p as e}from"../../chunks/index-CZ41y9Hn.js";import{j as a}from"../../chunks/joinClass-anSpaauN.js";import{u as x}from"../../chunks/uuid-dGvr9vBZ.js";import{S as $}from"../../chunks/Stack-DK5pfu2w.js";import{c as k}from"../../chunks/createComponent-WNQRXK89.js";import"../../chunks/useTheme-njpgklWP.js";import"../../chunks/generateSupportColors-BN5t8dA-.js";function C({label:r,error:o,helperText:h,color:n="primary",...c}){const[i,m]=p(!!c.checked),_=a(`${e}-switch__checkbox`,`${e}-switch__checkbox--${n}`),d=a(`${e}-switch__label`,o&&`${e}-switch__label--error`),f=a(`${e}-switch__helper-text`,o&&`${e}-switch__helper-text--error`,h&&`${e}-switch__helper-text--visible`),s=u(()=>`${e}-switch-${x()}`,[]);w(()=>{m(!!c.checked)},[c.checked]);const b=()=>{c.onChange&&c.onChange({type:"checkbox",target:{checked:!i}})};return l($,{gap:2,children:[t("label",{htmlFor:s,className:d,children:r}),l("div",{className:`${e}-switch`,children:[t("input",{...c,type:"checkbox",id:s,className:_,onChange:b,checked:i}),t("label",{className:`${e}-switch__box`,htmlFor:s,children:t("span",{className:`${e}-switch__button`})})]}),t("span",{className:f,children:h})]})}const L=k(C);export{L as default};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/fields/Switchs/Switch.tsx"],"sourcesContent":["import { InputHTMLAttributes, useEffect, useMemo, useState } 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 { uuid } from '@iziui/toolkit/uuid';\n\nimport Stack from '@/layout/Stack';\n\nimport createComponent from '../../core/createComponent';\n\nimport '@iziui/styles/components/Switch.scss';\n\nexport interface SwitchProps extends InputHTMLAttributes<HTMLInputElement> {\n label?: string;\n error?: boolean;\n helperText?: string;\n color?: Colors;\n auto?: boolean;\n}\n\nfunction Switch({ label, error, helperText, color = 'primary', ...props }: SwitchProps) {\n const [checked, setChecked] = useState(Boolean(props.checked));\n\n const classNameCheckbox = joinClass(\n `${prefix}-switch__checkbox`,\n `${prefix}-switch__checkbox--${color}`,\n );\n\n const classNameLabel = joinClass(\n `${prefix}-switch__label`,\n error && `${prefix}-switch__label--error`,\n );\n\n const helperTextClss = joinClass(\n `${prefix}-switch__helper-text`,\n error && `${prefix}-switch__helper-text--error`,\n helperText && `${prefix}-switch__helper-text--visible`,\n );\n\n const id = useMemo(() => `${prefix}-switch-${uuid()}`, []);\n\n useEffect(() => { setChecked(Boolean(props.checked)); }, [props.checked]);\n\n const handleToggle = () => {\n if (!props.onChange) { return; }\n\n props.onChange({\n type: 'checkbox',\n target: { checked: !checked }\n } as React.ChangeEvent<HTMLInputElement>);\n };\n\n return (\n <Stack gap={2}>\n <label htmlFor={id} className={classNameLabel}>\n {label}\n </label>\n <div className={`${prefix}-switch`}>\n <input\n {...props}\n type=\"checkbox\"\n id={id}\n className={classNameCheckbox}\n onChange={handleToggle}\n checked={checked}\n />\n <label className={`${prefix}-switch__box`} htmlFor={id}>\n <span className={`${prefix}-switch__button`} />\n </label>\n </div>\n <span className={helperTextClss}>{helperText}</span>\n </Stack>\n );\n}\n\nexport default createComponent(Switch);"],"names":["Switch","label","error","helperText","color","props","checked","setChecked","useState","classNameCheckbox","joinClass","prefix","classNameLabel","helperTextClss","id","useMemo","uuid","useEffect","handleToggle","jsxs","Stack","jsx","Switch_default","createComponent"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/fields/Switchs/Switch.tsx"],"sourcesContent":["import { InputHTMLAttributes, useEffect, useMemo, useState } 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 { uuid } from '@iziui/toolkit/uuid';\n\nimport Stack from '@/layout/Stack';\n\nimport createComponent from '../../core/createComponent';\n\nimport '@iziui/styles/components/Switch.scss';\n\nexport interface SwitchProps extends InputHTMLAttributes<HTMLInputElement> {\n label?: string;\n error?: boolean;\n helperText?: string;\n color?: Colors;\n auto?: boolean;\n}\n\nfunction Switch({ label, error, helperText, color = 'primary', ...props }: SwitchProps) {\n const [checked, setChecked] = useState(Boolean(props.checked));\n\n const classNameCheckbox = joinClass(\n `${prefix}-switch__checkbox`,\n `${prefix}-switch__checkbox--${color}`,\n );\n\n const classNameLabel = joinClass(\n `${prefix}-switch__label`,\n error && `${prefix}-switch__label--error`,\n );\n\n const helperTextClss = joinClass(\n `${prefix}-switch__helper-text`,\n error && `${prefix}-switch__helper-text--error`,\n helperText && `${prefix}-switch__helper-text--visible`,\n );\n\n const id = useMemo(() => `${prefix}-switch-${uuid()}`, []);\n\n useEffect(() => { setChecked(Boolean(props.checked)); }, [props.checked]);\n\n const handleToggle = () => {\n if (!props.onChange) { return; }\n\n props.onChange({\n type: 'checkbox',\n target: { checked: !checked }\n } as React.ChangeEvent<HTMLInputElement>);\n };\n\n return (\n <Stack gap={2}>\n <label htmlFor={id} className={classNameLabel}>\n {label}\n </label>\n <div className={`${prefix}-switch`}>\n <input\n {...props}\n type=\"checkbox\"\n id={id}\n className={classNameCheckbox}\n onChange={handleToggle}\n checked={checked}\n />\n <label className={`${prefix}-switch__box`} htmlFor={id}>\n <span className={`${prefix}-switch__button`} />\n </label>\n </div>\n <span className={helperTextClss}>{helperText}</span>\n </Stack>\n );\n}\n\nexport default createComponent(Switch);"],"names":["Switch","label","error","helperText","color","props","checked","setChecked","useState","classNameCheckbox","joinClass","prefix","classNameLabel","helperTextClss","id","useMemo","uuid","useEffect","handleToggle","jsxs","Stack","jsx","Switch_default","createComponent"],"mappings":"4dAuBA,SAASA,EAAO,CAAE,MAAAC,EAAO,MAAAC,EAAO,WAAAC,EAAY,MAAAC,EAAQ,UAAW,GAAGC,GAAsB,CACtF,KAAM,CAACC,EAASC,CAAU,EAAIC,EAAS,EAAQH,EAAM,OAAQ,EAEvDI,EAAoBC,EACxB,GAAGC,CAAM,oBACT,GAAGA,CAAM,sBAAsBP,CAAK,EAAA,EAGhCQ,EAAiBF,EACrB,GAAGC,CAAM,iBACTT,GAAS,GAAGS,CAAM,uBAAA,EAGdE,EAAiBH,EACrB,GAAGC,CAAM,uBACTT,GAAS,GAAGS,CAAM,8BAClBR,GAAc,GAAGQ,CAAM,+BAAA,EAGnBG,EAAKC,EAAQ,IAAM,GAAGJ,CAAM,WAAWK,EAAA,CAAM,GAAI,EAAE,EAEzDC,EAAU,IAAM,CAAEV,EAAW,EAAQF,EAAM,OAAQ,CAAG,EAAG,CAACA,EAAM,OAAO,CAAC,EAExE,MAAMa,EAAe,IAAM,CACpBb,EAAM,UAEXA,EAAM,SAAS,CACb,KAAM,WACN,OAAQ,CAAE,QAAS,CAACC,CAAA,CAAQ,CACU,CAC1C,EAEA,OACEa,EAACC,EAAA,CAAM,IAAK,EACV,SAAA,CAAAC,EAAC,QAAA,CAAM,QAASP,EAAI,UAAWF,EAC5B,SAAAX,EACH,EACAkB,EAAC,MAAA,CAAI,UAAW,GAAGR,CAAM,UACvB,SAAA,CAAAU,EAAC,QAAA,CACE,GAAGhB,EACJ,KAAK,WACL,GAAAS,EACA,UAAWL,EACX,SAAUS,EACV,QAAAZ,CAAA,CAAA,EAEFe,EAAC,QAAA,CAAM,UAAW,GAAGV,CAAM,eAAgB,QAASG,EAClD,SAAAO,EAAC,OAAA,CAAK,UAAW,GAAGV,CAAM,kBAAmB,CAAA,CAC/C,CAAA,EACF,EACAU,EAAC,OAAA,CAAK,UAAWR,EAAiB,SAAAV,CAAA,CAAW,CAAA,EAC/C,CAEJ,CAEA,MAAAmB,EAAeC,EAAgBvB,CAAM"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const r=require("react/jsx-runtime"),n=require("../../chunks/index-DYxwT4uW.cjs"),o=require("../../chunks/joinClass-Jk3EszKD.cjs"),
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const r=require("react/jsx-runtime"),n=require("../../chunks/index-DYxwT4uW.cjs"),o=require("../../chunks/joinClass-Jk3EszKD.cjs"),u=require("../../chunks/createComponent-CTufIEiN.cjs"),a=require("../../chunks/Card-B8XSgLaD.cjs");require("../../chunks/useTheme-DoESyi5h.cjs");require("react");require("../../chunks/generateSupportColors-CTMoGhDf.cjs");require("../../chunks/Ripple-Dy4i91j1.cjs");function i({children:t,...e}){const s=o.joinClass(`${n.prefix}-table`,e.className);return r.jsx(a.Card,{style:{overflow:"auto"},children:r.jsx("table",{className:s,...e,children:t})})}const l=u.createComponent(i);exports.default=l;
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../../../src/display/Table/Table.tsx"],"sourcesContent":["import type { TableHTMLAttributes } 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\nimport { Card } from '../Card';\n\nimport '@iziui/styles/components/Table.scss';\n\nexport type TableProps = TableHTMLAttributes<HTMLTableElement>;\n\nfunction Table({ children, ...props }: TableProps) {\n const cls = joinClass(\n `${prefix}-table`,\n props.className\n );\n\n return (\n <Card style={{ overflow: 'auto' }}>\n <table className={cls} {...props}>\n {children}\n </table>\n </Card>\n );\n}\n\nexport default createComponent(Table);\n"],"names":["Table","children","props","cls","joinClass","prefix","jsx","Card","Table_default","createComponent"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../../src/display/Table/Table.tsx"],"sourcesContent":["import type { TableHTMLAttributes } 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\nimport { Card } from '../Card';\n\nimport '@iziui/styles/components/Table.scss';\n\nexport type TableProps = TableHTMLAttributes<HTMLTableElement>;\n\nfunction Table({ children, ...props }: TableProps) {\n const cls = joinClass(\n `${prefix}-table`,\n props.className\n );\n\n return (\n <Card style={{ overflow: 'auto' }}>\n <table className={cls} {...props}>\n {children}\n </table>\n </Card>\n );\n}\n\nexport default createComponent(Table);\n"],"names":["Table","children","props","cls","joinClass","prefix","jsx","Card","Table_default","createComponent"],"mappings":"wfAcA,SAASA,EAAM,CAAE,SAAAC,EAAU,GAAGC,GAAqB,CACjD,MAAMC,EAAMC,EAAAA,UACV,GAAGC,EAAAA,MAAM,SACTH,EAAM,SAAA,EAGR,OACEI,EAAAA,IAACC,EAAAA,KAAA,CAAK,MAAO,CAAE,SAAU,MAAA,EACvB,SAAAD,EAAAA,IAAC,QAAA,CAAM,UAAWH,EAAM,GAAGD,EACxB,SAAAD,EACH,EACF,CAEJ,CAEA,MAAAO,EAAeC,EAAAA,gBAAgBT,CAAK"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as t}from"react/jsx-runtime";import{p as e}from"../../chunks/index-CZ41y9Hn.js";import{j as m}from"../../chunks/joinClass-anSpaauN.js";import{c as s}from"../../chunks/createComponent-
|
|
1
|
+
import{jsx as t}from"react/jsx-runtime";import{p as e}from"../../chunks/index-CZ41y9Hn.js";import{j as m}from"../../chunks/joinClass-anSpaauN.js";import{c as s}from"../../chunks/createComponent-WNQRXK89.js";import{C as i}from"../../chunks/Card-DOsl4_nu.js";import"../../chunks/useTheme-njpgklWP.js";import"react";import"../../chunks/generateSupportColors-BN5t8dA-.js";import"../../chunks/Ripple-Bq9bxg4k.js";function l({children:r,...o}){const a=m(`${e}-table`,o.className);return t(i,{style:{overflow:"auto"},children:t("table",{className:a,...o,children:r})})}const x=s(l);export{x as default};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/display/Table/Table.tsx"],"sourcesContent":["import type { TableHTMLAttributes } 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\nimport { Card } from '../Card';\n\nimport '@iziui/styles/components/Table.scss';\n\nexport type TableProps = TableHTMLAttributes<HTMLTableElement>;\n\nfunction Table({ children, ...props }: TableProps) {\n const cls = joinClass(\n `${prefix}-table`,\n props.className\n );\n\n return (\n <Card style={{ overflow: 'auto' }}>\n <table className={cls} {...props}>\n {children}\n </table>\n </Card>\n );\n}\n\nexport default createComponent(Table);\n"],"names":["Table","children","props","cls","joinClass","prefix","jsx","Card","Table_default","createComponent"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/display/Table/Table.tsx"],"sourcesContent":["import type { TableHTMLAttributes } 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\nimport { Card } from '../Card';\n\nimport '@iziui/styles/components/Table.scss';\n\nexport type TableProps = TableHTMLAttributes<HTMLTableElement>;\n\nfunction Table({ children, ...props }: TableProps) {\n const cls = joinClass(\n `${prefix}-table`,\n props.className\n );\n\n return (\n <Card style={{ overflow: 'auto' }}>\n <table className={cls} {...props}>\n {children}\n </table>\n </Card>\n );\n}\n\nexport default createComponent(Table);\n"],"names":["Table","children","props","cls","joinClass","prefix","jsx","Card","Table_default","createComponent"],"mappings":"wZAcA,SAASA,EAAM,CAAE,SAAAC,EAAU,GAAGC,GAAqB,CACjD,MAAMC,EAAMC,EACV,GAAGC,CAAM,SACTH,EAAM,SAAA,EAGR,OACEI,EAACC,EAAA,CAAK,MAAO,CAAE,SAAU,MAAA,EACvB,SAAAD,EAAC,QAAA,CAAM,UAAWH,EAAM,GAAGD,EACxB,SAAAD,EACH,EACF,CAEJ,CAEA,MAAAO,EAAeC,EAAgBT,CAAK"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("react/jsx-runtime"),n=require("react"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("react/jsx-runtime"),n=require("react"),f=require("../../chunks/index-DYxwT4uW.cjs"),h=require("../../chunks/joinClass-Jk3EszKD.cjs"),C=require("../../chunks/createComponent-CTufIEiN.cjs"),p=require("../../chunks/useTheme-DoESyi5h.cjs"),b=require("../../chunks/Alert-C1vwma3Y.cjs"),R=require("../../chunks/uuid-omnJ9TjZ.cjs"),g=require("../../chunks/Zoom-BOnqwiDY.cjs");require("../../chunks/generateSupportColors-CTMoGhDf.cjs");require("../../chunks/Stack-beBM7a60.cjs");require("../../chunks/Typography-DitZ-9b5.cjs");require("../../chunks/convertPathToColor-BlQMLS4V.cjs");require("../../chunks/ButtonIcon-Cz8zJH-E.cjs");require("../../chunks/Ripple-Dy4i91j1.cjs");require("../../chunks/Icon-COl2Nhp9.cjs");function y({id:o,color:i,message:u,icon:c,delay:a,onRemove:l,...e}){const t=n.useRef(null),{theme:{mode:r}}=p.useTheme(),j=h.joinClass(`${f.prefix}-toast`,e.className);n.useEffect(()=>(T(),q),[]);const m=()=>{o&&l(o)},T=()=>{t.current=setTimeout(()=>{m()},a)},q=()=>{t.current&&(clearTimeout(t.current),t.current=null)};return s.jsx(b.Alert,{className:j,icon:c,sx:{backgroundColor:({text:d})=>d.primary,color:d=>d[i][r]},onClose:m,onMouseEnter:q,onMouseLeave:T,children:u})}const x=C.createComponent(y),v=n.createContext({toasts:[],add:()=>{}});function M({children:o}){const[i,u]=n.useState([]),c=n.useMemo(()=>({toasts:i,add:e=>{a(e)}}),[i]),a=e=>{u(t=>[...t,{id:R.uuid(),visible:!0,...e}])},l=e=>{u(t=>t.map(r=>(r.id===e&&(r.visible=!1),r))),setTimeout(()=>{u(t=>t.filter(r=>r.id!==e))},500)};return s.jsxs(v.Provider,{value:c,children:[s.jsx("div",{className:`${f.prefix}-toast-container`,children:i.map(({...e})=>s.jsx("div",{style:{marginBottom:15},children:s.jsx(g.Zoom,{enter:!!e.visible,children:s.jsx(x,{...e,onRemove:l})})},e.id))}),o]})}function P(){const{add:o}=n.useContext(v);return{addToast:o}}exports.Toast=x;exports.ToastProvider=M;exports.useToast=P;
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../../../src/feedback/Toast/Toast.tsx","../../../src/feedback/Toast/ToastProvider.tsx","../../../src/feedback/Toast/useToast.ts"],"sourcesContent":["import { useEffect, useRef, type HTMLAttributes } from 'react';\n\nimport { prefix } from '@iziui/tokens/web/js';\n\nimport { joinClass } from '@iziui/core/utils/joinClass';\nimport { Colors } from '@iziui/core/theme';\n\nimport createComponent from '@/core/createComponent';\nimport { useTheme } from '@/theme';\n\nimport Alert from '../Alert';\n\nimport '@iziui/styles/components/Toast.scss';\n\ntype Icon = React.JSX.Element;\ntype Message = React.JSX.Element | string;\n\nexport type PickedToast = Pick<ToastProps,\n | 'id'\n | 'icon'\n | 'color'\n | 'message'\n | 'delay'\n | 'visible'\n>\n\nexport interface ToastProps extends HTMLAttributes<HTMLDivElement> {\n id?: string;\n icon?: Icon;\n color: Colors;\n message: Message;\n delay?: number;\n visible?: boolean;\n onRemove: (id: string) => void;\n};\n\nfunction Toast({ id, color, message, icon, delay, onRemove, ...props }: ToastProps) {\n const timeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n const { theme: { mode } } = useTheme();\n\n const className = joinClass(\n `${prefix}-toast`,\n props.className\n );\n\n useEffect(() => {\n startTimer();\n return clearTimer;\n }, []);\n\n const handleRemove = () => {\n if (!id) { return; }\n onRemove(id);\n };\n\n const startTimer = () => {\n timeoutRef.current = setTimeout(() => { handleRemove(); }, delay);\n };\n\n const clearTimer = () => {\n if (!timeoutRef.current) { return; }\n clearTimeout(timeoutRef.current);\n timeoutRef.current = null;\n };\n\n return (\n <Alert\n className={className}\n icon={icon}\n sx={{\n backgroundColor: ({ text }) => text.primary,\n color: (palette) => palette[color][mode]\n }}\n onClose={handleRemove}\n onMouseEnter={clearTimer}\n onMouseLeave={startTimer}\n >\n {message}\n </Alert>\n );\n}\n\nexport default createComponent(Toast);\n","import { createContext, type PropsWithChildren, useMemo, useState } from 'react';\n\nimport { prefix } from '@iziui/tokens/web/js';\n\nimport { uuid } from '@iziui/toolkit/uuid';\n\nimport Zoom from '@/animations/Zoom';\n\nimport Toast, { type PickedToast } from './Toast';\n\nimport '@iziui/styles/components/Toast.scss';\n\nexport interface ToastContextConfig {\n toasts: Array<PickedToast>;\n add: (toast: PickedToast) => void;\n}\n\nexport const ToastContext = createContext<ToastContextConfig>({\n toasts: [],\n add: () => { }\n});\n\nexport default function ToastProvider({ children }: PropsWithChildren) {\n const [toasts, setToasts] = useState<Array<PickedToast>>([]);\n\n const context: ToastContextConfig = useMemo(() => ({\n toasts,\n add: (toast) => { addToast(toast); },\n }), [toasts]);\n\n const addToast = (toast: PickedToast) => {\n setToasts(prev => [...prev, { id: uuid(), visible: true, ...toast }]);\n };\n\n const remove = (id: string) => {\n setToasts(prev => prev.map(a => {\n if (a.id === id) { a.visible = false; }\n return a;\n }));\n setTimeout(() => { setToasts(prev => prev.filter(a => a.id !== id)); }, 500);\n };\n\n return (\n <ToastContext.Provider value={context}>\n <div className={`${prefix}-toast-container`}>\n {\n toasts.map(({ ...toast }) => {\n return (\n <div key={toast.id} style={{ marginBottom: 15 }}>\n <Zoom enter={Boolean(toast.visible)}>\n <Toast {...toast} onRemove={remove} />\n </Zoom>\n </div>\n );\n })\n }\n </div>\n {children}\n </ToastContext.Provider>\n );\n}","import { useContext } from 'react';\n\nimport { ToastContext } from './ToastProvider';\n\nexport default function useToast() {\n const { add } = useContext(ToastContext);\n\n return { addToast: add };\n}"],"names":["Toast","id","color","message","icon","delay","onRemove","props","timeoutRef","useRef","mode","useTheme","className","joinClass","prefix","useEffect","startTimer","clearTimer","handleRemove","jsx","Alert","text","palette","createComponent","ToastContext","createContext","ToastProvider","children","toasts","setToasts","useState","context","useMemo","toast","addToast","prev","uuid","remove","a","jsxs","Zoom","useToast","add","useContext"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../../src/feedback/Toast/Toast.tsx","../../../src/feedback/Toast/ToastProvider.tsx","../../../src/feedback/Toast/useToast.ts"],"sourcesContent":["import { useEffect, useRef, type HTMLAttributes } from 'react';\n\nimport { prefix } from '@iziui/tokens/web/js';\n\nimport { joinClass } from '@iziui/core/utils/joinClass';\nimport { Colors } from '@iziui/core/theme';\n\nimport createComponent from '@/core/createComponent';\nimport { useTheme } from '@/theme';\n\nimport Alert from '../Alert';\n\nimport '@iziui/styles/components/Toast.scss';\n\ntype Icon = React.JSX.Element;\ntype Message = React.JSX.Element | string;\n\nexport type PickedToast = Pick<ToastProps,\n | 'id'\n | 'icon'\n | 'color'\n | 'message'\n | 'delay'\n | 'visible'\n>\n\nexport interface ToastProps extends HTMLAttributes<HTMLDivElement> {\n id?: string;\n icon?: Icon;\n color: Colors;\n message: Message;\n delay?: number;\n visible?: boolean;\n onRemove: (id: string) => void;\n};\n\nfunction Toast({ id, color, message, icon, delay, onRemove, ...props }: ToastProps) {\n const timeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n const { theme: { mode } } = useTheme();\n\n const className = joinClass(\n `${prefix}-toast`,\n props.className\n );\n\n useEffect(() => {\n startTimer();\n return clearTimer;\n }, []);\n\n const handleRemove = () => {\n if (!id) { return; }\n onRemove(id);\n };\n\n const startTimer = () => {\n timeoutRef.current = setTimeout(() => { handleRemove(); }, delay);\n };\n\n const clearTimer = () => {\n if (!timeoutRef.current) { return; }\n clearTimeout(timeoutRef.current);\n timeoutRef.current = null;\n };\n\n return (\n <Alert\n className={className}\n icon={icon}\n sx={{\n backgroundColor: ({ text }) => text.primary,\n color: (palette) => palette[color][mode]\n }}\n onClose={handleRemove}\n onMouseEnter={clearTimer}\n onMouseLeave={startTimer}\n >\n {message}\n </Alert>\n );\n}\n\nexport default createComponent(Toast);\n","import { createContext, type PropsWithChildren, useMemo, useState } from 'react';\n\nimport { prefix } from '@iziui/tokens/web/js';\n\nimport { uuid } from '@iziui/toolkit/uuid';\n\nimport Zoom from '@/animations/Zoom';\n\nimport Toast, { type PickedToast } from './Toast';\n\nimport '@iziui/styles/components/Toast.scss';\n\nexport interface ToastContextConfig {\n toasts: Array<PickedToast>;\n add: (toast: PickedToast) => void;\n}\n\nexport const ToastContext = createContext<ToastContextConfig>({\n toasts: [],\n add: () => { }\n});\n\nexport default function ToastProvider({ children }: PropsWithChildren) {\n const [toasts, setToasts] = useState<Array<PickedToast>>([]);\n\n const context: ToastContextConfig = useMemo(() => ({\n toasts,\n add: (toast) => { addToast(toast); },\n }), [toasts]);\n\n const addToast = (toast: PickedToast) => {\n setToasts(prev => [...prev, { id: uuid(), visible: true, ...toast }]);\n };\n\n const remove = (id: string) => {\n setToasts(prev => prev.map(a => {\n if (a.id === id) { a.visible = false; }\n return a;\n }));\n setTimeout(() => { setToasts(prev => prev.filter(a => a.id !== id)); }, 500);\n };\n\n return (\n <ToastContext.Provider value={context}>\n <div className={`${prefix}-toast-container`}>\n {\n toasts.map(({ ...toast }) => {\n return (\n <div key={toast.id} style={{ marginBottom: 15 }}>\n <Zoom enter={Boolean(toast.visible)}>\n <Toast {...toast} onRemove={remove} />\n </Zoom>\n </div>\n );\n })\n }\n </div>\n {children}\n </ToastContext.Provider>\n );\n}","import { useContext } from 'react';\n\nimport { ToastContext } from './ToastProvider';\n\nexport default function useToast() {\n const { add } = useContext(ToastContext);\n\n return { addToast: add };\n}"],"names":["Toast","id","color","message","icon","delay","onRemove","props","timeoutRef","useRef","mode","useTheme","className","joinClass","prefix","useEffect","startTimer","clearTimer","handleRemove","jsx","Alert","text","palette","createComponent","ToastContext","createContext","ToastProvider","children","toasts","setToasts","useState","context","useMemo","toast","addToast","prev","uuid","remove","a","jsxs","Zoom","useToast","add","useContext"],"mappings":"syBAoCA,SAASA,EAAM,CAAE,GAAAC,EAAI,MAAAC,EAAO,QAAAC,EAAS,KAAAC,EAAM,MAAAC,EAAO,SAAAC,EAAU,GAAGC,GAAqB,CAClF,MAAMC,EAAaC,EAAAA,OAA6C,IAAI,EAE9D,CAAE,MAAO,CAAE,KAAAC,CAAA,CAAK,EAAMC,EAAAA,SAAA,EAEtBC,EAAYC,EAAAA,UAChB,GAAGC,EAAAA,MAAM,SACTP,EAAM,SAAA,EAGRQ,EAAAA,UAAU,KACRC,EAAA,EACOC,GACN,CAAA,CAAE,EAEL,MAAMC,EAAe,IAAM,CACpBjB,GACLK,EAASL,CAAE,CACb,EAEMe,EAAa,IAAM,CACvBR,EAAW,QAAU,WAAW,IAAM,CAAEU,EAAA,CAAgB,EAAGb,CAAK,CAClE,EAEMY,EAAa,IAAM,CAClBT,EAAW,UAChB,aAAaA,EAAW,OAAO,EAC/BA,EAAW,QAAU,KACvB,EAEA,OACEW,EAAAA,IAACC,EAAAA,MAAA,CACC,UAAAR,EACA,KAAAR,EACA,GAAI,CACF,gBAAiB,CAAC,CAAE,KAAAiB,CAAA,IAAWA,EAAK,QACpC,MAAQC,GAAYA,EAAQpB,CAAK,EAAEQ,CAAI,CAAA,EAEzC,QAASQ,EACT,aAAcD,EACd,aAAcD,EAEb,SAAAb,CAAA,CAAA,CAGP,CAEA,MAAAH,EAAeuB,EAAAA,gBAAgBvB,CAAK,EClEvBwB,EAAeC,EAAAA,cAAkC,CAC5D,OAAQ,CAAA,EACR,IAAK,IAAM,CAAE,CACf,CAAC,EAED,SAAwBC,EAAc,CAAE,SAAAC,GAA+B,CACrE,KAAM,CAACC,EAAQC,CAAS,EAAIC,EAAAA,SAA6B,CAAA,CAAE,EAErDC,EAA8BC,EAAAA,QAAQ,KAAO,CACjD,OAAAJ,EACA,IAAMK,GAAU,CAAEC,EAASD,CAAK,CAAG,CAAA,GACjC,CAACL,CAAM,CAAC,EAENM,EAAYD,GAAuB,CACvCJ,EAAUM,GAAQ,CAAC,GAAGA,EAAM,CAAE,GAAIC,EAAAA,KAAA,EAAQ,QAAS,GAAM,GAAGH,CAAA,CAAO,CAAC,CACtE,EAEMI,EAAUpC,GAAe,CAC7B4B,EAAUM,GAAQA,EAAK,IAAIG,IACrBA,EAAE,KAAOrC,IAAMqC,EAAE,QAAU,IACxBA,EACR,CAAC,EACF,WAAW,IAAM,CAAET,KAAkBM,EAAK,UAAYG,EAAE,KAAOrC,CAAE,CAAC,CAAG,EAAG,GAAG,CAC7E,EAEA,OACEsC,EAAAA,KAACf,EAAa,SAAb,CAAsB,MAAOO,EAC5B,SAAA,CAAAZ,EAAAA,IAAC,MAAA,CAAI,UAAW,GAAGL,EAAAA,MAAM,mBAErB,SAAAc,EAAO,IAAI,CAAC,CAAE,GAAGK,CAAA,IAEbd,EAAAA,IAAC,OAAmB,MAAO,CAAE,aAAc,IACzC,SAAAA,EAAAA,IAACqB,EAAAA,KAAA,CAAK,MAAO,EAAQP,EAAM,QACzB,SAAAd,EAAAA,IAACnB,EAAA,CAAO,GAAGiC,EAAO,SAAUI,CAAA,CAAQ,CAAA,CACtC,GAHQJ,EAAM,EAIhB,CAEH,CAAA,CAEL,EACCN,CAAA,EACH,CAEJ,CCxDA,SAAwBc,GAAW,CACjC,KAAM,CAAE,IAAAC,CAAA,EAAQC,EAAAA,WAAWnB,CAAY,EAEvC,MAAO,CAAE,SAAUkB,CAAA,CACrB"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as i,jsxs as x}from"react/jsx-runtime";import{useRef as h,useEffect as C,useState as b,useMemo as j,createContext as R,useContext as M}from"react";import{p}from"../../chunks/index-CZ41y9Hn.js";import{j as N}from"../../chunks/joinClass-anSpaauN.js";import{c as $}from"../../chunks/createComponent-
|
|
1
|
+
import{jsx as i,jsxs as x}from"react/jsx-runtime";import{useRef as h,useEffect as C,useState as b,useMemo as j,createContext as R,useContext as M}from"react";import{p as f}from"../../chunks/index-CZ41y9Hn.js";import{j as N}from"../../chunks/joinClass-anSpaauN.js";import{c as $}from"../../chunks/createComponent-WNQRXK89.js";import{u as g}from"../../chunks/useTheme-njpgklWP.js";import{A as y}from"../../chunks/Alert-Cn-EvcSp.js";import{u as A}from"../../chunks/uuid-dGvr9vBZ.js";import{Z as B}from"../../chunks/Zoom-DqgU4Wfv.js";import"../../chunks/generateSupportColors-BN5t8dA-.js";import"../../chunks/Stack-DK5pfu2w.js";import"../../chunks/Typography-v-XX3oAk.js";import"../../chunks/convertPathToColor-D2SdAqGh.js";import"../../chunks/ButtonIcon-CsX4oYeI.js";import"../../chunks/Ripple-Bq9bxg4k.js";import"../../chunks/Icon-CCIgEwA9.js";function E({id:r,color:s,message:n,icon:m,delay:a,onRemove:c,...t}){const o=h(null),{theme:{mode:e}}=g(),v=N(`${f}-toast`,t.className);C(()=>(d(),p),[]);const l=()=>{r&&c(r)},d=()=>{o.current=setTimeout(()=>{l()},a)},p=()=>{o.current&&(clearTimeout(o.current),o.current=null)};return i(y,{className:v,icon:m,sx:{backgroundColor:({text:u})=>u.primary,color:u=>u[s][e]},onClose:l,onMouseEnter:p,onMouseLeave:d,children:n})}const P=$(E),T=R({toasts:[],add:()=>{}});function U({children:r}){const[s,n]=b([]),m=j(()=>({toasts:s,add:t=>{a(t)}}),[s]),a=t=>{n(o=>[...o,{id:A(),visible:!0,...t}])},c=t=>{n(o=>o.map(e=>(e.id===t&&(e.visible=!1),e))),setTimeout(()=>{n(o=>o.filter(e=>e.id!==t))},500)};return x(T.Provider,{value:m,children:[i("div",{className:`${f}-toast-container`,children:s.map(({...t})=>i("div",{style:{marginBottom:15},children:i(B,{enter:!!t.visible,children:i(P,{...t,onRemove:c})})},t.id))}),r]})}function V(){const{add:r}=M(T);return{addToast:r}}export{P as Toast,U as ToastProvider,V as useToast};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/feedback/Toast/Toast.tsx","../../../src/feedback/Toast/ToastProvider.tsx","../../../src/feedback/Toast/useToast.ts"],"sourcesContent":["import { useEffect, useRef, type HTMLAttributes } from 'react';\n\nimport { prefix } from '@iziui/tokens/web/js';\n\nimport { joinClass } from '@iziui/core/utils/joinClass';\nimport { Colors } from '@iziui/core/theme';\n\nimport createComponent from '@/core/createComponent';\nimport { useTheme } from '@/theme';\n\nimport Alert from '../Alert';\n\nimport '@iziui/styles/components/Toast.scss';\n\ntype Icon = React.JSX.Element;\ntype Message = React.JSX.Element | string;\n\nexport type PickedToast = Pick<ToastProps,\n | 'id'\n | 'icon'\n | 'color'\n | 'message'\n | 'delay'\n | 'visible'\n>\n\nexport interface ToastProps extends HTMLAttributes<HTMLDivElement> {\n id?: string;\n icon?: Icon;\n color: Colors;\n message: Message;\n delay?: number;\n visible?: boolean;\n onRemove: (id: string) => void;\n};\n\nfunction Toast({ id, color, message, icon, delay, onRemove, ...props }: ToastProps) {\n const timeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n const { theme: { mode } } = useTheme();\n\n const className = joinClass(\n `${prefix}-toast`,\n props.className\n );\n\n useEffect(() => {\n startTimer();\n return clearTimer;\n }, []);\n\n const handleRemove = () => {\n if (!id) { return; }\n onRemove(id);\n };\n\n const startTimer = () => {\n timeoutRef.current = setTimeout(() => { handleRemove(); }, delay);\n };\n\n const clearTimer = () => {\n if (!timeoutRef.current) { return; }\n clearTimeout(timeoutRef.current);\n timeoutRef.current = null;\n };\n\n return (\n <Alert\n className={className}\n icon={icon}\n sx={{\n backgroundColor: ({ text }) => text.primary,\n color: (palette) => palette[color][mode]\n }}\n onClose={handleRemove}\n onMouseEnter={clearTimer}\n onMouseLeave={startTimer}\n >\n {message}\n </Alert>\n );\n}\n\nexport default createComponent(Toast);\n","import { createContext, type PropsWithChildren, useMemo, useState } from 'react';\n\nimport { prefix } from '@iziui/tokens/web/js';\n\nimport { uuid } from '@iziui/toolkit/uuid';\n\nimport Zoom from '@/animations/Zoom';\n\nimport Toast, { type PickedToast } from './Toast';\n\nimport '@iziui/styles/components/Toast.scss';\n\nexport interface ToastContextConfig {\n toasts: Array<PickedToast>;\n add: (toast: PickedToast) => void;\n}\n\nexport const ToastContext = createContext<ToastContextConfig>({\n toasts: [],\n add: () => { }\n});\n\nexport default function ToastProvider({ children }: PropsWithChildren) {\n const [toasts, setToasts] = useState<Array<PickedToast>>([]);\n\n const context: ToastContextConfig = useMemo(() => ({\n toasts,\n add: (toast) => { addToast(toast); },\n }), [toasts]);\n\n const addToast = (toast: PickedToast) => {\n setToasts(prev => [...prev, { id: uuid(), visible: true, ...toast }]);\n };\n\n const remove = (id: string) => {\n setToasts(prev => prev.map(a => {\n if (a.id === id) { a.visible = false; }\n return a;\n }));\n setTimeout(() => { setToasts(prev => prev.filter(a => a.id !== id)); }, 500);\n };\n\n return (\n <ToastContext.Provider value={context}>\n <div className={`${prefix}-toast-container`}>\n {\n toasts.map(({ ...toast }) => {\n return (\n <div key={toast.id} style={{ marginBottom: 15 }}>\n <Zoom enter={Boolean(toast.visible)}>\n <Toast {...toast} onRemove={remove} />\n </Zoom>\n </div>\n );\n })\n }\n </div>\n {children}\n </ToastContext.Provider>\n );\n}","import { useContext } from 'react';\n\nimport { ToastContext } from './ToastProvider';\n\nexport default function useToast() {\n const { add } = useContext(ToastContext);\n\n return { addToast: add };\n}"],"names":["Toast","id","color","message","icon","delay","onRemove","props","timeoutRef","useRef","mode","useTheme","className","joinClass","prefix","useEffect","startTimer","clearTimer","handleRemove","jsx","Alert","text","palette","Toast$1","createComponent","ToastContext","createContext","ToastProvider","children","toasts","setToasts","useState","context","useMemo","toast","addToast","prev","uuid","remove","a","jsxs","Zoom","useToast","add","useContext"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/feedback/Toast/Toast.tsx","../../../src/feedback/Toast/ToastProvider.tsx","../../../src/feedback/Toast/useToast.ts"],"sourcesContent":["import { useEffect, useRef, type HTMLAttributes } from 'react';\n\nimport { prefix } from '@iziui/tokens/web/js';\n\nimport { joinClass } from '@iziui/core/utils/joinClass';\nimport { Colors } from '@iziui/core/theme';\n\nimport createComponent from '@/core/createComponent';\nimport { useTheme } from '@/theme';\n\nimport Alert from '../Alert';\n\nimport '@iziui/styles/components/Toast.scss';\n\ntype Icon = React.JSX.Element;\ntype Message = React.JSX.Element | string;\n\nexport type PickedToast = Pick<ToastProps,\n | 'id'\n | 'icon'\n | 'color'\n | 'message'\n | 'delay'\n | 'visible'\n>\n\nexport interface ToastProps extends HTMLAttributes<HTMLDivElement> {\n id?: string;\n icon?: Icon;\n color: Colors;\n message: Message;\n delay?: number;\n visible?: boolean;\n onRemove: (id: string) => void;\n};\n\nfunction Toast({ id, color, message, icon, delay, onRemove, ...props }: ToastProps) {\n const timeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n const { theme: { mode } } = useTheme();\n\n const className = joinClass(\n `${prefix}-toast`,\n props.className\n );\n\n useEffect(() => {\n startTimer();\n return clearTimer;\n }, []);\n\n const handleRemove = () => {\n if (!id) { return; }\n onRemove(id);\n };\n\n const startTimer = () => {\n timeoutRef.current = setTimeout(() => { handleRemove(); }, delay);\n };\n\n const clearTimer = () => {\n if (!timeoutRef.current) { return; }\n clearTimeout(timeoutRef.current);\n timeoutRef.current = null;\n };\n\n return (\n <Alert\n className={className}\n icon={icon}\n sx={{\n backgroundColor: ({ text }) => text.primary,\n color: (palette) => palette[color][mode]\n }}\n onClose={handleRemove}\n onMouseEnter={clearTimer}\n onMouseLeave={startTimer}\n >\n {message}\n </Alert>\n );\n}\n\nexport default createComponent(Toast);\n","import { createContext, type PropsWithChildren, useMemo, useState } from 'react';\n\nimport { prefix } from '@iziui/tokens/web/js';\n\nimport { uuid } from '@iziui/toolkit/uuid';\n\nimport Zoom from '@/animations/Zoom';\n\nimport Toast, { type PickedToast } from './Toast';\n\nimport '@iziui/styles/components/Toast.scss';\n\nexport interface ToastContextConfig {\n toasts: Array<PickedToast>;\n add: (toast: PickedToast) => void;\n}\n\nexport const ToastContext = createContext<ToastContextConfig>({\n toasts: [],\n add: () => { }\n});\n\nexport default function ToastProvider({ children }: PropsWithChildren) {\n const [toasts, setToasts] = useState<Array<PickedToast>>([]);\n\n const context: ToastContextConfig = useMemo(() => ({\n toasts,\n add: (toast) => { addToast(toast); },\n }), [toasts]);\n\n const addToast = (toast: PickedToast) => {\n setToasts(prev => [...prev, { id: uuid(), visible: true, ...toast }]);\n };\n\n const remove = (id: string) => {\n setToasts(prev => prev.map(a => {\n if (a.id === id) { a.visible = false; }\n return a;\n }));\n setTimeout(() => { setToasts(prev => prev.filter(a => a.id !== id)); }, 500);\n };\n\n return (\n <ToastContext.Provider value={context}>\n <div className={`${prefix}-toast-container`}>\n {\n toasts.map(({ ...toast }) => {\n return (\n <div key={toast.id} style={{ marginBottom: 15 }}>\n <Zoom enter={Boolean(toast.visible)}>\n <Toast {...toast} onRemove={remove} />\n </Zoom>\n </div>\n );\n })\n }\n </div>\n {children}\n </ToastContext.Provider>\n );\n}","import { useContext } from 'react';\n\nimport { ToastContext } from './ToastProvider';\n\nexport default function useToast() {\n const { add } = useContext(ToastContext);\n\n return { addToast: add };\n}"],"names":["Toast","id","color","message","icon","delay","onRemove","props","timeoutRef","useRef","mode","useTheme","className","joinClass","prefix","useEffect","startTimer","clearTimer","handleRemove","jsx","Alert","text","palette","Toast$1","createComponent","ToastContext","createContext","ToastProvider","children","toasts","setToasts","useState","context","useMemo","toast","addToast","prev","uuid","remove","a","jsxs","Zoom","useToast","add","useContext"],"mappings":"00BAoCA,SAASA,EAAM,CAAE,GAAAC,EAAI,MAAAC,EAAO,QAAAC,EAAS,KAAAC,EAAM,MAAAC,EAAO,SAAAC,EAAU,GAAGC,GAAqB,CAClF,MAAMC,EAAaC,EAA6C,IAAI,EAE9D,CAAE,MAAO,CAAE,KAAAC,CAAA,CAAK,EAAMC,EAAA,EAEtBC,EAAYC,EAChB,GAAGC,CAAM,SACTP,EAAM,SAAA,EAGRQ,EAAU,KACRC,EAAA,EACOC,GACN,CAAA,CAAE,EAEL,MAAMC,EAAe,IAAM,CACpBjB,GACLK,EAASL,CAAE,CACb,EAEMe,EAAa,IAAM,CACvBR,EAAW,QAAU,WAAW,IAAM,CAAEU,EAAA,CAAgB,EAAGb,CAAK,CAClE,EAEMY,EAAa,IAAM,CAClBT,EAAW,UAChB,aAAaA,EAAW,OAAO,EAC/BA,EAAW,QAAU,KACvB,EAEA,OACEW,EAACC,EAAA,CACC,UAAAR,EACA,KAAAR,EACA,GAAI,CACF,gBAAiB,CAAC,CAAE,KAAAiB,CAAA,IAAWA,EAAK,QACpC,MAAQC,GAAYA,EAAQpB,CAAK,EAAEQ,CAAI,CAAA,EAEzC,QAASQ,EACT,aAAcD,EACd,aAAcD,EAEb,SAAAb,CAAA,CAAA,CAGP,CAEA,MAAAoB,EAAeC,EAAgBxB,CAAK,EClEvByB,EAAeC,EAAkC,CAC5D,OAAQ,CAAA,EACR,IAAK,IAAM,CAAE,CACf,CAAC,EAED,SAAwBC,EAAc,CAAE,SAAAC,GAA+B,CACrE,KAAM,CAACC,EAAQC,CAAS,EAAIC,EAA6B,CAAA,CAAE,EAErDC,EAA8BC,EAAQ,KAAO,CACjD,OAAAJ,EACA,IAAMK,GAAU,CAAEC,EAASD,CAAK,CAAG,CAAA,GACjC,CAACL,CAAM,CAAC,EAENM,EAAYD,GAAuB,CACvCJ,EAAUM,GAAQ,CAAC,GAAGA,EAAM,CAAE,GAAIC,EAAA,EAAQ,QAAS,GAAM,GAAGH,CAAA,CAAO,CAAC,CACtE,EAEMI,EAAUrC,GAAe,CAC7B6B,EAAUM,GAAQA,EAAK,IAAIG,IACrBA,EAAE,KAAOtC,IAAMsC,EAAE,QAAU,IACxBA,EACR,CAAC,EACF,WAAW,IAAM,CAAET,KAAkBM,EAAK,UAAYG,EAAE,KAAOtC,CAAE,CAAC,CAAG,EAAG,GAAG,CAC7E,EAEA,OACEuC,EAACf,EAAa,SAAb,CAAsB,MAAOO,EAC5B,SAAA,CAAAb,EAAC,MAAA,CAAI,UAAW,GAAGL,CAAM,mBAErB,SAAAe,EAAO,IAAI,CAAC,CAAE,GAAGK,CAAA,IAEbf,EAAC,OAAmB,MAAO,CAAE,aAAc,IACzC,SAAAA,EAACsB,EAAA,CAAK,MAAO,EAAQP,EAAM,QACzB,SAAAf,EAACnB,EAAA,CAAO,GAAGkC,EAAO,SAAUI,CAAA,CAAQ,CAAA,CACtC,GAHQJ,EAAM,EAIhB,CAEH,CAAA,CAEL,EACCN,CAAA,EACH,CAEJ,CCxDA,SAAwBc,GAAW,CACjC,KAAM,CAAE,IAAAC,CAAA,EAAQC,EAAWnB,CAAY,EAEvC,MAAO,CAAE,SAAUkB,CAAA,CACrB"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const q=require("react/jsx-runtime"),t=require("react"),v=require("../../chunks/index-DYxwT4uW.cjs"),S=require("../../chunks/joinClass-Jk3EszKD.cjs"),M=require("../../chunks/createComponent-CTufIEiN.cjs"),A=require("../../chunks/useTheme-DoESyi5h.cjs");require("../../chunks/generateSupportColors-CTMoGhDf.cjs");function H({children:x,label:b,width:g="max-content",direction:l="bottom",...d}){const{theme:{spacing:n}}=A.useTheme(),[r,h]=t.useState(!1),[j,i]=t.useState(!1),[y,T]=t.useState(null),c=t.useRef(null),a=t.useRef(null),e=t.useRef(null);t.useLayoutEffect(()=>{if(!r||!c.current||!a.current)return;const{offsetHeight:o,offsetWidth:f}=c.current,{offsetHeight:m,offsetWidth:p}=a.current;let s,u;l==="top"?(s=-(m+n),u=-(p-f)/2):l==="bottom"?(s=o+n,u=-(p-f)/2):l==="right"?(s=(o-m)/2,u=f+n):(s=(o-m)/2,u=-(p+n)),T({top:s,left:u})},[r,l,n]),t.useEffect(()=>{if(!r)return;const o=requestAnimationFrame(()=>i(!0));return()=>cancelAnimationFrame(o)},[r]),t.useEffect(()=>()=>{e.current&&clearTimeout(e.current)},[]);const R=()=>{if(e.current){clearTimeout(e.current),e.current=null,i(!0);return}h(!0)},C=()=>{e.current&&(clearTimeout(e.current),e.current=null),i(!1),e.current=setTimeout(()=>{h(!1),T(null),e.current=null},300)},E=S.joinClass(`${v.prefix}-tooltip`,j&&`${v.prefix}-tooltip--visible`);return q.jsxs("div",{ref:c,...d,style:{position:"relative",...d.style},onMouseEnter:R,onMouseLeave:C,children:[x,q.jsx("span",{ref:a,className:E,style:{...y,width:g,display:r?"block":"none"},children:b})]})}const L=M.createComponent(H);exports.default=L;
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../../../src/display/Tooltip/Tooltip.tsx"],"sourcesContent":["import {\n useRef,\n useState,\n useEffect,\n useLayoutEffect,\n type CSSProperties,\n type HTMLAttributes,\n} from 'react';\n\nimport { prefix } from '@iziui/tokens/web/js';\n\nimport { joinClass } from '@iziui/core/utils/joinClass';\n\nimport createComponent from '@/core/createComponent';\nimport { useTheme } from '@/theme';\n\nimport '@iziui/styles/components/Tooltip.scss';\n\ntype TooltipCoordinate = { top: number; left: number; };\ntype Direction = 'top' | 'right' | 'bottom' | 'left';\n\nexport interface TooltipProps extends HTMLAttributes<HTMLElement> {\n direction?: Direction;\n width?: CSSProperties['width'];\n children: React.JSX.Element;\n label: string | React.JSX.Element;\n}\n\nfunction Tooltip({\n children,\n label,\n width = 'max-content',\n direction = 'bottom',\n ...props\n}: TooltipProps) {\n const { theme: { spacing } } = useTheme();\n const [open, setOpen] = useState(false);\n const [animate, setAnimate] = useState(false);\n const [coordinate, setCoordinate] = useState<TooltipCoordinate | null>(null);\n\n const containerRef = useRef<HTMLDivElement>(null);\n const tooltipRef = useRef<HTMLSpanElement>(null);\n const leaveTimer = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n // Measure and position synchronously before the browser paints — no setTimeout hack needed.\n useLayoutEffect(() => {\n if (!open || !containerRef.current || !tooltipRef.current) return;\n\n const { offsetHeight, offsetWidth } = containerRef.current;\n const { offsetHeight: tooltipH, offsetWidth: tooltipW } = tooltipRef.current;\n\n let top: number;\n let left: number;\n\n if (direction === 'top') {\n top = -(tooltipH + spacing);\n left = -(tooltipW - offsetWidth) / 2;\n } else if (direction === 'bottom') {\n top = offsetHeight + spacing;\n left = -(tooltipW - offsetWidth) / 2;\n } else if (direction === 'right') {\n top = (offsetHeight - tooltipH) / 2;\n left = offsetWidth + spacing;\n } else {\n top = (offsetHeight - tooltipH) / 2;\n left = -(tooltipW + spacing);\n }\n\n setCoordinate({ top, left });\n }, [open, direction, spacing]);\n\n // Trigger the CSS transition one frame after position is committed.\n useEffect(() => {\n if (!open) return;\n const frame = requestAnimationFrame(() => setAnimate(true));\n return () => cancelAnimationFrame(frame);\n }, [open]);\n\n useEffect(() => () => {\n if (!leaveTimer.current) { return; }\n\n clearTimeout(leaveTimer.current);\n }, []);\n\n const handleEnter = () => {\n if (leaveTimer.current) {\n clearTimeout(leaveTimer.current);\n\n leaveTimer.current = null;\n setAnimate(true);\n\n return;\n }\n setOpen(true);\n };\n\n const handleLeave = () => {\n if (leaveTimer.current) {\n clearTimeout(leaveTimer.current);\n leaveTimer.current = null;\n }\n\n setAnimate(false);\n\n leaveTimer.current = setTimeout(() => {\n setOpen(false);\n setCoordinate(null);\n leaveTimer.current = null;\n }, 300);\n };\n\n const className = joinClass(\n `${prefix}-tooltip`,\n animate && `${prefix}-tooltip--visible`,\n );\n\n return (\n <div\n ref={containerRef}\n {...props}\n style={{ position: 'relative', ...props.style }}\n onMouseEnter={handleEnter}\n onMouseLeave={handleLeave}\n >\n {children}\n <span\n ref={tooltipRef}\n className={className}\n style={{\n ...coordinate,\n width,\n display: open ? 'block' : 'none',\n }}\n >\n {label}\n </span>\n </div>\n );\n}\n\nexport default createComponent(Tooltip);\n"],"names":["Tooltip","children","label","width","direction","props","spacing","useTheme","open","setOpen","useState","animate","setAnimate","coordinate","setCoordinate","containerRef","useRef","tooltipRef","leaveTimer","useLayoutEffect","offsetHeight","offsetWidth","tooltipH","tooltipW","top","left","useEffect","frame","handleEnter","handleLeave","className","joinClass","prefix","jsxs","jsx","Tooltip_default","createComponent"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../../src/display/Tooltip/Tooltip.tsx"],"sourcesContent":["import {\n useRef,\n useState,\n useEffect,\n useLayoutEffect,\n type CSSProperties,\n type HTMLAttributes,\n} from 'react';\n\nimport { prefix } from '@iziui/tokens/web/js';\n\nimport { joinClass } from '@iziui/core/utils/joinClass';\n\nimport createComponent from '@/core/createComponent';\nimport { useTheme } from '@/theme';\n\nimport '@iziui/styles/components/Tooltip.scss';\n\ntype TooltipCoordinate = { top: number; left: number; };\ntype Direction = 'top' | 'right' | 'bottom' | 'left';\n\nexport interface TooltipProps extends HTMLAttributes<HTMLElement> {\n direction?: Direction;\n width?: CSSProperties['width'];\n children: React.JSX.Element;\n label: string | React.JSX.Element;\n}\n\nfunction Tooltip({\n children,\n label,\n width = 'max-content',\n direction = 'bottom',\n ...props\n}: TooltipProps) {\n const { theme: { spacing } } = useTheme();\n const [open, setOpen] = useState(false);\n const [animate, setAnimate] = useState(false);\n const [coordinate, setCoordinate] = useState<TooltipCoordinate | null>(null);\n\n const containerRef = useRef<HTMLDivElement>(null);\n const tooltipRef = useRef<HTMLSpanElement>(null);\n const leaveTimer = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n // Measure and position synchronously before the browser paints — no setTimeout hack needed.\n useLayoutEffect(() => {\n if (!open || !containerRef.current || !tooltipRef.current) return;\n\n const { offsetHeight, offsetWidth } = containerRef.current;\n const { offsetHeight: tooltipH, offsetWidth: tooltipW } = tooltipRef.current;\n\n let top: number;\n let left: number;\n\n if (direction === 'top') {\n top = -(tooltipH + spacing);\n left = -(tooltipW - offsetWidth) / 2;\n } else if (direction === 'bottom') {\n top = offsetHeight + spacing;\n left = -(tooltipW - offsetWidth) / 2;\n } else if (direction === 'right') {\n top = (offsetHeight - tooltipH) / 2;\n left = offsetWidth + spacing;\n } else {\n top = (offsetHeight - tooltipH) / 2;\n left = -(tooltipW + spacing);\n }\n\n setCoordinate({ top, left });\n }, [open, direction, spacing]);\n\n // Trigger the CSS transition one frame after position is committed.\n useEffect(() => {\n if (!open) return;\n const frame = requestAnimationFrame(() => setAnimate(true));\n return () => cancelAnimationFrame(frame);\n }, [open]);\n\n useEffect(() => () => {\n if (!leaveTimer.current) { return; }\n\n clearTimeout(leaveTimer.current);\n }, []);\n\n const handleEnter = () => {\n if (leaveTimer.current) {\n clearTimeout(leaveTimer.current);\n\n leaveTimer.current = null;\n setAnimate(true);\n\n return;\n }\n setOpen(true);\n };\n\n const handleLeave = () => {\n if (leaveTimer.current) {\n clearTimeout(leaveTimer.current);\n leaveTimer.current = null;\n }\n\n setAnimate(false);\n\n leaveTimer.current = setTimeout(() => {\n setOpen(false);\n setCoordinate(null);\n leaveTimer.current = null;\n }, 300);\n };\n\n const className = joinClass(\n `${prefix}-tooltip`,\n animate && `${prefix}-tooltip--visible`,\n );\n\n return (\n <div\n ref={containerRef}\n {...props}\n style={{ position: 'relative', ...props.style }}\n onMouseEnter={handleEnter}\n onMouseLeave={handleLeave}\n >\n {children}\n <span\n ref={tooltipRef}\n className={className}\n style={{\n ...coordinate,\n width,\n display: open ? 'block' : 'none',\n }}\n >\n {label}\n </span>\n </div>\n );\n}\n\nexport default createComponent(Tooltip);\n"],"names":["Tooltip","children","label","width","direction","props","spacing","useTheme","open","setOpen","useState","animate","setAnimate","coordinate","setCoordinate","containerRef","useRef","tooltipRef","leaveTimer","useLayoutEffect","offsetHeight","offsetWidth","tooltipH","tooltipW","top","left","useEffect","frame","handleEnter","handleLeave","className","joinClass","prefix","jsxs","jsx","Tooltip_default","createComponent"],"mappings":"oaA4BA,SAASA,EAAQ,CACf,SAAAC,EACA,MAAAC,EACA,MAAAC,EAAQ,cACR,UAAAC,EAAY,SACZ,GAAGC,CACL,EAAiB,CACf,KAAM,CAAE,MAAO,CAAE,QAAAC,CAAA,CAAQ,EAAMC,EAAAA,SAAA,EACzB,CAACC,EAAMC,CAAO,EAAIC,EAAAA,SAAS,EAAK,EAChC,CAACC,EAASC,CAAU,EAAIF,EAAAA,SAAS,EAAK,EACtC,CAACG,EAAYC,CAAa,EAAIJ,EAAAA,SAAmC,IAAI,EAErEK,EAAeC,EAAAA,OAAuB,IAAI,EAC1CC,EAAaD,EAAAA,OAAwB,IAAI,EACzCE,EAAaF,EAAAA,OAA6C,IAAI,EAGpEG,EAAAA,gBAAgB,IAAM,CACpB,GAAI,CAACX,GAAQ,CAACO,EAAa,SAAW,CAACE,EAAW,QAAS,OAE3D,KAAM,CAAE,aAAAG,EAAc,YAAAC,CAAA,EAAgBN,EAAa,QAC7C,CAAE,aAAcO,EAAU,YAAaC,CAAA,EAAaN,EAAW,QAErE,IAAIO,EACAC,EAEArB,IAAc,OAChBoB,EAAM,EAAEF,EAAWhB,GACnBmB,EAAO,EAAEF,EAAWF,GAAe,GAC1BjB,IAAc,UACvBoB,EAAMJ,EAAed,EACrBmB,EAAO,EAAEF,EAAWF,GAAe,GAC1BjB,IAAc,SACvBoB,GAAOJ,EAAeE,GAAY,EAClCG,EAAOJ,EAAcf,IAErBkB,GAAOJ,EAAeE,GAAY,EAClCG,EAAO,EAAEF,EAAWjB,IAGtBQ,EAAc,CAAE,IAAAU,EAAK,KAAAC,EAAM,CAC7B,EAAG,CAACjB,EAAMJ,EAAWE,CAAO,CAAC,EAG7BoB,EAAAA,UAAU,IAAM,CACd,GAAI,CAAClB,EAAM,OACX,MAAMmB,EAAQ,sBAAsB,IAAMf,EAAW,EAAI,CAAC,EAC1D,MAAO,IAAM,qBAAqBe,CAAK,CACzC,EAAG,CAACnB,CAAI,CAAC,EAETkB,EAAAA,UAAU,IAAM,IAAM,CACfR,EAAW,SAEhB,aAAaA,EAAW,OAAO,CACjC,EAAG,CAAA,CAAE,EAEL,MAAMU,EAAc,IAAM,CACxB,GAAIV,EAAW,QAAS,CACtB,aAAaA,EAAW,OAAO,EAE/BA,EAAW,QAAU,KACrBN,EAAW,EAAI,EAEf,MACF,CACAH,EAAQ,EAAI,CACd,EAEMoB,EAAc,IAAM,CACpBX,EAAW,UACb,aAAaA,EAAW,OAAO,EAC/BA,EAAW,QAAU,MAGvBN,EAAW,EAAK,EAEhBM,EAAW,QAAU,WAAW,IAAM,CACpCT,EAAQ,EAAK,EACbK,EAAc,IAAI,EAClBI,EAAW,QAAU,IACvB,EAAG,GAAG,CACR,EAEMY,EAAYC,EAAAA,UAChB,GAAGC,EAAAA,MAAM,WACTrB,GAAW,GAAGqB,EAAAA,MAAM,mBAAA,EAGtB,OACEC,EAAAA,KAAC,MAAA,CACC,IAAKlB,EACJ,GAAGV,EACJ,MAAO,CAAE,SAAU,WAAY,GAAGA,EAAM,KAAA,EACxC,aAAcuB,EACd,aAAcC,EAEb,SAAA,CAAA5B,EACDiC,EAAAA,IAAC,OAAA,CACC,IAAKjB,EACL,UAAAa,EACA,MAAO,CACL,GAAGjB,EACH,MAAAV,EACA,QAASK,EAAO,QAAU,MAAA,EAG3B,SAAAN,CAAA,CAAA,CACH,CAAA,CAAA,CAGN,CAEA,MAAAiC,EAAeC,EAAAA,gBAAgBpC,CAAO"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsxs as R,jsx as W}from"react/jsx-runtime";import{useState as p,useRef as h,useLayoutEffect as F,useEffect as x}from"react";import{p as y}from"../../chunks/index-CZ41y9Hn.js";import{j as M}from"../../chunks/joinClass-anSpaauN.js";import{c as $}from"../../chunks/createComponent-
|
|
1
|
+
import{jsxs as R,jsx as W}from"react/jsx-runtime";import{useState as p,useRef as h,useLayoutEffect as F,useEffect as x}from"react";import{p as y}from"../../chunks/index-CZ41y9Hn.js";import{j as M}from"../../chunks/joinClass-anSpaauN.js";import{c as $}from"../../chunks/createComponent-WNQRXK89.js";import{u as k}from"../../chunks/useTheme-njpgklWP.js";import"../../chunks/generateSupportColors-BN5t8dA-.js";function q({children:b,label:g,width:j="max-content",direction:l="bottom",...d}){const{theme:{spacing:t}}=k(),[o,T]=p(!1),[E,i]=p(!1),[A,v]=p(null),u=h(null),c=h(null),e=h(null);F(()=>{if(!o||!u.current||!c.current)return;const{offsetHeight:r,offsetWidth:a}=u.current,{offsetHeight:f,offsetWidth:m}=c.current;let n,s;l==="top"?(n=-(f+t),s=-(m-a)/2):l==="bottom"?(n=r+t,s=-(m-a)/2):l==="right"?(n=(r-f)/2,s=a+t):(n=(r-f)/2,s=-(m+t)),v({top:n,left:s})},[o,l,t]),x(()=>{if(!o)return;const r=requestAnimationFrame(()=>i(!0));return()=>cancelAnimationFrame(r)},[o]),x(()=>()=>{e.current&&clearTimeout(e.current)},[]);const C=()=>{if(e.current){clearTimeout(e.current),e.current=null,i(!0);return}T(!0)},H=()=>{e.current&&(clearTimeout(e.current),e.current=null),i(!1),e.current=setTimeout(()=>{T(!1),v(null),e.current=null},300)},L=M(`${y}-tooltip`,E&&`${y}-tooltip--visible`);return R("div",{ref:u,...d,style:{position:"relative",...d.style},onMouseEnter:C,onMouseLeave:H,children:[b,W("span",{ref:c,className:L,style:{...A,width:j,display:o?"block":"none"},children:g})]})}const D=$(q);export{D as default};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/display/Tooltip/Tooltip.tsx"],"sourcesContent":["import {\n useRef,\n useState,\n useEffect,\n useLayoutEffect,\n type CSSProperties,\n type HTMLAttributes,\n} from 'react';\n\nimport { prefix } from '@iziui/tokens/web/js';\n\nimport { joinClass } from '@iziui/core/utils/joinClass';\n\nimport createComponent from '@/core/createComponent';\nimport { useTheme } from '@/theme';\n\nimport '@iziui/styles/components/Tooltip.scss';\n\ntype TooltipCoordinate = { top: number; left: number; };\ntype Direction = 'top' | 'right' | 'bottom' | 'left';\n\nexport interface TooltipProps extends HTMLAttributes<HTMLElement> {\n direction?: Direction;\n width?: CSSProperties['width'];\n children: React.JSX.Element;\n label: string | React.JSX.Element;\n}\n\nfunction Tooltip({\n children,\n label,\n width = 'max-content',\n direction = 'bottom',\n ...props\n}: TooltipProps) {\n const { theme: { spacing } } = useTheme();\n const [open, setOpen] = useState(false);\n const [animate, setAnimate] = useState(false);\n const [coordinate, setCoordinate] = useState<TooltipCoordinate | null>(null);\n\n const containerRef = useRef<HTMLDivElement>(null);\n const tooltipRef = useRef<HTMLSpanElement>(null);\n const leaveTimer = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n // Measure and position synchronously before the browser paints — no setTimeout hack needed.\n useLayoutEffect(() => {\n if (!open || !containerRef.current || !tooltipRef.current) return;\n\n const { offsetHeight, offsetWidth } = containerRef.current;\n const { offsetHeight: tooltipH, offsetWidth: tooltipW } = tooltipRef.current;\n\n let top: number;\n let left: number;\n\n if (direction === 'top') {\n top = -(tooltipH + spacing);\n left = -(tooltipW - offsetWidth) / 2;\n } else if (direction === 'bottom') {\n top = offsetHeight + spacing;\n left = -(tooltipW - offsetWidth) / 2;\n } else if (direction === 'right') {\n top = (offsetHeight - tooltipH) / 2;\n left = offsetWidth + spacing;\n } else {\n top = (offsetHeight - tooltipH) / 2;\n left = -(tooltipW + spacing);\n }\n\n setCoordinate({ top, left });\n }, [open, direction, spacing]);\n\n // Trigger the CSS transition one frame after position is committed.\n useEffect(() => {\n if (!open) return;\n const frame = requestAnimationFrame(() => setAnimate(true));\n return () => cancelAnimationFrame(frame);\n }, [open]);\n\n useEffect(() => () => {\n if (!leaveTimer.current) { return; }\n\n clearTimeout(leaveTimer.current);\n }, []);\n\n const handleEnter = () => {\n if (leaveTimer.current) {\n clearTimeout(leaveTimer.current);\n\n leaveTimer.current = null;\n setAnimate(true);\n\n return;\n }\n setOpen(true);\n };\n\n const handleLeave = () => {\n if (leaveTimer.current) {\n clearTimeout(leaveTimer.current);\n leaveTimer.current = null;\n }\n\n setAnimate(false);\n\n leaveTimer.current = setTimeout(() => {\n setOpen(false);\n setCoordinate(null);\n leaveTimer.current = null;\n }, 300);\n };\n\n const className = joinClass(\n `${prefix}-tooltip`,\n animate && `${prefix}-tooltip--visible`,\n );\n\n return (\n <div\n ref={containerRef}\n {...props}\n style={{ position: 'relative', ...props.style }}\n onMouseEnter={handleEnter}\n onMouseLeave={handleLeave}\n >\n {children}\n <span\n ref={tooltipRef}\n className={className}\n style={{\n ...coordinate,\n width,\n display: open ? 'block' : 'none',\n }}\n >\n {label}\n </span>\n </div>\n );\n}\n\nexport default createComponent(Tooltip);\n"],"names":["Tooltip","children","label","width","direction","props","spacing","useTheme","open","setOpen","useState","animate","setAnimate","coordinate","setCoordinate","containerRef","useRef","tooltipRef","leaveTimer","useLayoutEffect","offsetHeight","offsetWidth","tooltipH","tooltipW","top","left","useEffect","frame","handleEnter","handleLeave","className","joinClass","prefix","jsxs","jsx","Tooltip_default","createComponent"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/display/Tooltip/Tooltip.tsx"],"sourcesContent":["import {\n useRef,\n useState,\n useEffect,\n useLayoutEffect,\n type CSSProperties,\n type HTMLAttributes,\n} from 'react';\n\nimport { prefix } from '@iziui/tokens/web/js';\n\nimport { joinClass } from '@iziui/core/utils/joinClass';\n\nimport createComponent from '@/core/createComponent';\nimport { useTheme } from '@/theme';\n\nimport '@iziui/styles/components/Tooltip.scss';\n\ntype TooltipCoordinate = { top: number; left: number; };\ntype Direction = 'top' | 'right' | 'bottom' | 'left';\n\nexport interface TooltipProps extends HTMLAttributes<HTMLElement> {\n direction?: Direction;\n width?: CSSProperties['width'];\n children: React.JSX.Element;\n label: string | React.JSX.Element;\n}\n\nfunction Tooltip({\n children,\n label,\n width = 'max-content',\n direction = 'bottom',\n ...props\n}: TooltipProps) {\n const { theme: { spacing } } = useTheme();\n const [open, setOpen] = useState(false);\n const [animate, setAnimate] = useState(false);\n const [coordinate, setCoordinate] = useState<TooltipCoordinate | null>(null);\n\n const containerRef = useRef<HTMLDivElement>(null);\n const tooltipRef = useRef<HTMLSpanElement>(null);\n const leaveTimer = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n // Measure and position synchronously before the browser paints — no setTimeout hack needed.\n useLayoutEffect(() => {\n if (!open || !containerRef.current || !tooltipRef.current) return;\n\n const { offsetHeight, offsetWidth } = containerRef.current;\n const { offsetHeight: tooltipH, offsetWidth: tooltipW } = tooltipRef.current;\n\n let top: number;\n let left: number;\n\n if (direction === 'top') {\n top = -(tooltipH + spacing);\n left = -(tooltipW - offsetWidth) / 2;\n } else if (direction === 'bottom') {\n top = offsetHeight + spacing;\n left = -(tooltipW - offsetWidth) / 2;\n } else if (direction === 'right') {\n top = (offsetHeight - tooltipH) / 2;\n left = offsetWidth + spacing;\n } else {\n top = (offsetHeight - tooltipH) / 2;\n left = -(tooltipW + spacing);\n }\n\n setCoordinate({ top, left });\n }, [open, direction, spacing]);\n\n // Trigger the CSS transition one frame after position is committed.\n useEffect(() => {\n if (!open) return;\n const frame = requestAnimationFrame(() => setAnimate(true));\n return () => cancelAnimationFrame(frame);\n }, [open]);\n\n useEffect(() => () => {\n if (!leaveTimer.current) { return; }\n\n clearTimeout(leaveTimer.current);\n }, []);\n\n const handleEnter = () => {\n if (leaveTimer.current) {\n clearTimeout(leaveTimer.current);\n\n leaveTimer.current = null;\n setAnimate(true);\n\n return;\n }\n setOpen(true);\n };\n\n const handleLeave = () => {\n if (leaveTimer.current) {\n clearTimeout(leaveTimer.current);\n leaveTimer.current = null;\n }\n\n setAnimate(false);\n\n leaveTimer.current = setTimeout(() => {\n setOpen(false);\n setCoordinate(null);\n leaveTimer.current = null;\n }, 300);\n };\n\n const className = joinClass(\n `${prefix}-tooltip`,\n animate && `${prefix}-tooltip--visible`,\n );\n\n return (\n <div\n ref={containerRef}\n {...props}\n style={{ position: 'relative', ...props.style }}\n onMouseEnter={handleEnter}\n onMouseLeave={handleLeave}\n >\n {children}\n <span\n ref={tooltipRef}\n className={className}\n style={{\n ...coordinate,\n width,\n display: open ? 'block' : 'none',\n }}\n >\n {label}\n </span>\n </div>\n );\n}\n\nexport default createComponent(Tooltip);\n"],"names":["Tooltip","children","label","width","direction","props","spacing","useTheme","open","setOpen","useState","animate","setAnimate","coordinate","setCoordinate","containerRef","useRef","tooltipRef","leaveTimer","useLayoutEffect","offsetHeight","offsetWidth","tooltipH","tooltipW","top","left","useEffect","frame","handleEnter","handleLeave","className","joinClass","prefix","jsxs","jsx","Tooltip_default","createComponent"],"mappings":"uZA4BA,SAASA,EAAQ,CACf,SAAAC,EACA,MAAAC,EACA,MAAAC,EAAQ,cACR,UAAAC,EAAY,SACZ,GAAGC,CACL,EAAiB,CACf,KAAM,CAAE,MAAO,CAAE,QAAAC,CAAA,CAAQ,EAAMC,EAAA,EACzB,CAACC,EAAMC,CAAO,EAAIC,EAAS,EAAK,EAChC,CAACC,EAASC,CAAU,EAAIF,EAAS,EAAK,EACtC,CAACG,EAAYC,CAAa,EAAIJ,EAAmC,IAAI,EAErEK,EAAeC,EAAuB,IAAI,EAC1CC,EAAaD,EAAwB,IAAI,EACzCE,EAAaF,EAA6C,IAAI,EAGpEG,EAAgB,IAAM,CACpB,GAAI,CAACX,GAAQ,CAACO,EAAa,SAAW,CAACE,EAAW,QAAS,OAE3D,KAAM,CAAE,aAAAG,EAAc,YAAAC,CAAA,EAAgBN,EAAa,QAC7C,CAAE,aAAcO,EAAU,YAAaC,CAAA,EAAaN,EAAW,QAErE,IAAIO,EACAC,EAEArB,IAAc,OAChBoB,EAAM,EAAEF,EAAWhB,GACnBmB,EAAO,EAAEF,EAAWF,GAAe,GAC1BjB,IAAc,UACvBoB,EAAMJ,EAAed,EACrBmB,EAAO,EAAEF,EAAWF,GAAe,GAC1BjB,IAAc,SACvBoB,GAAOJ,EAAeE,GAAY,EAClCG,EAAOJ,EAAcf,IAErBkB,GAAOJ,EAAeE,GAAY,EAClCG,EAAO,EAAEF,EAAWjB,IAGtBQ,EAAc,CAAE,IAAAU,EAAK,KAAAC,EAAM,CAC7B,EAAG,CAACjB,EAAMJ,EAAWE,CAAO,CAAC,EAG7BoB,EAAU,IAAM,CACd,GAAI,CAAClB,EAAM,OACX,MAAMmB,EAAQ,sBAAsB,IAAMf,EAAW,EAAI,CAAC,EAC1D,MAAO,IAAM,qBAAqBe,CAAK,CACzC,EAAG,CAACnB,CAAI,CAAC,EAETkB,EAAU,IAAM,IAAM,CACfR,EAAW,SAEhB,aAAaA,EAAW,OAAO,CACjC,EAAG,CAAA,CAAE,EAEL,MAAMU,EAAc,IAAM,CACxB,GAAIV,EAAW,QAAS,CACtB,aAAaA,EAAW,OAAO,EAE/BA,EAAW,QAAU,KACrBN,EAAW,EAAI,EAEf,MACF,CACAH,EAAQ,EAAI,CACd,EAEMoB,EAAc,IAAM,CACpBX,EAAW,UACb,aAAaA,EAAW,OAAO,EAC/BA,EAAW,QAAU,MAGvBN,EAAW,EAAK,EAEhBM,EAAW,QAAU,WAAW,IAAM,CACpCT,EAAQ,EAAK,EACbK,EAAc,IAAI,EAClBI,EAAW,QAAU,IACvB,EAAG,GAAG,CACR,EAEMY,EAAYC,EAChB,GAAGC,CAAM,WACTrB,GAAW,GAAGqB,CAAM,mBAAA,EAGtB,OACEC,EAAC,MAAA,CACC,IAAKlB,EACJ,GAAGV,EACJ,MAAO,CAAE,SAAU,WAAY,GAAGA,EAAM,KAAA,EACxC,aAAcuB,EACd,aAAcC,EAEb,SAAA,CAAA5B,EACDiC,EAAC,OAAA,CACC,IAAKjB,EACL,UAAAa,EACA,MAAO,CACL,GAAGjB,EACH,MAAAV,EACA,QAASK,EAAO,QAAU,MAAA,EAG3B,SAAAN,CAAA,CAAA,CACH,CAAA,CAAA,CAGN,CAEA,MAAAiC,EAAeC,EAAgBpC,CAAO"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("../../chunks/Typography-
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("../../chunks/Typography-DitZ-9b5.cjs");require("react/jsx-runtime");require("react");require("../../chunks/index-DYxwT4uW.cjs");require("../../chunks/joinClass-Jk3EszKD.cjs");require("../../chunks/convertPathToColor-BlQMLS4V.cjs");require("../../chunks/useTheme-DoESyi5h.cjs");require("../../chunks/generateSupportColors-CTMoGhDf.cjs");require("../../chunks/createComponent-CTufIEiN.cjs");exports.default=e.Typography;
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{T as
|
|
1
|
+
import{T as l}from"../../chunks/Typography-v-XX3oAk.js";import"react/jsx-runtime";import"react";import"../../chunks/index-CZ41y9Hn.js";import"../../chunks/joinClass-anSpaauN.js";import"../../chunks/convertPathToColor-D2SdAqGh.js";import"../../chunks/useTheme-njpgklWP.js";import"../../chunks/generateSupportColors-BN5t8dA-.js";import"../../chunks/createComponent-WNQRXK89.js";export{l as default};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("../chunks/generateSupportColors-CTMoGhDf.cjs"),n=require("../chunks/convertPathToColor-BlQMLS4V.cjs"),a=require("../chunks/joinClass-Jk3EszKD.cjs");function l(t){const r=o.hexToHsl(t),s=o.adjustLightness(r.h,r.s,r.l,5),i=o.adjustLightness(r.h,r.s,r.l,10);return`linear-gradient(to right, ${t}, ${s}, ${i})`}function g(t,e){return t.includes(".")?n.convertPathToColor(t,e):t}exports.adjustLightness=o.adjustLightness;exports.generateSupportColors=o.generateSupportColors;exports.getContrastColor=o.getContrastColor;exports.getOpacityColor=o.getOpacityColor;exports.hexToHsl=o.hexToHsl;exports.hslToHex=o.hslToHex;exports.convertPathToColor=n.convertPathToColor;exports.joinClass=a.joinClass;exports.getLinearGradient=l;exports.getPriorityColor=g;
|
|
2
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../../../core/src/utils/getGradient/getGradient.ts","../../../../core/src/utils/getPriorityColor/getPriorityColor.ts"],"sourcesContent":["\nimport { adjustLightness } from '../adjustLightness';\nimport { hexToHsl } from '../hexToHsl/hexToHsl';\n\nexport function getLinearGradient(hex: string) {\n const variation = 5;\n\n const hsl = hexToHsl(hex);\n\n const color2 = adjustLightness(hsl.h, hsl.s, hsl.l, variation); // 20% mais claro\n const color3 = adjustLightness(hsl.h, hsl.s, hsl.l, variation * 2); // 40% mais claro\n\n return `linear-gradient(to right, ${hex}, ${color2}, ${color3})`;\n}","import type { MappedColors, PaletteBuilded } from '../../theme';\nimport { convertPathToColor } from '../convertPathToColor';\n\nexport function getPriorityColor(color: string, palette: PaletteBuilded) {\n if (color.includes('.')) { return convertPathToColor(color as MappedColors, palette); }\n\n return color;\n}"],"names":["getLinearGradient","hex","hsl","hexToHsl","color2","adjustLightness","color3","getPriorityColor","color","palette","convertPathToColor"],"mappings":"qPAIO,SAASA,EAAkBC,EAAa,CAG7C,MAAMC,EAAMC,EAAAA,SAASF,CAAG,EAElBG,EAASC,kBAAgBH,EAAI,EAAGA,EAAI,EAAGA,EAAI,EAAG,CAAS,EACvDI,EAASD,EAAAA,gBAAgBH,EAAI,EAAGA,EAAI,EAAGA,EAAI,EAAG,EAAa,EAEjE,MAAO,6BAA6BD,CAAG,KAAKG,CAAM,KAAKE,CAAM,GAC/D,CCVO,SAASC,EAAiBC,EAAeC,EAAyB,CACvE,OAAID,EAAM,SAAS,GAAG,EAAYE,EAAAA,mBAAmBF,EAAuBC,CAAO,EAE5ED,CACT"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from '../.types/_internal/core/utils';
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{h as i,a}from"../chunks/generateSupportColors-BN5t8dA-.js";import{g as f,b as C,c as m,d}from"../chunks/generateSupportColors-BN5t8dA-.js";import{c as e}from"../chunks/convertPathToColor-D2SdAqGh.js";import{j as x}from"../chunks/joinClass-anSpaauN.js";function g(o){const t=i(o),s=a(t.h,t.s,t.l,5),n=a(t.h,t.s,t.l,10);return`linear-gradient(to right, ${o}, ${s}, ${n})`}function h(o,r){return o.includes(".")?e(o,r):o}export{a as adjustLightness,e as convertPathToColor,f as generateSupportColors,C as getContrastColor,g as getLinearGradient,m as getOpacityColor,h as getPriorityColor,i as hexToHsl,d as hslToHex,x as joinClass};
|
|
2
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../core/src/utils/getGradient/getGradient.ts","../../../../core/src/utils/getPriorityColor/getPriorityColor.ts"],"sourcesContent":["\nimport { adjustLightness } from '../adjustLightness';\nimport { hexToHsl } from '../hexToHsl/hexToHsl';\n\nexport function getLinearGradient(hex: string) {\n const variation = 5;\n\n const hsl = hexToHsl(hex);\n\n const color2 = adjustLightness(hsl.h, hsl.s, hsl.l, variation); // 20% mais claro\n const color3 = adjustLightness(hsl.h, hsl.s, hsl.l, variation * 2); // 40% mais claro\n\n return `linear-gradient(to right, ${hex}, ${color2}, ${color3})`;\n}","import type { MappedColors, PaletteBuilded } from '../../theme';\nimport { convertPathToColor } from '../convertPathToColor';\n\nexport function getPriorityColor(color: string, palette: PaletteBuilded) {\n if (color.includes('.')) { return convertPathToColor(color as MappedColors, palette); }\n\n return color;\n}"],"names":["getLinearGradient","hex","hsl","hexToHsl","color2","adjustLightness","color3","getPriorityColor","color","palette","convertPathToColor"],"mappings":"mQAIO,SAASA,EAAkBC,EAAa,CAG7C,MAAMC,EAAMC,EAASF,CAAG,EAElBG,EAASC,EAAgBH,EAAI,EAAGA,EAAI,EAAGA,EAAI,EAAG,CAAS,EACvDI,EAASD,EAAgBH,EAAI,EAAGA,EAAI,EAAGA,EAAI,EAAG,EAAa,EAEjE,MAAO,6BAA6BD,CAAG,KAAKG,CAAM,KAAKE,CAAM,GAC/D,CCVO,SAASC,EAAiBC,EAAeC,EAAyB,CACvE,OAAID,EAAM,SAAS,GAAG,EAAYE,EAAmBF,EAAuBC,CAAO,EAE5ED,CACT"}
|
package/dist/index.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("./chunks/useTheme-DoESyi5h.cjs"),t=require("./chunks/Bounce-ByNbJjX0.cjs"),e=require("./chunks/useForm-TyKbw7O8.cjs"),i=require("./chunks/Fade-CM-5xRVt.cjs"),s=require("./chunks/Slide-D4aLHjYS.cjs"),n=require("./chunks/Zoom-BOnqwiDY.cjs"),d=require("./chunks/useListenerResized-AwpsZLcP.cjs"),u=require("./chunks/useMenu-C0u9aTiR.cjs"),q=require("./chunks/useResize-B-oebgDR.cjs"),c=require("./chunks/Card-B8XSgLaD.cjs"),m=require("./chunks/CardContent-BivcVoIc.cjs"),a=require("./chunks/Drawer-0wOdungj.cjs"),o=require("./chunks/GridItem-wwo-SHGR.cjs"),C=require("./chunks/MenuButton-AyzSxRY0.cjs");require("react");require("react/jsx-runtime");require("./chunks/generateSupportColors-CTMoGhDf.cjs");require("./chunks/index-DYxwT4uW.cjs");require("./chunks/joinClass-Jk3EszKD.cjs");require("./chunks/uuid-omnJ9TjZ.cjs");require("./chunks/createComponent-CTufIEiN.cjs");require("./chunks/Ripple-Dy4i91j1.cjs");require("./chunks/Stack-beBM7a60.cjs");exports.ThemeProvider=r.ThemeProvider;exports.createTheme=r.createTheme;exports.useTheme=r.useTheme;exports.Bounce=t.Bounce;exports.Control=e.Control;exports.Form=e.Form;exports.useControl=e.useControl;exports.useForm=e.useForm;exports.useFormGroup=e.useFormGroup;exports.Fade=i.Fade;exports.Slide=s.Slide;exports.Zoom=n.Zoom;exports.useListenerResized=d.useListenerResized;exports.Menu=u.Menu;exports.useMenu=u.useMenu;exports.useResize=q.useResize;exports.Card=c.Card;exports.CardContent=m.CardContent;exports.Drawer=a.Drawer_default;exports.Grid=o.Grid;exports.GridItem=o.GridItem;exports.MenuButton=C.MenuButton_default;
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import
|
|
1
|
+
import{T as x,c as n,u as d}from"./chunks/useTheme-njpgklWP.js";import{B as F}from"./chunks/Bounce-DP0PU3kr.js";import{C as G,F as T,u as c,a as h,b as l}from"./chunks/useForm-3oClzOJC.js";import{F as z}from"./chunks/Fade-spxq-W-Q.js";import{S as R}from"./chunks/Slide-BxEwoZ70.js";import{Z}from"./chunks/Zoom-DqgU4Wfv.js";import{u as v}from"./chunks/useListenerResized-Bnqxrt7k.js";import{M as I,u as L}from"./chunks/useMenu-BNL22pOQ.js";import{u as g}from"./chunks/useResize-BjM6tiAF.js";import{C as k}from"./chunks/Card-DOsl4_nu.js";import{C as y}from"./chunks/CardContent-C8ypE7yH.js";import{D as E}from"./chunks/Drawer-D1lAWrdi.js";import{G as J,a as K}from"./chunks/GridItem-CaoPZmBu.js";import{M as O}from"./chunks/MenuButton-DLf22r80.js";import"react";import"react/jsx-runtime";import"./chunks/generateSupportColors-BN5t8dA-.js";import"./chunks/index-CZ41y9Hn.js";import"./chunks/joinClass-anSpaauN.js";import"./chunks/uuid-dGvr9vBZ.js";import"./chunks/createComponent-WNQRXK89.js";import"./chunks/Ripple-Bq9bxg4k.js";import"./chunks/Stack-DK5pfu2w.js";export{F as Bounce,k as Card,y as CardContent,G as Control,E as Drawer,z as Fade,T as Form,J as Grid,K as GridItem,I as Menu,O as MenuButton,R as Slide,x as ThemeProvider,Z as Zoom,n as createTheme,c as useControl,h as useForm,l as useFormGroup,v as useListenerResized,L as useMenu,g as useResize,d as useTheme};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/dist/lab/Form/index.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("../../chunks/useForm-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("../../chunks/useForm-TyKbw7O8.cjs");require("react");require("react/jsx-runtime");exports.Control=r.Control;exports.Form=r.Form;exports.useControl=r.useControl;exports.useForm=r.useForm;exports.useFormGroup=r.useFormGroup;
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
package/dist/lab/Form/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{C as m,F as t,u,a as e,b as p}from"../../chunks/useForm-
|
|
1
|
+
import{C as m,F as t,u,a as e,b as p}from"../../chunks/useForm-3oClzOJC.js";import"react";import"react/jsx-runtime";export{m as Control,t as Form,u as useControl,e as useForm,p as useFormGroup};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/dist/theme/index.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../chunks/useTheme-DoESyi5h.cjs");require("react");require("react/jsx-runtime");require("../chunks/generateSupportColors-CTMoGhDf.cjs");exports.ThemeProvider=e.ThemeProvider;exports.createTheme=e.createTheme;exports.useTheme=e.useTheme;
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
package/dist/theme/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import
|
|
1
|
+
import{T as a,c as i,u as p}from"../chunks/useTheme-njpgklWP.js";import"react";import"react/jsx-runtime";import"../chunks/generateSupportColors-BN5t8dA-.js";export{a as ThemeProvider,i as createTheme,p as useTheme};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@iziui/react",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.65-rc",
|
|
4
4
|
"main": "./dist/index.cjs",
|
|
5
5
|
"module": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -42,6 +42,11 @@
|
|
|
42
42
|
"import": "./dist/theme/index.js",
|
|
43
43
|
"require": "./dist/theme/index.cjs"
|
|
44
44
|
},
|
|
45
|
+
"./core": {
|
|
46
|
+
"types": "./dist/core/index.d.ts",
|
|
47
|
+
"import": "./dist/core/index.js",
|
|
48
|
+
"require": "./dist/core/index.cjs"
|
|
49
|
+
},
|
|
45
50
|
"./style.css": "./dist/style.css"
|
|
46
51
|
},
|
|
47
52
|
"scripts": {
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";const l=require("react"),h=require("react/jsx-runtime"),p=l.createContext(null);function y({formGroup:s,debug:t=!1,children:r,...e}){const n=a=>{a.preventDefault(),s.submit()};return h.jsxs(p,{value:s,children:[h.jsx("form",{...e,style:{width:"100%",...e.style},onSubmit:n,noValidate:!0,children:r}),t&&h.jsx("pre",{style:{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 f(){const s=l.useContext(p);if(!s)throw new Error("useFormGroup must be used inside <FormProvider> (or <Form />).");return s}function v(s){const t=f();return{control:t.controls[s],update:n=>{t.setValues(a=>(a[s]=n,a))}}}function m({controlName:s,field:t,action:r="input"}){const{control:e,update:n}=v(s);return(i=>{const u=o=>["radio","checkbox"].includes(o.type)?o.target.checked:o.target.value;return l.cloneElement(i,{onBlur:o=>{r==="blur"&&n(u(o)),i.props.onBlur&&i.props.onBlur(o)},onInput:o=>{r==="input"&&n(u(o)),i.props.onInput&&i.props.onInput(o)},onChange:o=>{r==="change"&&n(u(o)),i.props.onChange&&i.props.onChange(o)}})})(t(e))}class d{constructor(t,r,e){this.controls=t,this.handle=r,this.validator=e}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((r,e)=>({[e]:r.value})).forEach(r=>{for(const e in r)t[e]=r[e]}),t}setValues(t){const r=typeof t=="function"?t(this.values):t;for(const e of Object.keys(r))this.controls[e].value=r[e];this.validate(),this.hydrate(this),this.handle.change&&this.handle.change(this)}eachControl(t){return Object.keys(this.controls).map(r=>t(this.controls[r],r))}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(){this.validator&&(Object.entries(this.validator).map(([t,r])=>{if(!r)return;const e=this.controls[t].validate(),n=r(this);this.controls[t].error=e||n||""}),this.isValid=!this.errors.length,this.hydrate(this))}}class g{_value;defaultValue;validators=[];type;error="";dirty=!1;constructor({defaultValue:t,type:r="text",validators:e}){this.type=r,this._value=t,this.defaultValue=t,e&&(this.validators=e)}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(r=>r(this)).filter(Boolean);return this.error=t[0]||"",this.error}}function b(s){return Object.entries(s).reduce((t,r)=>{const e=r[0],n=r[1];return t[e]=new g(n),t},{})}function C({form:s,handle:t,validator:r}){const[e,n]=l.useState(new d(b(s),t,r)),a=i=>{n(u=>{const o=i.controls,c=new d(o,t,r);return c.hydrate=u.hydrate,c})};return e.hydrate=a,e}exports.Control=m;exports.Form=y;exports.useControl=v;exports.useForm=C;exports.useFormGroup=f;
|
|
2
|
-
//# sourceMappingURL=useForm-D3kD3cxE.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useForm-D3kD3cxE.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, unknown>> extends HTMLAttributes<HTMLFormElement> {\n formGroup: FormGroup<T>;\n debug?: boolean;\n}\n\nexport default function Form<T extends Record<string, unknown>>({\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 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, unknown>>() {\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, unknown>,\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, unknown>> = (data: FormGroup<T>) => void;\ntype SetValues<F> = Partial<F> | ((values: F) => Partial<F>);\n\nexport type Validator<T extends Record<string, unknown>> = Partial<{\n [K in keyof T]: (data: FormGroup<T>) => string | void;\n}>\n\nexport interface Handle<T extends Record<string, unknown>> {\n change?: (form: FormGroup<T>) => void;\n submit?: (form: FormGroup<T>) => void;\n}\n\nexport default class FormGroup<T extends Record<string, unknown>> {\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 if (!this.validator) { return; }\n\n Object.entries(this.validator).map(([key, fn]) => {\n if (!fn) { return; }\n\n const controlError = this.controls[key].validate();\n\n const validatorError = fn(this);\n\n this.controls[key].error = controlError || validatorError || '';\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, unknown>> = {\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, unknown>>(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<string, unknown>>({\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","controlError","validatorError","FormControl","defaultValue","type","validators","errors","v","makingControls","form","acc","useForm","setFormGroup","useState","hydrate","prev","newFormGroup"],"mappings":"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"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{createContext as p,useContext as f,cloneElement as v,useState as y}from"react";import{jsxs as m,jsx as h}from"react/jsx-runtime";const d=p(null);function w({formGroup:s,debug:t=!1,children:r,...e}){const n=a=>{a.preventDefault(),s.submit()};return m(d,{value:s,children:[h("form",{...e,style:{width:"100%",...e.style},onSubmit:n,noValidate:!0,children:r}),t&&h("pre",{style:{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 g(){const s=f(d);if(!s)throw new Error("useFormGroup must be used inside <FormProvider> (or <Form />).");return s}function b(s){const t=g();return{control:t.controls[s],update:n=>{t.setValues(a=>(a[s]=n,a))}}}function V({controlName:s,field:t,action:r="input"}){const{control:e,update:n}=b(s);return(i=>{const u=o=>["radio","checkbox"].includes(o.type)?o.target.checked:o.target.value;return v(i,{onBlur:o=>{r==="blur"&&n(u(o)),i.props.onBlur&&i.props.onBlur(o)},onInput:o=>{r==="input"&&n(u(o)),i.props.onInput&&i.props.onInput(o)},onChange:o=>{r==="change"&&n(u(o)),i.props.onChange&&i.props.onChange(o)}})})(t(e))}class c{constructor(t,r,e){this.controls=t,this.handle=r,this.validator=e}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((r,e)=>({[e]:r.value})).forEach(r=>{for(const e in r)t[e]=r[e]}),t}setValues(t){const r=typeof t=="function"?t(this.values):t;for(const e of Object.keys(r))this.controls[e].value=r[e];this.validate(),this.hydrate(this),this.handle.change&&this.handle.change(this)}eachControl(t){return Object.keys(this.controls).map(r=>t(this.controls[r],r))}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(){this.validator&&(Object.entries(this.validator).map(([t,r])=>{if(!r)return;const e=this.controls[t].validate(),n=r(this);this.controls[t].error=e||n||""}),this.isValid=!this.errors.length,this.hydrate(this))}}class C{_value;defaultValue;validators=[];type;error="";dirty=!1;constructor({defaultValue:t,type:r="text",validators:e}){this.type=r,this._value=t,this.defaultValue=t,e&&(this.validators=e)}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(r=>r(this)).filter(Boolean);return this.error=t[0]||"",this.error}}function x(s){return Object.entries(s).reduce((t,r)=>{const e=r[0],n=r[1];return t[e]=new C(n),t},{})}function j({form:s,handle:t,validator:r}){const[e,n]=y(new c(x(s),t,r)),a=i=>{n(u=>{const o=i.controls,l=new c(o,t,r);return l.hydrate=u.hydrate,l})};return e.hydrate=a,e}export{V as C,w as F,j as a,g as b,b as u};
|
|
2
|
-
//# sourceMappingURL=useForm-DBk4Of85.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useForm-DBk4Of85.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, unknown>> extends HTMLAttributes<HTMLFormElement> {\n formGroup: FormGroup<T>;\n debug?: boolean;\n}\n\nexport default function Form<T extends Record<string, unknown>>({\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 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, unknown>>() {\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, unknown>,\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, unknown>> = (data: FormGroup<T>) => void;\ntype SetValues<F> = Partial<F> | ((values: F) => Partial<F>);\n\nexport type Validator<T extends Record<string, unknown>> = Partial<{\n [K in keyof T]: (data: FormGroup<T>) => string | void;\n}>\n\nexport interface Handle<T extends Record<string, unknown>> {\n change?: (form: FormGroup<T>) => void;\n submit?: (form: FormGroup<T>) => void;\n}\n\nexport default class FormGroup<T extends Record<string, unknown>> {\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 if (!this.validator) { return; }\n\n Object.entries(this.validator).map(([key, fn]) => {\n if (!fn) { return; }\n\n const controlError = this.controls[key].validate();\n\n const validatorError = fn(this);\n\n this.controls[key].error = controlError || validatorError || '';\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, unknown>> = {\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, unknown>>(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<string, unknown>>({\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","controlError","validatorError","FormControl","defaultValue","type","validators","errors","v","makingControls","form","acc","useForm","setFormGroup","useState","hydrate","prev","newFormGroup"],"mappings":"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"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{useState as b,useMemo as F,useEffect as E,createContext as $,useContext as P}from"react";import{jsx as k}from"react/jsx-runtime";function w(t,e,n){e/=100,n/=100;const r=(1-Math.abs(2*n-1))*e,a=r*(1-Math.abs(t/60%2-1)),o=n-r/2;let s=0,c=0,i=0;0<=t&&t<60?(s=r,c=a,i=0):60<=t&&t<120?(s=a,c=r,i=0):120<=t&&t<180?(s=0,c=r,i=a):180<=t&&t<240?(s=0,c=a,i=r):240<=t&&t<300?(s=a,c=0,i=r):300<=t&&t<360&&(s=r,c=0,i=a);const p=Math.round((s+o)*255).toString(16).padStart(2,"0"),f=Math.round((c+o)*255).toString(16).padStart(2,"0"),h=Math.round((i+o)*255).toString(16).padStart(2,"0");return`#${p}${f}${h}`}function u(t,e,n,r){return n=Math.min(Math.max(n+r,0),100),w(t,e,n)}function v(t){const e=parseInt(t.slice(1,3),16)/255,n=parseInt(t.slice(3,5),16)/255,r=parseInt(t.slice(5,7),16)/255,a=Math.max(e,n,r),o=Math.min(e,n,r);let s=0,c=0;const i=(a+o)/2;if(a===o)s=c=0;else{const p=a-o;switch(c=i>.5?p/(2-a-o):p/(a+o),a){case e:s=(n-r)/p+(n<r?6:0);break;case n:s=(r-e)/p+2;break;case r:s=(e-n)/p+4;break}s*=60}return{h:s,s:c*100,l:i*100}}function x(t,e){if(!/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/.test(t))throw new Error("Cor inválida. Use um formato hexadecimal (#RRGGBB ou #RGB).");t.length===4&&(t=`#${t[1]}${t[1]}${t[2]}${t[2]}${t[3]}${t[3]}`);const a=Math.round(e*255).toString(16).padStart(2,"0").toUpperCase();return`${t}${a}`}function S(t){const e=parseInt(t.slice(1,3),16)/255,n=parseInt(t.slice(3,5),16)/255,r=parseInt(t.slice(5,7),16)/255;return .2126*e+.7152*n+.0722*r>.6?"#000000":"#ffffff"}function M(t){const n=v(t),r=S(t),a=u(n.h,n.s,n.l,20),o=u(n.h,n.s,n.l,-20*1.7),s=x(t,20/100);return{main:t,dark:o,light:a,opacity:s,contrast:r}}function T(t){return[`${t}.main`,`${t}.dark`,`${t}.light`,`${t}.opacity`,`${t}.contrast`]}function C(t){return t.reduce((e,n)=>{const r=T(n);return e=[...e,...r],e},["text.primary","text.secondary","text.disabled","background.paper","background.default","divider"])}const B=["primary","secondary","error","warning","success","info"];C(B);function d(t,e){document.documentElement.style.setProperty(`--${t}`,e.main),document.documentElement.style.setProperty(`--${t}-light`,e.light),document.documentElement.style.setProperty(`--${t}-dark`,e.dark),document.documentElement.style.setProperty(`--${t}-contrast`,e.contrast),document.documentElement.style.setProperty(`--${t}-opacity`,e.opacity)}function I(t){if(document.querySelector(`link[href="${t}"]`))return;const e=document.createElement("link");e.rel="stylesheet",e.href=t,document.head.appendChild(e)}function R(t){if(typeof window>"u")return;const{palette:e,shape:n,spacing:r,typography:a}=t;a.url&&I(a.url),d("info",e.info),d("error",e.error),d("warning",e.warning),d("success",e.success),d("primary",e.primary),d("secondary",e.secondary),d("grey",e.grey),document.documentElement.style.setProperty("--typography",a.family),document.documentElement.style.setProperty("--text-primary",e.text?.primary),document.documentElement.style.setProperty("--text-secondary",e.text?.secondary),document.documentElement.style.setProperty("--text-disabled",e.text?.disabled),document.documentElement.style.setProperty("--background-paper",e.background?.paper),document.documentElement.style.setProperty("--background-default",e.background?.default),document.documentElement.style.setProperty("--divider",e.divider),document.documentElement.style.setProperty("--radius",`${n.radius}px`),document.documentElement.style.setProperty("--spacing",`${r}px`)}const l=8,m={radius:8},y={mode:"light",palette:{info:"#72E4FC",error:"#FF5377",warning:"#FF9457",success:"#36E79B",primary:"#6C37F4",secondary:"#FB7185",grey:"#F4F4F4",text:{primary:"rgb(31, 41, 55)",secondary:"rgb(75, 85, 99)",disabled:"rgb(172, 172, 172)"},background:{paper:"#F9F8F9",default:"#FFF"},divider:"rgba(0, 0, 0, 0.12)"},spacing:l,shape:m,typography:{family:"Poppins",url:"https://fonts.googleapis.com/css2?family=Poppins:ital,wght@0,400;0,500;0,600;0,700;1,400;1,500;1,600;1,700&display=swap"}},A={palette:{info:"#72E4FC",error:"#FF5377",warning:"#FF9457",success:"#36E79B",primary:"#6C37F4",secondary:"#EBFF5E",grey:"#2A2A2A",text:{primary:"rgba(255, 255, 255, 0.87)",secondary:"rgba(255, 255, 255, 0.6)",disabled:"rgba(255, 255, 255, 0.38)"},background:{paper:"#0D0225",default:"#30294E"},divider:"rgba(255, 255, 255, 0.12)"},spacing:l,shape:m,typography:{family:"Poppins",url:"https://fonts.googleapis.com/css2?family=Poppins:ital,wght@0,400;0,500;0,600;0,700;1,400;1,500;1,600;1,700&display=swap"}},D=["primary","secondary","error","warning","success","info","grey"];function G(t){const e=t?.mode??"light",n=e==="dark"?A:y,r=t?.palette??{},a=n.palette,o=Object.fromEntries(D.map(s=>[s,M(r[s]??a[s])]));return{mode:e,palette:{text:r.text??a.text,background:r.background??a.background,divider:r.divider??a.divider,...o},shape:t?.shape??n.shape,spacing:t?.spacing??n.spacing,typography:t?.typography??n.typography}}const g=$({theme:G(y),updateTheme:()=>{}});function H({theme:t,children:e}){const[n,r]=b(t),a=F(()=>({theme:n,updateTheme:s=>o(s)}),[t,n]);E(()=>{R(n)},[n]);const o=s=>{r(s)};return k(g.Provider,{value:a,children:e})}function O(){return P(g)}export{H as T,G as c,S as g,O as u};
|
|
2
|
-
//# sourceMappingURL=useTheme-BkUhhydo.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useTheme-BkUhhydo.js","sources":["../../../../core/src/utils/hslToHex/hslToHex.ts","../../../../core/src/utils/adjustLightness/adjustLightness.ts","../../../../core/src/utils/hexToHsl/hexToHsl.ts","../../../../core/src/utils/getOpacityColor/getOpacityColor.ts","../../../../core/src/utils/getContrastColor/getContrastColor.ts","../../../../core/src/utils/generateSupportColors/generateSupportColors.ts","../../../../core/src/theme/createMappedColors.ts","../../../../core/src/theme/Theme.ts","../../../../core/src/theme/applyTheme/applyTheme.ts","../../../../core/src/theme/defaultTheme.ts","../../../../core/src/theme/createTheme/createTheme.ts","../../src/theme/ThemeProvider.tsx","../../src/theme/useTheme.ts"],"sourcesContent":["export function hslToHex(h: number, s: number, l: number) {\n s /= 100;\n l /= 100;\n\n const c = (1 - Math.abs(2 * l - 1)) * s;\n const x = c * (1 - Math.abs((h / 60) % 2 - 1));\n const m = l - c / 2;\n let r = 0, g = 0, b = 0;\n\n if (0 <= h && h < 60) { r = c; g = x; b = 0; }\n else if (60 <= h && h < 120) { r = x; g = c; b = 0; }\n else if (120 <= h && h < 180) { r = 0; g = c; b = x; }\n else if (180 <= h && h < 240) { r = 0; g = x; b = c; }\n else if (240 <= h && h < 300) { r = x; g = 0; b = c; }\n else if (300 <= h && h < 360) { r = c; g = 0; b = x; }\n\n const newR = Math.round((r + m) * 255).toString(16).padStart(2, '0');\n const newG = Math.round((g + m) * 255).toString(16).padStart(2, '0');\n const newB = Math.round((b + m) * 255).toString(16).padStart(2, '0');\n\n return `#${newR}${newG}${newB}`;\n}","import { hslToHex } from '../hslToHex';\n\nexport function adjustLightness(h: number, s: number, l: number, amount: number) {\n l = Math.min(Math.max(l + amount, 0), 100);\n return hslToHex(h, s, l);\n}","export function hexToHsl(hex: string) {\n const r = parseInt(hex.slice(1, 3), 16) / 255;\n const g = parseInt(hex.slice(3, 5), 16) / 255;\n const b = parseInt(hex.slice(5, 7), 16) / 255;\n\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n let h = 0, s = 0;\n const l = (max + min) / 2;\n\n if (max === min) {\n h = s = 0; // acromático\n } else {\n const d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n\n switch (max) {\n case r: h = (g - b) / d + (g < b ? 6 : 0); break;\n case g: h = (b - r) / d + 2; break;\n case b: h = (r - g) / d + 4; break;\n }\n h *= 60;\n }\n\n return { h, s: s * 100, l: l * 100 };\n}","/**\n * Adiciona opacidade a uma cor em hexadecimal.\n * @param hexColor - A cor em hexadecimal (ex: #RRGGBB ou #RGB).\n * @param opacity - O valor da opacidade (entre 0 e 1).\n * @returns A cor hexadecimal com opacidade (ex: #RRGGBBAA).\n */\nexport function getOpacityColor(hexColor: string, opacity: number): string {\n // Validar entrada do hexadecimal\n const hexPattern = /^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/;\n if (!hexPattern.test(hexColor)) {\n throw new Error('Cor inválida. Use um formato hexadecimal (#RRGGBB ou #RGB).');\n }\n\n // Expandir formato #RGB para #RRGGBB\n if (hexColor.length === 4) {\n hexColor = `#${hexColor[1]}${hexColor[1]}${hexColor[2]}${hexColor[2]}${hexColor[3]}${hexColor[3]}`;\n }\n\n // Converter opacidade para formato hexadecimal (0 a 255)\n const alpha = Math.round(opacity * 255);\n const alphaHex = alpha.toString(16).padStart(2, '0').toUpperCase();\n\n // Combinar cor com opacidade\n return `${hexColor}${alphaHex}`;\n}","export function getContrastColor(hexColor: string) {\n // Converter hexadecimal para RGB\n const r = parseInt(hexColor.slice(1, 3), 16) / 255;\n const g = parseInt(hexColor.slice(3, 5), 16) / 255;\n const b = parseInt(hexColor.slice(5, 7), 16) / 255;\n\n // Calcular a luminância relativa\n const luminance = 0.2126 * r + 0.7152 * g + 0.0722 * b;\n\n // Se a luminância for baixa, usar branco como contraste, senão preto\n return luminance > 0.6 ? '#000000' : '#ffffff';\n}","import type { Color } from '../../theme';\nimport { hexToHsl } from '../hexToHsl';\nimport { adjustLightness } from '../adjustLightness';\nimport { getOpacityColor } from '../getOpacityColor';\nimport { getContrastColor } from '../getContrastColor/getContrastColor';\n\nexport function generateSupportColors(hex: string): Color {\n const variation = 20;\n\n const hsl = hexToHsl(hex);\n\n const contrastColor = getContrastColor(hex);\n const lighterColor = adjustLightness(hsl.h, hsl.s, hsl.l, variation);\n const darkerColor = adjustLightness(hsl.h, hsl.s, hsl.l, -variation * 1.7);\n const opacityColor = getOpacityColor(hex, variation / 100);\n\n return {\n main: hex,\n dark: darkerColor,\n light: lighterColor,\n opacity: opacityColor,\n contrast: contrastColor\n };\n}","import type { MappedColors, Colors, colors } from './Theme';\n\nfunction generateMappedColor(color: Colors): MappedColors[] {\n return [\n `${color}.main`,\n `${color}.dark`,\n `${color}.light`,\n `${color}.opacity`,\n `${color}.contrast`,\n ];\n}\n\nexport function createMappedColors(_colors: typeof colors): MappedColors[] {\n return _colors.reduce<MappedColors[]>((acc, color) => {\n const mapped = generateMappedColor(color);\n\n acc = [...acc, ...mapped];\n\n return acc;\n }, [\n 'text.primary',\n 'text.secondary',\n 'text.disabled',\n 'background.paper',\n 'background.default',\n 'divider'\n ]);\n}","import type { Path } from '@iziui/toolkit/interface';\n\nimport { createMappedColors } from './createMappedColors';\n\nexport const colors = ['primary', 'secondary', 'error', 'warning', 'success', 'info'] as const;\nexport const mappedColors = createMappedColors(colors);\n\nexport type Mode = 'light' | 'dark'\n\nexport type MappedColors = Path<PaletteBuilded>;\nexport type Colors = typeof colors[number];\n\nexport type Size = 'small' | 'medium' | 'large';\n\nexport interface Color {\n main: string;\n dark: string;\n light: string;\n opacity: string;\n contrast: string;\n}\n\nexport interface Palette {\n info: string;\n error: string;\n warning: string;\n success: string;\n primary: string;\n secondary: string;\n grey: string;\n text: {\n primary: string;\n secondary: string;\n disabled: string;\n };\n background: {\n paper: string;\n default: string;\n };\n divider: string;\n}\n\nexport type Spacing = number;\nexport type Shape = { radius: number; }\nexport type Typography = { family: string; url?: string; }\n\nexport interface PaletteBuilded extends Pick<Palette, 'text' | 'background' | 'divider'> {\n grey: Color;\n info: Color;\n error: Color;\n warning: Color;\n success: Color;\n primary: Color;\n secondary: Color;\n}\n\nexport interface Theme {\n mode: Mode;\n shape: Shape;\n palette: Palette;\n spacing: Spacing;\n typography: Typography;\n}\n\nexport interface ThemeOptions extends Omit<Partial<Theme>, 'palette'> {\n palette?: Partial<Palette>;\n}\nexport interface ThemeBuilded extends Omit<Theme, 'palette'> {\n palette: PaletteBuilded;\n}\n","import type { ThemeBuilded, Color } from '../Theme';\n\nfunction setColor(name: string, color: Color) {\n document.documentElement.style.setProperty(`--${name}`, color.main);\n document.documentElement.style.setProperty(`--${name}-light`, color.light);\n document.documentElement.style.setProperty(`--${name}-dark`, color.dark);\n document.documentElement.style.setProperty(`--${name}-contrast`, color.contrast);\n document.documentElement.style.setProperty(`--${name}-opacity`, color.opacity);\n}\n\nfunction ensureStylesheet(href: string) {\n if (document.querySelector(`link[href=\"${href}\"]`)) return;\n const link = document.createElement('link');\n link.rel = 'stylesheet';\n link.href = href;\n document.head.appendChild(link);\n}\n\nexport function applyTheme(theme: ThemeBuilded) {\n if (typeof window === 'undefined') { return; }\n\n const { palette, shape, spacing, typography } = theme;\n\n if (typography.url) { ensureStylesheet(typography.url); }\n\n // COLORS\n setColor('info', palette.info);\n setColor('error', palette.error);\n setColor('warning', palette.warning);\n setColor('success', palette.success);\n setColor('primary', palette.primary);\n setColor('secondary', palette.secondary);\n\n // GREY\n setColor('grey', palette.grey);\n\n // TYPOGRAPHY\n document.documentElement.style.setProperty('--typography', typography.family);\n\n // TEXT\n document.documentElement.style.setProperty('--text-primary', palette.text?.primary);\n document.documentElement.style.setProperty('--text-secondary', palette.text?.secondary);\n document.documentElement.style.setProperty('--text-disabled', palette.text?.disabled);\n\n // BACKGROUND\n document.documentElement.style.setProperty('--background-paper', palette.background?.paper);\n document.documentElement.style.setProperty('--background-default', palette.background?.default);\n\n // DIVIDER\n document.documentElement.style.setProperty('--divider', palette.divider);\n\n // SHAPE\n document.documentElement.style.setProperty('--radius', `${shape.radius}px`);\n\n // SPACING\n document.documentElement.style.setProperty('--spacing', `${spacing}px`);\n}","import type { Theme } from './Theme';\n\nexport const defaultSpacing: Theme['spacing'] = 8;\nexport const defaultShape: Theme['shape'] = { radius: 8 };\n\nexport const themeDefaultLight: Theme = {\n mode: 'light',\n palette: {\n info: '#72E4FC',\n error: '#FF5377',\n warning: '#FF9457',\n success: '#36E79B',\n primary: '#6C37F4',\n secondary: '#FB7185', //C026D3 // F97316 // FB7185 // F59E0B\n grey: '#F4F4F4',\n text: {\n primary: 'rgb(31, 41, 55)',\n secondary: 'rgb(75, 85, 99)',\n disabled: 'rgb(172, 172, 172)'\n },\n background: {\n paper: '#F9F8F9',\n default: '#FFF',\n },\n divider: 'rgba(0, 0, 0, 0.12)'\n },\n spacing: defaultSpacing,\n shape: defaultShape,\n typography: {\n family: 'Poppins',\n // eslint-disable-next-line\n url: 'https://fonts.googleapis.com/css2?family=Poppins:ital,wght@0,400;0,500;0,600;0,700;1,400;1,500;1,600;1,700&display=swap'\n }\n};\n\nexport const themeDefaultDark: Theme = {\n mode: 'dark',\n palette: {\n info: '#72E4FC',\n error: '#FF5377',\n warning: '#FF9457',\n success: '#36E79B',\n primary: '#6C37F4',\n secondary: '#EBFF5E',\n grey: '#2A2A2A',\n text: {\n primary: 'rgba(255, 255, 255, 0.87)',\n secondary: 'rgba(255, 255, 255, 0.6)',\n disabled: 'rgba(255, 255, 255, 0.38)'\n },\n background: {\n paper: '#0D0225',\n default: '#30294E',\n },\n divider: 'rgba(255, 255, 255, 0.12)'\n },\n spacing: defaultSpacing,\n shape: defaultShape,\n typography: {\n family: 'Poppins',\n // eslint-disable-next-line\n url: 'https://fonts.googleapis.com/css2?family=Poppins:ital,wght@0,400;0,500;0,600;0,700;1,400;1,500;1,600;1,700&display=swap'\n }\n};","import { generateSupportColors } from '../../utils';\nimport type { ThemeBuilded, ThemeOptions } from '../Theme';\nimport { themeDefaultDark, themeDefaultLight } from '../defaultTheme';\n\nconst SUPPORT_KEYS = [\n 'primary',\n 'secondary',\n 'error',\n 'warning',\n 'success',\n 'info',\n 'grey',\n] as const;\n\ntype SupportKey = (typeof SUPPORT_KEYS)[number];\n\nexport function createTheme(theme?: ThemeOptions): ThemeBuilded {\n const mode = theme?.mode ?? 'light';\n const ref = mode === 'dark' ? themeDefaultDark : themeDefaultLight;\n\n const paletteFromUser = theme?.palette ?? {};\n const paletteFromRef = ref.palette;\n\n const supportColors = Object.fromEntries(\n SUPPORT_KEYS.map((key) => [\n key,\n generateSupportColors(paletteFromUser[key] ?? paletteFromRef[key]),\n ])\n ) as Record<SupportKey, ThemeBuilded['palette'][SupportKey]>;\n\n return {\n mode,\n palette: {\n text: paletteFromUser.text ?? paletteFromRef.text,\n background: paletteFromUser.background ?? paletteFromRef.background,\n divider: paletteFromUser.divider ?? paletteFromRef.divider,\n ...supportColors,\n },\n shape: theme?.shape ?? ref.shape,\n spacing: theme?.spacing ?? ref.spacing,\n typography: theme?.typography ?? ref.typography,\n };\n}","import { createContext, useEffect, useMemo, useState, type PropsWithChildren } from 'react';\n\nimport type { ThemeBuilded } from '@iziui/core/theme';\nimport { createTheme, applyTheme, themeDefaultLight } from '@iziui/core/theme';\n\nimport '@iziui/styles/base/_base.scss';\n\nexport interface ThemeContextConfig {\n theme: ThemeBuilded;\n updateTheme: (theme: ThemeBuilded) => void;\n}\n\nexport const ThemeContext = createContext<ThemeContextConfig>({\n theme: createTheme(themeDefaultLight),\n updateTheme: () => { },\n});\n\ntype ThemeProviderProps = PropsWithChildren<{ theme: ThemeBuilded; }>\nexport default function ThemeProvider({ theme, children }: ThemeProviderProps) {\n const [_theme, setTheme] = useState<ThemeBuilded>(theme);\n\n const context = useMemo<ThemeContextConfig>(() => ({\n theme: _theme,\n updateTheme: (newTheme: ThemeBuilded) => updateTheme(newTheme),\n }), [theme, _theme]);\n\n useEffect(() => { applyTheme(_theme); }, [_theme]);\n\n const updateTheme = (newTheme: ThemeBuilded) => { setTheme(newTheme); };\n\n return (\n <ThemeContext.Provider value={context}>\n {children}\n </ThemeContext.Provider>\n );\n}\n\n","import { useContext } from 'react';\n\nimport { ThemeContext } from './ThemeProvider';\n\nexport default function useTheme() {\n return useContext(ThemeContext);\n}"],"names":["hslToHex","h","s","l","c","x","m","r","g","b","newR","newG","newB","adjustLightness","amount","hexToHsl","hex","max","min","d","getOpacityColor","hexColor","opacity","alphaHex","getContrastColor","generateSupportColors","hsl","contrastColor","lighterColor","darkerColor","opacityColor","generateMappedColor","color","createMappedColors","_colors","acc","mapped","colors","setColor","name","ensureStylesheet","href","link","applyTheme","theme","palette","shape","spacing","typography","defaultSpacing","defaultShape","themeDefaultLight","themeDefaultDark","SUPPORT_KEYS","createTheme","mode","ref","paletteFromUser","paletteFromRef","supportColors","key","ThemeContext","createContext","ThemeProvider","children","_theme","setTheme","useState","context","useMemo","newTheme","updateTheme","useEffect","useTheme","useContext"],"mappings":"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"}
|