@bigbinary/neeto-atoms 1.0.36 → 1.0.37
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Accordion-DVMgPBum.js +45 -0
- package/dist/{Accordion-Ch9S_qd3.js.map → Accordion-DVMgPBum.js.map} +1 -1
- package/dist/Alert-bS5M631u.js +150 -0
- package/dist/{Alert-CayTuRLW.js.map → Alert-bS5M631u.js.map} +1 -1
- package/dist/Avatar-CJq2rlgk.js +71 -0
- package/dist/{Avatar-D5YGlXVF.js.map → Avatar-CJq2rlgk.js.map} +1 -1
- package/dist/Badge-DC6zxOwS.js +131 -0
- package/dist/{Badge-Bj3ajrWB.js.map → Badge-DC6zxOwS.js.map} +1 -1
- package/dist/Button-BCWJgHDy.js +193 -0
- package/dist/Button-BCWJgHDy.js.map +1 -0
- package/dist/{Calendar-gPWbQa_c.js → Calendar-CjOBwDbx.js} +181 -72
- package/dist/{Calendar-gPWbQa_c.js.map → Calendar-CjOBwDbx.js.map} +1 -1
- package/dist/{Callout-CTr3dhBe.js → Callout-ClNFeMbn.js} +36 -22
- package/dist/{Callout-CTr3dhBe.js.map → Callout-ClNFeMbn.js.map} +1 -1
- package/dist/Checkbox-C_Rd2-8Z.js +75 -0
- package/dist/{Checkbox-zCxgcZiC.js.map → Checkbox-C_Rd2-8Z.js.map} +1 -1
- package/dist/ColorPicker-D7Y1gZNn.js +437 -0
- package/dist/ColorPicker-D7Y1gZNn.js.map +1 -0
- package/dist/{DataTable-BpMBsz5i.js → DataTable-CEA8czNL.js} +1024 -641
- package/dist/DataTable-CEA8czNL.js.map +1 -0
- package/dist/{DatePicker-B7SYjsog.js → DatePicker-CCN3b1oz.js} +439 -264
- package/dist/{DatePicker-B7SYjsog.js.map → DatePicker-CCN3b1oz.js.map} +1 -1
- package/dist/Dialog-BOcBeB8v.js +147 -0
- package/dist/{Dialog-BURSzxaP.js.map → Dialog-BOcBeB8v.js.map} +1 -1
- package/dist/{DirectionProvider-DGYDg_He.js → DirectionProvider-weqLz_BJ.js} +2 -2
- package/dist/{DirectionProvider-DGYDg_He.js.map → DirectionProvider-weqLz_BJ.js.map} +1 -1
- package/dist/Empty-fV1Yplri.js +75 -0
- package/dist/{Empty-zyL2ZsHX.js.map → Empty-fV1Yplri.js.map} +1 -1
- package/dist/Input-xjYQfsaz.js +222 -0
- package/dist/{Input-C1gcv9o2.js.map → Input-xjYQfsaz.js.map} +1 -1
- package/dist/Kbd-CJOM9x4C.js +41 -0
- package/dist/{Kbd-EqbC0bua.js.map → Kbd-CJOM9x4C.js.map} +1 -1
- package/dist/Label-CrCRic4I.js +87 -0
- package/dist/{Label-DAFESZOG.js.map → Label-CrCRic4I.js.map} +1 -1
- package/dist/MultiEmailInput-L-QJg0hh.js +262 -0
- package/dist/MultiEmailInput-L-QJg0hh.js.map +1 -0
- package/dist/Pagination-C_X9kgc8.js +103 -0
- package/dist/{Pagination-DSc9yXPy.js.map → Pagination-C_X9kgc8.js.map} +1 -1
- package/dist/Popover-Cco_6txS.js +131 -0
- package/dist/{Popover-Dmq-xK_a.js.map → Popover-Cco_6txS.js.map} +1 -1
- package/dist/Progress-DURemsl_.js +18 -0
- package/dist/{Progress-B9NlUm6e.js.map → Progress-DURemsl_.js.map} +1 -1
- package/dist/RadioGroup-BTemSonO.js +106 -0
- package/dist/{RadioGroup-BNeYQAoT.js.map → RadioGroup-BTemSonO.js.map} +1 -1
- package/dist/Select-o0yJaN0P.js +1059 -0
- package/dist/Select-o0yJaN0P.js.map +1 -0
- package/dist/SelectFieldWrapper-CiBARDsn.js +74 -0
- package/dist/{SelectFieldWrapper-BJzq9aCY.js.map → SelectFieldWrapper-CiBARDsn.js.map} +1 -1
- package/dist/Sheet-DVoy6if3.js +158 -0
- package/dist/{Sheet-B99vGwLH.js.map → Sheet-DVoy6if3.js.map} +1 -1
- package/dist/Slider-DNcH5X7b.js +65 -0
- package/dist/{Slider-BCQXhs0Q.js.map → Slider-DNcH5X7b.js.map} +1 -1
- package/dist/Spinner-DgV3mILN.js +26 -0
- package/dist/{Spinner-C8HSac-2.js.map → Spinner-DgV3mILN.js.map} +1 -1
- package/dist/Stepper-7OpfOfas.js +109 -0
- package/dist/{Stepper-BoGkmkY0.js.map → Stepper-7OpfOfas.js.map} +1 -1
- package/dist/Switch-OAB7pfNn.js +82 -0
- package/dist/{Switch-B83TGxJ_.js.map → Switch-OAB7pfNn.js.map} +1 -1
- package/dist/Tabs-DTbbJITd.js +64 -0
- package/dist/{Tabs-DWfKnl3S.js.map → Tabs-DTbbJITd.js.map} +1 -1
- package/dist/Textarea-B2Uhx-Yy.js +181 -0
- package/dist/{Textarea-C0z50h0N.js.map → Textarea-B2Uhx-Yy.js.map} +1 -1
- package/dist/TimePicker-wPi2k6Z8.js +264 -0
- package/dist/TimePicker-wPi2k6Z8.js.map +1 -0
- package/dist/TimePickerPanel-DAhz3B2d.js +227 -0
- package/dist/{TimePickerPanel-CiF0RExY.js.map → TimePickerPanel-DAhz3B2d.js.map} +1 -1
- package/dist/Toastr-BimwuEnS.js +95 -0
- package/dist/{Toastr-DYqpSaMd.js.map → Toastr-BimwuEnS.js.map} +1 -1
- package/dist/Tooltip-CA3irJ2q.js +88 -0
- package/dist/{Tooltip-3ZzQyaDV.js.map → Tooltip-CA3irJ2q.js.map} +1 -1
- package/dist/{TranslationProvider-Ba9rn47H.js → TranslationProvider-BvRvUsPS.js} +20 -17
- package/dist/{TranslationProvider-Ba9rn47H.js.map → TranslationProvider-BvRvUsPS.js.map} +1 -1
- package/dist/{Tree-C7r10UY5.js → Tree-BlzjThRi.js} +515 -322
- package/dist/Tree-BlzjThRi.js.map +1 -0
- package/dist/TreeSelect-Dk299XMv.js +335 -0
- package/dist/TreeSelect-Dk299XMv.js.map +1 -0
- package/dist/Typography-CiQzW5Fy.js +97 -0
- package/dist/{Typography-ClPJbLjP.js.map → Typography-CiQzW5Fy.js.map} +1 -1
- package/dist/button-CrEMzWKw.js +67 -0
- package/dist/{button-D6uWDFCs.js.map → button-CrEMzWKw.js.map} +1 -1
- package/dist/cjs/Accordion-D75SDnkY.js +51 -0
- package/dist/cjs/Accordion-D75SDnkY.js.map +1 -0
- package/dist/cjs/Alert-_TPuVqa5.js +152 -0
- package/dist/cjs/Alert-_TPuVqa5.js.map +1 -0
- package/dist/cjs/Avatar-nG7vhAUS.js +73 -0
- package/dist/cjs/Avatar-nG7vhAUS.js.map +1 -0
- package/dist/cjs/Badge-Dz_Kb49L.js +133 -0
- package/dist/cjs/Badge-Dz_Kb49L.js.map +1 -0
- package/dist/cjs/Button-BlNtYr1w.js +195 -0
- package/dist/cjs/Button-BlNtYr1w.js.map +1 -0
- package/dist/cjs/{Calendar-jVF8fRaS.js → Calendar-02KiUZTT.js} +181 -72
- package/dist/cjs/Calendar-02KiUZTT.js.map +1 -0
- package/dist/cjs/{Callout-CVNpjTde.js → Callout-_XBx1JHL.js} +36 -22
- package/dist/cjs/Callout-_XBx1JHL.js.map +1 -0
- package/dist/cjs/Checkbox-CxqWOvFN.js +77 -0
- package/dist/cjs/Checkbox-CxqWOvFN.js.map +1 -0
- package/dist/cjs/ColorPicker-Co1Gffsu.js +439 -0
- package/dist/cjs/ColorPicker-Co1Gffsu.js.map +1 -0
- package/dist/cjs/{DataTable-BynOh4Bs.js → DataTable-DRGW8JVP.js} +1024 -641
- package/dist/cjs/DataTable-DRGW8JVP.js.map +1 -0
- package/dist/cjs/{DatePicker-C0BwxIh8.js → DatePicker-DRQubO2h.js} +439 -264
- package/dist/cjs/DatePicker-DRQubO2h.js.map +1 -0
- package/dist/cjs/Dialog-CBSuKeu_.js +149 -0
- package/dist/cjs/Dialog-CBSuKeu_.js.map +1 -0
- package/dist/cjs/{DirectionProvider-Bec-6U8p.js → DirectionProvider-BTtE4FcN.js} +2 -2
- package/dist/cjs/DirectionProvider-BTtE4FcN.js.map +1 -0
- package/dist/cjs/Empty-DqmmPlPJ.js +77 -0
- package/dist/cjs/Empty-DqmmPlPJ.js.map +1 -0
- package/dist/cjs/Input-CpuJXazH.js +224 -0
- package/dist/cjs/Input-CpuJXazH.js.map +1 -0
- package/dist/cjs/Kbd-D2nELu5m.js +43 -0
- package/dist/cjs/Kbd-D2nELu5m.js.map +1 -0
- package/dist/cjs/Label-DFkiC2Jk.js +89 -0
- package/dist/cjs/Label-DFkiC2Jk.js.map +1 -0
- package/dist/cjs/MultiEmailInput-CPXODFvs.js +264 -0
- package/dist/cjs/MultiEmailInput-CPXODFvs.js.map +1 -0
- package/dist/cjs/Pagination-DeWfLAq5.js +105 -0
- package/dist/cjs/Pagination-DeWfLAq5.js.map +1 -0
- package/dist/cjs/Popover-Br9hkU5i.js +137 -0
- package/dist/cjs/Popover-Br9hkU5i.js.map +1 -0
- package/dist/cjs/Progress-yBpMAzIU.js +20 -0
- package/dist/cjs/Progress-yBpMAzIU.js.map +1 -0
- package/dist/cjs/RadioGroup-CkKlLHnR.js +108 -0
- package/dist/cjs/RadioGroup-CkKlLHnR.js.map +1 -0
- package/dist/cjs/Select-DbfPhEu0.js +1065 -0
- package/dist/cjs/Select-DbfPhEu0.js.map +1 -0
- package/dist/cjs/SelectFieldWrapper-DKkizQNM.js +76 -0
- package/dist/cjs/SelectFieldWrapper-DKkizQNM.js.map +1 -0
- package/dist/cjs/Sheet-mJ7pJHrn.js +160 -0
- package/dist/cjs/Sheet-mJ7pJHrn.js.map +1 -0
- package/dist/cjs/Slider-ICf2eQ6p.js +67 -0
- package/dist/cjs/Slider-ICf2eQ6p.js.map +1 -0
- package/dist/cjs/Spinner-DzNBz8al.js +28 -0
- package/dist/cjs/Spinner-DzNBz8al.js.map +1 -0
- package/dist/cjs/Stepper-DZb25oBH.js +115 -0
- package/dist/cjs/Stepper-DZb25oBH.js.map +1 -0
- package/dist/cjs/Switch-BTkncHw2.js +84 -0
- package/dist/cjs/Switch-BTkncHw2.js.map +1 -0
- package/dist/cjs/Tabs-YPRmLtUM.js +66 -0
- package/dist/cjs/Tabs-YPRmLtUM.js.map +1 -0
- package/dist/cjs/Textarea-yWv-66yX.js +183 -0
- package/dist/cjs/Textarea-yWv-66yX.js.map +1 -0
- package/dist/cjs/TimePicker-BG_vYH3r.js +266 -0
- package/dist/cjs/TimePicker-BG_vYH3r.js.map +1 -0
- package/dist/cjs/TimePickerPanel-6xA-hjhm.js +233 -0
- package/dist/cjs/TimePickerPanel-6xA-hjhm.js.map +1 -0
- package/dist/cjs/Toastr-DYWd66L7.js +97 -0
- package/dist/cjs/Toastr-DYWd66L7.js.map +1 -0
- package/dist/cjs/Tooltip-Dph_R3Ct.js +94 -0
- package/dist/cjs/Tooltip-Dph_R3Ct.js.map +1 -0
- package/dist/cjs/{TranslationProvider-DBZHXmzX.js → TranslationProvider-Dh5_Fzzk.js} +20 -17
- package/dist/cjs/TranslationProvider-Dh5_Fzzk.js.map +1 -0
- package/dist/cjs/{Tree-BPd0DuLh.js → Tree-DAyVPLnJ.js} +515 -322
- package/dist/cjs/Tree-DAyVPLnJ.js.map +1 -0
- package/dist/cjs/TreeSelect-Cmm5yYq3.js +337 -0
- package/dist/cjs/TreeSelect-Cmm5yYq3.js.map +1 -0
- package/dist/cjs/Typography-UyaYuppP.js +100 -0
- package/dist/cjs/Typography-UyaYuppP.js.map +1 -0
- package/dist/cjs/button-CMl9rLXi.js +90 -0
- package/dist/cjs/button-CMl9rLXi.js.map +1 -0
- package/dist/cjs/components/Accordion.js +2 -2
- package/dist/cjs/components/Alert.js +10 -10
- package/dist/cjs/components/Avatar.js +3 -3
- package/dist/cjs/components/Badge.js +4 -4
- package/dist/cjs/components/Button.js +6 -6
- package/dist/cjs/components/Callout.js +4 -4
- package/dist/cjs/components/Checkbox.js +5 -5
- package/dist/cjs/components/ColorPicker.js +5 -5
- package/dist/cjs/components/DataTable.js +15 -15
- package/dist/cjs/components/DatePicker.js +9 -9
- package/dist/cjs/components/Dialog.js +7 -7
- package/dist/cjs/components/DirectionProvider.js +1 -1
- package/dist/cjs/components/DropdownMenu.js +320 -92
- package/dist/cjs/components/DropdownMenu.js.map +1 -1
- package/dist/cjs/components/Empty.js +16 -16
- package/dist/cjs/components/Input.js +9 -9
- package/dist/cjs/components/Kbd.js +3 -3
- package/dist/cjs/components/Label.js +12 -12
- package/dist/cjs/components/MultiEmailInput.js +5 -5
- package/dist/cjs/components/Pagination.js +4 -4
- package/dist/cjs/components/Popover.js +6 -6
- package/dist/cjs/components/Progress.js +2 -2
- package/dist/cjs/components/RadioGroup.js +5 -5
- package/dist/cjs/components/Select.js +10 -10
- package/dist/cjs/components/Sheet.js +7 -7
- package/dist/cjs/components/Slider.js +5 -5
- package/dist/cjs/components/Spinner.js +2 -2
- package/dist/cjs/components/Stepper.js +2 -2
- package/dist/cjs/components/Switch.js +3 -3
- package/dist/cjs/components/Tabs.js +4 -4
- package/dist/cjs/components/Textarea.js +6 -6
- package/dist/cjs/components/TimePicker.js +8 -8
- package/dist/cjs/components/Toastr.js +1 -1
- package/dist/cjs/components/Tooltip.js +3 -3
- package/dist/cjs/components/TranslationProvider.js +1 -1
- package/dist/cjs/components/Tree.js +3 -3
- package/dist/cjs/components/TreeSelect.js +8 -8
- package/dist/cjs/components/Typography.js +3 -3
- package/dist/cjs/components/index.js +80 -80
- package/dist/cjs/dialog-Cs1qH5xA.js +161 -0
- package/dist/cjs/dialog-Cs1qH5xA.js.map +1 -0
- package/dist/cjs/formik/ActionBlock.js +56 -12
- package/dist/cjs/formik/ActionBlock.js.map +1 -1
- package/dist/cjs/formik/BlockNavigation.js +150 -79
- package/dist/cjs/formik/BlockNavigation.js.map +1 -1
- package/dist/cjs/formik/Button.js +20 -9
- package/dist/cjs/formik/Button.js.map +1 -1
- package/dist/cjs/formik/Checkbox.js +33 -15
- package/dist/cjs/formik/Checkbox.js.map +1 -1
- package/dist/cjs/formik/Form.js +105 -74
- package/dist/cjs/formik/Form.js.map +1 -1
- package/dist/cjs/formik/Input.js +32 -22
- package/dist/cjs/formik/Input.js.map +1 -1
- package/dist/cjs/formik/MultiEmailInput.js +23 -13
- package/dist/cjs/formik/MultiEmailInput.js.map +1 -1
- package/dist/cjs/formik/RadioGroup.js +33 -15
- package/dist/cjs/formik/RadioGroup.js.map +1 -1
- package/dist/cjs/formik/Select.js +29 -28
- package/dist/cjs/formik/Select.js.map +1 -1
- package/dist/cjs/formik/Slider.js +31 -13
- package/dist/cjs/formik/Slider.js.map +1 -1
- package/dist/cjs/formik/Switch.js +28 -13
- package/dist/cjs/formik/Switch.js.map +1 -1
- package/dist/cjs/formik/Textarea.js +29 -19
- package/dist/cjs/formik/Textarea.js.map +1 -1
- package/dist/cjs/formik/TreeSelect.js +26 -15
- package/dist/cjs/formik/TreeSelect.js.map +1 -1
- package/dist/cjs/formik/index.js +26 -26
- package/dist/cjs/{index-BLGrl3PF.js → index-BTsnrFFc.js} +2 -2
- package/dist/cjs/{index-BLGrl3PF.js.map → index-BTsnrFFc.js.map} +1 -1
- package/dist/cjs/{index-ChSOMM8b.js → index-CS_WSHYi.js} +54 -54
- package/dist/cjs/index-CS_WSHYi.js.map +1 -0
- package/dist/cjs/{index-D1SiRLYs.js → index-DbA93GP3.js} +2 -2
- package/dist/cjs/{index-D1SiRLYs.js.map → index-DbA93GP3.js.map} +1 -1
- package/dist/cjs/{index-BZhTddX0.js → index-vioSzJOw.js} +2 -2
- package/dist/cjs/{index-BZhTddX0.js.map → index-vioSzJOw.js.map} +1 -1
- package/dist/cjs/index.js +306 -300
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/input-BlyvDsZ5.js +22 -0
- package/dist/cjs/input-BlyvDsZ5.js.map +1 -0
- package/dist/cjs/input-group-8TZFHzVl.js +147 -0
- package/dist/cjs/input-group-8TZFHzVl.js.map +1 -0
- package/dist/cjs/{label-Bdc9ytTI.js → label-DJ7KkKYy.js} +17 -4
- package/dist/cjs/label-DJ7KkKYy.js.map +1 -0
- package/dist/cjs/primitives/Accordion.js +76 -13
- package/dist/cjs/primitives/Accordion.js.map +1 -1
- package/dist/cjs/primitives/Alert.js +65 -20
- package/dist/cjs/primitives/Alert.js.map +1 -1
- package/dist/cjs/primitives/AlertDialog.js +176 -41
- package/dist/cjs/primitives/AlertDialog.js.map +1 -1
- package/dist/cjs/primitives/AspectRatio.js +5 -3
- package/dist/cjs/primitives/AspectRatio.js.map +1 -1
- package/dist/cjs/primitives/Avatar.js +94 -17
- package/dist/cjs/primitives/Avatar.js.map +1 -1
- package/dist/cjs/primitives/Badge.js +99 -69
- package/dist/cjs/primitives/Badge.js.map +1 -1
- package/dist/cjs/primitives/Breadcrumb.js +103 -21
- package/dist/cjs/primitives/Breadcrumb.js.map +1 -1
- package/dist/cjs/primitives/Button.js +4 -4
- package/dist/cjs/primitives/Button.js.map +1 -1
- package/dist/cjs/primitives/ButtonGroup.js +65 -21
- package/dist/cjs/primitives/ButtonGroup.js.map +1 -1
- package/dist/cjs/primitives/Calendar.js +4 -4
- package/dist/cjs/primitives/Card.js +88 -16
- package/dist/cjs/primitives/Card.js.map +1 -1
- package/dist/cjs/primitives/Carousel.js +187 -85
- package/dist/cjs/primitives/Carousel.js.map +1 -1
- package/dist/cjs/primitives/Chart.js +427 -189
- package/dist/cjs/primitives/Chart.js.map +1 -1
- package/dist/cjs/primitives/Checkbox.js +28 -4
- package/dist/cjs/primitives/Checkbox.js.map +1 -1
- package/dist/cjs/primitives/Collapsible.js +27 -9
- package/dist/cjs/primitives/Collapsible.js.map +1 -1
- package/dist/cjs/primitives/Combobox.js +279 -51
- package/dist/cjs/primitives/Combobox.js.map +1 -1
- package/dist/cjs/primitives/Command.js +168 -39
- package/dist/cjs/primitives/Command.js.map +1 -1
- package/dist/cjs/primitives/ContextMenu.js +217 -48
- package/dist/cjs/primitives/ContextMenu.js.map +1 -1
- package/dist/cjs/primitives/Dialog.js +62 -20
- package/dist/cjs/primitives/Dialog.js.map +1 -1
- package/dist/cjs/primitives/Drawer.js +116 -31
- package/dist/cjs/primitives/Drawer.js.map +1 -1
- package/dist/cjs/primitives/DropdownMenu.js +233 -48
- package/dist/cjs/primitives/DropdownMenu.js.map +1 -1
- package/dist/cjs/primitives/Empty.js +85 -23
- package/dist/cjs/primitives/Empty.js.map +1 -1
- package/dist/cjs/primitives/Field.js +194 -55
- package/dist/cjs/primitives/Field.js.map +1 -1
- package/dist/cjs/primitives/HoverCard.js +31 -10
- package/dist/cjs/primitives/HoverCard.js.map +1 -1
- package/dist/cjs/primitives/Input.js +3 -3
- package/dist/cjs/primitives/Input.js.map +1 -1
- package/dist/cjs/primitives/InputGroup.js +12 -12
- package/dist/cjs/primitives/InputGroup.js.map +1 -1
- package/dist/cjs/primitives/InputOTP.js +70 -13
- package/dist/cjs/primitives/InputOTP.js.map +1 -1
- package/dist/cjs/primitives/Item.js +163 -51
- package/dist/cjs/primitives/Item.js.map +1 -1
- package/dist/cjs/primitives/Kbd.js +22 -5
- package/dist/cjs/primitives/Kbd.js.map +1 -1
- package/dist/cjs/primitives/Label.js +3 -3
- package/dist/cjs/primitives/Label.js.map +1 -1
- package/dist/cjs/primitives/Menubar.js +236 -51
- package/dist/cjs/primitives/Menubar.js.map +1 -1
- package/dist/cjs/primitives/NativeSelect.js +45 -9
- package/dist/cjs/primitives/NativeSelect.js.map +1 -1
- package/dist/cjs/primitives/NavigationMenu.js +149 -27
- package/dist/cjs/primitives/NavigationMenu.js.map +1 -1
- package/dist/cjs/primitives/Pagination.js +121 -27
- package/dist/cjs/primitives/Pagination.js.map +1 -1
- package/dist/cjs/primitives/Popover.js +68 -21
- package/dist/cjs/primitives/Popover.js.map +1 -1
- package/dist/cjs/primitives/Progress.js +26 -4
- package/dist/cjs/primitives/Progress.js.map +1 -1
- package/dist/cjs/primitives/RadioGroup.js +36 -9
- package/dist/cjs/primitives/RadioGroup.js.map +1 -1
- package/dist/cjs/primitives/Resizable.js +37 -9
- package/dist/cjs/primitives/Resizable.js.map +1 -1
- package/dist/cjs/primitives/ScrollArea.js +53 -7
- package/dist/cjs/primitives/ScrollArea.js.map +1 -1
- package/dist/cjs/primitives/Select.js +169 -32
- package/dist/cjs/primitives/Select.js.map +1 -1
- package/dist/cjs/primitives/Separator.js +3 -3
- package/dist/cjs/primitives/Separator.js.map +1 -1
- package/dist/cjs/primitives/Sheet.js +79 -18
- package/dist/cjs/primitives/Sheet.js.map +1 -1
- package/dist/cjs/primitives/Sidebar.js +575 -181
- package/dist/cjs/primitives/Sidebar.js.map +1 -1
- package/dist/cjs/primitives/Skeleton.js +3 -3
- package/dist/cjs/primitives/Skeleton.js.map +1 -1
- package/dist/cjs/primitives/Slider.js +53 -9
- package/dist/cjs/primitives/Slider.js.map +1 -1
- package/dist/cjs/primitives/Sonner.js +42 -26
- package/dist/cjs/primitives/Sonner.js.map +1 -1
- package/dist/cjs/primitives/Spinner.js +4 -4
- package/dist/cjs/primitives/Spinner.js.map +1 -1
- package/dist/cjs/primitives/Switch.js +32 -2
- package/dist/cjs/primitives/Switch.js.map +1 -1
- package/dist/cjs/primitives/Table.js +109 -17
- package/dist/cjs/primitives/Table.js.map +1 -1
- package/dist/cjs/primitives/Tabs.js +78 -22
- package/dist/cjs/primitives/Tabs.js.map +1 -1
- package/dist/cjs/primitives/Textarea.js +3 -3
- package/dist/cjs/primitives/Textarea.js.map +1 -1
- package/dist/cjs/primitives/Toggle.js +4 -4
- package/dist/cjs/primitives/Toggle.js.map +1 -1
- package/dist/cjs/primitives/ToggleGroup.js +68 -17
- package/dist/cjs/primitives/ToggleGroup.js.map +1 -1
- package/dist/cjs/primitives/Tooltip.js +6 -6
- package/dist/cjs/primitives/Tooltip.js.map +1 -1
- package/dist/cjs/primitives/index.js +18 -18
- package/dist/cjs/renderIcon-BRrpZu9a.js +32 -0
- package/dist/cjs/renderIcon-BRrpZu9a.js.map +1 -0
- package/dist/cjs/search-DVHH0ihN.js +33 -0
- package/dist/cjs/search-DVHH0ihN.js.map +1 -0
- package/dist/cjs/{separator-CPy2gyg1.js → separator-DSL-aG1J.js} +21 -4
- package/dist/cjs/separator-DSL-aG1J.js.map +1 -0
- package/dist/cjs/sheet-G6ismmAK.js +147 -0
- package/dist/cjs/sheet-G6ismmAK.js.map +1 -0
- package/dist/cjs/skeleton-CL0H_mC4.js +18 -0
- package/dist/cjs/skeleton-CL0H_mC4.js.map +1 -0
- package/dist/cjs/textarea-Br-J3v7z.js +21 -0
- package/dist/cjs/textarea-Br-J3v7z.js.map +1 -0
- package/dist/cjs/{toggle-CaqzT8dI.js → toggle-Cq38rmIj.js} +34 -19
- package/dist/cjs/toggle-Cq38rmIj.js.map +1 -0
- package/dist/cjs/{tooltip-C-568jEL.js → tooltip-BYCcUMZn.js} +44 -10
- package/dist/cjs/tooltip-BYCcUMZn.js.map +1 -0
- package/dist/cjs/use-mobile-Be9CI6km.js +41 -0
- package/dist/cjs/use-mobile-Be9CI6km.js.map +1 -0
- package/dist/cjs/{utils-CTr7wn5d.js → utils-BhM0B89p.js} +2 -2
- package/dist/cjs/utils-BhM0B89p.js.map +1 -0
- package/dist/components/Accordion.js +2 -2
- package/dist/components/Alert.js +10 -10
- package/dist/components/Avatar.js +3 -3
- package/dist/components/Badge.js +4 -4
- package/dist/components/Button/Button.d.ts +1 -1
- package/dist/components/Button.js +6 -6
- package/dist/components/Callout.js +4 -4
- package/dist/components/Checkbox.js +5 -5
- package/dist/components/ColorPicker.js +5 -5
- package/dist/components/DataTable.js +15 -15
- package/dist/components/DatePicker.js +9 -9
- package/dist/components/Dialog.js +7 -7
- package/dist/components/DirectionProvider.js +1 -1
- package/dist/components/DropdownMenu.js +320 -92
- package/dist/components/DropdownMenu.js.map +1 -1
- package/dist/components/Empty.js +16 -16
- package/dist/components/Input.js +9 -9
- package/dist/components/Kbd.js +3 -3
- package/dist/components/Label.js +12 -12
- package/dist/components/MultiEmailInput.js +5 -5
- package/dist/components/Pagination.js +4 -4
- package/dist/components/Popover.js +6 -6
- package/dist/components/Progress.js +2 -2
- package/dist/components/RadioGroup.js +5 -5
- package/dist/components/Select.js +10 -10
- package/dist/components/Sheet.js +7 -7
- package/dist/components/Slider.js +5 -5
- package/dist/components/Spinner.js +2 -2
- package/dist/components/Stepper.js +2 -2
- package/dist/components/Switch.js +3 -3
- package/dist/components/Tabs.js +4 -4
- package/dist/components/Textarea.js +6 -6
- package/dist/components/TimePicker.js +8 -8
- package/dist/components/Toastr.js +1 -1
- package/dist/components/Tooltip.js +3 -3
- package/dist/components/TranslationProvider.js +1 -1
- package/dist/components/Tree.js +3 -3
- package/dist/components/TreeSelect/hooks/useTreeSelectState.d.ts +1 -1
- package/dist/components/TreeSelect/hooks/useTreeSelectValue.d.ts +1 -2
- package/dist/components/TreeSelect/utils/resolveFieldNames.d.ts +4 -2
- package/dist/components/TreeSelect.js +8 -8
- package/dist/components/Typography.js +3 -3
- package/dist/components/index.js +76 -76
- package/dist/dialog--Qm4MZDo.js +150 -0
- package/dist/{dialog-DK71SlsS.js.map → dialog--Qm4MZDo.js.map} +1 -1
- package/dist/formik/ActionBlock.js +56 -12
- package/dist/formik/ActionBlock.js.map +1 -1
- package/dist/formik/BlockNavigation.js +150 -79
- package/dist/formik/BlockNavigation.js.map +1 -1
- package/dist/formik/Button.js +20 -9
- package/dist/formik/Button.js.map +1 -1
- package/dist/formik/Checkbox.js +33 -15
- package/dist/formik/Checkbox.js.map +1 -1
- package/dist/formik/Form.js +105 -74
- package/dist/formik/Form.js.map +1 -1
- package/dist/formik/Input.js +32 -22
- package/dist/formik/Input.js.map +1 -1
- package/dist/formik/MultiEmailInput.js +23 -13
- package/dist/formik/MultiEmailInput.js.map +1 -1
- package/dist/formik/RadioGroup.d.ts +1 -1
- package/dist/formik/RadioGroup.js +33 -15
- package/dist/formik/RadioGroup.js.map +1 -1
- package/dist/formik/Select.js +29 -28
- package/dist/formik/Select.js.map +1 -1
- package/dist/formik/Slider.d.ts +1 -1
- package/dist/formik/Slider.js +31 -13
- package/dist/formik/Slider.js.map +1 -1
- package/dist/formik/Switch.js +28 -13
- package/dist/formik/Switch.js.map +1 -1
- package/dist/formik/Textarea.js +29 -19
- package/dist/formik/Textarea.js.map +1 -1
- package/dist/formik/TreeSelect.js +26 -15
- package/dist/formik/TreeSelect.js.map +1 -1
- package/dist/formik/index.js +26 -26
- package/dist/{index-9HvIbmnI.js → index-B7SdntLB.js} +2 -2
- package/dist/{index-9HvIbmnI.js.map → index-B7SdntLB.js.map} +1 -1
- package/dist/{index-D7Zy7P05.js → index-Bo3AAQJp.js} +2 -2
- package/dist/{index-D7Zy7P05.js.map → index-Bo3AAQJp.js.map} +1 -1
- package/dist/{index-OI_tWuLx.js → index-DnD7-4_R.js} +2 -2
- package/dist/{index-OI_tWuLx.js.map → index-DnD7-4_R.js.map} +1 -1
- package/dist/{index-B4_fVWDx.js → index-Jr4soqx3.js} +54 -54
- package/dist/index-Jr4soqx3.js.map +1 -0
- package/dist/index.js +286 -280
- package/dist/index.js.map +1 -1
- package/dist/input-1J5oQa1u.js +20 -0
- package/dist/{input-GLCCE2kT.js.map → input-1J5oQa1u.js.map} +1 -1
- package/dist/input-group-BKkj65Uq.js +140 -0
- package/dist/{input-group-C_qKMibX.js.map → input-group-BKkj65Uq.js.map} +1 -1
- package/dist/{label-B4qDF3W1.js → label-BgLSVt4u.js} +17 -4
- package/dist/{label-B4qDF3W1.js.map → label-BgLSVt4u.js.map} +1 -1
- package/dist/primitives/Accordion.js +76 -13
- package/dist/primitives/Accordion.js.map +1 -1
- package/dist/primitives/Alert.js +65 -20
- package/dist/primitives/Alert.js.map +1 -1
- package/dist/primitives/AlertDialog.js +176 -41
- package/dist/primitives/AlertDialog.js.map +1 -1
- package/dist/primitives/AspectRatio.js +5 -3
- package/dist/primitives/AspectRatio.js.map +1 -1
- package/dist/primitives/Avatar.js +94 -17
- package/dist/primitives/Avatar.js.map +1 -1
- package/dist/primitives/Badge.js +99 -69
- package/dist/primitives/Badge.js.map +1 -1
- package/dist/primitives/Breadcrumb.js +103 -21
- package/dist/primitives/Breadcrumb.js.map +1 -1
- package/dist/primitives/Button.js +5 -5
- package/dist/primitives/Button.js.map +1 -1
- package/dist/primitives/ButtonGroup.js +65 -21
- package/dist/primitives/ButtonGroup.js.map +1 -1
- package/dist/primitives/Calendar.js +4 -4
- package/dist/primitives/Card.js +88 -16
- package/dist/primitives/Card.js.map +1 -1
- package/dist/primitives/Carousel.js +187 -85
- package/dist/primitives/Carousel.js.map +1 -1
- package/dist/primitives/Chart.js +427 -189
- package/dist/primitives/Chart.js.map +1 -1
- package/dist/primitives/Checkbox.js +28 -4
- package/dist/primitives/Checkbox.js.map +1 -1
- package/dist/primitives/Collapsible.js +27 -9
- package/dist/primitives/Collapsible.js.map +1 -1
- package/dist/primitives/Combobox.js +279 -51
- package/dist/primitives/Combobox.js.map +1 -1
- package/dist/primitives/Command.js +168 -39
- package/dist/primitives/Command.js.map +1 -1
- package/dist/primitives/ContextMenu.js +217 -48
- package/dist/primitives/ContextMenu.js.map +1 -1
- package/dist/primitives/Dialog.js +62 -20
- package/dist/primitives/Dialog.js.map +1 -1
- package/dist/primitives/Drawer.js +116 -31
- package/dist/primitives/Drawer.js.map +1 -1
- package/dist/primitives/DropdownMenu.js +233 -48
- package/dist/primitives/DropdownMenu.js.map +1 -1
- package/dist/primitives/Empty.js +85 -23
- package/dist/primitives/Empty.js.map +1 -1
- package/dist/primitives/Field.js +194 -55
- package/dist/primitives/Field.js.map +1 -1
- package/dist/primitives/HoverCard.js +31 -10
- package/dist/primitives/HoverCard.js.map +1 -1
- package/dist/primitives/Input.js +3 -3
- package/dist/primitives/Input.js.map +1 -1
- package/dist/primitives/InputGroup.js +12 -12
- package/dist/primitives/InputGroup.js.map +1 -1
- package/dist/primitives/InputOTP.js +70 -13
- package/dist/primitives/InputOTP.js.map +1 -1
- package/dist/primitives/Item.js +163 -51
- package/dist/primitives/Item.js.map +1 -1
- package/dist/primitives/Kbd.js +22 -5
- package/dist/primitives/Kbd.js.map +1 -1
- package/dist/primitives/Label.js +3 -3
- package/dist/primitives/Label.js.map +1 -1
- package/dist/primitives/Menubar.js +236 -51
- package/dist/primitives/Menubar.js.map +1 -1
- package/dist/primitives/NativeSelect.js +45 -9
- package/dist/primitives/NativeSelect.js.map +1 -1
- package/dist/primitives/NavigationMenu.js +149 -27
- package/dist/primitives/NavigationMenu.js.map +1 -1
- package/dist/primitives/Pagination.js +121 -27
- package/dist/primitives/Pagination.js.map +1 -1
- package/dist/primitives/Popover.js +68 -21
- package/dist/primitives/Popover.js.map +1 -1
- package/dist/primitives/Progress.js +26 -4
- package/dist/primitives/Progress.js.map +1 -1
- package/dist/primitives/RadioGroup.js +36 -9
- package/dist/primitives/RadioGroup.js.map +1 -1
- package/dist/primitives/Resizable.js +38 -10
- package/dist/primitives/Resizable.js.map +1 -1
- package/dist/primitives/ScrollArea.js +53 -7
- package/dist/primitives/ScrollArea.js.map +1 -1
- package/dist/primitives/Select.js +169 -32
- package/dist/primitives/Select.js.map +1 -1
- package/dist/primitives/Separator.js +3 -3
- package/dist/primitives/Separator.js.map +1 -1
- package/dist/primitives/Sheet.js +79 -18
- package/dist/primitives/Sheet.js.map +1 -1
- package/dist/primitives/Sidebar.js +575 -181
- package/dist/primitives/Sidebar.js.map +1 -1
- package/dist/primitives/Skeleton.js +3 -3
- package/dist/primitives/Skeleton.js.map +1 -1
- package/dist/primitives/Slider.js +53 -9
- package/dist/primitives/Slider.js.map +1 -1
- package/dist/primitives/Sonner.js +42 -26
- package/dist/primitives/Sonner.js.map +1 -1
- package/dist/primitives/Spinner.js +4 -4
- package/dist/primitives/Spinner.js.map +1 -1
- package/dist/primitives/Switch.js +32 -2
- package/dist/primitives/Switch.js.map +1 -1
- package/dist/primitives/Table.js +109 -17
- package/dist/primitives/Table.js.map +1 -1
- package/dist/primitives/Tabs.js +78 -22
- package/dist/primitives/Tabs.js.map +1 -1
- package/dist/primitives/Textarea.js +3 -3
- package/dist/primitives/Textarea.js.map +1 -1
- package/dist/primitives/Toggle.js +5 -5
- package/dist/primitives/Toggle.js.map +1 -1
- package/dist/primitives/ToggleGroup.js +68 -17
- package/dist/primitives/ToggleGroup.js.map +1 -1
- package/dist/primitives/Tooltip.js +6 -6
- package/dist/primitives/Tooltip.js.map +1 -1
- package/dist/primitives/index.js +18 -18
- package/dist/renderIcon-C6twJSqH.js +26 -0
- package/dist/{renderIcon-tlvMyboj.js.map → renderIcon-C6twJSqH.js.map} +1 -1
- package/dist/search-B5K8FsJs.js +29 -0
- package/dist/search-B5K8FsJs.js.map +1 -0
- package/dist/{separator-BbhgePmX.js → separator-ByRsc-y-.js} +21 -4
- package/dist/{separator-BbhgePmX.js.map → separator-ByRsc-y-.js.map} +1 -1
- package/dist/sheet-BIqq9HBB.js +138 -0
- package/dist/{sheet-DVTG6X82.js.map → sheet-BIqq9HBB.js.map} +1 -1
- package/dist/skeleton-D9P1ZyiS.js +16 -0
- package/dist/skeleton-D9P1ZyiS.js.map +1 -0
- package/dist/textarea-B0vzA497.js +19 -0
- package/dist/{textarea-BSZwxzjQ.js.map → textarea-B0vzA497.js.map} +1 -1
- package/dist/toggle-bESUdU4A.js +75 -0
- package/dist/{toggle-2k9K8a5c.js.map → toggle-bESUdU4A.js.map} +1 -1
- package/dist/{tooltip-XkHLgxlU.js → tooltip-ChQ9xD1j.js} +44 -10
- package/dist/{tooltip-XkHLgxlU.js.map → tooltip-ChQ9xD1j.js.map} +1 -1
- package/dist/use-mobile-QbHL72cX.js +19 -0
- package/dist/use-mobile-QbHL72cX.js.map +1 -0
- package/dist/{utils-DdHUxIdC.js → utils-BJnb9o5c.js} +2 -2
- package/dist/{utils-DdHUxIdC.js.map → utils-BJnb9o5c.js.map} +1 -1
- package/package.json +4 -2
- package/dist/Accordion-Ch9S_qd3.js +0 -22
- package/dist/Alert-CayTuRLW.js +0 -65
- package/dist/Avatar-D5YGlXVF.js +0 -50
- package/dist/Badge-Bj3ajrWB.js +0 -59
- package/dist/Button-DSvnInaL.js +0 -93
- package/dist/Button-DSvnInaL.js.map +0 -1
- package/dist/Checkbox-zCxgcZiC.js +0 -24
- package/dist/ColorPicker-DtOvy0Gy.js +0 -278
- package/dist/ColorPicker-DtOvy0Gy.js.map +0 -1
- package/dist/DataTable-BpMBsz5i.js.map +0 -1
- package/dist/Dialog-BURSzxaP.js +0 -61
- package/dist/Empty-zyL2ZsHX.js +0 -27
- package/dist/Input-C1gcv9o2.js +0 -147
- package/dist/Kbd-EqbC0bua.js +0 -36
- package/dist/Label-DAFESZOG.js +0 -58
- package/dist/MultiEmailInput-SCTYovtX.js +0 -139
- package/dist/MultiEmailInput-SCTYovtX.js.map +0 -1
- package/dist/Pagination-DSc9yXPy.js +0 -61
- package/dist/Popover-Dmq-xK_a.js +0 -84
- package/dist/Progress-B9NlUm6e.js +0 -13
- package/dist/RadioGroup-BNeYQAoT.js +0 -34
- package/dist/Select-BgSz0fve.js +0 -563
- package/dist/Select-BgSz0fve.js.map +0 -1
- package/dist/SelectFieldWrapper-BJzq9aCY.js +0 -23
- package/dist/Sheet-B99vGwLH.js +0 -63
- package/dist/Slider-BCQXhs0Q.js +0 -25
- package/dist/Spinner-C8HSac-2.js +0 -17
- package/dist/Stepper-BoGkmkY0.js +0 -29
- package/dist/Switch-B83TGxJ_.js +0 -20
- package/dist/Tabs-DWfKnl3S.js +0 -38
- package/dist/Textarea-C0z50h0N.js +0 -73
- package/dist/TimePicker-2vhf5yYK.js +0 -146
- package/dist/TimePicker-2vhf5yYK.js.map +0 -1
- package/dist/TimePickerPanel-CiF0RExY.js +0 -126
- package/dist/Toastr-DYqpSaMd.js +0 -115
- package/dist/Tooltip-3ZzQyaDV.js +0 -59
- package/dist/Tree-C7r10UY5.js.map +0 -1
- package/dist/TreeSelect-BxsQrdjf.js +0 -168
- package/dist/TreeSelect-BxsQrdjf.js.map +0 -1
- package/dist/Typography-ClPJbLjP.js +0 -76
- package/dist/button-D6uWDFCs.js +0 -48
- package/dist/cjs/Accordion-BoTckTBI.js +0 -28
- package/dist/cjs/Accordion-BoTckTBI.js.map +0 -1
- package/dist/cjs/Alert-DnIUdIE3.js +0 -67
- package/dist/cjs/Alert-DnIUdIE3.js.map +0 -1
- package/dist/cjs/Avatar-CNao5gvP.js +0 -52
- package/dist/cjs/Avatar-CNao5gvP.js.map +0 -1
- package/dist/cjs/Badge-_-PRf6aq.js +0 -61
- package/dist/cjs/Badge-_-PRf6aq.js.map +0 -1
- package/dist/cjs/Button-BniJ4TT_.js +0 -95
- package/dist/cjs/Button-BniJ4TT_.js.map +0 -1
- package/dist/cjs/Calendar-jVF8fRaS.js.map +0 -1
- package/dist/cjs/Callout-CVNpjTde.js.map +0 -1
- package/dist/cjs/Checkbox-DOlS2oCD.js +0 -26
- package/dist/cjs/Checkbox-DOlS2oCD.js.map +0 -1
- package/dist/cjs/ColorPicker-Uxgn8U0h.js +0 -280
- package/dist/cjs/ColorPicker-Uxgn8U0h.js.map +0 -1
- package/dist/cjs/DataTable-BynOh4Bs.js.map +0 -1
- package/dist/cjs/DatePicker-C0BwxIh8.js.map +0 -1
- package/dist/cjs/Dialog-CtI_yWsJ.js +0 -63
- package/dist/cjs/Dialog-CtI_yWsJ.js.map +0 -1
- package/dist/cjs/DirectionProvider-Bec-6U8p.js.map +0 -1
- package/dist/cjs/Empty-CfPLWsLK.js +0 -29
- package/dist/cjs/Empty-CfPLWsLK.js.map +0 -1
- package/dist/cjs/Input-pkugjUb0.js +0 -149
- package/dist/cjs/Input-pkugjUb0.js.map +0 -1
- package/dist/cjs/Kbd-DHirsI--.js +0 -38
- package/dist/cjs/Kbd-DHirsI--.js.map +0 -1
- package/dist/cjs/Label-B7FbeB5i.js +0 -60
- package/dist/cjs/Label-B7FbeB5i.js.map +0 -1
- package/dist/cjs/MultiEmailInput-l0_YVjbp.js +0 -141
- package/dist/cjs/MultiEmailInput-l0_YVjbp.js.map +0 -1
- package/dist/cjs/Pagination-Byzt9Kmj.js +0 -63
- package/dist/cjs/Pagination-Byzt9Kmj.js.map +0 -1
- package/dist/cjs/Popover-DRT0YYzK.js +0 -90
- package/dist/cjs/Popover-DRT0YYzK.js.map +0 -1
- package/dist/cjs/Progress-DoCxZ_ZH.js +0 -15
- package/dist/cjs/Progress-DoCxZ_ZH.js.map +0 -1
- package/dist/cjs/RadioGroup-1RAoe38m.js +0 -36
- package/dist/cjs/RadioGroup-1RAoe38m.js.map +0 -1
- package/dist/cjs/Select-nifsTqzo.js +0 -569
- package/dist/cjs/Select-nifsTqzo.js.map +0 -1
- package/dist/cjs/SelectFieldWrapper-DEA--2wj.js +0 -25
- package/dist/cjs/SelectFieldWrapper-DEA--2wj.js.map +0 -1
- package/dist/cjs/Sheet-BTZe2VQk.js +0 -65
- package/dist/cjs/Sheet-BTZe2VQk.js.map +0 -1
- package/dist/cjs/Slider-jNUS9vt8.js +0 -27
- package/dist/cjs/Slider-jNUS9vt8.js.map +0 -1
- package/dist/cjs/Spinner-DQutDMQq.js +0 -19
- package/dist/cjs/Spinner-DQutDMQq.js.map +0 -1
- package/dist/cjs/Stepper-DCoLl2ZS.js +0 -35
- package/dist/cjs/Stepper-DCoLl2ZS.js.map +0 -1
- package/dist/cjs/Switch-CFf8DtB_.js +0 -22
- package/dist/cjs/Switch-CFf8DtB_.js.map +0 -1
- package/dist/cjs/Tabs-D2247rd7.js +0 -40
- package/dist/cjs/Tabs-D2247rd7.js.map +0 -1
- package/dist/cjs/Textarea-BfdlAJ59.js +0 -75
- package/dist/cjs/Textarea-BfdlAJ59.js.map +0 -1
- package/dist/cjs/TimePicker-DReL0GSv.js +0 -148
- package/dist/cjs/TimePicker-DReL0GSv.js.map +0 -1
- package/dist/cjs/TimePickerPanel-DGNr97cj.js +0 -132
- package/dist/cjs/TimePickerPanel-DGNr97cj.js.map +0 -1
- package/dist/cjs/Toastr-BGp7-kmf.js +0 -117
- package/dist/cjs/Toastr-BGp7-kmf.js.map +0 -1
- package/dist/cjs/Tooltip-criVUtIg.js +0 -65
- package/dist/cjs/Tooltip-criVUtIg.js.map +0 -1
- package/dist/cjs/TranslationProvider-DBZHXmzX.js.map +0 -1
- package/dist/cjs/Tree-BPd0DuLh.js.map +0 -1
- package/dist/cjs/TreeSelect-BoffO6qD.js +0 -170
- package/dist/cjs/TreeSelect-BoffO6qD.js.map +0 -1
- package/dist/cjs/Typography-DaZ0HTha.js +0 -79
- package/dist/cjs/Typography-DaZ0HTha.js.map +0 -1
- package/dist/cjs/button--P7-oIJb.js +0 -71
- package/dist/cjs/button--P7-oIJb.js.map +0 -1
- package/dist/cjs/dialog-CWSpiRjk.js +0 -52
- package/dist/cjs/dialog-CWSpiRjk.js.map +0 -1
- package/dist/cjs/index-ChSOMM8b.js.map +0 -1
- package/dist/cjs/input-CgKPISj_.js +0 -11
- package/dist/cjs/input-CgKPISj_.js.map +0 -1
- package/dist/cjs/input-group-CFZl_aQS.js +0 -66
- package/dist/cjs/input-group-CFZl_aQS.js.map +0 -1
- package/dist/cjs/label-Bdc9ytTI.js.map +0 -1
- package/dist/cjs/renderIcon-fLF3odqg.js +0 -26
- package/dist/cjs/renderIcon-fLF3odqg.js.map +0 -1
- package/dist/cjs/search-CfYUGi4v.js +0 -37
- package/dist/cjs/search-CfYUGi4v.js.map +0 -1
- package/dist/cjs/separator-CPy2gyg1.js.map +0 -1
- package/dist/cjs/sheet-BZt84aab.js +0 -50
- package/dist/cjs/sheet-BZt84aab.js.map +0 -1
- package/dist/cjs/skeleton-DffZ8bV7.js +0 -11
- package/dist/cjs/skeleton-DffZ8bV7.js.map +0 -1
- package/dist/cjs/textarea-CZSSY75H.js +0 -11
- package/dist/cjs/textarea-CZSSY75H.js.map +0 -1
- package/dist/cjs/toggle-CaqzT8dI.js.map +0 -1
- package/dist/cjs/tooltip-C-568jEL.js.map +0 -1
- package/dist/cjs/use-mobile-B-UYxtqX.js +0 -41
- package/dist/cjs/use-mobile-B-UYxtqX.js.map +0 -1
- package/dist/cjs/utils-CTr7wn5d.js.map +0 -1
- package/dist/dialog-DK71SlsS.js +0 -41
- package/dist/index-B4_fVWDx.js.map +0 -1
- package/dist/input-GLCCE2kT.js +0 -9
- package/dist/input-group-C_qKMibX.js +0 -59
- package/dist/renderIcon-tlvMyboj.js +0 -20
- package/dist/search-BK7Ozh5_.js +0 -33
- package/dist/search-BK7Ozh5_.js.map +0 -1
- package/dist/sheet-DVTG6X82.js +0 -41
- package/dist/skeleton-AR83txPr.js +0 -9
- package/dist/skeleton-AR83txPr.js.map +0 -1
- package/dist/textarea-BSZwxzjQ.js +0 -9
- package/dist/toggle-2k9K8a5c.js +0 -60
- package/dist/use-mobile-IRjN_mlT.js +0 -19
- package/dist/use-mobile-IRjN_mlT.js.map +0 -1
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
-
var React = require('react');
|
|
5
|
-
var utils = require('./utils-CTr7wn5d.js');
|
|
6
|
-
var primitives_Empty = require('./primitives/Empty.js');
|
|
7
|
-
var Button = require('./Button-BniJ4TT_.js');
|
|
8
|
-
var Typography = require('./Typography-DaZ0HTha.js');
|
|
9
|
-
var primitives_Tooltip = require('./primitives/Tooltip.js');
|
|
10
|
-
var renderIcon = require('./renderIcon-fLF3odqg.js');
|
|
11
|
-
|
|
12
|
-
function MaybeTooltipButton({ buttonProps, showTooltipWhenDisabled, defaultVariant, }) {
|
|
13
|
-
const button = jsxRuntime.jsx(Button.Button, { variant: defaultVariant, ...buttonProps });
|
|
14
|
-
if (showTooltipWhenDisabled && buttonProps.disabled && buttonProps.label) {
|
|
15
|
-
return (jsxRuntime.jsx(primitives_Tooltip.TooltipProvider, { delayDuration: 0, children: jsxRuntime.jsxs(primitives_Tooltip.Tooltip, { children: [jsxRuntime.jsx(primitives_Tooltip.TooltipTrigger, { asChild: true, children: jsxRuntime.jsx("span", { className: "inline-flex", children: button }) }), jsxRuntime.jsx(primitives_Tooltip.TooltipContent, { children: buttonProps.label })] }) }));
|
|
16
|
-
}
|
|
17
|
-
return button;
|
|
18
|
-
}
|
|
19
|
-
const Empty = React.forwardRef(({ image, icon, title, description, helpText, primaryButtonProps, secondaryButtonProps, buttonSeparatorText, showTooltipWhenButtonDisabled = false, className, ...otherProps }, ref) => {
|
|
20
|
-
const hasMedia = image || icon;
|
|
21
|
-
const hasButtons = primaryButtonProps || secondaryButtonProps;
|
|
22
|
-
return (jsxRuntime.jsxs(primitives_Empty.Empty, { ref: ref, className: utils.cn(className), ...otherProps, children: [jsxRuntime.jsxs(primitives_Empty.EmptyHeader, { children: [hasMedia && (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [image && (jsxRuntime.jsx(primitives_Empty.EmptyMedia, { children: typeof image === "string" ? (jsxRuntime.jsx("img", { src: image, alt: title ?? "" })) : (image) })), !image && icon && (jsxRuntime.jsx(primitives_Empty.EmptyMedia, { variant: "icon", children: renderIcon.renderIcon(icon) }))] })), title && (jsxRuntime.jsx(Typography.Typography, { variant: "h4", asChild: true, children: jsxRuntime.jsx(primitives_Empty.EmptyTitle, { children: title }) })), description && (jsxRuntime.jsx(Typography.Typography, { variant: "body3", color: "muted", asChild: true, children: jsxRuntime.jsx(primitives_Empty.EmptyDescription, { children: description }) })), helpText && (jsxRuntime.jsx(Typography.Typography, { variant: "body3", color: "muted", asChild: true, children: jsxRuntime.jsx("p", { children: helpText }) }))] }), hasButtons && (jsxRuntime.jsx(primitives_Empty.EmptyContent, { children: jsxRuntime.jsxs("div", { className: "flex flex-wrap items-center justify-center gap-2", children: [primaryButtonProps && (jsxRuntime.jsx(MaybeTooltipButton, { buttonProps: primaryButtonProps, showTooltipWhenDisabled: showTooltipWhenButtonDisabled, defaultVariant: "default" })), buttonSeparatorText &&
|
|
23
|
-
primaryButtonProps &&
|
|
24
|
-
secondaryButtonProps && (jsxRuntime.jsx(Typography.Typography, { variant: "body3", color: "muted", asChild: true, children: jsxRuntime.jsx("span", { children: buttonSeparatorText }) })), secondaryButtonProps && (jsxRuntime.jsx(MaybeTooltipButton, { buttonProps: secondaryButtonProps, showTooltipWhenDisabled: showTooltipWhenButtonDisabled, defaultVariant: "outline" }))] }) }))] }));
|
|
25
|
-
});
|
|
26
|
-
Empty.displayName = "Empty";
|
|
27
|
-
|
|
28
|
-
exports.Empty = Empty;
|
|
29
|
-
//# sourceMappingURL=Empty-CfPLWsLK.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Empty-CfPLWsLK.js","sources":["../../../src/components/Empty/Empty.tsx"],"sourcesContent":["import React, { forwardRef } from \"react\";\n\nimport { cn } from \"src/shadcn/lib/utils\";\nimport {\n Empty as PrimitiveEmpty,\n EmptyHeader,\n EmptyTitle,\n EmptyDescription,\n EmptyContent,\n EmptyMedia,\n} from \"src/primitives/Empty\";\nimport { Button } from \"src/components/Button\";\nimport { Typography } from \"src/components/Typography\";\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from \"src/primitives/Tooltip\";\nimport { renderIcon, type IconProp } from \"src/lib/renderIcon\";\n\nexport interface EmptyProps extends React.ComponentProps<\"div\"> {\n /** Image URL or JSX for the media area. */\n image?: string | React.ReactNode;\n /** Icon for the media area (rendered inside EmptyMedia with variant=\"icon\"). */\n icon?: IconProp;\n /** Empty state title. */\n title?: string;\n /** Description text or JSX. */\n description?: React.ReactNode;\n /** Additional help text below the description. */\n helpText?: React.ReactNode;\n /** Props forwarded to the primary action Button. */\n primaryButtonProps?: React.ComponentProps<typeof Button>;\n /** Props forwarded to the secondary action Button. */\n secondaryButtonProps?: React.ComponentProps<typeof Button>;\n /** Text displayed between the primary and secondary buttons (e.g., \"or\"). */\n buttonSeparatorText?: string;\n /** Show tooltip on disabled buttons using their label as content. */\n showTooltipWhenButtonDisabled?: boolean;\n /** Additional CSS class names. */\n className?: string;\n}\n\nfunction MaybeTooltipButton({\n buttonProps,\n showTooltipWhenDisabled,\n defaultVariant,\n}: {\n buttonProps: React.ComponentProps<typeof Button>;\n showTooltipWhenDisabled: boolean;\n defaultVariant: \"default\" | \"outline\";\n}) {\n const button = <Button variant={defaultVariant} {...buttonProps} />;\n\n if (showTooltipWhenDisabled && buttonProps.disabled && buttonProps.label) {\n return (\n <TooltipProvider delayDuration={0}>\n <Tooltip>\n <TooltipTrigger asChild>\n <span className=\"inline-flex\">{button}</span>\n </TooltipTrigger>\n <TooltipContent>{buttonProps.label}</TooltipContent>\n </Tooltip>\n </TooltipProvider>\n );\n }\n\n return button;\n}\n\nconst Empty = forwardRef<HTMLDivElement, EmptyProps>(\n (\n {\n image,\n icon,\n title,\n description,\n helpText,\n primaryButtonProps,\n secondaryButtonProps,\n buttonSeparatorText,\n showTooltipWhenButtonDisabled = false,\n className,\n ...otherProps\n },\n ref\n ) => {\n const hasMedia = image || icon;\n const hasButtons = primaryButtonProps || secondaryButtonProps;\n\n return (\n <PrimitiveEmpty ref={ref} className={cn(className)} {...otherProps}>\n <EmptyHeader>\n {hasMedia && (\n <>\n {image && (\n <EmptyMedia>\n {typeof image === \"string\" ? (\n <img src={image} alt={title ?? \"\"} />\n ) : (\n image\n )}\n </EmptyMedia>\n )}\n {!image && icon && (\n <EmptyMedia variant=\"icon\">{renderIcon(icon)}</EmptyMedia>\n )}\n </>\n )}\n {title && (\n <Typography variant=\"h4\" asChild>\n <EmptyTitle>{title}</EmptyTitle>\n </Typography>\n )}\n {description && (\n <Typography variant=\"body3\" color=\"muted\" asChild>\n <EmptyDescription>{description}</EmptyDescription>\n </Typography>\n )}\n {helpText && (\n <Typography variant=\"body3\" color=\"muted\" asChild>\n <p>{helpText}</p>\n </Typography>\n )}\n </EmptyHeader>\n\n {hasButtons && (\n <EmptyContent>\n <div className=\"flex flex-wrap items-center justify-center gap-2\">\n {primaryButtonProps && (\n <MaybeTooltipButton\n buttonProps={primaryButtonProps}\n showTooltipWhenDisabled={showTooltipWhenButtonDisabled}\n defaultVariant=\"default\"\n />\n )}\n {buttonSeparatorText &&\n primaryButtonProps &&\n secondaryButtonProps && (\n <Typography variant=\"body3\" color=\"muted\" asChild>\n <span>{buttonSeparatorText}</span>\n </Typography>\n )}\n {secondaryButtonProps && (\n <MaybeTooltipButton\n buttonProps={secondaryButtonProps}\n showTooltipWhenDisabled={showTooltipWhenButtonDisabled}\n defaultVariant=\"outline\"\n />\n )}\n </div>\n </EmptyContent>\n )}\n </PrimitiveEmpty>\n );\n }\n);\n\nEmpty.displayName = \"Empty\";\n\nexport { Empty };\n"],"names":["_jsx","Button","TooltipProvider","_jsxs","Tooltip","TooltipTrigger","TooltipContent","forwardRef","PrimitiveEmpty","cn","EmptyHeader","_Fragment","EmptyMedia","renderIcon","Typography","EmptyTitle","EmptyDescription","EmptyContent"],"mappings":"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"}
|
|
@@ -1,149 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
-
var React = require('react');
|
|
5
|
-
var utils = require('./utils-CTr7wn5d.js');
|
|
6
|
-
var primitives_Field = require('./primitives/Field.js');
|
|
7
|
-
var primitives_InputGroup = require('./primitives/InputGroup.js');
|
|
8
|
-
|
|
9
|
-
const SIZE_CONFIG = {
|
|
10
|
-
small: { group: "h-7", input: "text-xs px-2", addon: "px-1.5" },
|
|
11
|
-
medium: { group: "h-8", input: "text-sm", addon: "px-2" },
|
|
12
|
-
large: { group: "h-10", input: "text-sm", addon: "px-2.5" },
|
|
13
|
-
};
|
|
14
|
-
|
|
15
|
-
function toFixed(numStr, prec) {
|
|
16
|
-
const num = Number(numStr);
|
|
17
|
-
if (Number.isNaN(num))
|
|
18
|
-
return numStr;
|
|
19
|
-
return num.toFixed(prec);
|
|
20
|
-
}
|
|
21
|
-
function formatWithPrecision(value, precision) {
|
|
22
|
-
if (precision < 0 || !value)
|
|
23
|
-
return value;
|
|
24
|
-
const str = value.toString();
|
|
25
|
-
const trimmed = str.trim();
|
|
26
|
-
if (trimmed !== "" && !Number.isNaN(Number(trimmed)))
|
|
27
|
-
return toFixed(str, precision);
|
|
28
|
-
return str;
|
|
29
|
-
}
|
|
30
|
-
function enforceDecimalPrecision(value, precision) {
|
|
31
|
-
if (precision < 0 || !value)
|
|
32
|
-
return value;
|
|
33
|
-
const valueStr = value.toString();
|
|
34
|
-
if (precision === 0)
|
|
35
|
-
return valueStr.split(".")[0];
|
|
36
|
-
const regex = new RegExp(`^\\d*\\.?\\d{0,${precision}}$`);
|
|
37
|
-
if (regex.test(valueStr))
|
|
38
|
-
return value;
|
|
39
|
-
const parts = valueStr.split(".");
|
|
40
|
-
if (parts.length === 1)
|
|
41
|
-
return parts[0];
|
|
42
|
-
return `${parts[0]}.${parts[1].substring(0, precision)}`;
|
|
43
|
-
}
|
|
44
|
-
function formatWithRejectCharsRegex(value, rejectCharsRegex) {
|
|
45
|
-
if (!rejectCharsRegex)
|
|
46
|
-
return value;
|
|
47
|
-
const globalRegex = new RegExp(rejectCharsRegex, "g");
|
|
48
|
-
return value.replace(globalRegex, "");
|
|
49
|
-
}
|
|
50
|
-
function getTrimmedValue(value, disableTrimOnBlur) {
|
|
51
|
-
if (disableTrimOnBlur || typeof value !== "string")
|
|
52
|
-
return value;
|
|
53
|
-
return value.trim();
|
|
54
|
-
}
|
|
55
|
-
function preserveCursor(e, updateValueFn) {
|
|
56
|
-
const input = e.target;
|
|
57
|
-
const prevCursor = input.selectionStart;
|
|
58
|
-
const prevValue = input.value;
|
|
59
|
-
const updatedEvent = updateValueFn();
|
|
60
|
-
const lengthDiff = input.value.length - prevValue.length;
|
|
61
|
-
const newCursor = Math.max(0, (prevCursor ?? 0) + lengthDiff);
|
|
62
|
-
requestAnimationFrame(() => {
|
|
63
|
-
if (document.activeElement !== input)
|
|
64
|
-
return;
|
|
65
|
-
if (input.type === "number")
|
|
66
|
-
return;
|
|
67
|
-
input.setSelectionRange(newCursor, newCursor);
|
|
68
|
-
});
|
|
69
|
-
return updatedEvent;
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
const Input = React.forwardRef(({ size = "medium", type = "text", label = "", error = "", helpText = "", prefix = null, suffix = null, disabled = false, nakedInput = false, contentSize, required = false, maxLength, unlimitedChars = false, rejectCharsRegex, disableTrimOnBlur = false, precision = -1, labelProps, className = "", onBlur, onChange, value: controlledValue, ...otherProps }, ref) => {
|
|
73
|
-
const generatedId = React.useId();
|
|
74
|
-
const id = otherProps.id ?? generatedId;
|
|
75
|
-
const errorId = `error_${id}`;
|
|
76
|
-
const helpTextId = `helpText_${id}`;
|
|
77
|
-
// Controlled / uncontrolled value tracking
|
|
78
|
-
const [valueInternal, setValueInternal] = React.useState(controlledValue);
|
|
79
|
-
const isControlled = controlledValue !== undefined;
|
|
80
|
-
const value = formatWithPrecision(controlledValue, precision) ?? valueInternal ?? "";
|
|
81
|
-
const valueLength = value?.toString().length || 0;
|
|
82
|
-
const isMaxLengthPresent = !!maxLength || maxLength === 0;
|
|
83
|
-
const isCharacterLimitVisible = isMaxLengthPresent && valueLength >= maxLength * 0.85;
|
|
84
|
-
const maxLengthError = unlimitedChars && valueLength > maxLength;
|
|
85
|
-
// --- Handlers ---
|
|
86
|
-
const onChangeInternal = (e) => {
|
|
87
|
-
if (!isControlled) {
|
|
88
|
-
setValueInternal(e.target.value);
|
|
89
|
-
}
|
|
90
|
-
onChange?.(e);
|
|
91
|
-
};
|
|
92
|
-
const handleChange = (e) => {
|
|
93
|
-
if (type === "file") {
|
|
94
|
-
onChangeInternal(e);
|
|
95
|
-
return;
|
|
96
|
-
}
|
|
97
|
-
let formattedValue = formatWithRejectCharsRegex(e.target.value, rejectCharsRegex);
|
|
98
|
-
formattedValue = enforceDecimalPrecision(formattedValue, precision);
|
|
99
|
-
if (formattedValue !== e.target.value) {
|
|
100
|
-
preserveCursor(e, () => {
|
|
101
|
-
const syntheticEvent = Object.create(e, {
|
|
102
|
-
target: { value: { ...e.target, value: formattedValue } },
|
|
103
|
-
});
|
|
104
|
-
e.target.value = formattedValue;
|
|
105
|
-
onChangeInternal(syntheticEvent);
|
|
106
|
-
return syntheticEvent;
|
|
107
|
-
});
|
|
108
|
-
}
|
|
109
|
-
else {
|
|
110
|
-
onChangeInternal(e);
|
|
111
|
-
}
|
|
112
|
-
};
|
|
113
|
-
const handleBlur = (e) => {
|
|
114
|
-
if (type === "file") {
|
|
115
|
-
onBlur?.(e);
|
|
116
|
-
return;
|
|
117
|
-
}
|
|
118
|
-
const trimmedValue = getTrimmedValue(value, disableTrimOnBlur);
|
|
119
|
-
const formattedValue = formatWithPrecision(trimmedValue, precision);
|
|
120
|
-
if (formattedValue !== undefined && formattedValue !== value) {
|
|
121
|
-
e.target.value = formattedValue.toString();
|
|
122
|
-
handleChange(e);
|
|
123
|
-
}
|
|
124
|
-
onBlur?.(e);
|
|
125
|
-
};
|
|
126
|
-
const handleWheel = (e) => {
|
|
127
|
-
if (type === "number")
|
|
128
|
-
e.target.blur();
|
|
129
|
-
};
|
|
130
|
-
// --- aria-describedby ---
|
|
131
|
-
const ariaDescribedBy = [error ? errorId : null, helpText ? helpTextId : null]
|
|
132
|
-
.filter(Boolean)
|
|
133
|
-
.join(" ") || undefined;
|
|
134
|
-
// --- Render ---
|
|
135
|
-
const hasField = !!(label || error || helpText);
|
|
136
|
-
const sizeConfig = SIZE_CONFIG[size];
|
|
137
|
-
const inputGroup = (jsxRuntime.jsxs(primitives_InputGroup.InputGroup, { className: utils.cn(sizeConfig.group, nakedInput &&
|
|
138
|
-
"border-0 shadow-none has-[[data-slot=input-group-control]:focus-visible]:ring-0 has-[[data-slot=input-group-control]:focus-visible]:border-transparent", !!error &&
|
|
139
|
-
!nakedInput &&
|
|
140
|
-
"border-destructive ring-destructive/20 ring-3", !hasField && className), children: [prefix && (jsxRuntime.jsx(primitives_InputGroup.InputGroupAddon, { align: "inline-start", className: sizeConfig.addon, children: jsxRuntime.jsx(primitives_InputGroup.InputGroupText, { children: prefix }) })), jsxRuntime.jsx(primitives_InputGroup.InputGroupInput, { ref: ref, id: id, type: type, disabled: disabled, required: required, size: contentSize, "aria-invalid": !!error || undefined, "aria-describedby": ariaDescribedBy, className: utils.cn(sizeConfig.input, nakedInput && "px-0"), value: value, onBlur: handleBlur, onChange: handleChange, onWheel: handleWheel, ...(isMaxLengthPresent && !unlimitedChars ? { maxLength } : {}), ...otherProps }), suffix && (jsxRuntime.jsx(primitives_InputGroup.InputGroupAddon, { align: "inline-end", className: sizeConfig.addon, children: jsxRuntime.jsx(primitives_InputGroup.InputGroupText, { children: suffix }) }))] }));
|
|
141
|
-
if (!hasField) {
|
|
142
|
-
return inputGroup;
|
|
143
|
-
}
|
|
144
|
-
return (jsxRuntime.jsxs(primitives_Field.Field, { "data-disabled": disabled || undefined, "data-invalid": !!error || undefined, className: className, children: [(label || isCharacterLimitVisible) && (jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [label && (jsxRuntime.jsxs(primitives_Field.FieldLabel, { htmlFor: id, ...labelProps, children: [label, required && (jsxRuntime.jsx("span", { "aria-hidden": "true", className: "text-destructive", children: "*" }))] })), isCharacterLimitVisible && (jsxRuntime.jsxs("span", { className: utils.cn("text-xs tabular-nums", maxLengthError ? "text-destructive" : "text-muted-foreground"), children: [valueLength, "/", maxLength] }))] })), jsxRuntime.jsxs(primitives_Field.FieldContent, { children: [inputGroup, !!error && jsxRuntime.jsx(primitives_Field.FieldError, { id: errorId, children: error }), helpText && (jsxRuntime.jsx(primitives_Field.FieldDescription, { id: helpTextId, children: helpText }))] })] }));
|
|
145
|
-
});
|
|
146
|
-
Input.displayName = "Input";
|
|
147
|
-
|
|
148
|
-
exports.Input = Input;
|
|
149
|
-
//# sourceMappingURL=Input-pkugjUb0.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Input-pkugjUb0.js","sources":["../../../src/components/Input/constants.ts","../../../src/components/Input/utils.ts","../../../src/components/Input/Input.tsx"],"sourcesContent":["export const SIZE_CONFIG = {\n small: { group: \"h-7\", input: \"text-xs px-2\", addon: \"px-1.5\" },\n medium: { group: \"h-8\", input: \"text-sm\", addon: \"px-2\" },\n large: { group: \"h-10\", input: \"text-sm\", addon: \"px-2.5\" },\n};\n","import React from \"react\";\n\nexport function toFixed(numStr: string, prec: number): string {\n const num = Number(numStr);\n if (Number.isNaN(num)) return numStr;\n\n return num.toFixed(prec);\n}\n\nexport function formatWithPrecision(\n value: string | number | undefined,\n precision: number\n): string | undefined {\n if (precision < 0 || !value) return value as string | undefined;\n\n const str = value.toString();\n const trimmed = str.trim();\n if (trimmed !== \"\" && !Number.isNaN(Number(trimmed)))\n return toFixed(str, precision);\n\n return str;\n}\n\nexport function enforceDecimalPrecision(\n value: string,\n precision: number\n): string {\n if (precision < 0 || !value) return value;\n\n const valueStr = value.toString();\n if (precision === 0) return valueStr.split(\".\")[0];\n\n const regex = new RegExp(`^\\\\d*\\\\.?\\\\d{0,${precision}}$`);\n if (regex.test(valueStr)) return value;\n\n const parts = valueStr.split(\".\");\n if (parts.length === 1) return parts[0];\n\n return `${parts[0]}.${parts[1].substring(0, precision)}`;\n}\n\nexport function formatWithRejectCharsRegex(\n value: string,\n rejectCharsRegex?: RegExp\n): string {\n if (!rejectCharsRegex) return value;\n\n const globalRegex = new RegExp(rejectCharsRegex, \"g\");\n\n return value.replace(globalRegex, \"\");\n}\n\nexport function getTrimmedValue(\n value: string | number,\n disableTrimOnBlur: boolean\n): string | number {\n if (disableTrimOnBlur || typeof value !== \"string\") return value;\n\n return value.trim();\n}\n\nexport function preserveCursor(\n e: React.ChangeEvent<HTMLInputElement>,\n updateValueFn: () => React.ChangeEvent<HTMLInputElement>\n) {\n const input = e.target;\n const prevCursor = input.selectionStart;\n const prevValue = input.value;\n\n const updatedEvent = updateValueFn();\n\n const lengthDiff = input.value.length - prevValue.length;\n const newCursor = Math.max(0, (prevCursor ?? 0) + lengthDiff);\n\n requestAnimationFrame(() => {\n if (document.activeElement !== input) return;\n if (input.type === \"number\") return;\n\n input.setSelectionRange(newCursor, newCursor);\n });\n\n return updatedEvent;\n}\n","import React, { forwardRef, useId, useState } from \"react\";\n\nimport { cn } from \"src/shadcn/lib/utils\";\nimport {\n Field,\n FieldLabel,\n FieldContent,\n FieldDescription,\n FieldError,\n} from \"src/primitives/Field\";\nimport {\n InputGroup,\n InputGroupAddon,\n InputGroupText,\n InputGroupInput,\n} from \"src/primitives/InputGroup\";\n\nimport { SIZE_CONFIG } from \"./constants\";\nimport {\n formatWithPrecision,\n enforceDecimalPrecision,\n formatWithRejectCharsRegex,\n getTrimmedValue,\n preserveCursor,\n} from \"./utils\";\n\ntype InputSize = \"small\" | \"medium\" | \"large\";\n\nexport interface InputProps extends Omit<\n React.ComponentProps<\"input\">,\n \"size\" | \"prefix\" | \"value\"\n> {\n /** Controlled value. */\n value?: string | number;\n /** Size of the input. */\n size?: InputSize;\n /** Input type. */\n type?: string;\n /** Label displayed above the input. */\n label?: string;\n /** Error message displayed below the input. */\n error?: string;\n /** Help text displayed below the input. Accepts string or ReactNode. */\n helpText?: React.ReactNode;\n /** Content rendered before the input. */\n prefix?: React.ReactNode;\n /** Content rendered after the input. */\n suffix?: React.ReactNode;\n /** Removes borders from the input. */\n nakedInput?: boolean;\n /** HTML size attribute for the input element. */\n contentSize?: number;\n /** Maximum character limit. Counter visible at 85%. */\n maxLength?: number;\n /** Allow typing past maxLength, show error styling on count. */\n unlimitedChars?: boolean;\n /** Regex to reject matching characters from input. */\n rejectCharsRegex?: RegExp;\n /** Prevent trimming whitespace on blur. */\n disableTrimOnBlur?: boolean;\n /** Decimal places for number formatting. -1 to disable. */\n precision?: number;\n /** Props forwarded to the Label element. */\n labelProps?: React.ComponentProps<typeof FieldLabel>;\n /** Additional class name for the outermost wrapper. */\n className?: string;\n}\n\nconst Input = forwardRef<HTMLInputElement, InputProps>(\n (\n {\n size = \"medium\",\n type = \"text\",\n label = \"\",\n error = \"\",\n helpText = \"\",\n prefix = null,\n suffix = null,\n disabled = false,\n nakedInput = false,\n contentSize,\n required = false,\n maxLength,\n unlimitedChars = false,\n rejectCharsRegex,\n disableTrimOnBlur = false,\n precision = -1,\n labelProps,\n className = \"\",\n onBlur,\n onChange,\n value: controlledValue,\n ...otherProps\n },\n ref\n ) => {\n const generatedId = useId();\n const id = otherProps.id ?? generatedId;\n const errorId = `error_${id}`;\n const helpTextId = `helpText_${id}`;\n\n // Controlled / uncontrolled value tracking\n const [valueInternal, setValueInternal] = useState(controlledValue);\n const isControlled = controlledValue !== undefined;\n\n const value =\n formatWithPrecision(controlledValue, precision) ?? valueInternal ?? \"\";\n const valueLength = value?.toString().length || 0;\n\n const isMaxLengthPresent = !!maxLength || maxLength === 0;\n const isCharacterLimitVisible =\n isMaxLengthPresent && valueLength >= maxLength! * 0.85;\n const maxLengthError = unlimitedChars && valueLength > maxLength!;\n\n // --- Handlers ---\n\n const onChangeInternal = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (!isControlled) {\n setValueInternal(e.target.value);\n }\n onChange?.(e);\n };\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (type === \"file\") {\n onChangeInternal(e);\n\n return;\n }\n\n let formattedValue = formatWithRejectCharsRegex(\n e.target.value,\n rejectCharsRegex\n );\n formattedValue = enforceDecimalPrecision(formattedValue, precision);\n\n if (formattedValue !== e.target.value) {\n preserveCursor(e, () => {\n const syntheticEvent = Object.create(e, {\n target: { value: { ...e.target, value: formattedValue } },\n });\n e.target.value = formattedValue;\n onChangeInternal(syntheticEvent);\n\n return syntheticEvent;\n });\n } else {\n onChangeInternal(e);\n }\n };\n\n const handleBlur = (e: React.FocusEvent<HTMLInputElement>) => {\n if (type === \"file\") {\n onBlur?.(e);\n\n return;\n }\n\n const trimmedValue = getTrimmedValue(value, disableTrimOnBlur);\n const formattedValue = formatWithPrecision(trimmedValue, precision);\n\n if (formattedValue !== undefined && formattedValue !== value) {\n e.target.value = formattedValue.toString();\n handleChange(e as unknown as React.ChangeEvent<HTMLInputElement>);\n }\n\n onBlur?.(e);\n };\n\n const handleWheel = (e: React.WheelEvent<HTMLInputElement>) => {\n if (type === \"number\") (e.target as HTMLInputElement).blur();\n };\n\n // --- aria-describedby ---\n\n const ariaDescribedBy =\n [error ? errorId : null, helpText ? helpTextId : null]\n .filter(Boolean)\n .join(\" \") || undefined;\n\n // --- Render ---\n\n const hasField = !!(label || error || helpText);\n const sizeConfig = SIZE_CONFIG[size];\n\n const inputGroup = (\n <InputGroup\n className={cn(\n sizeConfig.group,\n nakedInput &&\n \"border-0 shadow-none has-[[data-slot=input-group-control]:focus-visible]:ring-0 has-[[data-slot=input-group-control]:focus-visible]:border-transparent\",\n !!error &&\n !nakedInput &&\n \"border-destructive ring-destructive/20 ring-3\",\n !hasField && className\n )}\n >\n {prefix && (\n <InputGroupAddon align=\"inline-start\" className={sizeConfig.addon}>\n <InputGroupText>{prefix}</InputGroupText>\n </InputGroupAddon>\n )}\n <InputGroupInput\n ref={ref}\n id={id}\n type={type}\n disabled={disabled}\n required={required}\n size={contentSize}\n aria-invalid={!!error || undefined}\n aria-describedby={ariaDescribedBy}\n className={cn(sizeConfig.input, nakedInput && \"px-0\")}\n value={value}\n onBlur={handleBlur}\n onChange={handleChange}\n onWheel={handleWheel}\n {...(isMaxLengthPresent && !unlimitedChars ? { maxLength } : {})}\n {...otherProps}\n />\n {suffix && (\n <InputGroupAddon align=\"inline-end\" className={sizeConfig.addon}>\n <InputGroupText>{suffix}</InputGroupText>\n </InputGroupAddon>\n )}\n </InputGroup>\n );\n\n if (!hasField) {\n return inputGroup;\n }\n\n return (\n <Field\n data-disabled={disabled || undefined}\n data-invalid={!!error || undefined}\n className={className}\n >\n {(label || isCharacterLimitVisible) && (\n <div className=\"flex items-center justify-between\">\n {label && (\n <FieldLabel htmlFor={id} {...labelProps}>\n {label}\n {required && (\n <span aria-hidden=\"true\" className=\"text-destructive\">\n *\n </span>\n )}\n </FieldLabel>\n )}\n {isCharacterLimitVisible && (\n <span\n className={cn(\n \"text-xs tabular-nums\",\n maxLengthError ? \"text-destructive\" : \"text-muted-foreground\"\n )}\n >\n {valueLength}/{maxLength}\n </span>\n )}\n </div>\n )}\n <FieldContent>\n {inputGroup}\n {!!error && <FieldError id={errorId}>{error}</FieldError>}\n {helpText && (\n <FieldDescription id={helpTextId}>{helpText}</FieldDescription>\n )}\n </FieldContent>\n </Field>\n );\n }\n);\n\nInput.displayName = \"Input\";\n\nexport { Input };\n"],"names":["forwardRef","useId","useState","_jsxs","InputGroup","cn","_jsx","InputGroupAddon","InputGroupText","InputGroupInput","Field","FieldLabel","FieldContent","FieldError","FieldDescription"],"mappings":"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"}
|
package/dist/cjs/Kbd-DHirsI--.js
DELETED
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
-
var React = require('react');
|
|
5
|
-
var utils = require('./utils-CTr7wn5d.js');
|
|
6
|
-
var primitives_Kbd = require('./primitives/Kbd.js');
|
|
7
|
-
var primitives_Tooltip = require('./primitives/Tooltip.js');
|
|
8
|
-
|
|
9
|
-
const SIDE_MAP = {
|
|
10
|
-
top: "top",
|
|
11
|
-
bottom: "bottom",
|
|
12
|
-
left: "left",
|
|
13
|
-
right: "right",
|
|
14
|
-
"top-start": "top",
|
|
15
|
-
"top-end": "top",
|
|
16
|
-
"bottom-start": "bottom",
|
|
17
|
-
"bottom-end": "bottom",
|
|
18
|
-
"left-start": "left",
|
|
19
|
-
"left-end": "left",
|
|
20
|
-
"right-start": "right",
|
|
21
|
-
"right-end": "right",
|
|
22
|
-
auto: "top",
|
|
23
|
-
};
|
|
24
|
-
|
|
25
|
-
const Kbd = React.forwardRef(({ tooltipProps, className, ...otherProps }, ref) => {
|
|
26
|
-
const kbd = (jsxRuntime.jsx(primitives_Kbd.Kbd, { ref: ref, className: utils.cn(className), ...otherProps }));
|
|
27
|
-
if (!tooltipProps?.content) {
|
|
28
|
-
return kbd;
|
|
29
|
-
}
|
|
30
|
-
const side = SIDE_MAP[tooltipProps.position ?? "auto"] ?? "top";
|
|
31
|
-
return (jsxRuntime.jsx(primitives_Tooltip.TooltipProvider, { children: jsxRuntime.jsxs(primitives_Tooltip.Tooltip, { children: [jsxRuntime.jsx(primitives_Tooltip.TooltipTrigger, { asChild: true, children: kbd }), jsxRuntime.jsx(primitives_Tooltip.TooltipContent, { side: side, children: tooltipProps.content })] }) }));
|
|
32
|
-
});
|
|
33
|
-
Kbd.displayName = "Kbd";
|
|
34
|
-
const KbdGroup = primitives_Kbd.KbdGroup;
|
|
35
|
-
const KbdNamespace = Object.assign(Kbd, { Group: KbdGroup });
|
|
36
|
-
|
|
37
|
-
exports.KbdNamespace = KbdNamespace;
|
|
38
|
-
//# sourceMappingURL=Kbd-DHirsI--.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Kbd-DHirsI--.js","sources":["../../../src/components/Kbd/constants.ts","../../../src/components/Kbd/Kbd.tsx"],"sourcesContent":["export const SIDE_MAP: Record<string, \"top\" | \"right\" | \"bottom\" | \"left\"> = {\n top: \"top\",\n bottom: \"bottom\",\n left: \"left\",\n right: \"right\",\n \"top-start\": \"top\",\n \"top-end\": \"top\",\n \"bottom-start\": \"bottom\",\n \"bottom-end\": \"bottom\",\n \"left-start\": \"left\",\n \"left-end\": \"left\",\n \"right-start\": \"right\",\n \"right-end\": \"right\",\n auto: \"top\",\n};\n","import React, { forwardRef } from \"react\";\n\nimport { cn } from \"src/shadcn/lib/utils\";\nimport {\n Kbd as PrimitiveKbd,\n KbdGroup as PrimitiveKbdGroup,\n} from \"src/primitives/Kbd\";\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from \"src/primitives/Tooltip\";\n\nimport { SIDE_MAP } from \"./constants\";\n\nexport interface KbdProps extends React.ComponentProps<typeof PrimitiveKbd> {\n /** Optional tooltip to display on hover. */\n tooltipProps?: {\n content?: React.ReactNode;\n position?: string;\n };\n /** Additional CSS class names. */\n className?: string;\n}\n\nconst Kbd = forwardRef<HTMLElement, KbdProps>(\n ({ tooltipProps, className, ...otherProps }, ref) => {\n const kbd = (\n <PrimitiveKbd ref={ref} className={cn(className)} {...otherProps} />\n );\n\n if (!tooltipProps?.content) {\n return kbd;\n }\n\n const side = SIDE_MAP[tooltipProps.position ?? \"auto\"] ?? \"top\";\n\n return (\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>{kbd}</TooltipTrigger>\n <TooltipContent side={side}>{tooltipProps.content}</TooltipContent>\n </Tooltip>\n </TooltipProvider>\n );\n }\n);\n\nKbd.displayName = \"Kbd\";\n\nconst KbdGroup = PrimitiveKbdGroup;\n\nconst KbdNamespace = Object.assign(Kbd, { Group: KbdGroup });\n\nexport { KbdNamespace as Kbd };\n"],"names":["forwardRef","_jsx","PrimitiveKbd","cn","TooltipProvider","_jsxs","Tooltip","TooltipTrigger","TooltipContent","PrimitiveKbdGroup"],"mappings":";;;;;;;;AAAO,MAAM,QAAQ,GAAwD;AAC3E,IAAA,GAAG,EAAE,KAAK;AACV,IAAA,MAAM,EAAE,QAAQ;AAChB,IAAA,IAAI,EAAE,MAAM;AACZ,IAAA,KAAK,EAAE,OAAO;AACd,IAAA,WAAW,EAAE,KAAK;AAClB,IAAA,SAAS,EAAE,KAAK;AAChB,IAAA,cAAc,EAAE,QAAQ;AACxB,IAAA,YAAY,EAAE,QAAQ;AACtB,IAAA,YAAY,EAAE,MAAM;AACpB,IAAA,UAAU,EAAE,MAAM;AAClB,IAAA,aAAa,EAAE,OAAO;AACtB,IAAA,WAAW,EAAE,OAAO;AACpB,IAAA,IAAI,EAAE,KAAK;CACZ;;ACYD,MAAM,GAAG,GAAGA,gBAAU,CACpB,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,GAAG,UAAU,EAAE,EAAE,GAAG,KAAI;IAClD,MAAM,GAAG,IACPC,cAAA,CAACC,kBAAY,EAAA,EAAC,GAAG,EAAE,GAAG,EAAE,SAAS,EAAEC,QAAE,CAAC,SAAS,CAAC,KAAM,UAAU,EAAA,CAAI,CACrE;AAED,IAAA,IAAI,CAAC,YAAY,EAAE,OAAO,EAAE;AAC1B,QAAA,OAAO,GAAG;IACZ;AAEA,IAAA,MAAM,IAAI,GAAG,QAAQ,CAAC,YAAY,CAAC,QAAQ,IAAI,MAAM,CAAC,IAAI,KAAK;AAE/D,IAAA,QACEF,cAAA,CAACG,kCAAe,EAAA,EAAA,QAAA,EACdC,eAAA,CAACC,0BAAO,EAAA,EAAA,QAAA,EAAA,CACNL,cAAA,CAACM,iCAAc,EAAA,EAAC,OAAO,EAAA,IAAA,EAAA,QAAA,EAAE,GAAG,EAAA,CAAkB,EAC9CN,cAAA,CAACO,iCAAc,EAAA,EAAC,IAAI,EAAE,IAAI,EAAA,QAAA,EAAG,YAAY,CAAC,OAAO,EAAA,CAAkB,CAAA,EAAA,CAC3D,EAAA,CACM;AAEtB,CAAC,CACF;AAED,GAAG,CAAC,WAAW,GAAG,KAAK;AAEvB,MAAM,QAAQ,GAAGC,uBAAiB;AAElC,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE;;;;"}
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
-
var React = require('react');
|
|
5
|
-
var utils = require('./utils-CTr7wn5d.js');
|
|
6
|
-
var renderIcon = require('./renderIcon-fLF3odqg.js');
|
|
7
|
-
var primitives_Label = require('./primitives/Label.js');
|
|
8
|
-
var primitives_Tooltip = require('./primitives/Tooltip.js');
|
|
9
|
-
var Popover = require('./Popover-DRT0YYzK.js');
|
|
10
|
-
var Button = require('./Button-BniJ4TT_.js');
|
|
11
|
-
var createLucideIcon = require('./createLucideIcon-D0tRgV6l.js');
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
* @license lucide-react v0.577.0 - ISC
|
|
15
|
-
*
|
|
16
|
-
* This source code is licensed under the ISC license.
|
|
17
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
18
|
-
*/
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
const __iconNode = [
|
|
22
|
-
["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
|
|
23
|
-
["path", { d: "M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3", key: "1u773s" }],
|
|
24
|
-
["path", { d: "M12 17h.01", key: "p32p05" }]
|
|
25
|
-
];
|
|
26
|
-
const CircleQuestionMark = createLucideIcon.createLucideIcon("circle-question-mark", __iconNode);
|
|
27
|
-
|
|
28
|
-
const SIDE_MAP = {
|
|
29
|
-
top: "top",
|
|
30
|
-
bottom: "bottom",
|
|
31
|
-
left: "left",
|
|
32
|
-
right: "right",
|
|
33
|
-
auto: "top",
|
|
34
|
-
};
|
|
35
|
-
|
|
36
|
-
const Label = React.forwardRef(({ required, helpIconProps, className, children, ...otherProps }, ref) => {
|
|
37
|
-
const helpIcon = helpIconProps?.icon ?? CircleQuestionMark;
|
|
38
|
-
const iconElement = (jsxRuntime.jsx("span", { className: utils.cn("inline-flex cursor-help text-muted-foreground transition-colors hover:text-foreground", helpIconProps?.onClick && "cursor-pointer", helpIconProps?.className), onClick: helpIconProps?.onClick, children: renderIcon.renderIcon(helpIcon, "size-3.5") }));
|
|
39
|
-
const renderHelpIcon = () => {
|
|
40
|
-
if (!helpIconProps)
|
|
41
|
-
return null;
|
|
42
|
-
// Popover mode
|
|
43
|
-
if (helpIconProps.popoverProps) {
|
|
44
|
-
const { title, description, helpLinkProps } = helpIconProps.popoverProps;
|
|
45
|
-
return (jsxRuntime.jsxs(Popover.Popover, { trigger: iconElement, children: [title && jsxRuntime.jsx(Popover.Popover.Title, { children: title }), description && (jsxRuntime.jsx("p", { className: "text-sm text-muted-foreground", children: description })), helpLinkProps && (jsxRuntime.jsx(Button.Button, { variant: "link", size: "sm", className: "mt-1 h-auto self-start p-0", ...helpLinkProps, href: helpLinkProps.href }))] }));
|
|
46
|
-
}
|
|
47
|
-
// Tooltip mode
|
|
48
|
-
if (helpIconProps.tooltipProps?.content) {
|
|
49
|
-
const side = SIDE_MAP[helpIconProps.tooltipProps.position ?? "auto"] ?? "top";
|
|
50
|
-
return (jsxRuntime.jsx(primitives_Tooltip.TooltipProvider, { children: jsxRuntime.jsxs(primitives_Tooltip.Tooltip, { children: [jsxRuntime.jsx(primitives_Tooltip.TooltipTrigger, { asChild: true, children: iconElement }), jsxRuntime.jsx(primitives_Tooltip.TooltipContent, { side: side, children: helpIconProps.tooltipProps.content })] }) }));
|
|
51
|
-
}
|
|
52
|
-
// Icon only (with optional onClick)
|
|
53
|
-
return iconElement;
|
|
54
|
-
};
|
|
55
|
-
return (jsxRuntime.jsxs(primitives_Label.Label, { ref: ref, className: utils.cn(className), ...otherProps, children: [children, required && (jsxRuntime.jsx("span", { "aria-hidden": "true", className: "text-destructive", children: "*" })), renderHelpIcon()] }));
|
|
56
|
-
});
|
|
57
|
-
Label.displayName = "Label";
|
|
58
|
-
|
|
59
|
-
exports.Label = Label;
|
|
60
|
-
//# sourceMappingURL=Label-B7FbeB5i.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Label-B7FbeB5i.js","sources":["../../node_modules/lucide-react/dist/esm/icons/circle-question-mark.js","../../../src/components/Label/constants.ts","../../../src/components/Label/Label.tsx"],"sourcesContent":["/**\n * @license lucide-react v0.577.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"10\", key: \"1mglay\" }],\n [\"path\", { d: \"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3\", key: \"1u773s\" }],\n [\"path\", { d: \"M12 17h.01\", key: \"p32p05\" }]\n];\nconst CircleQuestionMark = createLucideIcon(\"circle-question-mark\", __iconNode);\n\nexport { __iconNode, CircleQuestionMark as default };\n//# sourceMappingURL=circle-question-mark.js.map\n","export const SIDE_MAP: Record<string, \"top\" | \"right\" | \"bottom\" | \"left\"> = {\n top: \"top\",\n bottom: \"bottom\",\n left: \"left\",\n right: \"right\",\n auto: \"top\",\n};\n","import React, { forwardRef } from \"react\";\n\nimport { CircleHelpIcon } from \"lucide-react\";\n\nimport { cn } from \"src/shadcn/lib/utils\";\nimport { renderIcon, type IconProp } from \"src/lib/renderIcon\";\nimport { Label as PrimitiveLabel } from \"src/primitives/Label\";\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from \"src/primitives/Tooltip\";\nimport { Popover } from \"src/components/Popover\";\nimport { Button, type ButtonProps } from \"src/components/Button\";\n\nimport { SIDE_MAP } from \"./constants\";\n\ninterface HelpIconTooltipProps {\n /** Tooltip content. */\n content?: React.ReactNode;\n /** Tooltip position. */\n position?: string;\n}\n\ninterface HelpIconPopoverProps {\n /** Popover title. */\n title?: React.ReactNode;\n /** Popover description. */\n description?: React.ReactNode;\n /** Props for an optional help link button inside the popover. */\n helpLinkProps?: ButtonProps;\n}\n\ninterface HelpIconProps {\n /** Click handler on the help icon. */\n onClick?: () => void;\n /** Custom icon. Defaults to CircleHelpIcon. */\n icon?: IconProp;\n /** Show a tooltip on hover. */\n tooltipProps?: HelpIconTooltipProps;\n /** Show a popover on hover with title, description, and optional link. */\n popoverProps?: HelpIconPopoverProps;\n /** Additional class name for the help icon. */\n className?: string;\n}\n\nexport interface LabelProps extends React.ComponentProps<\n typeof PrimitiveLabel\n> {\n /** Shows a red asterisk after the label text. */\n required?: boolean;\n /** Props for the help icon (tooltip or popover mode). */\n helpIconProps?: HelpIconProps;\n /** Additional CSS class names. */\n className?: string;\n}\n\nconst Label = forwardRef<HTMLLabelElement, LabelProps>(\n ({ required, helpIconProps, className, children, ...otherProps }, ref) => {\n const helpIcon = helpIconProps?.icon ?? CircleHelpIcon;\n\n const iconElement = (\n <span\n className={cn(\n \"inline-flex cursor-help text-muted-foreground transition-colors hover:text-foreground\",\n helpIconProps?.onClick && \"cursor-pointer\",\n helpIconProps?.className\n )}\n onClick={helpIconProps?.onClick}\n >\n {renderIcon(helpIcon, \"size-3.5\")}\n </span>\n );\n\n const renderHelpIcon = () => {\n if (!helpIconProps) return null;\n\n // Popover mode\n if (helpIconProps.popoverProps) {\n const { title, description, helpLinkProps } =\n helpIconProps.popoverProps;\n\n return (\n <Popover trigger={iconElement}>\n {title && <Popover.Title>{title}</Popover.Title>}\n {description && (\n <p className=\"text-sm text-muted-foreground\">{description}</p>\n )}\n {helpLinkProps && (\n <Button\n variant=\"link\"\n size=\"sm\"\n className=\"mt-1 h-auto self-start p-0\"\n {...helpLinkProps}\n href={helpLinkProps.href}\n />\n )}\n </Popover>\n );\n }\n\n // Tooltip mode\n if (helpIconProps.tooltipProps?.content) {\n const side =\n SIDE_MAP[helpIconProps.tooltipProps.position ?? \"auto\"] ?? \"top\";\n\n return (\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>{iconElement}</TooltipTrigger>\n <TooltipContent side={side}>\n {helpIconProps.tooltipProps.content}\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n );\n }\n\n // Icon only (with optional onClick)\n return iconElement;\n };\n\n return (\n <PrimitiveLabel ref={ref} className={cn(className)} {...otherProps}>\n {children}\n {required && (\n <span aria-hidden=\"true\" className=\"text-destructive\">\n *\n </span>\n )}\n {renderHelpIcon()}\n </PrimitiveLabel>\n );\n }\n);\n\nLabel.displayName = \"Label\";\n\nexport { Label };\n"],"names":["createLucideIcon","forwardRef","CircleHelpIcon","_jsx","cn","renderIcon","_jsxs","Popover","Button","TooltipProvider","Tooltip","TooltipTrigger","TooltipContent","PrimitiveLabel"],"mappings":"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","x_google_ignoreList":[0]}
|
|
@@ -1,141 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
-
var React = require('react');
|
|
5
|
-
var utils = require('./utils-CTr7wn5d.js');
|
|
6
|
-
var primitives_Field = require('./primitives/Field.js');
|
|
7
|
-
var x = require('./x-Brw3FJst.js');
|
|
8
|
-
|
|
9
|
-
const EMAIL_REGEX = /^[A-Z0-9._%+-]+@[A-Z0-9-]+(?:\.[A-Z0-9-]+)*\.[A-Z]{2,}$/i;
|
|
10
|
-
const UNSTRICT_EMAIL_REGEX = /(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))/g;
|
|
11
|
-
const EMAIL_SEPARATION_REGEX = /[^\s,]+/g;
|
|
12
|
-
|
|
13
|
-
const formatEmailInputOption = (email) => ({
|
|
14
|
-
label: email,
|
|
15
|
-
value: email,
|
|
16
|
-
valid: EMAIL_REGEX.test(email),
|
|
17
|
-
});
|
|
18
|
-
const pruneDuplicates = (existing, newEmailStrings) => {
|
|
19
|
-
const seen = new Set(existing.map(e => e.value.toLowerCase()));
|
|
20
|
-
const duplicates = [];
|
|
21
|
-
const added = [];
|
|
22
|
-
for (const emailStr of newEmailStrings) {
|
|
23
|
-
const lower = emailStr.toLowerCase();
|
|
24
|
-
if (seen.has(lower)) {
|
|
25
|
-
duplicates.push(emailStr);
|
|
26
|
-
}
|
|
27
|
-
else {
|
|
28
|
-
seen.add(lower);
|
|
29
|
-
added.push(formatEmailInputOption(emailStr));
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
return { uniqueEmails: [...existing, ...added], duplicates };
|
|
33
|
-
};
|
|
34
|
-
const filterValidEmails = (emails) => emails.filter(email => email.valid);
|
|
35
|
-
const pluralizeEmail = (count) => count === 1 ? "email" : "emails";
|
|
36
|
-
const formatDuplicateWarning = (duplicates) => {
|
|
37
|
-
const count = duplicates.length;
|
|
38
|
-
return `Removed ${count} duplicate ${pluralizeEmail(count)} from the list: ${duplicates.join(", ")}`;
|
|
39
|
-
};
|
|
40
|
-
|
|
41
|
-
function useMultiEmailState(props) {
|
|
42
|
-
const { value = [], onChange, onBlur, visibleEmailsCount = 3, isAlwaysExpanded = false, counter, filterInvalidEmails, } = props;
|
|
43
|
-
const [inputValue, setInputValue] = React.useState("");
|
|
44
|
-
const [isFocused, setIsFocused] = React.useState(false);
|
|
45
|
-
const [duplicateEmails, setDuplicateEmails] = React.useState([]);
|
|
46
|
-
const addEmails = React.useCallback((input) => {
|
|
47
|
-
const trimmed = input.trim();
|
|
48
|
-
if (!trimmed)
|
|
49
|
-
return;
|
|
50
|
-
UNSTRICT_EMAIL_REGEX.lastIndex = 0;
|
|
51
|
-
EMAIL_SEPARATION_REGEX.lastIndex = 0;
|
|
52
|
-
const emailMatches = trimmed.match(UNSTRICT_EMAIL_REGEX) ||
|
|
53
|
-
trimmed.match(EMAIL_SEPARATION_REGEX) ||
|
|
54
|
-
[];
|
|
55
|
-
if (emailMatches.length === 0)
|
|
56
|
-
return;
|
|
57
|
-
const { uniqueEmails, duplicates } = pruneDuplicates(value, emailMatches);
|
|
58
|
-
onChange?.(uniqueEmails);
|
|
59
|
-
setDuplicateEmails(duplicates);
|
|
60
|
-
setInputValue("");
|
|
61
|
-
}, [value, onChange]);
|
|
62
|
-
const handleKeyDown = React.useCallback((event) => {
|
|
63
|
-
if (!inputValue && event.key === "Backspace" && value.length > 0) {
|
|
64
|
-
onChange?.(value.slice(0, -1));
|
|
65
|
-
return;
|
|
66
|
-
}
|
|
67
|
-
if (!inputValue)
|
|
68
|
-
return;
|
|
69
|
-
if (["Enter", "Tab", ",", " "].includes(event.key)) {
|
|
70
|
-
addEmails(inputValue);
|
|
71
|
-
event.preventDefault();
|
|
72
|
-
event.stopPropagation();
|
|
73
|
-
}
|
|
74
|
-
}, [inputValue, value, onChange, addEmails]);
|
|
75
|
-
const handlePaste = React.useCallback((event) => {
|
|
76
|
-
const text = event.clipboardData.getData("text");
|
|
77
|
-
if (!text)
|
|
78
|
-
return;
|
|
79
|
-
event.preventDefault();
|
|
80
|
-
addEmails(text);
|
|
81
|
-
}, [addEmails]);
|
|
82
|
-
const handleBlur = React.useCallback(() => {
|
|
83
|
-
if (inputValue) {
|
|
84
|
-
addEmails(inputValue);
|
|
85
|
-
}
|
|
86
|
-
else {
|
|
87
|
-
onBlur?.();
|
|
88
|
-
}
|
|
89
|
-
setIsFocused(false);
|
|
90
|
-
setDuplicateEmails([]);
|
|
91
|
-
}, [inputValue, addEmails, onBlur]);
|
|
92
|
-
const handleFocus = React.useCallback(() => setIsFocused(true), []);
|
|
93
|
-
const handleChipRemove = React.useCallback((emailValue) => onChange?.(value.filter(e => e.value !== emailValue)), [value, onChange]);
|
|
94
|
-
const handleFilterInvalidEmails = React.useCallback(() => onChange?.(filterValidEmails(value)), [value, onChange]);
|
|
95
|
-
const validCount = React.useMemo(() => value.filter(e => e.valid).length, [value]);
|
|
96
|
-
const isCounterVisible = !!counter &&
|
|
97
|
-
(typeof counter === "boolean" ||
|
|
98
|
-
!counter.startsFrom ||
|
|
99
|
-
validCount >= counter.startsFrom);
|
|
100
|
-
const shouldCollapse = !isAlwaysExpanded && !isFocused && value.length > visibleEmailsCount;
|
|
101
|
-
const visibleEmails = shouldCollapse
|
|
102
|
-
? value.slice(0, visibleEmailsCount)
|
|
103
|
-
: value;
|
|
104
|
-
const hiddenCount = shouldCollapse ? value.length - visibleEmailsCount : 0;
|
|
105
|
-
const isFilterLinkVisible = !!filterInvalidEmails && value.length > validCount;
|
|
106
|
-
return {
|
|
107
|
-
inputValue,
|
|
108
|
-
setInputValue,
|
|
109
|
-
isFocused,
|
|
110
|
-
duplicateEmails,
|
|
111
|
-
handleKeyDown,
|
|
112
|
-
handlePaste,
|
|
113
|
-
handleBlur,
|
|
114
|
-
handleFocus,
|
|
115
|
-
handleChipRemove,
|
|
116
|
-
handleFilterInvalidEmails,
|
|
117
|
-
isCounterVisible,
|
|
118
|
-
validCount,
|
|
119
|
-
visibleEmails,
|
|
120
|
-
hiddenCount,
|
|
121
|
-
isFilterLinkVisible,
|
|
122
|
-
};
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
const CHIP_BASE = "flex h-[calc(--spacing(5.25))] w-fit items-center justify-center gap-1 rounded-sm bg-muted px-1.5 text-xs font-medium whitespace-nowrap text-foreground";
|
|
126
|
-
const CHIP_INVALID = "border border-destructive text-destructive bg-destructive/10";
|
|
127
|
-
const CHIPS_CONTAINER = "flex min-h-8 flex-wrap items-center gap-1 rounded-lg border border-input bg-transparent bg-clip-padding px-2.5 py-1 text-sm transition-colors focus-within:border-ring focus-within:ring-3 focus-within:ring-ring/50";
|
|
128
|
-
const CHIPS_ERROR = "border-destructive ring-3 ring-destructive/20 dark:border-destructive/50 dark:ring-destructive/40";
|
|
129
|
-
const MultiEmailInput = React.forwardRef((props, ref) => {
|
|
130
|
-
const { label, placeholder = "", helpText, error, disabled = false, required = false, maxHeight = 200, counter, filterInvalidEmails, prefix, suffix, labelProps, className, } = props;
|
|
131
|
-
const id = React.useId();
|
|
132
|
-
const s = useMultiEmailState(props);
|
|
133
|
-
return (jsxRuntime.jsxs(primitives_Field.Field, { className: utils.cn("flex flex-col gap-1.5", className), children: [(label || s.isCounterVisible) && (jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [label && (jsxRuntime.jsxs(primitives_Field.FieldLabel, { htmlFor: id, ...labelProps, children: [label, required && (jsxRuntime.jsx("span", { "aria-hidden": "true", className: "text-destructive", children: " *" }))] })), s.isCounterVisible && (jsxRuntime.jsxs("span", { className: "text-xs text-muted-foreground", children: [s.validCount, " ", typeof counter === "object" && counter?.label
|
|
134
|
-
? counter.label
|
|
135
|
-
: pluralizeEmail(s.validCount)] }))] })), jsxRuntime.jsxs("div", { className: utils.cn(CHIPS_CONTAINER, !!error && CHIPS_ERROR, disabled && "pointer-events-none opacity-50"), style: { maxHeight: `${maxHeight}px`, overflowY: "auto" }, children: [prefix && jsxRuntime.jsx("div", { className: "shrink-0", children: prefix }), s.visibleEmails.map(email => (jsxRuntime.jsxs("span", { className: utils.cn(CHIP_BASE, !email.valid && CHIP_INVALID), children: [email.label, !disabled && (jsxRuntime.jsx("button", { type: "button", tabIndex: -1, className: "-ms-0.5 rounded-xs opacity-50 hover:opacity-100", onMouseDown: e => e.preventDefault(), onClick: () => s.handleChipRemove(email.value), "aria-label": `Remove ${email.label}`, children: jsxRuntime.jsx(x.X, { className: "size-3 pointer-events-none" }) }))] }, email.value))), s.hiddenCount > 0 && (jsxRuntime.jsxs("span", { className: "flex h-[calc(--spacing(5.25))] items-center rounded-sm bg-secondary px-1.5 text-xs font-medium text-secondary-foreground", children: ["+", s.hiddenCount, " more"] })), jsxRuntime.jsx("input", { ref: ref, id: id, type: "text", value: s.inputValue, onChange: e => s.setInputValue(e.target.value), onKeyDown: s.handleKeyDown, onPaste: s.handlePaste, onFocus: s.handleFocus, onBlur: s.handleBlur, placeholder: props.value?.length ? "" : placeholder, disabled: disabled, className: "min-w-16 flex-1 bg-transparent text-sm outline-none placeholder:text-muted-foreground" }), suffix && jsxRuntime.jsx("div", { className: "shrink-0", children: suffix })] }), jsxRuntime.jsxs(primitives_Field.FieldContent, { children: [!!error && (jsxRuntime.jsxs("p", { className: "text-[0.8rem] text-destructive", children: [error, s.isFilterLinkVisible && (jsxRuntime.jsx("button", { type: "button", className: "ml-1 cursor-pointer font-semibold underline", onClick: s.handleFilterInvalidEmails, children: filterInvalidEmails?.label ??
|
|
136
|
-
"Click here to remove invalid emails." }))] })), !!helpText && (jsxRuntime.jsx("p", { className: "text-[0.8rem] text-muted-foreground", children: helpText })), s.duplicateEmails.length > 0 && (jsxRuntime.jsx("p", { className: "text-[0.8rem] text-amber-600 dark:text-amber-400", children: formatDuplicateWarning(s.duplicateEmails) }))] })] }));
|
|
137
|
-
});
|
|
138
|
-
MultiEmailInput.displayName = "MultiEmailInput";
|
|
139
|
-
|
|
140
|
-
exports.MultiEmailInput = MultiEmailInput;
|
|
141
|
-
//# sourceMappingURL=MultiEmailInput-l0_YVjbp.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MultiEmailInput-l0_YVjbp.js","sources":["../../../src/components/MultiEmailInput/constants.ts","../../../src/components/MultiEmailInput/utils.ts","../../../src/components/MultiEmailInput/useMultiEmailState.ts","../../../src/components/MultiEmailInput/MultiEmailInput.tsx"],"sourcesContent":["export const EMAIL_REGEX = /^[A-Z0-9._%+-]+@[A-Z0-9-]+(?:\\.[A-Z0-9-]+)*\\.[A-Z]{2,}$/i;\n\nexport const UNSTRICT_EMAIL_REGEX =\n /(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))/g;\n\nexport const EMAIL_SEPARATION_REGEX = /[^\\s,]+/g;\n","import { EMAIL_REGEX } from \"./constants\";\nimport type { EmailValue } from \"./types\";\n\nexport const formatEmailInputOption = (email: string): EmailValue => ({\n label: email,\n value: email,\n valid: EMAIL_REGEX.test(email),\n});\n\nexport const pruneDuplicates = (\n existing: EmailValue[],\n newEmailStrings: string[]\n): { uniqueEmails: EmailValue[]; duplicates: string[] } => {\n const seen = new Set(existing.map(e => e.value.toLowerCase()));\n const duplicates: string[] = [];\n const added: EmailValue[] = [];\n\n for (const emailStr of newEmailStrings) {\n const lower = emailStr.toLowerCase();\n if (seen.has(lower)) {\n duplicates.push(emailStr);\n } else {\n seen.add(lower);\n added.push(formatEmailInputOption(emailStr));\n }\n }\n\n return { uniqueEmails: [...existing, ...added], duplicates };\n};\n\nexport const filterValidEmails = (emails: EmailValue[]): EmailValue[] =>\n emails.filter(email => email.valid);\n\nexport const pluralizeEmail = (count: number): string =>\n count === 1 ? \"email\" : \"emails\";\n\nexport const formatDuplicateWarning = (duplicates: string[]): string => {\n const count = duplicates.length;\n\n return `Removed ${count} duplicate ${pluralizeEmail(count)} from the list: ${duplicates.join(\", \")}`;\n};\n","import { useState, useCallback, useMemo } from \"react\";\n\nimport { UNSTRICT_EMAIL_REGEX, EMAIL_SEPARATION_REGEX } from \"./constants\";\nimport { pruneDuplicates, filterValidEmails } from \"./utils\";\nimport type { MultiEmailInputProps } from \"./types\";\n\nexport function useMultiEmailState(props: MultiEmailInputProps) {\n const {\n value = [],\n onChange,\n onBlur,\n visibleEmailsCount = 3,\n isAlwaysExpanded = false,\n counter,\n filterInvalidEmails,\n } = props;\n\n const [inputValue, setInputValue] = useState(\"\");\n const [isFocused, setIsFocused] = useState(false);\n const [duplicateEmails, setDuplicateEmails] = useState<string[]>([]);\n\n const addEmails = useCallback(\n (input: string) => {\n const trimmed = input.trim();\n if (!trimmed) return;\n UNSTRICT_EMAIL_REGEX.lastIndex = 0;\n EMAIL_SEPARATION_REGEX.lastIndex = 0;\n const emailMatches =\n trimmed.match(UNSTRICT_EMAIL_REGEX) ||\n trimmed.match(EMAIL_SEPARATION_REGEX) ||\n [];\n if (emailMatches.length === 0) return;\n const { uniqueEmails, duplicates } = pruneDuplicates(value, emailMatches);\n onChange?.(uniqueEmails);\n setDuplicateEmails(duplicates);\n setInputValue(\"\");\n },\n [value, onChange]\n );\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (!inputValue && event.key === \"Backspace\" && value.length > 0) {\n onChange?.(value.slice(0, -1));\n return;\n }\n if (!inputValue) return;\n if ([\"Enter\", \"Tab\", \",\", \" \"].includes(event.key)) {\n addEmails(inputValue);\n event.preventDefault();\n event.stopPropagation();\n }\n },\n [inputValue, value, onChange, addEmails]\n );\n\n const handlePaste = useCallback(\n (event: React.ClipboardEvent<HTMLInputElement>) => {\n const text = event.clipboardData.getData(\"text\");\n if (!text) return;\n event.preventDefault();\n addEmails(text);\n },\n [addEmails]\n );\n\n const handleBlur = useCallback(() => {\n if (inputValue) {\n addEmails(inputValue);\n } else {\n onBlur?.();\n }\n setIsFocused(false);\n setDuplicateEmails([]);\n }, [inputValue, addEmails, onBlur]);\n\n const handleFocus = useCallback(() => setIsFocused(true), []);\n\n const handleChipRemove = useCallback(\n (emailValue: string) =>\n onChange?.(value.filter(e => e.value !== emailValue)),\n [value, onChange]\n );\n\n const handleFilterInvalidEmails = useCallback(\n () => onChange?.(filterValidEmails(value)),\n [value, onChange]\n );\n\n const validCount = useMemo(() => value.filter(e => e.valid).length, [value]);\n const isCounterVisible =\n !!counter &&\n (typeof counter === \"boolean\" ||\n !counter.startsFrom ||\n validCount >= counter.startsFrom);\n const shouldCollapse =\n !isAlwaysExpanded && !isFocused && value.length > visibleEmailsCount;\n const visibleEmails = shouldCollapse\n ? value.slice(0, visibleEmailsCount)\n : value;\n const hiddenCount = shouldCollapse ? value.length - visibleEmailsCount : 0;\n const isFilterLinkVisible =\n !!filterInvalidEmails && value.length > validCount;\n\n return {\n inputValue,\n setInputValue,\n isFocused,\n duplicateEmails,\n handleKeyDown,\n handlePaste,\n handleBlur,\n handleFocus,\n handleChipRemove,\n handleFilterInvalidEmails,\n isCounterVisible,\n validCount,\n visibleEmails,\n hiddenCount,\n isFilterLinkVisible,\n };\n}\n","import { forwardRef, useId } from \"react\";\nimport { XIcon } from \"lucide-react\";\n\nimport { cn } from \"src/shadcn/lib/utils\";\nimport { Field, FieldLabel, FieldContent } from \"src/primitives/Field\";\nimport { useMultiEmailState } from \"./useMultiEmailState\";\nimport { pluralizeEmail, formatDuplicateWarning } from \"./utils\";\nimport type { MultiEmailInputProps } from \"./types\";\n\nconst CHIP_BASE =\n \"flex h-[calc(--spacing(5.25))] w-fit items-center justify-center gap-1 rounded-sm bg-muted px-1.5 text-xs font-medium whitespace-nowrap text-foreground\";\nconst CHIP_INVALID =\n \"border border-destructive text-destructive bg-destructive/10\";\nconst CHIPS_CONTAINER =\n \"flex min-h-8 flex-wrap items-center gap-1 rounded-lg border border-input bg-transparent bg-clip-padding px-2.5 py-1 text-sm transition-colors focus-within:border-ring focus-within:ring-3 focus-within:ring-ring/50\";\nconst CHIPS_ERROR =\n \"border-destructive ring-3 ring-destructive/20 dark:border-destructive/50 dark:ring-destructive/40\";\n\nexport const MultiEmailInput = forwardRef<\n HTMLInputElement,\n MultiEmailInputProps\n>((props, ref) => {\n const {\n label,\n placeholder = \"\",\n helpText,\n error,\n disabled = false,\n required = false,\n maxHeight = 200,\n counter,\n filterInvalidEmails,\n prefix,\n suffix,\n labelProps,\n className,\n } = props;\n const id = useId();\n const s = useMultiEmailState(props);\n\n return (\n <Field className={cn(\"flex flex-col gap-1.5\", className)}>\n {(label || s.isCounterVisible) && (\n <div className=\"flex items-center justify-between\">\n {label && (\n <FieldLabel htmlFor={id} {...labelProps}>\n {label}\n {required && (\n <span aria-hidden=\"true\" className=\"text-destructive\">\n {\" *\"}\n </span>\n )}\n </FieldLabel>\n )}\n {s.isCounterVisible && (\n <span className=\"text-xs text-muted-foreground\">\n {s.validCount}{\" \"}\n {typeof counter === \"object\" && counter?.label\n ? counter.label\n : pluralizeEmail(s.validCount)}\n </span>\n )}\n </div>\n )}\n <div\n className={cn(\n CHIPS_CONTAINER,\n !!error && CHIPS_ERROR,\n disabled && \"pointer-events-none opacity-50\"\n )}\n style={{ maxHeight: `${maxHeight}px`, overflowY: \"auto\" }}\n >\n {prefix && <div className=\"shrink-0\">{prefix}</div>}\n {s.visibleEmails.map(email => (\n <span\n key={email.value}\n className={cn(CHIP_BASE, !email.valid && CHIP_INVALID)}\n >\n {email.label}\n {!disabled && (\n <button\n type=\"button\"\n tabIndex={-1}\n className=\"-ms-0.5 rounded-xs opacity-50 hover:opacity-100\"\n onMouseDown={e => e.preventDefault()}\n onClick={() => s.handleChipRemove(email.value)}\n aria-label={`Remove ${email.label}`}\n >\n <XIcon className=\"size-3 pointer-events-none\" />\n </button>\n )}\n </span>\n ))}\n {s.hiddenCount > 0 && (\n <span className=\"flex h-[calc(--spacing(5.25))] items-center rounded-sm bg-secondary px-1.5 text-xs font-medium text-secondary-foreground\">\n +{s.hiddenCount} more\n </span>\n )}\n <input\n ref={ref}\n id={id}\n type=\"text\"\n value={s.inputValue}\n onChange={e => s.setInputValue(e.target.value)}\n onKeyDown={s.handleKeyDown}\n onPaste={s.handlePaste}\n onFocus={s.handleFocus}\n onBlur={s.handleBlur}\n placeholder={props.value?.length ? \"\" : placeholder}\n disabled={disabled}\n className=\"min-w-16 flex-1 bg-transparent text-sm outline-none placeholder:text-muted-foreground\"\n />\n {suffix && <div className=\"shrink-0\">{suffix}</div>}\n </div>\n <FieldContent>\n {!!error && (\n <p className=\"text-[0.8rem] text-destructive\">\n {error}\n {s.isFilterLinkVisible && (\n <button\n type=\"button\"\n className=\"ml-1 cursor-pointer font-semibold underline\"\n onClick={s.handleFilterInvalidEmails}\n >\n {filterInvalidEmails?.label ??\n \"Click here to remove invalid emails.\"}\n </button>\n )}\n </p>\n )}\n {!!helpText && (\n <p className=\"text-[0.8rem] text-muted-foreground\">{helpText}</p>\n )}\n {s.duplicateEmails.length > 0 && (\n <p className=\"text-[0.8rem] text-amber-600 dark:text-amber-400\">\n {formatDuplicateWarning(s.duplicateEmails)}\n </p>\n )}\n </FieldContent>\n </Field>\n );\n});\nMultiEmailInput.displayName = \"MultiEmailInput\";\n"],"names":["useState","useCallback","useMemo","forwardRef","useId","_jsxs","Field","cn","FieldLabel","_jsx","XIcon","FieldContent"],"mappings":";;;;;;;;AAAO,MAAM,WAAW,GAAG,0DAA0D;AAE9E,MAAM,oBAAoB,GAC/B,sJAAsJ;AAEjJ,MAAM,sBAAsB,GAAG,UAAU;;ACFzC,MAAM,sBAAsB,GAAG,CAAC,KAAa,MAAkB;AACpE,IAAA,KAAK,EAAE,KAAK;AACZ,IAAA,KAAK,EAAE,KAAK;AACZ,IAAA,KAAK,EAAE,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;AAC/B,CAAA,CAAC;AAEK,MAAM,eAAe,GAAG,CAC7B,QAAsB,EACtB,eAAyB,KAC+B;IACxD,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;IAC9D,MAAM,UAAU,GAAa,EAAE;IAC/B,MAAM,KAAK,GAAiB,EAAE;AAE9B,IAAA,KAAK,MAAM,QAAQ,IAAI,eAAe,EAAE;AACtC,QAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,EAAE;AACpC,QAAA,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;AACnB,YAAA,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC;QAC3B;aAAO;AACL,YAAA,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;YACf,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC;QAC9C;IACF;AAEA,IAAA,OAAO,EAAE,YAAY,EAAE,CAAC,GAAG,QAAQ,EAAE,GAAG,KAAK,CAAC,EAAE,UAAU,EAAE;AAC9D,CAAC;AAEM,MAAM,iBAAiB,GAAG,CAAC,MAAoB,KACpD,MAAM,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC;AAE9B,MAAM,cAAc,GAAG,CAAC,KAAa,KAC1C,KAAK,KAAK,CAAC,GAAG,OAAO,GAAG,QAAQ;AAE3B,MAAM,sBAAsB,GAAG,CAAC,UAAoB,KAAY;AACrE,IAAA,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM;AAE/B,IAAA,OAAO,CAAA,QAAA,EAAW,KAAK,CAAA,WAAA,EAAc,cAAc,CAAC,KAAK,CAAC,CAAA,gBAAA,EAAmB,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AACtG,CAAC;;AClCK,SAAU,kBAAkB,CAAC,KAA2B,EAAA;IAC5D,MAAM,EACJ,KAAK,GAAG,EAAE,EACV,QAAQ,EACR,MAAM,EACN,kBAAkB,GAAG,CAAC,EACtB,gBAAgB,GAAG,KAAK,EACxB,OAAO,EACP,mBAAmB,GACpB,GAAG,KAAK;IAET,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAGA,cAAQ,CAAC,EAAE,CAAC;IAChD,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAGA,cAAQ,CAAC,KAAK,CAAC;IACjD,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAGA,cAAQ,CAAW,EAAE,CAAC;AAEpE,IAAA,MAAM,SAAS,GAAGC,iBAAW,CAC3B,CAAC,KAAa,KAAI;AAChB,QAAA,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE;AAC5B,QAAA,IAAI,CAAC,OAAO;YAAE;AACd,QAAA,oBAAoB,CAAC,SAAS,GAAG,CAAC;AAClC,QAAA,sBAAsB,CAAC,SAAS,GAAG,CAAC;AACpC,QAAA,MAAM,YAAY,GAChB,OAAO,CAAC,KAAK,CAAC,oBAAoB,CAAC;AACnC,YAAA,OAAO,CAAC,KAAK,CAAC,sBAAsB,CAAC;AACrC,YAAA,EAAE;AACJ,QAAA,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC;YAAE;AAC/B,QAAA,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,GAAG,eAAe,CAAC,KAAK,EAAE,YAAY,CAAC;AACzE,QAAA,QAAQ,GAAG,YAAY,CAAC;QACxB,kBAAkB,CAAC,UAAU,CAAC;QAC9B,aAAa,CAAC,EAAE,CAAC;AACnB,IAAA,CAAC,EACD,CAAC,KAAK,EAAE,QAAQ,CAAC,CAClB;AAED,IAAA,MAAM,aAAa,GAAGA,iBAAW,CAC/B,CAAC,KAA4C,KAAI;AAC/C,QAAA,IAAI,CAAC,UAAU,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AAChE,YAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC9B;QACF;AACA,QAAA,IAAI,CAAC,UAAU;YAAE;AACjB,QAAA,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;YAClD,SAAS,CAAC,UAAU,CAAC;YACrB,KAAK,CAAC,cAAc,EAAE;YACtB,KAAK,CAAC,eAAe,EAAE;QACzB;IACF,CAAC,EACD,CAAC,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,CAAC,CACzC;AAED,IAAA,MAAM,WAAW,GAAGA,iBAAW,CAC7B,CAAC,KAA6C,KAAI;QAChD,MAAM,IAAI,GAAG,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC;AAChD,QAAA,IAAI,CAAC,IAAI;YAAE;QACX,KAAK,CAAC,cAAc,EAAE;QACtB,SAAS,CAAC,IAAI,CAAC;AACjB,IAAA,CAAC,EACD,CAAC,SAAS,CAAC,CACZ;AAED,IAAA,MAAM,UAAU,GAAGA,iBAAW,CAAC,MAAK;QAClC,IAAI,UAAU,EAAE;YACd,SAAS,CAAC,UAAU,CAAC;QACvB;aAAO;YACL,MAAM,IAAI;QACZ;QACA,YAAY,CAAC,KAAK,CAAC;QACnB,kBAAkB,CAAC,EAAE,CAAC;IACxB,CAAC,EAAE,CAAC,UAAU,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;AAEnC,IAAA,MAAM,WAAW,GAAGA,iBAAW,CAAC,MAAM,YAAY,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;AAE7D,IAAA,MAAM,gBAAgB,GAAGA,iBAAW,CAClC,CAAC,UAAkB,KACjB,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,UAAU,CAAC,CAAC,EACvD,CAAC,KAAK,EAAE,QAAQ,CAAC,CAClB;IAED,MAAM,yBAAyB,GAAGA,iBAAW,CAC3C,MAAM,QAAQ,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC,EAC1C,CAAC,KAAK,EAAE,QAAQ,CAAC,CAClB;IAED,MAAM,UAAU,GAAGC,aAAO,CAAC,MAAM,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC;AAC5E,IAAA,MAAM,gBAAgB,GACpB,CAAC,CAAC,OAAO;SACR,OAAO,OAAO,KAAK,SAAS;YAC3B,CAAC,OAAO,CAAC,UAAU;AACnB,YAAA,UAAU,IAAI,OAAO,CAAC,UAAU,CAAC;AACrC,IAAA,MAAM,cAAc,GAClB,CAAC,gBAAgB,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC,MAAM,GAAG,kBAAkB;IACtE,MAAM,aAAa,GAAG;UAClB,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,kBAAkB;UACjC,KAAK;AACT,IAAA,MAAM,WAAW,GAAG,cAAc,GAAG,KAAK,CAAC,MAAM,GAAG,kBAAkB,GAAG,CAAC;IAC1E,MAAM,mBAAmB,GACvB,CAAC,CAAC,mBAAmB,IAAI,KAAK,CAAC,MAAM,GAAG,UAAU;IAEpD,OAAO;QACL,UAAU;QACV,aAAa;QACb,SAAS;QACT,eAAe;QACf,aAAa;QACb,WAAW;QACX,UAAU;QACV,WAAW;QACX,gBAAgB;QAChB,yBAAyB;QACzB,gBAAgB;QAChB,UAAU;QACV,aAAa;QACb,WAAW;QACX,mBAAmB;KACpB;AACH;;AChHA,MAAM,SAAS,GACb,yJAAyJ;AAC3J,MAAM,YAAY,GAChB,8DAA8D;AAChE,MAAM,eAAe,GACnB,sNAAsN;AACxN,MAAM,WAAW,GACf,mGAAmG;AAE9F,MAAM,eAAe,GAAGC,gBAAU,CAGvC,CAAC,KAAK,EAAE,GAAG,KAAI;AACf,IAAA,MAAM,EACJ,KAAK,EACL,WAAW,GAAG,EAAE,EAChB,QAAQ,EACR,KAAK,EACL,QAAQ,GAAG,KAAK,EAChB,QAAQ,GAAG,KAAK,EAChB,SAAS,GAAG,GAAG,EACf,OAAO,EACP,mBAAmB,EACnB,MAAM,EACN,MAAM,EACN,UAAU,EACV,SAAS,GACV,GAAG,KAAK;AACT,IAAA,MAAM,EAAE,GAAGC,WAAK,EAAE;AAClB,IAAA,MAAM,CAAC,GAAG,kBAAkB,CAAC,KAAK,CAAC;AAEnC,IAAA,QACEC,eAAA,CAACC,sBAAK,EAAA,EAAC,SAAS,EAAEC,QAAE,CAAC,uBAAuB,EAAE,SAAS,CAAC,EAAA,QAAA,EAAA,CACrD,CAAC,KAAK,IAAI,CAAC,CAAC,gBAAgB,MAC3BF,eAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,mCAAmC,aAC/C,KAAK,KACJA,eAAA,CAACG,2BAAU,EAAA,EAAC,OAAO,EAAE,EAAE,EAAA,GAAM,UAAU,EAAA,QAAA,EAAA,CACpC,KAAK,EACL,QAAQ,KACPC,cAAA,CAAA,MAAA,EAAA,EAAA,aAAA,EAAkB,MAAM,EAAC,SAAS,EAAC,kBAAkB,EAAA,QAAA,EAClD,IAAI,GACA,CACR,CAAA,EAAA,CACU,CACd,EACA,CAAC,CAAC,gBAAgB,KACjBJ,eAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,+BAA+B,EAAA,QAAA,EAAA,CAC5C,CAAC,CAAC,UAAU,EAAE,GAAG,EACjB,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,EAAE;kCACrC,OAAO,CAAC;AACV,kCAAE,cAAc,CAAC,CAAC,CAAC,UAAU,CAAC,CAAA,EAAA,CAC3B,CACR,IACG,CACP,EACDA,eAAA,CAAA,KAAA,EAAA,EACE,SAAS,EAAEE,QAAE,CACX,eAAe,EACf,CAAC,CAAC,KAAK,IAAI,WAAW,EACtB,QAAQ,IAAI,gCAAgC,CAC7C,EACD,KAAK,EAAE,EAAE,SAAS,EAAE,CAAA,EAAG,SAAS,CAAA,EAAA,CAAI,EAAE,SAAS,EAAE,MAAM,EAAE,EAAA,QAAA,EAAA,CAExD,MAAM,IAAIE,cAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,UAAU,EAAA,QAAA,EAAE,MAAM,GAAO,EAClD,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,KACxBJ,eAAA,CAAA,MAAA,EAAA,EAEE,SAAS,EAAEE,QAAE,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC,KAAK,IAAI,YAAY,CAAC,EAAA,QAAA,EAAA,CAErD,KAAK,CAAC,KAAK,EACX,CAAC,QAAQ,KACRE,cAAA,CAAA,QAAA,EAAA,EACE,IAAI,EAAC,QAAQ,EACb,QAAQ,EAAE,EAAE,EACZ,SAAS,EAAC,iDAAiD,EAC3D,WAAW,EAAE,CAAC,IAAI,CAAC,CAAC,cAAc,EAAE,EACpC,OAAO,EAAE,MAAM,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC,EAAA,YAAA,EAClC,CAAA,OAAA,EAAU,KAAK,CAAC,KAAK,CAAA,CAAE,EAAA,QAAA,EAEnCA,cAAA,CAACC,GAAK,EAAA,EAAC,SAAS,EAAC,4BAA4B,EAAA,CAAG,EAAA,CACzC,CACV,KAfI,KAAK,CAAC,KAAK,CAgBX,CACR,CAAC,EACD,CAAC,CAAC,WAAW,GAAG,CAAC,KAChBL,eAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,0HAA0H,kBACtI,CAAC,CAAC,WAAW,EAAA,OAAA,CAAA,EAAA,CACV,CACR,EACDI,cAAA,CAAA,OAAA,EAAA,EACE,GAAG,EAAE,GAAG,EACR,EAAE,EAAE,EAAE,EACN,IAAI,EAAC,MAAM,EACX,KAAK,EAAE,CAAC,CAAC,UAAU,EACnB,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAC9C,SAAS,EAAE,CAAC,CAAC,aAAa,EAC1B,OAAO,EAAE,CAAC,CAAC,WAAW,EACtB,OAAO,EAAE,CAAC,CAAC,WAAW,EACtB,MAAM,EAAE,CAAC,CAAC,UAAU,EACpB,WAAW,EAAE,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,EAAE,GAAG,WAAW,EACnD,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAC,uFAAuF,GACjG,EACD,MAAM,IAAIA,cAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,UAAU,EAAA,QAAA,EAAE,MAAM,GAAO,CAAA,EAAA,CAC/C,EACNJ,eAAA,CAACM,6BAAY,EAAA,EAAA,QAAA,EAAA,CACV,CAAC,CAAC,KAAK,KACNN,eAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAC,gCAAgC,EAAA,QAAA,EAAA,CAC1C,KAAK,EACL,CAAC,CAAC,mBAAmB,KACpBI,cAAA,CAAA,QAAA,EAAA,EACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,6CAA6C,EACvD,OAAO,EAAE,CAAC,CAAC,yBAAyB,EAAA,QAAA,EAEnC,mBAAmB,EAAE,KAAK;oCACzB,sCAAsC,EAAA,CACjC,CACV,CAAA,EAAA,CACC,CACL,EACA,CAAC,CAAC,QAAQ,KACTA,sBAAG,SAAS,EAAC,qCAAqC,EAAA,QAAA,EAAE,QAAQ,GAAK,CAClE,EACA,CAAC,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,KAC3BA,sBAAG,SAAS,EAAC,kDAAkD,EAAA,QAAA,EAC5D,sBAAsB,CAAC,CAAC,CAAC,eAAe,CAAC,EAAA,CACxC,CACL,CAAA,EAAA,CACY,CAAA,EAAA,CACT;AAEZ,CAAC;AACD,eAAe,CAAC,WAAW,GAAG,iBAAiB;;;;"}
|