@soyfri/shared-library 2.0.0-beta.2 → 2.0.0-beta.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.dockerignore +8 -0
- package/.github/workflows/publish.yml +107 -0
- package/.prettierrc +3 -0
- package/.storybook/main.ts +19 -0
- package/.storybook/preview.ts +14 -0
- package/.storybook/vitest.setup.ts +9 -0
- package/Dockerfile +37 -0
- package/build.js +117 -0
- package/chromatic.config.json +5 -0
- package/cleanDirectories.js +40 -0
- package/dist/Autocomplete-C_lW1VER.js +337 -0
- package/dist/Autocomplete-C_lW1VER.js.map +1 -0
- package/dist/Autocomplete-CejWztBY.cjs +336 -0
- package/dist/Autocomplete-CejWztBY.cjs.map +1 -0
- package/dist/Avatar-CgT7955R.js +162 -0
- package/dist/Avatar-CgT7955R.js.map +1 -0
- package/dist/Avatar-CuSrK8Wn.cjs +161 -0
- package/dist/Avatar-CuSrK8Wn.cjs.map +1 -0
- package/dist/Button-C17mExpd.cjs.map +1 -1
- package/dist/Button-UkkP-bNw.js.map +1 -1
- package/dist/Card-B1wtavyl.js +98 -0
- package/dist/Card-B1wtavyl.js.map +1 -0
- package/dist/Card-DfdU610V.cjs +97 -0
- package/dist/Card-DfdU610V.cjs.map +1 -0
- package/dist/Checkbox-BCqMFWt4.cjs +187 -0
- package/dist/Checkbox-BCqMFWt4.cjs.map +1 -0
- package/dist/Checkbox-gB5YKkVo.js +188 -0
- package/dist/Checkbox-gB5YKkVo.js.map +1 -0
- package/dist/{components/DateRangePicker/DateRangePicker.js → Chip-OPYQ1uQ_.js} +33 -35
- package/dist/Chip-OPYQ1uQ_.js.map +1 -0
- package/dist/{components/DateRangePicker/DateRangePicker.cjs → Chip-qoJLDiva.cjs} +33 -36
- package/dist/Chip-qoJLDiva.cjs.map +1 -0
- package/dist/DatePicker-_IGWc3I5.js +178 -0
- package/dist/DatePicker-_IGWc3I5.js.map +1 -0
- package/dist/DatePicker-t7uDTZMl.cjs +177 -0
- package/dist/DatePicker-t7uDTZMl.cjs.map +1 -0
- package/dist/DateTimePicker-BxQyjTCY.cjs +229 -0
- package/dist/DateTimePicker-BxQyjTCY.cjs.map +1 -0
- package/dist/DateTimePicker-CrmWav_j.js +230 -0
- package/dist/DateTimePicker-CrmWav_j.js.map +1 -0
- package/dist/Input-CScC87J5.cjs +185 -0
- package/dist/Input-CScC87J5.cjs.map +1 -0
- package/dist/Input-DP_fKl38.js +186 -0
- package/dist/Input-DP_fKl38.js.map +1 -0
- package/dist/Modal-BN5s-Tfk.cjs +347 -0
- package/dist/Modal-BN5s-Tfk.cjs.map +1 -0
- package/dist/Modal-BRZMPwDj.js +348 -0
- package/dist/Modal-BRZMPwDj.js.map +1 -0
- package/dist/README.md +243 -0
- package/dist/RadioGroup-Dd0rHXSX.cjs +202 -0
- package/dist/RadioGroup-Dd0rHXSX.cjs.map +1 -0
- package/dist/RadioGroup-bO-ahP9T.js +203 -0
- package/dist/RadioGroup-bO-ahP9T.js.map +1 -0
- package/dist/Select-Dycmh9vt.js +256 -0
- package/dist/Select-Dycmh9vt.js.map +1 -0
- package/dist/Select-kqR48jZU.cjs +255 -0
- package/dist/Select-kqR48jZU.cjs.map +1 -0
- package/dist/Stat-BUcFCGrz.cjs +83 -0
- package/dist/Stat-BUcFCGrz.cjs.map +1 -0
- package/dist/Stat-C06A_izS.js +84 -0
- package/dist/Stat-C06A_izS.js.map +1 -0
- package/dist/StatusMessage-B3nXpuRl.cjs +88 -0
- package/dist/StatusMessage-B3nXpuRl.cjs.map +1 -0
- package/dist/StatusMessage-D0WgSBx7.js +89 -0
- package/dist/StatusMessage-D0WgSBx7.js.map +1 -0
- package/dist/Step-BArsou1V.js +301 -0
- package/dist/Step-BArsou1V.js.map +1 -0
- package/dist/Step-Nd7SJbRZ.cjs +300 -0
- package/dist/Step-Nd7SJbRZ.cjs.map +1 -0
- package/dist/Switch-CQFOopYy.cjs +182 -0
- package/dist/Switch-CQFOopYy.cjs.map +1 -0
- package/dist/Switch-D72dpkH2.js +183 -0
- package/dist/Switch-D72dpkH2.js.map +1 -0
- package/dist/Tab-BbP8jBcK.cjs +110 -0
- package/dist/Tab-BbP8jBcK.cjs.map +1 -0
- package/dist/Tab-BxSxKJsP.js +111 -0
- package/dist/Tab-BxSxKJsP.js.map +1 -0
- package/dist/Table-C2LbW0B1.js +531 -0
- package/dist/Table-C2LbW0B1.js.map +1 -0
- package/dist/Table-C4OM6rrC.cjs +530 -0
- package/dist/Table-C4OM6rrC.cjs.map +1 -0
- package/dist/components/ActionMenu/ActionMenu.cjs +52 -52
- package/dist/components/ActionMenu/ActionMenu.cjs.map +1 -1
- package/dist/components/ActionMenu/ActionMenu.d.ts +20 -36
- package/dist/components/ActionMenu/ActionMenu.js +55 -55
- package/dist/components/ActionMenu/ActionMenu.js.map +1 -1
- package/dist/components/ActionMenu/index.d.ts +2 -2
- package/dist/components/AppBar/AppBar.cjs +3 -220
- package/dist/components/AppBar/AppBar.cjs.map +1 -1
- package/dist/components/AppBar/AppBar.d.ts +6 -6
- package/dist/components/AppBar/AppBar.js +6 -223
- package/dist/components/AppBar/AppBar.js.map +1 -1
- package/dist/components/AppBar/index.d.ts +0 -6
- package/dist/components/Autocomplete/Autocomplete.cjs +4 -311
- package/dist/components/Autocomplete/Autocomplete.cjs.map +1 -1
- package/dist/components/Autocomplete/Autocomplete.d.ts +8 -6
- package/dist/components/Autocomplete/Autocomplete.helpers.d.ts +8 -4
- package/dist/components/Autocomplete/Autocomplete.js +4 -311
- package/dist/components/Autocomplete/Autocomplete.js.map +1 -1
- package/dist/components/Autocomplete/_parts/AutocompleteOption.d.ts +5 -8
- package/dist/components/Autocomplete/index.d.ts +1 -1
- package/dist/components/Avatar/Avatar.cjs +2 -160
- package/dist/components/Avatar/Avatar.cjs.map +1 -1
- package/dist/components/Avatar/Avatar.js +2 -160
- package/dist/components/Avatar/Avatar.js.map +1 -1
- package/dist/components/Avatar/index.d.ts +1 -0
- package/dist/components/Button/Button.d.ts +5 -5
- package/dist/components/Button/index.d.ts +1 -0
- package/dist/components/Card/Card.cjs +4 -184
- package/dist/components/Card/Card.cjs.map +1 -1
- package/dist/components/Card/Card.d.ts +3 -50
- package/dist/components/Card/Card.js +4 -184
- package/dist/components/Card/Card.js.map +1 -1
- package/dist/components/Card/Card.sx.d.ts +3 -6
- package/dist/components/Card/index.d.ts +1 -1
- package/dist/components/Checkbox/Checkbox.cjs +6 -0
- package/dist/components/Checkbox/Checkbox.cjs.map +1 -0
- package/dist/components/Checkbox/Checkbox.d.ts +55 -0
- package/dist/components/Checkbox/Checkbox.js +6 -0
- package/dist/components/Checkbox/Checkbox.js.map +1 -0
- package/dist/components/Checkbox/Checkbox.sx.d.ts +13 -0
- package/dist/components/Checkbox/index.d.ts +2 -0
- package/dist/components/Checkbox.d.ts +6 -0
- package/dist/components/Chip/Chip.cjs +4 -72
- package/dist/components/Chip/Chip.cjs.map +1 -1
- package/dist/components/Chip/Chip.js +3 -71
- package/dist/components/Chip/Chip.js.map +1 -1
- package/dist/components/Chip/index.d.ts +2 -1
- package/dist/components/Chip.d.ts +4 -0
- package/dist/components/Column/Column.cjs +1 -1
- package/dist/components/Column/Column.cjs.map +1 -1
- package/dist/components/Column/Column.d.ts +1 -1
- package/dist/components/Column/Column.js +1 -1
- package/dist/components/Column/Column.js.map +1 -1
- package/dist/components/Column/index.d.ts +1 -0
- package/dist/components/DatePicker/DatePicker.cjs +3 -200
- package/dist/components/DatePicker/DatePicker.cjs.map +1 -1
- package/dist/components/DatePicker/DatePicker.d.ts +1 -13
- package/dist/components/DatePicker/DatePicker.js +3 -200
- package/dist/components/DatePicker/DatePicker.js.map +1 -1
- package/dist/components/DatePicker/index.d.ts +1 -1
- package/dist/components/DateTimePicker/DateTimePicker.cjs +3 -219
- package/dist/components/DateTimePicker/DateTimePicker.cjs.map +1 -1
- package/dist/components/DateTimePicker/DateTimePicker.d.ts +10 -6
- package/dist/components/DateTimePicker/DateTimePicker.definitions.d.ts +2 -0
- package/dist/components/DateTimePicker/DateTimePicker.helpers.d.ts +4 -2
- package/dist/components/DateTimePicker/DateTimePicker.js +3 -219
- package/dist/components/DateTimePicker/DateTimePicker.js.map +1 -1
- package/dist/components/DateTimePicker/index.d.ts +1 -1
- package/dist/components/Drawer/Drawer.cjs +25 -24
- package/dist/components/Drawer/Drawer.cjs.map +1 -1
- package/dist/components/Drawer/Drawer.d.ts +8 -1
- package/dist/components/Drawer/Drawer.js +26 -25
- package/dist/components/Drawer/Drawer.js.map +1 -1
- package/dist/components/Drawer/DrawerItem.d.ts +6 -1
- package/dist/components/Gallery/Gallery.cjs +154 -79
- package/dist/components/Gallery/Gallery.cjs.map +1 -1
- package/dist/components/Gallery/Gallery.d.ts +25 -9
- package/dist/components/Gallery/Gallery.js +154 -79
- package/dist/components/Gallery/Gallery.js.map +1 -1
- package/dist/components/Gallery/GalleryLightbox.d.ts +6 -10
- package/dist/components/Gallery/GalleryMain.d.ts +3 -7
- package/dist/components/Gallery/GalleryThumbnails.d.ts +7 -11
- package/dist/components/Gallery/index.d.ts +2 -1
- package/dist/components/Gallery.d.ts +4 -0
- package/dist/components/Icon/Icon.cjs +6 -8
- package/dist/components/Icon/Icon.cjs.map +1 -1
- package/dist/components/Icon/Icon.d.ts +11 -17
- package/dist/components/Icon/Icon.js +7 -9
- package/dist/components/Icon/Icon.js.map +1 -1
- package/dist/components/Icon/index.d.ts +2 -1
- package/dist/components/Icon.d.ts +4 -0
- package/dist/components/Input/Input.cjs +3 -172
- package/dist/components/Input/Input.cjs.map +1 -1
- package/dist/components/Input/Input.d.ts +9 -2
- package/dist/components/Input/Input.definitions.d.ts +1 -0
- package/dist/components/Input/Input.helpers.d.ts +3 -3
- package/dist/components/Input/Input.js +3 -172
- package/dist/components/Input/Input.js.map +1 -1
- package/dist/components/Input/index.d.ts +1 -1
- package/dist/components/InputGroup/InputGroup.cjs +23 -22
- package/dist/components/InputGroup/InputGroup.cjs.map +1 -1
- package/dist/components/InputGroup/InputGroup.d.ts +4 -4
- package/dist/components/InputGroup/InputGroup.js +22 -21
- package/dist/components/InputGroup/InputGroup.js.map +1 -1
- package/dist/components/InputGroup/index.d.ts +2 -1
- package/dist/components/InputGroup.d.ts +4 -0
- package/dist/components/Modal/Modal.cjs +7 -317
- package/dist/components/Modal/Modal.cjs.map +1 -1
- package/dist/components/Modal/Modal.d.ts +20 -5
- package/dist/components/Modal/Modal.js +6 -316
- package/dist/components/Modal/Modal.js.map +1 -1
- package/dist/components/Modal/ModalBody.d.ts +6 -1
- package/dist/components/Modal/ModalFooter.d.ts +4 -4
- package/dist/components/Modal/ModalHeader.d.ts +6 -1
- package/dist/components/Modal/index.d.ts +4 -1
- package/dist/components/Modal.d.ts +4 -0
- package/dist/components/RadioGroup/RadioGroup.cjs +6 -0
- package/dist/components/RadioGroup/RadioGroup.cjs.map +1 -0
- package/dist/components/RadioGroup/RadioGroup.d.ts +59 -0
- package/dist/components/RadioGroup/RadioGroup.definitions.d.ts +6 -0
- package/dist/components/RadioGroup/RadioGroup.js +6 -0
- package/dist/components/RadioGroup/RadioGroup.js.map +1 -0
- package/dist/components/RadioGroup/RadioGroup.sx.d.ts +20 -0
- package/dist/components/RadioGroup/index.d.ts +2 -0
- package/dist/components/RadioGroup.d.ts +6 -0
- package/dist/components/Select/Select.cjs +4 -445
- package/dist/components/Select/Select.cjs.map +1 -1
- package/dist/components/Select/Select.d.ts +15 -18
- package/dist/components/Select/Select.helpers.d.ts +5 -19
- package/dist/components/Select/Select.js +4 -445
- package/dist/components/Select/Select.js.map +1 -1
- package/dist/components/Select/index.d.ts +1 -1
- package/dist/components/Stat/Stat.cjs +4 -83
- package/dist/components/Stat/Stat.cjs.map +1 -1
- package/dist/components/Stat/Stat.js +3 -82
- package/dist/components/Stat/Stat.js.map +1 -1
- package/dist/components/Stat/index.d.ts +2 -1
- package/dist/components/Stat.d.ts +4 -0
- package/dist/components/StatusMessage/StatusMessage.cjs +4 -77
- package/dist/components/StatusMessage/StatusMessage.cjs.map +1 -1
- package/dist/components/StatusMessage/StatusMessage.d.ts +20 -36
- package/dist/components/StatusMessage/StatusMessage.js +3 -76
- package/dist/components/StatusMessage/StatusMessage.js.map +1 -1
- package/dist/components/StatusMessage/index.d.ts +2 -1
- package/dist/components/StatusMessage.d.ts +4 -0
- package/dist/components/Stepper/Stepper.cjs +8 -47
- package/dist/components/Stepper/Stepper.cjs.map +1 -1
- package/dist/components/Stepper/Stepper.d.ts +9 -8
- package/dist/components/Stepper/Stepper.js +7 -46
- package/dist/components/Stepper/Stepper.js.map +1 -1
- package/dist/{hooks/Wizard/WizardContext.d.ts → components/Stepper/StepperContext.d.ts} +29 -23
- package/dist/components/Stepper/_hooks/useHorizontalScroll.d.ts +19 -0
- package/dist/components/Stepper/_parts/StepperScrollArrow.d.ts +19 -0
- package/dist/components/Stepper/index.d.ts +6 -2
- package/dist/components/Stepper.d.ts +4 -0
- package/dist/components/Switch/Switch.cjs +6 -0
- package/dist/components/Switch/Switch.cjs.map +1 -0
- package/dist/components/Switch/Switch.d.ts +48 -0
- package/dist/components/Switch/Switch.definitions.d.ts +7 -0
- package/dist/components/Switch/Switch.js +6 -0
- package/dist/components/Switch/Switch.js.map +1 -0
- package/dist/components/Switch/Switch.sx.d.ts +22 -0
- package/dist/components/Switch/Switch.types.d.ts +1 -0
- package/dist/components/Switch/index.d.ts +2 -0
- package/dist/components/Switch.d.ts +6 -0
- package/dist/components/Table/Table.cjs +2 -528
- package/dist/components/Table/Table.cjs.map +1 -1
- package/dist/components/Table/Table.d.ts +1 -1
- package/dist/components/Table/Table.js +2 -528
- package/dist/components/Table/Table.js.map +1 -1
- package/dist/components/Tabs/Tabs.cjs +5 -94
- package/dist/components/Tabs/Tabs.cjs.map +1 -1
- package/dist/components/Tabs/Tabs.d.ts +21 -16
- package/dist/components/Tabs/Tabs.js +4 -93
- package/dist/components/Tabs/Tabs.js.map +1 -1
- package/dist/components/Tabs/index.d.ts +4 -2
- package/dist/components/Tabs.d.ts +4 -0
- package/dist/components/Timeline/Timeline.cjs +3 -2
- package/dist/components/Timeline/Timeline.cjs.map +1 -1
- package/dist/components/Timeline/Timeline.d.ts +4 -8
- package/dist/components/Timeline/Timeline.js +3 -2
- package/dist/components/Timeline/Timeline.js.map +1 -1
- package/dist/components/Timeline/index.d.ts +4 -2
- package/dist/components/Timeline.d.ts +4 -0
- package/dist/components/_shared/mergeSx.d.ts +7 -0
- package/dist/{formField.sx-DfVbMe0V.js → formField.sx-8_QRnKxv.js} +2 -11
- package/dist/formField.sx-8_QRnKxv.js.map +1 -0
- package/dist/{formField.sx-CQ1mbk9M.cjs → formField.sx-BAX7KwMR.cjs} +10 -19
- package/dist/formField.sx-BAX7KwMR.cjs.map +1 -0
- package/dist/index.cjs +92 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +32 -0
- package/dist/index.js +66 -3
- package/dist/index.js.map +1 -1
- package/dist/mergeSx-BXoNZjB_.js +10 -0
- package/dist/mergeSx-BXoNZjB_.js.map +1 -0
- package/dist/mergeSx-Dbccoo_H.cjs +9 -0
- package/dist/mergeSx-Dbccoo_H.cjs.map +1 -0
- package/dist/mui.d.ts +3 -1
- package/dist/package.json +190 -0
- package/dist/{resolvePreset-CT3kU-K2.cjs → resolvePreset-CxTI6_Ln.cjs} +3 -3
- package/dist/{resolvePreset-CT3kU-K2.cjs.map → resolvePreset-CxTI6_Ln.cjs.map} +1 -1
- package/dist/{resolvePreset-B-IB0ehH.js → resolvePreset-K6_BfWHD.js} +3 -3
- package/dist/{resolvePreset-B-IB0ehH.js.map → resolvePreset-K6_BfWHD.js.map} +1 -1
- package/dist/theme/componentStyles.d.ts +1 -1
- package/dist/tokens-BRrcP_p_.js +21 -0
- package/dist/tokens-BRrcP_p_.js.map +1 -0
- package/dist/tokens-jaWWNk39.cjs +20 -0
- package/dist/tokens-jaWWNk39.cjs.map +1 -0
- package/dist/utils/index.d.ts +2 -0
- package/dist/{components/ScrollTopButton → utils}/scrollToTop.d.ts +6 -7
- package/package.json +25 -48
- package/rollup.config.cjs +87 -0
- package/scripts/gen-dist-pkg.mjs +15 -0
- package/shared-library-comercios-MUI.code-workspace +10 -0
- package/src/components/ActionMenu/ActionMenu.stories.tsx +427 -0
- package/src/components/ActionMenu/ActionMenu.tsx +153 -0
- package/src/components/ActionMenu/index.ts +2 -0
- package/src/components/AppBar/AppBar.stories.tsx +316 -0
- package/src/components/AppBar/AppBar.sx.ts +32 -0
- package/src/components/AppBar/AppBar.tsx +119 -0
- package/src/components/AppBar/AppBarContext.ts +25 -0
- package/src/components/AppBar/AppBarMenuToggle.tsx +90 -0
- package/src/components/AppBar/index.ts +12 -0
- package/src/components/Autocomplete/Autocomplete.definitions.ts +477 -0
- package/src/components/Autocomplete/Autocomplete.helpers.ts +80 -0
- package/src/components/Autocomplete/Autocomplete.stories.tsx +784 -0
- package/src/components/Autocomplete/Autocomplete.sx.ts +30 -0
- package/src/components/Autocomplete/Autocomplete.tsx +393 -0
- package/src/components/Autocomplete/_parts/AutocompleteChips.tsx +55 -0
- package/src/components/Autocomplete/_parts/AutocompleteLoader.tsx +17 -0
- package/src/components/Autocomplete/_parts/AutocompleteOption.tsx +29 -0
- package/src/components/Autocomplete/index.ts +12 -0
- package/src/components/Avatar/Avatar.definitions.ts +162 -0
- package/src/components/Avatar/Avatar.stories.tsx +258 -0
- package/src/components/Avatar/Avatar.tsx +206 -0
- package/src/components/Avatar/index.ts +2 -0
- package/src/components/Button/Button.definition.ts +97 -0
- package/src/components/Button/Button.stories.tsx +285 -0
- package/src/components/Button/Button.tsx +66 -0
- package/src/components/Button/index.ts +2 -0
- package/src/components/Card/Card.definition.ts +5 -0
- package/src/components/Card/Card.stories.tsx +102 -0
- package/src/components/Card/Card.sx.ts +58 -0
- package/src/components/Card/Card.tsx +85 -0
- package/src/components/Card/index.ts +4 -0
- package/src/components/Checkbox/Checkbox.stories.tsx +212 -0
- package/src/components/Checkbox/Checkbox.sx.ts +67 -0
- package/src/components/Checkbox/Checkbox.tsx +208 -0
- package/src/components/Checkbox/index.ts +10 -0
- package/src/components/Chip/Chip.definitions.ts +167 -0
- package/src/components/Chip/Chip.stories.tsx +265 -0
- package/src/components/Chip/Chip.tsx +61 -0
- package/src/components/Chip/index.ts +2 -0
- package/src/components/Column/Column.tsx +29 -0
- package/src/components/Column/index.ts +2 -0
- package/src/components/DatePicker/DatePicker.definitions.ts +228 -0
- package/src/components/DatePicker/DatePicker.helpers.ts +24 -0
- package/src/components/DatePicker/DatePicker.stories.tsx +309 -0
- package/src/components/DatePicker/DatePicker.sx.ts +33 -0
- package/src/components/DatePicker/DatePicker.tsx +133 -0
- package/src/components/DatePicker/index.ts +7 -0
- package/src/components/DateTimePicker/DateTimePicker.definitions.ts +317 -0
- package/src/components/DateTimePicker/DateTimePicker.helpers.ts +45 -0
- package/src/components/DateTimePicker/DateTimePicker.stories.tsx +415 -0
- package/src/components/DateTimePicker/DateTimePicker.sx.ts +30 -0
- package/src/components/DateTimePicker/DateTimePicker.tsx +240 -0
- package/src/components/DateTimePicker/index.ts +9 -0
- package/src/components/Drawer/Drawer.stories.tsx +438 -0
- package/src/components/Drawer/Drawer.sx.ts +106 -0
- package/src/components/Drawer/Drawer.tsx +224 -0
- package/src/components/Drawer/DrawerContext.ts +26 -0
- package/src/components/Drawer/DrawerItem.tsx +120 -0
- package/src/components/Drawer/index.ts +10 -0
- package/src/components/Flyout/Flyout.stories.tsx +282 -0
- package/src/components/Flyout/Flyout.tsx +122 -0
- package/src/components/Flyout/index.ts +1 -0
- package/src/components/Gallery/Gallery.definition.tsx +37 -0
- package/src/components/Gallery/Gallery.stories.tsx +82 -0
- package/src/components/Gallery/Gallery.tsx +158 -0
- package/src/components/Gallery/GalleryLightbox.tsx +186 -0
- package/src/components/Gallery/GalleryMain.tsx +87 -0
- package/src/components/Gallery/GalleryThumbnails.tsx +122 -0
- package/src/components/Gallery/index.ts +2 -0
- package/src/components/Icon/Icon.stories.tsx +121 -0
- package/src/components/Icon/Icon.tsx +163 -0
- package/src/components/Icon/index.ts +2 -0
- package/src/components/Input/Input.definitions.ts +348 -0
- package/src/components/Input/Input.helpers.ts +50 -0
- package/src/components/Input/Input.stories.tsx +528 -0
- package/src/components/Input/Input.sx.ts +42 -0
- package/src/components/Input/Input.tsx +162 -0
- package/src/components/Input/index.ts +10 -0
- package/src/components/InputGroup/InputGroup.definitions.ts +158 -0
- package/src/components/InputGroup/InputGroup.stories.tsx +267 -0
- package/src/components/InputGroup/InputGroup.tsx +180 -0
- package/src/components/InputGroup/index.ts +2 -0
- package/src/components/MenuButton/MenuButton.stories.tsx +197 -0
- package/src/components/MenuButton/MenuButton.tsx +100 -0
- package/src/components/MenuButton/index.ts +1 -0
- package/src/components/Modal/Modal.stories.tsx +721 -0
- package/src/components/Modal/Modal.tsx +407 -0
- package/src/components/Modal/ModalBody.tsx +23 -0
- package/src/components/Modal/ModalFooter.tsx +83 -0
- package/src/components/Modal/ModalHeader.tsx +33 -0
- package/src/components/Modal/index.ts +11 -0
- package/src/components/RadioGroup/RadioGroup.definitions.ts +177 -0
- package/src/components/RadioGroup/RadioGroup.stories.tsx +231 -0
- package/src/components/RadioGroup/RadioGroup.sx.ts +75 -0
- package/src/components/RadioGroup/RadioGroup.tsx +207 -0
- package/src/components/RadioGroup/index.ts +10 -0
- package/src/components/Select/Select.helpers.ts +31 -0
- package/src/components/Select/Select.stories.tsx +393 -0
- package/src/components/Select/Select.sx.ts +14 -0
- package/src/components/Select/Select.tsx +332 -0
- package/src/components/Select/_parts/SelectMenuItem.tsx +40 -0
- package/src/components/Select/_parts/SelectValue.tsx +95 -0
- package/src/components/Select/index.ts +12 -0
- package/src/components/Stat/Stat.stories.tsx +85 -0
- package/src/components/Stat/Stat.tsx +117 -0
- package/src/components/Stat/index.ts +2 -0
- package/src/components/StatusMessage/StatusMessage.stories.tsx +159 -0
- package/src/components/StatusMessage/StatusMessage.tsx +143 -0
- package/src/components/StatusMessage/index.ts +3 -0
- package/src/components/Stepper/Step.tsx +21 -0
- package/src/components/Stepper/Stepper.definition.ts +75 -0
- package/src/components/Stepper/Stepper.stories.tsx +194 -0
- package/src/components/Stepper/Stepper.tsx +194 -0
- package/src/components/Stepper/StepperContext.tsx +176 -0
- package/src/components/Stepper/StepperProvider.stories.tsx +286 -0
- package/src/components/Stepper/_hooks/useHorizontalScroll.ts +56 -0
- package/src/components/Stepper/_parts/StepperScrollArrow.tsx +50 -0
- package/src/components/Stepper/index.ts +15 -0
- package/src/components/Switch/Switch.definitions.ts +134 -0
- package/src/components/Switch/Switch.stories.tsx +213 -0
- package/src/components/Switch/Switch.sx.ts +81 -0
- package/src/components/Switch/Switch.tsx +188 -0
- package/src/components/Switch/Switch.types.ts +10 -0
- package/src/components/Switch/index.ts +9 -0
- package/src/components/Table/EmptyTable.png +0 -0
- package/src/components/Table/Table.definition.ts +580 -0
- package/src/components/Table/Table.stories.tsx +853 -0
- package/src/components/Table/Table.tsx +494 -0
- package/src/components/Table/data.ts +134 -0
- package/src/components/Table/exportsUtils.ts +195 -0
- package/src/components/Table/index.ts +3 -0
- package/src/components/Table/types.ts +34 -0
- package/src/components/Tabs/Tab.definition.ts +53 -0
- package/src/components/Tabs/Tab.tsx +19 -0
- package/src/components/Tabs/Tabs.stories.tsx +118 -0
- package/src/components/Tabs/Tabs.tsx +163 -0
- package/src/components/Tabs/_tabUtils.tsx +4 -0
- package/src/components/Tabs/index.ts +5 -0
- package/src/components/Timeline/Timeline.definition.ts +43 -0
- package/src/components/Timeline/Timeline.stories.tsx +108 -0
- package/src/components/Timeline/Timeline.tsx +44 -0
- package/src/components/Timeline/TimelineItem.tsx +31 -0
- package/src/components/Timeline/index.ts +5 -0
- package/src/components/Tooltip/Tooltip.stories.tsx +129 -0
- package/src/components/Tooltip/Tooltip.tsx +58 -0
- package/src/components/Tooltip/index.ts +1 -0
- package/src/components/_shared/formField.sx.ts +118 -0
- package/src/components/_shared/mergeSx.ts +16 -0
- package/src/components/_shared/resolvePreset.ts +38 -0
- package/src/hooks/ClipBoard/ClipBoard.stories.tsx +168 -0
- package/src/hooks/ClipBoard/ClipBoard.tsx +131 -0
- package/src/hooks/ClipBoard/ClipboardUnifiedDemo.tsx +111 -0
- package/src/hooks/ClipBoard/index.ts +1 -0
- package/src/index.ts +51 -0
- package/src/mui.ts +57 -0
- package/src/styles.css +3 -0
- package/src/theme/componentStyles.ts +50 -0
- package/src/theme/tokens.ts +43 -0
- package/src/utils/index.ts +2 -0
- package/src/utils/scrollToTop.ts +36 -0
- package/storybook-static/addon-visual-tests-assets/visual-test-illustration.mp4 +0 -0
- package/storybook-static/assets/AccountCircle-BDZFsbTw.js +1 -0
- package/storybook-static/assets/ActionMenu-EynP8yU1.js +19 -0
- package/storybook-static/assets/ActionMenu.stories-DqSqRGix.js +185 -0
- package/storybook-static/assets/Alert-3zvTPc0p.js +1 -0
- package/storybook-static/assets/AppBar.stories-DcX3M5th.js +172 -0
- package/storybook-static/assets/Autocomplete.stories-CXJm8FOT.js +788 -0
- package/storybook-static/assets/Avatar-NbFfkZws.js +1 -0
- package/storybook-static/assets/Avatar.stories-CwOYCzqU.js +390 -0
- package/storybook-static/assets/Box-BnhEcfFm.js +1 -0
- package/storybook-static/assets/Button-D9h7OggD.js +1 -0
- package/storybook-static/assets/Button-DBpqmVB_.js +1 -0
- package/storybook-static/assets/Button.stories-F20dmnjq.js +320 -0
- package/storybook-static/assets/ButtonBase-qyaMEhe4.js +74 -0
- package/storybook-static/assets/Card.stories-B3NpAhO0.js +154 -0
- package/storybook-static/assets/CheckCircleOutline-CEj5mDsl.js +1 -0
- package/storybook-static/assets/Chip-C3vKPpzR.js +1 -0
- package/storybook-static/assets/Chip.stories-sxcfHVo9.js +333 -0
- package/storybook-static/assets/CircularProgress-DC7ZNWwl.js +28 -0
- package/storybook-static/assets/Clear-4kYcKvT3.js +1 -0
- package/storybook-static/assets/ClipBoard-DvLBdNHe.js +1 -0
- package/storybook-static/assets/ClipBoard.stories-BGUo47r6.js +108 -0
- package/storybook-static/assets/Close-CgHeRgmh.js +1 -0
- package/storybook-static/assets/Close-Cy8nELYU.js +1 -0
- package/storybook-static/assets/Color-AVL7NMMY-BJKvwERm.js +1 -0
- package/storybook-static/assets/ContentCopy-BfLTDb10.js +1 -0
- package/storybook-static/assets/DatePicker-Clkpr-Ku.js +1 -0
- package/storybook-static/assets/DatePicker.stories-EaUCMkh3.js +444 -0
- package/storybook-static/assets/DateRangePicker.stories-BMlkj-8K.js +390 -0
- package/storybook-static/assets/DateTimePicker.stories-B6gdzKq5.js +555 -0
- package/storybook-static/assets/DefaultPropsProvider-BGoQxtDa.js +16 -0
- package/storybook-static/assets/Delete-D2SMMmIA.js +1 -0
- package/storybook-static/assets/DialogContent-BeCDKgax.js +1 -0
- package/storybook-static/assets/Divider-BbCj9wT4.js +1 -0
- package/storybook-static/assets/DocsRenderer-PQXLIZUC-BebLK5Y_.js +1243 -0
- package/storybook-static/assets/Drawer-DcFwy73r.js +1 -0
- package/storybook-static/assets/Drawer.stories-C5AZkJBk.js +173 -0
- package/storybook-static/assets/EmptyTable-B-RKtgVs.png +0 -0
- package/storybook-static/assets/ErrorOutline-D9gM7ART.js +1 -0
- package/storybook-static/assets/Fade-Ll96CvH8.js +1 -0
- package/storybook-static/assets/Flyout.stories-Cf7z6MNw.js +163 -0
- package/storybook-static/assets/Gallery.stories-DdpWVTF6.js +127 -0
- package/storybook-static/assets/Grow-8y4FglGK.js +1 -0
- package/storybook-static/assets/Home-BRvJEp2L.js +1 -0
- package/storybook-static/assets/Icon.stories-D0mUiW_t.js +78 -0
- package/storybook-static/assets/IconButton-9OYSTH58.js +1 -0
- package/storybook-static/assets/Input-CjX0t4h-.js +1 -0
- package/storybook-static/assets/Input.stories-BRxekliy.js +650 -0
- package/storybook-static/assets/InputGroup.stories-DH6gUfmn.js +306 -0
- package/storybook-static/assets/KeyboardArrowRight-WO_attK2.js +1 -0
- package/storybook-static/assets/KeyboardArrowUp-DsyVef-i.js +1 -0
- package/storybook-static/assets/ListItem-D3O0103N.js +1 -0
- package/storybook-static/assets/ListItemIcon-hca6xN79.js +1 -0
- package/storybook-static/assets/ListItemText-BFLAwLdl.js +1 -0
- package/storybook-static/assets/Logout-gj-P3AfU.js +1 -0
- package/storybook-static/assets/Menu-ClzfjLc3.js +1 -0
- package/storybook-static/assets/MenuButton.stories-B-W_QVDt.js +162 -0
- package/storybook-static/assets/MenuItem-iU6tAqJI.js +1 -0
- package/storybook-static/assets/Modal-3okp9H2i.js +1 -0
- package/storybook-static/assets/Modal.stories-DIWzm4qR.js +468 -0
- package/storybook-static/assets/MoreVert-BoIVG4gh.js +1 -0
- package/storybook-static/assets/Notifications-DY_A-Sho.js +1 -0
- package/storybook-static/assets/PageLoader.stories-DmtO1mlm.js +158 -0
- package/storybook-static/assets/Paper-SwQBhqI7.js +1 -0
- package/storybook-static/assets/Person-CkQl-mpq.js +1 -0
- package/storybook-static/assets/PickersModalDialog-Tjnr_cu5.js +10 -0
- package/storybook-static/assets/PickersToolbarButton-Tt185-si.js +1 -0
- package/storybook-static/assets/Popper-CnCTYXxy.js +1 -0
- package/storybook-static/assets/Portal-Cj8XF9Lf.js +1 -0
- package/storybook-static/assets/ScrollTopButton.stories-BflQCwNP.js +90 -0
- package/storybook-static/assets/Select-CjcuMAY0.js +4 -0
- package/storybook-static/assets/Select-DJh2biEb.js +3 -0
- package/storybook-static/assets/Select.stories-DU1Gb3I2.js +1103 -0
- package/storybook-static/assets/Settings-BLKc1CnO.js +1 -0
- package/storybook-static/assets/Snackbar-BtVeKTw6.js +1 -0
- package/storybook-static/assets/Stack-D01OUIXi.js +1 -0
- package/storybook-static/assets/Stat.stories-Bn9-iuPT.js +60 -0
- package/storybook-static/assets/StatusMessage.stories-hnfX8FeU.js +73 -0
- package/storybook-static/assets/Stepper-BtKB5ykn.js +2 -0
- package/storybook-static/assets/Stepper.stories-CTEZbgPc.js +165 -0
- package/storybook-static/assets/Table.stories-CTn2Ktmn.js +1260 -0
- package/storybook-static/assets/TableContainer-CzLNaEU-.js +1 -0
- package/storybook-static/assets/TableRow-CS88-1HF.js +2 -0
- package/storybook-static/assets/Tabs-DLpDOu_n.js +1 -0
- package/storybook-static/assets/Tabs.stories-BFVuFy_5.js +159 -0
- package/storybook-static/assets/TextField-22T-xHBm.js +1 -0
- package/storybook-static/assets/Timeline.stories-DJU_U2Hv.js +97 -0
- package/storybook-static/assets/Tooltip-DbnHUxNj.js +1 -0
- package/storybook-static/assets/Tooltip.stories-B7tA3dnV.js +66 -0
- package/storybook-static/assets/Typography-BgntX2Ep.js +1 -0
- package/storybook-static/assets/Wizard.stories-CVrJLK_D.js +23 -0
- package/storybook-static/assets/createSimplePaletteValueFilter-bm0fmN_7.js +1 -0
- package/storybook-static/assets/createSvgIcon-D_Gca4vA.js +1 -0
- package/storybook-static/assets/debounce-Be36O1Ab.js +1 -0
- package/storybook-static/assets/emotion-react.browser.esm--g-C9cX9.js +8 -0
- package/storybook-static/assets/extendSxProp-CEpa30hT.js +1 -0
- package/storybook-static/assets/formField.sx-DMCmZIAa.js +1 -0
- package/storybook-static/assets/getReactElementRef-BQ3ANZdy.js +1 -0
- package/storybook-static/assets/iframe-BAJnc_4n.js +1079 -0
- package/storybook-static/assets/index-B1tlhOpe.js +240 -0
- package/storybook-static/assets/index-BF3FAXTk.js +9 -0
- package/storybook-static/assets/index-CIeucmOB.js +2 -0
- package/storybook-static/assets/index-CY7j4a7o.js +1 -0
- package/storybook-static/assets/index-CxkKctw5.js +1 -0
- package/storybook-static/assets/isFocusVisible-B8k4qzLc.js +1 -0
- package/storybook-static/assets/isMuiElement-CTZSFcY5.js +1 -0
- package/storybook-static/assets/jsx-runtime-D_zvdyIk.js +9 -0
- package/storybook-static/assets/listItemTextClasses-CC_rwJam.js +1 -0
- package/storybook-static/assets/mergeSlotProps-B0UBKBMe.js +1 -0
- package/storybook-static/assets/ownerDocument-DW-IO8s5.js +1 -0
- package/storybook-static/assets/ownerWindow-HkKU3E4x.js +1 -0
- package/storybook-static/assets/preload-helper-PPVm8Dsz.js +1 -0
- package/storybook-static/assets/react-18-BUJ64QCV.js +25 -0
- package/storybook-static/assets/resolvePreset-CN2aOJJr.js +1 -0
- package/storybook-static/assets/useControlled-DsVh1a5j.js +1 -0
- package/storybook-static/assets/useForkRef-0ANIrxcF.js +1 -0
- package/storybook-static/assets/useId-b4fZxjOL.js +1 -0
- package/storybook-static/assets/useMobilePicker-DK-c8xbD.js +1 -0
- package/storybook-static/assets/usePreviousProps-WR0rG4aR.js +1 -0
- package/storybook-static/assets/useSlot-b6pXgp5_.js +1 -0
- package/storybook-static/assets/useSlotProps-C0uMfuBt.js +1 -0
- package/storybook-static/assets/useTheme-BmOJK7ra.js +1 -0
- package/storybook-static/assets/useThemeProps-DYtxXiUU.js +1 -0
- package/storybook-static/assets/useThemeProps-U4yXiZ_5.js +1 -0
- package/storybook-static/assets/useTimeout-DNjRaOWc.js +1 -0
- package/storybook-static/assets/visuallyHidden-Dan1xhjv.js +1 -0
- package/storybook-static/favicon-wrapper.svg +46 -0
- package/storybook-static/favicon.svg +1 -0
- package/storybook-static/iframe.html +686 -0
- package/storybook-static/index.html +160 -0
- package/storybook-static/index.json +1 -0
- package/storybook-static/nunito-sans-bold-italic.woff2 +0 -0
- package/storybook-static/nunito-sans-bold.woff2 +0 -0
- package/storybook-static/nunito-sans-italic.woff2 +0 -0
- package/storybook-static/nunito-sans-regular.woff2 +0 -0
- package/storybook-static/project.json +1 -0
- package/storybook-static/sb-addons/chromatic-com-storybook-2/manager-bundle.js +356 -0
- package/storybook-static/sb-addons/chromatic-com-storybook-2/manager-bundle.js.LEGAL.txt +40 -0
- package/storybook-static/sb-addons/docs-4/manager-bundle.js +151 -0
- package/storybook-static/sb-addons/onboarding-1/manager-bundle.js +127 -0
- package/storybook-static/sb-addons/storybook-core-server-presets-0/common-manager-bundle.js +971 -0
- package/storybook-static/sb-addons/vitest-3/manager-bundle.js +3 -0
- package/storybook-static/sb-common-assets/favicon-wrapper.svg +46 -0
- package/storybook-static/sb-common-assets/favicon.svg +1 -0
- package/storybook-static/sb-common-assets/nunito-sans-bold-italic.woff2 +0 -0
- package/storybook-static/sb-common-assets/nunito-sans-bold.woff2 +0 -0
- package/storybook-static/sb-common-assets/nunito-sans-italic.woff2 +0 -0
- package/storybook-static/sb-common-assets/nunito-sans-regular.woff2 +0 -0
- package/storybook-static/sb-manager/globals-module-info.js +797 -0
- package/storybook-static/sb-manager/globals-runtime.js +69679 -0
- package/storybook-static/sb-manager/globals.js +34 -0
- package/storybook-static/sb-manager/runtime.js +13195 -0
- package/storybook-static/vite-inject-mocker-entry.js +18 -0
- package/tailwind.config.js +10 -0
- package/tsconfig.json +48 -0
- package/tsup.config.js +41 -0
- package/vite.config.js +132 -0
- package/vitest.config.ts +35 -0
- package/dist/components/AppBar/AppBarBrand.d.ts +0 -31
- package/dist/components/AppBar/AppBarUserMenu.d.ts +0 -65
- package/dist/components/Autocomplete/Autocomplete.types.d.ts +0 -1
- package/dist/components/DatePicker/DatePicker.types.d.ts +0 -1
- package/dist/components/DateRangePicker/DateRangePicker.cjs.map +0 -1
- package/dist/components/DateRangePicker/DateRangePicker.d.ts +0 -15
- package/dist/components/DateRangePicker/DateRangePicker.definitions.d.ts +0 -6
- package/dist/components/DateRangePicker/DateRangePicker.js.map +0 -1
- package/dist/components/DateRangePicker/index.d.ts +0 -1
- package/dist/components/DateRangePicker.d.ts +0 -2
- package/dist/components/DateTimePicker/DateTimePicker.types.d.ts +0 -1
- package/dist/components/Input/Input.types.d.ts +0 -1
- package/dist/components/PageLoader/PageLoader.cjs +0 -61
- package/dist/components/PageLoader/PageLoader.cjs.map +0 -1
- package/dist/components/PageLoader/PageLoader.d.ts +0 -38
- package/dist/components/PageLoader/PageLoader.js +0 -61
- package/dist/components/PageLoader/PageLoader.js.map +0 -1
- package/dist/components/PageLoader/index.d.ts +0 -2
- package/dist/components/PageLoader.d.ts +0 -6
- package/dist/components/ScrollTopButton/ScrollTopButton.cjs +0 -79
- package/dist/components/ScrollTopButton/ScrollTopButton.cjs.map +0 -1
- package/dist/components/ScrollTopButton/ScrollTopButton.d.ts +0 -48
- package/dist/components/ScrollTopButton/ScrollTopButton.js +0 -79
- package/dist/components/ScrollTopButton/ScrollTopButton.js.map +0 -1
- package/dist/components/ScrollTopButton/index.d.ts +0 -4
- package/dist/components/ScrollTopButton.d.ts +0 -6
- package/dist/components/Select/Select.definitions.d.ts +0 -17
- package/dist/components/Select/Select.types.d.ts +0 -1
- package/dist/components/Select/_parts/SelectSearchHeader.d.ts +0 -15
- package/dist/formField.sx-CQ1mbk9M.cjs.map +0 -1
- package/dist/formField.sx-DfVbMe0V.js.map +0 -1
- package/dist/hooks/Wizard/Wizard.cjs +0 -7
- package/dist/hooks/Wizard/Wizard.cjs.map +0 -1
- package/dist/hooks/Wizard/Wizard.js +0 -7
- package/dist/hooks/Wizard/Wizard.js.map +0 -1
- package/dist/hooks/Wizard/index.d.ts +0 -3
- package/dist/hooks/Wizard/useWizard.d.ts +0 -9
- package/dist/hooks/Wizard.d.ts +0 -2
- package/dist/useWizard-CWdIxZzX.cjs +0 -94
- package/dist/useWizard-CWdIxZzX.cjs.map +0 -1
- package/dist/useWizard-CWq--C3o.js +0 -95
- package/dist/useWizard-CWq--C3o.js.map +0 -1
- /package/dist/{styles.css → index.css} +0 -0
|
@@ -0,0 +1,1260 @@
|
|
|
1
|
+
import{j as e}from"./jsx-runtime-D_zvdyIk.js";import{r as T,R as pa}from"./iframe-BAJnc_4n.js";import{c as le}from"./createSvgIcon-D_Gca4vA.js";import{K as ua,a as ga}from"./KeyboardArrowRight-WO_attK2.js";import{T as ha}from"./TableContainer-CzLNaEU-.js";import{T as xa,a as ya,b as ea,c as Te,d as fa}from"./TableRow-CS88-1HF.js";import{g as $e,a as Ue,s as ie,b as te,d as Me,r as na,u as Ye,c as xe,m as Oe,h as he,e as ba,i as va,j as Ca}from"./DefaultPropsProvider-BGoQxtDa.js";import{u as Sa,S as Ta}from"./Select-DJh2biEb.js";import{u as re}from"./useSlot-b6pXgp5_.js";import{u as la}from"./useControlled-DsVh1a5j.js";import{B as Ea}from"./ButtonBase-qyaMEhe4.js";import{c as Ze}from"./createSimplePaletteValueFilter-bm0fmN_7.js";import{m as ja}from"./mergeSlotProps-B0UBKBMe.js";import{T as s}from"./Typography-BgntX2Ep.js";import{B as w}from"./Box-BnhEcfFm.js";import{M as wa}from"./MenuItem-iU6tAqJI.js";import{I as Ee}from"./IconButton-9OYSTH58.js";import{B as ge}from"./Button-DBpqmVB_.js";import{S as Ia}from"./Snackbar-BtVeKTw6.js";import{A as ka}from"./Alert-3zvTPc0p.js";import{A as We}from"./Avatar-NbFfkZws.js";import{C as $}from"./Chip-C3vKPpzR.js";import{a as Pa}from"./useSlotProps-C0uMfuBt.js";import{u as ia}from"./useId-b4fZxjOL.js";import{u as za}from"./useForkRef-0ANIrxcF.js";import{v as Ba}from"./visuallyHidden-Dan1xhjv.js";import{i as Le}from"./isFocusVisible-B8k4qzLc.js";import{u as Ra}from"./useTheme-BmOJK7ra.js";import"./preload-helper-PPVm8Dsz.js";import"./Menu-ClzfjLc3.js";import"./Paper-SwQBhqI7.js";import"./ownerDocument-DW-IO8s5.js";import"./ownerWindow-HkKU3E4x.js";import"./debounce-Be36O1Ab.js";import"./Grow-8y4FglGK.js";import"./getReactElementRef-BQ3ANZdy.js";import"./useTimeout-DNjRaOWc.js";import"./index-CY7j4a7o.js";import"./index-BF3FAXTk.js";import"./Modal-3okp9H2i.js";import"./Portal-Cj8XF9Lf.js";import"./Fade-Ll96CvH8.js";import"./emotion-react.browser.esm--g-C9cX9.js";import"./extendSxProp-CEpa30hT.js";import"./listItemTextClasses-CC_rwJam.js";import"./CircularProgress-DC7ZNWwl.js";import"./Close-Cy8nELYU.js";function Da(o){return $e("PrivateSwitchBase",o)}Ue("PrivateSwitchBase",["root","checked","disabled","input","edgeStart","edgeEnd"]);const Fa=o=>{const{classes:a,checked:t,disabled:r,edge:l}=o,p={root:["root",t&&"checked",r&&"disabled",l&&`edge${te(l)}`],input:["input"]};return Me(p,Da,a)},Aa=ie(Ea,{name:"MuiSwitchBase"})({padding:9,borderRadius:"50%",variants:[{props:{edge:"start",size:"small"},style:{marginLeft:-3}},{props:({edge:o,ownerState:a})=>o==="start"&&a.size!=="small",style:{marginLeft:-12}},{props:{edge:"end",size:"small"},style:{marginRight:-3}},{props:({edge:o,ownerState:a})=>o==="end"&&a.size!=="small",style:{marginRight:-12}}]}),Va=ie("input",{name:"MuiSwitchBase",shouldForwardProp:na})({cursor:"inherit",position:"absolute",opacity:0,width:"100%",height:"100%",top:0,left:0,margin:0,padding:0,zIndex:1}),Na=T.forwardRef(function(a,t){const{autoFocus:r,checked:l,checkedIcon:p,defaultChecked:n,disabled:u,disableFocusRipple:f=!1,edge:h=!1,icon:x,id:y,inputProps:E,inputRef:j,name:v,onBlur:R,onChange:D,onFocus:z,readOnly:A,required:S=!1,tabIndex:g,type:P,value:J,slots:se={},slotProps:H={},...ee}=a,[M,ae]=la({controlled:l,default:!!n,name:"SwitchBase",state:"checked"}),V=Sa(),oe=C=>{z&&z(C),V&&V.onFocus&&V.onFocus(C)},_=C=>{R&&R(C),V&&V.onBlur&&V.onBlur(C)},ce=C=>{if(C.nativeEvent.defaultPrevented)return;const F=C.target.checked;ae(F),D&&D(C,F)};let B=u;V&&typeof B>"u"&&(B=V.disabled);const k=P==="checkbox"||P==="radio",N={...a,checked:M,disabled:B,disableFocusRipple:f,edge:h},O=Fa(N),X={slots:se,slotProps:{input:E,...H}},[de,me]=re("root",{ref:t,elementType:Aa,className:O.root,shouldForwardComponentProp:!0,externalForwardedProps:{...X,component:"span",...ee},getSlotProps:C=>({...C,onFocus:F=>{C.onFocus?.(F),oe(F)},onBlur:F=>{C.onBlur?.(F),_(F)}}),ownerState:N,additionalProps:{centerRipple:!0,focusRipple:!f,disabled:B,role:void 0,tabIndex:null}}),[ye,fe]=re("input",{ref:j,elementType:Va,className:O.input,externalForwardedProps:X,getSlotProps:C=>({...C,onChange:F=>{C.onChange?.(F),ce(F)}}),ownerState:N,additionalProps:{autoFocus:r,checked:l,defaultChecked:n,disabled:B,id:k?y:void 0,name:v,readOnly:A,required:S,tabIndex:g,type:P,...P==="checkbox"&&J===void 0?{}:{value:J}}});return e.jsxs(de,{...me,children:[e.jsx(ye,{...fe}),M?p:x]})}),La=le(e.jsx("path",{d:"M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z"})),$a=le(e.jsx("path",{d:"M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2zm-9 14l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"})),Ua=le(e.jsx("path",{d:"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-2 10H7v-2h10v2z"}));function Ma(o){return $e("MuiCheckbox",o)}const Ke=Ue("MuiCheckbox",["root","checked","disabled","indeterminate","colorPrimary","colorSecondary","sizeSmall","sizeMedium"]),Oa=o=>{const{classes:a,indeterminate:t,color:r,size:l}=o,p={root:["root",t&&"indeterminate",`color${te(r)}`,`size${te(l)}`]},n=Me(p,Ma,a);return{...a,...n}},Wa=ie(Na,{shouldForwardProp:o=>na(o)||o==="classes",name:"MuiCheckbox",slot:"Root",overridesResolver:(o,a)=>{const{ownerState:t}=o;return[a.root,t.indeterminate&&a.indeterminate,a[`size${te(t.size)}`],t.color!=="default"&&a[`color${te(t.color)}`]]}})(Oe(({theme:o})=>({color:(o.vars||o).palette.text.secondary,variants:[{props:{color:"default",disableRipple:!1},style:{"&:hover":{backgroundColor:o.alpha((o.vars||o).palette.action.active,(o.vars||o).palette.action.hoverOpacity)}}},...Object.entries(o.palette).filter(Ze()).map(([a])=>({props:{color:a,disableRipple:!1},style:{"&:hover":{backgroundColor:o.alpha((o.vars||o).palette[a].main,(o.vars||o).palette.action.hoverOpacity)}}})),...Object.entries(o.palette).filter(Ze()).map(([a])=>({props:{color:a},style:{[`&.${Ke.checked}, &.${Ke.indeterminate}`]:{color:(o.vars||o).palette[a].main},[`&.${Ke.disabled}`]:{color:(o.vars||o).palette.action.disabled}}})),{props:{disableRipple:!1},style:{"&:hover":{"@media (hover: none)":{backgroundColor:"transparent"}}}}]}))),qa=e.jsx($a,{}),Ha=e.jsx(La,{}),_a=e.jsx(Ua,{}),aa=T.forwardRef(function(a,t){const r=Ye({props:a,name:"MuiCheckbox"}),{checkedIcon:l=qa,color:p="primary",icon:n=Ha,indeterminate:u=!1,indeterminateIcon:f=_a,inputProps:h,size:x="medium",disableRipple:y=!1,className:E,slots:j={},slotProps:v={},...R}=r,D=u?f:n,z=u?f:l,A={...r,disableRipple:y,color:p,indeterminate:u,size:x},S=Oa(A),g=v.input??h,[P,J]=re("root",{ref:t,elementType:Wa,className:xe(S.root,E),shouldForwardComponentProp:!0,externalForwardedProps:{slots:j,slotProps:v,...R},ownerState:A,additionalProps:{type:"checkbox",icon:T.cloneElement(D,{fontSize:D.props.fontSize??x}),checkedIcon:T.cloneElement(z,{fontSize:z.props.fontSize??x}),disableRipple:y,slots:j,slotProps:{input:ja(typeof g=="function"?g(A):g,{"data-indeterminate":u})}}});return e.jsx(P,{...J,classes:S})});function Xa(o){return $e("MuiLink",o)}const Ga=Ue("MuiLink",["root","underlineNone","underlineHover","underlineAlways","button","focusVisible"]),Ka=({theme:o,ownerState:a})=>{const t=a.color;if("colorSpace"in o&&o.colorSpace){const p=he(o,`palette.${t}.main`)||he(o,`palette.${t}`)||a.color;return o.alpha(p,.4)}const r=he(o,`palette.${t}.main`,!1)||he(o,`palette.${t}`,!1)||a.color,l=he(o,`palette.${t}.mainChannel`)||he(o,`palette.${t}Channel`);return"vars"in o&&l?`rgba(${l} / 0.4)`:ba(r,.4)},oa={primary:!0,secondary:!0,error:!0,info:!0,success:!0,warning:!0,textPrimary:!0,textSecondary:!0,textDisabled:!0},Ja=o=>{const{classes:a,component:t,focusVisible:r,underline:l}=o,p={root:["root",`underline${te(l)}`,t==="button"&&"button",r&&"focusVisible"]};return Me(p,Xa,a)},Za=ie(s,{name:"MuiLink",slot:"Root",overridesResolver:(o,a)=>{const{ownerState:t}=o;return[a.root,a[`underline${te(t.underline)}`],t.component==="button"&&a.button]}})(Oe(({theme:o})=>({variants:[{props:{underline:"none"},style:{textDecoration:"none"}},{props:{underline:"hover"},style:{textDecoration:"none","&:hover":{textDecoration:"underline"}}},{props:{underline:"always"},style:{textDecoration:"underline","&:hover":{textDecorationColor:"inherit"}}},{props:({underline:a,ownerState:t})=>a==="always"&&t.color!=="inherit",style:{textDecorationColor:"var(--Link-underlineColor)"}},{props:({underline:a,ownerState:t})=>a==="always"&&t.color==="inherit",style:o.colorSpace?{textDecorationColor:o.alpha("currentColor",.4)}:null},...Object.entries(o.palette).filter(Ze()).map(([a])=>({props:{underline:"always",color:a},style:{"--Link-underlineColor":o.alpha((o.vars||o).palette[a].main,.4)}})),{props:{underline:"always",color:"textPrimary"},style:{"--Link-underlineColor":o.alpha((o.vars||o).palette.text.primary,.4)}},{props:{underline:"always",color:"textSecondary"},style:{"--Link-underlineColor":o.alpha((o.vars||o).palette.text.secondary,.4)}},{props:{underline:"always",color:"textDisabled"},style:{"--Link-underlineColor":(o.vars||o).palette.text.disabled}},{props:{component:"button"},style:{position:"relative",WebkitTapHighlightColor:"transparent",backgroundColor:"transparent",outline:0,border:0,margin:0,borderRadius:0,padding:0,cursor:"pointer",userSelect:"none",verticalAlign:"middle",MozAppearance:"none",WebkitAppearance:"none","&::-moz-focus-inner":{borderStyle:"none"},[`&.${Ga.focusVisible}`]:{outline:"auto"}}}]}))),Ya=T.forwardRef(function(a,t){const r=Ye({props:a,name:"MuiLink"}),l=Ra(),{className:p,color:n="primary",component:u="a",onBlur:f,onFocus:h,TypographyClasses:x,underline:y="always",variant:E="inherit",sx:j,...v}=r,[R,D]=T.useState(!1),z=P=>{Le(P.target)||D(!1),f&&f(P)},A=P=>{Le(P.target)&&D(!0),h&&h(P)},S={...r,color:n,component:u,focusVisible:R,underline:y,variant:E},g=Ja(S);return e.jsx(Za,{color:n,className:xe(g.root,p),classes:x,component:u,onBlur:z,onFocus:A,ref:t,ownerState:S,variant:E,...v,sx:[...oa[n]===void 0?[{color:n}]:[],...Array.isArray(j)?j:[j]],style:{...v.style,...y==="always"&&n!=="inherit"&&!oa[n]&&{"--Link-underlineColor":Ka({theme:l,ownerState:S})}}})}),Qa=le(e.jsx("path",{d:"M12 17.27L18.18 21l-1.64-7.03L22 9.24l-7.19-.61L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21z"})),eo=le(e.jsx("path",{d:"M22 9.24l-7.19-.62L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21 12 17.27 18.18 21l-1.63-7.03L22 9.24zM12 15.4l-3.76 2.27 1-4.28-3.32-2.88 4.38-.38L12 6.1l1.71 4.04 4.38.38-3.32 2.88 1 4.28L12 15.4z"}));function ao(o){return $e("MuiRating",o)}const Ce=Ue("MuiRating",["root","sizeSmall","sizeMedium","sizeLarge","readOnly","disabled","focusVisible","visuallyHidden","pristine","label","labelEmptyValueActive","icon","iconEmpty","iconFilled","iconHover","iconFocus","iconActive","decimal"]);function oo(o){const a=o.toString().split(".")[1];return a?a.length:0}function Je(o,a){if(o==null)return o;const t=Math.round(o/a)*a;return Number(t.toFixed(oo(a)))}const to=o=>{const{classes:a,size:t,readOnly:r,disabled:l,emptyValueFocused:p,focusVisible:n}=o,u={root:["root",`size${te(t)}`,l&&"disabled",n&&"focusVisible",r&&"readOnly"],label:["label","pristine"],labelEmptyValue:[p&&"labelEmptyValueActive"],icon:["icon"],iconEmpty:["iconEmpty"],iconFilled:["iconFilled"],iconHover:["iconHover"],iconFocus:["iconFocus"],iconActive:["iconActive"],decimal:["decimal"],visuallyHidden:["visuallyHidden"]};return Me(u,ao,a)},ro=ie("span",{name:"MuiRating",slot:"Root",overridesResolver:(o,a)=>{const{ownerState:t}=o;return[{[`& .${Ce.visuallyHidden}`]:a.visuallyHidden},a.root,a[`size${te(t.size)}`],t.readOnly&&a.readOnly]}})(Oe(({theme:o})=>({display:"inline-flex",position:"relative",fontSize:o.typography.pxToRem(24),color:"#faaf00",cursor:"pointer",textAlign:"left",width:"min-content",WebkitTapHighlightColor:"transparent",[`&.${Ce.disabled}`]:{opacity:(o.vars||o).palette.action.disabledOpacity,pointerEvents:"none"},[`&.${Ce.focusVisible} .${Ce.iconActive}`]:{outline:"1px solid #999"},[`& .${Ce.visuallyHidden}`]:Ba,variants:[{props:{size:"small"},style:{fontSize:o.typography.pxToRem(18)}},{props:{size:"large"},style:{fontSize:o.typography.pxToRem(30)}},{props:({ownerState:a})=>a.readOnly,style:{pointerEvents:"none"}}]}))),sa=ie("label",{name:"MuiRating",slot:"Label",overridesResolver:({ownerState:o},a)=>[a.label,o.emptyValueFocused&&a.labelEmptyValueActive]})({cursor:"inherit",variants:[{props:({ownerState:o})=>o.emptyValueFocused,style:{top:0,bottom:0,position:"absolute",outline:"1px solid #999",width:"100%"}}]}),no=ie("span",{name:"MuiRating",slot:"Icon",overridesResolver:(o,a)=>{const{ownerState:t}=o;return[a.icon,t.iconEmpty&&a.iconEmpty,t.iconFilled&&a.iconFilled,t.iconHover&&a.iconHover,t.iconFocus&&a.iconFocus,t.iconActive&&a.iconActive]}})(Oe(({theme:o})=>({display:"flex",transition:o.transitions.create("transform",{duration:o.transitions.duration.shortest}),pointerEvents:"none",variants:[{props:({ownerState:a})=>a.iconActive,style:{transform:"scale(1.2)"}},{props:({ownerState:a})=>a.iconEmpty,style:{color:(o.vars||o).palette.action.disabled}}]}))),lo=ie("span",{name:"MuiRating",slot:"Decimal",shouldForwardProp:o=>va(o)&&o!=="iconActive",overridesResolver:(o,a)=>{const{iconActive:t}=o;return[a.decimal,t&&a.iconActive]}})({position:"relative",variants:[{props:({iconActive:o})=>o,style:{transform:"scale(1.2)"}}]});function io(o){const{value:a,...t}=o;return e.jsx("span",{...t})}function ta(o){const{classes:a,disabled:t,emptyIcon:r,focus:l,getLabelText:p,highlightSelectedOnly:n,hover:u,icon:f,IconContainerComponent:h,isActive:x,itemValue:y,labelProps:E,name:j,onBlur:v,onChange:R,onClick:D,onFocus:z,readOnly:A,ownerState:S,ratingValue:g,ratingValueRounded:P,slots:J={},slotProps:se={}}=o,H=n?y===g:y<=g,ee=y<=u,M=y<=l,ae=y===P,V=`${j}-${ia()}`,oe={slots:J,slotProps:se},[_,ce]=re("icon",{elementType:no,className:xe(a.icon,H?a.iconFilled:a.iconEmpty,ee&&a.iconHover,M&&a.iconFocus,x&&a.iconActive),externalForwardedProps:oe,ownerState:{...S,iconEmpty:!H,iconFilled:H,iconHover:ee,iconFocus:M,iconActive:x},additionalProps:{value:y},internalForwardedProps:{as:h}}),[B,k]=re("label",{elementType:sa,externalForwardedProps:oe,ownerState:{...S,emptyValueFocused:void 0},additionalProps:{style:E?.style,htmlFor:V}}),N=e.jsx(_,{...ce,children:r&&!H?r:f});return A?e.jsx("span",{...E,children:N}):e.jsxs(T.Fragment,{children:[e.jsxs(B,{...k,children:[N,e.jsx("span",{className:a.visuallyHidden,children:p(y)})]}),e.jsx("input",{className:a.visuallyHidden,onFocus:z,onBlur:v,onChange:R,onClick:D,disabled:t,value:y,id:V,type:"radio",name:j,checked:ae})]})}const so=e.jsx(Qa,{fontSize:"inherit"}),co=e.jsx(eo,{fontSize:"inherit"});function mo(o){return`${o||"0"} Star${o!==1?"s":""}`}const Qe=T.forwardRef(function(a,t){const r=Ye({name:"MuiRating",props:a}),{component:l="span",className:p,defaultValue:n=null,disabled:u=!1,emptyIcon:f=co,emptyLabelText:h="Empty",getLabelText:x=mo,highlightSelectedOnly:y=!1,icon:E=so,IconContainerComponent:j=io,max:v=5,name:R,onChange:D,onChangeActive:z,onMouseLeave:A,onMouseMove:S,precision:g=1,readOnly:P=!1,size:J="medium",value:se,slots:H={},slotProps:ee={},...M}=r,ae=ia(R),[V,oe]=la({controlled:se,default:n,name:"Rating"}),_=Je(V,g),ce=Pa(),[{hover:B,focus:k},N]=T.useState({hover:-1,focus:-1});let O=_;B!==-1&&(O=B),k!==-1&&(O=k);const[X,de]=T.useState(!1),me=T.useRef(),ye=za(me,t),fe=m=>{S&&S(m);const c=me.current,{right:b,left:L,width:W}=c.getBoundingClientRect();let K;ce?K=(b-m.clientX)/W:K=(m.clientX-L)/W;let q=Je(v*K+g/2,g);q=Ca(q,g,v),N(Q=>Q.hover===q&&Q.focus===q?Q:{hover:q,focus:q}),de(!1),z&&B!==q&&z(m,q)},C=m=>{A&&A(m);const c=-1;N({hover:c,focus:c}),z&&B!==c&&z(m,c)},F=m=>{let c=m.target.value===""?null:parseFloat(m.target.value);B!==-1&&(c=B),oe(c),D&&D(m,c)},G=m=>{m.clientX===0&&m.clientY===0||(N({hover:-1,focus:-1}),oe(null),D&&parseFloat(m.target.value)===_&&D(m,null))},Z=m=>{Le(m.target)&&de(!0);const c=parseFloat(m.target.value);N(b=>({hover:b.hover,focus:c}))},pe=m=>{if(B!==-1)return;Le(m.target)||de(!1);const c=-1;N(b=>({hover:b.hover,focus:c}))},[qe,He]=T.useState(!1),ue={...r,component:l,defaultValue:n,disabled:u,emptyIcon:f,emptyLabelText:h,emptyValueFocused:qe,focusVisible:X,getLabelText:x,icon:E,IconContainerComponent:j,max:v,precision:g,readOnly:P,size:J},Y=to(ue),be={slots:H,slotProps:ee},[Se,ve]=re("root",{ref:ye,className:xe(Y.root,p),elementType:ro,externalForwardedProps:{...be,...M,component:l},getSlotProps:m=>({...m,onMouseMove:c=>{fe(c),m.onMouseMove?.(c)},onMouseLeave:c=>{C(c),m.onMouseLeave?.(c)}}),ownerState:ue,additionalProps:{role:P?"img":null,"aria-label":P?x(O):null}}),[_e,Xe]=re("label",{className:xe(Y.label,Y.labelEmptyValue),elementType:sa,externalForwardedProps:be,ownerState:ue}),[d,I]=re("decimal",{className:Y.decimal,elementType:lo,externalForwardedProps:be,ownerState:ue});return e.jsxs(Se,{...ve,children:[Array.from(new Array(v)).map((m,c)=>{const b=c+1,L={classes:Y,disabled:u,emptyIcon:f,focus:k,getLabelText:x,highlightSelectedOnly:y,hover:B,icon:E,IconContainerComponent:j,name:ae,onBlur:pe,onChange:F,onClick:G,onFocus:Z,ratingValue:O,ratingValueRounded:_,readOnly:P,ownerState:ue,slots:H,slotProps:ee},W=b===Math.ceil(O)&&(B!==-1||k!==-1);if(g<1){const K=Array.from(new Array(1/g));return T.createElement(d,{...I,key:b,className:xe(I.className,W&&Y.iconActive),iconActive:W},K.map((q,Q)=>{const Ge=Je(b-1+(Q+1)*g,g);return e.jsx(ta,{...L,isActive:!1,itemValue:Ge,labelProps:{style:K.length-1===Q?{}:{width:Ge===O?`${(Q+1)*g*100}%`:"0%",overflow:"hidden",position:"absolute"}}},Ge)}))}return e.jsx(ta,{...L,isActive:W,itemValue:b},b)}),!P&&!u&&e.jsxs(_e,{...Xe,children:[e.jsx("input",{className:Y.visuallyHidden,value:"",id:`${ae}-empty`,type:"radio",name:ae,checked:_==null,onFocus:()=>He(!0),onBlur:()=>He(!1),onChange:F}),e.jsx("span",{className:Y.visuallyHidden,children:h})]})]})}),ra=le(e.jsx("path",{d:"M19 9h-4V3H9v6H5l7 7zm-8 2V5h2v6h1.17L12 13.17 9.83 11zm-6 7h14v2H5z"})),po=le(e.jsx("path",{d:"M18.41 16.59 13.82 12l4.59-4.59L17 6l-6 6 6 6zM6 6h2v12H6z"})),uo=le(e.jsx("path",{d:"M5.59 7.41 10.18 12l-4.59 4.59L7 18l6-6-6-6zM16 6h2v12h-2z"})),go=o=>{const{data:a,columns:t,fileName:r,exportColumns:l,setSnackbarOpen:p,setSnackbarMessage:n,setSnackbarSeverity:u}=o;if(!a||a.length===0){n("No hay datos para exportar a CSV."),u("warning"),p(!0);return}n("Exportando datos a CSV..."),u("info"),p(!0);try{const f=l?t.filter(v=>l.includes(v.props.name)):t,h=f.map(v=>`"${v.props.name.replace(/"/g,'""')}"`).join(","),x=a.map(v=>f.map(D=>{const z=D.props.field;let A;Array.isArray(z)?A=v[z[0]]:A=v[z];let S=String(A||"");return(S.includes(",")||S.includes('"')||S.includes(`
|
|
2
|
+
`))&&(S=`"${S.replace(/"/g,'""')}"`),S}).join(",")),y=[h,...x].join(`
|
|
3
|
+
`),E=new Blob([y],{type:"text/csv;charset=utf-8;"}),j=document.createElement("a");if(j.download!==void 0){const v=URL.createObjectURL(E);j.setAttribute("href",v),j.setAttribute("download",r+".csv"),j.style.visibility="hidden",document.body.appendChild(j),j.click(),document.body.removeChild(j),URL.revokeObjectURL(v),n("¡Exportación a CSV completada!"),u("success")}else n("Tu navegador no soporta la descarga directa para CSV. Por favor, copia el contenido manualmente."),u("error")}catch(f){console.error("Error al exportar los datos a CSV:",f),n("Error al exportar los datos a CSV."),u("error")}finally{p(!0)}},ho=o=>{const{data:a,columns:t,fileName:r,exportColumns:l,setSnackbarOpen:p,setSnackbarMessage:n,setSnackbarSeverity:u}=o;if(!a||a.length===0){n("No hay datos para exportar a Excel."),u("warning"),p(!0);return}n("Exportando datos a Excel (XLSX)..."),u("info"),p(!0);try{const f=l?t.filter(E=>l.includes(E.props.name)):t;let h=`
|
|
4
|
+
<html xmlns:o="urn:schemas-microsoft-com:office:office"
|
|
5
|
+
xmlns:x="urn:schemas-microsoft-com:office:excel"
|
|
6
|
+
xmlns="http://www.w3.org/TR/REC-html40">
|
|
7
|
+
<head>
|
|
8
|
+
<meta charset="utf-8" />
|
|
9
|
+
<!--[if gte mso 9]><xml>
|
|
10
|
+
<x:ExcelWorkbook>
|
|
11
|
+
<x:ExcelWorksheets>
|
|
12
|
+
<x:ExcelWorksheet>
|
|
13
|
+
<x:Name>Hoja1</x:Name>
|
|
14
|
+
<x:WorksheetOptions>
|
|
15
|
+
<x:DisplayGridlines/>
|
|
16
|
+
</x:WorksheetOptions>
|
|
17
|
+
</x:ExcelWorksheet>
|
|
18
|
+
</x:ExcelWorksheets>
|
|
19
|
+
</x:ExcelWorkbook>
|
|
20
|
+
</xml><![endif]-->
|
|
21
|
+
</head>
|
|
22
|
+
<body>
|
|
23
|
+
<table>
|
|
24
|
+
<thead>
|
|
25
|
+
<tr>
|
|
26
|
+
${f.map(E=>`<th>${E.props.name}</th>`).join("")}
|
|
27
|
+
</tr>
|
|
28
|
+
</thead>
|
|
29
|
+
<tbody>
|
|
30
|
+
${a.map(E=>`
|
|
31
|
+
<tr>
|
|
32
|
+
${f.map(j=>{const v=j.props.field;let R;return Array.isArray(v)?R=E[v[0]]:R=E[v],`<td>${String(R||"").replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">")}</td>`}).join("")}
|
|
33
|
+
</tr>
|
|
34
|
+
`).join("")}
|
|
35
|
+
</tbody>
|
|
36
|
+
</table>
|
|
37
|
+
</body>
|
|
38
|
+
</html>
|
|
39
|
+
`;const x=new Blob([h],{type:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8;"}),y=document.createElement("a");if(y.download!==void 0){const E=URL.createObjectURL(x);y.setAttribute("href",E),y.setAttribute("download",r+".xlsx"),y.style.visibility="hidden",document.body.appendChild(y),y.click(),document.body.removeChild(y),URL.revokeObjectURL(E),n("¡Exportación a Excel (XLSX) completada!"),u("success")}else n("Tu navegador no soporta la descarga directa para Excel (XLSX). Por favor, copia el contenido manualmente."),u("error")}catch(f){console.error("Error al exportar los datos a Excel (XLSX):",f),n("Error al exportar los datos a Excel (XLSX)."),u("error")}finally{p(!0)}},xo=""+new URL("EmptyTable-B-RKtgVs.png",import.meta.url).href,yo=pa.forwardRef(function(a,t){return e.jsx(ka,{elevation:6,ref:t,variant:"filled",...a})});function U({data:o,children:a,currentPage:t,pageSize:r,totalPages:l,previousPage:p,nextPage:n,pageSizeSelectorValue:u=10,onPageChange:f,onPageSizeChange:h,visiblePageNumbers:x=5,enableCSVExport:y=!1,csvExportFileName:E="data.csv",csvExportButtonText:j="Exportar CSV",csvExportColumns:v,enableExcelExport:R=!1,excelExportFileName:D="data.xlsx",excelExportButtonText:z="Exportar Excel",excelExportColumns:A,enableRowSelection:S=!1,rowIdentifier:g,onSelectionChange:P,showPageSizeSelector:J=!0,emptyTitle:se="No hay datos disponibles",emptyMessage:H,emptyImageSrc:ee=e.jsx(w,{mb:2,children:e.jsx("img",{src:xo,alt:"No data",style:{maxWidth:"150px",opacity:.6}})})}){const M=T.Children.toArray(a).filter(d=>T.isValidElement(d)&&d.type.displayName==="Column"),[ae,V]=T.useState(!1),[oe,_]=T.useState(""),[ce,B]=T.useState("info"),[k,N]=T.useState([]);T.useEffect(()=>{N([])},[o,t,r]),T.useEffect(()=>{P?.(k)},[k,P]);const O=(d,I)=>{I!=="clickaway"&&V(!1)},X=typeof f=="function"&&typeof t=="number",[de,me]=T.useState(1),[ye,fe]=T.useState(u),C=X?t:de,F=X?r:ye,G=X?o:o.slice((C-1)*F,C*F),Z=X?l:Math.ceil(o.length/F),pe=d=>{d<1||d>Z||(X?f?.(d):me(d))},qe=d=>{X?(h?.(d),f?.(1)):(fe(d),me(1))},ue=(()=>{const d=[],I=Z,m=C,c=Math.floor(x/2);let b=Math.max(1,m-c),L=Math.min(I,m+c);L-b+1<x&&(b===1?L=Math.min(I,b+x-1):L===I&&(b=Math.max(1,I-x+1)));for(let W=b;W<=L;W++)d.push(W);return d})(),Y=d=>{if(!g){console.warn("`rowIdentifier` prop is required for row selection.");return}if(d.target.checked){const I=[...k];G.forEach(m=>{const c=m[g];I.some(b=>b[g]===c)||I.push(m)}),N(I)}else{const I=k.filter(m=>!G.some(c=>c[g]===m[g]));N(I)}},be=(d,I)=>{if(!g){console.warn("`rowIdentifier` prop is required for row selection.");return}const m=I[g],c=k.findIndex(L=>L[g]===m);let b=[];c===-1?b=b.concat(k,I):c===0?b=b.concat(k.slice(1)):c===k.length-1?b=b.concat(k.slice(0,-1)):c>0&&(b=b.concat(k.slice(0,c),k.slice(c+1))),N(b)},Se=d=>g?k.some(I=>I[g]===d[g]):!1,ve=G.filter(Se).length,_e=G.length>0&&ve===G.length,Xe=ve>0&&ve<G.length;return e.jsxs(ha,{children:[e.jsxs(xa,{sx:{minWidth:650},"aria-label":"custom table",style:G.length===0?{display:"none"}:{},children:[e.jsx(ya,{sx:{backgroundColor:"#fff"},children:e.jsxs(ea,{children:[S&&e.jsxs(Te,{padding:"checkbox",sx:{width:"50px"},children:[" ",e.jsx(aa,{color:"primary",indeterminate:Xe,checked:_e,onChange:Y,inputProps:{"aria-label":"select all desserts"}})]}),M.map((d,I)=>e.jsx(Te,{sx:{fontSize:"12px",color:m=>m.palette.text.secondary,width:d.props.width||"auto",whiteSpace:"nowrap"},children:e.jsx(s,{sx:{fontSize:"12px"},children:d.props.name})},I))]})}),e.jsx(fa,{sx:{borderRadius:"10px",overflow:"hidden"},children:G.map((d,I)=>{const m=S&&Se(d);return e.jsxs(ea,{sx:{backgroundColor:"#F8F8F8","&:last-child td, &:last-child th":{border:0},"&:hover":{backgroundColor:c=>"#FFF"}},selected:m,children:[S&&e.jsxs(Te,{padding:"checkbox",sx:{width:"50px"},children:[" ",e.jsx(aa,{color:"primary",checked:m,onClick:c=>be(c,d),inputProps:{"aria-labelledby":`table-checkbox-${I}`}})]}),M.map((c,b)=>{const{field:L,children:W}=c.props;let K;return Array.isArray(L)?L.length===0?K={...d}:K=L.reduce((q,Q)=>(q[Q]=d[Q],q),{}):K={[L]:d[L]},e.jsx(Te,{sx:{fontSize:"14px",width:c.props.width||"auto",whiteSpace:"nowrap",padding:"12px 16px",borderBottom:"none"},children:W(K)},b)})]},I)})})]}),G.length===0&&e.jsxs(w,{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",p:4,children:[ee,e.jsx(s,{variant:"body2",color:"#878E9A",fontSize:"18px",fontWeight:"600",children:se||"No hay datos disponibles para mostrar."}),e.jsx(s,{variant:"body2",color:"#878E9A",fontSize:"14px",mt:1,children:H||"Intente ajustar sus filtros o agregar nuevos datos."})]}),(Z>0||y||R||S&&k.length>0)&&e.jsxs(w,{display:"flex",justifyContent:"space-between",alignItems:"center",p:2,children:[Z>0&&J&&e.jsx(Ta,{size:"small",value:F,onChange:d=>qe(Number(d.target.value)),children:[1,2,3,5,10,20,50,100].map(d=>e.jsxs(wa,{value:d,children:["Mostrar ",d]},d))}),Z>0&&e.jsxs(w,{display:"flex",alignItems:"center",gap:.5,sx:{flexGrow:1,justifyContent:"center"},children:[e.jsx(Ee,{onClick:()=>pe(1),disabled:C<=1,size:"small",color:"primary",children:e.jsx(po,{fontSize:"small"})}),e.jsx(Ee,{onClick:()=>pe(C-1),disabled:C<=1,size:"small",color:"primary",children:e.jsx(ua,{fontSize:"small"})}),ue.map(d=>e.jsx(ge,{onClick:()=>pe(d),variant:C===d?"contained":"text",size:"small",sx:{minWidth:"32px",height:"32px"},children:d},d)),e.jsx(Ee,{onClick:()=>pe(C+1),disabled:C>=Z,size:"small",color:"primary",children:e.jsx(ga,{fontSize:"small"})}),e.jsx(Ee,{onClick:()=>pe(Z),disabled:C>=Z,size:"small",color:"primary",children:e.jsx(uo,{fontSize:"small"})})]}),S&&k.length>0&&e.jsxs(s,{variant:"subtitle2",sx:{mr:2},children:[k.length," seleccionados"]}),(y||R)&&e.jsxs(w,{display:"flex",alignItems:"center",gap:1,children:[y&&e.jsx(ge,{variant:"text",color:"primary",onClick:()=>go({data:o,columns:M,fileName:E,exportColumns:v,setSnackbarOpen:V,setSnackbarMessage:_,setSnackbarSeverity:B}),size:"small",startIcon:e.jsx(ra,{}),children:j}),R&&e.jsx(ge,{variant:"text",color:"primary",onClick:()=>ho({data:o,columns:M,fileName:D,exportColumns:A,setSnackbarOpen:V,setSnackbarMessage:_,setSnackbarSeverity:B}),size:"small",startIcon:e.jsx(ra,{}),children:z})]})]}),e.jsx(Ia,{open:ae,autoHideDuration:3e3,onClose:O,anchorOrigin:{vertical:"bottom",horizontal:"center"},children:e.jsx(yo,{onClose:O,severity:ce,sx:{width:"100%"},children:oe})})]})}U.__docgenInfo={description:"",methods:[],displayName:"Table",props:{data:{required:!0,tsType:{name:"Array",elements:[{name:"T"}],raw:"T[]"},description:""},children:{required:!0,tsType:{name:"ReactReactNode",raw:"React.ReactNode"},description:""},currentPage:{required:!1,tsType:{name:"number"},description:""},pageSize:{required:!1,tsType:{name:"number"},description:""},totalPages:{required:!1,tsType:{name:"number"},description:""},previousPage:{required:!1,tsType:{name:"number"},description:""},nextPage:{required:!1,tsType:{name:"number"},description:""},pageSizeSelectorValue:{required:!1,tsType:{name:"number"},description:"",defaultValue:{value:"10",computed:!1}},onPageChange:{required:!1,tsType:{name:"signature",type:"function",raw:"(newPage: number) => void",signature:{arguments:[{type:{name:"number"},name:"newPage"}],return:{name:"void"}}},description:""},onPageSizeChange:{required:!1,tsType:{name:"signature",type:"function",raw:"(newSize: number) => void",signature:{arguments:[{type:{name:"number"},name:"newSize"}],return:{name:"void"}}},description:""},visiblePageNumbers:{required:!1,tsType:{name:"number"},description:"",defaultValue:{value:"5",computed:!1}},enableCSVExport:{required:!1,tsType:{name:"boolean"},description:"",defaultValue:{value:"false",computed:!1}},csvExportFileName:{required:!1,tsType:{name:"string"},description:"",defaultValue:{value:"'data.csv'",computed:!1}},csvExportButtonText:{required:!1,tsType:{name:"string"},description:"",defaultValue:{value:"'Exportar CSV'",computed:!1}},csvExportColumns:{required:!1,tsType:{name:"Array",elements:[{name:"string"}],raw:"string[]"},description:""},enableExcelExport:{required:!1,tsType:{name:"boolean"},description:"",defaultValue:{value:"false",computed:!1}},excelExportFileName:{required:!1,tsType:{name:"string"},description:"",defaultValue:{value:"'data.xlsx'",computed:!1}},excelExportButtonText:{required:!1,tsType:{name:"string"},description:"",defaultValue:{value:"'Exportar Excel'",computed:!1}},excelExportColumns:{required:!1,tsType:{name:"Array",elements:[{name:"string"}],raw:"string[]"},description:""},enableRowSelection:{required:!1,tsType:{name:"boolean"},description:"",defaultValue:{value:"false",computed:!1}},rowIdentifier:{required:!1,tsType:{name:"T"},description:""},onSelectionChange:{required:!1,tsType:{name:"signature",type:"function",raw:"(selectedItems: T[]) => void",signature:{arguments:[{type:{name:"Array",elements:[{name:"T"}],raw:"T[]"},name:"selectedItems"}],return:{name:"void"}}},description:""},showPageSizeSelector:{required:!1,tsType:{name:"boolean"},description:"",defaultValue:{value:"true",computed:!1}},emptyTitle:{required:!1,tsType:{name:"string"},description:"",defaultValue:{value:"'No hay datos disponibles'",computed:!1}},emptyMessage:{required:!1,tsType:{name:"string"},description:""},emptyImageSrc:{required:!1,tsType:{name:"ReactReactNode",raw:"React.ReactNode"},description:"",defaultValue:{value:`<Box mb={2}>
|
|
40
|
+
<img src={EmptyImage} alt="No data" style={{ maxWidth: '150px', opacity: 0.6 }} />
|
|
41
|
+
</Box>`,computed:!1}}}};function i(o){return null}i.displayName="Column";const ne=[{id:1,nombre:"Juan Pérez",email:"juan@example.com",avatar:"https://placehold.co/50x50/F0F8FF/333333?text=JP",edad:25,activo:!0,rol:"admin",fechaRegistro:"2023-01-15",puntuacion:4.5},{id:2,nombre:"Ana García",email:"ana@example.com",avatar:"https://placehold.co/50x50/FFF0F5/333333?text=AG",edad:30,activo:!1,rol:"usuario",fechaRegistro:"2023-02-20",puntuacion:3.8},{id:3,nombre:"Carlos López",email:"carlos@example.com",avatar:"https://placehold.co/50x50/F5FFFA/333333?text=CL",edad:28,activo:!0,rol:"moderador",fechaRegistro:"2023-03-10",puntuacion:4.2},{id:4,nombre:"María Rodríguez",email:"maria@example.com",avatar:"https://placehold.co/50x50/F8F8FF/333333?text=MR",edad:35,activo:!0,rol:"usuario",fechaRegistro:"2023-04-05",puntuacion:4.9},{id:5,nombre:"Luis Martínez",email:"luis@example.com",avatar:"https://placehold.co/50x50/E6E6FA/333333?text=LM",edad:22,activo:!1,rol:"usuario",fechaRegistro:"2023-05-12",puntuacion:3.2}],ca=[{id:1,nombre:"iPhone 15",precio:999,categoria:"Electrónicos",stock:15,imagen:"https://placehold.co/60x60/ADD8E6/000000?text=I15",enOferta:!0,rating:4.8},{id:2,nombre:"Samsung Galaxy S24",precio:899,categoria:"Electrónicos",stock:8,imagen:"https://placehold.co/60x60/90EE90/000000?text=S24",enOferta:!1,rating:4.6},{id:3,nombre:"MacBook Pro",precio:1999,categoria:"Computadoras",stock:3,imagen:"https://placehold.co/60x60/DDA0DD/000000?text=MBP",enOferta:!0,rating:4.9},{id:4,nombre:"Dell XPS 13",precio:1299,categoria:"Computadoras",stock:0,imagen:"https://placehold.co/60x60/FFB6C1/000000?text=DX13",enOferta:!1,rating:4.4}],da=[{id:1,nombre:"Roberto",apellido:"Silva",departamento:"Desarrollo",salario:75e3,fechaIngreso:"2022-01-15",activo:!0,avatar:"https://placehold.co/50x50/B0E0E6/000000?text=RS"},{id:2,nombre:"Sofía",apellido:"Herrera",departamento:"Diseño",salario:65e3,fechaIngreso:"2022-03-20",activo:!0,avatar:"https://placehold.co/50x50/F5DEB3/000000?text=SH"},{id:3,nombre:"Diego",apellido:"Morales",departamento:"Marketing",salario:55e3,fechaIngreso:"2021-11-10",activo:!1,avatar:"https://placehold.co/50x50/D8BFD8/000000?text=DM"}],fo=`
|
|
42
|
+
<Table data={data} visiblePageNumbers={5} pageSizeSelectorValue={1} pageSize={1}>
|
|
43
|
+
<Column name="Nombre" field="nombre">
|
|
44
|
+
{({ nombre }) => <Typography variant="body2">{nombre}</Typography>}
|
|
45
|
+
</Column>
|
|
46
|
+
<Column name="Email" field="email">
|
|
47
|
+
{({ email }) => <Typography variant="body2" color="text.secondary">{email}</Typography>}
|
|
48
|
+
</Column>
|
|
49
|
+
<Column name="Edad" field="edad">
|
|
50
|
+
{({ edad }) => <Typography variant="body2">{edad} años</Typography>}
|
|
51
|
+
</Column>
|
|
52
|
+
</Table>
|
|
53
|
+
`,bo=`
|
|
54
|
+
<Table data={data}>
|
|
55
|
+
<Column name="Usuario" field={['avatar', 'nombre']}>
|
|
56
|
+
{({ avatar, nombre }) => (
|
|
57
|
+
<Box sx={{ display: 'flex', alignItems: 'center', gap: 2 }}>
|
|
58
|
+
<Avatar src={avatar} alt={nombre} sx={{ width: 40, height: 40 }} />
|
|
59
|
+
<Typography variant="body2" fontWeight="medium">{nombre}</Typography>
|
|
60
|
+
</Box>
|
|
61
|
+
)}
|
|
62
|
+
</Column>
|
|
63
|
+
<Column name="Estado" field="activo">
|
|
64
|
+
{({ activo }) => (
|
|
65
|
+
<Chip
|
|
66
|
+
label={activo ? 'Activo' : 'Inactivo'}
|
|
67
|
+
color={activo ? 'success' : 'default'}
|
|
68
|
+
size="small"
|
|
69
|
+
/>
|
|
70
|
+
)}
|
|
71
|
+
</Column>
|
|
72
|
+
<Column name="Rol" field="rol">
|
|
73
|
+
{({ rol }) => (
|
|
74
|
+
<Chip
|
|
75
|
+
label={rol!.charAt(0).toUpperCase() + rol!.slice(1)}
|
|
76
|
+
color={rol === 'admin' ? 'primary' : rol === 'moderador' ? 'secondary' : 'default'}
|
|
77
|
+
variant="outlined"
|
|
78
|
+
size="small"
|
|
79
|
+
/>
|
|
80
|
+
)}
|
|
81
|
+
</Column>
|
|
82
|
+
<Column name="Puntuación" field="puntuacion">
|
|
83
|
+
{({ puntuacion }) => (
|
|
84
|
+
<Box sx={{ display: 'flex', alignItems: 'center', gap: 1 }}>
|
|
85
|
+
<Rating value={puntuacion} max={5} precision={0.1} size="small" readOnly />
|
|
86
|
+
<Typography variant="caption" color="text.secondary">
|
|
87
|
+
{puntuacion}
|
|
88
|
+
</Typography>
|
|
89
|
+
</Box>
|
|
90
|
+
)}
|
|
91
|
+
</Column>
|
|
92
|
+
</Table>
|
|
93
|
+
`,vo=`
|
|
94
|
+
const [currentPage, setCurrentPage] = useState(1);
|
|
95
|
+
const [pageSize, setPageSize] = useState(2);
|
|
96
|
+
const totalItems = usuarios.length;
|
|
97
|
+
const totalPages = Math.ceil(totalItems / pageSize);
|
|
98
|
+
|
|
99
|
+
const startIndex = (currentPage - 1) * pageSize;
|
|
100
|
+
const currentData = usuarios.slice(startIndex, startIndex + pageSize);
|
|
101
|
+
|
|
102
|
+
const previousPageNum = currentPage > 1 ? currentPage - 1 : 1;
|
|
103
|
+
const nextPageNum = currentPage < totalPages ? currentPage + 1 : totalPages;
|
|
104
|
+
|
|
105
|
+
return (
|
|
106
|
+
<Table
|
|
107
|
+
data={currentData} // Pasa solo los datos de la página actual
|
|
108
|
+
currentPage={currentPage}
|
|
109
|
+
pageSize={pageSize}
|
|
110
|
+
totalPages={totalPages}
|
|
111
|
+
previousPage={previousPageNum}
|
|
112
|
+
nextPage={nextPageNum}
|
|
113
|
+
onPageChange={setCurrentPage}
|
|
114
|
+
onPageSizeChange={setPageSize}
|
|
115
|
+
>
|
|
116
|
+
<Column name="Nombre" field="nombre">
|
|
117
|
+
{({ nombre }) => <Typography variant="body2" fontWeight="medium">{nombre}</Typography>}
|
|
118
|
+
</Column>
|
|
119
|
+
<Column name="Email" field="email">
|
|
120
|
+
{({ email }) => <Typography variant="body2" color="text.secondary">{email}</Typography>}
|
|
121
|
+
</Column>
|
|
122
|
+
<Column name="Estado" field="activo">
|
|
123
|
+
{({ activo }) => (
|
|
124
|
+
<Chip
|
|
125
|
+
label={activo ? 'Activo' : 'Inactivo'}
|
|
126
|
+
color={activo ? 'success' : 'default'}
|
|
127
|
+
size="small"
|
|
128
|
+
/>
|
|
129
|
+
)}
|
|
130
|
+
</Column>
|
|
131
|
+
<Column name="Fecha de Registro" field="fechaRegistro">
|
|
132
|
+
{({ fechaRegistro }) => (
|
|
133
|
+
<Typography variant="body2">
|
|
134
|
+
{new Date(fechaRegistro!).toLocaleDateString('es-ES')}
|
|
135
|
+
</Typography>
|
|
136
|
+
)}
|
|
137
|
+
</Column>
|
|
138
|
+
</Table>
|
|
139
|
+
);
|
|
140
|
+
`,Co=`
|
|
141
|
+
<Table data={data} pageSizeSelectorValue={pageSizeSelectorValue}>
|
|
142
|
+
<Column name="Producto" field={['imagen', 'nombre']}>
|
|
143
|
+
{({ imagen, nombre }) => (
|
|
144
|
+
<Box sx={{ display: 'flex', alignItems: 'center', gap: 2 }}>
|
|
145
|
+
<Box
|
|
146
|
+
component="img"
|
|
147
|
+
src={imagen}
|
|
148
|
+
alt={nombre}
|
|
149
|
+
sx={{ width: 50, height: 50, borderRadius: 1, objectFit: 'cover' }}
|
|
150
|
+
/>
|
|
151
|
+
<Typography variant="body2" fontWeight="medium">{nombre}</Typography>
|
|
152
|
+
</Box>
|
|
153
|
+
)}
|
|
154
|
+
</Column>
|
|
155
|
+
<Column name="Precio" field={['precio', 'enOferta']}>
|
|
156
|
+
{({ precio, enOferta }) => (
|
|
157
|
+
<Box sx={{ display: 'flex', alignItems: 'center', gap: 1 }}>
|
|
158
|
+
<Typography
|
|
159
|
+
variant="body2"
|
|
160
|
+
color={enOferta ? 'error.main' : 'text.primary'}
|
|
161
|
+
fontWeight={enOferta ? 'bold' : 'normal'}
|
|
162
|
+
>
|
|
163
|
+
\${precio!.toLocaleString()}
|
|
164
|
+
</Typography>
|
|
165
|
+
{enOferta && (
|
|
166
|
+
<Chip label="OFERTA" color="error" size="small" />
|
|
167
|
+
)}
|
|
168
|
+
</Box>
|
|
169
|
+
)}
|
|
170
|
+
</Column>
|
|
171
|
+
<Column name="Stock" field="stock">
|
|
172
|
+
{({ stock }) => (
|
|
173
|
+
<Chip
|
|
174
|
+
label={stock! > 0 ? \`\${stock} unidades\` : 'Sin stock'}
|
|
175
|
+
color={stock! > 5 ? 'success' : stock! > 0 ? 'warning' : 'error'}
|
|
176
|
+
size="small"
|
|
177
|
+
/>
|
|
178
|
+
)}
|
|
179
|
+
</Column>
|
|
180
|
+
<Column name="Categoría" field="categoria">
|
|
181
|
+
{({ categoria }) => (
|
|
182
|
+
<Typography variant="body2">{categoria}</Typography>
|
|
183
|
+
)}
|
|
184
|
+
</Column>
|
|
185
|
+
<Column name="Rating" field="rating">
|
|
186
|
+
{({ rating }) => (
|
|
187
|
+
<Box sx={{ display: 'flex', alignItems: 'center', gap: 1 }}>
|
|
188
|
+
<Rating value={rating} max={5} precision={0.1} size="small" readOnly />
|
|
189
|
+
<Typography variant="caption">({rating})</Typography>
|
|
190
|
+
</Box>
|
|
191
|
+
)}
|
|
192
|
+
</Column>
|
|
193
|
+
</Table>
|
|
194
|
+
`,So=`
|
|
195
|
+
<Table data={data} pageSizeSelectorValue={pageSizeSelectorValue}>
|
|
196
|
+
<Column name="Empleado" field={['avatar', 'nombre', 'apellido']}>
|
|
197
|
+
{({ avatar, nombre, apellido }) => (
|
|
198
|
+
<Box sx={{ display: 'flex', alignItems: 'center', gap: 2 }}>
|
|
199
|
+
<Avatar src={avatar} sx={{ width: 40, height: 40 }}>
|
|
200
|
+
{avatar ? '' : \`\${nombre!.charAt(0)}\${apellido!.charAt(0)}\`}
|
|
201
|
+
</Avatar>
|
|
202
|
+
<Typography variant="body2" fontWeight="medium">
|
|
203
|
+
{nombre} {apellido}
|
|
204
|
+
</Typography>
|
|
205
|
+
</Box>
|
|
206
|
+
)}
|
|
207
|
+
</Column>
|
|
208
|
+
<Column name="Departamento" field="departamento">
|
|
209
|
+
{({ departamento }) => (
|
|
210
|
+
<Chip
|
|
211
|
+
label={departamento}
|
|
212
|
+
color="info"
|
|
213
|
+
variant="filled"
|
|
214
|
+
size="small"
|
|
215
|
+
/>
|
|
216
|
+
)}
|
|
217
|
+
</Column>
|
|
218
|
+
<Column name="Salario" field="salario">
|
|
219
|
+
{({ salario }) => (
|
|
220
|
+
<Typography variant="body2" fontWeight="bold" color="success.dark">
|
|
221
|
+
\${salario!.toLocaleString('es-ES')}
|
|
222
|
+
</Typography>
|
|
223
|
+
)}
|
|
224
|
+
</Column>
|
|
225
|
+
<Column name="Estado" field={['activo', 'fechaIngreso']}>
|
|
226
|
+
{({ activo, fechaIngreso }) => (
|
|
227
|
+
<Box>
|
|
228
|
+
<Chip
|
|
229
|
+
label={activo ? 'Contratado' : 'Inactivo'}
|
|
230
|
+
color={activo ? 'success' : 'error'}
|
|
231
|
+
size="small"
|
|
232
|
+
/>
|
|
233
|
+
<Typography variant="caption" display="block" color="text.secondary" sx={{ mt: 0.5 }}>
|
|
234
|
+
Desde: {new Date(fechaIngreso!).toLocaleDateString('es-ES')}
|
|
235
|
+
</Typography>
|
|
236
|
+
</Box>
|
|
237
|
+
)}
|
|
238
|
+
</Column>
|
|
239
|
+
</Table>
|
|
240
|
+
`,To=`
|
|
241
|
+
<Table data={data}>
|
|
242
|
+
<Column name="Nombre" field="nombre">
|
|
243
|
+
{({ nombre }) => <Typography variant="body2">{nombre}</Typography>}
|
|
244
|
+
</Column>
|
|
245
|
+
<Column name="Email" field="email">
|
|
246
|
+
{({ email }) => <Typography variant="body2">{email}</Typography>}
|
|
247
|
+
</Column>
|
|
248
|
+
<Column name="Estado" field="activo">
|
|
249
|
+
{({ activo }) => <Chip label={activo ? 'Activo' : 'Inactivo'} size="small" />}
|
|
250
|
+
</Column>
|
|
251
|
+
</Table>
|
|
252
|
+
`,Eo=`
|
|
253
|
+
<Table data={data}>
|
|
254
|
+
<Column name="Usuario" field={['avatar', 'nombre', 'email']}>
|
|
255
|
+
{({ avatar, nombre, email }) => (
|
|
256
|
+
<Box sx={{ display: 'flex', alignItems: 'center', gap: 2 }}>
|
|
257
|
+
<Avatar src={avatar} alt={nombre} />
|
|
258
|
+
<Box>
|
|
259
|
+
<Typography variant="body2" fontWeight="medium">{nombre}</Typography>
|
|
260
|
+
<Typography variant="caption" color="text.secondary">{email}</Typography>
|
|
261
|
+
</Box>
|
|
262
|
+
</Box>
|
|
263
|
+
)}
|
|
264
|
+
</Column>
|
|
265
|
+
<Column<Usuario> name="Información" field={[]}>
|
|
266
|
+
{(user) => (
|
|
267
|
+
<>
|
|
268
|
+
<Typography variant="body2">{user.edad} años</Typography>
|
|
269
|
+
<Box sx={{ display: 'flex', gap: 1, mt: 0.5 }}>
|
|
270
|
+
<Chip label={user.rol} size="small" color="primary" variant="outlined" />
|
|
271
|
+
<Chip
|
|
272
|
+
label={user.activo ? 'Activo' : 'Inactivo'}
|
|
273
|
+
size="small"
|
|
274
|
+
color={user.activo ? 'success' : 'default'}
|
|
275
|
+
/>
|
|
276
|
+
</Box>
|
|
277
|
+
</>
|
|
278
|
+
)}
|
|
279
|
+
</Column>
|
|
280
|
+
</Table>
|
|
281
|
+
`,jo=`
|
|
282
|
+
<Table data={data}>
|
|
283
|
+
<Column name="Producto" field={['imagen', 'nombre']}>
|
|
284
|
+
{({ imagen, nombre }) => (
|
|
285
|
+
<Box sx={{ display: 'flex', alignItems: 'center', gap: 2 }}>
|
|
286
|
+
<Box
|
|
287
|
+
component="img"
|
|
288
|
+
src={imagen}
|
|
289
|
+
alt={nombre}
|
|
290
|
+
sx={{ width: 50, height: 50, borderRadius: 1, objectFit: 'cover' }}
|
|
291
|
+
/>
|
|
292
|
+
<Typography variant="body2" fontWeight="medium">{nombre}</Typography>
|
|
293
|
+
</Box>
|
|
294
|
+
)}
|
|
295
|
+
</Column>
|
|
296
|
+
<Column name="Precio" field={['precio', 'enOferta']}>
|
|
297
|
+
{({ precio, enOferta }) => (
|
|
298
|
+
<Box sx={{ display: 'flex', alignItems: 'center', gap: 1 }}>
|
|
299
|
+
<Typography
|
|
300
|
+
variant="body2"
|
|
301
|
+
color={enOferta ? 'error.main' : 'text.primary'}
|
|
302
|
+
fontWeight={enOferta ? 'bold' : 'normal'}
|
|
303
|
+
>
|
|
304
|
+
\${precio!.toLocaleString()}
|
|
305
|
+
</Typography>
|
|
306
|
+
{enOferta && (
|
|
307
|
+
<Chip label="OFERTA" color="error" size="small" />
|
|
308
|
+
)}
|
|
309
|
+
</Box>
|
|
310
|
+
)}
|
|
311
|
+
</Column>
|
|
312
|
+
<Column name="Stock" field="stock">
|
|
313
|
+
{({ stock }) => (
|
|
314
|
+
<Chip
|
|
315
|
+
label={stock! > 0 ? \`\${stock} unidades\` : 'Sin stock'}
|
|
316
|
+
color={stock!> 5 ? 'success' : stock! > 0 ? 'warning' : 'error'}
|
|
317
|
+
size="small"
|
|
318
|
+
sx={{ backgroundColor: stock === 0 ? 'rgba(255, 0, 0, 0.1)' : undefined }}
|
|
319
|
+
/>
|
|
320
|
+
)}
|
|
321
|
+
</Column>
|
|
322
|
+
<Column name="Rating" field="rating">
|
|
323
|
+
{({ rating }) => (
|
|
324
|
+
<Box sx={{ display: 'flex', alignItems: 'center', gap: 1 }}>
|
|
325
|
+
<Rating value={rating} max={5} precision={0.1} size="small" readOnly />
|
|
326
|
+
<Typography variant="caption">({rating})</Typography>
|
|
327
|
+
</Box>
|
|
328
|
+
)}
|
|
329
|
+
</Column>
|
|
330
|
+
</Table>
|
|
331
|
+
`,wo=`
|
|
332
|
+
<Table data={data}>
|
|
333
|
+
<Column name="Empleado" field={['nombre', 'apellido', 'avatar']}>
|
|
334
|
+
{({ nombre, apellido, avatar }) => (
|
|
335
|
+
<Box sx={{ display: 'flex', alignItems: 'center', gap: 2 }}>
|
|
336
|
+
<Avatar src={avatar} sx={{ width: 40, height: 40 }}>
|
|
337
|
+
{avatar ? '' : \`\${nombre!.charAt(0)}\${apellido!.charAt(0)}\`}
|
|
338
|
+
</Avatar>
|
|
339
|
+
<Typography variant="body2" fontWeight="medium">
|
|
340
|
+
{nombre} {apellido}
|
|
341
|
+
</Typography>
|
|
342
|
+
</Box>
|
|
343
|
+
)}
|
|
344
|
+
</Column>
|
|
345
|
+
<Column name="Departamento" field="departamento">
|
|
346
|
+
{({ departamento }) => (
|
|
347
|
+
<Chip
|
|
348
|
+
label={departamento}
|
|
349
|
+
color="info"
|
|
350
|
+
variant="filled"
|
|
351
|
+
size="small"
|
|
352
|
+
/>
|
|
353
|
+
)}
|
|
354
|
+
</Column>
|
|
355
|
+
<Column name="Salario" field="salario">
|
|
356
|
+
{({ salario }) => (
|
|
357
|
+
<Typography variant="body2" fontWeight="bold" color="success.dark">
|
|
358
|
+
\${salario!.toLocaleString('es-ES')}
|
|
359
|
+
</Typography>
|
|
360
|
+
)}
|
|
361
|
+
</Column>
|
|
362
|
+
<Column name="Estado de Contratación" field={['activo', 'fechaIngreso']}>
|
|
363
|
+
{({ activo, fechaIngreso }) => (
|
|
364
|
+
<Box>
|
|
365
|
+
<Chip
|
|
366
|
+
label={activo ? 'Contratado' : 'Inactivo'}
|
|
367
|
+
color={activo ? 'success' : 'error'}
|
|
368
|
+
size="small"
|
|
369
|
+
/>
|
|
370
|
+
<Typography variant="caption" display="block" color="text.secondary" sx={{ mt: 0.5 }}>
|
|
371
|
+
Desde: {new Date(fechaIngreso!).toLocaleDateString('es-ES')}
|
|
372
|
+
</Typography>
|
|
373
|
+
</Box>
|
|
374
|
+
)}
|
|
375
|
+
</Column>
|
|
376
|
+
</Table>
|
|
377
|
+
`,Io=`
|
|
378
|
+
<Table data={data}>
|
|
379
|
+
<Column name="Nombre" field="nombre">
|
|
380
|
+
{({ nombre }) => <Typography variant="body2">{nombre}</Typography>}
|
|
381
|
+
</Column>
|
|
382
|
+
<Column name="Email" field="email">
|
|
383
|
+
{({ email }) => <Typography variant="body2" color="text.secondary">{email}</Typography>}
|
|
384
|
+
</Column>
|
|
385
|
+
<Column name="Acciones" field="id">
|
|
386
|
+
{({ id }) => (
|
|
387
|
+
<Button
|
|
388
|
+
variant="contained"
|
|
389
|
+
color="primary"
|
|
390
|
+
size="small"
|
|
391
|
+
onClick={() => alert('ID del usuario: '+id )} // Log al hacer clic
|
|
392
|
+
>
|
|
393
|
+
Ver Detalles ({id})
|
|
394
|
+
</Button>
|
|
395
|
+
)}
|
|
396
|
+
</Column>
|
|
397
|
+
</Table>
|
|
398
|
+
`,ko=`
|
|
399
|
+
<Table<Usuario>
|
|
400
|
+
data={usuarios}
|
|
401
|
+
enableExport={enableExport}
|
|
402
|
+
exportFileName={exportFileName}
|
|
403
|
+
exportButtonText={exportButtonText}
|
|
404
|
+
exportColumns={exportColumns}
|
|
405
|
+
>
|
|
406
|
+
<Column<Usuario> name="ID" field="id">
|
|
407
|
+
{(row) => <Typography>{row.id}</Typography>}
|
|
408
|
+
</Column>
|
|
409
|
+
<Column<Usuario> name="Nombre" field="nombre">
|
|
410
|
+
{(row) => <Typography>{row.nombre}</Typography>}
|
|
411
|
+
</Column>
|
|
412
|
+
<Column<Usuario> name="Email" field="email">
|
|
413
|
+
{({ email }) => <Link href={\`mailto:\${email}\`}>{email}</Link>}
|
|
414
|
+
</Column>
|
|
415
|
+
<Column<Usuario> name="Edad" field="edad">
|
|
416
|
+
{(row) => <Typography>{row.edad}</Typography>}
|
|
417
|
+
</Column>
|
|
418
|
+
<Column<Usuario> name="Rol" field="rol">
|
|
419
|
+
{({ rol }) => <Chip label={rol} size="small" />}
|
|
420
|
+
</Column>
|
|
421
|
+
<Column<Usuario> name="Acciones" field="id">
|
|
422
|
+
{({ id }) => (
|
|
423
|
+
<Button variant="outlined" size="small" onClick={() => alert(\`Ver detalles de usuario \${id}\`)}>
|
|
424
|
+
Ver
|
|
425
|
+
</Button>
|
|
426
|
+
)}
|
|
427
|
+
</Column>
|
|
428
|
+
</Table>
|
|
429
|
+
`,Po=`
|
|
430
|
+
|
|
431
|
+
const [selectedItems, setSelectedItems] = useState<UserData[]>([]);
|
|
432
|
+
|
|
433
|
+
const handleSelectionChange = (items: UserData[]) => {
|
|
434
|
+
setSelectedItems(items);
|
|
435
|
+
args.onSelectionChange?.(items);
|
|
436
|
+
};
|
|
437
|
+
|
|
438
|
+
const handleBulkDelete = () => {
|
|
439
|
+
if (selectedItems.length > 0) {
|
|
440
|
+
alert(\`Eliminando \${selectedItems.length} usuarios: \${selectedItems.map(item => item.nombre).join(', ')}\`);
|
|
441
|
+
setSelectedItems([]);
|
|
442
|
+
} else {
|
|
443
|
+
alert('No hay elementos seleccionados para eliminar.');
|
|
444
|
+
}
|
|
445
|
+
};
|
|
446
|
+
|
|
447
|
+
const handleBulkUpdateCity = () => {
|
|
448
|
+
if (selectedItems.length > 0) {
|
|
449
|
+
const newCity = prompt('Ingresa la nueva ciudad para los seleccionados:');
|
|
450
|
+
if (newCity) {
|
|
451
|
+
alert(\`Actualizando ciudad de \${selectedItems.length} usuarios a \${newCity}\`);
|
|
452
|
+
setSelectedItems([]);
|
|
453
|
+
}
|
|
454
|
+
} else {
|
|
455
|
+
alert('No hay elementos seleccionados para actualizar.');
|
|
456
|
+
}
|
|
457
|
+
};
|
|
458
|
+
|
|
459
|
+
return (
|
|
460
|
+
<Box>
|
|
461
|
+
<Typography variant="h6" gutterBottom>
|
|
462
|
+
Tabla con Selección de Filas
|
|
463
|
+
</Typography>
|
|
464
|
+
{selectedItems.length > 0 && (
|
|
465
|
+
<Box sx={{ mb: 2, display: 'flex', gap: 1 }}>
|
|
466
|
+
<Button variant="contained" color="error" onClick={handleBulkDelete}>
|
|
467
|
+
Eliminar ({selectedItems.length})
|
|
468
|
+
</Button>
|
|
469
|
+
<Button variant="contained" color="primary" onClick={handleBulkUpdateCity}>
|
|
470
|
+
Actualizar Ciudad ({selectedItems.length})
|
|
471
|
+
</Button>
|
|
472
|
+
<Typography variant="body2" sx={{ alignSelf: 'center', ml: 2 }}>
|
|
473
|
+
Elementos seleccionados: {selectedItems.length}
|
|
474
|
+
</Typography>
|
|
475
|
+
</Box>
|
|
476
|
+
)}
|
|
477
|
+
<Table<UserData>
|
|
478
|
+
{...args}
|
|
479
|
+
data={sampleData} // Usamos sampleData para esta historia
|
|
480
|
+
enableRowSelection={true}
|
|
481
|
+
rowIdentifier="id" // Es crucial que coincida con una clave única en tus datos
|
|
482
|
+
onSelectionChange={handleSelectionChange}
|
|
483
|
+
pageSizeSelectorValue={5}
|
|
484
|
+
>
|
|
485
|
+
<Column<UserData>
|
|
486
|
+
name="ID"
|
|
487
|
+
field="id"
|
|
488
|
+
children={(row) => <Typography>{row.id}</Typography>}
|
|
489
|
+
/>
|
|
490
|
+
<Column<UserData>
|
|
491
|
+
name="Nombre"
|
|
492
|
+
field="name"
|
|
493
|
+
children={(row) => <Typography>{row.name}</Typography>}
|
|
494
|
+
/>
|
|
495
|
+
<Column<UserData>
|
|
496
|
+
name="Email"
|
|
497
|
+
field="email"
|
|
498
|
+
children={(row) => <Typography>{row.email}</Typography>}
|
|
499
|
+
/>
|
|
500
|
+
<Column<UserData>
|
|
501
|
+
name="Ciudad"
|
|
502
|
+
field="city"
|
|
503
|
+
children={(row) => <Typography>{row.city}</Typography>}
|
|
504
|
+
/>
|
|
505
|
+
</Table>
|
|
506
|
+
</Box>
|
|
507
|
+
);
|
|
508
|
+
|
|
509
|
+
`,zo=`
|
|
510
|
+
const [selectedItems, setSelectedItems] = useState<UserData[]>([]);
|
|
511
|
+
|
|
512
|
+
const handleSelectionChange = (items: UserData[]) => {
|
|
513
|
+
setSelectedItems(items);
|
|
514
|
+
args.onSelectionChange?.(items);
|
|
515
|
+
};
|
|
516
|
+
|
|
517
|
+
return (
|
|
518
|
+
<Box>
|
|
519
|
+
<Typography variant="h6" gutterBottom>
|
|
520
|
+
Tabla con Exportación y Selección de Filas
|
|
521
|
+
</Typography>
|
|
522
|
+
{selectedItems.length > 0 && (
|
|
523
|
+
<Box sx={{ mb: 2 }}>
|
|
524
|
+
<Typography variant="body2">
|
|
525
|
+
Elementos seleccionados: {selectedItems.length}
|
|
526
|
+
</Typography>
|
|
527
|
+
</Box>
|
|
528
|
+
)}
|
|
529
|
+
<Table<UserData>
|
|
530
|
+
{...args}
|
|
531
|
+
data={sampleData} // Usamos sampleData para esta historia
|
|
532
|
+
enableRowSelection={true}
|
|
533
|
+
rowIdentifier="id"
|
|
534
|
+
onSelectionChange={handleSelectionChange}
|
|
535
|
+
pageSizeSelectorValue={5}
|
|
536
|
+
enableCSVExport={true}
|
|
537
|
+
csvExportFileName="users_data_with_selection"
|
|
538
|
+
enableExcelExport={true}
|
|
539
|
+
excelExportFileName="users_data_with_selection"
|
|
540
|
+
>
|
|
541
|
+
<Column<UserData>
|
|
542
|
+
name="ID"
|
|
543
|
+
field="id"
|
|
544
|
+
children={(row) => <Typography>{row.id}</Typography>}
|
|
545
|
+
/>
|
|
546
|
+
<Column<UserData>
|
|
547
|
+
name="Nombre"
|
|
548
|
+
field="name"
|
|
549
|
+
children={(row) => <Typography>{row.name}</Typography>}
|
|
550
|
+
/>
|
|
551
|
+
<Column<UserData>
|
|
552
|
+
name="Email"
|
|
553
|
+
field="email"
|
|
554
|
+
children={(row) => <Typography>{row.email}</Typography>}
|
|
555
|
+
/>
|
|
556
|
+
<Column<UserData>
|
|
557
|
+
name="Ciudad"
|
|
558
|
+
field="city"
|
|
559
|
+
children={(row) => <Typography>{row.city}</Typography>}
|
|
560
|
+
/>
|
|
561
|
+
</Table>
|
|
562
|
+
</Box>
|
|
563
|
+
);
|
|
564
|
+
`,ma=[{id:1,name:"Alice Smith",age:28,city:"New York",email:"alice@example.com"},{id:2,name:"Bob Johnson",age:34,city:"London",email:"bob@example.com"},{id:3,name:"Charlie Brown",age:22,city:"Paris",email:"charlie@example.com"},{id:4,name:"Diana Prince",age:40,city:"Themyscira",email:"diana@example.com"},{id:5,name:"Eve Adams",age:19,city:"Berlin",email:"eve@example.com"},{id:6,name:"Frank White",age:55,city:"Tokyo",email:"frank@example.com"},{id:7,name:"Grace Lee",age:31,city:"Seoul",email:"grace@example.com"},{id:8,name:"Henry Ford",age:60,city:"Detroit",email:"henry@example.com"},{id:9,name:"Ivy Green",age:25,city:"Rome",email:"ivy@example.com"},{id:10,name:"Jack Black",age:45,city:"Los Angeles",email:"jack@example.com"},{id:11,name:"Karen Millen",age:33,city:"Madrid",email:"karen@example.com"},{id:12,name:"Leo Messi",age:37,city:"Miami",email:"leo@example.com"}],Et={title:"Components/Table",component:U,parameters:{layout:"padded",docs:{description:{component:"Componente de tabla flexible y tipado que permite definir columnas de forma declarativa con paginación interna o externa."}}},tags:["autodocs"],argTypes:{data:{control:"object",description:"Array de objetos de datos a mostrar en la tabla. Las columnas heredarán el tipo definido del arreglo de datos."},children:{control:!1,description:"Componentes `Column` que definen la estructura de las columnas. Las columnas definen requieren las propiedades: `name` que es el nombre que se verá en la columna y `field` que son los atributos a los cuales se podran acceder desde el scope interno de la columna. Si el atributo `field` tiene un arreglo vacio, se utilizará el objeto completo (todos los campos del objeto)."},currentPage:{control:"number",description:"Número de página actual (para paginación controlada).",if:{arg:"onPageChange",exists:!0}},pageSize:{control:"number",description:"Número de elementos por página (para paginación controlada).",if:{arg:"onPageChange",exists:!0}},totalPages:{control:"number",description:"Número total de páginas (para paginación controlada).",if:{arg:"onPageChange",exists:!0}},previousPage:{control:"number",description:"Página anterior (para paginación controlada).",if:{arg:"onPageChange",exists:!0}},nextPage:{control:"number",description:"Página siguiente (para paginación controlada).",if:{arg:"onPageChange",exists:!0}},pageSizeSelectorValue:{control:"number",description:"Valor por defecto para el selector de tamaño de página cuando la paginación es interna."},onPageChange:{action:"page changed",description:"Callback para manejar el cambio de página (activa paginación controlada)."},onPageSizeChange:{action:"page size changed",description:"Callback para manejar el cambio de tamaño de página (activa paginación controlada).",if:{arg:"onPageChange",exists:!0}},enableCSVExport:{control:"boolean",description:"Habilita o deshabilita la funcionalidad de exportación a CSV.",defaultValue:!1},csvExportFileName:{control:"text",description:"Nombre del archivo CSV al exportar.",defaultValue:"data.csv",if:{arg:"enableCSVExport",eq:!0}},enableExcelExport:{control:"boolean",description:"Habilita o deshabilita la funcionalidad de exportación a Excel.",defaultValue:!1},excelExportFileName:{control:"text",description:"Nombre del archivo Excel al exportar.",defaultValue:"data.xlsx",if:{arg:"enableExcelExport",eq:!0}},csvExportButtonText:{control:"text",description:"Texto del botón de exportar.",defaultValue:"Exportar CSV",if:{arg:"enableCSVExport",eq:!0}},excelExportButtonText:{control:"text",description:"Texto del botón de exportar.",defaultValue:"Exportar Excel",if:{arg:"enableExcelExport",eq:!0}},csvExportColumns:{control:"text",description:"Array de nombres de columnas a exportar. Si no se especifica, se exportan todas.",if:{arg:"enableCSVExport",eq:!0}},enableRowSelection:{control:"boolean",description:"Habilita o deshabilita la selección de filas con checkboxes.",defaultValue:!1},rowIdentifier:{control:"text",description:'La clave única en el objeto de datos utilizada como identificador para las filas seleccionables (ej. "id").',if:{arg:"enableRowSelection",eq:!0}},onSelectionChange:{action:"selectionChanged",description:"Callback que se dispara cuando cambia la selección de filas. Devuelve un array con los objetos seleccionados.",if:{arg:"enableRowSelection",eq:!0}}}},je={args:{data:ne},render:({data:o})=>e.jsxs(U,{data:o,pageSizeSelectorValue:1,pageSize:1,children:[e.jsx(i,{name:"Nombre",field:"nombre",children:({nombre:a})=>e.jsx(s,{children:a})}),e.jsx(i,{name:"Email",field:"email",children:({email:a})=>e.jsx(s,{color:"text.secondary",children:a})}),e.jsx(i,{width:"10%",name:"Edad",field:"edad",children:({edad:a})=>e.jsxs(s,{children:[a," años"]})})]}),parameters:{docs:{description:{story:"Tabla básica con datos simples y columnas de texto. La paginación es interna por defecto."},source:{code:fo.trim()}}}},we={args:{data:ne.slice(0,4)},render:({data:o})=>e.jsxs(U,{data:o,children:[e.jsx(i,{name:"Usuario",field:["avatar","nombre"],children:({avatar:a,nombre:t})=>e.jsxs(w,{sx:{display:"flex",alignItems:"center",gap:2},children:[e.jsx(We,{src:a,alt:t,sx:{width:40,height:40}}),e.jsx(s,{variant:"body2",fontWeight:"medium",children:t})]})}),e.jsx(i,{name:"Estado",field:"activo",children:({activo:a})=>e.jsx($,{label:a?"Activo":"Inactivo",color:a?"success":"default",size:"small"})}),e.jsx(i,{name:"Rol",field:"rol",children:({rol:a})=>e.jsx($,{label:a.charAt(0).toUpperCase()+a.slice(1),color:a==="admin"?"primary":a==="moderador"?"secondary":"default",variant:"outlined",size:"small"})}),e.jsx(i,{name:"Puntuación",field:"puntuacion",children:({puntuacion:a})=>e.jsxs(w,{sx:{display:"flex",alignItems:"center",gap:1},children:[e.jsx(Qe,{value:a,max:5,precision:.1,size:"small",readOnly:!0}),e.jsx(s,{variant:"caption",color:"text.secondary",children:a})]})})]}),parameters:{docs:{description:{story:"Tabla con componentes complejos como avatars, chips y ratings. La paginación es interna por defecto."},source:{code:bo.trim()}}}},Ie={render:()=>{const[o,a]=T.useState(1),[t,r]=T.useState(2),l=ne.length,p=Math.ceil(l/t),n=(o-1)*t,u=ne.slice(n,n+t),f=o>1?o-1:1,h=o<p?o+1:p;return e.jsxs(U,{data:u,currentPage:o,pageSize:t,totalPages:p,previousPage:f,nextPage:h,onPageChange:a,onPageSizeChange:r,children:[e.jsx(i,{name:"Nombre",field:"nombre",children:({nombre:x})=>e.jsx(s,{variant:"body2",fontWeight:"medium",children:x})}),e.jsx(i,{name:"Email",field:"email",children:({email:x})=>e.jsx(s,{variant:"body2",color:"text.secondary",children:x})}),e.jsx(i,{name:"Estado",field:"activo",children:({activo:x})=>e.jsx($,{label:x?"Activo":"Inactivo",color:x?"success":"default",size:"small"})}),e.jsx(i,{name:"Fecha de Registro",field:"fechaRegistro",children:({fechaRegistro:x})=>e.jsx(s,{variant:"body2",children:new Date(x).toLocaleDateString("es-ES")})})]})},parameters:{docs:{description:{story:"Tabla con paginación controlada externamente. El componente `Table` no gestiona el estado de la paginación, solo la UI."},source:{code:vo.trim()}}}},ke={args:{data:ca,pageSizeSelectorValue:1},render:({data:o,pageSizeSelectorValue:a})=>e.jsxs(U,{data:o,pageSizeSelectorValue:a,children:[e.jsx(i,{name:"Producto",field:["imagen","nombre"],children:({imagen:t,nombre:r})=>e.jsxs(w,{sx:{display:"flex",alignItems:"center",gap:2},children:[e.jsx(w,{component:"img",src:t,alt:r,sx:{width:50,height:50,borderRadius:1,objectFit:"cover"}}),e.jsx(s,{variant:"body2",fontWeight:"medium",children:r})]})}),e.jsx(i,{name:"Precio",field:["precio","enOferta"],children:({precio:t,enOferta:r})=>e.jsxs(w,{sx:{display:"flex",alignItems:"center",gap:1},children:[e.jsxs(s,{variant:"body2",color:r?"error.main":"text.primary",fontWeight:r?"bold":"normal",children:["$",t.toLocaleString()]}),r&&e.jsx($,{label:"OFERTA",color:"error",size:"small"})]})}),e.jsx(i,{name:"Stock",field:"stock",children:({stock:t})=>e.jsx($,{label:t>0?`${t} unidades`:"Sin stock",color:t>5?"success":t>0?"warning":"error",size:"small"})}),e.jsx(i,{name:"Categoría",field:"categoria",children:({categoria:t})=>e.jsx(s,{variant:"body2",children:t})}),e.jsx(i,{name:"Rating",field:"rating",children:({rating:t})=>e.jsxs(w,{sx:{display:"flex",alignItems:"center",gap:1},children:[e.jsx(Qe,{value:t,max:5,precision:.1,size:"small",readOnly:!0}),e.jsxs(s,{variant:"caption",children:["(",t,")"]})]})})]}),parameters:{docs:{description:{story:"Tabla de productos con imágenes, precios, stock y calificaciones. Paginación interna."},source:{code:Co.trim()}}}},Pe={args:{data:da,pageSizeSelectorValue:1},render:({data:o,pageSizeSelectorValue:a})=>e.jsxs(U,{data:o,pageSizeSelectorValue:a,children:[e.jsx(i,{name:"Empleado",field:["avatar","nombre","apellido"],children:({avatar:t,nombre:r,apellido:l})=>e.jsxs(w,{sx:{display:"flex",alignItems:"center",gap:2},children:[e.jsx(We,{src:t,sx:{width:40,height:40},children:t?"":`${r.charAt(0)}${l.charAt(0)}`}),e.jsxs(s,{variant:"body2",fontWeight:"medium",children:[r," ",l]})]})}),e.jsx(i,{name:"Departamento",field:"departamento",children:({departamento:t})=>e.jsx($,{label:t,color:"info",variant:"filled",size:"small"})}),e.jsx(i,{name:"Salario",field:"salario",children:({salario:t})=>e.jsxs(s,{variant:"body2",fontWeight:"bold",color:"success.dark",children:["$",t.toLocaleString("es-ES")]})}),e.jsx(i,{name:"Estado",field:["activo","fechaIngreso"],children:({activo:t,fechaIngreso:r})=>e.jsxs(w,{children:[e.jsx($,{label:t?"Contratado":"Inactivo",color:t?"success":"error",size:"small"}),e.jsxs(s,{variant:"caption",display:"block",color:"text.secondary",sx:{mt:.5},children:["Desde: ",new Date(r).toLocaleDateString("es-ES")]})]})})]}),parameters:{docs:{description:{story:"Tabla de empleados con múltiples campos combinados en una sola columna. Paginación interna."},source:{code:So.trim()}}}},ze={args:{data:[]},render:({data:o})=>e.jsxs(U,{data:o,emptyTitle:"No se encontraron registros",emptyMessage:"Intente ajustar sus filtros o agregar nuevos datos.",children:[e.jsx(i,{name:"Nombre",field:"nombre",children:({nombre:a})=>e.jsx(s,{variant:"body2",children:a})}),e.jsx(i,{name:"Email",field:"email",children:({email:a})=>e.jsx(s,{variant:"body2",children:a})}),e.jsx(i,{name:"Estado",field:"activo",children:({activo:a})=>e.jsx($,{label:a?"Activo":"Inactivo",size:"small"})})]}),parameters:{docs:{description:{story:"Tabla sin datos para mostrar el estado vacío y el mensaje correspondiente."},source:{code:To.trim()}}}},Be={args:{data:[ne[0]]},render:({data:o})=>e.jsxs(U,{data:o,children:[e.jsx(i,{name:"Usuario",field:["avatar","nombre","email"],children:({avatar:a,nombre:t,email:r})=>e.jsxs(w,{sx:{display:"flex",alignItems:"center",gap:2},children:[e.jsx(We,{src:a,alt:t}),e.jsxs(w,{children:[e.jsx(s,{variant:"body2",fontWeight:"medium",children:t}),e.jsx(s,{variant:"caption",color:"text.secondary",children:r})]})]})}),e.jsx(i,{name:"Información",field:[],children:a=>e.jsxs(e.Fragment,{children:[e.jsxs(s,{variant:"body2",children:[a.edad," años"]}),e.jsxs(w,{sx:{display:"flex",gap:1,mt:.5},children:[e.jsx($,{label:a.rol,size:"small",color:"primary",variant:"outlined"}),e.jsx($,{label:a.activo?"Activo":"Inactivo",size:"small",color:a.activo?"success":"default"})]})]})})]}),parameters:{docs:{description:{story:"Tabla con una sola fila de datos."},source:{code:Eo.trim()}}}},Re={args:{data:ca},render:({data:o})=>e.jsxs(U,{data:o,children:[e.jsx(i,{name:"Producto",field:["imagen","nombre"],children:({imagen:a,nombre:t})=>e.jsxs(w,{sx:{display:"flex",alignItems:"center",gap:2},children:[e.jsx(w,{component:"img",src:a,alt:t,sx:{width:50,height:50,borderRadius:1,objectFit:"cover"}}),e.jsx(s,{variant:"body2",fontWeight:"medium",children:t})]})}),e.jsx(i,{name:"Precio",field:["precio","enOferta"],children:({precio:a,enOferta:t})=>e.jsxs(w,{sx:{display:"flex",alignItems:"center",gap:1},children:[e.jsxs(s,{variant:"body2",color:t?"error.main":"text.primary",fontWeight:t?"bold":"normal",children:["$",a.toLocaleString()]}),t&&e.jsx($,{label:"OFERTA",color:"error",size:"small"})]})}),e.jsx(i,{name:"Stock",field:"stock",children:({stock:a})=>e.jsx($,{label:a>0?`${a} unidades`:"Sin stock",color:a>5?"success":a>0?"warning":"error",size:"small",sx:{backgroundColor:a===0?"rgba(255, 0, 0, 0.1)":void 0}})}),e.jsx(i,{name:"Rating",field:"rating",children:({rating:a})=>e.jsxs(w,{sx:{display:"flex",alignItems:"center",gap:1},children:[e.jsx(Qe,{value:a,max:5,precision:.1,size:"small",readOnly:!0}),e.jsxs(s,{variant:"caption",children:["(",a,")"]})]})})]}),parameters:{docs:{description:{story:"Muestra la tabla de productos resaltando visualmente los productos sin stock. Paginación interna."},source:{code:jo.trim()}}}},De={args:{data:da},render:({data:o})=>e.jsxs(U,{data:o,children:[e.jsx(i,{name:"Empleado",field:["nombre","apellido","avatar"],children:({nombre:a,apellido:t,avatar:r})=>e.jsxs(w,{sx:{display:"flex",alignItems:"center",gap:2},children:[e.jsx(We,{src:r,sx:{width:40,height:40},children:r?"":`${a.charAt(0)}${t.charAt(0)}`}),e.jsxs(s,{variant:"body2",fontWeight:"medium",children:[a," ",t]})]})}),e.jsx(i,{name:"Departamento",field:"departamento",children:({departamento:a})=>e.jsx($,{label:a,color:"info",variant:"filled",size:"small"})}),e.jsx(i,{name:"Salario",field:"salario",children:({salario:a})=>e.jsxs(s,{variant:"body2",fontWeight:"bold",color:"success.dark",children:["$",a.toLocaleString("es-ES")]})}),e.jsx(i,{name:"Estado de Contratación",field:["activo","fechaIngreso"],children:({activo:a,fechaIngreso:t})=>e.jsxs(w,{children:[e.jsx($,{label:a?"Contratado":"Inactivo",color:a?"success":"error",size:"small"}),e.jsxs(s,{variant:"caption",display:"block",color:"text.secondary",sx:{mt:.5},children:["Desde: ",new Date(t).toLocaleDateString("es-ES")]})]})})]}),parameters:{docs:{description:{story:"Muestra una tabla de empleados con un resumen detallado de su estado de contratación y fecha de ingreso. Paginación interna."},source:{code:wo.trim()}}}},Fe={args:{data:ne.slice(0,3)},render:({data:o})=>e.jsxs(U,{data:o,children:[e.jsx(i,{name:"Nombre",field:"nombre",children:({nombre:a})=>e.jsx(s,{variant:"body2",children:a})}),e.jsx(i,{name:"Email",field:"email",children:({email:a})=>e.jsx(s,{variant:"body2",color:"text.secondary",children:a})}),e.jsx(i,{name:"Acciones",field:"id",children:({id:a})=>e.jsxs(ge,{variant:"contained",color:"primary",size:"small",onClick:()=>alert("ID del usuario: "+a),children:["Ver Detalles (",a,")"]})})]}),parameters:{docs:{description:{story:"Ejemplo de tabla con una columna de acciones que, al hacer clic en un botón, registra el ID del elemento en la consola."},source:{code:Io.trim()}}}},Ae={args:{data:ne,enableCSVExport:!0,enableExcelExport:!0,csvExportFileName:"usuarios_data",csvExportButtonText:".csv",excelExportFileName:"usuarios_data",excelExportButtonText:".xlsx",csvExportColumns:["ID","Nombre","Email","Edad"],excelExportColumns:["ID","Nombre","Email","Edad"]},render:({data:o,enableCSVExport:a,enableExcelExport:t,csvExportFileName:r,csvExportButtonText:l,excelExportFileName:p,excelExportButtonText:n,csvExportColumns:u,excelExportColumns:f})=>e.jsxs(U,{data:ne,enableCSVExport:a,enableExcelExport:t,csvExportFileName:r,csvExportButtonText:l,excelExportFileName:p,excelExportButtonText:n,csvExportColumns:u,excelExportColumns:f,children:[e.jsx(i,{name:"ID",field:"id",children:h=>e.jsx(s,{children:h.id})}),e.jsx(i,{name:"Nombre",field:"nombre",children:h=>e.jsx(s,{children:h.nombre})}),e.jsx(i,{name:"Email",field:"email",children:({email:h})=>e.jsx(Ya,{href:`mailto:${h}`,children:h})}),e.jsx(i,{name:"Edad",field:"edad",children:h=>e.jsx(s,{children:h.edad})}),e.jsx(i,{name:"Rol",field:"rol",children:({rol:h})=>e.jsx($,{label:h,size:"small"})}),e.jsx(i,{name:"Acciones",field:"id",children:({id:h})=>e.jsx(ge,{variant:"outlined",size:"small",onClick:()=>alert(`Ver detalles de usuario ${h}`),children:"Ver"})})]}),parameters:{docs:{description:{story:"Tabla con la funcionalidad de exportar sus datos a un archivo CSV. Puedes especificar qué columnas incluir en la exportación y el nombre del archivo."},source:{code:ko.trim()}}}},Ve={render:o=>{const[a,t]=T.useState([]),r=n=>{t(n),o.onSelectionChange?.(n)},l=()=>{a.length>0?(alert(`Eliminando ${a.length} usuarios: ${a.map(n=>n.name).join(", ")}`),t([])):alert("No hay elementos seleccionados para eliminar.")},p=()=>{if(a.length>0){const n=prompt("Ingresa la nueva ciudad para los seleccionados:");n&&(alert(`Actualizando ciudad de ${a.length} usuarios a ${n}`),t([]))}else alert("No hay elementos seleccionados para actualizar.")};return e.jsxs(w,{children:[e.jsx(s,{variant:"h6",gutterBottom:!0,children:"Tabla con Selección de Filas"}),a.length>0&&e.jsxs(w,{sx:{mb:2,display:"flex",gap:1},children:[e.jsxs(ge,{variant:"contained",color:"error",onClick:l,children:["Eliminar (",a.length,")"]}),e.jsxs(ge,{variant:"contained",color:"primary",onClick:p,children:["Actualizar Ciudad (",a.length,")"]}),e.jsxs(s,{variant:"body2",sx:{alignSelf:"center",ml:2},children:["Elementos seleccionados: ",a.length]})]}),e.jsxs(U,{...o,data:ma,enableRowSelection:!0,rowIdentifier:"id",onSelectionChange:r,pageSizeSelectorValue:5,children:[e.jsx(i,{name:"ID",field:"id",children:n=>e.jsx(s,{children:n.id})}),e.jsx(i,{name:"Nombre",field:"name",children:n=>e.jsx(s,{children:n.name})}),e.jsx(i,{name:"Email",field:"email",children:n=>e.jsx(s,{children:n.email})}),e.jsx(i,{name:"Ciudad",field:"city",children:n=>e.jsx(s,{children:n.city})})]})]})},args:{},parameters:{docs:{description:{story:"Tabla con la funcionalidad de selección de filas. Puedes seleccionar una o muchas filas y realizar acciones en masa."},source:{code:Po.trim()}}}},Ne={render:o=>{const[a,t]=T.useState([]),r=l=>{t(l),o.onSelectionChange?.(l)};return e.jsxs(w,{children:[e.jsx(s,{variant:"h6",gutterBottom:!0,children:"Tabla con Exportación y Selección de Filas"}),a.length>0&&e.jsx(w,{sx:{mb:2},children:e.jsxs(s,{variant:"body2",children:["Elementos seleccionados: ",a.length]})}),e.jsxs(U,{...o,data:ma,enableRowSelection:!0,rowIdentifier:"id",onSelectionChange:r,pageSizeSelectorValue:5,enableCSVExport:!0,csvExportFileName:"users_data_with_selection",enableExcelExport:!0,excelExportFileName:"users_data_with_selection",children:[e.jsx(i,{name:"ID",field:"id",children:l=>e.jsx(s,{children:l.id})}),e.jsx(i,{name:"Nombre",field:"name",children:l=>e.jsx(s,{children:l.name})}),e.jsx(i,{name:"Email",field:"email",children:l=>e.jsx(s,{children:l.email})}),e.jsx(i,{name:"Ciudad",field:"city",children:l=>e.jsx(s,{children:l.city})})]})]})},args:{},parameters:{docs:{description:{story:"Tabla con la funcionalidad de exportar sus datos a un archivo CSV y Excel. Puedes especificar qué columnas incluir en la exportación y el nombre del archivo."},source:{code:zo.trim()}}}};je.parameters={...je.parameters,docs:{...je.parameters?.docs,source:{originalSource:`{
|
|
565
|
+
args: {
|
|
566
|
+
data: usuarios
|
|
567
|
+
},
|
|
568
|
+
render: ({
|
|
569
|
+
data
|
|
570
|
+
}) => <Table data={data} pageSizeSelectorValue={1} pageSize={1}>
|
|
571
|
+
<Column name="Nombre" field="nombre">
|
|
572
|
+
{({
|
|
573
|
+
nombre
|
|
574
|
+
}) => <Typography>{nombre}</Typography>}
|
|
575
|
+
</Column>
|
|
576
|
+
<Column name="Email" field="email">
|
|
577
|
+
{({
|
|
578
|
+
email
|
|
579
|
+
}) => <Typography color="text.secondary">{email}</Typography>}
|
|
580
|
+
</Column>
|
|
581
|
+
<Column width='10%' name="Edad" field="edad">
|
|
582
|
+
{({
|
|
583
|
+
edad
|
|
584
|
+
}) => <Typography>{edad} años</Typography>}
|
|
585
|
+
</Column>
|
|
586
|
+
</Table>,
|
|
587
|
+
parameters: {
|
|
588
|
+
docs: {
|
|
589
|
+
description: {
|
|
590
|
+
story: 'Tabla básica con datos simples y columnas de texto. La paginación es interna por defecto.'
|
|
591
|
+
},
|
|
592
|
+
source: {
|
|
593
|
+
code: BasicTableCode.trim()
|
|
594
|
+
}
|
|
595
|
+
}
|
|
596
|
+
}
|
|
597
|
+
}`,...je.parameters?.docs?.source}}};we.parameters={...we.parameters,docs:{...we.parameters?.docs,source:{originalSource:`{
|
|
598
|
+
args: {
|
|
599
|
+
data: usuarios.slice(0, 4)
|
|
600
|
+
},
|
|
601
|
+
render: ({
|
|
602
|
+
data
|
|
603
|
+
}) => <Table data={data}>
|
|
604
|
+
<Column name="Usuario" field={['avatar', 'nombre']}>
|
|
605
|
+
{({
|
|
606
|
+
avatar,
|
|
607
|
+
nombre
|
|
608
|
+
}) => <Box sx={{
|
|
609
|
+
display: 'flex',
|
|
610
|
+
alignItems: 'center',
|
|
611
|
+
gap: 2
|
|
612
|
+
}}>
|
|
613
|
+
<Avatar src={avatar} alt={nombre} sx={{
|
|
614
|
+
width: 40,
|
|
615
|
+
height: 40
|
|
616
|
+
}} />
|
|
617
|
+
<Typography variant="body2" fontWeight="medium">{nombre}</Typography>
|
|
618
|
+
</Box>}
|
|
619
|
+
</Column>
|
|
620
|
+
<Column name="Estado" field="activo">
|
|
621
|
+
{({
|
|
622
|
+
activo
|
|
623
|
+
}) => <Chip label={activo ? 'Activo' : 'Inactivo'} color={activo ? 'success' : 'default'} size="small" />}
|
|
624
|
+
</Column>
|
|
625
|
+
<Column name="Rol" field="rol">
|
|
626
|
+
{({
|
|
627
|
+
rol
|
|
628
|
+
}) => <Chip label={rol!.charAt(0).toUpperCase() + rol!.slice(1)} color={rol === 'admin' ? 'primary' : rol === 'moderador' ? 'secondary' : 'default'} variant="outlined" size="small" />}
|
|
629
|
+
</Column>
|
|
630
|
+
<Column name="Puntuación" field="puntuacion">
|
|
631
|
+
{({
|
|
632
|
+
puntuacion
|
|
633
|
+
}) => <Box sx={{
|
|
634
|
+
display: 'flex',
|
|
635
|
+
alignItems: 'center',
|
|
636
|
+
gap: 1
|
|
637
|
+
}}>
|
|
638
|
+
<Rating value={puntuacion} max={5} precision={0.1} size="small" readOnly />
|
|
639
|
+
<Typography variant="caption" color="text.secondary">
|
|
640
|
+
{puntuacion}
|
|
641
|
+
</Typography>
|
|
642
|
+
</Box>}
|
|
643
|
+
</Column>
|
|
644
|
+
</Table>,
|
|
645
|
+
parameters: {
|
|
646
|
+
docs: {
|
|
647
|
+
description: {
|
|
648
|
+
story: 'Tabla con componentes complejos como avatars, chips y ratings. La paginación es interna por defecto.'
|
|
649
|
+
},
|
|
650
|
+
source: {
|
|
651
|
+
code: ComplexComponentsCode.trim()
|
|
652
|
+
}
|
|
653
|
+
}
|
|
654
|
+
}
|
|
655
|
+
}`,...we.parameters?.docs?.source}}};Ie.parameters={...Ie.parameters,docs:{...Ie.parameters?.docs,source:{originalSource:`{
|
|
656
|
+
render: () => {
|
|
657
|
+
const [currentPage, setCurrentPage] = useState(1);
|
|
658
|
+
const [pageSize, setPageSize] = useState(2);
|
|
659
|
+
const totalItems = usuarios.length;
|
|
660
|
+
const totalPages = Math.ceil(totalItems / pageSize);
|
|
661
|
+
const startIndex = (currentPage - 1) * pageSize;
|
|
662
|
+
const currentData = usuarios.slice(startIndex, startIndex + pageSize);
|
|
663
|
+
const previousPageNum = currentPage > 1 ? currentPage - 1 : 1;
|
|
664
|
+
const nextPageNum = currentPage < totalPages ? currentPage + 1 : totalPages;
|
|
665
|
+
return <Table data={currentData} currentPage={currentPage} pageSize={pageSize} totalPages={totalPages} previousPage={previousPageNum} nextPage={nextPageNum} onPageChange={setCurrentPage} onPageSizeChange={setPageSize}>
|
|
666
|
+
<Column name="Nombre" field="nombre">
|
|
667
|
+
{({
|
|
668
|
+
nombre
|
|
669
|
+
}) => <Typography variant="body2" fontWeight="medium">{nombre}</Typography>}
|
|
670
|
+
</Column>
|
|
671
|
+
<Column name="Email" field="email">
|
|
672
|
+
{({
|
|
673
|
+
email
|
|
674
|
+
}) => <Typography variant="body2" color="text.secondary">{email}</Typography>}
|
|
675
|
+
</Column>
|
|
676
|
+
<Column name="Estado" field="activo">
|
|
677
|
+
{({
|
|
678
|
+
activo
|
|
679
|
+
}) => <Chip label={activo ? 'Activo' : 'Inactivo'} color={activo ? 'success' : 'default'} size="small" />}
|
|
680
|
+
</Column>
|
|
681
|
+
<Column name="Fecha de Registro" field="fechaRegistro">
|
|
682
|
+
{({
|
|
683
|
+
fechaRegistro
|
|
684
|
+
}) => <Typography variant="body2">
|
|
685
|
+
{new Date(fechaRegistro!).toLocaleDateString('es-ES')}
|
|
686
|
+
</Typography>}
|
|
687
|
+
</Column>
|
|
688
|
+
</Table>;
|
|
689
|
+
},
|
|
690
|
+
parameters: {
|
|
691
|
+
docs: {
|
|
692
|
+
description: {
|
|
693
|
+
story: 'Tabla con paginación controlada externamente. El componente \`Table\` no gestiona el estado de la paginación, solo la UI.'
|
|
694
|
+
},
|
|
695
|
+
source: {
|
|
696
|
+
code: WithExternalPaginationControlCode.trim()
|
|
697
|
+
}
|
|
698
|
+
}
|
|
699
|
+
}
|
|
700
|
+
}`,...Ie.parameters?.docs?.source}}};ke.parameters={...ke.parameters,docs:{...ke.parameters?.docs,source:{originalSource:`{
|
|
701
|
+
args: {
|
|
702
|
+
data: productos,
|
|
703
|
+
pageSizeSelectorValue: 1
|
|
704
|
+
},
|
|
705
|
+
render: ({
|
|
706
|
+
data,
|
|
707
|
+
pageSizeSelectorValue
|
|
708
|
+
}) => <Table data={data} pageSizeSelectorValue={pageSizeSelectorValue}>
|
|
709
|
+
<Column name="Producto" field={['imagen', 'nombre']}>
|
|
710
|
+
{({
|
|
711
|
+
imagen,
|
|
712
|
+
nombre
|
|
713
|
+
}) => <Box sx={{
|
|
714
|
+
display: 'flex',
|
|
715
|
+
alignItems: 'center',
|
|
716
|
+
gap: 2
|
|
717
|
+
}}>
|
|
718
|
+
<Box component="img" src={imagen} alt={nombre} sx={{
|
|
719
|
+
width: 50,
|
|
720
|
+
height: 50,
|
|
721
|
+
borderRadius: 1,
|
|
722
|
+
objectFit: 'cover'
|
|
723
|
+
}} />
|
|
724
|
+
<Typography variant="body2" fontWeight="medium">{nombre}</Typography>
|
|
725
|
+
</Box>}
|
|
726
|
+
</Column>
|
|
727
|
+
<Column name="Precio" field={['precio', 'enOferta']}>
|
|
728
|
+
{({
|
|
729
|
+
precio,
|
|
730
|
+
enOferta
|
|
731
|
+
}) => <Box sx={{
|
|
732
|
+
display: 'flex',
|
|
733
|
+
alignItems: 'center',
|
|
734
|
+
gap: 1
|
|
735
|
+
}}>
|
|
736
|
+
<Typography variant="body2" color={enOferta ? 'error.main' : 'text.primary'} fontWeight={enOferta ? 'bold' : 'normal'}>
|
|
737
|
+
\${precio!.toLocaleString()}
|
|
738
|
+
</Typography>
|
|
739
|
+
{enOferta && <Chip label="OFERTA" color="error" size="small" />}
|
|
740
|
+
</Box>}
|
|
741
|
+
</Column>
|
|
742
|
+
<Column name="Stock" field="stock">
|
|
743
|
+
{({
|
|
744
|
+
stock
|
|
745
|
+
}) => <Chip label={stock! > 0 ? \`\${stock} unidades\` : 'Sin stock'} color={stock! > 5 ? 'success' : stock! > 0 ? 'warning' : 'error'} size="small" />}
|
|
746
|
+
</Column>
|
|
747
|
+
<Column name="Categoría" field="categoria">
|
|
748
|
+
{({
|
|
749
|
+
categoria
|
|
750
|
+
}) => <Typography variant="body2">{categoria}</Typography>}
|
|
751
|
+
</Column>
|
|
752
|
+
<Column name="Rating" field="rating">
|
|
753
|
+
{({
|
|
754
|
+
rating
|
|
755
|
+
}) => <Box sx={{
|
|
756
|
+
display: 'flex',
|
|
757
|
+
alignItems: 'center',
|
|
758
|
+
gap: 1
|
|
759
|
+
}}>
|
|
760
|
+
<Rating value={rating} max={5} precision={0.1} size="small" readOnly />
|
|
761
|
+
<Typography variant="caption">({rating})</Typography>
|
|
762
|
+
</Box>}
|
|
763
|
+
</Column>
|
|
764
|
+
</Table>,
|
|
765
|
+
parameters: {
|
|
766
|
+
docs: {
|
|
767
|
+
description: {
|
|
768
|
+
story: 'Tabla de productos con imágenes, precios, stock y calificaciones. Paginación interna.'
|
|
769
|
+
},
|
|
770
|
+
source: {
|
|
771
|
+
code: ProductTableCode.trim()
|
|
772
|
+
}
|
|
773
|
+
}
|
|
774
|
+
}
|
|
775
|
+
}`,...ke.parameters?.docs?.source}}};Pe.parameters={...Pe.parameters,docs:{...Pe.parameters?.docs,source:{originalSource:`{
|
|
776
|
+
args: {
|
|
777
|
+
data: empleados,
|
|
778
|
+
pageSizeSelectorValue: 1
|
|
779
|
+
},
|
|
780
|
+
render: ({
|
|
781
|
+
data,
|
|
782
|
+
pageSizeSelectorValue
|
|
783
|
+
}) => <Table data={data} pageSizeSelectorValue={pageSizeSelectorValue}>
|
|
784
|
+
<Column name="Empleado" field={['avatar', 'nombre', 'apellido']}>
|
|
785
|
+
{({
|
|
786
|
+
avatar,
|
|
787
|
+
nombre,
|
|
788
|
+
apellido
|
|
789
|
+
}) => <Box sx={{
|
|
790
|
+
display: 'flex',
|
|
791
|
+
alignItems: 'center',
|
|
792
|
+
gap: 2
|
|
793
|
+
}}>
|
|
794
|
+
<Avatar src={avatar} sx={{
|
|
795
|
+
width: 40,
|
|
796
|
+
height: 40
|
|
797
|
+
}}>
|
|
798
|
+
{avatar ? '' : \`\${nombre!.charAt(0)}\${apellido!.charAt(0)}\`}
|
|
799
|
+
</Avatar>
|
|
800
|
+
<Typography variant="body2" fontWeight="medium">
|
|
801
|
+
{nombre} {apellido}
|
|
802
|
+
</Typography>
|
|
803
|
+
</Box>}
|
|
804
|
+
</Column>
|
|
805
|
+
<Column name="Departamento" field="departamento">
|
|
806
|
+
{({
|
|
807
|
+
departamento
|
|
808
|
+
}) => <Chip label={departamento} color="info" variant="filled" size="small" />}
|
|
809
|
+
</Column>
|
|
810
|
+
<Column name="Salario" field="salario">
|
|
811
|
+
{({
|
|
812
|
+
salario
|
|
813
|
+
}) => <Typography variant="body2" fontWeight="bold" color="success.dark">
|
|
814
|
+
\${salario!.toLocaleString('es-ES')}
|
|
815
|
+
</Typography>}
|
|
816
|
+
</Column>
|
|
817
|
+
<Column name="Estado" field={['activo', 'fechaIngreso']}>
|
|
818
|
+
{({
|
|
819
|
+
activo,
|
|
820
|
+
fechaIngreso
|
|
821
|
+
}) => <Box>
|
|
822
|
+
<Chip label={activo ? 'Contratado' : 'Inactivo'} color={activo ? 'success' : 'error'} size="small" />
|
|
823
|
+
<Typography variant="caption" display="block" color="text.secondary" sx={{
|
|
824
|
+
mt: 0.5
|
|
825
|
+
}}>
|
|
826
|
+
Desde: {new Date(fechaIngreso!).toLocaleDateString('es-ES')}
|
|
827
|
+
</Typography>
|
|
828
|
+
</Box>}
|
|
829
|
+
</Column>
|
|
830
|
+
</Table>,
|
|
831
|
+
parameters: {
|
|
832
|
+
docs: {
|
|
833
|
+
description: {
|
|
834
|
+
story: 'Tabla de empleados con múltiples campos combinados en una sola columna. Paginación interna.'
|
|
835
|
+
},
|
|
836
|
+
source: {
|
|
837
|
+
code: EmployeeTableCode.trim()
|
|
838
|
+
}
|
|
839
|
+
}
|
|
840
|
+
}
|
|
841
|
+
}`,...Pe.parameters?.docs?.source}}};ze.parameters={...ze.parameters,docs:{...ze.parameters?.docs,source:{originalSource:`{
|
|
842
|
+
args: {
|
|
843
|
+
data: []
|
|
844
|
+
},
|
|
845
|
+
render: ({
|
|
846
|
+
data
|
|
847
|
+
}) => <Table data={data} emptyTitle="No se encontraron registros" emptyMessage="Intente ajustar sus filtros o agregar nuevos datos."
|
|
848
|
+
// emptyImageSrc={<img src="path/to/empty/image.png" alt="No data" />}
|
|
849
|
+
>
|
|
850
|
+
<Column name="Nombre" field="nombre">
|
|
851
|
+
{({
|
|
852
|
+
nombre
|
|
853
|
+
}) => <Typography variant="body2">{nombre}</Typography>}
|
|
854
|
+
</Column>
|
|
855
|
+
<Column name="Email" field="email">
|
|
856
|
+
{({
|
|
857
|
+
email
|
|
858
|
+
}) => <Typography variant="body2">{email}</Typography>}
|
|
859
|
+
</Column>
|
|
860
|
+
<Column name="Estado" field="activo">
|
|
861
|
+
{({
|
|
862
|
+
activo
|
|
863
|
+
}) => <Chip label={activo ? 'Activo' : 'Inactivo'} size="small" />}
|
|
864
|
+
</Column>
|
|
865
|
+
</Table>,
|
|
866
|
+
parameters: {
|
|
867
|
+
docs: {
|
|
868
|
+
description: {
|
|
869
|
+
story: 'Tabla sin datos para mostrar el estado vacío y el mensaje correspondiente.'
|
|
870
|
+
},
|
|
871
|
+
source: {
|
|
872
|
+
code: EmptyTableCode.trim()
|
|
873
|
+
}
|
|
874
|
+
}
|
|
875
|
+
}
|
|
876
|
+
}`,...ze.parameters?.docs?.source}}};Be.parameters={...Be.parameters,docs:{...Be.parameters?.docs,source:{originalSource:`{
|
|
877
|
+
args: {
|
|
878
|
+
data: [usuarios[0]]
|
|
879
|
+
},
|
|
880
|
+
render: ({
|
|
881
|
+
data
|
|
882
|
+
}) => <Table data={data}>
|
|
883
|
+
<Column name="Usuario" field={['avatar', 'nombre', 'email']}>
|
|
884
|
+
{({
|
|
885
|
+
avatar,
|
|
886
|
+
nombre,
|
|
887
|
+
email
|
|
888
|
+
}) => <Box sx={{
|
|
889
|
+
display: 'flex',
|
|
890
|
+
alignItems: 'center',
|
|
891
|
+
gap: 2
|
|
892
|
+
}}>
|
|
893
|
+
<Avatar src={avatar} alt={nombre} />
|
|
894
|
+
<Box>
|
|
895
|
+
<Typography variant="body2" fontWeight="medium">{nombre}</Typography>
|
|
896
|
+
<Typography variant="caption" color="text.secondary">{email}</Typography>
|
|
897
|
+
</Box>
|
|
898
|
+
</Box>}
|
|
899
|
+
</Column>
|
|
900
|
+
<Column<Usuario> name="Información" field={[]}>
|
|
901
|
+
{user => <>
|
|
902
|
+
<Typography variant="body2">{user.edad} años</Typography>
|
|
903
|
+
<Box sx={{
|
|
904
|
+
display: 'flex',
|
|
905
|
+
gap: 1,
|
|
906
|
+
mt: 0.5
|
|
907
|
+
}}>
|
|
908
|
+
<Chip label={user.rol} size="small" color="primary" variant="outlined" />
|
|
909
|
+
<Chip label={user.activo ? 'Activo' : 'Inactivo'} size="small" color={user.activo ? 'success' : 'default'} />
|
|
910
|
+
</Box>
|
|
911
|
+
</>}
|
|
912
|
+
</Column>
|
|
913
|
+
</Table>,
|
|
914
|
+
parameters: {
|
|
915
|
+
docs: {
|
|
916
|
+
description: {
|
|
917
|
+
story: 'Tabla con una sola fila de datos.'
|
|
918
|
+
},
|
|
919
|
+
source: {
|
|
920
|
+
code: SingleRowCode.trim()
|
|
921
|
+
}
|
|
922
|
+
}
|
|
923
|
+
}
|
|
924
|
+
}`,...Be.parameters?.docs?.source}}};Re.parameters={...Re.parameters,docs:{...Re.parameters?.docs,source:{originalSource:`{
|
|
925
|
+
args: {
|
|
926
|
+
data: productos
|
|
927
|
+
},
|
|
928
|
+
render: ({
|
|
929
|
+
data
|
|
930
|
+
}) => <Table data={data}>
|
|
931
|
+
<Column name="Producto" field={['imagen', 'nombre']}>
|
|
932
|
+
{({
|
|
933
|
+
imagen,
|
|
934
|
+
nombre
|
|
935
|
+
}) => <Box sx={{
|
|
936
|
+
display: 'flex',
|
|
937
|
+
alignItems: 'center',
|
|
938
|
+
gap: 2
|
|
939
|
+
}}>
|
|
940
|
+
<Box component="img" src={imagen} alt={nombre} sx={{
|
|
941
|
+
width: 50,
|
|
942
|
+
height: 50,
|
|
943
|
+
borderRadius: 1,
|
|
944
|
+
objectFit: 'cover'
|
|
945
|
+
}} />
|
|
946
|
+
<Typography variant="body2" fontWeight="medium">{nombre}</Typography>
|
|
947
|
+
</Box>}
|
|
948
|
+
</Column>
|
|
949
|
+
<Column name="Precio" field={['precio', 'enOferta']}>
|
|
950
|
+
{({
|
|
951
|
+
precio,
|
|
952
|
+
enOferta
|
|
953
|
+
}) => <Box sx={{
|
|
954
|
+
display: 'flex',
|
|
955
|
+
alignItems: 'center',
|
|
956
|
+
gap: 1
|
|
957
|
+
}}>
|
|
958
|
+
<Typography variant="body2" color={enOferta ? 'error.main' : 'text.primary'} fontWeight={enOferta ? 'bold' : 'normal'}>
|
|
959
|
+
\${precio!.toLocaleString()}
|
|
960
|
+
</Typography>
|
|
961
|
+
{enOferta && <Chip label="OFERTA" color="error" size="small" />}
|
|
962
|
+
</Box>}
|
|
963
|
+
</Column>
|
|
964
|
+
<Column name="Stock" field="stock">
|
|
965
|
+
{({
|
|
966
|
+
stock
|
|
967
|
+
}) => <Chip label={stock! > 0 ? \`\${stock} unidades\` : 'Sin stock'} color={stock! > 5 ? 'success' : stock! > 0 ? 'warning' : 'error'} size="small" sx={{
|
|
968
|
+
backgroundColor: stock === 0 ? 'rgba(255, 0, 0, 0.1)' : undefined
|
|
969
|
+
}} />}
|
|
970
|
+
</Column>
|
|
971
|
+
<Column name="Rating" field="rating">
|
|
972
|
+
{({
|
|
973
|
+
rating
|
|
974
|
+
}) => <Box sx={{
|
|
975
|
+
display: 'flex',
|
|
976
|
+
alignItems: 'center',
|
|
977
|
+
gap: 1
|
|
978
|
+
}}>
|
|
979
|
+
<Rating value={rating} max={5} precision={0.1} size="small" readOnly />
|
|
980
|
+
<Typography variant="caption">({rating})</Typography>
|
|
981
|
+
</Box>}
|
|
982
|
+
</Column>
|
|
983
|
+
</Table>,
|
|
984
|
+
parameters: {
|
|
985
|
+
docs: {
|
|
986
|
+
description: {
|
|
987
|
+
story: 'Muestra la tabla de productos resaltando visualmente los productos sin stock. Paginación interna.'
|
|
988
|
+
},
|
|
989
|
+
source: {
|
|
990
|
+
code: ProductTableWithZeroStockHighlightedCode.trim()
|
|
991
|
+
}
|
|
992
|
+
}
|
|
993
|
+
}
|
|
994
|
+
}`,...Re.parameters?.docs?.source}}};De.parameters={...De.parameters,docs:{...De.parameters?.docs,source:{originalSource:`{
|
|
995
|
+
args: {
|
|
996
|
+
data: empleados
|
|
997
|
+
},
|
|
998
|
+
render: ({
|
|
999
|
+
data
|
|
1000
|
+
}) => <Table data={data}>
|
|
1001
|
+
<Column name="Empleado" field={['nombre', 'apellido', 'avatar']}>
|
|
1002
|
+
{({
|
|
1003
|
+
nombre,
|
|
1004
|
+
apellido,
|
|
1005
|
+
avatar
|
|
1006
|
+
}) => <Box sx={{
|
|
1007
|
+
display: 'flex',
|
|
1008
|
+
alignItems: 'center',
|
|
1009
|
+
gap: 2
|
|
1010
|
+
}}>
|
|
1011
|
+
<Avatar src={avatar} sx={{
|
|
1012
|
+
width: 40,
|
|
1013
|
+
height: 40
|
|
1014
|
+
}}>
|
|
1015
|
+
{avatar ? '' : \`\${nombre!.charAt(0)}\${apellido!.charAt(0)}\`}
|
|
1016
|
+
</Avatar>
|
|
1017
|
+
<Typography variant="body2" fontWeight="medium">
|
|
1018
|
+
{nombre} {apellido}
|
|
1019
|
+
</Typography>
|
|
1020
|
+
</Box>}
|
|
1021
|
+
</Column>
|
|
1022
|
+
<Column name="Departamento" field="departamento">
|
|
1023
|
+
{({
|
|
1024
|
+
departamento
|
|
1025
|
+
}) => <Chip label={departamento} color="info" variant="filled" size="small" />}
|
|
1026
|
+
</Column>
|
|
1027
|
+
<Column name="Salario" field="salario">
|
|
1028
|
+
{({
|
|
1029
|
+
salario
|
|
1030
|
+
}) => <Typography variant="body2" fontWeight="bold" color="success.dark">
|
|
1031
|
+
\${salario!.toLocaleString('es-ES')}
|
|
1032
|
+
</Typography>}
|
|
1033
|
+
</Column>
|
|
1034
|
+
<Column name="Estado de Contratación" field={['activo', 'fechaIngreso']}>
|
|
1035
|
+
{({
|
|
1036
|
+
activo,
|
|
1037
|
+
fechaIngreso
|
|
1038
|
+
}) => <Box>
|
|
1039
|
+
<Chip label={activo ? 'Contratado' : 'Inactivo'} color={activo ? 'success' : 'error'} size="small" />
|
|
1040
|
+
<Typography variant="caption" display="block" color="text.secondary" sx={{
|
|
1041
|
+
mt: 0.5
|
|
1042
|
+
}}>
|
|
1043
|
+
Desde: {new Date(fechaIngreso!).toLocaleDateString('es-ES')}
|
|
1044
|
+
</Typography>
|
|
1045
|
+
</Box>}
|
|
1046
|
+
</Column>
|
|
1047
|
+
</Table>,
|
|
1048
|
+
parameters: {
|
|
1049
|
+
docs: {
|
|
1050
|
+
description: {
|
|
1051
|
+
story: 'Muestra una tabla de empleados con un resumen detallado de su estado de contratación y fecha de ingreso. Paginación interna.'
|
|
1052
|
+
},
|
|
1053
|
+
source: {
|
|
1054
|
+
code: EmployeeDetailedStatusCode.trim()
|
|
1055
|
+
}
|
|
1056
|
+
}
|
|
1057
|
+
}
|
|
1058
|
+
}`,...De.parameters?.docs?.source}}};Fe.parameters={...Fe.parameters,docs:{...Fe.parameters?.docs,source:{originalSource:`{
|
|
1059
|
+
args: {
|
|
1060
|
+
data: usuarios.slice(0, 3)
|
|
1061
|
+
},
|
|
1062
|
+
render: ({
|
|
1063
|
+
data
|
|
1064
|
+
}) => <Table data={data}>
|
|
1065
|
+
<Column name="Nombre" field="nombre">
|
|
1066
|
+
{({
|
|
1067
|
+
nombre
|
|
1068
|
+
}) => <Typography variant="body2">{nombre}</Typography>}
|
|
1069
|
+
</Column>
|
|
1070
|
+
<Column name="Email" field="email">
|
|
1071
|
+
{({
|
|
1072
|
+
email
|
|
1073
|
+
}) => <Typography variant="body2" color="text.secondary">{email}</Typography>}
|
|
1074
|
+
</Column>
|
|
1075
|
+
<Column name="Acciones" field="id">
|
|
1076
|
+
{({
|
|
1077
|
+
id
|
|
1078
|
+
}) => <Button variant="contained" color="primary" size="small" onClick={() => alert('ID del usuario: ' + id)}>
|
|
1079
|
+
Ver Detalles ({id})
|
|
1080
|
+
</Button>}
|
|
1081
|
+
</Column>
|
|
1082
|
+
</Table>,
|
|
1083
|
+
parameters: {
|
|
1084
|
+
docs: {
|
|
1085
|
+
description: {
|
|
1086
|
+
story: 'Ejemplo de tabla con una columna de acciones que, al hacer clic en un botón, registra el ID del elemento en la consola.'
|
|
1087
|
+
},
|
|
1088
|
+
source: {
|
|
1089
|
+
code: ActionsColumnCode.trim()
|
|
1090
|
+
}
|
|
1091
|
+
}
|
|
1092
|
+
}
|
|
1093
|
+
}`,...Fe.parameters?.docs?.source}}};Ae.parameters={...Ae.parameters,docs:{...Ae.parameters?.docs,source:{originalSource:`{
|
|
1094
|
+
args: {
|
|
1095
|
+
data: usuarios,
|
|
1096
|
+
enableCSVExport: true,
|
|
1097
|
+
enableExcelExport: true,
|
|
1098
|
+
csvExportFileName: 'usuarios_data',
|
|
1099
|
+
csvExportButtonText: '.csv',
|
|
1100
|
+
excelExportFileName: 'usuarios_data',
|
|
1101
|
+
excelExportButtonText: '.xlsx',
|
|
1102
|
+
csvExportColumns: ['ID', 'Nombre', 'Email', 'Edad'],
|
|
1103
|
+
excelExportColumns: ['ID', 'Nombre', 'Email', 'Edad']
|
|
1104
|
+
},
|
|
1105
|
+
render: ({
|
|
1106
|
+
data,
|
|
1107
|
+
enableCSVExport,
|
|
1108
|
+
enableExcelExport,
|
|
1109
|
+
csvExportFileName,
|
|
1110
|
+
csvExportButtonText,
|
|
1111
|
+
excelExportFileName,
|
|
1112
|
+
excelExportButtonText,
|
|
1113
|
+
csvExportColumns,
|
|
1114
|
+
excelExportColumns
|
|
1115
|
+
}) => <Table<Usuario> data={usuarios} enableCSVExport={enableCSVExport} enableExcelExport={enableExcelExport} csvExportFileName={csvExportFileName} csvExportButtonText={csvExportButtonText} excelExportFileName={excelExportFileName} excelExportButtonText={excelExportButtonText} csvExportColumns={csvExportColumns} excelExportColumns={excelExportColumns}>
|
|
1116
|
+
<Column<Usuario> name="ID" field="id">
|
|
1117
|
+
{row => <Typography>{row.id}</Typography>}
|
|
1118
|
+
</Column>
|
|
1119
|
+
<Column<Usuario> name="Nombre" field="nombre">
|
|
1120
|
+
{row => <Typography>{row.nombre}</Typography>}
|
|
1121
|
+
</Column>
|
|
1122
|
+
<Column<Usuario> name="Email" field="email">
|
|
1123
|
+
{({
|
|
1124
|
+
email
|
|
1125
|
+
}) => <Link href={\`mailto:\${email}\`}>{email}</Link>}
|
|
1126
|
+
</Column>
|
|
1127
|
+
<Column<Usuario> name="Edad" field="edad">
|
|
1128
|
+
{row => <Typography>{row.edad}</Typography>}
|
|
1129
|
+
</Column>
|
|
1130
|
+
<Column<Usuario> name="Rol" field="rol">
|
|
1131
|
+
{({
|
|
1132
|
+
rol
|
|
1133
|
+
}) => <Chip label={rol} size="small" />}
|
|
1134
|
+
</Column>
|
|
1135
|
+
<Column<Usuario> name="Acciones" field="id">
|
|
1136
|
+
{({
|
|
1137
|
+
id
|
|
1138
|
+
}) => <Button variant="outlined" size="small" onClick={() => alert(\`Ver detalles de usuario \${id}\`)}>
|
|
1139
|
+
Ver
|
|
1140
|
+
</Button>}
|
|
1141
|
+
</Column>
|
|
1142
|
+
</Table>,
|
|
1143
|
+
parameters: {
|
|
1144
|
+
docs: {
|
|
1145
|
+
description: {
|
|
1146
|
+
story: 'Tabla con la funcionalidad de exportar sus datos a un archivo CSV. Puedes especificar qué columnas incluir en la exportación y el nombre del archivo.'
|
|
1147
|
+
},
|
|
1148
|
+
source: {
|
|
1149
|
+
code: TableWithExportCode.trim()
|
|
1150
|
+
}
|
|
1151
|
+
}
|
|
1152
|
+
}
|
|
1153
|
+
}`,...Ae.parameters?.docs?.source}}};Ve.parameters={...Ve.parameters,docs:{...Ve.parameters?.docs,source:{originalSource:`{
|
|
1154
|
+
render: args => {
|
|
1155
|
+
const [selectedItems, setSelectedItems] = useState<UserData[]>([]);
|
|
1156
|
+
const handleSelectionChange = (items: UserData[]) => {
|
|
1157
|
+
setSelectedItems(items);
|
|
1158
|
+
args.onSelectionChange?.(items);
|
|
1159
|
+
};
|
|
1160
|
+
const handleBulkDelete = () => {
|
|
1161
|
+
if (selectedItems.length > 0) {
|
|
1162
|
+
alert(\`Eliminando \${selectedItems.length} usuarios: \${selectedItems.map(item => item.name).join(', ')}\`);
|
|
1163
|
+
setSelectedItems([]);
|
|
1164
|
+
} else {
|
|
1165
|
+
alert('No hay elementos seleccionados para eliminar.');
|
|
1166
|
+
}
|
|
1167
|
+
};
|
|
1168
|
+
const handleBulkUpdateCity = () => {
|
|
1169
|
+
if (selectedItems.length > 0) {
|
|
1170
|
+
const newCity = prompt('Ingresa la nueva ciudad para los seleccionados:');
|
|
1171
|
+
if (newCity) {
|
|
1172
|
+
alert(\`Actualizando ciudad de \${selectedItems.length} usuarios a \${newCity}\`);
|
|
1173
|
+
setSelectedItems([]);
|
|
1174
|
+
}
|
|
1175
|
+
} else {
|
|
1176
|
+
alert('No hay elementos seleccionados para actualizar.');
|
|
1177
|
+
}
|
|
1178
|
+
};
|
|
1179
|
+
return <Box>
|
|
1180
|
+
<Typography variant="h6" gutterBottom>
|
|
1181
|
+
Tabla con Selección de Filas
|
|
1182
|
+
</Typography>
|
|
1183
|
+
{selectedItems.length > 0 && <Box sx={{
|
|
1184
|
+
mb: 2,
|
|
1185
|
+
display: 'flex',
|
|
1186
|
+
gap: 1
|
|
1187
|
+
}}>
|
|
1188
|
+
<Button variant="contained" color="error" onClick={handleBulkDelete}>
|
|
1189
|
+
Eliminar ({selectedItems.length})
|
|
1190
|
+
</Button>
|
|
1191
|
+
<Button variant="contained" color="primary" onClick={handleBulkUpdateCity}>
|
|
1192
|
+
Actualizar Ciudad ({selectedItems.length})
|
|
1193
|
+
</Button>
|
|
1194
|
+
<Typography variant="body2" sx={{
|
|
1195
|
+
alignSelf: 'center',
|
|
1196
|
+
ml: 2
|
|
1197
|
+
}}>
|
|
1198
|
+
Elementos seleccionados: {selectedItems.length}
|
|
1199
|
+
</Typography>
|
|
1200
|
+
</Box>}
|
|
1201
|
+
<Table<UserData> {...args} data={sampleData} // Usamos sampleData para esta historia
|
|
1202
|
+
enableRowSelection={true} rowIdentifier="id" // Es crucial que coincida con una clave única en tus datos
|
|
1203
|
+
onSelectionChange={handleSelectionChange} pageSizeSelectorValue={5}>
|
|
1204
|
+
<Column<UserData> name="ID" field="id" children={row => <Typography>{row.id}</Typography>} />
|
|
1205
|
+
<Column<UserData> name="Nombre" field="name" children={row => <Typography>{row.name}</Typography>} />
|
|
1206
|
+
<Column<UserData> name="Email" field="email" children={row => <Typography>{row.email}</Typography>} />
|
|
1207
|
+
<Column<UserData> name="Ciudad" field="city" children={row => <Typography>{row.city}</Typography>} />
|
|
1208
|
+
</Table>
|
|
1209
|
+
</Box>;
|
|
1210
|
+
},
|
|
1211
|
+
args: {},
|
|
1212
|
+
parameters: {
|
|
1213
|
+
docs: {
|
|
1214
|
+
description: {
|
|
1215
|
+
story: 'Tabla con la funcionalidad de selección de filas. Puedes seleccionar una o muchas filas y realizar acciones en masa.'
|
|
1216
|
+
},
|
|
1217
|
+
source: {
|
|
1218
|
+
code: WithRowSelectionCode.trim()
|
|
1219
|
+
}
|
|
1220
|
+
}
|
|
1221
|
+
}
|
|
1222
|
+
}`,...Ve.parameters?.docs?.source}}};Ne.parameters={...Ne.parameters,docs:{...Ne.parameters?.docs,source:{originalSource:`{
|
|
1223
|
+
render: args => {
|
|
1224
|
+
const [selectedItems, setSelectedItems] = useState<UserData[]>([]);
|
|
1225
|
+
const handleSelectionChange = (items: UserData[]) => {
|
|
1226
|
+
setSelectedItems(items);
|
|
1227
|
+
args.onSelectionChange?.(items);
|
|
1228
|
+
};
|
|
1229
|
+
return <Box>
|
|
1230
|
+
<Typography variant="h6" gutterBottom>
|
|
1231
|
+
Tabla con Exportación y Selección de Filas
|
|
1232
|
+
</Typography>
|
|
1233
|
+
{selectedItems.length > 0 && <Box sx={{
|
|
1234
|
+
mb: 2
|
|
1235
|
+
}}>
|
|
1236
|
+
<Typography variant="body2">
|
|
1237
|
+
Elementos seleccionados: {selectedItems.length}
|
|
1238
|
+
</Typography>
|
|
1239
|
+
</Box>}
|
|
1240
|
+
<Table<UserData> {...args} data={sampleData} // Usamos sampleData para esta historia
|
|
1241
|
+
enableRowSelection={true} rowIdentifier="id" onSelectionChange={handleSelectionChange} pageSizeSelectorValue={5} enableCSVExport={true} csvExportFileName="users_data_with_selection" enableExcelExport={true} excelExportFileName="users_data_with_selection">
|
|
1242
|
+
<Column<UserData> name="ID" field="id" children={row => <Typography>{row.id}</Typography>} />
|
|
1243
|
+
<Column<UserData> name="Nombre" field="name" children={row => <Typography>{row.name}</Typography>} />
|
|
1244
|
+
<Column<UserData> name="Email" field="email" children={row => <Typography>{row.email}</Typography>} />
|
|
1245
|
+
<Column<UserData> name="Ciudad" field="city" children={row => <Typography>{row.city}</Typography>} />
|
|
1246
|
+
</Table>
|
|
1247
|
+
</Box>;
|
|
1248
|
+
},
|
|
1249
|
+
args: {},
|
|
1250
|
+
parameters: {
|
|
1251
|
+
docs: {
|
|
1252
|
+
description: {
|
|
1253
|
+
story: 'Tabla con la funcionalidad de exportar sus datos a un archivo CSV y Excel. Puedes especificar qué columnas incluir en la exportación y el nombre del archivo.'
|
|
1254
|
+
},
|
|
1255
|
+
source: {
|
|
1256
|
+
code: WithExportAndSelectionCode.trim()
|
|
1257
|
+
}
|
|
1258
|
+
}
|
|
1259
|
+
}
|
|
1260
|
+
}`,...Ne.parameters?.docs?.source}}};const jt=["BasicTable","ComplexComponents","WithExternalPaginationControl","ProductTable","EmployeeTable","EmptyTable","SingleRow","ProductTableWithZeroStockHighlighted","EmployeeDetailedStatus","ActionsColumn","TableWithExport","WithRowSelection","WithExportAndSelection"];export{Fe as ActionsColumn,je as BasicTable,we as ComplexComponents,De as EmployeeDetailedStatus,Pe as EmployeeTable,ze as EmptyTable,ke as ProductTable,Re as ProductTableWithZeroStockHighlighted,Be as SingleRow,Ae as TableWithExport,Ne as WithExportAndSelection,Ie as WithExternalPaginationControl,Ve as WithRowSelection,jt as __namedExportsOrder,Et as default};
|