@banzamel/mineralui 0.9.0 → 0.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +152 -151
- package/dist/AmericanExpressIcon-Bpk-Yz4y.js +1794 -0
- package/dist/AmericanExpressIcon-Bpk-Yz4y.js.map +1 -0
- package/dist/AmericanExpressIcon-Duhw7WXn.cjs +2 -0
- package/dist/AmericanExpressIcon-Duhw7WXn.cjs.map +1 -0
- package/dist/AppShell-BGFVRml6.js +659 -0
- package/dist/AppShell-BGFVRml6.js.map +1 -0
- package/dist/AppShell-ButYSI7U.cjs +2 -0
- package/dist/AppShell-ButYSI7U.cjs.map +1 -0
- package/dist/ArrowDownIcon-DzDirevG.js +21 -0
- package/dist/ArrowDownIcon-DzDirevG.js.map +1 -0
- package/dist/ArrowDownIcon-EfyFLBHR.cjs +2 -0
- package/dist/ArrowDownIcon-EfyFLBHR.cjs.map +1 -0
- package/dist/Avatar-Ba4TdSXp.cjs +2 -0
- package/dist/Avatar-Ba4TdSXp.cjs.map +1 -0
- package/dist/Avatar-BzokUdR4.js +50 -0
- package/dist/Avatar-BzokUdR4.js.map +1 -0
- package/dist/Badge-BF8-zXDl.js +15 -0
- package/dist/Badge-BF8-zXDl.js.map +1 -0
- package/dist/Badge-CivRCrzY.cjs +2 -0
- package/dist/Badge-CivRCrzY.cjs.map +1 -0
- package/dist/BrandMoreIcons-Cb4cXa_M.cjs +2 -0
- package/dist/BrandMoreIcons-Cb4cXa_M.cjs.map +1 -0
- package/dist/BrandMoreIcons-DnusZA-G.js +825 -0
- package/dist/BrandMoreIcons-DnusZA-G.js.map +1 -0
- package/dist/Button-BUd8Dkdx.cjs +2 -0
- package/dist/Button-BUd8Dkdx.cjs.map +1 -0
- package/dist/Button-BnxXh7zp.js +52 -0
- package/dist/Button-BnxXh7zp.js.map +1 -0
- package/dist/CalendarBoard-DidNBym4.js +998 -0
- package/dist/CalendarBoard-DidNBym4.js.map +1 -0
- package/dist/CalendarBoard-DvGimf8K.cjs +2 -0
- package/dist/CalendarBoard-DvGimf8K.cjs.map +1 -0
- package/dist/CalendarIcon-D74I9hJl.cjs +2 -0
- package/dist/CalendarIcon-D74I9hJl.cjs.map +1 -0
- package/dist/CalendarIcon-gvWV3ioD.js +29 -0
- package/dist/CalendarIcon-gvWV3ioD.js.map +1 -0
- package/dist/Card-AbIdSFmm.cjs +2 -0
- package/dist/Card-AbIdSFmm.cjs.map +1 -0
- package/dist/Card-B_4TR7gc.js +55 -0
- package/dist/Card-B_4TR7gc.js.map +1 -0
- package/dist/CardGrid-Cm0qx9ue.cjs +2 -0
- package/dist/CardGrid-Cm0qx9ue.cjs.map +1 -0
- package/dist/CardGrid-nqnCwmTD.js +581 -0
- package/dist/CardGrid-nqnCwmTD.js.map +1 -0
- package/dist/Checkbox-B4t7uzS2.js +60 -0
- package/dist/Checkbox-B4t7uzS2.js.map +1 -0
- package/dist/Checkbox-BXetIDRT.cjs +2 -0
- package/dist/Checkbox-BXetIDRT.cjs.map +1 -0
- package/dist/ChevronDownIcon-BDiyHPT4.js +15 -0
- package/dist/ChevronDownIcon-BDiyHPT4.js.map +1 -0
- package/dist/ChevronDownIcon-CkT_O5e5.cjs +2 -0
- package/dist/ChevronDownIcon-CkT_O5e5.cjs.map +1 -0
- package/dist/ChevronLeftIcon-DVwatRi0.cjs +2 -0
- package/dist/ChevronLeftIcon-DVwatRi0.cjs.map +1 -0
- package/dist/ChevronLeftIcon-lTktpFVi.js +15 -0
- package/dist/ChevronLeftIcon-lTktpFVi.js.map +1 -0
- package/dist/ChevronRightIcon-1oaUsxM2.js +15 -0
- package/dist/ChevronRightIcon-1oaUsxM2.js.map +1 -0
- package/dist/ChevronRightIcon-Bxqjb5s0.cjs +2 -0
- package/dist/ChevronRightIcon-Bxqjb5s0.cjs.map +1 -0
- package/dist/ClockIcon-CTHDAJUU.js +19 -0
- package/dist/ClockIcon-CTHDAJUU.js.map +1 -0
- package/dist/ClockIcon-DeDZlnTQ.cjs +2 -0
- package/dist/ClockIcon-DeDZlnTQ.cjs.map +1 -0
- package/dist/CloseIcon-5btDsUxB.cjs +2 -0
- package/dist/CloseIcon-5btDsUxB.cjs.map +1 -0
- package/dist/CloseIcon-DGl8CDLK.js +15 -0
- package/dist/CloseIcon-DGl8CDLK.js.map +1 -0
- package/dist/ColorPicker-BqE5PvW5.js +457 -0
- package/dist/ColorPicker-BqE5PvW5.js.map +1 -0
- package/dist/ColorPicker-DlrPaM8W.cjs +2 -0
- package/dist/ColorPicker-DlrPaM8W.cjs.map +1 -0
- package/dist/DropdownMenu-Bf1l4spO.js +139 -0
- package/dist/DropdownMenu-Bf1l4spO.js.map +1 -0
- package/dist/DropdownMenu-CvUG4QEC.cjs +2 -0
- package/dist/DropdownMenu-CvUG4QEC.cjs.map +1 -0
- package/dist/FileExtIcons-BecWBncW.js +145 -0
- package/dist/FileExtIcons-BecWBncW.js.map +1 -0
- package/dist/FileExtIcons-FTFddWmg.cjs +2 -0
- package/dist/FileExtIcons-FTFddWmg.cjs.map +1 -0
- package/dist/FolderOpenIcon-BAxBjkbK.js +31 -0
- package/dist/FolderOpenIcon-BAxBjkbK.js.map +1 -0
- package/dist/FolderOpenIcon-D2fsAXLM.cjs +2 -0
- package/dist/FolderOpenIcon-D2fsAXLM.cjs.map +1 -0
- package/dist/Heading-CALsycVL.cjs +2 -0
- package/dist/Heading-CALsycVL.cjs.map +1 -0
- package/dist/Heading-DtcgehrI.js +17 -0
- package/dist/Heading-DtcgehrI.js.map +1 -0
- package/dist/I18nProvider-CAnFu85r.js +69 -0
- package/dist/I18nProvider-CAnFu85r.js.map +1 -0
- package/dist/I18nProvider-CiYjTmgv.cjs +2 -0
- package/dist/I18nProvider-CiYjTmgv.cjs.map +1 -0
- package/dist/Icon-B-s6VJr5.cjs +2 -0
- package/dist/Icon-B-s6VJr5.cjs.map +1 -0
- package/dist/Icon-B848Vysm.js +45 -0
- package/dist/Icon-B848Vysm.js.map +1 -0
- package/dist/InputFile-C6Y-y8CQ.cjs +2 -0
- package/dist/InputFile-C6Y-y8CQ.cjs.map +1 -0
- package/dist/InputFile-DicC8Tbv.js +1356 -0
- package/dist/InputFile-DicC8Tbv.js.map +1 -0
- package/dist/InputSearch-BO_j0nAW.js +218 -0
- package/dist/InputSearch-BO_j0nAW.js.map +1 -0
- package/dist/InputSearch-Bk5YFz09.cjs +2 -0
- package/dist/InputSearch-Bk5YFz09.cjs.map +1 -0
- package/dist/Kbd-qcCkiDkW.js +55 -0
- package/dist/Kbd-qcCkiDkW.js.map +1 -0
- package/dist/Kbd-wmU-rhWO.cjs +2 -0
- package/dist/Kbd-wmU-rhWO.cjs.map +1 -0
- package/dist/Link-D3lmTu3R.js +30 -0
- package/dist/Link-D3lmTu3R.js.map +1 -0
- package/dist/Link-DSIStgFG.cjs +2 -0
- package/dist/Link-DSIStgFG.cjs.map +1 -0
- package/dist/MPagination-C-Ff4orL.js +103 -0
- package/dist/MPagination-C-Ff4orL.js.map +1 -0
- package/dist/MPagination-CVy14D9v.cjs +2 -0
- package/dist/MPagination-CVy14D9v.cjs.map +1 -0
- package/dist/MasonryItem-BsD5OuYt.js +368 -0
- package/dist/MasonryItem-BsD5OuYt.js.map +1 -0
- package/dist/MasonryItem-CBxzCuRr.cjs +2 -0
- package/dist/MasonryItem-CBxzCuRr.cjs.map +1 -0
- package/dist/MenuIcon-mX5bSTAp.js +20 -0
- package/dist/MenuIcon-mX5bSTAp.js.map +1 -0
- package/dist/MenuIcon-x1LjLPWp.cjs +2 -0
- package/dist/MenuIcon-x1LjLPWp.cjs.map +1 -0
- package/dist/Modal-BDDrW5HI.js +56 -0
- package/dist/Modal-BDDrW5HI.js.map +1 -0
- package/dist/Modal-DrtVZtb1.cjs +2 -0
- package/dist/Modal-DrtVZtb1.cjs.map +1 -0
- package/dist/NeutralIcon-BPZ3coWv.js +67 -0
- package/dist/NeutralIcon-BPZ3coWv.js.map +1 -0
- package/dist/NeutralIcon-CScIXs8_.cjs +2 -0
- package/dist/NeutralIcon-CScIXs8_.cjs.map +1 -0
- package/dist/PhoneIcon-CPGZ1D2-.cjs +2 -0
- package/dist/PhoneIcon-CPGZ1D2-.cjs.map +1 -0
- package/dist/PhoneIcon-DXlB7Uz0.js +38 -0
- package/dist/PhoneIcon-DXlB7Uz0.js.map +1 -0
- package/dist/Popconfirm-BJtyFjdY.js +200 -0
- package/dist/Popconfirm-BJtyFjdY.js.map +1 -0
- package/dist/Popconfirm-DQqBq_OP.cjs +2 -0
- package/dist/Popconfirm-DQqBq_OP.cjs.map +1 -0
- package/dist/Popover-BLYlu0jf.js +95 -0
- package/dist/Popover-BLYlu0jf.js.map +1 -0
- package/dist/Popover-BfCYHGUU.cjs +2 -0
- package/dist/Popover-BfCYHGUU.cjs.map +1 -0
- package/dist/Portal-CeUZ2xET.cjs +2 -0
- package/dist/Portal-CeUZ2xET.cjs.map +1 -0
- package/dist/Portal-s54PuE_l.js +10 -0
- package/dist/Portal-s54PuE_l.js.map +1 -0
- package/dist/QrCode-CP1sYiXF.js +371 -0
- package/dist/QrCode-CP1sYiXF.js.map +1 -0
- package/dist/QrCode-scUXUrNj.cjs +2 -0
- package/dist/QrCode-scUXUrNj.cjs.map +1 -0
- package/dist/SearchIcon-DDahNpBX.js +24 -0
- package/dist/SearchIcon-DDahNpBX.js.map +1 -0
- package/dist/SearchIcon-DeKs76RI.cjs +2 -0
- package/dist/SearchIcon-DeKs76RI.cjs.map +1 -0
- package/dist/Slider-BgHTWUXS.cjs +2 -0
- package/dist/Slider-BgHTWUXS.cjs.map +1 -0
- package/dist/Slider-BvnJPPAf.js +75 -0
- package/dist/Slider-BvnJPPAf.js.map +1 -0
- package/dist/Stack-DzFHpLMS.cjs +2 -0
- package/dist/Stack-DzFHpLMS.cjs.map +1 -0
- package/dist/Stack-xUXSOKqN.js +40 -0
- package/dist/Stack-xUXSOKqN.js.map +1 -0
- package/dist/StarFillIcon-D4HEOD6y.cjs +2 -0
- package/dist/StarFillIcon-D4HEOD6y.cjs.map +1 -0
- package/dist/StarFillIcon-tMWVk8tT.js +25 -0
- package/dist/StarFillIcon-tMWVk8tT.js.map +1 -0
- package/dist/Surface-BVk3r7ws.cjs +2 -0
- package/dist/Surface-BVk3r7ws.cjs.map +1 -0
- package/dist/Surface-E8hELelv.js +40 -0
- package/dist/Surface-E8hELelv.js.map +1 -0
- package/dist/Text-DOVuH0uw.js +39 -0
- package/dist/Text-DOVuH0uw.js.map +1 -0
- package/dist/Text-DUuY1RDL.cjs +2 -0
- package/dist/Text-DUuY1RDL.cjs.map +1 -0
- package/dist/ThemeProvider-CCWDIXiA.cjs +2 -0
- package/dist/ThemeProvider-CCWDIXiA.cjs.map +1 -0
- package/dist/ThemeProvider-COEImCNH.js +132 -0
- package/dist/ThemeProvider-COEImCNH.js.map +1 -0
- package/dist/TimePicker-BXbuLCDX.js +1204 -0
- package/dist/TimePicker-BXbuLCDX.js.map +1 -0
- package/dist/TimePicker-DDhkqier.cjs +2 -0
- package/dist/TimePicker-DDhkqier.cjs.map +1 -0
- package/dist/ToastProvider-DRz62qKU.cjs +2 -0
- package/dist/ToastProvider-DRz62qKU.cjs.map +1 -0
- package/dist/ToastProvider-Dlgk48v1.js +234 -0
- package/dist/ToastProvider-Dlgk48v1.js.map +1 -0
- package/dist/Toggle-BACN6Wrk.cjs +2 -0
- package/dist/Toggle-BACN6Wrk.cjs.map +1 -0
- package/dist/Toggle-D9M7aDWh.js +140 -0
- package/dist/Toggle-D9M7aDWh.js.map +1 -0
- package/dist/ZoomInIcon-CtoKX0Ri.cjs +2 -0
- package/dist/ZoomInIcon-CtoKX0Ri.cjs.map +1 -0
- package/dist/ZoomInIcon-UNvzc9zU.js +113 -0
- package/dist/ZoomInIcon-UNvzc9zU.js.map +1 -0
- package/dist/appearanceProps-65LbXIeI.cjs +2 -0
- package/dist/appearanceProps-65LbXIeI.cjs.map +1 -0
- package/dist/appearanceProps-8tN47e1u.js +8 -0
- package/dist/appearanceProps-8tN47e1u.js.map +1 -0
- package/dist/cards.cjs +2 -0
- package/dist/cards.d.ts +3 -0
- package/dist/cards.js +8 -0
- package/dist/cn-BIeeqGZv.js +8 -0
- package/dist/cn-BIeeqGZv.js.map +1 -0
- package/dist/cn-BOmEz3Rt.cjs +2 -0
- package/dist/cn-BOmEz3Rt.cjs.map +1 -0
- package/dist/components/cards/Card/Card.d.ts +5 -0
- package/dist/components/cards/Card/Card.types.d.ts +16 -0
- package/dist/components/cards/Card/index.d.ts +2 -0
- package/dist/components/cards/CardBusiness/CardBusiness.d.ts +2 -0
- package/dist/components/cards/CardBusiness/CardBusiness.types.d.ts +33 -0
- package/dist/components/cards/CardBusiness/index.d.ts +2 -0
- package/dist/components/cards/CardGrid/CardGrid.d.ts +2 -0
- package/dist/components/cards/CardGrid/CardGrid.types.d.ts +27 -0
- package/dist/components/cards/CardGrid/index.d.ts +2 -0
- package/dist/components/cards/CardPayment/CardPayment.d.ts +2 -0
- package/dist/components/cards/CardPayment/CardPayment.types.d.ts +13 -0
- package/dist/components/cards/CardPayment/index.d.ts +2 -0
- package/dist/components/cards/CardService/CardService.d.ts +2 -0
- package/dist/components/cards/CardService/CardService.types.d.ts +37 -0
- package/dist/components/cards/CardService/index.d.ts +2 -0
- package/dist/components/cards/index.d.ts +10 -0
- package/dist/components/controls/Button/Button.d.ts +2 -0
- package/dist/components/controls/Button/Button.types.d.ts +22 -0
- package/dist/components/controls/Button/index.d.ts +2 -0
- package/dist/components/controls/Checkbox/Checkbox.d.ts +3 -0
- package/dist/components/controls/Checkbox/Checkbox.types.d.ts +24 -0
- package/dist/components/controls/Checkbox/index.d.ts +2 -0
- package/dist/components/controls/Radio/Radio.d.ts +3 -0
- package/dist/components/controls/Radio/Radio.types.d.ts +47 -0
- package/dist/components/controls/Radio/RadioContext.d.ts +3 -0
- package/dist/components/controls/Radio/RadioGroup.d.ts +2 -0
- package/dist/components/controls/Radio/index.d.ts +3 -0
- package/dist/components/controls/Slider/Slider.d.ts +2 -0
- package/dist/components/controls/Slider/Slider.types.d.ts +17 -0
- package/dist/components/controls/Slider/index.d.ts +2 -0
- package/dist/components/controls/Toggle/Toggle.d.ts +2 -0
- package/dist/components/controls/Toggle/Toggle.types.d.ts +20 -0
- package/dist/components/controls/Toggle/index.d.ts +2 -0
- package/dist/components/controls/index.d.ts +10 -0
- package/dist/components/data/CalendarBoard/CalendarBoard.d.ts +7 -0
- package/dist/components/data/CalendarBoard/CalendarBoard.types.d.ts +117 -0
- package/dist/components/data/CalendarBoard/index.d.ts +2 -0
- package/dist/components/data/DataTable/DataTable.d.ts +2 -0
- package/dist/components/data/DataTable/DataTable.types.d.ts +34 -0
- package/dist/components/data/DataTable/index.d.ts +2 -0
- package/dist/components/data/TaskList/TaskList.d.ts +2 -0
- package/dist/components/data/TaskList/TaskList.types.d.ts +14 -0
- package/dist/components/data/TaskList/index.d.ts +2 -0
- package/dist/components/data/TreeView/TreeView.d.ts +2 -0
- package/dist/components/data/TreeView/TreeView.types.d.ts +63 -0
- package/dist/components/data/TreeView/index.d.ts +2 -0
- package/dist/components/data/index.d.ts +8 -0
- package/dist/components/display/Accordion/Accordion.d.ts +3 -0
- package/dist/components/display/Accordion/Accordion.types.d.ts +16 -0
- package/dist/components/display/Accordion/index.d.ts +2 -0
- package/dist/components/display/Collapsible/Collapsible.d.ts +2 -0
- package/dist/components/display/Collapsible/Collapsible.types.d.ts +10 -0
- package/dist/components/display/Collapsible/index.d.ts +2 -0
- package/dist/components/display/ColorPicker/ColorPicker.d.ts +2 -0
- package/dist/components/display/ColorPicker/ColorPicker.types.d.ts +11 -0
- package/dist/components/display/ColorPicker/index.d.ts +2 -0
- package/dist/components/display/CountUp/CountUp.d.ts +2 -0
- package/dist/components/display/CountUp/CountUp.types.d.ts +10 -0
- package/dist/components/display/CountUp/index.d.ts +2 -0
- package/dist/components/display/ProgressBar/ProgressBar.d.ts +2 -0
- package/dist/components/display/ProgressBar/ProgressBar.types.d.ts +12 -0
- package/dist/components/display/ProgressBar/index.d.ts +2 -0
- package/dist/components/display/QrCode/QrCode.d.ts +2 -0
- package/dist/components/display/QrCode/QrCode.types.d.ts +8 -0
- package/dist/components/display/QrCode/index.d.ts +2 -0
- package/dist/components/display/Rating/Rating.d.ts +2 -0
- package/dist/components/display/Rating/Rating.types.d.ts +10 -0
- package/dist/components/display/Rating/index.d.ts +2 -0
- package/dist/components/display/TimeAgo/TimeAgo.d.ts +2 -0
- package/dist/components/display/TimeAgo/TimeAgo.types.d.ts +11 -0
- package/dist/components/display/TimeAgo/index.d.ts +2 -0
- package/dist/components/display/index.d.ts +16 -0
- package/dist/components/dropdowns/Autocomplete/Autocomplete.d.ts +2 -0
- package/dist/components/dropdowns/Autocomplete/Autocomplete.types.d.ts +38 -0
- package/dist/components/dropdowns/Autocomplete/index.d.ts +2 -0
- package/dist/components/dropdowns/DatePicker/DatePicker.d.ts +2 -0
- package/dist/components/dropdowns/DatePicker/DatePicker.types.d.ts +33 -0
- package/dist/components/dropdowns/DatePicker/index.d.ts +2 -0
- package/dist/components/dropdowns/DateRangePicker/DateRangePicker.d.ts +2 -0
- package/dist/components/dropdowns/DateRangePicker/DateRangePicker.types.d.ts +50 -0
- package/dist/components/dropdowns/DateRangePicker/index.d.ts +2 -0
- package/dist/components/dropdowns/Select/Select.d.ts +2 -0
- package/dist/components/dropdowns/Select/Select.types.d.ts +39 -0
- package/dist/components/dropdowns/Select/index.d.ts +2 -0
- package/dist/components/dropdowns/TimePicker/TimePicker.d.ts +2 -0
- package/dist/components/dropdowns/TimePicker/TimePicker.types.d.ts +30 -0
- package/dist/components/dropdowns/TimePicker/index.d.ts +2 -0
- package/dist/components/dropdowns/index.d.ts +10 -0
- package/dist/components/feedback/Alert/Alert.d.ts +2 -0
- package/dist/components/feedback/Alert/Alert.types.d.ts +9 -0
- package/dist/components/feedback/Alert/index.d.ts +2 -0
- package/dist/components/feedback/Badge/Badge.d.ts +2 -0
- package/dist/components/feedback/Badge/Badge.types.d.ts +9 -0
- package/dist/components/feedback/Badge/index.d.ts +2 -0
- package/dist/components/feedback/Banner/Banner.d.ts +2 -0
- package/dist/components/feedback/Banner/Banner.types.d.ts +12 -0
- package/dist/components/feedback/Banner/index.d.ts +2 -0
- package/dist/components/feedback/Loader/Loader.d.ts +2 -0
- package/dist/components/feedback/Loader/Loader.types.d.ts +9 -0
- package/dist/components/feedback/Loader/index.d.ts +2 -0
- package/dist/components/feedback/Spinner/Spinner.d.ts +2 -0
- package/dist/components/feedback/Spinner/Spinner.types.d.ts +7 -0
- package/dist/components/feedback/Spinner/index.d.ts +2 -0
- package/dist/components/feedback/Tag/Tag.d.ts +2 -0
- package/dist/components/feedback/Tag/Tag.types.d.ts +12 -0
- package/dist/components/feedback/Tag/index.d.ts +2 -0
- package/dist/components/feedback/Toast/Toast.types.d.ts +27 -0
- package/dist/components/feedback/Toast/ToastContext.d.ts +3 -0
- package/dist/components/feedback/Toast/ToastItem.d.ts +5 -0
- package/dist/components/feedback/Toast/ToastProvider.d.ts +4 -0
- package/dist/components/feedback/Toast/index.d.ts +3 -0
- package/dist/components/feedback/index.d.ts +14 -0
- package/dist/components/form/Form/Form.d.ts +2 -0
- package/dist/components/form/Form/Form.types.d.ts +42 -0
- package/dist/components/form/Form/FormContext.d.ts +3 -0
- package/dist/components/form/Form/index.d.ts +5 -0
- package/dist/components/form/Form/useFormField.d.ts +13 -0
- package/dist/components/form/index.d.ts +2 -0
- package/dist/components/inputs/Input/Input.d.ts +3 -0
- package/dist/components/inputs/Input/Input.types.d.ts +49 -0
- package/dist/components/inputs/Input/index.d.ts +2 -0
- package/dist/components/inputs/InputCreditCard/InputCreditCard.d.ts +3 -0
- package/dist/components/inputs/InputCreditCard/InputCreditCard.types.d.ts +12 -0
- package/dist/components/inputs/InputCreditCard/index.d.ts +2 -0
- package/dist/components/inputs/InputCurrency/InputCurrency.d.ts +3 -0
- package/dist/components/inputs/InputCurrency/InputCurrency.types.d.ts +13 -0
- package/dist/components/inputs/InputCurrency/index.d.ts +2 -0
- package/dist/components/inputs/InputEmail/InputEmail.d.ts +3 -0
- package/dist/components/inputs/InputEmail/InputEmail.types.d.ts +8 -0
- package/dist/components/inputs/InputEmail/index.d.ts +2 -0
- package/dist/components/inputs/InputFile/CropEditor.d.ts +11 -0
- package/dist/components/inputs/InputFile/InputFile.d.ts +3 -0
- package/dist/components/inputs/InputFile/InputFile.types.d.ts +29 -0
- package/dist/components/inputs/InputFile/index.d.ts +2 -0
- package/dist/components/inputs/InputGroup/InputGroup.d.ts +3 -0
- package/dist/components/inputs/InputGroup/InputGroup.types.d.ts +14 -0
- package/dist/components/inputs/InputGroup/index.d.ts +2 -0
- package/dist/components/inputs/InputIBAN/InputIBAN.d.ts +3 -0
- package/dist/components/inputs/InputIBAN/InputIBAN.types.d.ts +10 -0
- package/dist/components/inputs/InputIBAN/index.d.ts +2 -0
- package/dist/components/inputs/InputName/InputName.d.ts +3 -0
- package/dist/components/inputs/InputName/InputName.types.d.ts +10 -0
- package/dist/components/inputs/InputName/index.d.ts +2 -0
- package/dist/components/inputs/InputNumber/InputNumber.d.ts +3 -0
- package/dist/components/inputs/InputNumber/InputNumber.types.d.ts +10 -0
- package/dist/components/inputs/InputNumber/index.d.ts +2 -0
- package/dist/components/inputs/InputOTP/InputOTP.d.ts +3 -0
- package/dist/components/inputs/InputOTP/InputOTP.types.d.ts +15 -0
- package/dist/components/inputs/InputOTP/index.d.ts +2 -0
- package/dist/components/inputs/InputPassword/InputPassword.d.ts +3 -0
- package/dist/components/inputs/InputPassword/InputPassword.types.d.ts +7 -0
- package/dist/components/inputs/InputPassword/index.d.ts +2 -0
- package/dist/components/inputs/InputPhone/InputPhone.d.ts +3 -0
- package/dist/components/inputs/InputPhone/InputPhone.types.d.ts +10 -0
- package/dist/components/inputs/InputPhone/index.d.ts +2 -0
- package/dist/components/inputs/InputPostCode/InputPostCode.d.ts +3 -0
- package/dist/components/inputs/InputPostCode/InputPostCode.types.d.ts +12 -0
- package/dist/components/inputs/InputPostCode/index.d.ts +2 -0
- package/dist/components/inputs/InputSearch/InputSearch.d.ts +3 -0
- package/dist/components/inputs/InputSearch/InputSearch.types.d.ts +5 -0
- package/dist/components/inputs/InputSearch/index.d.ts +2 -0
- package/dist/components/inputs/InputSlider/InputSlider.d.ts +3 -0
- package/dist/components/inputs/InputSlider/InputSlider.types.d.ts +12 -0
- package/dist/components/inputs/InputSlider/index.d.ts +2 -0
- package/dist/components/inputs/InputTaxId/InputTaxId.d.ts +3 -0
- package/dist/components/inputs/InputTaxId/InputTaxId.types.d.ts +11 -0
- package/dist/components/inputs/InputTaxId/index.d.ts +2 -0
- package/dist/components/inputs/Textarea/Textarea.d.ts +3 -0
- package/dist/components/inputs/Textarea/Textarea.types.d.ts +41 -0
- package/dist/components/inputs/Textarea/index.d.ts +2 -0
- package/dist/components/inputs/index.d.ts +34 -0
- package/dist/components/layout/AppShell/AppShell.d.ts +4 -0
- package/dist/components/layout/AppShell/AppShell.types.d.ts +7 -0
- package/dist/components/layout/AppShell/index.d.ts +2 -0
- package/dist/components/layout/Container/Container.d.ts +2 -0
- package/dist/components/layout/Container/Container.types.d.ts +10 -0
- package/dist/components/layout/Container/index.d.ts +2 -0
- package/dist/components/layout/Divider/Divider.d.ts +2 -0
- package/dist/components/layout/Divider/Divider.types.d.ts +9 -0
- package/dist/components/layout/Divider/index.d.ts +2 -0
- package/dist/components/layout/Grid/Grid.d.ts +2 -0
- package/dist/components/layout/Grid/Grid.types.d.ts +10 -0
- package/dist/components/layout/Grid/index.d.ts +2 -0
- package/dist/components/layout/Inline/Inline.d.ts +2 -0
- package/dist/components/layout/Inline/Inline.types.d.ts +15 -0
- package/dist/components/layout/Inline/index.d.ts +2 -0
- package/dist/components/layout/MBreadcrumb/MBreadcrumb.d.ts +2 -0
- package/dist/components/layout/MBreadcrumb/MBreadcrumb.types.d.ts +11 -0
- package/dist/components/layout/MBreadcrumb/index.d.ts +2 -0
- package/dist/components/layout/MFooter/MFooter.d.ts +2 -0
- package/dist/components/layout/MFooter/MFooter.types.d.ts +11 -0
- package/dist/components/layout/MFooter/index.d.ts +2 -0
- package/dist/components/layout/MGrid/MGrid.d.ts +3 -0
- package/dist/components/layout/MGrid/MGrid.types.d.ts +21 -0
- package/dist/components/layout/MGrid/index.d.ts +2 -0
- package/dist/components/layout/MHeader/MHeader.d.ts +2 -0
- package/dist/components/layout/MHeader/MHeader.types.d.ts +13 -0
- package/dist/components/layout/MHeader/index.d.ts +2 -0
- package/dist/components/layout/MNavbar/MNavbar.d.ts +2 -0
- package/dist/components/layout/MNavbar/MNavbar.types.d.ts +18 -0
- package/dist/components/layout/MNavbar/index.d.ts +2 -0
- package/dist/components/layout/MNavs/MNavs.d.ts +2 -0
- package/dist/components/layout/MNavs/MNavs.types.d.ts +19 -0
- package/dist/components/layout/MNavs/index.d.ts +2 -0
- package/dist/components/layout/MPagination/MPagination.d.ts +2 -0
- package/dist/components/layout/MPagination/MPagination.types.d.ts +10 -0
- package/dist/components/layout/MPagination/index.d.ts +2 -0
- package/dist/components/layout/MSidebar/MSidebar.d.ts +9 -0
- package/dist/components/layout/MSidebar/MSidebar.types.d.ts +60 -0
- package/dist/components/layout/MSidebar/index.d.ts +2 -0
- package/dist/components/layout/MSubNav/MSubNav.d.ts +2 -0
- package/dist/components/layout/MSubNav/MSubNav.types.d.ts +14 -0
- package/dist/components/layout/MSubNav/index.d.ts +2 -0
- package/dist/components/layout/MTabs/MTabs.d.ts +2 -0
- package/dist/components/layout/MTabs/MTabs.types.d.ts +28 -0
- package/dist/components/layout/MTabs/index.d.ts +2 -0
- package/dist/components/layout/Section/Section.d.ts +2 -0
- package/dist/components/layout/Section/Section.types.d.ts +13 -0
- package/dist/components/layout/Section/index.d.ts +2 -0
- package/dist/components/layout/Stack/Stack.d.ts +2 -0
- package/dist/components/layout/Stack/Stack.types.d.ts +11 -0
- package/dist/components/layout/Stack/index.d.ts +2 -0
- package/dist/components/layout/Surface/Surface.d.ts +2 -0
- package/dist/components/layout/Surface/Surface.types.d.ts +13 -0
- package/dist/components/layout/Surface/index.d.ts +2 -0
- package/dist/components/layout/index.d.ts +36 -0
- package/dist/components/media/Avatar/Avatar.d.ts +2 -0
- package/dist/components/media/Avatar/Avatar.types.d.ts +19 -0
- package/dist/components/media/Avatar/index.d.ts +2 -0
- package/dist/components/media/Carousel/Carousel.d.ts +2 -0
- package/dist/components/media/Carousel/Carousel.types.d.ts +12 -0
- package/dist/components/media/Carousel/index.d.ts +2 -0
- package/dist/components/media/Gallery/Gallery.d.ts +2 -0
- package/dist/components/media/Gallery/Gallery.types.d.ts +14 -0
- package/dist/components/media/Gallery/index.d.ts +2 -0
- package/dist/components/media/Image/Image.d.ts +2 -0
- package/dist/components/media/Image/Image.types.d.ts +13 -0
- package/dist/components/media/Image/index.d.ts +2 -0
- package/dist/components/media/Masonry/Masonry.d.ts +2 -0
- package/dist/components/media/Masonry/Masonry.types.d.ts +7 -0
- package/dist/components/media/Masonry/index.d.ts +2 -0
- package/dist/components/media/MasonryItem/MasonryItem.d.ts +3 -0
- package/dist/components/media/MasonryItem/MasonryItem.types.d.ts +14 -0
- package/dist/components/media/MasonryItem/index.d.ts +2 -0
- package/dist/components/media/ShowcaseCarousel/ShowcaseCarousel.d.ts +2 -0
- package/dist/components/media/ShowcaseCarousel/ShowcaseCarousel.types.d.ts +19 -0
- package/dist/components/media/ShowcaseCarousel/index.d.ts +2 -0
- package/dist/components/media/ShowcaseCarouselItem/ShowcaseCarouselItem.d.ts +3 -0
- package/dist/components/media/ShowcaseCarouselItem/ShowcaseCarouselItem.types.d.ts +16 -0
- package/dist/components/media/ShowcaseCarouselItem/index.d.ts +2 -0
- package/dist/components/media/index.d.ts +16 -0
- package/dist/components/overlays/Drawer/Drawer.d.ts +5 -0
- package/dist/components/overlays/Drawer/Drawer.types.d.ts +17 -0
- package/dist/components/overlays/Drawer/index.d.ts +2 -0
- package/dist/components/overlays/DropdownMenu/DropdownMenu.d.ts +9 -0
- package/dist/components/overlays/DropdownMenu/DropdownMenu.types.d.ts +32 -0
- package/dist/components/overlays/DropdownMenu/index.d.ts +2 -0
- package/dist/components/overlays/Modal/Modal.d.ts +2 -0
- package/dist/components/overlays/Modal/Modal.types.d.ts +12 -0
- package/dist/components/overlays/Modal/index.d.ts +2 -0
- package/dist/components/overlays/Popconfirm/Popconfirm.d.ts +2 -0
- package/dist/components/overlays/Popconfirm/Popconfirm.types.d.ts +18 -0
- package/dist/components/overlays/Popconfirm/index.d.ts +2 -0
- package/dist/components/overlays/Tooltip/Tooltip.d.ts +2 -0
- package/dist/components/overlays/Tooltip/Tooltip.types.d.ts +9 -0
- package/dist/components/overlays/Tooltip/index.d.ts +2 -0
- package/dist/components/overlays/index.d.ts +10 -0
- package/dist/components/primitives/Popover/Popover.d.ts +2 -0
- package/dist/components/primitives/Popover/Popover.types.d.ts +14 -0
- package/dist/components/primitives/Popover/index.d.ts +2 -0
- package/dist/components/primitives/Portal/Portal.d.ts +2 -0
- package/dist/components/primitives/Portal/Portal.types.d.ts +5 -0
- package/dist/components/primitives/Portal/index.d.ts +2 -0
- package/dist/components/primitives/index.d.ts +4 -0
- package/dist/components/typography/Code/Code.d.ts +2 -0
- package/dist/components/typography/Code/Code.types.d.ts +7 -0
- package/dist/components/typography/Code/index.d.ts +2 -0
- package/dist/components/typography/Heading/Heading.d.ts +281 -0
- package/dist/components/typography/Heading/Heading.types.d.ts +9 -0
- package/dist/components/typography/Heading/index.d.ts +2 -0
- package/dist/components/typography/Kbd/Kbd.d.ts +2 -0
- package/dist/components/typography/Kbd/Kbd.types.d.ts +6 -0
- package/dist/components/typography/Kbd/index.d.ts +2 -0
- package/dist/components/typography/Link/Link.d.ts +2 -0
- package/dist/components/typography/Link/Link.types.d.ts +15 -0
- package/dist/components/typography/Link/index.d.ts +2 -0
- package/dist/components/typography/List/List.d.ts +4 -0
- package/dist/components/typography/List/List.types.d.ts +8 -0
- package/dist/components/typography/List/index.d.ts +2 -0
- package/dist/components/typography/SubText/SubText.d.ts +2 -0
- package/dist/components/typography/SubText/SubText.types.d.ts +9 -0
- package/dist/components/typography/SubText/index.d.ts +2 -0
- package/dist/components/typography/Text/Text.d.ts +2 -0
- package/dist/components/typography/Text/Text.types.d.ts +16 -0
- package/dist/components/typography/Text/index.d.ts +2 -0
- package/dist/components/typography/index.d.ts +14 -0
- package/dist/controls.cjs +2 -0
- package/dist/controls.d.ts +3 -0
- package/dist/controls.js +6 -0
- package/dist/creditCards-CUM63Oia.cjs +2 -0
- package/dist/creditCards-CUM63Oia.cjs.map +1 -0
- package/dist/creditCards-pLOxJ6gs.js +129 -0
- package/dist/creditCards-pLOxJ6gs.js.map +1 -0
- package/dist/data.cjs +2 -0
- package/dist/data.d.ts +3 -0
- package/dist/data.js +16 -0
- package/dist/dateUtils-D3rghkxq.js +67 -0
- package/dist/dateUtils-D3rghkxq.js.map +1 -0
- package/dist/dateUtils-a8oMntCI.cjs +2 -0
- package/dist/dateUtils-a8oMntCI.cjs.map +1 -0
- package/dist/display.cjs +2 -0
- package/dist/display.d.ts +3 -0
- package/dist/display.js +6 -0
- package/dist/dropdowns.cjs +2 -0
- package/dist/dropdowns.d.ts +3 -0
- package/dist/dropdowns.js +4 -0
- package/dist/feedback.cjs +2 -0
- package/dist/feedback.d.ts +3 -0
- package/dist/feedback.js +6 -0
- package/dist/form.cjs +2 -0
- package/dist/form.d.ts +3 -0
- package/dist/form.js +3 -0
- package/dist/formatters-C3tjM3rj.cjs +2 -0
- package/dist/formatters-C3tjM3rj.cjs.map +1 -0
- package/dist/formatters-CtZdwLSU.js +89 -0
- package/dist/formatters-CtZdwLSU.js.map +1 -0
- package/dist/i18n/I18nProvider.d.ts +18 -0
- package/dist/i18n/index.d.ts +2 -0
- package/dist/i18n.cjs +2 -0
- package/dist/i18n.d.ts +2 -0
- package/dist/i18n.entry.d.ts +1 -0
- package/dist/i18n.js +3 -0
- package/dist/icons/Icon.d.ts +2 -0
- package/dist/icons/Icon.types.d.ts +8 -0
- package/dist/icons/glyphs/AmericanExpressIcon.d.ts +3 -0
- package/dist/icons/glyphs/ArrowDownIcon.d.ts +2 -0
- package/dist/icons/glyphs/ArrowLeftIcon.d.ts +2 -0
- package/dist/icons/glyphs/ArrowRightIcon.d.ts +2 -0
- package/dist/icons/glyphs/ArrowUpDownIcon.d.ts +2 -0
- package/dist/icons/glyphs/ArrowUpIcon.d.ts +2 -0
- package/dist/icons/glyphs/BankIcon.d.ts +2 -0
- package/dist/icons/glyphs/BellIcon.d.ts +2 -0
- package/dist/icons/glyphs/BoltIcon.d.ts +2 -0
- package/dist/icons/glyphs/BoxIcon.d.ts +2 -0
- package/dist/icons/glyphs/BrandIcons.d.ts +21 -0
- package/dist/icons/glyphs/BrandMoreIcons.d.ts +27 -0
- package/dist/icons/glyphs/BugIcon.d.ts +2 -0
- package/dist/icons/glyphs/BuildingIcon.d.ts +2 -0
- package/dist/icons/glyphs/CalendarIcon.d.ts +2 -0
- package/dist/icons/glyphs/CameraIcon.d.ts +2 -0
- package/dist/icons/glyphs/CartIcon.d.ts +2 -0
- package/dist/icons/glyphs/ChartIcon.d.ts +2 -0
- package/dist/icons/glyphs/ChatIcon.d.ts +2 -0
- package/dist/icons/glyphs/ChatsIcon.d.ts +2 -0
- package/dist/icons/glyphs/CheckCircleIcon.d.ts +2 -0
- package/dist/icons/glyphs/CheckIcon.d.ts +2 -0
- package/dist/icons/glyphs/ChevronDownIcon.d.ts +2 -0
- package/dist/icons/glyphs/ChevronLeftIcon.d.ts +2 -0
- package/dist/icons/glyphs/ChevronRightIcon.d.ts +2 -0
- package/dist/icons/glyphs/ChevronUpIcon.d.ts +2 -0
- package/dist/icons/glyphs/ClickIcon.d.ts +2 -0
- package/dist/icons/glyphs/ClipboardIcon.d.ts +2 -0
- package/dist/icons/glyphs/ClockIcon.d.ts +2 -0
- package/dist/icons/glyphs/CloseIcon.d.ts +2 -0
- package/dist/icons/glyphs/CommentIcon.d.ts +2 -0
- package/dist/icons/glyphs/CopyIcon.d.ts +2 -0
- package/dist/icons/glyphs/CopyrightIcon.d.ts +2 -0
- package/dist/icons/glyphs/CreditCardIcon.d.ts +2 -0
- package/dist/icons/glyphs/CubeIcon.d.ts +2 -0
- package/dist/icons/glyphs/DashboardIcon.d.ts +2 -0
- package/dist/icons/glyphs/DatabaseIcon.d.ts +2 -0
- package/dist/icons/glyphs/DeviceMonitorIcon.d.ts +2 -0
- package/dist/icons/glyphs/DevicePhoneIcon.d.ts +2 -0
- package/dist/icons/glyphs/DeviceTabletIcon.d.ts +2 -0
- package/dist/icons/glyphs/DocCopyIcon.d.ts +2 -0
- package/dist/icons/glyphs/DocIcon.d.ts +2 -0
- package/dist/icons/glyphs/DocPlusIcon.d.ts +2 -0
- package/dist/icons/glyphs/DollarIcon.d.ts +2 -0
- package/dist/icons/glyphs/DownloadIcon.d.ts +2 -0
- package/dist/icons/glyphs/EditIcon.d.ts +2 -0
- package/dist/icons/glyphs/EllipsisVerticalIcon.d.ts +2 -0
- package/dist/icons/glyphs/ErrorIcon.d.ts +2 -0
- package/dist/icons/glyphs/EuroIcon.d.ts +2 -0
- package/dist/icons/glyphs/ExternalLinkIcon.d.ts +2 -0
- package/dist/icons/glyphs/EyeIcon.d.ts +2 -0
- package/dist/icons/glyphs/EyeOffIcon.d.ts +2 -0
- package/dist/icons/glyphs/FileArchiveIcon.d.ts +2 -0
- package/dist/icons/glyphs/FileCodeIcon.d.ts +2 -0
- package/dist/icons/glyphs/FileExtIcons.d.ts +27 -0
- package/dist/icons/glyphs/FileIcon.d.ts +2 -0
- package/dist/icons/glyphs/FileImageIcon.d.ts +2 -0
- package/dist/icons/glyphs/FilePdfIcon.d.ts +2 -0
- package/dist/icons/glyphs/FileTextIcon.d.ts +2 -0
- package/dist/icons/glyphs/FileVideoIcon.d.ts +2 -0
- package/dist/icons/glyphs/FilterIcon.d.ts +2 -0
- package/dist/icons/glyphs/FlagArIcon.d.ts +2 -0
- package/dist/icons/glyphs/FlagBrIcon.d.ts +2 -0
- package/dist/icons/glyphs/FlagCaIcon.d.ts +2 -0
- package/dist/icons/glyphs/FlagCnIcon.d.ts +2 -0
- package/dist/icons/glyphs/FlagCzIcon.d.ts +2 -0
- package/dist/icons/glyphs/FlagDeIcon.d.ts +2 -0
- package/dist/icons/glyphs/FlagEsIcon.d.ts +2 -0
- package/dist/icons/glyphs/FlagFrIcon.d.ts +2 -0
- package/dist/icons/glyphs/FlagGbIcon.d.ts +2 -0
- package/dist/icons/glyphs/FlagInIcon.d.ts +2 -0
- package/dist/icons/glyphs/FlagItIcon.d.ts +2 -0
- package/dist/icons/glyphs/FlagJpIcon.d.ts +2 -0
- package/dist/icons/glyphs/FlagMxIcon.d.ts +2 -0
- package/dist/icons/glyphs/FlagPlIcon.d.ts +2 -0
- package/dist/icons/glyphs/FlagRuIcon.d.ts +2 -0
- package/dist/icons/glyphs/FlagSkIcon.d.ts +2 -0
- package/dist/icons/glyphs/FlagUaIcon.d.ts +2 -0
- package/dist/icons/glyphs/FlagUsIcon.d.ts +2 -0
- package/dist/icons/glyphs/FolderIcon.d.ts +2 -0
- package/dist/icons/glyphs/FolderOpenIcon.d.ts +2 -0
- package/dist/icons/glyphs/FolderPlusIcon.d.ts +2 -0
- package/dist/icons/glyphs/FormIcon.d.ts +2 -0
- package/dist/icons/glyphs/GalleryIcon.d.ts +2 -0
- package/dist/icons/glyphs/GlobeIcon.d.ts +2 -0
- package/dist/icons/glyphs/GroupIcon.d.ts +2 -0
- package/dist/icons/glyphs/HeartFillIcon.d.ts +2 -0
- package/dist/icons/glyphs/HeartIcon.d.ts +2 -0
- package/dist/icons/glyphs/HelpIcon.d.ts +2 -0
- package/dist/icons/glyphs/HomeIcon.d.ts +2 -0
- package/dist/icons/glyphs/IdCardIcon.d.ts +2 -0
- package/dist/icons/glyphs/ImageIcon.d.ts +2 -0
- package/dist/icons/glyphs/InfoIcon.d.ts +2 -0
- package/dist/icons/glyphs/KanbanIcon.d.ts +2 -0
- package/dist/icons/glyphs/LayoutIcon.d.ts +2 -0
- package/dist/icons/glyphs/LightbulbIcon.d.ts +2 -0
- package/dist/icons/glyphs/LinkIcon.d.ts +2 -0
- package/dist/icons/glyphs/LockIcon.d.ts +2 -0
- package/dist/icons/glyphs/LockOpenIcon.d.ts +2 -0
- package/dist/icons/glyphs/MagicIcon.d.ts +2 -0
- package/dist/icons/glyphs/MailIcon.d.ts +2 -0
- package/dist/icons/glyphs/MailOpenIcon.d.ts +2 -0
- package/dist/icons/glyphs/MenuIcon.d.ts +2 -0
- package/dist/icons/glyphs/MinusIcon.d.ts +2 -0
- package/dist/icons/glyphs/MoonIcon.d.ts +2 -0
- package/dist/icons/glyphs/MoreIcon.d.ts +3 -0
- package/dist/icons/glyphs/NeutralIcon.d.ts +2 -0
- package/dist/icons/glyphs/PaletteIcon.d.ts +2 -0
- package/dist/icons/glyphs/PhoneIcon.d.ts +2 -0
- package/dist/icons/glyphs/PinIcon.d.ts +2 -0
- package/dist/icons/glyphs/PlusIcon.d.ts +2 -0
- package/dist/icons/glyphs/ProtectIcon.d.ts +2 -0
- package/dist/icons/glyphs/PuzzleIcon.d.ts +2 -0
- package/dist/icons/glyphs/RefreshIcon.d.ts +2 -0
- package/dist/icons/glyphs/SearchIcon.d.ts +2 -0
- package/dist/icons/glyphs/SendIcon.d.ts +2 -0
- package/dist/icons/glyphs/SettingsIcon.d.ts +2 -0
- package/dist/icons/glyphs/SidebarIcon.d.ts +2 -0
- package/dist/icons/glyphs/Signal1Icon.d.ts +2 -0
- package/dist/icons/glyphs/Signal2Icon.d.ts +2 -0
- package/dist/icons/glyphs/Signal3Icon.d.ts +2 -0
- package/dist/icons/glyphs/Signal4Icon.d.ts +2 -0
- package/dist/icons/glyphs/SlidersIcon.d.ts +2 -0
- package/dist/icons/glyphs/SortIcon.d.ts +2 -0
- package/dist/icons/glyphs/StarFillIcon.d.ts +2 -0
- package/dist/icons/glyphs/StarIcon.d.ts +2 -0
- package/dist/icons/glyphs/SuccessIcon.d.ts +2 -0
- package/dist/icons/glyphs/SunIcon.d.ts +2 -0
- package/dist/icons/glyphs/TagIcon.d.ts +2 -0
- package/dist/icons/glyphs/TeamIcon.d.ts +2 -0
- package/dist/icons/glyphs/TerminalIcon.d.ts +2 -0
- package/dist/icons/glyphs/TranslateIcon.d.ts +2 -0
- package/dist/icons/glyphs/TrashIcon.d.ts +2 -0
- package/dist/icons/glyphs/UploadIcon.d.ts +2 -0
- package/dist/icons/glyphs/UserIcon.d.ts +2 -0
- package/dist/icons/glyphs/UsersIcon.d.ts +2 -0
- package/dist/icons/glyphs/WarningIcon.d.ts +2 -0
- package/dist/icons/glyphs/WindowIcon.d.ts +2 -0
- package/dist/icons/glyphs/ZoomInIcon.d.ts +2 -0
- package/dist/icons/glyphs/ZoomOutIcon.d.ts +2 -0
- package/dist/icons/glyphs/fileMark.d.ts +9 -0
- package/dist/icons/index.d.ts +142 -0
- package/dist/icons.cjs +2 -0
- package/dist/icons.d.ts +2 -0
- package/dist/icons.entry.d.ts +3 -0
- package/dist/icons.js +20 -0
- package/dist/index.cjs +2 -4
- package/dist/index.d.ts +183 -3062
- package/dist/index.js +63 -8896
- package/dist/inputs.cjs +2 -0
- package/dist/inputs.d.ts +3 -0
- package/dist/inputs.js +6 -0
- package/dist/layout.cjs +2 -0
- package/dist/layout.d.ts +3 -0
- package/dist/layout.js +9 -0
- package/dist/layoutProps-CY4cnDrW.js +29 -0
- package/dist/layoutProps-CY4cnDrW.js.map +1 -0
- package/dist/layoutProps-Dw_ZW6ot.cjs +2 -0
- package/dist/layoutProps-Dw_ZW6ot.cjs.map +1 -0
- package/dist/locale-C_PRdyIv.cjs +2 -0
- package/dist/locale-C_PRdyIv.cjs.map +1 -0
- package/dist/locale-DofwII5P.js +58 -0
- package/dist/locale-DofwII5P.js.map +1 -0
- package/dist/media.cjs +2 -0
- package/dist/media.d.ts +3 -0
- package/dist/media.js +7 -0
- package/dist/overlays.cjs +2 -0
- package/dist/overlays.d.ts +3 -0
- package/dist/overlays.js +8 -0
- package/dist/primitives.cjs +2 -0
- package/dist/primitives.d.ts +3 -0
- package/dist/primitives.js +4 -0
- package/dist/style-runtime.cjs +2 -0
- package/dist/style-runtime.js +2 -0
- package/dist/styles.css +1 -1
- package/dist/theme/ThemeProvider.d.ts +20 -0
- package/dist/theme/index.d.ts +3 -0
- package/dist/theme/types.d.ts +50 -0
- package/dist/theme.cjs +2 -0
- package/dist/theme.d.ts +2 -0
- package/dist/theme.entry.d.ts +1 -0
- package/dist/theme.js +3 -0
- package/dist/typography.cjs +2 -0
- package/dist/typography.d.ts +3 -0
- package/dist/typography.js +6 -0
- package/dist/useClickOutside-CS-Mc6ne.cjs +2 -0
- package/dist/useClickOutside-CS-Mc6ne.cjs.map +1 -0
- package/dist/useClickOutside-Dcye4Ut0.js +16 -0
- package/dist/useClickOutside-Dcye4Ut0.js.map +1 -0
- package/dist/useDebounce-C3jbJOKC.cjs +2 -0
- package/dist/useDebounce-C3jbJOKC.cjs.map +1 -0
- package/dist/useDebounce-D-v3IRXp.js +21 -0
- package/dist/useDebounce-D-v3IRXp.js.map +1 -0
- package/dist/useFormField-Bz4d7m8u.cjs +2 -0
- package/dist/useFormField-Bz4d7m8u.cjs.map +1 -0
- package/dist/useFormField-jOnRqGD2.js +166 -0
- package/dist/useFormField-jOnRqGD2.js.map +1 -0
- package/dist/useGhostText-BNcH5o9H.js +51 -0
- package/dist/useGhostText-BNcH5o9H.js.map +1 -0
- package/dist/useGhostText-CoYhBGCg.cjs +2 -0
- package/dist/useGhostText-CoYhBGCg.cjs.map +1 -0
- package/dist/useInteractionEffect-B5_UpgTt.js +40 -0
- package/dist/useInteractionEffect-B5_UpgTt.js.map +1 -0
- package/dist/useInteractionEffect-BaJeiUns.cjs +2 -0
- package/dist/useInteractionEffect-BaJeiUns.cjs.map +1 -0
- package/dist/useKeyboardNav-CmUKtJag.js +43 -0
- package/dist/useKeyboardNav-CmUKtJag.js.map +1 -0
- package/dist/useKeyboardNav-DJtFz7Fx.cjs +2 -0
- package/dist/useKeyboardNav-DJtFz7Fx.cjs.map +1 -0
- package/dist/useReveal-Fg-i8hhZ.js +23 -0
- package/dist/useReveal-Fg-i8hhZ.js.map +1 -0
- package/dist/useReveal-p1cSTlUT.cjs +2 -0
- package/dist/useReveal-p1cSTlUT.cjs.map +1 -0
- package/dist/utils/appearanceProps.d.ts +6 -0
- package/dist/utils/cn.d.ts +1 -0
- package/dist/utils/creditCards.d.ts +16 -0
- package/dist/utils/dateUtils.d.ts +17 -0
- package/dist/utils/formatters.d.ts +21 -0
- package/dist/utils/layoutProps.d.ts +25 -0
- package/dist/utils/locale.d.ts +13 -0
- package/dist/utils/postalCodes.d.ts +21 -0
- package/dist/utils/relativeTime.d.ts +16 -0
- package/dist/utils/useClickOutside.d.ts +2 -0
- package/dist/utils/useControllableString.d.ts +7 -0
- package/dist/utils/useDebounce.d.ts +2 -0
- package/dist/utils/useGhostText.d.ts +28 -0
- package/dist/utils/useInteractionEffect.d.ts +15 -0
- package/dist/utils/useKeyboardNav.d.ts +14 -0
- package/dist/utils/useReveal.d.ts +2 -0
- package/dist/utils/validators.d.ts +19 -0
- package/dist/utils.cjs +2 -0
- package/dist/utils.d.ts +2 -0
- package/dist/utils.entry.d.ts +20 -0
- package/dist/utils.js +13 -0
- package/dist/validators-B7cSTrU_.cjs +2 -0
- package/dist/validators-B7cSTrU_.cjs.map +1 -0
- package/dist/validators-Y1nYXhNR.js +378 -0
- package/dist/validators-Y1nYXhNR.js.map +1 -0
- package/package.json +226 -1
- package/dist/index.cjs.map +0 -1
- package/dist/index.js.map +0 -1
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
import { MineralTheme, MineralMode, MineralModePreference } from './types';
|
|
3
|
+
interface ThemeContextValue {
|
|
4
|
+
theme: MineralTheme;
|
|
5
|
+
mode: MineralModePreference;
|
|
6
|
+
resolvedMode: MineralMode;
|
|
7
|
+
setMode: (next: MineralModePreference) => void;
|
|
8
|
+
toggleMode: () => void;
|
|
9
|
+
}
|
|
10
|
+
export type MineralThemeScope = 'body' | 'wrapper';
|
|
11
|
+
interface MineralThemeProviderProps {
|
|
12
|
+
theme?: MineralTheme;
|
|
13
|
+
mode?: MineralModePreference;
|
|
14
|
+
persist?: boolean;
|
|
15
|
+
scope?: MineralThemeScope;
|
|
16
|
+
children: ReactNode;
|
|
17
|
+
}
|
|
18
|
+
export declare function MineralThemeProvider({ theme, mode: modeProp, persist, scope, children, }: MineralThemeProviderProps): import("react/jsx-runtime").JSX.Element;
|
|
19
|
+
export declare function useTheme(): ThemeContextValue;
|
|
20
|
+
export {};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export { MineralThemeProvider as MThemeProvider, useTheme as useMTheme, MineralThemeProvider, useTheme, } from './ThemeProvider';
|
|
2
|
+
export type { MineralThemeScope } from './ThemeProvider';
|
|
3
|
+
export type { MineralTheme, MineralMode, MineralModePreference, MineralColor, MineralSize, MineralFontColor, } from './types';
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
export type MineralMode = 'dark' | 'light';
|
|
2
|
+
export type MineralModePreference = MineralMode | 'system';
|
|
3
|
+
export type MineralFontColor = 'default' | 'muted' | 'heading' | 'inverted' | 'inherit' | 'primary' | 'neutral' | 'success' | 'error' | 'warning' | 'info' | 'danger';
|
|
4
|
+
export interface MineralTheme {
|
|
5
|
+
primaryRgb?: string;
|
|
6
|
+
primary?: string;
|
|
7
|
+
primaryDark?: string;
|
|
8
|
+
primaryLight?: string;
|
|
9
|
+
neutralRgb?: string;
|
|
10
|
+
neutral?: string;
|
|
11
|
+
dark?: string;
|
|
12
|
+
darkLight?: string;
|
|
13
|
+
surface?: string;
|
|
14
|
+
surfaceContrast?: string;
|
|
15
|
+
pageBg?: string;
|
|
16
|
+
pageText?: string;
|
|
17
|
+
text?: string;
|
|
18
|
+
textSecondary?: string;
|
|
19
|
+
textHeading?: string;
|
|
20
|
+
border?: string;
|
|
21
|
+
borderHover?: string;
|
|
22
|
+
borderFocus?: string;
|
|
23
|
+
successRgb?: string;
|
|
24
|
+
success?: string;
|
|
25
|
+
errorRgb?: string;
|
|
26
|
+
error?: string;
|
|
27
|
+
warningRgb?: string;
|
|
28
|
+
warning?: string;
|
|
29
|
+
infoRgb?: string;
|
|
30
|
+
info?: string;
|
|
31
|
+
fontFamily?: string;
|
|
32
|
+
fontFamilySans?: string;
|
|
33
|
+
fontFamilyMono?: string;
|
|
34
|
+
fontFamilyHeading?: string;
|
|
35
|
+
fontColorDefault?: string;
|
|
36
|
+
fontColorMuted?: string;
|
|
37
|
+
fontColorHeading?: string;
|
|
38
|
+
fontColorInverted?: string;
|
|
39
|
+
fontColorPrimary?: string;
|
|
40
|
+
fontColorNeutral?: string;
|
|
41
|
+
fontColorSuccess?: string;
|
|
42
|
+
fontColorError?: string;
|
|
43
|
+
fontColorWarning?: string;
|
|
44
|
+
fontColorInfo?: string;
|
|
45
|
+
radiusSm?: string;
|
|
46
|
+
radiusMd?: string;
|
|
47
|
+
radiusLg?: string;
|
|
48
|
+
}
|
|
49
|
+
export type MineralColor = 'primary' | 'neutral' | 'success' | 'error' | 'warning' | 'info' | 'danger';
|
|
50
|
+
export type MineralSize = 'sm' | 'md' | 'lg';
|
package/dist/theme.cjs
ADDED
package/dist/theme.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './theme';
|
package/dist/theme.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
require('./style-runtime.cjs')
|
|
2
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./Heading-CALsycVL.cjs`),t=require(`./Text-DUuY1RDL.cjs`),n=require(`./Link-DSIStgFG.cjs`),r=require(`./Kbd-wmU-rhWO.cjs`);exports.Code=r.a,exports.MCode=r.a,exports.Heading=e.t,exports.MHeading=e.t,exports.Kbd=r.t,exports.MKbd=r.t,exports.List=r.r,exports.MList=r.r,exports.ListItem=r.i,exports.MListItem=r.i,exports.MLink=n.t,exports.MSubText=r.n,exports.SubText=r.n,exports.MText=t.t,exports.Text=t.t;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export * from './components/typography';
|
|
2
|
+
export { Heading as MHeading, Text as MText, SubText as MSubText, MLink, Code as MCode, List as MList, ListItem as MListItem, Kbd as MKbd, } from './components/typography';
|
|
3
|
+
export type { HeadingProps as MHeadingProps, TextProps as MTextProps, TextAlign as MTextAlign, SubTextProps as MSubTextProps, SubTextSize as MSubTextSize, CodeProps as MCodeProps, ListProps as MListProps, KbdProps as MKbdProps, } from './components/typography';
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import './style-runtime.js'
|
|
2
|
+
import { t as e } from "./Heading-DtcgehrI.js";
|
|
3
|
+
import { t } from "./Text-DOVuH0uw.js";
|
|
4
|
+
import { t as n } from "./Link-D3lmTu3R.js";
|
|
5
|
+
import { a as r, i, n as a, r as o, t as s } from "./Kbd-qcCkiDkW.js";
|
|
6
|
+
export { r as Code, r as MCode, e as Heading, e as MHeading, s as Kbd, s as MKbd, o as List, o as MList, i as ListItem, i as MListItem, n as MLink, a as MSubText, a as SubText, t as MText, t as Text };
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
let e=require(`react`);function t(t,n){(0,e.useEffect)(()=>{let e=e=>{!t.current||t.current.contains(e.target)||n()};return document.addEventListener(`mousedown`,e),document.addEventListener(`touchstart`,e),()=>{document.removeEventListener(`mousedown`,e),document.removeEventListener(`touchstart`,e)}},[t,n])}Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return t}});
|
|
2
|
+
//# sourceMappingURL=useClickOutside-CS-Mc6ne.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useClickOutside-CS-Mc6ne.cjs","names":[],"sources":["../src/utils/useClickOutside.ts"],"sourcesContent":["import {useEffect, type RefObject} from 'react'\n\n// Trigger a callback when pointer interaction happens outside the referenced element.\nexport function useClickOutside(ref: RefObject<HTMLElement | null>, handler: () => void): void {\n useEffect(() => {\n const listener = (e: MouseEvent | TouchEvent) => {\n if (!ref.current || ref.current.contains(e.target as Node)) return\n handler()\n }\n\n document.addEventListener('mousedown', listener)\n document.addEventListener('touchstart', listener)\n return () => {\n document.removeEventListener('mousedown', listener)\n document.removeEventListener('touchstart', listener)\n }\n }, [ref, handler])\n}\n"],"mappings":"uBAGA,SAAgB,EAAgB,EAAoC,EAA2B,EAC3F,EAAA,EAAA,eAAgB,CACZ,IAAM,EAAY,GAA+B,CACzC,CAAC,EAAI,SAAW,EAAI,QAAQ,SAAS,EAAE,OAAe,EAC1D,GAAS,EAKb,OAFA,SAAS,iBAAiB,YAAa,EAAS,CAChD,SAAS,iBAAiB,aAAc,EAAS,KACpC,CACT,SAAS,oBAAoB,YAAa,EAAS,CACnD,SAAS,oBAAoB,aAAc,EAAS,GAEzD,CAAC,EAAK,EAAQ,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { useEffect as e } from "react";
|
|
2
|
+
//#region src/utils/useClickOutside.ts
|
|
3
|
+
function t(t, n) {
|
|
4
|
+
e(() => {
|
|
5
|
+
let e = (e) => {
|
|
6
|
+
!t.current || t.current.contains(e.target) || n();
|
|
7
|
+
};
|
|
8
|
+
return document.addEventListener("mousedown", e), document.addEventListener("touchstart", e), () => {
|
|
9
|
+
document.removeEventListener("mousedown", e), document.removeEventListener("touchstart", e);
|
|
10
|
+
};
|
|
11
|
+
}, [t, n]);
|
|
12
|
+
}
|
|
13
|
+
//#endregion
|
|
14
|
+
export { t };
|
|
15
|
+
|
|
16
|
+
//# sourceMappingURL=useClickOutside-Dcye4Ut0.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useClickOutside-Dcye4Ut0.js","names":[],"sources":["../src/utils/useClickOutside.ts"],"sourcesContent":["import {useEffect, type RefObject} from 'react'\n\n// Trigger a callback when pointer interaction happens outside the referenced element.\nexport function useClickOutside(ref: RefObject<HTMLElement | null>, handler: () => void): void {\n useEffect(() => {\n const listener = (e: MouseEvent | TouchEvent) => {\n if (!ref.current || ref.current.contains(e.target as Node)) return\n handler()\n }\n\n document.addEventListener('mousedown', listener)\n document.addEventListener('touchstart', listener)\n return () => {\n document.removeEventListener('mousedown', listener)\n document.removeEventListener('touchstart', listener)\n }\n }, [ref, handler])\n}\n"],"mappings":";;AAGA,SAAgB,EAAgB,GAAoC,GAA2B;AAC3F,SAAgB;EACZ,IAAM,KAAY,MAA+B;AACzC,IAAC,EAAI,WAAW,EAAI,QAAQ,SAAS,EAAE,OAAe,IAC1D,GAAS;;AAKb,SAFA,SAAS,iBAAiB,aAAa,EAAS,EAChD,SAAS,iBAAiB,cAAc,EAAS,QACpC;AAET,GADA,SAAS,oBAAoB,aAAa,EAAS,EACnD,SAAS,oBAAoB,cAAc,EAAS;;IAEzD,CAAC,GAAK,EAAQ,CAAC"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
let e=require(`react`);function t(t,n){let[r,i]=(0,e.useState)(t);return(0,e.useEffect)(()=>{let e=setTimeout(()=>i(t),n);return()=>clearTimeout(e)},[t,n]),r}function n(t,n){let r=(0,e.useRef)(t);r.current=t;let i=(0,e.useRef)(null);return(0,e.useCallback)(((...e)=>{i.current&&clearTimeout(i.current),i.current=setTimeout(()=>r.current(...e),n)}),[n])}Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return n}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return t}});
|
|
2
|
+
//# sourceMappingURL=useDebounce-C3jbJOKC.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useDebounce-C3jbJOKC.cjs","names":[],"sources":["../src/utils/useDebounce.ts"],"sourcesContent":["import {useState, useEffect, useRef, useCallback} from 'react'\n\n// Expose a value only after it stays stable for the given delay.\nexport function useDebounce<T>(value: T, delay: number): T {\n const [debounced, setDebounced] = useState(value)\n\n useEffect(() => {\n const timer = setTimeout(() => setDebounced(value), delay)\n return () => clearTimeout(timer)\n }, [value, delay])\n\n return debounced\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\n// Wrap a callback so repeated calls collapse into the latest invocation.\nexport function useDebouncedCallback<T extends (...args: any[]) => void>(callback: T, delay: number): T {\n const callbackRef = useRef(callback)\n callbackRef.current = callback\n const timerRef = useRef<ReturnType<typeof setTimeout>>(null)\n\n return useCallback(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ((...args: any[]) => {\n if (timerRef.current) clearTimeout(timerRef.current)\n timerRef.current = setTimeout(() => callbackRef.current(...args), delay)\n }) as T,\n [delay]\n )\n}\n"],"mappings":"uBAGA,SAAgB,EAAe,EAAU,EAAkB,CACvD,GAAM,CAAC,EAAW,IAAA,EAAA,EAAA,UAAyB,EAAM,CAOjD,OALA,EAAA,EAAA,eAAgB,CACZ,IAAM,EAAQ,eAAiB,EAAa,EAAM,CAAE,EAAM,CAC1D,UAAa,aAAa,EAAM,EACjC,CAAC,EAAO,EAAM,CAAC,CAEX,EAKX,SAAgB,EAAyD,EAAa,EAAkB,CACpG,IAAM,GAAA,EAAA,EAAA,QAAqB,EAAS,CACpC,EAAY,QAAU,EACtB,IAAM,GAAA,EAAA,EAAA,QAAiD,KAAK,CAE5D,OAAA,EAAA,EAAA,eAEM,GAAG,IAAgB,CACb,EAAS,SAAS,aAAa,EAAS,QAAQ,CACpD,EAAS,QAAU,eAAiB,EAAY,QAAQ,GAAG,EAAK,CAAE,EAAM,GAE5E,CAAC,EAAM,CACV"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { useCallback as e, useEffect as t, useRef as n, useState as r } from "react";
|
|
2
|
+
//#region src/utils/useDebounce.ts
|
|
3
|
+
function i(e, n) {
|
|
4
|
+
let [i, a] = r(e);
|
|
5
|
+
return t(() => {
|
|
6
|
+
let t = setTimeout(() => a(e), n);
|
|
7
|
+
return () => clearTimeout(t);
|
|
8
|
+
}, [e, n]), i;
|
|
9
|
+
}
|
|
10
|
+
function a(t, r) {
|
|
11
|
+
let i = n(t);
|
|
12
|
+
i.current = t;
|
|
13
|
+
let a = n(null);
|
|
14
|
+
return e(((...e) => {
|
|
15
|
+
a.current && clearTimeout(a.current), a.current = setTimeout(() => i.current(...e), r);
|
|
16
|
+
}), [r]);
|
|
17
|
+
}
|
|
18
|
+
//#endregion
|
|
19
|
+
export { a as n, i as t };
|
|
20
|
+
|
|
21
|
+
//# sourceMappingURL=useDebounce-D-v3IRXp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useDebounce-D-v3IRXp.js","names":[],"sources":["../src/utils/useDebounce.ts"],"sourcesContent":["import {useState, useEffect, useRef, useCallback} from 'react'\n\n// Expose a value only after it stays stable for the given delay.\nexport function useDebounce<T>(value: T, delay: number): T {\n const [debounced, setDebounced] = useState(value)\n\n useEffect(() => {\n const timer = setTimeout(() => setDebounced(value), delay)\n return () => clearTimeout(timer)\n }, [value, delay])\n\n return debounced\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\n// Wrap a callback so repeated calls collapse into the latest invocation.\nexport function useDebouncedCallback<T extends (...args: any[]) => void>(callback: T, delay: number): T {\n const callbackRef = useRef(callback)\n callbackRef.current = callback\n const timerRef = useRef<ReturnType<typeof setTimeout>>(null)\n\n return useCallback(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ((...args: any[]) => {\n if (timerRef.current) clearTimeout(timerRef.current)\n timerRef.current = setTimeout(() => callbackRef.current(...args), delay)\n }) as T,\n [delay]\n )\n}\n"],"mappings":";;AAGA,SAAgB,EAAe,GAAU,GAAkB;CACvD,IAAM,CAAC,GAAW,KAAgB,EAAS,EAAM;AAOjD,QALA,QAAgB;EACZ,IAAM,IAAQ,iBAAiB,EAAa,EAAM,EAAE,EAAM;AAC1D,eAAa,aAAa,EAAM;IACjC,CAAC,GAAO,EAAM,CAAC,EAEX;;AAKX,SAAgB,EAAyD,GAAa,GAAkB;CACpG,IAAM,IAAc,EAAO,EAAS;AACpC,GAAY,UAAU;CACtB,IAAM,IAAW,EAAsC,KAAK;AAE5D,QAAO,IAED,GAAG,MAAgB;AAEjB,EADI,EAAS,WAAS,aAAa,EAAS,QAAQ,EACpD,EAAS,UAAU,iBAAiB,EAAY,QAAQ,GAAG,EAAK,EAAE,EAAM;KAE5E,CAAC,EAAM,CACV"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const e=require(`./validators-B7cSTrU_.cjs`);let t=require(`react`),n=require(`react/jsx-runtime`);var r=(0,t.createContext)(null);function i(){return(0,t.useContext)(r)}function a({initialValues:i={},onSubmit:a,onChange:o,validationMode:s=`onBlur`,children:c,className:l,style:u,noValidate:d=!0}){let[f,p]=(0,t.useState)({...i}),[m,h]=(0,t.useState)({}),[g,_]=(0,t.useState)({}),[v,y]=(0,t.useState)(!1),b=(0,t.useRef)(new Map),x=(0,t.useCallback)(e=>{b.current.set(e.name,e)},[]),S=(0,t.useCallback)(e=>{b.current.delete(e)},[]),C=(0,t.useCallback)((t,n)=>{let r=b.current.get(t);if(!r)return{valid:!0};let i=n===void 0?f[t]:n,a=i==null?``:String(i);if(r.required){let t=e.f(a);if(!t.valid)return t}if(r.validate)for(let e of r.validate){let t=e(a);if(!t.valid)return t}return{valid:!0}},[f]),w=(0,t.useCallback)(e=>{let t=C(e);return h(n=>{if(t.valid){let t={...n};return delete t[e],t}return{...n,[e]:t.error}}),t},[C]),T=(0,t.useCallback)(()=>{let e=!0,t={};for(let[n]of b.current){let r=C(n);r.valid||(e=!1,t[n]=r.error)}h(t);let n={};for(let[e]of b.current)n[e]=!0;return _(n),e},[C]),E=(0,t.useCallback)((e,t)=>{p(n=>{let r={...n,[e]:t};return o?.(r),r}),s===`onChange`&&g[e]&&setTimeout(()=>w(e),0)},[o,s,g,w]),D=(0,t.useCallback)((e,t)=>{h(n=>({...n,[e]:t}))},[]),O=(0,t.useCallback)((e,t)=>{_(n=>({...n,[e]:t})),s===`onBlur`&&t&&w(e)},[s,w]),k=(0,t.useCallback)(()=>{p({...i}),h({}),_({}),y(!1)},[i]),A=(0,t.useCallback)(async e=>{if(e.preventDefault(),v||!T())return;y(!0);let t={setSubmitting:y,resetForm:k,setFieldError:D};try{await a?.(f,t)}finally{y(!1)}},[v,T,f,a,k,D]),j=(0,t.useMemo)(()=>({values:f,errors:m,touched:g,registerField:x,unregisterField:S,setFieldValue:E,setFieldError:D,setFieldTouched:O,validateField:w,validateAll:T,resetForm:k,isSubmitting:v}),[f,m,g,x,S,E,D,O,w,T,k,v]);return(0,n.jsx)(r.Provider,{value:j,children:(0,n.jsx)(`form`,{onSubmit:A,noValidate:d,className:`form${l?` ${l}`:``}`,style:u,children:typeof c==`function`?c(j):c})})}function o(e,n){let r=i();(0,t.useEffect)(()=>{if(r)return r.registerField({name:e,validate:n?.validate,required:n?.required}),()=>r.unregisterField(e)},[r,e,n?.validate,n?.required]);let a=(0,t.useCallback)(t=>{r?.setFieldValue(e,t)},[r,e]),o=(0,t.useCallback)(()=>{r?.setFieldTouched(e,!0)},[r,e]);return{value:r?.values[e]??``,error:r?.errors[e],touched:r?.touched[e]??!1,onChange:a,onBlur:o}}Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return i}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return o}});
|
|
2
|
+
//# sourceMappingURL=useFormField-Bz4d7m8u.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useFormField-Bz4d7m8u.cjs","names":[],"sources":["../src/components/form/Form/FormContext.ts","../src/components/form/Form/Form.tsx","../src/components/form/Form/useFormField.ts"],"sourcesContent":["import {createContext, useContext} from 'react'\nimport type {FormContextValue} from './Form.types'\n\nexport const FormContext = createContext<FormContextValue | null>(null)\n\n// Read the nearest form context to integrate custom fields with shared state.\nexport function useFormContext(): FormContextValue | null {\n return useContext(FormContext)\n}\n","import {useState, useRef, useCallback, useMemo} from 'react'\nimport type * as React from 'react'\nimport type {FormProps, FieldRegistration, FormContextValue, FormHelpers} from './Form.types'\nimport {FormContext} from './FormContext'\nimport {validateRequired} from '../../../utils/validators'\nimport type {ValidationResult} from '../../../utils/validators'\nimport './Form.css'\n\n// Coordinate form values, validation state and submit helpers through context.\nexport function Form({\n initialValues = {},\n onSubmit,\n onChange,\n validationMode = 'onBlur',\n children,\n className,\n style,\n noValidate = true,\n}: FormProps) {\n const [values, setValues] = useState<Record<string, unknown>>({...initialValues})\n const [errors, setErrors] = useState<Record<string, string>>({})\n const [touched, setTouched] = useState<Record<string, boolean>>({})\n const [isSubmitting, setIsSubmitting] = useState(false)\n const fieldsRef = useRef<Map<string, FieldRegistration>>(new Map())\n\n // Track mounted fields so validation stays aligned with active inputs.\n const registerField = useCallback((reg: FieldRegistration) => {\n fieldsRef.current.set(reg.name, reg)\n }, [])\n\n const unregisterField = useCallback((name: string) => {\n fieldsRef.current.delete(name)\n }, [])\n\n // Run required and custom validators without mutating visible error state yet.\n const validateFieldInternal = useCallback(\n (name: string, val?: unknown): ValidationResult => {\n const reg = fieldsRef.current.get(name)\n if (!reg) return {valid: true}\n\n const fieldValue = val !== undefined ? val : values[name]\n const strValue = fieldValue != null ? String(fieldValue) : ''\n\n // Required check\n if (reg.required) {\n const reqResult = validateRequired(strValue)\n if (!reqResult.valid) return reqResult\n }\n\n // Custom validators\n if (reg.validate) {\n for (const validator of reg.validate) {\n const result = validator(strValue)\n if (!result.valid) return result\n }\n }\n\n return {valid: true}\n },\n [values]\n )\n\n // Persist the latest validation result for a single field.\n const validateField = useCallback(\n (name: string): ValidationResult => {\n const result = validateFieldInternal(name)\n setErrors((prev) => {\n if (result.valid) {\n const next = {...prev}\n delete next[name]\n return next\n }\n return {...prev, [name]: result.error!}\n })\n return result\n },\n [validateFieldInternal]\n )\n\n // Validate every registered field before submit.\n const validateAll = useCallback((): boolean => {\n let allValid = true\n const newErrors: Record<string, string> = {}\n\n for (const [name] of fieldsRef.current) {\n const result = validateFieldInternal(name)\n if (!result.valid) {\n allValid = false\n newErrors[name] = result.error!\n }\n }\n\n setErrors(newErrors)\n // Mark all as touched\n const allTouched: Record<string, boolean> = {}\n for (const [name] of fieldsRef.current) {\n allTouched[name] = true\n }\n setTouched(allTouched)\n\n return allValid\n }, [validateFieldInternal])\n\n // Update field values and trigger onChange or validation according to mode.\n const setFieldValue = useCallback(\n (name: string, val: unknown) => {\n setValues((prev) => {\n const next = {...prev, [name]: val}\n onChange?.(next)\n return next\n })\n\n if (validationMode === 'onChange' && touched[name]) {\n // Defer validation to next tick so values are updated\n setTimeout(() => validateField(name), 0)\n }\n },\n [onChange, validationMode, touched, validateField]\n )\n\n const setFieldError = useCallback((name: string, error: string) => {\n setErrors((prev) => ({...prev, [name]: error}))\n }, [])\n\n // Mark fields as touched so blur validation can start surfacing errors.\n const setFieldTouched = useCallback(\n (name: string, isTouched: boolean) => {\n setTouched((prev) => ({...prev, [name]: isTouched}))\n if (validationMode === 'onBlur' && isTouched) {\n validateField(name)\n }\n },\n [validationMode, validateField]\n )\n\n const resetForm = useCallback(() => {\n setValues({...initialValues})\n setErrors({})\n setTouched({})\n setIsSubmitting(false)\n }, [initialValues])\n\n // Guard submit flow with validation and a single in-flight submission state.\n const handleSubmit = useCallback(\n async (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault()\n if (isSubmitting) return\n\n const valid = validateAll()\n if (!valid) return\n\n setIsSubmitting(true)\n const helpers: FormHelpers = {\n setSubmitting: setIsSubmitting,\n resetForm,\n setFieldError,\n }\n\n try {\n await onSubmit?.(values, helpers)\n } finally {\n setIsSubmitting(false)\n }\n },\n [isSubmitting, validateAll, values, onSubmit, resetForm, setFieldError]\n )\n\n // Memoize the public form context to limit downstream re-renders.\n const ctx = useMemo<FormContextValue>(\n () => ({\n values,\n errors,\n touched,\n registerField,\n unregisterField,\n setFieldValue,\n setFieldError,\n setFieldTouched,\n validateField,\n validateAll,\n resetForm,\n isSubmitting,\n }),\n [\n values,\n errors,\n touched,\n registerField,\n unregisterField,\n setFieldValue,\n setFieldError,\n setFieldTouched,\n validateField,\n validateAll,\n resetForm,\n isSubmitting,\n ]\n )\n\n return (\n <FormContext.Provider value={ctx}>\n <form\n onSubmit={handleSubmit}\n noValidate={noValidate}\n className={`form${className ? ` ${className}` : ''}`}\n style={style}\n >\n {typeof children === 'function' ? children(ctx) : children}\n </form>\n </FormContext.Provider>\n )\n}\n","import {useEffect, useCallback} from 'react'\nimport {useFormContext} from './FormContext'\nimport type {ValidatorFn} from '../../../utils/validators'\n\nexport interface UseFormFieldOptions {\n validate?: ValidatorFn[]\n required?: boolean\n}\n\nexport interface UseFormFieldReturn {\n value: unknown\n error: string | undefined\n touched: boolean\n onChange: (value: unknown) => void\n onBlur: () => void\n}\n\n// Connect a field name to the nearest form context and expose field-level helpers.\nexport function useFormField(name: string, options?: UseFormFieldOptions): UseFormFieldReturn {\n const ctx = useFormContext()\n\n // Register the field definition so the form can validate and reset it centrally.\n useEffect(() => {\n if (!ctx) return\n ctx.registerField({\n name,\n validate: options?.validate,\n required: options?.required,\n })\n return () => ctx.unregisterField(name)\n }, [ctx, name, options?.validate, options?.required])\n\n // Forward value updates into the form state.\n const onChange = useCallback(\n (val: unknown) => {\n ctx?.setFieldValue(name, val)\n },\n [ctx, name]\n )\n\n // Mark the field as touched when the control loses focus.\n const onBlur = useCallback(() => {\n ctx?.setFieldTouched(name, true)\n }, [ctx, name])\n\n return {\n value: ctx?.values[name] ?? '',\n error: ctx?.errors[name],\n touched: ctx?.touched[name] ?? false,\n onChange,\n onBlur,\n }\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
import { f as e } from "./validators-Y1nYXhNR.js";
|
|
2
|
+
import { createContext as t, useCallback as n, useContext as r, useEffect as i, useMemo as a, useRef as o, useState as s } from "react";
|
|
3
|
+
import { jsx as c } from "react/jsx-runtime";
|
|
4
|
+
//#region src/components/form/Form/FormContext.ts
|
|
5
|
+
var l = t(null);
|
|
6
|
+
function u() {
|
|
7
|
+
return r(l);
|
|
8
|
+
}
|
|
9
|
+
//#endregion
|
|
10
|
+
//#region src/components/form/Form/Form.tsx
|
|
11
|
+
function d({ initialValues: t = {}, onSubmit: r, onChange: i, validationMode: u = "onBlur", children: d, className: f, style: p, noValidate: m = !0 }) {
|
|
12
|
+
let [h, g] = s({ ...t }), [_, v] = s({}), [y, b] = s({}), [x, S] = s(!1), C = o(/* @__PURE__ */ new Map()), w = n((e) => {
|
|
13
|
+
C.current.set(e.name, e);
|
|
14
|
+
}, []), T = n((e) => {
|
|
15
|
+
C.current.delete(e);
|
|
16
|
+
}, []), E = n((t, n) => {
|
|
17
|
+
let r = C.current.get(t);
|
|
18
|
+
if (!r) return { valid: !0 };
|
|
19
|
+
let i = n === void 0 ? h[t] : n, a = i == null ? "" : String(i);
|
|
20
|
+
if (r.required) {
|
|
21
|
+
let t = e(a);
|
|
22
|
+
if (!t.valid) return t;
|
|
23
|
+
}
|
|
24
|
+
if (r.validate) for (let e of r.validate) {
|
|
25
|
+
let t = e(a);
|
|
26
|
+
if (!t.valid) return t;
|
|
27
|
+
}
|
|
28
|
+
return { valid: !0 };
|
|
29
|
+
}, [h]), D = n((e) => {
|
|
30
|
+
let t = E(e);
|
|
31
|
+
return v((n) => {
|
|
32
|
+
if (t.valid) {
|
|
33
|
+
let t = { ...n };
|
|
34
|
+
return delete t[e], t;
|
|
35
|
+
}
|
|
36
|
+
return {
|
|
37
|
+
...n,
|
|
38
|
+
[e]: t.error
|
|
39
|
+
};
|
|
40
|
+
}), t;
|
|
41
|
+
}, [E]), O = n(() => {
|
|
42
|
+
let e = !0, t = {};
|
|
43
|
+
for (let [n] of C.current) {
|
|
44
|
+
let r = E(n);
|
|
45
|
+
r.valid || (e = !1, t[n] = r.error);
|
|
46
|
+
}
|
|
47
|
+
v(t);
|
|
48
|
+
let n = {};
|
|
49
|
+
for (let [e] of C.current) n[e] = !0;
|
|
50
|
+
return b(n), e;
|
|
51
|
+
}, [E]), k = n((e, t) => {
|
|
52
|
+
g((n) => {
|
|
53
|
+
let r = {
|
|
54
|
+
...n,
|
|
55
|
+
[e]: t
|
|
56
|
+
};
|
|
57
|
+
return i?.(r), r;
|
|
58
|
+
}), u === "onChange" && y[e] && setTimeout(() => D(e), 0);
|
|
59
|
+
}, [
|
|
60
|
+
i,
|
|
61
|
+
u,
|
|
62
|
+
y,
|
|
63
|
+
D
|
|
64
|
+
]), A = n((e, t) => {
|
|
65
|
+
v((n) => ({
|
|
66
|
+
...n,
|
|
67
|
+
[e]: t
|
|
68
|
+
}));
|
|
69
|
+
}, []), j = n((e, t) => {
|
|
70
|
+
b((n) => ({
|
|
71
|
+
...n,
|
|
72
|
+
[e]: t
|
|
73
|
+
})), u === "onBlur" && t && D(e);
|
|
74
|
+
}, [u, D]), M = n(() => {
|
|
75
|
+
g({ ...t }), v({}), b({}), S(!1);
|
|
76
|
+
}, [t]), N = n(async (e) => {
|
|
77
|
+
if (e.preventDefault(), x || !O()) return;
|
|
78
|
+
S(!0);
|
|
79
|
+
let t = {
|
|
80
|
+
setSubmitting: S,
|
|
81
|
+
resetForm: M,
|
|
82
|
+
setFieldError: A
|
|
83
|
+
};
|
|
84
|
+
try {
|
|
85
|
+
await r?.(h, t);
|
|
86
|
+
} finally {
|
|
87
|
+
S(!1);
|
|
88
|
+
}
|
|
89
|
+
}, [
|
|
90
|
+
x,
|
|
91
|
+
O,
|
|
92
|
+
h,
|
|
93
|
+
r,
|
|
94
|
+
M,
|
|
95
|
+
A
|
|
96
|
+
]), P = a(() => ({
|
|
97
|
+
values: h,
|
|
98
|
+
errors: _,
|
|
99
|
+
touched: y,
|
|
100
|
+
registerField: w,
|
|
101
|
+
unregisterField: T,
|
|
102
|
+
setFieldValue: k,
|
|
103
|
+
setFieldError: A,
|
|
104
|
+
setFieldTouched: j,
|
|
105
|
+
validateField: D,
|
|
106
|
+
validateAll: O,
|
|
107
|
+
resetForm: M,
|
|
108
|
+
isSubmitting: x
|
|
109
|
+
}), [
|
|
110
|
+
h,
|
|
111
|
+
_,
|
|
112
|
+
y,
|
|
113
|
+
w,
|
|
114
|
+
T,
|
|
115
|
+
k,
|
|
116
|
+
A,
|
|
117
|
+
j,
|
|
118
|
+
D,
|
|
119
|
+
O,
|
|
120
|
+
M,
|
|
121
|
+
x
|
|
122
|
+
]);
|
|
123
|
+
return /* @__PURE__ */ c(l.Provider, {
|
|
124
|
+
value: P,
|
|
125
|
+
children: /* @__PURE__ */ c("form", {
|
|
126
|
+
onSubmit: N,
|
|
127
|
+
noValidate: m,
|
|
128
|
+
className: `form${f ? ` ${f}` : ""}`,
|
|
129
|
+
style: p,
|
|
130
|
+
children: typeof d == "function" ? d(P) : d
|
|
131
|
+
})
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
//#endregion
|
|
135
|
+
//#region src/components/form/Form/useFormField.ts
|
|
136
|
+
function f(e, t) {
|
|
137
|
+
let r = u();
|
|
138
|
+
i(() => {
|
|
139
|
+
if (r) return r.registerField({
|
|
140
|
+
name: e,
|
|
141
|
+
validate: t?.validate,
|
|
142
|
+
required: t?.required
|
|
143
|
+
}), () => r.unregisterField(e);
|
|
144
|
+
}, [
|
|
145
|
+
r,
|
|
146
|
+
e,
|
|
147
|
+
t?.validate,
|
|
148
|
+
t?.required
|
|
149
|
+
]);
|
|
150
|
+
let a = n((t) => {
|
|
151
|
+
r?.setFieldValue(e, t);
|
|
152
|
+
}, [r, e]), o = n(() => {
|
|
153
|
+
r?.setFieldTouched(e, !0);
|
|
154
|
+
}, [r, e]);
|
|
155
|
+
return {
|
|
156
|
+
value: r?.values[e] ?? "",
|
|
157
|
+
error: r?.errors[e],
|
|
158
|
+
touched: r?.touched[e] ?? !1,
|
|
159
|
+
onChange: a,
|
|
160
|
+
onBlur: o
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
//#endregion
|
|
164
|
+
export { d as n, u as r, f as t };
|
|
165
|
+
|
|
166
|
+
//# sourceMappingURL=useFormField-jOnRqGD2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useFormField-jOnRqGD2.js","names":[],"sources":["../src/components/form/Form/FormContext.ts","../src/components/form/Form/Form.tsx","../src/components/form/Form/useFormField.ts"],"sourcesContent":["import {createContext, useContext} from 'react'\nimport type {FormContextValue} from './Form.types'\n\nexport const FormContext = createContext<FormContextValue | null>(null)\n\n// Read the nearest form context to integrate custom fields with shared state.\nexport function useFormContext(): FormContextValue | null {\n return useContext(FormContext)\n}\n","import {useState, useRef, useCallback, useMemo} from 'react'\nimport type * as React from 'react'\nimport type {FormProps, FieldRegistration, FormContextValue, FormHelpers} from './Form.types'\nimport {FormContext} from './FormContext'\nimport {validateRequired} from '../../../utils/validators'\nimport type {ValidationResult} from '../../../utils/validators'\nimport './Form.css'\n\n// Coordinate form values, validation state and submit helpers through context.\nexport function Form({\n initialValues = {},\n onSubmit,\n onChange,\n validationMode = 'onBlur',\n children,\n className,\n style,\n noValidate = true,\n}: FormProps) {\n const [values, setValues] = useState<Record<string, unknown>>({...initialValues})\n const [errors, setErrors] = useState<Record<string, string>>({})\n const [touched, setTouched] = useState<Record<string, boolean>>({})\n const [isSubmitting, setIsSubmitting] = useState(false)\n const fieldsRef = useRef<Map<string, FieldRegistration>>(new Map())\n\n // Track mounted fields so validation stays aligned with active inputs.\n const registerField = useCallback((reg: FieldRegistration) => {\n fieldsRef.current.set(reg.name, reg)\n }, [])\n\n const unregisterField = useCallback((name: string) => {\n fieldsRef.current.delete(name)\n }, [])\n\n // Run required and custom validators without mutating visible error state yet.\n const validateFieldInternal = useCallback(\n (name: string, val?: unknown): ValidationResult => {\n const reg = fieldsRef.current.get(name)\n if (!reg) return {valid: true}\n\n const fieldValue = val !== undefined ? val : values[name]\n const strValue = fieldValue != null ? String(fieldValue) : ''\n\n // Required check\n if (reg.required) {\n const reqResult = validateRequired(strValue)\n if (!reqResult.valid) return reqResult\n }\n\n // Custom validators\n if (reg.validate) {\n for (const validator of reg.validate) {\n const result = validator(strValue)\n if (!result.valid) return result\n }\n }\n\n return {valid: true}\n },\n [values]\n )\n\n // Persist the latest validation result for a single field.\n const validateField = useCallback(\n (name: string): ValidationResult => {\n const result = validateFieldInternal(name)\n setErrors((prev) => {\n if (result.valid) {\n const next = {...prev}\n delete next[name]\n return next\n }\n return {...prev, [name]: result.error!}\n })\n return result\n },\n [validateFieldInternal]\n )\n\n // Validate every registered field before submit.\n const validateAll = useCallback((): boolean => {\n let allValid = true\n const newErrors: Record<string, string> = {}\n\n for (const [name] of fieldsRef.current) {\n const result = validateFieldInternal(name)\n if (!result.valid) {\n allValid = false\n newErrors[name] = result.error!\n }\n }\n\n setErrors(newErrors)\n // Mark all as touched\n const allTouched: Record<string, boolean> = {}\n for (const [name] of fieldsRef.current) {\n allTouched[name] = true\n }\n setTouched(allTouched)\n\n return allValid\n }, [validateFieldInternal])\n\n // Update field values and trigger onChange or validation according to mode.\n const setFieldValue = useCallback(\n (name: string, val: unknown) => {\n setValues((prev) => {\n const next = {...prev, [name]: val}\n onChange?.(next)\n return next\n })\n\n if (validationMode === 'onChange' && touched[name]) {\n // Defer validation to next tick so values are updated\n setTimeout(() => validateField(name), 0)\n }\n },\n [onChange, validationMode, touched, validateField]\n )\n\n const setFieldError = useCallback((name: string, error: string) => {\n setErrors((prev) => ({...prev, [name]: error}))\n }, [])\n\n // Mark fields as touched so blur validation can start surfacing errors.\n const setFieldTouched = useCallback(\n (name: string, isTouched: boolean) => {\n setTouched((prev) => ({...prev, [name]: isTouched}))\n if (validationMode === 'onBlur' && isTouched) {\n validateField(name)\n }\n },\n [validationMode, validateField]\n )\n\n const resetForm = useCallback(() => {\n setValues({...initialValues})\n setErrors({})\n setTouched({})\n setIsSubmitting(false)\n }, [initialValues])\n\n // Guard submit flow with validation and a single in-flight submission state.\n const handleSubmit = useCallback(\n async (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault()\n if (isSubmitting) return\n\n const valid = validateAll()\n if (!valid) return\n\n setIsSubmitting(true)\n const helpers: FormHelpers = {\n setSubmitting: setIsSubmitting,\n resetForm,\n setFieldError,\n }\n\n try {\n await onSubmit?.(values, helpers)\n } finally {\n setIsSubmitting(false)\n }\n },\n [isSubmitting, validateAll, values, onSubmit, resetForm, setFieldError]\n )\n\n // Memoize the public form context to limit downstream re-renders.\n const ctx = useMemo<FormContextValue>(\n () => ({\n values,\n errors,\n touched,\n registerField,\n unregisterField,\n setFieldValue,\n setFieldError,\n setFieldTouched,\n validateField,\n validateAll,\n resetForm,\n isSubmitting,\n }),\n [\n values,\n errors,\n touched,\n registerField,\n unregisterField,\n setFieldValue,\n setFieldError,\n setFieldTouched,\n validateField,\n validateAll,\n resetForm,\n isSubmitting,\n ]\n )\n\n return (\n <FormContext.Provider value={ctx}>\n <form\n onSubmit={handleSubmit}\n noValidate={noValidate}\n className={`form${className ? ` ${className}` : ''}`}\n style={style}\n >\n {typeof children === 'function' ? children(ctx) : children}\n </form>\n </FormContext.Provider>\n )\n}\n","import {useEffect, useCallback} from 'react'\nimport {useFormContext} from './FormContext'\nimport type {ValidatorFn} from '../../../utils/validators'\n\nexport interface UseFormFieldOptions {\n validate?: ValidatorFn[]\n required?: boolean\n}\n\nexport interface UseFormFieldReturn {\n value: unknown\n error: string | undefined\n touched: boolean\n onChange: (value: unknown) => void\n onBlur: () => void\n}\n\n// Connect a field name to the nearest form context and expose field-level helpers.\nexport function useFormField(name: string, options?: UseFormFieldOptions): UseFormFieldReturn {\n const ctx = useFormContext()\n\n // Register the field definition so the form can validate and reset it centrally.\n useEffect(() => {\n if (!ctx) return\n ctx.registerField({\n name,\n validate: options?.validate,\n required: options?.required,\n })\n return () => ctx.unregisterField(name)\n }, [ctx, name, options?.validate, options?.required])\n\n // Forward value updates into the form state.\n const onChange = useCallback(\n (val: unknown) => {\n ctx?.setFieldValue(name, val)\n },\n [ctx, name]\n )\n\n // Mark the field as touched when the control loses focus.\n const onBlur = useCallback(() => {\n ctx?.setFieldTouched(name, true)\n }, [ctx, name])\n\n return {\n value: ctx?.values[name] ?? '',\n error: ctx?.errors[name],\n touched: ctx?.touched[name] ?? false,\n onChange,\n onBlur,\n }\n}\n"],"mappings":";;;;AAGA,IAAa,IAAc,EAAuC,KAAK;AAGvE,SAAgB,IAA0C;AACtD,QAAO,EAAW,EAAY;;;;ACElC,SAAgB,EAAK,EACjB,mBAAgB,EAAE,EAClB,aACA,aACA,oBAAiB,UACjB,aACA,cACA,UACA,gBAAa,MACH;CACV,IAAM,CAAC,GAAQ,KAAa,EAAkC,EAAC,GAAG,GAAc,CAAC,EAC3E,CAAC,GAAQ,KAAa,EAAiC,EAAE,CAAC,EAC1D,CAAC,GAAS,KAAc,EAAkC,EAAE,CAAC,EAC7D,CAAC,GAAc,KAAmB,EAAS,GAAM,EACjD,IAAY,kBAAuC,IAAI,KAAK,CAAC,EAG7D,IAAgB,GAAa,MAA2B;AAC1D,IAAU,QAAQ,IAAI,EAAI,MAAM,EAAI;IACrC,EAAE,CAAC,EAEA,IAAkB,GAAa,MAAiB;AAClD,IAAU,QAAQ,OAAO,EAAK;IAC/B,EAAE,CAAC,EAGA,IAAwB,GACzB,GAAc,MAAoC;EAC/C,IAAM,IAAM,EAAU,QAAQ,IAAI,EAAK;AACvC,MAAI,CAAC,EAAK,QAAO,EAAC,OAAO,IAAK;EAE9B,IAAM,IAAa,MAAQ,KAAA,IAAkB,EAAO,KAAb,GACjC,IAAW,KAAc,OAA4B,KAArB,OAAO,EAAW;AAGxD,MAAI,EAAI,UAAU;GACd,IAAM,IAAY,EAAiB,EAAS;AAC5C,OAAI,CAAC,EAAU,MAAO,QAAO;;AAIjC,MAAI,EAAI,SACJ,MAAK,IAAM,KAAa,EAAI,UAAU;GAClC,IAAM,IAAS,EAAU,EAAS;AAClC,OAAI,CAAC,EAAO,MAAO,QAAO;;AAIlC,SAAO,EAAC,OAAO,IAAK;IAExB,CAAC,EAAO,CACX,EAGK,IAAgB,GACjB,MAAmC;EAChC,IAAM,IAAS,EAAsB,EAAK;AAS1C,SARA,GAAW,MAAS;AAChB,OAAI,EAAO,OAAO;IACd,IAAM,IAAO,EAAC,GAAG,GAAK;AAEtB,WADA,OAAO,EAAK,IACL;;AAEX,UAAO;IAAC,GAAG;KAAO,IAAO,EAAO;IAAO;IACzC,EACK;IAEX,CAAC,EAAsB,CAC1B,EAGK,IAAc,QAA2B;EAC3C,IAAI,IAAW,IACT,IAAoC,EAAE;AAE5C,OAAK,IAAM,CAAC,MAAS,EAAU,SAAS;GACpC,IAAM,IAAS,EAAsB,EAAK;AAC1C,GAAK,EAAO,UACR,IAAW,IACX,EAAU,KAAQ,EAAO;;AAIjC,IAAU,EAAU;EAEpB,IAAM,IAAsC,EAAE;AAC9C,OAAK,IAAM,CAAC,MAAS,EAAU,QAC3B,GAAW,KAAQ;AAIvB,SAFA,EAAW,EAAW,EAEf;IACR,CAAC,EAAsB,CAAC,EAGrB,IAAgB,GACjB,GAAc,MAAiB;AAO5B,EANA,GAAW,MAAS;GAChB,IAAM,IAAO;IAAC,GAAG;KAAO,IAAO;IAAI;AAEnC,UADA,IAAW,EAAK,EACT;IACT,EAEE,MAAmB,cAAc,EAAQ,MAEzC,iBAAiB,EAAc,EAAK,EAAE,EAAE;IAGhD;EAAC;EAAU;EAAgB;EAAS;EAAc,CACrD,EAEK,IAAgB,GAAa,GAAc,MAAkB;AAC/D,KAAW,OAAU;GAAC,GAAG;IAAO,IAAO;GAAM,EAAE;IAChD,EAAE,CAAC,EAGA,IAAkB,GACnB,GAAc,MAAuB;AAElC,EADA,GAAY,OAAU;GAAC,GAAG;IAAO,IAAO;GAAU,EAAE,EAChD,MAAmB,YAAY,KAC/B,EAAc,EAAK;IAG3B,CAAC,GAAgB,EAAc,CAClC,EAEK,IAAY,QAAkB;AAIhC,EAHA,EAAU,EAAC,GAAG,GAAc,CAAC,EAC7B,EAAU,EAAE,CAAC,EACb,EAAW,EAAE,CAAC,EACd,EAAgB,GAAM;IACvB,CAAC,EAAc,CAAC,EAGb,IAAe,EACjB,OAAO,MAAwC;AAK3C,MAJA,EAAE,gBAAgB,EACd,KAGA,CADU,GAAa,CACf;AAEZ,IAAgB,GAAK;EACrB,IAAM,IAAuB;GACzB,eAAe;GACf;GACA;GACH;AAED,MAAI;AACA,SAAM,IAAW,GAAQ,EAAQ;YAC3B;AACN,KAAgB,GAAM;;IAG9B;EAAC;EAAc;EAAa;EAAQ;EAAU;EAAW;EAAc,CAC1E,EAGK,IAAM,SACD;EACH;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACH,GACD;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACH,CACJ;AAED,QACI,kBAAC,EAAY,UAAb;EAAsB,OAAO;YACzB,kBAAC,QAAD;GACI,UAAU;GACE;GACZ,WAAW,OAAO,IAAY,IAAI,MAAc;GACzC;aAEN,OAAO,KAAa,aAAa,EAAS,EAAI,GAAG;GAC/C,CAAA;EACY,CAAA;;;;AC/L/B,SAAgB,EAAa,GAAc,GAAmD;CAC1F,IAAM,IAAM,GAAgB;AAG5B,SAAgB;AACP,QAML,QALA,EAAI,cAAc;GACd;GACA,UAAU,GAAS;GACnB,UAAU,GAAS;GACtB,CAAC,QACW,EAAI,gBAAgB,EAAK;IACvC;EAAC;EAAK;EAAM,GAAS;EAAU,GAAS;EAAS,CAAC;CAGrD,IAAM,IAAW,GACZ,MAAiB;AACd,KAAK,cAAc,GAAM,EAAI;IAEjC,CAAC,GAAK,EAAK,CACd,EAGK,IAAS,QAAkB;AAC7B,KAAK,gBAAgB,GAAM,GAAK;IACjC,CAAC,GAAK,EAAK,CAAC;AAEf,QAAO;EACH,OAAO,GAAK,OAAO,MAAS;EAC5B,OAAO,GAAK,OAAO;EACnB,SAAS,GAAK,QAAQ,MAAS;EAC/B;EACA;EACH"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { useCallback as e, useMemo as t, useState as n } from "react";
|
|
2
|
+
//#region src/utils/useGhostText.ts
|
|
3
|
+
function r(e) {
|
|
4
|
+
return typeof e == "string" ? e : String(e);
|
|
5
|
+
}
|
|
6
|
+
function i(e, t, n) {
|
|
7
|
+
if (!t) return [];
|
|
8
|
+
let r = t.toLowerCase();
|
|
9
|
+
return e.filter((e) => n(e).toLowerCase().startsWith(r));
|
|
10
|
+
}
|
|
11
|
+
function a({ options: a, value: o, minChars: s = 2, getLabel: c = r, filter: l }) {
|
|
12
|
+
let [u, d] = n(0), f = t(() => o.length < s ? [] : l ? l(a, o) : i(a, o, c), [
|
|
13
|
+
a,
|
|
14
|
+
o,
|
|
15
|
+
s,
|
|
16
|
+
l,
|
|
17
|
+
c
|
|
18
|
+
]), p = f.length > 0 ? f[u % f.length] : null, m = p ? c(p) : "", h = m && m.toLowerCase().startsWith(o.toLowerCase()) ? m.slice(o.length) : "", g = e(() => !h || !p ? {
|
|
19
|
+
value: o,
|
|
20
|
+
option: null
|
|
21
|
+
} : {
|
|
22
|
+
value: o + h,
|
|
23
|
+
option: p
|
|
24
|
+
}, [
|
|
25
|
+
h,
|
|
26
|
+
p,
|
|
27
|
+
o
|
|
28
|
+
]), _ = e(() => {
|
|
29
|
+
f.length > 1 && d((e) => (e + 1) % f.length);
|
|
30
|
+
}, [f.length]), v = e(() => {
|
|
31
|
+
f.length > 1 && d((e) => (e - 1 + f.length) % f.length);
|
|
32
|
+
}, [f.length]), y = e(() => d(0), []), b = e((e) => (e.key === "Tab" || e.key === "Enter") && h ? (e.preventDefault(), !0) : e.key === "ArrowDown" && f.length > 1 ? (e.preventDefault(), _(), !1) : e.key === "ArrowUp" && f.length > 1 ? (e.preventDefault(), v(), !1) : !1, [
|
|
33
|
+
h,
|
|
34
|
+
f.length,
|
|
35
|
+
_,
|
|
36
|
+
v
|
|
37
|
+
]);
|
|
38
|
+
return {
|
|
39
|
+
hint: h,
|
|
40
|
+
accept: g,
|
|
41
|
+
next: _,
|
|
42
|
+
prev: v,
|
|
43
|
+
reset: y,
|
|
44
|
+
matchCount: f.length,
|
|
45
|
+
onKeyDown: b
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
//#endregion
|
|
49
|
+
export { a as t };
|
|
50
|
+
|
|
51
|
+
//# sourceMappingURL=useGhostText-BNcH5o9H.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useGhostText-BNcH5o9H.js","names":[],"sources":["../src/utils/useGhostText.ts"],"sourcesContent":["import {useState, useCallback, useMemo} from 'react'\nimport type * as React from 'react'\n\nexport interface GhostTextOptions<T = string> {\n options: T[]\n value: string\n minChars?: number\n getLabel?: (option: T) => string\n filter?: (options: T[], input: string) => T[]\n}\n\nexport interface GhostTextReturn<T = string> {\n /** The ghost suffix to render after the typed text. */\n hint: string\n /** Accept the current hint and return the full value. */\n accept: () => {value: string; option: T | null}\n /** Cycle to the next matching option. */\n next: () => void\n /** Cycle to the previous matching option. */\n prev: () => void\n /** Reset the hint index (call on value change). */\n reset: () => void\n /** Number of matching options. */\n matchCount: number\n /** Handle keyboard events — Tab/Enter accept, arrows cycle, Escape resets. */\n onKeyDown: (e: React.KeyboardEvent) => boolean\n}\n\nfunction defaultGetLabel<T>(option: T): string {\n return typeof option === 'string' ? option : String(option)\n}\n\nfunction defaultFilter<T>(options: T[], input: string, getLabel: (o: T) => string): T[] {\n if (!input) return []\n const lower = input.toLowerCase()\n return options.filter((o) => getLabel(o).toLowerCase().startsWith(lower))\n}\n\n// Manage inline ghost-text suggestions for any text input.\nexport function useGhostText<T = string>({\n options,\n value,\n minChars = 2,\n getLabel = defaultGetLabel,\n filter,\n}: GhostTextOptions<T>): GhostTextReturn<T> {\n const [hintIndex, setHintIndex] = useState(0)\n\n const filtered = useMemo(() => {\n if (value.length < minChars) return []\n if (filter) return filter(options, value)\n return defaultFilter(options, value, getLabel)\n }, [options, value, minChars, filter, getLabel])\n\n const current = filtered.length > 0 ? filtered[hintIndex % filtered.length] : null\n const fullLabel = current ? getLabel(current) : ''\n const hint =\n fullLabel && fullLabel.toLowerCase().startsWith(value.toLowerCase()) ? fullLabel.slice(value.length) : ''\n\n const accept = useCallback(() => {\n if (!hint || !current) return {value, option: null}\n return {value: value + hint, option: current}\n }, [hint, current, value])\n\n const next = useCallback(() => {\n if (filtered.length > 1) setHintIndex((i) => (i + 1) % filtered.length)\n }, [filtered.length])\n\n const prev = useCallback(() => {\n if (filtered.length > 1) setHintIndex((i) => (i - 1 + filtered.length) % filtered.length)\n }, [filtered.length])\n\n const reset = useCallback(() => setHintIndex(0), [])\n\n const onKeyDown = useCallback(\n (e: React.KeyboardEvent): boolean => {\n if ((e.key === 'Tab' || e.key === 'Enter') && hint) {\n e.preventDefault()\n return true // signal: caller should accept\n }\n if (e.key === 'ArrowDown' && filtered.length > 1) {\n e.preventDefault()\n next()\n return false\n }\n if (e.key === 'ArrowUp' && filtered.length > 1) {\n e.preventDefault()\n prev()\n return false\n }\n return false\n },\n [hint, filtered.length, next, prev]\n )\n\n return {hint, accept, next, prev, reset, matchCount: filtered.length, onKeyDown}\n}\n"],"mappings":";;AA4BA,SAAS,EAAmB,GAAmB;AAC3C,QAAO,OAAO,KAAW,WAAW,IAAS,OAAO,EAAO;;AAG/D,SAAS,EAAiB,GAAc,GAAe,GAAiC;AACpF,KAAI,CAAC,EAAO,QAAO,EAAE;CACrB,IAAM,IAAQ,EAAM,aAAa;AACjC,QAAO,EAAQ,QAAQ,MAAM,EAAS,EAAE,CAAC,aAAa,CAAC,WAAW,EAAM,CAAC;;AAI7E,SAAgB,EAAyB,EACrC,YACA,UACA,cAAW,GACX,cAAW,GACX,aACwC;CACxC,IAAM,CAAC,GAAW,KAAgB,EAAS,EAAE,EAEvC,IAAW,QACT,EAAM,SAAS,IAAiB,EAAE,GAClC,IAAe,EAAO,GAAS,EAAM,GAClC,EAAc,GAAS,GAAO,EAAS,EAC/C;EAAC;EAAS;EAAO;EAAU;EAAQ;EAAS,CAAC,EAE1C,IAAU,EAAS,SAAS,IAAI,EAAS,IAAY,EAAS,UAAU,MACxE,IAAY,IAAU,EAAS,EAAQ,GAAG,IAC1C,IACF,KAAa,EAAU,aAAa,CAAC,WAAW,EAAM,aAAa,CAAC,GAAG,EAAU,MAAM,EAAM,OAAO,GAAG,IAErG,IAAS,QACP,CAAC,KAAQ,CAAC,IAAgB;EAAC;EAAO,QAAQ;EAAK,GAC5C;EAAC,OAAO,IAAQ;EAAM,QAAQ;EAAQ,EAC9C;EAAC;EAAM;EAAS;EAAM,CAAC,EAEpB,IAAO,QAAkB;AAC3B,EAAI,EAAS,SAAS,KAAG,GAAc,OAAO,IAAI,KAAK,EAAS,OAAO;IACxE,CAAC,EAAS,OAAO,CAAC,EAEf,IAAO,QAAkB;AAC3B,EAAI,EAAS,SAAS,KAAG,GAAc,OAAO,IAAI,IAAI,EAAS,UAAU,EAAS,OAAO;IAC1F,CAAC,EAAS,OAAO,CAAC,EAEf,IAAQ,QAAkB,EAAa,EAAE,EAAE,EAAE,CAAC,EAE9C,IAAY,GACb,OACQ,EAAE,QAAQ,SAAS,EAAE,QAAQ,YAAY,KAC1C,EAAE,gBAAgB,EACX,MAEP,EAAE,QAAQ,eAAe,EAAS,SAAS,KAC3C,EAAE,gBAAgB,EAClB,GAAM,EACC,MAEP,EAAE,QAAQ,aAAa,EAAS,SAAS,KACzC,EAAE,gBAAgB,EAClB,GAAM,EACC,MAEJ,IAEX;EAAC;EAAM,EAAS;EAAQ;EAAM;EAAK,CACtC;AAED,QAAO;EAAC;EAAM;EAAQ;EAAM;EAAM;EAAO,YAAY,EAAS;EAAQ;EAAU"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
let e=require(`react`);function t(e){return typeof e==`string`?e:String(e)}function n(e,t,n){if(!t)return[];let r=t.toLowerCase();return e.filter(e=>n(e).toLowerCase().startsWith(r))}function r({options:r,value:i,minChars:a=2,getLabel:o=t,filter:s}){let[c,l]=(0,e.useState)(0),u=(0,e.useMemo)(()=>i.length<a?[]:s?s(r,i):n(r,i,o),[r,i,a,s,o]),d=u.length>0?u[c%u.length]:null,f=d?o(d):``,p=f&&f.toLowerCase().startsWith(i.toLowerCase())?f.slice(i.length):``,m=(0,e.useCallback)(()=>!p||!d?{value:i,option:null}:{value:i+p,option:d},[p,d,i]),h=(0,e.useCallback)(()=>{u.length>1&&l(e=>(e+1)%u.length)},[u.length]),g=(0,e.useCallback)(()=>{u.length>1&&l(e=>(e-1+u.length)%u.length)},[u.length]),_=(0,e.useCallback)(()=>l(0),[]),v=(0,e.useCallback)(e=>(e.key===`Tab`||e.key===`Enter`)&&p?(e.preventDefault(),!0):e.key===`ArrowDown`&&u.length>1?(e.preventDefault(),h(),!1):e.key===`ArrowUp`&&u.length>1?(e.preventDefault(),g(),!1):!1,[p,u.length,h,g]);return{hint:p,accept:m,next:h,prev:g,reset:_,matchCount:u.length,onKeyDown:v}}Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return r}});
|
|
2
|
+
//# sourceMappingURL=useGhostText-CoYhBGCg.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useGhostText-CoYhBGCg.cjs","names":[],"sources":["../src/utils/useGhostText.ts"],"sourcesContent":["import {useState, useCallback, useMemo} from 'react'\nimport type * as React from 'react'\n\nexport interface GhostTextOptions<T = string> {\n options: T[]\n value: string\n minChars?: number\n getLabel?: (option: T) => string\n filter?: (options: T[], input: string) => T[]\n}\n\nexport interface GhostTextReturn<T = string> {\n /** The ghost suffix to render after the typed text. */\n hint: string\n /** Accept the current hint and return the full value. */\n accept: () => {value: string; option: T | null}\n /** Cycle to the next matching option. */\n next: () => void\n /** Cycle to the previous matching option. */\n prev: () => void\n /** Reset the hint index (call on value change). */\n reset: () => void\n /** Number of matching options. */\n matchCount: number\n /** Handle keyboard events — Tab/Enter accept, arrows cycle, Escape resets. */\n onKeyDown: (e: React.KeyboardEvent) => boolean\n}\n\nfunction defaultGetLabel<T>(option: T): string {\n return typeof option === 'string' ? option : String(option)\n}\n\nfunction defaultFilter<T>(options: T[], input: string, getLabel: (o: T) => string): T[] {\n if (!input) return []\n const lower = input.toLowerCase()\n return options.filter((o) => getLabel(o).toLowerCase().startsWith(lower))\n}\n\n// Manage inline ghost-text suggestions for any text input.\nexport function useGhostText<T = string>({\n options,\n value,\n minChars = 2,\n getLabel = defaultGetLabel,\n filter,\n}: GhostTextOptions<T>): GhostTextReturn<T> {\n const [hintIndex, setHintIndex] = useState(0)\n\n const filtered = useMemo(() => {\n if (value.length < minChars) return []\n if (filter) return filter(options, value)\n return defaultFilter(options, value, getLabel)\n }, [options, value, minChars, filter, getLabel])\n\n const current = filtered.length > 0 ? filtered[hintIndex % filtered.length] : null\n const fullLabel = current ? getLabel(current) : ''\n const hint =\n fullLabel && fullLabel.toLowerCase().startsWith(value.toLowerCase()) ? fullLabel.slice(value.length) : ''\n\n const accept = useCallback(() => {\n if (!hint || !current) return {value, option: null}\n return {value: value + hint, option: current}\n }, [hint, current, value])\n\n const next = useCallback(() => {\n if (filtered.length > 1) setHintIndex((i) => (i + 1) % filtered.length)\n }, [filtered.length])\n\n const prev = useCallback(() => {\n if (filtered.length > 1) setHintIndex((i) => (i - 1 + filtered.length) % filtered.length)\n }, [filtered.length])\n\n const reset = useCallback(() => setHintIndex(0), [])\n\n const onKeyDown = useCallback(\n (e: React.KeyboardEvent): boolean => {\n if ((e.key === 'Tab' || e.key === 'Enter') && hint) {\n e.preventDefault()\n return true // signal: caller should accept\n }\n if (e.key === 'ArrowDown' && filtered.length > 1) {\n e.preventDefault()\n next()\n return false\n }\n if (e.key === 'ArrowUp' && filtered.length > 1) {\n e.preventDefault()\n prev()\n return false\n }\n return false\n },\n [hint, filtered.length, next, prev]\n )\n\n return {hint, accept, next, prev, reset, matchCount: filtered.length, onKeyDown}\n}\n"],"mappings":"uBA4BA,SAAS,EAAmB,EAAmB,CAC3C,OAAO,OAAO,GAAW,SAAW,EAAS,OAAO,EAAO,CAG/D,SAAS,EAAiB,EAAc,EAAe,EAAiC,CACpF,GAAI,CAAC,EAAO,MAAO,EAAE,CACrB,IAAM,EAAQ,EAAM,aAAa,CACjC,OAAO,EAAQ,OAAQ,GAAM,EAAS,EAAE,CAAC,aAAa,CAAC,WAAW,EAAM,CAAC,CAI7E,SAAgB,EAAyB,CACrC,UACA,QACA,WAAW,EACX,WAAW,EACX,UACwC,CACxC,GAAM,CAAC,EAAW,IAAA,EAAA,EAAA,UAAyB,EAAE,CAEvC,GAAA,EAAA,EAAA,aACE,EAAM,OAAS,EAAiB,EAAE,CAClC,EAAe,EAAO,EAAS,EAAM,CAClC,EAAc,EAAS,EAAO,EAAS,CAC/C,CAAC,EAAS,EAAO,EAAU,EAAQ,EAAS,CAAC,CAE1C,EAAU,EAAS,OAAS,EAAI,EAAS,EAAY,EAAS,QAAU,KACxE,EAAY,EAAU,EAAS,EAAQ,CAAG,GAC1C,EACF,GAAa,EAAU,aAAa,CAAC,WAAW,EAAM,aAAa,CAAC,CAAG,EAAU,MAAM,EAAM,OAAO,CAAG,GAErG,GAAA,EAAA,EAAA,iBACE,CAAC,GAAQ,CAAC,EAAgB,CAAC,QAAO,OAAQ,KAAK,CAC5C,CAAC,MAAO,EAAQ,EAAM,OAAQ,EAAQ,CAC9C,CAAC,EAAM,EAAS,EAAM,CAAC,CAEpB,GAAA,EAAA,EAAA,iBAAyB,CACvB,EAAS,OAAS,GAAG,EAAc,IAAO,EAAI,GAAK,EAAS,OAAO,EACxE,CAAC,EAAS,OAAO,CAAC,CAEf,GAAA,EAAA,EAAA,iBAAyB,CACvB,EAAS,OAAS,GAAG,EAAc,IAAO,EAAI,EAAI,EAAS,QAAU,EAAS,OAAO,EAC1F,CAAC,EAAS,OAAO,CAAC,CAEf,GAAA,EAAA,EAAA,iBAA0B,EAAa,EAAE,CAAE,EAAE,CAAC,CAE9C,GAAA,EAAA,EAAA,aACD,IACQ,EAAE,MAAQ,OAAS,EAAE,MAAQ,UAAY,GAC1C,EAAE,gBAAgB,CACX,IAEP,EAAE,MAAQ,aAAe,EAAS,OAAS,GAC3C,EAAE,gBAAgB,CAClB,GAAM,CACC,IAEP,EAAE,MAAQ,WAAa,EAAS,OAAS,GACzC,EAAE,gBAAgB,CAClB,GAAM,CACC,IAEJ,GAEX,CAAC,EAAM,EAAS,OAAQ,EAAM,EAAK,CACtC,CAED,MAAO,CAAC,OAAM,SAAQ,OAAM,OAAM,QAAO,WAAY,EAAS,OAAQ,YAAU"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { useCallback as e, useRef as t } from "react";
|
|
2
|
+
import { jsx as n } from "react/jsx-runtime";
|
|
3
|
+
//#region src/utils/useInteractionEffect.tsx
|
|
4
|
+
function r(e, t, n) {
|
|
5
|
+
let r = t.getBoundingClientRect(), i = Math.max(r.width, r.height) * 1.75, a = i / 2, o = document.createElement("span"), s = n.centered || n.clientX === void 0 ? r.width / 2 - a : n.clientX - r.left - a, c = n.centered || n.clientY === void 0 ? r.height / 2 - a : n.clientY - r.top - a;
|
|
6
|
+
o.className = "click-effect-wave", o.style.width = `${i}px`, o.style.height = `${i}px`, o.style.left = `${s}px`, o.style.top = `${c}px`, n.color && o.style.setProperty("--click-effect-color", n.color), e.appendChild(o), o.addEventListener("animationend", () => o.remove(), { once: !0 });
|
|
7
|
+
}
|
|
8
|
+
function i({ effect: i = "ripple", disabled: a = !1, centered: o = !1, color: s } = {}) {
|
|
9
|
+
let c = t(null), l = i === "ripple" && !a, u = e((e) => {
|
|
10
|
+
!l || !e || !c.current || r(c.current, e, {
|
|
11
|
+
centered: !0,
|
|
12
|
+
color: s
|
|
13
|
+
});
|
|
14
|
+
}, [s, l]), d = e((e) => {
|
|
15
|
+
!l || !c.current || e.pointerType === "mouse" && e.button !== 0 || r(c.current, e.currentTarget, {
|
|
16
|
+
centered: o,
|
|
17
|
+
color: s,
|
|
18
|
+
clientX: e.clientX,
|
|
19
|
+
clientY: e.clientY
|
|
20
|
+
});
|
|
21
|
+
}, [
|
|
22
|
+
o,
|
|
23
|
+
s,
|
|
24
|
+
l
|
|
25
|
+
]);
|
|
26
|
+
return {
|
|
27
|
+
effectClassName: l ? "click-effect-root" : void 0,
|
|
28
|
+
effectLayer: l ? /* @__PURE__ */ n("span", {
|
|
29
|
+
ref: c,
|
|
30
|
+
className: "click-effect-layer",
|
|
31
|
+
"aria-hidden": "true"
|
|
32
|
+
}) : null,
|
|
33
|
+
handlePointerDown: d,
|
|
34
|
+
triggerEffect: u
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
//#endregion
|
|
38
|
+
export { i as t };
|
|
39
|
+
|
|
40
|
+
//# sourceMappingURL=useInteractionEffect-B5_UpgTt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useInteractionEffect-B5_UpgTt.js","names":[],"sources":["../src/utils/useInteractionEffect.tsx"],"sourcesContent":["import {useCallback, useRef} from 'react'\nimport type {PointerEvent, ReactElement} from 'react'\n\nexport type MineralClickEffect = 'none' | 'ripple'\n\nexport interface UseInteractionEffectOptions {\n effect?: MineralClickEffect\n disabled?: boolean\n centered?: boolean\n color?: string\n}\n\nexport interface UseInteractionEffectResult<T extends HTMLElement> {\n effectClassName?: string\n effectLayer: ReactElement | null\n handlePointerDown: (event: PointerEvent<T>) => void\n triggerEffect: (target: T | null) => void\n}\n\ninterface RippleOptions {\n centered: boolean\n color?: string\n clientX?: number\n clientY?: number\n}\n\n// Render and position a ripple wave inside the dedicated effect layer.\nfunction appendRipple(layer: HTMLSpanElement, host: HTMLElement, options: RippleOptions) {\n const rect = host.getBoundingClientRect()\n const size = Math.max(rect.width, rect.height) * 1.75\n const radius = size / 2\n const wave = document.createElement('span')\n const x =\n options.centered || options.clientX === undefined\n ? rect.width / 2 - radius\n : options.clientX - rect.left - radius\n const y =\n options.centered || options.clientY === undefined\n ? rect.height / 2 - radius\n : options.clientY - rect.top - radius\n\n wave.className = 'click-effect-wave'\n wave.style.width = `${size}px`\n wave.style.height = `${size}px`\n wave.style.left = `${x}px`\n wave.style.top = `${y}px`\n\n if (options.color) {\n wave.style.setProperty('--click-effect-color', options.color)\n }\n\n layer.appendChild(wave)\n wave.addEventListener('animationend', () => wave.remove(), {once: true})\n}\n\n// Attach a lightweight click feedback effect without coupling it to a specific component.\nexport function useInteractionEffect<T extends HTMLElement = HTMLElement>({\n effect = 'ripple',\n disabled = false,\n centered = false,\n color,\n}: UseInteractionEffectOptions = {}): UseInteractionEffectResult<T> {\n const layerRef = useRef<HTMLSpanElement>(null)\n const enabled = effect === 'ripple' && !disabled\n\n // Trigger a centered ripple for keyboard-driven or programmatic actions.\n const triggerEffect = useCallback(\n (target: T | null) => {\n if (!enabled || !target || !layerRef.current) {\n return\n }\n\n appendRipple(layerRef.current, target, {centered: true, color})\n },\n [color, enabled]\n )\n\n // Start the ripple from the actual pointer position when possible.\n const handlePointerDown = useCallback(\n (event: PointerEvent<T>) => {\n if (!enabled || !layerRef.current) {\n return\n }\n\n if (event.pointerType === 'mouse' && event.button !== 0) {\n return\n }\n\n appendRipple(layerRef.current, event.currentTarget, {\n centered,\n color,\n clientX: event.clientX,\n clientY: event.clientY,\n })\n },\n [centered, color, enabled]\n )\n\n return {\n effectClassName: enabled ? 'click-effect-root' : undefined,\n effectLayer: enabled ? <span ref={layerRef} className=\"click-effect-layer\" aria-hidden=\"true\" /> : null,\n handlePointerDown,\n triggerEffect,\n }\n}\n"],"mappings":";;;AA2BA,SAAS,EAAa,GAAwB,GAAmB,GAAwB;CACrF,IAAM,IAAO,EAAK,uBAAuB,EACnC,IAAO,KAAK,IAAI,EAAK,OAAO,EAAK,OAAO,GAAG,MAC3C,IAAS,IAAO,GAChB,IAAO,SAAS,cAAc,OAAO,EACrC,IACF,EAAQ,YAAY,EAAQ,YAAY,KAAA,IAClC,EAAK,QAAQ,IAAI,IACjB,EAAQ,UAAU,EAAK,OAAO,GAClC,IACF,EAAQ,YAAY,EAAQ,YAAY,KAAA,IAClC,EAAK,SAAS,IAAI,IAClB,EAAQ,UAAU,EAAK,MAAM;AAavC,CAXA,EAAK,YAAY,qBACjB,EAAK,MAAM,QAAQ,GAAG,EAAK,KAC3B,EAAK,MAAM,SAAS,GAAG,EAAK,KAC5B,EAAK,MAAM,OAAO,GAAG,EAAE,KACvB,EAAK,MAAM,MAAM,GAAG,EAAE,KAElB,EAAQ,SACR,EAAK,MAAM,YAAY,wBAAwB,EAAQ,MAAM,EAGjE,EAAM,YAAY,EAAK,EACvB,EAAK,iBAAiB,sBAAsB,EAAK,QAAQ,EAAE,EAAC,MAAM,IAAK,CAAC;;AAI5E,SAAgB,EAA0D,EACtE,YAAS,UACT,cAAW,IACX,cAAW,IACX,aAC6B,EAAE,EAAiC;CAChE,IAAM,IAAW,EAAwB,KAAK,EACxC,IAAU,MAAW,YAAY,CAAC,GAGlC,IAAgB,GACjB,MAAqB;AACd,GAAC,KAAW,CAAC,KAAU,CAAC,EAAS,WAIrC,EAAa,EAAS,SAAS,GAAQ;GAAC,UAAU;GAAM;GAAM,CAAC;IAEnE,CAAC,GAAO,EAAQ,CACnB,EAGK,IAAoB,GACrB,MAA2B;AACpB,GAAC,KAAW,CAAC,EAAS,WAItB,EAAM,gBAAgB,WAAW,EAAM,WAAW,KAItD,EAAa,EAAS,SAAS,EAAM,eAAe;GAChD;GACA;GACA,SAAS,EAAM;GACf,SAAS,EAAM;GAClB,CAAC;IAEN;EAAC;EAAU;EAAO;EAAQ,CAC7B;AAED,QAAO;EACH,iBAAiB,IAAU,sBAAsB,KAAA;EACjD,aAAa,IAAU,kBAAC,QAAD;GAAM,KAAK;GAAU,WAAU;GAAqB,eAAY;GAAS,CAAA,GAAG;EACnG;EACA;EACH"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
let e=require(`react`),t=require(`react/jsx-runtime`);function n(e,t,n){let r=t.getBoundingClientRect(),i=Math.max(r.width,r.height)*1.75,a=i/2,o=document.createElement(`span`),s=n.centered||n.clientX===void 0?r.width/2-a:n.clientX-r.left-a,c=n.centered||n.clientY===void 0?r.height/2-a:n.clientY-r.top-a;o.className=`click-effect-wave`,o.style.width=`${i}px`,o.style.height=`${i}px`,o.style.left=`${s}px`,o.style.top=`${c}px`,n.color&&o.style.setProperty(`--click-effect-color`,n.color),e.appendChild(o),o.addEventListener(`animationend`,()=>o.remove(),{once:!0})}function r({effect:r=`ripple`,disabled:i=!1,centered:a=!1,color:o}={}){let s=(0,e.useRef)(null),c=r===`ripple`&&!i,l=(0,e.useCallback)(e=>{!c||!e||!s.current||n(s.current,e,{centered:!0,color:o})},[o,c]),u=(0,e.useCallback)(e=>{!c||!s.current||e.pointerType===`mouse`&&e.button!==0||n(s.current,e.currentTarget,{centered:a,color:o,clientX:e.clientX,clientY:e.clientY})},[a,o,c]);return{effectClassName:c?`click-effect-root`:void 0,effectLayer:c?(0,t.jsx)(`span`,{ref:s,className:`click-effect-layer`,"aria-hidden":`true`}):null,handlePointerDown:u,triggerEffect:l}}Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return r}});
|
|
2
|
+
//# sourceMappingURL=useInteractionEffect-BaJeiUns.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useInteractionEffect-BaJeiUns.cjs","names":[],"sources":["../src/utils/useInteractionEffect.tsx"],"sourcesContent":["import {useCallback, useRef} from 'react'\nimport type {PointerEvent, ReactElement} from 'react'\n\nexport type MineralClickEffect = 'none' | 'ripple'\n\nexport interface UseInteractionEffectOptions {\n effect?: MineralClickEffect\n disabled?: boolean\n centered?: boolean\n color?: string\n}\n\nexport interface UseInteractionEffectResult<T extends HTMLElement> {\n effectClassName?: string\n effectLayer: ReactElement | null\n handlePointerDown: (event: PointerEvent<T>) => void\n triggerEffect: (target: T | null) => void\n}\n\ninterface RippleOptions {\n centered: boolean\n color?: string\n clientX?: number\n clientY?: number\n}\n\n// Render and position a ripple wave inside the dedicated effect layer.\nfunction appendRipple(layer: HTMLSpanElement, host: HTMLElement, options: RippleOptions) {\n const rect = host.getBoundingClientRect()\n const size = Math.max(rect.width, rect.height) * 1.75\n const radius = size / 2\n const wave = document.createElement('span')\n const x =\n options.centered || options.clientX === undefined\n ? rect.width / 2 - radius\n : options.clientX - rect.left - radius\n const y =\n options.centered || options.clientY === undefined\n ? rect.height / 2 - radius\n : options.clientY - rect.top - radius\n\n wave.className = 'click-effect-wave'\n wave.style.width = `${size}px`\n wave.style.height = `${size}px`\n wave.style.left = `${x}px`\n wave.style.top = `${y}px`\n\n if (options.color) {\n wave.style.setProperty('--click-effect-color', options.color)\n }\n\n layer.appendChild(wave)\n wave.addEventListener('animationend', () => wave.remove(), {once: true})\n}\n\n// Attach a lightweight click feedback effect without coupling it to a specific component.\nexport function useInteractionEffect<T extends HTMLElement = HTMLElement>({\n effect = 'ripple',\n disabled = false,\n centered = false,\n color,\n}: UseInteractionEffectOptions = {}): UseInteractionEffectResult<T> {\n const layerRef = useRef<HTMLSpanElement>(null)\n const enabled = effect === 'ripple' && !disabled\n\n // Trigger a centered ripple for keyboard-driven or programmatic actions.\n const triggerEffect = useCallback(\n (target: T | null) => {\n if (!enabled || !target || !layerRef.current) {\n return\n }\n\n appendRipple(layerRef.current, target, {centered: true, color})\n },\n [color, enabled]\n )\n\n // Start the ripple from the actual pointer position when possible.\n const handlePointerDown = useCallback(\n (event: PointerEvent<T>) => {\n if (!enabled || !layerRef.current) {\n return\n }\n\n if (event.pointerType === 'mouse' && event.button !== 0) {\n return\n }\n\n appendRipple(layerRef.current, event.currentTarget, {\n centered,\n color,\n clientX: event.clientX,\n clientY: event.clientY,\n })\n },\n [centered, color, enabled]\n )\n\n return {\n effectClassName: enabled ? 'click-effect-root' : undefined,\n effectLayer: enabled ? <span ref={layerRef} className=\"click-effect-layer\" aria-hidden=\"true\" /> : null,\n handlePointerDown,\n triggerEffect,\n }\n}\n"],"mappings":"sDA2BA,SAAS,EAAa,EAAwB,EAAmB,EAAwB,CACrF,IAAM,EAAO,EAAK,uBAAuB,CACnC,EAAO,KAAK,IAAI,EAAK,MAAO,EAAK,OAAO,CAAG,KAC3C,EAAS,EAAO,EAChB,EAAO,SAAS,cAAc,OAAO,CACrC,EACF,EAAQ,UAAY,EAAQ,UAAY,IAAA,GAClC,EAAK,MAAQ,EAAI,EACjB,EAAQ,QAAU,EAAK,KAAO,EAClC,EACF,EAAQ,UAAY,EAAQ,UAAY,IAAA,GAClC,EAAK,OAAS,EAAI,EAClB,EAAQ,QAAU,EAAK,IAAM,EAEvC,EAAK,UAAY,oBACjB,EAAK,MAAM,MAAQ,GAAG,EAAK,IAC3B,EAAK,MAAM,OAAS,GAAG,EAAK,IAC5B,EAAK,MAAM,KAAO,GAAG,EAAE,IACvB,EAAK,MAAM,IAAM,GAAG,EAAE,IAElB,EAAQ,OACR,EAAK,MAAM,YAAY,uBAAwB,EAAQ,MAAM,CAGjE,EAAM,YAAY,EAAK,CACvB,EAAK,iBAAiB,mBAAsB,EAAK,QAAQ,CAAE,CAAC,KAAM,GAAK,CAAC,CAI5E,SAAgB,EAA0D,CACtE,SAAS,SACT,WAAW,GACX,WAAW,GACX,SAC6B,EAAE,CAAiC,CAChE,IAAM,GAAA,EAAA,EAAA,QAAmC,KAAK,CACxC,EAAU,IAAW,UAAY,CAAC,EAGlC,GAAA,EAAA,EAAA,aACD,GAAqB,CACd,CAAC,GAAW,CAAC,GAAU,CAAC,EAAS,SAIrC,EAAa,EAAS,QAAS,EAAQ,CAAC,SAAU,GAAM,QAAM,CAAC,EAEnE,CAAC,EAAO,EAAQ,CACnB,CAGK,GAAA,EAAA,EAAA,aACD,GAA2B,CACpB,CAAC,GAAW,CAAC,EAAS,SAItB,EAAM,cAAgB,SAAW,EAAM,SAAW,GAItD,EAAa,EAAS,QAAS,EAAM,cAAe,CAChD,WACA,QACA,QAAS,EAAM,QACf,QAAS,EAAM,QAClB,CAAC,EAEN,CAAC,EAAU,EAAO,EAAQ,CAC7B,CAED,MAAO,CACH,gBAAiB,EAAU,oBAAsB,IAAA,GACjD,YAAa,GAAU,EAAA,EAAA,KAAC,OAAD,CAAM,IAAK,EAAU,UAAU,qBAAqB,cAAY,OAAS,CAAA,CAAG,KACnG,oBACA,gBACH"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { useCallback as e, useState as t } from "react";
|
|
2
|
+
//#region src/utils/useKeyboardNav.ts
|
|
3
|
+
function n({ itemCount: n, onSelect: r, onClose: i, isOpen: a, loop: o = !0 }) {
|
|
4
|
+
let [s, c] = t(-1);
|
|
5
|
+
return {
|
|
6
|
+
activeIndex: s,
|
|
7
|
+
setActiveIndex: c,
|
|
8
|
+
resetIndex: e(() => c(-1), []),
|
|
9
|
+
onKeyDown: e((e) => {
|
|
10
|
+
if (!(!a || n === 0)) switch (e.key) {
|
|
11
|
+
case "ArrowDown":
|
|
12
|
+
e.preventDefault(), c((e) => e >= n - 1 ? o ? 0 : e : e + 1);
|
|
13
|
+
break;
|
|
14
|
+
case "ArrowUp":
|
|
15
|
+
e.preventDefault(), c((e) => e <= 0 ? o ? n - 1 : 0 : e - 1);
|
|
16
|
+
break;
|
|
17
|
+
case "Enter":
|
|
18
|
+
e.preventDefault(), s >= 0 && s < n && r(s);
|
|
19
|
+
break;
|
|
20
|
+
case "Escape":
|
|
21
|
+
e.preventDefault(), i();
|
|
22
|
+
break;
|
|
23
|
+
case "Home":
|
|
24
|
+
e.preventDefault(), c(0);
|
|
25
|
+
break;
|
|
26
|
+
case "End":
|
|
27
|
+
e.preventDefault(), c(n - 1);
|
|
28
|
+
break;
|
|
29
|
+
}
|
|
30
|
+
}, [
|
|
31
|
+
a,
|
|
32
|
+
n,
|
|
33
|
+
s,
|
|
34
|
+
r,
|
|
35
|
+
i,
|
|
36
|
+
o
|
|
37
|
+
])
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
//#endregion
|
|
41
|
+
export { n as t };
|
|
42
|
+
|
|
43
|
+
//# sourceMappingURL=useKeyboardNav-CmUKtJag.js.map
|