@imj_media/ui 1.2.23 → 1.2.25

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 (84) hide show
  1. package/CHANGELOG.md +104 -26
  2. package/dist/index.css +1 -1
  3. package/dist/index.esm.js +5831 -5367
  4. package/dist/index.esm.js.map +1 -1
  5. package/dist/index.js +9 -10
  6. package/dist/index.js.map +1 -1
  7. package/dist/modules/AlertDialog/components/AlertDialog.d.ts +1 -1
  8. package/dist/modules/AlertDialog/components/AlertDialog.d.ts.map +1 -1
  9. package/dist/modules/AlertDialog/stories/alertdialog.stories.d.ts +1 -0
  10. package/dist/modules/AlertDialog/stories/alertdialog.stories.d.ts.map +1 -1
  11. package/dist/modules/Badges/components/Badges.d.ts +4 -0
  12. package/dist/modules/Badges/components/Badges.d.ts.map +1 -0
  13. package/dist/modules/Badges/hooks/useBadges.d.ts +26 -0
  14. package/dist/modules/Badges/hooks/useBadges.d.ts.map +1 -0
  15. package/dist/modules/Badges/index.d.ts +4 -0
  16. package/dist/modules/Badges/index.d.ts.map +1 -0
  17. package/dist/modules/Badges/stories/Badges.stories.d.ts +18 -0
  18. package/dist/modules/Badges/stories/Badges.stories.d.ts.map +1 -0
  19. package/dist/modules/DatePicker/DatePicker.d.ts.map +1 -1
  20. package/dist/modules/DatePicker/hooks/useDatePicker.d.ts +11 -2
  21. package/dist/modules/DatePicker/hooks/useDatePicker.d.ts.map +1 -1
  22. package/dist/modules/DatePicker/hooks/useDateRange.d.ts +1 -1
  23. package/dist/modules/DatePicker/hooks/useDateRange.d.ts.map +1 -1
  24. package/dist/modules/DatePicker/organisms/Calendar.d.ts.map +1 -1
  25. package/dist/modules/DatePicker/organisms/DatePickerPortal.d.ts +2 -0
  26. package/dist/modules/DatePicker/organisms/DatePickerPortal.d.ts.map +1 -1
  27. package/dist/modules/DatePicker/stories/DatePicker.stories.d.ts.map +1 -1
  28. package/dist/modules/DatePicker/types/Calendar.types.d.ts +2 -0
  29. package/dist/modules/DatePicker/types/Calendar.types.d.ts.map +1 -1
  30. package/dist/modules/DatePicker/types/DatePicker.types.d.ts +2 -0
  31. package/dist/modules/DatePicker/types/DatePicker.types.d.ts.map +1 -1
  32. package/dist/modules/Dropdown/components/Dropdown.d.ts.map +1 -1
  33. package/dist/modules/Dropdown/components/organisms/TagsMultiple.d.ts.map +1 -1
  34. package/dist/modules/Dropdown/stories/Dropdown.stories.d.ts +1 -0
  35. package/dist/modules/Dropdown/stories/Dropdown.stories.d.ts.map +1 -1
  36. package/dist/modules/InnerButton/index.d.ts.map +1 -1
  37. package/dist/modules/Modal/Modal.d.ts.map +1 -1
  38. package/dist/modules/Modal/components/molecules/ModalImage.d.ts.map +1 -1
  39. package/dist/modules/Modal/stories/Modal.stories.d.ts +1 -0
  40. package/dist/modules/Modal/stories/Modal.stories.d.ts.map +1 -1
  41. package/dist/modules/Text/components/Body.d.ts +3 -3
  42. package/dist/modules/Text/components/Body.d.ts.map +1 -1
  43. package/dist/modules/Text/components/Caption.d.ts +3 -3
  44. package/dist/modules/Text/components/Caption.d.ts.map +1 -1
  45. package/dist/modules/Text/components/Code.d.ts +3 -3
  46. package/dist/modules/Text/components/Code.d.ts.map +1 -1
  47. package/dist/modules/Text/components/CustomText.d.ts +3 -3
  48. package/dist/modules/Text/components/CustomText.d.ts.map +1 -1
  49. package/dist/modules/Text/components/Title.d.ts +3 -3
  50. package/dist/modules/Text/components/Title.d.ts.map +1 -1
  51. package/dist/modules/Text/components/constants.d.ts +3 -0
  52. package/dist/modules/Text/components/constants.d.ts.map +1 -0
  53. package/dist/modules/Textarea/components/organisms/Textarea.d.ts +1 -1
  54. package/dist/modules/Textarea/components/organisms/Textarea.d.ts.map +1 -1
  55. package/dist/modules/Toolbar/components/index.d.ts +2 -0
  56. package/dist/modules/Toolbar/components/index.d.ts.map +1 -0
  57. package/dist/modules/Toolbar/components/organisms/Toolbar.d.ts +26 -0
  58. package/dist/modules/Toolbar/components/organisms/Toolbar.d.ts.map +1 -0
  59. package/dist/modules/Toolbar/components/organisms/index.d.ts +2 -0
  60. package/dist/modules/Toolbar/components/organisms/index.d.ts.map +1 -0
  61. package/dist/modules/Toolbar/index.d.ts +3 -0
  62. package/dist/modules/Toolbar/index.d.ts.map +1 -0
  63. package/dist/modules/Toolbar/stories/Toolbar.stories.d.ts +12 -0
  64. package/dist/modules/Toolbar/stories/Toolbar.stories.d.ts.map +1 -0
  65. package/dist/modules/Toolbar/types/index.d.ts +91 -0
  66. package/dist/modules/Toolbar/types/index.d.ts.map +1 -0
  67. package/dist/modules/index.d.ts +2 -0
  68. package/dist/modules/index.d.ts.map +1 -1
  69. package/dist/shared/hooks/useBodyScrollLock.d.ts.map +1 -1
  70. package/dist/shared/types/alertdialog.d.ts +2 -1
  71. package/dist/shared/types/alertdialog.d.ts.map +1 -1
  72. package/dist/shared/types/badges.d.ts +52 -0
  73. package/dist/shared/types/badges.d.ts.map +1 -0
  74. package/dist/shared/types/dropdown.d.ts +1 -0
  75. package/dist/shared/types/dropdown.d.ts.map +1 -1
  76. package/dist/shared/types/index.d.ts +1 -0
  77. package/dist/shared/types/index.d.ts.map +1 -1
  78. package/dist/shared/types/modal.d.ts +4 -2
  79. package/dist/shared/types/modal.d.ts.map +1 -1
  80. package/dist/shared/types/text.d.ts +4 -4
  81. package/dist/shared/types/text.d.ts.map +1 -1
  82. package/dist/shared/types/textarea.d.ts +2 -0
  83. package/dist/shared/types/textarea.d.ts.map +1 -1
  84. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -5,18 +5,87 @@ Todos los cambios notables de este proyecto serán documentados en este archivo.
5
5
  El formato está basado en [Keep a Changelog](https://keepachangelog.com/es-ES/1.0.0/),
6
6
  y este proyecto adhiere a [Semantic Versioning](https://semver.org/lang/es/).
7
7
 
8
- ## [1.2.21] - 2026-01-XX
8
+ ## [1.2.25] - 2026-01-22
9
+
10
+ ### Added
11
+ - **Badges - Nuevo Componente**: Nuevo componente para gestión dinámica de tags/badges
12
+ - Contenedor estilo input donde se pueden escribir y agregar badges presionando Enter
13
+ - Cada badge tiene botón de cierre para eliminarlo de la lista
14
+ - Soporte para valores iniciales como array de `BadgeItem[]` o array de `string[]`
15
+ - Prop `colorCycle` para asignar colores cíclicos automáticamente a nuevos badges
16
+ - Prop `defaultColor` para establecer el color por defecto de nuevos badges
17
+ - Prop `maxBadges` para limitar el número máximo de badges permitidos
18
+ - Eventos: `onChange` (al agregar/eliminar), `onAdd`, `onRemove`, `onFocus`, `onBlur`
19
+ - El evento `onChange` retorna objeto con `type` ('add'|'remove'), `item` y `items`
20
+ - Reutiliza componente Tag existente para los badges
21
+ - Hook `useBadges` separado para manejo de lógica (siguiendo principio DRY)
22
+ - Función `normalizeValue` que convierte arrays de strings a `BadgeItem[]` automáticamente
23
+ - Tamaños: xs, sm, md, lg (consistente con otros inputs)
24
+ - Estados: disabled, error, helperText
25
+ - 12 stories completas en Storybook: Default, WithInitialValues, WithStringArray, ColorCycle, DefaultColor, MaxBadges, Sizes, Disabled, WithError, WithHelperText, Events, FullExample
26
+ - **AlertDialog - Prop size**: Nueva prop `size` que hereda los tamaños del componente Modal
27
+ - Tamaños disponibles: xs, sm, md, lg, xl, 2xl, full
28
+ - Nueva story `Sizes` que demuestra todos los tamaños disponibles
29
+ - **AlertDialog - z-index mejorado**: AlertDialog ahora siempre aparece sobre Modal
30
+ - Nuevo z-index de 60 para AlertDialog (Modal usa 50 por defecto)
31
+ - Resuelve problema de layering cuando AlertDialog se abre desde un Modal
32
+ - **Dropdown - Prop infoTooltip**: Nueva prop para mostrar icono de información con tooltip
33
+ - Se pasa al componente Input interno para mantener consistencia
34
+ - Nueva story `WithInfoTooltip` que demuestra el uso
35
+ - **Textarea - Props onFocus y onBlur**: Nuevas props para eventos de focus
36
+ - Retornan el evento nativo `React.FocusEvent<HTMLTextAreaElement>`
37
+ - Parámetro del evento es opcional para mayor flexibilidad
38
+ - **Text - Mejora en manejo de colores**: Autocompletado de colores del sistema de diseño
39
+ - Tipo `TextColor` expandido con todos los colores semánticos y de paleta
40
+ - Prop `color` ahora acepta `TextColor | string` para autocompletado + flexibilidad
41
+ - Colores semánticos: primary, secondary, tertiary, disabled, on-color, etc.
42
+ - Colores de marca: brand, success, warning, danger, info (con variantes hover/pressed/selected)
43
+ - Colores de paleta: all-colors-red, all-colors-blue, etc.
44
+ - Constante `DEFAULT_TEXT_COLORS` para identificar colores del sistema
45
+
46
+ ### Changed
47
+ - **Modal - Props onCancel y onSuccess**: Ahora retornan el evento nativo del click
48
+ - Tipo actualizado a `(event?: React.MouseEvent<HTMLButtonElement>) => void`
49
+ - Parámetro del evento es opcional para compatibilidad con código existente
50
+ - ModalFooter actualizado para pasar el evento a los callbacks
51
+ - **Modal - Prop zIndex configurable**: Nueva prop para controlar el z-index del modal
52
+ - Valores: 50 (default) o 60 (para modales anidados)
53
+ - Útil cuando se necesita mostrar AlertDialog sobre Modal
54
+ - **useBodyScrollLock - Mejora en gestión de locks**: Implementación mejorada para múltiples modales
55
+ - Usa `Set<string>` con IDs únicos en lugar de contador simple
56
+ - El scroll solo se restaura cuando todos los modales/dialogs se cierran
57
+ - Previene problema de scroll restaurándose prematuramente con modales anidados
58
+
59
+ ### Fixed
60
+ - **Header, Title**: Ajuste de layout para mejorar alineación
61
+ - **ModalFooter**: Corrección de handlers onCancel y onSuccess para aceptar parámetro de evento
62
+
63
+ ## [1.2.24] - 2026-01-XX
64
+
65
+ ### Added
66
+ - **Toolbar - Nuevo Componente**: Nuevo módulo Toolbar como barra de herramientas flexible
67
+ - Posicionamiento fijo en la parte inferior de la pantalla usando portal
68
+ - Soporte para botones configurables con `color`, `icon`, `label`, `onClick`, `disabled`, `show`
69
+ - Cada botón puede tener sus propios addons (inputs o date pickers)
70
+ - Vista de botones y vista de addons con navegación entre ellas
71
+ - Props `text` y `count` para mostrar "(count) text" en la vista de addons
72
+ - Botón de cerrar para ocultar el toolbar
73
+ - Diseño responsivo con adaptación móvil
74
+ - Stories completas en Storybook
75
+ - **Modal.Image - Mejoras en Modo Zoom**: Mejoras en la visualización de imagen expandida
76
+ - Mantiene el aspect ratio original de la imagen en modo zoom
77
+ - Contenedor con borde y padding según diseño de Figma
78
+ - Botón de minimizar posicionado dentro de la imagen
79
+ - Cálculo dinámico de dimensiones respetando el espacio disponible
80
+
81
+ ### Changed
82
+ - **DatePicker - Manejo de Confirmación**: Mejoras en el comportamiento de selección de fechas
83
+ - El evento `onChange` solo se invoca cuando se hace clic en "Aceptar"
84
+ - Nuevos props `onAccept` y `onCancel` para manejo explícito de confirmación
85
+
86
+ ## [1.2.23] - 2026-01-XX
9
87
 
10
88
  ### Added
11
- - **Title - Soporte para Children**: El componente Title ahora puede recibir el contenido tanto mediante la prop `title` como mediante `children`
12
- - La prop `title` ahora es opcional (`title?: string`)
13
- - Nueva prop `children?: ReactNode` para pasar el contenido como children
14
- - El componente usa `title || children` para determinar el contenido a mostrar
15
- - Permite mayor flexibilidad: usar `title` para texto simple o `children` para contenido más complejo (JSX, elementos con formato, etc.)
16
- - Nueva historia `WithChildren` en Storybook que demuestra diferentes casos de uso con children
17
- - Actualizada la historia `Default` para mostrar ejemplos con ambas formas de uso
18
- - Actualizados `argTypes` en Storybook para incluir control de `children`
19
- - Actualizada la documentación del componente para mencionar soporte de `children`
20
89
  - **Switch - Soporte para Iconos Font Awesome Duotone**: El componente Switch ahora soporta iconos Font Awesome Duotone con colores personalizados
21
90
  - Nuevas props en `SwitchOption` para configurar iconos duotone:
22
91
  - `leftSlotDuotonePrimary`, `leftSlotDuotoneSecondary`: Colores primario y secundario para el slot izquierdo
@@ -32,24 +101,18 @@ y este proyecto adhiere a [Semantic Versioning](https://semver.org/lang/es/).
32
101
  - `WithSlotLeft`, `WithSlotRight`, `WithBothSlots`, `WithoutSlots`, `MixedSlots`: Historias adicionales que muestran diferentes combinaciones de slots
33
102
  - Compatible con iconos importados desde `@fortawesome/pro-duotone-svg-icons`
34
103
 
35
- ### Fixed
36
- - **Dropdown - Comparación Flexible de Valores**: Corregido el problema donde las opciones por defecto no se mostraban correctamente cuando se pasaba un valor inicial
37
- - Problema: Cuando se pasaba un valor numérico (ej: `2`) pero las opciones tenían valores string (ej: `'2'`), la comparación estricta (`===`) fallaba y no se encontraba la opción seleccionada
38
- - Solución: Implementada función `compareValues` que realiza comparación flexible entre strings y números
39
- - Compara valores de tres formas: comparación estricta, comparación como strings, y comparación como números
40
- - Permite que valores numéricos coincidan con strings equivalentes y viceversa
41
- - Cambios realizados:
42
- - Agregada función `compareValues` en `useDropdown.ts` para comparación flexible
43
- - Actualizada lógica de `selectedOptions` para usar comparación flexible
44
- - Actualizada lógica de `filteredOptions` para usar comparación flexible
45
- - Agregada función `compareValues` en `Dropdown.tsx` con `useCallback`
46
- - Actualizada comparación en `renderDropdown` para determinar si una opción está seleccionada
47
- - Actualizada comparación en `useEffect` que busca la opción seleccionada para establecer iconos
48
- - Ahora el dropdown muestra correctamente la opción seleccionada independientemente de si el valor es número o string
49
-
50
- ## [1.2.20] - 2026-01-XX
104
+ ## [1.2.22] - 2026-01-XX
51
105
 
52
106
  ### Added
107
+ - **Title - Soporte para Children**: El componente Title ahora puede recibir el contenido tanto mediante la prop `title` como mediante `children`
108
+ - La prop `title` ahora es opcional (`title?: string`)
109
+ - Nueva prop `children?: ReactNode` para pasar el contenido como children
110
+ - El componente usa `title || children` para determinar el contenido a mostrar
111
+ - Permite mayor flexibilidad: usar `title` para texto simple o `children` para contenido más complejo (JSX, elementos con formato, etc.)
112
+ - Nueva historia `WithChildren` en Storybook que demuestra diferentes casos de uso con children
113
+ - Actualizada la historia `Default` para mostrar ejemplos con ambas formas de uso
114
+ - Actualizados `argTypes` en Storybook para incluir control de `children`
115
+ - Actualizada la documentación del componente para mencionar soporte de `children`
53
116
  - **Title - Prop `center` para Alineación Centrada**: Nueva prop `center` que permite centrar horizontalmente el contenido del título
54
117
  - Nueva prop `center?: boolean` en `TitleProps` para controlar la alineación del contenido
55
118
  - Cuando `center` es `true`, se aplica `ui-justify-center` al contenedor flex
@@ -66,8 +129,23 @@ y este proyecto adhiere a [Semantic Versioning](https://semver.org/lang/es/).
66
129
  - Nueva historia `RealWorldExamples` que muestra casos de uso prácticos (Dashboard, Gestión de Archivos, Calendario, etc.)
67
130
  - Todas las historias incluyen descripciones, ejemplos visuales y código de ejemplo usando `StoryBox`
68
131
  - Documentación completa con `tags: ['autodocs']` para generación automática de documentación
132
+ - **Switch - Props slotLeft y slotRight**: Nuevas props para mayor flexibilidad en el Switch
133
+ - **SelectionCheckbox - Prop round**: Nueva prop para estilo redondeado en checkboxes de selección
69
134
 
70
135
  ### Fixed
136
+ - **Dropdown - Comparación Flexible de Valores**: Corregido el problema donde las opciones por defecto no se mostraban correctamente cuando se pasaba un valor inicial
137
+ - Problema: Cuando se pasaba un valor numérico (ej: `2`) pero las opciones tenían valores string (ej: `'2'`), la comparación estricta (`===`) fallaba y no se encontraba la opción seleccionada
138
+ - Solución: Implementada función `compareValues` que realiza comparación flexible entre strings y números
139
+ - Compara valores de tres formas: comparación estricta, comparación como strings, y comparación como números
140
+ - Permite que valores numéricos coincidan con strings equivalentes y viceversa
141
+ - Cambios realizados:
142
+ - Agregada función `compareValues` en `useDropdown.ts` para comparación flexible
143
+ - Actualizada lógica de `selectedOptions` para usar comparación flexible
144
+ - Actualizada lógica de `filteredOptions` para usar comparación flexible
145
+ - Agregada función `compareValues` en `Dropdown.tsx` con `useCallback`
146
+ - Actualizada comparación en `renderDropdown` para determinar si una opción está seleccionada
147
+ - Actualizada comparación en `useEffect` que busca la opción seleccionada para establecer iconos
148
+ - Ahora el dropdown muestra correctamente la opción seleccionada independientemente de si el valor es número o string
71
149
  - **Title - Corrección de Clases de Tipografía**: Corrección del uso de clases de tipografía para headings
72
150
  - Reemplazada la clase compuesta `ui-leading-tracking-h3` (que no funcionaba correctamente) por clases individuales de Tailwind
73
151
  - Ahora usa `ui-leading-heading-h3` y `ui-tracking-heading-h3` que están correctamente definidas en la configuración de Tailwind