@soyfri/shared-library 1.5.0-beta.4 → 2.0.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.dockerignore +8 -0
- package/.github/workflows/publish.yml +107 -0
- package/.prettierrc +3 -0
- package/.storybook/main.ts +19 -0
- package/.storybook/preview.ts +14 -0
- package/.storybook/vitest.setup.ts +9 -0
- package/Dockerfile +37 -0
- package/build.js +102 -0
- package/chromatic.config.json +5 -0
- package/cleanDirectories.js +40 -0
- package/dist/components/ActionMenu/ActionMenu.cjs +107 -0
- package/dist/components/ActionMenu/ActionMenu.cjs.map +1 -0
- package/dist/components/ActionMenu/ActionMenu.d.ts +60 -0
- package/dist/components/ActionMenu/ActionMenu.js +107 -0
- package/dist/components/ActionMenu/ActionMenu.js.map +1 -0
- package/dist/components/ActionMenu/index.d.ts +2 -0
- package/dist/components/ActionMenu.d.ts +6 -0
- package/dist/components/AppBar/AppBar.cjs +346 -0
- package/dist/components/AppBar/AppBar.cjs.map +1 -0
- package/dist/components/AppBar/AppBar.d.ts +55 -0
- package/dist/components/AppBar/AppBar.js +346 -0
- package/dist/components/AppBar/AppBar.js.map +1 -0
- package/dist/components/AppBar/AppBar.sx.d.ts +12 -0
- package/dist/components/AppBar/AppBarBrand.d.ts +31 -0
- package/dist/components/AppBar/AppBarContext.d.ts +18 -0
- package/dist/components/AppBar/AppBarMenuToggle.d.ts +39 -0
- package/dist/components/AppBar/AppBarUserMenu.d.ts +65 -0
- package/dist/components/AppBar/index.d.ts +12 -0
- package/dist/components/AppBar.d.ts +6 -0
- package/dist/components/Autocomplete/Autocomplete.cjs +314 -0
- package/dist/components/Autocomplete/Autocomplete.cjs.map +1 -0
- package/dist/components/Autocomplete/Autocomplete.d.ts +83 -0
- package/{components → dist/components}/Autocomplete/Autocomplete.definitions.d.ts +6 -0
- package/dist/components/Autocomplete/Autocomplete.helpers.d.ts +18 -0
- package/dist/components/Autocomplete/Autocomplete.js +314 -0
- package/dist/components/Autocomplete/Autocomplete.js.map +1 -0
- package/dist/components/Autocomplete/Autocomplete.sx.d.ts +7 -0
- package/dist/components/Autocomplete/Autocomplete.types.d.ts +1 -0
- package/dist/components/Autocomplete/_parts/AutocompleteChips.d.ts +19 -0
- package/dist/components/Autocomplete/_parts/AutocompleteLoader.d.ts +9 -0
- package/dist/components/Autocomplete/_parts/AutocompleteOption.d.ts +19 -0
- package/dist/components/Autocomplete/index.d.ts +2 -0
- package/dist/components/Autocomplete.d.ts +6 -0
- package/dist/components/Avatar/Avatar.cjs +163 -0
- package/dist/components/Avatar/Avatar.cjs.map +1 -0
- package/dist/components/Avatar/Avatar.d.ts +33 -0
- package/dist/components/Avatar/Avatar.definitions.d.ts +11 -0
- package/dist/components/Avatar/Avatar.js +163 -0
- package/dist/components/Avatar/Avatar.js.map +1 -0
- package/dist/components/Card/Card.cjs +187 -0
- package/dist/components/Card/Card.cjs.map +1 -0
- package/dist/components/Card/Card.d.ts +83 -0
- package/dist/components/Card/Card.js +187 -0
- package/dist/components/Card/Card.js.map +1 -0
- package/dist/components/Card/Card.sx.d.ts +17 -0
- package/dist/components/Card/index.d.ts +4 -0
- package/dist/components/Card.d.ts +6 -0
- package/dist/components/DatePicker/DatePicker.cjs +203 -0
- package/dist/components/DatePicker/DatePicker.cjs.map +1 -0
- package/dist/components/DatePicker/DatePicker.d.ts +56 -0
- package/{components → dist/components}/DatePicker/DatePicker.definitions.d.ts +1 -0
- package/dist/components/DatePicker/DatePicker.helpers.d.ts +7 -0
- package/dist/components/DatePicker/DatePicker.js +203 -0
- package/dist/components/DatePicker/DatePicker.js.map +1 -0
- package/dist/components/DatePicker/DatePicker.sx.d.ts +9 -0
- package/dist/components/DatePicker/DatePicker.types.d.ts +1 -0
- package/dist/components/DatePicker/index.d.ts +2 -0
- package/dist/components/DatePicker.d.ts +6 -0
- package/dist/components/DateTimePicker/DateTimePicker.cjs +222 -0
- package/dist/components/DateTimePicker/DateTimePicker.cjs.map +1 -0
- package/dist/components/DateTimePicker/DateTimePicker.d.ts +65 -0
- package/{components → dist/components}/DateTimePicker/DateTimePicker.definitions.d.ts +1 -0
- package/dist/components/DateTimePicker/DateTimePicker.helpers.d.ts +11 -0
- package/dist/components/DateTimePicker/DateTimePicker.js +222 -0
- package/dist/components/DateTimePicker/DateTimePicker.js.map +1 -0
- package/dist/components/DateTimePicker/DateTimePicker.sx.d.ts +7 -0
- package/dist/components/DateTimePicker/DateTimePicker.types.d.ts +1 -0
- package/dist/components/DateTimePicker/index.d.ts +2 -0
- package/dist/components/DateTimePicker.d.ts +6 -0
- package/dist/components/Drawer/Drawer.cjs +271 -0
- package/dist/components/Drawer/Drawer.cjs.map +1 -0
- package/dist/components/Drawer/Drawer.d.ts +51 -0
- package/dist/components/Drawer/Drawer.js +271 -0
- package/dist/components/Drawer/Drawer.js.map +1 -0
- package/dist/components/Drawer/Drawer.sx.d.ts +23 -0
- package/dist/components/Drawer/DrawerContext.d.ts +18 -0
- package/dist/components/Drawer/DrawerItem.d.ts +35 -0
- package/dist/components/Drawer/index.d.ts +6 -0
- package/dist/components/Drawer.d.ts +6 -0
- package/{components → dist/components}/Icon/Icon.cjs +44 -3
- package/dist/components/Icon/Icon.cjs.map +1 -0
- package/dist/components/Icon/Icon.d.ts +54 -0
- package/{components → dist/components}/Icon/Icon.js +44 -3
- package/dist/components/Icon/Icon.js.map +1 -0
- package/dist/components/Input/Input.cjs +175 -0
- package/dist/components/Input/Input.cjs.map +1 -0
- package/dist/components/Input/Input.d.ts +37 -0
- package/{components → dist/components}/Input/Input.definitions.d.ts +5 -2
- package/dist/components/Input/Input.helpers.d.ts +14 -0
- package/dist/components/Input/Input.js +175 -0
- package/dist/components/Input/Input.js.map +1 -0
- package/dist/components/Input/Input.sx.d.ts +8 -0
- package/dist/components/Input/Input.types.d.ts +1 -0
- package/dist/components/Input/index.d.ts +2 -0
- package/dist/components/Input.d.ts +6 -0
- package/dist/components/InputGroup/InputGroup.cjs +139 -0
- package/dist/components/InputGroup/InputGroup.cjs.map +1 -0
- package/dist/components/InputGroup/InputGroup.d.ts +42 -0
- package/dist/components/InputGroup/InputGroup.definitions.d.ts +6 -0
- package/dist/components/InputGroup/InputGroup.js +139 -0
- package/dist/components/InputGroup/InputGroup.js.map +1 -0
- package/dist/components/Modal/Modal.cjs +319 -0
- package/dist/components/Modal/Modal.cjs.map +1 -0
- package/dist/components/Modal/Modal.d.ts +65 -0
- package/dist/components/Modal/Modal.js +319 -0
- package/dist/components/Modal/Modal.js.map +1 -0
- package/{components → dist/components}/Modal/ModalFooter.d.ts +9 -1
- package/dist/components/Modal/index.d.ts +6 -0
- package/dist/components/PageLoader/PageLoader.cjs +61 -0
- package/dist/components/PageLoader/PageLoader.cjs.map +1 -0
- package/dist/components/PageLoader/PageLoader.d.ts +38 -0
- package/dist/components/PageLoader/PageLoader.js +61 -0
- package/dist/components/PageLoader/PageLoader.js.map +1 -0
- package/dist/components/PageLoader/index.d.ts +2 -0
- package/dist/components/PageLoader.d.ts +6 -0
- package/dist/components/ScrollTopButton/ScrollTopButton.cjs +79 -0
- package/dist/components/ScrollTopButton/ScrollTopButton.cjs.map +1 -0
- package/dist/components/ScrollTopButton/ScrollTopButton.d.ts +48 -0
- package/dist/components/ScrollTopButton/ScrollTopButton.js +79 -0
- package/dist/components/ScrollTopButton/ScrollTopButton.js.map +1 -0
- package/dist/components/ScrollTopButton/index.d.ts +4 -0
- package/dist/components/ScrollTopButton/scrollToTop.d.ts +29 -0
- package/dist/components/ScrollTopButton.d.ts +6 -0
- package/dist/components/Select/Select.cjs +448 -0
- package/dist/components/Select/Select.cjs.map +1 -0
- package/{components → dist/components}/Select/Select.d.ts +33 -13
- package/{components → dist/components}/Select/Select.definitions.d.ts +3 -0
- package/dist/components/Select/Select.helpers.d.ts +28 -0
- package/dist/components/Select/Select.js +448 -0
- package/dist/components/Select/Select.js.map +1 -0
- package/dist/components/Select/Select.sx.d.ts +7 -0
- package/dist/components/Select/Select.types.d.ts +1 -0
- package/dist/components/Select/_parts/SelectMenuItem.d.ts +20 -0
- package/dist/components/Select/_parts/SelectSearchHeader.d.ts +15 -0
- package/dist/components/Select/_parts/SelectValue.d.ts +22 -0
- package/dist/components/Select/index.d.ts +2 -0
- package/dist/components/Select.d.ts +6 -0
- package/{components → dist/components}/Stat/Stat.cjs +1 -1
- package/{components → dist/components}/Stat/Stat.js +1 -1
- package/{components → dist/components}/Stepper/Stepper.cjs +4 -1
- package/dist/components/Stepper/Stepper.cjs.map +1 -0
- package/{components → dist/components}/Stepper/Stepper.d.ts +5 -0
- package/{components → dist/components}/Stepper/Stepper.js +4 -1
- package/dist/components/Stepper/Stepper.js.map +1 -0
- package/dist/components/_shared/formField.sx.d.ts +33 -0
- package/dist/components/_shared/resolvePreset.d.ts +18 -0
- package/dist/formField.sx-CQ1mbk9M.cjs +76 -0
- package/dist/formField.sx-CQ1mbk9M.cjs.map +1 -0
- package/dist/formField.sx-DfVbMe0V.js +77 -0
- package/dist/formField.sx-DfVbMe0V.js.map +1 -0
- package/dist/hooks/Wizard/Wizard.cjs +7 -0
- package/dist/hooks/Wizard/Wizard.cjs.map +1 -0
- package/dist/hooks/Wizard/Wizard.js +7 -0
- package/dist/hooks/Wizard/Wizard.js.map +1 -0
- package/dist/hooks/Wizard/WizardContext.d.ts +67 -0
- package/dist/hooks/Wizard/index.d.ts +3 -0
- package/dist/hooks/Wizard/useWizard.d.ts +9 -0
- package/dist/hooks/Wizard.d.ts +2 -0
- package/dist/index.cjs +100 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +31 -0
- package/{index.js.map → dist/index.js.map} +1 -1
- package/dist/mui.d.ts +5 -0
- package/dist/resolvePreset-B-IB0ehH.js +15 -0
- package/dist/resolvePreset-B-IB0ehH.js.map +1 -0
- package/dist/resolvePreset-CT3kU-K2.cjs +14 -0
- package/dist/resolvePreset-CT3kU-K2.cjs.map +1 -0
- package/dist/theme/componentStyles.d.ts +32 -0
- package/dist/theme/tokens.d.ts +28 -0
- package/dist/useWizard-CWdIxZzX.cjs +94 -0
- package/dist/useWizard-CWdIxZzX.cjs.map +1 -0
- package/dist/useWizard-CWq--C3o.js +95 -0
- package/dist/useWizard-CWq--C3o.js.map +1 -0
- package/package.json +43 -134
- package/rollup.config.cjs +87 -0
- package/src/components/ActionMenu/ActionMenu.stories.tsx +230 -0
- package/src/components/ActionMenu/ActionMenu.tsx +174 -0
- package/src/components/ActionMenu/index.ts +2 -0
- package/src/components/AppBar/AppBar.stories.tsx +272 -0
- package/src/components/AppBar/AppBar.sx.ts +32 -0
- package/src/components/AppBar/AppBar.tsx +123 -0
- package/src/components/AppBar/AppBarBrand.tsx +120 -0
- package/src/components/AppBar/AppBarContext.ts +25 -0
- package/src/components/AppBar/AppBarMenuToggle.tsx +90 -0
- package/src/components/AppBar/AppBarUserMenu.tsx +217 -0
- package/src/components/AppBar/index.ts +25 -0
- package/src/components/Autocomplete/Autocomplete.definitions.ts +477 -0
- package/src/components/Autocomplete/Autocomplete.helpers.ts +60 -0
- package/src/components/Autocomplete/Autocomplete.stories.tsx +748 -0
- package/src/components/Autocomplete/Autocomplete.sx.ts +30 -0
- package/src/components/Autocomplete/Autocomplete.tsx +361 -0
- package/src/components/Autocomplete/Autocomplete.types.ts +13 -0
- package/src/components/Autocomplete/_parts/AutocompleteChips.tsx +55 -0
- package/src/components/Autocomplete/_parts/AutocompleteLoader.tsx +17 -0
- package/src/components/Autocomplete/_parts/AutocompleteOption.tsx +31 -0
- package/src/components/Autocomplete/index.ts +12 -0
- package/src/components/Avatar/Avatar.definitions.ts +162 -0
- package/src/components/Avatar/Avatar.stories.tsx +258 -0
- package/src/components/Avatar/Avatar.tsx +206 -0
- package/src/components/Avatar/index.ts +1 -0
- package/src/components/Button/Button.definition.ts +97 -0
- package/src/components/Button/Button.stories.tsx +285 -0
- package/src/components/Button/Button.tsx +67 -0
- package/src/components/Button/index.ts +1 -0
- package/src/components/Card/Card.definition.ts +5 -0
- package/src/components/Card/Card.stories.tsx +221 -0
- package/src/components/Card/Card.sx.ts +104 -0
- package/src/components/Card/Card.tsx +200 -0
- package/src/components/Card/index.ts +9 -0
- package/src/components/Chip/Chip.definitions.ts +167 -0
- package/src/components/Chip/Chip.stories.tsx +265 -0
- package/src/components/Chip/Chip.tsx +61 -0
- package/src/components/Chip/index.ts +1 -0
- package/src/components/Column/Column.tsx +29 -0
- package/src/components/Column/index.ts +1 -0
- package/src/components/DatePicker/DatePicker.definitions.ts +228 -0
- package/src/components/DatePicker/DatePicker.helpers.ts +24 -0
- package/src/components/DatePicker/DatePicker.stories.tsx +309 -0
- package/src/components/DatePicker/DatePicker.sx.ts +33 -0
- package/src/components/DatePicker/DatePicker.tsx +189 -0
- package/src/components/DatePicker/DatePicker.types.ts +10 -0
- package/src/components/DatePicker/index.ts +9 -0
- package/src/components/DateRangePicker/DateRangePicker.definitions.ts +191 -0
- package/src/components/DateRangePicker/DateRangePicker.stories.tsx +252 -0
- package/src/components/DateRangePicker/DateRangePicker.tsx +56 -0
- package/src/components/DateRangePicker/index.ts +1 -0
- package/src/components/DateTimePicker/DateTimePicker.definitions.ts +256 -0
- package/src/components/DateTimePicker/DateTimePicker.helpers.ts +38 -0
- package/src/components/DateTimePicker/DateTimePicker.stories.tsx +418 -0
- package/src/components/DateTimePicker/DateTimePicker.sx.ts +30 -0
- package/src/components/DateTimePicker/DateTimePicker.tsx +225 -0
- package/src/components/DateTimePicker/DateTimePicker.types.ts +10 -0
- package/src/components/DateTimePicker/index.ts +9 -0
- package/src/components/Drawer/Drawer.stories.tsx +270 -0
- package/src/components/Drawer/Drawer.sx.ts +106 -0
- package/src/components/Drawer/Drawer.tsx +214 -0
- package/src/components/Drawer/DrawerContext.ts +26 -0
- package/src/components/Drawer/DrawerItem.tsx +110 -0
- package/src/components/Drawer/index.ts +10 -0
- package/src/components/Flyout/Flyout.stories.tsx +282 -0
- package/src/components/Flyout/Flyout.tsx +122 -0
- package/src/components/Flyout/index.ts +1 -0
- package/src/components/Gallery/Gallery.definition.tsx +37 -0
- package/src/components/Gallery/Gallery.stories.tsx +82 -0
- package/src/components/Gallery/Gallery.tsx +118 -0
- package/src/components/Gallery/GalleryLightbox.tsx +170 -0
- package/src/components/Gallery/GalleryMain.tsx +84 -0
- package/src/components/Gallery/GalleryThumbnails.tsx +106 -0
- package/src/components/Gallery/index.ts +1 -0
- package/src/components/Icon/Icon.stories.tsx +121 -0
- package/src/components/Icon/Icon.tsx +175 -0
- package/src/components/Icon/index.ts +2 -0
- package/src/components/Input/Input.definitions.ts +324 -0
- package/src/components/Input/Input.helpers.ts +49 -0
- package/src/components/Input/Input.stories.tsx +499 -0
- package/src/components/Input/Input.sx.ts +42 -0
- package/src/components/Input/Input.tsx +141 -0
- package/src/components/Input/Input.types.ts +10 -0
- package/src/components/Input/index.ts +9 -0
- package/src/components/InputGroup/InputGroup.definitions.ts +158 -0
- package/src/components/InputGroup/InputGroup.stories.tsx +267 -0
- package/src/components/InputGroup/InputGroup.tsx +179 -0
- package/src/components/InputGroup/index.ts +1 -0
- package/src/components/MenuButton/MenuButton.stories.tsx +197 -0
- package/src/components/MenuButton/MenuButton.tsx +100 -0
- package/src/components/MenuButton/index.ts +1 -0
- package/src/components/Modal/Modal.stories.tsx +721 -0
- package/src/components/Modal/Modal.tsx +355 -0
- package/src/components/Modal/ModalBody.tsx +16 -0
- package/src/components/Modal/ModalFooter.tsx +71 -0
- package/src/components/Modal/ModalHeader.tsx +18 -0
- package/src/components/Modal/index.ts +6 -0
- package/src/components/PageLoader/PageLoader.stories.tsx +217 -0
- package/src/components/PageLoader/PageLoader.tsx +96 -0
- package/src/components/PageLoader/index.ts +2 -0
- package/src/components/ScrollTopButton/ScrollTopButton.stories.tsx +158 -0
- package/src/components/ScrollTopButton/ScrollTopButton.tsx +135 -0
- package/src/components/ScrollTopButton/index.ts +8 -0
- package/src/components/ScrollTopButton/scrollToTop.ts +37 -0
- package/src/components/Select/Select.definitions.ts +602 -0
- package/src/components/Select/Select.helpers.ts +71 -0
- package/src/components/Select/Select.stories.tsx +687 -0
- package/src/components/Select/Select.sx.ts +14 -0
- package/src/components/Select/Select.tsx +429 -0
- package/src/components/Select/Select.types.ts +15 -0
- package/src/components/Select/_parts/SelectMenuItem.tsx +40 -0
- package/src/components/Select/_parts/SelectSearchHeader.tsx +51 -0
- package/src/components/Select/_parts/SelectValue.tsx +96 -0
- package/src/components/Select/index.ts +14 -0
- package/src/components/Stat/Stat.stories.tsx +85 -0
- package/src/components/Stat/Stat.tsx +117 -0
- package/src/components/Stat/index.ts +2 -0
- package/src/components/StatusMessage/StatusMessage.stories.tsx +130 -0
- package/src/components/StatusMessage/StatusMessage.tsx +162 -0
- package/src/components/StatusMessage/index.ts +2 -0
- package/src/components/Stepper/Step.tsx +21 -0
- package/src/components/Stepper/Stepper.definition.ts +75 -0
- package/src/components/Stepper/Stepper.stories.tsx +122 -0
- package/src/components/Stepper/Stepper.tsx +75 -0
- package/src/components/Stepper/index.ts +2 -0
- package/src/components/Table/EmptyTable.png +0 -0
- package/src/components/Table/Table.definition.ts +580 -0
- package/src/components/Table/Table.stories.tsx +853 -0
- package/src/components/Table/Table.tsx +495 -0
- package/src/components/Table/data.ts +134 -0
- package/src/components/Table/exportsUtils.ts +195 -0
- package/src/components/Table/index.ts +3 -0
- package/src/components/Table/types.ts +34 -0
- package/src/components/Tabs/Tab.definition.ts +53 -0
- package/src/components/Tabs/Tab.tsx +19 -0
- package/src/components/Tabs/Tabs.stories.tsx +118 -0
- package/src/components/Tabs/Tabs.tsx +99 -0
- package/src/components/Tabs/_tabUtils.tsx +4 -0
- package/src/components/Tabs/index.ts +2 -0
- package/src/components/Timeline/Timeline.definition.ts +43 -0
- package/src/components/Timeline/Timeline.stories.tsx +108 -0
- package/src/components/Timeline/Timeline.tsx +49 -0
- package/src/components/Timeline/TimelineItem.tsx +31 -0
- package/src/components/Timeline/index.ts +2 -0
- package/src/components/Tooltip/Tooltip.stories.tsx +129 -0
- package/src/components/Tooltip/Tooltip.tsx +58 -0
- package/src/components/Tooltip/index.ts +1 -0
- package/src/components/_shared/formField.sx.ts +118 -0
- package/src/components/_shared/resolvePreset.ts +35 -0
- package/src/hooks/ClipBoard/ClipBoard.stories.tsx +168 -0
- package/src/hooks/ClipBoard/ClipBoard.tsx +131 -0
- package/src/hooks/ClipBoard/ClipboardUnifiedDemo.tsx +111 -0
- package/src/hooks/ClipBoard/index.ts +1 -0
- package/src/hooks/Wizard/Wizard.stories.tsx +301 -0
- package/src/hooks/Wizard/WizardContext.tsx +166 -0
- package/src/hooks/Wizard/index.ts +6 -0
- package/src/hooks/Wizard/useWizard.ts +13 -0
- package/src/index.ts +17 -0
- package/src/mui.ts +44 -0
- package/src/styles.css +3 -0
- package/src/theme/componentStyles.ts +47 -0
- package/src/theme/tokens.ts +43 -0
- package/tailwind.config.js +10 -0
- package/tsconfig.json +48 -0
- package/tsup.config.js +41 -0
- package/vite.config.js +132 -0
- package/vitest.config.ts +35 -0
- package/DatePicker-BSNboVhN.js +0 -201
- package/DatePicker-BSNboVhN.js.map +0 -1
- package/DatePicker-BoqxWAhj.cjs +0 -200
- package/DatePicker-BoqxWAhj.cjs.map +0 -1
- package/Input-DFHs7cJ_.js +0 -171
- package/Input-DFHs7cJ_.js.map +0 -1
- package/Input-c8MwNNPg.cjs +0 -170
- package/Input-c8MwNNPg.cjs.map +0 -1
- package/Select-BO2N56sm.cjs +0 -411
- package/Select-BO2N56sm.cjs.map +0 -1
- package/Select-BcLkyHSE.js +0 -412
- package/Select-BcLkyHSE.js.map +0 -1
- package/components/Autocomplete/Autocomplete.cjs +0 -132
- package/components/Autocomplete/Autocomplete.cjs.map +0 -1
- package/components/Autocomplete/Autocomplete.d.ts +0 -28
- package/components/Autocomplete/Autocomplete.js +0 -132
- package/components/Autocomplete/Autocomplete.js.map +0 -1
- package/components/Autocomplete/index.d.ts +0 -1
- package/components/Autocomplete.d.ts +0 -2
- package/components/Avatar/Avatar.cjs +0 -126
- package/components/Avatar/Avatar.cjs.map +0 -1
- package/components/Avatar/Avatar.d.ts +0 -19
- package/components/Avatar/Avatar.js +0 -126
- package/components/Avatar/Avatar.js.map +0 -1
- package/components/Card/Card.cjs +0 -28
- package/components/Card/Card.cjs.map +0 -1
- package/components/Card/Card.d.ts +0 -13
- package/components/Card/Card.js +0 -28
- package/components/Card/Card.js.map +0 -1
- package/components/Card/index.d.ts +0 -1
- package/components/Card.d.ts +0 -2
- package/components/DatePicker/DatePicker.cjs +0 -5
- package/components/DatePicker/DatePicker.cjs.map +0 -1
- package/components/DatePicker/DatePicker.d.ts +0 -18
- package/components/DatePicker/DatePicker.js +0 -5
- package/components/DatePicker/DatePicker.js.map +0 -1
- package/components/DatePicker/index.d.ts +0 -1
- package/components/DatePicker.d.ts +0 -2
- package/components/DateTimePicker/DateTimePicker.cjs +0 -208
- package/components/DateTimePicker/DateTimePicker.cjs.map +0 -1
- package/components/DateTimePicker/DateTimePicker.d.ts +0 -28
- package/components/DateTimePicker/DateTimePicker.js +0 -208
- package/components/DateTimePicker/DateTimePicker.js.map +0 -1
- package/components/DateTimePicker/index.d.ts +0 -1
- package/components/DateTimePicker.d.ts +0 -2
- package/components/Icon/Icon.cjs.map +0 -1
- package/components/Icon/Icon.d.ts +0 -21
- package/components/Icon/Icon.js.map +0 -1
- package/components/Input/Input.cjs +0 -5
- package/components/Input/Input.cjs.map +0 -1
- package/components/Input/Input.d.ts +0 -32
- package/components/Input/Input.js +0 -5
- package/components/Input/Input.js.map +0 -1
- package/components/Input/index.d.ts +0 -1
- package/components/Input.d.ts +0 -2
- package/components/InputGroup/InputGroup.cjs +0 -126
- package/components/InputGroup/InputGroup.cjs.map +0 -1
- package/components/InputGroup/InputGroup.d.ts +0 -6
- package/components/InputGroup/InputGroup.js +0 -126
- package/components/InputGroup/InputGroup.js.map +0 -1
- package/components/Modal/Modal.cjs +0 -209
- package/components/Modal/Modal.cjs.map +0 -1
- package/components/Modal/Modal.d.ts +0 -29
- package/components/Modal/Modal.js +0 -209
- package/components/Modal/Modal.js.map +0 -1
- package/components/Modal/index.d.ts +0 -1
- package/components/Select/Select.cjs +0 -6
- package/components/Select/Select.cjs.map +0 -1
- package/components/Select/Select.js +0 -6
- package/components/Select/Select.js.map +0 -1
- package/components/Select/index.d.ts +0 -1
- package/components/Select.d.ts +0 -2
- package/components/Stepper/Stepper.cjs.map +0 -1
- package/components/Stepper/Stepper.js.map +0 -1
- package/index.cjs +0 -2
- package/index.cjs.map +0 -1
- package/index.d.ts +0 -0
- package/index.js +0 -2
- /package/{README.md → Readme.md} +0 -0
- /package/{Button-C17mExpd.cjs → dist/Button-C17mExpd.cjs} +0 -0
- /package/{Button-C17mExpd.cjs.map → dist/Button-C17mExpd.cjs.map} +0 -0
- /package/{Button-UkkP-bNw.js → dist/Button-UkkP-bNw.js} +0 -0
- /package/{Button-UkkP-bNw.js.map → dist/Button-UkkP-bNw.js.map} +0 -0
- /package/{components → dist/components}/Avatar/index.d.ts +0 -0
- /package/{components → dist/components}/Avatar.d.ts +0 -0
- /package/{components → dist/components}/Button/Button.cjs +0 -0
- /package/{components → dist/components}/Button/Button.cjs.map +0 -0
- /package/{components → dist/components}/Button/Button.d.ts +0 -0
- /package/{components → dist/components}/Button/Button.definition.d.ts +0 -0
- /package/{components → dist/components}/Button/Button.js +0 -0
- /package/{components → dist/components}/Button/Button.js.map +0 -0
- /package/{components → dist/components}/Button/index.d.ts +0 -0
- /package/{components → dist/components}/Button.d.ts +0 -0
- /package/{components → dist/components}/Card/Card.definition.d.ts +0 -0
- /package/{components → dist/components}/Chip/Chip.cjs +0 -0
- /package/{components → dist/components}/Chip/Chip.cjs.map +0 -0
- /package/{components → dist/components}/Chip/Chip.d.ts +0 -0
- /package/{components → dist/components}/Chip/Chip.definitions.d.ts +0 -0
- /package/{components → dist/components}/Chip/Chip.js +0 -0
- /package/{components → dist/components}/Chip/Chip.js.map +0 -0
- /package/{components → dist/components}/Chip/index.d.ts +0 -0
- /package/{components → dist/components}/Chip.d.ts +0 -0
- /package/{components → dist/components}/Column/Column.cjs +0 -0
- /package/{components → dist/components}/Column/Column.cjs.map +0 -0
- /package/{components → dist/components}/Column/Column.d.ts +0 -0
- /package/{components → dist/components}/Column/Column.js +0 -0
- /package/{components → dist/components}/Column/Column.js.map +0 -0
- /package/{components → dist/components}/Column/index.d.ts +0 -0
- /package/{components → dist/components}/Column.d.ts +0 -0
- /package/{components → dist/components}/DateRangePicker/DateRangePicker.cjs +0 -0
- /package/{components → dist/components}/DateRangePicker/DateRangePicker.cjs.map +0 -0
- /package/{components → dist/components}/DateRangePicker/DateRangePicker.d.ts +0 -0
- /package/{components → dist/components}/DateRangePicker/DateRangePicker.definitions.d.ts +0 -0
- /package/{components → dist/components}/DateRangePicker/DateRangePicker.js +0 -0
- /package/{components → dist/components}/DateRangePicker/DateRangePicker.js.map +0 -0
- /package/{components → dist/components}/DateRangePicker/index.d.ts +0 -0
- /package/{components → dist/components}/DateRangePicker.d.ts +0 -0
- /package/{components → dist/components}/Flyout/Flyout.cjs +0 -0
- /package/{components → dist/components}/Flyout/Flyout.cjs.map +0 -0
- /package/{components → dist/components}/Flyout/Flyout.d.ts +0 -0
- /package/{components → dist/components}/Flyout/Flyout.js +0 -0
- /package/{components → dist/components}/Flyout/Flyout.js.map +0 -0
- /package/{components → dist/components}/Flyout/index.d.ts +0 -0
- /package/{components → dist/components}/Flyout.d.ts +0 -0
- /package/{components → dist/components}/Gallery/Gallery.cjs +0 -0
- /package/{components → dist/components}/Gallery/Gallery.cjs.map +0 -0
- /package/{components → dist/components}/Gallery/Gallery.d.ts +0 -0
- /package/{components → dist/components}/Gallery/Gallery.definition.d.ts +0 -0
- /package/{components → dist/components}/Gallery/Gallery.js +0 -0
- /package/{components → dist/components}/Gallery/Gallery.js.map +0 -0
- /package/{components → dist/components}/Gallery/GalleryLightbox.d.ts +0 -0
- /package/{components → dist/components}/Gallery/GalleryMain.d.ts +0 -0
- /package/{components → dist/components}/Gallery/GalleryThumbnails.d.ts +0 -0
- /package/{components → dist/components}/Gallery/index.d.ts +0 -0
- /package/{components → dist/components}/Gallery.d.ts +0 -0
- /package/{components → dist/components}/Icon/index.d.ts +0 -0
- /package/{components → dist/components}/Icon.d.ts +0 -0
- /package/{components → dist/components}/InputGroup/index.d.ts +0 -0
- /package/{components → dist/components}/InputGroup.d.ts +0 -0
- /package/{components → dist/components}/MenuButton/MenuButton.cjs +0 -0
- /package/{components → dist/components}/MenuButton/MenuButton.cjs.map +0 -0
- /package/{components → dist/components}/MenuButton/MenuButton.d.ts +0 -0
- /package/{components → dist/components}/MenuButton/MenuButton.js +0 -0
- /package/{components → dist/components}/MenuButton/MenuButton.js.map +0 -0
- /package/{components → dist/components}/MenuButton/index.d.ts +0 -0
- /package/{components → dist/components}/MenuButton.d.ts +0 -0
- /package/{components → dist/components}/Modal/ModalBody.d.ts +0 -0
- /package/{components → dist/components}/Modal/ModalHeader.d.ts +0 -0
- /package/{components → dist/components}/Modal.d.ts +0 -0
- /package/{components → dist/components}/Stat/Stat.cjs.map +0 -0
- /package/{components → dist/components}/Stat/Stat.d.ts +0 -0
- /package/{components → dist/components}/Stat/Stat.js.map +0 -0
- /package/{components → dist/components}/Stat/index.d.ts +0 -0
- /package/{components → dist/components}/Stat.d.ts +0 -0
- /package/{components → dist/components}/StatusMessage/StatusMessage.cjs +0 -0
- /package/{components → dist/components}/StatusMessage/StatusMessage.cjs.map +0 -0
- /package/{components → dist/components}/StatusMessage/StatusMessage.d.ts +0 -0
- /package/{components → dist/components}/StatusMessage/StatusMessage.js +0 -0
- /package/{components → dist/components}/StatusMessage/StatusMessage.js.map +0 -0
- /package/{components → dist/components}/StatusMessage/index.d.ts +0 -0
- /package/{components → dist/components}/StatusMessage.d.ts +0 -0
- /package/{components → dist/components}/Stepper/Step.d.ts +0 -0
- /package/{components → dist/components}/Stepper/Stepper.definition.d.ts +0 -0
- /package/{components → dist/components}/Stepper/index.d.ts +0 -0
- /package/{components → dist/components}/Stepper.d.ts +0 -0
- /package/{components → dist/components}/Table/Table.cjs +0 -0
- /package/{components → dist/components}/Table/Table.cjs.map +0 -0
- /package/{components → dist/components}/Table/Table.d.ts +0 -0
- /package/{components → dist/components}/Table/Table.definition.d.ts +0 -0
- /package/{components → dist/components}/Table/Table.js +0 -0
- /package/{components → dist/components}/Table/Table.js.map +0 -0
- /package/{components → dist/components}/Table/data.d.ts +0 -0
- /package/{components → dist/components}/Table/exportsUtils.d.ts +0 -0
- /package/{components → dist/components}/Table/index.d.ts +0 -0
- /package/{components → dist/components}/Table/types.d.ts +0 -0
- /package/{components → dist/components}/Table.d.ts +0 -0
- /package/{components → dist/components}/Tabs/Tab.d.ts +0 -0
- /package/{components → dist/components}/Tabs/Tab.definition.d.ts +0 -0
- /package/{components → dist/components}/Tabs/Tabs.cjs +0 -0
- /package/{components → dist/components}/Tabs/Tabs.cjs.map +0 -0
- /package/{components → dist/components}/Tabs/Tabs.d.ts +0 -0
- /package/{components → dist/components}/Tabs/Tabs.js +0 -0
- /package/{components → dist/components}/Tabs/Tabs.js.map +0 -0
- /package/{components → dist/components}/Tabs/_tabUtils.d.ts +0 -0
- /package/{components → dist/components}/Tabs/index.d.ts +0 -0
- /package/{components → dist/components}/Tabs.d.ts +0 -0
- /package/{components → dist/components}/Timeline/Timeline.cjs +0 -0
- /package/{components → dist/components}/Timeline/Timeline.cjs.map +0 -0
- /package/{components → dist/components}/Timeline/Timeline.d.ts +0 -0
- /package/{components → dist/components}/Timeline/Timeline.definition.d.ts +0 -0
- /package/{components → dist/components}/Timeline/Timeline.js +0 -0
- /package/{components → dist/components}/Timeline/Timeline.js.map +0 -0
- /package/{components → dist/components}/Timeline/TimelineItem.d.ts +0 -0
- /package/{components → dist/components}/Timeline/index.d.ts +0 -0
- /package/{components → dist/components}/Timeline.d.ts +0 -0
- /package/{components → dist/components}/Tooltip/Tooltip.cjs +0 -0
- /package/{components → dist/components}/Tooltip/Tooltip.cjs.map +0 -0
- /package/{components → dist/components}/Tooltip/Tooltip.d.ts +0 -0
- /package/{components → dist/components}/Tooltip/Tooltip.js +0 -0
- /package/{components → dist/components}/Tooltip/Tooltip.js.map +0 -0
- /package/{components → dist/components}/Tooltip/index.d.ts +0 -0
- /package/{components → dist/components}/Tooltip.d.ts +0 -0
- /package/{hooks → dist/hooks}/ClipBoard/ClipBoard.cjs +0 -0
- /package/{hooks → dist/hooks}/ClipBoard/ClipBoard.cjs.map +0 -0
- /package/{hooks → dist/hooks}/ClipBoard/ClipBoard.d.ts +0 -0
- /package/{hooks → dist/hooks}/ClipBoard/ClipBoard.js +0 -0
- /package/{hooks → dist/hooks}/ClipBoard/ClipBoard.js.map +0 -0
- /package/{hooks → dist/hooks}/ClipBoard/ClipboardUnifiedDemo.d.ts +0 -0
- /package/{hooks → dist/hooks}/ClipBoard/index.d.ts +0 -0
- /package/{hooks → dist/hooks}/ClipBoard.d.ts +0 -0
- /package/{index.css → dist/styles.css} +0 -0
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export declare const DefaultAvatarDefinition = "\nimport { Avatar } from './Avatar';\n\nexport const DefaultAvatarExample = () => (\n <Avatar\n items={[\n { text: 'User One', imageUrl: 'https://i.pravatar.cc/150?img=1' },\n { text: 'User Two', imageUrl: 'https://i.pravatar.cc/150?img=2' },\n ]}\n />\n);\n";
|
|
2
|
+
export declare const WithTypeAndTextDefinition = "\nimport { Avatar } from './Avatar';\n\nexport const WithTypeAndTextExample = () => (\n <Avatar\n type=\"Owner\"\n items={[{ text: 'Maria', imageUrl: 'https://i.pravatar.cc/150?img=5' }]}\n showText\n />\n);\n";
|
|
3
|
+
export declare const WithBadgesAndTooltipDefinition = "\nimport { Avatar } from './Avatar';\n\nexport const WithBadgesAndTooltipExample = () => (\n <Avatar\n showTooltip\n items={[\n { text: 'John D.', badge: 'JD', backgroundColor: '#EF5350', color: '#fff' },\n { text: 'Alice B.', badge: 'AB', backgroundColor: '#AB47BC', color: '#fff' },\n ]}\n />\n);\n";
|
|
4
|
+
export declare const SizeSmallDefinition = "\nimport { Avatar } from './Avatar';\n\nexport const SizeSmallExample = () => (\n <Avatar\n size=\"sm\"\n items={[\n { text: 'User One', imageUrl: 'https://i.pravatar.cc/150?img=11' },\n { text: 'User Two', imageUrl: 'https://i.pravatar.cc/150?img=12' },\n { text: 'User Three', imageUrl: 'https://i.pravatar.cc/150?img=13' },\n ]}\n />\n);\n";
|
|
5
|
+
export declare const SizeMediumDefinition = "\nimport { Avatar } from './Avatar';\n\nexport const SizeMediumExample = () => (\n <Avatar\n size=\"md\"\n items={[\n { text: 'User One', imageUrl: 'https://i.pravatar.cc/150?img=21' },\n { text: 'User Two', imageUrl: 'https://i.pravatar.cc/150?img=22' },\n { text: 'User Three', imageUrl: 'https://i.pravatar.cc/150?img=23' },\n ]}\n />\n);\n";
|
|
6
|
+
export declare const SizeLargeDefinition = "\nimport { Avatar } from './Avatar';\n\nexport const SizeLargeExample = () => (\n <Avatar\n size=\"lg\"\n items={[\n { text: 'User One', imageUrl: 'https://i.pravatar.cc/150?img=31' },\n { text: 'User Two', imageUrl: 'https://i.pravatar.cc/150?img=32' },\n ]}\n />\n);\n";
|
|
7
|
+
export declare const SizeExtraLargeDefinition = "\nimport { Avatar } from './Avatar';\n\nexport const SizeExtraLargeExample = () => (\n <Avatar\n size=\"xl\"\n items={[{ text: 'Maria', imageUrl: 'https://i.pravatar.cc/150?img=5' }]}\n showText={false}\n />\n);\n";
|
|
8
|
+
export declare const NumericSizeDefinition = "\nimport { Avatar } from './Avatar';\n\nexport const NumericSizeExample = () => (\n <Avatar\n size={72}\n items={[\n { text: 'User One', imageUrl: 'https://i.pravatar.cc/150?img=41' },\n { text: 'User Two', imageUrl: 'https://i.pravatar.cc/150?img=42' },\n ]}\n showText={false}\n />\n);\n";
|
|
9
|
+
export declare const FallbackIconDefinition = "\nimport { Avatar } from './Avatar';\n\nexport const FallbackIconExample = () => (\n <Avatar\n items={[\n { text: 'Without image' },\n { text: 'Broken image', imageUrl: 'https://example.invalid/broken.png' },\n ]}\n showTooltip\n />\n);\n";
|
|
10
|
+
export declare const DisplayedAvatarsLimitDefinition = "\nimport { Avatar } from './Avatar';\n\nexport const DisplayedAvatarsLimitExample = () => (\n <Avatar\n displayedAvatars={3}\n items={[\n { text: 'User 1', imageUrl: 'https://i.pravatar.cc/150?img=51' },\n { text: 'User 2', imageUrl: 'https://i.pravatar.cc/150?img=52' },\n { text: 'User 3', imageUrl: 'https://i.pravatar.cc/150?img=53' },\n { text: 'User 4', imageUrl: 'https://i.pravatar.cc/150?img=54' },\n { text: 'User 5', imageUrl: 'https://i.pravatar.cc/150?img=55' },\n ]}\n />\n);\n";
|
|
11
|
+
export declare const CustomStylingDefinition = "\nimport { Avatar } from './Avatar';\n\nexport const CustomStylingExample = () => (\n <Avatar\n size=\"md\"\n items={[\n { text: 'User One', imageUrl: 'https://i.pravatar.cc/150?img=61' },\n { text: 'User Two', imageUrl: 'https://i.pravatar.cc/150?img=62' },\n ]}\n sx={{\n p: 1,\n borderRadius: 2,\n bgcolor: 'action.hover',\n }}\n avatarSx={{\n border: (theme) => '3px solid ' + theme.palette.primary.main,\n }}\n />\n);\n";
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __defProps = Object.defineProperties;
|
|
3
|
+
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
4
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
7
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
8
|
+
var __spreadValues = (a, b) => {
|
|
9
|
+
for (var prop in b || (b = {}))
|
|
10
|
+
if (__hasOwnProp.call(b, prop))
|
|
11
|
+
__defNormalProp(a, prop, b[prop]);
|
|
12
|
+
if (__getOwnPropSymbols)
|
|
13
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
14
|
+
if (__propIsEnum.call(b, prop))
|
|
15
|
+
__defNormalProp(a, prop, b[prop]);
|
|
16
|
+
}
|
|
17
|
+
return a;
|
|
18
|
+
};
|
|
19
|
+
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
20
|
+
import { jsxs, jsx } from "react/jsx-runtime";
|
|
21
|
+
import React__default, { useState } from "react";
|
|
22
|
+
import { Box, Typography, Avatar as Avatar$1, Tooltip } from "@mui/material";
|
|
23
|
+
import AccountCircleIcon from "@mui/icons-material/AccountCircle";
|
|
24
|
+
const sizeMap = {
|
|
25
|
+
sm: { px: 32, border: 2, font: 14, overlap: 8 },
|
|
26
|
+
md: { px: 40, border: 2, font: 16, overlap: 10 },
|
|
27
|
+
lg: { px: 56, border: 3, font: 22, overlap: 14 },
|
|
28
|
+
xl: { px: 96, border: 4, font: 36, overlap: 20 }
|
|
29
|
+
};
|
|
30
|
+
const resolveSize = (size) => {
|
|
31
|
+
if (typeof size === "number") {
|
|
32
|
+
return {
|
|
33
|
+
px: size,
|
|
34
|
+
border: Math.max(2, Math.round(size * 0.05)),
|
|
35
|
+
font: Math.round(size * 0.4),
|
|
36
|
+
overlap: Math.round(size * 0.25)
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
return sizeMap[size];
|
|
40
|
+
};
|
|
41
|
+
const mergeSx = (base, extra) => {
|
|
42
|
+
if (!extra) return base;
|
|
43
|
+
const baseArr = Array.isArray(base) ? base : [base];
|
|
44
|
+
const extraArr = Array.isArray(extra) ? extra : [extra];
|
|
45
|
+
return [...baseArr, ...extraArr];
|
|
46
|
+
};
|
|
47
|
+
const Avatar = ({
|
|
48
|
+
items,
|
|
49
|
+
type,
|
|
50
|
+
displayedAvatars = 4,
|
|
51
|
+
size = "sm",
|
|
52
|
+
showText = true,
|
|
53
|
+
showTooltip = false,
|
|
54
|
+
sx,
|
|
55
|
+
avatarSx,
|
|
56
|
+
className,
|
|
57
|
+
overlap
|
|
58
|
+
}) => {
|
|
59
|
+
var _a;
|
|
60
|
+
const [errorIndex, setErrorIndex] = useState(/* @__PURE__ */ new Set());
|
|
61
|
+
const handleImageError = (index) => {
|
|
62
|
+
setErrorIndex((prev) => {
|
|
63
|
+
const next = new Set(prev);
|
|
64
|
+
next.add(index);
|
|
65
|
+
return next;
|
|
66
|
+
});
|
|
67
|
+
};
|
|
68
|
+
if (!items || items.length === 0) {
|
|
69
|
+
return null;
|
|
70
|
+
}
|
|
71
|
+
const s = resolveSize(size);
|
|
72
|
+
const effectiveOverlap = overlap != null ? overlap : s.overlap;
|
|
73
|
+
const visibleItems = items.slice(0, displayedAvatars);
|
|
74
|
+
const baseAvatarSx = {
|
|
75
|
+
width: s.px,
|
|
76
|
+
height: s.px,
|
|
77
|
+
fontSize: s.font,
|
|
78
|
+
fontWeight: 700,
|
|
79
|
+
border: (theme) => `${s.border}px solid ${theme.palette.background.paper}`,
|
|
80
|
+
boxSizing: "content-box"
|
|
81
|
+
};
|
|
82
|
+
const renderSingleAvatar = (item, i) => {
|
|
83
|
+
var _a2, _b;
|
|
84
|
+
const hasImage = !!item.imageUrl && !errorIndex.has(i);
|
|
85
|
+
const showBadgeFallback = !!item.badge;
|
|
86
|
+
const itemSx = __spreadProps(__spreadValues({
|
|
87
|
+
bgcolor: (_a2 = item.backgroundColor) != null ? _a2 : "action.selected",
|
|
88
|
+
color: (_b = item.color) != null ? _b : "text.secondary"
|
|
89
|
+
}, i > 0 && { marginLeft: `-${effectiveOverlap}px` }), {
|
|
90
|
+
zIndex: visibleItems.length - i
|
|
91
|
+
});
|
|
92
|
+
const finalSx = mergeSx(mergeSx(baseAvatarSx, itemSx), avatarSx);
|
|
93
|
+
const avatarEl = /* @__PURE__ */ jsx(
|
|
94
|
+
Avatar$1,
|
|
95
|
+
{
|
|
96
|
+
"data-testid": "avatar",
|
|
97
|
+
alt: item.text || "User avatar",
|
|
98
|
+
src: hasImage ? item.imageUrl : void 0,
|
|
99
|
+
imgProps: {
|
|
100
|
+
"data-testid": "image",
|
|
101
|
+
onError: () => handleImageError(i)
|
|
102
|
+
},
|
|
103
|
+
sx: finalSx,
|
|
104
|
+
children: !hasImage && showBadgeFallback ? /* @__PURE__ */ jsx("span", { "data-testid": "badge", "aria-label": item.text, children: item.badge }) : !hasImage ? /* @__PURE__ */ jsx(
|
|
105
|
+
AccountCircleIcon,
|
|
106
|
+
{
|
|
107
|
+
"data-testid": "icon",
|
|
108
|
+
"aria-label": item.text,
|
|
109
|
+
sx: { width: "100%", height: "100%" }
|
|
110
|
+
}
|
|
111
|
+
) : null
|
|
112
|
+
}
|
|
113
|
+
);
|
|
114
|
+
if (showTooltip && item.text) {
|
|
115
|
+
return /* @__PURE__ */ jsx(Tooltip, { title: item.text, children: avatarEl }, i);
|
|
116
|
+
}
|
|
117
|
+
return /* @__PURE__ */ jsx(React__default.Fragment, { children: avatarEl }, i);
|
|
118
|
+
};
|
|
119
|
+
return /* @__PURE__ */ jsxs(
|
|
120
|
+
Box,
|
|
121
|
+
{
|
|
122
|
+
"data-testid": "avatar-container",
|
|
123
|
+
className,
|
|
124
|
+
sx: mergeSx(
|
|
125
|
+
{
|
|
126
|
+
display: "flex",
|
|
127
|
+
alignItems: "center",
|
|
128
|
+
lineHeight: 1,
|
|
129
|
+
width: "fit-content"
|
|
130
|
+
},
|
|
131
|
+
sx
|
|
132
|
+
),
|
|
133
|
+
children: [
|
|
134
|
+
/* @__PURE__ */ jsx(Box, { sx: { display: "flex", alignItems: "center" }, children: visibleItems.map((item, i) => renderSingleAvatar(item, i)) }),
|
|
135
|
+
showText && ((_a = items[0]) == null ? void 0 : _a.text) && /* @__PURE__ */ jsxs(
|
|
136
|
+
Typography,
|
|
137
|
+
{
|
|
138
|
+
"data-testid": "text",
|
|
139
|
+
variant: "caption",
|
|
140
|
+
sx: {
|
|
141
|
+
ml: 1,
|
|
142
|
+
fontSize: "0.75rem",
|
|
143
|
+
fontWeight: 400,
|
|
144
|
+
color: "text.primary"
|
|
145
|
+
},
|
|
146
|
+
children: [
|
|
147
|
+
type && items.length === 1 && /* @__PURE__ */ jsxs(Box, { component: "span", "data-testid": "type", sx: { mr: 0.5 }, children: [
|
|
148
|
+
type,
|
|
149
|
+
":"
|
|
150
|
+
] }),
|
|
151
|
+
items[0].text,
|
|
152
|
+
items.length > 1 && ` +${items.length - 1}`
|
|
153
|
+
]
|
|
154
|
+
}
|
|
155
|
+
)
|
|
156
|
+
]
|
|
157
|
+
}
|
|
158
|
+
);
|
|
159
|
+
};
|
|
160
|
+
export {
|
|
161
|
+
Avatar
|
|
162
|
+
};
|
|
163
|
+
//# sourceMappingURL=Avatar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Avatar.js","sources":["../../../src/components/Avatar/Avatar.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport {\n Avatar as MuiAvatar,\n Box,\n Tooltip,\n Typography,\n type SxProps,\n type Theme,\n} from '@mui/material';\nimport AccountCircleIcon from '@mui/icons-material/AccountCircle';\n\nexport interface AvatarItem {\n text?: string;\n imageUrl?: string;\n badge?: string;\n color?: string;\n backgroundColor?: string;\n}\n\nexport type AvatarSize = 'sm' | 'md' | 'lg' | 'xl' | number;\n\nexport interface AvatarProps {\n type?: string;\n items: AvatarItem[];\n displayedAvatars?: number;\n size?: AvatarSize;\n showText?: boolean;\n showTooltip?: boolean;\n /**\n * sx aplicado al contenedor raíz.\n */\n sx?: SxProps<Theme>;\n /**\n * sx aplicado a cada MuiAvatar individual (se mergea sobre los defaults).\n */\n avatarSx?: SxProps<Theme>;\n className?: string;\n /**\n * Overlap (px) entre avatares cuando hay varios. Default depende del tamaño.\n */\n overlap?: number;\n}\n\n// Escala alineada con la escala de MUI (sm=32, md=40, lg=56, xl=96) con borde\n// proporcional para el efecto stacked.\nconst sizeMap: Record<\n Exclude<AvatarSize, number>,\n { px: number; border: number; font: number; overlap: number }\n> = {\n sm: { px: 32, border: 2, font: 14, overlap: 8 },\n md: { px: 40, border: 2, font: 16, overlap: 10 },\n lg: { px: 56, border: 3, font: 22, overlap: 14 },\n xl: { px: 96, border: 4, font: 36, overlap: 20 },\n};\n\nconst resolveSize = (size: AvatarSize) => {\n if (typeof size === 'number') {\n return {\n px: size,\n border: Math.max(2, Math.round(size * 0.05)),\n font: Math.round(size * 0.4),\n overlap: Math.round(size * 0.25),\n };\n }\n return sizeMap[size];\n};\n\nconst mergeSx = (base: SxProps<Theme>, extra?: SxProps<Theme>): SxProps<Theme> => {\n if (!extra) return base;\n const baseArr = Array.isArray(base) ? base : [base];\n const extraArr = Array.isArray(extra) ? extra : [extra];\n return [...baseArr, ...extraArr] as SxProps<Theme>;\n};\n\nexport const Avatar: React.FC<AvatarProps> = ({\n items,\n type,\n displayedAvatars = 4,\n size = 'sm',\n showText = true,\n showTooltip = false,\n sx,\n avatarSx,\n className,\n overlap,\n}) => {\n const [errorIndex, setErrorIndex] = useState<Set<number>>(new Set());\n\n const handleImageError = (index: number) => {\n setErrorIndex((prev) => {\n const next = new Set(prev);\n next.add(index);\n return next;\n });\n };\n\n if (!items || items.length === 0) {\n return null;\n }\n\n const s = resolveSize(size);\n const effectiveOverlap = overlap ?? s.overlap;\n const visibleItems = items.slice(0, displayedAvatars);\n\n const baseAvatarSx: SxProps<Theme> = {\n width: s.px,\n height: s.px,\n fontSize: s.font,\n fontWeight: 700,\n border: (theme) => `${s.border}px solid ${theme.palette.background.paper}`,\n boxSizing: 'content-box',\n };\n\n const renderSingleAvatar = (item: AvatarItem, i: number) => {\n const hasImage = !!item.imageUrl && !errorIndex.has(i);\n const showBadgeFallback = !!item.badge;\n\n // Defaults tirando al theme; item.color / item.backgroundColor tienen prioridad.\n const itemSx: SxProps<Theme> = {\n bgcolor: item.backgroundColor ?? 'action.selected',\n color: item.color ?? 'text.secondary',\n // Stacking manual: margen negativo al segundo avatar en adelante.\n ...(i > 0 && { marginLeft: `-${effectiveOverlap}px` }),\n zIndex: visibleItems.length - i,\n };\n\n const finalSx = mergeSx(mergeSx(baseAvatarSx, itemSx), avatarSx);\n\n const avatarEl = (\n <MuiAvatar\n data-testid=\"avatar\"\n alt={item.text || 'User avatar'}\n src={hasImage ? item.imageUrl : undefined}\n imgProps={{\n 'data-testid': 'image',\n onError: () => handleImageError(i),\n } as React.ImgHTMLAttributes<HTMLImageElement>}\n sx={finalSx}\n >\n {!hasImage && showBadgeFallback ? (\n <span data-testid=\"badge\" aria-label={item.text}>\n {item.badge}\n </span>\n ) : !hasImage ? (\n <AccountCircleIcon\n data-testid=\"icon\"\n aria-label={item.text}\n sx={{ width: '100%', height: '100%' }}\n />\n ) : null}\n </MuiAvatar>\n );\n\n if (showTooltip && item.text) {\n return (\n <Tooltip key={i} title={item.text}>\n {avatarEl}\n </Tooltip>\n );\n }\n return <React.Fragment key={i}>{avatarEl}</React.Fragment>;\n };\n\n return (\n <Box\n data-testid=\"avatar-container\"\n className={className}\n sx={mergeSx(\n {\n display: 'flex',\n alignItems: 'center',\n lineHeight: 1,\n width: 'fit-content',\n },\n sx,\n )}\n >\n <Box sx={{ display: 'flex', alignItems: 'center' }}>\n {visibleItems.map((item, i) => renderSingleAvatar(item, i))}\n </Box>\n\n {showText && items[0]?.text && (\n <Typography\n data-testid=\"text\"\n variant=\"caption\"\n sx={{\n ml: 1,\n fontSize: '0.75rem',\n fontWeight: 400,\n color: 'text.primary',\n }}\n >\n {type && items.length === 1 && (\n <Box component=\"span\" data-testid=\"type\" sx={{ mr: 0.5 }}>\n {type}:\n </Box>\n )}\n {items[0].text}\n {items.length > 1 && ` +${items.length - 1}`}\n </Typography>\n )}\n </Box>\n );\n};\n\nexport default Avatar;\n"],"names":["_a","MuiAvatar","React"],"mappings":"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"}
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __defProps = Object.defineProperties;
|
|
4
|
+
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
5
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
8
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
9
|
+
var __spreadValues = (a, b) => {
|
|
10
|
+
for (var prop in b || (b = {}))
|
|
11
|
+
if (__hasOwnProp.call(b, prop))
|
|
12
|
+
__defNormalProp(a, prop, b[prop]);
|
|
13
|
+
if (__getOwnPropSymbols)
|
|
14
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
15
|
+
if (__propIsEnum.call(b, prop))
|
|
16
|
+
__defNormalProp(a, prop, b[prop]);
|
|
17
|
+
}
|
|
18
|
+
return a;
|
|
19
|
+
};
|
|
20
|
+
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
21
|
+
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
|
|
22
|
+
const jsxRuntime = require("react/jsx-runtime");
|
|
23
|
+
const material = require("@mui/material");
|
|
24
|
+
const resolvePreset = require("../../resolvePreset-CT3kU-K2.cjs");
|
|
25
|
+
const paddingMap = {
|
|
26
|
+
none: 0,
|
|
27
|
+
dense: 1.5,
|
|
28
|
+
normal: 2.5,
|
|
29
|
+
loose: 4
|
|
30
|
+
};
|
|
31
|
+
function buildCardSx({
|
|
32
|
+
variant,
|
|
33
|
+
padding,
|
|
34
|
+
clickable
|
|
35
|
+
}) {
|
|
36
|
+
return (theme) => __spreadProps(__spreadValues({
|
|
37
|
+
borderRadius: 2,
|
|
38
|
+
backgroundColor: "background.paper",
|
|
39
|
+
boxShadow: variant === "elevated" ? theme.shadows[1] : "none",
|
|
40
|
+
border: variant === "outlined" ? `1px solid ${theme.palette.divider}` : "none",
|
|
41
|
+
transition: theme.transitions.create(
|
|
42
|
+
["box-shadow", "transform", "border-color"],
|
|
43
|
+
{ duration: theme.transitions.duration.shorter }
|
|
44
|
+
),
|
|
45
|
+
cursor: clickable ? "pointer" : "default"
|
|
46
|
+
}, clickable && {
|
|
47
|
+
"&:hover": {
|
|
48
|
+
boxShadow: variant === "elevated" ? theme.shadows[3] : variant === "outlined" ? theme.shadows[1] : "none",
|
|
49
|
+
transform: variant !== "plain" ? "translateY(-1px)" : "none"
|
|
50
|
+
},
|
|
51
|
+
"&:active": {
|
|
52
|
+
transform: "translateY(0)"
|
|
53
|
+
}
|
|
54
|
+
}), {
|
|
55
|
+
// Body padding (cuando no hay header/footer envolventes). Para el caso
|
|
56
|
+
// compuesto los slots manejan su propio padding, dejamos el root en 0.
|
|
57
|
+
p: paddingMap[padding]
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
function buildCardHeaderSx() {
|
|
61
|
+
return (theme) => ({
|
|
62
|
+
display: "flex",
|
|
63
|
+
alignItems: "center",
|
|
64
|
+
gap: 1.5,
|
|
65
|
+
px: 2.5,
|
|
66
|
+
py: 1.75,
|
|
67
|
+
borderBottom: `1px solid ${theme.palette.divider}`,
|
|
68
|
+
"& .card-header-text": {
|
|
69
|
+
flex: 1,
|
|
70
|
+
minWidth: 0
|
|
71
|
+
},
|
|
72
|
+
"& .card-header-actions": {
|
|
73
|
+
display: "flex",
|
|
74
|
+
alignItems: "center",
|
|
75
|
+
gap: 0.5,
|
|
76
|
+
flexShrink: 0
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
function buildCardBodySx(padding) {
|
|
81
|
+
return {
|
|
82
|
+
px: padding === "none" ? 0 : padding === "dense" ? 1.5 : padding === "loose" ? 4 : 2.5,
|
|
83
|
+
py: padding === "none" ? 0 : padding === "dense" ? 1.5 : padding === "loose" ? 4 : 2.5
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
function buildCardFooterSx() {
|
|
87
|
+
return (theme) => ({
|
|
88
|
+
display: "flex",
|
|
89
|
+
alignItems: "center",
|
|
90
|
+
justifyContent: "flex-end",
|
|
91
|
+
gap: 1,
|
|
92
|
+
px: 2.5,
|
|
93
|
+
py: 1.5,
|
|
94
|
+
borderTop: `1px solid ${theme.palette.divider}`,
|
|
95
|
+
backgroundColor: theme.palette.action.hover
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
function Card({
|
|
99
|
+
children,
|
|
100
|
+
title,
|
|
101
|
+
subtitle,
|
|
102
|
+
actions,
|
|
103
|
+
header,
|
|
104
|
+
footer,
|
|
105
|
+
variant,
|
|
106
|
+
padding = "normal",
|
|
107
|
+
clickable = false,
|
|
108
|
+
preset,
|
|
109
|
+
raised,
|
|
110
|
+
sx,
|
|
111
|
+
bodySx,
|
|
112
|
+
headerSx,
|
|
113
|
+
footerSx,
|
|
114
|
+
onClick,
|
|
115
|
+
onBlur,
|
|
116
|
+
className,
|
|
117
|
+
"data-testid": dataTestId
|
|
118
|
+
}) {
|
|
119
|
+
const theme = material.useTheme();
|
|
120
|
+
const resolvedVariant = raised ? "elevated" : variant != null ? variant : "elevated";
|
|
121
|
+
const hasHeader = Boolean(header || title || subtitle || actions);
|
|
122
|
+
const hasFooter = Boolean(footer);
|
|
123
|
+
const isCompound = hasHeader || hasFooter;
|
|
124
|
+
const rootPadding = isCompound ? "none" : padding;
|
|
125
|
+
const presetSx = resolvePreset.resolvePreset("Card", preset, theme);
|
|
126
|
+
const rootSx = [
|
|
127
|
+
buildCardSx({
|
|
128
|
+
variant: resolvedVariant,
|
|
129
|
+
padding: rootPadding,
|
|
130
|
+
clickable: clickable || Boolean(onClick)
|
|
131
|
+
}),
|
|
132
|
+
...presetSx ? [presetSx] : [],
|
|
133
|
+
...Array.isArray(sx) ? sx : sx ? [sx] : []
|
|
134
|
+
];
|
|
135
|
+
const renderHeader = () => {
|
|
136
|
+
if (header) return /* @__PURE__ */ jsxRuntime.jsx(material.Box, { sx: [buildCardHeaderSx(), ...Array.isArray(headerSx) ? headerSx : headerSx ? [headerSx] : []], children: header });
|
|
137
|
+
if (!title && !subtitle && !actions) return null;
|
|
138
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(material.Box, { sx: [buildCardHeaderSx(), ...Array.isArray(headerSx) ? headerSx : headerSx ? [headerSx] : []], children: [
|
|
139
|
+
/* @__PURE__ */ jsxRuntime.jsxs(material.Box, { className: "card-header-text", children: [
|
|
140
|
+
title && /* @__PURE__ */ jsxRuntime.jsx(
|
|
141
|
+
material.Typography,
|
|
142
|
+
{
|
|
143
|
+
variant: "subtitle1",
|
|
144
|
+
component: "div",
|
|
145
|
+
sx: { fontWeight: 600, lineHeight: 1.3 },
|
|
146
|
+
noWrap: true,
|
|
147
|
+
children: title
|
|
148
|
+
}
|
|
149
|
+
),
|
|
150
|
+
subtitle && /* @__PURE__ */ jsxRuntime.jsx(
|
|
151
|
+
material.Typography,
|
|
152
|
+
{
|
|
153
|
+
variant: "caption",
|
|
154
|
+
color: "text.secondary",
|
|
155
|
+
component: "div",
|
|
156
|
+
noWrap: true,
|
|
157
|
+
children: subtitle
|
|
158
|
+
}
|
|
159
|
+
)
|
|
160
|
+
] }),
|
|
161
|
+
actions && /* @__PURE__ */ jsxRuntime.jsx(material.Box, { className: "card-header-actions", children: actions })
|
|
162
|
+
] });
|
|
163
|
+
};
|
|
164
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
165
|
+
material.Card,
|
|
166
|
+
{
|
|
167
|
+
sx: rootSx,
|
|
168
|
+
className,
|
|
169
|
+
"data-testid": dataTestId,
|
|
170
|
+
onClick,
|
|
171
|
+
onBlur,
|
|
172
|
+
elevation: 0,
|
|
173
|
+
children: [
|
|
174
|
+
renderHeader(),
|
|
175
|
+
isCompound ? /* @__PURE__ */ jsxRuntime.jsx(material.Box, { sx: [buildCardBodySx(padding), ...Array.isArray(bodySx) ? bodySx : bodySx ? [bodySx] : []], children }) : children,
|
|
176
|
+
hasFooter && /* @__PURE__ */ jsxRuntime.jsx(material.Box, { sx: [buildCardFooterSx(), ...Array.isArray(footerSx) ? footerSx : footerSx ? [footerSx] : []], children: footer })
|
|
177
|
+
]
|
|
178
|
+
}
|
|
179
|
+
);
|
|
180
|
+
}
|
|
181
|
+
exports.Card = Card;
|
|
182
|
+
exports.buildCardBodySx = buildCardBodySx;
|
|
183
|
+
exports.buildCardFooterSx = buildCardFooterSx;
|
|
184
|
+
exports.buildCardHeaderSx = buildCardHeaderSx;
|
|
185
|
+
exports.buildCardSx = buildCardSx;
|
|
186
|
+
exports.default = Card;
|
|
187
|
+
//# sourceMappingURL=Card.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Card.cjs","sources":["../../../src/components/Card/Card.sx.ts","../../../src/components/Card/Card.tsx"],"sourcesContent":["import type { SxProps, Theme } from '@mui/material/styles';\n\nexport type CardVariant = 'elevated' | 'outlined' | 'plain';\nexport type CardPadding = 'none' | 'dense' | 'normal' | 'loose';\n\nexport interface BuildCardSxArgs {\n variant: CardVariant;\n padding: CardPadding;\n clickable: boolean;\n}\n\nconst paddingMap: Record<CardPadding, number> = {\n none: 0,\n dense: 1.5,\n normal: 2.5,\n loose: 4,\n};\n\n/**\n * Estilo base del Card (root). La props `sx` del consumer se compone encima\n * junto al preset resuelto (en Card.tsx). Este builder solo se ocupa del\n * variant + padding, para que siga siendo predecible.\n */\nexport function buildCardSx({\n variant,\n padding,\n clickable,\n}: BuildCardSxArgs): SxProps<Theme> {\n return (theme) => ({\n borderRadius: 2,\n backgroundColor: 'background.paper',\n boxShadow:\n variant === 'elevated'\n ? theme.shadows[1]\n : 'none',\n border:\n variant === 'outlined'\n ? `1px solid ${theme.palette.divider}`\n : 'none',\n transition: theme.transitions.create(\n ['box-shadow', 'transform', 'border-color'],\n { duration: theme.transitions.duration.shorter },\n ),\n cursor: clickable ? 'pointer' : 'default',\n ...(clickable && {\n '&:hover': {\n boxShadow:\n variant === 'elevated'\n ? theme.shadows[3]\n : variant === 'outlined'\n ? theme.shadows[1]\n : 'none',\n transform: variant !== 'plain' ? 'translateY(-1px)' : 'none',\n },\n '&:active': {\n transform: 'translateY(0)',\n },\n }),\n // Body padding (cuando no hay header/footer envolventes). Para el caso\n // compuesto los slots manejan su propio padding, dejamos el root en 0.\n p: paddingMap[padding],\n });\n}\n\nexport function buildCardHeaderSx(): SxProps<Theme> {\n return (theme) => ({\n display: 'flex',\n alignItems: 'center',\n gap: 1.5,\n px: 2.5,\n py: 1.75,\n borderBottom: `1px solid ${theme.palette.divider}`,\n '& .card-header-text': {\n flex: 1,\n minWidth: 0,\n },\n '& .card-header-actions': {\n display: 'flex',\n alignItems: 'center',\n gap: 0.5,\n flexShrink: 0,\n },\n });\n}\n\nexport function buildCardBodySx(padding: CardPadding): SxProps<Theme> {\n return {\n px: padding === 'none' ? 0 : padding === 'dense' ? 1.5 : padding === 'loose' ? 4 : 2.5,\n py: padding === 'none' ? 0 : padding === 'dense' ? 1.5 : padding === 'loose' ? 4 : 2.5,\n };\n}\n\nexport function buildCardFooterSx(): SxProps<Theme> {\n return (theme) => ({\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'flex-end',\n gap: 1,\n px: 2.5,\n py: 1.5,\n borderTop: `1px solid ${theme.palette.divider}`,\n backgroundColor: theme.palette.action.hover,\n });\n}\n","import React, { type ReactNode } from 'react';\nimport { Box, Card as MuiCard, Typography, useTheme } from '@mui/material';\nimport type { SxProps, Theme } from '@mui/material/styles';\n\nimport { resolvePreset } from '../_shared/resolvePreset';\nimport {\n buildCardSx,\n buildCardHeaderSx,\n buildCardBodySx,\n buildCardFooterSx,\n type CardVariant,\n type CardPadding,\n} from './Card.sx';\n\nexport interface CardProps {\n /** Contenido principal. */\n children?: ReactNode;\n /**\n * Título del Card. Si se provee, renderiza un header con separador. Puede\n * ser string o cualquier ReactNode para permitir iconos / chips.\n */\n title?: ReactNode;\n /** Texto secundario debajo del título. */\n subtitle?: ReactNode;\n /**\n * Acciones del header (botones, ActionMenu, etc). Se renderizan alineadas\n * a la derecha.\n */\n actions?: ReactNode;\n /**\n * Header totalmente custom. Si se provee, ignora `title`/`subtitle`/`actions`\n * y toma control del slot entero.\n */\n header?: ReactNode;\n /** Footer custom (botones, mensajes, etc). */\n footer?: ReactNode;\n /**\n * Variante visual.\n * - `elevated` (default): sombra sutil.\n * - `outlined`: borde sin sombra.\n * - `plain`: sin borde ni sombra, útil para layouts con nesting.\n */\n variant?: CardVariant;\n /**\n * Densidad del padding interno. Solo aplica al body cuando hay header/footer;\n * cuando no hay slots, aplica al root.\n */\n padding?: CardPadding;\n /** Si `true`, muestra feedback de hover/active (cursor, sombra). */\n clickable?: boolean;\n /**\n * Preset registrado en `theme.styles.Card`. `\"default\"` usa el estilo\n * built-in sin preset extra.\n */\n preset?: string;\n /**\n * MUI `raised` legacy — mantenido por backward-compat. Equivale a\n * `variant=\"elevated\"` con sombra mayor. Ignora `variant` si se usa.\n */\n raised?: boolean;\n /** sx del root. Se compone sobre el base + preset. */\n sx?: SxProps<Theme>;\n /** sx custom del slot body. */\n bodySx?: SxProps<Theme>;\n /** sx custom del slot header. */\n headerSx?: SxProps<Theme>;\n /** sx custom del slot footer. */\n footerSx?: SxProps<Theme>;\n onClick?: () => void;\n onBlur?: () => void;\n className?: string;\n 'data-testid'?: string;\n}\n\n/**\n * Card semántico con slots `title` / `subtitle` / `actions` / `footer`.\n * Reemplaza el patrón `<div class=\"card\"><div class=\"card-header\">...</div>...`\n * de Metronic/Bootstrap con composición declarativa.\n *\n * Backward-compat: si solo se pasa `children`, se comporta como el Card\n * original (MUI Card + body padding).\n *\n * ```tsx\n * <Card\n * title=\"Datos del cliente\"\n * subtitle=\"Última actualización: hace 2h\"\n * actions={<ActionMenu items={menuItems} />}\n * footer={<Button>Guardar</Button>}\n * >\n * <CustomerForm />\n * </Card>\n * ```\n */\nexport function Card({\n children,\n title,\n subtitle,\n actions,\n header,\n footer,\n variant,\n padding = 'normal',\n clickable = false,\n preset,\n raised,\n sx,\n bodySx,\n headerSx,\n footerSx,\n onClick,\n onBlur,\n className,\n 'data-testid': dataTestId,\n}: CardProps) {\n const theme = useTheme();\n\n // Back-compat: `raised` legacy => elevated. Si no vienen ni `raised` ni\n // `variant`, default a 'elevated'.\n const resolvedVariant: CardVariant = raised\n ? 'elevated'\n : (variant ?? 'elevated');\n\n const hasHeader = Boolean(header || title || subtitle || actions);\n const hasFooter = Boolean(footer);\n const isCompound = hasHeader || hasFooter;\n\n // Cuando hay slots, el root no lleva padding (lo llevan los slots).\n const rootPadding: CardPadding = isCompound ? 'none' : padding;\n\n const presetSx = resolvePreset('Card', preset, theme);\n\n const rootSx: SxProps<Theme> = [\n buildCardSx({\n variant: resolvedVariant,\n padding: rootPadding,\n clickable: clickable || Boolean(onClick),\n }),\n ...(presetSx ? [presetSx] : []),\n ...(Array.isArray(sx) ? sx : sx ? [sx] : []),\n ];\n\n const renderHeader = () => {\n if (header) return <Box sx={[buildCardHeaderSx(), ...(Array.isArray(headerSx) ? headerSx : headerSx ? [headerSx] : [])]}>{header}</Box>;\n if (!title && !subtitle && !actions) return null;\n return (\n <Box sx={[buildCardHeaderSx(), ...(Array.isArray(headerSx) ? headerSx : headerSx ? [headerSx] : [])]}>\n <Box className=\"card-header-text\">\n {title && (\n <Typography\n variant=\"subtitle1\"\n component=\"div\"\n sx={{ fontWeight: 600, lineHeight: 1.3 }}\n noWrap\n >\n {title}\n </Typography>\n )}\n {subtitle && (\n <Typography\n variant=\"caption\"\n color=\"text.secondary\"\n component=\"div\"\n noWrap\n >\n {subtitle}\n </Typography>\n )}\n </Box>\n {actions && <Box className=\"card-header-actions\">{actions}</Box>}\n </Box>\n );\n };\n\n return (\n <MuiCard\n sx={rootSx}\n className={className}\n data-testid={dataTestId}\n onClick={onClick}\n onBlur={onBlur}\n elevation={0} // sombra la maneja buildCardSx\n >\n {renderHeader()}\n {isCompound ? (\n <Box sx={[buildCardBodySx(padding), ...(Array.isArray(bodySx) ? bodySx : bodySx ? [bodySx] : [])]}>\n {children}\n </Box>\n ) : (\n children\n )}\n {hasFooter && (\n <Box sx={[buildCardFooterSx(), ...(Array.isArray(footerSx) ? footerSx : footerSx ? [footerSx] : [])]}>\n {footer}\n </Box>\n )}\n </MuiCard>\n );\n}\n\nexport default Card;\n"],"names":["useTheme","resolvePreset","jsx","Box","jsxs","Typography","MuiCard"],"mappings":"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"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
import { SxProps, Theme } from '@mui/material/styles';
|
|
3
|
+
import { CardVariant, CardPadding } from './Card.sx';
|
|
4
|
+
export interface CardProps {
|
|
5
|
+
/** Contenido principal. */
|
|
6
|
+
children?: ReactNode;
|
|
7
|
+
/**
|
|
8
|
+
* Título del Card. Si se provee, renderiza un header con separador. Puede
|
|
9
|
+
* ser string o cualquier ReactNode para permitir iconos / chips.
|
|
10
|
+
*/
|
|
11
|
+
title?: ReactNode;
|
|
12
|
+
/** Texto secundario debajo del título. */
|
|
13
|
+
subtitle?: ReactNode;
|
|
14
|
+
/**
|
|
15
|
+
* Acciones del header (botones, ActionMenu, etc). Se renderizan alineadas
|
|
16
|
+
* a la derecha.
|
|
17
|
+
*/
|
|
18
|
+
actions?: ReactNode;
|
|
19
|
+
/**
|
|
20
|
+
* Header totalmente custom. Si se provee, ignora `title`/`subtitle`/`actions`
|
|
21
|
+
* y toma control del slot entero.
|
|
22
|
+
*/
|
|
23
|
+
header?: ReactNode;
|
|
24
|
+
/** Footer custom (botones, mensajes, etc). */
|
|
25
|
+
footer?: ReactNode;
|
|
26
|
+
/**
|
|
27
|
+
* Variante visual.
|
|
28
|
+
* - `elevated` (default): sombra sutil.
|
|
29
|
+
* - `outlined`: borde sin sombra.
|
|
30
|
+
* - `plain`: sin borde ni sombra, útil para layouts con nesting.
|
|
31
|
+
*/
|
|
32
|
+
variant?: CardVariant;
|
|
33
|
+
/**
|
|
34
|
+
* Densidad del padding interno. Solo aplica al body cuando hay header/footer;
|
|
35
|
+
* cuando no hay slots, aplica al root.
|
|
36
|
+
*/
|
|
37
|
+
padding?: CardPadding;
|
|
38
|
+
/** Si `true`, muestra feedback de hover/active (cursor, sombra). */
|
|
39
|
+
clickable?: boolean;
|
|
40
|
+
/**
|
|
41
|
+
* Preset registrado en `theme.styles.Card`. `"default"` usa el estilo
|
|
42
|
+
* built-in sin preset extra.
|
|
43
|
+
*/
|
|
44
|
+
preset?: string;
|
|
45
|
+
/**
|
|
46
|
+
* MUI `raised` legacy — mantenido por backward-compat. Equivale a
|
|
47
|
+
* `variant="elevated"` con sombra mayor. Ignora `variant` si se usa.
|
|
48
|
+
*/
|
|
49
|
+
raised?: boolean;
|
|
50
|
+
/** sx del root. Se compone sobre el base + preset. */
|
|
51
|
+
sx?: SxProps<Theme>;
|
|
52
|
+
/** sx custom del slot body. */
|
|
53
|
+
bodySx?: SxProps<Theme>;
|
|
54
|
+
/** sx custom del slot header. */
|
|
55
|
+
headerSx?: SxProps<Theme>;
|
|
56
|
+
/** sx custom del slot footer. */
|
|
57
|
+
footerSx?: SxProps<Theme>;
|
|
58
|
+
onClick?: () => void;
|
|
59
|
+
onBlur?: () => void;
|
|
60
|
+
className?: string;
|
|
61
|
+
'data-testid'?: string;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Card semántico con slots `title` / `subtitle` / `actions` / `footer`.
|
|
65
|
+
* Reemplaza el patrón `<div class="card"><div class="card-header">...</div>...`
|
|
66
|
+
* de Metronic/Bootstrap con composición declarativa.
|
|
67
|
+
*
|
|
68
|
+
* Backward-compat: si solo se pasa `children`, se comporta como el Card
|
|
69
|
+
* original (MUI Card + body padding).
|
|
70
|
+
*
|
|
71
|
+
* ```tsx
|
|
72
|
+
* <Card
|
|
73
|
+
* title="Datos del cliente"
|
|
74
|
+
* subtitle="Última actualización: hace 2h"
|
|
75
|
+
* actions={<ActionMenu items={menuItems} />}
|
|
76
|
+
* footer={<Button>Guardar</Button>}
|
|
77
|
+
* >
|
|
78
|
+
* <CustomerForm />
|
|
79
|
+
* </Card>
|
|
80
|
+
* ```
|
|
81
|
+
*/
|
|
82
|
+
export declare function Card({ children, title, subtitle, actions, header, footer, variant, padding, clickable, preset, raised, sx, bodySx, headerSx, footerSx, onClick, onBlur, className, 'data-testid': dataTestId, }: CardProps): import("react/jsx-runtime").JSX.Element;
|
|
83
|
+
export default Card;
|