@khipu/design-system 0.3.5-alpha.35 → 0.3.5-alpha.36

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.
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@khipu/design-system/beercss",
3
- "version": "0.3.5-alpha.35",
3
+ "version": "0.3.5-alpha.36",
4
4
  "description": "Khipu BeerCSS bundle with Material Design 3 and Khipu customizations",
5
- "buildDate": "2026-10-09T18:13:31.608Z",
5
+ "buildDate": "2026-10-15T20:27:28.390Z",
6
6
  "includes": {
7
7
  "beercss": "4.0.1",
8
8
  "khipu-tokens": "latest",
@@ -19,8 +19,8 @@
19
19
  },
20
20
  "scopeClass": ".kds-theme-root",
21
21
  "cdn": {
22
- "css": "https://cdn.jsdelivr.net/npm/@khipu/design-system@0.3.5-alpha.35/dist/beercss/khipu-beercss.min.css",
23
- "cssScoped": "https://cdn.jsdelivr.net/npm/@khipu/design-system@0.3.5-alpha.35/dist/beercss/khipu-beercss.scoped.min.css",
24
- "js": "https://cdn.jsdelivr.net/npm/@khipu/design-system@0.3.5-alpha.35/dist/beercss/khipu-beercss.min.js"
22
+ "css": "https://cdn.jsdelivr.net/npm/@khipu/design-system@0.3.5-alpha.36/dist/beercss/khipu-beercss.min.css",
23
+ "cssScoped": "https://cdn.jsdelivr.net/npm/@khipu/design-system@0.3.5-alpha.36/dist/beercss/khipu-beercss.scoped.min.css",
24
+ "js": "https://cdn.jsdelivr.net/npm/@khipu/design-system@0.3.5-alpha.36/dist/beercss/khipu-beercss.min.js"
25
25
  }
26
26
  }
package/dist/index.d.mts CHANGED
@@ -29,7 +29,7 @@ interface KdsThemeProviderProps {
29
29
  */
30
30
  declare function KdsThemeProvider({ primaryColor, mode, children }: KdsThemeProviderProps): react_jsx_runtime.JSX.Element;
31
31
 
32
- declare const KDS_VERSION = "0.3.5-alpha.35";
32
+ declare const KDS_VERSION = "0.3.5-alpha.36";
33
33
 
34
34
  /**
35
35
  * Color tokens organized by theme mode
@@ -2772,6 +2772,30 @@ interface KdsSecureLoaderProps extends React__default.HTMLAttributes<HTMLDivElem
2772
2772
  }
2773
2773
  declare const KdsSecureLoader: React__default.ForwardRefExoticComponent<KdsSecureLoaderProps & React__default.RefAttributes<HTMLDivElement>>;
2774
2774
 
2775
+ type KdsProgressChecklistStatus = 'pending' | 'active' | 'done' | 'error';
2776
+ interface KdsProgressChecklistItem {
2777
+ /** Stable key; falls back to the label. */
2778
+ id?: string;
2779
+ label: string;
2780
+ status: KdsProgressChecklistStatus;
2781
+ }
2782
+ interface KdsProgressChecklistProps extends React__default.HTMLAttributes<HTMLUListElement> {
2783
+ items: KdsProgressChecklistItem[];
2784
+ /**
2785
+ * Status text read by screen readers after each label (visually hidden), for i18n.
2786
+ * @default { pending: 'pendiente', active: 'en curso', done: 'listo', error: 'con error' }
2787
+ */
2788
+ statusLabels?: Partial<Record<KdsProgressChecklistStatus, string>>;
2789
+ }
2790
+ /**
2791
+ * Progress checklist: a list of steps that advance pending → active → done (or error),
2792
+ * e.g. the automatic validation after the business information in onboarding.
2793
+ *
2794
+ * The list is an `aria-live="polite"` region, so status changes are announced; each item
2795
+ * also carries its status as visually hidden text.
2796
+ */
2797
+ declare const KdsProgressChecklist: React__default.ForwardRefExoticComponent<KdsProgressChecklistProps & React__default.RefAttributes<HTMLUListElement>>;
2798
+
2775
2799
  /**
2776
2800
  * Khipu Design System - CopyButton Component
2777
2801
  *
@@ -2986,7 +3010,21 @@ declare const KdsRadioGroup: React__default.ForwardRefExoticComponent<KdsRadioGr
2986
3010
  *
2987
3011
  * BeerCSS dibuja el chevron automáticamente, el floating label, focus ring, etc.
2988
3012
  *
2989
- * @gsp `mat:select` taglib (MaterialTagLib.groovy:260)
3013
+ * Variante `readOnly` (valor precargado que no se edita, ej. datos que vienen del banco):
3014
+ * `<select>` no soporta `readonly` y `disabled` no envía el valor en el form, así que se
3015
+ * renderiza el mismo markup que `KdsTextField readOnly` (`.field.locked` + candado) con el
3016
+ * texto de la opción elegida, más un `<input type="hidden">` que lleva `name` y el value:
3017
+ *
3018
+ * <div class="field label border suffix locked">
3019
+ * <input type="text" id="..." value="Santander" placeholder=" " readonly>
3020
+ * <label for="...">Banco</label>
3021
+ * <i class="material-symbols-outlined" aria-hidden="true">lock</i>
3022
+ * <input type="hidden" name="bank" value="santander">
3023
+ * </div>
3024
+ *
3025
+ * En ese modo el `ref` no se asigna (no hay `<select>` en el DOM).
3026
+ *
3027
+ * @gsp `mat:select` taglib (MaterialTagLib.groovy:260); readOnly → `mat:fieldLocked` + `g:hiddenField`
2990
3028
  */
2991
3029
 
2992
3030
  interface KdsSelectOption {
@@ -3015,6 +3053,16 @@ interface KdsSelectProps extends Omit<React__default.SelectHTMLAttributes<HTMLSe
3015
3053
  prefixIcon?: string;
3016
3054
  /** Full width (default: true). */
3017
3055
  fullWidth?: boolean;
3056
+ /**
3057
+ * Solo lectura: muestra el texto de la opción elegida en un field `.locked` con candado y
3058
+ * envía el value por un `<input type="hidden">` (lleva `name` y `form`). `disabled` tiene
3059
+ * precedencia.
3060
+ *
3061
+ * En este modo no hay `<select>` en el DOM: el `ref` queda en `null` y solo pasan al input
3062
+ * visible los atributos `aria-*`, `data-*` y `title` (no los handlers de evento del select).
3063
+ * `required` se muestra como `*` en la label pero no se aplica: un campo readonly no se valida.
3064
+ */
3065
+ readOnly?: boolean;
3018
3066
  }
3019
3067
  declare const KdsSelect: React__default.ForwardRefExoticComponent<KdsSelectProps & React__default.RefAttributes<HTMLSelectElement>>;
3020
3068
 
@@ -3202,7 +3250,7 @@ declare const KdsStatusBlock: React__default.ForwardRefExoticComponent<KdsStatus
3202
3250
  *
3203
3251
  * <div class="kds-stepper">
3204
3252
  * <div class="kds-step [completed|current]">
3205
- * <div class="kds-step-indicator"></div> <!-- vacío: número/check via CSS -->
3253
+ * <div class="kds-step-indicator"></div> <!-- vacío: check via CSS -->
3206
3254
  * <div class="kds-step-label">Label</div>
3207
3255
  * </div>
3208
3256
  * ...
@@ -3211,7 +3259,14 @@ declare const KdsStatusBlock: React__default.ForwardRefExoticComponent<KdsStatus
3211
3259
  * Specs CSS-driven:
3212
3260
  * - La línea conectora horizontal es `.kds-stepper::before` (NO un `<div>`).
3213
3261
  * - El check de completed viene de `.kds-step-indicator::after { content: "check" }`.
3214
- * - El número del step está oculto (`font-size: 0`) — el design no usa números.
3262
+ * - Sin `numbered` el número del step está oculto (`font-size: 0`).
3263
+ *
3264
+ * Modificadores opcionales (aditivos; sin ellos el markup es el de arriba):
3265
+ * - `.kds-stepper--numbered`: número dentro del indicador (`numbered`).
3266
+ * - `.kds-stepper--primary`: paso actual en color de marca (`color="primary"`).
3267
+ * - `.kds-stepper--current-label`: con el stepper angosto (≤ 560px de ancho propio,
3268
+ * container query) solo se ve la etiqueta del paso actual (`currentLabelOnly`).
3269
+ * El paso actual lleva `aria-current="step"`.
3215
3270
  *
3216
3271
  * @gsp `mat:stepper` taglib (MaterialTagLib.groovy:817)
3217
3272
  */
@@ -3222,10 +3277,28 @@ interface KdsStepperProps extends React__default.HTMLAttributes<HTMLDivElement>
3222
3277
  /**
3223
3278
  * Índice 0-based del step actual.
3224
3279
  * - Steps `< current` → `.completed` (verde con check)
3225
- * - Step `== current` → `.current` (azul info)
3280
+ * - Step `== current` → `.current` (azul info, o primary con `color="primary"`)
3226
3281
  * - Steps `> current` → pending (gris)
3227
3282
  */
3228
3283
  current: number;
3284
+ /**
3285
+ * Muestra el número de paso (1-based) dentro del indicador. Los pasos completados
3286
+ * mantienen el check. Aplica `.kds-stepper--numbered`.
3287
+ */
3288
+ numbered?: boolean;
3289
+ /**
3290
+ * Color del paso actual: `info` (default, como hasta ahora) o `primary` (color de marca).
3291
+ * `primary` aplica `.kds-stepper--primary`.
3292
+ * @default 'info'
3293
+ */
3294
+ color?: 'info' | 'primary';
3295
+ /**
3296
+ * Con el stepper angosto (≤ 560px de su propio ancho, no del viewport: container query)
3297
+ * muestra solo la etiqueta del paso actual; las demás
3298
+ * quedan ocultas visualmente pero disponibles para lectores de pantalla.
3299
+ * Aplica `.kds-stepper--current-label`.
3300
+ */
3301
+ currentLabelOnly?: boolean;
3229
3302
  }
3230
3303
  declare const KdsStepper: React__default.ForwardRefExoticComponent<KdsStepperProps & React__default.RefAttributes<HTMLDivElement>>;
3231
3304
 
@@ -3457,6 +3530,201 @@ interface KdsBankModalProps {
3457
3530
  }
3458
3531
  declare const KdsBankModal: React__default.ForwardRefExoticComponent<KdsBankModalProps & React__default.RefAttributes<HTMLDivElement>>;
3459
3532
 
3533
+ interface KdsContractProps extends Omit<React__default.HTMLAttributes<HTMLDivElement>, 'children'> {
3534
+ /** Contract body, rendered inside the scrollable `.kds-contract-content`. */
3535
+ children: React__default.ReactNode;
3536
+ /** Accessible name of the scrollable region. @default 'Contrato' */
3537
+ contentLabel?: string;
3538
+ /** Checkbox label. @default 'Declaro que leí y acepto el contrato' */
3539
+ acceptLabel?: React__default.ReactNode;
3540
+ /** Shown (and used as the checkbox description) until the end is reached. */
3541
+ hint?: string;
3542
+ /** Checkbox `name`, for form submission. */
3543
+ name?: string;
3544
+ /** Controlled checked state of the acceptance checkbox. */
3545
+ accepted?: boolean;
3546
+ /** Called with the new checked state. */
3547
+ onAcceptedChange?: (accepted: boolean) => void;
3548
+ /** Called once, when the content has been scrolled to the end (or fits without scroll). */
3549
+ onReadComplete?: () => void;
3550
+ }
3551
+ /**
3552
+ * Contract that must be read to the end before it can be accepted: the acceptance checkbox
3553
+ * stays disabled until `.kds-contract-content` is scrolled to the bottom (or right away if
3554
+ * it fits). Server-side pages get the same behaviour from `[data-kds-contract]` in the
3555
+ * BeerCSS bundle (`Khipu.initContract`).
3556
+ */
3557
+ declare const KdsContract: React__default.ForwardRefExoticComponent<KdsContractProps & React__default.RefAttributes<HTMLDivElement>>;
3558
+
3559
+ interface KdsFeedbackCardProps extends Omit<React__default.HTMLAttributes<HTMLElement>, 'title' | 'onSubmit'> {
3560
+ /** Question shown as the card title (also its accessible name). */
3561
+ title: string;
3562
+ description?: string;
3563
+ /** Material Symbol in the icon tile. @default 'auto_awesome' */
3564
+ icon?: string;
3565
+ /** The answer control (e.g. a KdsSelect). Hidden once submitted. */
3566
+ children?: React__default.ReactNode;
3567
+ /** Enables the submit button (e.g. once an option is chosen). */
3568
+ canSubmit: boolean;
3569
+ onSubmit: () => void;
3570
+ /** @default 'Enviar' */
3571
+ submitLabel?: string;
3572
+ /** Shows the thank-you state instead of the question. */
3573
+ submitted?: boolean;
3574
+ /** @default '¡Gracias por contarnos!' */
3575
+ thanksTitle?: string;
3576
+ /** @default 'Tu respuesta nos ayuda a llegar a más negocios como el tuyo.' */
3577
+ thanksDescription?: string;
3578
+ }
3579
+ /**
3580
+ * Optional feedback card (e.g. "¿Cómo nos conociste?" on a success screen): icon, question,
3581
+ * an answer control and a submit button; after submitting it turns into a thank-you note in
3582
+ * the same `aria-live` region, so the change is announced. It never blocks the page.
3583
+ */
3584
+ declare const KdsFeedbackCard: React__default.ForwardRefExoticComponent<KdsFeedbackCardProps & React__default.RefAttributes<HTMLElement>>;
3585
+
3586
+ interface KdsConsentItem {
3587
+ /** Material Symbol shown before the text (decorative). */
3588
+ icon?: string;
3589
+ text: React__default.ReactNode;
3590
+ }
3591
+ interface KdsConsentSection {
3592
+ /** Section title, e.g. "Datos solicitados", "Vigencia de la autorización", "Finalidad". */
3593
+ title: string;
3594
+ items: KdsConsentItem[];
3595
+ }
3596
+ interface KdsConsentCardProps extends Omit<React__default.HTMLAttributes<HTMLElement>, 'title'> {
3597
+ /** Who asks for access, e.g. "Khipu". */
3598
+ requester: string;
3599
+ /** What access is asked for, e.g. the bank name. */
3600
+ resource: string;
3601
+ /**
3602
+ * Replaces the default heading "<requester> solicita acceso a <resource>" (e.g. for
3603
+ * another language). It is still the card's accessible name.
3604
+ */
3605
+ heading?: React__default.ReactNode;
3606
+ subtitle?: string;
3607
+ /** Logo shown above the title (e.g. a KdsMerchantTile). */
3608
+ logo?: React__default.ReactNode;
3609
+ /** What is requested, for how long and what for. Texts come from the consumer. */
3610
+ sections: KdsConsentSection[];
3611
+ onAccept: () => void;
3612
+ onReject: () => void;
3613
+ /** Accept in progress: shows `loadingLabel` and disables both actions. */
3614
+ loading?: boolean;
3615
+ /** @default 'Autorizar' */
3616
+ acceptLabel?: string;
3617
+ /** @default 'Rechazar' */
3618
+ rejectLabel?: string;
3619
+ /** @default 'Autorizando' */
3620
+ loadingLabel?: string;
3621
+ }
3622
+ /**
3623
+ * Access consent: "<requester> solicita acceso a <resource>", the data requested, its
3624
+ * validity and purpose, and Authorize / Reject. Sections are configurable so the legal
3625
+ * texts stay with the consumer. The secure footer goes outside the card, as a sibling
3626
+ * under `.kds-screen` (inside a `.kds-card-elevated` it is hidden by design).
3627
+ */
3628
+ declare const KdsConsentCard: React__default.ForwardRefExoticComponent<KdsConsentCardProps & React__default.RefAttributes<HTMLElement>>;
3629
+
3630
+ interface KdsSidebarItem {
3631
+ label: string;
3632
+ href: string;
3633
+ /** Material Symbol (decorative). */
3634
+ icon?: string;
3635
+ /** Current page: `.active` + `aria-current="page"`. */
3636
+ active?: boolean;
3637
+ /** Opens in a new tab. */
3638
+ external?: boolean;
3639
+ }
3640
+ interface KdsSidebarHeader {
3641
+ title: string;
3642
+ subtitle?: string;
3643
+ /** Material Symbol shown instead of the avatar (e.g. 'settings'). */
3644
+ icon?: string;
3645
+ /** Avatar initial, used when there is no icon. */
3646
+ avatar?: string;
3647
+ /**
3648
+ * Context switcher content (e.g. `.kds-sidebar-nav-item` links). When given, the header
3649
+ * becomes a toggle (`role="button"`, keyboard operable) for the floating dropdown.
3650
+ */
3651
+ menu?: React__default.ReactNode;
3652
+ }
3653
+ interface KdsSidebarProps extends React__default.HTMLAttributes<HTMLElement> {
3654
+ header: KdsSidebarHeader;
3655
+ items: KdsSidebarItem[];
3656
+ /** Accessible name of the item nav. @default 'Menú de la cuenta' */
3657
+ navLabel?: string;
3658
+ /** Mobile drawer state (≤ 768px). */
3659
+ open?: boolean;
3660
+ /** Called by the drawer's close button and Escape while open. */
3661
+ onClose?: () => void;
3662
+ /** Title of the mobile drawer bar. @default 'Menú' */
3663
+ mobileTitle?: string;
3664
+ /** aria-label of the drawer close button. @default 'Cerrar menú' */
3665
+ closeLabel?: string;
3666
+ }
3667
+ /**
3668
+ * Side navigation of the logged-in panel, on the existing `.kds-sidebar` classes (same
3669
+ * markup as payment's `_materialSidebar.gsp` + `mat:sidebarHeader`/`mat:sidebarNav`, with
3670
+ * the items inside `nav.kds-sidebar-nav` like the DS demo). Desktop: sticky floating card.
3671
+ * Mobile: full-width drawer driven by `open`/`onClose`.
3672
+ */
3673
+ declare const KdsSidebar: React__default.ForwardRefExoticComponent<KdsSidebarProps & React__default.RefAttributes<HTMLElement>>;
3674
+
3675
+ interface KdsNavbarProps extends React__default.HTMLAttributes<HTMLElement> {
3676
+ /** Logo or brand text inside `a.kds-navbar-brand`. */
3677
+ brand: React__default.ReactNode;
3678
+ /** @default '/' */
3679
+ brandHref?: string;
3680
+ /**
3681
+ * `primary`: brand-colored bar (logged-in panel). `surface`: light bar with a bottom
3682
+ * border (logged-out pages).
3683
+ * @default 'primary'
3684
+ */
3685
+ variant?: 'primary' | 'surface';
3686
+ /** Renders the mobile hamburger (`.kds-hamburger-btn`) when given. */
3687
+ onMenuClick?: () => void;
3688
+ /** Hamburger `aria-expanded` (the sidebar drawer state). */
3689
+ menuOpen?: boolean;
3690
+ /** Hamburger `aria-controls`: the sidebar `id`. */
3691
+ menuControls?: string;
3692
+ /** Hamburger aria-label. @default 'Menú' */
3693
+ menuLabel?: string;
3694
+ /** Right-hand actions (after the flexible spacer). */
3695
+ children?: React__default.ReactNode;
3696
+ }
3697
+ /**
3698
+ * Top bar of the panel, on the existing classes (same markup as payment's
3699
+ * `_materialNavbar.gsp`): `nav.primary` / `nav.surface`, `.kds-container-center`,
3700
+ * optional `.kds-hamburger-btn` (mobile only), `a.kds-navbar-brand`, a `.max` spacer and
3701
+ * the actions.
3702
+ */
3703
+ declare const KdsNavbar: React__default.ForwardRefExoticComponent<KdsNavbarProps & React__default.RefAttributes<HTMLElement>>;
3704
+
3705
+ interface KdsFooterLink {
3706
+ label: string;
3707
+ href: string;
3708
+ /** Opens in a new tab (`target="_blank" rel="noopener noreferrer"`). */
3709
+ external?: boolean;
3710
+ }
3711
+ interface KdsFooterColumn {
3712
+ title: string;
3713
+ links: KdsFooterLink[];
3714
+ }
3715
+ interface KdsFooterProps extends React__default.HTMLAttributes<HTMLElement> {
3716
+ columns: KdsFooterColumn[];
3717
+ /** Bottom part after the columns: social links, addresses, copyright. */
3718
+ children?: React__default.ReactNode;
3719
+ }
3720
+ /**
3721
+ * Site footer of the panel, on the existing classes (same markup as payment's
3722
+ * `_materialFooter.gsp`): `footer.primary`, `.kds-container-center`, a `.kds-grid` of
3723
+ * columns (12 / 6 / 2 cols by breakpoint) each with an `h6` title and a
3724
+ * `nav.kds-footer-nav` named by that title.
3725
+ */
3726
+ declare const KdsFooter: React__default.ForwardRefExoticComponent<KdsFooterProps & React__default.RefAttributes<HTMLElement>>;
3727
+
3460
3728
  interface KdsQrRowProps extends Omit<React__default.ButtonHTMLAttributes<HTMLButtonElement>, 'children'> {
3461
3729
  /** Primary label (e.g. "Pagar escaneando QR") */
3462
3730
  name: string;
@@ -3469,13 +3737,48 @@ interface KdsQrRowProps extends Omit<React__default.ButtonHTMLAttributes<HTMLBut
3469
3737
  }
3470
3738
  declare const KdsQrRow: React__default.ForwardRefExoticComponent<KdsQrRowProps & React__default.RefAttributes<HTMLButtonElement>>;
3471
3739
 
3472
- interface KdsCardSelectorProps extends React__default.ButtonHTMLAttributes<HTMLButtonElement> {
3740
+ interface KdsCardSelectorProps extends Omit<React__default.ButtonHTMLAttributes<HTMLButtonElement>, 'value'> {
3473
3741
  icon?: string;
3474
3742
  title: string;
3475
3743
  description?: string;
3744
+ /** Button mode: highlights the card (`.selected`). */
3476
3745
  selected?: boolean;
3746
+ /**
3747
+ * Radio mode (requires `name` and `value`): the card becomes a native radio option
3748
+ * (`.kds-card-selector--radio`): a `<div>` with an `<input type="radio">` and the title as
3749
+ * its label stretched over the card. Needed for block content such as lists in
3750
+ * `children`, which a `<button>` cannot hold. Cards sharing a `name` form one group
3751
+ * (arrow keys, form submit) without JS. Explicit opt-in: without it, `name`/`value` stay
3752
+ * on the `<button>` as before (e.g. a submit button).
3753
+ */
3754
+ radio?: boolean;
3755
+ /** Button mode: the button's `name`. Radio mode: the radio group name. */
3756
+ name?: string;
3757
+ /** Button mode: the button's `value`. Radio mode: the value submitted for this option. */
3758
+ value?: string;
3759
+ /** Radio mode: controlled checked state. */
3760
+ checked?: boolean;
3761
+ /** Radio mode: called with `value` when the user picks this card. */
3762
+ onCheckedChange?: (value: string) => void;
3763
+ /**
3764
+ * Extra content under the description (`.kds-card-selector-details`). In button mode it
3765
+ * must be inline content (it renders in a `<span>`); use radio mode for lists or blocks.
3766
+ */
3767
+ children?: React__default.ReactNode;
3477
3768
  }
3478
- declare const KdsCardSelector: React__default.ForwardRefExoticComponent<KdsCardSelectorProps & React__default.RefAttributes<HTMLButtonElement>>;
3769
+ /**
3770
+ * The ref points to the `<button>` in button mode and to the card `<div>` in radio mode.
3771
+ */
3772
+ declare const KdsCardSelector: React__default.ForwardRefExoticComponent<KdsCardSelectorProps & React__default.RefAttributes<HTMLElement>>;
3773
+ interface KdsCardSelectorGroupProps extends React__default.HTMLAttributes<HTMLDivElement> {
3774
+ /** Accessible name of the group (e.g. "Tipo de contribuyente"). */
3775
+ label: string;
3776
+ }
3777
+ /**
3778
+ * Wraps radio-mode KdsCardSelector cards in a labelled `role="radiogroup"` laid out with
3779
+ * the `.kds-card-selector-group` grid: as many columns as fit in the group's own width.
3780
+ */
3781
+ declare const KdsCardSelectorGroup: React__default.ForwardRefExoticComponent<KdsCardSelectorGroupProps & React__default.RefAttributes<HTMLDivElement>>;
3479
3782
 
3480
3783
  interface KdsCardPlanProps extends React__default.HTMLAttributes<HTMLDivElement> {
3481
3784
  title: string;
@@ -3485,8 +3788,34 @@ interface KdsCardPlanProps extends React__default.HTMLAttributes<HTMLDivElement>
3485
3788
  recommended?: boolean;
3486
3789
  badgeText?: string;
3487
3790
  action?: React__default.ReactNode;
3791
+ /** Short line under the title, e.g. "Incluye descuentos por volumen." */
3792
+ description?: string;
3793
+ /** Shows a check icon before each feature (decorative). */
3794
+ checkFeatures?: boolean;
3795
+ /**
3796
+ * Radio group name. Together with `value` it makes the card selectable: it renders a
3797
+ * native `<input type="radio">` and the title becomes its label, stretched over the
3798
+ * whole card. Cards sharing a `name` form one group (arrow keys, form submit).
3799
+ */
3800
+ name?: string;
3801
+ /** Value submitted for this plan when it is selected. Requires `name`. */
3802
+ value?: string;
3803
+ /** Controlled checked state of the radio. */
3804
+ selected?: boolean;
3805
+ /** Called with `value` when the user selects this card. */
3806
+ onSelectedChange?: (value: string) => void;
3488
3807
  }
3489
3808
  declare const KdsCardPlan: React__default.ForwardRefExoticComponent<KdsCardPlanProps & React__default.RefAttributes<HTMLDivElement>>;
3809
+ interface KdsCardPlanGroupProps extends React__default.HTMLAttributes<HTMLDivElement> {
3810
+ /** Accessible name of the group (e.g. "Plan de cobro"). */
3811
+ label: string;
3812
+ }
3813
+ /**
3814
+ * Wraps selectable KdsCardPlan cards in a labelled `role="radiogroup"` laid out with the
3815
+ * `.kds-card-plan-group` grid: as many columns as fit in the group's own width (cards
3816
+ * keep their 260px minimum), so it also works inside a narrow card next to a sidebar.
3817
+ */
3818
+ declare const KdsCardPlanGroup: React__default.ForwardRefExoticComponent<KdsCardPlanGroupProps & React__default.RefAttributes<HTMLDivElement>>;
3490
3819
 
3491
3820
  interface KdsInvoiceStickyProps extends React__default.HTMLAttributes<HTMLElement> {
3492
3821
  }
@@ -3512,7 +3841,9 @@ declare const KdsInvoiceHeaderSkeleton: React__default.ForwardRefExoticComponent
3512
3841
  /**
3513
3842
  * Khipu Design System - BottomSheet Component
3514
3843
  *
3515
- * Bottom-sheet (modal que sube desde abajo en mobile, centrado en desktop) basado
3844
+ * Bottom-sheet (modal que sube desde abajo: en mobile ocupa todo el ancho pegado al borde;
3845
+ * cuando la pantalla es más ancha que el sheet (420px) flota sobre el borde inferior con
3846
+ * todas las esquinas redondeadas) basado
3516
3847
  * en Radix Dialog. Único componente de modales del DS — `KdsModal` fue unificado aquí.
3517
3848
  *
3518
3849
  * Contrato HTML (matchea CSS `.kds-bottom-sheet*` de khipu-components.css):
@@ -3521,13 +3852,18 @@ declare const KdsInvoiceHeaderSkeleton: React__default.ForwardRefExoticComponent
3521
3852
  * <div class="kds-bottom-sheet">
3522
3853
  * <div class="kds-bottom-sheet-grabber" /> <!-- opcional -->
3523
3854
  * <button class="kds-bottom-sheet-close">X</button> <!-- opcional -->
3855
+ * <div class="kds-bottom-sheet-icon">...</div> <!-- opcional -->
3524
3856
  * <h2 class="kds-bottom-sheet-title">...</h2> <!-- opcional -->
3525
3857
  * <p class="kds-bottom-sheet-description">...</p> <!-- opcional -->
3526
3858
  * <div class="kds-bottom-sheet-body">children</div>
3859
+ * <p class="kds-bottom-sheet-hint">...</p> <!-- opcional -->
3527
3860
  * <div class="kds-bottom-sheet-actions">actions</div> <!-- opcional -->
3528
3861
  * </div>
3529
3862
  * </div>
3530
3863
  *
3864
+ * Variante diálogo (`variant="dialog"`): `kds-bottom-sheet-scrim--dialog` en el scrim y
3865
+ * `kds-bottom-sheet--dialog` en el sheet; con texto centrado suma `kds-bottom-sheet--center`.
3866
+ *
3531
3867
  * IMPORTANTE: el scrim DEBE llevar la clase `.open` SIEMPRE (Radix maneja mount/unmount).
3532
3868
  * Sin `.open`, el scrim queda `display: none` y no se ve.
3533
3869
  */
@@ -3558,6 +3894,28 @@ interface KdsBottomSheetProps extends React__default.HTMLAttributes<HTMLDivEleme
3558
3894
  * (90dvh) y estira el body para contenido largo como documentos o textos legales.
3559
3895
  */
3560
3896
  size?: 'auto' | 'full';
3897
+ /**
3898
+ * `false` para un sheet que no se puede cerrar mientras dura un proceso (p. ej. una
3899
+ * validación automática): ignora Escape y el click fuera, y no muestra grabber ni X.
3900
+ * Lo cierra el consumidor poniendo `open={false}` al terminar. Default: true.
3901
+ */
3902
+ dismissible?: boolean;
3903
+ /**
3904
+ * `sheet` (default): bottom sheet con texto centrado. `dialog`: modal corriente con texto
3905
+ * a la izquierda — en escritorio (>520px) centrado en pantalla con las acciones lado a lado
3906
+ * (la primera acción queda a la derecha); en mobile sigue siendo bottom sheet con las
3907
+ * acciones apiladas. Pasa la acción principal primero en `actions`.
3908
+ */
3909
+ variant?: 'sheet' | 'dialog';
3910
+ /**
3911
+ * Alineación del texto en la variante `dialog`: `start` (default, modal corriente) o
3912
+ * `center` (modal de estado, p. ej. con un spinner arriba). El sheet siempre va centrado.
3913
+ */
3914
+ align?: 'start' | 'center';
3915
+ /** Ícono o loader sobre el título (p. ej. `<KdsSpinner />`), en `.kds-bottom-sheet-icon`. */
3916
+ icon?: React__default.ReactNode;
3917
+ /** Nota breve sobre las acciones (p. ej. "No cierres esta ventana."). */
3918
+ hint?: React__default.ReactNode;
3561
3919
  }
3562
3920
  declare const KdsBottomSheet: React__default.ForwardRefExoticComponent<KdsBottomSheetProps & React__default.RefAttributes<HTMLDivElement>>;
3563
3921
 
@@ -4110,4 +4468,4 @@ declare function formatDate(iso?: string): string;
4110
4468
  */
4111
4469
  declare function formatTime(iso?: string): string;
4112
4470
 
4113
- export { type Colors, type ExpandPanelProps, type ExpandToggleProps, KDS_VERSION, 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, KdsCopyButton, type KdsCopyButtonProps, KdsCopyRow, type KdsCopyRowProps, KdsCopyableTable, type KdsCopyableTableProps, type KdsCopyableTableRow, KdsCountdown, type KdsCountdownProps, KdsDivider, type KdsDividerProps, KdsDocumentFrame, type KdsDocumentFrameProps, KdsEmptyState, type KdsEmptyStateProps, KdsExpandPanel, type KdsExpandPanelProps, KdsFab, type KdsFabPosition, type KdsFabProps, KdsInvoiceHeaderSkeleton, type KdsInvoiceHeaderSkeletonProps, KdsInvoiceMerchant, type KdsInvoiceMerchantProps, 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, KdsSearchField, type KdsSearchFieldProps, 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, LIGHT_LOGO_LUMINANCE_THRESHOLD, type LogoBackdrop, type ThemeMode, type Tokens, type TokensByMode, type Typography as TypographyTokens, type UseExpandToggleOptions, type UseExpandToggleResult, type UseHideOnScrollOptions, type UseHideOnScrollResult, type UseStickyInvoiceCollapseOptions, borderRadius, breakpoints, centerFieldInViewport, colors, colorsByMode, focusFirstInvalidField, fontFamilies, fontSizes, fontWeights, formatDate, formatDateTime, formatTime, getContrastColor, guideToFirstInvalidFieldOnBlur, letterSpacings, lighten, lineHeights, measureLogoLuminance, pickLogoBackdrop, runAfterPointerGesture, scrollToFirstInvalidField, semanticSpacing, shadows, spacing, tokens, tokensByMode, transitions, typography, useAutoHide, useCopyToClipboard, useCountdown, useExpandToggle, useHideOnScroll, useLogoBackdrop, useMediaQuery, useStickyInvoiceCollapse, useTabsKeyboard, zIndex };
4471
+ export { type Colors, type ExpandPanelProps, type ExpandToggleProps, KDS_VERSION, 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, KdsCardPlanGroup, type KdsCardPlanGroupProps, type KdsCardPlanProps, type KdsCardProps, type KdsCardSectionProps, KdsCardSelector, KdsCardSelectorGroup, type KdsCardSelectorGroupProps, type KdsCardSelectorProps, type KdsCardVariant, KdsCheckbox, type KdsCheckboxProps, KdsChip, type KdsChipColor, type KdsChipProps, KdsConsentCard, type KdsConsentCardProps, type KdsConsentItem, type KdsConsentSection, KdsContract, type KdsContractProps, KdsCopyButton, type KdsCopyButtonProps, KdsCopyRow, type KdsCopyRowProps, KdsCopyableTable, type KdsCopyableTableProps, type KdsCopyableTableRow, KdsCountdown, type KdsCountdownProps, KdsDivider, type KdsDividerProps, KdsDocumentFrame, type KdsDocumentFrameProps, KdsEmptyState, type KdsEmptyStateProps, KdsExpandPanel, type KdsExpandPanelProps, KdsFab, type KdsFabPosition, type KdsFabProps, KdsFeedbackCard, type KdsFeedbackCardProps, KdsFooter, type KdsFooterColumn, type KdsFooterLink, type KdsFooterProps, KdsInvoiceHeaderSkeleton, type KdsInvoiceHeaderSkeletonProps, KdsInvoiceMerchant, type KdsInvoiceMerchantProps, KdsInvoiceSticky, type KdsInvoiceStickyProps, KdsLinearProgress, type KdsLinearProgressProps, KdsMerchantTile, type KdsMerchantTileProps, KdsMontoRow, type KdsMontoRowProps, KdsNavbar, type KdsNavbarProps, KdsPaymentTotal, type KdsPaymentTotalProps, type KdsPaymentTotalVariant, KdsProgressChecklist, type KdsProgressChecklistItem, type KdsProgressChecklistProps, type KdsProgressChecklistStatus, KdsQrRow, type KdsQrRowProps, KdsRadioGroup, type KdsRadioGroupProps, type KdsRadioOption, type KdsRecapItem, KdsRecapList, type KdsRecapListProps, KdsSearchField, type KdsSearchFieldProps, KdsSectionNote, type KdsSectionNoteProps, KdsSecureFooter, type KdsSecureFooterProps, KdsSecureLoader, type KdsSecureLoaderProps, KdsSegmentedTabs, type KdsSegmentedTabsProps, KdsSelect, type KdsSelectOption, type KdsSelectProps, KdsSidebar, type KdsSidebarHeader, type KdsSidebarItem, type KdsSidebarProps, 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, LIGHT_LOGO_LUMINANCE_THRESHOLD, type LogoBackdrop, type ThemeMode, type Tokens, type TokensByMode, type Typography as TypographyTokens, type UseExpandToggleOptions, type UseExpandToggleResult, type UseHideOnScrollOptions, type UseHideOnScrollResult, type UseStickyInvoiceCollapseOptions, borderRadius, breakpoints, centerFieldInViewport, colors, colorsByMode, focusFirstInvalidField, fontFamilies, fontSizes, fontWeights, formatDate, formatDateTime, formatTime, getContrastColor, guideToFirstInvalidFieldOnBlur, letterSpacings, lighten, lineHeights, measureLogoLuminance, pickLogoBackdrop, runAfterPointerGesture, scrollToFirstInvalidField, semanticSpacing, shadows, spacing, tokens, tokensByMode, transitions, typography, useAutoHide, useCopyToClipboard, useCountdown, useExpandToggle, useHideOnScroll, useLogoBackdrop, useMediaQuery, useStickyInvoiceCollapse, useTabsKeyboard, zIndex };