@soyfri/shared-library 2.0.0-beta.4 → 2.0.0-beta.6
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/components → components}/Drawer/Drawer.cjs +14 -17
- package/components/Drawer/Drawer.cjs.map +1 -0
- package/{dist/components → components}/Drawer/Drawer.d.ts +8 -1
- package/{dist/components → components}/Drawer/Drawer.js +14 -17
- package/components/Drawer/Drawer.js.map +1 -0
- package/package.json +164 -43
- package/.dockerignore +0 -8
- package/.github/workflows/publish.yml +0 -107
- package/.prettierrc +0 -3
- package/.storybook/main.ts +0 -19
- package/.storybook/preview.ts +0 -14
- package/.storybook/vitest.setup.ts +0 -9
- package/Dockerfile +0 -37
- package/Readme.md +0 -243
- package/build.js +0 -102
- package/chromatic.config.json +0 -5
- package/cleanDirectories.js +0 -40
- package/dist/components/Drawer/Drawer.cjs.map +0 -1
- package/dist/components/Drawer/Drawer.js.map +0 -1
- package/dist/package.json +0 -197
- package/rollup.config.cjs +0 -87
- package/src/components/ActionMenu/ActionMenu.stories.tsx +0 -230
- package/src/components/ActionMenu/ActionMenu.tsx +0 -174
- package/src/components/ActionMenu/index.ts +0 -2
- package/src/components/AppBar/AppBar.stories.tsx +0 -272
- package/src/components/AppBar/AppBar.sx.ts +0 -32
- package/src/components/AppBar/AppBar.tsx +0 -123
- package/src/components/AppBar/AppBarBrand.tsx +0 -120
- package/src/components/AppBar/AppBarContext.ts +0 -25
- package/src/components/AppBar/AppBarMenuToggle.tsx +0 -90
- package/src/components/AppBar/AppBarUserMenu.tsx +0 -217
- package/src/components/AppBar/index.ts +0 -25
- package/src/components/Autocomplete/Autocomplete.definitions.ts +0 -477
- package/src/components/Autocomplete/Autocomplete.helpers.ts +0 -60
- package/src/components/Autocomplete/Autocomplete.stories.tsx +0 -748
- package/src/components/Autocomplete/Autocomplete.sx.ts +0 -30
- package/src/components/Autocomplete/Autocomplete.tsx +0 -361
- package/src/components/Autocomplete/Autocomplete.types.ts +0 -13
- package/src/components/Autocomplete/_parts/AutocompleteChips.tsx +0 -55
- package/src/components/Autocomplete/_parts/AutocompleteLoader.tsx +0 -17
- package/src/components/Autocomplete/_parts/AutocompleteOption.tsx +0 -31
- package/src/components/Autocomplete/index.ts +0 -12
- package/src/components/Avatar/Avatar.definitions.ts +0 -162
- package/src/components/Avatar/Avatar.stories.tsx +0 -258
- package/src/components/Avatar/Avatar.tsx +0 -206
- package/src/components/Avatar/index.ts +0 -1
- package/src/components/Button/Button.definition.ts +0 -97
- package/src/components/Button/Button.stories.tsx +0 -285
- package/src/components/Button/Button.tsx +0 -67
- package/src/components/Button/index.ts +0 -1
- package/src/components/Card/Card.definition.ts +0 -5
- package/src/components/Card/Card.stories.tsx +0 -221
- package/src/components/Card/Card.sx.ts +0 -104
- package/src/components/Card/Card.tsx +0 -200
- package/src/components/Card/index.ts +0 -9
- package/src/components/Chip/Chip.definitions.ts +0 -167
- package/src/components/Chip/Chip.stories.tsx +0 -265
- package/src/components/Chip/Chip.tsx +0 -61
- package/src/components/Chip/index.ts +0 -1
- package/src/components/Column/Column.tsx +0 -29
- package/src/components/Column/index.ts +0 -1
- package/src/components/DatePicker/DatePicker.definitions.ts +0 -228
- package/src/components/DatePicker/DatePicker.helpers.ts +0 -24
- package/src/components/DatePicker/DatePicker.stories.tsx +0 -309
- package/src/components/DatePicker/DatePicker.sx.ts +0 -33
- package/src/components/DatePicker/DatePicker.tsx +0 -189
- package/src/components/DatePicker/DatePicker.types.ts +0 -10
- package/src/components/DatePicker/index.ts +0 -9
- package/src/components/DateRangePicker/DateRangePicker.definitions.ts +0 -191
- package/src/components/DateRangePicker/DateRangePicker.stories.tsx +0 -252
- package/src/components/DateRangePicker/DateRangePicker.tsx +0 -56
- package/src/components/DateRangePicker/index.ts +0 -1
- package/src/components/DateTimePicker/DateTimePicker.definitions.ts +0 -256
- package/src/components/DateTimePicker/DateTimePicker.helpers.ts +0 -38
- package/src/components/DateTimePicker/DateTimePicker.stories.tsx +0 -418
- package/src/components/DateTimePicker/DateTimePicker.sx.ts +0 -30
- package/src/components/DateTimePicker/DateTimePicker.tsx +0 -225
- package/src/components/DateTimePicker/DateTimePicker.types.ts +0 -10
- package/src/components/DateTimePicker/index.ts +0 -9
- package/src/components/Drawer/Drawer.stories.tsx +0 -270
- package/src/components/Drawer/Drawer.sx.ts +0 -106
- package/src/components/Drawer/Drawer.tsx +0 -214
- package/src/components/Drawer/DrawerContext.ts +0 -26
- package/src/components/Drawer/DrawerItem.tsx +0 -110
- package/src/components/Drawer/index.ts +0 -10
- package/src/components/Flyout/Flyout.stories.tsx +0 -282
- package/src/components/Flyout/Flyout.tsx +0 -122
- package/src/components/Flyout/index.ts +0 -1
- package/src/components/Gallery/Gallery.definition.tsx +0 -37
- package/src/components/Gallery/Gallery.stories.tsx +0 -82
- package/src/components/Gallery/Gallery.tsx +0 -118
- package/src/components/Gallery/GalleryLightbox.tsx +0 -170
- package/src/components/Gallery/GalleryMain.tsx +0 -84
- package/src/components/Gallery/GalleryThumbnails.tsx +0 -106
- package/src/components/Gallery/index.ts +0 -1
- package/src/components/Icon/Icon.stories.tsx +0 -121
- package/src/components/Icon/Icon.tsx +0 -175
- package/src/components/Icon/index.ts +0 -2
- package/src/components/Input/Input.definitions.ts +0 -324
- package/src/components/Input/Input.helpers.ts +0 -49
- package/src/components/Input/Input.stories.tsx +0 -499
- package/src/components/Input/Input.sx.ts +0 -42
- package/src/components/Input/Input.tsx +0 -141
- package/src/components/Input/Input.types.ts +0 -10
- package/src/components/Input/index.ts +0 -9
- package/src/components/InputGroup/InputGroup.definitions.ts +0 -158
- package/src/components/InputGroup/InputGroup.stories.tsx +0 -267
- package/src/components/InputGroup/InputGroup.tsx +0 -179
- package/src/components/InputGroup/index.ts +0 -1
- package/src/components/MenuButton/MenuButton.stories.tsx +0 -197
- package/src/components/MenuButton/MenuButton.tsx +0 -100
- package/src/components/MenuButton/index.ts +0 -1
- package/src/components/Modal/Modal.stories.tsx +0 -721
- package/src/components/Modal/Modal.tsx +0 -355
- package/src/components/Modal/ModalBody.tsx +0 -16
- package/src/components/Modal/ModalFooter.tsx +0 -71
- package/src/components/Modal/ModalHeader.tsx +0 -18
- package/src/components/Modal/index.ts +0 -6
- package/src/components/PageLoader/PageLoader.stories.tsx +0 -217
- package/src/components/PageLoader/PageLoader.tsx +0 -96
- package/src/components/PageLoader/index.ts +0 -2
- package/src/components/ScrollTopButton/ScrollTopButton.stories.tsx +0 -158
- package/src/components/ScrollTopButton/ScrollTopButton.tsx +0 -135
- package/src/components/ScrollTopButton/index.ts +0 -8
- package/src/components/ScrollTopButton/scrollToTop.ts +0 -37
- package/src/components/Select/Select.definitions.ts +0 -602
- package/src/components/Select/Select.helpers.ts +0 -71
- package/src/components/Select/Select.stories.tsx +0 -687
- package/src/components/Select/Select.sx.ts +0 -14
- package/src/components/Select/Select.tsx +0 -429
- package/src/components/Select/Select.types.ts +0 -15
- package/src/components/Select/_parts/SelectMenuItem.tsx +0 -40
- package/src/components/Select/_parts/SelectSearchHeader.tsx +0 -51
- package/src/components/Select/_parts/SelectValue.tsx +0 -96
- package/src/components/Select/index.ts +0 -14
- package/src/components/Stat/Stat.stories.tsx +0 -85
- package/src/components/Stat/Stat.tsx +0 -117
- package/src/components/Stat/index.ts +0 -2
- package/src/components/StatusMessage/StatusMessage.stories.tsx +0 -130
- package/src/components/StatusMessage/StatusMessage.tsx +0 -162
- package/src/components/StatusMessage/index.ts +0 -2
- package/src/components/Stepper/Step.tsx +0 -21
- package/src/components/Stepper/Stepper.definition.ts +0 -75
- package/src/components/Stepper/Stepper.stories.tsx +0 -122
- package/src/components/Stepper/Stepper.tsx +0 -75
- package/src/components/Stepper/index.ts +0 -2
- package/src/components/Table/EmptyTable.png +0 -0
- package/src/components/Table/Table.definition.ts +0 -580
- package/src/components/Table/Table.stories.tsx +0 -853
- package/src/components/Table/Table.tsx +0 -495
- package/src/components/Table/data.ts +0 -134
- package/src/components/Table/exportsUtils.ts +0 -195
- package/src/components/Table/index.ts +0 -3
- package/src/components/Table/types.ts +0 -34
- package/src/components/Tabs/Tab.definition.ts +0 -53
- package/src/components/Tabs/Tab.tsx +0 -19
- package/src/components/Tabs/Tabs.stories.tsx +0 -118
- package/src/components/Tabs/Tabs.tsx +0 -99
- package/src/components/Tabs/_tabUtils.tsx +0 -4
- package/src/components/Tabs/index.ts +0 -2
- package/src/components/Timeline/Timeline.definition.ts +0 -43
- package/src/components/Timeline/Timeline.stories.tsx +0 -108
- package/src/components/Timeline/Timeline.tsx +0 -49
- package/src/components/Timeline/TimelineItem.tsx +0 -31
- package/src/components/Timeline/index.ts +0 -2
- package/src/components/Tooltip/Tooltip.stories.tsx +0 -129
- package/src/components/Tooltip/Tooltip.tsx +0 -58
- package/src/components/Tooltip/index.ts +0 -1
- package/src/components/_shared/formField.sx.ts +0 -118
- package/src/components/_shared/resolvePreset.ts +0 -35
- package/src/hooks/ClipBoard/ClipBoard.stories.tsx +0 -168
- package/src/hooks/ClipBoard/ClipBoard.tsx +0 -131
- package/src/hooks/ClipBoard/ClipboardUnifiedDemo.tsx +0 -111
- package/src/hooks/ClipBoard/index.ts +0 -1
- package/src/hooks/Wizard/Wizard.stories.tsx +0 -301
- package/src/hooks/Wizard/WizardContext.tsx +0 -166
- package/src/hooks/Wizard/index.ts +0 -6
- package/src/hooks/Wizard/useWizard.ts +0 -13
- package/src/index.ts +0 -17
- package/src/mui.ts +0 -54
- package/src/styles.css +0 -3
- package/src/theme/componentStyles.ts +0 -47
- package/src/theme/tokens.ts +0 -43
- package/tailwind.config.js +0 -10
- package/tsconfig.json +0 -48
- package/tsup.config.js +0 -41
- package/vite.config.js +0 -132
- package/vitest.config.ts +0 -35
- /package/{dist/Button-C17mExpd.cjs → Button-C17mExpd.cjs} +0 -0
- /package/{dist/Button-C17mExpd.cjs.map → Button-C17mExpd.cjs.map} +0 -0
- /package/{dist/Button-UkkP-bNw.js → Button-UkkP-bNw.js} +0 -0
- /package/{dist/Button-UkkP-bNw.js.map → Button-UkkP-bNw.js.map} +0 -0
- /package/{dist/README.md → README.md} +0 -0
- /package/{dist/components → components}/ActionMenu/ActionMenu.cjs +0 -0
- /package/{dist/components → components}/ActionMenu/ActionMenu.cjs.map +0 -0
- /package/{dist/components → components}/ActionMenu/ActionMenu.d.ts +0 -0
- /package/{dist/components → components}/ActionMenu/ActionMenu.js +0 -0
- /package/{dist/components → components}/ActionMenu/ActionMenu.js.map +0 -0
- /package/{dist/components → components}/ActionMenu/index.d.ts +0 -0
- /package/{dist/components → components}/ActionMenu.d.ts +0 -0
- /package/{dist/components → components}/AppBar/AppBar.cjs +0 -0
- /package/{dist/components → components}/AppBar/AppBar.cjs.map +0 -0
- /package/{dist/components → components}/AppBar/AppBar.d.ts +0 -0
- /package/{dist/components → components}/AppBar/AppBar.js +0 -0
- /package/{dist/components → components}/AppBar/AppBar.js.map +0 -0
- /package/{dist/components → components}/AppBar/AppBar.sx.d.ts +0 -0
- /package/{dist/components → components}/AppBar/AppBarBrand.d.ts +0 -0
- /package/{dist/components → components}/AppBar/AppBarContext.d.ts +0 -0
- /package/{dist/components → components}/AppBar/AppBarMenuToggle.d.ts +0 -0
- /package/{dist/components → components}/AppBar/AppBarUserMenu.d.ts +0 -0
- /package/{dist/components → components}/AppBar/index.d.ts +0 -0
- /package/{dist/components → components}/AppBar.d.ts +0 -0
- /package/{dist/components → components}/Autocomplete/Autocomplete.cjs +0 -0
- /package/{dist/components → components}/Autocomplete/Autocomplete.cjs.map +0 -0
- /package/{dist/components → components}/Autocomplete/Autocomplete.d.ts +0 -0
- /package/{dist/components → components}/Autocomplete/Autocomplete.definitions.d.ts +0 -0
- /package/{dist/components → components}/Autocomplete/Autocomplete.helpers.d.ts +0 -0
- /package/{dist/components → components}/Autocomplete/Autocomplete.js +0 -0
- /package/{dist/components → components}/Autocomplete/Autocomplete.js.map +0 -0
- /package/{dist/components → components}/Autocomplete/Autocomplete.sx.d.ts +0 -0
- /package/{dist/components → components}/Autocomplete/Autocomplete.types.d.ts +0 -0
- /package/{dist/components → components}/Autocomplete/_parts/AutocompleteChips.d.ts +0 -0
- /package/{dist/components → components}/Autocomplete/_parts/AutocompleteLoader.d.ts +0 -0
- /package/{dist/components → components}/Autocomplete/_parts/AutocompleteOption.d.ts +0 -0
- /package/{dist/components → components}/Autocomplete/index.d.ts +0 -0
- /package/{dist/components → components}/Autocomplete.d.ts +0 -0
- /package/{dist/components → components}/Avatar/Avatar.cjs +0 -0
- /package/{dist/components → components}/Avatar/Avatar.cjs.map +0 -0
- /package/{dist/components → components}/Avatar/Avatar.d.ts +0 -0
- /package/{dist/components → components}/Avatar/Avatar.definitions.d.ts +0 -0
- /package/{dist/components → components}/Avatar/Avatar.js +0 -0
- /package/{dist/components → components}/Avatar/Avatar.js.map +0 -0
- /package/{dist/components → components}/Avatar/index.d.ts +0 -0
- /package/{dist/components → components}/Avatar.d.ts +0 -0
- /package/{dist/components → components}/Button/Button.cjs +0 -0
- /package/{dist/components → components}/Button/Button.cjs.map +0 -0
- /package/{dist/components → components}/Button/Button.d.ts +0 -0
- /package/{dist/components → components}/Button/Button.definition.d.ts +0 -0
- /package/{dist/components → components}/Button/Button.js +0 -0
- /package/{dist/components → components}/Button/Button.js.map +0 -0
- /package/{dist/components → components}/Button/index.d.ts +0 -0
- /package/{dist/components → components}/Button.d.ts +0 -0
- /package/{dist/components → components}/Card/Card.cjs +0 -0
- /package/{dist/components → components}/Card/Card.cjs.map +0 -0
- /package/{dist/components → components}/Card/Card.d.ts +0 -0
- /package/{dist/components → components}/Card/Card.definition.d.ts +0 -0
- /package/{dist/components → components}/Card/Card.js +0 -0
- /package/{dist/components → components}/Card/Card.js.map +0 -0
- /package/{dist/components → components}/Card/Card.sx.d.ts +0 -0
- /package/{dist/components → components}/Card/index.d.ts +0 -0
- /package/{dist/components → components}/Card.d.ts +0 -0
- /package/{dist/components → components}/Chip/Chip.cjs +0 -0
- /package/{dist/components → components}/Chip/Chip.cjs.map +0 -0
- /package/{dist/components → components}/Chip/Chip.d.ts +0 -0
- /package/{dist/components → components}/Chip/Chip.definitions.d.ts +0 -0
- /package/{dist/components → components}/Chip/Chip.js +0 -0
- /package/{dist/components → components}/Chip/Chip.js.map +0 -0
- /package/{dist/components → components}/Chip/index.d.ts +0 -0
- /package/{dist/components → components}/Chip.d.ts +0 -0
- /package/{dist/components → components}/Column/Column.cjs +0 -0
- /package/{dist/components → components}/Column/Column.cjs.map +0 -0
- /package/{dist/components → components}/Column/Column.d.ts +0 -0
- /package/{dist/components → components}/Column/Column.js +0 -0
- /package/{dist/components → components}/Column/Column.js.map +0 -0
- /package/{dist/components → components}/Column/index.d.ts +0 -0
- /package/{dist/components → components}/Column.d.ts +0 -0
- /package/{dist/components → components}/DatePicker/DatePicker.cjs +0 -0
- /package/{dist/components → components}/DatePicker/DatePicker.cjs.map +0 -0
- /package/{dist/components → components}/DatePicker/DatePicker.d.ts +0 -0
- /package/{dist/components → components}/DatePicker/DatePicker.definitions.d.ts +0 -0
- /package/{dist/components → components}/DatePicker/DatePicker.helpers.d.ts +0 -0
- /package/{dist/components → components}/DatePicker/DatePicker.js +0 -0
- /package/{dist/components → components}/DatePicker/DatePicker.js.map +0 -0
- /package/{dist/components → components}/DatePicker/DatePicker.sx.d.ts +0 -0
- /package/{dist/components → components}/DatePicker/DatePicker.types.d.ts +0 -0
- /package/{dist/components → components}/DatePicker/index.d.ts +0 -0
- /package/{dist/components → components}/DatePicker.d.ts +0 -0
- /package/{dist/components → components}/DateRangePicker/DateRangePicker.cjs +0 -0
- /package/{dist/components → components}/DateRangePicker/DateRangePicker.cjs.map +0 -0
- /package/{dist/components → components}/DateRangePicker/DateRangePicker.d.ts +0 -0
- /package/{dist/components → components}/DateRangePicker/DateRangePicker.definitions.d.ts +0 -0
- /package/{dist/components → components}/DateRangePicker/DateRangePicker.js +0 -0
- /package/{dist/components → components}/DateRangePicker/DateRangePicker.js.map +0 -0
- /package/{dist/components → components}/DateRangePicker/index.d.ts +0 -0
- /package/{dist/components → components}/DateRangePicker.d.ts +0 -0
- /package/{dist/components → components}/DateTimePicker/DateTimePicker.cjs +0 -0
- /package/{dist/components → components}/DateTimePicker/DateTimePicker.cjs.map +0 -0
- /package/{dist/components → components}/DateTimePicker/DateTimePicker.d.ts +0 -0
- /package/{dist/components → components}/DateTimePicker/DateTimePicker.definitions.d.ts +0 -0
- /package/{dist/components → components}/DateTimePicker/DateTimePicker.helpers.d.ts +0 -0
- /package/{dist/components → components}/DateTimePicker/DateTimePicker.js +0 -0
- /package/{dist/components → components}/DateTimePicker/DateTimePicker.js.map +0 -0
- /package/{dist/components → components}/DateTimePicker/DateTimePicker.sx.d.ts +0 -0
- /package/{dist/components → components}/DateTimePicker/DateTimePicker.types.d.ts +0 -0
- /package/{dist/components → components}/DateTimePicker/index.d.ts +0 -0
- /package/{dist/components → components}/DateTimePicker.d.ts +0 -0
- /package/{dist/components → components}/Drawer/Drawer.sx.d.ts +0 -0
- /package/{dist/components → components}/Drawer/DrawerContext.d.ts +0 -0
- /package/{dist/components → components}/Drawer/DrawerItem.d.ts +0 -0
- /package/{dist/components → components}/Drawer/index.d.ts +0 -0
- /package/{dist/components → components}/Drawer.d.ts +0 -0
- /package/{dist/components → components}/Flyout/Flyout.cjs +0 -0
- /package/{dist/components → components}/Flyout/Flyout.cjs.map +0 -0
- /package/{dist/components → components}/Flyout/Flyout.d.ts +0 -0
- /package/{dist/components → components}/Flyout/Flyout.js +0 -0
- /package/{dist/components → components}/Flyout/Flyout.js.map +0 -0
- /package/{dist/components → components}/Flyout/index.d.ts +0 -0
- /package/{dist/components → components}/Flyout.d.ts +0 -0
- /package/{dist/components → components}/Gallery/Gallery.cjs +0 -0
- /package/{dist/components → components}/Gallery/Gallery.cjs.map +0 -0
- /package/{dist/components → components}/Gallery/Gallery.d.ts +0 -0
- /package/{dist/components → components}/Gallery/Gallery.definition.d.ts +0 -0
- /package/{dist/components → components}/Gallery/Gallery.js +0 -0
- /package/{dist/components → components}/Gallery/Gallery.js.map +0 -0
- /package/{dist/components → components}/Gallery/GalleryLightbox.d.ts +0 -0
- /package/{dist/components → components}/Gallery/GalleryMain.d.ts +0 -0
- /package/{dist/components → components}/Gallery/GalleryThumbnails.d.ts +0 -0
- /package/{dist/components → components}/Gallery/index.d.ts +0 -0
- /package/{dist/components → components}/Gallery.d.ts +0 -0
- /package/{dist/components → components}/Icon/Icon.cjs +0 -0
- /package/{dist/components → components}/Icon/Icon.cjs.map +0 -0
- /package/{dist/components → components}/Icon/Icon.d.ts +0 -0
- /package/{dist/components → components}/Icon/Icon.js +0 -0
- /package/{dist/components → components}/Icon/Icon.js.map +0 -0
- /package/{dist/components → components}/Icon/index.d.ts +0 -0
- /package/{dist/components → components}/Icon.d.ts +0 -0
- /package/{dist/components → components}/Input/Input.cjs +0 -0
- /package/{dist/components → components}/Input/Input.cjs.map +0 -0
- /package/{dist/components → components}/Input/Input.d.ts +0 -0
- /package/{dist/components → components}/Input/Input.definitions.d.ts +0 -0
- /package/{dist/components → components}/Input/Input.helpers.d.ts +0 -0
- /package/{dist/components → components}/Input/Input.js +0 -0
- /package/{dist/components → components}/Input/Input.js.map +0 -0
- /package/{dist/components → components}/Input/Input.sx.d.ts +0 -0
- /package/{dist/components → components}/Input/Input.types.d.ts +0 -0
- /package/{dist/components → components}/Input/index.d.ts +0 -0
- /package/{dist/components → components}/Input.d.ts +0 -0
- /package/{dist/components → components}/InputGroup/InputGroup.cjs +0 -0
- /package/{dist/components → components}/InputGroup/InputGroup.cjs.map +0 -0
- /package/{dist/components → components}/InputGroup/InputGroup.d.ts +0 -0
- /package/{dist/components → components}/InputGroup/InputGroup.definitions.d.ts +0 -0
- /package/{dist/components → components}/InputGroup/InputGroup.js +0 -0
- /package/{dist/components → components}/InputGroup/InputGroup.js.map +0 -0
- /package/{dist/components → components}/InputGroup/index.d.ts +0 -0
- /package/{dist/components → components}/InputGroup.d.ts +0 -0
- /package/{dist/components → components}/MenuButton/MenuButton.cjs +0 -0
- /package/{dist/components → components}/MenuButton/MenuButton.cjs.map +0 -0
- /package/{dist/components → components}/MenuButton/MenuButton.d.ts +0 -0
- /package/{dist/components → components}/MenuButton/MenuButton.js +0 -0
- /package/{dist/components → components}/MenuButton/MenuButton.js.map +0 -0
- /package/{dist/components → components}/MenuButton/index.d.ts +0 -0
- /package/{dist/components → components}/MenuButton.d.ts +0 -0
- /package/{dist/components → components}/Modal/Modal.cjs +0 -0
- /package/{dist/components → components}/Modal/Modal.cjs.map +0 -0
- /package/{dist/components → components}/Modal/Modal.d.ts +0 -0
- /package/{dist/components → components}/Modal/Modal.js +0 -0
- /package/{dist/components → components}/Modal/Modal.js.map +0 -0
- /package/{dist/components → components}/Modal/ModalBody.d.ts +0 -0
- /package/{dist/components → components}/Modal/ModalFooter.d.ts +0 -0
- /package/{dist/components → components}/Modal/ModalHeader.d.ts +0 -0
- /package/{dist/components → components}/Modal/index.d.ts +0 -0
- /package/{dist/components → components}/Modal.d.ts +0 -0
- /package/{dist/components → components}/PageLoader/PageLoader.cjs +0 -0
- /package/{dist/components → components}/PageLoader/PageLoader.cjs.map +0 -0
- /package/{dist/components → components}/PageLoader/PageLoader.d.ts +0 -0
- /package/{dist/components → components}/PageLoader/PageLoader.js +0 -0
- /package/{dist/components → components}/PageLoader/PageLoader.js.map +0 -0
- /package/{dist/components → components}/PageLoader/index.d.ts +0 -0
- /package/{dist/components → components}/PageLoader.d.ts +0 -0
- /package/{dist/components → components}/ScrollTopButton/ScrollTopButton.cjs +0 -0
- /package/{dist/components → components}/ScrollTopButton/ScrollTopButton.cjs.map +0 -0
- /package/{dist/components → components}/ScrollTopButton/ScrollTopButton.d.ts +0 -0
- /package/{dist/components → components}/ScrollTopButton/ScrollTopButton.js +0 -0
- /package/{dist/components → components}/ScrollTopButton/ScrollTopButton.js.map +0 -0
- /package/{dist/components → components}/ScrollTopButton/index.d.ts +0 -0
- /package/{dist/components → components}/ScrollTopButton/scrollToTop.d.ts +0 -0
- /package/{dist/components → components}/ScrollTopButton.d.ts +0 -0
- /package/{dist/components → components}/Select/Select.cjs +0 -0
- /package/{dist/components → components}/Select/Select.cjs.map +0 -0
- /package/{dist/components → components}/Select/Select.d.ts +0 -0
- /package/{dist/components → components}/Select/Select.definitions.d.ts +0 -0
- /package/{dist/components → components}/Select/Select.helpers.d.ts +0 -0
- /package/{dist/components → components}/Select/Select.js +0 -0
- /package/{dist/components → components}/Select/Select.js.map +0 -0
- /package/{dist/components → components}/Select/Select.sx.d.ts +0 -0
- /package/{dist/components → components}/Select/Select.types.d.ts +0 -0
- /package/{dist/components → components}/Select/_parts/SelectMenuItem.d.ts +0 -0
- /package/{dist/components → components}/Select/_parts/SelectSearchHeader.d.ts +0 -0
- /package/{dist/components → components}/Select/_parts/SelectValue.d.ts +0 -0
- /package/{dist/components → components}/Select/index.d.ts +0 -0
- /package/{dist/components → components}/Select.d.ts +0 -0
- /package/{dist/components → components}/Stat/Stat.cjs +0 -0
- /package/{dist/components → components}/Stat/Stat.cjs.map +0 -0
- /package/{dist/components → components}/Stat/Stat.d.ts +0 -0
- /package/{dist/components → components}/Stat/Stat.js +0 -0
- /package/{dist/components → components}/Stat/Stat.js.map +0 -0
- /package/{dist/components → components}/Stat/index.d.ts +0 -0
- /package/{dist/components → components}/Stat.d.ts +0 -0
- /package/{dist/components → components}/StatusMessage/StatusMessage.cjs +0 -0
- /package/{dist/components → components}/StatusMessage/StatusMessage.cjs.map +0 -0
- /package/{dist/components → components}/StatusMessage/StatusMessage.d.ts +0 -0
- /package/{dist/components → components}/StatusMessage/StatusMessage.js +0 -0
- /package/{dist/components → components}/StatusMessage/StatusMessage.js.map +0 -0
- /package/{dist/components → components}/StatusMessage/index.d.ts +0 -0
- /package/{dist/components → components}/StatusMessage.d.ts +0 -0
- /package/{dist/components → components}/Stepper/Step.d.ts +0 -0
- /package/{dist/components → components}/Stepper/Stepper.cjs +0 -0
- /package/{dist/components → components}/Stepper/Stepper.cjs.map +0 -0
- /package/{dist/components → components}/Stepper/Stepper.d.ts +0 -0
- /package/{dist/components → components}/Stepper/Stepper.definition.d.ts +0 -0
- /package/{dist/components → components}/Stepper/Stepper.js +0 -0
- /package/{dist/components → components}/Stepper/Stepper.js.map +0 -0
- /package/{dist/components → components}/Stepper/index.d.ts +0 -0
- /package/{dist/components → components}/Stepper.d.ts +0 -0
- /package/{dist/components → components}/Table/Table.cjs +0 -0
- /package/{dist/components → components}/Table/Table.cjs.map +0 -0
- /package/{dist/components → components}/Table/Table.d.ts +0 -0
- /package/{dist/components → components}/Table/Table.definition.d.ts +0 -0
- /package/{dist/components → components}/Table/Table.js +0 -0
- /package/{dist/components → components}/Table/Table.js.map +0 -0
- /package/{dist/components → components}/Table/data.d.ts +0 -0
- /package/{dist/components → components}/Table/exportsUtils.d.ts +0 -0
- /package/{dist/components → components}/Table/index.d.ts +0 -0
- /package/{dist/components → components}/Table/types.d.ts +0 -0
- /package/{dist/components → components}/Table.d.ts +0 -0
- /package/{dist/components → components}/Tabs/Tab.d.ts +0 -0
- /package/{dist/components → components}/Tabs/Tab.definition.d.ts +0 -0
- /package/{dist/components → components}/Tabs/Tabs.cjs +0 -0
- /package/{dist/components → components}/Tabs/Tabs.cjs.map +0 -0
- /package/{dist/components → components}/Tabs/Tabs.d.ts +0 -0
- /package/{dist/components → components}/Tabs/Tabs.js +0 -0
- /package/{dist/components → components}/Tabs/Tabs.js.map +0 -0
- /package/{dist/components → components}/Tabs/_tabUtils.d.ts +0 -0
- /package/{dist/components → components}/Tabs/index.d.ts +0 -0
- /package/{dist/components → components}/Tabs.d.ts +0 -0
- /package/{dist/components → components}/Timeline/Timeline.cjs +0 -0
- /package/{dist/components → components}/Timeline/Timeline.cjs.map +0 -0
- /package/{dist/components → components}/Timeline/Timeline.d.ts +0 -0
- /package/{dist/components → components}/Timeline/Timeline.definition.d.ts +0 -0
- /package/{dist/components → components}/Timeline/Timeline.js +0 -0
- /package/{dist/components → components}/Timeline/Timeline.js.map +0 -0
- /package/{dist/components → components}/Timeline/TimelineItem.d.ts +0 -0
- /package/{dist/components → components}/Timeline/index.d.ts +0 -0
- /package/{dist/components → components}/Timeline.d.ts +0 -0
- /package/{dist/components → components}/Tooltip/Tooltip.cjs +0 -0
- /package/{dist/components → components}/Tooltip/Tooltip.cjs.map +0 -0
- /package/{dist/components → components}/Tooltip/Tooltip.d.ts +0 -0
- /package/{dist/components → components}/Tooltip/Tooltip.js +0 -0
- /package/{dist/components → components}/Tooltip/Tooltip.js.map +0 -0
- /package/{dist/components → components}/Tooltip/index.d.ts +0 -0
- /package/{dist/components → components}/Tooltip.d.ts +0 -0
- /package/{dist/components → components}/_shared/formField.sx.d.ts +0 -0
- /package/{dist/components → components}/_shared/resolvePreset.d.ts +0 -0
- /package/{dist/formField.sx-CQ1mbk9M.cjs → formField.sx-CQ1mbk9M.cjs} +0 -0
- /package/{dist/formField.sx-CQ1mbk9M.cjs.map → formField.sx-CQ1mbk9M.cjs.map} +0 -0
- /package/{dist/formField.sx-DfVbMe0V.js → formField.sx-DfVbMe0V.js} +0 -0
- /package/{dist/formField.sx-DfVbMe0V.js.map → formField.sx-DfVbMe0V.js.map} +0 -0
- /package/{dist/hooks → hooks}/ClipBoard/ClipBoard.cjs +0 -0
- /package/{dist/hooks → hooks}/ClipBoard/ClipBoard.cjs.map +0 -0
- /package/{dist/hooks → hooks}/ClipBoard/ClipBoard.d.ts +0 -0
- /package/{dist/hooks → hooks}/ClipBoard/ClipBoard.js +0 -0
- /package/{dist/hooks → hooks}/ClipBoard/ClipBoard.js.map +0 -0
- /package/{dist/hooks → hooks}/ClipBoard/ClipboardUnifiedDemo.d.ts +0 -0
- /package/{dist/hooks → hooks}/ClipBoard/index.d.ts +0 -0
- /package/{dist/hooks → hooks}/ClipBoard.d.ts +0 -0
- /package/{dist/hooks → hooks}/Wizard/Wizard.cjs +0 -0
- /package/{dist/hooks → hooks}/Wizard/Wizard.cjs.map +0 -0
- /package/{dist/hooks → hooks}/Wizard/Wizard.js +0 -0
- /package/{dist/hooks → hooks}/Wizard/Wizard.js.map +0 -0
- /package/{dist/hooks → hooks}/Wizard/WizardContext.d.ts +0 -0
- /package/{dist/hooks → hooks}/Wizard/index.d.ts +0 -0
- /package/{dist/hooks → hooks}/Wizard/useWizard.d.ts +0 -0
- /package/{dist/hooks → hooks}/Wizard.d.ts +0 -0
- /package/{dist/index.cjs → index.cjs} +0 -0
- /package/{dist/index.cjs.map → index.cjs.map} +0 -0
- /package/{dist/index.d.ts → index.d.ts} +0 -0
- /package/{dist/index.js → index.js} +0 -0
- /package/{dist/index.js.map → index.js.map} +0 -0
- /package/{dist/mui.d.ts → mui.d.ts} +0 -0
- /package/{dist/resolvePreset-B-IB0ehH.js → resolvePreset-B-IB0ehH.js} +0 -0
- /package/{dist/resolvePreset-B-IB0ehH.js.map → resolvePreset-B-IB0ehH.js.map} +0 -0
- /package/{dist/resolvePreset-CT3kU-K2.cjs → resolvePreset-CT3kU-K2.cjs} +0 -0
- /package/{dist/resolvePreset-CT3kU-K2.cjs.map → resolvePreset-CT3kU-K2.cjs.map} +0 -0
- /package/{dist/styles.css → styles.css} +0 -0
- /package/{dist/theme → theme}/componentStyles.d.ts +0 -0
- /package/{dist/theme → theme}/tokens.d.ts +0 -0
- /package/{dist/useWizard-CWdIxZzX.cjs → useWizard-CWdIxZzX.cjs} +0 -0
- /package/{dist/useWizard-CWdIxZzX.cjs.map → useWizard-CWdIxZzX.cjs.map} +0 -0
- /package/{dist/useWizard-CWq--C3o.js → useWizard-CWq--C3o.js} +0 -0
- /package/{dist/useWizard-CWq--C3o.js.map → useWizard-CWq--C3o.js.map} +0 -0
package/Dockerfile
DELETED
|
@@ -1,37 +0,0 @@
|
|
|
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/Readme.md
DELETED
|
@@ -1,243 +0,0 @@
|
|
|
1
|
-
# @soyfri/shared-library
|
|
2
|
-
|
|
3
|
-
Una librería de componentes React reutilizables construida con Material-UI, TypeScript y Tailwind CSS, diseñada para proporcionar componentes UI consistentes y bien documentados.
|
|
4
|
-
|
|
5
|
-
## 📋 Tabla de Contenidos
|
|
6
|
-
|
|
7
|
-
- [Características](#características)
|
|
8
|
-
- [Instalación](#instalación)
|
|
9
|
-
- [Uso](#uso)
|
|
10
|
-
- [Componentes Disponibles](#componentes-disponibles)
|
|
11
|
-
- [Desarrollo](#desarrollo)
|
|
12
|
-
- [Scripts Disponibles](#scripts-disponibles)
|
|
13
|
-
- [Storybook](#storybook)
|
|
14
|
-
- [Testing](#testing)
|
|
15
|
-
- [Tecnologías](#tecnologías)
|
|
16
|
-
- [Estructura del Proyecto](#estructura-del-proyecto)
|
|
17
|
-
|
|
18
|
-
## ✨ Características
|
|
19
|
-
|
|
20
|
-
- 🎨 **Componentes tipados**: Todos los componentes están construidos con TypeScript para mayor seguridad de tipos
|
|
21
|
-
- 📚 **Documentación con Storybook**: Cada componente incluye historias interactivas y documentación
|
|
22
|
-
- 🎯 **Material-UI**: Basado en Material-UI para un diseño consistente y accesible
|
|
23
|
-
- 🌈 **Tailwind CSS**: Integración con Tailwind para estilos utilitarios
|
|
24
|
-
- 🧪 **Testing**: Configurado con Vitest y Playwright para testing de componentes
|
|
25
|
-
- 📦 **Build optimizado**: Configuración con Rollup para generar builds ESM y CommonJS
|
|
26
|
-
|
|
27
|
-
## 📦 Instalación
|
|
28
|
-
|
|
29
|
-
```bash
|
|
30
|
-
npm install @soyfri/shared-library
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
## 🚀 Uso
|
|
34
|
-
|
|
35
|
-
```tsx
|
|
36
|
-
import { Button, Table, Select } from '@soyfri/shared-library';
|
|
37
|
-
import '@soyfri/shared-library/dist/styles.css';
|
|
38
|
-
|
|
39
|
-
function App() {
|
|
40
|
-
return (
|
|
41
|
-
<div>
|
|
42
|
-
<Button variant="contained" color="primary">
|
|
43
|
-
Mi Botón
|
|
44
|
-
</Button>
|
|
45
|
-
</div>
|
|
46
|
-
);
|
|
47
|
-
}
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
## 🧩 Componentes Disponibles
|
|
51
|
-
|
|
52
|
-
### Button
|
|
53
|
-
Componente de botón personalizable basado en Material-UI con soporte para iconos, diferentes tamaños y estados.
|
|
54
|
-
|
|
55
|
-
**Características:**
|
|
56
|
-
- Variantes: `text`, `outlined`, `contained`
|
|
57
|
-
- Tamaños: `small`, `medium`, `large`
|
|
58
|
-
- Soporte para iconos de inicio y fin
|
|
59
|
-
- Estados de carga
|
|
60
|
-
- Completamente tipado
|
|
61
|
-
|
|
62
|
-
### Table
|
|
63
|
-
Componente de tabla flexible con paginación interna y externa, ordenamiento y renderizado personalizado de columnas.
|
|
64
|
-
|
|
65
|
-
**Características:**
|
|
66
|
-
- Paginación interna automática
|
|
67
|
-
- Paginación externa controlada
|
|
68
|
-
- Columnas personalizables con renderizado custom
|
|
69
|
-
- Soporte para componentes complejos en celdas
|
|
70
|
-
- Completamente tipado con generics
|
|
71
|
-
|
|
72
|
-
### Select
|
|
73
|
-
Componente select avanzado con soporte para selección múltiple, filtros, agrupación y renderizado personalizado.
|
|
74
|
-
|
|
75
|
-
**Características:**
|
|
76
|
-
- Selección simple y múltiple
|
|
77
|
-
- Filtrado de opciones
|
|
78
|
-
- Agrupación de opciones
|
|
79
|
-
- Renderizado personalizado con avatars
|
|
80
|
-
- Placeholder configurable
|
|
81
|
-
|
|
82
|
-
### Avatar
|
|
83
|
-
Componente para mostrar avatares de usuarios con soporte para imágenes y texto.
|
|
84
|
-
|
|
85
|
-
### Icon
|
|
86
|
-
Wrapper para iconos de Material-UI con propiedades consistentes.
|
|
87
|
-
|
|
88
|
-
### Stat
|
|
89
|
-
Componente para mostrar estadísticas con diferentes plantillas de visualización.
|
|
90
|
-
|
|
91
|
-
**Características:**
|
|
92
|
-
- Plantilla simple
|
|
93
|
-
- Plantilla con chip
|
|
94
|
-
- Plantilla con lista de chips
|
|
95
|
-
- Colores personalizables
|
|
96
|
-
|
|
97
|
-
### Column
|
|
98
|
-
Componente auxiliar para definir columnas en el componente Table.
|
|
99
|
-
|
|
100
|
-
## 🛠️ Desarrollo
|
|
101
|
-
|
|
102
|
-
### Prerrequisitos
|
|
103
|
-
|
|
104
|
-
- Node.js (versión 18 o superior)
|
|
105
|
-
- npm o yarn
|
|
106
|
-
|
|
107
|
-
### Configuración del entorno de desarrollo
|
|
108
|
-
|
|
109
|
-
1. Clona el repositorio:
|
|
110
|
-
```bash
|
|
111
|
-
git clone <repository-url>
|
|
112
|
-
cd shared-library
|
|
113
|
-
```
|
|
114
|
-
|
|
115
|
-
2. Instala las dependencias:
|
|
116
|
-
```bash
|
|
117
|
-
npm install
|
|
118
|
-
```
|
|
119
|
-
|
|
120
|
-
3. Inicia el entorno de desarrollo:
|
|
121
|
-
```bash
|
|
122
|
-
npm run dev
|
|
123
|
-
```
|
|
124
|
-
|
|
125
|
-
## 📜 Scripts Disponibles
|
|
126
|
-
|
|
127
|
-
- `npm run build` - Construye la librería para producción
|
|
128
|
-
- `npm run dev` - Inicia el modo de desarrollo con watch
|
|
129
|
-
- `npm run build:css` - Construye los estilos CSS
|
|
130
|
-
- `npm run watch:css` - Observa cambios en los estilos CSS
|
|
131
|
-
- `npm run clean` - Limpia la carpeta dist
|
|
132
|
-
- `npm run prepare` - Limpia y construye la librería
|
|
133
|
-
- `npm run storybook` - Inicia Storybook en modo desarrollo
|
|
134
|
-
- `npm run build-storybook` - Construye Storybook para producción
|
|
135
|
-
- `npm run dist` - Ejecuta el script de distribución personalizado
|
|
136
|
-
|
|
137
|
-
## 📚 Storybook
|
|
138
|
-
|
|
139
|
-
La librería incluye Storybook para documentación interactiva y desarrollo de componentes.
|
|
140
|
-
|
|
141
|
-
### Iniciar Storybook
|
|
142
|
-
|
|
143
|
-
```bash
|
|
144
|
-
npm run storybook
|
|
145
|
-
```
|
|
146
|
-
|
|
147
|
-
Esto abrirá Storybook en `http://localhost:6006` donde podrás:
|
|
148
|
-
|
|
149
|
-
- Ver todos los componentes disponibles
|
|
150
|
-
- Interactuar con las propiedades de cada componente
|
|
151
|
-
- Ver ejemplos de uso
|
|
152
|
-
- Acceder a la documentación detallada
|
|
153
|
-
|
|
154
|
-
### Construir Storybook
|
|
155
|
-
|
|
156
|
-
```bash
|
|
157
|
-
npm run build-storybook
|
|
158
|
-
```
|
|
159
|
-
|
|
160
|
-
## 🧪 Testing
|
|
161
|
-
|
|
162
|
-
La librería está configurada con Vitest y Playwright para testing de componentes.
|
|
163
|
-
|
|
164
|
-
### Configuración de Testing
|
|
165
|
-
|
|
166
|
-
- **Vitest**: Para unit tests y testing de componentes
|
|
167
|
-
- **Playwright**: Para testing de browser
|
|
168
|
-
- **Storybook Test Addon**: Para testing de historias de Storybook
|
|
169
|
-
|
|
170
|
-
## 🔧 Tecnologías
|
|
171
|
-
|
|
172
|
-
### Dependencias Principales
|
|
173
|
-
|
|
174
|
-
- **React 19.1.0**: Librería de UI
|
|
175
|
-
- **Material-UI 7.1.0**: Sistema de diseño y componentes
|
|
176
|
-
- **TypeScript 5.8.3**: Tipado estático
|
|
177
|
-
- **Tailwind CSS 4.1.7**: Framework de CSS utilitario
|
|
178
|
-
|
|
179
|
-
### Herramientas de Desarrollo
|
|
180
|
-
|
|
181
|
-
- **Storybook 9.0.8**: Documentación y desarrollo de componentes
|
|
182
|
-
- **Rollup**: Bundler para la construcción de la librería
|
|
183
|
-
- **Vitest**: Framework de testing
|
|
184
|
-
- **Playwright**: Testing de browser
|
|
185
|
-
- **Prettier**: Formateo de código
|
|
186
|
-
|
|
187
|
-
## 📁 Estructura del Proyecto
|
|
188
|
-
|
|
189
|
-
```
|
|
190
|
-
shared-library/
|
|
191
|
-
├── .storybook/ # Configuración de Storybook
|
|
192
|
-
├── src/
|
|
193
|
-
│ ├── components/ # Componentes de la librería
|
|
194
|
-
│ │ ├── Avatar/
|
|
195
|
-
│ │ ├── Button/
|
|
196
|
-
│ │ ├── Column/
|
|
197
|
-
│ │ ├── Icon/
|
|
198
|
-
│ │ ├── Select/
|
|
199
|
-
│ │ ├── Stat/
|
|
200
|
-
│ │ └── Table/
|
|
201
|
-
│ ├── index.ts # Punto de entrada principal
|
|
202
|
-
│ └── styles.css # Estilos globales
|
|
203
|
-
├── dist/ # Archivos construidos
|
|
204
|
-
├── package.json
|
|
205
|
-
├── tsconfig.json
|
|
206
|
-
├── tailwind.config.js
|
|
207
|
-
├── rollup.config.cjs
|
|
208
|
-
└── vitest.config.ts
|
|
209
|
-
```
|
|
210
|
-
|
|
211
|
-
### Estructura de Componentes
|
|
212
|
-
|
|
213
|
-
Cada componente sigue una estructura consistente:
|
|
214
|
-
|
|
215
|
-
```
|
|
216
|
-
ComponentName/
|
|
217
|
-
├── ComponentName.tsx # Implementación del componente
|
|
218
|
-
├── ComponentName.stories.tsx # Historias de Storybook
|
|
219
|
-
├── ComponentName.definition.ts # Definiciones de código (opcional)
|
|
220
|
-
├── index.ts # Exportaciones
|
|
221
|
-
└── types.ts # Tipos específicos (opcional)
|
|
222
|
-
```
|
|
223
|
-
|
|
224
|
-
## 🤝 Contribución
|
|
225
|
-
|
|
226
|
-
Para contribuir al proyecto:
|
|
227
|
-
|
|
228
|
-
1. Fork el repositorio
|
|
229
|
-
2. Crea una rama para tu feature (`git checkout -b feature/nueva-funcionalidad`)
|
|
230
|
-
3. Commit tus cambios (`git commit -am 'Agrega nueva funcionalidad'`)
|
|
231
|
-
4. Push a la rama (`git push origin feature/nueva-funcionalidad`)
|
|
232
|
-
5. Crea un Pull Request
|
|
233
|
-
|
|
234
|
-
## 📄 Licencia
|
|
235
|
-
|
|
236
|
-
ISC License
|
|
237
|
-
|
|
238
|
-
---
|
|
239
|
-
|
|
240
|
-
**Versión actual:** 1.0.1
|
|
241
|
-
|
|
242
|
-
Para más información y ejemplos detallados, consulta la documentación en Storybook ejecutando `npm run storybook`.
|
|
243
|
-
|
package/build.js
DELETED
|
@@ -1,102 +0,0 @@
|
|
|
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));
|
package/chromatic.config.json
DELETED
package/cleanDirectories.js
DELETED
|
@@ -1,40 +0,0 @@
|
|
|
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();
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Drawer.cjs","sources":["../../../src/components/Drawer/DrawerContext.ts","../../../src/components/Drawer/Drawer.sx.ts","../../../src/components/Drawer/Drawer.tsx","../../../src/components/Drawer/DrawerItem.tsx"],"sourcesContent":["import { createContext, useContext } from 'react';\n\n/**\n * Context interno del Drawer. Permite que los sub-componentes (DrawerItem,\n * DrawerSection, etc.) reaccionen al estado `collapsed` sin necesidad de\n * recibirlo por props explícitas.\n */\nexport interface DrawerContextValue {\n /** Si el drawer está en modo mini (solo iconos). */\n collapsed: boolean;\n /** Ancho actual del drawer (útil para sub-componentes que necesiten layout). */\n width: number;\n}\n\nexport const DrawerContext = createContext<DrawerContextValue | null>(null);\n\n/**\n * Hook para leer el estado del drawer desde cualquier sub-componente. Si se\n * llama fuera de un `<Drawer>`, devuelve valores por defecto (collapsed=false)\n * para que los items renderizados sueltos no exploten.\n */\nexport function useDrawerContext(): DrawerContextValue {\n const ctx = useContext(DrawerContext);\n if (ctx) return ctx;\n return { collapsed: false, width: 260 };\n}\n","import type { SxProps, Theme } from '@mui/material/styles';\n\nexport interface BuildDrawerSxArgs {\n /** Ancho actual del drawer (expanded o collapsed). */\n width: number;\n /** Duración de la transición de ancho en ms. */\n transitionDuration?: number;\n}\n\n/**\n * sx aplicado al root del MuiDrawer. Controla el ancho animado y el paper\n * interno. Los estilos visuales del paper (background, border) se dejan en\n * manos del theme / preset.\n */\nexport function buildDrawerSx({\n width,\n transitionDuration = 200,\n}: BuildDrawerSxArgs): SxProps<Theme> {\n return {\n width,\n flexShrink: 0,\n whiteSpace: 'nowrap',\n boxSizing: 'border-box',\n transition: (theme) =>\n theme.transitions.create('width', {\n easing: theme.transitions.easing.sharp,\n duration: transitionDuration,\n }),\n '& .MuiDrawer-paper': {\n width,\n boxSizing: 'border-box',\n overflowX: 'hidden',\n transition: (theme) =>\n theme.transitions.create('width', {\n easing: theme.transitions.easing.sharp,\n duration: transitionDuration,\n }),\n },\n };\n}\n\nexport interface BuildDrawerItemSxArgs {\n collapsed: boolean;\n active?: boolean;\n danger?: boolean;\n}\n\n/**\n * sx para un item del drawer. Centra el icono cuando está colapsado y\n * tiñe el fondo cuando el item está activo.\n */\nexport function buildDrawerItemSx({\n collapsed,\n active,\n danger,\n}: BuildDrawerItemSxArgs): SxProps<Theme> {\n return (theme) => ({\n minHeight: 44,\n px: collapsed ? 1 : 2,\n py: 1,\n mx: 1,\n my: 0.25,\n borderRadius: 1,\n display: 'flex',\n alignItems: 'center',\n justifyContent: collapsed ? 'center' : 'flex-start',\n gap: collapsed ? 0 : 1.5,\n cursor: 'pointer',\n color: danger\n ? theme.palette.error.main\n : active\n ? theme.palette.primary.main\n : theme.palette.text.primary,\n backgroundColor: active\n ? theme.palette.action.selected\n : 'transparent',\n transition: theme.transitions.create(\n ['background-color', 'color', 'padding'],\n { duration: 150 },\n ),\n '&:hover': {\n backgroundColor: danger\n ? theme.palette.error.light + '22'\n : theme.palette.action.hover,\n },\n '& .drawer-item__icon': {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n flexShrink: 0,\n minWidth: 24,\n },\n '& .drawer-item__label': {\n flex: 1,\n minWidth: 0,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n opacity: collapsed ? 0 : 1,\n width: collapsed ? 0 : 'auto',\n transition: theme.transitions.create(['opacity', 'width'], {\n duration: collapsed ? 100 : 200,\n }),\n },\n });\n}\n","import React, { useMemo, type ReactNode } from 'react';\nimport {\n Drawer as MuiDrawer,\n IconButton,\n Box,\n type DrawerProps as MuiDrawerProps,\n} from '@mui/material';\nimport {\n useTheme,\n type SxProps,\n type Theme,\n} from '@mui/material/styles';\nimport ChevronLeftIcon from '@mui/icons-material/ChevronLeft';\nimport ChevronRightIcon from '@mui/icons-material/ChevronRight';\n\nimport { DrawerContext } from './DrawerContext';\nimport { buildDrawerSx } from './Drawer.sx';\nimport { resolvePreset } from '../_shared/resolvePreset';\n\n// ── Tipos públicos ──────────────────────────────────────────────────────\nexport type DrawerVariant = 'permanent' | 'persistent' | 'temporary';\nexport type DrawerAnchor = 'left' | 'right' | 'top' | 'bottom';\n\nexport interface DrawerProps {\n /** Contenido del drawer (típicamente `<DrawerItem>`s). */\n children?: ReactNode;\n /**\n * Variante del drawer:\n * - `permanent` (default): siempre visible en desktop, soporta collapsed (mini).\n * - `persistent`: se oculta/muestra, empuja el contenido principal.\n * - `temporary`: flotante con backdrop (típico móvil).\n */\n variant?: DrawerVariant;\n /** Lado del viewport. Default: `'left'`. */\n anchor?: DrawerAnchor;\n /**\n * Estado mini (solo iconos). Solo se aplica con `variant=\"permanent\"` o\n * `\"persistent\"`. Si no se provee, el drawer está siempre expandido.\n */\n collapsed?: boolean;\n /** Callback del botón de toggle (chevron). */\n onToggleCollapse?: () => void;\n /** Estado abierto/cerrado (aplica a `temporary` y `persistent`). */\n open?: boolean;\n /** Callback de cierre (backdrop o ESC en temporary). */\n onClose?: MuiDrawerProps['onClose'];\n /** Ancho en estado expandido. Default: 260. */\n expandedWidth?: number;\n /** Ancho en estado colapsado (solo iconos). Default: 72. */\n collapsedWidth?: number;\n /** Muestra el botón chevron para toggle collapsed. Default: true si `onToggleCollapse` está definido. */\n showCollapseButton?: boolean;\n /** Contenido del header (por encima de los items). Típicamente logo/brand. */\n header?: ReactNode;\n /** Contenido del footer (por debajo de los items). Típicamente user profile. */\n footer?: ReactNode;\n /**\n * Nombre del preset de estilo registrado en `theme.styles.Drawer`.\n * - `\"default\"` (o ausente) = estilo built-in del paquete.\n */\n preset?: string;\n /** sx aplicado al Drawer (root). Se mergea después del preset. */\n sx?: SxProps<Theme>;\n /** sx aplicado al Paper interno. */\n paperSx?: SxProps<Theme>;\n className?: string;\n}\n\nexport function Drawer({\n children,\n variant = 'permanent',\n anchor = 'left',\n collapsed = false,\n onToggleCollapse,\n open,\n onClose,\n expandedWidth = 260,\n collapsedWidth = 72,\n showCollapseButton,\n header,\n footer,\n preset,\n sx,\n paperSx,\n className,\n}: DrawerProps) {\n const theme = useTheme();\n const presetSx = resolvePreset('Drawer', preset, theme);\n\n // El mini-variant solo tiene sentido en permanent / persistent.\n const supportsCollapsed = variant !== 'temporary';\n const effectiveWidth =\n supportsCollapsed && collapsed ? collapsedWidth : expandedWidth;\n\n const contextValue = useMemo(\n () => ({\n collapsed: supportsCollapsed && collapsed,\n width: effectiveWidth,\n }),\n [supportsCollapsed, collapsed, effectiveWidth],\n );\n\n const rootSx: SxProps<Theme> = [\n buildDrawerSx({ width: effectiveWidth }),\n ...(presetSx ? [presetSx] : []),\n ...(Array.isArray(sx) ? sx : sx ? [sx] : []),\n ];\n\n const shouldShowToggle =\n showCollapseButton ?? (supportsCollapsed && !!onToggleCollapse);\n\n const openProp =\n variant === 'permanent'\n ? true\n : open !== undefined\n ? open\n : false;\n\n return (\n <DrawerContext.Provider value={contextValue}>\n <MuiDrawer\n variant={variant}\n anchor={anchor}\n open={openProp}\n onClose={onClose}\n className={className}\n sx={rootSx}\n PaperProps={{\n sx: paperSx,\n }}\n >\n {header && (\n <Box\n sx={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: contextValue.collapsed\n ? 'center'\n : 'space-between',\n px: contextValue.collapsed ? 1 : 2,\n py: 1.5,\n minHeight: 64,\n flexShrink: 0,\n }}\n >\n {!contextValue.collapsed && (\n <Box sx={{ flex: 1, minWidth: 0 }}>{header}</Box>\n )}\n {shouldShowToggle && (\n <IconButton\n size=\"small\"\n onClick={onToggleCollapse}\n aria-label={collapsed ? 'Expandir menú' : 'Colapsar menú'}\n >\n {collapsed ? <ChevronRightIcon /> : <ChevronLeftIcon />}\n </IconButton>\n )}\n </Box>\n )}\n\n {!header && shouldShowToggle && (\n <Box\n sx={{\n display: 'flex',\n justifyContent: contextValue.collapsed\n ? 'center'\n : 'flex-end',\n px: 1,\n py: 1,\n }}\n >\n <IconButton\n size=\"small\"\n onClick={onToggleCollapse}\n aria-label={collapsed ? 'Expandir menú' : 'Colapsar menú'}\n >\n {collapsed ? <ChevronRightIcon /> : <ChevronLeftIcon />}\n </IconButton>\n </Box>\n )}\n\n <Box\n component=\"nav\"\n sx={{\n flex: 1,\n overflowY: 'auto',\n overflowX: 'hidden',\n py: 1,\n }}\n >\n {children}\n </Box>\n\n {footer && (\n <Box\n sx={{\n flexShrink: 0,\n borderTop: (t) => `1px solid ${t.palette.divider}`,\n p: contextValue.collapsed ? 1 : 1.5,\n display: 'flex',\n justifyContent: contextValue.collapsed\n ? 'center'\n : 'flex-start',\n }}\n >\n {footer}\n </Box>\n )}\n </MuiDrawer>\n </DrawerContext.Provider>\n );\n}\n\nexport default Drawer;\n","import React, { type ReactNode, type MouseEvent } from 'react';\nimport { Box, Tooltip, Typography } from '@mui/material';\nimport type { SxProps, Theme } from '@mui/material/styles';\n\nimport { useDrawerContext } from './DrawerContext';\nimport { buildDrawerItemSx } from './Drawer.sx';\n\nexport interface DrawerItemProps {\n /** Icono del item. Se muestra siempre (expanded y collapsed). */\n icon?: ReactNode;\n /** Texto del item. Se oculta cuando el drawer está colapsado (muestra tooltip). */\n label: ReactNode;\n /** Handler de click. */\n onClick?: (event: MouseEvent<HTMLDivElement>) => void;\n /** Marca el item como activo (destaca color y fondo). */\n active?: boolean;\n /** Marca el item como \"destructivo\" (p.ej. cerrar sesión): color error. */\n danger?: boolean;\n /** Deshabilita click + bajo opacidad. */\n disabled?: boolean;\n /** Contenido adicional a la derecha del label (badge, count, chevron). */\n endAdornment?: ReactNode;\n /** sx override del consumer, se mergea al final. */\n sx?: SxProps<Theme>;\n className?: string;\n}\n\n/**\n * Item de un Drawer de shared-library. Lee el estado `collapsed` del\n * DrawerContext para adaptar layout y mostrar tooltip en modo mini.\n *\n * Uso típico:\n * ```tsx\n * <Drawer collapsed={collapsed} onToggleCollapse={toggle}>\n * <DrawerItem icon={<HomeIcon />} label=\"Inicio\" active />\n * <DrawerItem icon={<UserIcon />} label=\"Perfil\" />\n * </Drawer>\n * ```\n */\nexport function DrawerItem({\n icon,\n label,\n onClick,\n active = false,\n danger = false,\n disabled = false,\n endAdornment,\n sx,\n className,\n}: DrawerItemProps) {\n const { collapsed } = useDrawerContext();\n\n const baseSx = buildDrawerItemSx({ collapsed, active, danger });\n\n const mergedSx: SxProps<Theme> = [\n baseSx,\n disabled && { pointerEvents: 'none', opacity: 0.5 },\n ...(Array.isArray(sx) ? sx : sx ? [sx] : []),\n ].filter(Boolean) as SxProps<Theme>;\n\n const content = (\n <Box\n role=\"button\"\n tabIndex={disabled ? -1 : 0}\n aria-disabled={disabled}\n onClick={disabled ? undefined : onClick}\n onKeyDown={(event) => {\n if (disabled) return;\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n onClick?.(event as unknown as MouseEvent<HTMLDivElement>);\n }\n }}\n className={className}\n sx={mergedSx}\n >\n {icon !== undefined && (\n <Box className=\"drawer-item__icon\" component=\"span\">\n {icon}\n </Box>\n )}\n <Typography\n component=\"span\"\n variant=\"body2\"\n className=\"drawer-item__label\"\n sx={{ fontWeight: active ? 600 : 400 }}\n >\n {label}\n </Typography>\n {!collapsed && endAdornment && (\n <Box component=\"span\" sx={{ flexShrink: 0, ml: 'auto' }}>\n {endAdornment}\n </Box>\n )}\n </Box>\n );\n\n // Cuando está colapsado, envolvemos en tooltip para revelar el label al hover.\n if (collapsed && typeof label === 'string') {\n return (\n <Tooltip title={label} placement=\"right\" arrow>\n {content}\n </Tooltip>\n );\n }\n\n return content;\n}\n\nexport default DrawerItem;\n"],"names":["createContext","useContext","useTheme","resolvePreset","useMemo","jsx","jsxs","MuiDrawer","Box","IconButton","Typography","Tooltip"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Drawer.js","sources":["../../../src/components/Drawer/DrawerContext.ts","../../../src/components/Drawer/Drawer.sx.ts","../../../src/components/Drawer/Drawer.tsx","../../../src/components/Drawer/DrawerItem.tsx"],"sourcesContent":["import { createContext, useContext } from 'react';\n\n/**\n * Context interno del Drawer. Permite que los sub-componentes (DrawerItem,\n * DrawerSection, etc.) reaccionen al estado `collapsed` sin necesidad de\n * recibirlo por props explícitas.\n */\nexport interface DrawerContextValue {\n /** Si el drawer está en modo mini (solo iconos). */\n collapsed: boolean;\n /** Ancho actual del drawer (útil para sub-componentes que necesiten layout). */\n width: number;\n}\n\nexport const DrawerContext = createContext<DrawerContextValue | null>(null);\n\n/**\n * Hook para leer el estado del drawer desde cualquier sub-componente. Si se\n * llama fuera de un `<Drawer>`, devuelve valores por defecto (collapsed=false)\n * para que los items renderizados sueltos no exploten.\n */\nexport function useDrawerContext(): DrawerContextValue {\n const ctx = useContext(DrawerContext);\n if (ctx) return ctx;\n return { collapsed: false, width: 260 };\n}\n","import type { SxProps, Theme } from '@mui/material/styles';\n\nexport interface BuildDrawerSxArgs {\n /** Ancho actual del drawer (expanded o collapsed). */\n width: number;\n /** Duración de la transición de ancho en ms. */\n transitionDuration?: number;\n}\n\n/**\n * sx aplicado al root del MuiDrawer. Controla el ancho animado y el paper\n * interno. Los estilos visuales del paper (background, border) se dejan en\n * manos del theme / preset.\n */\nexport function buildDrawerSx({\n width,\n transitionDuration = 200,\n}: BuildDrawerSxArgs): SxProps<Theme> {\n return {\n width,\n flexShrink: 0,\n whiteSpace: 'nowrap',\n boxSizing: 'border-box',\n transition: (theme) =>\n theme.transitions.create('width', {\n easing: theme.transitions.easing.sharp,\n duration: transitionDuration,\n }),\n '& .MuiDrawer-paper': {\n width,\n boxSizing: 'border-box',\n overflowX: 'hidden',\n transition: (theme) =>\n theme.transitions.create('width', {\n easing: theme.transitions.easing.sharp,\n duration: transitionDuration,\n }),\n },\n };\n}\n\nexport interface BuildDrawerItemSxArgs {\n collapsed: boolean;\n active?: boolean;\n danger?: boolean;\n}\n\n/**\n * sx para un item del drawer. Centra el icono cuando está colapsado y\n * tiñe el fondo cuando el item está activo.\n */\nexport function buildDrawerItemSx({\n collapsed,\n active,\n danger,\n}: BuildDrawerItemSxArgs): SxProps<Theme> {\n return (theme) => ({\n minHeight: 44,\n px: collapsed ? 1 : 2,\n py: 1,\n mx: 1,\n my: 0.25,\n borderRadius: 1,\n display: 'flex',\n alignItems: 'center',\n justifyContent: collapsed ? 'center' : 'flex-start',\n gap: collapsed ? 0 : 1.5,\n cursor: 'pointer',\n color: danger\n ? theme.palette.error.main\n : active\n ? theme.palette.primary.main\n : theme.palette.text.primary,\n backgroundColor: active\n ? theme.palette.action.selected\n : 'transparent',\n transition: theme.transitions.create(\n ['background-color', 'color', 'padding'],\n { duration: 150 },\n ),\n '&:hover': {\n backgroundColor: danger\n ? theme.palette.error.light + '22'\n : theme.palette.action.hover,\n },\n '& .drawer-item__icon': {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n flexShrink: 0,\n minWidth: 24,\n },\n '& .drawer-item__label': {\n flex: 1,\n minWidth: 0,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n opacity: collapsed ? 0 : 1,\n width: collapsed ? 0 : 'auto',\n transition: theme.transitions.create(['opacity', 'width'], {\n duration: collapsed ? 100 : 200,\n }),\n },\n });\n}\n","import React, { useMemo, type ReactNode } from 'react';\nimport {\n Drawer as MuiDrawer,\n IconButton,\n Box,\n type DrawerProps as MuiDrawerProps,\n} from '@mui/material';\nimport {\n useTheme,\n type SxProps,\n type Theme,\n} from '@mui/material/styles';\nimport ChevronLeftIcon from '@mui/icons-material/ChevronLeft';\nimport ChevronRightIcon from '@mui/icons-material/ChevronRight';\n\nimport { DrawerContext } from './DrawerContext';\nimport { buildDrawerSx } from './Drawer.sx';\nimport { resolvePreset } from '../_shared/resolvePreset';\n\n// ── Tipos públicos ──────────────────────────────────────────────────────\nexport type DrawerVariant = 'permanent' | 'persistent' | 'temporary';\nexport type DrawerAnchor = 'left' | 'right' | 'top' | 'bottom';\n\nexport interface DrawerProps {\n /** Contenido del drawer (típicamente `<DrawerItem>`s). */\n children?: ReactNode;\n /**\n * Variante del drawer:\n * - `permanent` (default): siempre visible en desktop, soporta collapsed (mini).\n * - `persistent`: se oculta/muestra, empuja el contenido principal.\n * - `temporary`: flotante con backdrop (típico móvil).\n */\n variant?: DrawerVariant;\n /** Lado del viewport. Default: `'left'`. */\n anchor?: DrawerAnchor;\n /**\n * Estado mini (solo iconos). Solo se aplica con `variant=\"permanent\"` o\n * `\"persistent\"`. Si no se provee, el drawer está siempre expandido.\n */\n collapsed?: boolean;\n /** Callback del botón de toggle (chevron). */\n onToggleCollapse?: () => void;\n /** Estado abierto/cerrado (aplica a `temporary` y `persistent`). */\n open?: boolean;\n /** Callback de cierre (backdrop o ESC en temporary). */\n onClose?: MuiDrawerProps['onClose'];\n /** Ancho en estado expandido. Default: 260. */\n expandedWidth?: number;\n /** Ancho en estado colapsado (solo iconos). Default: 72. */\n collapsedWidth?: number;\n /** Muestra el botón chevron para toggle collapsed. Default: true si `onToggleCollapse` está definido. */\n showCollapseButton?: boolean;\n /** Contenido del header (por encima de los items). Típicamente logo/brand. */\n header?: ReactNode;\n /** Contenido del footer (por debajo de los items). Típicamente user profile. */\n footer?: ReactNode;\n /**\n * Nombre del preset de estilo registrado en `theme.styles.Drawer`.\n * - `\"default\"` (o ausente) = estilo built-in del paquete.\n */\n preset?: string;\n /** sx aplicado al Drawer (root). Se mergea después del preset. */\n sx?: SxProps<Theme>;\n /** sx aplicado al Paper interno. */\n paperSx?: SxProps<Theme>;\n className?: string;\n}\n\nexport function Drawer({\n children,\n variant = 'permanent',\n anchor = 'left',\n collapsed = false,\n onToggleCollapse,\n open,\n onClose,\n expandedWidth = 260,\n collapsedWidth = 72,\n showCollapseButton,\n header,\n footer,\n preset,\n sx,\n paperSx,\n className,\n}: DrawerProps) {\n const theme = useTheme();\n const presetSx = resolvePreset('Drawer', preset, theme);\n\n // El mini-variant solo tiene sentido en permanent / persistent.\n const supportsCollapsed = variant !== 'temporary';\n const effectiveWidth =\n supportsCollapsed && collapsed ? collapsedWidth : expandedWidth;\n\n const contextValue = useMemo(\n () => ({\n collapsed: supportsCollapsed && collapsed,\n width: effectiveWidth,\n }),\n [supportsCollapsed, collapsed, effectiveWidth],\n );\n\n const rootSx: SxProps<Theme> = [\n buildDrawerSx({ width: effectiveWidth }),\n ...(presetSx ? [presetSx] : []),\n ...(Array.isArray(sx) ? sx : sx ? [sx] : []),\n ];\n\n const shouldShowToggle =\n showCollapseButton ?? (supportsCollapsed && !!onToggleCollapse);\n\n const openProp =\n variant === 'permanent'\n ? true\n : open !== undefined\n ? open\n : false;\n\n return (\n <DrawerContext.Provider value={contextValue}>\n <MuiDrawer\n variant={variant}\n anchor={anchor}\n open={openProp}\n onClose={onClose}\n className={className}\n sx={rootSx}\n PaperProps={{\n sx: paperSx,\n }}\n >\n {header && (\n <Box\n sx={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: contextValue.collapsed\n ? 'center'\n : 'space-between',\n px: contextValue.collapsed ? 1 : 2,\n py: 1.5,\n minHeight: 64,\n flexShrink: 0,\n }}\n >\n {!contextValue.collapsed && (\n <Box sx={{ flex: 1, minWidth: 0 }}>{header}</Box>\n )}\n {shouldShowToggle && (\n <IconButton\n size=\"small\"\n onClick={onToggleCollapse}\n aria-label={collapsed ? 'Expandir menú' : 'Colapsar menú'}\n >\n {collapsed ? <ChevronRightIcon /> : <ChevronLeftIcon />}\n </IconButton>\n )}\n </Box>\n )}\n\n {!header && shouldShowToggle && (\n <Box\n sx={{\n display: 'flex',\n justifyContent: contextValue.collapsed\n ? 'center'\n : 'flex-end',\n px: 1,\n py: 1,\n }}\n >\n <IconButton\n size=\"small\"\n onClick={onToggleCollapse}\n aria-label={collapsed ? 'Expandir menú' : 'Colapsar menú'}\n >\n {collapsed ? <ChevronRightIcon /> : <ChevronLeftIcon />}\n </IconButton>\n </Box>\n )}\n\n <Box\n component=\"nav\"\n sx={{\n flex: 1,\n overflowY: 'auto',\n overflowX: 'hidden',\n py: 1,\n }}\n >\n {children}\n </Box>\n\n {footer && (\n <Box\n sx={{\n flexShrink: 0,\n borderTop: (t) => `1px solid ${t.palette.divider}`,\n p: contextValue.collapsed ? 1 : 1.5,\n display: 'flex',\n justifyContent: contextValue.collapsed\n ? 'center'\n : 'flex-start',\n }}\n >\n {footer}\n </Box>\n )}\n </MuiDrawer>\n </DrawerContext.Provider>\n );\n}\n\nexport default Drawer;\n","import React, { type ReactNode, type MouseEvent } from 'react';\nimport { Box, Tooltip, Typography } from '@mui/material';\nimport type { SxProps, Theme } from '@mui/material/styles';\n\nimport { useDrawerContext } from './DrawerContext';\nimport { buildDrawerItemSx } from './Drawer.sx';\n\nexport interface DrawerItemProps {\n /** Icono del item. Se muestra siempre (expanded y collapsed). */\n icon?: ReactNode;\n /** Texto del item. Se oculta cuando el drawer está colapsado (muestra tooltip). */\n label: ReactNode;\n /** Handler de click. */\n onClick?: (event: MouseEvent<HTMLDivElement>) => void;\n /** Marca el item como activo (destaca color y fondo). */\n active?: boolean;\n /** Marca el item como \"destructivo\" (p.ej. cerrar sesión): color error. */\n danger?: boolean;\n /** Deshabilita click + bajo opacidad. */\n disabled?: boolean;\n /** Contenido adicional a la derecha del label (badge, count, chevron). */\n endAdornment?: ReactNode;\n /** sx override del consumer, se mergea al final. */\n sx?: SxProps<Theme>;\n className?: string;\n}\n\n/**\n * Item de un Drawer de shared-library. Lee el estado `collapsed` del\n * DrawerContext para adaptar layout y mostrar tooltip en modo mini.\n *\n * Uso típico:\n * ```tsx\n * <Drawer collapsed={collapsed} onToggleCollapse={toggle}>\n * <DrawerItem icon={<HomeIcon />} label=\"Inicio\" active />\n * <DrawerItem icon={<UserIcon />} label=\"Perfil\" />\n * </Drawer>\n * ```\n */\nexport function DrawerItem({\n icon,\n label,\n onClick,\n active = false,\n danger = false,\n disabled = false,\n endAdornment,\n sx,\n className,\n}: DrawerItemProps) {\n const { collapsed } = useDrawerContext();\n\n const baseSx = buildDrawerItemSx({ collapsed, active, danger });\n\n const mergedSx: SxProps<Theme> = [\n baseSx,\n disabled && { pointerEvents: 'none', opacity: 0.5 },\n ...(Array.isArray(sx) ? sx : sx ? [sx] : []),\n ].filter(Boolean) as SxProps<Theme>;\n\n const content = (\n <Box\n role=\"button\"\n tabIndex={disabled ? -1 : 0}\n aria-disabled={disabled}\n onClick={disabled ? undefined : onClick}\n onKeyDown={(event) => {\n if (disabled) return;\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n onClick?.(event as unknown as MouseEvent<HTMLDivElement>);\n }\n }}\n className={className}\n sx={mergedSx}\n >\n {icon !== undefined && (\n <Box className=\"drawer-item__icon\" component=\"span\">\n {icon}\n </Box>\n )}\n <Typography\n component=\"span\"\n variant=\"body2\"\n className=\"drawer-item__label\"\n sx={{ fontWeight: active ? 600 : 400 }}\n >\n {label}\n </Typography>\n {!collapsed && endAdornment && (\n <Box component=\"span\" sx={{ flexShrink: 0, ml: 'auto' }}>\n {endAdornment}\n </Box>\n )}\n </Box>\n );\n\n // Cuando está colapsado, envolvemos en tooltip para revelar el label al hover.\n if (collapsed && typeof label === 'string') {\n return (\n <Tooltip title={label} placement=\"right\" arrow>\n {content}\n </Tooltip>\n );\n }\n\n return content;\n}\n\nexport default DrawerItem;\n"],"names":["MuiDrawer"],"mappings":"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"}
|