@klu_dev/ui-klu-green 1.2.3 → 1.2.5
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 +82 -1
- package/dist/index.css +564 -45
- package/dist/index.js +24 -24
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -654,4 +654,85 @@ export default function NavigationDashboard() {
|
|
|
654
654
|
| `id` | `string` | Identificador único de la pestaña. |
|
|
655
655
|
| `label` | `string` | Texto descriptivo de la opción que verá el usuario. |
|
|
656
656
|
| `icon` | `ReactNode` | Elemento gráfico/ícono extraído del objeto `Icons`. |
|
|
657
|
-
| `content` | `ReactNode` | (Opcional) Componente o vista que se renderizará automáticamente al activar la pestaña. |
|
|
657
|
+
| `content` | `ReactNode` | (Opcional) Componente o vista que se renderizará automáticamente al activar la pestaña. |
|
|
658
|
+
|
|
659
|
+
|
|
660
|
+
## Uso de MobileMenuDrawer
|
|
661
|
+
|
|
662
|
+
Componente presentacional ("tonto") diseñado para desplegar la barra de navegación en vistas responsivas móviles. Al cambiar de pestaña, delega el control de la acción a la aplicación contenedora para poder mutar layouts completos de forma dinámica mediante un Mapeo de Componentes.
|
|
663
|
+
|
|
664
|
+
|
|
665
|
+
|
|
666
|
+
```tsx
|
|
667
|
+
import { useState } from 'react'
|
|
668
|
+
import { MobileMenuDrawer, Button, Icons } from '@klu_dev/ui-klu-green'
|
|
669
|
+
import { MoreHorizontal } from 'lucide-react'
|
|
670
|
+
|
|
671
|
+
// 1. Importa tus componentes/vistas completos del proyecto
|
|
672
|
+
import { MiVistaInicio } from './views/MiVistaInicio'
|
|
673
|
+
import { MiVistaTarjeta } from './views/MiVistaTarjeta'
|
|
674
|
+
import { MiVistaMovimientos } from './views/MiVistaMovimientos'
|
|
675
|
+
|
|
676
|
+
export function AppMobileLayout() {
|
|
677
|
+
const [isMenuOpen, setIsMenuOpen] = useState(false)
|
|
678
|
+
const [activeTab, setActiveTab] = useState('inicio')
|
|
679
|
+
|
|
680
|
+
// Opciones compartidas con el menú
|
|
681
|
+
const opcionesMenu = [
|
|
682
|
+
{ id: 'inicio', label: 'Inicio', icon: Icons.HOME },
|
|
683
|
+
{ id: 'tarjeta', label: 'Mi Tarjeta', icon: Icons.MYCARD },
|
|
684
|
+
{ id: 'movimientos', label: 'Movimientos', icon: Icons.MOVEMENTS },
|
|
685
|
+
]
|
|
686
|
+
|
|
687
|
+
// 2. Diccionario de mapeo: Asocia cada ID string con su respectiva vista
|
|
688
|
+
const rendersDeVistas: Record<string, React.ReactNode> = {
|
|
689
|
+
inicio: <MiVistaInicio />,
|
|
690
|
+
tarjeta: <MiVistaTarjeta />,
|
|
691
|
+
movimientos: <MiVistaMovimientos />,
|
|
692
|
+
}
|
|
693
|
+
|
|
694
|
+
return (
|
|
695
|
+
<div className="uiklu-w-full uiklu-min-h-screen uiklu-bg-gray-50 uiklu-flex uiklu-flex-col">
|
|
696
|
+
<header className="uiklu-bg-white uiklu-p-4 uiklu-flex uiklu-justify-between uiklu-items-center uiklu-border-b">
|
|
697
|
+
<span>Mi Banca Web</span>
|
|
698
|
+
|
|
699
|
+
{/* Botón para abrir el drawer */}
|
|
700
|
+
<Button
|
|
701
|
+
variant="iconCircle"
|
|
702
|
+
size="iconOnly"
|
|
703
|
+
onClick={() => setIsMenuOpen(true)}
|
|
704
|
+
icon={<MoreHorizontal style={{ width: '20px', height: '20px', color: '#FFF' }} />}
|
|
705
|
+
/>
|
|
706
|
+
</header>
|
|
707
|
+
|
|
708
|
+
{/* 3. Contenedor Dinámico: Se monta la vista completa en base al ID seleccionado */}
|
|
709
|
+
<main className="uiklu-p-4 uiklu-flex-1">
|
|
710
|
+
{rendersDeVistas[activeTab] || <MiVistaInicio />}
|
|
711
|
+
</main>
|
|
712
|
+
|
|
713
|
+
{/* Render del Drawer Mobile */}
|
|
714
|
+
<MobileMenuDrawer
|
|
715
|
+
isOpen={isMenuOpen}
|
|
716
|
+
onClose={() => setIsMenuOpen(false)}
|
|
717
|
+
items={opcionesMenu}
|
|
718
|
+
activeTab={activeTab}
|
|
719
|
+
onTabChange={setActiveTab}
|
|
720
|
+
/>
|
|
721
|
+
</div>
|
|
722
|
+
)
|
|
723
|
+
}
|
|
724
|
+
```
|
|
725
|
+
|
|
726
|
+
|
|
727
|
+
### Props de MobileMenuDrawer
|
|
728
|
+
### Props de MobileMenuDrawer
|
|
729
|
+
|
|
730
|
+
| Prop | Tipo | Descripción |
|
|
731
|
+
| :--- | :--- | :--- |
|
|
732
|
+
| `isOpen` | `boolean` | Controla la visibilidad en pantalla del menú desplegable. |
|
|
733
|
+
| `onClose` | `() => void` | Callback ejecutado al presionar el botón de cerrar (`X`) o seleccionar una pestaña. |
|
|
734
|
+
| `items` | `NavItem[]` | Array de opciones con estructura `{ id, label, icon, hasDivider? }`. |
|
|
735
|
+
| `activeTab` | `string` | ID de la pestaña seleccionada actualmente. |
|
|
736
|
+
| `onTabChange` | `(id: string) => void` | Callback gatillado al pulsar una nueva opción del menú. Devuelve el `id`. |
|
|
737
|
+
|
|
738
|
+
|