@bigbinary/neeto-atoms 1.0.9 → 1.0.11
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-Ch9S_qd3.js +22 -0
- package/dist/Accordion-Ch9S_qd3.js.map +1 -0
- package/dist/Alert-D_FV8xxo.js +65 -0
- package/dist/Alert-D_FV8xxo.js.map +1 -0
- package/dist/Avatar-D5YGlXVF.js +50 -0
- package/dist/Avatar-D5YGlXVF.js.map +1 -0
- package/dist/Badge-8FkscqDt.js +59 -0
- package/dist/Badge-8FkscqDt.js.map +1 -0
- package/dist/Button-Q7MPG6ph.js +92 -0
- package/dist/Button-Q7MPG6ph.js.map +1 -0
- package/dist/Calendar-pDD7nRF-.js +8025 -0
- package/dist/Calendar-pDD7nRF-.js.map +1 -0
- package/dist/Callout-B0w4GQtx.js +65 -0
- package/dist/Callout-B0w4GQtx.js.map +1 -0
- package/dist/Checkbox-zCxgcZiC.js +24 -0
- package/dist/Checkbox-zCxgcZiC.js.map +1 -0
- package/dist/{ColorPicker-D-7QGnf9.js → ColorPicker-DtOvy0Gy.js} +3 -2
- package/dist/ColorPicker-DtOvy0Gy.js.map +1 -0
- package/dist/DatePicker-COxwHPIZ.js +2960 -0
- package/dist/DatePicker-COxwHPIZ.js.map +1 -0
- package/dist/Dialog-BURSzxaP.js +61 -0
- package/dist/Dialog-BURSzxaP.js.map +1 -0
- package/dist/Empty-B2JwFmru.js +26 -0
- package/dist/Empty-B2JwFmru.js.map +1 -0
- package/dist/Input-C1gcv9o2.js +147 -0
- package/dist/Input-C1gcv9o2.js.map +1 -0
- package/dist/Kbd-EqbC0bua.js +36 -0
- package/dist/Kbd-EqbC0bua.js.map +1 -0
- package/dist/Label-BVy4hy9Z.js +58 -0
- package/dist/Label-BVy4hy9Z.js.map +1 -0
- package/dist/MultiEmailInput-SCTYovtX.js +139 -0
- package/dist/MultiEmailInput-SCTYovtX.js.map +1 -0
- package/dist/Pagination-DSc9yXPy.js +61 -0
- package/dist/Pagination-DSc9yXPy.js.map +1 -0
- package/dist/Popover-BFMrtVPq.js +95 -0
- package/dist/Popover-BFMrtVPq.js.map +1 -0
- package/dist/Progress-B9NlUm6e.js +13 -0
- package/dist/Progress-B9NlUm6e.js.map +1 -0
- package/dist/RadioGroup-BNeYQAoT.js +34 -0
- package/dist/RadioGroup-BNeYQAoT.js.map +1 -0
- package/dist/Select-TlFBcxcY.js +565 -0
- package/dist/Select-TlFBcxcY.js.map +1 -0
- package/dist/{components/SelectFieldWrapper.js → SelectFieldWrapper-BJzq9aCY.js} +3 -11
- package/dist/SelectFieldWrapper-BJzq9aCY.js.map +1 -0
- package/dist/Sheet-QFC_mHyj.js +63 -0
- package/dist/Sheet-QFC_mHyj.js.map +1 -0
- package/dist/Slider-BCQXhs0Q.js +25 -0
- package/dist/Slider-BCQXhs0Q.js.map +1 -0
- package/dist/Spinner-C8HSac-2.js +17 -0
- package/dist/Spinner-C8HSac-2.js.map +1 -0
- package/dist/Stepper-BoGkmkY0.js +29 -0
- package/dist/Stepper-BoGkmkY0.js.map +1 -0
- package/dist/Switch-B83TGxJ_.js +20 -0
- package/dist/Switch-B83TGxJ_.js.map +1 -0
- package/dist/Tabs-DWfKnl3S.js +38 -0
- package/dist/Tabs-DWfKnl3S.js.map +1 -0
- package/dist/Textarea-C0z50h0N.js +73 -0
- package/dist/Textarea-C0z50h0N.js.map +1 -0
- package/dist/TimePicker-C4x62jI1.js +142 -0
- package/dist/TimePicker-C4x62jI1.js.map +1 -0
- package/dist/TimePickerPanel-CiF0RExY.js +126 -0
- package/dist/TimePickerPanel-CiF0RExY.js.map +1 -0
- package/dist/Toastr-DYqpSaMd.js +115 -0
- package/dist/Toastr-DYqpSaMd.js.map +1 -0
- package/dist/Tooltip-DhwIZnOU.js +80 -0
- package/dist/Tooltip-DhwIZnOU.js.map +1 -0
- package/dist/TranslationProvider-Ba9rn47H.js.map +1 -1
- package/dist/Tree-C7r10UY5.js +7977 -0
- package/dist/Tree-C7r10UY5.js.map +1 -0
- package/dist/TreeSelect-DRGcYz-6.js +168 -0
- package/dist/TreeSelect-DRGcYz-6.js.map +1 -0
- package/dist/Typography-CMJ8OveZ.js +76 -0
- package/dist/Typography-CMJ8OveZ.js.map +1 -0
- package/dist/cjs/Accordion-BoTckTBI.js +28 -0
- package/dist/cjs/Accordion-BoTckTBI.js.map +1 -0
- package/dist/cjs/Alert-BVvLyM_d.js +67 -0
- package/dist/cjs/Alert-BVvLyM_d.js.map +1 -0
- package/dist/cjs/Avatar-CNao5gvP.js +52 -0
- package/dist/cjs/Avatar-CNao5gvP.js.map +1 -0
- package/dist/cjs/Badge-STBHzYLs.js +61 -0
- package/dist/cjs/Badge-STBHzYLs.js.map +1 -0
- package/dist/cjs/Button-Bt_AElge.js +94 -0
- package/dist/cjs/Button-Bt_AElge.js.map +1 -0
- package/dist/cjs/Calendar-Nk76Y9yP.js +8066 -0
- package/dist/cjs/Calendar-Nk76Y9yP.js.map +1 -0
- package/dist/cjs/Callout-CS2U6pM7.js +67 -0
- package/dist/cjs/Callout-CS2U6pM7.js.map +1 -0
- package/dist/cjs/Checkbox-DOlS2oCD.js +26 -0
- package/dist/cjs/Checkbox-DOlS2oCD.js.map +1 -0
- package/dist/cjs/{ColorPicker-DEELmqH8.js → ColorPicker-Uxgn8U0h.js} +3 -2
- package/dist/cjs/ColorPicker-Uxgn8U0h.js.map +1 -0
- package/dist/cjs/DatePicker-DpijPndg.js +2962 -0
- package/dist/cjs/DatePicker-DpijPndg.js.map +1 -0
- package/dist/cjs/Dialog-CtI_yWsJ.js +63 -0
- package/dist/cjs/Dialog-CtI_yWsJ.js.map +1 -0
- package/dist/cjs/Empty-qzle6YvT.js +28 -0
- package/dist/cjs/Empty-qzle6YvT.js.map +1 -0
- package/dist/cjs/Input-pkugjUb0.js +149 -0
- package/dist/cjs/Input-pkugjUb0.js.map +1 -0
- package/dist/cjs/Kbd-DHirsI--.js +38 -0
- package/dist/cjs/Kbd-DHirsI--.js.map +1 -0
- package/dist/cjs/Label-DpyfZsiT.js +60 -0
- package/dist/cjs/Label-DpyfZsiT.js.map +1 -0
- package/dist/cjs/MultiEmailInput-l0_YVjbp.js +141 -0
- package/dist/cjs/MultiEmailInput-l0_YVjbp.js.map +1 -0
- package/dist/cjs/Pagination-Byzt9Kmj.js +63 -0
- package/dist/cjs/Pagination-Byzt9Kmj.js.map +1 -0
- package/dist/cjs/Popover-LIxANoTc.js +101 -0
- package/dist/cjs/Popover-LIxANoTc.js.map +1 -0
- package/dist/cjs/Progress-DoCxZ_ZH.js +15 -0
- package/dist/cjs/Progress-DoCxZ_ZH.js.map +1 -0
- package/dist/cjs/RadioGroup-1RAoe38m.js +36 -0
- package/dist/cjs/RadioGroup-1RAoe38m.js.map +1 -0
- package/dist/cjs/Select-Br1AT_wm.js +571 -0
- package/dist/cjs/Select-Br1AT_wm.js.map +1 -0
- package/dist/cjs/{components/SelectFieldWrapper.js → SelectFieldWrapper-DEA--2wj.js} +2 -10
- package/dist/cjs/SelectFieldWrapper-DEA--2wj.js.map +1 -0
- package/dist/cjs/Sheet-CIhtNCBV.js +65 -0
- package/dist/cjs/Sheet-CIhtNCBV.js.map +1 -0
- package/dist/cjs/Slider-jNUS9vt8.js +27 -0
- package/dist/cjs/Slider-jNUS9vt8.js.map +1 -0
- package/dist/cjs/Spinner-DQutDMQq.js +19 -0
- package/dist/cjs/Spinner-DQutDMQq.js.map +1 -0
- package/dist/cjs/Stepper-DCoLl2ZS.js +35 -0
- package/dist/cjs/Stepper-DCoLl2ZS.js.map +1 -0
- package/dist/cjs/Switch-CFf8DtB_.js +22 -0
- package/dist/cjs/Switch-CFf8DtB_.js.map +1 -0
- package/dist/cjs/Tabs-D2247rd7.js +40 -0
- package/dist/cjs/Tabs-D2247rd7.js.map +1 -0
- package/dist/cjs/Textarea-BfdlAJ59.js +75 -0
- package/dist/cjs/Textarea-BfdlAJ59.js.map +1 -0
- package/dist/cjs/TimePicker-Ba2FdT1O.js +144 -0
- package/dist/cjs/TimePicker-Ba2FdT1O.js.map +1 -0
- package/dist/cjs/TimePickerPanel-DGNr97cj.js +132 -0
- package/dist/cjs/TimePickerPanel-DGNr97cj.js.map +1 -0
- package/dist/cjs/Toastr-BGp7-kmf.js +117 -0
- package/dist/cjs/Toastr-BGp7-kmf.js.map +1 -0
- package/dist/cjs/Tooltip-CtxI7QBY.js +86 -0
- package/dist/cjs/Tooltip-CtxI7QBY.js.map +1 -0
- package/dist/cjs/TranslationProvider-DBZHXmzX.js.map +1 -1
- package/dist/cjs/Tree-BPd0DuLh.js +7985 -0
- package/dist/cjs/Tree-BPd0DuLh.js.map +1 -0
- package/dist/cjs/TreeSelect-C9nQJKNo.js +170 -0
- package/dist/cjs/TreeSelect-C9nQJKNo.js.map +1 -0
- package/dist/cjs/Typography-PojQmdAY.js +79 -0
- package/dist/cjs/Typography-PojQmdAY.js.map +1 -0
- package/dist/cjs/components/Accordion.js +6 -28
- package/dist/cjs/components/Accordion.js.map +1 -1
- package/dist/cjs/components/Alert.js +9 -70
- package/dist/cjs/components/Alert.js.map +1 -1
- package/dist/cjs/components/Avatar.js +8 -51
- package/dist/cjs/components/Avatar.js.map +1 -1
- package/dist/cjs/components/Badge.js +10 -64
- package/dist/cjs/components/Badge.js.map +1 -1
- package/dist/cjs/components/Button.js +10 -94
- package/dist/cjs/components/Button.js.map +1 -1
- package/dist/cjs/components/Callout.js +9 -66
- package/dist/cjs/components/Callout.js.map +1 -1
- package/dist/cjs/components/Checkbox.js +8 -24
- package/dist/cjs/components/Checkbox.js.map +1 -1
- package/dist/cjs/components/ColorPicker.js +1 -1
- package/dist/cjs/components/DataTable.js +1 -1
- package/dist/cjs/components/DatePicker.js +45 -0
- package/dist/cjs/components/DatePicker.js.map +1 -0
- package/dist/cjs/components/Dialog.js +7 -63
- package/dist/cjs/components/Dialog.js.map +1 -1
- package/dist/cjs/components/DropdownMenu.js.map +1 -1
- package/dist/cjs/components/Empty.js +10 -29
- package/dist/cjs/components/Empty.js.map +1 -1
- package/dist/cjs/components/Input.js +8 -151
- package/dist/cjs/components/Input.js.map +1 -1
- package/dist/cjs/components/Kbd.js +8 -41
- package/dist/cjs/components/Kbd.js.map +1 -1
- package/dist/cjs/components/Label.js +11 -59
- package/dist/cjs/components/Label.js.map +1 -1
- package/dist/cjs/components/MultiEmailInput.js +20 -0
- package/dist/cjs/components/MultiEmailInput.js.map +1 -0
- package/dist/cjs/components/Pagination.js +21 -0
- package/dist/cjs/components/Pagination.js.map +1 -0
- package/dist/cjs/components/Popover.js +7 -103
- package/dist/cjs/components/Popover.js.map +1 -1
- package/dist/cjs/components/Progress.js +7 -13
- package/dist/cjs/components/Progress.js.map +1 -1
- package/dist/cjs/components/RadioGroup.js +9 -40
- package/dist/cjs/components/RadioGroup.js.map +1 -1
- package/dist/cjs/components/Select.js +33 -0
- package/dist/cjs/components/Select.js.map +1 -1
- package/dist/cjs/components/Sheet.js +7 -65
- package/dist/cjs/components/Sheet.js.map +1 -1
- package/dist/cjs/components/Slider.js +8 -25
- package/dist/cjs/components/Slider.js.map +1 -1
- package/dist/cjs/components/Spinner.js +7 -19
- package/dist/cjs/components/Spinner.js.map +1 -1
- package/dist/cjs/components/Stepper.js +6 -32
- package/dist/cjs/components/Stepper.js.map +1 -1
- package/dist/cjs/components/Switch.js +8 -20
- package/dist/cjs/components/Switch.js.map +1 -1
- package/dist/cjs/components/Tabs.js +8 -55
- package/dist/cjs/components/Tabs.js.map +1 -1
- package/dist/cjs/components/Textarea.js +8 -77
- package/dist/cjs/components/Textarea.js.map +1 -1
- package/dist/cjs/components/TimePicker.js +42 -0
- package/dist/cjs/components/TimePicker.js.map +1 -0
- package/dist/cjs/components/Toastr.js +4 -126
- package/dist/cjs/components/Toastr.js.map +1 -1
- package/dist/cjs/components/Tooltip.js +5 -85
- package/dist/cjs/components/Tooltip.js.map +1 -1
- package/dist/cjs/components/Tree.js +34 -0
- package/dist/cjs/components/Tree.js.map +1 -0
- package/dist/cjs/components/TreeSelect.js +45 -0
- package/dist/cjs/components/TreeSelect.js.map +1 -0
- package/dist/cjs/components/Typography.js +8 -98
- package/dist/cjs/components/Typography.js.map +1 -1
- package/dist/cjs/components/index.js +180 -0
- package/dist/cjs/components/index.js.map +1 -0
- package/dist/cjs/formik/ActionBlock.js +48 -0
- package/dist/cjs/formik/ActionBlock.js.map +1 -0
- package/dist/cjs/formik/BlockNavigation.js +111 -0
- package/dist/cjs/formik/BlockNavigation.js.map +1 -0
- package/dist/cjs/formik/Button.js +45 -0
- package/dist/cjs/formik/Button.js.map +1 -0
- package/dist/cjs/formik/Checkbox.js +38 -0
- package/dist/cjs/formik/Checkbox.js.map +1 -0
- package/dist/cjs/formik/Form.js +116 -0
- package/dist/cjs/formik/Form.js.map +1 -0
- package/dist/cjs/formik/Input.js +38 -0
- package/dist/cjs/formik/Input.js.map +1 -0
- package/dist/cjs/formik/MultiEmailInput.js +31 -0
- package/dist/cjs/formik/MultiEmailInput.js.map +1 -0
- package/dist/cjs/formik/RadioGroup.js +44 -0
- package/dist/cjs/formik/RadioGroup.js.map +1 -0
- package/dist/cjs/formik/Select.js +61 -0
- package/dist/cjs/formik/Select.js.map +1 -0
- package/dist/cjs/formik/Slider.js +39 -0
- package/dist/cjs/formik/Slider.js.map +1 -0
- package/dist/cjs/formik/Switch.js +33 -0
- package/dist/cjs/formik/Switch.js.map +1 -0
- package/dist/cjs/formik/Textarea.js +34 -0
- package/dist/cjs/formik/Textarea.js.map +1 -0
- package/dist/cjs/formik/TreeSelect.js +56 -0
- package/dist/cjs/formik/TreeSelect.js.map +1 -0
- package/dist/cjs/formik/index.js +110 -0
- package/dist/cjs/formik/index.js.map +1 -0
- package/dist/cjs/index.js +319 -428
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/primitives/Calendar.js +10 -8020
- package/dist/cjs/primitives/Calendar.js.map +1 -1
- package/dist/cjs/primitives/Chart.js +410 -207
- package/dist/cjs/primitives/Chart.js.map +1 -1
- package/dist/cjs/primitives/Combobox.js +783 -1096
- package/dist/cjs/primitives/Combobox.js.map +1 -1
- package/dist/cjs/primitives/Pagination.js +1 -1
- package/dist/cjs/primitives/Resizable.js +799 -778
- package/dist/cjs/primitives/Resizable.js.map +1 -1
- package/dist/cjs/primitives/ScrollArea.js +10 -10
- package/dist/cjs/primitives/Select.js +77 -77
- package/dist/cjs/primitives/index.js +3 -2
- package/dist/cjs/primitives/index.js.map +1 -1
- package/dist/cjs/redux-DEF7lAd1.js +240 -0
- package/dist/cjs/redux-DEF7lAd1.js.map +1 -0
- package/dist/cjs/search-CfYUGi4v.js +37 -0
- package/dist/cjs/search-CfYUGi4v.js.map +1 -0
- package/dist/cjs/with-selector-DeKHbQY7.js +121 -0
- package/dist/cjs/with-selector-DeKHbQY7.js.map +1 -0
- package/dist/components/{Accordion.d.ts → Accordion/Accordion.d.ts} +3 -1
- package/dist/components/Accordion/index.d.ts +2 -0
- package/dist/components/Accordion.js +5 -27
- package/dist/components/Accordion.js.map +1 -1
- package/dist/components/{Alert.d.ts → Alert/Alert.d.ts} +2 -2
- package/dist/components/Alert/constants.d.ts +3 -0
- package/dist/components/Alert/index.d.ts +2 -0
- package/dist/components/Alert.js +10 -75
- package/dist/components/Alert.js.map +1 -1
- package/dist/components/{Avatar.d.ts → Avatar/Avatar.d.ts} +2 -2
- package/dist/components/Avatar/constants.d.ts +3 -0
- package/dist/components/Avatar/index.d.ts +2 -0
- package/dist/components/Avatar/utils.d.ts +1 -0
- package/dist/components/Avatar.js +9 -56
- package/dist/components/Avatar.js.map +1 -1
- package/dist/components/{Badge.d.ts → Badge/Badge.d.ts} +1 -1
- package/dist/components/Badge/constants.d.ts +25 -0
- package/dist/components/Badge/index.d.ts +2 -0
- package/dist/components/Badge.js +8 -66
- package/dist/components/Badge.js.map +1 -1
- package/dist/components/Button/constants.d.ts +5 -0
- package/dist/components/Button/index.d.ts +2 -0
- package/dist/components/Button.js +11 -99
- package/dist/components/Button.js.map +1 -1
- package/dist/components/{Callout.d.ts → Callout/Callout.d.ts} +1 -1
- package/dist/components/Callout/constants.d.ts +8 -0
- package/dist/components/Callout/index.d.ts +2 -0
- package/dist/components/Callout.js +8 -69
- package/dist/components/Callout.js.map +1 -1
- package/dist/components/Checkbox/index.d.ts +2 -0
- package/dist/components/Checkbox.js +6 -26
- package/dist/components/Checkbox.js.map +1 -1
- package/dist/components/ColorPicker/ColorPicker.d.ts +1 -2
- package/dist/components/ColorPicker/Palette.d.ts +1 -1
- package/dist/components/ColorPicker/types.d.ts +6 -1
- package/dist/components/ColorPicker.js +3 -3
- package/dist/components/DataTable.js +4 -4
- package/dist/components/DatePicker/DatePicker.d.ts +4 -0
- package/dist/components/DatePicker/DatePickerFooter.d.ts +12 -0
- package/dist/components/DatePicker/TimezoneSelect.d.ts +8 -0
- package/dist/components/DatePicker/constants.d.ts +17 -0
- package/dist/components/DatePicker/index.d.ts +2 -0
- package/dist/components/DatePicker/types.d.ts +56 -0
- package/dist/components/DatePicker/utils.d.ts +6 -0
- package/dist/components/DatePicker.js +39 -0
- package/dist/components/DatePicker.js.map +1 -0
- package/dist/components/{Dialog.d.ts → Dialog/Dialog.d.ts} +1 -1
- package/dist/components/Dialog/constants.d.ts +2 -0
- package/dist/components/Dialog/index.d.ts +2 -0
- package/dist/components/Dialog.js +5 -65
- package/dist/components/Dialog.js.map +1 -1
- package/dist/components/DropdownMenu/MenuItemButton.d.ts +1 -2
- package/dist/components/DropdownMenu/index.d.ts +1 -0
- package/dist/components/DropdownMenu.js +3 -3
- package/dist/components/DropdownMenu.js.map +1 -1
- package/dist/components/Empty/index.d.ts +2 -0
- package/dist/components/Empty.js +11 -34
- package/dist/components/Empty.js.map +1 -1
- package/dist/components/{Input.d.ts → Input/Input.d.ts} +3 -1
- package/dist/components/Input/constants.d.ts +17 -0
- package/dist/components/Input/index.d.ts +2 -0
- package/dist/components/Input/utils.d.ts +7 -0
- package/dist/components/Input.js +6 -153
- package/dist/components/Input.js.map +1 -1
- package/dist/components/{Kbd.d.ts → Kbd/Kbd.d.ts} +1 -1
- package/dist/components/Kbd/constants.d.ts +1 -0
- package/dist/components/Kbd/index.d.ts +2 -0
- package/dist/components/Kbd.js +9 -46
- package/dist/components/Kbd.js.map +1 -1
- package/dist/components/Label/constants.d.ts +1 -0
- package/dist/components/Label/index.d.ts +2 -0
- package/dist/components/Label.js +13 -65
- package/dist/components/Label.js.map +1 -1
- package/dist/components/MultiEmailInput/MultiEmailInput.d.ts +2 -0
- package/dist/components/MultiEmailInput/constants.d.ts +3 -0
- package/dist/components/MultiEmailInput/index.d.ts +2 -0
- package/dist/components/MultiEmailInput/types.d.ts +53 -0
- package/dist/components/MultiEmailInput/useMultiEmailState.d.ts +18 -0
- package/dist/components/MultiEmailInput/utils.d.ts +9 -0
- package/dist/components/MultiEmailInput.js +14 -0
- package/dist/components/MultiEmailInput.js.map +1 -0
- package/dist/components/Pagination/Pagination.d.ts +18 -0
- package/dist/components/Pagination/constants.d.ts +1 -0
- package/dist/components/Pagination/hooks/usePaginationRange.d.ts +7 -0
- package/dist/components/Pagination/index.d.ts +2 -0
- package/dist/components/Pagination/utils.d.ts +1 -0
- package/dist/components/Pagination.js +15 -0
- package/dist/components/Pagination.js.map +1 -0
- package/dist/components/Popover/constants.d.ts +2 -0
- package/dist/components/Popover/index.d.ts +2 -0
- package/dist/components/Popover.js +8 -104
- package/dist/components/Popover.js.map +1 -1
- package/dist/components/Progress/index.d.ts +2 -0
- package/dist/components/Progress.js +5 -15
- package/dist/components/Progress.js.map +1 -1
- package/dist/components/{RadioGroup.d.ts → RadioGroup/RadioGroup.d.ts} +1 -1
- package/dist/components/RadioGroup/index.d.ts +2 -0
- package/dist/components/RadioGroup.js +7 -42
- package/dist/components/RadioGroup.js.map +1 -1
- package/dist/components/Select/MultiSelectCombobox.d.ts +2 -0
- package/dist/components/{MultiSelectCombobox.types.d.ts → Select/MultiSelectCombobox.types.d.ts} +3 -13
- package/dist/components/{OptionItem.d.ts → Select/OptionItem.d.ts} +1 -1
- package/dist/components/Select/Select.d.ts +4 -0
- package/dist/components/Select/SelectCombobox.d.ts +2 -0
- package/dist/components/Select/SelectCombobox.types.d.ts +73 -0
- package/dist/components/Select/dropdown.types.d.ts +12 -0
- package/dist/components/Select/index.d.ts +2 -0
- package/dist/components/Select/types.d.ts +148 -0
- package/dist/components/{MultiSelect.utils.d.ts → Select/utils.d.ts} +1 -1
- package/dist/components/Select.js +29 -1
- package/dist/components/Select.js.map +1 -1
- package/dist/components/Sheet/constants.d.ts +3 -0
- package/dist/components/Sheet/index.d.ts +2 -0
- package/dist/components/Sheet.js +5 -67
- package/dist/components/Sheet.js.map +1 -1
- package/dist/components/Slider/index.d.ts +2 -0
- package/dist/components/Slider.js +6 -27
- package/dist/components/Slider.js.map +1 -1
- package/dist/components/Spinner/constants.d.ts +1 -0
- package/dist/components/Spinner/index.d.ts +2 -0
- package/dist/components/Spinner.js +5 -21
- package/dist/components/Spinner.js.map +1 -1
- package/dist/components/Stepper/index.d.ts +2 -0
- package/dist/components/Stepper.js +5 -31
- package/dist/components/Stepper.js.map +1 -1
- package/dist/components/Switch/index.d.ts +2 -0
- package/dist/components/Switch.js +6 -22
- package/dist/components/Switch.js.map +1 -1
- package/dist/components/Tabs/constants.d.ts +5 -0
- package/dist/components/Tabs/index.d.ts +2 -0
- package/dist/components/Tabs.js +6 -57
- package/dist/components/Tabs.js.map +1 -1
- package/dist/components/{Textarea.d.ts → Textarea/Textarea.d.ts} +4 -2
- package/dist/components/Textarea/constants.d.ts +5 -0
- package/dist/components/Textarea/index.d.ts +2 -0
- package/dist/components/Textarea/utils.d.ts +2 -0
- package/dist/components/Textarea.js +6 -79
- package/dist/components/Textarea.js.map +1 -1
- package/dist/components/TimePicker/TimeColumn.d.ts +11 -0
- package/dist/components/TimePicker/TimePicker.d.ts +4 -0
- package/dist/components/TimePicker/TimePickerPanel.d.ts +3 -0
- package/dist/components/TimePicker/constants.d.ts +3 -0
- package/dist/components/TimePicker/index.d.ts +3 -0
- package/dist/components/TimePicker/types.d.ts +61 -0
- package/dist/components/TimePicker/utils.d.ts +11 -0
- package/dist/components/TimePicker.js +35 -0
- package/dist/components/TimePicker.js.map +1 -0
- package/dist/components/{Toastr.d.ts → Toastr/Toastr.d.ts} +2 -2
- package/dist/components/Toastr/index.d.ts +2 -0
- package/dist/components/Toastr/utils.d.ts +10 -0
- package/dist/components/Toastr.js +2 -128
- package/dist/components/Toastr.js.map +1 -1
- package/dist/components/Tooltip/constants.d.ts +2 -0
- package/dist/components/Tooltip/index.d.ts +2 -0
- package/dist/components/Tooltip.js +7 -87
- package/dist/components/Tooltip.js.map +1 -1
- package/dist/components/Tree/Tree.d.ts +2 -0
- package/dist/components/Tree/TreeContext.d.ts +26 -0
- package/dist/components/Tree/components/SwitcherIcon.d.ts +6 -0
- package/dist/components/Tree/components/TreeCheckbox.d.ts +8 -0
- package/dist/components/Tree/components/TreeNode.d.ts +3 -0
- package/dist/components/Tree/constants.d.ts +3 -0
- package/dist/components/Tree/hooks/useTreeCheck.d.ts +18 -0
- package/dist/components/Tree/hooks/useTreeExpansion.d.ts +18 -0
- package/dist/components/Tree/hooks/useTreeSelection.d.ts +16 -0
- package/dist/components/Tree/index.d.ts +3 -0
- package/dist/components/Tree/types.d.ts +110 -0
- package/dist/components/Tree/utils/adapter.d.ts +10 -0
- package/dist/components/Tree/utils/checkCascade.d.ts +5 -0
- package/dist/components/Tree/utils/search.d.ts +10 -0
- package/dist/components/Tree.js +25 -0
- package/dist/components/Tree.js.map +1 -0
- package/dist/components/TreeSelect/TreeSelect.d.ts +3 -0
- package/dist/components/TreeSelect/TreeSelectTrigger.d.ts +14 -0
- package/dist/components/{Select.constants.d.ts → TreeSelect/constants.d.ts} +2 -2
- package/dist/components/TreeSelect/hooks/useTreeSelectState.d.ts +30 -0
- package/dist/components/TreeSelect/hooks/useTreeSelectValue.d.ts +19 -0
- package/dist/components/TreeSelect/index.d.ts +2 -0
- package/dist/components/TreeSelect/types.d.ts +49 -0
- package/dist/components/TreeSelect/utils/pruneTree.d.ts +2 -0
- package/dist/components/TreeSelect/utils/resolveFieldNames.d.ts +5 -0
- package/dist/components/TreeSelect.js +39 -0
- package/dist/components/TreeSelect.js.map +1 -0
- package/dist/{shadcn/components/typography.d.ts → components/Typography/Typography.d.ts} +3 -3
- package/dist/components/Typography/index.d.ts +1 -0
- package/dist/components/Typography.js +6 -81
- package/dist/components/Typography.js.map +1 -1
- package/dist/components/index.d.ts +36 -0
- package/dist/components/index.js +128 -0
- package/dist/components/index.js.map +1 -0
- package/dist/{floating-ui.react-dom-CcGbtPEK.js → floating-ui.react-dom-D8_f_WWh.js} +2 -2
- package/dist/{floating-ui.react-dom-CcGbtPEK.js.map → floating-ui.react-dom-D8_f_WWh.js.map} +1 -1
- package/dist/formik/ActionBlock.d.ts +18 -0
- package/dist/formik/ActionBlock.js +46 -0
- package/dist/formik/ActionBlock.js.map +1 -0
- package/dist/formik/BlockNavigation/BlockNavigationAlert.d.ts +23 -0
- package/dist/formik/BlockNavigation/index.d.ts +11 -0
- package/dist/formik/BlockNavigation.js +109 -0
- package/dist/formik/BlockNavigation.js.map +1 -0
- package/dist/formik/Button.d.ts +7 -0
- package/dist/formik/Button.js +43 -0
- package/dist/formik/Button.js.map +1 -0
- package/dist/formik/Checkbox.d.ts +8 -0
- package/dist/formik/Checkbox.js +36 -0
- package/dist/formik/Checkbox.js.map +1 -0
- package/dist/formik/Form/FormWrapper.d.ts +9 -0
- package/dist/formik/Form/ScrollToErrorField/index.d.ts +5 -0
- package/dist/formik/Form/ScrollToErrorField/utils.d.ts +2 -0
- package/dist/formik/Form/index.d.ts +16 -0
- package/dist/formik/Form.js +114 -0
- package/dist/formik/Form.js.map +1 -0
- package/dist/formik/Input.d.ts +8 -0
- package/dist/formik/Input.js +36 -0
- package/dist/formik/Input.js.map +1 -0
- package/dist/formik/MultiEmailInput.d.ts +7 -0
- package/dist/formik/MultiEmailInput.js +29 -0
- package/dist/formik/MultiEmailInput.js.map +1 -0
- package/dist/formik/RadioGroup.d.ts +11 -0
- package/dist/formik/RadioGroup.js +42 -0
- package/dist/formik/RadioGroup.js.map +1 -0
- package/dist/formik/Select.d.ts +7 -0
- package/dist/formik/Select.js +59 -0
- package/dist/formik/Select.js.map +1 -0
- package/dist/formik/Slider.d.ts +8 -0
- package/dist/formik/Slider.js +37 -0
- package/dist/formik/Slider.js.map +1 -0
- package/dist/formik/Switch.d.ts +10 -0
- package/dist/formik/Switch.js +31 -0
- package/dist/formik/Switch.js.map +1 -0
- package/dist/formik/Textarea.d.ts +8 -0
- package/dist/formik/Textarea.js +32 -0
- package/dist/formik/Textarea.js.map +1 -0
- package/dist/formik/TreeSelect.d.ts +7 -0
- package/dist/formik/TreeSelect.js +54 -0
- package/dist/formik/TreeSelect.js.map +1 -0
- package/dist/formik/index.d.ts +26 -0
- package/dist/formik/index.js +92 -0
- package/dist/formik/index.js.map +1 -0
- package/dist/hooks/useAsyncOptions.d.ts +4 -4
- package/dist/hooks/useComboboxAnchor.d.ts +6 -0
- package/dist/hooks/useCreatableItems.d.ts +1 -1
- package/dist/hooks/useMultiSelectOptions.d.ts +22 -4
- package/dist/hooks/useMultiSelectState.d.ts +7 -4
- package/dist/hooks/useNavPrompt.d.ts +15 -0
- package/dist/hooks/useSelectState.d.ts +39 -14
- package/dist/{index-ByEpUy7w.js → index-C3hByjk3.js} +2 -2
- package/dist/{index-ByEpUy7w.js.map → index-C3hByjk3.js.map} +1 -1
- package/dist/{index-KzJfsx-e.js → index-DLPtgEJ_.js} +2 -2
- package/dist/{index-KzJfsx-e.js.map → index-DLPtgEJ_.js.map} +1 -1
- package/dist/index.css +2 -1
- package/dist/index.d.ts +13 -2
- package/dist/index.js +283 -403
- package/dist/index.js.map +1 -1
- package/dist/primitives/Calendar.js +8 -8003
- package/dist/primitives/Calendar.js.map +1 -1
- package/dist/primitives/Chart.js +253 -50
- package/dist/primitives/Chart.js.map +1 -1
- package/dist/primitives/Combobox.d.ts +3 -3
- package/dist/primitives/Combobox.js +787 -1100
- package/dist/primitives/Combobox.js.map +1 -1
- package/dist/primitives/ContextMenu.js +3 -3
- package/dist/primitives/DropdownMenu.js +3 -3
- package/dist/primitives/HoverCard.js +2 -2
- package/dist/primitives/Menubar.js +3 -3
- package/dist/primitives/Pagination.js +1 -1
- package/dist/primitives/Popover.js +2 -2
- package/dist/primitives/Resizable.js +799 -778
- package/dist/primitives/Resizable.js.map +1 -1
- package/dist/primitives/Select.js +4 -4
- package/dist/primitives/Sidebar.js +3 -3
- package/dist/primitives/Tooltip.js +3 -3
- package/dist/primitives/index.js +7 -6
- package/dist/primitives/index.js.map +1 -1
- package/dist/redux-BKH6DnBB.js +235 -0
- package/dist/redux-BKH6DnBB.js.map +1 -0
- package/dist/search-BK7Ozh5_.js +33 -0
- package/dist/search-BK7Ozh5_.js.map +1 -0
- package/dist/shadcn/components/combobox.d.ts +1 -1
- package/dist/{tooltip-DzjIJacP.js → tooltip-XkHLgxlU.js} +2 -2
- package/dist/{tooltip-DzjIJacP.js.map → tooltip-XkHLgxlU.js.map} +1 -1
- package/dist/utils/dayjs/index.d.ts +4 -0
- package/dist/utils/dayjs/timezonePlugin.d.ts +3 -0
- package/dist/with-selector-Dv0G_V_o.js +115 -0
- package/dist/with-selector-Dv0G_V_o.js.map +1 -0
- package/package.json +31 -4
- package/dist/ColorPicker-D-7QGnf9.js.map +0 -1
- package/dist/cjs/ColorPicker-DEELmqH8.js.map +0 -1
- package/dist/cjs/components/MultiSelect.js +0 -13
- package/dist/cjs/components/MultiSelect.js.map +0 -1
- package/dist/cjs/components/MultiSelectCombobox.js +0 -3
- package/dist/cjs/components/MultiSelectCombobox.js.map +0 -1
- package/dist/cjs/components/MultiSelectDropdown.js +0 -38
- package/dist/cjs/components/MultiSelectDropdown.js.map +0 -1
- package/dist/cjs/components/OptionItem.js +0 -34
- package/dist/cjs/components/OptionItem.js.map +0 -1
- package/dist/cjs/components/SelectFieldWrapper.js.map +0 -1
- package/dist/cjs/components/SelectOptions.js +0 -43
- package/dist/cjs/components/SelectOptions.js.map +0 -1
- package/dist/cjs/components/SelectTriggerContent.js +0 -47
- package/dist/cjs/components/SelectTriggerContent.js.map +0 -1
- package/dist/cjs/components/shared.js +0 -8
- package/dist/cjs/components/shared.js.map +0 -1
- package/dist/cjs/useCreatableItems-BTHtd7uo.js +0 -100
- package/dist/cjs/useCreatableItems-BTHtd7uo.js.map +0 -1
- package/dist/cjs/with-selector-u4xTSzCv.js +0 -457
- package/dist/cjs/with-selector-u4xTSzCv.js.map +0 -1
- package/dist/components/MultiSelect.d.ts +0 -4
- package/dist/components/MultiSelect.js +0 -4
- package/dist/components/MultiSelect.js.map +0 -1
- package/dist/components/MultiSelect.types.d.ts +0 -121
- package/dist/components/MultiSelectCombobox.d.ts +0 -3
- package/dist/components/MultiSelectCombobox.js +0 -2
- package/dist/components/MultiSelectCombobox.js.map +0 -1
- package/dist/components/MultiSelectDropdown.js +0 -36
- package/dist/components/MultiSelectDropdown.js.map +0 -1
- package/dist/components/OptionItem.js +0 -32
- package/dist/components/OptionItem.js.map +0 -1
- package/dist/components/Select.d.ts +0 -4
- package/dist/components/Select.types.d.ts +0 -58
- package/dist/components/SelectFieldWrapper.js.map +0 -1
- package/dist/components/SelectOptions.d.ts +0 -2
- package/dist/components/SelectOptions.js +0 -41
- package/dist/components/SelectOptions.js.map +0 -1
- package/dist/components/SelectTriggerContent.d.ts +0 -18
- package/dist/components/SelectTriggerContent.js +0 -45
- package/dist/components/SelectTriggerContent.js.map +0 -1
- package/dist/components/Typography.d.ts +0 -10
- package/dist/components/shared.js +0 -6
- package/dist/components/shared.js.map +0 -1
- package/dist/components/shared.types.d.ts +0 -16
- package/dist/useCreatableItems-B0seQA1_.js +0 -89
- package/dist/useCreatableItems-B0seQA1_.js.map +0 -1
- package/dist/with-selector--fY1NrB9.js +0 -448
- package/dist/with-selector--fY1NrB9.js.map +0 -1
- /package/dist/components/{Button.d.ts → Button/Button.d.ts} +0 -0
- /package/dist/components/{Checkbox.d.ts → Checkbox/Checkbox.d.ts} +0 -0
- /package/dist/components/{Empty.d.ts → Empty/Empty.d.ts} +0 -0
- /package/dist/components/{Label.d.ts → Label/Label.d.ts} +0 -0
- /package/dist/components/{Popover.d.ts → Popover/Popover.d.ts} +0 -0
- /package/dist/components/{Progress.d.ts → Progress/Progress.d.ts} +0 -0
- /package/dist/components/{MultiSelectDropdown.d.ts → Select/MultiSelectDropdown.d.ts} +0 -0
- /package/dist/components/{SelectFieldWrapper.d.ts → Select/SelectFieldWrapper.d.ts} +0 -0
- /package/dist/components/{MultiSelect.constants.d.ts → Select/constants.d.ts} +0 -0
- /package/dist/components/{Sheet.d.ts → Sheet/Sheet.d.ts} +0 -0
- /package/dist/components/{Slider.d.ts → Slider/Slider.d.ts} +0 -0
- /package/dist/components/{Spinner.d.ts → Spinner/Spinner.d.ts} +0 -0
- /package/dist/components/{Stepper.d.ts → Stepper/Stepper.d.ts} +0 -0
- /package/dist/components/{Switch.d.ts → Switch/Switch.d.ts} +0 -0
- /package/dist/components/{Tabs.d.ts → Tabs/Tabs.d.ts} +0 -0
- /package/dist/components/{Tooltip.d.ts → Tooltip/Tooltip.d.ts} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DropdownMenu.js","sources":["../../src/components/DropdownMenu/constants.ts","../../src/components/DropdownMenu/SplitTrigger.tsx","../../src/components/DropdownMenu/TriggerButton.tsx","../../src/components/DropdownMenu/types.ts","../../src/components/DropdownMenu/DropdownBase.tsx","../../src/components/DropdownMenu/Divider.tsx","../../src/components/DropdownMenu/Label.tsx","../../src/components/DropdownMenu/Menu.tsx","../../src/components/DropdownMenu/MenuItemButton.tsx","../../src/components/DropdownMenu/MenuItem.tsx","../../src/components/DropdownMenu/SubMenu.tsx","../../src/components/DropdownMenu/index.tsx"],"sourcesContent":["import type { ButtonSize, ButtonStyle } from \"./types\";\n\nexport 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: \"bottom\",\n};\n\nexport const ALIGN_MAP: Record<string, \"start\" | \"center\" | \"end\"> = {\n top: \"center\",\n bottom: \"center\",\n left: \"center\",\n right: \"center\",\n \"top-start\": \"start\",\n \"top-end\": \"end\",\n \"bottom-start\": \"start\",\n \"bottom-end\": \"end\",\n \"left-start\": \"start\",\n \"left-end\": \"end\",\n \"right-start\": \"start\",\n \"right-end\": \"end\",\n auto: \"end\",\n};\n\nexport const BUTTON_STYLE_MAP: Record<\n ButtonStyle,\n \"default\" | \"secondary\" | \"destructive\" | \"outline\" | \"ghost\" | \"link\"\n> = {\n primary: \"default\",\n secondary: \"secondary\",\n tertiary: \"outline\",\n text: \"ghost\",\n danger: \"destructive\",\n \"danger-text\": \"ghost\",\n link: \"link\",\n};\n\nexport const BUTTON_SIZE_MAP: Record<ButtonSize, \"sm\" | \"default\" | \"lg\"> = {\n small: \"sm\",\n medium: \"default\",\n large: \"lg\",\n};\n\nexport const MENU_ITEM_STYLE_MAP: Record<\n \"default\" | \"danger\",\n \"default\" | \"destructive\"\n> = {\n default: \"default\",\n danger: \"destructive\",\n};\n\nexport const CHEVRON_SIZE_MAP: Record<ButtonSize, string> = {\n small: \"size-3.5\",\n medium: \"size-4\",\n large: \"size-4\",\n};\n","import React, { forwardRef } from \"react\";\n\nimport { ChevronDown } from \"lucide-react\";\nimport { useTranslation } from \"react-i18next\";\nimport { cn } from \"src/shadcn/lib/utils\";\nimport { renderIcon } from \"src/lib/renderIcon\";\nimport { Button as PrimitiveButton } from \"src/primitives/Button\";\nimport { ButtonGroup } from \"src/primitives/ButtonGroup\";\nimport { DropdownMenuTrigger } from \"src/primitives/DropdownMenu\";\n\nimport {\n BUTTON_SIZE_MAP,\n BUTTON_STYLE_MAP,\n CHEVRON_SIZE_MAP,\n} from \"./constants\";\nimport type { BaseTriggerProps } from \"./types\";\n\ninterface SplitTriggerOwnProps extends BaseTriggerProps {\n /** Ref forwarded to the action button (left side). */\n actionButtonRef?: React.Ref<HTMLButtonElement>;\n}\n\n/**\n * Radix injects extra props (aria-expanded, data-state, …) via Slot on the\n * DropdownMenuTrigger child. We capture them with a rest-spread.\n */\ntype SplitTriggerProps = SplitTriggerOwnProps &\n Omit<React.ComponentProps<\"div\">, keyof SplitTriggerOwnProps>;\n\nconst SplitTrigger = forwardRef<HTMLDivElement, SplitTriggerProps>(\n (\n {\n label,\n icon,\n buttonStyle,\n buttonSize,\n buttonProps,\n disabled,\n isOpen,\n onClick,\n actionButtonRef,\n className,\n ...otherProps\n },\n ref\n ) => {\n const { t } = useTranslation();\n const variant = BUTTON_STYLE_MAP[buttonStyle];\n const size = BUTTON_SIZE_MAP[buttonSize];\n\n return (\n <ButtonGroup\n ref={ref}\n className={cn(\"neeto-ui-action-dropdown\", className)}\n {...otherProps}\n >\n {/* Action button — fires the primary onClick */}\n <PrimitiveButton\n ref={actionButtonRef}\n type=\"button\"\n variant={variant}\n size={size}\n disabled={disabled}\n onClick={onClick}\n data-testid=\"action-dropdown-btn\"\n {...buttonProps}\n >\n {icon && renderIcon(icon, \"size-4\")}\n {label && <span>{label}</span>}\n </PrimitiveButton>\n\n {/* Chevron trigger — opens the dropdown menu */}\n <DropdownMenuTrigger asChild disabled={disabled}>\n <PrimitiveButton\n type=\"button\"\n variant={variant}\n size={size}\n disabled={disabled}\n aria-label={t(\n \"neetoatoms.dropdownMenu.openMenu\",\n \"Open dropdown menu\"\n )}\n className=\"px-1.5\"\n >\n <ChevronDown\n aria-hidden=\"true\"\n className={cn(\n CHEVRON_SIZE_MAP[buttonSize],\n \"shrink-0 transition-transform duration-200\",\n isOpen && \"rotate-180\"\n )}\n />\n </PrimitiveButton>\n </DropdownMenuTrigger>\n </ButtonGroup>\n );\n }\n);\nSplitTrigger.displayName = \"Dropdown.SplitTrigger\";\n\nexport { SplitTrigger };\n","import React, { forwardRef } from \"react\";\n\nimport { ChevronDown } from \"lucide-react\";\nimport { cn } from \"src/shadcn/lib/utils\";\nimport { renderIcon } from \"src/lib/renderIcon\";\nimport { Button as PrimitiveButton } from \"src/primitives/Button\";\n\nimport { BUTTON_SIZE_MAP, BUTTON_STYLE_MAP, CHEVRON_SIZE_MAP } from \"./constants\";\nimport type { BaseTriggerProps } from \"./types\";\n\n/**\n * Extra props that Radix's Slot injects when the parent Trigger uses\n * `asChild` (aria-expanded, aria-haspopup, data-state, id, …).\n * We capture them with a rest-spread so they reach the DOM button.\n */\ntype TriggerButtonProps = BaseTriggerProps &\n Omit<React.ComponentProps<\"button\">, keyof BaseTriggerProps>;\n\nconst TriggerButton = forwardRef<HTMLButtonElement, TriggerButtonProps>(\n (\n {\n label,\n icon,\n buttonStyle,\n buttonSize,\n buttonProps,\n disabled,\n isOpen,\n onClick,\n className,\n ...otherProps\n },\n ref\n ) => (\n <PrimitiveButton\n ref={ref}\n type=\"button\"\n variant={BUTTON_STYLE_MAP[buttonStyle]}\n size={BUTTON_SIZE_MAP[buttonSize]}\n disabled={disabled}\n className={cn(\n buttonStyle === \"danger-text\" &&\n \"text-destructive hover:text-destructive\",\n \"gap-1.5\",\n className\n )}\n onClick={onClick}\n {...otherProps}\n {...buttonProps}\n >\n <span className=\"inline-flex items-center gap-1.5\">\n {icon && renderIcon(icon, \"size-4\")}\n {label && <span>{label}</span>}\n <ChevronDown\n aria-hidden=\"true\"\n className={cn(\n CHEVRON_SIZE_MAP[buttonSize],\n \"shrink-0 transition-transform duration-200\",\n isOpen && \"rotate-180\"\n )}\n />\n </span>\n </PrimitiveButton>\n )\n);\nTriggerButton.displayName = \"Dropdown.TriggerButton\";\n\nexport { TriggerButton };\n","import { createContext, type ReactNode, type Ref } from \"react\";\n\nimport { Button as PrimitiveButton } from \"src/primitives/Button\";\nimport {\n DropdownMenuContent,\n DropdownMenuItem as PrimitiveDropdownMenuItem,\n} from \"src/primitives/DropdownMenu\";\nimport type { IconProp } from \"src/lib/renderIcon\";\n\nexport type DropdownPosition =\n | \"top\"\n | \"bottom\"\n | \"left\"\n | \"right\"\n | \"top-start\"\n | \"top-end\"\n | \"bottom-start\"\n | \"bottom-end\"\n | \"left-start\"\n | \"left-end\"\n | \"right-start\"\n | \"right-end\"\n | \"auto\";\n\nexport type ButtonStyle =\n | \"primary\"\n | \"secondary\"\n | \"tertiary\"\n | \"text\"\n | \"danger\"\n | \"danger-text\"\n | \"link\";\n\nexport type ButtonSize = \"small\" | \"medium\" | \"large\";\n\nexport type MenuItemButtonStyle = \"default\" | \"danger\";\n\nexport interface BaseTriggerProps {\n label?: string;\n icon?: IconProp;\n buttonStyle: ButtonStyle;\n buttonSize: ButtonSize;\n buttonProps?: Omit<\n React.ComponentProps<typeof PrimitiveButton>,\n \"variant\" | \"size\" | \"disabled\"\n >;\n disabled: boolean;\n isOpen: boolean;\n onClick?: (e: React.MouseEvent) => void;\n}\n\nexport interface DropdownProps {\n /** Text label displayed inside the trigger button. */\n label?: string;\n /** Icon rendered inside the trigger button. */\n icon?: IconProp;\n /** Visual style of the trigger button(s). */\n buttonStyle?: ButtonStyle;\n /** Size of the trigger button(s). */\n buttonSize?: ButtonSize;\n /** Extra props forwarded to the trigger button. In split-button mode, forwarded to the action button. */\n buttonProps?: Omit<\n React.ComponentProps<typeof PrimitiveButton>,\n \"variant\" | \"size\" | \"disabled\"\n >;\n /** Custom trigger element. Overrides the default button trigger. */\n customTarget?: ReactNode | ((props: { isOpen: boolean }) => ReactNode);\n /** Whether the dropdown is disabled. */\n disabled?: boolean;\n /** Dropdown menu content. */\n children?: ReactNode;\n /** Position of the dropdown menu relative to the trigger. */\n position?: DropdownPosition;\n /** Whether pressing Escape closes the dropdown. */\n closeOnEsc?: boolean;\n /** Whether selecting an item closes the dropdown. */\n closeOnSelect?: boolean;\n /** Whether clicking outside closes the dropdown. */\n closeOnOutsideClick?: boolean;\n /** Controlled open state. */\n isOpen?: boolean;\n /** Callback fired when the dropdown closes. */\n onClose?: () => void;\n /**\n * Callback fired when the trigger button is clicked.\n * When provided (without `customTarget`), renders a **split-button**:\n * a primary action button (fires `onClick`) paired with a separate\n * chevron that opens the dropdown menu.\n */\n onClick?: (e: React.MouseEvent) => void;\n /** Additional CSS class names for the trigger wrapper. */\n className?: string;\n /** Ref forwarded to the trigger button. In split-button mode, forwarded to the action button. */\n triggerRef?: Ref<HTMLButtonElement>;\n /** Extra props forwarded to the DropdownMenuContent. */\n dropdownProps?: Omit<\n React.ComponentProps<typeof DropdownMenuContent>,\n \"side\" | \"align\"\n >;\n}\n\nexport interface MenuItemButtonProps extends Omit<\n React.ComponentProps<typeof PrimitiveDropdownMenuItem>,\n \"prefix\" | \"style\" | \"onClick\"\n> {\n /** Highlight as active. */\n isActive?: boolean;\n /** Disable the menu item button. */\n isDisabled?: boolean;\n /** Visual style of the button. */\n style?: MenuItemButtonStyle;\n /** Content rendered before the label. */\n prefix?: ReactNode;\n /** Content rendered after the label. */\n suffix?: ReactNode;\n /** Internal route (renders as anchor). */\n to?: string;\n /** External link (renders as anchor). */\n href?: string;\n /** Callback fired when the item is selected. */\n onClick?: (e: Event) => void;\n /** Children / label text. */\n children?: ReactNode;\n /** Additional CSS class names. */\n className?: string;\n}\n\nexport const DropdownContext = createContext({ closeOnSelect: true });\n","import { useCallback, useState } from \"react\";\n\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuTrigger,\n} from \"src/primitives/DropdownMenu\";\n\nimport { ALIGN_MAP, SIDE_MAP } from \"./constants\";\nimport { SplitTrigger } from \"./SplitTrigger\";\nimport { TriggerButton } from \"./TriggerButton\";\nimport { DropdownContext, type DropdownProps } from \"./types\";\n\nconst DropdownBase = ({\n label,\n icon,\n buttonStyle = \"primary\",\n buttonSize = \"medium\",\n buttonProps,\n customTarget,\n disabled = false,\n children,\n position = \"bottom-end\",\n closeOnEsc = true,\n closeOnSelect = true,\n closeOnOutsideClick = true,\n isOpen: isOpenProp,\n onClose,\n onClick,\n className,\n triggerRef,\n dropdownProps,\n}: DropdownProps) => {\n const [internalOpen, setInternalOpen] = useState(false);\n const isControlled = isOpenProp !== undefined;\n const open = isControlled ? isOpenProp : internalOpen;\n const handleOpenChange = useCallback(\n (next: boolean) => {\n if (!isControlled) setInternalOpen(next);\n if (!next) onClose?.();\n },\n [isControlled, onClose]\n );\n\n const side = SIDE_MAP[position] ?? \"bottom\";\n const align = ALIGN_MAP[position] ?? \"end\";\n\n // Split-button mode: onClick provided without a customTarget.\n const isSplit = !!onClick && !customTarget;\n\n const sharedTriggerProps = {\n label,\n icon,\n buttonStyle,\n buttonSize,\n buttonProps,\n disabled,\n isOpen: open,\n onClick,\n };\n\n const triggerNode = isSplit ? (\n <SplitTrigger\n {...sharedTriggerProps}\n actionButtonRef={triggerRef}\n className={className}\n />\n ) : (\n <DropdownMenuTrigger asChild disabled={disabled} className={className}>\n {customTarget ? (\n typeof customTarget === \"function\" ? (\n customTarget({ isOpen: open })\n ) : (\n customTarget\n )\n ) : (\n <TriggerButton ref={triggerRef} {...sharedTriggerProps} />\n )}\n </DropdownMenuTrigger>\n );\n\n return (\n <DropdownContext.Provider value={{ closeOnSelect }}>\n <DropdownMenu\n open={open}\n onOpenChange={handleOpenChange}\n modal={closeOnOutsideClick}\n >\n {triggerNode}\n <DropdownMenuContent\n side={side}\n align={align}\n onEscapeKeyDown={closeOnEsc ? undefined : e => e.preventDefault()}\n onInteractOutside={\n closeOnOutsideClick ? undefined : e => e.preventDefault()\n }\n {...dropdownProps}\n >\n {children}\n </DropdownMenuContent>\n </DropdownMenu>\n </DropdownContext.Provider>\n );\n};\n\nexport { DropdownBase };\n","import React, { forwardRef } from \"react\";\n\nimport { DropdownMenuSeparator } from \"src/primitives/DropdownMenu\";\n\nconst Divider = forwardRef<\n HTMLDivElement,\n React.ComponentProps<typeof DropdownMenuSeparator>\n>((props, ref) => <DropdownMenuSeparator ref={ref} {...props} />);\nDivider.displayName = \"Dropdown.Divider\";\n\nexport { Divider };\n","import React, { forwardRef, type ReactNode } from \"react\";\n\nimport { DropdownMenuLabel } from \"src/primitives/DropdownMenu\";\n\ninterface MenuLabelProps extends React.ComponentProps<\"div\"> {\n children?: ReactNode;\n className?: string;\n}\n\nconst Label = forwardRef<HTMLDivElement, MenuLabelProps>(\n ({ children, className, ...otherProps }, ref) => (\n <DropdownMenuLabel ref={ref} className={className} {...otherProps}>\n {children}\n </DropdownMenuLabel>\n )\n);\nLabel.displayName = \"Dropdown.Label\";\n\nexport { Label };\n","import React, { forwardRef, type ReactNode } from \"react\";\n\nimport { cn } from \"src/shadcn/lib/utils\";\nimport { DropdownMenuGroup } from \"src/primitives/DropdownMenu\";\n\ninterface MenuProps extends React.ComponentProps<\"div\"> {\n children?: ReactNode;\n className?: string;\n}\n\nconst Menu = forwardRef<HTMLDivElement, MenuProps>(\n ({ children, className, ...otherProps }, ref) => (\n <DropdownMenuGroup\n ref={ref}\n className={cn(\"flex flex-col\", className)}\n {...otherProps}\n >\n {children}\n </DropdownMenuGroup>\n )\n);\nMenu.displayName = \"Dropdown.Menu\";\n\nexport { Menu };\n","import React, { forwardRef, useCallback, useMemo, useContext } from \"react\";\n\nimport { cn } from \"src/shadcn/lib/utils\";\nimport { DropdownMenuItem as PrimitiveDropdownMenuItem } from \"src/primitives/DropdownMenu\";\n\nimport { MENU_ITEM_STYLE_MAP } from \"./constants\";\nimport { DropdownContext, type MenuItemButtonProps } from \"./types\";\n\nconst MenuItemButton = forwardRef<HTMLDivElement, MenuItemButtonProps>(\n (\n {\n children,\n isActive = false,\n isDisabled = false,\n style = \"default\",\n prefix,\n suffix,\n to,\n href,\n className,\n onClick,\n variant: _variant,\n disabled: _disabled,\n asChild: _asChild,\n onSelect: _onSelect,\n ...otherProps\n },\n ref\n ) => {\n const { closeOnSelect } = useContext(DropdownContext);\n const variant = MENU_ITEM_STYLE_MAP[style];\n const linkHref = to ?? href;\n\n const handleSelect = useCallback(\n (e: Event) => {\n if (!closeOnSelect) e.preventDefault();\n onClick?.(e);\n },\n [closeOnSelect, onClick]\n );\n\n const itemContent = useMemo(\n () => (\n <>\n {prefix && (\n <span data-slot=\"menu-item-prefix\" className=\"shrink-0\">\n {prefix}\n </span>\n )}\n <span className=\"flex-1 truncate\">{children}</span>\n {suffix && (\n <span\n data-slot=\"menu-item-suffix\"\n className=\"ms-auto shrink-0 text-muted-foreground\"\n >\n {suffix}\n </span>\n )}\n </>\n ),\n [prefix, children, suffix]\n );\n\n return (\n <PrimitiveDropdownMenuItem\n ref={ref}\n variant={variant}\n disabled={isDisabled}\n data-active={isActive || undefined}\n className={cn(isActive && \"bg-accent text-accent-foreground\", className)}\n asChild={!!linkHref}\n onSelect={handleSelect}\n {...otherProps}\n >\n {linkHref ? <a href={linkHref}>{itemContent}</a> : itemContent}\n </PrimitiveDropdownMenuItem>\n );\n }\n);\nMenuItemButton.displayName = \"Dropdown.MenuItem.Button\";\n\nexport { MenuItemButton };\n","import React, { forwardRef, type ReactNode } from \"react\";\n\nimport { MenuItemButton } from \"./MenuItemButton\";\n\ninterface MenuItemProps extends React.ComponentProps<\"div\"> {\n children?: ReactNode;\n className?: string;\n}\n\nconst MenuItem = forwardRef<HTMLDivElement, MenuItemProps>(\n ({ children, className, ...otherProps }, ref) => {\n // When used without className or extra props, skip the wrapper div\n // so Radix's DropdownMenuItem sits directly inside the Group.\n const hasWrapper = className || ref || Object.keys(otherProps).length > 0;\n\n if (!hasWrapper) return <>{children}</>;\n\n return (\n <div ref={ref} className={className} role=\"none\" {...otherProps}>\n {children}\n </div>\n );\n }\n) as React.ForwardRefExoticComponent<\n MenuItemProps & React.RefAttributes<HTMLDivElement>\n> & {\n Button: typeof MenuItemButton;\n};\nMenuItem.displayName = \"Dropdown.MenuItem\";\nMenuItem.Button = MenuItemButton;\n\nexport { MenuItem };\n","import { forwardRef, type ReactNode } from \"react\";\n\nimport { renderIcon, type IconProp } from \"src/lib/renderIcon\";\nimport {\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n} from \"src/primitives/DropdownMenu\";\n\ninterface SubMenuProps {\n label?: string;\n icon?: IconProp;\n children?: ReactNode;\n className?: string;\n}\n\nconst SubMenu = forwardRef<HTMLDivElement, SubMenuProps>(\n ({ label, icon, children, className }, ref) => (\n <DropdownMenuSub>\n <DropdownMenuSubTrigger ref={ref} className={className}>\n {icon && <span className=\"shrink-0\">{renderIcon(icon, \"size-4\")}</span>}\n {label && <span>{label}</span>}\n </DropdownMenuSubTrigger>\n <DropdownMenuSubContent>{children}</DropdownMenuSubContent>\n </DropdownMenuSub>\n )\n);\nSubMenu.displayName = \"Dropdown.SubMenu\";\n\nexport { SubMenu };\n","import { DropdownBase } from \"./DropdownBase\";\nimport { Divider } from \"./Divider\";\nimport { Label } from \"./Label\";\nimport { Menu } from \"./Menu\";\nimport { MenuItem } from \"./MenuItem\";\nimport { SubMenu } from \"./SubMenu\";\n\nexport type { DropdownProps, DropdownPosition } from \"./types\";\n\ntype DropdownComponent = typeof DropdownBase & {\n Menu: typeof Menu;\n MenuItem: typeof MenuItem;\n Divider: typeof Divider;\n Label: typeof Label;\n SubMenu: typeof SubMenu;\n};\n\nconst DropdownMenu = DropdownBase as DropdownComponent;\nDropdownMenu.displayName = \"DropdownMenu\";\nDropdownMenu.Menu = Menu;\nDropdownMenu.MenuItem = MenuItem;\nDropdownMenu.Divider = Divider;\nDropdownMenu.Label = Label;\nDropdownMenu.SubMenu = SubMenu;\n\nexport { DropdownMenu };\n"],"names":["_jsxs","PrimitiveButton","_jsx","DropdownMenu","_Fragment","PrimitiveDropdownMenuItem"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DropdownMenu.js","sources":["../../src/components/DropdownMenu/constants.ts","../../src/components/DropdownMenu/SplitTrigger.tsx","../../src/components/DropdownMenu/TriggerButton.tsx","../../src/components/DropdownMenu/types.ts","../../src/components/DropdownMenu/DropdownBase.tsx","../../src/components/DropdownMenu/Divider.tsx","../../src/components/DropdownMenu/Label.tsx","../../src/components/DropdownMenu/Menu.tsx","../../src/components/DropdownMenu/MenuItemButton.tsx","../../src/components/DropdownMenu/MenuItem.tsx","../../src/components/DropdownMenu/SubMenu.tsx","../../src/components/DropdownMenu/index.tsx"],"sourcesContent":["import type { ButtonSize, ButtonStyle } from \"./types\";\n\nexport 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: \"bottom\",\n};\n\nexport const ALIGN_MAP: Record<string, \"start\" | \"center\" | \"end\"> = {\n top: \"center\",\n bottom: \"center\",\n left: \"center\",\n right: \"center\",\n \"top-start\": \"start\",\n \"top-end\": \"end\",\n \"bottom-start\": \"start\",\n \"bottom-end\": \"end\",\n \"left-start\": \"start\",\n \"left-end\": \"end\",\n \"right-start\": \"start\",\n \"right-end\": \"end\",\n auto: \"end\",\n};\n\nexport const BUTTON_STYLE_MAP: Record<\n ButtonStyle,\n \"default\" | \"secondary\" | \"destructive\" | \"outline\" | \"ghost\" | \"link\"\n> = {\n primary: \"default\",\n secondary: \"secondary\",\n tertiary: \"outline\",\n text: \"ghost\",\n danger: \"destructive\",\n \"danger-text\": \"ghost\",\n link: \"link\",\n};\n\nexport const BUTTON_SIZE_MAP: Record<ButtonSize, \"sm\" | \"default\" | \"lg\"> = {\n small: \"sm\",\n medium: \"default\",\n large: \"lg\",\n};\n\nexport const MENU_ITEM_STYLE_MAP: Record<\n \"default\" | \"danger\",\n \"default\" | \"destructive\"\n> = {\n default: \"default\",\n danger: \"destructive\",\n};\n\nexport const CHEVRON_SIZE_MAP: Record<ButtonSize, string> = {\n small: \"size-3.5\",\n medium: \"size-4\",\n large: \"size-4\",\n};\n","import React, { forwardRef } from \"react\";\n\nimport { ChevronDown } from \"lucide-react\";\nimport { useTranslation } from \"react-i18next\";\nimport { cn } from \"src/shadcn/lib/utils\";\nimport { renderIcon } from \"src/lib/renderIcon\";\nimport { Button as PrimitiveButton } from \"src/primitives/Button\";\nimport { ButtonGroup } from \"src/primitives/ButtonGroup\";\nimport { DropdownMenuTrigger } from \"src/primitives/DropdownMenu\";\n\nimport {\n BUTTON_SIZE_MAP,\n BUTTON_STYLE_MAP,\n CHEVRON_SIZE_MAP,\n} from \"./constants\";\nimport type { BaseTriggerProps } from \"./types\";\n\ninterface SplitTriggerOwnProps extends BaseTriggerProps {\n /** Ref forwarded to the action button (left side). */\n actionButtonRef?: React.Ref<HTMLButtonElement>;\n}\n\n/**\n * Radix injects extra props (aria-expanded, data-state, …) via Slot on the\n * DropdownMenuTrigger child. We capture them with a rest-spread.\n */\ntype SplitTriggerProps = SplitTriggerOwnProps &\n Omit<React.ComponentProps<\"div\">, keyof SplitTriggerOwnProps>;\n\nconst SplitTrigger = forwardRef<HTMLDivElement, SplitTriggerProps>(\n (\n {\n label,\n icon,\n buttonStyle,\n buttonSize,\n buttonProps,\n disabled,\n isOpen,\n onClick,\n actionButtonRef,\n className,\n ...otherProps\n },\n ref\n ) => {\n const { t } = useTranslation();\n const variant = BUTTON_STYLE_MAP[buttonStyle];\n const size = BUTTON_SIZE_MAP[buttonSize];\n\n return (\n <ButtonGroup\n ref={ref}\n className={cn(\"neeto-ui-action-dropdown\", className)}\n {...otherProps}\n >\n {/* Action button — fires the primary onClick */}\n <PrimitiveButton\n ref={actionButtonRef}\n type=\"button\"\n variant={variant}\n size={size}\n disabled={disabled}\n onClick={onClick}\n data-testid=\"action-dropdown-btn\"\n {...buttonProps}\n >\n {icon && renderIcon(icon, \"size-4\")}\n {label && <span>{label}</span>}\n </PrimitiveButton>\n\n {/* Chevron trigger — opens the dropdown menu */}\n <DropdownMenuTrigger asChild disabled={disabled}>\n <PrimitiveButton\n type=\"button\"\n variant={variant}\n size={size}\n disabled={disabled}\n aria-label={t(\n \"neetoatoms.dropdownMenu.openMenu\",\n \"Open dropdown menu\"\n )}\n className=\"px-1.5\"\n >\n <ChevronDown\n aria-hidden=\"true\"\n className={cn(\n CHEVRON_SIZE_MAP[buttonSize],\n \"shrink-0 transition-transform duration-200\",\n isOpen && \"rotate-180\"\n )}\n />\n </PrimitiveButton>\n </DropdownMenuTrigger>\n </ButtonGroup>\n );\n }\n);\nSplitTrigger.displayName = \"Dropdown.SplitTrigger\";\n\nexport { SplitTrigger };\n","import React, { forwardRef } from \"react\";\n\nimport { ChevronDown } from \"lucide-react\";\nimport { cn } from \"src/shadcn/lib/utils\";\nimport { renderIcon } from \"src/lib/renderIcon\";\nimport { Button as PrimitiveButton } from \"src/primitives/Button\";\n\nimport { BUTTON_SIZE_MAP, BUTTON_STYLE_MAP, CHEVRON_SIZE_MAP } from \"./constants\";\nimport type { BaseTriggerProps } from \"./types\";\n\n/**\n * Extra props that Radix's Slot injects when the parent Trigger uses\n * `asChild` (aria-expanded, aria-haspopup, data-state, id, …).\n * We capture them with a rest-spread so they reach the DOM button.\n */\ntype TriggerButtonProps = BaseTriggerProps &\n Omit<React.ComponentProps<\"button\">, keyof BaseTriggerProps>;\n\nconst TriggerButton = forwardRef<HTMLButtonElement, TriggerButtonProps>(\n (\n {\n label,\n icon,\n buttonStyle,\n buttonSize,\n buttonProps,\n disabled,\n isOpen,\n onClick,\n className,\n ...otherProps\n },\n ref\n ) => (\n <PrimitiveButton\n ref={ref}\n type=\"button\"\n variant={BUTTON_STYLE_MAP[buttonStyle]}\n size={BUTTON_SIZE_MAP[buttonSize]}\n disabled={disabled}\n className={cn(\n buttonStyle === \"danger-text\" &&\n \"text-destructive hover:text-destructive\",\n \"gap-1.5\",\n className\n )}\n onClick={onClick}\n {...otherProps}\n {...buttonProps}\n >\n <span className=\"inline-flex items-center gap-1.5\">\n {icon && renderIcon(icon, \"size-4\")}\n {label && <span>{label}</span>}\n <ChevronDown\n aria-hidden=\"true\"\n className={cn(\n CHEVRON_SIZE_MAP[buttonSize],\n \"shrink-0 transition-transform duration-200\",\n isOpen && \"rotate-180\"\n )}\n />\n </span>\n </PrimitiveButton>\n )\n);\nTriggerButton.displayName = \"Dropdown.TriggerButton\";\n\nexport { TriggerButton };\n","import { createContext, type ReactNode, type Ref } from \"react\";\n\nimport { Button as PrimitiveButton } from \"src/primitives/Button\";\nimport {\n DropdownMenuContent,\n DropdownMenuItem as PrimitiveDropdownMenuItem,\n} from \"src/primitives/DropdownMenu\";\nimport type { IconProp } from \"src/lib/renderIcon\";\n\nexport type DropdownPosition =\n | \"top\"\n | \"bottom\"\n | \"left\"\n | \"right\"\n | \"top-start\"\n | \"top-end\"\n | \"bottom-start\"\n | \"bottom-end\"\n | \"left-start\"\n | \"left-end\"\n | \"right-start\"\n | \"right-end\"\n | \"auto\";\n\nexport type ButtonStyle =\n | \"primary\"\n | \"secondary\"\n | \"tertiary\"\n | \"text\"\n | \"danger\"\n | \"danger-text\"\n | \"link\";\n\nexport type ButtonSize = \"small\" | \"medium\" | \"large\";\n\nexport type MenuItemButtonStyle = \"default\" | \"danger\";\n\nexport interface BaseTriggerProps {\n label?: string;\n icon?: IconProp;\n buttonStyle: ButtonStyle;\n buttonSize: ButtonSize;\n buttonProps?: Omit<\n React.ComponentProps<typeof PrimitiveButton>,\n \"variant\" | \"size\" | \"disabled\"\n >;\n disabled: boolean;\n isOpen: boolean;\n onClick?: (e: React.MouseEvent) => void;\n}\n\nexport interface DropdownProps {\n /** Text label displayed inside the trigger button. */\n label?: string;\n /** Icon rendered inside the trigger button. */\n icon?: IconProp;\n /** Visual style of the trigger button(s). */\n buttonStyle?: ButtonStyle;\n /** Size of the trigger button(s). */\n buttonSize?: ButtonSize;\n /** Extra props forwarded to the trigger button. In split-button mode, forwarded to the action button. */\n buttonProps?: Omit<\n React.ComponentProps<typeof PrimitiveButton>,\n \"variant\" | \"size\" | \"disabled\"\n >;\n /** Custom trigger element. Overrides the default button trigger. */\n customTarget?: ReactNode | ((props: { isOpen: boolean }) => ReactNode);\n /** Whether the dropdown is disabled. */\n disabled?: boolean;\n /** Dropdown menu content. */\n children?: ReactNode;\n /** Position of the dropdown menu relative to the trigger. */\n position?: DropdownPosition;\n /** Whether pressing Escape closes the dropdown. */\n closeOnEsc?: boolean;\n /** Whether selecting an item closes the dropdown. */\n closeOnSelect?: boolean;\n /** Whether clicking outside closes the dropdown. */\n closeOnOutsideClick?: boolean;\n /** Controlled open state. */\n isOpen?: boolean;\n /** Callback fired when the dropdown closes. */\n onClose?: () => void;\n /**\n * Callback fired when the trigger button is clicked.\n * When provided (without `customTarget`), renders a **split-button**:\n * a primary action button (fires `onClick`) paired with a separate\n * chevron that opens the dropdown menu.\n */\n onClick?: (e: React.MouseEvent) => void;\n /** Additional CSS class names for the trigger wrapper. */\n className?: string;\n /** Ref forwarded to the trigger button. In split-button mode, forwarded to the action button. */\n triggerRef?: Ref<HTMLButtonElement>;\n /** Extra props forwarded to the DropdownMenuContent. */\n dropdownProps?: Omit<\n React.ComponentProps<typeof DropdownMenuContent>,\n \"side\" | \"align\"\n >;\n}\n\nexport interface MenuItemButtonProps extends Omit<\n React.ComponentProps<typeof PrimitiveDropdownMenuItem>,\n \"prefix\" | \"style\" | \"onClick\"\n> {\n /** Highlight as active. */\n isActive?: boolean;\n /** Disable the menu item button. */\n isDisabled?: boolean;\n /** Visual style of the button. */\n style?: MenuItemButtonStyle;\n /** Content rendered before the label. */\n prefix?: ReactNode;\n /** Content rendered after the label. */\n suffix?: ReactNode;\n /** Internal route (renders as anchor). */\n to?: string;\n /** External link (renders as anchor). */\n href?: string;\n /** Callback fired when the item is selected. */\n onClick?: (e: Event) => void;\n /** Children / label text. */\n children?: ReactNode;\n /** Additional CSS class names. */\n className?: string;\n}\n\nexport const DropdownContext = createContext({ closeOnSelect: true });\n","import { useCallback, useState } from \"react\";\n\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuTrigger,\n} from \"src/primitives/DropdownMenu\";\n\nimport { ALIGN_MAP, SIDE_MAP } from \"./constants\";\nimport { SplitTrigger } from \"./SplitTrigger\";\nimport { TriggerButton } from \"./TriggerButton\";\nimport { DropdownContext, type DropdownProps } from \"./types\";\n\nconst DropdownBase = ({\n label,\n icon,\n buttonStyle = \"primary\",\n buttonSize = \"medium\",\n buttonProps,\n customTarget,\n disabled = false,\n children,\n position = \"bottom-end\",\n closeOnEsc = true,\n closeOnSelect = true,\n closeOnOutsideClick = true,\n isOpen: isOpenProp,\n onClose,\n onClick,\n className,\n triggerRef,\n dropdownProps,\n}: DropdownProps) => {\n const [internalOpen, setInternalOpen] = useState(false);\n const isControlled = isOpenProp !== undefined;\n const open = isControlled ? isOpenProp : internalOpen;\n const handleOpenChange = useCallback(\n (next: boolean) => {\n if (!isControlled) setInternalOpen(next);\n if (!next) onClose?.();\n },\n [isControlled, onClose]\n );\n\n const side = SIDE_MAP[position] ?? \"bottom\";\n const align = ALIGN_MAP[position] ?? \"end\";\n\n // Split-button mode: onClick provided without a customTarget.\n const isSplit = !!onClick && !customTarget;\n\n const sharedTriggerProps = {\n label,\n icon,\n buttonStyle,\n buttonSize,\n buttonProps,\n disabled,\n isOpen: open,\n onClick,\n };\n\n const triggerNode = isSplit ? (\n <SplitTrigger\n {...sharedTriggerProps}\n actionButtonRef={triggerRef}\n className={className}\n />\n ) : (\n <DropdownMenuTrigger asChild disabled={disabled} className={className}>\n {customTarget ? (\n typeof customTarget === \"function\" ? (\n customTarget({ isOpen: open })\n ) : (\n customTarget\n )\n ) : (\n <TriggerButton ref={triggerRef} {...sharedTriggerProps} />\n )}\n </DropdownMenuTrigger>\n );\n\n return (\n <DropdownContext.Provider value={{ closeOnSelect }}>\n <DropdownMenu\n open={open}\n onOpenChange={handleOpenChange}\n modal={closeOnOutsideClick}\n >\n {triggerNode}\n <DropdownMenuContent\n side={side}\n align={align}\n onEscapeKeyDown={closeOnEsc ? undefined : e => e.preventDefault()}\n onInteractOutside={\n closeOnOutsideClick ? undefined : e => e.preventDefault()\n }\n {...dropdownProps}\n >\n {children}\n </DropdownMenuContent>\n </DropdownMenu>\n </DropdownContext.Provider>\n );\n};\n\nexport { DropdownBase };\n","import React, { forwardRef } from \"react\";\n\nimport { DropdownMenuSeparator } from \"src/primitives/DropdownMenu\";\n\nconst Divider = forwardRef<\n HTMLDivElement,\n React.ComponentProps<typeof DropdownMenuSeparator>\n>((props, ref) => <DropdownMenuSeparator ref={ref} {...props} />);\nDivider.displayName = \"Dropdown.Divider\";\n\nexport { Divider };\n","import React, { forwardRef, type ReactNode } from \"react\";\n\nimport { DropdownMenuLabel } from \"src/primitives/DropdownMenu\";\n\ninterface MenuLabelProps extends React.ComponentProps<\"div\"> {\n children?: ReactNode;\n className?: string;\n}\n\nconst Label = forwardRef<HTMLDivElement, MenuLabelProps>(\n ({ children, className, ...otherProps }, ref) => (\n <DropdownMenuLabel ref={ref} className={className} {...otherProps}>\n {children}\n </DropdownMenuLabel>\n )\n);\nLabel.displayName = \"Dropdown.Label\";\n\nexport { Label };\n","import React, { forwardRef, type ReactNode } from \"react\";\n\nimport { cn } from \"src/shadcn/lib/utils\";\nimport { DropdownMenuGroup } from \"src/primitives/DropdownMenu\";\n\ninterface MenuProps extends React.ComponentProps<\"div\"> {\n children?: ReactNode;\n className?: string;\n}\n\nconst Menu = forwardRef<HTMLDivElement, MenuProps>(\n ({ children, className, ...otherProps }, ref) => (\n <DropdownMenuGroup\n ref={ref}\n className={cn(\"flex flex-col\", className)}\n {...otherProps}\n >\n {children}\n </DropdownMenuGroup>\n )\n);\nMenu.displayName = \"Dropdown.Menu\";\n\nexport { Menu };\n","import { forwardRef, useCallback, useMemo, useContext } from \"react\";\n\nimport { cn } from \"src/shadcn/lib/utils\";\nimport { DropdownMenuItem as PrimitiveDropdownMenuItem } from \"src/primitives/DropdownMenu\";\n\nimport { MENU_ITEM_STYLE_MAP } from \"./constants\";\nimport { DropdownContext, type MenuItemButtonProps } from \"./types\";\n\nconst MenuItemButton = forwardRef<HTMLDivElement, MenuItemButtonProps>(\n (\n {\n children,\n isActive = false,\n isDisabled = false,\n style = \"default\",\n prefix,\n suffix,\n to,\n href,\n className,\n onClick,\n variant: _variant,\n disabled: _disabled,\n asChild: _asChild,\n onSelect: _onSelect,\n ...otherProps\n },\n ref\n ) => {\n const { closeOnSelect } = useContext(DropdownContext);\n const variant = MENU_ITEM_STYLE_MAP[style];\n const linkHref = to ?? href;\n\n const handleSelect = useCallback(\n (e: Event) => {\n if (!closeOnSelect) e.preventDefault();\n onClick?.(e);\n },\n [closeOnSelect, onClick]\n );\n\n const itemContent = useMemo(\n () => (\n <>\n {prefix && (\n <span data-slot=\"menu-item-prefix\" className=\"shrink-0\">\n {prefix}\n </span>\n )}\n <span className=\"flex-1 truncate\">{children}</span>\n {suffix && (\n <span\n data-slot=\"menu-item-suffix\"\n className=\"ms-auto shrink-0 text-muted-foreground\"\n >\n {suffix}\n </span>\n )}\n </>\n ),\n [prefix, children, suffix]\n );\n\n return (\n <PrimitiveDropdownMenuItem\n ref={ref}\n variant={variant}\n disabled={isDisabled}\n data-active={isActive || undefined}\n className={cn(\n isActive && \"bg-accent text-accent-foreground\",\n className\n )}\n asChild={!!linkHref}\n onSelect={handleSelect}\n {...otherProps}\n >\n {linkHref ? <a href={linkHref}>{itemContent}</a> : itemContent}\n </PrimitiveDropdownMenuItem>\n );\n }\n);\nMenuItemButton.displayName = \"Dropdown.MenuItem.Button\";\n\nexport { MenuItemButton };\n","import React, { forwardRef, type ReactNode } from \"react\";\n\nimport { MenuItemButton } from \"./MenuItemButton\";\n\ninterface MenuItemProps extends React.ComponentProps<\"div\"> {\n children?: ReactNode;\n className?: string;\n}\n\nconst MenuItem = forwardRef<HTMLDivElement, MenuItemProps>(\n ({ children, className, ...otherProps }, ref) => {\n // When used without className or extra props, skip the wrapper div\n // so Radix's DropdownMenuItem sits directly inside the Group.\n const hasWrapper = className || ref || Object.keys(otherProps).length > 0;\n\n if (!hasWrapper) return <>{children}</>;\n\n return (\n <div ref={ref} className={className} role=\"none\" {...otherProps}>\n {children}\n </div>\n );\n }\n) as React.ForwardRefExoticComponent<\n MenuItemProps & React.RefAttributes<HTMLDivElement>\n> & {\n Button: typeof MenuItemButton;\n};\nMenuItem.displayName = \"Dropdown.MenuItem\";\nMenuItem.Button = MenuItemButton;\n\nexport { MenuItem };\n","import { forwardRef, type ReactNode } from \"react\";\n\nimport { renderIcon, type IconProp } from \"src/lib/renderIcon\";\nimport {\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n} from \"src/primitives/DropdownMenu\";\n\ninterface SubMenuProps {\n label?: string;\n icon?: IconProp;\n children?: ReactNode;\n className?: string;\n}\n\nconst SubMenu = forwardRef<HTMLDivElement, SubMenuProps>(\n ({ label, icon, children, className }, ref) => (\n <DropdownMenuSub>\n <DropdownMenuSubTrigger ref={ref} className={className}>\n {icon && <span className=\"shrink-0\">{renderIcon(icon, \"size-4\")}</span>}\n {label && <span>{label}</span>}\n </DropdownMenuSubTrigger>\n <DropdownMenuSubContent>{children}</DropdownMenuSubContent>\n </DropdownMenuSub>\n )\n);\nSubMenu.displayName = \"Dropdown.SubMenu\";\n\nexport { SubMenu };\n","import { DropdownBase } from \"./DropdownBase\";\nimport { Divider } from \"./Divider\";\nimport { Label } from \"./Label\";\nimport { Menu } from \"./Menu\";\nimport { MenuItem } from \"./MenuItem\";\nimport { SubMenu } from \"./SubMenu\";\n\nexport type { DropdownProps, DropdownPosition } from \"./types\";\n\ntype DropdownComponent = typeof DropdownBase & {\n displayName?: string;\n Menu: typeof Menu;\n MenuItem: typeof MenuItem;\n Divider: typeof Divider;\n Label: typeof Label;\n SubMenu: typeof SubMenu;\n};\n\nconst DropdownMenu = DropdownBase as DropdownComponent;\nDropdownMenu.displayName = \"DropdownMenu\";\nDropdownMenu.Menu = Menu;\nDropdownMenu.MenuItem = MenuItem;\nDropdownMenu.Divider = Divider;\nDropdownMenu.Label = Label;\nDropdownMenu.SubMenu = SubMenu;\n\nexport { DropdownMenu };\n"],"names":["_jsxs","PrimitiveButton","_jsx","DropdownMenu","_Fragment","PrimitiveDropdownMenuItem"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEO,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,QAAQ;CACf;AAEM,MAAM,SAAS,GAA+C;AACnE,IAAA,GAAG,EAAE,QAAQ;AACb,IAAA,MAAM,EAAE,QAAQ;AAChB,IAAA,IAAI,EAAE,QAAQ;AACd,IAAA,KAAK,EAAE,QAAQ;AACf,IAAA,WAAW,EAAE,OAAO;AACpB,IAAA,SAAS,EAAE,KAAK;AAChB,IAAA,cAAc,EAAE,OAAO;AACvB,IAAA,YAAY,EAAE,KAAK;AACnB,IAAA,YAAY,EAAE,OAAO;AACrB,IAAA,UAAU,EAAE,KAAK;AACjB,IAAA,aAAa,EAAE,OAAO;AACtB,IAAA,WAAW,EAAE,KAAK;AAClB,IAAA,IAAI,EAAE,KAAK;CACZ;AAEM,MAAM,gBAAgB,GAGzB;AACF,IAAA,OAAO,EAAE,SAAS;AAClB,IAAA,SAAS,EAAE,WAAW;AACtB,IAAA,QAAQ,EAAE,SAAS;AACnB,IAAA,IAAI,EAAE,OAAO;AACb,IAAA,MAAM,EAAE,aAAa;AACrB,IAAA,aAAa,EAAE,OAAO;AACtB,IAAA,IAAI,EAAE,MAAM;CACb;AAEM,MAAM,eAAe,GAAgD;AAC1E,IAAA,KAAK,EAAE,IAAI;AACX,IAAA,MAAM,EAAE,SAAS;AACjB,IAAA,KAAK,EAAE,IAAI;CACZ;AAEM,MAAM,mBAAmB,GAG5B;AACF,IAAA,OAAO,EAAE,SAAS;AAClB,IAAA,MAAM,EAAE,aAAa;CACtB;AAEM,MAAM,gBAAgB,GAA+B;AAC1D,IAAA,KAAK,EAAE,UAAU;AACjB,IAAA,MAAM,EAAE,QAAQ;AAChB,IAAA,KAAK,EAAE,QAAQ;CAChB;;ACpCD,MAAM,YAAY,GAAG,UAAU,CAC7B,CACE,EACE,KAAK,EACL,IAAI,EACJ,WAAW,EACX,UAAU,EACV,WAAW,EACX,QAAQ,EACR,MAAM,EACN,OAAO,EACP,eAAe,EACf,SAAS,EACT,GAAG,UAAU,EACd,EACD,GAAG,KACD;AACF,IAAA,MAAM,EAAE,CAAC,EAAE,GAAG,cAAc,EAAE;AAC9B,IAAA,MAAM,OAAO,GAAG,gBAAgB,CAAC,WAAW,CAAC;AAC7C,IAAA,MAAM,IAAI,GAAG,eAAe,CAAC,UAAU,CAAC;AAExC,IAAA,QACEA,IAAA,CAAC,WAAW,EAAA,EACV,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,EAAE,CAAC,0BAA0B,EAAE,SAAS,CAAC,EAAA,GAChD,UAAU,EAAA,QAAA,EAAA,CAGdA,IAAA,CAACC,MAAe,EAAA,EACd,GAAG,EAAE,eAAe,EACpB,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,OAAO,iBACJ,qBAAqB,EAAA,GAC7B,WAAW,EAAA,QAAA,EAAA,CAEd,IAAI,IAAI,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC,EAClC,KAAK,IAAIC,GAAA,CAAA,MAAA,EAAA,EAAA,QAAA,EAAO,KAAK,EAAA,CAAQ,CAAA,EAAA,CACd,EAGlBA,GAAA,CAAC,mBAAmB,EAAA,EAAC,OAAO,EAAA,IAAA,EAAC,QAAQ,EAAE,QAAQ,EAAA,QAAA,EAC7CA,GAAA,CAACD,MAAe,EAAA,EACd,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,QAAQ,EAAA,YAAA,EACN,CAAC,CACX,kCAAkC,EAClC,oBAAoB,CACrB,EACD,SAAS,EAAC,QAAQ,EAAA,QAAA,EAElBC,GAAA,CAAC,WAAW,EAAA,EAAA,aAAA,EACE,MAAM,EAClB,SAAS,EAAE,EAAE,CACX,gBAAgB,CAAC,UAAU,CAAC,EAC5B,4CAA4C,EAC5C,MAAM,IAAI,YAAY,CACvB,EAAA,CACD,EAAA,CACc,EAAA,CACE,CAAA,EAAA,CACV;AAElB,CAAC,CACF;AACD,YAAY,CAAC,WAAW,GAAG,uBAAuB;;AChFlD,MAAM,aAAa,GAAG,UAAU,CAC9B,CACE,EACE,KAAK,EACL,IAAI,EACJ,WAAW,EACX,UAAU,EACV,WAAW,EACX,QAAQ,EACR,MAAM,EACN,OAAO,EACP,SAAS,EACT,GAAG,UAAU,EACd,EACD,GAAG,MAEHA,GAAA,CAACD,MAAe,EAAA,EACd,GAAG,EAAE,GAAG,EACR,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,gBAAgB,CAAC,WAAW,CAAC,EACtC,IAAI,EAAE,eAAe,CAAC,UAAU,CAAC,EACjC,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,EAAE,CACX,WAAW,KAAK,aAAa;QAC3B,yCAAyC,EAC3C,SAAS,EACT,SAAS,CACV,EACD,OAAO,EAAE,OAAO,EAAA,GACZ,UAAU,EAAA,GACV,WAAW,EAAA,QAAA,EAEfD,IAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,kCAAkC,EAAA,QAAA,EAAA,CAC/C,IAAI,IAAI,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC,EAClC,KAAK,IAAIE,GAAA,CAAA,MAAA,EAAA,EAAA,QAAA,EAAO,KAAK,EAAA,CAAQ,EAC9BA,GAAA,CAAC,WAAW,EAAA,EAAA,aAAA,EACE,MAAM,EAClB,SAAS,EAAE,EAAE,CACX,gBAAgB,CAAC,UAAU,CAAC,EAC5B,4CAA4C,EAC5C,MAAM,IAAI,YAAY,CACvB,EAAA,CACD,CAAA,EAAA,CACG,EAAA,CACS,CACnB,CACF;AACD,aAAa,CAAC,WAAW,GAAG,wBAAwB;;AC8D7C,MAAM,eAAe,GAAG,aAAa,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;;AClHrE,MAAM,YAAY,GAAG,CAAC,EACpB,KAAK,EACL,IAAI,EACJ,WAAW,GAAG,SAAS,EACvB,UAAU,GAAG,QAAQ,EACrB,WAAW,EACX,YAAY,EACZ,QAAQ,GAAG,KAAK,EAChB,QAAQ,EACR,QAAQ,GAAG,YAAY,EACvB,UAAU,GAAG,IAAI,EACjB,aAAa,GAAG,IAAI,EACpB,mBAAmB,GAAG,IAAI,EAC1B,MAAM,EAAE,UAAU,EAClB,OAAO,EACP,OAAO,EACP,SAAS,EACT,UAAU,EACV,aAAa,GACC,KAAI;IAClB,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC;AACvD,IAAA,MAAM,YAAY,GAAG,UAAU,KAAK,SAAS;IAC7C,MAAM,IAAI,GAAG,YAAY,GAAG,UAAU,GAAG,YAAY;AACrD,IAAA,MAAM,gBAAgB,GAAG,WAAW,CAClC,CAAC,IAAa,KAAI;AAChB,QAAA,IAAI,CAAC,YAAY;YAAE,eAAe,CAAC,IAAI,CAAC;AACxC,QAAA,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI;AACxB,IAAA,CAAC,EACD,CAAC,YAAY,EAAE,OAAO,CAAC,CACxB;IAED,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI,QAAQ;IAC3C,MAAM,KAAK,GAAG,SAAS,CAAC,QAAQ,CAAC,IAAI,KAAK;;IAG1C,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,IAAI,CAAC,YAAY;AAE1C,IAAA,MAAM,kBAAkB,GAAG;QACzB,KAAK;QACL,IAAI;QACJ,WAAW;QACX,UAAU;QACV,WAAW;QACX,QAAQ;AACR,QAAA,MAAM,EAAE,IAAI;QACZ,OAAO;KACR;AAED,IAAA,MAAM,WAAW,GAAG,OAAO,IACzBA,GAAA,CAAC,YAAY,EAAA,EAAA,GACP,kBAAkB,EACtB,eAAe,EAAE,UAAU,EAC3B,SAAS,EAAE,SAAS,EAAA,CACpB,KAEFA,GAAA,CAAC,mBAAmB,IAAC,OAAO,EAAA,IAAA,EAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAA,QAAA,EAClE,YAAY,IACX,OAAO,YAAY,KAAK,UAAU,IAChC,YAAY,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,KAE9B,YAAY,CACb,KAEDA,IAAC,aAAa,EAAA,EAAC,GAAG,EAAE,UAAU,EAAA,GAAM,kBAAkB,GAAI,CAC3D,EAAA,CACmB,CACvB;AAED,IAAA,QACEA,GAAA,CAAC,eAAe,CAAC,QAAQ,EAAA,EAAC,KAAK,EAAE,EAAE,aAAa,EAAE,YAChDF,IAAA,CAACG,cAAY,IACX,IAAI,EAAE,IAAI,EACV,YAAY,EAAE,gBAAgB,EAC9B,KAAK,EAAE,mBAAmB,EAAA,QAAA,EAAA,CAEzB,WAAW,EACZD,GAAA,CAAC,mBAAmB,EAAA,EAClB,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,KAAK,EACZ,eAAe,EAAE,UAAU,GAAG,SAAS,GAAG,CAAC,IAAI,CAAC,CAAC,cAAc,EAAE,EACjE,iBAAiB,EACf,mBAAmB,GAAG,SAAS,GAAG,CAAC,IAAI,CAAC,CAAC,cAAc,EAAE,EAAA,GAEvD,aAAa,EAAA,QAAA,EAEhB,QAAQ,GACW,CAAA,EAAA,CACT,EAAA,CACU;AAE/B,CAAC;;ACnGD,MAAM,OAAO,GAAG,UAAU,CAGxB,CAAC,KAAK,EAAE,GAAG,KAAKA,GAAA,CAAC,qBAAqB,IAAC,GAAG,EAAE,GAAG,EAAA,GAAM,KAAK,EAAA,CAAI,CAAC;AACjE,OAAO,CAAC,WAAW,GAAG,kBAAkB;;ACCxC,MAAM,KAAK,GAAG,UAAU,CACtB,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,UAAU,EAAE,EAAE,GAAG,MAC1CA,GAAA,CAAC,iBAAiB,EAAA,EAAC,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,SAAS,EAAA,GAAM,UAAU,EAAA,QAAA,EAC9D,QAAQ,EAAA,CACS,CACrB,CACF;AACD,KAAK,CAAC,WAAW,GAAG,gBAAgB;;ACNpC,MAAM,IAAI,GAAG,UAAU,CACrB,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,UAAU,EAAE,EAAE,GAAG,MAC1CA,GAAA,CAAC,iBAAiB,EAAA,EAChB,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,EAAE,CAAC,eAAe,EAAE,SAAS,CAAC,KACrC,UAAU,EAAA,QAAA,EAEb,QAAQ,EAAA,CACS,CACrB,CACF;AACD,IAAI,CAAC,WAAW,GAAG,eAAe;;ACblC,MAAM,cAAc,GAAG,UAAU,CAC/B,CACE,EACE,QAAQ,EACR,QAAQ,GAAG,KAAK,EAChB,UAAU,GAAG,KAAK,EAClB,KAAK,GAAG,SAAS,EACjB,MAAM,EACN,MAAM,EACN,EAAE,EACF,IAAI,EACJ,SAAS,EACT,OAAO,EACP,OAAO,EAAE,QAAQ,EACjB,QAAQ,EAAE,SAAS,EACnB,OAAO,EAAE,QAAQ,EACjB,QAAQ,EAAE,SAAS,EACnB,GAAG,UAAU,EACd,EACD,GAAG,KACD;IACF,MAAM,EAAE,aAAa,EAAE,GAAG,UAAU,CAAC,eAAe,CAAC;AACrD,IAAA,MAAM,OAAO,GAAG,mBAAmB,CAAC,KAAK,CAAC;AAC1C,IAAA,MAAM,QAAQ,GAAG,EAAE,IAAI,IAAI;AAE3B,IAAA,MAAM,YAAY,GAAG,WAAW,CAC9B,CAAC,CAAQ,KAAI;AACX,QAAA,IAAI,CAAC,aAAa;YAAE,CAAC,CAAC,cAAc,EAAE;AACtC,QAAA,OAAO,GAAG,CAAC,CAAC;AACd,IAAA,CAAC,EACD,CAAC,aAAa,EAAE,OAAO,CAAC,CACzB;IAED,MAAM,WAAW,GAAG,OAAO,CACzB,OACEF,IAAA,CAAAI,QAAA,EAAA,EAAA,QAAA,EAAA,CACG,MAAM,KACLF,2BAAgB,kBAAkB,EAAC,SAAS,EAAC,UAAU,EAAA,QAAA,EACpD,MAAM,EAAA,CACF,CACR,EACDA,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,iBAAiB,YAAE,QAAQ,EAAA,CAAQ,EAClD,MAAM,KACLA,GAAA,CAAA,MAAA,EAAA,EAAA,WAAA,EACY,kBAAkB,EAC5B,SAAS,EAAC,wCAAwC,EAAA,QAAA,EAEjD,MAAM,GACF,CACR,CAAA,EAAA,CACA,CACJ,EACD,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,CAC3B;AAED,IAAA,QACEA,GAAA,CAACG,gBAAyB,EAAA,EACxB,GAAG,EAAE,GAAG,EACR,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,UAAU,EAAA,aAAA,EACP,QAAQ,IAAI,SAAS,EAClC,SAAS,EAAE,EAAE,CACX,QAAQ,IAAI,kCAAkC,EAC9C,SAAS,CACV,EACD,OAAO,EAAE,CAAC,CAAC,QAAQ,EACnB,QAAQ,EAAE,YAAY,EAAA,GAClB,UAAU,EAAA,QAAA,EAEb,QAAQ,GAAGH,GAAA,CAAA,GAAA,EAAA,EAAG,IAAI,EAAE,QAAQ,EAAA,QAAA,EAAG,WAAW,EAAA,CAAK,GAAG,WAAW,EAAA,CACpC;AAEhC,CAAC,CACF;AACD,cAAc,CAAC,WAAW,GAAG,0BAA0B;;ACzEvD,MAAM,QAAQ,GAAG,UAAU,CACzB,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,UAAU,EAAE,EAAE,GAAG,KAAI;;;AAG9C,IAAA,MAAM,UAAU,GAAG,SAAS,IAAI,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,CAAC;AAEzE,IAAA,IAAI,CAAC,UAAU;QAAE,OAAOA,GAAA,CAAAE,QAAA,EAAA,EAAA,QAAA,EAAG,QAAQ,EAAA,CAAI;AAEvC,IAAA,QACEF,GAAA,CAAA,KAAA,EAAA,EAAK,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAC,MAAM,EAAA,GAAK,UAAU,YAC5D,QAAQ,EAAA,CACL;AAEV,CAAC,CAKF;AACD,QAAQ,CAAC,WAAW,GAAG,mBAAmB;AAC1C,QAAQ,CAAC,MAAM,GAAG,cAAc;;ACbhC,MAAM,OAAO,GAAG,UAAU,CACxB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,GAAG,MACxCF,IAAA,CAAC,eAAe,EAAA,EAAA,QAAA,EAAA,CACdA,IAAA,CAAC,sBAAsB,EAAA,EAAC,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,SAAS,EAAA,QAAA,EAAA,CACnD,IAAI,IAAIE,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,UAAU,EAAA,QAAA,EAAE,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAA,CAAQ,EACtE,KAAK,IAAIA,GAAA,CAAA,MAAA,EAAA,EAAA,QAAA,EAAO,KAAK,EAAA,CAAQ,CAAA,EAAA,CACP,EACzBA,GAAA,CAAC,sBAAsB,EAAA,EAAA,QAAA,EAAE,QAAQ,EAAA,CAA0B,CAAA,EAAA,CAC3C,CACnB,CACF;AACD,OAAO,CAAC,WAAW,GAAG,kBAAkB;;ACTxC,MAAM,YAAY,GAAG;AACrB,YAAY,CAAC,WAAW,GAAG,cAAc;AACzC,YAAY,CAAC,IAAI,GAAG,IAAI;AACxB,YAAY,CAAC,QAAQ,GAAG,QAAQ;AAChC,YAAY,CAAC,OAAO,GAAG,OAAO;AAC9B,YAAY,CAAC,KAAK,GAAG,KAAK;AAC1B,YAAY,CAAC,OAAO,GAAG,OAAO;;;;"}
|
package/dist/components/Empty.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import { TooltipProvider, Tooltip, TooltipTrigger, TooltipContent } from '../primitives/Tooltip.js';
|
|
7
|
-
import { r as renderIcon } from '../renderIcon-tlvMyboj.js';
|
|
1
|
+
export { E as Empty } from '../Empty-B2JwFmru.js';
|
|
2
|
+
import 'react/jsx-runtime';
|
|
3
|
+
import 'react';
|
|
4
|
+
import '../utils-DdHUxIdC.js';
|
|
5
|
+
import '../primitives/Empty.js';
|
|
8
6
|
import '../index-D7Zy7P05.js';
|
|
7
|
+
import '../Button-Q7MPG6ph.js';
|
|
8
|
+
import '../renderIcon-tlvMyboj.js';
|
|
9
9
|
import '../primitives/Button.js';
|
|
10
10
|
import '../button-COIbN8dg.js';
|
|
11
11
|
import '../index-CfriMyrd.js';
|
|
@@ -14,7 +14,8 @@ import '../primitives/Spinner.js';
|
|
|
14
14
|
import 'react-i18next';
|
|
15
15
|
import '../loader-circle-DycHUAWN.js';
|
|
16
16
|
import '../createLucideIcon-C8ycilSN.js';
|
|
17
|
-
import '../
|
|
17
|
+
import '../primitives/Tooltip.js';
|
|
18
|
+
import '../tooltip-XkHLgxlU.js';
|
|
18
19
|
import '../index-DNzunGHb.js';
|
|
19
20
|
import '../index-CiyxEyB0.js';
|
|
20
21
|
import '../index-BNPynZWM.js';
|
|
@@ -23,35 +24,11 @@ import 'react-dom';
|
|
|
23
24
|
import '../index-CSUSJzOJ.js';
|
|
24
25
|
import '../index-zW4GjM5L.js';
|
|
25
26
|
import '../index-DOzu5J1s.js';
|
|
26
|
-
import '../index-
|
|
27
|
-
import '../floating-ui.react-dom-
|
|
27
|
+
import '../index-C3hByjk3.js';
|
|
28
|
+
import '../floating-ui.react-dom-D8_f_WWh.js';
|
|
28
29
|
import '../index-BYZaLNq1.js';
|
|
29
30
|
import '../index-fV_U4ZJM.js';
|
|
30
31
|
import '../index-yFgkK_AM.js';
|
|
31
32
|
import '../index-Cor698lu.js';
|
|
32
33
|
import '../index-CSggBaQF.js';
|
|
33
|
-
|
|
34
|
-
// ---------------------------------------------------------------------------
|
|
35
|
-
// Helper — optionally wrap a disabled button in a tooltip
|
|
36
|
-
// ---------------------------------------------------------------------------
|
|
37
|
-
function MaybeTooltipButton({ buttonProps, showTooltipWhenDisabled, defaultVariant, }) {
|
|
38
|
-
const button = jsx(Button, { variant: defaultVariant, ...buttonProps });
|
|
39
|
-
if (showTooltipWhenDisabled && buttonProps.disabled && buttonProps.label) {
|
|
40
|
-
return (jsx(TooltipProvider, { delayDuration: 0, children: jsxs(Tooltip, { children: [jsx(TooltipTrigger, { asChild: true, children: jsx("span", { className: "inline-flex", children: button }) }), jsx(TooltipContent, { children: buttonProps.label })] }) }));
|
|
41
|
-
}
|
|
42
|
-
return button;
|
|
43
|
-
}
|
|
44
|
-
// ---------------------------------------------------------------------------
|
|
45
|
-
// Component
|
|
46
|
-
// ---------------------------------------------------------------------------
|
|
47
|
-
const Empty = forwardRef(({ image, icon, title, description, helpText, primaryButtonProps, secondaryButtonProps, buttonSeparatorText, showTooltipWhenButtonDisabled = false, className, ...otherProps }, ref) => {
|
|
48
|
-
const hasMedia = image || icon;
|
|
49
|
-
const hasButtons = primaryButtonProps || secondaryButtonProps;
|
|
50
|
-
return (jsxs(Empty$1, { ref: ref, className: cn(className), ...otherProps, children: [jsxs(EmptyHeader, { children: [hasMedia && (jsxs(Fragment, { children: [image && (jsx(EmptyMedia, { children: typeof image === "string" ? (jsx("img", { src: image, alt: title ?? "" })) : (image) })), !image && icon && (jsx(EmptyMedia, { variant: "icon", children: renderIcon(icon) }))] })), title && jsx(EmptyTitle, { children: title }), description && jsx(EmptyDescription, { children: description }), helpText && (jsx("p", { className: "text-sm text-muted-foreground", children: helpText }))] }), hasButtons && (jsx(EmptyContent, { children: jsxs("div", { className: "flex flex-wrap items-center justify-center gap-2", children: [primaryButtonProps && (jsx(MaybeTooltipButton, { buttonProps: primaryButtonProps, showTooltipWhenDisabled: showTooltipWhenButtonDisabled, defaultVariant: "default" })), buttonSeparatorText &&
|
|
51
|
-
primaryButtonProps &&
|
|
52
|
-
secondaryButtonProps && (jsx("span", { className: "text-sm text-muted-foreground", children: buttonSeparatorText })), secondaryButtonProps && (jsx(MaybeTooltipButton, { buttonProps: secondaryButtonProps, showTooltipWhenDisabled: showTooltipWhenButtonDisabled, defaultVariant: "outline" }))] }) }))] }));
|
|
53
|
-
});
|
|
54
|
-
Empty.displayName = "Empty";
|
|
55
|
-
|
|
56
|
-
export { Empty };
|
|
57
34
|
//# sourceMappingURL=Empty.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Empty.js","sources":[
|
|
1
|
+
{"version":3,"file":"Empty.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import { FieldLabel } from "src/primitives/Field";
|
|
3
3
|
type InputSize = "small" | "medium" | "large";
|
|
4
|
-
export interface InputProps extends Omit<React.ComponentProps<"input">, "size" | "prefix"> {
|
|
4
|
+
export interface InputProps extends Omit<React.ComponentProps<"input">, "size" | "prefix" | "value"> {
|
|
5
|
+
/** Controlled value. */
|
|
6
|
+
value?: string | number;
|
|
5
7
|
/** Size of the input. */
|
|
6
8
|
size?: InputSize;
|
|
7
9
|
/** Input type. */
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export declare const SIZE_CONFIG: {
|
|
2
|
+
small: {
|
|
3
|
+
group: string;
|
|
4
|
+
input: string;
|
|
5
|
+
addon: string;
|
|
6
|
+
};
|
|
7
|
+
medium: {
|
|
8
|
+
group: string;
|
|
9
|
+
input: string;
|
|
10
|
+
addon: string;
|
|
11
|
+
};
|
|
12
|
+
large: {
|
|
13
|
+
group: string;
|
|
14
|
+
input: string;
|
|
15
|
+
addon: string;
|
|
16
|
+
};
|
|
17
|
+
};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
export declare function toFixed(numStr: string, prec: number): string;
|
|
3
|
+
export declare function formatWithPrecision(value: string | number | undefined, precision: number): string | undefined;
|
|
4
|
+
export declare function enforceDecimalPrecision(value: string, precision: number): string;
|
|
5
|
+
export declare function formatWithRejectCharsRegex(value: string, rejectCharsRegex?: RegExp): string;
|
|
6
|
+
export declare function getTrimmedValue(value: string | number, disableTrimOnBlur: boolean): string | number;
|
|
7
|
+
export declare function preserveCursor(e: React.ChangeEvent<HTMLInputElement>, updateValueFn: () => React.ChangeEvent<HTMLInputElement>): React.ChangeEvent<HTMLInputElement, Element>;
|
package/dist/components/Input.js
CHANGED
|
@@ -1,165 +1,18 @@
|
|
|
1
|
-
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import
|
|
1
|
+
export { I as Input } from '../Input-C1gcv9o2.js';
|
|
2
|
+
import 'react/jsx-runtime';
|
|
3
|
+
import 'react';
|
|
4
|
+
import '../utils-DdHUxIdC.js';
|
|
5
|
+
import '../primitives/Field.js';
|
|
6
6
|
import '../index-D7Zy7P05.js';
|
|
7
7
|
import '../label-B4qDF3W1.js';
|
|
8
8
|
import '../index-DhnfW8wQ.js';
|
|
9
9
|
import 'react-dom';
|
|
10
10
|
import '../index-BtkPdosV.js';
|
|
11
11
|
import '../separator-BbhgePmX.js';
|
|
12
|
+
import '../primitives/InputGroup.js';
|
|
12
13
|
import '../input-group-ytECR3Hw.js';
|
|
13
14
|
import '../button-COIbN8dg.js';
|
|
14
15
|
import '../index-CfriMyrd.js';
|
|
15
16
|
import '../input-GLCCE2kT.js';
|
|
16
17
|
import '../textarea-BSZwxzjQ.js';
|
|
17
|
-
|
|
18
|
-
// ---------------------------------------------------------------------------
|
|
19
|
-
// Size config
|
|
20
|
-
// ---------------------------------------------------------------------------
|
|
21
|
-
const SIZE_CONFIG = {
|
|
22
|
-
small: { group: "h-7", input: "text-xs px-2", addon: "px-1.5" },
|
|
23
|
-
medium: { group: "h-8", input: "text-sm", addon: "px-2" },
|
|
24
|
-
large: { group: "h-10", input: "text-sm", addon: "px-2.5" },
|
|
25
|
-
};
|
|
26
|
-
// ---------------------------------------------------------------------------
|
|
27
|
-
// Utilities (ported from neeto-ui, no external deps)
|
|
28
|
-
// ---------------------------------------------------------------------------
|
|
29
|
-
function toFixed(numStr, prec) {
|
|
30
|
-
const num = Number(numStr);
|
|
31
|
-
if (Number.isNaN(num))
|
|
32
|
-
return numStr;
|
|
33
|
-
return num.toFixed(prec);
|
|
34
|
-
}
|
|
35
|
-
function formatWithPrecision(value, precision) {
|
|
36
|
-
if (precision < 0 || !value)
|
|
37
|
-
return value;
|
|
38
|
-
const str = value.toString();
|
|
39
|
-
const trimmed = str.trim();
|
|
40
|
-
if (trimmed !== "" && !Number.isNaN(Number(trimmed)))
|
|
41
|
-
return toFixed(str, precision);
|
|
42
|
-
return str;
|
|
43
|
-
}
|
|
44
|
-
function enforceDecimalPrecision(value, precision) {
|
|
45
|
-
if (precision < 0 || !value)
|
|
46
|
-
return value;
|
|
47
|
-
const valueStr = value.toString();
|
|
48
|
-
if (precision === 0)
|
|
49
|
-
return valueStr.split(".")[0];
|
|
50
|
-
const regex = new RegExp(`^\\d*\\.?\\d{0,${precision}}$`);
|
|
51
|
-
if (regex.test(valueStr))
|
|
52
|
-
return value;
|
|
53
|
-
const parts = valueStr.split(".");
|
|
54
|
-
if (parts.length === 1)
|
|
55
|
-
return parts[0];
|
|
56
|
-
return `${parts[0]}.${parts[1].substring(0, precision)}`;
|
|
57
|
-
}
|
|
58
|
-
function formatWithRejectCharsRegex(value, rejectCharsRegex) {
|
|
59
|
-
if (!rejectCharsRegex)
|
|
60
|
-
return value;
|
|
61
|
-
const globalRegex = new RegExp(rejectCharsRegex, "g");
|
|
62
|
-
return value.replace(globalRegex, "");
|
|
63
|
-
}
|
|
64
|
-
function getTrimmedValue(value, disableTrimOnBlur) {
|
|
65
|
-
if (disableTrimOnBlur || typeof value !== "string")
|
|
66
|
-
return value;
|
|
67
|
-
return value.trim();
|
|
68
|
-
}
|
|
69
|
-
function preserveCursor(e, updateValueFn) {
|
|
70
|
-
const input = e.target;
|
|
71
|
-
const prevCursor = input.selectionStart;
|
|
72
|
-
const prevValue = input.value;
|
|
73
|
-
const updatedEvent = updateValueFn();
|
|
74
|
-
const lengthDiff = input.value.length - prevValue.length;
|
|
75
|
-
const newCursor = Math.max(0, (prevCursor ?? 0) + lengthDiff);
|
|
76
|
-
requestAnimationFrame(() => {
|
|
77
|
-
if (document.activeElement !== input)
|
|
78
|
-
return;
|
|
79
|
-
if (input.type === "number")
|
|
80
|
-
return;
|
|
81
|
-
input.setSelectionRange(newCursor, newCursor);
|
|
82
|
-
});
|
|
83
|
-
return updatedEvent;
|
|
84
|
-
}
|
|
85
|
-
// ---------------------------------------------------------------------------
|
|
86
|
-
// Component
|
|
87
|
-
// ---------------------------------------------------------------------------
|
|
88
|
-
const Input = 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) => {
|
|
89
|
-
const generatedId = useId();
|
|
90
|
-
const id = otherProps.id ?? generatedId;
|
|
91
|
-
const errorId = `error_${id}`;
|
|
92
|
-
const helpTextId = `helpText_${id}`;
|
|
93
|
-
// Controlled / uncontrolled value tracking
|
|
94
|
-
const [valueInternal, setValueInternal] = useState(controlledValue);
|
|
95
|
-
const isControlled = controlledValue !== undefined;
|
|
96
|
-
const value = formatWithPrecision(controlledValue, precision) ?? valueInternal ?? "";
|
|
97
|
-
const valueLength = value?.toString().length || 0;
|
|
98
|
-
const isMaxLengthPresent = !!maxLength || maxLength === 0;
|
|
99
|
-
const isCharacterLimitVisible = isMaxLengthPresent && valueLength >= maxLength * 0.85;
|
|
100
|
-
const maxLengthError = unlimitedChars && valueLength > maxLength;
|
|
101
|
-
// --- Handlers ---
|
|
102
|
-
const onChangeInternal = (e) => {
|
|
103
|
-
if (!isControlled) {
|
|
104
|
-
setValueInternal(e.target.value);
|
|
105
|
-
}
|
|
106
|
-
onChange?.(e);
|
|
107
|
-
};
|
|
108
|
-
const handleChange = (e) => {
|
|
109
|
-
if (type === "file") {
|
|
110
|
-
onChangeInternal(e);
|
|
111
|
-
return;
|
|
112
|
-
}
|
|
113
|
-
let formattedValue = formatWithRejectCharsRegex(e.target.value, rejectCharsRegex);
|
|
114
|
-
formattedValue = enforceDecimalPrecision(formattedValue, precision);
|
|
115
|
-
if (formattedValue !== e.target.value) {
|
|
116
|
-
preserveCursor(e, () => {
|
|
117
|
-
const syntheticEvent = Object.create(e, {
|
|
118
|
-
target: { value: { ...e.target, value: formattedValue } },
|
|
119
|
-
});
|
|
120
|
-
e.target.value = formattedValue;
|
|
121
|
-
onChangeInternal(syntheticEvent);
|
|
122
|
-
return syntheticEvent;
|
|
123
|
-
});
|
|
124
|
-
}
|
|
125
|
-
else {
|
|
126
|
-
onChangeInternal(e);
|
|
127
|
-
}
|
|
128
|
-
};
|
|
129
|
-
const handleBlur = (e) => {
|
|
130
|
-
if (type === "file") {
|
|
131
|
-
onBlur?.(e);
|
|
132
|
-
return;
|
|
133
|
-
}
|
|
134
|
-
const trimmedValue = getTrimmedValue(value, disableTrimOnBlur);
|
|
135
|
-
const formattedValue = formatWithPrecision(trimmedValue, precision);
|
|
136
|
-
if (formattedValue !== undefined && formattedValue !== value) {
|
|
137
|
-
e.target.value = formattedValue.toString();
|
|
138
|
-
handleChange(e);
|
|
139
|
-
}
|
|
140
|
-
onBlur?.(e);
|
|
141
|
-
};
|
|
142
|
-
const handleWheel = (e) => {
|
|
143
|
-
if (type === "number")
|
|
144
|
-
e.target.blur();
|
|
145
|
-
};
|
|
146
|
-
// --- aria-describedby ---
|
|
147
|
-
const ariaDescribedBy = [error ? errorId : null, helpText ? helpTextId : null]
|
|
148
|
-
.filter(Boolean)
|
|
149
|
-
.join(" ") || undefined;
|
|
150
|
-
// --- Render ---
|
|
151
|
-
const hasField = !!(label || error || helpText);
|
|
152
|
-
const sizeConfig = SIZE_CONFIG[size];
|
|
153
|
-
const inputGroup = (jsxs(InputGroup, { className: cn(sizeConfig.group, nakedInput &&
|
|
154
|
-
"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 &&
|
|
155
|
-
!nakedInput &&
|
|
156
|
-
"border-destructive ring-destructive/20 ring-3", !hasField && className), children: [prefix && (jsx(InputGroupAddon, { align: "inline-start", className: sizeConfig.addon, children: jsx(InputGroupText, { children: prefix }) })), jsx(InputGroupInput, { ref: ref, id: id, type: type, disabled: disabled, required: required, size: contentSize, "aria-invalid": !!error || undefined, "aria-describedby": ariaDescribedBy, className: cn(sizeConfig.input, nakedInput && "px-0"), value: value, onBlur: handleBlur, onChange: handleChange, onWheel: handleWheel, ...(isMaxLengthPresent && !unlimitedChars ? { maxLength } : {}), ...otherProps }), suffix && (jsx(InputGroupAddon, { align: "inline-end", className: sizeConfig.addon, children: jsx(InputGroupText, { children: suffix }) }))] }));
|
|
157
|
-
if (!hasField) {
|
|
158
|
-
return inputGroup;
|
|
159
|
-
}
|
|
160
|
-
return (jsxs(Field, { "data-disabled": disabled || undefined, "data-invalid": !!error || undefined, className: className, children: [(label || isCharacterLimitVisible) && (jsxs("div", { className: "flex items-center justify-between", children: [label && (jsxs(FieldLabel, { htmlFor: id, ...labelProps, children: [label, required && (jsx("span", { "aria-hidden": "true", className: "text-destructive", children: "*" }))] })), isCharacterLimitVisible && (jsxs("span", { className: cn("text-xs tabular-nums", maxLengthError ? "text-destructive" : "text-muted-foreground"), children: [valueLength, "/", maxLength] }))] })), jsxs(FieldContent, { children: [inputGroup, !!error && jsx(FieldError, { id: errorId, children: error }), helpText && (jsx(FieldDescription, { id: helpTextId, children: helpText }))] })] }));
|
|
161
|
-
});
|
|
162
|
-
Input.displayName = "Input";
|
|
163
|
-
|
|
164
|
-
export { Input };
|
|
165
18
|
//# sourceMappingURL=Input.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Input.js","sources":["../../src/components/Input.tsx"],"sourcesContent":["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\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\ntype InputSize = \"small\" | \"medium\" | \"large\";\n\nexport interface InputProps extends Omit<\n React.ComponentProps<\"input\">,\n \"size\" | \"prefix\"\n> {\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\n// ---------------------------------------------------------------------------\n// Size config\n// ---------------------------------------------------------------------------\n\nconst 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\n// ---------------------------------------------------------------------------\n// Utilities (ported from neeto-ui, no external deps)\n// ---------------------------------------------------------------------------\n\nfunction 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\nfunction 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\nfunction enforceDecimalPrecision(value: string, precision: number): 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\nfunction 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\nfunction 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\nfunction 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\n// ---------------------------------------------------------------------------\n// Component\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":["_jsxs","_jsx"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Input.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;"}
|
|
@@ -10,6 +10,6 @@ export interface KbdProps extends React.ComponentProps<typeof PrimitiveKbd> {
|
|
|
10
10
|
className?: string;
|
|
11
11
|
}
|
|
12
12
|
declare const KbdNamespace: React.ForwardRefExoticComponent<Omit<KbdProps, "ref"> & React.RefAttributes<HTMLElement>> & {
|
|
13
|
-
Group: (props: React.ComponentProps<typeof import("
|
|
13
|
+
Group: (props: React.ComponentProps<typeof import("../../shadcn/components/kbd").KbdGroup>) => import("react/jsx-runtime").JSX.Element;
|
|
14
14
|
};
|
|
15
15
|
export { KbdNamespace as Kbd };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const SIDE_MAP: Record<string, "top" | "right" | "bottom" | "left">;
|
package/dist/components/Kbd.js
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import '../
|
|
1
|
+
export { K as Kbd } from '../Kbd-EqbC0bua.js';
|
|
2
|
+
import 'react/jsx-runtime';
|
|
3
|
+
import 'react';
|
|
4
|
+
import '../utils-DdHUxIdC.js';
|
|
5
|
+
import '../primitives/Kbd.js';
|
|
6
|
+
import '../primitives/Tooltip.js';
|
|
7
|
+
import '../tooltip-XkHLgxlU.js';
|
|
7
8
|
import '../index-DNzunGHb.js';
|
|
8
9
|
import '../index-BtkPdosV.js';
|
|
9
10
|
import '../index-CiyxEyB0.js';
|
|
@@ -13,49 +14,11 @@ import 'react-dom';
|
|
|
13
14
|
import '../index-CSUSJzOJ.js';
|
|
14
15
|
import '../index-zW4GjM5L.js';
|
|
15
16
|
import '../index-DOzu5J1s.js';
|
|
16
|
-
import '../index-
|
|
17
|
-
import '../floating-ui.react-dom-
|
|
17
|
+
import '../index-C3hByjk3.js';
|
|
18
|
+
import '../floating-ui.react-dom-D8_f_WWh.js';
|
|
18
19
|
import '../index-BYZaLNq1.js';
|
|
19
20
|
import '../index-fV_U4ZJM.js';
|
|
20
21
|
import '../index-yFgkK_AM.js';
|
|
21
22
|
import '../index-Cor698lu.js';
|
|
22
23
|
import '../index-CSggBaQF.js';
|
|
23
|
-
|
|
24
|
-
// ---------------------------------------------------------------------------
|
|
25
|
-
// Position mapping
|
|
26
|
-
// ---------------------------------------------------------------------------
|
|
27
|
-
const SIDE_MAP = {
|
|
28
|
-
top: "top",
|
|
29
|
-
bottom: "bottom",
|
|
30
|
-
left: "left",
|
|
31
|
-
right: "right",
|
|
32
|
-
"top-start": "top",
|
|
33
|
-
"top-end": "top",
|
|
34
|
-
"bottom-start": "bottom",
|
|
35
|
-
"bottom-end": "bottom",
|
|
36
|
-
"left-start": "left",
|
|
37
|
-
"left-end": "left",
|
|
38
|
-
"right-start": "right",
|
|
39
|
-
"right-end": "right",
|
|
40
|
-
auto: "top",
|
|
41
|
-
};
|
|
42
|
-
// ---------------------------------------------------------------------------
|
|
43
|
-
// Component
|
|
44
|
-
// ---------------------------------------------------------------------------
|
|
45
|
-
const Kbd = forwardRef(({ tooltipProps, className, ...otherProps }, ref) => {
|
|
46
|
-
const kbd = (jsx(Kbd$1, { ref: ref, className: cn(className), ...otherProps }));
|
|
47
|
-
if (!tooltipProps?.content) {
|
|
48
|
-
return kbd;
|
|
49
|
-
}
|
|
50
|
-
const side = SIDE_MAP[tooltipProps.position ?? "auto"] ?? "top";
|
|
51
|
-
return (jsx(TooltipProvider, { children: jsxs(Tooltip, { children: [jsx(TooltipTrigger, { asChild: true, children: kbd }), jsx(TooltipContent, { side: side, children: tooltipProps.content })] }) }));
|
|
52
|
-
});
|
|
53
|
-
Kbd.displayName = "Kbd";
|
|
54
|
-
// ---------------------------------------------------------------------------
|
|
55
|
-
// Compound: Kbd.Group
|
|
56
|
-
// ---------------------------------------------------------------------------
|
|
57
|
-
const KbdGroup = KbdGroup$1;
|
|
58
|
-
const KbdNamespace = Object.assign(Kbd, { Group: KbdGroup });
|
|
59
|
-
|
|
60
|
-
export { KbdNamespace as Kbd };
|
|
61
24
|
//# sourceMappingURL=Kbd.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Kbd.js","sources":[
|
|
1
|
+
{"version":3,"file":"Kbd.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const SIDE_MAP: Record<string, "top" | "right" | "bottom" | "left">;
|