@codeplex-sac/navigation 0.0.5 → 0.0.6
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 +265 -106
- package/index.mjs +3475 -3303
- package/lib/cajon-lateral/cajon-lateral.d.ts +53 -3
- package/lib/enlace/enlace.d.ts +26 -3
- package/lib/marcacion-rapida/marcacion-rapida.d.ts +40 -3
- package/lib/menu/menu.d.ts +49 -4
- package/lib/migas-pan/migas-pan.d.ts +48 -3
- package/lib/navegacion-inferior/navegacion-inferior.d.ts +56 -2
- package/lib/paginacion/paginacion.d.ts +24 -3
- package/lib/pasos/pasos.d.ts +67 -6
- package/lib/pestanas/pestanas.d.ts +65 -10
- package/package.json +4 -1
package/README.md
CHANGED
|
@@ -1,155 +1,314 @@
|
|
|
1
1
|
# @codeplex-sac/navigation
|
|
2
2
|
|
|
3
|
-
|
|
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
4
|
|
|
5
|
-
##
|
|
5
|
+
## 🚀 Instalación
|
|
6
6
|
|
|
7
7
|
```bash
|
|
8
|
-
|
|
8
|
+
bun add @codeplex-sac/navigation @mui/material @emotion/react @emotion/styled
|
|
9
9
|
```
|
|
10
10
|
|
|
11
11
|
---
|
|
12
12
|
|
|
13
|
-
##
|
|
13
|
+
## 🏗️ Componentes de Estructura y Flujo
|
|
14
14
|
|
|
15
|
-
###
|
|
16
|
-
Panel deslizante para menús principales o filtros. Soporta modo "Deslizable" (Swipeable) para móviles.
|
|
15
|
+
### 🗄️ Grupo 1: Contenedores y Pasos
|
|
17
16
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
| `abierto` | `boolean` | Controla la visibilidad. |
|
|
21
|
-
| `anclaje` | `'left' \| 'right'` | Lado de aparición. |
|
|
22
|
-
| `deslizable` | `boolean` | Activa soporte táctil (SwipeableDrawer). |
|
|
23
|
-
| `ancho` | `number \| string` | Ancho del panel (default: 280). |
|
|
24
|
-
| `cabecera` | `ReactNode` | Contenido superior fijo (Logo, Título). |
|
|
25
|
-
| `pie` | `ReactNode` | Contenido inferior fijo. |
|
|
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.
|
|
26
19
|
|
|
20
|
+
**Ejemplo de Uso:**
|
|
27
21
|
```tsx
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
</
|
|
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
|
+
);
|
|
36
35
|
```
|
|
37
36
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
|
42
|
-
|
|
|
43
|
-
| `
|
|
44
|
-
| `
|
|
45
|
-
| `
|
|
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. |
|
|
46
48
|
|
|
47
49
|
---
|
|
48
50
|
|
|
49
|
-
|
|
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
|
+
---
|
|
50
83
|
|
|
51
|
-
|
|
52
|
-
|
|
84
|
+
#### CodeplexPestanas (Tabs)
|
|
85
|
+
Organiza contenido en diferentes vistas accesibles mediante pestañas superiores o integradas.
|
|
53
86
|
|
|
87
|
+
**Ejemplo de Uso:**
|
|
54
88
|
```tsx
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
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
|
+
);
|
|
62
104
|
```
|
|
63
105
|
|
|
64
|
-
|
|
65
|
-
|
|
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. |
|
|
66
114
|
|
|
67
|
-
|
|
68
|
-
| :--- | :--- |
|
|
69
|
-
| `pasos` | Array `{ etiqueta, leyenda, opcional, error, completado }`. |
|
|
70
|
-
| `pasoActivo` | Índice del paso actual (0-based). |
|
|
71
|
-
| `noLineal` | `boolean`. Permite saltar entre pasos haciendo clic. |
|
|
72
|
-
| `etiquetaAlternativa` | `boolean`. Pone los textos debajo de los círculos. |
|
|
115
|
+
### 🗺️ Grupo 2: Rutas y Jerarquía
|
|
73
116
|
|
|
74
|
-
|
|
75
|
-
|
|
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.
|
|
76
119
|
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
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. |
|
|
82
146
|
|
|
83
147
|
---
|
|
84
148
|
|
|
85
|
-
|
|
149
|
+
#### CodeplexEnlace (Link)
|
|
150
|
+
Simplifica la creación de vínculos de navegación con estilos consistentes y soporte para polimorfismo.
|
|
86
151
|
|
|
87
|
-
|
|
88
|
-
|
|
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
|
+
```
|
|
89
165
|
|
|
90
|
-
|
|
91
|
-
|
|
|
92
|
-
|
|
|
93
|
-
| `
|
|
94
|
-
| `
|
|
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). |
|
|
95
173
|
|
|
96
|
-
|
|
97
|
-
Enlace estilizado estándar.
|
|
174
|
+
---
|
|
98
175
|
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
| `subrayado` | `'none' \| 'hover' \| 'always'`. |
|
|
102
|
-
| `componente` | Permite cambiar el nodo raíz (útil para `react-router-dom Link`). |
|
|
176
|
+
#### CodeplexPaginacion (Pagination)
|
|
177
|
+
Componente de selección de páginas para listas extensas de datos.
|
|
103
178
|
|
|
179
|
+
**Ejemplo de Uso:**
|
|
104
180
|
```tsx
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
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
|
+
);
|
|
108
192
|
```
|
|
109
193
|
|
|
110
|
-
|
|
111
|
-
|
|
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. |
|
|
112
202
|
|
|
113
|
-
|
|
114
|
-
| :--- | :--- |
|
|
115
|
-
| `acciones` | Array `{ icono, tituloTooltip, alHacerClick }`. |
|
|
116
|
-
| `direction` | Dirección de apertura (`up`, `down`, `left`, `right`). |
|
|
203
|
+
### 🖱️ Grupo 3: Menús y Acciones Flotantes
|
|
117
204
|
|
|
118
|
-
|
|
119
|
-
|
|
205
|
+
#### CodeplexMenu
|
|
206
|
+
Muestra una lista de opciones en una superficie temporal anclada a un componente de referencia.
|
|
120
207
|
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
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ú. |
|
|
125
240
|
|
|
126
241
|
---
|
|
127
242
|
|
|
128
|
-
|
|
243
|
+
#### CodeplexMarcacionRapida (Speed Dial)
|
|
244
|
+
Botón flotante (FAB) que despliega una ráfaga de acciones relacionadas al interactuar con él.
|
|
129
245
|
|
|
130
|
-
|
|
131
|
-
Para crear una app móvil con barra inferior fija:
|
|
246
|
+
**Ejemplo de Uso:**
|
|
132
247
|
```tsx
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
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
|
+
);
|
|
142
263
|
```
|
|
143
264
|
|
|
144
|
-
|
|
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:**
|
|
145
279
|
```tsx
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
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
|
+
);
|
|
155
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.
|