@soyfri/shared-library 1.5.0-beta.4 → 2.0.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.dockerignore +8 -0
- package/.github/workflows/publish.yml +107 -0
- package/.prettierrc +3 -0
- package/.storybook/main.ts +19 -0
- package/.storybook/preview.ts +14 -0
- package/.storybook/vitest.setup.ts +9 -0
- package/Dockerfile +37 -0
- package/build.js +102 -0
- package/chromatic.config.json +5 -0
- package/cleanDirectories.js +40 -0
- package/dist/components/ActionMenu/ActionMenu.cjs +107 -0
- package/dist/components/ActionMenu/ActionMenu.cjs.map +1 -0
- package/dist/components/ActionMenu/ActionMenu.d.ts +60 -0
- package/dist/components/ActionMenu/ActionMenu.js +107 -0
- package/dist/components/ActionMenu/ActionMenu.js.map +1 -0
- package/dist/components/ActionMenu/index.d.ts +2 -0
- package/dist/components/ActionMenu.d.ts +6 -0
- package/dist/components/AppBar/AppBar.cjs +346 -0
- package/dist/components/AppBar/AppBar.cjs.map +1 -0
- package/dist/components/AppBar/AppBar.d.ts +55 -0
- package/dist/components/AppBar/AppBar.js +346 -0
- package/dist/components/AppBar/AppBar.js.map +1 -0
- package/dist/components/AppBar/AppBar.sx.d.ts +12 -0
- package/dist/components/AppBar/AppBarBrand.d.ts +31 -0
- package/dist/components/AppBar/AppBarContext.d.ts +18 -0
- package/dist/components/AppBar/AppBarMenuToggle.d.ts +39 -0
- package/dist/components/AppBar/AppBarUserMenu.d.ts +65 -0
- package/dist/components/AppBar/index.d.ts +12 -0
- package/dist/components/AppBar.d.ts +6 -0
- package/dist/components/Autocomplete/Autocomplete.cjs +314 -0
- package/dist/components/Autocomplete/Autocomplete.cjs.map +1 -0
- package/dist/components/Autocomplete/Autocomplete.d.ts +83 -0
- package/{components → dist/components}/Autocomplete/Autocomplete.definitions.d.ts +6 -0
- package/dist/components/Autocomplete/Autocomplete.helpers.d.ts +18 -0
- package/dist/components/Autocomplete/Autocomplete.js +314 -0
- package/dist/components/Autocomplete/Autocomplete.js.map +1 -0
- package/dist/components/Autocomplete/Autocomplete.sx.d.ts +7 -0
- package/dist/components/Autocomplete/Autocomplete.types.d.ts +1 -0
- package/dist/components/Autocomplete/_parts/AutocompleteChips.d.ts +19 -0
- package/dist/components/Autocomplete/_parts/AutocompleteLoader.d.ts +9 -0
- package/dist/components/Autocomplete/_parts/AutocompleteOption.d.ts +19 -0
- package/dist/components/Autocomplete/index.d.ts +2 -0
- package/dist/components/Autocomplete.d.ts +6 -0
- package/dist/components/Avatar/Avatar.cjs +163 -0
- package/dist/components/Avatar/Avatar.cjs.map +1 -0
- package/dist/components/Avatar/Avatar.d.ts +33 -0
- package/dist/components/Avatar/Avatar.definitions.d.ts +11 -0
- package/dist/components/Avatar/Avatar.js +163 -0
- package/dist/components/Avatar/Avatar.js.map +1 -0
- package/dist/components/Card/Card.cjs +187 -0
- package/dist/components/Card/Card.cjs.map +1 -0
- package/dist/components/Card/Card.d.ts +83 -0
- package/dist/components/Card/Card.js +187 -0
- package/dist/components/Card/Card.js.map +1 -0
- package/dist/components/Card/Card.sx.d.ts +17 -0
- package/dist/components/Card/index.d.ts +4 -0
- package/dist/components/Card.d.ts +6 -0
- package/dist/components/DatePicker/DatePicker.cjs +203 -0
- package/dist/components/DatePicker/DatePicker.cjs.map +1 -0
- package/dist/components/DatePicker/DatePicker.d.ts +56 -0
- package/{components → dist/components}/DatePicker/DatePicker.definitions.d.ts +1 -0
- package/dist/components/DatePicker/DatePicker.helpers.d.ts +7 -0
- package/dist/components/DatePicker/DatePicker.js +203 -0
- package/dist/components/DatePicker/DatePicker.js.map +1 -0
- package/dist/components/DatePicker/DatePicker.sx.d.ts +9 -0
- package/dist/components/DatePicker/DatePicker.types.d.ts +1 -0
- package/dist/components/DatePicker/index.d.ts +2 -0
- package/dist/components/DatePicker.d.ts +6 -0
- package/dist/components/DateTimePicker/DateTimePicker.cjs +222 -0
- package/dist/components/DateTimePicker/DateTimePicker.cjs.map +1 -0
- package/dist/components/DateTimePicker/DateTimePicker.d.ts +65 -0
- package/{components → dist/components}/DateTimePicker/DateTimePicker.definitions.d.ts +1 -0
- package/dist/components/DateTimePicker/DateTimePicker.helpers.d.ts +11 -0
- package/dist/components/DateTimePicker/DateTimePicker.js +222 -0
- package/dist/components/DateTimePicker/DateTimePicker.js.map +1 -0
- package/dist/components/DateTimePicker/DateTimePicker.sx.d.ts +7 -0
- package/dist/components/DateTimePicker/DateTimePicker.types.d.ts +1 -0
- package/dist/components/DateTimePicker/index.d.ts +2 -0
- package/dist/components/DateTimePicker.d.ts +6 -0
- package/dist/components/Drawer/Drawer.cjs +271 -0
- package/dist/components/Drawer/Drawer.cjs.map +1 -0
- package/dist/components/Drawer/Drawer.d.ts +51 -0
- package/dist/components/Drawer/Drawer.js +271 -0
- package/dist/components/Drawer/Drawer.js.map +1 -0
- package/dist/components/Drawer/Drawer.sx.d.ts +23 -0
- package/dist/components/Drawer/DrawerContext.d.ts +18 -0
- package/dist/components/Drawer/DrawerItem.d.ts +35 -0
- package/dist/components/Drawer/index.d.ts +6 -0
- package/dist/components/Drawer.d.ts +6 -0
- package/{components → dist/components}/Icon/Icon.cjs +44 -3
- package/dist/components/Icon/Icon.cjs.map +1 -0
- package/dist/components/Icon/Icon.d.ts +54 -0
- package/{components → dist/components}/Icon/Icon.js +44 -3
- package/dist/components/Icon/Icon.js.map +1 -0
- package/dist/components/Input/Input.cjs +175 -0
- package/dist/components/Input/Input.cjs.map +1 -0
- package/dist/components/Input/Input.d.ts +37 -0
- package/{components → dist/components}/Input/Input.definitions.d.ts +5 -2
- package/dist/components/Input/Input.helpers.d.ts +14 -0
- package/dist/components/Input/Input.js +175 -0
- package/dist/components/Input/Input.js.map +1 -0
- package/dist/components/Input/Input.sx.d.ts +8 -0
- package/dist/components/Input/Input.types.d.ts +1 -0
- package/dist/components/Input/index.d.ts +2 -0
- package/dist/components/Input.d.ts +6 -0
- package/dist/components/InputGroup/InputGroup.cjs +139 -0
- package/dist/components/InputGroup/InputGroup.cjs.map +1 -0
- package/dist/components/InputGroup/InputGroup.d.ts +42 -0
- package/dist/components/InputGroup/InputGroup.definitions.d.ts +6 -0
- package/dist/components/InputGroup/InputGroup.js +139 -0
- package/dist/components/InputGroup/InputGroup.js.map +1 -0
- package/dist/components/Modal/Modal.cjs +319 -0
- package/dist/components/Modal/Modal.cjs.map +1 -0
- package/dist/components/Modal/Modal.d.ts +65 -0
- package/dist/components/Modal/Modal.js +319 -0
- package/dist/components/Modal/Modal.js.map +1 -0
- package/{components → dist/components}/Modal/ModalFooter.d.ts +9 -1
- package/dist/components/Modal/index.d.ts +6 -0
- package/dist/components/PageLoader/PageLoader.cjs +61 -0
- package/dist/components/PageLoader/PageLoader.cjs.map +1 -0
- package/dist/components/PageLoader/PageLoader.d.ts +38 -0
- package/dist/components/PageLoader/PageLoader.js +61 -0
- package/dist/components/PageLoader/PageLoader.js.map +1 -0
- package/dist/components/PageLoader/index.d.ts +2 -0
- package/dist/components/PageLoader.d.ts +6 -0
- package/dist/components/ScrollTopButton/ScrollTopButton.cjs +79 -0
- package/dist/components/ScrollTopButton/ScrollTopButton.cjs.map +1 -0
- package/dist/components/ScrollTopButton/ScrollTopButton.d.ts +48 -0
- package/dist/components/ScrollTopButton/ScrollTopButton.js +79 -0
- package/dist/components/ScrollTopButton/ScrollTopButton.js.map +1 -0
- package/dist/components/ScrollTopButton/index.d.ts +4 -0
- package/dist/components/ScrollTopButton/scrollToTop.d.ts +29 -0
- package/dist/components/ScrollTopButton.d.ts +6 -0
- package/dist/components/Select/Select.cjs +448 -0
- package/dist/components/Select/Select.cjs.map +1 -0
- package/{components → dist/components}/Select/Select.d.ts +33 -13
- package/{components → dist/components}/Select/Select.definitions.d.ts +3 -0
- package/dist/components/Select/Select.helpers.d.ts +28 -0
- package/dist/components/Select/Select.js +448 -0
- package/dist/components/Select/Select.js.map +1 -0
- package/dist/components/Select/Select.sx.d.ts +7 -0
- package/dist/components/Select/Select.types.d.ts +1 -0
- package/dist/components/Select/_parts/SelectMenuItem.d.ts +20 -0
- package/dist/components/Select/_parts/SelectSearchHeader.d.ts +15 -0
- package/dist/components/Select/_parts/SelectValue.d.ts +22 -0
- package/dist/components/Select/index.d.ts +2 -0
- package/dist/components/Select.d.ts +6 -0
- package/{components → dist/components}/Stat/Stat.cjs +1 -1
- package/{components → dist/components}/Stat/Stat.js +1 -1
- package/{components → dist/components}/Stepper/Stepper.cjs +4 -1
- package/dist/components/Stepper/Stepper.cjs.map +1 -0
- package/{components → dist/components}/Stepper/Stepper.d.ts +5 -0
- package/{components → dist/components}/Stepper/Stepper.js +4 -1
- package/dist/components/Stepper/Stepper.js.map +1 -0
- package/dist/components/_shared/formField.sx.d.ts +33 -0
- package/dist/components/_shared/resolvePreset.d.ts +18 -0
- package/dist/formField.sx-CQ1mbk9M.cjs +76 -0
- package/dist/formField.sx-CQ1mbk9M.cjs.map +1 -0
- package/dist/formField.sx-DfVbMe0V.js +77 -0
- package/dist/formField.sx-DfVbMe0V.js.map +1 -0
- package/dist/hooks/Wizard/Wizard.cjs +7 -0
- package/dist/hooks/Wizard/Wizard.cjs.map +1 -0
- package/dist/hooks/Wizard/Wizard.js +7 -0
- package/dist/hooks/Wizard/Wizard.js.map +1 -0
- package/dist/hooks/Wizard/WizardContext.d.ts +67 -0
- package/dist/hooks/Wizard/index.d.ts +3 -0
- package/dist/hooks/Wizard/useWizard.d.ts +9 -0
- package/dist/hooks/Wizard.d.ts +2 -0
- package/dist/index.cjs +100 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +31 -0
- package/{index.js.map → dist/index.js.map} +1 -1
- package/dist/mui.d.ts +5 -0
- package/dist/resolvePreset-B-IB0ehH.js +15 -0
- package/dist/resolvePreset-B-IB0ehH.js.map +1 -0
- package/dist/resolvePreset-CT3kU-K2.cjs +14 -0
- package/dist/resolvePreset-CT3kU-K2.cjs.map +1 -0
- package/dist/theme/componentStyles.d.ts +32 -0
- package/dist/theme/tokens.d.ts +28 -0
- package/dist/useWizard-CWdIxZzX.cjs +94 -0
- package/dist/useWizard-CWdIxZzX.cjs.map +1 -0
- package/dist/useWizard-CWq--C3o.js +95 -0
- package/dist/useWizard-CWq--C3o.js.map +1 -0
- package/package.json +43 -134
- package/rollup.config.cjs +87 -0
- package/src/components/ActionMenu/ActionMenu.stories.tsx +230 -0
- package/src/components/ActionMenu/ActionMenu.tsx +174 -0
- package/src/components/ActionMenu/index.ts +2 -0
- package/src/components/AppBar/AppBar.stories.tsx +272 -0
- package/src/components/AppBar/AppBar.sx.ts +32 -0
- package/src/components/AppBar/AppBar.tsx +123 -0
- package/src/components/AppBar/AppBarBrand.tsx +120 -0
- package/src/components/AppBar/AppBarContext.ts +25 -0
- package/src/components/AppBar/AppBarMenuToggle.tsx +90 -0
- package/src/components/AppBar/AppBarUserMenu.tsx +217 -0
- package/src/components/AppBar/index.ts +25 -0
- package/src/components/Autocomplete/Autocomplete.definitions.ts +477 -0
- package/src/components/Autocomplete/Autocomplete.helpers.ts +60 -0
- package/src/components/Autocomplete/Autocomplete.stories.tsx +748 -0
- package/src/components/Autocomplete/Autocomplete.sx.ts +30 -0
- package/src/components/Autocomplete/Autocomplete.tsx +361 -0
- package/src/components/Autocomplete/Autocomplete.types.ts +13 -0
- package/src/components/Autocomplete/_parts/AutocompleteChips.tsx +55 -0
- package/src/components/Autocomplete/_parts/AutocompleteLoader.tsx +17 -0
- package/src/components/Autocomplete/_parts/AutocompleteOption.tsx +31 -0
- package/src/components/Autocomplete/index.ts +12 -0
- package/src/components/Avatar/Avatar.definitions.ts +162 -0
- package/src/components/Avatar/Avatar.stories.tsx +258 -0
- package/src/components/Avatar/Avatar.tsx +206 -0
- package/src/components/Avatar/index.ts +1 -0
- package/src/components/Button/Button.definition.ts +97 -0
- package/src/components/Button/Button.stories.tsx +285 -0
- package/src/components/Button/Button.tsx +67 -0
- package/src/components/Button/index.ts +1 -0
- package/src/components/Card/Card.definition.ts +5 -0
- package/src/components/Card/Card.stories.tsx +221 -0
- package/src/components/Card/Card.sx.ts +104 -0
- package/src/components/Card/Card.tsx +200 -0
- package/src/components/Card/index.ts +9 -0
- package/src/components/Chip/Chip.definitions.ts +167 -0
- package/src/components/Chip/Chip.stories.tsx +265 -0
- package/src/components/Chip/Chip.tsx +61 -0
- package/src/components/Chip/index.ts +1 -0
- package/src/components/Column/Column.tsx +29 -0
- package/src/components/Column/index.ts +1 -0
- package/src/components/DatePicker/DatePicker.definitions.ts +228 -0
- package/src/components/DatePicker/DatePicker.helpers.ts +24 -0
- package/src/components/DatePicker/DatePicker.stories.tsx +309 -0
- package/src/components/DatePicker/DatePicker.sx.ts +33 -0
- package/src/components/DatePicker/DatePicker.tsx +189 -0
- package/src/components/DatePicker/DatePicker.types.ts +10 -0
- package/src/components/DatePicker/index.ts +9 -0
- package/src/components/DateRangePicker/DateRangePicker.definitions.ts +191 -0
- package/src/components/DateRangePicker/DateRangePicker.stories.tsx +252 -0
- package/src/components/DateRangePicker/DateRangePicker.tsx +56 -0
- package/src/components/DateRangePicker/index.ts +1 -0
- package/src/components/DateTimePicker/DateTimePicker.definitions.ts +256 -0
- package/src/components/DateTimePicker/DateTimePicker.helpers.ts +38 -0
- package/src/components/DateTimePicker/DateTimePicker.stories.tsx +418 -0
- package/src/components/DateTimePicker/DateTimePicker.sx.ts +30 -0
- package/src/components/DateTimePicker/DateTimePicker.tsx +225 -0
- package/src/components/DateTimePicker/DateTimePicker.types.ts +10 -0
- package/src/components/DateTimePicker/index.ts +9 -0
- package/src/components/Drawer/Drawer.stories.tsx +270 -0
- package/src/components/Drawer/Drawer.sx.ts +106 -0
- package/src/components/Drawer/Drawer.tsx +214 -0
- package/src/components/Drawer/DrawerContext.ts +26 -0
- package/src/components/Drawer/DrawerItem.tsx +110 -0
- package/src/components/Drawer/index.ts +10 -0
- package/src/components/Flyout/Flyout.stories.tsx +282 -0
- package/src/components/Flyout/Flyout.tsx +122 -0
- package/src/components/Flyout/index.ts +1 -0
- package/src/components/Gallery/Gallery.definition.tsx +37 -0
- package/src/components/Gallery/Gallery.stories.tsx +82 -0
- package/src/components/Gallery/Gallery.tsx +118 -0
- package/src/components/Gallery/GalleryLightbox.tsx +170 -0
- package/src/components/Gallery/GalleryMain.tsx +84 -0
- package/src/components/Gallery/GalleryThumbnails.tsx +106 -0
- package/src/components/Gallery/index.ts +1 -0
- package/src/components/Icon/Icon.stories.tsx +121 -0
- package/src/components/Icon/Icon.tsx +175 -0
- package/src/components/Icon/index.ts +2 -0
- package/src/components/Input/Input.definitions.ts +324 -0
- package/src/components/Input/Input.helpers.ts +49 -0
- package/src/components/Input/Input.stories.tsx +499 -0
- package/src/components/Input/Input.sx.ts +42 -0
- package/src/components/Input/Input.tsx +141 -0
- package/src/components/Input/Input.types.ts +10 -0
- package/src/components/Input/index.ts +9 -0
- package/src/components/InputGroup/InputGroup.definitions.ts +158 -0
- package/src/components/InputGroup/InputGroup.stories.tsx +267 -0
- package/src/components/InputGroup/InputGroup.tsx +179 -0
- package/src/components/InputGroup/index.ts +1 -0
- package/src/components/MenuButton/MenuButton.stories.tsx +197 -0
- package/src/components/MenuButton/MenuButton.tsx +100 -0
- package/src/components/MenuButton/index.ts +1 -0
- package/src/components/Modal/Modal.stories.tsx +721 -0
- package/src/components/Modal/Modal.tsx +355 -0
- package/src/components/Modal/ModalBody.tsx +16 -0
- package/src/components/Modal/ModalFooter.tsx +71 -0
- package/src/components/Modal/ModalHeader.tsx +18 -0
- package/src/components/Modal/index.ts +6 -0
- package/src/components/PageLoader/PageLoader.stories.tsx +217 -0
- package/src/components/PageLoader/PageLoader.tsx +96 -0
- package/src/components/PageLoader/index.ts +2 -0
- package/src/components/ScrollTopButton/ScrollTopButton.stories.tsx +158 -0
- package/src/components/ScrollTopButton/ScrollTopButton.tsx +135 -0
- package/src/components/ScrollTopButton/index.ts +8 -0
- package/src/components/ScrollTopButton/scrollToTop.ts +37 -0
- package/src/components/Select/Select.definitions.ts +602 -0
- package/src/components/Select/Select.helpers.ts +71 -0
- package/src/components/Select/Select.stories.tsx +687 -0
- package/src/components/Select/Select.sx.ts +14 -0
- package/src/components/Select/Select.tsx +429 -0
- package/src/components/Select/Select.types.ts +15 -0
- package/src/components/Select/_parts/SelectMenuItem.tsx +40 -0
- package/src/components/Select/_parts/SelectSearchHeader.tsx +51 -0
- package/src/components/Select/_parts/SelectValue.tsx +96 -0
- package/src/components/Select/index.ts +14 -0
- package/src/components/Stat/Stat.stories.tsx +85 -0
- package/src/components/Stat/Stat.tsx +117 -0
- package/src/components/Stat/index.ts +2 -0
- package/src/components/StatusMessage/StatusMessage.stories.tsx +130 -0
- package/src/components/StatusMessage/StatusMessage.tsx +162 -0
- package/src/components/StatusMessage/index.ts +2 -0
- package/src/components/Stepper/Step.tsx +21 -0
- package/src/components/Stepper/Stepper.definition.ts +75 -0
- package/src/components/Stepper/Stepper.stories.tsx +122 -0
- package/src/components/Stepper/Stepper.tsx +75 -0
- package/src/components/Stepper/index.ts +2 -0
- package/src/components/Table/EmptyTable.png +0 -0
- package/src/components/Table/Table.definition.ts +580 -0
- package/src/components/Table/Table.stories.tsx +853 -0
- package/src/components/Table/Table.tsx +495 -0
- package/src/components/Table/data.ts +134 -0
- package/src/components/Table/exportsUtils.ts +195 -0
- package/src/components/Table/index.ts +3 -0
- package/src/components/Table/types.ts +34 -0
- package/src/components/Tabs/Tab.definition.ts +53 -0
- package/src/components/Tabs/Tab.tsx +19 -0
- package/src/components/Tabs/Tabs.stories.tsx +118 -0
- package/src/components/Tabs/Tabs.tsx +99 -0
- package/src/components/Tabs/_tabUtils.tsx +4 -0
- package/src/components/Tabs/index.ts +2 -0
- package/src/components/Timeline/Timeline.definition.ts +43 -0
- package/src/components/Timeline/Timeline.stories.tsx +108 -0
- package/src/components/Timeline/Timeline.tsx +49 -0
- package/src/components/Timeline/TimelineItem.tsx +31 -0
- package/src/components/Timeline/index.ts +2 -0
- package/src/components/Tooltip/Tooltip.stories.tsx +129 -0
- package/src/components/Tooltip/Tooltip.tsx +58 -0
- package/src/components/Tooltip/index.ts +1 -0
- package/src/components/_shared/formField.sx.ts +118 -0
- package/src/components/_shared/resolvePreset.ts +35 -0
- package/src/hooks/ClipBoard/ClipBoard.stories.tsx +168 -0
- package/src/hooks/ClipBoard/ClipBoard.tsx +131 -0
- package/src/hooks/ClipBoard/ClipboardUnifiedDemo.tsx +111 -0
- package/src/hooks/ClipBoard/index.ts +1 -0
- package/src/hooks/Wizard/Wizard.stories.tsx +301 -0
- package/src/hooks/Wizard/WizardContext.tsx +166 -0
- package/src/hooks/Wizard/index.ts +6 -0
- package/src/hooks/Wizard/useWizard.ts +13 -0
- package/src/index.ts +17 -0
- package/src/mui.ts +44 -0
- package/src/styles.css +3 -0
- package/src/theme/componentStyles.ts +47 -0
- package/src/theme/tokens.ts +43 -0
- package/tailwind.config.js +10 -0
- package/tsconfig.json +48 -0
- package/tsup.config.js +41 -0
- package/vite.config.js +132 -0
- package/vitest.config.ts +35 -0
- package/DatePicker-BSNboVhN.js +0 -201
- package/DatePicker-BSNboVhN.js.map +0 -1
- package/DatePicker-BoqxWAhj.cjs +0 -200
- package/DatePicker-BoqxWAhj.cjs.map +0 -1
- package/Input-DFHs7cJ_.js +0 -171
- package/Input-DFHs7cJ_.js.map +0 -1
- package/Input-c8MwNNPg.cjs +0 -170
- package/Input-c8MwNNPg.cjs.map +0 -1
- package/Select-BO2N56sm.cjs +0 -411
- package/Select-BO2N56sm.cjs.map +0 -1
- package/Select-BcLkyHSE.js +0 -412
- package/Select-BcLkyHSE.js.map +0 -1
- package/components/Autocomplete/Autocomplete.cjs +0 -132
- package/components/Autocomplete/Autocomplete.cjs.map +0 -1
- package/components/Autocomplete/Autocomplete.d.ts +0 -28
- package/components/Autocomplete/Autocomplete.js +0 -132
- package/components/Autocomplete/Autocomplete.js.map +0 -1
- package/components/Autocomplete/index.d.ts +0 -1
- package/components/Autocomplete.d.ts +0 -2
- package/components/Avatar/Avatar.cjs +0 -126
- package/components/Avatar/Avatar.cjs.map +0 -1
- package/components/Avatar/Avatar.d.ts +0 -19
- package/components/Avatar/Avatar.js +0 -126
- package/components/Avatar/Avatar.js.map +0 -1
- package/components/Card/Card.cjs +0 -28
- package/components/Card/Card.cjs.map +0 -1
- package/components/Card/Card.d.ts +0 -13
- package/components/Card/Card.js +0 -28
- package/components/Card/Card.js.map +0 -1
- package/components/Card/index.d.ts +0 -1
- package/components/Card.d.ts +0 -2
- package/components/DatePicker/DatePicker.cjs +0 -5
- package/components/DatePicker/DatePicker.cjs.map +0 -1
- package/components/DatePicker/DatePicker.d.ts +0 -18
- package/components/DatePicker/DatePicker.js +0 -5
- package/components/DatePicker/DatePicker.js.map +0 -1
- package/components/DatePicker/index.d.ts +0 -1
- package/components/DatePicker.d.ts +0 -2
- package/components/DateTimePicker/DateTimePicker.cjs +0 -208
- package/components/DateTimePicker/DateTimePicker.cjs.map +0 -1
- package/components/DateTimePicker/DateTimePicker.d.ts +0 -28
- package/components/DateTimePicker/DateTimePicker.js +0 -208
- package/components/DateTimePicker/DateTimePicker.js.map +0 -1
- package/components/DateTimePicker/index.d.ts +0 -1
- package/components/DateTimePicker.d.ts +0 -2
- package/components/Icon/Icon.cjs.map +0 -1
- package/components/Icon/Icon.d.ts +0 -21
- package/components/Icon/Icon.js.map +0 -1
- package/components/Input/Input.cjs +0 -5
- package/components/Input/Input.cjs.map +0 -1
- package/components/Input/Input.d.ts +0 -32
- package/components/Input/Input.js +0 -5
- package/components/Input/Input.js.map +0 -1
- package/components/Input/index.d.ts +0 -1
- package/components/Input.d.ts +0 -2
- package/components/InputGroup/InputGroup.cjs +0 -126
- package/components/InputGroup/InputGroup.cjs.map +0 -1
- package/components/InputGroup/InputGroup.d.ts +0 -6
- package/components/InputGroup/InputGroup.js +0 -126
- package/components/InputGroup/InputGroup.js.map +0 -1
- package/components/Modal/Modal.cjs +0 -209
- package/components/Modal/Modal.cjs.map +0 -1
- package/components/Modal/Modal.d.ts +0 -29
- package/components/Modal/Modal.js +0 -209
- package/components/Modal/Modal.js.map +0 -1
- package/components/Modal/index.d.ts +0 -1
- package/components/Select/Select.cjs +0 -6
- package/components/Select/Select.cjs.map +0 -1
- package/components/Select/Select.js +0 -6
- package/components/Select/Select.js.map +0 -1
- package/components/Select/index.d.ts +0 -1
- package/components/Select.d.ts +0 -2
- package/components/Stepper/Stepper.cjs.map +0 -1
- package/components/Stepper/Stepper.js.map +0 -1
- package/index.cjs +0 -2
- package/index.cjs.map +0 -1
- package/index.d.ts +0 -0
- package/index.js +0 -2
- /package/{README.md → Readme.md} +0 -0
- /package/{Button-C17mExpd.cjs → dist/Button-C17mExpd.cjs} +0 -0
- /package/{Button-C17mExpd.cjs.map → dist/Button-C17mExpd.cjs.map} +0 -0
- /package/{Button-UkkP-bNw.js → dist/Button-UkkP-bNw.js} +0 -0
- /package/{Button-UkkP-bNw.js.map → dist/Button-UkkP-bNw.js.map} +0 -0
- /package/{components → dist/components}/Avatar/index.d.ts +0 -0
- /package/{components → dist/components}/Avatar.d.ts +0 -0
- /package/{components → dist/components}/Button/Button.cjs +0 -0
- /package/{components → dist/components}/Button/Button.cjs.map +0 -0
- /package/{components → dist/components}/Button/Button.d.ts +0 -0
- /package/{components → dist/components}/Button/Button.definition.d.ts +0 -0
- /package/{components → dist/components}/Button/Button.js +0 -0
- /package/{components → dist/components}/Button/Button.js.map +0 -0
- /package/{components → dist/components}/Button/index.d.ts +0 -0
- /package/{components → dist/components}/Button.d.ts +0 -0
- /package/{components → dist/components}/Card/Card.definition.d.ts +0 -0
- /package/{components → dist/components}/Chip/Chip.cjs +0 -0
- /package/{components → dist/components}/Chip/Chip.cjs.map +0 -0
- /package/{components → dist/components}/Chip/Chip.d.ts +0 -0
- /package/{components → dist/components}/Chip/Chip.definitions.d.ts +0 -0
- /package/{components → dist/components}/Chip/Chip.js +0 -0
- /package/{components → dist/components}/Chip/Chip.js.map +0 -0
- /package/{components → dist/components}/Chip/index.d.ts +0 -0
- /package/{components → dist/components}/Chip.d.ts +0 -0
- /package/{components → dist/components}/Column/Column.cjs +0 -0
- /package/{components → dist/components}/Column/Column.cjs.map +0 -0
- /package/{components → dist/components}/Column/Column.d.ts +0 -0
- /package/{components → dist/components}/Column/Column.js +0 -0
- /package/{components → dist/components}/Column/Column.js.map +0 -0
- /package/{components → dist/components}/Column/index.d.ts +0 -0
- /package/{components → dist/components}/Column.d.ts +0 -0
- /package/{components → dist/components}/DateRangePicker/DateRangePicker.cjs +0 -0
- /package/{components → dist/components}/DateRangePicker/DateRangePicker.cjs.map +0 -0
- /package/{components → dist/components}/DateRangePicker/DateRangePicker.d.ts +0 -0
- /package/{components → dist/components}/DateRangePicker/DateRangePicker.definitions.d.ts +0 -0
- /package/{components → dist/components}/DateRangePicker/DateRangePicker.js +0 -0
- /package/{components → dist/components}/DateRangePicker/DateRangePicker.js.map +0 -0
- /package/{components → dist/components}/DateRangePicker/index.d.ts +0 -0
- /package/{components → dist/components}/DateRangePicker.d.ts +0 -0
- /package/{components → dist/components}/Flyout/Flyout.cjs +0 -0
- /package/{components → dist/components}/Flyout/Flyout.cjs.map +0 -0
- /package/{components → dist/components}/Flyout/Flyout.d.ts +0 -0
- /package/{components → dist/components}/Flyout/Flyout.js +0 -0
- /package/{components → dist/components}/Flyout/Flyout.js.map +0 -0
- /package/{components → dist/components}/Flyout/index.d.ts +0 -0
- /package/{components → dist/components}/Flyout.d.ts +0 -0
- /package/{components → dist/components}/Gallery/Gallery.cjs +0 -0
- /package/{components → dist/components}/Gallery/Gallery.cjs.map +0 -0
- /package/{components → dist/components}/Gallery/Gallery.d.ts +0 -0
- /package/{components → dist/components}/Gallery/Gallery.definition.d.ts +0 -0
- /package/{components → dist/components}/Gallery/Gallery.js +0 -0
- /package/{components → dist/components}/Gallery/Gallery.js.map +0 -0
- /package/{components → dist/components}/Gallery/GalleryLightbox.d.ts +0 -0
- /package/{components → dist/components}/Gallery/GalleryMain.d.ts +0 -0
- /package/{components → dist/components}/Gallery/GalleryThumbnails.d.ts +0 -0
- /package/{components → dist/components}/Gallery/index.d.ts +0 -0
- /package/{components → dist/components}/Gallery.d.ts +0 -0
- /package/{components → dist/components}/Icon/index.d.ts +0 -0
- /package/{components → dist/components}/Icon.d.ts +0 -0
- /package/{components → dist/components}/InputGroup/index.d.ts +0 -0
- /package/{components → dist/components}/InputGroup.d.ts +0 -0
- /package/{components → dist/components}/MenuButton/MenuButton.cjs +0 -0
- /package/{components → dist/components}/MenuButton/MenuButton.cjs.map +0 -0
- /package/{components → dist/components}/MenuButton/MenuButton.d.ts +0 -0
- /package/{components → dist/components}/MenuButton/MenuButton.js +0 -0
- /package/{components → dist/components}/MenuButton/MenuButton.js.map +0 -0
- /package/{components → dist/components}/MenuButton/index.d.ts +0 -0
- /package/{components → dist/components}/MenuButton.d.ts +0 -0
- /package/{components → dist/components}/Modal/ModalBody.d.ts +0 -0
- /package/{components → dist/components}/Modal/ModalHeader.d.ts +0 -0
- /package/{components → dist/components}/Modal.d.ts +0 -0
- /package/{components → dist/components}/Stat/Stat.cjs.map +0 -0
- /package/{components → dist/components}/Stat/Stat.d.ts +0 -0
- /package/{components → dist/components}/Stat/Stat.js.map +0 -0
- /package/{components → dist/components}/Stat/index.d.ts +0 -0
- /package/{components → dist/components}/Stat.d.ts +0 -0
- /package/{components → dist/components}/StatusMessage/StatusMessage.cjs +0 -0
- /package/{components → dist/components}/StatusMessage/StatusMessage.cjs.map +0 -0
- /package/{components → dist/components}/StatusMessage/StatusMessage.d.ts +0 -0
- /package/{components → dist/components}/StatusMessage/StatusMessage.js +0 -0
- /package/{components → dist/components}/StatusMessage/StatusMessage.js.map +0 -0
- /package/{components → dist/components}/StatusMessage/index.d.ts +0 -0
- /package/{components → dist/components}/StatusMessage.d.ts +0 -0
- /package/{components → dist/components}/Stepper/Step.d.ts +0 -0
- /package/{components → dist/components}/Stepper/Stepper.definition.d.ts +0 -0
- /package/{components → dist/components}/Stepper/index.d.ts +0 -0
- /package/{components → dist/components}/Stepper.d.ts +0 -0
- /package/{components → dist/components}/Table/Table.cjs +0 -0
- /package/{components → dist/components}/Table/Table.cjs.map +0 -0
- /package/{components → dist/components}/Table/Table.d.ts +0 -0
- /package/{components → dist/components}/Table/Table.definition.d.ts +0 -0
- /package/{components → dist/components}/Table/Table.js +0 -0
- /package/{components → dist/components}/Table/Table.js.map +0 -0
- /package/{components → dist/components}/Table/data.d.ts +0 -0
- /package/{components → dist/components}/Table/exportsUtils.d.ts +0 -0
- /package/{components → dist/components}/Table/index.d.ts +0 -0
- /package/{components → dist/components}/Table/types.d.ts +0 -0
- /package/{components → dist/components}/Table.d.ts +0 -0
- /package/{components → dist/components}/Tabs/Tab.d.ts +0 -0
- /package/{components → dist/components}/Tabs/Tab.definition.d.ts +0 -0
- /package/{components → dist/components}/Tabs/Tabs.cjs +0 -0
- /package/{components → dist/components}/Tabs/Tabs.cjs.map +0 -0
- /package/{components → dist/components}/Tabs/Tabs.d.ts +0 -0
- /package/{components → dist/components}/Tabs/Tabs.js +0 -0
- /package/{components → dist/components}/Tabs/Tabs.js.map +0 -0
- /package/{components → dist/components}/Tabs/_tabUtils.d.ts +0 -0
- /package/{components → dist/components}/Tabs/index.d.ts +0 -0
- /package/{components → dist/components}/Tabs.d.ts +0 -0
- /package/{components → dist/components}/Timeline/Timeline.cjs +0 -0
- /package/{components → dist/components}/Timeline/Timeline.cjs.map +0 -0
- /package/{components → dist/components}/Timeline/Timeline.d.ts +0 -0
- /package/{components → dist/components}/Timeline/Timeline.definition.d.ts +0 -0
- /package/{components → dist/components}/Timeline/Timeline.js +0 -0
- /package/{components → dist/components}/Timeline/Timeline.js.map +0 -0
- /package/{components → dist/components}/Timeline/TimelineItem.d.ts +0 -0
- /package/{components → dist/components}/Timeline/index.d.ts +0 -0
- /package/{components → dist/components}/Timeline.d.ts +0 -0
- /package/{components → dist/components}/Tooltip/Tooltip.cjs +0 -0
- /package/{components → dist/components}/Tooltip/Tooltip.cjs.map +0 -0
- /package/{components → dist/components}/Tooltip/Tooltip.d.ts +0 -0
- /package/{components → dist/components}/Tooltip/Tooltip.js +0 -0
- /package/{components → dist/components}/Tooltip/Tooltip.js.map +0 -0
- /package/{components → dist/components}/Tooltip/index.d.ts +0 -0
- /package/{components → dist/components}/Tooltip.d.ts +0 -0
- /package/{hooks → dist/hooks}/ClipBoard/ClipBoard.cjs +0 -0
- /package/{hooks → dist/hooks}/ClipBoard/ClipBoard.cjs.map +0 -0
- /package/{hooks → dist/hooks}/ClipBoard/ClipBoard.d.ts +0 -0
- /package/{hooks → dist/hooks}/ClipBoard/ClipBoard.js +0 -0
- /package/{hooks → dist/hooks}/ClipBoard/ClipBoard.js.map +0 -0
- /package/{hooks → dist/hooks}/ClipBoard/ClipboardUnifiedDemo.d.ts +0 -0
- /package/{hooks → dist/hooks}/ClipBoard/index.d.ts +0 -0
- /package/{hooks → dist/hooks}/ClipBoard.d.ts +0 -0
- /package/{index.css → dist/styles.css} +0 -0
package/.dockerignore
ADDED
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
name: Node.js CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [ "main" ]
|
|
6
|
+
|
|
7
|
+
jobs:
|
|
8
|
+
build:
|
|
9
|
+
runs-on: ubuntu-latest
|
|
10
|
+
|
|
11
|
+
strategy:
|
|
12
|
+
matrix:
|
|
13
|
+
node-version: [v23.6.1]
|
|
14
|
+
|
|
15
|
+
steps:
|
|
16
|
+
- name: Checkout repository
|
|
17
|
+
uses: actions/checkout@v4
|
|
18
|
+
|
|
19
|
+
- name: Use Node.js ${{ matrix.node-version }}
|
|
20
|
+
uses: actions/setup-node@v4
|
|
21
|
+
with:
|
|
22
|
+
node-version: ${{ matrix.node-version }}
|
|
23
|
+
npm-version: '10.9.2'
|
|
24
|
+
cache: 'npm' # Se asume que package-lock.json está en el repositorio
|
|
25
|
+
|
|
26
|
+
- name: Install dependencies
|
|
27
|
+
run: npm install --frozen-lockfile # Uso de --frozen-lockfile para CI/CD
|
|
28
|
+
|
|
29
|
+
- name: Remove underscore-prefixed directories
|
|
30
|
+
run: npm run rm --if-present
|
|
31
|
+
|
|
32
|
+
- name: Build package
|
|
33
|
+
run: npm run build --if-present
|
|
34
|
+
|
|
35
|
+
- name: Dist package
|
|
36
|
+
run: npm run dist --if-present
|
|
37
|
+
|
|
38
|
+
- name: Upload build artifact
|
|
39
|
+
uses: actions/upload-artifact@v4
|
|
40
|
+
with:
|
|
41
|
+
name: dist-package
|
|
42
|
+
path: dist/ # Guarda el directorio de distribución como un artefacto
|
|
43
|
+
|
|
44
|
+
publish:
|
|
45
|
+
runs-on: ubuntu-latest
|
|
46
|
+
needs: build # 👈 Depende del trabajo de construcción
|
|
47
|
+
environment: production # 👈 Asocia este trabajo con el ambiente 'production'
|
|
48
|
+
|
|
49
|
+
steps:
|
|
50
|
+
- name: Checkout repository
|
|
51
|
+
uses: actions/checkout@v4
|
|
52
|
+
|
|
53
|
+
- name: Download build artifact
|
|
54
|
+
uses: actions/download-artifact@v4
|
|
55
|
+
with:
|
|
56
|
+
name: dist-package
|
|
57
|
+
path: dist/ # Descarga el artefacto en el directorio 'dist'
|
|
58
|
+
|
|
59
|
+
- name: Use Node.js 20.x for publishing
|
|
60
|
+
uses: actions/setup-node@v4
|
|
61
|
+
with:
|
|
62
|
+
node-version: 20.x
|
|
63
|
+
npm-version: '10.9.2'
|
|
64
|
+
registry-url: 'https://registry.npmjs.org'
|
|
65
|
+
|
|
66
|
+
- name: Publish package
|
|
67
|
+
working-directory: dist
|
|
68
|
+
run: npm publish --access public
|
|
69
|
+
env:
|
|
70
|
+
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|
|
71
|
+
|
|
72
|
+
notify:
|
|
73
|
+
runs-on: ubuntu-latest
|
|
74
|
+
needs: publish
|
|
75
|
+
environment: production
|
|
76
|
+
|
|
77
|
+
steps:
|
|
78
|
+
- name: Checkout repository
|
|
79
|
+
uses: actions/checkout@v4
|
|
80
|
+
|
|
81
|
+
- name: Get package version
|
|
82
|
+
id: get_version
|
|
83
|
+
run: echo "PACKAGE_VERSION=$(npm pkg get version | tr -d '\"')" >> $GITHUB_ENV
|
|
84
|
+
|
|
85
|
+
- name: Get commit message and author
|
|
86
|
+
id: get_commit_info
|
|
87
|
+
run: |
|
|
88
|
+
echo "COMMIT_MESSAGE=$(git log -1 --pretty=format:%s)" >> $GITHUB_ENV
|
|
89
|
+
echo "COMMIT_AUTHOR=$(git log -1 --pretty=format:%an)" >> $GITHUB_ENV
|
|
90
|
+
|
|
91
|
+
- name: Send Discord notification (Success)
|
|
92
|
+
if: success()
|
|
93
|
+
uses: tsickert/discord-webhook@v5.3.0
|
|
94
|
+
with:
|
|
95
|
+
webhook-url: ${{ secrets.DISCORD_WEBHOOK_URL }}
|
|
96
|
+
content: "✅ **Publicación Exitosa:** Nueva versión de la librería de componentes en npm.\n**Paquete:** [@soyfri/shared-library](https://www.npmjs.com/package/@soyfri/shared-library/v/${{ env.PACKAGE_VERSION }})\n**Versión:** `v${{ env.PACKAGE_VERSION }}`\n**Notas del commit:** ${{ env.COMMIT_MESSAGE }}\n**Autor:** ${{ env.COMMIT_AUTHOR }}"
|
|
97
|
+
username: "GitHub Actions"
|
|
98
|
+
avatar-url: "https://github.githubassets.com/images/modules/logos_page/GitHub-Mark.png"
|
|
99
|
+
|
|
100
|
+
- name: Send Discord notification (Failure)
|
|
101
|
+
if: failure()
|
|
102
|
+
uses: tsickert/discord-webhook@v5.3.0
|
|
103
|
+
with:
|
|
104
|
+
webhook-url: ${{ secrets.DISCORD_WEBHOOK_URL }}
|
|
105
|
+
content: "❌ **Publicación Fallida:** Falló la publicación de la librería de componentes en npm.\n**Commit:** ${{ env.COMMIT_MESSAGE }}\n**Autor:** ${{ env.COMMIT_AUTHOR }}"
|
|
106
|
+
username: "GitHub Actions"
|
|
107
|
+
avatar-url: "https://github.githubassets.com/images/modules/logos_page/GitHub-Mark.png"
|
package/.prettierrc
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { StorybookConfig } from '@storybook/react-vite';
|
|
2
|
+
|
|
3
|
+
const config: StorybookConfig = {
|
|
4
|
+
"stories": [
|
|
5
|
+
"../src/**/*.mdx",
|
|
6
|
+
"../src/**/*.stories.@(js|jsx|mjs|ts|tsx|mdx)"
|
|
7
|
+
],
|
|
8
|
+
"addons": [
|
|
9
|
+
"@storybook/addon-onboarding",
|
|
10
|
+
"@chromatic-com/storybook",
|
|
11
|
+
"@storybook/addon-vitest",
|
|
12
|
+
"@storybook/addon-docs"
|
|
13
|
+
],
|
|
14
|
+
"framework": {
|
|
15
|
+
"name": "@storybook/react-vite",
|
|
16
|
+
"options": {}
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
export default config;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { beforeAll } from 'vitest';
|
|
2
|
+
import { setProjectAnnotations } from '@storybook/react-vite';
|
|
3
|
+
import * as projectAnnotations from './preview';
|
|
4
|
+
|
|
5
|
+
// This is an important step to apply the right configuration when testing your stories.
|
|
6
|
+
// More info at: https://storybook.js.org/docs/api/portable-stories/portable-stories-vitest#setprojectannotations
|
|
7
|
+
const project = setProjectAnnotations([projectAnnotations]);
|
|
8
|
+
|
|
9
|
+
beforeAll(project.beforeAll);
|
package/Dockerfile
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# Use a specific Node.js version for the build environment.
|
|
2
|
+
FROM node:20-alpine AS builder
|
|
3
|
+
|
|
4
|
+
# Set the working directory in the container.
|
|
5
|
+
WORKDIR /usr/src/app
|
|
6
|
+
|
|
7
|
+
# Copy package.json and package-lock.json to leverage Docker's layer caching.
|
|
8
|
+
# This step is cached and only re-runs if package*.json files change.
|
|
9
|
+
COPY package*.json ./
|
|
10
|
+
|
|
11
|
+
# Install project dependencies.
|
|
12
|
+
RUN npm install
|
|
13
|
+
|
|
14
|
+
# Copy the rest of your application's source code.
|
|
15
|
+
COPY . .
|
|
16
|
+
|
|
17
|
+
# Run the build script to create the distribution files.
|
|
18
|
+
RUN npm run build --if-present
|
|
19
|
+
|
|
20
|
+
RUN npm run dist --if-present
|
|
21
|
+
|
|
22
|
+
# --- Final Stage: Create a lightweight image with only the build artifacts ---
|
|
23
|
+
# Use a minimal base image. 'scratch' is the smallest, 'alpine' is also a good choice.
|
|
24
|
+
FROM scratch
|
|
25
|
+
|
|
26
|
+
# Set the working directory to the root of your library.
|
|
27
|
+
WORKDIR /usr/src/app
|
|
28
|
+
|
|
29
|
+
# Copy the built files from the 'builder' stage.
|
|
30
|
+
COPY --from=builder /usr/src/app/dist ./dist
|
|
31
|
+
|
|
32
|
+
# The final image contains only the 'dist' directory.
|
|
33
|
+
# There is no need for EXPOSE or CMD as this is a component library, not a runnable application.
|
|
34
|
+
|
|
35
|
+
# You can add a LABEL to describe the image if needed.
|
|
36
|
+
LABEL maintainer="Your Name"
|
|
37
|
+
LABEL version="1.0"
|
package/build.js
ADDED
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { readFileSync, existsSync, mkdirSync, writeFileSync, copyFileSync } from 'fs';
|
|
2
|
+
import { join, basename } from 'path';
|
|
3
|
+
import { sync } from 'glob';
|
|
4
|
+
|
|
5
|
+
const projectRoot = process.cwd();
|
|
6
|
+
const srcComponentsDir = join(projectRoot, 'src', 'components');
|
|
7
|
+
const srcHooksDir = join(projectRoot, 'src', 'hooks');
|
|
8
|
+
const distDir = join(projectRoot, 'dist');
|
|
9
|
+
const distComponentsDir = join(distDir, 'components');
|
|
10
|
+
const distHooksDir = join(distDir, 'hooks');
|
|
11
|
+
const originalPackageJsonPath = join(projectRoot, 'package.json');
|
|
12
|
+
const distPackageJsonPath = join(distDir, 'package.json');
|
|
13
|
+
const readmePath = join(projectRoot, 'README.md');
|
|
14
|
+
|
|
15
|
+
// Leer el package.json original
|
|
16
|
+
const originalPackageJson = JSON.parse(readFileSync(originalPackageJsonPath, 'utf8'));
|
|
17
|
+
|
|
18
|
+
// Inicializar el nuevo objeto exports
|
|
19
|
+
let newExports = {
|
|
20
|
+
".": {
|
|
21
|
+
"import": "./index.js",
|
|
22
|
+
"require": "./index.cjs",
|
|
23
|
+
"types": "./index.d.ts"
|
|
24
|
+
},
|
|
25
|
+
"./package.json": "./package.json"
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
// Función para procesar directorios de forma condicional y crear entradas en exports
|
|
29
|
+
const processDirectories = (sourceDir, distDir, exportPrefix) => {
|
|
30
|
+
if (!existsSync(sourceDir)) {
|
|
31
|
+
console.log(`Directorio no encontrado: ${sourceDir}. Saltando.`);
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
if (!existsSync(distDir)) {
|
|
36
|
+
mkdirSync(distDir, { recursive: true });
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
const componentDirs = sync(`${sourceDir}/*/`);
|
|
40
|
+
|
|
41
|
+
console.log(`Buscando módulos en: ${sourceDir}`);
|
|
42
|
+
|
|
43
|
+
componentDirs.forEach(componentDirPath => {
|
|
44
|
+
const componentName = basename(componentDirPath);
|
|
45
|
+
|
|
46
|
+
// Verificar si el nombre de la carpeta tiene la inicial en mayúscula
|
|
47
|
+
if (!/^[A-Z]/.test(componentName)) {
|
|
48
|
+
console.log(` - Saltando '${componentName}' porque su carpeta no empieza con mayúscula.`);
|
|
49
|
+
return; // Saltar este componente
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
console.log(` - Módulo encontrado: ${componentName}`);
|
|
53
|
+
|
|
54
|
+
// Crear carpeta en dist
|
|
55
|
+
const distModuleFolder = join(distDir, componentName);
|
|
56
|
+
if (!existsSync(distModuleFolder)) {
|
|
57
|
+
mkdirSync(distModuleFolder, { recursive: true });
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
// Agregar entrada al objeto exports
|
|
61
|
+
const exportPath = `./${exportPrefix}/${componentName}`;
|
|
62
|
+
newExports[exportPath] = {
|
|
63
|
+
"import": `./${exportPrefix}/${componentName}/${componentName}.js`,
|
|
64
|
+
"require": `./${exportPrefix}/${componentName}/${componentName}.cjs`,
|
|
65
|
+
"types": `./${exportPrefix}/${componentName}/${componentName}.d.ts`
|
|
66
|
+
};
|
|
67
|
+
});
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
// Procesar componentes
|
|
71
|
+
processDirectories(srcComponentsDir, distComponentsDir, 'components');
|
|
72
|
+
|
|
73
|
+
// Procesar hooks
|
|
74
|
+
processDirectories(srcHooksDir, distHooksDir, 'hooks');
|
|
75
|
+
|
|
76
|
+
// Crear una copia del package.json original para dist
|
|
77
|
+
const distPackageJson = { ...originalPackageJson };
|
|
78
|
+
distPackageJson.exports = newExports;
|
|
79
|
+
|
|
80
|
+
// Eliminar propiedades innecesarias
|
|
81
|
+
delete distPackageJson.scripts;
|
|
82
|
+
delete distPackageJson.devDependencies;
|
|
83
|
+
delete distPackageJson.private;
|
|
84
|
+
|
|
85
|
+
// Asegurarse de que el directorio 'dist' exista
|
|
86
|
+
if (!existsSync(distDir)) {
|
|
87
|
+
mkdirSync(distDir, { recursive: true });
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
// Copiar README.md a la carpeta dist
|
|
91
|
+
if (existsSync(readmePath)) {
|
|
92
|
+
copyFileSync(readmePath, join(distDir, 'README.md'));
|
|
93
|
+
console.log('Copiando README.md a la carpeta dist.');
|
|
94
|
+
} else {
|
|
95
|
+
console.log('No se encontró README.md en la raíz del proyecto. Saltando.');
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
// Escribir el nuevo package.json en dist/
|
|
99
|
+
writeFileSync(distPackageJsonPath, JSON.stringify(distPackageJson, null, 2), 'utf8');
|
|
100
|
+
|
|
101
|
+
console.log(`\n'package.json' generado exitosamente en: ${distPackageJsonPath}`);
|
|
102
|
+
console.log('Contenido de la propiedad "exports":', JSON.stringify(newExports, null, 2));
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { promises as fs } from 'fs';
|
|
2
|
+
import { join } from 'path';
|
|
3
|
+
|
|
4
|
+
// Define the folders to be cleaned (sub-folders will be deleted)
|
|
5
|
+
const foldersToClean = ['components', 'hooks'];
|
|
6
|
+
const srcPath = join(process.cwd(), 'src');
|
|
7
|
+
|
|
8
|
+
const deleteLowercaseFolders = async () => {
|
|
9
|
+
console.log('Iniciando el proceso de eliminación de carpetas...');
|
|
10
|
+
|
|
11
|
+
for (const parentFolder of foldersToClean) {
|
|
12
|
+
const parentPath = join(srcPath, parentFolder);
|
|
13
|
+
|
|
14
|
+
if (!await fs.stat(parentPath).catch(() => false)) {
|
|
15
|
+
console.log(`Directorio padre no encontrado: ${parentPath}. Saltando.`);
|
|
16
|
+
continue;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
try {
|
|
20
|
+
// Leer el contenido del directorio padre y obtener información de los archivos
|
|
21
|
+
const entries = await fs.readdir(parentPath, { withFileTypes: true });
|
|
22
|
+
|
|
23
|
+
for (const entry of entries) {
|
|
24
|
+
// Check if the entry is a directory and its name starts with a lowercase letter.
|
|
25
|
+
if (entry.isDirectory() && /^[a-z]/.test(entry.name)) {
|
|
26
|
+
const folderPath = join(parentPath, entry.name);
|
|
27
|
+
await fs.rm(folderPath, { recursive: true, force: true });
|
|
28
|
+
console.log(`- Carpeta eliminada: ${folderPath}`);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
} catch (error) {
|
|
32
|
+
console.error(`Error al procesar el directorio ${parentPath}:`, error);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
console.log('Proceso de limpieza completado.');
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
// Execute the main function
|
|
40
|
+
deleteLowercaseFolders();
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
6
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
7
|
+
var __spreadValues = (a, b) => {
|
|
8
|
+
for (var prop in b || (b = {}))
|
|
9
|
+
if (__hasOwnProp.call(b, prop))
|
|
10
|
+
__defNormalProp(a, prop, b[prop]);
|
|
11
|
+
if (__getOwnPropSymbols)
|
|
12
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
13
|
+
if (__propIsEnum.call(b, prop))
|
|
14
|
+
__defNormalProp(a, prop, b[prop]);
|
|
15
|
+
}
|
|
16
|
+
return a;
|
|
17
|
+
};
|
|
18
|
+
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
|
|
19
|
+
const jsxRuntime = require("react/jsx-runtime");
|
|
20
|
+
const React = require("react");
|
|
21
|
+
const material = require("@mui/material");
|
|
22
|
+
const MoreVertIcon = require("@mui/icons-material/MoreVert");
|
|
23
|
+
function ActionMenu({
|
|
24
|
+
items,
|
|
25
|
+
trigger,
|
|
26
|
+
triggerTooltip = "Acciones",
|
|
27
|
+
anchorOrigin = { vertical: "bottom", horizontal: "right" },
|
|
28
|
+
transformOrigin = { vertical: "top", horizontal: "right" },
|
|
29
|
+
menuSx,
|
|
30
|
+
disabled = false,
|
|
31
|
+
className
|
|
32
|
+
}) {
|
|
33
|
+
const [anchorEl, setAnchorEl] = React.useState(null);
|
|
34
|
+
const open = Boolean(anchorEl);
|
|
35
|
+
const handleOpen = (event) => {
|
|
36
|
+
if (disabled) return;
|
|
37
|
+
event.stopPropagation();
|
|
38
|
+
setAnchorEl(event.currentTarget);
|
|
39
|
+
};
|
|
40
|
+
const handleClose = () => setAnchorEl(null);
|
|
41
|
+
const handleItemClick = (event, item) => {
|
|
42
|
+
var _a;
|
|
43
|
+
event.stopPropagation();
|
|
44
|
+
(_a = item.onClick) == null ? void 0 : _a.call(item, event);
|
|
45
|
+
handleClose();
|
|
46
|
+
};
|
|
47
|
+
const triggerElement = trigger ? React.isValidElement(trigger) ? React.cloneElement(trigger, {
|
|
48
|
+
onClick: handleOpen,
|
|
49
|
+
disabled
|
|
50
|
+
}) : /* @__PURE__ */ jsxRuntime.jsx("span", { onClick: handleOpen, children: trigger }) : /* @__PURE__ */ jsxRuntime.jsx(material.Tooltip, { title: triggerTooltip, arrow: true, children: /* @__PURE__ */ jsxRuntime.jsx("span", { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
51
|
+
material.IconButton,
|
|
52
|
+
{
|
|
53
|
+
size: "small",
|
|
54
|
+
onClick: handleOpen,
|
|
55
|
+
disabled,
|
|
56
|
+
"aria-label": triggerTooltip,
|
|
57
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(MoreVertIcon, { fontSize: "small" })
|
|
58
|
+
}
|
|
59
|
+
) }) });
|
|
60
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("span", { className, children: [
|
|
61
|
+
triggerElement,
|
|
62
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
63
|
+
material.Menu,
|
|
64
|
+
{
|
|
65
|
+
anchorEl,
|
|
66
|
+
open,
|
|
67
|
+
onClose: handleClose,
|
|
68
|
+
anchorOrigin,
|
|
69
|
+
transformOrigin,
|
|
70
|
+
slotProps: { paper: { sx: __spreadValues({ minWidth: 180 }, menuSx) } },
|
|
71
|
+
children: items.map((item, idx) => {
|
|
72
|
+
var _a;
|
|
73
|
+
const key = (_a = item.key) != null ? _a : `${String(item.label)}-${idx}`;
|
|
74
|
+
const node = /* @__PURE__ */ jsxRuntime.jsxs(
|
|
75
|
+
material.MenuItem,
|
|
76
|
+
{
|
|
77
|
+
disabled: item.disabled,
|
|
78
|
+
onClick: (event) => handleItemClick(event, item),
|
|
79
|
+
sx: (theme) => ({
|
|
80
|
+
color: item.danger ? theme.palette.error.main : "inherit",
|
|
81
|
+
"& .MuiListItemIcon-root": {
|
|
82
|
+
color: item.danger ? theme.palette.error.main : "inherit",
|
|
83
|
+
minWidth: 32
|
|
84
|
+
}
|
|
85
|
+
}),
|
|
86
|
+
children: [
|
|
87
|
+
item.icon && /* @__PURE__ */ jsxRuntime.jsx(material.ListItemIcon, { children: item.icon }),
|
|
88
|
+
/* @__PURE__ */ jsxRuntime.jsx(material.ListItemText, { primary: item.label })
|
|
89
|
+
]
|
|
90
|
+
},
|
|
91
|
+
key
|
|
92
|
+
);
|
|
93
|
+
if (item.dividerBefore && idx > 0) {
|
|
94
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(React.Fragment, { children: [
|
|
95
|
+
/* @__PURE__ */ jsxRuntime.jsx(material.Divider, {}),
|
|
96
|
+
node
|
|
97
|
+
] }, `${key}-frag`);
|
|
98
|
+
}
|
|
99
|
+
return node;
|
|
100
|
+
})
|
|
101
|
+
}
|
|
102
|
+
)
|
|
103
|
+
] });
|
|
104
|
+
}
|
|
105
|
+
exports.ActionMenu = ActionMenu;
|
|
106
|
+
exports.default = ActionMenu;
|
|
107
|
+
//# sourceMappingURL=ActionMenu.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ActionMenu.cjs","sources":["../../../src/components/ActionMenu/ActionMenu.tsx"],"sourcesContent":["import React, { useState, type ReactNode, type MouseEvent } from 'react';\nimport {\n IconButton,\n Menu,\n MenuItem,\n ListItemIcon,\n ListItemText,\n Divider,\n Tooltip,\n} from '@mui/material';\nimport MoreVertIcon from '@mui/icons-material/MoreVert';\nimport type { SxProps, Theme } from '@mui/material/styles';\n\nexport interface ActionMenuItem {\n /** Key única para React. Si no se provee, se usa el label. */\n key?: string;\n /** Texto del item. */\n label: ReactNode;\n /** Icono opcional a la izquierda. */\n icon?: ReactNode;\n /** Handler de click. Recibe el evento del MenuItem. */\n onClick?: (event: MouseEvent<HTMLLIElement>) => void;\n /** Deshabilita el item. */\n disabled?: boolean;\n /** Marca el item como destructivo (pinta color error). */\n danger?: boolean;\n /** Inserta un `<Divider />` ANTES de este item. */\n dividerBefore?: boolean;\n}\n\nexport interface ActionMenuProps {\n /** Lista de items del menú. */\n items: ActionMenuItem[];\n /**\n * Elemento trigger. Si no se provee, se renderiza un IconButton con icono\n * de tres puntos (MoreVertIcon) — el patrón típico de celda de tabla.\n */\n trigger?: ReactNode;\n /** Texto de tooltip sobre el trigger default. Default: \"Acciones\". */\n triggerTooltip?: string;\n /** Anchor origin del menu. Default: { vertical: 'bottom', horizontal: 'right' }. */\n anchorOrigin?: {\n vertical: 'top' | 'center' | 'bottom';\n horizontal: 'left' | 'center' | 'right';\n };\n /** Transform origin del menu. Default: { vertical: 'top', horizontal: 'right' }. */\n transformOrigin?: {\n vertical: 'top' | 'center' | 'bottom';\n horizontal: 'left' | 'center' | 'right';\n };\n /** sx del Menu (Paper interno). */\n menuSx?: SxProps<Theme>;\n /** Deshabilita el trigger entero. */\n disabled?: boolean;\n className?: string;\n}\n\n/**\n * Menú de acciones compacto, pensado para celdas de tabla y cabeceras.\n * Reemplaza los patrones `<Dropdown>` de react-bootstrap.\n *\n * ```tsx\n * <ActionMenu\n * items={[\n * { label: 'Editar', icon: <EditIcon />, onClick: handleEdit },\n * { label: 'Duplicar', icon: <CopyIcon />, onClick: handleDup },\n * { label: 'Eliminar', icon: <TrashIcon />, onClick: handleDel, danger: true, dividerBefore: true },\n * ]}\n * />\n * ```\n */\nexport function ActionMenu({\n items,\n trigger,\n triggerTooltip = 'Acciones',\n anchorOrigin = { vertical: 'bottom', horizontal: 'right' },\n transformOrigin = { vertical: 'top', horizontal: 'right' },\n menuSx,\n disabled = false,\n className,\n}: ActionMenuProps) {\n const [anchorEl, setAnchorEl] = useState<HTMLElement | null>(null);\n const open = Boolean(anchorEl);\n\n const handleOpen = (event: MouseEvent<HTMLElement>) => {\n if (disabled) return;\n event.stopPropagation();\n setAnchorEl(event.currentTarget);\n };\n\n const handleClose = () => setAnchorEl(null);\n\n const handleItemClick = (\n event: MouseEvent<HTMLLIElement>,\n item: ActionMenuItem,\n ) => {\n event.stopPropagation();\n item.onClick?.(event);\n handleClose();\n };\n\n const triggerElement = trigger ? (\n React.isValidElement(trigger) ? (\n React.cloneElement(trigger as React.ReactElement<any>, {\n onClick: handleOpen,\n disabled,\n })\n ) : (\n <span onClick={handleOpen}>{trigger}</span>\n )\n ) : (\n <Tooltip title={triggerTooltip} arrow>\n <span>\n <IconButton\n size=\"small\"\n onClick={handleOpen}\n disabled={disabled}\n aria-label={triggerTooltip}\n >\n <MoreVertIcon fontSize=\"small\" />\n </IconButton>\n </span>\n </Tooltip>\n );\n\n return (\n <span className={className}>\n {triggerElement}\n <Menu\n anchorEl={anchorEl}\n open={open}\n onClose={handleClose}\n anchorOrigin={anchorOrigin}\n transformOrigin={transformOrigin}\n slotProps={{ paper: { sx: { minWidth: 180, ...(menuSx as any) } } }}\n >\n {items.map((item, idx) => {\n const key = item.key ?? `${String(item.label)}-${idx}`;\n const node = (\n <MenuItem\n key={key}\n disabled={item.disabled}\n onClick={(event) => handleItemClick(event, item)}\n sx={(theme) => ({\n color: item.danger ? theme.palette.error.main : 'inherit',\n '& .MuiListItemIcon-root': {\n color: item.danger\n ? theme.palette.error.main\n : 'inherit',\n minWidth: 32,\n },\n })}\n >\n {item.icon && <ListItemIcon>{item.icon}</ListItemIcon>}\n <ListItemText primary={item.label} />\n </MenuItem>\n );\n\n if (item.dividerBefore && idx > 0) {\n return (\n <React.Fragment key={`${key}-frag`}>\n <Divider />\n {node}\n </React.Fragment>\n );\n }\n return node;\n })}\n </Menu>\n </span>\n );\n}\n\nexport default ActionMenu;\n"],"names":["useState","jsx","Tooltip","IconButton","jsxs","Menu","MenuItem","ListItemIcon","ListItemText","Divider"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAuEO,SAAS,WAAW;AAAA,EACzB;AAAA,EACA;AAAA,EACA,iBAAiB;AAAA,EACjB,eAAe,EAAE,UAAU,UAAU,YAAY,QAAA;AAAA,EACjD,kBAAkB,EAAE,UAAU,OAAO,YAAY,QAAA;AAAA,EACjD;AAAA,EACA,WAAW;AAAA,EACX;AACF,GAAoB;AAClB,QAAM,CAAC,UAAU,WAAW,IAAIA,MAAAA,SAA6B,IAAI;AACjE,QAAM,OAAO,QAAQ,QAAQ;AAE7B,QAAM,aAAa,CAAC,UAAmC;AACrD,QAAI,SAAU;AACd,UAAM,gBAAA;AACN,gBAAY,MAAM,aAAa;AAAA,EACjC;AAEA,QAAM,cAAc,MAAM,YAAY,IAAI;AAE1C,QAAM,kBAAkB,CACtB,OACA,SACG;;AACH,UAAM,gBAAA;AACN,eAAK,YAAL,8BAAe;AACf,gBAAA;AAAA,EACF;AAEA,QAAM,iBAAiB,UACrB,MAAM,eAAe,OAAO,IAC1B,MAAM,aAAa,SAAoC;AAAA,IACrD,SAAS;AAAA,IACT;AAAA,EAAA,CACD,IAEDC,2BAAAA,IAAC,QAAA,EAAK,SAAS,YAAa,UAAA,QAAA,CAAQ,IAGtCA,2BAAAA,IAACC,SAAAA,WAAQ,OAAO,gBAAgB,OAAK,MACnC,yCAAC,QAAA,EACC,UAAAD,2BAAAA;AAAAA,IAACE,SAAAA;AAAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,SAAS;AAAA,MACT;AAAA,MACA,cAAY;AAAA,MAEZ,UAAAF,2BAAAA,IAAC,cAAA,EAAa,UAAS,QAAA,CAAQ;AAAA,IAAA;AAAA,EAAA,GAEnC,EAAA,CACF;AAGF,SACEG,gCAAC,UAAK,WACH,UAAA;AAAA,IAAA;AAAA,IACDH,2BAAAA;AAAAA,MAACI,SAAAA;AAAAA,MAAA;AAAA,QACC;AAAA,QACA;AAAA,QACA,SAAS;AAAA,QACT;AAAA,QACA;AAAA,QACA,WAAW,EAAE,OAAO,EAAE,IAAI,iBAAE,UAAU,OAAS,UAAiB;AAAA,QAE/D,UAAA,MAAM,IAAI,CAAC,MAAM,QAAQ;;AACxB,gBAAM,OAAM,UAAK,QAAL,YAAY,GAAG,OAAO,KAAK,KAAK,CAAC,IAAI,GAAG;AACpD,gBAAM,OACJD,2BAAAA;AAAAA,YAACE,SAAAA;AAAAA,YAAA;AAAA,cAEC,UAAU,KAAK;AAAA,cACf,SAAS,CAAC,UAAU,gBAAgB,OAAO,IAAI;AAAA,cAC/C,IAAI,CAAC,WAAW;AAAA,gBACd,OAAO,KAAK,SAAS,MAAM,QAAQ,MAAM,OAAO;AAAA,gBAChD,2BAA2B;AAAA,kBACzB,OAAO,KAAK,SACR,MAAM,QAAQ,MAAM,OACpB;AAAA,kBACJ,UAAU;AAAA,gBAAA;AAAA,cACZ;AAAA,cAGD,UAAA;AAAA,gBAAA,KAAK,QAAQL,+BAACM,SAAAA,cAAA,EAAc,UAAA,KAAK,MAAK;AAAA,gBACvCN,2BAAAA,IAACO,SAAAA,cAAA,EAAa,SAAS,KAAK,MAAA,CAAO;AAAA,cAAA;AAAA,YAAA;AAAA,YAd9B;AAAA,UAAA;AAkBT,cAAI,KAAK,iBAAiB,MAAM,GAAG;AACjC,mBACEJ,gCAAC,MAAM,UAAN,EACC,UAAA;AAAA,cAAAH,2BAAAA,IAACQ,SAAAA,SAAA,EAAQ;AAAA,cACR;AAAA,YAAA,EAAA,GAFkB,GAAG,GAAG,OAG3B;AAAA,UAEJ;AACA,iBAAO;AAAA,QACT,CAAC;AAAA,MAAA;AAAA,IAAA;AAAA,EACH,GACF;AAEJ;;;"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { ReactNode, MouseEvent } from 'react';
|
|
2
|
+
import { SxProps, Theme } from '@mui/material/styles';
|
|
3
|
+
export interface ActionMenuItem {
|
|
4
|
+
/** Key única para React. Si no se provee, se usa el label. */
|
|
5
|
+
key?: string;
|
|
6
|
+
/** Texto del item. */
|
|
7
|
+
label: ReactNode;
|
|
8
|
+
/** Icono opcional a la izquierda. */
|
|
9
|
+
icon?: ReactNode;
|
|
10
|
+
/** Handler de click. Recibe el evento del MenuItem. */
|
|
11
|
+
onClick?: (event: MouseEvent<HTMLLIElement>) => void;
|
|
12
|
+
/** Deshabilita el item. */
|
|
13
|
+
disabled?: boolean;
|
|
14
|
+
/** Marca el item como destructivo (pinta color error). */
|
|
15
|
+
danger?: boolean;
|
|
16
|
+
/** Inserta un `<Divider />` ANTES de este item. */
|
|
17
|
+
dividerBefore?: boolean;
|
|
18
|
+
}
|
|
19
|
+
export interface ActionMenuProps {
|
|
20
|
+
/** Lista de items del menú. */
|
|
21
|
+
items: ActionMenuItem[];
|
|
22
|
+
/**
|
|
23
|
+
* Elemento trigger. Si no se provee, se renderiza un IconButton con icono
|
|
24
|
+
* de tres puntos (MoreVertIcon) — el patrón típico de celda de tabla.
|
|
25
|
+
*/
|
|
26
|
+
trigger?: ReactNode;
|
|
27
|
+
/** Texto de tooltip sobre el trigger default. Default: "Acciones". */
|
|
28
|
+
triggerTooltip?: string;
|
|
29
|
+
/** Anchor origin del menu. Default: { vertical: 'bottom', horizontal: 'right' }. */
|
|
30
|
+
anchorOrigin?: {
|
|
31
|
+
vertical: 'top' | 'center' | 'bottom';
|
|
32
|
+
horizontal: 'left' | 'center' | 'right';
|
|
33
|
+
};
|
|
34
|
+
/** Transform origin del menu. Default: { vertical: 'top', horizontal: 'right' }. */
|
|
35
|
+
transformOrigin?: {
|
|
36
|
+
vertical: 'top' | 'center' | 'bottom';
|
|
37
|
+
horizontal: 'left' | 'center' | 'right';
|
|
38
|
+
};
|
|
39
|
+
/** sx del Menu (Paper interno). */
|
|
40
|
+
menuSx?: SxProps<Theme>;
|
|
41
|
+
/** Deshabilita el trigger entero. */
|
|
42
|
+
disabled?: boolean;
|
|
43
|
+
className?: string;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Menú de acciones compacto, pensado para celdas de tabla y cabeceras.
|
|
47
|
+
* Reemplaza los patrones `<Dropdown>` de react-bootstrap.
|
|
48
|
+
*
|
|
49
|
+
* ```tsx
|
|
50
|
+
* <ActionMenu
|
|
51
|
+
* items={[
|
|
52
|
+
* { label: 'Editar', icon: <EditIcon />, onClick: handleEdit },
|
|
53
|
+
* { label: 'Duplicar', icon: <CopyIcon />, onClick: handleDup },
|
|
54
|
+
* { label: 'Eliminar', icon: <TrashIcon />, onClick: handleDel, danger: true, dividerBefore: true },
|
|
55
|
+
* ]}
|
|
56
|
+
* />
|
|
57
|
+
* ```
|
|
58
|
+
*/
|
|
59
|
+
export declare function ActionMenu({ items, trigger, triggerTooltip, anchorOrigin, transformOrigin, menuSx, disabled, className, }: ActionMenuProps): import("react/jsx-runtime").JSX.Element;
|
|
60
|
+
export default ActionMenu;
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
3
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
4
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
5
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
6
|
+
var __spreadValues = (a, b) => {
|
|
7
|
+
for (var prop in b || (b = {}))
|
|
8
|
+
if (__hasOwnProp.call(b, prop))
|
|
9
|
+
__defNormalProp(a, prop, b[prop]);
|
|
10
|
+
if (__getOwnPropSymbols)
|
|
11
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
12
|
+
if (__propIsEnum.call(b, prop))
|
|
13
|
+
__defNormalProp(a, prop, b[prop]);
|
|
14
|
+
}
|
|
15
|
+
return a;
|
|
16
|
+
};
|
|
17
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
18
|
+
import React__default, { useState } from "react";
|
|
19
|
+
import { Tooltip, IconButton, Menu, MenuItem, ListItemIcon, ListItemText, Divider } from "@mui/material";
|
|
20
|
+
import MoreVertIcon from "@mui/icons-material/MoreVert";
|
|
21
|
+
function ActionMenu({
|
|
22
|
+
items,
|
|
23
|
+
trigger,
|
|
24
|
+
triggerTooltip = "Acciones",
|
|
25
|
+
anchorOrigin = { vertical: "bottom", horizontal: "right" },
|
|
26
|
+
transformOrigin = { vertical: "top", horizontal: "right" },
|
|
27
|
+
menuSx,
|
|
28
|
+
disabled = false,
|
|
29
|
+
className
|
|
30
|
+
}) {
|
|
31
|
+
const [anchorEl, setAnchorEl] = useState(null);
|
|
32
|
+
const open = Boolean(anchorEl);
|
|
33
|
+
const handleOpen = (event) => {
|
|
34
|
+
if (disabled) return;
|
|
35
|
+
event.stopPropagation();
|
|
36
|
+
setAnchorEl(event.currentTarget);
|
|
37
|
+
};
|
|
38
|
+
const handleClose = () => setAnchorEl(null);
|
|
39
|
+
const handleItemClick = (event, item) => {
|
|
40
|
+
var _a;
|
|
41
|
+
event.stopPropagation();
|
|
42
|
+
(_a = item.onClick) == null ? void 0 : _a.call(item, event);
|
|
43
|
+
handleClose();
|
|
44
|
+
};
|
|
45
|
+
const triggerElement = trigger ? React__default.isValidElement(trigger) ? React__default.cloneElement(trigger, {
|
|
46
|
+
onClick: handleOpen,
|
|
47
|
+
disabled
|
|
48
|
+
}) : /* @__PURE__ */ jsx("span", { onClick: handleOpen, children: trigger }) : /* @__PURE__ */ jsx(Tooltip, { title: triggerTooltip, arrow: true, children: /* @__PURE__ */ jsx("span", { children: /* @__PURE__ */ jsx(
|
|
49
|
+
IconButton,
|
|
50
|
+
{
|
|
51
|
+
size: "small",
|
|
52
|
+
onClick: handleOpen,
|
|
53
|
+
disabled,
|
|
54
|
+
"aria-label": triggerTooltip,
|
|
55
|
+
children: /* @__PURE__ */ jsx(MoreVertIcon, { fontSize: "small" })
|
|
56
|
+
}
|
|
57
|
+
) }) });
|
|
58
|
+
return /* @__PURE__ */ jsxs("span", { className, children: [
|
|
59
|
+
triggerElement,
|
|
60
|
+
/* @__PURE__ */ jsx(
|
|
61
|
+
Menu,
|
|
62
|
+
{
|
|
63
|
+
anchorEl,
|
|
64
|
+
open,
|
|
65
|
+
onClose: handleClose,
|
|
66
|
+
anchorOrigin,
|
|
67
|
+
transformOrigin,
|
|
68
|
+
slotProps: { paper: { sx: __spreadValues({ minWidth: 180 }, menuSx) } },
|
|
69
|
+
children: items.map((item, idx) => {
|
|
70
|
+
var _a;
|
|
71
|
+
const key = (_a = item.key) != null ? _a : `${String(item.label)}-${idx}`;
|
|
72
|
+
const node = /* @__PURE__ */ jsxs(
|
|
73
|
+
MenuItem,
|
|
74
|
+
{
|
|
75
|
+
disabled: item.disabled,
|
|
76
|
+
onClick: (event) => handleItemClick(event, item),
|
|
77
|
+
sx: (theme) => ({
|
|
78
|
+
color: item.danger ? theme.palette.error.main : "inherit",
|
|
79
|
+
"& .MuiListItemIcon-root": {
|
|
80
|
+
color: item.danger ? theme.palette.error.main : "inherit",
|
|
81
|
+
minWidth: 32
|
|
82
|
+
}
|
|
83
|
+
}),
|
|
84
|
+
children: [
|
|
85
|
+
item.icon && /* @__PURE__ */ jsx(ListItemIcon, { children: item.icon }),
|
|
86
|
+
/* @__PURE__ */ jsx(ListItemText, { primary: item.label })
|
|
87
|
+
]
|
|
88
|
+
},
|
|
89
|
+
key
|
|
90
|
+
);
|
|
91
|
+
if (item.dividerBefore && idx > 0) {
|
|
92
|
+
return /* @__PURE__ */ jsxs(React__default.Fragment, { children: [
|
|
93
|
+
/* @__PURE__ */ jsx(Divider, {}),
|
|
94
|
+
node
|
|
95
|
+
] }, `${key}-frag`);
|
|
96
|
+
}
|
|
97
|
+
return node;
|
|
98
|
+
})
|
|
99
|
+
}
|
|
100
|
+
)
|
|
101
|
+
] });
|
|
102
|
+
}
|
|
103
|
+
export {
|
|
104
|
+
ActionMenu,
|
|
105
|
+
ActionMenu as default
|
|
106
|
+
};
|
|
107
|
+
//# sourceMappingURL=ActionMenu.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ActionMenu.js","sources":["../../../src/components/ActionMenu/ActionMenu.tsx"],"sourcesContent":["import React, { useState, type ReactNode, type MouseEvent } from 'react';\nimport {\n IconButton,\n Menu,\n MenuItem,\n ListItemIcon,\n ListItemText,\n Divider,\n Tooltip,\n} from '@mui/material';\nimport MoreVertIcon from '@mui/icons-material/MoreVert';\nimport type { SxProps, Theme } from '@mui/material/styles';\n\nexport interface ActionMenuItem {\n /** Key única para React. Si no se provee, se usa el label. */\n key?: string;\n /** Texto del item. */\n label: ReactNode;\n /** Icono opcional a la izquierda. */\n icon?: ReactNode;\n /** Handler de click. Recibe el evento del MenuItem. */\n onClick?: (event: MouseEvent<HTMLLIElement>) => void;\n /** Deshabilita el item. */\n disabled?: boolean;\n /** Marca el item como destructivo (pinta color error). */\n danger?: boolean;\n /** Inserta un `<Divider />` ANTES de este item. */\n dividerBefore?: boolean;\n}\n\nexport interface ActionMenuProps {\n /** Lista de items del menú. */\n items: ActionMenuItem[];\n /**\n * Elemento trigger. Si no se provee, se renderiza un IconButton con icono\n * de tres puntos (MoreVertIcon) — el patrón típico de celda de tabla.\n */\n trigger?: ReactNode;\n /** Texto de tooltip sobre el trigger default. Default: \"Acciones\". */\n triggerTooltip?: string;\n /** Anchor origin del menu. Default: { vertical: 'bottom', horizontal: 'right' }. */\n anchorOrigin?: {\n vertical: 'top' | 'center' | 'bottom';\n horizontal: 'left' | 'center' | 'right';\n };\n /** Transform origin del menu. Default: { vertical: 'top', horizontal: 'right' }. */\n transformOrigin?: {\n vertical: 'top' | 'center' | 'bottom';\n horizontal: 'left' | 'center' | 'right';\n };\n /** sx del Menu (Paper interno). */\n menuSx?: SxProps<Theme>;\n /** Deshabilita el trigger entero. */\n disabled?: boolean;\n className?: string;\n}\n\n/**\n * Menú de acciones compacto, pensado para celdas de tabla y cabeceras.\n * Reemplaza los patrones `<Dropdown>` de react-bootstrap.\n *\n * ```tsx\n * <ActionMenu\n * items={[\n * { label: 'Editar', icon: <EditIcon />, onClick: handleEdit },\n * { label: 'Duplicar', icon: <CopyIcon />, onClick: handleDup },\n * { label: 'Eliminar', icon: <TrashIcon />, onClick: handleDel, danger: true, dividerBefore: true },\n * ]}\n * />\n * ```\n */\nexport function ActionMenu({\n items,\n trigger,\n triggerTooltip = 'Acciones',\n anchorOrigin = { vertical: 'bottom', horizontal: 'right' },\n transformOrigin = { vertical: 'top', horizontal: 'right' },\n menuSx,\n disabled = false,\n className,\n}: ActionMenuProps) {\n const [anchorEl, setAnchorEl] = useState<HTMLElement | null>(null);\n const open = Boolean(anchorEl);\n\n const handleOpen = (event: MouseEvent<HTMLElement>) => {\n if (disabled) return;\n event.stopPropagation();\n setAnchorEl(event.currentTarget);\n };\n\n const handleClose = () => setAnchorEl(null);\n\n const handleItemClick = (\n event: MouseEvent<HTMLLIElement>,\n item: ActionMenuItem,\n ) => {\n event.stopPropagation();\n item.onClick?.(event);\n handleClose();\n };\n\n const triggerElement = trigger ? (\n React.isValidElement(trigger) ? (\n React.cloneElement(trigger as React.ReactElement<any>, {\n onClick: handleOpen,\n disabled,\n })\n ) : (\n <span onClick={handleOpen}>{trigger}</span>\n )\n ) : (\n <Tooltip title={triggerTooltip} arrow>\n <span>\n <IconButton\n size=\"small\"\n onClick={handleOpen}\n disabled={disabled}\n aria-label={triggerTooltip}\n >\n <MoreVertIcon fontSize=\"small\" />\n </IconButton>\n </span>\n </Tooltip>\n );\n\n return (\n <span className={className}>\n {triggerElement}\n <Menu\n anchorEl={anchorEl}\n open={open}\n onClose={handleClose}\n anchorOrigin={anchorOrigin}\n transformOrigin={transformOrigin}\n slotProps={{ paper: { sx: { minWidth: 180, ...(menuSx as any) } } }}\n >\n {items.map((item, idx) => {\n const key = item.key ?? `${String(item.label)}-${idx}`;\n const node = (\n <MenuItem\n key={key}\n disabled={item.disabled}\n onClick={(event) => handleItemClick(event, item)}\n sx={(theme) => ({\n color: item.danger ? theme.palette.error.main : 'inherit',\n '& .MuiListItemIcon-root': {\n color: item.danger\n ? theme.palette.error.main\n : 'inherit',\n minWidth: 32,\n },\n })}\n >\n {item.icon && <ListItemIcon>{item.icon}</ListItemIcon>}\n <ListItemText primary={item.label} />\n </MenuItem>\n );\n\n if (item.dividerBefore && idx > 0) {\n return (\n <React.Fragment key={`${key}-frag`}>\n <Divider />\n {node}\n </React.Fragment>\n );\n }\n return node;\n })}\n </Menu>\n </span>\n );\n}\n\nexport default ActionMenu;\n"],"names":["React"],"mappings":";;;;;;;;;;;;;;;;;;;;AAuEO,SAAS,WAAW;AAAA,EACzB;AAAA,EACA;AAAA,EACA,iBAAiB;AAAA,EACjB,eAAe,EAAE,UAAU,UAAU,YAAY,QAAA;AAAA,EACjD,kBAAkB,EAAE,UAAU,OAAO,YAAY,QAAA;AAAA,EACjD;AAAA,EACA,WAAW;AAAA,EACX;AACF,GAAoB;AAClB,QAAM,CAAC,UAAU,WAAW,IAAI,SAA6B,IAAI;AACjE,QAAM,OAAO,QAAQ,QAAQ;AAE7B,QAAM,aAAa,CAAC,UAAmC;AACrD,QAAI,SAAU;AACd,UAAM,gBAAA;AACN,gBAAY,MAAM,aAAa;AAAA,EACjC;AAEA,QAAM,cAAc,MAAM,YAAY,IAAI;AAE1C,QAAM,kBAAkB,CACtB,OACA,SACG;;AACH,UAAM,gBAAA;AACN,eAAK,YAAL,8BAAe;AACf,gBAAA;AAAA,EACF;AAEA,QAAM,iBAAiB,UACrBA,eAAM,eAAe,OAAO,IAC1BA,eAAM,aAAa,SAAoC;AAAA,IACrD,SAAS;AAAA,IACT;AAAA,EAAA,CACD,IAED,oBAAC,QAAA,EAAK,SAAS,YAAa,UAAA,QAAA,CAAQ,IAGtC,oBAAC,WAAQ,OAAO,gBAAgB,OAAK,MACnC,8BAAC,QAAA,EACC,UAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,SAAS;AAAA,MACT;AAAA,MACA,cAAY;AAAA,MAEZ,UAAA,oBAAC,cAAA,EAAa,UAAS,QAAA,CAAQ;AAAA,IAAA;AAAA,EAAA,GAEnC,EAAA,CACF;AAGF,SACE,qBAAC,UAAK,WACH,UAAA;AAAA,IAAA;AAAA,IACD;AAAA,MAAC;AAAA,MAAA;AAAA,QACC;AAAA,QACA;AAAA,QACA,SAAS;AAAA,QACT;AAAA,QACA;AAAA,QACA,WAAW,EAAE,OAAO,EAAE,IAAI,iBAAE,UAAU,OAAS,UAAiB;AAAA,QAE/D,UAAA,MAAM,IAAI,CAAC,MAAM,QAAQ;;AACxB,gBAAM,OAAM,UAAK,QAAL,YAAY,GAAG,OAAO,KAAK,KAAK,CAAC,IAAI,GAAG;AACpD,gBAAM,OACJ;AAAA,YAAC;AAAA,YAAA;AAAA,cAEC,UAAU,KAAK;AAAA,cACf,SAAS,CAAC,UAAU,gBAAgB,OAAO,IAAI;AAAA,cAC/C,IAAI,CAAC,WAAW;AAAA,gBACd,OAAO,KAAK,SAAS,MAAM,QAAQ,MAAM,OAAO;AAAA,gBAChD,2BAA2B;AAAA,kBACzB,OAAO,KAAK,SACR,MAAM,QAAQ,MAAM,OACpB;AAAA,kBACJ,UAAU;AAAA,gBAAA;AAAA,cACZ;AAAA,cAGD,UAAA;AAAA,gBAAA,KAAK,QAAQ,oBAAC,cAAA,EAAc,UAAA,KAAK,MAAK;AAAA,gBACvC,oBAAC,cAAA,EAAa,SAAS,KAAK,MAAA,CAAO;AAAA,cAAA;AAAA,YAAA;AAAA,YAd9B;AAAA,UAAA;AAkBT,cAAI,KAAK,iBAAiB,MAAM,GAAG;AACjC,mBACE,qBAACA,eAAM,UAAN,EACC,UAAA;AAAA,cAAA,oBAAC,SAAA,EAAQ;AAAA,cACR;AAAA,YAAA,EAAA,GAFkB,GAAG,GAAG,OAG3B;AAAA,UAEJ;AACA,iBAAO;AAAA,QACT,CAAC;AAAA,MAAA;AAAA,IAAA;AAAA,EACH,GACF;AAEJ;"}
|