@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 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
+