@klu_dev/ui-klu-green 1.1.3 → 1.1.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
@@ -16,6 +16,7 @@ npm install @klu_dev/ui-klu-green
16
16
  - BackButton
17
17
  - Select
18
18
  - Typography
19
+ - Modal
19
20
 
20
21
  ## Antes de comenzar a agregar componentes
21
22
 
@@ -305,4 +306,111 @@ export default function FormSelect() {
305
306
  | `sm` | `150px` | `uiklu-w-[150px]` |
306
307
  | `md` | `250px` | `uiklu-w-[250px]` |
307
308
  | `lg` | `350px` | `uiklu-w-[350px]` |
308
- | `full` | `100%` | `uiklu-w-full` |
309
+ | `full` | `100%` | `uiklu-w-full` |
310
+
311
+
312
+
313
+ ## Uso Modal
314
+ Componente de diálogo flexible basado en Radix UI. Permite encabezados con íconos, contenido personalizado y un pie con botones configurables que usan las variantes de la librería.
315
+
316
+
317
+ - **Modal Autorización:**
318
+
319
+ ```tsx
320
+ import { Modal, Button, Input, Icons } from "@klu_dev/ui-klu-green"
321
+ import { useState } from "react"
322
+
323
+ export default function AuthExample() {
324
+ const [isOpen, setIsOpen] = useState(false)
325
+
326
+ return (
327
+ <>
328
+ <Button onClick={() => setIsOpen(true)}>Abrir Autorización</Button>
329
+
330
+ <Modal
331
+ open={isOpen}
332
+ onOpenChange={setIsOpen}
333
+ title="Autorización"
334
+ icon={Icons.SHIELD_CHECK}
335
+ footerButtons={[
336
+ {
337
+ label: "Cancelar",
338
+ variant: "outlinePrimary",
339
+ onClick: () => setIsOpen(false)
340
+ },
341
+ {
342
+ label: "Verificar código",
343
+ variant: "primary",
344
+ onClick: () => console.log("Validando...")
345
+ }
346
+ ]}
347
+ >
348
+ <div className="uiklu-space-y-6">
349
+ <p className="uiklu-text-balance-slate-600 uiklu-text-[14px]">
350
+ Este movimiento esta protegido con la aplicación de autenticación.
351
+ </p>
352
+ <div className="uiklu-space-y-2">
353
+ <label className="uiklu-text-balance-slate-600 uiklu-text-[14px] uiklu-font-medium">
354
+ Código de autenticación
355
+ </label>
356
+ <Input type="password" placeholder="**********" size="full" />
357
+ </div>
358
+ </div>
359
+ </Modal>
360
+ </>
361
+ )
362
+ }
363
+ ```
364
+
365
+
366
+
367
+ - **Modal Mensaje informativo:**
368
+ Ideal para confirmaciones de éxito o avisos rápidos donde solo se requiere un botón de acción.
369
+
370
+
371
+ ```tsx
372
+ import { Modal, Icons } from "@klu_dev/ui-klu-green"
373
+ import { useState } from "react"
374
+
375
+ export default function SuccessMessage() {
376
+ const [isOpen, setIsOpen] = useState(false)
377
+
378
+ return (
379
+ <>
380
+ <button onClick={() => setIsOpen(true)}>Actualizar Contraseña</button>
381
+
382
+ <Modal
383
+ open={isOpen}
384
+ onOpenChange={setIsOpen}
385
+ title="Cambio Exitoso"
386
+ icon={Icons.SHIELD_CHECK}
387
+ footerButtons={[
388
+ {
389
+ label: "Entendido",
390
+ variant: "primary",
391
+ onClick: () => setIsOpen(false)
392
+ }
393
+ ]}
394
+ >
395
+ <p className="uiklu-text-balance-slate-600 uiklu-text-[14px] uiklu-leading-relaxed">
396
+ Tu contraseña se ha actualizado correctamente. Te recomendamos no compartirla con nadie por seguridad.
397
+ </p>
398
+ </Modal>
399
+ </>
400
+ )
401
+ }
402
+
403
+ ```
404
+
405
+ - **Props de Modal:**
406
+
407
+ | Prop | Tipo | Descripción |
408
+ | :--- | :--- | :--- |
409
+ | `open` | `boolean` | Controla si el modal está visible. |
410
+ | `onOpenChange` | `function` | Función para actualizar el estado de apertura. |
411
+ | `title` | `string` | Título que aparece en el encabezado. |
412
+ | `icon` | `ReactNode` | Icono decorativo al lado del título. |
413
+ | `children` | `ReactNode` | Contenido principal (cuerpo) del modal. |
414
+ | `footerButtons` | `array` | Configuración de botones (label, onClick, variant). |
415
+ | `sm:max-w` | `500px` | Ancho máximo en pantallas pequeñas: `uiklu-sm:max-w-[500px]` |
416
+