@soyfri/shared-library 1.5.0 → 1.6.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/Button-C17mExpd.cjs.map +1 -0
- package/Button-UkkP-bNw.js.map +1 -0
- package/components/ActionMenu/ActionMenu.cjs +107 -0
- package/components/ActionMenu/ActionMenu.cjs.map +1 -0
- package/components/ActionMenu/ActionMenu.d.ts +44 -0
- package/components/ActionMenu/ActionMenu.js +107 -0
- package/components/ActionMenu/ActionMenu.js.map +1 -0
- package/components/ActionMenu/index.d.ts +2 -0
- package/components/ActionMenu.d.ts +6 -0
- package/components/AppBar/AppBar.cjs +129 -0
- package/components/AppBar/AppBar.cjs.map +1 -0
- package/components/AppBar/AppBar.d.ts +55 -0
- package/components/AppBar/AppBar.js +129 -0
- package/components/AppBar/AppBar.js.map +1 -0
- package/components/AppBar/AppBar.sx.d.ts +12 -0
- package/components/AppBar/AppBarContext.d.ts +18 -0
- package/components/AppBar/AppBarMenuToggle.d.ts +39 -0
- package/components/AppBar/index.d.ts +6 -0
- package/components/AppBar.d.ts +6 -0
- package/components/Autocomplete/Autocomplete.cjs +313 -0
- package/components/Autocomplete/Autocomplete.cjs.map +1 -0
- package/components/Autocomplete/Autocomplete.d.ts +86 -0
- package/components/Autocomplete/Autocomplete.definitions.d.ts +16 -0
- package/components/Autocomplete/Autocomplete.helpers.d.ts +22 -0
- package/components/Autocomplete/Autocomplete.js +313 -0
- package/components/Autocomplete/Autocomplete.js.map +1 -0
- package/components/Autocomplete/Autocomplete.sx.d.ts +7 -0
- package/components/Autocomplete/_parts/AutocompleteChips.d.ts +20 -0
- package/components/Autocomplete/_parts/AutocompleteLoader.d.ts +9 -0
- package/components/Autocomplete/_parts/AutocompleteOption.d.ts +16 -0
- package/components/Autocomplete/index.d.ts +2 -0
- package/components/Autocomplete.d.ts +6 -0
- package/components/Avatar/Avatar.cjs +162 -0
- package/components/Avatar/Avatar.cjs.map +1 -0
- package/components/Avatar/Avatar.d.ts +33 -0
- package/components/Avatar/Avatar.definitions.d.ts +11 -0
- package/components/Avatar/Avatar.js +162 -0
- package/components/Avatar/Avatar.js.map +1 -0
- package/components/Avatar/index.d.ts +2 -0
- package/{dist/components → components}/Button/Button.d.ts +5 -5
- package/{dist/components → components}/Button/index.d.ts +1 -0
- package/components/Card/Card.cjs +99 -0
- package/components/Card/Card.cjs.map +1 -0
- package/components/Card/Card.d.ts +36 -0
- package/components/Card/Card.js +99 -0
- package/components/Card/Card.js.map +1 -0
- package/components/Card/Card.sx.d.ts +14 -0
- package/components/Card/index.d.ts +4 -0
- package/components/Card.d.ts +6 -0
- package/components/Checkbox/Checkbox.cjs +189 -0
- package/components/Checkbox/Checkbox.cjs.map +1 -0
- package/components/Checkbox/Checkbox.d.ts +55 -0
- package/components/Checkbox/Checkbox.js +189 -0
- package/components/Checkbox/Checkbox.js.map +1 -0
- package/components/Checkbox/Checkbox.sx.d.ts +13 -0
- package/components/Checkbox/index.d.ts +2 -0
- package/components/Checkbox.d.ts +6 -0
- package/{dist/components → components}/Chip/Chip.cjs +2 -1
- package/components/Chip/Chip.cjs.map +1 -0
- package/{dist/components → components}/Chip/Chip.js +2 -1
- package/components/Chip/Chip.js.map +1 -0
- package/components/Chip/index.d.ts +2 -0
- package/components/Chip.d.ts +6 -0
- package/components/DatePicker/DatePicker.cjs +180 -0
- package/components/DatePicker/DatePicker.cjs.map +1 -0
- package/components/DatePicker/DatePicker.d.ts +44 -0
- package/{dist/components → components}/DatePicker/DatePicker.definitions.d.ts +1 -0
- package/components/DatePicker/DatePicker.helpers.d.ts +7 -0
- package/components/DatePicker/DatePicker.js +180 -0
- package/components/DatePicker/DatePicker.js.map +1 -0
- package/components/DatePicker/DatePicker.sx.d.ts +9 -0
- package/components/DatePicker/index.d.ts +2 -0
- package/components/DatePicker.d.ts +6 -0
- package/components/DateTimePicker/DateTimePicker.cjs +198 -0
- package/components/DateTimePicker/DateTimePicker.cjs.map +1 -0
- package/components/DateTimePicker/DateTimePicker.d.ts +57 -0
- package/{dist/components → components}/DateTimePicker/DateTimePicker.definitions.d.ts +3 -0
- package/components/DateTimePicker/DateTimePicker.helpers.d.ts +13 -0
- package/components/DateTimePicker/DateTimePicker.js +198 -0
- package/components/DateTimePicker/DateTimePicker.js.map +1 -0
- package/components/DateTimePicker/DateTimePicker.sx.d.ts +7 -0
- package/components/DateTimePicker/index.d.ts +2 -0
- package/components/DateTimePicker.d.ts +6 -0
- package/components/Drawer/Drawer.cjs +272 -0
- package/components/Drawer/Drawer.cjs.map +1 -0
- package/components/Drawer/Drawer.d.ts +58 -0
- package/components/Drawer/Drawer.js +272 -0
- package/components/Drawer/Drawer.js.map +1 -0
- package/components/Drawer/Drawer.sx.d.ts +23 -0
- package/components/Drawer/DrawerContext.d.ts +18 -0
- package/components/Drawer/DrawerItem.d.ts +40 -0
- package/components/Drawer/index.d.ts +6 -0
- package/components/Drawer.d.ts +6 -0
- package/{dist/components → components}/Gallery/Gallery.cjs +154 -79
- package/components/Gallery/Gallery.cjs.map +1 -0
- package/components/Gallery/Gallery.d.ts +28 -0
- package/{dist/components → components}/Gallery/Gallery.js +154 -79
- package/components/Gallery/Gallery.js.map +1 -0
- package/components/Gallery/GalleryLightbox.d.ts +16 -0
- package/{dist/components → components}/Gallery/GalleryMain.d.ts +3 -7
- package/components/Gallery/GalleryThumbnails.d.ts +13 -0
- package/components/Gallery/index.d.ts +2 -0
- package/components/Gallery.d.ts +6 -0
- package/{dist/components → components}/Icon/Icon.cjs +49 -10
- package/components/Icon/Icon.cjs.map +1 -0
- package/components/Icon/Icon.d.ts +48 -0
- package/{dist/components → components}/Icon/Icon.js +49 -10
- package/components/Icon/Icon.js.map +1 -0
- package/components/Icon/index.d.ts +2 -0
- package/components/Icon.d.ts +6 -0
- package/components/Input/Input.cjs +188 -0
- package/components/Input/Input.cjs.map +1 -0
- package/components/Input/Input.d.ts +44 -0
- package/{dist/components → components}/Input/Input.definitions.d.ts +6 -2
- package/components/Input/Input.helpers.d.ts +14 -0
- package/components/Input/Input.js +188 -0
- package/components/Input/Input.js.map +1 -0
- package/components/Input/Input.sx.d.ts +8 -0
- package/components/Input/index.d.ts +2 -0
- package/components/Input.d.ts +6 -0
- package/components/InputGroup/InputGroup.cjs +140 -0
- package/components/InputGroup/InputGroup.cjs.map +1 -0
- package/components/InputGroup/InputGroup.d.ts +42 -0
- package/components/InputGroup/InputGroup.definitions.d.ts +6 -0
- package/components/InputGroup/InputGroup.js +140 -0
- package/components/InputGroup/InputGroup.js.map +1 -0
- package/components/InputGroup/index.d.ts +2 -0
- package/components/InputGroup.d.ts +6 -0
- package/components/Modal/Modal.cjs +348 -0
- package/components/Modal/Modal.cjs.map +1 -0
- package/components/Modal/Modal.d.ts +80 -0
- package/components/Modal/Modal.js +348 -0
- package/components/Modal/Modal.js.map +1 -0
- package/components/Modal/ModalBody.d.ts +11 -0
- package/components/Modal/ModalFooter.d.ts +27 -0
- package/components/Modal/ModalHeader.d.ts +11 -0
- package/components/Modal/index.d.ts +8 -0
- package/components/Modal.d.ts +6 -0
- package/components/RadioGroup/RadioGroup.cjs +204 -0
- package/components/RadioGroup/RadioGroup.cjs.map +1 -0
- package/components/RadioGroup/RadioGroup.d.ts +59 -0
- package/components/RadioGroup/RadioGroup.definitions.d.ts +6 -0
- package/components/RadioGroup/RadioGroup.js +204 -0
- package/components/RadioGroup/RadioGroup.js.map +1 -0
- package/components/RadioGroup/RadioGroup.sx.d.ts +20 -0
- package/components/RadioGroup/index.d.ts +2 -0
- package/components/RadioGroup.d.ts +6 -0
- package/components/Select/Select.cjs +313 -0
- package/components/Select/Select.cjs.map +1 -0
- package/components/Select/Select.d.ts +95 -0
- package/components/Select/Select.helpers.d.ts +15 -0
- package/components/Select/Select.js +313 -0
- package/components/Select/Select.js.map +1 -0
- package/components/Select/Select.sx.d.ts +7 -0
- package/components/Select/_parts/SelectMenuItem.d.ts +20 -0
- package/components/Select/index.d.ts +2 -0
- package/components/Select.d.ts +6 -0
- package/{dist/components → components}/Stat/Stat.cjs +2 -2
- package/{dist/components → components}/Stat/Stat.cjs.map +1 -1
- package/{dist/components → components}/Stat/Stat.js +2 -2
- package/{dist/components → components}/Stat/Stat.js.map +1 -1
- package/components/Stat/index.d.ts +2 -0
- package/components/Stat.d.ts +6 -0
- package/components/StatusMessage/StatusMessage.cjs +90 -0
- package/components/StatusMessage/StatusMessage.cjs.map +1 -0
- package/components/StatusMessage/StatusMessage.d.ts +28 -0
- package/components/StatusMessage/StatusMessage.js +90 -0
- package/components/StatusMessage/StatusMessage.js.map +1 -0
- package/components/StatusMessage/index.d.ts +2 -0
- package/components/StatusMessage.d.ts +6 -0
- package/components/Stepper/Stepper.cjs +302 -0
- package/components/Stepper/Stepper.cjs.map +1 -0
- package/components/Stepper/Stepper.d.ts +17 -0
- package/components/Stepper/Stepper.js +302 -0
- package/components/Stepper/Stepper.js.map +1 -0
- package/components/Stepper/StepperContext.d.ts +73 -0
- package/components/Stepper/_hooks/useHorizontalScroll.d.ts +19 -0
- package/components/Stepper/_parts/StepperScrollArrow.d.ts +19 -0
- package/components/Stepper/index.d.ts +6 -0
- package/components/Stepper.d.ts +6 -0
- package/components/Switch/Switch.cjs +184 -0
- package/components/Switch/Switch.cjs.map +1 -0
- package/components/Switch/Switch.d.ts +48 -0
- package/components/Switch/Switch.definitions.d.ts +7 -0
- package/components/Switch/Switch.js +184 -0
- package/components/Switch/Switch.js.map +1 -0
- package/components/Switch/Switch.sx.d.ts +22 -0
- package/components/Switch/Switch.types.d.ts +1 -0
- package/components/Switch/index.d.ts +2 -0
- package/components/Switch.d.ts +6 -0
- package/components/Tabs/Tabs.cjs +112 -0
- package/components/Tabs/Tabs.cjs.map +1 -0
- package/components/Tabs/Tabs.d.ts +24 -0
- package/components/Tabs/Tabs.js +112 -0
- package/components/Tabs/Tabs.js.map +1 -0
- package/components/Tabs/index.d.ts +4 -0
- package/components/Tabs.d.ts +6 -0
- package/{dist/components → components}/Timeline/Timeline.cjs +3 -2
- package/components/Timeline/Timeline.cjs.map +1 -0
- package/components/Timeline/Timeline.d.ts +9 -0
- package/{dist/components → components}/Timeline/Timeline.js +3 -2
- package/components/Timeline/Timeline.js.map +1 -0
- package/components/Timeline/index.d.ts +4 -0
- package/components/Timeline.d.ts +6 -0
- package/components/_shared/formField.sx.d.ts +33 -0
- package/components/_shared/mergeSx.d.ts +7 -0
- package/components/_shared/resolvePreset.d.ts +18 -0
- package/formField.sx-8_QRnKxv.js +68 -0
- package/formField.sx-8_QRnKxv.js.map +1 -0
- package/formField.sx-BAX7KwMR.cjs +67 -0
- package/formField.sx-BAX7KwMR.cjs.map +1 -0
- package/index.cjs +145 -0
- package/index.cjs.map +1 -0
- package/index.d.ts +4 -0
- package/index.js +49 -0
- package/index.js.map +1 -0
- package/mergeSx-BXoNZjB_.js +10 -0
- package/mergeSx-BXoNZjB_.js.map +1 -0
- package/mergeSx-Dbccoo_H.cjs +9 -0
- package/mergeSx-Dbccoo_H.cjs.map +1 -0
- package/mui.d.ts +7 -0
- package/package.json +164 -43
- package/resolvePreset-B-IB0ehH.js +15 -0
- package/resolvePreset-B-IB0ehH.js.map +1 -0
- package/resolvePreset-CT3kU-K2.cjs +14 -0
- package/resolvePreset-CT3kU-K2.cjs.map +1 -0
- package/theme/componentStyles.d.ts +32 -0
- package/theme/tokens.d.ts +28 -0
- package/tokens-BRrcP_p_.js +21 -0
- package/tokens-BRrcP_p_.js.map +1 -0
- package/tokens-jaWWNk39.cjs +20 -0
- package/tokens-jaWWNk39.cjs.map +1 -0
- package/utils/index.d.ts +2 -0
- package/utils/scrollToTop.d.ts +28 -0
- 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/build.js +0 -102
- package/chromatic.config.json +0 -5
- package/cleanDirectories.js +0 -40
- package/dist/Button-C17mExpd.cjs.map +0 -1
- package/dist/Button-UkkP-bNw.js.map +0 -1
- package/dist/DatePicker-BSNboVhN.js +0 -201
- package/dist/DatePicker-BSNboVhN.js.map +0 -1
- package/dist/DatePicker-BoqxWAhj.cjs +0 -200
- package/dist/DatePicker-BoqxWAhj.cjs.map +0 -1
- package/dist/Input-DFHs7cJ_.js +0 -171
- package/dist/Input-DFHs7cJ_.js.map +0 -1
- package/dist/Input-c8MwNNPg.cjs +0 -170
- package/dist/Input-c8MwNNPg.cjs.map +0 -1
- package/dist/Select-BO2N56sm.cjs +0 -411
- package/dist/Select-BO2N56sm.cjs.map +0 -1
- package/dist/Select-BcLkyHSE.js +0 -412
- package/dist/Select-BcLkyHSE.js.map +0 -1
- package/dist/components/Autocomplete/Autocomplete.cjs +0 -109
- package/dist/components/Autocomplete/Autocomplete.cjs.map +0 -1
- package/dist/components/Autocomplete/Autocomplete.d.ts +0 -28
- package/dist/components/Autocomplete/Autocomplete.definitions.d.ts +0 -9
- package/dist/components/Autocomplete/Autocomplete.js +0 -109
- package/dist/components/Autocomplete/Autocomplete.js.map +0 -1
- package/dist/components/Autocomplete/index.d.ts +0 -1
- package/dist/components/Autocomplete.d.ts +0 -2
- package/dist/components/Avatar/Avatar.cjs +0 -126
- package/dist/components/Avatar/Avatar.cjs.map +0 -1
- package/dist/components/Avatar/Avatar.d.ts +0 -19
- package/dist/components/Avatar/Avatar.js +0 -126
- package/dist/components/Avatar/Avatar.js.map +0 -1
- package/dist/components/Avatar/index.d.ts +0 -1
- package/dist/components/Card/Card.cjs +0 -28
- package/dist/components/Card/Card.cjs.map +0 -1
- package/dist/components/Card/Card.d.ts +0 -13
- package/dist/components/Card/Card.js +0 -28
- package/dist/components/Card/Card.js.map +0 -1
- package/dist/components/Card/index.d.ts +0 -1
- package/dist/components/Card.d.ts +0 -2
- package/dist/components/Chip/Chip.cjs.map +0 -1
- package/dist/components/Chip/Chip.js.map +0 -1
- package/dist/components/Chip/index.d.ts +0 -1
- package/dist/components/Chip.d.ts +0 -2
- package/dist/components/DatePicker/DatePicker.cjs +0 -5
- package/dist/components/DatePicker/DatePicker.cjs.map +0 -1
- package/dist/components/DatePicker/DatePicker.d.ts +0 -18
- package/dist/components/DatePicker/DatePicker.js +0 -5
- package/dist/components/DatePicker/DatePicker.js.map +0 -1
- package/dist/components/DatePicker/index.d.ts +0 -1
- package/dist/components/DatePicker.d.ts +0 -2
- package/dist/components/DateTimePicker/DateTimePicker.cjs +0 -208
- package/dist/components/DateTimePicker/DateTimePicker.cjs.map +0 -1
- package/dist/components/DateTimePicker/DateTimePicker.d.ts +0 -28
- package/dist/components/DateTimePicker/DateTimePicker.js +0 -208
- package/dist/components/DateTimePicker/DateTimePicker.js.map +0 -1
- package/dist/components/DateTimePicker/index.d.ts +0 -1
- package/dist/components/DateTimePicker.d.ts +0 -2
- package/dist/components/Gallery/Gallery.cjs.map +0 -1
- package/dist/components/Gallery/Gallery.d.ts +0 -12
- package/dist/components/Gallery/Gallery.js.map +0 -1
- package/dist/components/Gallery/GalleryLightbox.d.ts +0 -20
- package/dist/components/Gallery/GalleryThumbnails.d.ts +0 -17
- package/dist/components/Gallery/index.d.ts +0 -1
- package/dist/components/Gallery.d.ts +0 -2
- package/dist/components/Icon/Icon.cjs.map +0 -1
- package/dist/components/Icon/Icon.d.ts +0 -21
- package/dist/components/Icon/Icon.js.map +0 -1
- package/dist/components/Icon/index.d.ts +0 -1
- package/dist/components/Icon.d.ts +0 -2
- package/dist/components/Input/Input.cjs +0 -5
- package/dist/components/Input/Input.cjs.map +0 -1
- package/dist/components/Input/Input.d.ts +0 -32
- package/dist/components/Input/Input.js +0 -5
- package/dist/components/Input/Input.js.map +0 -1
- package/dist/components/Input/index.d.ts +0 -1
- package/dist/components/Input.d.ts +0 -2
- package/dist/components/InputGroup/InputGroup.cjs +0 -126
- package/dist/components/InputGroup/InputGroup.cjs.map +0 -1
- package/dist/components/InputGroup/InputGroup.d.ts +0 -6
- package/dist/components/InputGroup/InputGroup.js +0 -126
- package/dist/components/InputGroup/InputGroup.js.map +0 -1
- package/dist/components/InputGroup/index.d.ts +0 -1
- package/dist/components/InputGroup.d.ts +0 -2
- package/dist/components/Modal/Modal.cjs +0 -209
- package/dist/components/Modal/Modal.cjs.map +0 -1
- package/dist/components/Modal/Modal.d.ts +0 -29
- package/dist/components/Modal/Modal.js +0 -209
- package/dist/components/Modal/Modal.js.map +0 -1
- package/dist/components/Modal/ModalBody.d.ts +0 -6
- package/dist/components/Modal/ModalFooter.d.ts +0 -19
- package/dist/components/Modal/ModalHeader.d.ts +0 -6
- package/dist/components/Modal/index.d.ts +0 -1
- package/dist/components/Modal.d.ts +0 -2
- package/dist/components/Select/Select.cjs +0 -6
- package/dist/components/Select/Select.cjs.map +0 -1
- package/dist/components/Select/Select.d.ts +0 -60
- package/dist/components/Select/Select.definitions.d.ts +0 -14
- package/dist/components/Select/Select.js +0 -6
- package/dist/components/Select/Select.js.map +0 -1
- package/dist/components/Select/index.d.ts +0 -1
- package/dist/components/Select.d.ts +0 -2
- package/dist/components/Stat/index.d.ts +0 -1
- package/dist/components/Stat.d.ts +0 -2
- package/dist/components/StatusMessage/StatusMessage.cjs +0 -79
- package/dist/components/StatusMessage/StatusMessage.cjs.map +0 -1
- package/dist/components/StatusMessage/StatusMessage.d.ts +0 -44
- package/dist/components/StatusMessage/StatusMessage.js +0 -79
- package/dist/components/StatusMessage/StatusMessage.js.map +0 -1
- package/dist/components/StatusMessage/index.d.ts +0 -1
- package/dist/components/StatusMessage.d.ts +0 -2
- package/dist/components/Stepper/Stepper.cjs +0 -46
- package/dist/components/Stepper/Stepper.cjs.map +0 -1
- package/dist/components/Stepper/Stepper.d.ts +0 -11
- package/dist/components/Stepper/Stepper.js +0 -46
- package/dist/components/Stepper/Stepper.js.map +0 -1
- package/dist/components/Stepper/index.d.ts +0 -2
- package/dist/components/Stepper.d.ts +0 -2
- package/dist/components/Tabs/Tabs.cjs +0 -96
- package/dist/components/Tabs/Tabs.cjs.map +0 -1
- package/dist/components/Tabs/Tabs.d.ts +0 -19
- package/dist/components/Tabs/Tabs.js +0 -96
- package/dist/components/Tabs/Tabs.js.map +0 -1
- package/dist/components/Tabs/index.d.ts +0 -2
- package/dist/components/Tabs.d.ts +0 -2
- package/dist/components/Timeline/Timeline.cjs.map +0 -1
- package/dist/components/Timeline/Timeline.d.ts +0 -13
- package/dist/components/Timeline/Timeline.js.map +0 -1
- package/dist/components/Timeline/index.d.ts +0 -2
- package/dist/components/Timeline.d.ts +0 -2
- package/dist/index.cjs +0 -2
- package/dist/index.cjs.map +0 -1
- package/dist/index.d.ts +0 -0
- package/dist/index.js +0 -2
- package/dist/index.js.map +0 -1
- package/dist/styles.css +0 -112
- package/rollup.config.cjs +0 -87
- package/src/components/Autocomplete/Autocomplete.definitions.ts +0 -254
- package/src/components/Autocomplete/Autocomplete.stories.tsx +0 -387
- package/src/components/Autocomplete/Autocomplete.tsx +0 -139
- package/src/components/Autocomplete/index.ts +0 -1
- package/src/components/Avatar/Avatar.stories.tsx +0 -54
- package/src/components/Avatar/Avatar.tsx +0 -143
- 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 -32
- package/src/components/Card/Card.tsx +0 -44
- package/src/components/Card/index.ts +0 -1
- 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 -205
- package/src/components/DatePicker/DatePicker.stories.tsx +0 -282
- package/src/components/DatePicker/DatePicker.tsx +0 -165
- package/src/components/DatePicker/index.ts +0 -1
- 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 -232
- package/src/components/DateTimePicker/DateTimePicker.stories.tsx +0 -390
- package/src/components/DateTimePicker/DateTimePicker.tsx +0 -191
- package/src/components/DateTimePicker/index.ts +0 -1
- package/src/components/Flyout/Flyout.stories.tsx +0 -274
- 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 -54
- package/src/components/Icon/Icon.tsx +0 -94
- package/src/components/Icon/index.ts +0 -2
- package/src/components/Input/Input.definitions.ts +0 -252
- package/src/components/Input/Input.stories.tsx +0 -387
- package/src/components/Input/Input.tsx +0 -186
- package/src/components/Input/index.ts +0 -1
- package/src/components/InputGroup/InputGroup.stories.tsx +0 -136
- package/src/components/InputGroup/InputGroup.tsx +0 -136
- 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 -293
- package/src/components/Modal/Modal.tsx +0 -173
- package/src/components/Modal/ModalBody.tsx +0 -16
- package/src/components/Modal/ModalFooter.tsx +0 -61
- package/src/components/Modal/ModalHeader.tsx +0 -18
- package/src/components/Modal/index.ts +0 -1
- package/src/components/Select/Select.definitions.ts +0 -488
- package/src/components/Select/Select.stories.tsx +0 -569
- package/src/components/Select/Select.tsx +0 -468
- package/src/components/Select/index.ts +0 -1
- 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 -59
- 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 -117
- package/src/components/Tooltip/Tooltip.tsx +0 -58
- package/src/components/Tooltip/index.ts +0 -1
- 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/index.ts +0 -1
- package/src/styles.css +0 -3
- 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-UkkP-bNw.js → Button-UkkP-bNw.js} +0 -0
- /package/{Readme.md → README.md} +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.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.d.ts +0 -0
- /package/{dist/components → components}/Card/Card.definition.d.ts +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}/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}/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}/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.definition.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}/Stat/Stat.d.ts +0 -0
- /package/{dist/components → components}/Stepper/Step.d.ts +0 -0
- /package/{dist/components → components}/Stepper/Stepper.definition.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/_tabUtils.d.ts +0 -0
- /package/{dist/components → components}/Timeline/Timeline.definition.d.ts +0 -0
- /package/{dist/components → components}/Timeline/TimelineItem.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/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/index.css → index.css} +0 -0
|
@@ -0,0 +1 @@
|
|
|
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 { alpha, type SxProps, type 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 ? alpha(theme.palette.error.main, 0.08)\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 { 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 /**\n * Logo/brand que se muestra junto al botón de toggle.\n * - Expandido: logo a la izquierda, toggle a la derecha en la misma fila.\n * - Colapsado: logo arriba centrado, toggle debajo centrado (stack vertical).\n * Siempre visible (a diferencia de `header`, que se oculta al colapsar).\n */\n logo?: 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 logo,\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 slotProps={{\n paper: {\n sx: paperSx,\n },\n }}\n >\n {(logo || shouldShowToggle) && (\n <Box\n sx={{\n display: 'flex',\n flexDirection: contextValue.collapsed ? 'column' : 'row',\n alignItems: 'center',\n justifyContent: contextValue.collapsed\n ? 'center'\n : logo\n ? 'space-between'\n : 'flex-end',\n gap: contextValue.collapsed ? 0.5 : 0,\n px: contextValue.collapsed ? 1 : 2,\n py: 1,\n minHeight: 64,\n flexShrink: 0,\n }}\n >\n {logo && (\n <Box sx={{ display: 'flex', alignItems: 'center', minWidth: 0 }}>\n {logo}\n </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 && !contextValue.collapsed && (\n <Box\n sx={{\n display: 'flex',\n alignItems: 'center',\n px: 2,\n py: 1.5,\n minHeight: 56,\n flexShrink: 0,\n }}\n >\n <Box sx={{ flex: 1, minWidth: 0 }}>{header}</Box>\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 /**\n * Texto del tooltip en modo collapsed. Si no se provee y `label` es string,\n * se usa `label`. Necesario cuando `label` es un ReactNode complejo.\n */\n tooltipText?: string;\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 tooltipText,\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 && (\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 // Prioriza `tooltipText` explícito; si no, cae al `label` si es string.\n const resolvedTooltip =\n tooltipText ?? (typeof label === 'string' ? label : undefined);\n\n if (collapsed && resolvedTooltip) {\n return (\n <Tooltip title={resolvedTooltip} 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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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { SxProps, Theme } from '@mui/material/styles';
|
|
2
|
+
export interface BuildDrawerSxArgs {
|
|
3
|
+
/** Ancho actual del drawer (expanded o collapsed). */
|
|
4
|
+
width: number;
|
|
5
|
+
/** Duración de la transición de ancho en ms. */
|
|
6
|
+
transitionDuration?: number;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* sx aplicado al root del MuiDrawer. Controla el ancho animado y el paper
|
|
10
|
+
* interno. Los estilos visuales del paper (background, border) se dejan en
|
|
11
|
+
* manos del theme / preset.
|
|
12
|
+
*/
|
|
13
|
+
export declare function buildDrawerSx({ width, transitionDuration, }: BuildDrawerSxArgs): SxProps<Theme>;
|
|
14
|
+
export interface BuildDrawerItemSxArgs {
|
|
15
|
+
collapsed: boolean;
|
|
16
|
+
active?: boolean;
|
|
17
|
+
danger?: boolean;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* sx para un item del drawer. Centra el icono cuando está colapsado y
|
|
21
|
+
* tiñe el fondo cuando el item está activo.
|
|
22
|
+
*/
|
|
23
|
+
export declare function buildDrawerItemSx({ collapsed, active, danger, }: BuildDrawerItemSxArgs): SxProps<Theme>;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Context interno del Drawer. Permite que los sub-componentes (DrawerItem,
|
|
3
|
+
* DrawerSection, etc.) reaccionen al estado `collapsed` sin necesidad de
|
|
4
|
+
* recibirlo por props explícitas.
|
|
5
|
+
*/
|
|
6
|
+
export interface DrawerContextValue {
|
|
7
|
+
/** Si el drawer está en modo mini (solo iconos). */
|
|
8
|
+
collapsed: boolean;
|
|
9
|
+
/** Ancho actual del drawer (útil para sub-componentes que necesiten layout). */
|
|
10
|
+
width: number;
|
|
11
|
+
}
|
|
12
|
+
export declare const DrawerContext: import('react').Context<DrawerContextValue | null>;
|
|
13
|
+
/**
|
|
14
|
+
* Hook para leer el estado del drawer desde cualquier sub-componente. Si se
|
|
15
|
+
* llama fuera de un `<Drawer>`, devuelve valores por defecto (collapsed=false)
|
|
16
|
+
* para que los items renderizados sueltos no exploten.
|
|
17
|
+
*/
|
|
18
|
+
export declare function useDrawerContext(): DrawerContextValue;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { ReactNode, MouseEvent } from 'react';
|
|
2
|
+
import { SxProps, Theme } from '@mui/material/styles';
|
|
3
|
+
export interface DrawerItemProps {
|
|
4
|
+
/** Icono del item. Se muestra siempre (expanded y collapsed). */
|
|
5
|
+
icon?: ReactNode;
|
|
6
|
+
/** Texto del item. Se oculta cuando el drawer está colapsado (muestra tooltip). */
|
|
7
|
+
label: ReactNode;
|
|
8
|
+
/**
|
|
9
|
+
* Texto del tooltip en modo collapsed. Si no se provee y `label` es string,
|
|
10
|
+
* se usa `label`. Necesario cuando `label` es un ReactNode complejo.
|
|
11
|
+
*/
|
|
12
|
+
tooltipText?: string;
|
|
13
|
+
/** Handler de click. */
|
|
14
|
+
onClick?: (event: MouseEvent<HTMLDivElement>) => void;
|
|
15
|
+
/** Marca el item como activo (destaca color y fondo). */
|
|
16
|
+
active?: boolean;
|
|
17
|
+
/** Marca el item como "destructivo" (p.ej. cerrar sesión): color error. */
|
|
18
|
+
danger?: boolean;
|
|
19
|
+
/** Deshabilita click + bajo opacidad. */
|
|
20
|
+
disabled?: boolean;
|
|
21
|
+
/** Contenido adicional a la derecha del label (badge, count, chevron). */
|
|
22
|
+
endAdornment?: ReactNode;
|
|
23
|
+
/** sx override del consumer, se mergea al final. */
|
|
24
|
+
sx?: SxProps<Theme>;
|
|
25
|
+
className?: string;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Item de un Drawer de shared-library. Lee el estado `collapsed` del
|
|
29
|
+
* DrawerContext para adaptar layout y mostrar tooltip en modo mini.
|
|
30
|
+
*
|
|
31
|
+
* Uso típico:
|
|
32
|
+
* ```tsx
|
|
33
|
+
* <Drawer collapsed={collapsed} onToggleCollapse={toggle}>
|
|
34
|
+
* <DrawerItem icon={<HomeIcon />} label="Inicio" active />
|
|
35
|
+
* <DrawerItem icon={<UserIcon />} label="Perfil" />
|
|
36
|
+
* </Drawer>
|
|
37
|
+
* ```
|
|
38
|
+
*/
|
|
39
|
+
export declare function DrawerItem({ icon, label, tooltipText, onClick, active, danger, disabled, endAdornment, sx, className, }: DrawerItemProps): import("react/jsx-runtime").JSX.Element;
|
|
40
|
+
export default DrawerItem;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { Drawer, default } from './Drawer';
|
|
2
|
+
export { DrawerItem } from './DrawerItem';
|
|
3
|
+
export { useDrawerContext } from './DrawerContext';
|
|
4
|
+
export type { DrawerProps, DrawerVariant, DrawerAnchor, } from './Drawer';
|
|
5
|
+
export type { DrawerItemProps } from './DrawerItem';
|
|
6
|
+
export type { DrawerContextValue } from './DrawerContext';
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
Object.
|
|
2
|
+
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
|
|
3
3
|
const jsxRuntime = require("react/jsx-runtime");
|
|
4
4
|
const React = require("react");
|
|
5
5
|
const material = require("@mui/material");
|
|
6
|
+
const styles = require("@mui/material/styles");
|
|
6
7
|
const KeyboardArrowUpIcon = require("@mui/icons-material/KeyboardArrowUp");
|
|
7
8
|
const KeyboardArrowDownIcon = require("@mui/icons-material/KeyboardArrowDown");
|
|
8
9
|
const KeyboardArrowLeftIcon = require("@mui/icons-material/KeyboardArrowLeft");
|
|
@@ -17,14 +18,15 @@ const RotateRightIcon = require("@mui/icons-material/RotateRight");
|
|
|
17
18
|
const RestartAltIcon = require("@mui/icons-material/RestartAlt");
|
|
18
19
|
const CloseIcon = require("@mui/icons-material/Close");
|
|
19
20
|
const Button = require("../../Button-C17mExpd.cjs");
|
|
21
|
+
const resolvePreset = require("../../resolvePreset-CT3kU-K2.cjs");
|
|
20
22
|
const GalleryThumbnails = ({
|
|
21
23
|
items,
|
|
22
24
|
selectedIdx,
|
|
23
25
|
onSelect,
|
|
24
26
|
thumbStartIdx,
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
27
|
+
visibleCount,
|
|
28
|
+
onThumbUp,
|
|
29
|
+
onThumbDown,
|
|
28
30
|
isMobile
|
|
29
31
|
}) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
30
32
|
material.Box,
|
|
@@ -36,7 +38,7 @@ const GalleryThumbnails = ({
|
|
|
36
38
|
minWidth: 70,
|
|
37
39
|
width: 70,
|
|
38
40
|
borderRadius: 1,
|
|
39
|
-
bgcolor: "
|
|
41
|
+
bgcolor: "grey.100",
|
|
40
42
|
boxSizing: "border-box",
|
|
41
43
|
py: 1,
|
|
42
44
|
mb: isMobile ? 2 : 0,
|
|
@@ -47,37 +49,55 @@ const GalleryThumbnails = ({
|
|
|
47
49
|
material.IconButton,
|
|
48
50
|
{
|
|
49
51
|
size: "small",
|
|
50
|
-
onClick:
|
|
52
|
+
onClick: onThumbUp,
|
|
51
53
|
disabled: thumbStartIdx === 0,
|
|
54
|
+
"aria-label": isMobile ? "Miniatura anterior" : "Miniaturas arriba",
|
|
52
55
|
sx: { mb: isMobile ? 0 : 1, mr: isMobile ? 1 : 0 },
|
|
53
56
|
children: isMobile ? /* @__PURE__ */ jsxRuntime.jsx(KeyboardArrowLeftIcon, {}) : /* @__PURE__ */ jsxRuntime.jsx(KeyboardArrowUpIcon, {})
|
|
54
57
|
}
|
|
55
58
|
),
|
|
56
|
-
items.slice(thumbStartIdx, thumbStartIdx +
|
|
59
|
+
items.slice(thumbStartIdx, thumbStartIdx + visibleCount).map((item, idx) => {
|
|
60
|
+
var _a;
|
|
57
61
|
const realIdx = thumbStartIdx + idx;
|
|
62
|
+
const isSelected = selectedIdx === realIdx;
|
|
63
|
+
const handleSelect = () => onSelect(realIdx);
|
|
58
64
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
59
65
|
material.Box,
|
|
60
66
|
{
|
|
61
|
-
|
|
67
|
+
role: "button",
|
|
68
|
+
tabIndex: 0,
|
|
69
|
+
"aria-label": item.title,
|
|
70
|
+
"aria-pressed": isSelected,
|
|
71
|
+
onClick: handleSelect,
|
|
72
|
+
onKeyDown: (e) => {
|
|
73
|
+
if (e.key === "Enter" || e.key === " ") {
|
|
74
|
+
e.preventDefault();
|
|
75
|
+
handleSelect();
|
|
76
|
+
}
|
|
77
|
+
},
|
|
62
78
|
sx: {
|
|
63
79
|
cursor: "pointer",
|
|
64
80
|
width: 60,
|
|
65
81
|
height: 60,
|
|
66
82
|
borderRadius: 1,
|
|
67
|
-
border:
|
|
83
|
+
border: (theme) => `2px solid ${isSelected ? theme.palette.primary.main : theme.palette.divider}`,
|
|
68
84
|
overflow: "hidden",
|
|
69
|
-
bgcolor: "
|
|
85
|
+
bgcolor: "action.hover",
|
|
70
86
|
display: "flex",
|
|
71
87
|
alignItems: "center",
|
|
72
88
|
justifyContent: "center",
|
|
73
89
|
flexShrink: 0,
|
|
74
|
-
m: isMobile ? "0 4px" : "4px 0"
|
|
90
|
+
m: isMobile ? "0 4px" : "4px 0",
|
|
91
|
+
outline: "none",
|
|
92
|
+
"&:focus-visible": {
|
|
93
|
+
boxShadow: (theme) => `0 0 0 2px ${theme.palette.primary.main}`
|
|
94
|
+
}
|
|
75
95
|
},
|
|
76
96
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
77
97
|
material.Box,
|
|
78
98
|
{
|
|
79
99
|
component: "img",
|
|
80
|
-
src: item.thumbnail,
|
|
100
|
+
src: (_a = item.thumbnail) != null ? _a : item.url,
|
|
81
101
|
alt: item.title,
|
|
82
102
|
sx: {
|
|
83
103
|
width: "100%",
|
|
@@ -87,15 +107,16 @@ const GalleryThumbnails = ({
|
|
|
87
107
|
}
|
|
88
108
|
)
|
|
89
109
|
},
|
|
90
|
-
realIdx
|
|
110
|
+
`${realIdx}-${item.url}`
|
|
91
111
|
);
|
|
92
112
|
}),
|
|
93
113
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
94
114
|
material.IconButton,
|
|
95
115
|
{
|
|
96
116
|
size: "small",
|
|
97
|
-
onClick:
|
|
98
|
-
disabled: thumbStartIdx +
|
|
117
|
+
onClick: onThumbDown,
|
|
118
|
+
disabled: thumbStartIdx + visibleCount >= items.length,
|
|
119
|
+
"aria-label": isMobile ? "Miniatura siguiente" : "Miniaturas abajo",
|
|
99
120
|
sx: { mt: isMobile ? 0 : 1, ml: isMobile ? 1 : 0 },
|
|
100
121
|
children: isMobile ? /* @__PURE__ */ jsxRuntime.jsx(KeyboardArrowRightIcon, {}) : /* @__PURE__ */ jsxRuntime.jsx(KeyboardArrowDownIcon, {})
|
|
101
122
|
}
|
|
@@ -115,7 +136,7 @@ const GalleryMain = ({ item, onOpenLightbox, isMobile }) => /* @__PURE__ */ jsxR
|
|
|
115
136
|
alignItems: "center",
|
|
116
137
|
position: "relative",
|
|
117
138
|
borderRadius: 1,
|
|
118
|
-
bgcolor: "
|
|
139
|
+
bgcolor: "grey.100",
|
|
119
140
|
overflow: "hidden",
|
|
120
141
|
mx: "auto"
|
|
121
142
|
},
|
|
@@ -142,7 +163,7 @@ const GalleryMain = ({ item, onOpenLightbox, isMobile }) => /* @__PURE__ */ jsxR
|
|
|
142
163
|
width: "100%",
|
|
143
164
|
height: "100%",
|
|
144
165
|
objectFit: "contain",
|
|
145
|
-
bgcolor: "
|
|
166
|
+
bgcolor: "common.black",
|
|
146
167
|
borderRadius: 1
|
|
147
168
|
}
|
|
148
169
|
}
|
|
@@ -165,27 +186,35 @@ const GalleryMain = ({ item, onOpenLightbox, isMobile }) => /* @__PURE__ */ jsxR
|
|
|
165
186
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
166
187
|
material.IconButton,
|
|
167
188
|
{
|
|
168
|
-
onClick:
|
|
189
|
+
onClick: (e) => {
|
|
190
|
+
e.stopPropagation();
|
|
191
|
+
onOpenLightbox();
|
|
192
|
+
},
|
|
193
|
+
"aria-label": "Abrir en pantalla completa",
|
|
169
194
|
sx: {
|
|
170
195
|
position: "absolute",
|
|
171
196
|
top: 16,
|
|
172
197
|
right: 16,
|
|
173
|
-
bgcolor: "
|
|
174
|
-
|
|
198
|
+
bgcolor: "primary.main",
|
|
199
|
+
color: "primary.contrastText",
|
|
200
|
+
"&:hover": { bgcolor: "primary.dark" },
|
|
175
201
|
boxShadow: 2
|
|
176
202
|
},
|
|
177
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(FullscreenIcon, {
|
|
203
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(FullscreenIcon, {})
|
|
178
204
|
}
|
|
179
205
|
)
|
|
180
206
|
]
|
|
181
207
|
}
|
|
182
208
|
);
|
|
209
|
+
const ZOOM_MIN = 0.25;
|
|
210
|
+
const ZOOM_MAX = 5;
|
|
211
|
+
const ZOOM_STEP = 0.25;
|
|
183
212
|
const GalleryLightbox = ({
|
|
184
213
|
open,
|
|
185
214
|
onClose,
|
|
186
215
|
item,
|
|
187
|
-
|
|
188
|
-
|
|
216
|
+
onPrev,
|
|
217
|
+
onNext,
|
|
189
218
|
zoom,
|
|
190
219
|
setZoom,
|
|
191
220
|
rotation,
|
|
@@ -204,11 +233,28 @@ const GalleryLightbox = ({
|
|
|
204
233
|
gap: 2
|
|
205
234
|
},
|
|
206
235
|
children: [
|
|
207
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
236
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
237
|
+
material.Stack,
|
|
238
|
+
{
|
|
239
|
+
direction: "row",
|
|
240
|
+
justifyContent: "space-between",
|
|
241
|
+
alignItems: "center",
|
|
242
|
+
width: "100%",
|
|
243
|
+
children: [
|
|
244
|
+
/* @__PURE__ */ jsxRuntime.jsx(material.IconButton, { onClick: onPrev, "aria-label": "Anterior", children: /* @__PURE__ */ jsxRuntime.jsx(ArrowBackIosNewIcon, {}) }),
|
|
245
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
246
|
+
material.Typography,
|
|
247
|
+
{
|
|
248
|
+
variant: "subtitle1",
|
|
249
|
+
fontWeight: 600,
|
|
250
|
+
sx: { flex: 1, textAlign: "center" },
|
|
251
|
+
children: item.title
|
|
252
|
+
}
|
|
253
|
+
),
|
|
254
|
+
/* @__PURE__ */ jsxRuntime.jsx(material.IconButton, { onClick: onNext, "aria-label": "Siguiente", children: /* @__PURE__ */ jsxRuntime.jsx(ArrowForwardIosIcon, {}) })
|
|
255
|
+
]
|
|
256
|
+
}
|
|
257
|
+
),
|
|
212
258
|
item.type === "video" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
213
259
|
material.Box,
|
|
214
260
|
{
|
|
@@ -219,10 +265,10 @@ const GalleryLightbox = ({
|
|
|
219
265
|
autoPlay: true,
|
|
220
266
|
sx: {
|
|
221
267
|
width: "100%",
|
|
222
|
-
maxWidth:
|
|
268
|
+
maxWidth: 900,
|
|
223
269
|
maxHeight: "70vh",
|
|
224
270
|
objectFit: "contain",
|
|
225
|
-
bgcolor: "
|
|
271
|
+
bgcolor: "common.black",
|
|
226
272
|
borderRadius: 1
|
|
227
273
|
}
|
|
228
274
|
},
|
|
@@ -237,7 +283,7 @@ const GalleryLightbox = ({
|
|
|
237
283
|
transform: `scale(${zoom}) rotate(${rotation}deg)`,
|
|
238
284
|
transition: "transform 0.2s ease",
|
|
239
285
|
width: "100%",
|
|
240
|
-
maxWidth:
|
|
286
|
+
maxWidth: 900,
|
|
241
287
|
maxHeight: "70vh",
|
|
242
288
|
objectFit: "contain",
|
|
243
289
|
borderRadius: 1
|
|
@@ -264,7 +310,8 @@ const GalleryLightbox = ({
|
|
|
264
310
|
{
|
|
265
311
|
variant: "outlined",
|
|
266
312
|
startIcon: /* @__PURE__ */ jsxRuntime.jsx(ZoomInIcon, {}),
|
|
267
|
-
onClick: () => setZoom((z) => z +
|
|
313
|
+
onClick: () => setZoom((z) => Math.min(ZOOM_MAX, z + ZOOM_STEP)),
|
|
314
|
+
disabled: zoom >= ZOOM_MAX,
|
|
268
315
|
children: "Zoom +"
|
|
269
316
|
}
|
|
270
317
|
),
|
|
@@ -273,7 +320,8 @@ const GalleryLightbox = ({
|
|
|
273
320
|
{
|
|
274
321
|
variant: "outlined",
|
|
275
322
|
startIcon: /* @__PURE__ */ jsxRuntime.jsx(ZoomOutIcon, {}),
|
|
276
|
-
onClick: () => setZoom((z) => Math.max(
|
|
323
|
+
onClick: () => setZoom((z) => Math.max(ZOOM_MIN, z - ZOOM_STEP)),
|
|
324
|
+
disabled: zoom <= ZOOM_MIN,
|
|
277
325
|
children: "Zoom −"
|
|
278
326
|
}
|
|
279
327
|
)
|
|
@@ -283,7 +331,8 @@ const GalleryLightbox = ({
|
|
|
283
331
|
Button.Button,
|
|
284
332
|
{
|
|
285
333
|
variant: "outlined",
|
|
286
|
-
|
|
334
|
+
"aria-label": "Rotar a la izquierda",
|
|
335
|
+
onClick: () => setRotation((r) => (r - 90) % 360),
|
|
287
336
|
children: /* @__PURE__ */ jsxRuntime.jsx(RotateLeftIcon, {})
|
|
288
337
|
}
|
|
289
338
|
),
|
|
@@ -291,7 +340,8 @@ const GalleryLightbox = ({
|
|
|
291
340
|
Button.Button,
|
|
292
341
|
{
|
|
293
342
|
variant: "outlined",
|
|
294
|
-
|
|
343
|
+
"aria-label": "Rotar a la derecha",
|
|
344
|
+
onClick: () => setRotation((r) => (r + 90) % 360),
|
|
295
345
|
children: /* @__PURE__ */ jsxRuntime.jsx(RotateRightIcon, {})
|
|
296
346
|
}
|
|
297
347
|
)
|
|
@@ -322,7 +372,14 @@ const GalleryLightbox = ({
|
|
|
322
372
|
}
|
|
323
373
|
)
|
|
324
374
|
] });
|
|
325
|
-
const Gallery = ({
|
|
375
|
+
const Gallery = ({
|
|
376
|
+
items,
|
|
377
|
+
maxWidth = "600px",
|
|
378
|
+
preset,
|
|
379
|
+
sx,
|
|
380
|
+
className
|
|
381
|
+
}) => {
|
|
382
|
+
const theme = styles.useTheme();
|
|
326
383
|
const isMobile = material.useMediaQuery("(max-width:700px)");
|
|
327
384
|
const [selectedIdx, setSelectedIdx] = React.useState(0);
|
|
328
385
|
const [openLightbox, setOpenLightbox] = React.useState(false);
|
|
@@ -336,16 +393,14 @@ const Gallery = ({ items, maxWidth = "600px" }) => {
|
|
|
336
393
|
};
|
|
337
394
|
const handleThumbDown = () => {
|
|
338
395
|
setThumbStartIdx(
|
|
339
|
-
(prev) => Math.min(items.length - THUMB_VISIBLE_COUNT, prev + 1)
|
|
396
|
+
(prev) => Math.max(0, Math.min(items.length - THUMB_VISIBLE_COUNT, prev + 1))
|
|
340
397
|
);
|
|
341
398
|
};
|
|
342
399
|
const handlePrev = () => {
|
|
343
400
|
setSelectedIdx((idx) => idx === 0 ? items.length - 1 : idx - 1);
|
|
344
401
|
};
|
|
345
402
|
const handleNext = () => {
|
|
346
|
-
setSelectedIdx(
|
|
347
|
-
(idx) => idx === items.length - 1 ? 0 : idx + 1
|
|
348
|
-
);
|
|
403
|
+
setSelectedIdx((idx) => idx === items.length - 1 ? 0 : idx + 1);
|
|
349
404
|
};
|
|
350
405
|
React.useEffect(() => {
|
|
351
406
|
if (!openLightbox) return;
|
|
@@ -369,49 +424,69 @@ const Gallery = ({ items, maxWidth = "600px" }) => {
|
|
|
369
424
|
var _a;
|
|
370
425
|
if (openLightbox && ((_a = items[selectedIdx]) == null ? void 0 : _a.type) === "video" && videoRef.current) {
|
|
371
426
|
videoRef.current.currentTime = 0;
|
|
372
|
-
videoRef.current.play()
|
|
427
|
+
videoRef.current.play().catch(() => {
|
|
428
|
+
});
|
|
373
429
|
}
|
|
374
430
|
setZoom(1);
|
|
375
431
|
setRotation(0);
|
|
376
432
|
}, [openLightbox, selectedIdx, items]);
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
433
|
+
if (!items || items.length === 0) return null;
|
|
434
|
+
const safeSelectedIdx = Math.max(0, Math.min(selectedIdx, items.length - 1));
|
|
435
|
+
const currentItem = items[safeSelectedIdx];
|
|
436
|
+
const presetSx = resolvePreset.resolvePreset("Gallery", preset, theme);
|
|
437
|
+
const rootSx = [
|
|
438
|
+
{ maxWidth, mx: "auto", minHeight: 300 },
|
|
439
|
+
...presetSx ? [presetSx] : [],
|
|
440
|
+
...Array.isArray(sx) ? sx : sx ? [sx] : []
|
|
441
|
+
];
|
|
442
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
443
|
+
material.Stack,
|
|
444
|
+
{
|
|
445
|
+
direction: isMobile ? "column" : "row",
|
|
446
|
+
gap: 3,
|
|
447
|
+
className,
|
|
448
|
+
sx: rootSx,
|
|
449
|
+
children: [
|
|
450
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
451
|
+
GalleryThumbnails,
|
|
452
|
+
{
|
|
453
|
+
items,
|
|
454
|
+
selectedIdx: safeSelectedIdx,
|
|
455
|
+
onSelect: setSelectedIdx,
|
|
456
|
+
thumbStartIdx,
|
|
457
|
+
visibleCount: THUMB_VISIBLE_COUNT,
|
|
458
|
+
onThumbUp: handleThumbUp,
|
|
459
|
+
onThumbDown: handleThumbDown,
|
|
460
|
+
isMobile
|
|
461
|
+
}
|
|
462
|
+
),
|
|
463
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
464
|
+
GalleryMain,
|
|
465
|
+
{
|
|
466
|
+
item: currentItem,
|
|
467
|
+
onOpenLightbox: () => setOpenLightbox(true),
|
|
468
|
+
isMobile
|
|
469
|
+
}
|
|
470
|
+
),
|
|
471
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
472
|
+
GalleryLightbox,
|
|
473
|
+
{
|
|
474
|
+
open: openLightbox,
|
|
475
|
+
onClose: () => setOpenLightbox(false),
|
|
476
|
+
item: currentItem,
|
|
477
|
+
onPrev: handlePrev,
|
|
478
|
+
onNext: handleNext,
|
|
479
|
+
zoom,
|
|
480
|
+
setZoom,
|
|
481
|
+
rotation,
|
|
482
|
+
setRotation,
|
|
483
|
+
videoRef
|
|
484
|
+
}
|
|
485
|
+
)
|
|
486
|
+
]
|
|
487
|
+
}
|
|
488
|
+
);
|
|
415
489
|
};
|
|
416
490
|
exports.Gallery = Gallery;
|
|
491
|
+
exports.default = Gallery;
|
|
417
492
|
//# sourceMappingURL=Gallery.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Gallery.cjs","sources":["../../../src/components/Gallery/GalleryThumbnails.tsx","../../../src/components/Gallery/GalleryMain.tsx","../../../src/components/Gallery/GalleryLightbox.tsx","../../../src/components/Gallery/Gallery.tsx"],"sourcesContent":["import { Box, IconButton } from '@mui/material';\nimport KeyboardArrowUpIcon from '@mui/icons-material/KeyboardArrowUp';\nimport KeyboardArrowDownIcon from '@mui/icons-material/KeyboardArrowDown';\nimport KeyboardArrowLeftIcon from '@mui/icons-material/KeyboardArrowLeft';\nimport KeyboardArrowRightIcon from '@mui/icons-material/KeyboardArrowRight';\n\nimport type { GalleryItem } from './Gallery';\n\ninterface Props {\n items: GalleryItem[];\n selectedIdx: number;\n onSelect: (idx: number) => void;\n thumbStartIdx: number;\n visibleCount: number;\n onThumbUp: () => void;\n onThumbDown: () => void;\n isMobile: boolean;\n}\n\nexport const GalleryThumbnails = ({\n items,\n selectedIdx,\n onSelect,\n thumbStartIdx,\n visibleCount,\n onThumbUp,\n onThumbDown,\n isMobile,\n}: Props) => (\n <Box\n sx={{\n display: 'flex',\n flexDirection: isMobile ? 'row' : 'column',\n alignItems: 'center',\n minWidth: 70,\n width: 70,\n borderRadius: 1,\n bgcolor: 'grey.100',\n boxSizing: 'border-box',\n py: 1,\n mb: isMobile ? 2 : 0,\n px: isMobile ? 1 : 0,\n }}\n >\n <IconButton\n size=\"small\"\n onClick={onThumbUp}\n disabled={thumbStartIdx === 0}\n aria-label={isMobile ? 'Miniatura anterior' : 'Miniaturas arriba'}\n sx={{ mb: isMobile ? 0 : 1, mr: isMobile ? 1 : 0 }}\n >\n {isMobile ? <KeyboardArrowLeftIcon /> : <KeyboardArrowUpIcon />}\n </IconButton>\n {items\n .slice(thumbStartIdx, thumbStartIdx + visibleCount)\n .map((item, idx) => {\n const realIdx = thumbStartIdx + idx;\n const isSelected = selectedIdx === realIdx;\n const handleSelect = () => onSelect(realIdx);\n return (\n <Box\n key={`${realIdx}-${item.url}`}\n role=\"button\"\n tabIndex={0}\n aria-label={item.title}\n aria-pressed={isSelected}\n onClick={handleSelect}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n handleSelect();\n }\n }}\n sx={{\n cursor: 'pointer',\n width: 60,\n height: 60,\n borderRadius: 1,\n border: (theme) =>\n `2px solid ${\n isSelected ? theme.palette.primary.main : theme.palette.divider\n }`,\n overflow: 'hidden',\n bgcolor: 'action.hover',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n flexShrink: 0,\n m: isMobile ? '0 4px' : '4px 0',\n outline: 'none',\n '&:focus-visible': {\n boxShadow: (theme) =>\n `0 0 0 2px ${theme.palette.primary.main}`,\n },\n }}\n >\n <Box\n component=\"img\"\n src={item.thumbnail ?? item.url}\n alt={item.title}\n sx={{\n width: '100%',\n height: '100%',\n objectFit: 'cover',\n }}\n />\n </Box>\n );\n })}\n <IconButton\n size=\"small\"\n onClick={onThumbDown}\n disabled={thumbStartIdx + visibleCount >= items.length}\n aria-label={isMobile ? 'Miniatura siguiente' : 'Miniaturas abajo'}\n sx={{ mt: isMobile ? 0 : 1, ml: isMobile ? 1 : 0 }}\n >\n {isMobile ? <KeyboardArrowRightIcon /> : <KeyboardArrowDownIcon />}\n </IconButton>\n </Box>\n);\n\nexport default GalleryThumbnails;\n","import { Box, IconButton } from '@mui/material';\nimport FullscreenIcon from '@mui/icons-material/Fullscreen';\n\nimport type { GalleryItem } from './Gallery';\n\ninterface Props {\n item: GalleryItem;\n onOpenLightbox: () => void;\n isMobile: boolean;\n}\n\nexport const GalleryMain = ({ item, onOpenLightbox, isMobile }: Props) => (\n <Box\n sx={{\n width: isMobile ? '80%' : '100%',\n maxHeight: 431,\n maxWidth: isMobile ? '80%' : '100%',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n position: 'relative',\n borderRadius: 1,\n bgcolor: 'grey.100',\n overflow: 'hidden',\n mx: 'auto',\n }}\n >\n <Box\n sx={{\n width: '100%',\n height: '100%',\n cursor: 'pointer',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n }}\n onClick={onOpenLightbox}\n >\n {item.type === 'video' ? (\n <Box\n component=\"video\"\n controls\n src={item.url}\n sx={{\n width: '100%',\n height: '100%',\n objectFit: 'contain',\n bgcolor: 'common.black',\n borderRadius: 1,\n }}\n />\n ) : (\n <Box\n component=\"img\"\n src={item.url}\n alt={item.title}\n sx={{\n width: '100%',\n height: '100%',\n objectFit: 'contain',\n borderRadius: 1,\n }}\n />\n )}\n </Box>\n <IconButton\n onClick={(e) => {\n e.stopPropagation();\n onOpenLightbox();\n }}\n aria-label=\"Abrir en pantalla completa\"\n sx={{\n position: 'absolute',\n top: 16,\n right: 16,\n bgcolor: 'primary.main',\n color: 'primary.contrastText',\n '&:hover': { bgcolor: 'primary.dark' },\n boxShadow: 2,\n }}\n >\n <FullscreenIcon />\n </IconButton>\n </Box>\n);\n\nexport default GalleryMain;\n","import React from 'react';\nimport {\n Dialog,\n DialogContent,\n DialogActions,\n Stack,\n IconButton,\n Box,\n Typography,\n} from '@mui/material';\nimport ArrowBackIosNewIcon from '@mui/icons-material/ArrowBackIosNew';\nimport ArrowForwardIosIcon from '@mui/icons-material/ArrowForwardIos';\nimport ZoomInIcon from '@mui/icons-material/ZoomIn';\nimport ZoomOutIcon from '@mui/icons-material/ZoomOut';\nimport RotateLeftIcon from '@mui/icons-material/RotateLeft';\nimport RotateRightIcon from '@mui/icons-material/RotateRight';\nimport RestartAltIcon from '@mui/icons-material/RestartAlt';\nimport CloseIcon from '@mui/icons-material/Close';\n\nimport { Button } from '../Button';\nimport type { GalleryItem } from './Gallery';\n\nconst ZOOM_MIN = 0.25;\nconst ZOOM_MAX = 5;\nconst ZOOM_STEP = 0.25;\n\ninterface Props {\n open: boolean;\n onClose: () => void;\n item: GalleryItem;\n onPrev: () => void;\n onNext: () => void;\n zoom: number;\n setZoom: React.Dispatch<React.SetStateAction<number>>;\n rotation: number;\n setRotation: React.Dispatch<React.SetStateAction<number>>;\n videoRef?: React.RefObject<HTMLVideoElement | null>;\n}\n\nexport const GalleryLightbox = ({\n open,\n onClose,\n item,\n onPrev,\n onNext,\n zoom,\n setZoom,\n rotation,\n setRotation,\n videoRef,\n}: Props) => (\n <Dialog open={open} onClose={onClose} fullWidth maxWidth=\"lg\">\n <DialogContent\n sx={{\n minHeight: 431,\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n gap: 2,\n }}\n >\n <Stack\n direction=\"row\"\n justifyContent=\"space-between\"\n alignItems=\"center\"\n width=\"100%\"\n >\n <IconButton onClick={onPrev} aria-label=\"Anterior\">\n <ArrowBackIosNewIcon />\n </IconButton>\n <Typography\n variant=\"subtitle1\"\n fontWeight={600}\n sx={{ flex: 1, textAlign: 'center' }}\n >\n {item.title}\n </Typography>\n <IconButton onClick={onNext} aria-label=\"Siguiente\">\n <ArrowForwardIosIcon />\n </IconButton>\n </Stack>\n\n {item.type === 'video' ? (\n <Box\n component=\"video\"\n key={item.url}\n ref={videoRef}\n src={item.url}\n controls\n autoPlay\n sx={{\n width: '100%',\n maxWidth: 900,\n maxHeight: '70vh',\n objectFit: 'contain',\n bgcolor: 'common.black',\n borderRadius: 1,\n }}\n />\n ) : (\n <Box\n component=\"img\"\n src={item.url}\n alt={item.title}\n sx={{\n transform: `scale(${zoom}) rotate(${rotation}deg)`,\n transition: 'transform 0.2s ease',\n width: '100%',\n maxWidth: 900,\n maxHeight: '70vh',\n objectFit: 'contain',\n borderRadius: 1,\n }}\n />\n )}\n </DialogContent>\n\n <DialogActions\n sx={{\n display: 'flex',\n justifyContent: item.type === 'image' ? 'space-between' : 'end',\n flexWrap: 'wrap',\n gap: 1,\n }}\n >\n {item.type === 'image' && (\n <>\n <Stack direction=\"row\" spacing={1}>\n <Button\n variant=\"outlined\"\n startIcon={<ZoomInIcon />}\n onClick={() => setZoom((z) => Math.min(ZOOM_MAX, z + ZOOM_STEP))}\n disabled={zoom >= ZOOM_MAX}\n >\n Zoom +\n </Button>\n <Button\n variant=\"outlined\"\n startIcon={<ZoomOutIcon />}\n onClick={() => setZoom((z) => Math.max(ZOOM_MIN, z - ZOOM_STEP))}\n disabled={zoom <= ZOOM_MIN}\n >\n Zoom −\n </Button>\n </Stack>\n <Stack direction=\"row\" spacing={1}>\n <Button\n variant=\"outlined\"\n aria-label=\"Rotar a la izquierda\"\n onClick={() => setRotation((r) => (r - 90) % 360)}\n >\n <RotateLeftIcon />\n </Button>\n <Button\n variant=\"outlined\"\n aria-label=\"Rotar a la derecha\"\n onClick={() => setRotation((r) => (r + 90) % 360)}\n >\n <RotateRightIcon />\n </Button>\n </Stack>\n <Button\n variant=\"outlined\"\n startIcon={<RestartAltIcon />}\n onClick={() => {\n setZoom(1);\n setRotation(0);\n }}\n >\n Reset\n </Button>\n </>\n )}\n <Button\n variant=\"contained\"\n startIcon={<CloseIcon />}\n onClick={onClose}\n >\n Cerrar\n </Button>\n </DialogActions>\n </Dialog>\n);\n\nexport default GalleryLightbox;\n","import React, { useState, useRef, useEffect } from 'react';\nimport { Stack, useMediaQuery } from '@mui/material';\nimport { useTheme, type SxProps, type Theme } from '@mui/material/styles';\n\nimport { GalleryThumbnails } from './GalleryThumbnails';\nimport { GalleryMain } from './GalleryMain';\nimport { GalleryLightbox } from './GalleryLightbox';\nimport { resolvePreset } from '../_shared/resolvePreset';\n\n// ── Tipos de dominio ─────────────────────────────────────────────────────\nexport interface GalleryItem {\n url: string;\n /**\n * Tipo del item. Los literales `\"image\"` / `\"video\"` activan el render\n * específico; cualquier otro string se trata como imagen por default.\n */\n type: 'image' | 'video' | (string & {});\n title: string;\n /** Si no se provee, se usa `url` como thumbnail. */\n thumbnail?: string;\n}\n\nexport interface GalleryProps {\n items: GalleryItem[];\n /** Ancho máximo del contenedor. Default: `'600px'`. */\n maxWidth?: string | number;\n /**\n * Nombre del preset de estilo registrado en `theme.styles.Gallery`.\n * - `\"default\"` (o ausente) = estilo built-in del paquete.\n */\n preset?: string;\n /** sx del contenedor raíz. Se mergea después del preset. */\n sx?: SxProps<Theme>;\n className?: string;\n}\n\nexport const Gallery: React.FC<GalleryProps> = ({\n items,\n maxWidth = '600px',\n preset,\n sx,\n className,\n}) => {\n const theme = useTheme();\n const isMobile = useMediaQuery('(max-width:700px)');\n const [selectedIdx, setSelectedIdx] = useState(0);\n const [openLightbox, setOpenLightbox] = useState(false);\n const [zoom, setZoom] = useState(1);\n const [rotation, setRotation] = useState(0);\n const videoRef = useRef<HTMLVideoElement | null>(null);\n\n const [thumbStartIdx, setThumbStartIdx] = useState(0);\n const THUMB_VISIBLE_COUNT = isMobile ? 3 : 5;\n\n const handleThumbUp = () => {\n setThumbStartIdx((prev) => Math.max(0, prev - 1));\n };\n const handleThumbDown = () => {\n setThumbStartIdx((prev) =>\n Math.max(0, Math.min(items.length - THUMB_VISIBLE_COUNT, prev + 1)),\n );\n };\n\n const handlePrev = () => {\n setSelectedIdx((idx) => (idx === 0 ? items.length - 1 : idx - 1));\n };\n const handleNext = () => {\n setSelectedIdx((idx) => (idx === items.length - 1 ? 0 : idx + 1));\n };\n\n useEffect(() => {\n if (!openLightbox) return;\n const handleKey = (e: KeyboardEvent) => {\n switch (e.key) {\n case 'ArrowLeft':\n handlePrev();\n break;\n case 'ArrowRight':\n handleNext();\n break;\n case 'Escape':\n setOpenLightbox(false);\n break;\n }\n };\n window.addEventListener('keydown', handleKey);\n return () => window.removeEventListener('keydown', handleKey);\n }, [openLightbox, items.length]);\n\n // Reset zoom/rotación al navegar o abrir. Autoplay del video con catch\n // para evitar unhandled rejections por políticas de autoplay del browser.\n useEffect(() => {\n if (\n openLightbox &&\n items[selectedIdx]?.type === 'video' &&\n videoRef.current\n ) {\n videoRef.current.currentTime = 0;\n videoRef.current.play().catch(() => {\n /* autoplay bloqueado — el usuario puede dar play manualmente */\n });\n }\n setZoom(1);\n setRotation(0);\n }, [openLightbox, selectedIdx, items]);\n\n if (!items || items.length === 0) return null;\n\n const safeSelectedIdx = Math.max(0, Math.min(selectedIdx, items.length - 1));\n const currentItem = items[safeSelectedIdx];\n\n const presetSx = resolvePreset('Gallery', preset, theme);\n\n const rootSx: SxProps<Theme> = [\n { maxWidth, mx: 'auto', minHeight: 300 },\n ...(presetSx ? [presetSx] : []),\n ...(Array.isArray(sx) ? sx : sx ? [sx] : []),\n ];\n\n return (\n <Stack\n direction={isMobile ? 'column' : 'row'}\n gap={3}\n className={className}\n sx={rootSx}\n >\n <GalleryThumbnails\n items={items}\n selectedIdx={safeSelectedIdx}\n onSelect={setSelectedIdx}\n thumbStartIdx={thumbStartIdx}\n visibleCount={THUMB_VISIBLE_COUNT}\n onThumbUp={handleThumbUp}\n onThumbDown={handleThumbDown}\n isMobile={isMobile}\n />\n <GalleryMain\n item={currentItem}\n onOpenLightbox={() => setOpenLightbox(true)}\n isMobile={isMobile}\n />\n <GalleryLightbox\n open={openLightbox}\n onClose={() => setOpenLightbox(false)}\n item={currentItem}\n onPrev={handlePrev}\n onNext={handleNext}\n zoom={zoom}\n setZoom={setZoom}\n rotation={rotation}\n setRotation={setRotation}\n videoRef={videoRef}\n />\n </Stack>\n );\n};\n\nexport default Gallery;\n"],"names":["jsxs","Box","jsx","IconButton","Dialog","DialogContent","Stack","Typography","DialogActions","Fragment","Button","useTheme","useMediaQuery","useState","useRef","useEffect","resolvePreset"],"mappings":"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"}
|