@bigbinary/neeto-atoms 1.0.8 → 1.0.10
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-BzfsJePA.js +22 -0
- package/dist/Accordion-BzfsJePA.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 +277 -0
- package/dist/ColorPicker-D-7QGnf9.js.map +1 -0
- package/dist/{DataTable-BKe9K5XP.js → DataTable-DWR9gX9d.js} +11 -3
- package/dist/{DataTable-BKe9K5XP.js.map → DataTable-DWR9gX9d.js.map} +1 -1
- 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-BGODpJGc.js +561 -0
- package/dist/Select-BGODpJGc.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 +96 -0
- package/dist/TranslationProvider-Ba9rn47H.js.map +1 -0
- package/dist/Tree-Dkr11OPy.js +7977 -0
- package/dist/Tree-Dkr11OPy.js.map +1 -0
- package/dist/TreeSelect-Cmc90YWJ.js +168 -0
- package/dist/TreeSelect-Cmc90YWJ.js.map +1 -0
- package/dist/Typography-D5TjXEfu.js +82 -0
- package/dist/Typography-D5TjXEfu.js.map +1 -0
- package/dist/cjs/Accordion-BX5I9ypV.js +28 -0
- package/dist/cjs/Accordion-BX5I9ypV.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-DN8aynGh.js → ColorPicker-DEELmqH8.js} +7 -10
- package/dist/cjs/ColorPicker-DEELmqH8.js.map +1 -0
- package/dist/cjs/{DataTable-BQt_mXDX.js → DataTable-CWs96k8n.js} +11 -3
- package/dist/cjs/{DataTable-BQt_mXDX.js.map → DataTable-CWs96k8n.js.map} +1 -1
- 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-DOPZHlqc.js +567 -0
- package/dist/cjs/Select-DOPZHlqc.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 +103 -0
- package/dist/cjs/TranslationProvider-DBZHXmzX.js.map +1 -0
- package/dist/cjs/Tree-qpOcsGL9.js +7985 -0
- package/dist/cjs/Tree-qpOcsGL9.js.map +1 -0
- package/dist/cjs/TreeSelect-DiIEdiAU.js +170 -0
- package/dist/cjs/TreeSelect-DiIEdiAU.js.map +1 -0
- package/dist/cjs/Typography-C3rGpmAY.js +104 -0
- package/dist/cjs/Typography-C3rGpmAY.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 +10 -67
- package/dist/cjs/components/Alert.js.map +1 -1
- package/dist/cjs/components/Avatar.js +32 -0
- package/dist/cjs/components/Avatar.js.map +1 -0
- package/dist/cjs/components/Badge.js +10 -62
- package/dist/cjs/components/Badge.js.map +1 -1
- package/dist/cjs/components/Button.js +11 -94
- package/dist/cjs/components/Button.js.map +1 -1
- package/dist/cjs/components/Callout.js +16 -0
- package/dist/cjs/components/Callout.js.map +1 -0
- package/dist/cjs/components/Checkbox.js +8 -24
- package/dist/cjs/components/Checkbox.js.map +1 -1
- package/dist/cjs/components/ColorPicker.js +3 -1
- package/dist/cjs/components/ColorPicker.js.map +1 -1
- package/dist/cjs/components/DataTable.js +3 -2
- package/dist/cjs/components/DataTable.js.map +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 +9 -64
- package/dist/cjs/components/Dialog.js.map +1 -1
- package/dist/cjs/components/DropdownMenu.js +3 -1
- package/dist/cjs/components/DropdownMenu.js.map +1 -1
- package/dist/cjs/components/Empty.js +40 -0
- package/dist/cjs/components/Empty.js.map +1 -0
- package/dist/cjs/components/Input.js +8 -151
- package/dist/cjs/components/Input.js.map +1 -1
- package/dist/cjs/components/Kbd.js +30 -0
- package/dist/cjs/components/Kbd.js.map +1 -0
- package/dist/cjs/components/Label.js +43 -0
- package/dist/cjs/components/Label.js.map +1 -0
- 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 +16 -0
- package/dist/cjs/components/Progress.js.map +1 -0
- 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 +9 -66
- package/dist/cjs/components/Sheet.js.map +1 -1
- package/dist/cjs/components/Slider.js +28 -0
- package/dist/cjs/components/Slider.js.map +1 -0
- package/dist/cjs/components/Spinner.js +15 -0
- package/dist/cjs/components/Spinner.js.map +1 -0
- package/dist/cjs/components/Stepper.js +13 -0
- package/dist/cjs/components/Stepper.js.map +1 -0
- 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/TranslationProvider.js +12 -0
- package/dist/cjs/components/TranslationProvider.js.map +1 -0
- package/dist/cjs/components/Tree.js +62 -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/{dialog-CF2GBHOG.js → dialog-Bvyrshz3.js} +4 -2
- package/dist/cjs/dialog-Bvyrshz3.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 +101 -0
- package/dist/cjs/formik/index.js.map +1 -0
- package/dist/cjs/index.js +332 -408
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/primitives/Breadcrumb.js +5 -2
- package/dist/cjs/primitives/Breadcrumb.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/Carousel.js +5 -2
- package/dist/cjs/primitives/Carousel.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/Command.js +6 -2
- package/dist/cjs/primitives/Command.js.map +1 -1
- package/dist/cjs/primitives/Dialog.js +2 -1
- package/dist/cjs/primitives/Dialog.js.map +1 -1
- package/dist/cjs/primitives/Pagination.js +12 -6
- package/dist/cjs/primitives/Pagination.js.map +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/Sheet.js +2 -1
- package/dist/cjs/primitives/Sheet.js.map +1 -1
- package/dist/cjs/primitives/Sidebar.js +8 -4
- package/dist/cjs/primitives/Sidebar.js.map +1 -1
- package/dist/cjs/primitives/Sonner.js +7 -42
- package/dist/cjs/primitives/Sonner.js.map +1 -1
- package/dist/cjs/primitives/Spinner.js +3 -1
- package/dist/cjs/primitives/Spinner.js.map +1 -1
- package/dist/cjs/primitives/index.js +7 -4
- 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/{sheet-CkCrHmVA.js → sheet-BZHMKVH1.js} +4 -2
- package/dist/cjs/sheet-BZHMKVH1.js.map +1 -0
- package/dist/cjs/triangle-alert-ZUMRpmzW.js +43 -0
- package/dist/cjs/triangle-alert-ZUMRpmzW.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/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 +11 -72
- package/dist/components/Alert.js.map +1 -1
- package/dist/components/Avatar/Avatar.d.ts +31 -0
- 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 +26 -0
- package/dist/components/Avatar.js.map +1 -0
- 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 -64
- 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 +12 -99
- package/dist/components/Button.js.map +1 -1
- package/dist/components/Callout/Callout.d.ts +17 -0
- package/dist/components/Callout/constants.d.ts +8 -0
- package/dist/components/Callout/index.d.ts +2 -0
- package/dist/components/Callout.js +10 -0
- package/dist/components/Callout.js.map +1 -0
- 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.js +5 -3
- package/dist/components/ColorPicker.js.map +1 -1
- package/dist/components/DataTable/components/EmptyState.d.ts +1 -1
- package/dist/components/DataTable.js +6 -5
- package/dist/components/DataTable.js.map +1 -1
- 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 +7 -66
- package/dist/components/Dialog.js.map +1 -1
- package/dist/components/DropdownMenu.js +6 -4
- package/dist/components/DropdownMenu.js.map +1 -1
- package/dist/components/Empty/Empty.d.ts +27 -0
- package/dist/components/Empty/index.d.ts +2 -0
- package/dist/components/Empty.js +34 -0
- package/dist/components/Empty.js.map +1 -0
- 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/Kbd.d.ts +15 -0
- package/dist/components/Kbd/constants.d.ts +1 -0
- package/dist/components/Kbd/index.d.ts +2 -0
- package/dist/components/Kbd.js +24 -0
- package/dist/components/Kbd.js.map +1 -0
- package/dist/components/Label/Label.d.ts +40 -0
- package/dist/components/Label/constants.d.ts +1 -0
- package/dist/components/Label/index.d.ts +2 -0
- package/dist/components/Label.js +37 -0
- package/dist/components/Label.js.map +1 -0
- package/dist/components/MultiEmailInput/MultiEmailInput.d.ts +3 -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/Progress.d.ts +12 -0
- package/dist/components/Progress/index.d.ts +2 -0
- package/dist/components/Progress.js +10 -0
- package/dist/components/Progress.js.map +1 -0
- 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 +5 -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 +7 -68
- package/dist/components/Sheet.js.map +1 -1
- package/dist/components/Slider/Slider.d.ts +19 -0
- package/dist/components/Slider/index.d.ts +2 -0
- package/dist/components/Slider.js +22 -0
- package/dist/components/Slider.js.map +1 -0
- package/dist/components/Spinner/Spinner.d.ts +10 -0
- package/dist/components/Spinner/constants.d.ts +1 -0
- package/dist/components/Spinner/index.d.ts +2 -0
- package/dist/components/Spinner.js +9 -0
- package/dist/components/Spinner.js.map +1 -0
- package/dist/components/Stepper/Stepper.d.ts +18 -0
- package/dist/components/Stepper/index.d.ts +2 -0
- package/dist/components/Stepper.js +7 -0
- package/dist/components/Stepper.js.map +1 -0
- 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} +1 -1
- 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 +4 -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/TranslationProvider/TranslationProvider.d.ts +6 -0
- package/dist/components/TranslationProvider/i18n.d.ts +1 -0
- package/dist/components/TranslationProvider/index.d.ts +2 -0
- package/dist/components/TranslationProvider/types.d.ts +7 -0
- package/dist/components/TranslationProvider.js +6 -0
- package/dist/components/TranslationProvider.js.map +1 -0
- 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 +57 -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/components/{Typography.d.ts → Typography/Typography.d.ts} +2 -2
- 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/{dialog-Civ9r6wD.js → dialog-CrB6N_2a.js} +4 -2
- package/dist/dialog-CrB6N_2a.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/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.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 +22 -0
- package/dist/formik/index.js +85 -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/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 +34 -2
- package/dist/index.js +294 -392
- package/dist/index.js.map +1 -1
- package/dist/primitives/Breadcrumb.js +5 -2
- package/dist/primitives/Breadcrumb.js.map +1 -1
- package/dist/primitives/Calendar.js +8 -8003
- package/dist/primitives/Calendar.js.map +1 -1
- package/dist/primitives/Carousel.js +5 -2
- package/dist/primitives/Carousel.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/Command.js +6 -2
- package/dist/primitives/Command.js.map +1 -1
- package/dist/primitives/ContextMenu.js +3 -3
- package/dist/primitives/Dialog.js +2 -1
- package/dist/primitives/Dialog.js.map +1 -1
- 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 +12 -6
- package/dist/primitives/Pagination.js.map +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/Sheet.js +2 -1
- package/dist/primitives/Sheet.js.map +1 -1
- package/dist/primitives/Sidebar.js +11 -7
- package/dist/primitives/Sidebar.js.map +1 -1
- package/dist/primitives/Sonner.js +5 -40
- package/dist/primitives/Sonner.js.map +1 -1
- package/dist/primitives/Spinner.js +3 -1
- package/dist/primitives/Spinner.js.map +1 -1
- package/dist/primitives/Tooltip.js +3 -3
- package/dist/primitives/index.js +11 -8
- 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/shadcn/components/combobox.d.ts +1 -1
- package/dist/shadcn/components/command.d.ts +1 -1
- package/dist/shadcn/components/pagination.d.ts +2 -2
- package/dist/shadcn/components/typography.d.ts +4 -4
- package/dist/{sheet-COcn22fC.js → sheet-C763FqIh.js} +4 -2
- package/dist/sheet-C763FqIh.js.map +1 -0
- package/dist/{tooltip-DzjIJacP.js → tooltip-XkHLgxlU.js} +2 -2
- package/dist/{tooltip-DzjIJacP.js.map → tooltip-XkHLgxlU.js.map} +1 -1
- package/dist/translations/index.d.ts +66 -0
- package/dist/triangle-alert-PXnNWQy_.js +40 -0
- package/dist/triangle-alert-PXnNWQy_.js.map +1 -0
- 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 +54 -36
- package/dist/ColorPicker-BPvxDGDM.js +0 -276
- package/dist/ColorPicker-BPvxDGDM.js.map +0 -1
- package/dist/cjs/ColorPicker-DN8aynGh.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 -37
- 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 -43
- 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/dialog-CF2GBHOG.js.map +0 -1
- package/dist/cjs/sheet-CkCrHmVA.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 -35
- 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 -41
- package/dist/components/SelectTriggerContent.js.map +0 -1
- 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/dialog-Civ9r6wD.js.map +0 -1
- package/dist/sheet-COcn22fC.js.map +0 -1
- 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/{Accordion.d.ts → Accordion/Accordion.d.ts} +0 -0
- /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/{Input.d.ts → Input/Input.d.ts} +0 -0
- /package/dist/components/{Popover.d.ts → Popover/Popover.d.ts} +0 -0
- /package/dist/components/{RadioGroup.d.ts → RadioGroup/RadioGroup.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/{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
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { useId, useMemo, useState, useCallback, useRef, forwardRef } from 'react';
|
|
3
|
+
import { c as cn } from './utils-DdHUxIdC.js';
|
|
4
|
+
import { Popover, PopoverTrigger, PopoverContent } from './primitives/Popover.js';
|
|
5
|
+
import { S as SelectFieldWrapper } from './SelectFieldWrapper-BJzq9aCY.js';
|
|
6
|
+
import { f as findNode, w as walkTree, T as Tree } from './Tree-Dkr11OPy.js';
|
|
7
|
+
import { X } from './x-_o2T3n6D.js';
|
|
8
|
+
import { C as ChevronDown } from './chevron-down-BNi0ntys.js';
|
|
9
|
+
|
|
10
|
+
const pruneTree = (nodes, searchTerm) => {
|
|
11
|
+
if (!searchTerm.trim())
|
|
12
|
+
return nodes;
|
|
13
|
+
const lower = searchTerm.toLowerCase();
|
|
14
|
+
const prune = (items) => items.reduce((acc, node) => {
|
|
15
|
+
const titleStr = typeof node.title === "string" ? node.title : "";
|
|
16
|
+
const nodeMatches = titleStr.toLowerCase().includes(lower);
|
|
17
|
+
if (nodeMatches) {
|
|
18
|
+
acc.push(node);
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
const prunedChildren = node.children ? prune(node.children) : [];
|
|
22
|
+
if (prunedChildren.length > 0) {
|
|
23
|
+
acc.push({ ...node, children: prunedChildren });
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
return acc;
|
|
27
|
+
}, []);
|
|
28
|
+
return prune(nodes);
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
const resolveFieldNames = (nodes, fieldNames) => {
|
|
32
|
+
const labelKey = fieldNames.label ?? "title";
|
|
33
|
+
const valueKey = fieldNames.value ?? "key";
|
|
34
|
+
const remap = (items) => items.map(item => ({
|
|
35
|
+
key: String(item[valueKey] ?? ""),
|
|
36
|
+
title: item[labelKey],
|
|
37
|
+
disabled: item.disabled,
|
|
38
|
+
children: Array.isArray(item.children)
|
|
39
|
+
? remap(item.children)
|
|
40
|
+
: undefined,
|
|
41
|
+
}));
|
|
42
|
+
return remap(nodes);
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
function useTreeSelectValue(props) {
|
|
46
|
+
const { value: valueProp, defaultValue, onChange, treeData: rawTreeData, fieldNames, isClearable = false, isDisabled = false, size = "medium", label = "", error = "", helpText = "", required = false, } = props;
|
|
47
|
+
const id = useId();
|
|
48
|
+
const errorId = `error_${id}`;
|
|
49
|
+
const helpTextId = `helpText_${id}`;
|
|
50
|
+
const treeData = useMemo(() => {
|
|
51
|
+
if (!fieldNames)
|
|
52
|
+
return rawTreeData;
|
|
53
|
+
return resolveFieldNames(rawTreeData, fieldNames);
|
|
54
|
+
}, [rawTreeData, fieldNames?.label, fieldNames?.value]);
|
|
55
|
+
const isControlled = valueProp !== undefined;
|
|
56
|
+
const [internalValue, setInternalValue] = useState(defaultValue ?? "");
|
|
57
|
+
const currentValue = isControlled ? (valueProp ?? "") : internalValue;
|
|
58
|
+
const applyValue = useCallback((next) => {
|
|
59
|
+
if (!isControlled)
|
|
60
|
+
setInternalValue(next);
|
|
61
|
+
onChange?.(next);
|
|
62
|
+
}, [isControlled, onChange]);
|
|
63
|
+
const selectedLabel = useMemo(() => {
|
|
64
|
+
if (!currentValue)
|
|
65
|
+
return "";
|
|
66
|
+
const node = findNode(currentValue, treeData);
|
|
67
|
+
if (!node)
|
|
68
|
+
return currentValue;
|
|
69
|
+
return typeof node.title === "string" ? node.title : "";
|
|
70
|
+
}, [currentValue, treeData]);
|
|
71
|
+
const handleClear = useCallback((e) => {
|
|
72
|
+
e.stopPropagation();
|
|
73
|
+
applyValue("");
|
|
74
|
+
}, [applyValue]);
|
|
75
|
+
const showClearButton = isClearable && !!currentValue && !isDisabled;
|
|
76
|
+
return {
|
|
77
|
+
id,
|
|
78
|
+
errorId,
|
|
79
|
+
helpTextId,
|
|
80
|
+
label,
|
|
81
|
+
error,
|
|
82
|
+
helpText,
|
|
83
|
+
required,
|
|
84
|
+
isDisabled,
|
|
85
|
+
size,
|
|
86
|
+
treeData,
|
|
87
|
+
currentValue,
|
|
88
|
+
selectedLabel,
|
|
89
|
+
applyValue,
|
|
90
|
+
handleClear,
|
|
91
|
+
showClearButton,
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
function useTreeSelectState(props) {
|
|
96
|
+
const { isSearchable = false, defaultExpandedKeys } = props;
|
|
97
|
+
const defaultExpandedKeysRef = useRef(defaultExpandedKeys);
|
|
98
|
+
defaultExpandedKeysRef.current = defaultExpandedKeys;
|
|
99
|
+
const value = useTreeSelectValue(props);
|
|
100
|
+
const [isOpen, setIsOpen] = useState(false);
|
|
101
|
+
const [searchTerm, setSearchTerm] = useState("");
|
|
102
|
+
const [expandedKeys, setExpandedKeys] = useState(defaultExpandedKeys ?? []);
|
|
103
|
+
const prunedTreeData = useMemo(() => searchTerm.trim()
|
|
104
|
+
? pruneTree(value.treeData, searchTerm)
|
|
105
|
+
: value.treeData, [value.treeData, searchTerm]);
|
|
106
|
+
const effectiveExpandedKeys = useMemo(() => {
|
|
107
|
+
if (!searchTerm)
|
|
108
|
+
return expandedKeys;
|
|
109
|
+
const allKeys = [];
|
|
110
|
+
walkTree(prunedTreeData, node => {
|
|
111
|
+
if (node.children?.length)
|
|
112
|
+
allKeys.push(node.key);
|
|
113
|
+
});
|
|
114
|
+
return allKeys;
|
|
115
|
+
}, [searchTerm, prunedTreeData]);
|
|
116
|
+
const handleSelect = useCallback((keys, info) => {
|
|
117
|
+
if (value.isDisabled || info.node.disabled)
|
|
118
|
+
return;
|
|
119
|
+
value.applyValue(keys[0] ?? "");
|
|
120
|
+
setIsOpen(false);
|
|
121
|
+
setSearchTerm("");
|
|
122
|
+
}, [value.applyValue, value.isDisabled]);
|
|
123
|
+
const handleOpenChange = useCallback((open) => {
|
|
124
|
+
if (value.isDisabled)
|
|
125
|
+
return;
|
|
126
|
+
setIsOpen(open);
|
|
127
|
+
if (!open) {
|
|
128
|
+
setSearchTerm("");
|
|
129
|
+
setExpandedKeys(defaultExpandedKeysRef.current ?? []);
|
|
130
|
+
}
|
|
131
|
+
}, [value.isDisabled]);
|
|
132
|
+
const handleExpand = useCallback((keys) => setExpandedKeys(keys), []);
|
|
133
|
+
return {
|
|
134
|
+
...value,
|
|
135
|
+
isSearchable,
|
|
136
|
+
isOpen,
|
|
137
|
+
handleOpenChange,
|
|
138
|
+
searchTerm,
|
|
139
|
+
setSearchTerm,
|
|
140
|
+
prunedTreeData,
|
|
141
|
+
effectiveExpandedKeys,
|
|
142
|
+
handleSelect,
|
|
143
|
+
handleExpand,
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
const DROPDOWN_HEIGHT = 256;
|
|
148
|
+
const SIZE_CONFIG = {
|
|
149
|
+
small: { trigger: "min-h-7 px-2 py-0.5", text: "text-xs" },
|
|
150
|
+
medium: { trigger: "min-h-8 px-2.5 py-1", text: "text-sm" },
|
|
151
|
+
large: { trigger: "min-h-10 px-2.5 py-1.5", text: "text-sm" },
|
|
152
|
+
};
|
|
153
|
+
|
|
154
|
+
const TreeSelectTrigger = forwardRef(({ size, currentValue, selectedLabel, placeholder, isDisabled, error, showClearButton, handleClear, suffixIcon, className, ...rest }, ref) => (jsxs("button", { ref: ref, type: "button", disabled: isDisabled, ...rest, className: cn("inline-flex w-full items-center gap-1 rounded-md border border-input bg-background outline-none", "hover:bg-accent focus:ring-1 focus:ring-ring", "disabled:pointer-events-none disabled:opacity-50", error && "border-destructive", SIZE_CONFIG[size].trigger, SIZE_CONFIG[size].text, className), children: [jsx("span", { className: cn("flex-1 truncate text-left", !currentValue && "text-muted-foreground"), children: selectedLabel || placeholder || "" }), showClearButton && (jsx("span", { role: "button", tabIndex: -1, "aria-label": "Clear selection", className: "shrink-0 text-muted-foreground hover:text-foreground", onClick: handleClear, children: jsx(X, { className: "size-3.5" }) })), suffixIcon ?? jsx(ChevronDown, { className: "size-4 shrink-0 opacity-50" })] })));
|
|
155
|
+
TreeSelectTrigger.displayName = "TreeSelectTrigger";
|
|
156
|
+
|
|
157
|
+
const TreeSelect = forwardRef((props, ref) => {
|
|
158
|
+
const s = useTreeSelectState(props);
|
|
159
|
+
const { suffixIcon, switcherIcon, autoExpandParent, className } = props;
|
|
160
|
+
return (jsx(SelectFieldWrapper, { id: s.id, label: s.label, error: s.error, helpText: s.helpText, errorId: s.errorId, helpTextId: s.helpTextId, isDisabled: s.isDisabled, required: s.required, className: className, children: jsxs(Popover, { open: s.isOpen, onOpenChange: s.handleOpenChange, children: [jsx(PopoverTrigger, { asChild: true, children: jsx(TreeSelectTrigger, { ref: ref, currentValue: s.currentValue, error: s.error, handleClear: s.handleClear, isDisabled: s.isDisabled, placeholder: props.placeholder, selectedLabel: s.selectedLabel, showClearButton: s.showClearButton, size: s.size, suffixIcon: suffixIcon }) }), jsxs(PopoverContent, { align: "start", className: "w-[var(--radix-popover-trigger-width)] p-0", onOpenAutoFocus: e => {
|
|
161
|
+
if (s.isSearchable)
|
|
162
|
+
e.preventDefault();
|
|
163
|
+
}, children: [s.isSearchable && (jsx("div", { className: "border-b px-2 py-1.5", children: jsx("input", { autoFocus: true, type: "text", className: cn("w-full bg-transparent outline-none placeholder:text-muted-foreground", SIZE_CONFIG[s.size].text), placeholder: "Search...", value: s.searchTerm, onChange: e => s.setSearchTerm(e.target.value) }) })), s.prunedTreeData.length > 0 ? (jsx("div", { className: "p-1", children: jsx(Tree, { autoExpandParent: autoExpandParent, expandedKeys: s.effectiveExpandedKeys, height: DROPDOWN_HEIGHT, switcherIcon: switcherIcon, treeData: s.prunedTreeData, onExpand: s.handleExpand, onSelect: s.handleSelect }) })) : (jsx("div", { className: "py-6 text-center text-sm text-muted-foreground", children: "No results found." }))] })] }) }));
|
|
164
|
+
});
|
|
165
|
+
TreeSelect.displayName = "TreeSelect";
|
|
166
|
+
|
|
167
|
+
export { TreeSelect as T };
|
|
168
|
+
//# sourceMappingURL=TreeSelect-Cmc90YWJ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TreeSelect-Cmc90YWJ.js","sources":["../src/components/TreeSelect/utils/pruneTree.ts","../src/components/TreeSelect/utils/resolveFieldNames.ts","../src/components/TreeSelect/hooks/useTreeSelectValue.ts","../src/components/TreeSelect/hooks/useTreeSelectState.ts","../src/components/TreeSelect/constants.ts","../src/components/TreeSelect/TreeSelectTrigger.tsx","../src/components/TreeSelect/TreeSelect.tsx"],"sourcesContent":["import type { TreeNodeData } from \"../../Tree/types\";\n\nexport const pruneTree = (\n nodes: TreeNodeData[],\n searchTerm: string\n): TreeNodeData[] => {\n if (!searchTerm.trim()) return nodes;\n\n const lower = searchTerm.toLowerCase();\n\n const prune = (items: TreeNodeData[]): TreeNodeData[] =>\n items.reduce<TreeNodeData[]>((acc, node) => {\n const titleStr = typeof node.title === \"string\" ? node.title : \"\";\n const nodeMatches = titleStr.toLowerCase().includes(lower);\n\n if (nodeMatches) {\n acc.push(node);\n } else {\n const prunedChildren = node.children ? prune(node.children) : [];\n if (prunedChildren.length > 0) {\n acc.push({ ...node, children: prunedChildren });\n }\n }\n\n return acc;\n }, []);\n\n return prune(nodes);\n};\n","import type { ReactNode } from \"react\";\nimport type { TreeNodeData } from \"../../Tree/types\";\n\nexport const resolveFieldNames = (\n nodes: Record<string, unknown>[],\n fieldNames: { label?: string; value?: string }\n): TreeNodeData[] => {\n const labelKey = fieldNames.label ?? \"title\";\n const valueKey = fieldNames.value ?? \"key\";\n\n const remap = (items: Record<string, unknown>[]): TreeNodeData[] =>\n items.map(item => ({\n key: String(item[valueKey] ?? \"\"),\n title: item[labelKey] as ReactNode,\n disabled: item.disabled as boolean | undefined,\n children: Array.isArray(item.children)\n ? remap(item.children as Record<string, unknown>[])\n : undefined,\n }));\n\n return remap(nodes);\n};\n","import { useCallback, useId, useMemo, useState } from \"react\";\nimport type { ReactNode } from \"react\";\nimport { findNode } from \"../../Tree/utils/adapter\";\nimport type { TreeSelectProps } from \"../types\";\nimport { resolveFieldNames } from \"../utils/resolveFieldNames\";\n\nexport function useTreeSelectValue(props: TreeSelectProps) {\n const {\n value: valueProp,\n defaultValue,\n onChange,\n treeData: rawTreeData,\n fieldNames,\n isClearable = false,\n isDisabled = false,\n size = \"medium\",\n label = \"\",\n error = \"\",\n helpText = \"\" as ReactNode,\n required = false,\n } = props;\n\n const id = useId();\n const errorId = `error_${id}`;\n const helpTextId = `helpText_${id}`;\n\n const treeData = useMemo(() => {\n if (!fieldNames) return rawTreeData;\n\n return resolveFieldNames(\n rawTreeData as unknown as Record<string, unknown>[],\n fieldNames\n );\n }, [rawTreeData, fieldNames?.label, fieldNames?.value]);\n\n const isControlled = valueProp !== undefined;\n const [internalValue, setInternalValue] = useState(defaultValue ?? \"\");\n const currentValue = isControlled ? (valueProp ?? \"\") : internalValue;\n\n const applyValue = useCallback(\n (next: string) => {\n if (!isControlled) setInternalValue(next);\n onChange?.(next);\n },\n [isControlled, onChange]\n );\n\n const selectedLabel = useMemo(() => {\n if (!currentValue) return \"\";\n const node = findNode(currentValue, treeData);\n if (!node) return currentValue;\n\n return typeof node.title === \"string\" ? node.title : \"\";\n }, [currentValue, treeData]);\n\n const handleClear = useCallback(\n (e: React.MouseEvent) => {\n e.stopPropagation();\n applyValue(\"\");\n },\n [applyValue]\n );\n\n const showClearButton = isClearable && !!currentValue && !isDisabled;\n\n return {\n id,\n errorId,\n helpTextId,\n label,\n error,\n helpText,\n required,\n isDisabled,\n size,\n treeData,\n currentValue,\n selectedLabel,\n applyValue,\n handleClear,\n showClearButton,\n };\n}\n","import { useCallback, useMemo, useRef, useState } from \"react\";\nimport type { TreeNodeData } from \"../../Tree/types\";\nimport { walkTree } from \"../../Tree/utils/adapter\";\nimport type { TreeSelectProps } from \"../types\";\nimport { pruneTree } from \"../utils/pruneTree\";\nimport { useTreeSelectValue } from \"./useTreeSelectValue\";\n\nexport function useTreeSelectState(props: TreeSelectProps) {\n const { isSearchable = false, defaultExpandedKeys } = props;\n const defaultExpandedKeysRef = useRef(defaultExpandedKeys);\n defaultExpandedKeysRef.current = defaultExpandedKeys;\n const value = useTreeSelectValue(props);\n\n const [isOpen, setIsOpen] = useState(false);\n const [searchTerm, setSearchTerm] = useState(\"\");\n const [expandedKeys, setExpandedKeys] = useState<string[]>(\n defaultExpandedKeys ?? []\n );\n\n const prunedTreeData = useMemo(\n () =>\n searchTerm.trim()\n ? pruneTree(value.treeData, searchTerm)\n : value.treeData,\n [value.treeData, searchTerm]\n );\n\n const effectiveExpandedKeys = useMemo(() => {\n if (!searchTerm) return expandedKeys;\n\n const allKeys: string[] = [];\n walkTree(prunedTreeData, node => {\n if (node.children?.length) allKeys.push(node.key);\n });\n\n return allKeys;\n }, [searchTerm, prunedTreeData]);\n\n const handleSelect = useCallback(\n (keys: string[], info: { node: TreeNodeData }) => {\n if (value.isDisabled || info.node.disabled) return;\n value.applyValue(keys[0] ?? \"\");\n setIsOpen(false);\n setSearchTerm(\"\");\n },\n [value.applyValue, value.isDisabled]\n );\n\n const handleOpenChange = useCallback(\n (open: boolean) => {\n if (value.isDisabled) return;\n setIsOpen(open);\n if (!open) {\n setSearchTerm(\"\");\n setExpandedKeys(defaultExpandedKeysRef.current ?? []);\n }\n },\n [value.isDisabled]\n );\n\n const handleExpand = useCallback(\n (keys: string[]) => setExpandedKeys(keys),\n []\n );\n\n return {\n ...value,\n isSearchable,\n isOpen,\n handleOpenChange,\n searchTerm,\n setSearchTerm,\n prunedTreeData,\n effectiveExpandedKeys,\n handleSelect,\n handleExpand,\n };\n}\n","export const DROPDOWN_HEIGHT = 256;\n\nexport const SIZE_CONFIG: Record<\n \"small\" | \"medium\" | \"large\",\n { trigger: string; text: string }\n> = {\n small: { trigger: \"min-h-7 px-2 py-0.5\", text: \"text-xs\" },\n medium: { trigger: \"min-h-8 px-2.5 py-1\", text: \"text-sm\" },\n large: { trigger: \"min-h-10 px-2.5 py-1.5\", text: \"text-sm\" },\n};\n","import { forwardRef, type ReactNode } from \"react\";\nimport { ChevronDown, X } from \"lucide-react\";\nimport { cn } from \"src/shadcn/lib/utils\";\nimport { SIZE_CONFIG } from \"./constants\";\n\ninterface TreeSelectTriggerProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n size: \"small\" | \"medium\" | \"large\";\n currentValue: string;\n selectedLabel: string;\n placeholder?: string;\n isDisabled: boolean;\n error: string;\n showClearButton: boolean;\n handleClear: (e: React.MouseEvent) => void;\n suffixIcon?: ReactNode;\n}\n\nexport const TreeSelectTrigger = forwardRef<\n HTMLButtonElement,\n TreeSelectTriggerProps\n>(\n (\n {\n size,\n currentValue,\n selectedLabel,\n placeholder,\n isDisabled,\n error,\n showClearButton,\n handleClear,\n suffixIcon,\n className,\n ...rest\n },\n ref\n ) => (\n <button\n ref={ref}\n type=\"button\"\n disabled={isDisabled}\n {...rest}\n className={cn(\n \"inline-flex w-full items-center gap-1 rounded-md border border-input bg-background outline-none\",\n \"hover:bg-accent focus:ring-1 focus:ring-ring\",\n \"disabled:pointer-events-none disabled:opacity-50\",\n error && \"border-destructive\",\n SIZE_CONFIG[size].trigger,\n SIZE_CONFIG[size].text,\n className\n )}\n >\n <span\n className={cn(\n \"flex-1 truncate text-left\",\n !currentValue && \"text-muted-foreground\"\n )}\n >\n {selectedLabel || placeholder || \"\"}\n </span>\n {showClearButton && (\n <span\n role=\"button\"\n tabIndex={-1}\n aria-label=\"Clear selection\"\n className=\"shrink-0 text-muted-foreground hover:text-foreground\"\n onClick={handleClear}\n >\n <X className=\"size-3.5\" />\n </span>\n )}\n {suffixIcon ?? <ChevronDown className=\"size-4 shrink-0 opacity-50\" />}\n </button>\n )\n);\n\nTreeSelectTrigger.displayName = \"TreeSelectTrigger\";\n","import { forwardRef } from \"react\";\nimport { cn } from \"src/shadcn/lib/utils\";\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from \"src/primitives/Popover\";\nimport { SelectFieldWrapper } from \"../Select/SelectFieldWrapper\";\nimport { Tree } from \"../Tree\";\nimport { useTreeSelectState } from \"./hooks/useTreeSelectState\";\nimport { TreeSelectTrigger } from \"./TreeSelectTrigger\";\nimport { SIZE_CONFIG, DROPDOWN_HEIGHT } from \"./constants\";\nimport type { TreeSelectProps } from \"./types\";\n\nconst TreeSelect = forwardRef<HTMLButtonElement, TreeSelectProps>(\n (props, ref) => {\n const s = useTreeSelectState(props);\n const { suffixIcon, switcherIcon, autoExpandParent, className } = props;\n\n return (\n <SelectFieldWrapper\n id={s.id}\n label={s.label}\n error={s.error}\n helpText={s.helpText}\n errorId={s.errorId}\n helpTextId={s.helpTextId}\n isDisabled={s.isDisabled}\n required={s.required}\n className={className}\n >\n <Popover open={s.isOpen} onOpenChange={s.handleOpenChange}>\n <PopoverTrigger asChild>\n <TreeSelectTrigger\n ref={ref}\n currentValue={s.currentValue}\n error={s.error}\n handleClear={s.handleClear}\n isDisabled={s.isDisabled}\n placeholder={props.placeholder}\n selectedLabel={s.selectedLabel}\n showClearButton={s.showClearButton}\n size={s.size}\n suffixIcon={suffixIcon}\n />\n </PopoverTrigger>\n <PopoverContent\n align=\"start\"\n className=\"w-[var(--radix-popover-trigger-width)] p-0\"\n onOpenAutoFocus={e => {\n if (s.isSearchable) e.preventDefault();\n }}\n >\n {s.isSearchable && (\n <div className=\"border-b px-2 py-1.5\">\n <input\n autoFocus\n type=\"text\"\n className={cn(\n \"w-full bg-transparent outline-none placeholder:text-muted-foreground\",\n SIZE_CONFIG[s.size].text\n )}\n placeholder=\"Search...\"\n value={s.searchTerm}\n onChange={e => s.setSearchTerm(e.target.value)}\n />\n </div>\n )}\n {s.prunedTreeData.length > 0 ? (\n <div className=\"p-1\">\n <Tree\n autoExpandParent={autoExpandParent}\n expandedKeys={s.effectiveExpandedKeys}\n height={DROPDOWN_HEIGHT}\n switcherIcon={switcherIcon}\n treeData={s.prunedTreeData}\n onExpand={s.handleExpand}\n onSelect={s.handleSelect}\n />\n </div>\n ) : (\n <div className=\"py-6 text-center text-sm text-muted-foreground\">\n No results found.\n </div>\n )}\n </PopoverContent>\n </Popover>\n </SelectFieldWrapper>\n );\n }\n);\n\nTreeSelect.displayName = \"TreeSelect\";\n\nexport { TreeSelect };\n"],"names":["_jsxs","_jsx"],"mappings":"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"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { forwardRef } from 'react';
|
|
4
|
+
import { c as cva } from './index-D7Zy7P05.js';
|
|
5
|
+
import { c as cn } from './utils-DdHUxIdC.js';
|
|
6
|
+
import { S as Slot } from './index-CfriMyrd.js';
|
|
7
|
+
|
|
8
|
+
const typographyVariants = cva("", {
|
|
9
|
+
variants: {
|
|
10
|
+
variant: {
|
|
11
|
+
jumbo: "text-5xl font-semibold leading-none tracking-tight",
|
|
12
|
+
h1: "text-[40px] font-semibold leading-tight tracking-tight",
|
|
13
|
+
h2: "text-[32px] font-semibold leading-tight tracking-tight",
|
|
14
|
+
h3: "text-[28px] font-semibold leading-tight tracking-tight",
|
|
15
|
+
h4: "text-2xl font-semibold leading-tight",
|
|
16
|
+
h5: "text-xl font-semibold leading-tight",
|
|
17
|
+
h6: "text-lg font-semibold leading-tight",
|
|
18
|
+
body1: "text-base leading-normal",
|
|
19
|
+
body2: "text-[15px] leading-normal",
|
|
20
|
+
body3: "text-sm leading-normal",
|
|
21
|
+
caption: "text-xs leading-normal",
|
|
22
|
+
nano: "text-[10px] leading-normal",
|
|
23
|
+
code: "font-mono text-sm",
|
|
24
|
+
},
|
|
25
|
+
weight: {
|
|
26
|
+
thin: "font-thin",
|
|
27
|
+
extralight: "font-extralight",
|
|
28
|
+
light: "font-light",
|
|
29
|
+
normal: "font-normal",
|
|
30
|
+
medium: "font-medium",
|
|
31
|
+
semibold: "font-semibold",
|
|
32
|
+
bold: "font-bold",
|
|
33
|
+
extrabold: "font-extrabold",
|
|
34
|
+
black: "font-black",
|
|
35
|
+
},
|
|
36
|
+
color: {
|
|
37
|
+
default: "text-foreground",
|
|
38
|
+
muted: "text-muted-foreground",
|
|
39
|
+
primary: "text-primary",
|
|
40
|
+
destructive: "text-destructive",
|
|
41
|
+
inherit: "text-inherit",
|
|
42
|
+
},
|
|
43
|
+
lineClamp: {
|
|
44
|
+
none: "",
|
|
45
|
+
1: "line-clamp-1",
|
|
46
|
+
2: "line-clamp-2",
|
|
47
|
+
3: "line-clamp-3",
|
|
48
|
+
},
|
|
49
|
+
},
|
|
50
|
+
defaultVariants: {
|
|
51
|
+
variant: "body3",
|
|
52
|
+
color: "default",
|
|
53
|
+
},
|
|
54
|
+
});
|
|
55
|
+
const defaultElementMap = {
|
|
56
|
+
jumbo: "h1",
|
|
57
|
+
h1: "h1",
|
|
58
|
+
h2: "h2",
|
|
59
|
+
h3: "h3",
|
|
60
|
+
h4: "h4",
|
|
61
|
+
h5: "h5",
|
|
62
|
+
h6: "h6",
|
|
63
|
+
body1: "p",
|
|
64
|
+
body2: "p",
|
|
65
|
+
body3: "p",
|
|
66
|
+
caption: "span",
|
|
67
|
+
nano: "span",
|
|
68
|
+
code: "code",
|
|
69
|
+
};
|
|
70
|
+
const Typography$1 = React.forwardRef(({ className, variant = "body3", weight, color = "default", lineClamp, asChild = false, ...props }, ref) => {
|
|
71
|
+
const Comp = asChild
|
|
72
|
+
? Slot
|
|
73
|
+
: defaultElementMap[variant ?? "body3"] ?? "p";
|
|
74
|
+
return (jsx(Comp, { ref: ref, "data-slot": "typography", "data-variant": variant, className: cn(typographyVariants({ variant, weight, color, lineClamp, className })), ...props }));
|
|
75
|
+
});
|
|
76
|
+
Typography$1.displayName = "Typography";
|
|
77
|
+
|
|
78
|
+
const Typography = forwardRef((props, ref) => jsx(Typography$1, { ref: ref, ...props }));
|
|
79
|
+
Typography.displayName = "Typography";
|
|
80
|
+
|
|
81
|
+
export { Typography as T, typographyVariants as t };
|
|
82
|
+
//# sourceMappingURL=Typography-D5TjXEfu.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Typography-D5TjXEfu.js","sources":["../src/shadcn/components/typography.tsx","../src/components/Typography/Typography.tsx"],"sourcesContent":["import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { Slot } from \"radix-ui\"\n\nimport { cn } from \"src/shadcn/lib/utils\"\n\nconst typographyVariants = cva(\"\", {\n variants: {\n variant: {\n jumbo:\n \"text-5xl font-semibold leading-none tracking-tight\",\n h1: \"text-[40px] font-semibold leading-tight tracking-tight\",\n h2: \"text-[32px] font-semibold leading-tight tracking-tight\",\n h3: \"text-[28px] font-semibold leading-tight tracking-tight\",\n h4: \"text-2xl font-semibold leading-tight\",\n h5: \"text-xl font-semibold leading-tight\",\n h6: \"text-lg font-semibold leading-tight\",\n body1: \"text-base leading-normal\",\n body2: \"text-[15px] leading-normal\",\n body3: \"text-sm leading-normal\",\n caption: \"text-xs leading-normal\",\n nano: \"text-[10px] leading-normal\",\n code: \"font-mono text-sm\",\n },\n weight: {\n thin: \"font-thin\",\n extralight: \"font-extralight\",\n light: \"font-light\",\n normal: \"font-normal\",\n medium: \"font-medium\",\n semibold: \"font-semibold\",\n bold: \"font-bold\",\n extrabold: \"font-extrabold\",\n black: \"font-black\",\n },\n color: {\n default: \"text-foreground\",\n muted: \"text-muted-foreground\",\n primary: \"text-primary\",\n destructive: \"text-destructive\",\n inherit: \"text-inherit\",\n },\n lineClamp: {\n none: \"\",\n 1: \"line-clamp-1\",\n 2: \"line-clamp-2\",\n 3: \"line-clamp-3\",\n },\n },\n defaultVariants: {\n variant: \"body3\",\n color: \"default\",\n },\n})\n\nconst defaultElementMap: Record<\n string,\n keyof React.JSX.IntrinsicElements\n> = {\n jumbo: \"h1\",\n h1: \"h1\",\n h2: \"h2\",\n h3: \"h3\",\n h4: \"h4\",\n h5: \"h5\",\n h6: \"h6\",\n body1: \"p\",\n body2: \"p\",\n body3: \"p\",\n caption: \"span\",\n nano: \"span\",\n code: \"code\",\n}\n\nconst Typography = React.forwardRef<\n HTMLElement,\n React.ComponentProps<\"p\"> &\n VariantProps<typeof typographyVariants> & {\n asChild?: boolean\n }\n>(\n (\n {\n className,\n variant = \"body3\",\n weight,\n color = \"default\",\n lineClamp,\n asChild = false,\n ...props\n },\n ref\n ) => {\n const Comp = asChild\n ? Slot.Root\n : defaultElementMap[variant ?? \"body3\"] ?? \"p\"\n\n return (\n <Comp\n ref={ref}\n data-slot=\"typography\"\n data-variant={variant}\n className={cn(\n typographyVariants({ variant, weight, color, lineClamp, className })\n )}\n {...props}\n />\n )\n }\n)\n\nTypography.displayName = \"Typography\"\n\nexport { Typography, typographyVariants }\n","import { forwardRef, type ComponentProps } from \"react\";\nimport { Typography as ShadcnTypography } from \"src/shadcn/components/typography\";\n\nconst Typography = forwardRef<\n HTMLElement,\n ComponentProps<typeof ShadcnTypography>\n>((props, ref) => <ShadcnTypography ref={ref} {...props} />);\n\nTypography.displayName = \"Typography\";\n\nexport { Typography };\nexport { typographyVariants } from \"src/shadcn/components/typography\";\n"],"names":["Typography","Slot.Root","_jsx","ShadcnTypography"],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
+
var React = require('react');
|
|
5
|
+
var utils = require('./utils-CTr7wn5d.js');
|
|
6
|
+
var primitives_Accordion = require('./primitives/Accordion.js');
|
|
7
|
+
|
|
8
|
+
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
9
|
+
|
|
10
|
+
var React__default = /*#__PURE__*/_interopDefault(React);
|
|
11
|
+
|
|
12
|
+
const AccordionItemComponent = React.forwardRef(({ title, children, className, value, ...otherProps }, ref) => (jsxRuntime.jsxs(primitives_Accordion.AccordionItem, { ref: ref, value: value, className: utils.cn(className), ...otherProps, children: [jsxRuntime.jsx(primitives_Accordion.AccordionTrigger, { children: title }), jsxRuntime.jsx(primitives_Accordion.AccordionContent, { children: children })] })));
|
|
13
|
+
AccordionItemComponent.displayName = "Accordion.Item";
|
|
14
|
+
const Accordion = React.forwardRef(({ className, children, ...otherProps }, ref) => {
|
|
15
|
+
// Auto-generate value props for items that don't have one
|
|
16
|
+
const enhancedChildren = React.Children.map(children, (child, index) => {
|
|
17
|
+
if (!React__default.default.isValidElement(child))
|
|
18
|
+
return child;
|
|
19
|
+
const childValue = child.props.value ?? `item-${index}`;
|
|
20
|
+
return React__default.default.cloneElement(child, { value: childValue });
|
|
21
|
+
});
|
|
22
|
+
return (jsxRuntime.jsx(primitives_Accordion.Accordion, { ref: ref, className: utils.cn(className), ...otherProps, children: enhancedChildren }));
|
|
23
|
+
});
|
|
24
|
+
Accordion.displayName = "Accordion";
|
|
25
|
+
Accordion.Item = AccordionItemComponent;
|
|
26
|
+
|
|
27
|
+
exports.Accordion = Accordion;
|
|
28
|
+
//# sourceMappingURL=Accordion-BX5I9ypV.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Accordion-BX5I9ypV.js","sources":["../../../src/components/Accordion/Accordion.tsx"],"sourcesContent":["import React, { forwardRef, type ReactNode, Children } from \"react\";\n\nimport { cn } from \"src/shadcn/lib/utils\";\nimport {\n Accordion as PrimitiveAccordion,\n AccordionItem as PrimitiveAccordionItem,\n AccordionTrigger as PrimitiveAccordionTrigger,\n AccordionContent as PrimitiveAccordionContent,\n} from \"src/primitives/Accordion\";\n\ntype AccordionRootProps = React.ComponentProps<typeof PrimitiveAccordion>;\n\nexport interface AccordionProps extends Omit<AccordionRootProps, \"children\"> {\n /** Accordion.Item children. */\n children?: ReactNode;\n}\n\ninterface AccordionItemProps extends React.ComponentProps<\n typeof PrimitiveAccordionItem\n> {\n /** Header text displayed in the trigger. */\n title: string;\n /** Content rendered when the item is expanded. */\n children?: ReactNode;\n}\n\nconst AccordionItemComponent = forwardRef<HTMLDivElement, AccordionItemProps>(\n ({ title, children, className, value, ...otherProps }, ref) => (\n <PrimitiveAccordionItem\n ref={ref}\n value={value}\n className={cn(className)}\n {...otherProps}\n >\n <PrimitiveAccordionTrigger>{title}</PrimitiveAccordionTrigger>\n <PrimitiveAccordionContent>{children}</PrimitiveAccordionContent>\n </PrimitiveAccordionItem>\n )\n);\n\nAccordionItemComponent.displayName = \"Accordion.Item\";\n\nconst Accordion = forwardRef<HTMLDivElement, AccordionProps>(\n ({ className, children, ...otherProps }, ref) => {\n // Auto-generate value props for items that don't have one\n const enhancedChildren = Children.map(children, (child, index) => {\n if (!React.isValidElement<AccordionItemProps>(child)) return child;\n const childValue = child.props.value ?? `item-${index}`;\n return React.cloneElement(child, { value: childValue });\n });\n\n return (\n <PrimitiveAccordion ref={ref} className={cn(className)} {...otherProps}>\n {enhancedChildren}\n </PrimitiveAccordion>\n );\n }\n) as React.ForwardRefExoticComponent<\n AccordionProps & React.RefAttributes<HTMLDivElement>\n> & {\n Item: typeof AccordionItemComponent;\n};\n\nAccordion.displayName = \"Accordion\";\nAccordion.Item = AccordionItemComponent;\n\nexport { Accordion };\n"],"names":["forwardRef","_jsxs","PrimitiveAccordionItem","cn","_jsx","PrimitiveAccordionTrigger","PrimitiveAccordionContent","Children","React","PrimitiveAccordion"],"mappings":";;;;;;;;;;;AA0BA,MAAM,sBAAsB,GAAGA,gBAAU,CACvC,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,UAAU,EAAE,EAAE,GAAG,MACxDC,eAAA,CAACC,kCAAsB,EAAA,EACrB,GAAG,EAAE,GAAG,EACR,KAAK,EAAE,KAAK,EACZ,SAAS,EAAEC,QAAE,CAAC,SAAS,CAAC,EAAA,GACpB,UAAU,EAAA,QAAA,EAAA,CAEdC,cAAA,CAACC,qCAAyB,EAAA,EAAA,QAAA,EAAE,KAAK,EAAA,CAA6B,EAC9DD,cAAA,CAACE,qCAAyB,EAAA,EAAA,QAAA,EAAE,QAAQ,EAAA,CAA6B,CAAA,EAAA,CAC1C,CAC1B,CACF;AAED,sBAAsB,CAAC,WAAW,GAAG,gBAAgB;AAErD,MAAM,SAAS,GAAGN,gBAAU,CAC1B,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,UAAU,EAAE,EAAE,GAAG,KAAI;;AAE9C,IAAA,MAAM,gBAAgB,GAAGO,cAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,KAAI;AAC/D,QAAA,IAAI,CAACC,sBAAK,CAAC,cAAc,CAAqB,KAAK,CAAC;AAAE,YAAA,OAAO,KAAK;QAClE,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,IAAI,CAAA,KAAA,EAAQ,KAAK,CAAA,CAAE;AACvD,QAAA,OAAOA,sBAAK,CAAC,YAAY,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;AACzD,IAAA,CAAC,CAAC;IAEF,QACEJ,eAACK,8BAAkB,EAAA,EAAC,GAAG,EAAE,GAAG,EAAE,SAAS,EAAEN,QAAE,CAAC,SAAS,CAAC,EAAA,GAAM,UAAU,YACnE,gBAAgB,EAAA,CACE;AAEzB,CAAC;AAOH,SAAS,CAAC,WAAW,GAAG,WAAW;AACnC,SAAS,CAAC,IAAI,GAAG,sBAAsB;;;;"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
+
var React = require('react');
|
|
5
|
+
var reactI18next = require('react-i18next');
|
|
6
|
+
var utils = require('./utils-CTr7wn5d.js');
|
|
7
|
+
var primitives_Dialog = require('./primitives/Dialog.js');
|
|
8
|
+
var Button = require('./Button-Bt_AElge.js');
|
|
9
|
+
|
|
10
|
+
const SIZE_CLASS_MAP = {
|
|
11
|
+
small: "sm:max-w-xs",
|
|
12
|
+
medium: "sm:max-w-sm",
|
|
13
|
+
large: "sm:max-w-md",
|
|
14
|
+
};
|
|
15
|
+
const STYLE_VARIANT_MAP = {
|
|
16
|
+
danger: "destructive",
|
|
17
|
+
warning: "default",
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
const Alert = React.forwardRef(({ size = "medium", isOpen = false, isSubmitting = false, className, closeOnEsc = true, closeButton = true, backdropClassName, closeOnOutsideClick = true, onClose = () => { }, onSubmit = () => { }, title = "", message = "", submitButtonLabel: submitButtonLabelProp, cancelButtonLabel: cancelButtonLabelProp, hideCancelButton = false, style = "danger", initialFocusRef, initialFocusElement, modal, defaultOpen,
|
|
21
|
+
// Radix content handlers — we intercept and merge
|
|
22
|
+
onOpenAutoFocus: onOpenAutoFocusProp, onCloseAutoFocus: onCloseAutoFocusProp, ...otherProps }, ref) => {
|
|
23
|
+
const { t } = reactI18next.useTranslation();
|
|
24
|
+
const submitButtonLabel = submitButtonLabelProp ?? t("neetoatoms.alert.continue", "Continue");
|
|
25
|
+
const cancelButtonLabel = cancelButtonLabelProp ?? t("neetoatoms.alert.cancel", "Cancel");
|
|
26
|
+
const baseId = React.useId();
|
|
27
|
+
const titleId = `alert-title-${baseId}`;
|
|
28
|
+
const messageId = `alert-message-${baseId}`;
|
|
29
|
+
const submitButtonRef = React.useRef(null);
|
|
30
|
+
const cancelButtonRef = React.useRef(null);
|
|
31
|
+
const handleOpenChange = (open) => {
|
|
32
|
+
if (!open)
|
|
33
|
+
onClose();
|
|
34
|
+
};
|
|
35
|
+
const handleInteractOutside = (e) => {
|
|
36
|
+
if (!closeOnOutsideClick)
|
|
37
|
+
e.preventDefault();
|
|
38
|
+
};
|
|
39
|
+
const handleEscapeKeyDown = (e) => {
|
|
40
|
+
if (!closeOnEsc)
|
|
41
|
+
e.preventDefault();
|
|
42
|
+
};
|
|
43
|
+
const handleOpenAutoFocus = (e) => {
|
|
44
|
+
// Custom focus ref takes highest priority
|
|
45
|
+
if (initialFocusRef?.current) {
|
|
46
|
+
e.preventDefault();
|
|
47
|
+
initialFocusRef.current.focus();
|
|
48
|
+
}
|
|
49
|
+
else if (initialFocusElement === "submit" && submitButtonRef.current) {
|
|
50
|
+
e.preventDefault();
|
|
51
|
+
submitButtonRef.current.focus();
|
|
52
|
+
}
|
|
53
|
+
else if (initialFocusElement === "cancel" && cancelButtonRef.current) {
|
|
54
|
+
e.preventDefault();
|
|
55
|
+
cancelButtonRef.current.focus();
|
|
56
|
+
}
|
|
57
|
+
onOpenAutoFocusProp?.(e);
|
|
58
|
+
};
|
|
59
|
+
const handleCloseAutoFocus = (e) => {
|
|
60
|
+
onCloseAutoFocusProp?.(e);
|
|
61
|
+
};
|
|
62
|
+
return (jsxRuntime.jsx(primitives_Dialog.Dialog, { open: isOpen, onOpenChange: handleOpenChange, modal: modal, defaultOpen: defaultOpen, children: jsxRuntime.jsxs(primitives_Dialog.DialogContent, { ref: ref, role: "alertdialog", "aria-labelledby": title ? titleId : undefined, "aria-describedby": message ? messageId : undefined, showCloseButton: closeButton, overlayClassName: backdropClassName, onInteractOutside: handleInteractOutside, onEscapeKeyDown: handleEscapeKeyDown, onOpenAutoFocus: handleOpenAutoFocus, onCloseAutoFocus: handleCloseAutoFocus, className: utils.cn(SIZE_CLASS_MAP[size], className), "data-testid": "alert-box", ...otherProps, children: [jsxRuntime.jsxs(primitives_Dialog.DialogHeader, { children: [jsxRuntime.jsx(primitives_Dialog.DialogTitle, { id: titleId, "data-testid": "alert-title", className: "text-2xl font-semibold", children: title }), message && (jsxRuntime.jsx(primitives_Dialog.DialogDescription, { id: messageId, "data-testid": "alert-message", children: message }))] }), jsxRuntime.jsxs(primitives_Dialog.DialogFooter, { children: [!hideCancelButton && (jsxRuntime.jsx(Button.Button, { ref: cancelButtonRef, variant: "outline", label: cancelButtonLabel, onClick: onClose, "data-testid": "alert-cancel-button" })), jsxRuntime.jsx(Button.Button, { ref: submitButtonRef, variant: STYLE_VARIANT_MAP[style], label: submitButtonLabel, loading: isSubmitting, disabled: isSubmitting || !isOpen, onClick: onSubmit, "data-testid": "alert-submit-button" })] })] }) }));
|
|
63
|
+
});
|
|
64
|
+
Alert.displayName = "Alert";
|
|
65
|
+
|
|
66
|
+
exports.Alert = Alert;
|
|
67
|
+
//# sourceMappingURL=Alert-BVvLyM_d.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Alert-BVvLyM_d.js","sources":["../../../src/components/Alert/constants.ts","../../../src/components/Alert/Alert.tsx"],"sourcesContent":["import type { AlertSize, AlertStyle } from \"./Alert\";\n\nexport const SIZE_CLASS_MAP: Record<AlertSize, string> = {\n small: \"sm:max-w-xs\",\n medium: \"sm:max-w-sm\",\n large: \"sm:max-w-md\",\n};\n\nexport const STYLE_VARIANT_MAP: Record<AlertStyle, \"destructive\" | \"default\"> =\n {\n danger: \"destructive\",\n warning: \"default\",\n };\n","import {\n forwardRef,\n useId,\n useRef,\n type ReactNode,\n type RefObject,\n} from \"react\";\n\nimport { useTranslation } from \"react-i18next\";\nimport { cn } from \"src/shadcn/lib/utils\";\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n} from \"src/primitives/Dialog\";\nimport { Button } from \"src/components/Button\";\n\nimport { SIZE_CLASS_MAP, STYLE_VARIANT_MAP } from \"./constants\";\n\nexport type AlertStyle = \"danger\" | \"warning\";\nexport type AlertSize = \"small\" | \"medium\" | \"large\";\ntype InitialFocusElement = \"submit\" | \"cancel\";\n\n/** Radix Dialog.Content props we forward via ...otherProps. */\ntype DialogContentProps = React.ComponentProps<typeof DialogContent>;\n\nexport interface AlertProps extends Omit<\n DialogContentProps,\n | \"children\"\n | \"role\"\n | \"showCloseButton\"\n | \"className\"\n | \"style\"\n | \"onEscapeKeyDown\"\n | \"onInteractOutside\"\n> {\n /** Size of the alert dialog. */\n size?: AlertSize;\n /** Whether the alert is open. */\n isOpen?: boolean;\n /** Whether the submit action is in progress. */\n isSubmitting?: boolean;\n /** Additional CSS class names applied to the dialog content. */\n className?: string;\n /** Close on pressing the Esc key. */\n closeOnEsc?: boolean;\n /** Show the close button. */\n closeButton?: boolean;\n /** Additional CSS class names applied to the backdrop/overlay. */\n backdropClassName?: string;\n /** Close on clicking outside the dialog. */\n closeOnOutsideClick?: boolean;\n /** Callback invoked when the alert is closed. */\n onClose?: () => void;\n /** Callback invoked when the submit button is clicked. */\n onSubmit?: () => void;\n /** Title text of the alert. */\n title?: string;\n /** Message content of the alert. */\n message?: ReactNode;\n /** Label for the submit button. */\n submitButtonLabel?: string;\n /** Label for the cancel button. */\n cancelButtonLabel?: string;\n /** Hide the cancel button. */\n hideCancelButton?: boolean;\n /** Visual style of the submit button. */\n style?: AlertStyle;\n /** Ref of the element to receive focus when the alert opens. */\n initialFocusRef?: RefObject<HTMLElement | null>;\n /** Which built-in button receives focus on open: \"submit\" or \"cancel\". */\n initialFocusElement?: InitialFocusElement;\n /** Radix Dialog `modal` prop — controls modal vs non-modal behaviour. */\n modal?: boolean;\n /** Radix Dialog `defaultOpen` prop. */\n defaultOpen?: boolean;\n}\n\nconst Alert = forwardRef<HTMLDivElement, AlertProps>(\n (\n {\n size = \"medium\",\n isOpen = false,\n isSubmitting = false,\n className,\n closeOnEsc = true,\n closeButton = true,\n backdropClassName,\n closeOnOutsideClick = true,\n onClose = () => {},\n onSubmit = () => {},\n title = \"\",\n message = \"\",\n submitButtonLabel: submitButtonLabelProp,\n cancelButtonLabel: cancelButtonLabelProp,\n hideCancelButton = false,\n style = \"danger\",\n initialFocusRef,\n initialFocusElement,\n modal,\n defaultOpen,\n // Radix content handlers — we intercept and merge\n onOpenAutoFocus: onOpenAutoFocusProp,\n onCloseAutoFocus: onCloseAutoFocusProp,\n ...otherProps\n },\n ref\n ) => {\n const { t } = useTranslation();\n const submitButtonLabel =\n submitButtonLabelProp ?? t(\"neetoatoms.alert.continue\", \"Continue\");\n const cancelButtonLabel =\n cancelButtonLabelProp ?? t(\"neetoatoms.alert.cancel\", \"Cancel\");\n const baseId = useId();\n const titleId = `alert-title-${baseId}`;\n const messageId = `alert-message-${baseId}`;\n const submitButtonRef = useRef<HTMLButtonElement>(null);\n const cancelButtonRef = useRef<HTMLButtonElement>(null);\n\n const handleOpenChange = (open: boolean) => {\n if (!open) onClose();\n };\n\n const handleInteractOutside = (e: Event) => {\n if (!closeOnOutsideClick) e.preventDefault();\n };\n\n const handleEscapeKeyDown = (e: KeyboardEvent) => {\n if (!closeOnEsc) e.preventDefault();\n };\n\n const handleOpenAutoFocus = (e: Event) => {\n // Custom focus ref takes highest priority\n if (initialFocusRef?.current) {\n e.preventDefault();\n initialFocusRef.current.focus();\n } else if (initialFocusElement === \"submit\" && submitButtonRef.current) {\n e.preventDefault();\n submitButtonRef.current.focus();\n } else if (initialFocusElement === \"cancel\" && cancelButtonRef.current) {\n e.preventDefault();\n cancelButtonRef.current.focus();\n }\n onOpenAutoFocusProp?.(e);\n };\n\n const handleCloseAutoFocus = (e: Event) => {\n onCloseAutoFocusProp?.(e);\n };\n\n return (\n <Dialog\n open={isOpen}\n onOpenChange={handleOpenChange}\n modal={modal}\n defaultOpen={defaultOpen}\n >\n <DialogContent\n ref={ref}\n role=\"alertdialog\"\n aria-labelledby={title ? titleId : undefined}\n aria-describedby={message ? messageId : undefined}\n showCloseButton={closeButton}\n overlayClassName={backdropClassName}\n onInteractOutside={handleInteractOutside}\n onEscapeKeyDown={handleEscapeKeyDown}\n onOpenAutoFocus={handleOpenAutoFocus}\n onCloseAutoFocus={handleCloseAutoFocus}\n className={cn(SIZE_CLASS_MAP[size], className)}\n data-testid=\"alert-box\"\n {...otherProps}\n >\n <DialogHeader>\n <DialogTitle\n id={titleId}\n data-testid=\"alert-title\"\n className=\"text-2xl font-semibold\"\n >\n {title}\n </DialogTitle>\n {message && (\n <DialogDescription id={messageId} data-testid=\"alert-message\">\n {message}\n </DialogDescription>\n )}\n </DialogHeader>\n <DialogFooter>\n {!hideCancelButton && (\n <Button\n ref={cancelButtonRef}\n variant=\"outline\"\n label={cancelButtonLabel}\n onClick={onClose}\n data-testid=\"alert-cancel-button\"\n />\n )}\n <Button\n ref={submitButtonRef}\n variant={STYLE_VARIANT_MAP[style]}\n label={submitButtonLabel}\n loading={isSubmitting}\n disabled={isSubmitting || !isOpen}\n onClick={onSubmit}\n data-testid=\"alert-submit-button\"\n />\n </DialogFooter>\n </DialogContent>\n </Dialog>\n );\n }\n);\n\nAlert.displayName = \"Alert\";\n\nexport { Alert };\n"],"names":["forwardRef","useTranslation","useId","useRef","_jsx","Dialog","_jsxs","DialogContent","cn","DialogHeader","DialogTitle","DialogDescription","DialogFooter","Button"],"mappings":"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"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
+
var React = require('react');
|
|
5
|
+
var utils = require('./utils-CTr7wn5d.js');
|
|
6
|
+
var primitives_Avatar = require('./primitives/Avatar.js');
|
|
7
|
+
var primitives_Tooltip = require('./primitives/Tooltip.js');
|
|
8
|
+
|
|
9
|
+
const STATUS_COLOR_MAP = {
|
|
10
|
+
online: "bg-emerald-500 dark:bg-emerald-400",
|
|
11
|
+
idle: "bg-amber-500 dark:bg-amber-400",
|
|
12
|
+
offline: "bg-gray-400 dark:bg-gray-500",
|
|
13
|
+
};
|
|
14
|
+
const SIDE_MAP = {
|
|
15
|
+
top: "top",
|
|
16
|
+
bottom: "bottom",
|
|
17
|
+
left: "left",
|
|
18
|
+
right: "right",
|
|
19
|
+
auto: "bottom",
|
|
20
|
+
};
|
|
21
|
+
const XL_CLASSES = "data-[size=lg]:size-16 [&>[data-slot=avatar-badge]]:size-4 [&>[data-slot=avatar-fallback]]:text-lg";
|
|
22
|
+
|
|
23
|
+
function getInitials(name) {
|
|
24
|
+
if (!name)
|
|
25
|
+
return "";
|
|
26
|
+
return name
|
|
27
|
+
.split(/\s+/)
|
|
28
|
+
.slice(0, 2)
|
|
29
|
+
.map(word => word.charAt(0).toUpperCase())
|
|
30
|
+
.join("");
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
const Avatar = React.forwardRef(({ user, status, showTooltip = false, tooltipProps, size = "default", className, ...otherProps }, ref) => {
|
|
34
|
+
const initials = getInitials(user?.name);
|
|
35
|
+
const isXl = size === "xl";
|
|
36
|
+
const primitiveSize = isXl ? "lg" : size;
|
|
37
|
+
const avatarElement = (jsxRuntime.jsxs(primitives_Avatar.Avatar, { ref: ref, size: primitiveSize, className: utils.cn(isXl && XL_CLASSES, className), ...otherProps, children: [user?.imageUrl && (jsxRuntime.jsx(primitives_Avatar.AvatarImage, { src: user.imageUrl, alt: user?.name ?? "" })), jsxRuntime.jsx(primitives_Avatar.AvatarFallback, { children: initials }), status && jsxRuntime.jsx(primitives_Avatar.AvatarBadge, { className: utils.cn(STATUS_COLOR_MAP[status]) })] }));
|
|
38
|
+
const tooltipContent = tooltipProps?.content ?? (showTooltip ? user?.name : null);
|
|
39
|
+
if (tooltipContent) {
|
|
40
|
+
const side = SIDE_MAP[tooltipProps?.position ?? "auto"] ?? "bottom";
|
|
41
|
+
return (jsxRuntime.jsx(primitives_Tooltip.TooltipProvider, { delayDuration: 0, children: jsxRuntime.jsxs(primitives_Tooltip.Tooltip, { children: [jsxRuntime.jsx(primitives_Tooltip.TooltipTrigger, { asChild: true, children: jsxRuntime.jsx("span", { className: "inline-flex", children: avatarElement }) }), jsxRuntime.jsx(primitives_Tooltip.TooltipContent, { side: side, children: tooltipContent })] }) }));
|
|
42
|
+
}
|
|
43
|
+
return avatarElement;
|
|
44
|
+
});
|
|
45
|
+
Avatar.displayName = "Avatar";
|
|
46
|
+
const AvatarNamespace = Object.assign(Avatar, {
|
|
47
|
+
Group: primitives_Avatar.AvatarGroup,
|
|
48
|
+
GroupCount: primitives_Avatar.AvatarGroupCount,
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
exports.AvatarNamespace = AvatarNamespace;
|
|
52
|
+
//# sourceMappingURL=Avatar-CNao5gvP.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Avatar-CNao5gvP.js","sources":["../../../src/components/Avatar/constants.ts","../../../src/components/Avatar/utils.ts","../../../src/components/Avatar/Avatar.tsx"],"sourcesContent":["export const STATUS_COLOR_MAP: Record<string, string> = {\n online: \"bg-emerald-500 dark:bg-emerald-400\",\n idle: \"bg-amber-500 dark:bg-amber-400\",\n offline: \"bg-gray-400 dark:bg-gray-500\",\n};\n\nexport const SIDE_MAP: Record<string, \"top\" | \"right\" | \"bottom\" | \"left\"> = {\n top: \"top\",\n bottom: \"bottom\",\n left: \"left\",\n right: \"right\",\n auto: \"bottom\",\n};\n\nexport const XL_CLASSES =\n \"data-[size=lg]:size-16 [&>[data-slot=avatar-badge]]:size-4 [&>[data-slot=avatar-fallback]]:text-lg\";\n","export function getInitials(name?: string): string {\n if (!name) return \"\";\n\n return name\n .split(/\\s+/)\n .slice(0, 2)\n .map(word => word.charAt(0).toUpperCase())\n .join(\"\");\n}\n","import React, { forwardRef } from \"react\";\n\nimport { cn } from \"src/shadcn/lib/utils\";\nimport {\n Avatar as PrimitiveAvatar,\n AvatarImage,\n AvatarFallback,\n AvatarBadge,\n AvatarGroup,\n AvatarGroupCount,\n} from \"src/primitives/Avatar\";\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from \"src/primitives/Tooltip\";\n\nimport { STATUS_COLOR_MAP, SIDE_MAP, XL_CLASSES } from \"./constants\";\nimport { getInitials } from \"./utils\";\n\ntype AvatarSize = \"sm\" | \"default\" | \"lg\" | \"xl\";\n\ninterface AvatarTooltipProps {\n /** Tooltip content. Defaults to user.name if showTooltip is true. */\n content?: React.ReactNode;\n /** Tooltip position. */\n position?: string;\n}\n\nexport interface AvatarProps extends Omit<\n React.ComponentProps<typeof PrimitiveAvatar>,\n \"size\"\n> {\n /** User data for the avatar. */\n user?: { name?: string; imageUrl?: string };\n /** Status indicator displayed as a colored badge. */\n status?: \"online\" | \"idle\" | \"offline\" | null;\n /** Show the user's name in a tooltip on hover. */\n showTooltip?: boolean;\n /** Tooltip configuration. Overrides showTooltip content. */\n tooltipProps?: AvatarTooltipProps;\n /** Size of the avatar. */\n size?: AvatarSize;\n /** Additional CSS class names. */\n className?: string;\n}\n\nconst Avatar = forwardRef<HTMLSpanElement, AvatarProps>(\n (\n {\n user,\n status,\n showTooltip = false,\n tooltipProps,\n size = \"default\",\n className,\n ...otherProps\n },\n ref\n ) => {\n const initials = getInitials(user?.name);\n const isXl = size === \"xl\";\n const primitiveSize = isXl ? \"lg\" : size;\n\n const avatarElement = (\n <PrimitiveAvatar\n ref={ref}\n size={primitiveSize}\n className={cn(isXl && XL_CLASSES, className)}\n {...otherProps}\n >\n {user?.imageUrl && (\n <AvatarImage src={user.imageUrl} alt={user?.name ?? \"\"} />\n )}\n <AvatarFallback>{initials}</AvatarFallback>\n {status && <AvatarBadge className={cn(STATUS_COLOR_MAP[status])} />}\n </PrimitiveAvatar>\n );\n\n const tooltipContent =\n tooltipProps?.content ?? (showTooltip ? user?.name : null);\n\n if (tooltipContent) {\n const side = SIDE_MAP[tooltipProps?.position ?? \"auto\"] ?? \"bottom\";\n\n return (\n <TooltipProvider delayDuration={0}>\n <Tooltip>\n <TooltipTrigger asChild>\n <span className=\"inline-flex\">{avatarElement}</span>\n </TooltipTrigger>\n <TooltipContent side={side}>{tooltipContent}</TooltipContent>\n </Tooltip>\n </TooltipProvider>\n );\n }\n\n return avatarElement;\n }\n);\n\nAvatar.displayName = \"Avatar\";\n\nconst AvatarNamespace = Object.assign(Avatar, {\n Group: AvatarGroup,\n GroupCount: AvatarGroupCount,\n});\n\nexport { AvatarNamespace as Avatar };\n"],"names":["forwardRef","_jsxs","PrimitiveAvatar","cn","_jsx","AvatarImage","AvatarFallback","AvatarBadge","TooltipProvider","Tooltip","TooltipTrigger","TooltipContent","AvatarGroup","AvatarGroupCount"],"mappings":";;;;;;;;AAAO,MAAM,gBAAgB,GAA2B;AACtD,IAAA,MAAM,EAAE,oCAAoC;AAC5C,IAAA,IAAI,EAAE,gCAAgC;AACtC,IAAA,OAAO,EAAE,8BAA8B;CACxC;AAEM,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,IAAI,EAAE,QAAQ;CACf;AAEM,MAAM,UAAU,GACrB,oGAAoG;;ACfhG,SAAU,WAAW,CAAC,IAAa,EAAA;AACvC,IAAA,IAAI,CAAC,IAAI;AAAE,QAAA,OAAO,EAAE;AAEpB,IAAA,OAAO;SACJ,KAAK,CAAC,KAAK;AACX,SAAA,KAAK,CAAC,CAAC,EAAE,CAAC;AACV,SAAA,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;SACxC,IAAI,CAAC,EAAE,CAAC;AACb;;ACwCA,MAAM,MAAM,GAAGA,gBAAU,CACvB,CACE,EACE,IAAI,EACJ,MAAM,EACN,WAAW,GAAG,KAAK,EACnB,YAAY,EACZ,IAAI,GAAG,SAAS,EAChB,SAAS,EACT,GAAG,UAAU,EACd,EACD,GAAG,KACD;IACF,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC;AACxC,IAAA,MAAM,IAAI,GAAG,IAAI,KAAK,IAAI;IAC1B,MAAM,aAAa,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI;AAExC,IAAA,MAAM,aAAa,IACjBC,eAAA,CAACC,wBAAe,EAAA,EACd,GAAG,EAAE,GAAG,EACR,IAAI,EAAE,aAAa,EACnB,SAAS,EAAEC,QAAE,CAAC,IAAI,IAAI,UAAU,EAAE,SAAS,CAAC,KACxC,UAAU,EAAA,QAAA,EAAA,CAEb,IAAI,EAAE,QAAQ,KACbC,cAAA,CAACC,6BAAW,IAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,IAAI,EAAE,GAAI,CAC3D,EACDD,cAAA,CAACE,gCAAc,cAAE,QAAQ,EAAA,CAAkB,EAC1C,MAAM,IAAIF,cAAA,CAACG,6BAAW,EAAA,EAAC,SAAS,EAAEJ,QAAE,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,EAAA,CAAI,CAAA,EAAA,CACnD,CACnB;AAED,IAAA,MAAM,cAAc,GAClB,YAAY,EAAE,OAAO,KAAK,WAAW,GAAG,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IAE5D,IAAI,cAAc,EAAE;AAClB,QAAA,MAAM,IAAI,GAAG,QAAQ,CAAC,YAAY,EAAE,QAAQ,IAAI,MAAM,CAAC,IAAI,QAAQ;AAEnE,QAAA,QACEC,cAAA,CAACI,kCAAe,EAAA,EAAC,aAAa,EAAE,CAAC,EAAA,QAAA,EAC/BP,eAAA,CAACQ,0BAAO,eACNL,cAAA,CAACM,iCAAc,EAAA,EAAC,OAAO,kBACrBN,cAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,aAAa,YAAE,aAAa,EAAA,CAAQ,EAAA,CACrC,EACjBA,eAACO,iCAAc,EAAA,EAAC,IAAI,EAAE,IAAI,EAAA,QAAA,EAAG,cAAc,GAAkB,CAAA,EAAA,CACrD,EAAA,CACM;IAEtB;AAEA,IAAA,OAAO,aAAa;AACtB,CAAC,CACF;AAED,MAAM,CAAC,WAAW,GAAG,QAAQ;AAE7B,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE;AAC5C,IAAA,KAAK,EAAEC,6BAAW;AAClB,IAAA,UAAU,EAAEC,kCAAgB;AAC7B,CAAA;;;;"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
+
var React = require('react');
|
|
5
|
+
var reactI18next = require('react-i18next');
|
|
6
|
+
var utils = require('./utils-CTr7wn5d.js');
|
|
7
|
+
var renderIcon = require('./renderIcon-fLF3odqg.js');
|
|
8
|
+
var primitives_Badge = require('./primitives/Badge.js');
|
|
9
|
+
var x = require('./x-Brw3FJst.js');
|
|
10
|
+
|
|
11
|
+
const SIZE_CONFIG = {
|
|
12
|
+
sm: {
|
|
13
|
+
iconPl: "pl-1",
|
|
14
|
+
iconPr: "pr-1",
|
|
15
|
+
dismissPr: "pr-0.5",
|
|
16
|
+
btnSize: "size-3",
|
|
17
|
+
iconSize: "size-2",
|
|
18
|
+
},
|
|
19
|
+
default: {
|
|
20
|
+
iconPl: "pl-1.5",
|
|
21
|
+
iconPr: "pr-1.5",
|
|
22
|
+
dismissPr: "pr-1",
|
|
23
|
+
btnSize: "size-3.5",
|
|
24
|
+
iconSize: "size-2.5",
|
|
25
|
+
},
|
|
26
|
+
lg: {
|
|
27
|
+
iconPl: "pl-2",
|
|
28
|
+
iconPr: "pr-2",
|
|
29
|
+
dismissPr: "pr-1",
|
|
30
|
+
btnSize: "size-4.5",
|
|
31
|
+
iconSize: "size-3",
|
|
32
|
+
},
|
|
33
|
+
};
|
|
34
|
+
const INDICATOR_COLORS = {
|
|
35
|
+
default: "bg-primary",
|
|
36
|
+
secondary: "bg-muted-foreground",
|
|
37
|
+
destructive: "bg-destructive",
|
|
38
|
+
blue: "bg-blue-600",
|
|
39
|
+
green: "bg-green-600",
|
|
40
|
+
amber: "bg-amber-400",
|
|
41
|
+
red: "bg-red-600",
|
|
42
|
+
purple: "bg-purple-700",
|
|
43
|
+
pink: "bg-pink-600",
|
|
44
|
+
teal: "bg-teal-600",
|
|
45
|
+
gray: "bg-gray-400",
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
const Badge = React.forwardRef(({ variant = "default", size = "default", label, icon, iconPosition = "left", indicator, onDismiss, disabled = false, className, asChild = false, children, ...otherProps }, ref) => {
|
|
49
|
+
const { t } = reactI18next.useTranslation();
|
|
50
|
+
if (asChild) {
|
|
51
|
+
return (jsxRuntime.jsx(primitives_Badge.Badge, { ref: ref, asChild: true, variant: variant, size: size, className: className, ...otherProps, children: children }));
|
|
52
|
+
}
|
|
53
|
+
const renderLabel = label || children;
|
|
54
|
+
const iconElement = icon ? renderIcon.renderIcon(icon) : null;
|
|
55
|
+
const hasDismiss = !!onDismiss && !disabled;
|
|
56
|
+
return (jsxRuntime.jsxs(primitives_Badge.Badge, { ref: ref, variant: variant, size: size, className: utils.cn(disabled && "opacity-50 pointer-events-none", icon && iconPosition === "left" && SIZE_CONFIG[size].iconPl, icon && iconPosition === "right" && SIZE_CONFIG[size].iconPr, hasDismiss && SIZE_CONFIG[size].dismissPr, className), ...otherProps, children: [indicator && (jsxRuntime.jsx("span", { "aria-hidden": "true", className: utils.cn("size-1.5 shrink-0 rounded-full", INDICATOR_COLORS[indicator]) })), iconPosition === "left" && iconElement, renderLabel, iconPosition === "right" && iconElement, onDismiss && !disabled && (jsxRuntime.jsx("button", { type: "button", "aria-label": t("neetoatoms.badge.dismiss", "Dismiss"), onClick: onDismiss, className: utils.cn("inline-flex shrink-0 items-center justify-center rounded-full bg-current/15 transition-[background-color,opacity] hover:bg-current/25 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1", SIZE_CONFIG[size].btnSize), children: jsxRuntime.jsx(x.X, { className: SIZE_CONFIG[size].iconSize }) }))] }));
|
|
57
|
+
});
|
|
58
|
+
Badge.displayName = "Badge";
|
|
59
|
+
|
|
60
|
+
exports.Badge = Badge;
|
|
61
|
+
//# sourceMappingURL=Badge-STBHzYLs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Badge-STBHzYLs.js","sources":["../../../src/components/Badge/constants.ts","../../../src/components/Badge/Badge.tsx"],"sourcesContent":["import type { IndicatorVariant } from \"./Badge\";\n\nexport const SIZE_CONFIG = {\n sm: {\n iconPl: \"pl-1\",\n iconPr: \"pr-1\",\n dismissPr: \"pr-0.5\",\n btnSize: \"size-3\",\n iconSize: \"size-2\",\n },\n default: {\n iconPl: \"pl-1.5\",\n iconPr: \"pr-1.5\",\n dismissPr: \"pr-1\",\n btnSize: \"size-3.5\",\n iconSize: \"size-2.5\",\n },\n lg: {\n iconPl: \"pl-2\",\n iconPr: \"pr-2\",\n dismissPr: \"pr-1\",\n btnSize: \"size-4.5\",\n iconSize: \"size-3\",\n },\n};\n\nexport const INDICATOR_COLORS: Record<IndicatorVariant, string> = {\n default: \"bg-primary\",\n secondary: \"bg-muted-foreground\",\n destructive: \"bg-destructive\",\n blue: \"bg-blue-600\",\n green: \"bg-green-600\",\n amber: \"bg-amber-400\",\n red: \"bg-red-600\",\n purple: \"bg-purple-700\",\n pink: \"bg-pink-600\",\n teal: \"bg-teal-600\",\n gray: \"bg-gray-400\",\n};\n","import React, { forwardRef, type ReactNode } from \"react\";\n\nimport { X } from \"lucide-react\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { cn } from \"src/shadcn/lib/utils\";\nimport { renderIcon, type IconProp } from \"src/lib/renderIcon\";\nimport { Badge as PrimitiveBadge } from \"src/primitives/Badge\";\n\nimport { SIZE_CONFIG, INDICATOR_COLORS } from \"./constants\";\n\ntype BadgeVariant =\n | \"default\"\n | \"secondary\"\n | \"destructive\"\n | \"outline\"\n | \"ghost\"\n | \"link\"\n | \"gray\"\n | \"gray-subtle\"\n | \"blue\"\n | \"blue-subtle\"\n | \"purple\"\n | \"purple-subtle\"\n | \"amber\"\n | \"amber-subtle\"\n | \"red\"\n | \"red-subtle\"\n | \"pink\"\n | \"pink-subtle\"\n | \"green\"\n | \"green-subtle\"\n | \"teal\"\n | \"teal-subtle\";\n\ntype BadgeSize = \"sm\" | \"default\" | \"lg\";\n\nexport type IndicatorVariant =\n | \"default\"\n | \"secondary\"\n | \"destructive\"\n | \"blue\"\n | \"green\"\n | \"amber\"\n | \"red\"\n | \"purple\"\n | \"pink\"\n | \"teal\"\n | \"gray\";\n\nexport interface BadgeProps extends Omit<\n React.ComponentProps<\"span\">,\n \"children\"\n> {\n /** Visual variant of the badge. */\n variant?: BadgeVariant;\n /** Size of the badge. */\n size?: BadgeSize;\n /** Text label rendered inside the badge. */\n label?: string;\n /** Icon component, element, or class-name string. */\n icon?: IconProp;\n /** Placement of the icon relative to the label. */\n iconPosition?: \"left\" | \"right\";\n /** Colored status indicator dot. */\n indicator?: IndicatorVariant;\n /** Callback when the badge is dismissed. Renders a dismiss button when provided. */\n onDismiss?: () => void;\n /** Disables the badge and hides the dismiss button. */\n disabled?: boolean;\n /** Render as a custom element (polymorphic via Radix Slot). */\n asChild?: boolean;\n /** Children rendered inside the badge (fallback for `label`). */\n children?: ReactNode;\n}\n\nconst Badge = forwardRef<HTMLSpanElement, BadgeProps>(\n (\n {\n variant = \"default\",\n size = \"default\",\n label,\n icon,\n iconPosition = \"left\",\n indicator,\n onDismiss,\n disabled = false,\n className,\n asChild = false,\n children,\n ...otherProps\n },\n ref\n ) => {\n const { t } = useTranslation();\n\n if (asChild) {\n return (\n <PrimitiveBadge\n ref={ref}\n asChild\n variant={variant}\n size={size}\n className={className}\n {...otherProps}\n >\n {children}\n </PrimitiveBadge>\n );\n }\n\n const renderLabel = label || children;\n const iconElement = icon ? renderIcon(icon) : null;\n\n const hasDismiss = !!onDismiss && !disabled;\n\n return (\n <PrimitiveBadge\n ref={ref}\n variant={variant}\n size={size}\n className={cn(\n disabled && \"opacity-50 pointer-events-none\",\n icon && iconPosition === \"left\" && SIZE_CONFIG[size].iconPl,\n icon && iconPosition === \"right\" && SIZE_CONFIG[size].iconPr,\n hasDismiss && SIZE_CONFIG[size].dismissPr,\n className\n )}\n {...otherProps}\n >\n {indicator && (\n <span\n aria-hidden=\"true\"\n className={cn(\n \"size-1.5 shrink-0 rounded-full\",\n INDICATOR_COLORS[indicator]\n )}\n />\n )}\n {iconPosition === \"left\" && iconElement}\n {renderLabel}\n {iconPosition === \"right\" && iconElement}\n {onDismiss && !disabled && (\n <button\n type=\"button\"\n aria-label={t(\"neetoatoms.badge.dismiss\", \"Dismiss\")}\n onClick={onDismiss}\n className={cn(\n \"inline-flex shrink-0 items-center justify-center rounded-full bg-current/15 transition-[background-color,opacity] hover:bg-current/25 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1\",\n SIZE_CONFIG[size].btnSize\n )}\n >\n <X className={SIZE_CONFIG[size].iconSize} />\n </button>\n )}\n </PrimitiveBadge>\n );\n }\n);\n\nBadge.displayName = \"Badge\";\n\nexport { Badge };\n"],"names":["forwardRef","useTranslation","_jsx","PrimitiveBadge","renderIcon","_jsxs","cn","X"],"mappings":"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"}
|