cemtrik-dependencies 1.0.225 → 1.0.227
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/README.md +334 -7
- package/dist/index.js +17 -77
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,10 +1,337 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Cemtrik Dependencies
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Una biblioteca completa de componentes React diseñada para construir interfaces de usuario
|
|
4
|
+
consistentes, accesibles y modernas en aplicaciones Cemtrik. Esta biblioteca sigue los principios de
|
|
5
|
+
Atomic Design e incluye un espacio de trabajo Storybook completo para documentacion y exploracion de
|
|
6
|
+
componentes.
|
|
4
7
|
|
|
5
|
-
|
|
8
|
+
## Que Hace Este Proyecto
|
|
6
9
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
-
|
|
10
|
-
|
|
10
|
+
Cemtrik Dependencies es una **biblioteca de componentes UI React** que proporciona:
|
|
11
|
+
|
|
12
|
+
- **Componentes React Reutilizables**: Una coleccion de mas de 28 componentes UI organizados
|
|
13
|
+
siguiendo la metodologia Atomic Design
|
|
14
|
+
- **Hooks React Personalizados**: 4 hooks potentes para gestion de formularios, manejo de modales
|
|
15
|
+
y diseno responsivo
|
|
16
|
+
- **Funciones de Utilidad**: Funciones auxiliares para operaciones comunes como validacion de
|
|
17
|
+
correo electronico, agrupacion de datos y gestion de nombres de clases
|
|
18
|
+
- **Documentacion Completa**: Espacio de trabajo Storybook interactivo con cambio de marca
|
|
19
|
+
dinamico y documentacion completa de componentes
|
|
20
|
+
|
|
21
|
+
La biblioteca esta construida para garantizar **consistencia**, **accesibilidad** (WCAG 2.1 AA) y
|
|
22
|
+
**experiencia de desarrollador** en todas las aplicaciones Cemtrik.
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## Caracteristicas y Modulos
|
|
27
|
+
|
|
28
|
+
### Componentes (Organizados por Atomic Design)
|
|
29
|
+
|
|
30
|
+
#### Atomos (20 componentes)
|
|
31
|
+
|
|
32
|
+
Bloques basicos de construccion de la UI:
|
|
33
|
+
|
|
34
|
+
| Componente | Descripcion |
|
|
35
|
+
| -------------------------------- | ------------------------------------------------------- |
|
|
36
|
+
| `Alert` | Mensajes de retroalimentacion para acciones del usuario |
|
|
37
|
+
| `Avatar` | Representacion de usuario con iniciales o imagenes |
|
|
38
|
+
| `Bullets` | Indicadores de navegacion |
|
|
39
|
+
| `ButtonSolid` | Botones primarios solidos |
|
|
40
|
+
| `ButtonOutline` | Botones secundarios con contorno |
|
|
41
|
+
| `ButtonPagination` | Botones de control de paginacion |
|
|
42
|
+
| `Checkbox` | Controles de seleccion multiple |
|
|
43
|
+
| `ConfirmationAbandoningCreation` | Dialogos de confirmacion |
|
|
44
|
+
| `Divider` | Separadores visuales |
|
|
45
|
+
| `GoBack` | Botones de navegacion hacia atras |
|
|
46
|
+
| `Image` | Componente de imagen optimizado |
|
|
47
|
+
| `Input` | Campos de entrada de texto |
|
|
48
|
+
| `InputDropdown` | Campos de entrada desplegables |
|
|
49
|
+
| `Select` | Selectores de opciones |
|
|
50
|
+
| `SelectColor` | Selectores de color |
|
|
51
|
+
| `Spinner` | Indicadores de carga |
|
|
52
|
+
| `Switch` | Interruptores de alternancia |
|
|
53
|
+
| `Textarea` | Entradas de texto de multiples lineas |
|
|
54
|
+
| `Tooltip` | Ventanas emergentes informativas |
|
|
55
|
+
|
|
56
|
+
#### Moleculas (6 componentes)
|
|
57
|
+
|
|
58
|
+
Combinaciones complejas de atomos:
|
|
59
|
+
|
|
60
|
+
| Componente | Descripcion |
|
|
61
|
+
| ------------------- | -------------------------------- |
|
|
62
|
+
| `CoverPhoto` | Componentes de imagen de portada |
|
|
63
|
+
| `Dropdown` | Menus desplegables complejos |
|
|
64
|
+
| `IconSelectPicker` | Interfaz de seleccion de iconos |
|
|
65
|
+
| `Modal` | Ventanas de dialogo |
|
|
66
|
+
| `Pagination` | Sistemas completos de paginacion |
|
|
67
|
+
| `SketchColorPicker` | Seleccion avanzada de colores |
|
|
68
|
+
|
|
69
|
+
#### Plantillas (1 componente)
|
|
70
|
+
|
|
71
|
+
Estructuras a nivel de pagina:
|
|
72
|
+
|
|
73
|
+
| Componente | Descripcion |
|
|
74
|
+
| ----------- | -------------------------------- |
|
|
75
|
+
| `Accordion` | Paneles de contenido colapsables |
|
|
76
|
+
|
|
77
|
+
### Hooks
|
|
78
|
+
|
|
79
|
+
| Hook | Descripcion |
|
|
80
|
+
| --------------------- | ----------------------------------------------- |
|
|
81
|
+
| `useForm` | Gestion de estado de formularios con validacion |
|
|
82
|
+
| `useCloseModal` | Manejar cierre de modales al hacer clic fuera |
|
|
83
|
+
| `useMediaQuery` | Deteccion de puntos de ruptura responsivos |
|
|
84
|
+
| `useWindowDimensions` | Seguimiento de cambios de tamano de ventana |
|
|
85
|
+
|
|
86
|
+
### Utilidades
|
|
87
|
+
|
|
88
|
+
| Funcion | Descripcion |
|
|
89
|
+
| ------------------------ | ------------------------------------------- |
|
|
90
|
+
| `copyOptions` | Clonacion profunda de arrays de objetos |
|
|
91
|
+
| `classNames` | Fusion condicional de clases CSS |
|
|
92
|
+
| `validateEmail` | Validacion de formato de correo electronico |
|
|
93
|
+
| `generateAvatarInitials` | Generar iniciales a partir de nombres |
|
|
94
|
+
| `groupBy` | Agrupar elementos de array por clave |
|
|
95
|
+
| `isPromise` | Verificar si un valor es una Promesa |
|
|
96
|
+
|
|
97
|
+
### Caracteristicas de Storybook
|
|
98
|
+
|
|
99
|
+
- **4 Temas Dinamicos**: Cambiar entre marcas sin reconstruir
|
|
100
|
+
- Cemtrik (corporativo)
|
|
101
|
+
- Modo Oscuro
|
|
102
|
+
- Naturaleza (tonos verdes)
|
|
103
|
+
- Oceano (tonos azules)
|
|
104
|
+
- **Documentacion en Espanol**: Toda la documentacion en espanol
|
|
105
|
+
- **Accesibilidad**: Cumple con WCAG 2.1 AA
|
|
106
|
+
- **Controles Interactivos**: Modificar props en tiempo real
|
|
107
|
+
- **Descubrimiento de Componentes**: Deteccion automatica de nuevos componentes
|
|
108
|
+
|
|
109
|
+
---
|
|
110
|
+
|
|
111
|
+
## Arquitectura de Componentes
|
|
112
|
+
|
|
113
|
+
La biblioteca esta organizada siguiendo los principios de Atomic Design:
|
|
114
|
+
|
|
115
|
+
- **Atomos**: Componentes basicos como botones, entradas e iconos
|
|
116
|
+
- **Moleculas**: Combinaciones de atomos como modales y dropdowns
|
|
117
|
+
- **Plantillas**: Estructuras de pagina como acordeones
|
|
118
|
+
|
|
119
|
+
Los componentes, hooks y utilidades se exportan desde el archivo principal `index.js` y estan
|
|
120
|
+
documentados en el espacio de trabajo Storybook con temas dinamicos.
|
|
121
|
+
|
|
122
|
+
---
|
|
123
|
+
|
|
124
|
+
## Stack Tecnologico
|
|
125
|
+
|
|
126
|
+
### Tecnologias Principales
|
|
127
|
+
|
|
128
|
+
| Categoria | Tecnologia | Version | Proposito |
|
|
129
|
+
| --------------- | ------------ | ------- | --------------------------------- |
|
|
130
|
+
| **Framework** | React | 18.2.0 | Biblioteca UI |
|
|
131
|
+
| **Build Tool** | Vite | 5.4.0 | Desarrollo rapido y empaquetado |
|
|
132
|
+
| **Estilos** | Tailwind CSS | Latest | CSS utility-first |
|
|
133
|
+
| **Iconos** | Heroicons | 2.0.18 | Biblioteca de iconos SVG |
|
|
134
|
+
| **Componentes** | Headless UI | 1.7.15 | Componentes accesibles sin estilo |
|
|
135
|
+
|
|
136
|
+
### Documentacion y Desarrollo
|
|
137
|
+
|
|
138
|
+
| Tecnologia | Proposito |
|
|
139
|
+
| -------------------- | -------------------------------------- |
|
|
140
|
+
| **Storybook** | Documentacion y pruebas de componentes |
|
|
141
|
+
| **Vite** (Storybook) | Sistema de construccion de Storybook |
|
|
142
|
+
| **MDX** | Documentacion con JSX |
|
|
143
|
+
|
|
144
|
+
### Calidad de Codigo
|
|
145
|
+
|
|
146
|
+
| Tecnologia | Proposito |
|
|
147
|
+
| ------------------------- | ---------------------------------- |
|
|
148
|
+
| **ESLint** | Linting de JavaScript/React |
|
|
149
|
+
| **Prettier** | Formateo de codigo |
|
|
150
|
+
| **Husky** | Git hooks |
|
|
151
|
+
| **Commitlint** | Convenciones de mensajes de commit |
|
|
152
|
+
| **Jest** | Pruebas unitarias |
|
|
153
|
+
| **React Testing Library** | Pruebas de componentes |
|
|
154
|
+
|
|
155
|
+
### Gestion de Paquetes
|
|
156
|
+
|
|
157
|
+
| Tecnologia | Proposito |
|
|
158
|
+
| ---------- | --------------------------- |
|
|
159
|
+
| **npm** | Gestion de paquetes |
|
|
160
|
+
| **Babel** | Transpilacion de JavaScript |
|
|
161
|
+
|
|
162
|
+
---
|
|
163
|
+
|
|
164
|
+
## Instalacion
|
|
165
|
+
|
|
166
|
+
### Requisitos Previos
|
|
167
|
+
|
|
168
|
+
- Node.js 16+
|
|
169
|
+
- npm 8+ o yarn 1.22+
|
|
170
|
+
|
|
171
|
+
### Instalar como Dependencia
|
|
172
|
+
|
|
173
|
+
```bash
|
|
174
|
+
npm install cemtrik-dependencies
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
### Dependencias de Pares
|
|
178
|
+
|
|
179
|
+
Los siguientes paquetes deben estar instalados en tu proyecto:
|
|
180
|
+
|
|
181
|
+
```bash
|
|
182
|
+
npm install react react-dom
|
|
183
|
+
npm install @headlessui/react @heroicons/react classnames
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
### Configuracion de Desarrollo
|
|
187
|
+
|
|
188
|
+
1. **Clonar o navegar al repositorio:**
|
|
189
|
+
|
|
190
|
+
```bash
|
|
191
|
+
cd cemtrik-dependencies
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
2. **Instalar dependencias:**
|
|
195
|
+
|
|
196
|
+
```bash
|
|
197
|
+
npm install
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
3. **Iniciar servidor de desarrollo:**
|
|
201
|
+
|
|
202
|
+
```bash
|
|
203
|
+
npm run dev
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
4. **Ejecutar pruebas:**
|
|
207
|
+
|
|
208
|
+
```bash
|
|
209
|
+
npm test
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
5. **Ejecutar linter:**
|
|
213
|
+
|
|
214
|
+
```bash
|
|
215
|
+
npm run lint
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
6. **Construir para produccion:**
|
|
219
|
+
|
|
220
|
+
```bash
|
|
221
|
+
npm run build
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
### Configuracion de Storybook
|
|
225
|
+
|
|
226
|
+
1. **Instalar dependencias de Storybook:**
|
|
227
|
+
|
|
228
|
+
```bash
|
|
229
|
+
cd storybook
|
|
230
|
+
npm install
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
2. **Iniciar Storybook:**
|
|
234
|
+
|
|
235
|
+
```bash
|
|
236
|
+
# Desde el directorio raiz
|
|
237
|
+
npm run storybook
|
|
238
|
+
|
|
239
|
+
# O desde el directorio storybook
|
|
240
|
+
cd storybook && npm run storybook
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
3. **Abrir en navegador:**
|
|
244
|
+
|
|
245
|
+
Navega a `http://localhost:6006`
|
|
246
|
+
|
|
247
|
+
---
|
|
248
|
+
|
|
249
|
+
## Inicio Rapido
|
|
250
|
+
|
|
251
|
+
### Usar Componentes
|
|
252
|
+
|
|
253
|
+
```jsx
|
|
254
|
+
import { ButtonSolid, Input, useForm } from "cemtrik-dependencies";
|
|
255
|
+
|
|
256
|
+
function MyForm() {
|
|
257
|
+
const { handleSubmit, handleChange, model, messageError } = useForm();
|
|
258
|
+
|
|
259
|
+
const onSubmit = (data) => {
|
|
260
|
+
console.log("Form data:", data);
|
|
261
|
+
};
|
|
262
|
+
|
|
263
|
+
return (
|
|
264
|
+
<form onSubmit={handleSubmit(onSubmit)}>
|
|
265
|
+
<Input
|
|
266
|
+
name="email"
|
|
267
|
+
onChange={(e) => handleChange(e, setForm, form)}
|
|
268
|
+
placeholder="Enter email"
|
|
269
|
+
/>
|
|
270
|
+
{messageError.email && <span>{messageError.email}</span>}
|
|
271
|
+
|
|
272
|
+
<ButtonSolid type="submit">Submit</ButtonSolid>
|
|
273
|
+
</form>
|
|
274
|
+
);
|
|
275
|
+
}
|
|
276
|
+
```
|
|
277
|
+
|
|
278
|
+
### Usar Utilidades
|
|
279
|
+
|
|
280
|
+
```jsx
|
|
281
|
+
import { validateEmail, classNames, groupBy } from "cemtric-dependencies";
|
|
282
|
+
|
|
283
|
+
// Validacion de correo
|
|
284
|
+
const isValid = validateEmail("user@example.com"); // true
|
|
285
|
+
|
|
286
|
+
// Clases condicionales
|
|
287
|
+
const buttonClass = classNames("btn", isPrimary && "btn-primary", isDisabled && "btn-disabled");
|
|
288
|
+
|
|
289
|
+
// Agrupar elementos de array
|
|
290
|
+
const grouped = groupBy({
|
|
291
|
+
items: users,
|
|
292
|
+
key: "department",
|
|
293
|
+
});
|
|
294
|
+
```
|
|
295
|
+
|
|
296
|
+
---
|
|
297
|
+
|
|
298
|
+
## Scripts Disponibles
|
|
299
|
+
|
|
300
|
+
| Script | Descripcion |
|
|
301
|
+
| ---------------------------- | ----------------------------------------- |
|
|
302
|
+
| `npm run dev` | Iniciar servidor de desarrollo Vite |
|
|
303
|
+
| `npm run build` | Construir biblioteca para produccion |
|
|
304
|
+
| `npm run preview` | Previsualizar construccion de produccion |
|
|
305
|
+
| `npm test` | Ejecutar pruebas Jest |
|
|
306
|
+
| `npm run coverage` | Ejecutar pruebas con reporte de cobertura |
|
|
307
|
+
| `npm run lint` | Ejecutar ESLint |
|
|
308
|
+
| `npm run format` | Formatear codigo con Prettier |
|
|
309
|
+
| `npm run storybook` | Iniciar servidor de desarrollo Storybook |
|
|
310
|
+
| `npm run build-storybook` | Construir Storybook para produccion |
|
|
311
|
+
| `npm run storybook:generate` | Regenerar documentacion de Storybook |
|
|
312
|
+
|
|
313
|
+
---
|
|
314
|
+
|
|
315
|
+
## Licencia
|
|
316
|
+
|
|
317
|
+
Copyright 2024 Cemtrik. Todos los derechos reservados.
|
|
318
|
+
|
|
319
|
+
---
|
|
320
|
+
|
|
321
|
+
## Contribuir
|
|
322
|
+
|
|
323
|
+
1. Asegurate de que tu codigo siga el estilo existente (ESLint + Prettier)
|
|
324
|
+
2. Escribe pruebas para nuevas caracteristicas
|
|
325
|
+
3. Actualiza la documentacion en Storybook
|
|
326
|
+
4. Sigue mensajes de commit convencionales
|
|
327
|
+
5. Ejecuta `npm run lint` antes de hacer commit
|
|
328
|
+
|
|
329
|
+
---
|
|
330
|
+
|
|
331
|
+
## Soporte
|
|
332
|
+
|
|
333
|
+
Para preguntas o soporte:
|
|
334
|
+
|
|
335
|
+
- Consulta la documentacion de Storybook en `http://localhost:6006`
|
|
336
|
+
- Revisa las implementaciones de componentes existentes en `src/components/`
|
|
337
|
+
- Consulta el resumen de implementacion en `storybook/RESUMEN_IMPLEMENTACION.md`
|