@soyfri/shared-library 2.0.0-beta.1 → 2.0.0-beta.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/{dist/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/{dist/components → components}/Input/Input.definitions.d.ts +1 -0
- package/components/RadioGroup/RadioGroup.cjs +202 -0
- package/components/RadioGroup/RadioGroup.cjs.map +1 -0
- package/components/RadioGroup/RadioGroup.d.ts +53 -0
- package/components/RadioGroup/RadioGroup.definitions.d.ts +6 -0
- package/components/RadioGroup/RadioGroup.js +202 -0
- package/components/RadioGroup/RadioGroup.js.map +1 -0
- package/components/RadioGroup/RadioGroup.sx.d.ts +20 -0
- package/components/RadioGroup/RadioGroup.types.d.ts +1 -0
- package/components/RadioGroup/index.d.ts +2 -0
- package/components/RadioGroup.d.ts +6 -0
- package/components/Stepper/Stepper.cjs +162 -0
- package/components/Stepper/Stepper.cjs.map +1 -0
- package/components/Stepper/Stepper.js +162 -0
- package/components/Stepper/Stepper.js.map +1 -0
- package/components/Switch/Switch.cjs +181 -0
- package/components/Switch/Switch.cjs.map +1 -0
- package/components/Switch/Switch.d.ts +43 -0
- package/components/Switch/Switch.definitions.d.ts +7 -0
- package/components/Switch/Switch.js +181 -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/{dist/index.cjs → index.cjs} +24 -0
- package/{dist/index.cjs.map → index.cjs.map} +1 -1
- package/{dist/index.js → index.js} +7 -1
- package/{dist/mui.d.ts → mui.d.ts} +1 -0
- package/package.json +174 -43
- package/{dist/theme → theme}/componentStyles.d.ts +1 -1
- 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 -139
- 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/components/Stepper/Stepper.cjs +0 -49
- package/dist/components/Stepper/Stepper.cjs.map +0 -1
- package/dist/components/Stepper/Stepper.js +0 -49
- package/dist/components/Stepper/Stepper.js.map +0 -1
- 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 -44
- 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/{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.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.d.ts +0 -0
- /package/{dist/components → components}/Stepper/Stepper.definition.d.ts +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.d.ts → index.d.ts} +0 -0
- /package/{dist/index.js.map → index.js.map} +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}/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
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __defProps = Object.defineProperties;
|
|
3
|
+
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
4
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
7
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
8
|
+
var __spreadValues = (a, b) => {
|
|
9
|
+
for (var prop in b || (b = {}))
|
|
10
|
+
if (__hasOwnProp.call(b, prop))
|
|
11
|
+
__defNormalProp(a, prop, b[prop]);
|
|
12
|
+
if (__getOwnPropSymbols)
|
|
13
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
14
|
+
if (__propIsEnum.call(b, prop))
|
|
15
|
+
__defNormalProp(a, prop, b[prop]);
|
|
16
|
+
}
|
|
17
|
+
return a;
|
|
18
|
+
};
|
|
19
|
+
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
20
|
+
var __objRest = (source, exclude) => {
|
|
21
|
+
var target = {};
|
|
22
|
+
for (var prop in source)
|
|
23
|
+
if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
|
|
24
|
+
target[prop] = source[prop];
|
|
25
|
+
if (source != null && __getOwnPropSymbols)
|
|
26
|
+
for (var prop of __getOwnPropSymbols(source)) {
|
|
27
|
+
if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
|
|
28
|
+
target[prop] = source[prop];
|
|
29
|
+
}
|
|
30
|
+
return target;
|
|
31
|
+
};
|
|
32
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
33
|
+
import { useTheme } from "@mui/material/styles";
|
|
34
|
+
import { FormControl, FormLabel, RadioGroup as RadioGroup$1, FormHelperText, FormControlLabel, Radio } from "@mui/material";
|
|
35
|
+
import { Controller } from "react-hook-form";
|
|
36
|
+
import { r as resolvePreset } from "../../resolvePreset-B-IB0ehH.js";
|
|
37
|
+
const toRadius = (borderRadius) => typeof borderRadius === "number" ? `${borderRadius}px` : borderRadius;
|
|
38
|
+
const FOCUS_TRANSITION = "border-color 200ms cubic-bezier(0.0, 0, 0.2, 1) 0ms, box-shadow 200ms cubic-bezier(0.0, 0, 0.2, 1) 0ms";
|
|
39
|
+
const buildRadioGroupSx = ({
|
|
40
|
+
bordered,
|
|
41
|
+
borderRadius,
|
|
42
|
+
error
|
|
43
|
+
}) => {
|
|
44
|
+
const radius = toRadius(borderRadius);
|
|
45
|
+
if (!bordered) {
|
|
46
|
+
return {
|
|
47
|
+
"& .MuiFormHelperText-root": { marginLeft: 0 }
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
return (theme) => ({
|
|
51
|
+
"& .MuiRadioGroup-root": __spreadProps(__spreadValues({
|
|
52
|
+
paddingTop: 1.25,
|
|
53
|
+
paddingBottom: 1.25,
|
|
54
|
+
paddingX: 1.5,
|
|
55
|
+
border: `1px solid ${error ? theme.palette.error.main : theme.palette.divider}`,
|
|
56
|
+
borderRadius: radius,
|
|
57
|
+
transition: FOCUS_TRANSITION
|
|
58
|
+
}, error && {
|
|
59
|
+
boxShadow: `0 0 0 1px ${theme.palette.error.main}`
|
|
60
|
+
}), {
|
|
61
|
+
// Focus del usuario sobre cualquier radio interno.
|
|
62
|
+
"&:focus-within": {
|
|
63
|
+
borderColor: error ? theme.palette.error.main : theme.palette.primary.main,
|
|
64
|
+
boxShadow: `0 0 0 1px ${error ? theme.palette.error.main : theme.palette.primary.main}`
|
|
65
|
+
}
|
|
66
|
+
}),
|
|
67
|
+
"& .MuiFormHelperText-root": {
|
|
68
|
+
marginLeft: 0
|
|
69
|
+
},
|
|
70
|
+
"& .MuiFormLabel-root": {
|
|
71
|
+
marginBottom: 0.5
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
};
|
|
75
|
+
const RadioGroup = (props) => {
|
|
76
|
+
const _a = props, {
|
|
77
|
+
options,
|
|
78
|
+
label,
|
|
79
|
+
row = true,
|
|
80
|
+
size = "small",
|
|
81
|
+
disabled = false,
|
|
82
|
+
error = false,
|
|
83
|
+
helperText,
|
|
84
|
+
bordered = true,
|
|
85
|
+
borderRadius = 10,
|
|
86
|
+
defaultValue,
|
|
87
|
+
preset,
|
|
88
|
+
sx
|
|
89
|
+
} = _a, rest = __objRest(_a, [
|
|
90
|
+
"options",
|
|
91
|
+
"label",
|
|
92
|
+
"row",
|
|
93
|
+
"size",
|
|
94
|
+
"disabled",
|
|
95
|
+
"error",
|
|
96
|
+
"helperText",
|
|
97
|
+
"bordered",
|
|
98
|
+
"borderRadius",
|
|
99
|
+
"defaultValue",
|
|
100
|
+
"preset",
|
|
101
|
+
"sx"
|
|
102
|
+
]);
|
|
103
|
+
const theme = useTheme();
|
|
104
|
+
const presetSx = resolvePreset("RadioGroup", preset, theme);
|
|
105
|
+
const buildSx = (effectiveError) => [
|
|
106
|
+
buildRadioGroupSx({ bordered, borderRadius, error: effectiveError }),
|
|
107
|
+
...presetSx ? [presetSx] : [],
|
|
108
|
+
...Array.isArray(sx) ? sx : [sx]
|
|
109
|
+
];
|
|
110
|
+
const renderOptions = (currentValue, onChange2, fieldName) => options.map((opt) => {
|
|
111
|
+
var _a2;
|
|
112
|
+
const inputId = (_a2 = opt.id) != null ? _a2 : `${fieldName != null ? fieldName : "radio"}-${opt.value}`;
|
|
113
|
+
return /* @__PURE__ */ jsx(
|
|
114
|
+
FormControlLabel,
|
|
115
|
+
{
|
|
116
|
+
value: opt.value,
|
|
117
|
+
control: /* @__PURE__ */ jsx(
|
|
118
|
+
Radio,
|
|
119
|
+
{
|
|
120
|
+
id: inputId,
|
|
121
|
+
size,
|
|
122
|
+
disabled: disabled || opt.disabled
|
|
123
|
+
}
|
|
124
|
+
),
|
|
125
|
+
label: opt.label,
|
|
126
|
+
checked: currentValue === opt.value,
|
|
127
|
+
disabled: disabled || opt.disabled
|
|
128
|
+
},
|
|
129
|
+
inputId
|
|
130
|
+
);
|
|
131
|
+
});
|
|
132
|
+
if ("control" in props && props.control) {
|
|
133
|
+
const { name: name2, control, validation } = props;
|
|
134
|
+
return /* @__PURE__ */ jsx(
|
|
135
|
+
Controller,
|
|
136
|
+
{
|
|
137
|
+
name: name2,
|
|
138
|
+
control,
|
|
139
|
+
rules: validation,
|
|
140
|
+
defaultValue,
|
|
141
|
+
render: ({ field, fieldState: { error: fieldError } }) => {
|
|
142
|
+
var _a2, _b;
|
|
143
|
+
const finalError = !!fieldError || error;
|
|
144
|
+
const finalHelperText = (_a2 = fieldError == null ? void 0 : fieldError.message) != null ? _a2 : helperText;
|
|
145
|
+
return /* @__PURE__ */ jsxs(
|
|
146
|
+
FormControl,
|
|
147
|
+
{
|
|
148
|
+
error: finalError,
|
|
149
|
+
disabled,
|
|
150
|
+
sx: buildSx(finalError),
|
|
151
|
+
fullWidth: true,
|
|
152
|
+
children: [
|
|
153
|
+
label && /* @__PURE__ */ jsx(FormLabel, { children: label }),
|
|
154
|
+
/* @__PURE__ */ jsx(
|
|
155
|
+
RadioGroup$1,
|
|
156
|
+
__spreadProps(__spreadValues({}, rest), {
|
|
157
|
+
row,
|
|
158
|
+
name: field.name,
|
|
159
|
+
value: (_b = field.value) != null ? _b : "",
|
|
160
|
+
onBlur: field.onBlur,
|
|
161
|
+
onChange: (_e, value2) => field.onChange(value2),
|
|
162
|
+
children: renderOptions(field.value, field.onChange, field.name)
|
|
163
|
+
})
|
|
164
|
+
),
|
|
165
|
+
finalHelperText && /* @__PURE__ */ jsx(FormHelperText, { children: finalHelperText })
|
|
166
|
+
]
|
|
167
|
+
}
|
|
168
|
+
);
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
);
|
|
172
|
+
}
|
|
173
|
+
const { value, onChange, name } = props;
|
|
174
|
+
return /* @__PURE__ */ jsxs(
|
|
175
|
+
FormControl,
|
|
176
|
+
{
|
|
177
|
+
error,
|
|
178
|
+
disabled,
|
|
179
|
+
sx: buildSx(error),
|
|
180
|
+
fullWidth: true,
|
|
181
|
+
children: [
|
|
182
|
+
label && /* @__PURE__ */ jsx(FormLabel, { children: label }),
|
|
183
|
+
/* @__PURE__ */ jsx(
|
|
184
|
+
RadioGroup$1,
|
|
185
|
+
__spreadProps(__spreadValues({}, rest), {
|
|
186
|
+
row,
|
|
187
|
+
name,
|
|
188
|
+
value: value != null ? value : "",
|
|
189
|
+
onChange: (_e, next) => onChange(next),
|
|
190
|
+
children: renderOptions(value, onChange, name)
|
|
191
|
+
})
|
|
192
|
+
),
|
|
193
|
+
helperText && /* @__PURE__ */ jsx(FormHelperText, { children: helperText })
|
|
194
|
+
]
|
|
195
|
+
}
|
|
196
|
+
);
|
|
197
|
+
};
|
|
198
|
+
export {
|
|
199
|
+
RadioGroup,
|
|
200
|
+
RadioGroup as default
|
|
201
|
+
};
|
|
202
|
+
//# sourceMappingURL=RadioGroup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RadioGroup.js","sources":["../../../src/components/RadioGroup/RadioGroup.sx.ts","../../../src/components/RadioGroup/RadioGroup.tsx"],"sourcesContent":["import type { SxProps, Theme } from '@mui/material/styles';\n\nexport interface BuildRadioGroupSxOptions {\n bordered: boolean;\n borderRadius: number | string;\n error: boolean;\n}\n\nconst toRadius = (borderRadius: number | string) =>\n typeof borderRadius === 'number' ? `${borderRadius}px` : borderRadius;\n\n/**\n * Transición compartida (matchea el InputGroup).\n */\nconst FOCUS_TRANSITION =\n 'border-color 200ms cubic-bezier(0.0, 0, 0.2, 1) 0ms, ' +\n 'box-shadow 200ms cubic-bezier(0.0, 0, 0.2, 1) 0ms';\n\n/**\n * Builder de sx para RadioGroup. Reproduce el estilo del antiguo\n * `FormRadioGroup` legacy: contenedor con borde + padding vertical.\n *\n * Cuando `bordered=true`, el contenedor gana:\n * - `:focus-within` → borde + shadow primario (mismo patrón que `InputGroup`).\n * - `error=true` → borde + shadow de error (palette.error.main).\n *\n * El shadow es de 1px, así que no hay shift de layout — sólo se intensifica\n * visualmente el borde sin empujar nada alrededor.\n *\n * Si `bordered=false`, devuelve un sx mínimo (sólo helper text reset).\n */\nexport const buildRadioGroupSx = ({\n bordered,\n borderRadius,\n error,\n}: BuildRadioGroupSxOptions): SxProps<Theme> => {\n const radius = toRadius(borderRadius);\n\n if (!bordered) {\n return {\n '& .MuiFormHelperText-root': { marginLeft: 0 },\n };\n }\n\n return (theme) => ({\n '& .MuiRadioGroup-root': {\n paddingTop: 1.25,\n paddingBottom: 1.25,\n paddingX: 1.5,\n border: `1px solid ${\n error ? theme.palette.error.main : theme.palette.divider\n }`,\n borderRadius: radius,\n transition: FOCUS_TRANSITION,\n ...(error && {\n boxShadow: `0 0 0 1px ${theme.palette.error.main}`,\n }),\n // Focus del usuario sobre cualquier radio interno.\n '&:focus-within': {\n borderColor: error\n ? theme.palette.error.main\n : theme.palette.primary.main,\n boxShadow: `0 0 0 1px ${\n error ? theme.palette.error.main : theme.palette.primary.main\n }`,\n },\n },\n '& .MuiFormHelperText-root': {\n marginLeft: 0,\n },\n '& .MuiFormLabel-root': {\n marginBottom: 0.5,\n },\n });\n};\n","import { useTheme } from '@mui/material/styles';\nimport {\n FormControl,\n FormControlLabel,\n FormHelperText,\n FormLabel,\n Radio,\n RadioGroup as MuiRadioGroup,\n type RadioGroupProps as MuiRadioGroupProps,\n type SxProps,\n type Theme,\n} from '@mui/material';\nimport { Controller, type Control, type RegisterOptions } from 'react-hook-form';\n\nimport { buildRadioGroupSx } from './RadioGroup.sx';\nimport { resolvePreset } from '../_shared/resolvePreset';\n\n// ── Tipos de dominio ─────────────────────────────────────────────────────\nexport interface RadioOption {\n /** Valor que se emite cuando se selecciona la opción. */\n value: string;\n /** Texto mostrado al lado del radio. */\n label: string;\n /** Deshabilitar opción individualmente. */\n disabled?: boolean;\n /** ID custom del input (default: prefijo + value). */\n id?: string;\n}\n\nexport type RadioGroupSize = 'small' | 'medium';\n\n// ── Props base (todo lo común entre RHF y controlado) ────────────────────\nexport interface BaseRadioGroupProps\n extends Omit<MuiRadioGroupProps, 'value' | 'onChange' | 'defaultValue'> {\n options: RadioOption[];\n /** Label superior del grupo. */\n label?: string;\n /** Distribución horizontal (default: true — replica el comportamiento legacy). */\n row?: boolean;\n size?: RadioGroupSize;\n disabled?: boolean;\n error?: boolean;\n helperText?: string;\n /** Renderiza un contenedor con borde estilo \"form field\". Default: true. */\n bordered?: boolean;\n /** Border radius del contenedor (cuando bordered). Default: 10. */\n borderRadius?: number | string;\n defaultValue?: string;\n /**\n * Nombre del preset de estilo registrado en `theme.styles.RadioGroup`.\n * - `\"default\"` (o ausente) = estilo built-in del paquete.\n * - Cualquier otro string = mergea el preset encima del estilo built-in.\n */\n preset?: string;\n sx?: SxProps<Theme>;\n}\n\n// ── Variantes discriminadas (RHF vs controlado) ──────────────────────────\nexport interface RHFRadioGroupProps extends BaseRadioGroupProps {\n name: string;\n control: Control<any>;\n validation?: RegisterOptions;\n value?: never;\n onChange?: never;\n}\n\nexport interface ControlledRadioGroupProps extends BaseRadioGroupProps {\n name?: string;\n control?: never;\n validation?: never;\n value: string;\n onChange: (value: string) => void;\n}\n\n// ── API pública final ────────────────────────────────────────────────────\nexport type RadioGroupProps = RHFRadioGroupProps | ControlledRadioGroupProps;\n\nexport const RadioGroup: React.FC<RadioGroupProps> = (props) => {\n const {\n options,\n label,\n row = true,\n size = 'small',\n disabled = false,\n error = false,\n helperText,\n bordered = true,\n borderRadius = 10,\n defaultValue,\n preset,\n sx,\n ...rest\n } = props as ControlledRadioGroupProps & {\n control?: Control<any>;\n validation?: RegisterOptions;\n };\n\n const theme = useTheme();\n const presetSx = resolvePreset('RadioGroup', preset, theme);\n\n // Construye el sx con el estado de error efectivo; se llama por rama\n // (RHF usa el error del Controller, controlado usa el prop `error`).\n const buildSx = (effectiveError: boolean) => [\n buildRadioGroupSx({ bordered, borderRadius, error: effectiveError }),\n ...(presetSx ? [presetSx] : []),\n ...(Array.isArray(sx) ? sx : [sx]),\n ];\n\n const renderOptions = (\n currentValue: string | undefined,\n onChange: (value: string) => void,\n fieldName?: string,\n ) =>\n options.map((opt) => {\n const inputId = opt.id ?? `${fieldName ?? 'radio'}-${opt.value}`;\n return (\n <FormControlLabel\n key={inputId}\n value={opt.value}\n control={\n <Radio\n id={inputId}\n size={size}\n disabled={disabled || opt.disabled}\n />\n }\n label={opt.label}\n checked={currentValue === opt.value}\n disabled={disabled || opt.disabled}\n />\n );\n });\n\n // ── RHF mode ──────────────────────────────────────────────────────────\n if ('control' in props && props.control) {\n const { name, control, validation } = props as RHFRadioGroupProps;\n return (\n <Controller\n name={name}\n control={control}\n rules={validation}\n defaultValue={defaultValue}\n render={({ field, fieldState: { error: fieldError } }) => {\n const finalError = !!fieldError || error;\n const finalHelperText = fieldError?.message ?? helperText;\n return (\n <FormControl\n error={finalError}\n disabled={disabled}\n sx={buildSx(finalError)}\n fullWidth\n >\n {label && <FormLabel>{label}</FormLabel>}\n <MuiRadioGroup\n {...rest}\n row={row}\n name={field.name}\n value={field.value ?? ''}\n onBlur={field.onBlur}\n onChange={(_e, value) => field.onChange(value)}\n >\n {renderOptions(field.value, field.onChange, field.name)}\n </MuiRadioGroup>\n {finalHelperText && <FormHelperText>{finalHelperText}</FormHelperText>}\n </FormControl>\n );\n }}\n />\n );\n }\n\n // ── Controlled mode ───────────────────────────────────────────────────\n const { value, onChange, name } = props as ControlledRadioGroupProps;\n return (\n <FormControl\n error={error}\n disabled={disabled}\n sx={buildSx(error)}\n fullWidth\n >\n {label && <FormLabel>{label}</FormLabel>}\n <MuiRadioGroup\n {...rest}\n row={row}\n name={name}\n value={value ?? ''}\n onChange={(_e, next) => onChange(next)}\n >\n {renderOptions(value, onChange, name)}\n </MuiRadioGroup>\n {helperText && <FormHelperText>{helperText}</FormHelperText>}\n </FormControl>\n );\n};\n\nexport default RadioGroup;\n"],"names":["onChange","_a","name","MuiRadioGroup","value"],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { SxProps, Theme } from '@mui/material/styles';
|
|
2
|
+
export interface BuildRadioGroupSxOptions {
|
|
3
|
+
bordered: boolean;
|
|
4
|
+
borderRadius: number | string;
|
|
5
|
+
error: boolean;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Builder de sx para RadioGroup. Reproduce el estilo del antiguo
|
|
9
|
+
* `FormRadioGroup` legacy: contenedor con borde + padding vertical.
|
|
10
|
+
*
|
|
11
|
+
* Cuando `bordered=true`, el contenedor gana:
|
|
12
|
+
* - `:focus-within` → borde + shadow primario (mismo patrón que `InputGroup`).
|
|
13
|
+
* - `error=true` → borde + shadow de error (palette.error.main).
|
|
14
|
+
*
|
|
15
|
+
* El shadow es de 1px, así que no hay shift de layout — sólo se intensifica
|
|
16
|
+
* visualmente el borde sin empujar nada alrededor.
|
|
17
|
+
*
|
|
18
|
+
* Si `bordered=false`, devuelve un sx mínimo (sólo helper text reset).
|
|
19
|
+
*/
|
|
20
|
+
export declare const buildRadioGroupSx: ({ bordered, borderRadius, error, }: BuildRadioGroupSxOptions) => SxProps<Theme>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export type { RadioOption, RadioGroupSize, BaseRadioGroupProps, RHFRadioGroupProps, ControlledRadioGroupProps, RadioGroupProps, } from './RadioGroup';
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const jsxRuntime = require("react/jsx-runtime");
|
|
4
|
+
const React = require("react");
|
|
5
|
+
const material = require("@mui/material");
|
|
6
|
+
const ChevronLeftIcon = require("@mui/icons-material/ChevronLeft");
|
|
7
|
+
const ChevronRightIcon = require("@mui/icons-material/ChevronRight");
|
|
8
|
+
const useWizard = require("../../useWizard-CWdIxZzX.cjs");
|
|
9
|
+
const Stepper = ({
|
|
10
|
+
children,
|
|
11
|
+
orientation = "horizontal",
|
|
12
|
+
alternateLabel = false,
|
|
13
|
+
sx,
|
|
14
|
+
currentStep: currentStepProp
|
|
15
|
+
}) => {
|
|
16
|
+
const wizard = useWizard.useWizard();
|
|
17
|
+
const currentStep = currentStepProp !== void 0 ? currentStepProp : wizard.totalSteps > 0 ? wizard.currentStep : 0;
|
|
18
|
+
const isHorizontal = orientation === "horizontal";
|
|
19
|
+
const scrollRef = React.useRef(null);
|
|
20
|
+
const [canScrollLeft, setCanScrollLeft] = React.useState(false);
|
|
21
|
+
const [canScrollRight, setCanScrollRight] = React.useState(false);
|
|
22
|
+
const updateScrollState = () => {
|
|
23
|
+
const el = scrollRef.current;
|
|
24
|
+
if (!el) return;
|
|
25
|
+
const { scrollLeft, scrollWidth, clientWidth } = el;
|
|
26
|
+
setCanScrollLeft(scrollLeft > 1);
|
|
27
|
+
setCanScrollRight(scrollLeft + clientWidth < scrollWidth - 1);
|
|
28
|
+
};
|
|
29
|
+
React.useLayoutEffect(() => {
|
|
30
|
+
if (!isHorizontal) return;
|
|
31
|
+
updateScrollState();
|
|
32
|
+
}, [isHorizontal, children.length, currentStep]);
|
|
33
|
+
React.useEffect(() => {
|
|
34
|
+
if (!isHorizontal) return;
|
|
35
|
+
const el = scrollRef.current;
|
|
36
|
+
if (!el) return;
|
|
37
|
+
const onScroll = () => updateScrollState();
|
|
38
|
+
el.addEventListener("scroll", onScroll, { passive: true });
|
|
39
|
+
const ro = new ResizeObserver(() => updateScrollState());
|
|
40
|
+
ro.observe(el);
|
|
41
|
+
return () => {
|
|
42
|
+
el.removeEventListener("scroll", onScroll);
|
|
43
|
+
ro.disconnect();
|
|
44
|
+
};
|
|
45
|
+
}, [isHorizontal]);
|
|
46
|
+
const scrollBy = (delta) => {
|
|
47
|
+
const el = scrollRef.current;
|
|
48
|
+
if (!el) return;
|
|
49
|
+
el.scrollBy({ left: delta, behavior: "smooth" });
|
|
50
|
+
};
|
|
51
|
+
const showArrows = isHorizontal && (canScrollLeft || canScrollRight);
|
|
52
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(material.Box, { sx, children: [
|
|
53
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
54
|
+
material.Box,
|
|
55
|
+
{
|
|
56
|
+
sx: isHorizontal ? {
|
|
57
|
+
display: "flex",
|
|
58
|
+
alignItems: "center",
|
|
59
|
+
width: "100%",
|
|
60
|
+
gap: 0.5
|
|
61
|
+
} : void 0,
|
|
62
|
+
children: [
|
|
63
|
+
isHorizontal && /* @__PURE__ */ jsxRuntime.jsx(
|
|
64
|
+
material.IconButton,
|
|
65
|
+
{
|
|
66
|
+
"aria-label": "Anterior",
|
|
67
|
+
size: "small",
|
|
68
|
+
onClick: () => scrollBy(-160),
|
|
69
|
+
disabled: !canScrollLeft,
|
|
70
|
+
sx: {
|
|
71
|
+
flex: "0 0 auto",
|
|
72
|
+
// Reservamos el slot siempre que haya overflow en algún lado,
|
|
73
|
+
// así el área scroll tiene un ancho estable (no saltan los
|
|
74
|
+
// steps cuando aparece/desaparece la flecha).
|
|
75
|
+
visibility: showArrows ? "visible" : "hidden"
|
|
76
|
+
},
|
|
77
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(ChevronLeftIcon, { fontSize: "small" })
|
|
78
|
+
}
|
|
79
|
+
),
|
|
80
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
81
|
+
material.Box,
|
|
82
|
+
{
|
|
83
|
+
ref: scrollRef,
|
|
84
|
+
sx: isHorizontal ? {
|
|
85
|
+
flex: "1 1 auto",
|
|
86
|
+
minWidth: 0,
|
|
87
|
+
overflowX: "auto",
|
|
88
|
+
scrollBehavior: "smooth",
|
|
89
|
+
WebkitOverflowScrolling: "touch",
|
|
90
|
+
// Ocultamos la scrollbar (la navegación es con flechas)
|
|
91
|
+
scrollbarWidth: "none",
|
|
92
|
+
"&::-webkit-scrollbar": { display: "none" }
|
|
93
|
+
} : void 0,
|
|
94
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
95
|
+
material.Stepper,
|
|
96
|
+
{
|
|
97
|
+
activeStep: currentStep,
|
|
98
|
+
orientation,
|
|
99
|
+
alternativeLabel: alternateLabel,
|
|
100
|
+
sx: isHorizontal ? {
|
|
101
|
+
display: "inline-flex",
|
|
102
|
+
flexWrap: "nowrap",
|
|
103
|
+
minWidth: "100%",
|
|
104
|
+
width: "max-content",
|
|
105
|
+
// Evita que los steps se compriman al punto de solaparse.
|
|
106
|
+
"& .MuiStep-root": { flex: "0 0 auto", minWidth: 120 }
|
|
107
|
+
} : void 0,
|
|
108
|
+
children: children.map((child, idx) => {
|
|
109
|
+
const { label, completed, disabled, className, sx: stepSx, dotColor, activeDotColor, completedDotColor, iconTextColor } = child.props;
|
|
110
|
+
return /* @__PURE__ */ jsxRuntime.jsx(material.Step, { completed, disabled, className, sx: stepSx, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
111
|
+
material.StepLabel,
|
|
112
|
+
{
|
|
113
|
+
sx: {
|
|
114
|
+
pointerEvents: "none",
|
|
115
|
+
"& .MuiStepIcon-root": {
|
|
116
|
+
color: dotColor
|
|
117
|
+
},
|
|
118
|
+
"& .MuiStepIcon-active": {
|
|
119
|
+
color: activeDotColor
|
|
120
|
+
},
|
|
121
|
+
"& .MuiStepIcon-completed": {
|
|
122
|
+
color: completedDotColor
|
|
123
|
+
},
|
|
124
|
+
"& .MuiStepIcon-text": {
|
|
125
|
+
fill: iconTextColor
|
|
126
|
+
}
|
|
127
|
+
},
|
|
128
|
+
children: label
|
|
129
|
+
}
|
|
130
|
+
) }, idx);
|
|
131
|
+
})
|
|
132
|
+
}
|
|
133
|
+
)
|
|
134
|
+
}
|
|
135
|
+
),
|
|
136
|
+
isHorizontal && /* @__PURE__ */ jsxRuntime.jsx(
|
|
137
|
+
material.IconButton,
|
|
138
|
+
{
|
|
139
|
+
"aria-label": "Siguiente",
|
|
140
|
+
size: "small",
|
|
141
|
+
onClick: () => scrollBy(160),
|
|
142
|
+
disabled: !canScrollRight,
|
|
143
|
+
sx: {
|
|
144
|
+
flex: "0 0 auto",
|
|
145
|
+
visibility: showArrows ? "visible" : "hidden"
|
|
146
|
+
},
|
|
147
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(ChevronRightIcon, { fontSize: "small" })
|
|
148
|
+
}
|
|
149
|
+
)
|
|
150
|
+
]
|
|
151
|
+
}
|
|
152
|
+
),
|
|
153
|
+
/* @__PURE__ */ jsxRuntime.jsx(material.Box, { mt: 2, children: children.map(
|
|
154
|
+
(child, idx) => idx === currentStep ? /* @__PURE__ */ jsxRuntime.jsx(material.Box, { children: child.props.children }, idx) : null
|
|
155
|
+
) })
|
|
156
|
+
] });
|
|
157
|
+
};
|
|
158
|
+
const Step = (_) => null;
|
|
159
|
+
Step.displayName = "Step";
|
|
160
|
+
exports.Step = Step;
|
|
161
|
+
exports.Stepper = Stepper;
|
|
162
|
+
//# sourceMappingURL=Stepper.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Stepper.cjs","sources":["../../../src/components/Stepper/Stepper.tsx","../../../src/components/Stepper/Step.tsx"],"sourcesContent":["import React, { ReactElement, useEffect, useLayoutEffect, useRef, useState } from \"react\";\nimport {\n Stepper as MuiStepper,\n Step as MuiStep,\n StepLabel as MuiStepLabel,\n Box,\n IconButton,\n} from \"@mui/material\";\nimport ChevronLeftIcon from \"@mui/icons-material/ChevronLeft\";\nimport ChevronRightIcon from \"@mui/icons-material/ChevronRight\";\nimport { StepProps } from \"./Step\";\nimport { useWizard } from \"../../hooks/Wizard\";\n\ninterface MyStepperProps {\n children: ReactElement<StepProps>[];\n orientation?: \"horizontal\" | \"vertical\";\n sx?: object;\n alternateLabel?: boolean;\n /**\n * Índice 0-based del paso activo. Si no se provee, el Stepper intenta\n * leerlo del `WizardContext` (si está dentro de un `<WizardProvider>`).\n * Si tampoco hay provider, el default es 0.\n */\n currentStep?: number;\n}\n\nexport const Stepper: React.FC<MyStepperProps> = ({\n children,\n orientation = \"horizontal\",\n alternateLabel = false,\n\n sx,\n currentStep: currentStepProp,\n}) => {\n // Lee el paso desde el WizardContext cuando el consumer no lo pasa como prop.\n // Si el Stepper NO está dentro de un WizardProvider, `useWizard()` devuelve\n // el valor default (currentStep=0, totalSteps=0), así que no rompe nada.\n const wizard = useWizard();\n const currentStep =\n currentStepProp !== undefined\n ? currentStepProp\n : wizard.totalSteps > 0\n ? wizard.currentStep\n : 0;\n\n const isHorizontal = orientation === \"horizontal\";\n\n // Scroll horizontal con flechitas cuando los steps no caben.\n const scrollRef = useRef<HTMLDivElement | null>(null);\n const [canScrollLeft, setCanScrollLeft] = useState(false);\n const [canScrollRight, setCanScrollRight] = useState(false);\n\n const updateScrollState = () => {\n const el = scrollRef.current;\n if (!el) return;\n const { scrollLeft, scrollWidth, clientWidth } = el;\n // Tolerancia de 1px por redondeos de subpixel.\n setCanScrollLeft(scrollLeft > 1);\n setCanScrollRight(scrollLeft + clientWidth < scrollWidth - 1);\n };\n\n useLayoutEffect(() => {\n if (!isHorizontal) return;\n updateScrollState();\n }, [isHorizontal, children.length, currentStep]);\n\n useEffect(() => {\n if (!isHorizontal) return;\n const el = scrollRef.current;\n if (!el) return;\n const onScroll = () => updateScrollState();\n el.addEventListener(\"scroll\", onScroll, { passive: true });\n const ro = new ResizeObserver(() => updateScrollState());\n ro.observe(el);\n return () => {\n el.removeEventListener(\"scroll\", onScroll);\n ro.disconnect();\n };\n }, [isHorizontal]);\n\n const scrollBy = (delta: number) => {\n const el = scrollRef.current;\n if (!el) return;\n el.scrollBy({ left: delta, behavior: \"smooth\" });\n };\n\n const showArrows = isHorizontal && (canScrollLeft || canScrollRight);\n\n return (\n <Box sx={sx}>\n {/*\n En horizontal envolvemos el MuiStepper en un Box con `overflowX: auto`\n y flechitas `<` `>` a los costados para navegar cuando los steps no\n caben en el contenedor. Mantenemos el scroll nativo (rueda / swipe)\n y ocultamos la scrollbar visual.\n */}\n <Box\n sx={\n isHorizontal\n ? {\n display: \"flex\",\n alignItems: \"center\",\n width: \"100%\",\n gap: 0.5,\n }\n : undefined\n }\n >\n {isHorizontal && (\n <IconButton\n aria-label=\"Anterior\"\n size=\"small\"\n onClick={() => scrollBy(-160)}\n disabled={!canScrollLeft}\n sx={{\n flex: \"0 0 auto\",\n // Reservamos el slot siempre que haya overflow en algún lado,\n // así el área scroll tiene un ancho estable (no saltan los\n // steps cuando aparece/desaparece la flecha).\n visibility: showArrows ? \"visible\" : \"hidden\",\n }}\n >\n <ChevronLeftIcon fontSize=\"small\" />\n </IconButton>\n )}\n <Box\n ref={scrollRef}\n sx={\n isHorizontal\n ? {\n flex: \"1 1 auto\",\n minWidth: 0,\n overflowX: \"auto\",\n scrollBehavior: \"smooth\",\n WebkitOverflowScrolling: \"touch\",\n // Ocultamos la scrollbar (la navegación es con flechas)\n scrollbarWidth: \"none\",\n \"&::-webkit-scrollbar\": { display: \"none\" },\n }\n : undefined\n }\n >\n <MuiStepper\n activeStep={currentStep}\n orientation={orientation}\n alternativeLabel={alternateLabel}\n sx={\n isHorizontal\n ? {\n display: \"inline-flex\",\n flexWrap: \"nowrap\",\n minWidth: \"100%\",\n width: \"max-content\",\n // Evita que los steps se compriman al punto de solaparse.\n \"& .MuiStep-root\": { flex: \"0 0 auto\", minWidth: 120 },\n }\n : undefined\n }\n >\n {children.map((child, idx) => {\n const { label, completed, disabled, className, sx: stepSx, dotColor, activeDotColor, completedDotColor, iconTextColor } = child.props;\n return (\n <MuiStep key={idx} completed={completed} disabled={disabled} className={className} sx={stepSx}>\n <MuiStepLabel sx={{\n pointerEvents: 'none',\n \"& .MuiStepIcon-root\": {\n color: dotColor,\n },\n \"& .MuiStepIcon-active\": {\n color: activeDotColor,\n },\n \"& .MuiStepIcon-completed\": {\n color: completedDotColor,\n },\n \"& .MuiStepIcon-text\": {\n fill: iconTextColor,\n },\n }}\n >{label}\n </MuiStepLabel>\n </MuiStep>\n );\n })}\n </MuiStepper>\n </Box>\n {isHorizontal && (\n <IconButton\n aria-label=\"Siguiente\"\n size=\"small\"\n onClick={() => scrollBy(160)}\n disabled={!canScrollRight}\n sx={{\n flex: \"0 0 auto\",\n visibility: showArrows ? \"visible\" : \"hidden\",\n }}\n >\n <ChevronRightIcon fontSize=\"small\" />\n </IconButton>\n )}\n </Box>\n <Box mt={2}>\n {children.map((child, idx) =>\n idx === currentStep ? <Box key={idx}>{child.props.children}</Box> : null\n )}\n </Box>\n </Box>\n );\n};\n\nexport default Stepper;","import React from \"react\";\nimport { StepProps as MuiStepProps } from \"@mui/material\";\n\ntype PickMuiStepProps = Pick<MuiStepProps, \"completed\" | \"disabled\" | \"sx\" | \"className\">;\n\nexport interface StepProps extends PickMuiStepProps {\n label: React.ReactNode;\n children?: React.ReactNode;\n disabled?: boolean;\n sx?: object;\n dotColor?: string; // dot base\n activeDotColor?: string; // dot activa\n completedDotColor?: string; // dot completada\n iconTextColor?: string; // número o check dentro\n}\n\nexport const Step = (_: StepProps): null => null;\n\nStep.displayName = \"Step\";\n\nexport default Step;"],"names":["useWizard","useRef","useState","useLayoutEffect","useEffect","jsxs","Box","jsx","IconButton","MuiStepper","MuiStep","MuiStepLabel"],"mappings":"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"}
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
import { jsxs, jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useRef, useState, useLayoutEffect, useEffect } from "react";
|
|
3
|
+
import { Box, IconButton, Stepper as Stepper$1, Step as Step$1, StepLabel } from "@mui/material";
|
|
4
|
+
import ChevronLeftIcon from "@mui/icons-material/ChevronLeft";
|
|
5
|
+
import ChevronRightIcon from "@mui/icons-material/ChevronRight";
|
|
6
|
+
import { u as useWizard } from "../../useWizard-CWq--C3o.js";
|
|
7
|
+
const Stepper = ({
|
|
8
|
+
children,
|
|
9
|
+
orientation = "horizontal",
|
|
10
|
+
alternateLabel = false,
|
|
11
|
+
sx,
|
|
12
|
+
currentStep: currentStepProp
|
|
13
|
+
}) => {
|
|
14
|
+
const wizard = useWizard();
|
|
15
|
+
const currentStep = currentStepProp !== void 0 ? currentStepProp : wizard.totalSteps > 0 ? wizard.currentStep : 0;
|
|
16
|
+
const isHorizontal = orientation === "horizontal";
|
|
17
|
+
const scrollRef = useRef(null);
|
|
18
|
+
const [canScrollLeft, setCanScrollLeft] = useState(false);
|
|
19
|
+
const [canScrollRight, setCanScrollRight] = useState(false);
|
|
20
|
+
const updateScrollState = () => {
|
|
21
|
+
const el = scrollRef.current;
|
|
22
|
+
if (!el) return;
|
|
23
|
+
const { scrollLeft, scrollWidth, clientWidth } = el;
|
|
24
|
+
setCanScrollLeft(scrollLeft > 1);
|
|
25
|
+
setCanScrollRight(scrollLeft + clientWidth < scrollWidth - 1);
|
|
26
|
+
};
|
|
27
|
+
useLayoutEffect(() => {
|
|
28
|
+
if (!isHorizontal) return;
|
|
29
|
+
updateScrollState();
|
|
30
|
+
}, [isHorizontal, children.length, currentStep]);
|
|
31
|
+
useEffect(() => {
|
|
32
|
+
if (!isHorizontal) return;
|
|
33
|
+
const el = scrollRef.current;
|
|
34
|
+
if (!el) return;
|
|
35
|
+
const onScroll = () => updateScrollState();
|
|
36
|
+
el.addEventListener("scroll", onScroll, { passive: true });
|
|
37
|
+
const ro = new ResizeObserver(() => updateScrollState());
|
|
38
|
+
ro.observe(el);
|
|
39
|
+
return () => {
|
|
40
|
+
el.removeEventListener("scroll", onScroll);
|
|
41
|
+
ro.disconnect();
|
|
42
|
+
};
|
|
43
|
+
}, [isHorizontal]);
|
|
44
|
+
const scrollBy = (delta) => {
|
|
45
|
+
const el = scrollRef.current;
|
|
46
|
+
if (!el) return;
|
|
47
|
+
el.scrollBy({ left: delta, behavior: "smooth" });
|
|
48
|
+
};
|
|
49
|
+
const showArrows = isHorizontal && (canScrollLeft || canScrollRight);
|
|
50
|
+
return /* @__PURE__ */ jsxs(Box, { sx, children: [
|
|
51
|
+
/* @__PURE__ */ jsxs(
|
|
52
|
+
Box,
|
|
53
|
+
{
|
|
54
|
+
sx: isHorizontal ? {
|
|
55
|
+
display: "flex",
|
|
56
|
+
alignItems: "center",
|
|
57
|
+
width: "100%",
|
|
58
|
+
gap: 0.5
|
|
59
|
+
} : void 0,
|
|
60
|
+
children: [
|
|
61
|
+
isHorizontal && /* @__PURE__ */ jsx(
|
|
62
|
+
IconButton,
|
|
63
|
+
{
|
|
64
|
+
"aria-label": "Anterior",
|
|
65
|
+
size: "small",
|
|
66
|
+
onClick: () => scrollBy(-160),
|
|
67
|
+
disabled: !canScrollLeft,
|
|
68
|
+
sx: {
|
|
69
|
+
flex: "0 0 auto",
|
|
70
|
+
// Reservamos el slot siempre que haya overflow en algún lado,
|
|
71
|
+
// así el área scroll tiene un ancho estable (no saltan los
|
|
72
|
+
// steps cuando aparece/desaparece la flecha).
|
|
73
|
+
visibility: showArrows ? "visible" : "hidden"
|
|
74
|
+
},
|
|
75
|
+
children: /* @__PURE__ */ jsx(ChevronLeftIcon, { fontSize: "small" })
|
|
76
|
+
}
|
|
77
|
+
),
|
|
78
|
+
/* @__PURE__ */ jsx(
|
|
79
|
+
Box,
|
|
80
|
+
{
|
|
81
|
+
ref: scrollRef,
|
|
82
|
+
sx: isHorizontal ? {
|
|
83
|
+
flex: "1 1 auto",
|
|
84
|
+
minWidth: 0,
|
|
85
|
+
overflowX: "auto",
|
|
86
|
+
scrollBehavior: "smooth",
|
|
87
|
+
WebkitOverflowScrolling: "touch",
|
|
88
|
+
// Ocultamos la scrollbar (la navegación es con flechas)
|
|
89
|
+
scrollbarWidth: "none",
|
|
90
|
+
"&::-webkit-scrollbar": { display: "none" }
|
|
91
|
+
} : void 0,
|
|
92
|
+
children: /* @__PURE__ */ jsx(
|
|
93
|
+
Stepper$1,
|
|
94
|
+
{
|
|
95
|
+
activeStep: currentStep,
|
|
96
|
+
orientation,
|
|
97
|
+
alternativeLabel: alternateLabel,
|
|
98
|
+
sx: isHorizontal ? {
|
|
99
|
+
display: "inline-flex",
|
|
100
|
+
flexWrap: "nowrap",
|
|
101
|
+
minWidth: "100%",
|
|
102
|
+
width: "max-content",
|
|
103
|
+
// Evita que los steps se compriman al punto de solaparse.
|
|
104
|
+
"& .MuiStep-root": { flex: "0 0 auto", minWidth: 120 }
|
|
105
|
+
} : void 0,
|
|
106
|
+
children: children.map((child, idx) => {
|
|
107
|
+
const { label, completed, disabled, className, sx: stepSx, dotColor, activeDotColor, completedDotColor, iconTextColor } = child.props;
|
|
108
|
+
return /* @__PURE__ */ jsx(Step$1, { completed, disabled, className, sx: stepSx, children: /* @__PURE__ */ jsx(
|
|
109
|
+
StepLabel,
|
|
110
|
+
{
|
|
111
|
+
sx: {
|
|
112
|
+
pointerEvents: "none",
|
|
113
|
+
"& .MuiStepIcon-root": {
|
|
114
|
+
color: dotColor
|
|
115
|
+
},
|
|
116
|
+
"& .MuiStepIcon-active": {
|
|
117
|
+
color: activeDotColor
|
|
118
|
+
},
|
|
119
|
+
"& .MuiStepIcon-completed": {
|
|
120
|
+
color: completedDotColor
|
|
121
|
+
},
|
|
122
|
+
"& .MuiStepIcon-text": {
|
|
123
|
+
fill: iconTextColor
|
|
124
|
+
}
|
|
125
|
+
},
|
|
126
|
+
children: label
|
|
127
|
+
}
|
|
128
|
+
) }, idx);
|
|
129
|
+
})
|
|
130
|
+
}
|
|
131
|
+
)
|
|
132
|
+
}
|
|
133
|
+
),
|
|
134
|
+
isHorizontal && /* @__PURE__ */ jsx(
|
|
135
|
+
IconButton,
|
|
136
|
+
{
|
|
137
|
+
"aria-label": "Siguiente",
|
|
138
|
+
size: "small",
|
|
139
|
+
onClick: () => scrollBy(160),
|
|
140
|
+
disabled: !canScrollRight,
|
|
141
|
+
sx: {
|
|
142
|
+
flex: "0 0 auto",
|
|
143
|
+
visibility: showArrows ? "visible" : "hidden"
|
|
144
|
+
},
|
|
145
|
+
children: /* @__PURE__ */ jsx(ChevronRightIcon, { fontSize: "small" })
|
|
146
|
+
}
|
|
147
|
+
)
|
|
148
|
+
]
|
|
149
|
+
}
|
|
150
|
+
),
|
|
151
|
+
/* @__PURE__ */ jsx(Box, { mt: 2, children: children.map(
|
|
152
|
+
(child, idx) => idx === currentStep ? /* @__PURE__ */ jsx(Box, { children: child.props.children }, idx) : null
|
|
153
|
+
) })
|
|
154
|
+
] });
|
|
155
|
+
};
|
|
156
|
+
const Step = (_) => null;
|
|
157
|
+
Step.displayName = "Step";
|
|
158
|
+
export {
|
|
159
|
+
Step,
|
|
160
|
+
Stepper
|
|
161
|
+
};
|
|
162
|
+
//# sourceMappingURL=Stepper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Stepper.js","sources":["../../../src/components/Stepper/Stepper.tsx","../../../src/components/Stepper/Step.tsx"],"sourcesContent":["import React, { ReactElement, useEffect, useLayoutEffect, useRef, useState } from \"react\";\nimport {\n Stepper as MuiStepper,\n Step as MuiStep,\n StepLabel as MuiStepLabel,\n Box,\n IconButton,\n} from \"@mui/material\";\nimport ChevronLeftIcon from \"@mui/icons-material/ChevronLeft\";\nimport ChevronRightIcon from \"@mui/icons-material/ChevronRight\";\nimport { StepProps } from \"./Step\";\nimport { useWizard } from \"../../hooks/Wizard\";\n\ninterface MyStepperProps {\n children: ReactElement<StepProps>[];\n orientation?: \"horizontal\" | \"vertical\";\n sx?: object;\n alternateLabel?: boolean;\n /**\n * Índice 0-based del paso activo. Si no se provee, el Stepper intenta\n * leerlo del `WizardContext` (si está dentro de un `<WizardProvider>`).\n * Si tampoco hay provider, el default es 0.\n */\n currentStep?: number;\n}\n\nexport const Stepper: React.FC<MyStepperProps> = ({\n children,\n orientation = \"horizontal\",\n alternateLabel = false,\n\n sx,\n currentStep: currentStepProp,\n}) => {\n // Lee el paso desde el WizardContext cuando el consumer no lo pasa como prop.\n // Si el Stepper NO está dentro de un WizardProvider, `useWizard()` devuelve\n // el valor default (currentStep=0, totalSteps=0), así que no rompe nada.\n const wizard = useWizard();\n const currentStep =\n currentStepProp !== undefined\n ? currentStepProp\n : wizard.totalSteps > 0\n ? wizard.currentStep\n : 0;\n\n const isHorizontal = orientation === \"horizontal\";\n\n // Scroll horizontal con flechitas cuando los steps no caben.\n const scrollRef = useRef<HTMLDivElement | null>(null);\n const [canScrollLeft, setCanScrollLeft] = useState(false);\n const [canScrollRight, setCanScrollRight] = useState(false);\n\n const updateScrollState = () => {\n const el = scrollRef.current;\n if (!el) return;\n const { scrollLeft, scrollWidth, clientWidth } = el;\n // Tolerancia de 1px por redondeos de subpixel.\n setCanScrollLeft(scrollLeft > 1);\n setCanScrollRight(scrollLeft + clientWidth < scrollWidth - 1);\n };\n\n useLayoutEffect(() => {\n if (!isHorizontal) return;\n updateScrollState();\n }, [isHorizontal, children.length, currentStep]);\n\n useEffect(() => {\n if (!isHorizontal) return;\n const el = scrollRef.current;\n if (!el) return;\n const onScroll = () => updateScrollState();\n el.addEventListener(\"scroll\", onScroll, { passive: true });\n const ro = new ResizeObserver(() => updateScrollState());\n ro.observe(el);\n return () => {\n el.removeEventListener(\"scroll\", onScroll);\n ro.disconnect();\n };\n }, [isHorizontal]);\n\n const scrollBy = (delta: number) => {\n const el = scrollRef.current;\n if (!el) return;\n el.scrollBy({ left: delta, behavior: \"smooth\" });\n };\n\n const showArrows = isHorizontal && (canScrollLeft || canScrollRight);\n\n return (\n <Box sx={sx}>\n {/*\n En horizontal envolvemos el MuiStepper en un Box con `overflowX: auto`\n y flechitas `<` `>` a los costados para navegar cuando los steps no\n caben en el contenedor. Mantenemos el scroll nativo (rueda / swipe)\n y ocultamos la scrollbar visual.\n */}\n <Box\n sx={\n isHorizontal\n ? {\n display: \"flex\",\n alignItems: \"center\",\n width: \"100%\",\n gap: 0.5,\n }\n : undefined\n }\n >\n {isHorizontal && (\n <IconButton\n aria-label=\"Anterior\"\n size=\"small\"\n onClick={() => scrollBy(-160)}\n disabled={!canScrollLeft}\n sx={{\n flex: \"0 0 auto\",\n // Reservamos el slot siempre que haya overflow en algún lado,\n // así el área scroll tiene un ancho estable (no saltan los\n // steps cuando aparece/desaparece la flecha).\n visibility: showArrows ? \"visible\" : \"hidden\",\n }}\n >\n <ChevronLeftIcon fontSize=\"small\" />\n </IconButton>\n )}\n <Box\n ref={scrollRef}\n sx={\n isHorizontal\n ? {\n flex: \"1 1 auto\",\n minWidth: 0,\n overflowX: \"auto\",\n scrollBehavior: \"smooth\",\n WebkitOverflowScrolling: \"touch\",\n // Ocultamos la scrollbar (la navegación es con flechas)\n scrollbarWidth: \"none\",\n \"&::-webkit-scrollbar\": { display: \"none\" },\n }\n : undefined\n }\n >\n <MuiStepper\n activeStep={currentStep}\n orientation={orientation}\n alternativeLabel={alternateLabel}\n sx={\n isHorizontal\n ? {\n display: \"inline-flex\",\n flexWrap: \"nowrap\",\n minWidth: \"100%\",\n width: \"max-content\",\n // Evita que los steps se compriman al punto de solaparse.\n \"& .MuiStep-root\": { flex: \"0 0 auto\", minWidth: 120 },\n }\n : undefined\n }\n >\n {children.map((child, idx) => {\n const { label, completed, disabled, className, sx: stepSx, dotColor, activeDotColor, completedDotColor, iconTextColor } = child.props;\n return (\n <MuiStep key={idx} completed={completed} disabled={disabled} className={className} sx={stepSx}>\n <MuiStepLabel sx={{\n pointerEvents: 'none',\n \"& .MuiStepIcon-root\": {\n color: dotColor,\n },\n \"& .MuiStepIcon-active\": {\n color: activeDotColor,\n },\n \"& .MuiStepIcon-completed\": {\n color: completedDotColor,\n },\n \"& .MuiStepIcon-text\": {\n fill: iconTextColor,\n },\n }}\n >{label}\n </MuiStepLabel>\n </MuiStep>\n );\n })}\n </MuiStepper>\n </Box>\n {isHorizontal && (\n <IconButton\n aria-label=\"Siguiente\"\n size=\"small\"\n onClick={() => scrollBy(160)}\n disabled={!canScrollRight}\n sx={{\n flex: \"0 0 auto\",\n visibility: showArrows ? \"visible\" : \"hidden\",\n }}\n >\n <ChevronRightIcon fontSize=\"small\" />\n </IconButton>\n )}\n </Box>\n <Box mt={2}>\n {children.map((child, idx) =>\n idx === currentStep ? <Box key={idx}>{child.props.children}</Box> : null\n )}\n </Box>\n </Box>\n );\n};\n\nexport default Stepper;","import React from \"react\";\nimport { StepProps as MuiStepProps } from \"@mui/material\";\n\ntype PickMuiStepProps = Pick<MuiStepProps, \"completed\" | \"disabled\" | \"sx\" | \"className\">;\n\nexport interface StepProps extends PickMuiStepProps {\n label: React.ReactNode;\n children?: React.ReactNode;\n disabled?: boolean;\n sx?: object;\n dotColor?: string; // dot base\n activeDotColor?: string; // dot activa\n completedDotColor?: string; // dot completada\n iconTextColor?: string; // número o check dentro\n}\n\nexport const Step = (_: StepProps): null => null;\n\nStep.displayName = \"Step\";\n\nexport default Step;"],"names":["MuiStepper","MuiStep","MuiStepLabel"],"mappings":"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"}
|