@codeplex-sac/navegacion 0.0.10

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 ADDED
@@ -0,0 +1,314 @@
1
+ # @codeplex-sac/navigation
2
+
3
+ Paquete de componentes de navegación avanzados para el ecosistema **Codeplex-SAC**. Ofrece soluciones completas para la gestión de rutas, jerarquías, menús y estructuras de paneles laterales, optimizadas para una experiencia de usuario premium y con una API nativa en **Español**.
4
+
5
+ ## 🚀 Instalación
6
+
7
+ ```bash
8
+ bun add @codeplex-sac/navigation @mui/material @emotion/react @emotion/styled
9
+ ```
10
+
11
+ ---
12
+
13
+ ## 🏗️ Componentes de Estructura y Flujo
14
+
15
+ ### 🗄️ Grupo 1: Contenedores y Pasos
16
+
17
+ #### CodeplexCajonLateral (Drawer)
18
+ Panel complementario que se desliza desde los bordes de la pantalla. Ideal para menús de navegación móvil o paneles de filtrado.
19
+
20
+ **Ejemplo de Uso:**
21
+ ```tsx
22
+ import { CodeplexCajonLateral } from '@codeplex-sac/navigation';
23
+
24
+ export const MiCajon = ({ abierto, alCerrar }) => (
25
+ <CodeplexCajonLateral
26
+ abierto={abierto}
27
+ alCerrar={alCerrar}
28
+ ancho={320}
29
+ cabecera={<h2>Menu Principal</h2>}
30
+ mostrarIconoCierre
31
+ >
32
+ {/* Enlaces o navegación aquí */}
33
+ </CodeplexCajonLateral>
34
+ );
35
+ ```
36
+
37
+ **Propiedades (Props):**
38
+ | Propiedad | Tipo | Por Defecto | Descripción |
39
+ | :--- | :--- | :--- | :--- |
40
+ | `abierto` | `boolean` | `false` | Indica si el cajón es visible. |
41
+ | `alCerrar` | `Function` | - | Callback al cerrar (clic fuera, ESC o 'X'). |
42
+ | `ancho` | `number \| string` | `280` | Ancho del panel (en px o %). |
43
+ | `anclaje` | `'left' \| 'right' \| 'top' \| 'bottom'` | `'left'` | Lado por el que aparece el panel. |
44
+ | `cabecera` | `ReactNode` | - | Contenido fijo superior. |
45
+ | `pie` | `ReactNode` | - | Contenido fijo inferior. |
46
+ | `deslizable` | `boolean` | `false` | Permite abrir/cerrar con gestos (touch). |
47
+ | `mostrarIconoCierre` | `boolean` | `false` | Muestra la 'X' en la cabecera. |
48
+
49
+ ---
50
+
51
+ #### CodeplexPasos (Stepper)
52
+ Guía a los usuarios a través de una serie de pasos consecutivos en un proceso.
53
+
54
+ **Ejemplo de Uso:**
55
+ ```tsx
56
+ import { CodeplexPasos } from '@codeplex-sac/navigation';
57
+
58
+ const MIS_PASOS = [
59
+ { etiqueta: 'Identificación', descripcion: 'Datos personales' },
60
+ { etiqueta: 'Pago', descripcion: 'Método de facturación' },
61
+ { etiqueta: 'Resumen', opcional: true }
62
+ ];
63
+
64
+ export const Ejemplo = () => (
65
+ <CodeplexPasos
66
+ pasos={MIS_PASOS}
67
+ pasoActivo={1}
68
+ orientacion="horizontal"
69
+ />
70
+ );
71
+ ```
72
+
73
+ **Propiedades (Props):**
74
+ | Propiedad | Tipo | Por Defecto | Descripción |
75
+ | :--- | :--- | :--- | :--- |
76
+ | `pasos` | `Array<CodeplexPaso>`| - | Lista de objetos con `etiqueta` y `descripcion`. |
77
+ | `pasoActivo` | `number` | - | Índice del paso actual (0-base). |
78
+ | `orientacion`| `'horizontal' \| 'vertical'` | `'horizontal'` | Dirección del flujo. |
79
+ | `etiquetasAlternativas`| `boolean` | `false` | Coloca etiquetas bajo los iconos. |
80
+ | `noLineal` | `boolean` | `false` | Permite navegación libre entre pasos. |
81
+
82
+ ---
83
+
84
+ #### CodeplexPestanas (Tabs)
85
+ Organiza contenido en diferentes vistas accesibles mediante pestañas superiores o integradas.
86
+
87
+ **Ejemplo de Uso:**
88
+ ```tsx
89
+ import { CodeplexPestanas } from '@codeplex-sac/navigation';
90
+
91
+ const ITEMS = [
92
+ { etiqueta: 'General', valor: 'v1' },
93
+ { etiqueta: 'Seguridad', valor: 'v2', icono: <LockIcon /> }
94
+ ];
95
+
96
+ export const MiSeccion = () => (
97
+ <CodeplexPestanas
98
+ elementos={ITEMS}
99
+ valor="v1"
100
+ alCambiar={(_, val) => console.log(val)}
101
+ centrado
102
+ />
103
+ );
104
+ ```
105
+
106
+ **Propiedades (Props):**
107
+ | Propiedad | Tipo | Por Defecto | Descripción |
108
+ | :--- | :--- | :--- | :--- |
109
+ | `elementos` | `Array<Item>` | - | Lista con `etiqueta`, `valor` e `icono`. |
110
+ | `valor` | `any` | - | Valor de la pestaña seleccionada. |
111
+ | `alCambiar` | `Function` | - | Evento al seleccionar una pestaña. |
112
+ | `centrado` | `boolean` | `false` | Centra las pestañas horizontalmente. |
113
+ | `posicionIcono`| `'top' \| 'bottom' \| 'start' \| 'end'` | `'top'` | Posición del icono respecto al texto. |
114
+
115
+ ### 🗺️ Grupo 2: Rutas y Jerarquía
116
+
117
+ #### CodeplexMigasPan (Breadcrumbs)
118
+ Ayuda a los usuarios a visualizar su ubicación actual y volver a niveles superiores en la jerarquía de la aplicación.
119
+
120
+ **Ejemplo de Uso:**
121
+ ```tsx
122
+ import { CodeplexMigasPan } from '@codeplex-sac/navigation';
123
+
124
+ const RUTA = [
125
+ { etiqueta: 'Artículos', href: '/blog' },
126
+ { etiqueta: 'Tecnología', href: '/blog/tech' },
127
+ { etiqueta: 'Componentes UI' } // Último elemento sin link
128
+ ];
129
+
130
+ export const Navegacion = () => (
131
+ <CodeplexMigasPan
132
+ elementos={RUTA}
133
+ rutaInicio="/"
134
+ colorActivo="primary.main"
135
+ />
136
+ );
137
+ ```
138
+
139
+ **Propiedades (Props):**
140
+ | Propiedad | Tipo | Por Defecto | Descripción |
141
+ | :--- | :--- | :--- | :--- |
142
+ | `elementos` | `Array<Miga>` | - | Lista con `etiqueta`, `href` e `icono`. |
143
+ | `rutaInicio`| `string` | - | Activa botón "Inicio" redirigiendo a esta ruta. |
144
+ | `colorActivo`| `string` | `'text.primary'`| Color del texto del último elemento. |
145
+ | `separador` | `ReactNode` | `NavigateNext` | Icono o carácter divisor entre elementos. |
146
+
147
+ ---
148
+
149
+ #### CodeplexEnlace (Link)
150
+ Simplifica la creación de vínculos de navegación con estilos consistentes y soporte para polimorfismo.
151
+
152
+ **Ejemplo de Uso:**
153
+ ```tsx
154
+ import { CodeplexEnlace } from '@codeplex-sac/navigation';
155
+
156
+ export const MiEnlace = () => (
157
+ <CodeplexEnlace
158
+ hijos="Ver documentación"
159
+ href="https://google.com"
160
+ subrayado="hover"
161
+ target="_blank"
162
+ />
163
+ );
164
+ ```
165
+
166
+ **Propiedades (Props):**
167
+ | Propiedad | Tipo | Por Defecto | Descripción |
168
+ | :--- | :--- | :--- | :--- |
169
+ | `hijos` | `ReactNode` | - | Contenido del enlace (texto/iconos). |
170
+ | `href` | `string` | - | Dirección de destino. |
171
+ | `subrayado` | `'none' \| 'hover' \| 'always'` | `'hover'` | Controla la visualización del subrayado. |
172
+ | `componente` | `ElementType`| `'a'` | Etiqueta base (útil para `Link` de React Router). |
173
+
174
+ ---
175
+
176
+ #### CodeplexPaginacion (Pagination)
177
+ Componente de selección de páginas para listas extensas de datos.
178
+
179
+ **Ejemplo de Uso:**
180
+ ```tsx
181
+ import { CodeplexPaginacion } from '@codeplex-sac/navigation';
182
+
183
+ export const Listado = () => (
184
+ <CodeplexPaginacion
185
+ total={25}
186
+ pagina={1}
187
+ alCambiar={(e, p) => console.log('Nueva página:', p)}
188
+ centrado
189
+ color="primary"
190
+ />
191
+ );
192
+ ```
193
+
194
+ **Propiedades (Props):**
195
+ | Propiedad | Tipo | Por Defecto | Descripción |
196
+ | :--- | :--- | :--- | :--- |
197
+ | `total` | `number` | - | Número total de páginas. |
198
+ | `pagina` | `number` | - | Página actual seleccionada. |
199
+ | `alCambiar` | `Function` | - | Evento disparado al seleccionar otra página. |
200
+ | `centrado` | `boolean` | `false` | Centra el componente en su contenedor. |
201
+ | `variante` | `'outlined' \| 'text'` | `'text'`| Estilo visual de los botones. |
202
+
203
+ ### 🖱️ Grupo 3: Menús y Acciones Flotantes
204
+
205
+ #### CodeplexMenu
206
+ Muestra una lista de opciones en una superficie temporal anclada a un componente de referencia.
207
+
208
+ **Ejemplo de Uso:**
209
+ ```tsx
210
+ import { CodeplexMenu, CodeplexBoton } from '@codeplex-sac/ui';
211
+
212
+ export const Ejemplo = () => {
213
+ const [ancla, setAncla] = useState(null);
214
+ const ACCIONES = [
215
+ { etiqueta: 'Editar', icono: <EditIcon />, alHacerClick: () => alert('Editando...') },
216
+ { etiqueta: 'Eliminar', icono: <DeleteIcon />, sx: { color: 'error.main' } }
217
+ ];
218
+
219
+ return (
220
+ <>
221
+ <CodeplexBoton texto="Opciones" alHacerClick={(e) => setAncla(e.currentTarget)} />
222
+ <CodeplexMenu
223
+ abierto={Boolean(ancla)}
224
+ elementoAnclaje={ancla}
225
+ alCerrar={() => setAncla(null)}
226
+ elementos={ACCIONES}
227
+ />
228
+ </>
229
+ );
230
+ };
231
+ ```
232
+
233
+ **Propiedades (Props):**
234
+ | Propiedad | Tipo | Por Defecto | Descripción |
235
+ | :--- | :--- | :--- | :--- |
236
+ | `abierto` | `boolean` | - | Controla la visibilidad del menú. |
237
+ | `elementoAnclaje`| `HTMLElement` | - | Elemento que sirve de referencia para la posición. |
238
+ | `elementos` | `Array<Item>` | - | Lista de opciones con `etiqueta`, `icono` y callback. |
239
+ | `alCerrar` | `Function` | - | Evento disparado al cerrar el menú. |
240
+
241
+ ---
242
+
243
+ #### CodeplexMarcacionRapida (Speed Dial)
244
+ Botón flotante (FAB) que despliega una ráfaga de acciones relacionadas al interactuar con él.
245
+
246
+ **Ejemplo de Uso:**
247
+ ```tsx
248
+ import { CodeplexMarcacionRapida } from '@codeplex-sac/navigation';
249
+
250
+ const ACCIONES = [
251
+ { icono: <SaveIcon />, tituloTooltip: 'Guardar', alHacerClick: () => save() },
252
+ { icono: <PrintIcon />, tituloTooltip: 'Imprimir' }
253
+ ];
254
+
255
+ export const MiApp = () => (
256
+ <CodeplexMarcacionRapida
257
+ etiquetaAria="Acciones de archivo"
258
+ icono={<EditIcon />}
259
+ acciones={ACCIONES}
260
+ direction="up"
261
+ />
262
+ );
263
+ ```
264
+
265
+ **Propiedades (Props):**
266
+ | Propiedad | Tipo | Por Defecto | Descripción |
267
+ | :--- | :--- | :--- | :--- |
268
+ | `acciones` | `Array<Accion>`| - | Lista de botones internos con `icono` y `tituloTooltip`. |
269
+ | `etiquetaAria` | `string` | - | Texto de accesibilidad (obligatorio). |
270
+ | `icono` | `ReactNode` | - | Icono del botón principal. |
271
+ | `direction` | `string` | `'up'` | Dirección de despliegue (up, down, left, right). |
272
+
273
+ ---
274
+
275
+ #### CodeplexNavegacionInferior (Bottom Navigation)
276
+ Navegación principal fija en la base de la pantalla, optimizada para aplicaciones móviles.
277
+
278
+ **Ejemplo de Uso:**
279
+ ```tsx
280
+ import { CodeplexNavegacionInferior } from '@codeplex-sac/navigation';
281
+
282
+ const NAV_ITEMS = [
283
+ { etiqueta: 'Inicio', valor: 'inicio', icono: <HomeIcon /> },
284
+ { etiqueta: 'Favoritos', valor: 'favs', icono: <FavoriteIcon /> },
285
+ { etiqueta: 'Perfil', valor: 'perfil', icono: <PersonIcon /> }
286
+ ];
287
+
288
+ export const AppMovil = () => (
289
+ <CodeplexNavegacionInferior
290
+ elementos={NAV_ITEMS}
291
+ valor="inicio"
292
+ fijo
293
+ conPapel
294
+ />
295
+ );
296
+ ```
297
+
298
+ **Propiedades (Props):**
299
+ | Propiedad | Tipo | Por Defecto | Descripción |
300
+ | :--- | :--- | :--- | :--- |
301
+ | `elementos` | `Array<Item>` | - | Lista de pestañas con `etiqueta`, `icono` y `valor`. |
302
+ | `valor` | `any` | - | Valor del elemento activo. |
303
+ | `fijo` | `boolean` | `false` | Ancla la barra al final de la ventana (fixed). |
304
+ | `conPapel`| `boolean` | `true` | Aplica sombra y elevación estilo Material Design. |
305
+
306
+ ---
307
+
308
+ ## 🎨 Integración y Diseño
309
+
310
+ Todos los componentes de `@codeplex-sac/navigation` están diseñados para heredar automáticamente la identidad visual definida en `@codeplex-sac/theme`, respetando los modos claro/oscuro y utilizando la tipografía **Poppins**.
311
+
312
+ ## 📄 Licencia
313
+
314
+ Este proyecto es propiedad privada de **Codeplex SAC**. Todos los derechos reservados.
package/index.d.ts ADDED
@@ -0,0 +1,11 @@
1
+ export * from './lib/navegacion-inferior/navegacion-inferior';
2
+ export * from './lib/migas-pan/migas-pan';
3
+ export * from './lib/cajon-lateral/cajon-lateral';
4
+ export * from './lib/menu/menu';
5
+ export * from './lib/enlace/enlace';
6
+ export * from './lib/paginacion/paginacion';
7
+ export * from './lib/marcacion-rapida/marcacion-rapida';
8
+ export * from './lib/pasos/pasos';
9
+ export * from './lib/pestanas/pestanas';
10
+ export * from './lib/barra-navegacion/barra-navegacion';
11
+ export * from './lib/panel-lateral/panel-lateral';