@khipu/design-system 0.2.0-alpha.4 → 0.2.0-alpha.41

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/dist/index.d.mts CHANGED
@@ -1,7 +1,6 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import * as React$1 from 'react';
3
3
  import React__default from 'react';
4
- import * as Select from '@radix-ui/react-select';
5
4
  export { clsx } from 'clsx';
6
5
 
7
6
  interface KdsThemeProviderProps {
@@ -239,6 +238,7 @@ declare const colors: {
239
238
  main: string;
240
239
  light: string;
241
240
  dark: string;
241
+ warm: string;
242
242
  container: string;
243
243
  contrastText: string;
244
244
  };
@@ -255,6 +255,7 @@ declare const colors: {
255
255
  main: string;
256
256
  light: string;
257
257
  dark: string;
258
+ blue: string;
258
259
  container: string;
259
260
  contrastText: string;
260
261
  };
@@ -376,6 +377,7 @@ declare const fontSizes: {
376
377
  readonly '2xl': "1.5rem";
377
378
  readonly '3xl': "1.875rem";
378
379
  readonly '4xl': "2.25rem";
380
+ readonly decimalSup: "0.5em";
379
381
  };
380
382
  declare const lineHeights: {
381
383
  readonly tight: 1.2;
@@ -694,6 +696,7 @@ declare const tokensByMode: {
694
696
  main: string;
695
697
  light: string;
696
698
  dark: string;
699
+ warm: string;
697
700
  container: string;
698
701
  contrastText: string;
699
702
  };
@@ -710,6 +713,7 @@ declare const tokensByMode: {
710
713
  main: string;
711
714
  light: string;
712
715
  dark: string;
716
+ blue: string;
713
717
  container: string;
714
718
  contrastText: string;
715
719
  };
@@ -831,6 +835,7 @@ declare const tokensByMode: {
831
835
  readonly '2xl': "1.5rem";
832
836
  readonly '3xl': "1.875rem";
833
837
  readonly '4xl': "2.25rem";
838
+ readonly decimalSup: "0.5em";
834
839
  };
835
840
  readonly lineHeights: {
836
841
  readonly tight: 1.2;
@@ -1285,6 +1290,7 @@ declare const tokensByMode: {
1285
1290
  main: string;
1286
1291
  light: string;
1287
1292
  dark: string;
1293
+ warm: string;
1288
1294
  container: string;
1289
1295
  contrastText: string;
1290
1296
  };
@@ -1301,6 +1307,7 @@ declare const tokensByMode: {
1301
1307
  main: string;
1302
1308
  light: string;
1303
1309
  dark: string;
1310
+ blue: string;
1304
1311
  container: string;
1305
1312
  contrastText: string;
1306
1313
  };
@@ -1420,6 +1427,7 @@ declare const tokensByMode: {
1420
1427
  readonly '2xl': "1.5rem";
1421
1428
  readonly '3xl': "1.875rem";
1422
1429
  readonly '4xl': "2.25rem";
1430
+ readonly decimalSup: "0.5em";
1423
1431
  };
1424
1432
  readonly lineHeights: {
1425
1433
  readonly tight: 1.2;
@@ -1881,6 +1889,7 @@ declare const tokens: {
1881
1889
  main: string;
1882
1890
  light: string;
1883
1891
  dark: string;
1892
+ warm: string;
1884
1893
  container: string;
1885
1894
  contrastText: string;
1886
1895
  };
@@ -1897,6 +1906,7 @@ declare const tokens: {
1897
1906
  main: string;
1898
1907
  light: string;
1899
1908
  dark: string;
1909
+ blue: string;
1900
1910
  container: string;
1901
1911
  contrastText: string;
1902
1912
  };
@@ -2018,6 +2028,7 @@ declare const tokens: {
2018
2028
  readonly '2xl': "1.5rem";
2019
2029
  readonly '3xl': "1.875rem";
2020
2030
  readonly '4xl': "2.25rem";
2031
+ readonly decimalSup: "0.5em";
2021
2032
  };
2022
2033
  readonly lineHeights: {
2023
2034
  readonly tight: 1.2;
@@ -2475,7 +2486,7 @@ type Typography = typeof typography;
2475
2486
  * Matches the Figma design: Pagos Automáticos - MUI v610
2476
2487
  */
2477
2488
 
2478
- type KdsButtonVariant = 'primary' | 'secondary' | 'outlined' | 'outlined-white' | 'text' | 'success';
2489
+ type KdsButtonVariant = 'primary' | 'secondary' | 'outlined' | 'outlined-white' | 'text' | 'success' | 'warning' | 'error' | 'error-text';
2479
2490
  type KdsButtonSize = 'sm' | 'md';
2480
2491
  interface KdsButtonProps extends React__default.ButtonHTMLAttributes<HTMLButtonElement> {
2481
2492
  /** Visual style variant */
@@ -2496,6 +2507,10 @@ interface KdsButtonProps extends React__default.ButtonHTMLAttributes<HTMLButtonE
2496
2507
  *
2497
2508
  * Built with native HTML and kds-* CSS classes from the BeerCSS bundle.
2498
2509
  *
2510
+ * Compose with: para apilar CTAs al pie de una card, envolver en
2511
+ * `.kds-btn-stack` (NO usar gap/margin inline) — primario arriba, outlined
2512
+ * debajo, todos `fullWidth`. Ver `Patterns/CSS-only → ButtonStack`.
2513
+ *
2499
2514
  * @example
2500
2515
  * ```tsx
2501
2516
  * <KdsButton variant="primary">
@@ -2524,121 +2539,65 @@ declare const KdsButton: React__default.ForwardRefExoticComponent<KdsButtonProps
2524
2539
  /**
2525
2540
  * Khipu Design System - TextField Component
2526
2541
  *
2527
- * A text input component built with native HTML and BeerCSS floating labels.
2528
- * Matches the Figma design: Pagos Automáticos - MUI v610
2542
+ * Matchea exactamente el markup que genera `matFieldImpl()` del taglib `mat:textField` de payment:
2543
+ *
2544
+ * <div class="field label border [prefix] [suffix] [invalid|valid|info|warning]">
2545
+ * <i class="material-symbols-outlined">prefixIcon</i> // si startIcon
2546
+ * <input type="..." id="..." name="..." value="..." placeholder=" " [required] [disabled]>
2547
+ * <label for="...">Label [*]</label>
2548
+ * <i class="material-symbols-outlined">suffixIcon</i> // si endIcon
2549
+ * <span class="helper">errorMessage o help</span> // si helperText
2550
+ * </div>
2551
+ *
2552
+ * Reglas críticas del truco floating-label de BeerCSS:
2553
+ * - `placeholder=" "` (un espacio) — NUNCA aceptar placeholder real del consumidor.
2554
+ * BeerCSS usa `input:placeholder-shown ~ label` para mantener la label abajo cuando el input
2555
+ * está vacío. Si pasas un placeholder real, el label se queda siempre arriba y se superpone.
2556
+ * - El wrapper DEBE tener `.prefix` cuando hay icono al inicio (alinea la label al lado del icono).
2557
+ * - El wrapper DEBE tener `.suffix` cuando hay icono al final.
2558
+ *
2559
+ * @gsp `mat:textField`, `mat:emailField`, `mat:passwordField`, `mat:numberField` (taglib `matFieldImpl`)
2529
2560
  */
2530
2561
 
2531
- interface KdsTextFieldProps extends Omit<React__default.InputHTMLAttributes<HTMLInputElement>, 'size'> {
2532
- /** Label text for the field */
2562
+ interface KdsTextFieldProps extends Omit<React__default.InputHTMLAttributes<HTMLInputElement>, 'size' | 'placeholder'> {
2563
+ /** Floating label. */
2533
2564
  label: string;
2534
- /** Helper text shown below field (error or info) */
2565
+ /** Helper text bajo el field (error o info). */
2535
2566
  helperText?: string;
2536
- /** Error state - applies invalid class and red styling */
2567
+ /** Estado inválido aplica `.invalid` al wrapper. */
2537
2568
  error?: boolean;
2538
- /** Full width field (default: true) */
2569
+ /** Full width (default: true). */
2539
2570
  fullWidth?: boolean;
2540
- /** Material Symbols icon name at the start of input, e.g. "search" */
2571
+ /** Material Symbol al inicio del input (aplica clase `.prefix`). */
2541
2572
  startIcon?: string;
2542
- /** Material Symbols icon name at the end of input, e.g. "visibility_off" */
2573
+ /** Material Symbol al final del input (aplica clase `.suffix`). */
2543
2574
  endIcon?: string;
2544
2575
  }
2545
- /**
2546
- * Text input field with label, validation, and icons.
2547
- *
2548
- * Built with native HTML and BeerCSS floating labels.
2549
- * The label animates up when the input has focus or value.
2550
- *
2551
- * @example
2552
- * ```tsx
2553
- * <KdsTextField
2554
- * label="RUT Suscriptor"
2555
- * placeholder="12.345.678-9"
2556
- * />
2557
- *
2558
- * <KdsTextField
2559
- * label="Buscar por nombre"
2560
- * startIcon="search"
2561
- * />
2562
- *
2563
- * <KdsTextField
2564
- * label="Contraseña"
2565
- * type="password"
2566
- * error
2567
- * helperText="Contraseña incorrecta"
2568
- * />
2569
- *
2570
- * <KdsTextField
2571
- * label="Monto"
2572
- * value="$1.000"
2573
- * readOnly
2574
- * />
2575
- * ```
2576
- */
2577
2576
  declare const KdsTextField: React__default.ForwardRefExoticComponent<KdsTextFieldProps & React__default.RefAttributes<HTMLInputElement>>;
2578
2577
 
2579
2578
  /**
2580
2579
  * Khipu Design System - Checkbox Component
2581
2580
  *
2582
- * Native HTML checkbox with BeerCSS styling.
2581
+ * Wrapper React que matchea exactamente el markup del taglib `mat:checkBox` de payment:
2582
+ *
2583
+ * <label class="checkbox">
2584
+ * <input type="checkbox" id="..." name="..." value="..." [checked] [disabled]>
2585
+ * <span>Label</span>
2586
+ * </label>
2587
+ *
2588
+ * BeerCSS oculta el input via `opacity: 0` y renderiza un sprite vía `::before` con
2589
+ * `content: "check_box_outline_blank"` usando la fuente Material Symbols Outlined.
2590
+ *
2591
+ * NO agregamos `htmlFor` al label porque el `<input>` está anidado dentro: la
2592
+ * asociación es implícita y `for` puede causar doble-disparo del click event.
2583
2593
  */
2584
2594
 
2585
2595
  interface KdsCheckboxProps extends Omit<React__default.InputHTMLAttributes<HTMLInputElement>, 'type'> {
2596
+ /** Texto del label mostrado al lado del sprite. Opcional (puede usar aria-label). */
2586
2597
  label?: string;
2587
2598
  }
2588
2599
  declare const KdsCheckbox: React__default.ForwardRefExoticComponent<KdsCheckboxProps & React__default.RefAttributes<HTMLInputElement>>;
2589
2600
 
2590
- /**
2591
- * Khipu Design System - Modal Component
2592
- *
2593
- * A modal dialog component built on Radix Dialog with Khipu design system styling.
2594
- * Uses kds-bottom-sheet BeerCSS classes for visual presentation.
2595
- */
2596
-
2597
- type KdsModalSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';
2598
- interface KdsModalProps {
2599
- /** Controls modal visibility */
2600
- open: boolean;
2601
- /** Callback when modal should close */
2602
- onClose: () => void;
2603
- /** Modal title */
2604
- title?: string;
2605
- /** Modal description text */
2606
- description?: string;
2607
- /** Footer content (usually action buttons) */
2608
- footer?: React__default.ReactNode;
2609
- /** Modal content */
2610
- children: React__default.ReactNode;
2611
- /** Modal max width */
2612
- size?: KdsModalSize;
2613
- /** Show close button */
2614
- showCloseButton?: boolean;
2615
- /** Additional CSS class */
2616
- className?: string;
2617
- }
2618
- /**
2619
- * Modal dialog component for displaying content that requires attention.
2620
- *
2621
- * Built on Radix Dialog with kds-bottom-sheet BeerCSS classes.
2622
- *
2623
- * @example
2624
- * ```tsx
2625
- * <KdsModal
2626
- * open={isOpen}
2627
- * onClose={() => setIsOpen(false)}
2628
- * title="Confirmar pago"
2629
- * footer={
2630
- * <>
2631
- * <button onClick={handleCancel}>Cancelar</button>
2632
- * <button onClick={handleConfirm}>Confirmar</button>
2633
- * </>
2634
- * }
2635
- * >
2636
- * <p>¿Estás seguro de que deseas realizar este pago?</p>
2637
- * </KdsModal>
2638
- * ```
2639
- */
2640
- declare const KdsModal: React__default.ForwardRefExoticComponent<KdsModalProps & React__default.RefAttributes<HTMLDivElement>>;
2641
-
2642
2601
  /**
2643
2602
  * Khipu Design System - Card Component
2644
2603
  *
@@ -2692,16 +2651,46 @@ declare const KdsCardFooter: React__default.ForwardRefExoticComponent<KdsCardSec
2692
2651
  /**
2693
2652
  * Khipu Design System - Spinner Component
2694
2653
  *
2695
- * Native HTML spinner with BeerCSS loader styling.
2654
+ * Spinner circular animado usando el patrón nativo de BeerCSS:
2655
+ * <progress class="circle [small|large] indeterminate"></progress>
2656
+ *
2657
+ * Tamaños (BeerCSS):
2658
+ * - `small` → 1.5rem (24px)
2659
+ * - default → 2.5rem (40px)
2660
+ * - `large` → 3.5rem (56px)
2661
+ *
2662
+ * El `<progress>` indeterminate aplica animación `to-rotate 1s linear infinite` con
2663
+ * gradient cónico (currentColor / `--active`).
2696
2664
  */
2697
2665
 
2698
2666
  type KdsSpinnerSize = 'small' | 'medium' | 'large';
2699
2667
  interface KdsSpinnerProps extends React__default.HTMLAttributes<HTMLDivElement> {
2668
+ /** Tamaño del spinner. Default `medium` (sin modifier = 2.5rem). */
2700
2669
  size?: KdsSpinnerSize;
2670
+ /** Texto bajo el spinner (visible). Si se omite, se usa "Cargando" como sr-only para a11y. */
2701
2671
  label?: string;
2702
2672
  }
2703
2673
  declare const KdsSpinner: React__default.ForwardRefExoticComponent<KdsSpinnerProps & React__default.RefAttributes<HTMLDivElement>>;
2704
2674
 
2675
+ /**
2676
+ * Khipu Design System - SecureLoader Component
2677
+ *
2678
+ * Loader de pantalla completa para flujos de pago: anillo circular animado con
2679
+ * un candado centrado y, opcionalmente, dos líneas de texto (estado + detalle).
2680
+ *
2681
+ * El anillo es un arco fino (~2px) rotando, definido en `.kds-secure-loader-ring`.
2682
+ * El texto es opcional y se pasa por props (`title`/`message`) porque su contenido
2683
+ * lo provee el consumidor (i18n / estado de la operación).
2684
+ */
2685
+
2686
+ interface KdsSecureLoaderProps extends React__default.HTMLAttributes<HTMLDivElement> {
2687
+ /** Frase de estado (línea principal) mostrada sobre el spinner. */
2688
+ title?: string;
2689
+ /** Detalle/submensaje (color primario) bajo el título. */
2690
+ message?: string;
2691
+ }
2692
+ declare const KdsSecureLoader: React__default.ForwardRefExoticComponent<KdsSecureLoaderProps & React__default.RefAttributes<HTMLDivElement>>;
2693
+
2705
2694
  /**
2706
2695
  * Khipu Design System - LinearProgress Component
2707
2696
  *
@@ -2717,53 +2706,34 @@ declare const KdsLinearProgress: React__default.ForwardRefExoticComponent<KdsLin
2717
2706
  /**
2718
2707
  * Khipu Design System - Alert Component
2719
2708
  *
2720
- * An alert component built with native HTML and kds-* CSS classes.
2721
- * Matches the Figma design: Pagos Automáticos - MUI v610
2709
+ * Alert con icon opcional, content y close button.
2710
+ *
2711
+ * Specs (CSS-derived):
2712
+ * - `.kds-alert`: flex, align-items center, gap 8px, padding 16px, border-radius md, border 1px
2713
+ * - `.kds-alert-icon`: 24px, flex-shrink 0
2714
+ * - `.kds-alert-content`: flex 1, min-width 0 (permite ellipsis del texto)
2715
+ * - Variantes: kds-info / kds-success / kds-warning / kds-error
2716
+ * - `.kds-alert-inline` reduce padding y bottom-margin
2722
2717
  */
2723
2718
 
2724
2719
  type KdsAlertSeverity = 'success' | 'info' | 'warning' | 'error';
2725
2720
  interface KdsAlertProps extends React__default.HTMLAttributes<HTMLDivElement> {
2726
- /** Alert severity/type */
2721
+ /** Alert severity/type. */
2727
2722
  severity: KdsAlertSeverity;
2728
- /** Alert title */
2723
+ /** Alert title (negrita arriba). */
2729
2724
  title?: string;
2730
- /** Material Symbols icon name, e.g. "info" */
2731
- icon?: string;
2732
- /** Inline variant (compact display) */
2725
+ /**
2726
+ * Material Symbols icon name. Si es `true` (o se omite y hay otra prop), se usa el default por severity.
2727
+ * Pasar `false` para ocultar el icon. Pasar un string custom para override.
2728
+ */
2729
+ icon?: string | boolean;
2730
+ /** Inline variant (compact display, sin border-radius grande). */
2733
2731
  inline?: boolean;
2734
- /** Alert content */
2732
+ /** Alert body. */
2735
2733
  children: React__default.ReactNode;
2736
- /** Closable alert */
2734
+ /** Callback para cerrar — renderiza icon-button discreto a la derecha. */
2737
2735
  onClose?: () => void;
2738
2736
  }
2739
- /**
2740
- * Alert component for displaying important messages.
2741
- *
2742
- * Built with native HTML and kds-* CSS classes from the BeerCSS bundle.
2743
- *
2744
- * @example
2745
- * ```tsx
2746
- * // Info alert (like in subscription details)
2747
- * <KdsAlert severity="info">
2748
- * El tope mensual corresponde al monto máximo posible a cobrar mensualmente.
2749
- * </KdsAlert>
2750
- *
2751
- * // Success alert
2752
- * <KdsAlert severity="success" title="¡Todo listo!">
2753
- * Espera la confirmación por parte de tu banco
2754
- * </KdsAlert>
2755
- *
2756
- * // Warning alert
2757
- * <KdsAlert severity="warning" onClose={() => setOpen(false)}>
2758
- * Tu sesión expirará pronto
2759
- * </KdsAlert>
2760
- *
2761
- * // Error alert
2762
- * <KdsAlert severity="error">
2763
- * Ha ocurrido un error al procesar tu pago
2764
- * </KdsAlert>
2765
- * ```
2766
- */
2767
2737
  declare const KdsAlert: React__default.ForwardRefExoticComponent<KdsAlertProps & React__default.RefAttributes<HTMLDivElement>>;
2768
2738
 
2769
2739
  /**
@@ -2817,10 +2787,27 @@ interface KdsTypographyProps extends React__default.HTMLAttributes<HTMLElement>
2817
2787
  */
2818
2788
  declare const KdsTypography: React__default.ForwardRefExoticComponent<KdsTypographyProps & React__default.RefAttributes<HTMLElement>>;
2819
2789
 
2790
+ /**
2791
+ * Khipu Design System - Tabs Component
2792
+ *
2793
+ * Matchea exactamente el markup que usa producción payment:
2794
+ *
2795
+ * <div class="kds-segmented-tabs" role="tablist">
2796
+ * <button type="button" class="active" role="tab" aria-selected="true">Personas</button>
2797
+ * <button type="button" role="tab" aria-selected="false">Empresas</button>
2798
+ * </div>
2799
+ *
2800
+ * Solo existe la variante segmented — producción payment no usa otra cosa, y el
2801
+ * "standard" Material Design 3 underline tab no está en el Khipu DS.
2802
+ *
2803
+ * @gsp `_choosePaymentMethodFormMaterial.gsp` (líneas 18-25)
2804
+ */
2805
+
2820
2806
  interface KdsTabsProps extends Omit<React__default.HTMLAttributes<HTMLDivElement>, 'onChange'> {
2807
+ /** Índice 0-based del tab activo. */
2821
2808
  activeIndex: number;
2809
+ /** Callback cuando cambia el tab activo. */
2822
2810
  onChange: (index: number) => void;
2823
- variant?: 'standard' | 'segmented';
2824
2811
  }
2825
2812
  declare const KdsTabs: React__default.ForwardRefExoticComponent<KdsTabsProps & React__default.RefAttributes<HTMLDivElement>>;
2826
2813
  interface KdsTabInternalProps {
@@ -2836,106 +2823,23 @@ interface KdsTabPanelProps extends React__default.HTMLAttributes<HTMLDivElement>
2836
2823
  declare const KdsTabPanel: React__default.ForwardRefExoticComponent<KdsTabPanelProps & React__default.RefAttributes<HTMLDivElement>>;
2837
2824
 
2838
2825
  /**
2839
- * Khipu Design System - LogoHeader Component
2840
- *
2841
- * A header bar component that displays the Khipu logo, a transaction code,
2842
- * and a close button. Used at the top of payment flow screens.
2843
- *
2844
- * Built with composable sub-components for maximum flexibility.
2845
- */
2846
-
2847
- interface KdsLogoHeaderProps extends React__default.HTMLAttributes<HTMLDivElement> {
2848
- /** Content - typically LogoHeader sub-components */
2849
- children?: React__default.ReactNode;
2850
- }
2851
- interface KdsLogoHeaderLogoProps extends React__default.HTMLAttributes<HTMLDivElement> {
2852
- /** Custom logo content. Defaults to Khipu text logo */
2853
- children?: React__default.ReactNode;
2854
- }
2855
- interface KdsLogoHeaderSeparatorProps extends React__default.HTMLAttributes<HTMLSpanElement> {
2856
- /** Separator character. Defaults to "|" */
2857
- children?: React__default.ReactNode;
2858
- }
2859
- interface KdsLogoHeaderCodeProps extends React__default.HTMLAttributes<HTMLSpanElement> {
2860
- /** Transaction or reference code to display */
2861
- children: React__default.ReactNode;
2862
- }
2863
- interface KdsLogoHeaderCloseButtonProps extends React__default.ButtonHTMLAttributes<HTMLButtonElement> {
2864
- /** Callback fired when the close button is clicked */
2865
- onClose?: () => void;
2866
- }
2867
- /**
2868
- * Logo section of the LogoHeader.
2869
- *
2870
- * @example
2871
- * ```tsx
2872
- * <KdsLogoHeaderLogo />
2873
- *
2874
- * <KdsLogoHeaderLogo>
2875
- * <img src="/custom-logo.svg" alt="Custom Logo" />
2876
- * </KdsLogoHeaderLogo>
2877
- * ```
2878
- */
2879
- declare const KdsLogoHeaderLogo: React__default.ForwardRefExoticComponent<KdsLogoHeaderLogoProps & React__default.RefAttributes<HTMLDivElement>>;
2880
- /**
2881
- * Separator element between logo and code.
2882
- *
2883
- * @example
2884
- * ```tsx
2885
- * <KdsLogoHeaderSeparator />
2886
- *
2887
- * <KdsLogoHeaderSeparator>•</KdsLogoHeaderSeparator>
2888
- * ```
2889
- */
2890
- declare const KdsLogoHeaderSeparator: React__default.ForwardRefExoticComponent<KdsLogoHeaderSeparatorProps & React__default.RefAttributes<HTMLSpanElement>>;
2891
- /**
2892
- * Transaction code section.
2893
- *
2894
- * @example
2895
- * ```tsx
2896
- * <KdsLogoHeaderCode>HUSK-P7ZZ-XGYG</KdsLogoHeaderCode>
2897
- * ```
2898
- */
2899
- declare const KdsLogoHeaderCode: React__default.ForwardRefExoticComponent<KdsLogoHeaderCodeProps & React__default.RefAttributes<HTMLSpanElement>>;
2900
- /**
2901
- * Close button for the header.
2902
- *
2903
- * @example
2904
- * ```tsx
2905
- * <KdsLogoHeaderCloseButton onClose={() => handleClose()} />
2906
- * ```
2907
- */
2908
- declare const KdsLogoHeaderCloseButton: React__default.ForwardRefExoticComponent<KdsLogoHeaderCloseButtonProps & React__default.RefAttributes<HTMLButtonElement>>;
2909
- /**
2910
- * LogoHeader bar component.
2826
+ * Khipu Design System - RadioGroup Component
2911
2827
  *
2912
- * A composable header component that can be used with sub-components
2913
- * for maximum flexibility, or with default children for quick usage.
2828
+ * Native HTML radio group with BeerCSS `.radio` class.
2914
2829
  *
2915
- * @example
2916
- * ```tsx
2917
- * // Composable usage
2918
- * <KdsLogoHeader>
2919
- * <KdsLogoHeaderLogo />
2920
- * <KdsLogoHeaderSeparator />
2921
- * <KdsLogoHeaderCode>HUSK-P7ZZ-XGYG</KdsLogoHeaderCode>
2922
- * <KdsLogoHeaderCloseButton onClose={() => handleClose()} />
2923
- * </KdsLogoHeader>
2924
- *
2925
- * // Simple usage with defaults
2926
- * <KdsLogoHeader>
2927
- * <KdsLogoHeaderLogo />
2928
- * <KdsLogoHeaderSeparator />
2929
- * <KdsLogoHeaderCode>ABC-1234-XYZ</KdsLogoHeaderCode>
2930
- * </KdsLogoHeader>
2931
- * ```
2932
- */
2933
- declare const KdsLogoHeader: React__default.ForwardRefExoticComponent<KdsLogoHeaderProps & React__default.RefAttributes<HTMLDivElement>>;
2934
-
2935
- /**
2936
- * Khipu Design System - RadioGroup Component
2830
+ * Contrato BeerCSS:
2831
+ * <fieldset class="kds-radio-group">
2832
+ * <legend>Label</legend>
2833
+ * <label class="radio">
2834
+ * <input type="radio" name="x" value="a" />
2835
+ * <span>Opción A</span>
2836
+ * </label>
2837
+ * ...
2838
+ * </fieldset>
2937
2839
  *
2938
- * Native HTML radio group with BeerCSS styling.
2840
+ * Specs:
2841
+ * - Input oculto, sprite circular generado por `:is(.checkbox, .radio) > span::before`
2842
+ * - Tamaño default 18x18; modifiers `.small` (14px) / `.large` (22px)
2939
2843
  */
2940
2844
 
2941
2845
  interface KdsRadioOption {
@@ -2949,55 +2853,137 @@ interface KdsRadioGroupProps extends Omit<React__default.FieldsetHTMLAttributes<
2949
2853
  options: KdsRadioOption[];
2950
2854
  value?: string;
2951
2855
  onChange?: (value: string) => void;
2856
+ /** Tamaño del sprite del radio (aplicado a cada opción). */
2857
+ size?: 'small' | 'large';
2952
2858
  }
2953
2859
  declare const KdsRadioGroup: React__default.ForwardRefExoticComponent<KdsRadioGroupProps & React__default.RefAttributes<HTMLFieldSetElement>>;
2954
2860
 
2955
2861
  /**
2956
2862
  * Khipu Design System - Select Component
2957
2863
  *
2958
- * A select dropdown component built on Radix UI Select with BeerCSS field styling.
2864
+ * Native HTML `<select>` wrapped en el patrón BeerCSS `field label border`.
2865
+ * Matchea exactamente el markup que genera la taglib `mat:select` de payment.
2866
+ *
2867
+ * Markup canónico:
2868
+ *
2869
+ * <div class="field label border [prefix] [invalid|valid|info|warning]">
2870
+ * <i class="material-symbols-outlined">prefixIcon</i> // opcional
2871
+ * <select id="..." name="..." [required] [disabled]>
2872
+ * <option value="">Placeholder...</option> // opcional (noSelection)
2873
+ * <option value="bci">BCI</option>
2874
+ * ...
2875
+ * </select>
2876
+ * <label for="...">Banco *</label>
2877
+ * <span class="helper">errorMessage o help</span> // opcional
2878
+ * </div>
2879
+ *
2880
+ * BeerCSS dibuja el chevron automáticamente, el floating label, focus ring, etc.
2881
+ *
2882
+ * @gsp `mat:select` taglib (MaterialTagLib.groovy:260)
2959
2883
  */
2960
2884
 
2961
- interface KdsSelectProps {
2885
+ interface KdsSelectOption {
2886
+ /** Valor del `<option>` (string serializable). */
2962
2887
  value: string;
2963
- onValueChange: (value: string) => void;
2888
+ /** Texto visible del `<option>`. */
2889
+ label: string;
2890
+ /** Si está disabled. */
2891
+ disabled?: boolean;
2892
+ }
2893
+ interface KdsSelectProps extends Omit<React__default.SelectHTMLAttributes<HTMLSelectElement>, 'children'> {
2894
+ /** Floating label. */
2895
+ label: string;
2896
+ /** Lista de opciones del select. */
2897
+ options: KdsSelectOption[];
2898
+ /**
2899
+ * Texto del primer `<option>` con value="" (placeholder). Si está vacío, no se renderiza.
2900
+ * Equivalente a `noSelection` del taglib.
2901
+ */
2964
2902
  placeholder?: string;
2965
- label?: string;
2903
+ /** Helper text bajo el field (error o info). */
2904
+ helperText?: string;
2905
+ /** Estado inválido — aplica clase `.invalid` al wrapper. */
2966
2906
  error?: boolean;
2967
- helperText?: React__default.ReactNode;
2968
- disabled?: boolean;
2907
+ /** Material Symbols icon al inicio del field (aplica clase `.prefix`). */
2908
+ prefixIcon?: string;
2909
+ /** Full width (default: true). */
2969
2910
  fullWidth?: boolean;
2970
- children: React__default.ReactNode;
2971
- className?: string;
2972
- }
2973
- interface KdsSelectItemProps extends Select.SelectItemProps {
2974
- children: React__default.ReactNode;
2975
2911
  }
2976
- declare const KdsSelect: React__default.ForwardRefExoticComponent<KdsSelectProps & React__default.RefAttributes<HTMLDivElement>> & {
2977
- Item: React__default.ForwardRefExoticComponent<KdsSelectItemProps & React__default.RefAttributes<HTMLDivElement>>;
2978
- };
2912
+ declare const KdsSelect: React__default.ForwardRefExoticComponent<KdsSelectProps & React__default.RefAttributes<HTMLSelectElement>>;
2979
2913
 
2980
2914
  /**
2981
2915
  * Khipu Design System - Chip Component
2982
2916
  *
2983
- * Native HTML chip with BeerCSS kds-badge styling.
2917
+ * Chip/badge inline con color, icon opcional y close opcional (deletable).
2918
+ *
2919
+ * Specs (CSS-derived):
2920
+ * - `.kds-badge`: inline-flex, align-items center, gap 4px, padding 2px 8px, radius sm
2921
+ * - `font-size: xs`, `font-weight: medium`, `line-height: 1.5`
2922
+ * - Icon prefix `<i>`: 14px, inline
2923
+ * - Close button (`.kds-badge-close`): 16×16 circular discreto, NO usa kds-btn
2924
+ *
2925
+ * Variantes de color: primary | success | error | warning | info
2984
2926
  */
2985
2927
 
2986
2928
  type KdsChipColor = 'primary' | 'success' | 'error' | 'warning' | 'info';
2987
2929
  interface KdsChipProps extends React__default.HTMLAttributes<HTMLSpanElement> {
2930
+ /** Color variant. */
2988
2931
  color?: KdsChipColor;
2932
+ /** Material Symbol opcional al inicio del chip. */
2989
2933
  icon?: string;
2934
+ /**
2935
+ * Callback cuando se hace click en el icon de cerrar.
2936
+ * Si está definido, renderiza un icon-button discreto (NO usa kds-btn).
2937
+ */
2990
2938
  onDelete?: () => void;
2991
2939
  }
2992
2940
  declare const KdsChip: React__default.ForwardRefExoticComponent<KdsChipProps & React__default.RefAttributes<HTMLSpanElement>>;
2993
2941
 
2942
+ /**
2943
+ * Khipu Design System - Snackbar Component
2944
+ *
2945
+ * Matchea exactamente el markup que genera `Khipu.showSnackbar()` y
2946
+ * `initFlashMessages()` (`src/beercss/customizations/khipu-init.js`):
2947
+ *
2948
+ * <div class="snackbar active [info|success|error]"
2949
+ * data-auto-dismiss="true"
2950
+ * style="--kds-snackbar-duration: 5000ms">
2951
+ * <i class="material-symbols-outlined">[icon]</i>
2952
+ * <span class="max">message</span>
2953
+ * <button class="kds-snackbar-close" aria-label="Cerrar">
2954
+ * <i class="material-symbols-outlined">close</i>
2955
+ * </button>
2956
+ * </div>
2957
+ *
2958
+ * Features:
2959
+ * - Icon prefix automático según `type` (info / check_circle / error).
2960
+ * - Progress bar lineal en la parte inferior animado durante `duration` ms (CSS `::after`).
2961
+ * - Close button con estilo `.kds-snackbar-close` (icon-only, blanco semi-transparente).
2962
+ *
2963
+ * @gsp `_paymentFlashSnackbars.gsp` (markup base) + `khipu-init.js → initFlashMessages()` (close + dismiss timer)
2964
+ */
2965
+
2994
2966
  type KdsSnackbarType = 'success' | 'error' | 'info';
2995
- interface KdsSnackbarProps extends React__default.HTMLAttributes<HTMLDivElement> {
2967
+ interface KdsSnackbarProps extends Omit<React__default.HTMLAttributes<HTMLDivElement>, 'role'> {
2968
+ /** Mensaje del snackbar. */
2996
2969
  message: string;
2970
+ /** Variante semántica. Default `info`. */
2997
2971
  type?: KdsSnackbarType;
2972
+ /**
2973
+ * Duración en ms antes de auto-dismiss. Default `5000`.
2974
+ * También controla la duración del progress bar (CSS var `--kds-snackbar-duration`).
2975
+ * Pasa `0` para deshabilitar auto-dismiss (no progress bar).
2976
+ */
2998
2977
  duration?: number;
2978
+ /** Callback al cerrar (click en X o tras auto-dismiss). */
2999
2979
  onClose?: () => void;
2980
+ /** Controla visibilidad. Default `true`. */
3000
2981
  open?: boolean;
2982
+ /**
2983
+ * Material Symbol icon name. Si se omite, usa el default por `type`.
2984
+ * Pasa `false` para ocultar el icon prefix.
2985
+ */
2986
+ icon?: string | false;
3001
2987
  }
3002
2988
  declare const KdsSnackbar: React__default.ForwardRefExoticComponent<KdsSnackbarProps & React__default.RefAttributes<HTMLDivElement>>;
3003
2989
 
@@ -3052,7 +3038,7 @@ declare const KdsSectionNote: React__default.ForwardRefExoticComponent<KdsSectio
3052
3038
  * Native HTML status block with BeerCSS styling.
3053
3039
  */
3054
3040
 
3055
- type KdsStatusType = 'success' | 'pending' | 'warn' | 'error';
3041
+ type KdsStatusType = 'success' | 'pending' | 'warn' | 'error' | 'info';
3056
3042
  interface KdsStatusBlockProps extends React__default.HTMLAttributes<HTMLDivElement> {
3057
3043
  status: KdsStatusType;
3058
3044
  icon?: string;
@@ -3065,27 +3051,114 @@ declare const KdsStatusBlock: React__default.ForwardRefExoticComponent<KdsStatus
3065
3051
  /**
3066
3052
  * Khipu Design System - Stepper Component
3067
3053
  *
3068
- * Native HTML stepper with BeerCSS styling.
3054
+ * Matchea exactamente el markup del taglib `mat:stepper` de payment:
3055
+ *
3056
+ * <div class="kds-stepper">
3057
+ * <div class="kds-step [completed|current]">
3058
+ * <div class="kds-step-indicator"></div> <!-- vacío: número/check via CSS -->
3059
+ * <div class="kds-step-label">Label</div>
3060
+ * </div>
3061
+ * ...
3062
+ * </div>
3063
+ *
3064
+ * Specs CSS-driven:
3065
+ * - La línea conectora horizontal es `.kds-stepper::before` (NO un `<div>`).
3066
+ * - El check de completed viene de `.kds-step-indicator::after { content: "check" }`.
3067
+ * - El número del step está oculto (`font-size: 0`) — el design no usa números.
3068
+ *
3069
+ * @gsp `mat:stepper` taglib (MaterialTagLib.groovy:817)
3069
3070
  */
3070
3071
 
3071
3072
  interface KdsStepperProps extends React__default.HTMLAttributes<HTMLDivElement> {
3072
- steps: number;
3073
+ /** Labels de cada step. La longitud del array determina el número de pasos. */
3074
+ steps: string[];
3075
+ /**
3076
+ * Índice 0-based del step actual.
3077
+ * - Steps `< current` → `.completed` (verde con check)
3078
+ * - Step `== current` → `.current` (azul info)
3079
+ * - Steps `> current` → pending (gris)
3080
+ */
3073
3081
  current: number;
3074
3082
  }
3075
3083
  declare const KdsStepper: React__default.ForwardRefExoticComponent<KdsStepperProps & React__default.RefAttributes<HTMLDivElement>>;
3076
3084
 
3077
- interface KdsCopyRowProps extends React__default.HTMLAttributes<HTMLDivElement> {
3085
+ /**
3086
+ * Khipu Design System - CopyRow Component
3087
+ *
3088
+ * Fila clickeable que copia su `value` al portapapeles. El ROW completo es el botón.
3089
+ *
3090
+ * Markup canónico (mirrors `src/beercss/demo/payment-components.html`):
3091
+ *
3092
+ * <button class="kds-copy-row" data-copy="value">
3093
+ * <i class="material-symbols-outlined">content_copy</i> ← icon a la IZQUIERDA
3094
+ * <div>
3095
+ * <span class="kds-copy-row-label">Banco</span>
3096
+ * <span class="kds-copy-row-value">Banco Security</span>
3097
+ * </div>
3098
+ * <span class="kds-copy-toast">
3099
+ * <i class="material-symbols-outlined">check_circle</i> Copiado
3100
+ * </span>
3101
+ * </button>
3102
+ *
3103
+ * Cuando `.copied`:
3104
+ * - bg → success-soft, border → success-main
3105
+ * - `.kds-copy-toast` aparece (position absolute right, opacity 0 → 1)
3106
+ */
3107
+
3108
+ interface KdsCopyRowProps extends Omit<React__default.ButtonHTMLAttributes<HTMLButtonElement>, 'value' | 'children' | 'onClick'> {
3109
+ /** Label arriba (uppercase caption). */
3078
3110
  label: string;
3111
+ /** Valor mostrado y copiado al portapapeles. */
3079
3112
  value: string;
3113
+ /** Texto del toast cuando se copia. Default: "Copiado". */
3114
+ copiedText?: string;
3080
3115
  }
3081
- declare const KdsCopyRow: React__default.ForwardRefExoticComponent<KdsCopyRowProps & React__default.RefAttributes<HTMLDivElement>>;
3116
+ declare const KdsCopyRow: React__default.ForwardRefExoticComponent<KdsCopyRowProps & React__default.RefAttributes<HTMLButtonElement>>;
3117
+
3118
+ /**
3119
+ * Khipu Design System - CopyableTable Component
3120
+ *
3121
+ * Tabla compacta con filas que se copian individualmente al click, y un
3122
+ * botón "Copiar todos los datos" que cambia el color de todas las filas al copy.
3123
+ *
3124
+ * Contrato HTML (matchea el CSS .kds-copyable-table del DS):
3125
+ * ```html
3126
+ * <div class="kds-copyable-table" id="destination-copy-list">
3127
+ * <div class="kds-copyable-table-row" data-copy="value-to-copy">
3128
+ * <span class="kds-key">Banco</span>
3129
+ * <span class="kds-value">Banco Security</span>
3130
+ * </div>
3131
+ * ...
3132
+ * </div>
3133
+ * <button class="kds-btn kds-btn-outlined kds-btn-block kds-copy-all-btn"
3134
+ * data-copy-all="#destination-copy-list">
3135
+ * <span class="kds-icon"><i class="material-symbols-outlined">content_copy</i></span>
3136
+ * <span>Copiar todos los datos</span>
3137
+ * </button>
3138
+ * ```
3139
+ *
3140
+ * Specs:
3141
+ * - Row: flex space-between, padding 10px 8px, border-top divider, font sm, cursor pointer
3142
+ * - Row hover: bg primary-faint + icon copy aparece en `.kds-value::after`
3143
+ * - Row `.copied`: bg success-soft, `.kds-value` color success-dark, icon → check
3144
+ * - Copy-all-btn: kds-btn-outlined-block + bg primary-faint
3145
+ * - Copy-all-btn `.copied`: bg success-soft
3146
+ */
3082
3147
 
3083
3148
  interface KdsCopyableTableRow {
3084
3149
  label: string;
3085
3150
  value: string;
3151
+ /** Override del valor a copiar (default: `value`). */
3152
+ copy?: string;
3086
3153
  }
3087
3154
  interface KdsCopyableTableProps extends React__default.HTMLAttributes<HTMLDivElement> {
3088
3155
  rows: KdsCopyableTableRow[];
3156
+ /** Texto del botón "Copiar todo". Default: "Copiar todos los datos". */
3157
+ copyAllLabel?: string;
3158
+ /** Texto cuando se copió todo. Default: "Datos copiados". */
3159
+ copiedAllLabel?: string;
3160
+ /** Si `false`, no muestra el botón "Copiar todo". */
3161
+ showCopyAll?: boolean;
3089
3162
  }
3090
3163
  declare const KdsCopyableTable: React__default.ForwardRefExoticComponent<KdsCopyableTableProps & React__default.RefAttributes<HTMLDivElement>>;
3091
3164
 
@@ -3102,8 +3175,14 @@ interface KdsCountdownProps extends React__default.HTMLAttributes<HTMLDivElement
3102
3175
  }
3103
3176
  declare const KdsCountdown: React__default.ForwardRefExoticComponent<KdsCountdownProps & React__default.RefAttributes<HTMLDivElement>>;
3104
3177
 
3105
- type KdsSegmentedTabsProps = Omit<KdsTabsProps, 'variant'>;
3106
- declare const KdsSegmentedTabs: React$1.ForwardRefExoticComponent<KdsSegmentedTabsProps & React$1.RefAttributes<HTMLDivElement>>;
3178
+ /**
3179
+ * KdsSegmentedTabs alias semántico de `KdsTabs`.
3180
+ *
3181
+ * Mantenido por backwards-compat con código que importa `KdsSegmentedTabs`.
3182
+ * `KdsTabs` ahora ya renderiza directamente segmented (la única variante del DS).
3183
+ */
3184
+ type KdsSegmentedTabsProps = KdsTabsProps;
3185
+ declare const KdsSegmentedTabs: React$1.ForwardRefExoticComponent<KdsTabsProps & React$1.RefAttributes<HTMLDivElement>>;
3107
3186
 
3108
3187
  interface KdsBankRowProps extends Omit<React__default.ButtonHTMLAttributes<HTMLButtonElement>, 'children'> {
3109
3188
  name: string;
@@ -3164,15 +3243,50 @@ interface KdsInvoiceStickyProps extends React__default.HTMLAttributes<HTMLDivEle
3164
3243
  }
3165
3244
  declare const KdsInvoiceSticky: React__default.ForwardRefExoticComponent<KdsInvoiceStickyProps & React__default.RefAttributes<HTMLDivElement>>;
3166
3245
 
3246
+ /**
3247
+ * Khipu Design System - BottomSheet Component
3248
+ *
3249
+ * Bottom-sheet (modal que sube desde abajo en mobile, centrado en desktop) basado
3250
+ * en Radix Dialog. Único componente de modales del DS — `KdsModal` fue unificado aquí.
3251
+ *
3252
+ * Contrato HTML (matchea CSS `.kds-bottom-sheet*` de khipu-components.css):
3253
+ *
3254
+ * <div class="kds-bottom-sheet-scrim open">
3255
+ * <div class="kds-bottom-sheet">
3256
+ * <div class="kds-bottom-sheet-grabber" /> <!-- opcional -->
3257
+ * <button class="kds-bottom-sheet-close">X</button> <!-- opcional -->
3258
+ * <h2 class="kds-bottom-sheet-title">...</h2> <!-- opcional -->
3259
+ * <p class="kds-bottom-sheet-description">...</p> <!-- opcional -->
3260
+ * <div class="kds-bottom-sheet-body">children</div>
3261
+ * <div class="kds-bottom-sheet-actions">actions</div> <!-- opcional -->
3262
+ * </div>
3263
+ * </div>
3264
+ *
3265
+ * IMPORTANTE: el scrim DEBE llevar la clase `.open` SIEMPRE (Radix maneja mount/unmount).
3266
+ * Sin `.open`, el scrim queda `display: none` y no se ve.
3267
+ */
3268
+
3167
3269
  interface KdsBottomSheetProps {
3270
+ /** Controla la visibilidad. */
3168
3271
  open: boolean;
3272
+ /** Callback cuando se debe cerrar (close button / ESC / click fuera). */
3169
3273
  onClose: () => void;
3274
+ /** Título — renderiza `<h2 class="kds-bottom-sheet-title">`. */
3170
3275
  title?: string;
3276
+ /** Descripción opcional bajo el título (`<p class="kds-bottom-sheet-description">`). */
3277
+ description?: string;
3278
+ /** Contenido del body. */
3171
3279
  children: React__default.ReactNode;
3280
+ /** Botones de acción (footer). Renderiza dentro de `.kds-bottom-sheet-actions`. */
3172
3281
  actions?: React__default.ReactNode;
3173
- className?: string;
3174
- /** Portal container — pass a ref to mount inside a specific element instead of document.body */
3282
+ /** Mostrar grabber (handle) visual en el top. Default: true. */
3283
+ showGrabber?: boolean;
3284
+ /** Mostrar X de cierre en el top-right. Default: false. */
3285
+ showCloseButton?: boolean;
3286
+ /** Portal container — útil para Storybook o anchors específicos. */
3175
3287
  container?: HTMLElement | null;
3288
+ /** Clase adicional al sheet. */
3289
+ className?: string;
3176
3290
  }
3177
3291
  declare const KdsBottomSheet: React__default.ForwardRefExoticComponent<KdsBottomSheetProps & React__default.RefAttributes<HTMLDivElement>>;
3178
3292
 
@@ -3191,6 +3305,210 @@ interface KdsRecapListProps extends React__default.HTMLAttributes<HTMLUListEleme
3191
3305
  }
3192
3306
  declare const KdsRecapList: React__default.ForwardRefExoticComponent<KdsRecapListProps & React__default.RefAttributes<HTMLUListElement>>;
3193
3307
 
3308
+ interface KdsMontoRowProps extends React__default.HTMLAttributes<HTMLDivElement> {
3309
+ /** Título principal (e.g. "Monto a transferir"). */
3310
+ title: string;
3311
+ /** Valor destacado (e.g. "$3.300"). */
3312
+ value: string;
3313
+ /**
3314
+ * Texto secundario opcional bajo el título (deadline/subtitle).
3315
+ * Acepta un nodo React para incluir line-breaks o formato.
3316
+ */
3317
+ deadline?: React__default.ReactNode;
3318
+ }
3319
+ /**
3320
+ * KdsMontoRow — bloque destacado de monto con título + deadline opcional + valor.
3321
+ *
3322
+ * Layout (spec):
3323
+ * - `display: flex; justify-content: space-between`
3324
+ * - `padding: 14px 0 8px`
3325
+ * - `border-top: 1px dashed var(--kds-border-medium)`
3326
+ *
3327
+ * Tipografía:
3328
+ * - `.kds-monto-row-title`: `font-size: sm`, `font-weight: 500`
3329
+ * - `.kds-monto-row-deadline`: `font-size: xs`, `color: text-secondary`
3330
+ * - `.kds-monto-row-value`: `font-size: 24px`, `font-weight: 700`, `letter-spacing: tight`
3331
+ *
3332
+ * @gsp `_manualVerifyChileMaterial.gsp` y demás manualVerify
3333
+ * @css .kds-monto-row, .kds-monto-row-title, .kds-monto-row-deadline, .kds-monto-row-value
3334
+ */
3335
+ declare const KdsMontoRow: React__default.ForwardRefExoticComponent<KdsMontoRowProps & React__default.RefAttributes<HTMLDivElement>>;
3336
+
3337
+ interface KdsMerchantTileProps extends Omit<React__default.HTMLAttributes<HTMLDivElement>, 'children'> {
3338
+ /** Nombre del merchant (usado para alt del logo o initials fallback). */
3339
+ name: string;
3340
+ /** URL del logo del merchant. Si está presente, renderiza `<img>` dentro del tile. */
3341
+ logoUrl?: string;
3342
+ /** Initials custom (2-3 letras). Si no se provee, usa las primeras 2 letras de `name`. */
3343
+ initials?: string;
3344
+ /** Variante compacta: 40×40 en vez de 56×56. */
3345
+ compact?: boolean;
3346
+ }
3347
+ /**
3348
+ * KdsMerchantTile — tile cuadrado con logo del comercio o initials.
3349
+ *
3350
+ * Layout (spec):
3351
+ * - `56 x 56` (default) / `40 x 40` (compact)
3352
+ * - `border-radius: var(--kds-radius-card)`
3353
+ * - `background: var(--kds-color-primary-deep)` (#5B3DB5)
3354
+ * - `color: white`, `display: grid; place-items: center`
3355
+ * - Initials: `font-size: xl` (20px), `font-weight: 700`, `letter-spacing: 0.02em`
3356
+ *
3357
+ * Variante logo:
3358
+ * - Agrega clase `.logo`, padding `var(--kds-spacing-0-5)` (4px)
3359
+ * - `<img>` interna: `object-fit: cover`, `border-radius: var(--kds-radius-md)`
3360
+ *
3361
+ * Compose with: este componente SOLO renderiza el tile cuadrado. Para el header
3362
+ * de comercio completo ("estás pagando a" + nombre), envolver en el patrón
3363
+ * `.kds-merchant`:
3364
+ * ```html
3365
+ * <div class="kds-merchant">
3366
+ * <!-- KdsMerchantTile → .kds-merchant-tile -->
3367
+ * <div class="kds-merchant-meta">
3368
+ * <span class="kds-merchant-label">Estás pagando a</span>
3369
+ * <strong>Comercial Santiago SpA</strong>
3370
+ * </div>
3371
+ * </div>
3372
+ * ```
3373
+ * Spacing canónico: `.kds-merchant` gap `var(--kds-spacing-1-75)`; label
3374
+ * `margin-bottom: var(--kds-spacing-0-25)`. Ver `Patterns/CSS-only → MerchantHeader`.
3375
+ *
3376
+ * @css .kds-merchant-tile, .kds-merchant-tile.logo, .kds-merchant.compact .kds-merchant-tile
3377
+ */
3378
+ declare const KdsMerchantTile: React__default.ForwardRefExoticComponent<KdsMerchantTileProps & React__default.RefAttributes<HTMLDivElement>>;
3379
+
3380
+ type KdsPaymentTotalVariant = 'default' | 'email';
3381
+ /**
3382
+ * Color tone for the amount value.
3383
+ * - `brand`: default Khipu purple (current behaviour).
3384
+ * - `info`: khipu-blue (#5A5FE0) — LigoPay QR / transfer flows.
3385
+ */
3386
+ type KdsPaymentTotalTone = 'brand' | 'info';
3387
+ interface KdsPaymentTotalProps extends Omit<React__default.HTMLAttributes<HTMLDivElement>, 'title'> {
3388
+ /**
3389
+ * Variante visual.
3390
+ * - `default`: monto destacado en color primario (QR / payment view).
3391
+ * - `email`: monto compacto en color de texto primario (email templates).
3392
+ * @default 'default'
3393
+ */
3394
+ variant?: KdsPaymentTotalVariant;
3395
+ /**
3396
+ * Tono de color del monto. Combinable con cualquier `variant`.
3397
+ * - `brand` (default): purple Khipu / texto primario según variante.
3398
+ * - `info`: khipu-blue (#5A5FE0) — pantallas QR/transfer de LigoPay.
3399
+ * @default 'brand'
3400
+ */
3401
+ tone?: KdsPaymentTotalTone;
3402
+ /**
3403
+ * Si `true`, aplica el modificador `kds-payment-total--centered`: remueve el
3404
+ * `padding-left` asimétrico (que existe por defecto para la vista QR de
3405
+ * LigoPay) y centra todo el texto interno. Combinable con `variant` y `tone`.
3406
+ * @default false
3407
+ */
3408
+ centered?: boolean;
3409
+ /**
3410
+ * Monto a mostrar.
3411
+ * - `number`: el componente formatea (entera + decimal) con `Intl.NumberFormat`.
3412
+ * - `string`: ya formateado (e.g. `"1,500.50"` o `"1500.50"`). Si contiene `.`,
3413
+ * la parte tras el punto se renderiza como superíndice decimal.
3414
+ */
3415
+ amount: number | string;
3416
+ /**
3417
+ * Símbolo de moneda. Default `'S/'` (sol peruano) para mantener paridad con el origen
3418
+ * en paylink-ligopay. Pásalo explícito para otras monedas (`'$'`, `'CLP$'`, etc.).
3419
+ * @default 'S/'
3420
+ */
3421
+ currency?: string;
3422
+ /**
3423
+ * Cantidad de decimales. `0` o `null` ocultan el superíndice decimal.
3424
+ * Aplica sólo cuando `amount` es `number` o cuando contiene un `.`.
3425
+ * @default 2
3426
+ */
3427
+ decimals?: number | null;
3428
+ /**
3429
+ * Locale BCP-47 para `Intl.NumberFormat` (separadores miles/decimal).
3430
+ * Aplica sólo cuando `amount` es `number`.
3431
+ * @default 'es-PE'
3432
+ */
3433
+ locale?: string;
3434
+ /**
3435
+ * Etiqueta sobre el monto (e.g. `"Monto a pagar"`).
3436
+ * @default 'Monto a pagar'
3437
+ */
3438
+ label?: React__default.ReactNode;
3439
+ /**
3440
+ * Título principal (desktop). En la variante `default` aparece arriba; en `email`
3441
+ * se omite. Pasa `null` para ocultarlo en `default` también.
3442
+ * @default 'Escanea el QR'
3443
+ */
3444
+ title?: React__default.ReactNode;
3445
+ /**
3446
+ * Título alternativo para mobile en variante `default`. En desktop se oculta vía CSS.
3447
+ * Pasa `null` para omitirlo.
3448
+ * @default 'Descarga el QR'
3449
+ */
3450
+ titleMobile?: React__default.ReactNode;
3451
+ }
3452
+ /**
3453
+ * KdsPaymentTotal — bloque de "monto a pagar" usado en pantallas de pago QR y emails de cobro.
3454
+ *
3455
+ * Portado desde el taglib `<kh:paymentTotal>` de paylink-ligopay
3456
+ * (`KhipuTagLib.groovy:131-177` + `materialize-config.css → .payment-total`).
3457
+ *
3458
+ * **Variantes:**
3459
+ * - `default`: amount grande (`3rem`) en color primario Khipu — vista QR de pago.
3460
+ * - `email`: amount compacto (`1.5rem`) en color texto primario — plantillas email.
3461
+ *
3462
+ * **Layout responsive (default):**
3463
+ * - Desktop: padding-left 80px, title visible (titleMobile oculto).
3464
+ * - Mobile (≤ 1024px): centrado, sólo titleMobile visible.
3465
+ * - La variante `email` mantiene alineación izquierda en todos los breakpoints.
3466
+ *
3467
+ * **Decimal handling:**
3468
+ * - Si `amount` es `number`, se formatea con `Intl.NumberFormat(locale)`.
3469
+ * - Si `amount` es `string` con `.`, la parte tras el punto va al `<sup>`.
3470
+ * - `decimals={0}` o `null` desactivan el superíndice.
3471
+ *
3472
+ * @gsp Origen: paylink-ligopay/grails-app/taglib/com/khipu/payment/paylink/ligopay/KhipuTagLib.groovy
3473
+ * @css .kds-payment-total, .kds-payment-total--email, .kds-payment-total-title,
3474
+ * .kds-payment-total-title-mobile, .kds-payment-label, .kds-payment-amount,
3475
+ * .kds-payment-total-decimal-sup
3476
+ */
3477
+ declare const KdsPaymentTotal: React__default.ForwardRefExoticComponent<KdsPaymentTotalProps & React__default.RefAttributes<HTMLDivElement>>;
3478
+
3479
+ interface KdsBillAttachmentProps extends Omit<React__default.AnchorHTMLAttributes<HTMLAnchorElement>, 'children'> {
3480
+ /** Nombre del archivo a descargar. */
3481
+ filename: string;
3482
+ /** URL absoluta o relativa del archivo. */
3483
+ href: string;
3484
+ /** Icon Material Symbols. Default: `attach_file`. */
3485
+ icon?: string;
3486
+ }
3487
+ /**
3488
+ * KdsBillAttachment — link de descarga para adjuntos de la factura/bill.
3489
+ *
3490
+ * Layout (spec):
3491
+ * - `display: inline-flex; align-items: center; justify-content: flex-start`
3492
+ * - `width: fit-content`
3493
+ * - `color: var(--kds-color-info-main)`, `font-size: sm` (14px), `font-weight: 500`
3494
+ * - `text-decoration: none` → hover `underline` solo en el span
3495
+ * - Icon: `font-size: lg` (16px)
3496
+ *
3497
+ * @gsp `mat:billAttachments` taglib (introducida en commit 1a8e228c9)
3498
+ * @css .kds-bill-attachment, .kds-bill-attachments
3499
+ */
3500
+ declare const KdsBillAttachment: React__default.ForwardRefExoticComponent<KdsBillAttachmentProps & React__default.RefAttributes<HTMLAnchorElement>>;
3501
+ interface KdsBillAttachmentsProps extends React__default.HTMLAttributes<HTMLDivElement> {
3502
+ }
3503
+ /**
3504
+ * KdsBillAttachments — contenedor vertical de varios `KdsBillAttachment`.
3505
+ *
3506
+ * Layout (spec):
3507
+ * - `display: flex; flex-direction: column`
3508
+ * - `gap: var(--kds-spacing-0-75)` (6px)
3509
+ */
3510
+ declare const KdsBillAttachments: React__default.ForwardRefExoticComponent<KdsBillAttachmentsProps & React__default.RefAttributes<HTMLDivElement>>;
3511
+
3194
3512
  declare function useCopyToClipboard(resetMs?: number): {
3195
3513
  copied: boolean;
3196
3514
  copy: (text: string) => Promise<void>;
@@ -3236,4 +3554,4 @@ declare function getContrastColor(hex: string): string;
3236
3554
  */
3237
3555
  declare function lighten(hex: string, amount: number): string;
3238
3556
 
3239
- export { type Colors, KdsAccordion, KdsAccordionDetails, type KdsAccordionDetailsProps, type KdsAccordionProps, KdsAccordionSummary, type KdsAccordionSummaryProps, KdsAlert, type KdsAlertProps, type KdsAlertSeverity, KdsBankList, type KdsBankListProps, KdsBankModal, type KdsBankModalProps, KdsBankRow, type KdsBankRowProps, KdsBottomSheet, type KdsBottomSheetProps, KdsButton, type KdsButtonProps, type KdsButtonSize, type KdsButtonVariant, KdsCard, KdsCardBody, KdsCardFooter, KdsCardHeader, KdsCardPlan, type KdsCardPlanProps, type KdsCardProps, type KdsCardSectionProps, KdsCardSelector, type KdsCardSelectorProps, type KdsCardVariant, KdsCheckbox, type KdsCheckboxProps, KdsChip, type KdsChipColor, type KdsChipProps, KdsCopyRow, type KdsCopyRowProps, KdsCopyableTable, type KdsCopyableTableProps, type KdsCopyableTableRow, KdsCountdown, type KdsCountdownProps, KdsDivider, type KdsDividerProps, KdsExpandPanel, type KdsExpandPanelProps, KdsInvoiceSticky, type KdsInvoiceStickyProps, KdsLinearProgress, type KdsLinearProgressProps, KdsLogoHeader, KdsLogoHeaderCloseButton, type KdsLogoHeaderCloseButtonProps, KdsLogoHeaderCode, type KdsLogoHeaderCodeProps, KdsLogoHeaderLogo, type KdsLogoHeaderLogoProps, type KdsLogoHeaderProps, KdsLogoHeaderSeparator, type KdsLogoHeaderSeparatorProps, KdsModal, type KdsModalProps, type KdsModalSize, KdsQrRow, type KdsQrRowProps, KdsRadioGroup, type KdsRadioGroupProps, type KdsRadioOption, type KdsRecapItem, KdsRecapList, type KdsRecapListProps, KdsSectionNote, type KdsSectionNoteProps, KdsSecureFooter, type KdsSecureFooterProps, KdsSegmentedTabs, type KdsSegmentedTabsProps, KdsSelect, type KdsSelectItemProps, type KdsSelectProps, KdsSnackbar, type KdsSnackbarProps, type KdsSnackbarType, KdsSpinner, type KdsSpinnerProps, type KdsSpinnerSize, KdsStatusBlock, type KdsStatusBlockProps, type KdsStatusType, KdsStepper, type KdsStepperProps, KdsTab, KdsTabPanel, type KdsTabPanelProps, type KdsTabProps, KdsTabs, type KdsTabsProps, KdsTextField, type KdsTextFieldProps, KdsThemeProvider, type KdsThemeProviderProps, KdsTooltip, type KdsTooltipPlacement, type KdsTooltipProps, KdsTypography, type KdsTypographyProps, type KdsTypographyVariant, type ThemeMode, type Tokens, type TokensByMode, type Typography as TypographyTokens, borderRadius, breakpoints, colors, colorsByMode, fontFamilies, fontSizes, fontWeights, getContrastColor, letterSpacings, lighten, lineHeights, semanticSpacing, shadows, spacing, tokens, tokensByMode, transitions, typography, useAutoHide, useCopyToClipboard, useCountdown, useTabsKeyboard, zIndex };
3557
+ export { type Colors, KdsAccordion, KdsAccordionDetails, type KdsAccordionDetailsProps, type KdsAccordionProps, KdsAccordionSummary, type KdsAccordionSummaryProps, KdsAlert, type KdsAlertProps, type KdsAlertSeverity, KdsBankList, type KdsBankListProps, KdsBankModal, type KdsBankModalProps, KdsBankRow, type KdsBankRowProps, KdsBillAttachment, type KdsBillAttachmentProps, KdsBillAttachments, type KdsBillAttachmentsProps, KdsBottomSheet, type KdsBottomSheetProps, KdsButton, type KdsButtonProps, type KdsButtonSize, type KdsButtonVariant, KdsCard, KdsCardBody, KdsCardFooter, KdsCardHeader, KdsCardPlan, type KdsCardPlanProps, type KdsCardProps, type KdsCardSectionProps, KdsCardSelector, type KdsCardSelectorProps, type KdsCardVariant, KdsCheckbox, type KdsCheckboxProps, KdsChip, type KdsChipColor, type KdsChipProps, KdsCopyRow, type KdsCopyRowProps, KdsCopyableTable, type KdsCopyableTableProps, type KdsCopyableTableRow, KdsCountdown, type KdsCountdownProps, KdsDivider, type KdsDividerProps, KdsExpandPanel, type KdsExpandPanelProps, KdsInvoiceSticky, type KdsInvoiceStickyProps, KdsLinearProgress, type KdsLinearProgressProps, KdsMerchantTile, type KdsMerchantTileProps, KdsMontoRow, type KdsMontoRowProps, KdsPaymentTotal, type KdsPaymentTotalProps, type KdsPaymentTotalVariant, KdsQrRow, type KdsQrRowProps, KdsRadioGroup, type KdsRadioGroupProps, type KdsRadioOption, type KdsRecapItem, KdsRecapList, type KdsRecapListProps, KdsSectionNote, type KdsSectionNoteProps, KdsSecureFooter, type KdsSecureFooterProps, KdsSecureLoader, type KdsSecureLoaderProps, KdsSegmentedTabs, type KdsSegmentedTabsProps, KdsSelect, type KdsSelectOption, type KdsSelectProps, KdsSnackbar, type KdsSnackbarProps, type KdsSnackbarType, KdsSpinner, type KdsSpinnerProps, type KdsSpinnerSize, KdsStatusBlock, type KdsStatusBlockProps, type KdsStatusType, KdsStepper, type KdsStepperProps, KdsTab, KdsTabPanel, type KdsTabPanelProps, type KdsTabProps, KdsTabs, type KdsTabsProps, KdsTextField, type KdsTextFieldProps, KdsThemeProvider, type KdsThemeProviderProps, KdsTooltip, type KdsTooltipPlacement, type KdsTooltipProps, KdsTypography, type KdsTypographyProps, type KdsTypographyVariant, type ThemeMode, type Tokens, type TokensByMode, type Typography as TypographyTokens, borderRadius, breakpoints, colors, colorsByMode, fontFamilies, fontSizes, fontWeights, getContrastColor, letterSpacings, lighten, lineHeights, semanticSpacing, shadows, spacing, tokens, tokensByMode, transitions, typography, useAutoHide, useCopyToClipboard, useCountdown, useTabsKeyboard, zIndex };