@soyfri/shared-library 2.0.0-beta8 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Button-C17mExpd.cjs.map +1 -1
- package/Button-UkkP-bNw.js.map +1 -1
- package/README.md +182 -150
- 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 +310 -4
- package/components/Autocomplete/Autocomplete.cjs.map +1 -1
- package/components/Autocomplete/Autocomplete.d.ts +29 -26
- package/components/Autocomplete/Autocomplete.definitions.d.ts +2 -1
- package/components/Autocomplete/Autocomplete.helpers.d.ts +12 -8
- package/components/Autocomplete/Autocomplete.js +310 -4
- package/components/Autocomplete/Autocomplete.js.map +1 -1
- package/components/Autocomplete/_parts/AutocompleteChips.d.ts +7 -6
- package/components/Autocomplete/_parts/AutocompleteOption.d.ts +10 -13
- package/components/Autocomplete/index.d.ts +1 -1
- package/components/Avatar/Avatar.cjs +159 -2
- package/components/Avatar/Avatar.cjs.map +1 -1
- package/components/Avatar/Avatar.js +159 -2
- 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 +95 -7
- package/components/Card/Card.cjs.map +1 -1
- package/components/Card/Card.d.ts +3 -50
- package/components/Card/Card.js +95 -7
- 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/{Switch-BIeobv6i.cjs → components/Checkbox/Checkbox.cjs} +30 -20
- package/components/Checkbox/Checkbox.cjs.map +1 -0
- package/components/Checkbox/Checkbox.d.ts +55 -0
- package/{Switch-DQEOxM2R.js → components/Checkbox/Checkbox.js} +29 -20
- 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 +73 -3
- package/components/Chip/Chip.cjs.map +1 -1
- package/components/Chip/Chip.js +72 -2
- 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 +0 -1
- package/components/DatePicker/DatePicker.cjs +177 -3
- package/components/DatePicker/DatePicker.cjs.map +1 -1
- package/components/DatePicker/DatePicker.d.ts +1 -13
- package/components/DatePicker/DatePicker.js +177 -3
- package/components/DatePicker/DatePicker.js.map +1 -1
- package/components/DatePicker/index.d.ts +1 -1
- package/components/DateRangePicker/DateRangePicker.cjs +73 -2
- package/components/DateRangePicker/DateRangePicker.cjs.map +1 -1
- package/components/DateRangePicker/DateRangePicker.js +73 -2
- package/components/DateRangePicker/DateRangePicker.js.map +1 -1
- package/components/DateTimePicker/DateTimePicker.cjs +195 -3
- package/components/DateTimePicker/DateTimePicker.cjs.map +1 -1
- package/components/DateTimePicker/DateTimePicker.d.ts +9 -17
- package/components/DateTimePicker/DateTimePicker.definitions.d.ts +2 -0
- package/components/DateTimePicker/DateTimePicker.helpers.d.ts +4 -2
- package/components/DateTimePicker/DateTimePicker.js +195 -3
- package/components/DateTimePicker/DateTimePicker.js.map +1 -1
- package/components/DateTimePicker/index.d.ts +1 -1
- package/components/Drawer/Drawer.cjs +13 -7
- package/components/Drawer/Drawer.cjs.map +1 -1
- package/components/Drawer/Drawer.d.ts +3 -1
- package/components/Drawer/Drawer.js +14 -8
- 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 +185 -3
- package/components/Input/Input.cjs.map +1 -1
- package/components/Input/Input.d.ts +9 -2
- package/components/Input/Input.helpers.d.ts +3 -3
- package/components/Input/Input.js +185 -3
- 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 +345 -6
- package/components/Modal/Modal.cjs.map +1 -1
- package/components/Modal/Modal.d.ts +20 -5
- package/components/Modal/Modal.js +345 -6
- 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 +4 -3
- package/components/RadioGroup/RadioGroup.cjs +201 -3
- package/components/RadioGroup/RadioGroup.cjs.map +1 -1
- package/components/RadioGroup/RadioGroup.d.ts +9 -3
- package/components/RadioGroup/RadioGroup.js +201 -3
- package/components/RadioGroup/RadioGroup.js.map +1 -1
- package/components/RadioGroup/index.d.ts +1 -1
- package/components/Select/Select.cjs +310 -4
- package/components/Select/Select.cjs.map +1 -1
- package/components/Select/Select.d.ts +35 -20
- package/components/Select/Select.helpers.d.ts +6 -19
- package/components/Select/Select.js +310 -4
- package/components/Select/Select.js.map +1 -1
- package/components/Select/index.d.ts +1 -1
- package/components/Stat/Stat.cjs +83 -4
- package/components/Stat/Stat.cjs.map +1 -1
- package/components/Stat/Stat.js +82 -3
- 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 +105 -3
- package/components/StatusMessage/StatusMessage.cjs.map +1 -1
- package/components/StatusMessage/StatusMessage.d.ts +20 -36
- package/components/StatusMessage/StatusMessage.js +105 -3
- package/components/StatusMessage/StatusMessage.js.map +1 -1
- package/components/StatusMessage/StatusMessageContext.d.ts +16 -0
- package/components/StatusMessage/index.d.ts +2 -0
- package/components/Stepper/Stepper.cjs +324 -4
- package/components/Stepper/Stepper.cjs.map +1 -1
- package/components/Stepper/Stepper.d.ts +9 -8
- package/components/Stepper/Stepper.js +323 -3
- package/components/Stepper/Stepper.js.map +1 -1
- package/{hooks/Wizard/WizardContext.d.ts → components/Stepper/StepperContext.d.ts} +28 -22
- 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 +181 -3
- package/components/Switch/Switch.cjs.map +1 -1
- package/components/Switch/Switch.d.ts +7 -2
- package/components/Switch/Switch.js +181 -3
- package/components/Switch/Switch.js.map +1 -1
- package/components/Table/Table.cjs +528 -2
- package/components/Table/Table.cjs.map +1 -1
- package/components/Table/Table.d.ts +1 -1
- package/components/Table/Table.js +528 -2
- package/components/Table/Table.js.map +1 -1
- package/components/Tabs/Tabs.cjs +110 -4
- package/components/Tabs/Tabs.cjs.map +1 -1
- package/components/Tabs/Tabs.d.ts +21 -16
- package/components/Tabs/Tabs.js +109 -3
- 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 +31 -47
- package/index.cjs.map +1 -1
- package/index.d.ts +1 -30
- package/index.js +17 -48
- package/index.js.map +1 -1
- 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 -2
- package/package.json +8 -20
- package/{resolvePreset-K6_BfWHD.js → resolvePreset-B-IB0ehH.js} +3 -3
- package/{resolvePreset-K6_BfWHD.js.map → resolvePreset-B-IB0ehH.js.map} +1 -1
- package/{resolvePreset-CxTI6_Ln.cjs → resolvePreset-CT3kU-K2.cjs} +3 -3
- package/{resolvePreset-CxTI6_Ln.cjs.map → resolvePreset-CT3kU-K2.cjs.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/Autocomplete-BA-cGASd.js +0 -316
- package/Autocomplete-BA-cGASd.js.map +0 -1
- package/Autocomplete-C2x-lBvZ.cjs +0 -315
- package/Autocomplete-C2x-lBvZ.cjs.map +0 -1
- package/Avatar-9L7YMxya.cjs +0 -162
- package/Avatar-9L7YMxya.cjs.map +0 -1
- package/Avatar-BJTr-PBd.js +0 -163
- package/Avatar-BJTr-PBd.js.map +0 -1
- package/Card-DG_crfkK.cjs +0 -185
- package/Card-DG_crfkK.cjs.map +0 -1
- package/Card-Ug-ttVSh.js +0 -186
- package/Card-Ug-ttVSh.js.map +0 -1
- package/Chip-OPYQ1uQ_.js +0 -74
- package/Chip-OPYQ1uQ_.js.map +0 -1
- package/Chip-qoJLDiva.cjs +0 -73
- package/Chip-qoJLDiva.cjs.map +0 -1
- package/DatePicker-8f_9bwhS.js +0 -202
- package/DatePicker-8f_9bwhS.js.map +0 -1
- package/DatePicker-DLSfkgGA.cjs +0 -201
- package/DatePicker-DLSfkgGA.cjs.map +0 -1
- package/DateRangePicker-BVpeJCHI.js +0 -76
- package/DateRangePicker-BVpeJCHI.js.map +0 -1
- package/DateRangePicker-B_hKQhbj.cjs +0 -75
- package/DateRangePicker-B_hKQhbj.cjs.map +0 -1
- package/DateTimePicker-CWNW09-O.cjs +0 -220
- package/DateTimePicker-CWNW09-O.cjs.map +0 -1
- package/DateTimePicker-D4L9GAod.js +0 -221
- package/DateTimePicker-D4L9GAod.js.map +0 -1
- package/Input-Cp911l23.js +0 -174
- package/Input-Cp911l23.js.map +0 -1
- package/Input-DI0jfq5X.cjs +0 -173
- package/Input-DI0jfq5X.cjs.map +0 -1
- package/Modal-Bm_HH9cv.cjs +0 -319
- package/Modal-Bm_HH9cv.cjs.map +0 -1
- package/Modal-Bnz6d9m9.js +0 -320
- package/Modal-Bnz6d9m9.js.map +0 -1
- package/RadioGroup-CxqDHap1.cjs +0 -200
- package/RadioGroup-CxqDHap1.cjs.map +0 -1
- package/RadioGroup-DMi9FvMP.js +0 -201
- package/RadioGroup-DMi9FvMP.js.map +0 -1
- package/Select-3CBOfM2H.js +0 -447
- package/Select-3CBOfM2H.js.map +0 -1
- package/Select-Bku4f4f8.cjs +0 -446
- package/Select-Bku4f4f8.cjs.map +0 -1
- package/Stat-BUcFCGrz.cjs +0 -83
- package/Stat-BUcFCGrz.cjs.map +0 -1
- package/Stat-C06A_izS.js +0 -84
- package/Stat-C06A_izS.js.map +0 -1
- package/StatusMessage-C5B6oGZ_.cjs +0 -78
- package/StatusMessage-C5B6oGZ_.cjs.map +0 -1
- package/StatusMessage-D1GlfQdz.js +0 -79
- package/StatusMessage-D1GlfQdz.js.map +0 -1
- package/Step-Dq0N72YB.js +0 -49
- package/Step-Dq0N72YB.js.map +0 -1
- package/Step-a8U8O-91.cjs +0 -48
- package/Step-a8U8O-91.cjs.map +0 -1
- package/Switch-BIeobv6i.cjs.map +0 -1
- package/Switch-DQEOxM2R.js.map +0 -1
- package/Tab-Co31KY2k.cjs +0 -95
- package/Tab-Co31KY2k.cjs.map +0 -1
- package/Tab-DiK62gRz.js +0 -96
- package/Tab-DiK62gRz.js.map +0 -1
- package/Table-C2LbW0B1.js +0 -531
- package/Table-C2LbW0B1.js.map +0 -1
- package/Table-C4OM6rrC.cjs +0 -530
- package/Table-C4OM6rrC.cjs.map +0 -1
- 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/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/RadioGroup/RadioGroup.types.d.ts +0 -1
- 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/components/Select/_parts/SelectValue.d.ts +0 -22
- 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
package/Button-C17mExpd.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Button-C17mExpd.cjs","sources":["../src/components/Button/Button.tsx"],"sourcesContent":["import { Button as MuiButton } from \"@mui/material\";\nimport type {
|
|
1
|
+
{"version":3,"file":"Button-C17mExpd.cjs","sources":["../src/components/Button/Button.tsx"],"sourcesContent":["import { Button as MuiButton } from \"@mui/material\";\nimport type { SxProps, Theme } from \"@mui/material/styles\";\nimport React from \"react\";\n\nexport interface ButtonProps {\n children?: React.ReactNode;\n variant?: \"text\" | \"outlined\" | \"contained\";\n disabled?: boolean;\n endIcon?: React.ReactNode;\n startIcon?: React.ReactNode;\n size?: \"small\" | \"medium\" | \"large\";\n className?: string;\n onClick?: (event: React.MouseEvent<HTMLButtonElement>) => void;\n loading?: boolean;\n loadingIndicator?: React.ReactNode;\n loadingPosition?: \"start\" | \"end\" | \"center\";\n color?: \"inherit\" | \"primary\" | \"secondary\" | \"success\" | \"error\" | \"info\" | \"warning\";\n href?: string;\n \"data-testid\"?: string;\n type?: \"button\" | \"submit\";\n sx?: SxProps<Theme>;\n}\n\nexport const Button: React.FC<ButtonProps> = ({\n children,\n variant,\n disabled,\n startIcon,\n endIcon,\n size,\n className,\n onClick,\n loading,\n loadingPosition,\n loadingIndicator,\n color,\n href,\n \"data-testid\": dataTestId,\n type,\n sx\n}) => {\n return (\n <MuiButton\n disabled={disabled}\n variant={variant}\n startIcon={startIcon}\n endIcon={endIcon}\n size={size}\n className={className}\n onClick={onClick}\n loading={loading}\n loadingPosition={loadingPosition}\n loadingIndicator={loadingIndicator}\n sx={{ textTransform: \"none\", ...sx }}\n disableRipple={true}\n disableElevation={true}\n color={color}\n data-testid={dataTestId}\n href={href}\n type={type}\n >\n {children}\n </MuiButton>);\n};\n\nexport default Button;"],"names":["jsx","MuiButton"],"mappings":";;;;;;;;;;;;;;;;;;;AAuBO,MAAM,SAAgC,CAAC;AAAA,EAC5C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,eAAe;AAAA,EACf;AAAA,EACA;AACF,MAAM;AACJ,SACEA,2BAAAA;AAAAA,IAACC,SAAAA;AAAAA,IAAA;AAAA,MACC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,IAAI,iBAAE,eAAe,UAAW;AAAA,MAChC,eAAe;AAAA,MACf,kBAAkB;AAAA,MAClB;AAAA,MACA,eAAa;AAAA,MACb;AAAA,MACA;AAAA,MAEC;AAAA,IAAA;AAAA,EAAA;AAEP;;"}
|
package/Button-UkkP-bNw.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Button-UkkP-bNw.js","sources":["../src/components/Button/Button.tsx"],"sourcesContent":["import { Button as MuiButton } from \"@mui/material\";\nimport type {
|
|
1
|
+
{"version":3,"file":"Button-UkkP-bNw.js","sources":["../src/components/Button/Button.tsx"],"sourcesContent":["import { Button as MuiButton } from \"@mui/material\";\nimport type { SxProps, Theme } from \"@mui/material/styles\";\nimport React from \"react\";\n\nexport interface ButtonProps {\n children?: React.ReactNode;\n variant?: \"text\" | \"outlined\" | \"contained\";\n disabled?: boolean;\n endIcon?: React.ReactNode;\n startIcon?: React.ReactNode;\n size?: \"small\" | \"medium\" | \"large\";\n className?: string;\n onClick?: (event: React.MouseEvent<HTMLButtonElement>) => void;\n loading?: boolean;\n loadingIndicator?: React.ReactNode;\n loadingPosition?: \"start\" | \"end\" | \"center\";\n color?: \"inherit\" | \"primary\" | \"secondary\" | \"success\" | \"error\" | \"info\" | \"warning\";\n href?: string;\n \"data-testid\"?: string;\n type?: \"button\" | \"submit\";\n sx?: SxProps<Theme>;\n}\n\nexport const Button: React.FC<ButtonProps> = ({\n children,\n variant,\n disabled,\n startIcon,\n endIcon,\n size,\n className,\n onClick,\n loading,\n loadingPosition,\n loadingIndicator,\n color,\n href,\n \"data-testid\": dataTestId,\n type,\n sx\n}) => {\n return (\n <MuiButton\n disabled={disabled}\n variant={variant}\n startIcon={startIcon}\n endIcon={endIcon}\n size={size}\n className={className}\n onClick={onClick}\n loading={loading}\n loadingPosition={loadingPosition}\n loadingIndicator={loadingIndicator}\n sx={{ textTransform: \"none\", ...sx }}\n disableRipple={true}\n disableElevation={true}\n color={color}\n data-testid={dataTestId}\n href={href}\n type={type}\n >\n {children}\n </MuiButton>);\n};\n\nexport default Button;"],"names":["MuiButton"],"mappings":";;;;;;;;;;;;;;;;;;AAuBO,MAAM,SAAgC,CAAC;AAAA,EAC5C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,eAAe;AAAA,EACf;AAAA,EACA;AACF,MAAM;AACJ,SACE;AAAA,IAACA;AAAAA,IAAA;AAAA,MACC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,IAAI,iBAAE,eAAe,UAAW;AAAA,MAChC,eAAe;AAAA,MACf,kBAAkB;AAAA,MAClB;AAAA,MACA,eAAa;AAAA,MACb;AAAA,MACA;AAAA,MAEC;AAAA,IAAA;AAAA,EAAA;AAEP;"}
|
package/README.md
CHANGED
|
@@ -1,28 +1,32 @@
|
|
|
1
1
|
# @soyfri/shared-library
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Librería central de componentes React del ecosistema FRI, construida sobre **Material-UI v7 + Emotion + utilidades de Tailwind**. Es un **paquete npm publicado** (no una app): se distribuye como ESM + CJS + `.d.ts`. Consumido hoy por `affiliations-web`.
|
|
4
4
|
|
|
5
5
|
## 📋 Tabla de Contenidos
|
|
6
6
|
|
|
7
|
-
- [Características](
|
|
8
|
-
- [Instalación](
|
|
9
|
-
- [Uso](
|
|
10
|
-
- [Componentes Disponibles](
|
|
11
|
-
- [
|
|
12
|
-
- [
|
|
13
|
-
- [
|
|
14
|
-
- [
|
|
15
|
-
- [
|
|
16
|
-
- [
|
|
7
|
+
- [Características](#-características)
|
|
8
|
+
- [Instalación](#-instalación)
|
|
9
|
+
- [Uso](#-uso)
|
|
10
|
+
- [Componentes Disponibles](#-componentes-disponibles)
|
|
11
|
+
- [Sistema de presets](#-sistema-de-presets)
|
|
12
|
+
- [Desarrollo](#-desarrollo)
|
|
13
|
+
- [Scripts Disponibles](#-scripts-disponibles)
|
|
14
|
+
- [Storybook](#-storybook)
|
|
15
|
+
- [Testing](#-testing)
|
|
16
|
+
- [Tecnologías](#-tecnologías)
|
|
17
|
+
- [Estructura del Proyecto](#-estructura-del-proyecto)
|
|
18
|
+
- [Publicación](#-publicación)
|
|
17
19
|
|
|
18
20
|
## ✨ Características
|
|
19
21
|
|
|
20
|
-
- 🎨 **Componentes tipados**:
|
|
21
|
-
-
|
|
22
|
-
-
|
|
23
|
-
-
|
|
24
|
-
-
|
|
25
|
-
-
|
|
22
|
+
- 🎨 **Componentes tipados**: todo en TypeScript (modo `strict`).
|
|
23
|
+
- 🧩 **Multi-entry**: cada componente y hook es su propio entry point, importable por subpath.
|
|
24
|
+
- 📚 **Documentación con Storybook**: cada componente tiene sus historias interactivas.
|
|
25
|
+
- 🎯 **Material-UI v7**: base de diseño accesible y consistente; las primitivas de MUI se re-exportan desde la propia librería (`mui.ts`).
|
|
26
|
+
- 🌈 **Tailwind CSS**: utilidades disponibles con `preflight: false` para coexistir con MUI.
|
|
27
|
+
- 📝 **Formularios**: soporte nativo para `react-hook-form` (modo RHF) además de modo controlado.
|
|
28
|
+
- 🎚️ **Sistema de presets**: estilos registrables vía `theme.styles`.
|
|
29
|
+
- 📦 **Build con Vite**: genera ESM (`.js`) + CommonJS (`.cjs`) + tipos (`.d.ts`), con los peers externalizados.
|
|
26
30
|
|
|
27
31
|
## 📦 Instalación
|
|
28
32
|
|
|
@@ -30,214 +34,242 @@ Una librería de componentes React reutilizables construida con Material-UI, Typ
|
|
|
30
34
|
npm install @soyfri/shared-library
|
|
31
35
|
```
|
|
32
36
|
|
|
37
|
+
Los peer dependencies los provee el consumidor (no se bundlean): `react`, `react-dom`, `@mui/material`, `@mui/icons-material`, `@mui/x-date-pickers`, `@emotion/react`, `@emotion/styled`, `react-hook-form`, `dayjs` y Tailwind/postcss.
|
|
38
|
+
|
|
33
39
|
## 🚀 Uso
|
|
34
40
|
|
|
41
|
+
> **Importante:** los componentes de la librería se importan **por subpath** (`@soyfri/shared-library/components/<Nombre>`). El barrel raíz `@soyfri/shared-library` **no** exporta los componentes propios — desde ahí solo salen las primitivas de MUI (`Box`, `Stack`, `ThemeProvider`, …), las utilidades y el sistema de presets.
|
|
42
|
+
|
|
35
43
|
```tsx
|
|
36
|
-
|
|
37
|
-
import '@soyfri/shared-library/
|
|
44
|
+
// ✅ Componentes: siempre por subpath
|
|
45
|
+
import { Button } from '@soyfri/shared-library/components/Button';
|
|
46
|
+
import { Input } from '@soyfri/shared-library/components/Input';
|
|
47
|
+
import { Table } from '@soyfri/shared-library/components/Table';
|
|
48
|
+
|
|
49
|
+
// ✅ Primitivas de MUI, utils y presets: desde el root
|
|
50
|
+
import { Box, ThemeProvider } from '@soyfri/shared-library';
|
|
51
|
+
|
|
52
|
+
// ✅ Hooks: por subpath
|
|
53
|
+
import { useClipBoard } from '@soyfri/shared-library/hooks/ClipBoard';
|
|
38
54
|
|
|
39
55
|
function App() {
|
|
40
56
|
return (
|
|
41
|
-
<
|
|
57
|
+
<Box>
|
|
42
58
|
<Button variant="contained" color="primary">
|
|
43
59
|
Mi Botón
|
|
44
60
|
</Button>
|
|
45
|
-
</
|
|
61
|
+
</Box>
|
|
46
62
|
);
|
|
47
63
|
}
|
|
48
64
|
```
|
|
49
65
|
|
|
66
|
+
No es necesario importar un CSS manualmente: los estilos de cada componente se inyectan automáticamente en su propio bundle (`vite-plugin-lib-inject-css`).
|
|
67
|
+
|
|
50
68
|
## 🧩 Componentes Disponibles
|
|
51
69
|
|
|
52
|
-
|
|
53
|
-
Componente de botón personalizable basado en Material-UI con soporte para iconos, diferentes tamaños y estados.
|
|
70
|
+
Todos disponibles vía `@soyfri/shared-library/components/<Nombre>`:
|
|
54
71
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
72
|
+
| Categoría | Componentes |
|
|
73
|
+
|---|---|
|
|
74
|
+
| **Acciones** | `Button`, `MenuButton`, `ActionMenu` |
|
|
75
|
+
| **Formularios** | `Input`, `InputGroup`, `Select`, `Autocomplete`, `Checkbox`, `RadioGroup`, `Switch`, `DatePicker`, `DateTimePicker`, `DateRangePicker` |
|
|
76
|
+
| **Datos** | `Table`, `Column`, `Stat`, `Timeline` |
|
|
77
|
+
| **Layout / navegación** | `AppBar`, `Drawer`, `Tabs`, `Stepper`, `Card` |
|
|
78
|
+
| **Overlay** | `Modal`, `Flyout`, `Tooltip` |
|
|
79
|
+
| **Feedback** | `StatusMessage` |
|
|
80
|
+
| **Visuales** | `Avatar`, `Icon`, `Chip`, `Gallery` |
|
|
61
81
|
|
|
62
|
-
|
|
63
|
-
Componente de tabla flexible con paginación interna y externa, ordenamiento y renderizado personalizado de columnas.
|
|
82
|
+
Hooks disponibles vía `@soyfri/shared-library/hooks/<Nombre>`: `ClipBoard`.
|
|
64
83
|
|
|
65
|
-
|
|
66
|
-
- Paginación interna automática
|
|
67
|
-
- Paginación externa controlada
|
|
68
|
-
- Columnas personalizables con renderizado custom
|
|
69
|
-
- Soporte para componentes complejos en celdas
|
|
70
|
-
- Completamente tipado con generics
|
|
84
|
+
### Algunos destacados
|
|
71
85
|
|
|
72
|
-
|
|
73
|
-
Componente select avanzado con soporte para selección múltiple, filtros, agrupación y renderizado personalizado.
|
|
86
|
+
**Button** — variantes (`text` / `outlined` / `contained`), tamaños (`small` / `medium` / `large`), `startIcon` / `endIcon`, estado `loading` (con `loadingIndicator` y `loadingPosition`), colores del theme y `sx`.
|
|
74
87
|
|
|
75
|
-
**
|
|
76
|
-
- Selección simple y múltiple
|
|
77
|
-
- Filtrado de opciones
|
|
78
|
-
- Agrupación de opciones
|
|
79
|
-
- Renderizado personalizado con avatars
|
|
80
|
-
- Placeholder configurable
|
|
88
|
+
**Input** — campo de texto que admite **dos modos mutuamente excluyentes**: RHF (`name` + `control` + `validation`, envuelto en `<Controller>`) y controlado (`value` + `onChange`). Soporta `labelPosition` (`outside` / `floating`), `borderRadius`, `readOnly`, tipos especializados y `preset`.
|
|
81
89
|
|
|
82
|
-
|
|
83
|
-
Componente para mostrar avatares de usuarios con soporte para imágenes y texto.
|
|
90
|
+
**Select** — selección simple y múltiple, opciones con grupos, render personalizado de opciones (`RenderOptionItem`), tamaños y label flotante.
|
|
84
91
|
|
|
85
|
-
|
|
86
|
-
Wrapper para iconos de Material-UI con propiedades consistentes.
|
|
92
|
+
**Table** — genérico (`<T>`), con paginación interna o externa controlada, selección de filas, exportación a CSV/Excel y columnas personalizadas vía el componente `Column`.
|
|
87
93
|
|
|
88
|
-
|
|
89
|
-
Componente para mostrar estadísticas con diferentes plantillas de visualización.
|
|
94
|
+
> Para ver props, estados y ejemplos en vivo de cada componente, usa Storybook (`npm run storybook`).
|
|
90
95
|
|
|
91
|
-
|
|
92
|
-
- Plantilla simple
|
|
93
|
-
- Plantilla con chip
|
|
94
|
-
- Plantilla con lista de chips
|
|
95
|
-
- Colores personalizables
|
|
96
|
+
## 🎚️ Sistema de presets
|
|
96
97
|
|
|
97
|
-
|
|
98
|
-
Componente auxiliar para definir columnas en el componente Table.
|
|
98
|
+
Los componentes resuelven estilos registrables desde el theme de MUI (`theme.styles`). El consumidor registra un preset por nombre y lo aplica con la prop `preset="<nombre>"`; `preset="default"` (o ausente) usa solo el estilo built-in. El paquete no envía presets propios. Tipos y API (`resolvePreset`, `DEFAULT_PRESET_NAME`, `LibraryComponentName`, …) se exportan desde el root.
|
|
99
99
|
|
|
100
100
|
## 🛠️ Desarrollo
|
|
101
101
|
|
|
102
102
|
### Prerrequisitos
|
|
103
103
|
|
|
104
|
-
- Node.js (
|
|
105
|
-
- npm
|
|
104
|
+
- Node.js 20+ (CI usa Node v23.6.1 para el build y 20.x para publicar)
|
|
105
|
+
- npm
|
|
106
106
|
|
|
107
|
-
### Configuración del entorno
|
|
107
|
+
### Configuración del entorno
|
|
108
108
|
|
|
109
|
-
1. Clona el repositorio:
|
|
110
109
|
```bash
|
|
111
110
|
git clone <repository-url>
|
|
112
|
-
cd shared-library
|
|
113
|
-
```
|
|
114
|
-
|
|
115
|
-
2. Instala las dependencias:
|
|
116
|
-
```bash
|
|
111
|
+
cd shared-library-web
|
|
117
112
|
npm install
|
|
113
|
+
npm run storybook # forma principal de desarrollar/previsualizar un componente
|
|
118
114
|
```
|
|
119
115
|
|
|
120
|
-
|
|
116
|
+
### Probar la librería en un proyecto local (`npm link`)
|
|
117
|
+
|
|
118
|
+
> **Clave:** el mapa `exports` con los subpaths (`/components/<Nombre>`) **solo existe en `dist/package.json`** — lo genera `npm run dist`. El `package.json` de la raíz **no** lo tiene. Por eso el `npm link` (igual que el `publish`) se hace **desde `dist/`**, no desde la raíz; si linkeas la raíz, los imports por subpath no resuelven.
|
|
119
|
+
|
|
121
120
|
```bash
|
|
122
|
-
|
|
123
|
-
|
|
121
|
+
# 1) En la librería: build + generar el dist/package.json con el mapa exports
|
|
122
|
+
npm run build && npm run dist
|
|
124
123
|
|
|
125
|
-
|
|
124
|
+
# 2) Registrar el paquete DESDE dist/
|
|
125
|
+
cd dist
|
|
126
|
+
npm link # registra @soyfri/shared-library apuntando a dist/
|
|
126
127
|
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
- `npm run watch:css` - Observa cambios en los estilos CSS
|
|
131
|
-
- `npm run clean` - Limpia la carpeta dist
|
|
132
|
-
- `npm run prepare` - Limpia y construye la librería
|
|
133
|
-
- `npm run storybook` - Inicia Storybook en modo desarrollo
|
|
134
|
-
- `npm run build-storybook` - Construye Storybook para producción
|
|
135
|
-
- `npm run dist` - Ejecuta el script de distribución personalizado
|
|
128
|
+
# 3) En el proyecto consumidor (p.ej. affiliations-web)
|
|
129
|
+
npm link @soyfri/shared-library
|
|
130
|
+
```
|
|
136
131
|
|
|
137
|
-
|
|
132
|
+
Para iterar en vivo deja corriendo `npm run dev` (tsup en watch): reescribe los archivos de `dist/` en cada cambio y el symlink se mantiene. Vuelve a correr `npm run dist` solo si **agregas o quitas** componentes/hooks (para regenerar el mapa `exports`). No corras `npm run clean` mientras el link esté activo: borra `dist/` y rompe el enlace.
|
|
138
133
|
|
|
139
|
-
|
|
134
|
+
> ⚠️ **React duplicado:** como `react`/`react-dom` son peers externalizados, con `npm link` puedes terminar con dos copias de React (errores de hooks). Si pasa, apunta el bundler del consumidor a su propio React (alias/dedupe de `react` y `react-dom` a `node_modules` del consumidor).
|
|
140
135
|
|
|
141
|
-
|
|
136
|
+
Para deshacer el link: `npm unlink @soyfri/shared-library` en el consumidor y `npm rm --global @soyfri/shared-library` (o `npm unlink` dentro de `dist/`).
|
|
142
137
|
|
|
143
|
-
|
|
144
|
-
npm run storybook
|
|
145
|
-
```
|
|
138
|
+
## 📜 Scripts Disponibles
|
|
146
139
|
|
|
147
|
-
|
|
140
|
+
- `npm run build` — build canónico con **Vite** (`vite build --mode lib`) → genera `dist/` (ESM `.js` + CJS `.cjs` + `.d.ts` + sourcemaps).
|
|
141
|
+
- `npm run dist` — `node build.js` → escribe `dist/package.json` con el mapa `exports` granular y copia el README. Se ejecuta **después** de `build`.
|
|
142
|
+
- `npm run dev` — `tsup --watch`, rebuild incremental para desarrollo local.
|
|
143
|
+
- `npm run storybook` — servidor de Storybook en `:6006`.
|
|
144
|
+
- `npm run build-storybook` — build estático de Storybook.
|
|
145
|
+
- `npm run build:css` / `watch:css` — compila el CSS de Tailwind por separado (`src/styles.css` → `dist/styles.css`).
|
|
146
|
+
- `npm run rm` — `node cleanDirectories.js`, elimina carpetas con prefijo `_` de `dist` antes de publicar.
|
|
147
|
+
- `npm run clean` — `rimraf dist`.
|
|
148
148
|
|
|
149
|
-
|
|
150
|
-
- Interactuar con las propiedades de cada componente
|
|
151
|
-
- Ver ejemplos de uso
|
|
152
|
-
- Acceder a la documentación detallada
|
|
149
|
+
> El pipeline completo de publicación es `build` → `dist` (igual que en CI). No hay runner de tests independiente: `npm test` es un stub.
|
|
153
150
|
|
|
154
|
-
|
|
151
|
+
## 📚 Storybook
|
|
152
|
+
|
|
153
|
+
Storybook (v9) es la forma principal de desarrollar, documentar y probar componentes.
|
|
155
154
|
|
|
156
155
|
```bash
|
|
157
|
-
npm run
|
|
156
|
+
npm run storybook # http://localhost:6006
|
|
157
|
+
npm run build-storybook # build estático
|
|
158
158
|
```
|
|
159
159
|
|
|
160
160
|
## 🧪 Testing
|
|
161
161
|
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
### Configuración de Testing
|
|
165
|
-
|
|
166
|
-
- **Vitest**: Para unit tests y testing de componentes
|
|
167
|
-
- **Playwright**: Para testing de browser
|
|
168
|
-
- **Storybook Test Addon**: Para testing de historias de Storybook
|
|
162
|
+
**Las historias son los tests.** Vitest ejecuta las historias de Storybook en un navegador real (Playwright, chromium headless) vía `@storybook/addon-vitest`; configuración en `vitest.config.ts` y `.storybook/`. Las historias usan aserciones de `storybook/test` (`expect`, `within`). **Chromatic** hace visual-regression sobre el Storybook publicado.
|
|
169
163
|
|
|
170
164
|
## 🔧 Tecnologías
|
|
171
165
|
|
|
172
|
-
### Dependencias
|
|
166
|
+
### Dependencias principales
|
|
173
167
|
|
|
174
|
-
- **React 19
|
|
175
|
-
- **Material-UI
|
|
176
|
-
- **
|
|
177
|
-
- **
|
|
168
|
+
- **React 19** — librería de UI
|
|
169
|
+
- **Material-UI v7** (`@mui/material`, `@mui/icons-material`, `@mui/lab`) — sistema de diseño
|
|
170
|
+
- **MUI X v8** (`@mui/x-date-pickers`, `@mui/x-date-pickers-pro`) — date/time pickers
|
|
171
|
+
- **react-hook-form 7** — formularios
|
|
172
|
+
- **dayjs** — fechas
|
|
173
|
+
- **Tailwind CSS 4** — utilidades de estilo
|
|
174
|
+
- **TypeScript 5.8** (`strict`) — tipado estático
|
|
178
175
|
|
|
179
|
-
### Herramientas de
|
|
176
|
+
### Herramientas de desarrollo
|
|
180
177
|
|
|
181
|
-
- **
|
|
182
|
-
- **
|
|
183
|
-
- **
|
|
184
|
-
- **Playwright
|
|
185
|
-
- **
|
|
178
|
+
- **Vite** (`--mode lib`) — bundler canónico de la librería
|
|
179
|
+
- **tsup** — build incremental en watch (dev)
|
|
180
|
+
- **Storybook 9** — documentación y desarrollo
|
|
181
|
+
- **Vitest + Playwright** — testing de historias
|
|
182
|
+
- **Chromatic** — visual-regression
|
|
183
|
+
- **Prettier** — formateo
|
|
186
184
|
|
|
187
185
|
## 📁 Estructura del Proyecto
|
|
188
186
|
|
|
189
187
|
```
|
|
190
|
-
shared-library/
|
|
191
|
-
├── .storybook/
|
|
188
|
+
shared-library-web/
|
|
189
|
+
├── .storybook/ # Configuración de Storybook (main.ts, preview.ts, vitest.setup.ts)
|
|
192
190
|
├── src/
|
|
193
|
-
│ ├── components/
|
|
194
|
-
│ │
|
|
195
|
-
│
|
|
196
|
-
│
|
|
197
|
-
│
|
|
198
|
-
│
|
|
199
|
-
│
|
|
200
|
-
│
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
├──
|
|
204
|
-
├──
|
|
205
|
-
├──
|
|
206
|
-
|
|
207
|
-
├── rollup.config.cjs
|
|
208
|
-
└── vitest.config.ts
|
|
191
|
+
│ ├── components/ # Componentes (un folder PascalCase por componente)
|
|
192
|
+
│ │ └── _shared/ # Helpers internos (mergeSx, resolvePreset, …)
|
|
193
|
+
│ ├── hooks/ # Hooks (ClipBoard)
|
|
194
|
+
│ ├── theme/ # tokens.ts + componentStyles.ts (sistema de presets)
|
|
195
|
+
│ ├── utils/ # Utilidades (scrollToTop)
|
|
196
|
+
│ ├── mui.ts # Pass-through de primitivas MUI
|
|
197
|
+
│ ├── index.ts # Barrel raíz (mui + utils + presets; NO componentes)
|
|
198
|
+
│ └── styles.css # Estilos globales / Tailwind
|
|
199
|
+
├── dist/ # Artefactos del build (generados)
|
|
200
|
+
├── build.js # Genera dist/package.json con el mapa `exports`
|
|
201
|
+
├── vite.config.js # Build canónico de la librería
|
|
202
|
+
├── tsup.config.js # Build watch (dev)
|
|
203
|
+
├── vitest.config.ts
|
|
204
|
+
└── package.json
|
|
209
205
|
```
|
|
210
206
|
|
|
211
|
-
###
|
|
212
|
-
|
|
213
|
-
Cada componente sigue una estructura consistente:
|
|
207
|
+
### Anatomía de un componente
|
|
214
208
|
|
|
215
209
|
```
|
|
216
210
|
ComponentName/
|
|
217
|
-
├── ComponentName.tsx
|
|
218
|
-
├──
|
|
219
|
-
├── ComponentName.
|
|
220
|
-
├──
|
|
221
|
-
|
|
211
|
+
├── ComponentName.tsx # Implementación (export const + export default)
|
|
212
|
+
├── index.ts # Barrel: componente + tipos
|
|
213
|
+
├── ComponentName.stories.tsx # Historias de Storybook
|
|
214
|
+
├── ComponentName.sx.ts # Builders de sx (opcional)
|
|
215
|
+
├── ComponentName.helpers.ts # Helpers (opcional)
|
|
216
|
+
├── ComponentName.definition.ts# Strings de código para los docs (opcional)
|
|
217
|
+
├── _parts/ # Subcomponentes internos (opcional)
|
|
218
|
+
└── _hooks/ # Hooks internos (opcional)
|
|
222
219
|
```
|
|
223
220
|
|
|
224
|
-
|
|
221
|
+
> Solo los folders cuyo nombre empieza con **mayúscula** se convierten en entry points públicos. Los folders en minúscula o con prefijo `_` (`_shared`, `_parts`, `_hooks`) son internos.
|
|
225
222
|
|
|
226
|
-
|
|
223
|
+
## 🚢 Publicación
|
|
227
224
|
|
|
228
|
-
|
|
229
|
-
2. Crea una rama para tu feature (`git checkout -b feature/nueva-funcionalidad`)
|
|
230
|
-
3. Commit tus cambios (`git commit -am 'Agrega nueva funcionalidad'`)
|
|
231
|
-
4. Push a la rama (`git push origin feature/nueva-funcionalidad`)
|
|
232
|
-
5. Crea un Pull Request
|
|
225
|
+
La publicación a npm es automática vía GitHub Actions (`.github/workflows/publish.yml`) al hacer **push a `main`**: `install` → `rm` → `build` → `dist` → `npm publish --access public` **desde la carpeta `dist/`** → notificación a Discord.
|
|
233
226
|
|
|
234
|
-
|
|
227
|
+
> El publish **siempre sale de `dist/`**, no de la raíz: es `dist/package.json` (generado por `npm run dist`) el que tiene el mapa `exports`, ya sin `scripts` ni `devDependencies`. El paquete que se sube a npm es el contenido de `dist/`, no el del repo.
|
|
235
228
|
|
|
236
|
-
|
|
229
|
+
**El versionado es manual:** sube el `version` en `package.json` antes de mergear a `main`, o npm rechazará re-publicar una versión existente.
|
|
230
|
+
|
|
231
|
+
### Publicar manualmente
|
|
232
|
+
|
|
233
|
+
Reproduce localmente lo que hace el CI, publicando desde `dist/`:
|
|
234
|
+
|
|
235
|
+
```bash
|
|
236
|
+
# 1) sube el "version" en package.json (raíz)
|
|
237
|
+
npm run rm # limpia carpetas _ de dist (si existe)
|
|
238
|
+
npm run build # Vite → dist/ (ESM + CJS + .d.ts)
|
|
239
|
+
npm run dist # genera dist/package.json con el mapa exports
|
|
240
|
+
cd dist
|
|
241
|
+
npm publish --access public
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
### Publicar una versión beta
|
|
245
|
+
|
|
246
|
+
Las betas usan un `version` con sufijo `-beta.N` (p.ej. `1.6.0-beta.1`). Dos caminos:
|
|
247
|
+
|
|
248
|
+
**A) Vía CI (como se hace hoy):** sube el `version` a `x.y.z-beta.N` y mergea a `main`; el pipeline la publica.
|
|
249
|
+
⚠️ El workflow publica con el dist-tag **`latest`** por defecto (no usa `--tag`), así que la beta quedará marcada como `latest` en npm. Si no quieres eso, usa el camino manual.
|
|
250
|
+
|
|
251
|
+
**B) Manual con dist-tag `beta`** (no toca `latest`):
|
|
237
252
|
|
|
238
|
-
|
|
253
|
+
```bash
|
|
254
|
+
# version = x.y.z-beta.N en package.json (raíz)
|
|
255
|
+
npm run build && npm run dist
|
|
256
|
+
cd dist
|
|
257
|
+
npm publish --access public --tag beta
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
Los consumidores la instalan con:
|
|
239
261
|
|
|
240
|
-
|
|
262
|
+
```bash
|
|
263
|
+
npm install @soyfri/shared-library@beta # última beta
|
|
264
|
+
npm install @soyfri/shared-library@1.6.0-beta.1 # una beta exacta
|
|
265
|
+
```
|
|
241
266
|
|
|
242
|
-
|
|
243
|
-
|
|
267
|
+
## 🤝 Contribución
|
|
268
|
+
|
|
269
|
+
1. Crea una rama para tu feature (`git checkout -b feature/nueva-funcionalidad`).
|
|
270
|
+
2. Desarrolla y documenta el componente en Storybook.
|
|
271
|
+
3. Commitea tus cambios y abre un Pull Request.
|
|
272
|
+
|
|
273
|
+
## 📄 Licencia
|
|
274
|
+
|
|
275
|
+
ISC License
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __defProp = Object.defineProperty;
|
|
3
|
+
var __defProps = Object.defineProperties;
|
|
4
|
+
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
3
5
|
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
4
6
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
7
|
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
@@ -15,49 +17,60 @@ var __spreadValues = (a, b) => {
|
|
|
15
17
|
}
|
|
16
18
|
return a;
|
|
17
19
|
};
|
|
20
|
+
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
21
|
+
var __objRest = (source, exclude) => {
|
|
22
|
+
var target = {};
|
|
23
|
+
for (var prop in source)
|
|
24
|
+
if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
|
|
25
|
+
target[prop] = source[prop];
|
|
26
|
+
if (source != null && __getOwnPropSymbols)
|
|
27
|
+
for (var prop of __getOwnPropSymbols(source)) {
|
|
28
|
+
if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
|
|
29
|
+
target[prop] = source[prop];
|
|
30
|
+
}
|
|
31
|
+
return target;
|
|
32
|
+
};
|
|
18
33
|
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
|
|
19
34
|
const jsxRuntime = require("react/jsx-runtime");
|
|
20
35
|
const React = require("react");
|
|
21
36
|
const material = require("@mui/material");
|
|
22
37
|
const MoreVertIcon = require("@mui/icons-material/MoreVert");
|
|
23
|
-
|
|
24
|
-
|
|
38
|
+
const ActionMenuContext = React.createContext(null);
|
|
39
|
+
const ActionMenu = ({
|
|
40
|
+
children,
|
|
25
41
|
trigger,
|
|
26
|
-
triggerTooltip
|
|
42
|
+
triggerTooltip,
|
|
27
43
|
anchorOrigin = { vertical: "bottom", horizontal: "right" },
|
|
28
44
|
transformOrigin = { vertical: "top", horizontal: "right" },
|
|
29
45
|
menuSx,
|
|
30
|
-
disabled = false
|
|
31
|
-
|
|
32
|
-
}) {
|
|
46
|
+
disabled = false
|
|
47
|
+
}) => {
|
|
33
48
|
const [anchorEl, setAnchorEl] = React.useState(null);
|
|
34
49
|
const open = Boolean(anchorEl);
|
|
35
|
-
const
|
|
50
|
+
const handleClose = () => setAnchorEl(null);
|
|
51
|
+
const openMenu = (event) => {
|
|
36
52
|
if (disabled) return;
|
|
37
53
|
event.stopPropagation();
|
|
38
54
|
setAnchorEl(event.currentTarget);
|
|
39
55
|
};
|
|
40
|
-
const
|
|
41
|
-
|
|
42
|
-
var _a;
|
|
43
|
-
event.stopPropagation();
|
|
44
|
-
(_a = item.onClick) == null ? void 0 : _a.call(item, event);
|
|
45
|
-
handleClose();
|
|
46
|
-
};
|
|
47
|
-
const triggerElement = trigger ? React.isValidElement(trigger) ? React.cloneElement(trigger, {
|
|
48
|
-
onClick: handleOpen,
|
|
56
|
+
const triggerElement = trigger ? React.cloneElement(trigger, {
|
|
57
|
+
onClick: openMenu,
|
|
49
58
|
disabled
|
|
50
|
-
}) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
59
|
+
}) : /* @__PURE__ */ jsxRuntime.jsx(material.Tooltip, { title: triggerTooltip, arrow: true, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
51
60
|
material.IconButton,
|
|
52
61
|
{
|
|
53
62
|
size: "small",
|
|
54
|
-
onClick:
|
|
63
|
+
onClick: openMenu,
|
|
55
64
|
disabled,
|
|
56
65
|
"aria-label": triggerTooltip,
|
|
57
66
|
children: /* @__PURE__ */ jsxRuntime.jsx(MoreVertIcon, { fontSize: "small" })
|
|
58
67
|
}
|
|
59
|
-
) })
|
|
60
|
-
|
|
68
|
+
) });
|
|
69
|
+
const paperSx = [
|
|
70
|
+
{ minWidth: 180 },
|
|
71
|
+
...Array.isArray(menuSx) ? menuSx : menuSx ? [menuSx] : []
|
|
72
|
+
];
|
|
73
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
61
74
|
triggerElement,
|
|
62
75
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
63
76
|
material.Menu,
|
|
@@ -67,41 +80,28 @@ function ActionMenu({
|
|
|
67
80
|
onClose: handleClose,
|
|
68
81
|
anchorOrigin,
|
|
69
82
|
transformOrigin,
|
|
70
|
-
slotProps: { paper: { sx:
|
|
71
|
-
children:
|
|
72
|
-
var _a;
|
|
73
|
-
const key = (_a = item.key) != null ? _a : `${String(item.label)}-${idx}`;
|
|
74
|
-
const node = /* @__PURE__ */ jsxRuntime.jsxs(
|
|
75
|
-
material.MenuItem,
|
|
76
|
-
{
|
|
77
|
-
disabled: item.disabled,
|
|
78
|
-
onClick: (event) => handleItemClick(event, item),
|
|
79
|
-
sx: (theme) => ({
|
|
80
|
-
color: item.danger ? theme.palette.error.main : "inherit",
|
|
81
|
-
"& .MuiListItemIcon-root": {
|
|
82
|
-
color: item.danger ? theme.palette.error.main : "inherit",
|
|
83
|
-
minWidth: 32
|
|
84
|
-
}
|
|
85
|
-
}),
|
|
86
|
-
children: [
|
|
87
|
-
item.icon && /* @__PURE__ */ jsxRuntime.jsx(material.ListItemIcon, { children: item.icon }),
|
|
88
|
-
/* @__PURE__ */ jsxRuntime.jsx(material.ListItemText, { primary: item.label })
|
|
89
|
-
]
|
|
90
|
-
},
|
|
91
|
-
key
|
|
92
|
-
);
|
|
93
|
-
if (item.dividerBefore && idx > 0) {
|
|
94
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(React.Fragment, { children: [
|
|
95
|
-
/* @__PURE__ */ jsxRuntime.jsx(material.Divider, {}),
|
|
96
|
-
node
|
|
97
|
-
] }, `${key}-frag`);
|
|
98
|
-
}
|
|
99
|
-
return node;
|
|
100
|
-
})
|
|
83
|
+
slotProps: { paper: { sx: paperSx } },
|
|
84
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(ActionMenuContext.Provider, { value: { close: handleClose }, children })
|
|
101
85
|
}
|
|
102
86
|
)
|
|
103
87
|
] });
|
|
104
|
-
}
|
|
88
|
+
};
|
|
89
|
+
const ActionMenuItem = React.forwardRef(
|
|
90
|
+
function ActionMenuItem2(_a, ref) {
|
|
91
|
+
var _b = _a, { icon, children, onClick } = _b, rest = __objRest(_b, ["icon", "children", "onClick"]);
|
|
92
|
+
const ctx = React.useContext(ActionMenuContext);
|
|
93
|
+
const handleClick = (event) => {
|
|
94
|
+
event.stopPropagation();
|
|
95
|
+
onClick == null ? void 0 : onClick(event);
|
|
96
|
+
ctx == null ? void 0 : ctx.close();
|
|
97
|
+
};
|
|
98
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(material.MenuItem, __spreadProps(__spreadValues({ ref, onClick: handleClick }, rest), { children: [
|
|
99
|
+
icon && /* @__PURE__ */ jsxRuntime.jsx(material.ListItemIcon, { sx: { minWidth: 32 }, children: icon }),
|
|
100
|
+
/* @__PURE__ */ jsxRuntime.jsx(material.ListItemText, { primary: children })
|
|
101
|
+
] }));
|
|
102
|
+
}
|
|
103
|
+
);
|
|
105
104
|
exports.ActionMenu = ActionMenu;
|
|
105
|
+
exports.ActionMenuItem = ActionMenuItem;
|
|
106
106
|
exports.default = ActionMenu;
|
|
107
107
|
//# sourceMappingURL=ActionMenu.cjs.map
|