@soyfri/shared-library 2.0.0-beta.3 → 2.0.0-beta.30
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/Autocomplete-C_lW1VER.js +337 -0
- package/Autocomplete-C_lW1VER.js.map +1 -0
- package/Autocomplete-CejWztBY.cjs +336 -0
- package/Autocomplete-CejWztBY.cjs.map +1 -0
- package/Avatar-Dw5rzayR.cjs +166 -0
- package/Avatar-Dw5rzayR.cjs.map +1 -0
- package/Avatar-H8akSege.js +167 -0
- package/Avatar-H8akSege.js.map +1 -0
- package/Button-C17mExpd.cjs.map +1 -1
- package/Button-UkkP-bNw.js.map +1 -1
- package/Card-DYKGY-NG.js +116 -0
- package/Card-DYKGY-NG.js.map +1 -0
- package/Card-Dr1-ATRY.cjs +115 -0
- package/Card-Dr1-ATRY.cjs.map +1 -0
- package/Checkbox-BCqMFWt4.cjs +187 -0
- package/Checkbox-BCqMFWt4.cjs.map +1 -0
- package/Checkbox-gB5YKkVo.js +188 -0
- package/Checkbox-gB5YKkVo.js.map +1 -0
- package/{components/DateRangePicker/DateRangePicker.js → Chip-OPYQ1uQ_.js} +33 -35
- package/Chip-OPYQ1uQ_.js.map +1 -0
- package/{components/DateRangePicker/DateRangePicker.cjs → Chip-qoJLDiva.cjs} +33 -36
- package/Chip-qoJLDiva.cjs.map +1 -0
- package/DatePicker-_IGWc3I5.js +178 -0
- package/DatePicker-_IGWc3I5.js.map +1 -0
- package/DatePicker-t7uDTZMl.cjs +177 -0
- package/DatePicker-t7uDTZMl.cjs.map +1 -0
- package/DateTimePicker-BxQyjTCY.cjs +229 -0
- package/DateTimePicker-BxQyjTCY.cjs.map +1 -0
- package/DateTimePicker-CrmWav_j.js +230 -0
- package/DateTimePicker-CrmWav_j.js.map +1 -0
- package/Input-CScC87J5.cjs +185 -0
- package/Input-CScC87J5.cjs.map +1 -0
- package/Input-DP_fKl38.js +186 -0
- package/Input-DP_fKl38.js.map +1 -0
- package/Modal-BFpX5AFV.js +347 -0
- package/Modal-BFpX5AFV.js.map +1 -0
- package/Modal-CkpuI8ns.cjs +346 -0
- package/Modal-CkpuI8ns.cjs.map +1 -0
- package/RadioGroup-Dd0rHXSX.cjs +202 -0
- package/RadioGroup-Dd0rHXSX.cjs.map +1 -0
- package/RadioGroup-bO-ahP9T.js +203 -0
- package/RadioGroup-bO-ahP9T.js.map +1 -0
- package/Select-BY5Y0qZ1.js +376 -0
- package/Select-BY5Y0qZ1.js.map +1 -0
- package/Select-CURrHSyl.cjs +375 -0
- package/Select-CURrHSyl.cjs.map +1 -0
- package/Spinner-B6sThC1p.js +74 -0
- package/Spinner-B6sThC1p.js.map +1 -0
- package/Spinner-D7qRmNS9.cjs +73 -0
- package/Spinner-D7qRmNS9.cjs.map +1 -0
- package/Stat-BUcFCGrz.cjs +83 -0
- package/Stat-BUcFCGrz.cjs.map +1 -0
- package/Stat-C06A_izS.js +84 -0
- package/Stat-C06A_izS.js.map +1 -0
- package/StatusMessage-B3nXpuRl.cjs +88 -0
- package/StatusMessage-B3nXpuRl.cjs.map +1 -0
- package/StatusMessage-D0WgSBx7.js +89 -0
- package/StatusMessage-D0WgSBx7.js.map +1 -0
- package/Step-BArsou1V.js +301 -0
- package/Step-BArsou1V.js.map +1 -0
- package/Step-Nd7SJbRZ.cjs +300 -0
- package/Step-Nd7SJbRZ.cjs.map +1 -0
- package/Switch-CQFOopYy.cjs +182 -0
- package/Switch-CQFOopYy.cjs.map +1 -0
- package/Switch-D72dpkH2.js +183 -0
- package/Switch-D72dpkH2.js.map +1 -0
- package/Tab-BbP8jBcK.cjs +110 -0
- package/Tab-BbP8jBcK.cjs.map +1 -0
- package/Tab-BxSxKJsP.js +111 -0
- package/Tab-BxSxKJsP.js.map +1 -0
- package/Table-C2LbW0B1.js +531 -0
- package/Table-C2LbW0B1.js.map +1 -0
- package/Table-C4OM6rrC.cjs +530 -0
- package/Table-C4OM6rrC.cjs.map +1 -0
- package/components/ActionMenu/ActionMenu.cjs +52 -52
- package/components/ActionMenu/ActionMenu.cjs.map +1 -1
- package/components/ActionMenu/ActionMenu.d.ts +20 -36
- package/components/ActionMenu/ActionMenu.js +55 -55
- package/components/ActionMenu/ActionMenu.js.map +1 -1
- package/components/ActionMenu/index.d.ts +2 -2
- package/components/AppBar/AppBar.cjs +3 -220
- package/components/AppBar/AppBar.cjs.map +1 -1
- package/components/AppBar/AppBar.d.ts +6 -6
- package/components/AppBar/AppBar.js +6 -223
- package/components/AppBar/AppBar.js.map +1 -1
- package/components/AppBar/index.d.ts +0 -6
- package/components/Autocomplete/Autocomplete.cjs +4 -311
- package/components/Autocomplete/Autocomplete.cjs.map +1 -1
- package/components/Autocomplete/Autocomplete.d.ts +8 -6
- package/components/Autocomplete/Autocomplete.helpers.d.ts +8 -4
- package/components/Autocomplete/Autocomplete.js +4 -311
- package/components/Autocomplete/Autocomplete.js.map +1 -1
- package/components/Autocomplete/_parts/AutocompleteOption.d.ts +5 -8
- package/components/Autocomplete/index.d.ts +1 -1
- package/components/Avatar/Avatar.cjs +2 -160
- package/components/Avatar/Avatar.cjs.map +1 -1
- package/components/Avatar/Avatar.d.ts +16 -1
- package/components/Avatar/Avatar.js +2 -160
- package/components/Avatar/Avatar.js.map +1 -1
- package/components/Avatar/index.d.ts +1 -0
- package/components/Button/Button.d.ts +5 -5
- package/components/Button/index.d.ts +1 -0
- package/components/Card/Card.cjs +4 -184
- package/components/Card/Card.cjs.map +1 -1
- package/components/Card/Card.d.ts +21 -50
- package/components/Card/Card.js +4 -184
- package/components/Card/Card.js.map +1 -1
- package/components/Card/Card.sx.d.ts +3 -6
- package/components/Card/index.d.ts +1 -1
- package/components/Checkbox/Checkbox.cjs +6 -0
- package/components/Checkbox/Checkbox.cjs.map +1 -0
- package/components/Checkbox/Checkbox.d.ts +55 -0
- package/components/Checkbox/Checkbox.js +6 -0
- package/components/Checkbox/Checkbox.js.map +1 -0
- package/components/Checkbox/Checkbox.sx.d.ts +13 -0
- package/components/Checkbox/index.d.ts +2 -0
- package/components/Checkbox.d.ts +6 -0
- package/components/Chip/Chip.cjs +4 -72
- package/components/Chip/Chip.cjs.map +1 -1
- package/components/Chip/Chip.js +3 -71
- package/components/Chip/Chip.js.map +1 -1
- package/components/Chip/index.d.ts +2 -1
- package/components/Chip.d.ts +4 -0
- package/components/Column/Column.cjs +1 -1
- package/components/Column/Column.cjs.map +1 -1
- package/components/Column/Column.d.ts +1 -1
- package/components/Column/Column.js +1 -1
- package/components/Column/Column.js.map +1 -1
- package/components/Column/index.d.ts +1 -0
- package/components/DatePicker/DatePicker.cjs +3 -200
- package/components/DatePicker/DatePicker.cjs.map +1 -1
- package/components/DatePicker/DatePicker.d.ts +1 -13
- package/components/DatePicker/DatePicker.js +3 -200
- package/components/DatePicker/DatePicker.js.map +1 -1
- package/components/DatePicker/index.d.ts +1 -1
- package/components/DateTimePicker/DateTimePicker.cjs +3 -219
- package/components/DateTimePicker/DateTimePicker.cjs.map +1 -1
- package/components/DateTimePicker/DateTimePicker.d.ts +10 -6
- package/components/DateTimePicker/DateTimePicker.definitions.d.ts +2 -0
- package/components/DateTimePicker/DateTimePicker.helpers.d.ts +4 -2
- package/components/DateTimePicker/DateTimePicker.js +3 -219
- package/components/DateTimePicker/DateTimePicker.js.map +1 -1
- package/components/DateTimePicker/index.d.ts +1 -1
- package/components/Drawer/Drawer.cjs +25 -24
- package/components/Drawer/Drawer.cjs.map +1 -1
- package/components/Drawer/Drawer.d.ts +8 -1
- package/components/Drawer/Drawer.js +26 -25
- package/components/Drawer/Drawer.js.map +1 -1
- package/components/Drawer/DrawerItem.d.ts +6 -1
- package/components/Gallery/Gallery.cjs +154 -79
- package/components/Gallery/Gallery.cjs.map +1 -1
- package/components/Gallery/Gallery.d.ts +25 -9
- package/components/Gallery/Gallery.js +154 -79
- package/components/Gallery/Gallery.js.map +1 -1
- package/components/Gallery/GalleryLightbox.d.ts +6 -10
- package/components/Gallery/GalleryMain.d.ts +3 -7
- package/components/Gallery/GalleryThumbnails.d.ts +7 -11
- package/components/Gallery/index.d.ts +2 -1
- package/components/Gallery.d.ts +4 -0
- package/components/Icon/Icon.cjs +6 -8
- package/components/Icon/Icon.cjs.map +1 -1
- package/components/Icon/Icon.d.ts +11 -17
- package/components/Icon/Icon.js +6 -8
- package/components/Icon/Icon.js.map +1 -1
- package/components/Icon/index.d.ts +2 -1
- package/components/Icon.d.ts +4 -0
- package/components/Input/Input.cjs +3 -172
- package/components/Input/Input.cjs.map +1 -1
- package/components/Input/Input.d.ts +9 -2
- package/components/Input/Input.definitions.d.ts +1 -0
- package/components/Input/Input.helpers.d.ts +3 -3
- package/components/Input/Input.js +3 -172
- package/components/Input/Input.js.map +1 -1
- package/components/Input/index.d.ts +1 -1
- package/components/InputGroup/InputGroup.cjs +23 -22
- package/components/InputGroup/InputGroup.cjs.map +1 -1
- package/components/InputGroup/InputGroup.d.ts +4 -4
- package/components/InputGroup/InputGroup.js +22 -21
- package/components/InputGroup/InputGroup.js.map +1 -1
- package/components/InputGroup/index.d.ts +2 -1
- package/components/InputGroup.d.ts +4 -0
- package/components/Modal/Modal.cjs +7 -317
- package/components/Modal/Modal.cjs.map +1 -1
- package/components/Modal/Modal.d.ts +20 -5
- package/components/Modal/Modal.js +6 -316
- package/components/Modal/Modal.js.map +1 -1
- package/components/Modal/ModalBody.d.ts +6 -1
- package/components/Modal/ModalFooter.d.ts +4 -4
- package/components/Modal/ModalHeader.d.ts +6 -1
- package/components/Modal/index.d.ts +3 -1
- package/components/Modal.d.ts +4 -0
- package/components/RadioGroup/RadioGroup.cjs +6 -0
- package/components/RadioGroup/RadioGroup.cjs.map +1 -0
- package/components/RadioGroup/RadioGroup.d.ts +59 -0
- package/components/RadioGroup/RadioGroup.definitions.d.ts +6 -0
- package/components/RadioGroup/RadioGroup.js +6 -0
- package/components/RadioGroup/RadioGroup.js.map +1 -0
- package/components/RadioGroup/RadioGroup.sx.d.ts +20 -0
- package/components/RadioGroup/index.d.ts +2 -0
- package/components/RadioGroup.d.ts +6 -0
- package/components/Select/Select.cjs +4 -445
- package/components/Select/Select.cjs.map +1 -1
- package/components/Select/Select.d.ts +37 -18
- package/components/Select/Select.helpers.d.ts +5 -19
- package/components/Select/Select.js +4 -445
- package/components/Select/Select.js.map +1 -1
- package/components/Select/index.d.ts +1 -1
- package/components/Spinner/Spinner.cjs +6 -0
- package/components/Spinner/Spinner.cjs.map +1 -0
- package/components/Spinner/Spinner.d.ts +26 -0
- package/components/Spinner/Spinner.js +6 -0
- package/components/Spinner/Spinner.js.map +1 -0
- package/components/Spinner/index.d.ts +2 -0
- package/components/Spinner.d.ts +6 -0
- package/components/Stat/Stat.cjs +4 -83
- package/components/Stat/Stat.cjs.map +1 -1
- package/components/Stat/Stat.js +3 -82
- package/components/Stat/Stat.js.map +1 -1
- package/components/Stat/index.d.ts +2 -1
- package/components/Stat.d.ts +4 -0
- package/components/StatusMessage/StatusMessage.cjs +4 -77
- package/components/StatusMessage/StatusMessage.cjs.map +1 -1
- package/components/StatusMessage/StatusMessage.d.ts +20 -36
- package/components/StatusMessage/StatusMessage.js +3 -76
- package/components/StatusMessage/StatusMessage.js.map +1 -1
- package/components/StatusMessage/index.d.ts +2 -1
- package/components/StatusMessage.d.ts +4 -0
- package/components/Stepper/Stepper.cjs +8 -47
- package/components/Stepper/Stepper.cjs.map +1 -1
- package/components/Stepper/Stepper.d.ts +9 -8
- package/components/Stepper/Stepper.js +7 -46
- package/components/Stepper/Stepper.js.map +1 -1
- package/{hooks/Wizard/WizardContext.d.ts → components/Stepper/StepperContext.d.ts} +29 -23
- package/components/Stepper/_hooks/useHorizontalScroll.d.ts +19 -0
- package/components/Stepper/_parts/StepperScrollArrow.d.ts +19 -0
- package/components/Stepper/index.d.ts +6 -2
- package/components/Stepper.d.ts +4 -0
- package/components/Switch/Switch.cjs +6 -0
- package/components/Switch/Switch.cjs.map +1 -0
- package/components/Switch/Switch.d.ts +48 -0
- package/components/Switch/Switch.definitions.d.ts +7 -0
- package/components/Switch/Switch.js +6 -0
- package/components/Switch/Switch.js.map +1 -0
- package/components/Switch/Switch.sx.d.ts +22 -0
- package/components/Switch/Switch.types.d.ts +1 -0
- package/components/Switch/index.d.ts +2 -0
- package/components/Switch.d.ts +6 -0
- package/components/Table/Table.cjs +2 -528
- package/components/Table/Table.cjs.map +1 -1
- package/components/Table/Table.d.ts +1 -1
- package/components/Table/Table.js +2 -528
- package/components/Table/Table.js.map +1 -1
- package/components/Tabs/Tabs.cjs +5 -94
- package/components/Tabs/Tabs.cjs.map +1 -1
- package/components/Tabs/Tabs.d.ts +21 -16
- package/components/Tabs/Tabs.js +4 -93
- package/components/Tabs/Tabs.js.map +1 -1
- package/components/Tabs/index.d.ts +4 -2
- package/components/Tabs.d.ts +4 -0
- package/components/Timeline/Timeline.cjs +3 -2
- package/components/Timeline/Timeline.cjs.map +1 -1
- package/components/Timeline/Timeline.d.ts +4 -8
- package/components/Timeline/Timeline.js +3 -2
- package/components/Timeline/Timeline.js.map +1 -1
- package/components/Timeline/index.d.ts +4 -2
- package/components/Timeline.d.ts +4 -0
- package/components/_shared/mergeSx.d.ts +7 -0
- package/{formField.sx-DfVbMe0V.js → formField.sx-8_QRnKxv.js} +2 -11
- package/formField.sx-8_QRnKxv.js.map +1 -0
- package/{formField.sx-CQ1mbk9M.cjs → formField.sx-BAX7KwMR.cjs} +10 -19
- package/formField.sx-BAX7KwMR.cjs.map +1 -0
- package/index.cjs +94 -2
- package/index.cjs.map +1 -1
- package/index.d.ts +34 -0
- package/index.js +68 -3
- package/index.js.map +1 -1
- package/local/affiliations/affiliations.dev.soyfri.com-key.pem +28 -0
- package/local/affiliations/affiliations.dev.soyfri.com.pem +27 -0
- package/local/aficiliaciones/afiliaciones.dev.soyfri.com-key.pem +28 -0
- package/local/aficiliaciones/afiliaciones.dev.soyfri.com.pem +27 -0
- package/local/afiliaciones/afiliaciones.dev.soyfri.com-key.pem +28 -0
- package/local/afiliaciones/afiliaciones.dev.soyfri.com.pem +27 -0
- package/local/root/rootCA-key.pem +40 -0
- package/local/root/rootCA.pem +30 -0
- package/local/soporte/supportweb.dev.soyfri.com-key.pem +28 -0
- package/local/soporte/supportweb.dev.soyfri.com.pem +27 -0
- package/local/support/supportweb.dev.soyfri.com-key.pem +28 -0
- package/local/support/supportweb.dev.soyfri.com.pem +27 -0
- package/mergeSx-BXoNZjB_.js +10 -0
- package/mergeSx-BXoNZjB_.js.map +1 -0
- package/mergeSx-Dbccoo_H.cjs +9 -0
- package/mergeSx-Dbccoo_H.cjs.map +1 -0
- package/mui.d.ts +3 -1
- package/package.json +73 -73
- package/{resolvePreset-CT3kU-K2.cjs → resolvePreset-CxTI6_Ln.cjs} +3 -3
- package/{resolvePreset-CT3kU-K2.cjs.map → resolvePreset-CxTI6_Ln.cjs.map} +1 -1
- package/{resolvePreset-B-IB0ehH.js → resolvePreset-K6_BfWHD.js} +3 -3
- package/{resolvePreset-B-IB0ehH.js.map → resolvePreset-K6_BfWHD.js.map} +1 -1
- package/theme/componentStyles.d.ts +1 -1
- package/tokens-BRrcP_p_.js +21 -0
- package/tokens-BRrcP_p_.js.map +1 -0
- package/tokens-jaWWNk39.cjs +20 -0
- package/tokens-jaWWNk39.cjs.map +1 -0
- package/utils/index.d.ts +2 -0
- package/{components/ScrollTopButton → utils}/scrollToTop.d.ts +6 -7
- package/components/AppBar/AppBarBrand.d.ts +0 -31
- package/components/AppBar/AppBarUserMenu.d.ts +0 -65
- package/components/Autocomplete/Autocomplete.types.d.ts +0 -1
- package/components/DatePicker/DatePicker.types.d.ts +0 -1
- package/components/DateRangePicker/DateRangePicker.cjs.map +0 -1
- package/components/DateRangePicker/DateRangePicker.d.ts +0 -15
- package/components/DateRangePicker/DateRangePicker.definitions.d.ts +0 -6
- package/components/DateRangePicker/DateRangePicker.js.map +0 -1
- package/components/DateRangePicker/index.d.ts +0 -1
- package/components/DateRangePicker.d.ts +0 -2
- package/components/DateTimePicker/DateTimePicker.types.d.ts +0 -1
- package/components/Input/Input.types.d.ts +0 -1
- package/components/PageLoader/PageLoader.cjs +0 -61
- package/components/PageLoader/PageLoader.cjs.map +0 -1
- package/components/PageLoader/PageLoader.d.ts +0 -38
- package/components/PageLoader/PageLoader.js +0 -61
- package/components/PageLoader/PageLoader.js.map +0 -1
- package/components/PageLoader/index.d.ts +0 -2
- package/components/PageLoader.d.ts +0 -6
- package/components/ScrollTopButton/ScrollTopButton.cjs +0 -79
- package/components/ScrollTopButton/ScrollTopButton.cjs.map +0 -1
- package/components/ScrollTopButton/ScrollTopButton.d.ts +0 -48
- package/components/ScrollTopButton/ScrollTopButton.js +0 -79
- package/components/ScrollTopButton/ScrollTopButton.js.map +0 -1
- package/components/ScrollTopButton/index.d.ts +0 -4
- package/components/ScrollTopButton.d.ts +0 -6
- package/components/Select/Select.definitions.d.ts +0 -17
- package/components/Select/Select.types.d.ts +0 -1
- package/components/Select/_parts/SelectSearchHeader.d.ts +0 -15
- package/formField.sx-CQ1mbk9M.cjs.map +0 -1
- package/formField.sx-DfVbMe0V.js.map +0 -1
- package/hooks/Wizard/Wizard.cjs +0 -7
- package/hooks/Wizard/Wizard.cjs.map +0 -1
- package/hooks/Wizard/Wizard.js +0 -7
- package/hooks/Wizard/Wizard.js.map +0 -1
- package/hooks/Wizard/index.d.ts +0 -3
- package/hooks/Wizard/useWizard.d.ts +0 -9
- package/hooks/Wizard.d.ts +0 -2
- package/useWizard-CWdIxZzX.cjs +0 -94
- package/useWizard-CWdIxZzX.cjs.map +0 -1
- package/useWizard-CWq--C3o.js +0 -95
- package/useWizard-CWq--C3o.js.map +0 -1
- /package/{styles.css → index.css} +0 -0
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
import { ReactNode, MouseEvent } from 'react';
|
|
2
|
-
import { SxProps, Theme } from '@mui/material/styles';
|
|
3
|
-
export interface AppBarUserMenuItem {
|
|
4
|
-
/** Key única. Si no se provee, se usa el label. */
|
|
5
|
-
key?: string;
|
|
6
|
-
/** Texto del item. */
|
|
7
|
-
label: ReactNode;
|
|
8
|
-
/** Icono opcional a la izquierda. */
|
|
9
|
-
icon?: ReactNode;
|
|
10
|
-
/** Handler de click. */
|
|
11
|
-
onClick?: (event: MouseEvent<HTMLLIElement>) => void;
|
|
12
|
-
/** Deshabilita el item. */
|
|
13
|
-
disabled?: boolean;
|
|
14
|
-
/** Pinta el item en color error (típico para "Cerrar sesión"). */
|
|
15
|
-
danger?: boolean;
|
|
16
|
-
/** Inserta un `<Divider />` ANTES de este item. */
|
|
17
|
-
dividerBefore?: boolean;
|
|
18
|
-
}
|
|
19
|
-
export interface AppBarUserMenuUser {
|
|
20
|
-
/** Nombre a mostrar en el header del menú. */
|
|
21
|
-
name?: ReactNode;
|
|
22
|
-
/** Email / subtítulo secundario. */
|
|
23
|
-
email?: ReactNode;
|
|
24
|
-
/** URL del avatar. Si se omite, se muestran iniciales del `name`. */
|
|
25
|
-
avatarUrl?: string;
|
|
26
|
-
/** Iniciales custom. Si se omite, se calculan del `name`. */
|
|
27
|
-
initials?: string;
|
|
28
|
-
}
|
|
29
|
-
export interface AppBarUserMenuProps {
|
|
30
|
-
/** Datos del usuario a mostrar. */
|
|
31
|
-
user?: AppBarUserMenuUser;
|
|
32
|
-
/** Items del menú. */
|
|
33
|
-
items: AppBarUserMenuItem[];
|
|
34
|
-
/**
|
|
35
|
-
* Si `true`, oculta la fila con nombre + email en el tope del menú.
|
|
36
|
-
* Default: `false`.
|
|
37
|
-
*/
|
|
38
|
-
hideUserHeader?: boolean;
|
|
39
|
-
/** Tooltip del trigger. Default: "Cuenta". */
|
|
40
|
-
triggerTooltip?: string;
|
|
41
|
-
/** Tamaño del Avatar en px. Default: 36. */
|
|
42
|
-
avatarSize?: number;
|
|
43
|
-
/** sx del Paper del Menu. */
|
|
44
|
-
menuSx?: SxProps<Theme>;
|
|
45
|
-
/** sx del trigger (IconButton). */
|
|
46
|
-
triggerSx?: SxProps<Theme>;
|
|
47
|
-
className?: string;
|
|
48
|
-
}
|
|
49
|
-
/**
|
|
50
|
-
* Menú de usuario del AppBar: avatar clickable que despliega un menú con la
|
|
51
|
-
* info del usuario (nombre + email) y una lista de acciones (perfil, cerrar
|
|
52
|
-
* sesión, etc).
|
|
53
|
-
*
|
|
54
|
-
* ```tsx
|
|
55
|
-
* <AppBarUserMenu
|
|
56
|
-
* user={{ name: 'Andrea', email: 'a@soyfri.com' }}
|
|
57
|
-
* items={[
|
|
58
|
-
* { label: 'Perfil', icon: <PersonIcon />, onClick: goToProfile },
|
|
59
|
-
* { label: 'Cerrar sesión', icon: <LogoutIcon />, onClick: logout, danger: true, dividerBefore: true },
|
|
60
|
-
* ]}
|
|
61
|
-
* />
|
|
62
|
-
* ```
|
|
63
|
-
*/
|
|
64
|
-
export declare function AppBarUserMenu({ user, items, hideUserHeader, triggerTooltip, avatarSize, menuSx, triggerSx, className, }: AppBarUserMenuProps): import("react/jsx-runtime").JSX.Element;
|
|
65
|
-
export default AppBarUserMenu;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export type { SelectOption, LabelPosition, AutocompleteSize, RenderOptionItem, RenderChipLabel, BaseAutocompleteProps, ControlledAutocompleteProps, RHFAutocompleteProps, AutocompleteProps, } from './Autocomplete';
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export type { LabelPosition, DatePickerSize, BaseDatePickerProps, RHFDatePickerProps, ControlledDatePickerProps, DatePickerProps, } from './DatePicker';
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DateRangePicker.cjs","sources":["../../../src/components/DateRangePicker/DateRangePicker.tsx"],"sourcesContent":["import React from 'react';\nimport { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs';\nimport { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider';\nimport { DateRangePicker as MuiDateRangePicker } from '@mui/x-date-pickers-pro/DateRangePicker';\nimport { TextField } from '@mui/material';\nimport { Dayjs } from 'dayjs';\n\n// Define las props para el DateRangePicker\nexport interface DateRangePickerProps {\n label?: string;\n startDate: Dayjs | null;\n endDate: Dayjs | null;\n onDateRangeChange: (start: Dayjs | null, end: Dayjs | null) => void;\n minDate?: Dayjs;\n maxDate?: Dayjs;\n disabled?: boolean;\n readOnly?: boolean;\n slotProps?: any; // Para pasar slotProps a MuiDateRangePicker\n }\n \n export const DateRangePicker: React.FC<DateRangePickerProps> = ({\n label,\n startDate,\n endDate,\n onDateRangeChange,\n minDate,\n maxDate,\n disabled,\n readOnly,\n slotProps,\n ...rest\n }) => {\n const value: [Dayjs | null, Dayjs | null] = [startDate, endDate];\n \n const handleChange = (newValue: [Dayjs | null, Dayjs | null]) => {\n onDateRangeChange(newValue[0], newValue[1]);\n };\n \n return (\n <LocalizationProvider dateAdapter={AdapterDayjs}>\n <MuiDateRangePicker\n localeText={{ start: 'Fecha de Inicio', end: 'Fecha de Fin' }}\n value={value}\n onChange={handleChange}\n minDate={minDate}\n maxDate={maxDate}\n disabled={disabled}\n readOnly={readOnly}\n slotProps={slotProps} // Pasa los slotProps directamente\n {...rest}\n />\n </LocalizationProvider>\n );\n };\n\nexport default DateRangePicker"],"names":["jsx","LocalizationProvider","AdapterDayjs","MuiDateRangePicker"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoBS,MAAM,kBAAkD,CAAC,OAW1D;AAX0D,eAC9D;AAAA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,MAT8D,IAU3D,iBAV2D,IAU3D;AAAA,IATH;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAGA,QAAM,QAAsC,CAAC,WAAW,OAAO;AAE/D,QAAM,eAAe,CAAC,aAA2C;AAC/D,sBAAkB,SAAS,CAAC,GAAG,SAAS,CAAC,CAAC;AAAA,EAC5C;AAEA,SACEA,2BAAAA,IAACC,qBAAAA,sBAAA,EAAqB,aAAaC,aAAAA,cACjC,UAAAF,2BAAAA;AAAAA,IAACG,kBAAAA;AAAAA,IAAA;AAAA,MACC,YAAY,EAAE,OAAO,mBAAmB,KAAK,eAAA;AAAA,MAC7C;AAAA,MACA,UAAU;AAAA,MACV;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,OACI;AAAA,EAAA,GAER;AAEJ;;"}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { default as React } from 'react';
|
|
2
|
-
import { Dayjs } from 'dayjs';
|
|
3
|
-
export interface DateRangePickerProps {
|
|
4
|
-
label?: string;
|
|
5
|
-
startDate: Dayjs | null;
|
|
6
|
-
endDate: Dayjs | null;
|
|
7
|
-
onDateRangeChange: (start: Dayjs | null, end: Dayjs | null) => void;
|
|
8
|
-
minDate?: Dayjs;
|
|
9
|
-
maxDate?: Dayjs;
|
|
10
|
-
disabled?: boolean;
|
|
11
|
-
readOnly?: boolean;
|
|
12
|
-
slotProps?: any;
|
|
13
|
-
}
|
|
14
|
-
export declare const DateRangePicker: React.FC<DateRangePickerProps>;
|
|
15
|
-
export default DateRangePicker;
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
export declare const BasicDateRangePickerDefinition = "\nimport React, { useState } from 'react';\nimport { DateRangePicker } from './DateRangePicker'; // Ajusta la ruta si es necesario\nimport dayjs from 'dayjs';\nimport { Box, Typography } from '@mui/material';\n\nexport const BasicDateRangePickerExample = () => {\n const [startDate, setStartDate] = useState(dayjs('2023-01-01'));\n const [endDate, setEndDate] = useState(dayjs('2023-01-31'));\n\n const handleDateRangeChange = (start, end) => {\n setStartDate(start);\n setEndDate(end);\n };\n\n return (\n <Box sx={{ width: 400, display: 'flex', flexDirection: 'column', gap: 2 }}>\n <DateRangePicker\n label=\"Seleccionar Rango\"\n startDate={startDate}\n endDate={endDate}\n onDateRangeChange={handleDateRangeChange}\n />\n <Typography sx={{ mt: 2 }}>\n Inicio: {startDate ? startDate.format('YYYY-MM-DD') : 'N/A'} |\n Fin: {endDate ? endDate.format('YYYY-MM-DD') : 'N/A'}\n </Typography>\n </Box>\n );\n};\n";
|
|
2
|
-
export declare const DateRangePickerWithMinMaxDefinition = "\nimport React, { useState } from 'react';\nimport { DateRangePicker } from './DateRangePicker'; // Ajusta la ruta si es necesario\nimport dayjs from 'dayjs';\nimport { Box, Typography } from '@mui/material';\n\nexport const DateRangePickerWithMinMaxExample = () => {\n const [startDate, setStartDate] = useState(dayjs('2023-06-10'));\n const [endDate, setEndDate] = useState(dayjs('2023-06-20'));\n const minDate = dayjs('2023-06-01');\n const maxDate = dayjs('2023-06-30');\n\n const handleDateRangeChange = (start, end) => {\n setStartDate(start);\n setEndDate(end);\n };\n\n return (\n <Box sx={{ width: 400, display: 'flex', flexDirection: 'column', gap: 2 }}>\n <DateRangePicker\n label=\"Rango de Junio\"\n startDate={startDate}\n endDate={endDate}\n onDateRangeChange={handleDateRangeChange}\n minDate={minDate}\n maxDate={maxDate}\n />\n <Typography sx={{ mt: 2 }}>\n Inicio: {startDate ? startDate.format('YYYY-MM-DD') : 'N/A'} |\n Fin: {endDate ? endDate.format('YYYY-MM-DD') : 'N/A'}\n </Typography>\n <Typography variant=\"caption\" color=\"text.secondary\">\n (Rango permitido: ${minDate.format('YYYY-MM-DD')} a ${maxDate.format('YYYY-MM-DD')})\n </Typography>\n </Box>\n );\n};\n";
|
|
3
|
-
export declare const DateRangePickerDisabledDefinition = "\nimport React, { useState } from 'react';\nimport { DateRangePicker } from './DateRangePicker'; // Ajusta la ruta si es necesario\nimport dayjs from 'dayjs';\nimport { Box, Typography } from '@mui/material';\n\nexport const DateRangePickerDisabledExample = () => {\n const [startDate, setStartDate] = useState(dayjs('2023-01-01'));\n const [endDate, setEndDate] = useState(dayjs('2023-01-31'));\n\n return (\n <Box sx={{ width: 400, display: 'flex', flexDirection: 'column', gap: 2 }}>\n <DateRangePicker\n label=\"Rango Deshabilitado\"\n startDate={startDate}\n endDate={endDate}\n onDateRangeChange={() => {}}\n disabled\n />\n <Typography sx={{ mt: 2 }}>\n Inicio: {startDate ? startDate.format('YYYY-MM-DD') : 'N/A'} |\n Fin: {endDate ? endDate.format('YYYY-MM-DD') : 'N/A'}\n </Typography>\n </Box>\n );\n};\n";
|
|
4
|
-
export declare const DateRangePickerReadOnlyDefinition = "\nimport React, { useState } from 'react';\nimport { DateRangePicker } from './DateRangePicker'; // Ajusta la ruta si es necesario\nimport dayjs from 'dayjs';\nimport { Box, Typography } from '@mui/material';\n\nexport const DateRangePickerReadOnlyExample = () => {\n const [startDate, setStartDate] = useState(dayjs('2024-07-01'));\n const [endDate, setEndDate] = useState(dayjs('2024-07-15'));\n\n return (\n <Box sx={{ width: 400, display: 'flex', flexDirection: 'column', gap: 2 }}>\n <DateRangePicker\n label=\"Rango Solo Lectura\"\n startDate={startDate}\n endDate={endDate}\n onDateRangeChange={() => {}}\n readOnly\n />\n <Typography sx={{ mt: 2 }}>\n Inicio: {startDate ? startDate.format('YYYY-MM-DD') : 'N/A'} |\n Fin: {endDate ? endDate.format('YYYY-MM-DD') : 'N/A'}\n </Typography>\n </Box>\n );\n};\n";
|
|
5
|
-
export declare const DateRangePickerWithInitialNullDefinition = "\nimport React, { useState } from 'react';\nimport { DateRangePicker } from './DateRangePicker'; // Ajusta la ruta si es necesario\nimport dayjs from 'dayjs';\nimport { Box, Typography } from '@mui/material';\n\nexport const DateRangePickerWithInitialNullExample = () => {\n const [startDate, setStartDate] = useState(null);\n const [endDate, setEndDate] = useState(null);\n\n const handleDateRangeChange = (start, end) => {\n setStartDate(start);\n setEndDate(end);\n };\n\n return (\n <Box sx={{ width: 400, display: 'flex', flexDirection: 'column', gap: 2 }}>\n <DateRangePicker\n label=\"Rango Sin Selecci\u00F3n Inicial\"\n startDate={startDate}\n endDate={endDate}\n onDateRangeChange={handleDateRangeChange}\n />\n <Typography sx={{ mt: 2 }}>\n Inicio: {startDate ? startDate.format('YYYY-MM-DD') : 'N/A'} |\n Fin: {endDate ? endDate.format('YYYY-MM-DD') : 'N/A'}\n </Typography>\n </Box>\n );\n};\n";
|
|
6
|
-
export declare const DateRangePickerWithSizeDefinition = "\nimport React, { useState } from 'react';\nimport { DateRangePicker } from './DateRangePicker'; // Adjust path if necessary\nimport dayjs from 'dayjs';\nimport { Box, Typography } from '@mui/material';\n\nexport const DateRangePickerWithSizeExample = () => {\n const [startDate, setStartDate] = useState(dayjs('2023-01-01'));\n const [endDate, setEndDate] = useState(dayjs('2023-01-31'));\n\n const handleDateRangeChange = (start, end) => {\n setStartDate(start);\n setEndDate(end);\n };\n\n return (\n <Box sx={{ width: 400, display: 'flex', flexDirection: 'column', gap: 2 }}>\n <DateRangePicker\n label=\"Rango de Fechas (Tama\u00F1o Peque\u00F1o)\"\n startDate={startDate}\n endDate={endDate}\n onDateRangeChange={handleDateRangeChange}\n slotProps={{ textField: { size: 'small' } }}\n />\n <Typography sx={{ mt: 2 }}>\n Inicio: {startDate ? startDate.format('YYYY-MM-DD') : 'N/A'} |\n Fin: {endDate ? endDate.format('YYYY-MM-DD') : 'N/A'}\n </Typography>\n </Box>\n );\n};\n";
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DateRangePicker.js","sources":["../../../src/components/DateRangePicker/DateRangePicker.tsx"],"sourcesContent":["import React from 'react';\nimport { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs';\nimport { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider';\nimport { DateRangePicker as MuiDateRangePicker } from '@mui/x-date-pickers-pro/DateRangePicker';\nimport { TextField } from '@mui/material';\nimport { Dayjs } from 'dayjs';\n\n// Define las props para el DateRangePicker\nexport interface DateRangePickerProps {\n label?: string;\n startDate: Dayjs | null;\n endDate: Dayjs | null;\n onDateRangeChange: (start: Dayjs | null, end: Dayjs | null) => void;\n minDate?: Dayjs;\n maxDate?: Dayjs;\n disabled?: boolean;\n readOnly?: boolean;\n slotProps?: any; // Para pasar slotProps a MuiDateRangePicker\n }\n \n export const DateRangePicker: React.FC<DateRangePickerProps> = ({\n label,\n startDate,\n endDate,\n onDateRangeChange,\n minDate,\n maxDate,\n disabled,\n readOnly,\n slotProps,\n ...rest\n }) => {\n const value: [Dayjs | null, Dayjs | null] = [startDate, endDate];\n \n const handleChange = (newValue: [Dayjs | null, Dayjs | null]) => {\n onDateRangeChange(newValue[0], newValue[1]);\n };\n \n return (\n <LocalizationProvider dateAdapter={AdapterDayjs}>\n <MuiDateRangePicker\n localeText={{ start: 'Fecha de Inicio', end: 'Fecha de Fin' }}\n value={value}\n onChange={handleChange}\n minDate={minDate}\n maxDate={maxDate}\n disabled={disabled}\n readOnly={readOnly}\n slotProps={slotProps} // Pasa los slotProps directamente\n {...rest}\n />\n </LocalizationProvider>\n );\n };\n\nexport default DateRangePicker"],"names":["MuiDateRangePicker"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoBS,MAAM,kBAAkD,CAAC,OAW1D;AAX0D,eAC9D;AAAA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,MAT8D,IAU3D,iBAV2D,IAU3D;AAAA,IATH;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAGA,QAAM,QAAsC,CAAC,WAAW,OAAO;AAE/D,QAAM,eAAe,CAAC,aAA2C;AAC/D,sBAAkB,SAAS,CAAC,GAAG,SAAS,CAAC,CAAC;AAAA,EAC5C;AAEA,SACE,oBAAC,sBAAA,EAAqB,aAAa,cACjC,UAAA;AAAA,IAACA;AAAAA,IAAA;AAAA,MACC,YAAY,EAAE,OAAO,mBAAmB,KAAK,eAAA;AAAA,MAC7C;AAAA,MACA,UAAU;AAAA,MACV;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,OACI;AAAA,EAAA,GAER;AAEJ;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { default as DateRangePicker } from './DateRangePicker';
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export type { LabelPosition, DateTimePickerSize, BaseDateTimePickerProps, RHFDateTimePickerProps, ControlledDateTimePickerProps, DateTimePickerProps, } from './DateTimePicker';
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export type { InputType, LabelPosition, BaseInputProps, RHFInputProps, ControlledInputProps, InputProps, } from './Input';
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
4
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
-
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
6
|
-
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
7
|
-
var __spreadValues = (a, b) => {
|
|
8
|
-
for (var prop in b || (b = {}))
|
|
9
|
-
if (__hasOwnProp.call(b, prop))
|
|
10
|
-
__defNormalProp(a, prop, b[prop]);
|
|
11
|
-
if (__getOwnPropSymbols)
|
|
12
|
-
for (var prop of __getOwnPropSymbols(b)) {
|
|
13
|
-
if (__propIsEnum.call(b, prop))
|
|
14
|
-
__defNormalProp(a, prop, b[prop]);
|
|
15
|
-
}
|
|
16
|
-
return a;
|
|
17
|
-
};
|
|
18
|
-
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
|
|
19
|
-
const jsxRuntime = require("react/jsx-runtime");
|
|
20
|
-
const material = require("@mui/material");
|
|
21
|
-
function PageLoader({
|
|
22
|
-
fullscreen = true,
|
|
23
|
-
message,
|
|
24
|
-
logo,
|
|
25
|
-
size = 48,
|
|
26
|
-
open = true,
|
|
27
|
-
backdropColor,
|
|
28
|
-
sx,
|
|
29
|
-
className
|
|
30
|
-
}) {
|
|
31
|
-
const rootSx = [
|
|
32
|
-
(theme) => __spreadValues({
|
|
33
|
-
display: "flex",
|
|
34
|
-
flexDirection: "column",
|
|
35
|
-
alignItems: "center",
|
|
36
|
-
justifyContent: "center",
|
|
37
|
-
gap: 2
|
|
38
|
-
}, fullscreen ? {
|
|
39
|
-
position: "fixed",
|
|
40
|
-
inset: 0,
|
|
41
|
-
zIndex: theme.zIndex.modal + 10,
|
|
42
|
-
backgroundColor: backdropColor != null ? backdropColor : theme.palette.background.default
|
|
43
|
-
} : {
|
|
44
|
-
width: "100%",
|
|
45
|
-
minHeight: 160
|
|
46
|
-
}),
|
|
47
|
-
...Array.isArray(sx) ? sx : sx ? [sx] : []
|
|
48
|
-
];
|
|
49
|
-
const content = /* @__PURE__ */ jsxRuntime.jsxs(material.Box, { className, sx: rootSx, role: "status", "aria-live": "polite", children: [
|
|
50
|
-
logo && /* @__PURE__ */ jsxRuntime.jsx(material.Box, { sx: { mb: 1 }, children: logo }),
|
|
51
|
-
/* @__PURE__ */ jsxRuntime.jsx(material.CircularProgress, { size, thickness: 4 }),
|
|
52
|
-
message && /* @__PURE__ */ jsxRuntime.jsx(material.Typography, { variant: "body2", color: "text.secondary", children: message })
|
|
53
|
-
] });
|
|
54
|
-
if (!fullscreen) {
|
|
55
|
-
return open ? content : null;
|
|
56
|
-
}
|
|
57
|
-
return /* @__PURE__ */ jsxRuntime.jsx(material.Fade, { in: open, timeout: { enter: 0, exit: 200 }, unmountOnExit: true, children: content });
|
|
58
|
-
}
|
|
59
|
-
exports.PageLoader = PageLoader;
|
|
60
|
-
exports.default = PageLoader;
|
|
61
|
-
//# sourceMappingURL=PageLoader.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"PageLoader.cjs","sources":["../../../src/components/PageLoader/PageLoader.tsx"],"sourcesContent":["import React, { type ReactNode } from 'react';\nimport { Box, CircularProgress, Typography, Fade } from '@mui/material';\nimport type { SxProps, Theme } from '@mui/material/styles';\n\nexport interface PageLoaderProps {\n /**\n * Si es true, muestra el loader ocupando toda la ventana (fixed, 100vh/vw)\n * con backdrop. Default: true.\n */\n fullscreen?: boolean;\n /** Texto bajo el spinner. */\n message?: ReactNode;\n /** Logo/imagen opcional arriba del spinner. */\n logo?: ReactNode;\n /** Tamaño del spinner en px. Default: 48. */\n size?: number;\n /**\n * Control explícito. Si es undefined, el loader se muestra apenas se monta.\n * Útil para fades.\n */\n open?: boolean;\n /** Color del backdrop (solo fullscreen). Default: usa theme.palette.background.default. */\n backdropColor?: string;\n /** sx del root. */\n sx?: SxProps<Theme>;\n className?: string;\n}\n\n/**\n * Loader full-page o inline. Reemplaza el `LayoutSplashScreen` de Metronic.\n *\n * ```tsx\n * // Splash de arranque\n * <PageLoader logo={<img src={logo} />} message=\"Cargando...\" />\n *\n * // Loader local dentro de una card\n * <PageLoader fullscreen={false} size={32} />\n * ```\n */\nexport function PageLoader({\n fullscreen = true,\n message,\n logo,\n size = 48,\n open = true,\n backdropColor,\n sx,\n className,\n}: PageLoaderProps) {\n const rootSx: SxProps<Theme> = [\n (theme) => ({\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n gap: 2,\n ...(fullscreen\n ? {\n position: 'fixed',\n inset: 0,\n zIndex: theme.zIndex.modal + 10,\n backgroundColor:\n backdropColor ?? theme.palette.background.default,\n }\n : {\n width: '100%',\n minHeight: 160,\n }),\n }),\n ...(Array.isArray(sx) ? sx : sx ? [sx] : []),\n ];\n\n const content = (\n <Box className={className} sx={rootSx} role=\"status\" aria-live=\"polite\">\n {logo && <Box sx={{ mb: 1 }}>{logo}</Box>}\n <CircularProgress size={size} thickness={4} />\n {message && (\n <Typography variant=\"body2\" color=\"text.secondary\">\n {message}\n </Typography>\n )}\n </Box>\n );\n\n if (!fullscreen) {\n return open ? content : null;\n }\n\n return (\n <Fade in={open} timeout={{ enter: 0, exit: 200 }} unmountOnExit>\n {content}\n </Fade>\n );\n}\n\nexport default PageLoader;\n"],"names":["Box","jsx","CircularProgress","Typography","Fade"],"mappings":";;;;;;;;;;;;;;;;;;;;AAuCO,SAAS,WAAW;AAAA,EACzB,aAAa;AAAA,EACb;AAAA,EACA;AAAA,EACA,OAAO;AAAA,EACP,OAAO;AAAA,EACP;AAAA,EACA;AAAA,EACA;AACF,GAAoB;AAClB,QAAM,SAAyB;AAAA,IAC7B,CAAC,UAAW;AAAA,MACV,SAAS;AAAA,MACT,eAAe;AAAA,MACf,YAAY;AAAA,MACZ,gBAAgB;AAAA,MAChB,KAAK;AAAA,OACD,aACA;AAAA,MACE,UAAU;AAAA,MACV,OAAO;AAAA,MACP,QAAQ,MAAM,OAAO,QAAQ;AAAA,MAC7B,iBACE,wCAAiB,MAAM,QAAQ,WAAW;AAAA,IAAA,IAE9C;AAAA,MACE,OAAO;AAAA,MACP,WAAW;AAAA,IAAA;AAAA,IAGnB,GAAI,MAAM,QAAQ,EAAE,IAAI,KAAK,KAAK,CAAC,EAAE,IAAI,CAAA;AAAA,EAAC;AAG5C,QAAM,0CACHA,SAAAA,KAAA,EAAI,WAAsB,IAAI,QAAQ,MAAK,UAAS,aAAU,UAC5D,UAAA;AAAA,IAAA,uCAASA,SAAAA,KAAA,EAAI,IAAI,EAAE,IAAI,EAAA,GAAM,UAAA,MAAK;AAAA,IACnCC,2BAAAA,IAACC,SAAAA,kBAAA,EAAiB,MAAY,WAAW,EAAA,CAAG;AAAA,IAC3C,WACCD,2BAAAA,IAACE,SAAAA,YAAA,EAAW,SAAQ,SAAQ,OAAM,kBAC/B,UAAA,QAAA,CACH;AAAA,EAAA,GAEJ;AAGF,MAAI,CAAC,YAAY;AACf,WAAO,OAAO,UAAU;AAAA,EAC1B;AAEA,SACEF,2BAAAA,IAACG,SAAAA,MAAA,EAAK,IAAI,MAAM,SAAS,EAAE,OAAO,GAAG,MAAM,IAAA,GAAO,eAAa,MAC5D,UAAA,SACH;AAEJ;;;"}
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import { ReactNode } from 'react';
|
|
2
|
-
import { SxProps, Theme } from '@mui/material/styles';
|
|
3
|
-
export interface PageLoaderProps {
|
|
4
|
-
/**
|
|
5
|
-
* Si es true, muestra el loader ocupando toda la ventana (fixed, 100vh/vw)
|
|
6
|
-
* con backdrop. Default: true.
|
|
7
|
-
*/
|
|
8
|
-
fullscreen?: boolean;
|
|
9
|
-
/** Texto bajo el spinner. */
|
|
10
|
-
message?: ReactNode;
|
|
11
|
-
/** Logo/imagen opcional arriba del spinner. */
|
|
12
|
-
logo?: ReactNode;
|
|
13
|
-
/** Tamaño del spinner en px. Default: 48. */
|
|
14
|
-
size?: number;
|
|
15
|
-
/**
|
|
16
|
-
* Control explícito. Si es undefined, el loader se muestra apenas se monta.
|
|
17
|
-
* Útil para fades.
|
|
18
|
-
*/
|
|
19
|
-
open?: boolean;
|
|
20
|
-
/** Color del backdrop (solo fullscreen). Default: usa theme.palette.background.default. */
|
|
21
|
-
backdropColor?: string;
|
|
22
|
-
/** sx del root. */
|
|
23
|
-
sx?: SxProps<Theme>;
|
|
24
|
-
className?: string;
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* Loader full-page o inline. Reemplaza el `LayoutSplashScreen` de Metronic.
|
|
28
|
-
*
|
|
29
|
-
* ```tsx
|
|
30
|
-
* // Splash de arranque
|
|
31
|
-
* <PageLoader logo={<img src={logo} />} message="Cargando..." />
|
|
32
|
-
*
|
|
33
|
-
* // Loader local dentro de una card
|
|
34
|
-
* <PageLoader fullscreen={false} size={32} />
|
|
35
|
-
* ```
|
|
36
|
-
*/
|
|
37
|
-
export declare function PageLoader({ fullscreen, message, logo, size, open, backdropColor, sx, className, }: PageLoaderProps): import("react/jsx-runtime").JSX.Element | null;
|
|
38
|
-
export default PageLoader;
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
var __defProp = Object.defineProperty;
|
|
2
|
-
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
3
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
4
|
-
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
5
|
-
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
6
|
-
var __spreadValues = (a, b) => {
|
|
7
|
-
for (var prop in b || (b = {}))
|
|
8
|
-
if (__hasOwnProp.call(b, prop))
|
|
9
|
-
__defNormalProp(a, prop, b[prop]);
|
|
10
|
-
if (__getOwnPropSymbols)
|
|
11
|
-
for (var prop of __getOwnPropSymbols(b)) {
|
|
12
|
-
if (__propIsEnum.call(b, prop))
|
|
13
|
-
__defNormalProp(a, prop, b[prop]);
|
|
14
|
-
}
|
|
15
|
-
return a;
|
|
16
|
-
};
|
|
17
|
-
import { jsxs, jsx } from "react/jsx-runtime";
|
|
18
|
-
import { Fade, Box, CircularProgress, Typography } from "@mui/material";
|
|
19
|
-
function PageLoader({
|
|
20
|
-
fullscreen = true,
|
|
21
|
-
message,
|
|
22
|
-
logo,
|
|
23
|
-
size = 48,
|
|
24
|
-
open = true,
|
|
25
|
-
backdropColor,
|
|
26
|
-
sx,
|
|
27
|
-
className
|
|
28
|
-
}) {
|
|
29
|
-
const rootSx = [
|
|
30
|
-
(theme) => __spreadValues({
|
|
31
|
-
display: "flex",
|
|
32
|
-
flexDirection: "column",
|
|
33
|
-
alignItems: "center",
|
|
34
|
-
justifyContent: "center",
|
|
35
|
-
gap: 2
|
|
36
|
-
}, fullscreen ? {
|
|
37
|
-
position: "fixed",
|
|
38
|
-
inset: 0,
|
|
39
|
-
zIndex: theme.zIndex.modal + 10,
|
|
40
|
-
backgroundColor: backdropColor != null ? backdropColor : theme.palette.background.default
|
|
41
|
-
} : {
|
|
42
|
-
width: "100%",
|
|
43
|
-
minHeight: 160
|
|
44
|
-
}),
|
|
45
|
-
...Array.isArray(sx) ? sx : sx ? [sx] : []
|
|
46
|
-
];
|
|
47
|
-
const content = /* @__PURE__ */ jsxs(Box, { className, sx: rootSx, role: "status", "aria-live": "polite", children: [
|
|
48
|
-
logo && /* @__PURE__ */ jsx(Box, { sx: { mb: 1 }, children: logo }),
|
|
49
|
-
/* @__PURE__ */ jsx(CircularProgress, { size, thickness: 4 }),
|
|
50
|
-
message && /* @__PURE__ */ jsx(Typography, { variant: "body2", color: "text.secondary", children: message })
|
|
51
|
-
] });
|
|
52
|
-
if (!fullscreen) {
|
|
53
|
-
return open ? content : null;
|
|
54
|
-
}
|
|
55
|
-
return /* @__PURE__ */ jsx(Fade, { in: open, timeout: { enter: 0, exit: 200 }, unmountOnExit: true, children: content });
|
|
56
|
-
}
|
|
57
|
-
export {
|
|
58
|
-
PageLoader,
|
|
59
|
-
PageLoader as default
|
|
60
|
-
};
|
|
61
|
-
//# sourceMappingURL=PageLoader.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"PageLoader.js","sources":["../../../src/components/PageLoader/PageLoader.tsx"],"sourcesContent":["import React, { type ReactNode } from 'react';\nimport { Box, CircularProgress, Typography, Fade } from '@mui/material';\nimport type { SxProps, Theme } from '@mui/material/styles';\n\nexport interface PageLoaderProps {\n /**\n * Si es true, muestra el loader ocupando toda la ventana (fixed, 100vh/vw)\n * con backdrop. Default: true.\n */\n fullscreen?: boolean;\n /** Texto bajo el spinner. */\n message?: ReactNode;\n /** Logo/imagen opcional arriba del spinner. */\n logo?: ReactNode;\n /** Tamaño del spinner en px. Default: 48. */\n size?: number;\n /**\n * Control explícito. Si es undefined, el loader se muestra apenas se monta.\n * Útil para fades.\n */\n open?: boolean;\n /** Color del backdrop (solo fullscreen). Default: usa theme.palette.background.default. */\n backdropColor?: string;\n /** sx del root. */\n sx?: SxProps<Theme>;\n className?: string;\n}\n\n/**\n * Loader full-page o inline. Reemplaza el `LayoutSplashScreen` de Metronic.\n *\n * ```tsx\n * // Splash de arranque\n * <PageLoader logo={<img src={logo} />} message=\"Cargando...\" />\n *\n * // Loader local dentro de una card\n * <PageLoader fullscreen={false} size={32} />\n * ```\n */\nexport function PageLoader({\n fullscreen = true,\n message,\n logo,\n size = 48,\n open = true,\n backdropColor,\n sx,\n className,\n}: PageLoaderProps) {\n const rootSx: SxProps<Theme> = [\n (theme) => ({\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n gap: 2,\n ...(fullscreen\n ? {\n position: 'fixed',\n inset: 0,\n zIndex: theme.zIndex.modal + 10,\n backgroundColor:\n backdropColor ?? theme.palette.background.default,\n }\n : {\n width: '100%',\n minHeight: 160,\n }),\n }),\n ...(Array.isArray(sx) ? sx : sx ? [sx] : []),\n ];\n\n const content = (\n <Box className={className} sx={rootSx} role=\"status\" aria-live=\"polite\">\n {logo && <Box sx={{ mb: 1 }}>{logo}</Box>}\n <CircularProgress size={size} thickness={4} />\n {message && (\n <Typography variant=\"body2\" color=\"text.secondary\">\n {message}\n </Typography>\n )}\n </Box>\n );\n\n if (!fullscreen) {\n return open ? content : null;\n }\n\n return (\n <Fade in={open} timeout={{ enter: 0, exit: 200 }} unmountOnExit>\n {content}\n </Fade>\n );\n}\n\nexport default PageLoader;\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAuCO,SAAS,WAAW;AAAA,EACzB,aAAa;AAAA,EACb;AAAA,EACA;AAAA,EACA,OAAO;AAAA,EACP,OAAO;AAAA,EACP;AAAA,EACA;AAAA,EACA;AACF,GAAoB;AAClB,QAAM,SAAyB;AAAA,IAC7B,CAAC,UAAW;AAAA,MACV,SAAS;AAAA,MACT,eAAe;AAAA,MACf,YAAY;AAAA,MACZ,gBAAgB;AAAA,MAChB,KAAK;AAAA,OACD,aACA;AAAA,MACE,UAAU;AAAA,MACV,OAAO;AAAA,MACP,QAAQ,MAAM,OAAO,QAAQ;AAAA,MAC7B,iBACE,wCAAiB,MAAM,QAAQ,WAAW;AAAA,IAAA,IAE9C;AAAA,MACE,OAAO;AAAA,MACP,WAAW;AAAA,IAAA;AAAA,IAGnB,GAAI,MAAM,QAAQ,EAAE,IAAI,KAAK,KAAK,CAAC,EAAE,IAAI,CAAA;AAAA,EAAC;AAG5C,QAAM,+BACH,KAAA,EAAI,WAAsB,IAAI,QAAQ,MAAK,UAAS,aAAU,UAC5D,UAAA;AAAA,IAAA,4BAAS,KAAA,EAAI,IAAI,EAAE,IAAI,EAAA,GAAM,UAAA,MAAK;AAAA,IACnC,oBAAC,kBAAA,EAAiB,MAAY,WAAW,EAAA,CAAG;AAAA,IAC3C,WACC,oBAAC,YAAA,EAAW,SAAQ,SAAQ,OAAM,kBAC/B,UAAA,QAAA,CACH;AAAA,EAAA,GAEJ;AAGF,MAAI,CAAC,YAAY;AACf,WAAO,OAAO,UAAU;AAAA,EAC1B;AAEA,SACE,oBAAC,MAAA,EAAK,IAAI,MAAM,SAAS,EAAE,OAAO,GAAG,MAAM,IAAA,GAAO,eAAa,MAC5D,UAAA,SACH;AAEJ;"}
|
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
|
|
3
|
-
const jsxRuntime = require("react/jsx-runtime");
|
|
4
|
-
const React = require("react");
|
|
5
|
-
const material = require("@mui/material");
|
|
6
|
-
const KeyboardArrowUpIcon = require("@mui/icons-material/KeyboardArrowUp");
|
|
7
|
-
const resolvePreset = require("../../resolvePreset-CT3kU-K2.cjs");
|
|
8
|
-
function scrollToTop({
|
|
9
|
-
behavior = "smooth",
|
|
10
|
-
target = typeof window !== "undefined" ? window : void 0,
|
|
11
|
-
top = 0
|
|
12
|
-
} = {}) {
|
|
13
|
-
if (!target) return;
|
|
14
|
-
target.scrollTo({ top, left: 0, behavior });
|
|
15
|
-
}
|
|
16
|
-
const positionSx = {
|
|
17
|
-
"bottom-right": { position: "fixed", bottom: 24, right: 24 },
|
|
18
|
-
"bottom-left": { position: "fixed", bottom: 24, left: 24 },
|
|
19
|
-
"bottom-center": {
|
|
20
|
-
position: "fixed",
|
|
21
|
-
bottom: 24,
|
|
22
|
-
left: "50%",
|
|
23
|
-
transform: "translateX(-50%)"
|
|
24
|
-
}
|
|
25
|
-
};
|
|
26
|
-
function ScrollTopButton({
|
|
27
|
-
threshold = 300,
|
|
28
|
-
position = "bottom-right",
|
|
29
|
-
scrollTarget,
|
|
30
|
-
size = "medium",
|
|
31
|
-
color = "default",
|
|
32
|
-
icon,
|
|
33
|
-
ariaLabel = "Subir al inicio",
|
|
34
|
-
preset,
|
|
35
|
-
sx,
|
|
36
|
-
className
|
|
37
|
-
}) {
|
|
38
|
-
const theme = material.useTheme();
|
|
39
|
-
const [visible, setVisible] = React.useState(false);
|
|
40
|
-
React.useEffect(() => {
|
|
41
|
-
const target = scrollTarget != null ? scrollTarget : typeof window !== "undefined" ? window : null;
|
|
42
|
-
if (!target) return;
|
|
43
|
-
const readScrollTop = () => target === window ? window.scrollY || document.documentElement.scrollTop : target.scrollTop;
|
|
44
|
-
const handleScroll = () => {
|
|
45
|
-
setVisible(readScrollTop() > threshold);
|
|
46
|
-
};
|
|
47
|
-
handleScroll();
|
|
48
|
-
target.addEventListener("scroll", handleScroll, { passive: true });
|
|
49
|
-
return () => target.removeEventListener("scroll", handleScroll);
|
|
50
|
-
}, [threshold, scrollTarget]);
|
|
51
|
-
const handleClick = () => {
|
|
52
|
-
scrollToTop({
|
|
53
|
-
target: scrollTarget != null ? scrollTarget : typeof window !== "undefined" ? window : void 0
|
|
54
|
-
});
|
|
55
|
-
};
|
|
56
|
-
const presetSx = resolvePreset.resolvePreset("ScrollTopButton", preset, theme);
|
|
57
|
-
const mergedSx = [
|
|
58
|
-
positionSx[position],
|
|
59
|
-
{ zIndex: theme.zIndex.speedDial },
|
|
60
|
-
...presetSx ? [presetSx] : [],
|
|
61
|
-
...Array.isArray(sx) ? sx : sx ? [sx] : []
|
|
62
|
-
];
|
|
63
|
-
return /* @__PURE__ */ jsxRuntime.jsx(material.Zoom, { in: visible, unmountOnExit: true, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
64
|
-
material.Fab,
|
|
65
|
-
{
|
|
66
|
-
size,
|
|
67
|
-
color,
|
|
68
|
-
"aria-label": ariaLabel,
|
|
69
|
-
onClick: handleClick,
|
|
70
|
-
className,
|
|
71
|
-
sx: mergedSx,
|
|
72
|
-
children: icon != null ? icon : /* @__PURE__ */ jsxRuntime.jsx(KeyboardArrowUpIcon, {})
|
|
73
|
-
}
|
|
74
|
-
) });
|
|
75
|
-
}
|
|
76
|
-
exports.ScrollTopButton = ScrollTopButton;
|
|
77
|
-
exports.default = ScrollTopButton;
|
|
78
|
-
exports.scrollToTop = scrollToTop;
|
|
79
|
-
//# sourceMappingURL=ScrollTopButton.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ScrollTopButton.cjs","sources":["../../../src/components/ScrollTopButton/scrollToTop.ts","../../../src/components/ScrollTopButton/ScrollTopButton.tsx"],"sourcesContent":["export interface ScrollToTopOptions {\n /** Comportamiento del scroll. Default: `'smooth'`. */\n behavior?: ScrollBehavior;\n /**\n * Elemento target del scroll. Default: `window`. Útil cuando el contenedor\n * scrolleable NO es `window` (p.ej. un `<Box>` con `overflow: auto`).\n */\n target?: Window | HTMLElement;\n /** Offset desde el top. Default: `0`. */\n top?: number;\n}\n\n/**\n * Reemplaza imperativamente a `ScrollTopComponent.goTop()` de Metronic.\n *\n * Llamar tras mutaciones / cambios de filtros / apertura de modales para\n * asegurar que el usuario vea el mensaje de confirmación en la parte\n * superior de la página.\n *\n * ```ts\n * // Reemplazo directo del legacy:\n * // Antes: ScrollTopComponent.goTop()\n * scrollToTop();\n *\n * // Con opciones:\n * scrollToTop({ behavior: 'auto' });\n * scrollToTop({ target: myScrollableRef.current });\n * ```\n */\nexport function scrollToTop({\n behavior = 'smooth',\n target = typeof window !== 'undefined' ? window : undefined,\n top = 0,\n}: ScrollToTopOptions = {}): void {\n if (!target) return;\n target.scrollTo({ top, left: 0, behavior });\n}\n","import React, { useEffect, useState, type ReactNode } from 'react';\nimport { Fab, Zoom, useTheme } from '@mui/material';\nimport KeyboardArrowUpIcon from '@mui/icons-material/KeyboardArrowUp';\nimport type { SxProps, Theme } from '@mui/material/styles';\n\nimport { resolvePreset } from '../_shared/resolvePreset';\nimport { scrollToTop } from './scrollToTop';\n\nexport type ScrollTopButtonPosition =\n | 'bottom-right'\n | 'bottom-left'\n | 'bottom-center';\n\nexport interface ScrollTopButtonProps {\n /**\n * Distancia en px que hay que scrollear antes de mostrar el botón.\n * Default: `300`.\n */\n threshold?: number;\n /**\n * Posición del botón en la pantalla. Default: `'bottom-right'`.\n */\n position?: ScrollTopButtonPosition;\n /**\n * Elemento scrolleable a observar y al que se hace scrollTop. Si se omite,\n * se usa `window` (caso más común).\n */\n scrollTarget?: Window | HTMLElement | null;\n /** Tamaño del FAB. Default: `'medium'`. */\n size?: 'small' | 'medium' | 'large';\n /**\n * Color del FAB. Default: `'default'`.\n */\n color?: 'default' | 'primary' | 'secondary' | 'success' | 'warning' | 'error';\n /** Icono custom. Default: `<KeyboardArrowUpIcon />`. */\n icon?: ReactNode;\n /** Texto accesible (aria-label). Default: `\"Subir al inicio\"`. */\n ariaLabel?: string;\n /** Preset registrado en `theme.styles.ScrollTopButton`. */\n preset?: string;\n /** sx del Fab. Se compone sobre la posición + preset. */\n sx?: SxProps<Theme>;\n className?: string;\n}\n\nconst positionSx: Record<ScrollTopButtonPosition, SxProps<Theme>> = {\n 'bottom-right': { position: 'fixed', bottom: 24, right: 24 },\n 'bottom-left': { position: 'fixed', bottom: 24, left: 24 },\n 'bottom-center': {\n position: 'fixed',\n bottom: 24,\n left: '50%',\n transform: 'translateX(-50%)',\n },\n};\n\n/**\n * Botón flotante que aparece tras scrollear más de `threshold` px y, al\n * clickearse, hace scroll suave hasta el tope. Reemplaza al componente\n * visible de `ScrollTopComponent` de Metronic.\n *\n * Para el caso imperativo (llamar `goTop()` tras una mutación), usar el\n * helper `scrollToTop()` directamente.\n *\n * ```tsx\n * <ScrollTopButton threshold={400} position=\"bottom-right\" />\n * ```\n */\nexport function ScrollTopButton({\n threshold = 300,\n position = 'bottom-right',\n scrollTarget,\n size = 'medium',\n color = 'default',\n icon,\n ariaLabel = 'Subir al inicio',\n preset,\n sx,\n className,\n}: ScrollTopButtonProps) {\n const theme = useTheme();\n const [visible, setVisible] = useState(false);\n\n useEffect(() => {\n // Si viene scrollTarget explícito, usarlo; si no, window.\n const target: Window | HTMLElement | null =\n scrollTarget ?? (typeof window !== 'undefined' ? window : null);\n if (!target) return;\n\n const readScrollTop = () =>\n target === window\n ? window.scrollY || document.documentElement.scrollTop\n : (target as HTMLElement).scrollTop;\n\n const handleScroll = () => {\n setVisible(readScrollTop() > threshold);\n };\n\n handleScroll(); // check inicial por si ya estamos scrolleados\n target.addEventListener('scroll', handleScroll, { passive: true });\n return () => target.removeEventListener('scroll', handleScroll);\n }, [threshold, scrollTarget]);\n\n const handleClick = () => {\n scrollToTop({\n target: scrollTarget ?? (typeof window !== 'undefined' ? window : undefined),\n });\n };\n\n const presetSx = resolvePreset('ScrollTopButton', preset, theme);\n\n const mergedSx: SxProps<Theme> = [\n positionSx[position],\n { zIndex: theme.zIndex.speedDial },\n ...(presetSx ? [presetSx] : []),\n ...(Array.isArray(sx) ? sx : sx ? [sx] : []),\n ];\n\n return (\n <Zoom in={visible} unmountOnExit>\n <Fab\n size={size}\n color={color}\n aria-label={ariaLabel}\n onClick={handleClick}\n className={className}\n sx={mergedSx}\n >\n {icon ?? <KeyboardArrowUpIcon />}\n </Fab>\n </Zoom>\n );\n}\n\nexport default ScrollTopButton;\n"],"names":["useTheme","useState","useEffect","resolvePreset","jsx","Zoom","Fab"],"mappings":";;;;;;;AA6BO,SAAS,YAAY;AAAA,EAC1B,WAAW;AAAA,EACX,SAAS,OAAO,WAAW,cAAc,SAAS;AAAA,EAClD,MAAM;AACR,IAAwB,IAAU;AAChC,MAAI,CAAC,OAAQ;AACb,SAAO,SAAS,EAAE,KAAK,MAAM,GAAG,UAAU;AAC5C;ACSA,MAAM,aAA8D;AAAA,EAClE,gBAAgB,EAAE,UAAU,SAAS,QAAQ,IAAI,OAAO,GAAA;AAAA,EACxD,eAAe,EAAE,UAAU,SAAS,QAAQ,IAAI,MAAM,GAAA;AAAA,EACtD,iBAAiB;AAAA,IACf,UAAU;AAAA,IACV,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,WAAW;AAAA,EAAA;AAEf;AAcO,SAAS,gBAAgB;AAAA,EAC9B,YAAY;AAAA,EACZ,WAAW;AAAA,EACX;AAAA,EACA,OAAO;AAAA,EACP,QAAQ;AAAA,EACR;AAAA,EACA,YAAY;AAAA,EACZ;AAAA,EACA;AAAA,EACA;AACF,GAAyB;AACvB,QAAM,QAAQA,SAAAA,SAAA;AACd,QAAM,CAAC,SAAS,UAAU,IAAIC,MAAAA,SAAS,KAAK;AAE5CC,QAAAA,UAAU,MAAM;AAEd,UAAM,SACJ,sCAAiB,OAAO,WAAW,cAAc,SAAS;AAC5D,QAAI,CAAC,OAAQ;AAEb,UAAM,gBAAgB,MACpB,WAAW,SACP,OAAO,WAAW,SAAS,gBAAgB,YAC1C,OAAuB;AAE9B,UAAM,eAAe,MAAM;AACzB,iBAAW,cAAA,IAAkB,SAAS;AAAA,IACxC;AAEA,iBAAA;AACA,WAAO,iBAAiB,UAAU,cAAc,EAAE,SAAS,MAAM;AACjE,WAAO,MAAM,OAAO,oBAAoB,UAAU,YAAY;AAAA,EAChE,GAAG,CAAC,WAAW,YAAY,CAAC;AAE5B,QAAM,cAAc,MAAM;AACxB,gBAAY;AAAA,MACV,QAAQ,sCAAiB,OAAO,WAAW,cAAc,SAAS;AAAA,IAAA,CACnE;AAAA,EACH;AAEA,QAAM,WAAWC,cAAAA,cAAc,mBAAmB,QAAQ,KAAK;AAE/D,QAAM,WAA2B;AAAA,IAC/B,WAAW,QAAQ;AAAA,IACnB,EAAE,QAAQ,MAAM,OAAO,UAAA;AAAA,IACvB,GAAI,WAAW,CAAC,QAAQ,IAAI,CAAA;AAAA,IAC5B,GAAI,MAAM,QAAQ,EAAE,IAAI,KAAK,KAAK,CAAC,EAAE,IAAI,CAAA;AAAA,EAAC;AAG5C,SACEC,2BAAAA,IAACC,SAAAA,MAAA,EAAK,IAAI,SAAS,eAAa,MAC9B,UAAAD,2BAAAA;AAAAA,IAACE,SAAAA;AAAAA,IAAA;AAAA,MACC;AAAA,MACA;AAAA,MACA,cAAY;AAAA,MACZ,SAAS;AAAA,MACT;AAAA,MACA,IAAI;AAAA,MAEH,UAAA,qDAAS,qBAAA,CAAA,CAAoB;AAAA,IAAA;AAAA,EAAA,GAElC;AAEJ;;;;"}
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
import { ReactNode } from 'react';
|
|
2
|
-
import { SxProps, Theme } from '@mui/material/styles';
|
|
3
|
-
export type ScrollTopButtonPosition = 'bottom-right' | 'bottom-left' | 'bottom-center';
|
|
4
|
-
export interface ScrollTopButtonProps {
|
|
5
|
-
/**
|
|
6
|
-
* Distancia en px que hay que scrollear antes de mostrar el botón.
|
|
7
|
-
* Default: `300`.
|
|
8
|
-
*/
|
|
9
|
-
threshold?: number;
|
|
10
|
-
/**
|
|
11
|
-
* Posición del botón en la pantalla. Default: `'bottom-right'`.
|
|
12
|
-
*/
|
|
13
|
-
position?: ScrollTopButtonPosition;
|
|
14
|
-
/**
|
|
15
|
-
* Elemento scrolleable a observar y al que se hace scrollTop. Si se omite,
|
|
16
|
-
* se usa `window` (caso más común).
|
|
17
|
-
*/
|
|
18
|
-
scrollTarget?: Window | HTMLElement | null;
|
|
19
|
-
/** Tamaño del FAB. Default: `'medium'`. */
|
|
20
|
-
size?: 'small' | 'medium' | 'large';
|
|
21
|
-
/**
|
|
22
|
-
* Color del FAB. Default: `'default'`.
|
|
23
|
-
*/
|
|
24
|
-
color?: 'default' | 'primary' | 'secondary' | 'success' | 'warning' | 'error';
|
|
25
|
-
/** Icono custom. Default: `<KeyboardArrowUpIcon />`. */
|
|
26
|
-
icon?: ReactNode;
|
|
27
|
-
/** Texto accesible (aria-label). Default: `"Subir al inicio"`. */
|
|
28
|
-
ariaLabel?: string;
|
|
29
|
-
/** Preset registrado en `theme.styles.ScrollTopButton`. */
|
|
30
|
-
preset?: string;
|
|
31
|
-
/** sx del Fab. Se compone sobre la posición + preset. */
|
|
32
|
-
sx?: SxProps<Theme>;
|
|
33
|
-
className?: string;
|
|
34
|
-
}
|
|
35
|
-
/**
|
|
36
|
-
* Botón flotante que aparece tras scrollear más de `threshold` px y, al
|
|
37
|
-
* clickearse, hace scroll suave hasta el tope. Reemplaza al componente
|
|
38
|
-
* visible de `ScrollTopComponent` de Metronic.
|
|
39
|
-
*
|
|
40
|
-
* Para el caso imperativo (llamar `goTop()` tras una mutación), usar el
|
|
41
|
-
* helper `scrollToTop()` directamente.
|
|
42
|
-
*
|
|
43
|
-
* ```tsx
|
|
44
|
-
* <ScrollTopButton threshold={400} position="bottom-right" />
|
|
45
|
-
* ```
|
|
46
|
-
*/
|
|
47
|
-
export declare function ScrollTopButton({ threshold, position, scrollTarget, size, color, icon, ariaLabel, preset, sx, className, }: ScrollTopButtonProps): import("react/jsx-runtime").JSX.Element;
|
|
48
|
-
export default ScrollTopButton;
|
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
import { jsx } from "react/jsx-runtime";
|
|
2
|
-
import { useState, useEffect } from "react";
|
|
3
|
-
import { useTheme, Zoom, Fab } from "@mui/material";
|
|
4
|
-
import KeyboardArrowUpIcon from "@mui/icons-material/KeyboardArrowUp";
|
|
5
|
-
import { r as resolvePreset } from "../../resolvePreset-B-IB0ehH.js";
|
|
6
|
-
function scrollToTop({
|
|
7
|
-
behavior = "smooth",
|
|
8
|
-
target = typeof window !== "undefined" ? window : void 0,
|
|
9
|
-
top = 0
|
|
10
|
-
} = {}) {
|
|
11
|
-
if (!target) return;
|
|
12
|
-
target.scrollTo({ top, left: 0, behavior });
|
|
13
|
-
}
|
|
14
|
-
const positionSx = {
|
|
15
|
-
"bottom-right": { position: "fixed", bottom: 24, right: 24 },
|
|
16
|
-
"bottom-left": { position: "fixed", bottom: 24, left: 24 },
|
|
17
|
-
"bottom-center": {
|
|
18
|
-
position: "fixed",
|
|
19
|
-
bottom: 24,
|
|
20
|
-
left: "50%",
|
|
21
|
-
transform: "translateX(-50%)"
|
|
22
|
-
}
|
|
23
|
-
};
|
|
24
|
-
function ScrollTopButton({
|
|
25
|
-
threshold = 300,
|
|
26
|
-
position = "bottom-right",
|
|
27
|
-
scrollTarget,
|
|
28
|
-
size = "medium",
|
|
29
|
-
color = "default",
|
|
30
|
-
icon,
|
|
31
|
-
ariaLabel = "Subir al inicio",
|
|
32
|
-
preset,
|
|
33
|
-
sx,
|
|
34
|
-
className
|
|
35
|
-
}) {
|
|
36
|
-
const theme = useTheme();
|
|
37
|
-
const [visible, setVisible] = useState(false);
|
|
38
|
-
useEffect(() => {
|
|
39
|
-
const target = scrollTarget != null ? scrollTarget : typeof window !== "undefined" ? window : null;
|
|
40
|
-
if (!target) return;
|
|
41
|
-
const readScrollTop = () => target === window ? window.scrollY || document.documentElement.scrollTop : target.scrollTop;
|
|
42
|
-
const handleScroll = () => {
|
|
43
|
-
setVisible(readScrollTop() > threshold);
|
|
44
|
-
};
|
|
45
|
-
handleScroll();
|
|
46
|
-
target.addEventListener("scroll", handleScroll, { passive: true });
|
|
47
|
-
return () => target.removeEventListener("scroll", handleScroll);
|
|
48
|
-
}, [threshold, scrollTarget]);
|
|
49
|
-
const handleClick = () => {
|
|
50
|
-
scrollToTop({
|
|
51
|
-
target: scrollTarget != null ? scrollTarget : typeof window !== "undefined" ? window : void 0
|
|
52
|
-
});
|
|
53
|
-
};
|
|
54
|
-
const presetSx = resolvePreset("ScrollTopButton", preset, theme);
|
|
55
|
-
const mergedSx = [
|
|
56
|
-
positionSx[position],
|
|
57
|
-
{ zIndex: theme.zIndex.speedDial },
|
|
58
|
-
...presetSx ? [presetSx] : [],
|
|
59
|
-
...Array.isArray(sx) ? sx : sx ? [sx] : []
|
|
60
|
-
];
|
|
61
|
-
return /* @__PURE__ */ jsx(Zoom, { in: visible, unmountOnExit: true, children: /* @__PURE__ */ jsx(
|
|
62
|
-
Fab,
|
|
63
|
-
{
|
|
64
|
-
size,
|
|
65
|
-
color,
|
|
66
|
-
"aria-label": ariaLabel,
|
|
67
|
-
onClick: handleClick,
|
|
68
|
-
className,
|
|
69
|
-
sx: mergedSx,
|
|
70
|
-
children: icon != null ? icon : /* @__PURE__ */ jsx(KeyboardArrowUpIcon, {})
|
|
71
|
-
}
|
|
72
|
-
) });
|
|
73
|
-
}
|
|
74
|
-
export {
|
|
75
|
-
ScrollTopButton,
|
|
76
|
-
ScrollTopButton as default,
|
|
77
|
-
scrollToTop
|
|
78
|
-
};
|
|
79
|
-
//# sourceMappingURL=ScrollTopButton.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ScrollTopButton.js","sources":["../../../src/components/ScrollTopButton/scrollToTop.ts","../../../src/components/ScrollTopButton/ScrollTopButton.tsx"],"sourcesContent":["export interface ScrollToTopOptions {\n /** Comportamiento del scroll. Default: `'smooth'`. */\n behavior?: ScrollBehavior;\n /**\n * Elemento target del scroll. Default: `window`. Útil cuando el contenedor\n * scrolleable NO es `window` (p.ej. un `<Box>` con `overflow: auto`).\n */\n target?: Window | HTMLElement;\n /** Offset desde el top. Default: `0`. */\n top?: number;\n}\n\n/**\n * Reemplaza imperativamente a `ScrollTopComponent.goTop()` de Metronic.\n *\n * Llamar tras mutaciones / cambios de filtros / apertura de modales para\n * asegurar que el usuario vea el mensaje de confirmación en la parte\n * superior de la página.\n *\n * ```ts\n * // Reemplazo directo del legacy:\n * // Antes: ScrollTopComponent.goTop()\n * scrollToTop();\n *\n * // Con opciones:\n * scrollToTop({ behavior: 'auto' });\n * scrollToTop({ target: myScrollableRef.current });\n * ```\n */\nexport function scrollToTop({\n behavior = 'smooth',\n target = typeof window !== 'undefined' ? window : undefined,\n top = 0,\n}: ScrollToTopOptions = {}): void {\n if (!target) return;\n target.scrollTo({ top, left: 0, behavior });\n}\n","import React, { useEffect, useState, type ReactNode } from 'react';\nimport { Fab, Zoom, useTheme } from '@mui/material';\nimport KeyboardArrowUpIcon from '@mui/icons-material/KeyboardArrowUp';\nimport type { SxProps, Theme } from '@mui/material/styles';\n\nimport { resolvePreset } from '../_shared/resolvePreset';\nimport { scrollToTop } from './scrollToTop';\n\nexport type ScrollTopButtonPosition =\n | 'bottom-right'\n | 'bottom-left'\n | 'bottom-center';\n\nexport interface ScrollTopButtonProps {\n /**\n * Distancia en px que hay que scrollear antes de mostrar el botón.\n * Default: `300`.\n */\n threshold?: number;\n /**\n * Posición del botón en la pantalla. Default: `'bottom-right'`.\n */\n position?: ScrollTopButtonPosition;\n /**\n * Elemento scrolleable a observar y al que se hace scrollTop. Si se omite,\n * se usa `window` (caso más común).\n */\n scrollTarget?: Window | HTMLElement | null;\n /** Tamaño del FAB. Default: `'medium'`. */\n size?: 'small' | 'medium' | 'large';\n /**\n * Color del FAB. Default: `'default'`.\n */\n color?: 'default' | 'primary' | 'secondary' | 'success' | 'warning' | 'error';\n /** Icono custom. Default: `<KeyboardArrowUpIcon />`. */\n icon?: ReactNode;\n /** Texto accesible (aria-label). Default: `\"Subir al inicio\"`. */\n ariaLabel?: string;\n /** Preset registrado en `theme.styles.ScrollTopButton`. */\n preset?: string;\n /** sx del Fab. Se compone sobre la posición + preset. */\n sx?: SxProps<Theme>;\n className?: string;\n}\n\nconst positionSx: Record<ScrollTopButtonPosition, SxProps<Theme>> = {\n 'bottom-right': { position: 'fixed', bottom: 24, right: 24 },\n 'bottom-left': { position: 'fixed', bottom: 24, left: 24 },\n 'bottom-center': {\n position: 'fixed',\n bottom: 24,\n left: '50%',\n transform: 'translateX(-50%)',\n },\n};\n\n/**\n * Botón flotante que aparece tras scrollear más de `threshold` px y, al\n * clickearse, hace scroll suave hasta el tope. Reemplaza al componente\n * visible de `ScrollTopComponent` de Metronic.\n *\n * Para el caso imperativo (llamar `goTop()` tras una mutación), usar el\n * helper `scrollToTop()` directamente.\n *\n * ```tsx\n * <ScrollTopButton threshold={400} position=\"bottom-right\" />\n * ```\n */\nexport function ScrollTopButton({\n threshold = 300,\n position = 'bottom-right',\n scrollTarget,\n size = 'medium',\n color = 'default',\n icon,\n ariaLabel = 'Subir al inicio',\n preset,\n sx,\n className,\n}: ScrollTopButtonProps) {\n const theme = useTheme();\n const [visible, setVisible] = useState(false);\n\n useEffect(() => {\n // Si viene scrollTarget explícito, usarlo; si no, window.\n const target: Window | HTMLElement | null =\n scrollTarget ?? (typeof window !== 'undefined' ? window : null);\n if (!target) return;\n\n const readScrollTop = () =>\n target === window\n ? window.scrollY || document.documentElement.scrollTop\n : (target as HTMLElement).scrollTop;\n\n const handleScroll = () => {\n setVisible(readScrollTop() > threshold);\n };\n\n handleScroll(); // check inicial por si ya estamos scrolleados\n target.addEventListener('scroll', handleScroll, { passive: true });\n return () => target.removeEventListener('scroll', handleScroll);\n }, [threshold, scrollTarget]);\n\n const handleClick = () => {\n scrollToTop({\n target: scrollTarget ?? (typeof window !== 'undefined' ? window : undefined),\n });\n };\n\n const presetSx = resolvePreset('ScrollTopButton', preset, theme);\n\n const mergedSx: SxProps<Theme> = [\n positionSx[position],\n { zIndex: theme.zIndex.speedDial },\n ...(presetSx ? [presetSx] : []),\n ...(Array.isArray(sx) ? sx : sx ? [sx] : []),\n ];\n\n return (\n <Zoom in={visible} unmountOnExit>\n <Fab\n size={size}\n color={color}\n aria-label={ariaLabel}\n onClick={handleClick}\n className={className}\n sx={mergedSx}\n >\n {icon ?? <KeyboardArrowUpIcon />}\n </Fab>\n </Zoom>\n );\n}\n\nexport default ScrollTopButton;\n"],"names":[],"mappings":";;;;;AA6BO,SAAS,YAAY;AAAA,EAC1B,WAAW;AAAA,EACX,SAAS,OAAO,WAAW,cAAc,SAAS;AAAA,EAClD,MAAM;AACR,IAAwB,IAAU;AAChC,MAAI,CAAC,OAAQ;AACb,SAAO,SAAS,EAAE,KAAK,MAAM,GAAG,UAAU;AAC5C;ACSA,MAAM,aAA8D;AAAA,EAClE,gBAAgB,EAAE,UAAU,SAAS,QAAQ,IAAI,OAAO,GAAA;AAAA,EACxD,eAAe,EAAE,UAAU,SAAS,QAAQ,IAAI,MAAM,GAAA;AAAA,EACtD,iBAAiB;AAAA,IACf,UAAU;AAAA,IACV,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,WAAW;AAAA,EAAA;AAEf;AAcO,SAAS,gBAAgB;AAAA,EAC9B,YAAY;AAAA,EACZ,WAAW;AAAA,EACX;AAAA,EACA,OAAO;AAAA,EACP,QAAQ;AAAA,EACR;AAAA,EACA,YAAY;AAAA,EACZ;AAAA,EACA;AAAA,EACA;AACF,GAAyB;AACvB,QAAM,QAAQ,SAAA;AACd,QAAM,CAAC,SAAS,UAAU,IAAI,SAAS,KAAK;AAE5C,YAAU,MAAM;AAEd,UAAM,SACJ,sCAAiB,OAAO,WAAW,cAAc,SAAS;AAC5D,QAAI,CAAC,OAAQ;AAEb,UAAM,gBAAgB,MACpB,WAAW,SACP,OAAO,WAAW,SAAS,gBAAgB,YAC1C,OAAuB;AAE9B,UAAM,eAAe,MAAM;AACzB,iBAAW,cAAA,IAAkB,SAAS;AAAA,IACxC;AAEA,iBAAA;AACA,WAAO,iBAAiB,UAAU,cAAc,EAAE,SAAS,MAAM;AACjE,WAAO,MAAM,OAAO,oBAAoB,UAAU,YAAY;AAAA,EAChE,GAAG,CAAC,WAAW,YAAY,CAAC;AAE5B,QAAM,cAAc,MAAM;AACxB,gBAAY;AAAA,MACV,QAAQ,sCAAiB,OAAO,WAAW,cAAc,SAAS;AAAA,IAAA,CACnE;AAAA,EACH;AAEA,QAAM,WAAW,cAAc,mBAAmB,QAAQ,KAAK;AAE/D,QAAM,WAA2B;AAAA,IAC/B,WAAW,QAAQ;AAAA,IACnB,EAAE,QAAQ,MAAM,OAAO,UAAA;AAAA,IACvB,GAAI,WAAW,CAAC,QAAQ,IAAI,CAAA;AAAA,IAC5B,GAAI,MAAM,QAAQ,EAAE,IAAI,KAAK,KAAK,CAAC,EAAE,IAAI,CAAA;AAAA,EAAC;AAG5C,SACE,oBAAC,MAAA,EAAK,IAAI,SAAS,eAAa,MAC9B,UAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC;AAAA,MACA;AAAA,MACA,cAAY;AAAA,MACZ,SAAS;AAAA,MACT;AAAA,MACA,IAAI;AAAA,MAEH,UAAA,0CAAS,qBAAA,CAAA,CAAoB;AAAA,IAAA;AAAA,EAAA,GAElC;AAEJ;"}
|