@m4l/components 8.1.0-beta.devManuela.TextField → 8.1.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.
Files changed (143) hide show
  1. package/@types/types.d.ts +37 -11
  2. package/components/ControlIncrement/ControlIncrement.d.ts +5 -0
  3. package/components/ControlIncrement/ControlIncrement.styles.d.ts +8 -0
  4. package/components/ControlIncrement/constants.d.ts +25 -0
  5. package/components/ControlIncrement/slots/ControlIncrementEnum.d.ts +6 -0
  6. package/components/ControlIncrement/slots/ControltrolIncrementSlots.d.ts +14 -0
  7. package/components/ControlIncrement/slots/index.d.ts +2 -0
  8. package/components/ControlIncrement/stories/ControlClick/ControlIncrement.controlclick.stories.d.ts +13 -0
  9. package/components/ControlIncrement/stories/DefaultAndDisabled/ControlIncrement.defaultanddisabled.stories.d.ts +17 -0
  10. package/components/ControlIncrement/stories/Sizes/ControlIncrement.sizes.stories.d.ts +21 -0
  11. package/components/ControlIncrement/types.d.ts +56 -0
  12. package/components/DataGrid/classes/index.d.ts +1 -1
  13. package/components/DynamicFilter/DynamicFIlter.styles.js +115 -39
  14. package/components/DynamicFilter/slots/dynamicFilterSlots.d.ts +1 -1
  15. package/components/DynamicSort/slots/DynamicSortSlots.d.ts +1 -1
  16. package/components/GridLayout/classes/index.d.ts +1 -1
  17. package/components/GridLayout/subcomponents/withSizeProvider/index.d.ts +1 -1
  18. package/components/HelperError/HelperError.d.ts +1 -1
  19. package/components/HelperError/HelperError.js +21 -2
  20. package/components/HelperError/HelperError.styles.js +11 -2
  21. package/components/HelperError/constant.d.ts +9 -0
  22. package/components/HelperError/constant.js +3 -1
  23. package/components/HelperError/slots/HelperErrorEnum.d.ts +3 -0
  24. package/components/HelperError/slots/HelperErrorSlots.d.ts +4 -4
  25. package/components/HelperError/slots/HelperErrorSlots.js +1 -1
  26. package/components/HelperError/types.d.ts +28 -5
  27. package/components/Icon/Icon.d.ts +4 -3
  28. package/components/Icon/Icon.js +54 -71
  29. package/components/Icon/Icon.styles.js +85 -31
  30. package/components/Icon/slots/IconEnum.d.ts +2 -1
  31. package/components/Icon/slots/IconEnum.js +1 -0
  32. package/components/Icon/slots/IconSlots.d.ts +3 -0
  33. package/components/Icon/slots/IconSlots.js +7 -1
  34. package/components/Icon/stories/DefaultWithProps/Icon.defaultWithProps.stories.d.ts +35 -0
  35. package/components/Icon/stories/Preset/Icon.preset.stories.d.ts +16 -0
  36. package/components/Icon/stories/Semantic/Icon.semantic.stories.d.ts +30 -0
  37. package/components/Icon/stories/Sizes/icon.sizes.stories.d.ts +40 -0
  38. package/components/Icon/types.d.ts +16 -12
  39. package/components/InputNumberSpinner/InputNumberSpinner.d.ts +9 -0
  40. package/components/InputNumberSpinner/InputNumberSpinner.styles.d.ts +8 -0
  41. package/components/InputNumberSpinner/constants.d.ts +9 -0
  42. package/components/InputNumberSpinner/hooks/types.d.ts +13 -0
  43. package/components/InputNumberSpinner/hooks/useInputNumberSpinner.d.ts +19 -0
  44. package/components/InputNumberSpinner/index.d.ts +2 -0
  45. package/components/InputNumberSpinner/slots/InputNumberSpinnerEnum.d.ts +7 -0
  46. package/components/InputNumberSpinner/slots/InputNumberSpinnerSlots.d.ts +15 -0
  47. package/components/InputNumberSpinner/slots/index.d.ts +2 -0
  48. package/components/InputNumberSpinner/stories/Default/InputNumberSpinner.default.stories.d.ts +25 -0
  49. package/components/InputNumberSpinner/stories/Error/InputNumberSpinner.error.stories.d.ts +25 -0
  50. package/components/InputNumberSpinner/stories/Sizes/InputNumberSpinner.sizes.stories.d.ts +41 -0
  51. package/components/InputNumberSpinner/stories/Variants/InputNumberSpinner.variants.stories.d.ts +25 -0
  52. package/components/InputNumberSpinner/types.d.ts +64 -0
  53. package/components/Label/Label.d.ts +2 -2
  54. package/components/Label/Label.styles.js +5 -5
  55. package/components/Label/slots/LabelSlots.d.ts +1 -1
  56. package/components/Label/types.d.ts +1 -1
  57. package/components/MFLoader/MFLoader.d.ts +1 -1
  58. package/components/NavLink/NavLink.d.ts +1 -1
  59. package/components/PropertyValue/classes/index.d.ts +1 -1
  60. package/components/SideBar/classes/index.d.ts +1 -1
  61. package/components/SideBar/subcomponents/ContentGroups/subcomponents/ItemListRoot/subcomponents/NavListSub/subcomponents/NavItemSub/styles.d.ts +1 -1
  62. package/components/SideBar/subcomponents/ContentGroups/subcomponents/ItemListRoot/subcomponents/NavListSub/subcomponents/NavItemSub/subcomponents/NavItemSubContent/styles.d.ts +1 -1
  63. package/components/ToastContainer/subcomponents/ToastMessage/useToastMessage.d.ts +5 -1
  64. package/components/ToastContainer/subcomponents/ToastMessage/useToastMessage.js +2 -1
  65. package/components/areas/components/AreasViewer/classes/index.d.ts +1 -1
  66. package/components/areas/components/AreasViewer/subcomponents/Area/subcomponents/PanelWindows/index.d.ts +1 -1
  67. package/components/areas/contexts/AreasContext/store.d.ts +1 -1
  68. package/components/areas/contexts/AreasContext/store.js +199 -67
  69. package/components/extended/react-resizable/Resizable/slots/ResizableSlots.d.ts +1 -1
  70. package/components/extended/react-resizable/ResizableBox/slots/ResizableBoxSlots.d.ts +1 -1
  71. package/components/hook-form/RHFAutocomplete/classes/index.d.ts +1 -1
  72. package/components/hook-form/RHFAutocompleteAsync/subcomponents/ComponentTypeImage/index.d.ts +1 -1
  73. package/components/hook-form/RHFAutocompleteAsync/subcomponents/ComponentTypeText/index.d.ts +1 -1
  74. package/components/hook-form/RHFCheckbox/styles.d.ts +1 -1
  75. package/components/hook-form/RHFTextField/RHFTextField.d.ts +4 -0
  76. package/components/hook-form/RHFTextField/RHFTextField.styles.js +2 -2
  77. package/components/hook-form/RHFTextField/slots/RHFTextFieldSlots.d.ts +1 -1
  78. package/components/hook-form/RHFUpload/RHFUploadImage/subcomponents/UploadImage/index.d.ts +1 -1
  79. package/components/hook-form/RHFormContext/classes/index.d.ts +1 -1
  80. package/components/maps/components/Map/contexts/MapContext/store.d.ts +1 -1
  81. package/components/maps/components/Map/contexts/MapContext/store.js +166 -106
  82. package/components/maps/components/Map/hooks/useAutoFocus/index.d.ts +1 -1
  83. package/components/maps/components/Map/pluginLayers/PolylineWithArrows/index.d.ts +1 -1
  84. package/components/maps/components/Map/subcomponents/LayersContainer/subcomponents/MyLayer/index.d.ts +1 -1
  85. package/components/mui_extended/Accordion/Accordion.d.ts +1 -1
  86. package/components/mui_extended/Badge/slots/BadgeSlots.d.ts +1 -1
  87. package/components/mui_extended/Button/styles.d.ts +1 -1
  88. package/components/mui_extended/IconButton/IconButton.d.ts +4 -4
  89. package/components/mui_extended/IconButton/IconButton.js +65 -29
  90. package/components/mui_extended/IconButton/IconButton.styles.js +20 -5
  91. package/components/mui_extended/IconButton/slots/IconButtonEnum.d.ts +2 -1
  92. package/components/mui_extended/IconButton/slots/IconButtonEnum.js +1 -0
  93. package/components/mui_extended/IconButton/slots/IconButtonSlots.d.ts +5 -2
  94. package/components/mui_extended/IconButton/slots/IconButtonSlots.js +7 -1
  95. package/components/mui_extended/IconButton/types.d.ts +46 -2
  96. package/components/mui_extended/LoadingButton/index.d.ts +1 -1
  97. package/components/mui_extended/MenuActions/slots/MenuActionsSlots.d.ts +1 -1
  98. package/components/mui_extended/MenuItem/MenuItem.d.ts +11 -0
  99. package/components/mui_extended/MenuItem/MenuItem.stories.d.ts +37 -0
  100. package/components/mui_extended/MenuItem/MenuItem.styles.d.ts +2 -0
  101. package/components/mui_extended/MenuItem/constants.d.ts +8 -0
  102. package/components/mui_extended/MenuItem/index.d.ts +2 -0
  103. package/components/mui_extended/MenuItem/slots/MenuItemEnum.d.ts +5 -0
  104. package/components/mui_extended/MenuItem/slots/MenuItemSlots.d.ts +11 -0
  105. package/components/mui_extended/MenuItem/slots/index.d.ts +2 -0
  106. package/components/mui_extended/MenuItem/types.d.ts +41 -0
  107. package/components/mui_extended/Select/Select.d.ts +9 -0
  108. package/components/mui_extended/Select/Select.styles.d.ts +2 -0
  109. package/components/mui_extended/Select/constants.d.ts +8 -0
  110. package/components/mui_extended/Select/index.d.ts +2 -0
  111. package/components/mui_extended/Select/slots/SelectEnum.d.ts +6 -0
  112. package/components/mui_extended/Select/slots/SelectSlots.d.ts +12 -0
  113. package/components/mui_extended/Select/slots/index.d.ts +2 -0
  114. package/components/mui_extended/Select/stories/SelectOutlied.stories.d.ts +75 -0
  115. package/components/mui_extended/Select/stories/SelectStandar.stories.d.ts +29 -0
  116. package/components/mui_extended/Select/types.d.ts +66 -0
  117. package/components/mui_extended/Skeleton/Skeleton.d.ts +1 -1
  118. package/components/mui_extended/Skeleton/Slots/skeletonSlots.d.ts +1 -1
  119. package/components/mui_extended/Skeleton/skeleton.styles.js +1 -1
  120. package/components/mui_extended/Tabs/styles.d.ts +1 -1
  121. package/components/mui_extended/TextField/TextField.d.ts +4 -0
  122. package/components/mui_extended/TextField/slots/TextFieldSlots.d.ts +2 -2
  123. package/components/mui_extended/Typography/Typography.d.ts +1 -1
  124. package/components/mui_extended/Typography/slots/typographySlots.d.ts +1 -1
  125. package/components/mui_extended/Typography/typography.styles.js +1 -1
  126. package/components/popups/components/PopupsProvider/contexts/PopupsContext/store.d.ts +1 -1
  127. package/components/popups/components/PopupsProvider/contexts/PopupsContext/store.js +57 -25
  128. package/contexts/RealTimeContext/store.d.ts +1 -1
  129. package/contexts/RealTimeContext/store.js +15 -7
  130. package/hooks/useSizeContainer/index.d.ts +1 -1
  131. package/package.json +1 -1
  132. package/components/Icon/Icon.stories.d.ts +0 -166
  133. package/components/hook-form/RHFInputNumberSpinner/RHFInputNumberSpinner.d.ts +0 -5
  134. package/components/hook-form/RHFInputNumberSpinner/RHFInputNumberSpinner.stories.d.ts +0 -21
  135. package/components/hook-form/RHFInputNumberSpinner/RHFInputNumberSpinner.styles.d.ts +0 -2
  136. package/components/hook-form/RHFInputNumberSpinner/constants.d.ts +0 -1
  137. package/components/hook-form/RHFInputNumberSpinner/index.d.ts +0 -1
  138. package/components/hook-form/RHFInputNumberSpinner/slots/RHFInputNumberSpinnerSlots.d.ts +0 -23
  139. package/components/hook-form/RHFInputNumberSpinner/slots/RHFInputNumberSpinnnerEnum.d.ts +0 -9
  140. package/components/hook-form/RHFInputNumberSpinner/slots/index.d.ts +0 -2
  141. package/components/hook-form/RHFInputNumberSpinner/subcomponents/SkeletonSpinner/index.d.ts +0 -4
  142. package/components/hook-form/RHFInputNumberSpinner/types.d.ts +0 -21
  143. package/components/hook-form/RHFInputNumberSpinner/useRHFInputNumberSpinner.d.ts +0 -13
@@ -7,7 +7,7 @@ import { HelperErrorProps } from './types';
7
7
  * @returns {JSX.Element} The rendered HelperError component.
8
8
  * @author Bruce Escobar - automatic
9
9
  * @createdAt 2024-10-22 09:42:38 - automatic
10
- * @updatedAt 2024-10-22 09:42:38 - automatic
10
+ * @updatedAt 2024-10-22 19:47:05 - automatic
11
11
  * @updatedUser Bruce Escobar - automatic
12
12
  */
13
13
  export declare const HelperError: (props: HelperErrorProps) => import("react/jsx-runtime").JSX.Element;
@@ -1,11 +1,30 @@
1
1
  import { jsx } from "react/jsx-runtime";
2
+ import { useTheme } from "@mui/material";
3
+ import { getPropertyByString } from "@m4l/core";
4
+ import { clsx } from "clsx";
5
+ import { H as HELPER_ERROR_SPINNER_SPECIFY } from "./constant.js";
6
+ import { u as useComponentSize } from "../../hooks/useComponentSize/useComponentSize.js";
2
7
  import { T as TypographyStyled } from "./slots/HelperErrorSlots.js";
3
8
  const HelperError = (props) => {
4
- const { message = "", skeletonWidth } = props;
9
+ const { message = "", skeletonWidth, size = "medium", className } = props;
10
+ const { currentSize } = useComponentSize(size);
11
+ const adjustedSize = currentSize === "small" || currentSize === "medium" ? currentSize : "medium";
12
+ const theme = useTheme();
13
+ const paletteColor = getPropertyByString(
14
+ theme.palette,
15
+ "error",
16
+ theme.palette.default
17
+ );
18
+ const ownerState = {
19
+ helperErrorPaletteColor: paletteColor,
20
+ helperErrorSizes: size
21
+ };
5
22
  return /* @__PURE__ */ jsx(
6
23
  TypographyStyled,
7
24
  {
8
- ownerState: {},
25
+ className: clsx(HELPER_ERROR_SPINNER_SPECIFY, className),
26
+ ownerState: { ...ownerState, size: currentSize },
27
+ size: adjustedSize,
9
28
  variant: "body",
10
29
  skeletonWidth,
11
30
  children: message
@@ -1,10 +1,15 @@
1
+ import { H as HELPER_ERROR_SPINNER_SPECIFY } from "./constant.js";
1
2
  const helperErrorStyles = {
2
3
  /**
3
4
  * Estilos para el slot del root HelperError
5
+ * @author Bruce Escobar - automatic
6
+ * @createdAt 2024-10-22 19:27:21 - automatic
7
+ * @updatedAt 2024-10-22 19:47:05 - automatic
8
+ * @updatedUser Bruce Escobar - automatic
4
9
  */
5
10
  root: ({ theme, ownerState }) => ({
6
- "& .MuiTypography-root": {
7
- color: theme.vars.palette.error.main,
11
+ [`&.${HELPER_ERROR_SPINNER_SPECIFY}`]: {
12
+ color: ownerState.helperErrorPaletteColor?.main,
8
13
  ...ownerState.size === "small" && {
9
14
  ...theme.generalSettings.isMobile ? { height: theme.size.typography.mobile.small } : { height: theme.size.typography.desktop.small }
10
15
  },
@@ -15,6 +20,10 @@ const helperErrorStyles = {
15
20
  }),
16
21
  /**
17
22
  * Estilos personalizados Skeleton
23
+ * @author Bruce Escobar - automatic
24
+ * @createdAt 2024-10-22 19:27:21 - automatic
25
+ * @updatedAt 2024-10-22 19:47:05 - automatic
26
+ * @updatedUser Bruce Escobar - automatic
18
27
  */
19
28
  skeletonStyled: ({ theme, ownerState }) => ({
20
29
  ...ownerState.size === "small" && {
@@ -1 +1,10 @@
1
+ /**
2
+ * A constant representing the key for the M4L Helper Error component.
3
+ * This key is used to uniquely identify the Helper Error component within the application.
4
+ */
1
5
  export declare const HELPER_ERROR_KEY_COMPONENT = "M4LHelperError";
6
+ /**
7
+ * Nombre de clase creado para aportar especificidad a los estilos del componente. Es usado para sobreescribir los estilos de MUI sin
8
+ * tener la necesidad de agregar valores en !important.
9
+ */
10
+ export declare const HELPER_ERROR_SPINNER_SPECIFY = "M4lclassCssSpecificity";
@@ -1,4 +1,6 @@
1
1
  const HELPER_ERROR_KEY_COMPONENT = "M4LHelperError";
2
+ const HELPER_ERROR_SPINNER_SPECIFY = "M4lclassCssSpecificity";
2
3
  export {
3
- HELPER_ERROR_KEY_COMPONENT as H
4
+ HELPER_ERROR_SPINNER_SPECIFY as H,
5
+ HELPER_ERROR_KEY_COMPONENT as a
4
6
  };
@@ -1,3 +1,6 @@
1
+ /**
2
+ * Enum representing the different slots available for the HelperError component.
3
+ */
1
4
  export declare enum HelperErrorSlots {
2
5
  root = "root",
3
6
  skeletonStyled = "skeletonStyled"
@@ -1,6 +1,6 @@
1
- export declare const TypographyStyled: import('@emotion/styled').StyledComponent<Pick<import('../../mui_extended/Typography/types').TypographyProps, keyof import('../../mui_extended/Typography/types').TypographyProps> & import('@mui/system').MUIStyledCommonProps<import('@mui/material/styles').Theme> & Partial<import('..').HelperErrorProps> & Record<string, unknown> & {
2
- ownerState: Partial<import('..').HelperErrorProps> & Record<string, unknown>;
1
+ export declare const TypographyStyled: import('@emotion/styled').StyledComponent<Pick<import('../../mui_extended/Typography/types').TypographyProps, keyof import('../../mui_extended/Typography/types').TypographyProps> & import('@mui/system').MUIStyledCommonProps<import('@mui/material/styles').Theme> & Partial<import('../types').HelperErrorOwnerState> & Record<string, unknown> & {
2
+ ownerState: Partial<import('../types').HelperErrorOwnerState> & Record<string, unknown>;
3
3
  }, {}, {}>;
4
- export declare const SkeletonStyled: import('@emotion/styled').StyledComponent<Pick<import('../../mui_extended/Skeleton/types').SkeletonProps, keyof import('../../mui_extended/Skeleton/types').SkeletonProps> & import('@mui/system').MUIStyledCommonProps<import('@mui/material/styles').Theme> & Partial<import('..').HelperErrorProps> & Record<string, unknown> & {
5
- ownerState: Partial<import('..').HelperErrorProps> & Record<string, unknown>;
4
+ export declare const SkeletonStyled: import('@emotion/styled').StyledComponent<Pick<import('../../mui_extended/Skeleton/types').SkeletonProps, keyof import('../../mui_extended/Skeleton/types').SkeletonProps> & import('@mui/system').MUIStyledCommonProps<import('@mui/material/styles').Theme> & Partial<import('../types').HelperErrorOwnerState> & Record<string, unknown> & {
5
+ ownerState: Partial<import('../types').HelperErrorOwnerState> & Record<string, unknown>;
6
6
  }, {}, {}>;
@@ -1,6 +1,6 @@
1
1
  import { styled } from "@mui/material/styles";
2
2
  import { H as HelperErrorSlots } from "./HelperErrorEnum.js";
3
- import { H as HELPER_ERROR_KEY_COMPONENT } from "../constant.js";
3
+ import { a as HELPER_ERROR_KEY_COMPONENT } from "../constant.js";
4
4
  import { h as helperErrorStyles } from "../HelperError.styles.js";
5
5
  import { T as Typography } from "../../mui_extended/Typography/Typography.js";
6
6
  import { S as Skeleton } from "../../mui_extended/Skeleton/Skeleton.js";
@@ -1,10 +1,9 @@
1
- import { Theme } from '@mui/material';
1
+ import { PaletteColor, Theme } from '@mui/material';
2
2
  import { TypographyProps } from '../mui_extended/Typography/types';
3
3
  import { HELPER_ERROR_KEY_COMPONENT } from './constant';
4
4
  import { HelperErrorSlots } from './slots';
5
5
  import { OverridesStyleRules } from '@mui/material/styles/overrides';
6
- import { Sizes } from '@m4l/styles';
7
- export type HelperErrorSize = 'small' | 'medium';
6
+ import { ComponentPalletColor, Sizes } from '@m4l/styles';
8
7
  /**
9
8
  * Extiende de TypographyProps para incluir propiedades de esqueleto y añade la propiedad `message`.
10
9
  * `message` es el mensaje de error a mostrar.
@@ -14,13 +13,37 @@ export interface HelperErrorProps extends Pick<TypographyProps, 'skeletonWidth'>
14
13
  * Mensaje que se visualiza en el componente HelperError.
15
14
  */
16
15
  message: string | undefined;
17
- size?: Sizes;
16
+ /**
17
+ * Propiedad que permite administrar estilos para su uso en los slots
18
+ */
19
+ className?: string;
20
+ /**
21
+ * Tamaño del componente, puede ser uno de los valores definidos en 'small' , 'medium'.
22
+ */
23
+ size?: Extract<Sizes, 'small' | 'medium'>;
18
24
  }
19
25
  /**
20
26
  * Representa el estado del componente HelperError, incluyendo todas las propiedades de HelperErrorProps.
21
27
  * Se utiliza para controlar el estilo del componente basado en su estado.
22
28
  */
23
- export type HelperErrorOwnerState = HelperErrorProps;
29
+ export interface HelperErrorOwnerState {
30
+ /**
31
+ * Color de la paleta del campo de texto.
32
+ */
33
+ helperErrorPaletteColor: PaletteColor;
34
+ /**
35
+ * Color de la paleta del componente del campo de texto.
36
+ */
37
+ helperErrorComponentPaletteColor?: ComponentPalletColor;
38
+ /**
39
+ * Tamaño del campo de texto.
40
+ */
41
+ helperErrorSizes: Extract<Sizes, 'small' | 'medium'>;
42
+ /**
43
+ * Indica si el campo de texto es error.
44
+ */
45
+ helperStateError?: boolean;
46
+ }
24
47
  /**
25
48
  * Define los tipos de slots disponibles en HelperError utilizando las claves de HelperErrorSlots.
26
49
  */
@@ -1,8 +1,9 @@
1
1
  import { IconProps } from './types';
2
2
  /**
3
3
  * Provee de un medio por el cual se carga un icono svg en la plataforma web, aporta su versión provisional de carga en red.
4
- */
5
- /**
6
- * TODO: Documentar
4
+ * @author Bruce Escobar - automatic
5
+ * @createdAt 2024-10-22 19:08:59 - automatic
6
+ * @updatedAt 2024-10-22 19:09:00 - automatic
7
+ * @updatedUser Bruce Escobar - automatic
7
8
  */
8
9
  export declare const Icon: (props: IconProps) => import("react/jsx-runtime").JSX.Element;
@@ -1,17 +1,16 @@
1
- import { jsx, Fragment } from "react/jsx-runtime";
2
- import { T as TEST_PROP_ID } from "../../test/constants_no_mock.js";
3
- import { g as getNameDataTestId } from "../../test/getNameDataTestId.js";
1
+ import { jsxs, Fragment, jsx } from "react/jsx-runtime";
2
+ import { useModuleSkeleton } from "@m4l/core";
3
+ import { a as getPropDataTestId } from "../../test/getNameDataTestId.js";
4
4
  import { I as ICON_PREFIX } from "./constants.js";
5
5
  import { u as useComponentSize } from "../../hooks/useComponentSize/useComponentSize.js";
6
- import { T as TooltipStyled, R as RootStyled, I as IconStyled } from "./slots/IconSlots.js";
6
+ import { T as TooltipStyled, R as RootStyled, I as IconStyled, a as IconSkeletonStyled } from "./slots/IconSlots.js";
7
7
  import { I as IconSlots } from "./slots/IconEnum.js";
8
8
  const Icon = (props) => {
9
9
  const {
10
10
  src,
11
- size = "small",
11
+ size = "medium",
12
12
  rotationAngle,
13
13
  tooltipContent,
14
- securityArea,
15
14
  color = "text.primary",
16
15
  className,
17
16
  placement = "bottom",
@@ -19,72 +18,56 @@ const Icon = (props) => {
19
18
  disabled
20
19
  } = props;
21
20
  const { currentSize } = useComponentSize(size);
22
- return /* @__PURE__ */ jsx(Fragment, { children: tooltipContent ? /* @__PURE__ */ jsx(
23
- TooltipStyled,
24
- {
25
- title: tooltipContent,
26
- ownerState: {},
27
- placement,
28
- ...process.env.NODE_ENV !== "production" ? {
29
- [TEST_PROP_ID]: getNameDataTestId(
30
- ICON_PREFIX,
31
- IconSlots.tooltip,
32
- instaceDataTestId
21
+ const isSkeleton = useModuleSkeleton();
22
+ const ownerState = {
23
+ iconSize: currentSize,
24
+ iconColor: color,
25
+ iconSrc: src,
26
+ iconDisabled: disabled,
27
+ iconRotationAngle: rotationAngle,
28
+ isSkeleton
29
+ };
30
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
31
+ tooltipContent ? /* @__PURE__ */ jsx(
32
+ TooltipStyled,
33
+ {
34
+ title: tooltipContent,
35
+ ownerState: { ...ownerState },
36
+ placement,
37
+ ...getPropDataTestId(ICON_PREFIX, IconSlots.tooltip, instaceDataTestId),
38
+ children: /* @__PURE__ */ jsx(
39
+ RootStyled,
40
+ {
41
+ className,
42
+ ownerState: { ...ownerState },
43
+ ...getPropDataTestId(ICON_PREFIX, IconSlots.root, instaceDataTestId),
44
+ children: /* @__PURE__ */ jsx(
45
+ IconStyled,
46
+ {
47
+ ownerState: { ...ownerState },
48
+ ...getPropDataTestId(ICON_PREFIX, IconSlots.icon, instaceDataTestId)
49
+ }
50
+ )
51
+ }
33
52
  )
34
- } : {},
35
- children: /* @__PURE__ */ jsx(
36
- RootStyled,
37
- {
38
- className,
39
- ownerState: { securityArea, size: currentSize },
40
- ...process.env.NODE_ENV !== "production" ? {
41
- [TEST_PROP_ID]: getNameDataTestId(ICON_PREFIX, IconSlots.root, instaceDataTestId)
42
- } : {},
43
- children: /* @__PURE__ */ jsx(
44
- IconStyled,
45
- {
46
- ownerState: {
47
- src,
48
- rotationAngle,
49
- size: currentSize,
50
- disabled,
51
- color
52
- },
53
- ...process.env.NODE_ENV !== "production" ? {
54
- [TEST_PROP_ID]: getNameDataTestId(
55
- ICON_PREFIX,
56
- IconSlots.icon,
57
- instaceDataTestId
58
- )
59
- } : {}
60
- }
61
- )
62
- }
63
- )
64
- }
65
- ) : /* @__PURE__ */ jsx(
66
- RootStyled,
67
- {
68
- className,
69
- ownerState: { securityArea, size: currentSize },
70
- ...process.env.NODE_ENV !== "production" ? { [TEST_PROP_ID]: getNameDataTestId(ICON_PREFIX, IconSlots.root, instaceDataTestId) } : {},
71
- children: /* @__PURE__ */ jsx(
72
- IconStyled,
73
- {
74
- ownerState: {
75
- src,
76
- rotationAngle,
77
- size: currentSize,
78
- color,
79
- disabled
80
- },
81
- ...process.env.NODE_ENV !== "production" ? {
82
- [TEST_PROP_ID]: getNameDataTestId(ICON_PREFIX, IconSlots.icon, instaceDataTestId)
83
- } : {}
84
- }
85
- )
86
- }
87
- ) });
53
+ }
54
+ ) : /* @__PURE__ */ jsx(
55
+ RootStyled,
56
+ {
57
+ className,
58
+ ownerState: { ...ownerState },
59
+ ...getPropDataTestId(ICON_PREFIX, IconSlots.root, instaceDataTestId),
60
+ children: /* @__PURE__ */ jsx(
61
+ IconStyled,
62
+ {
63
+ ownerState: { ...ownerState },
64
+ ...getPropDataTestId(ICON_PREFIX, IconSlots.icon, instaceDataTestId)
65
+ }
66
+ )
67
+ }
68
+ ),
69
+ isSkeleton && /* @__PURE__ */ jsx(IconSkeletonStyled, { variant: "rectangular", ownerState: { ...ownerState } })
70
+ ] });
88
71
  };
89
72
  export {
90
73
  Icon as I
@@ -1,54 +1,108 @@
1
1
  import { getPropertyByString } from "@m4l/core";
2
2
  const iconStyles = {
3
3
  /**
4
- * TODO: Documentar
4
+ * Slot root: Contiene los estilos para el contenedor principal del ícono.
5
+ * Este slot es responsable de definir el layout del ícono dentro de su contenedor,
6
+ * incluyendo propiedades de flexbox para centrar su contenido, y el tamaño
7
+ * dinámico basado en el dispositivo (móvil o desktop) y el tamaño del ícono
8
+ * ('small' o 'medium'). También incluye animaciones como la transición
9
+ * suave de transformación.
10
+ * @author Bruce Escobar - automatic
11
+ * @createdAt 2024-10-22 19:08:59 - automatic
12
+ * @updatedAt 2024-10-22 19:09:00 - automatic
13
+ * @updatedUser Bruce Escobar - automatic
5
14
  */
6
15
  root: ({ theme, ownerState }) => ({
7
- display: "flex",
16
+ display: ownerState.isSkeleton ? "none" : "flex",
8
17
  justifyContent: "center",
9
18
  alignItems: "center",
10
19
  width: "fit-content",
11
20
  transition: "transform 0.5s ease-in-out",
12
- borderRadius: ownerState.skeleton ? "4px" : void 0,
13
- backgroundColor: ownerState.skeleton ? `${theme.vars.palette.skeleton.default} !important` : void 0,
14
- padding: ownerState.securityArea ? "8px" : "0px"
21
+ ...ownerState.iconSize === "medium" && {
22
+ ...theme.generalSettings.isMobile ? {
23
+ width: theme.vars.size.mobile.medium.base,
24
+ height: theme.vars.size.mobile.medium.base
25
+ } : {
26
+ width: theme.vars.size.desktop.medium.base,
27
+ height: theme.vars.size.desktop.medium.base
28
+ }
29
+ },
30
+ ...ownerState.iconSize === "small" && {
31
+ ...theme.generalSettings.isMobile ? {
32
+ width: theme.vars.size.mobile.small.base,
33
+ height: theme.vars.size.mobile.small.base
34
+ } : {
35
+ width: theme.vars.size.desktop.small.base,
36
+ height: theme.vars.size.desktop.small.base
37
+ }
38
+ }
15
39
  }),
16
- tooltip: () => ({}),
17
40
  /**
18
- * TODO: Documentar
41
+ * Slot icon: Define los estilos para el ícono que se carga dinámicamente.
42
+ * Este slot gestiona cómo se carga y muestra el recurso gráfico en formato de máscara,
43
+ * incluyendo su posición, repetición y ajuste de tamaño. También controla la rotación
44
+ * del ícono basada en el ángulo de rotación proporcionado, y el color de fondo que
45
+ * se ajusta de acuerdo con el estado de deshabilitación o no del ícono.
46
+ * @author Bruce Escobar - automatic
47
+ * @createdAt 2024-10-22 19:08:59 - automatic
48
+ * @updatedAt 2024-10-22 19:09:00 - automatic
49
+ * @updatedUser Bruce Escobar - automatic
19
50
  */
20
51
  icon: ({ theme, ownerState }) => ({
21
52
  maskPosition: "center",
22
53
  maskRepeat: "no-repeat",
23
54
  maskSize: "cover",
24
55
  WebkitMaskRepeat: "no-repeat",
25
- mask: `url(${ownerState.src})`,
26
- WebkitMask: `url(${ownerState.src})`,
56
+ mask: `url(${ownerState.iconSrc})`,
57
+ WebkitMask: `url(${ownerState.iconSrc})`,
27
58
  WebkitMaskSize: "cover",
28
- ...ownerState.rotationAngle && {
29
- transform: `rotate(${ownerState.rotationAngle}deg)`
30
- },
31
- backgroundColor: !ownerState.disabled ? getPropertyByString(theme.vars.palette, ownerState.color || "text.primary") : theme.vars.palette.text.disabled,
32
- ...ownerState.size === "medium" && {
33
- ...theme.generalSettings.isMobile ? {
34
- minWidth: theme.vars.size.mobile.medium.action,
35
- minHeight: theme.vars.size.mobile.medium.action
36
- } : {
37
- minWidth: theme.vars.size.desktop.medium.base,
38
- minHeight: theme.vars.size.desktop.medium.base
39
- }
40
- },
41
- ...ownerState.size === "small" && {
42
- ...theme.generalSettings.isMobile ? {
43
- minWidth: theme.vars.size.mobile.small.base,
44
- minHeight: theme.vars.size.mobile.small.action
45
- } : {
46
- minWidth: theme.vars.size.desktop.small.base,
47
- minHeight: theme.vars.size.desktop.small.base
48
- }
59
+ ...ownerState.iconRotationAngle && {
60
+ transform: `rotate(${ownerState.iconRotationAngle}deg)`
49
61
  },
62
+ backgroundColor: !ownerState.iconDisabled ? getPropertyByString(theme.vars.palette, String(ownerState.iconColor) || "text.primary") : theme.vars.palette.text.disabled,
63
+ width: "inherit",
64
+ height: "inherit",
50
65
  variants: []
51
- })
66
+ }),
67
+ /**
68
+ * Slot iconSkeleton: Define los estilos para el esqueleto del ícono.
69
+ * Se utiliza cuando el ícono aún no está completamente cargado, proporcionando
70
+ * un contorno visible para indicar que la carga está en progreso. Incluye un
71
+ * borde redondeado y tamaño del ícono.
72
+ * @author Bruce Escobar - automatic
73
+ * @createdAt 2024-10-22 19:08:59 - automatic
74
+ * @updatedAt 2024-10-22 19:09:00 - automatic
75
+ * @updatedUser Bruce Escobar - automatic
76
+ */
77
+ iconSkeleton: ({ theme, ownerState }) => ({
78
+ "&.M4lclassCssSpecificity": {
79
+ borderRadius: theme.size.borderRadius.r1,
80
+ ...ownerState.iconSize === "medium" && {
81
+ ...theme.generalSettings.isMobile ? {
82
+ width: theme.vars.size.mobile.medium.base,
83
+ height: theme.vars.size.mobile.medium.base
84
+ } : {
85
+ width: theme.vars.size.desktop.medium.base,
86
+ height: theme.vars.size.desktop.medium.base
87
+ }
88
+ },
89
+ ...ownerState.iconSize === "small" && {
90
+ ...theme.generalSettings.isMobile ? {
91
+ width: theme.vars.size.mobile.small.base,
92
+ height: theme.vars.size.mobile.small.base
93
+ } : {
94
+ width: theme.vars.size.desktop.small.base,
95
+ height: theme.vars.size.desktop.small.base
96
+ }
97
+ }
98
+ }
99
+ }),
100
+ /**
101
+ * Slot tooltip: Define los estilos para el tooltip asociado al ícono.
102
+ * Este slot permite agregar una descripción emergente cuando el ícono es
103
+ * hovereado o enfocado.
104
+ */
105
+ tooltip: {}
52
106
  };
53
107
  export {
54
108
  iconStyles as i
@@ -1,5 +1,6 @@
1
1
  export declare enum IconSlots {
2
2
  root = "root",
3
3
  tooltip = "tooltip",
4
- icon = "icon"
4
+ icon = "icon",
5
+ iconSkeleton = "iconSkeleton"
5
6
  }
@@ -2,6 +2,7 @@ var IconSlots = /* @__PURE__ */ ((IconSlots2) => {
2
2
  IconSlots2["root"] = "root";
3
3
  IconSlots2["tooltip"] = "tooltip";
4
4
  IconSlots2["icon"] = "icon";
5
+ IconSlots2["iconSkeleton"] = "iconSkeleton";
5
6
  return IconSlots2;
6
7
  })(IconSlots || {});
7
8
  export {
@@ -7,3 +7,6 @@ export declare const TooltipStyled: import('@emotion/styled').StyledComponent<Pi
7
7
  export declare const IconStyled: import('@emotion/styled').StyledComponent<import('@mui/system').MUIStyledCommonProps<import('@mui/material/styles').Theme> & Partial<import('..').IconOwnerState> & Record<string, unknown> & {
8
8
  ownerState: Partial<import('..').IconOwnerState> & Record<string, unknown>;
9
9
  }, Pick<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, keyof import('react').HTMLAttributes<HTMLDivElement> | keyof import('react').ClassAttributes<HTMLDivElement>>, {}>;
10
+ export declare const IconSkeletonStyled: import('@emotion/styled').StyledComponent<Pick<import('../../mui_extended/Skeleton/types').SkeletonProps, keyof import('../../mui_extended/Skeleton/types').SkeletonProps> & import('@mui/system').MUIStyledCommonProps<import('@mui/material/styles').Theme> & Partial<import('..').IconOwnerState> & Record<string, unknown> & {
11
+ ownerState: Partial<import('..').IconOwnerState> & Record<string, unknown>;
12
+ }, {}, {}>;
@@ -3,6 +3,7 @@ import { I as IconSlots } from "./IconEnum.js";
3
3
  import { a as ICON_KEY_COMPONENT } from "../constants.js";
4
4
  import { i as iconStyles } from "../Icon.styles.js";
5
5
  import { T as Tooltip } from "../../mui_extended/Tooltip/Tooltip.js";
6
+ import { S as Skeleton } from "../../mui_extended/Skeleton/Skeleton.js";
6
7
  const RootStyled = styled("div", {
7
8
  name: ICON_KEY_COMPONENT,
8
9
  slot: IconSlots.root
@@ -15,8 +16,13 @@ const IconStyled = styled("div", {
15
16
  name: ICON_KEY_COMPONENT,
16
17
  slot: IconSlots.icon
17
18
  })(iconStyles?.icon);
19
+ const IconSkeletonStyled = styled(Skeleton, {
20
+ name: ICON_KEY_COMPONENT,
21
+ slot: IconSlots.iconSkeleton
22
+ })(iconStyles?.iconSkeleton);
18
23
  export {
19
24
  IconStyled as I,
20
25
  RootStyled as R,
21
- TooltipStyled as T
26
+ TooltipStyled as T,
27
+ IconSkeletonStyled as a
22
28
  };
@@ -0,0 +1,35 @@
1
+ import { Meta, StoryObj } from '@storybook/react/*';
2
+ import { Icon } from '../../Icon';
3
+ declare const meta: Meta<typeof Icon>;
4
+ type Story = StoryObj<typeof Icon>;
5
+ /**
6
+ * Estado base del icono con las propiedades por defecto.
7
+ * Este icono carga una imagen SVG.
8
+ */
9
+ export declare const Base: Story;
10
+ /**
11
+ * Icono renderizado con el color establecido en 'text.primary'.
12
+ * Este ejemplo ilustra cómo se puede estilizar el Icono con un color específico.
13
+ */
14
+ export declare const WithColorTextPrimary: Story;
15
+ /**
16
+ * Icono con una rotación aplicada.
17
+ * Demuestra el uso de la propiedad rotationAngle para manipular visualmente la orientación del icono.
18
+ */
19
+ export declare const Rotation: Story;
20
+ /**
21
+ * Icono que incluye un tooltip.
22
+ * Esta historia muestra la propiedad tooltipContent, que proporciona contexto adicional cuando el usuario pasa el cursor sobre el icono.
23
+ */
24
+ export declare const WithTooltip: Story;
25
+ /**
26
+ * Icono renderizado con el color establecido en 'contrast.text'.
27
+ * Este ejemplo muestra otra opción de estilización por color para el componente Icon.
28
+ */
29
+ export declare const WithColorContrastText: Story;
30
+ /**
31
+ * Icono con la propiedad deshabilitada.
32
+ * Este ejemplo demuestra cómo el Icono se puede renderizar en un estado deshabilitado, indicando visualmente que está inactivo.
33
+ */
34
+ export declare const WithDisabled: Story;
35
+ export default meta;
@@ -0,0 +1,16 @@
1
+ import { Meta, StoryObj } from '@storybook/react/*';
2
+ import { Icon } from '../../Icon';
3
+ declare const meta: Meta<typeof Icon>;
4
+ type Story = StoryObj<typeof Icon>;
5
+ /**
6
+ * Estado base del icono con las propiedades por defecto.
7
+ * Este icono carga una imagen SVG.
8
+ */
9
+ export declare const Base: Story;
10
+ /**
11
+ * Icono con el color 'primary.main'.
12
+ * Este icono toma su color principal del tema definido en la aplicación.
13
+ * El color 'primary.main' generalmente se utiliza para representar la acción principal en la interfaz.
14
+ */
15
+ export declare const WithColorPrimaryMain: Story;
16
+ export default meta;
@@ -0,0 +1,30 @@
1
+ import { Meta, StoryObj } from '@storybook/react/*';
2
+ import { Icon } from '../../Icon';
3
+ declare const meta: Meta<typeof Icon>;
4
+ type Story = StoryObj<typeof Icon>;
5
+ /**
6
+ * Estado base del icono con las propiedades por defecto.
7
+ * Este icono carga una imagen SVG.
8
+ */
9
+ export declare const Base: Story;
10
+ /**
11
+ * Icono con el color 'error.main'.
12
+ * Este icono se utiliza para denotar errores o advertencias críticas.
13
+ */
14
+ export declare const WithColorErrorMain: Story;
15
+ /**
16
+ * Icono con el color 'warning.main'.
17
+ * Se utiliza para representar advertencias o situaciones que requieren atención, pero no son críticas.
18
+ */
19
+ export declare const WithColorWarningMain: Story;
20
+ /**
21
+ * Icono con el color 'success.main'.
22
+ * Este icono representa estados exitosos o acciones completadas de forma correcta.
23
+ */
24
+ export declare const WithColorSuccessMain: Story;
25
+ /**
26
+ * Icono con el color 'info.main'.
27
+ * Utilizado para proporcionar información relevante o mensajes neutrales en la interfaz.
28
+ */
29
+ export declare const WithColorInfoMain: Story;
30
+ export default meta;
@@ -0,0 +1,40 @@
1
+ import { Meta, StoryObj } from '@storybook/react/*';
2
+ import { Icon } from '../../Icon';
3
+ declare const meta: Meta<typeof Icon>;
4
+ type Story = StoryObj<typeof Icon>;
5
+ /**
6
+ * Estado base del icono con las propiedades por defecto.
7
+ * Este icono carga una imagen SVG.
8
+ */
9
+ export declare const Base: Story;
10
+ /**
11
+ * Icono en tamaño 'small'.
12
+ * Este icono se ajusta a un tamaño pequeño, útil en componentes compactos o en interfaces móviles.
13
+ */
14
+ export declare const Small: Story;
15
+ /**
16
+ * Icono en tamaño 'medium'.
17
+ * Este tamaño es ideal para su uso en botones o como elemento destacado en la interfaz.
18
+ */
19
+ export declare const Medium: Story;
20
+ /**
21
+ * Icono en modo 'skeleton'.
22
+ * Esta es una representación temporal del icono mientras su contenido gráfico está siendo cargado.
23
+ */
24
+ export declare const SkeletonIcon: {
25
+ parameters: {
26
+ isolationForceSkeleton: boolean;
27
+ };
28
+ args: {
29
+ src?: string | undefined;
30
+ size?: Extract<import('@m4l/styles').Sizes, "small" | "medium">;
31
+ rotationAngle?: number;
32
+ tooltipContent?: import('react').ReactNode;
33
+ color?: import('../..').IconColors;
34
+ className?: string;
35
+ instaceDataTestId?: string;
36
+ disabled?: boolean;
37
+ placement?: "bottom-end" | "bottom-start" | "bottom" | "left-end" | "left-start" | "left" | "right-end" | "right-start" | "right" | "top-end" | "top-start" | "top";
38
+ };
39
+ };
40
+ export default meta;