@ajuarezso/sui-design-system 0.20.0 → 0.21.0

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.
Files changed (59) hide show
  1. package/docs/INDEX.md +51 -51
  2. package/docs/sui-alert/README.md +13 -0
  3. package/docs/sui-badge/README.md +17 -0
  4. package/docs/sui-banner/README.md +190 -0
  5. package/docs/sui-breadcrumb-item/README.md +96 -0
  6. package/docs/sui-breadcrumbs/README.md +122 -0
  7. package/docs/sui-button/README.md +17 -0
  8. package/docs/sui-card/README.md +168 -0
  9. package/docs/sui-chart-legend/README.md +140 -0
  10. package/docs/sui-chart-legend-dot/README.md +118 -0
  11. package/docs/sui-checkbox-card/README.md +150 -0
  12. package/docs/sui-compact-select/README.md +127 -0
  13. package/docs/sui-compact-select-for-input/README.md +117 -0
  14. package/docs/sui-content-card/README.md +147 -0
  15. package/docs/sui-content-label/README.md +148 -0
  16. package/docs/sui-counter-input/README.md +145 -0
  17. package/docs/sui-date-selector/README.md +98 -0
  18. package/docs/sui-datepicker/README.md +193 -0
  19. package/docs/sui-day-cell/README.md +118 -0
  20. package/docs/sui-day-label/README.md +81 -0
  21. package/docs/sui-drawer-footer/README.md +127 -0
  22. package/docs/sui-drawer-header/README.md +140 -0
  23. package/docs/sui-empty-state/README.md +145 -0
  24. package/docs/sui-file-upload/README.md +154 -0
  25. package/docs/sui-file-upload-card/README.md +129 -0
  26. package/docs/sui-image-upload/README.md +200 -0
  27. package/docs/sui-image-upload-profile/README.md +145 -0
  28. package/docs/sui-inline-input/README.md +104 -0
  29. package/docs/sui-inline-select/README.md +101 -0
  30. package/docs/sui-input/README.md +244 -0
  31. package/docs/sui-integration-switch/README.md +142 -0
  32. package/docs/sui-notification/README.md +179 -0
  33. package/docs/sui-notification-footer/README.md +98 -0
  34. package/docs/sui-notification-tab-menu/README.md +112 -0
  35. package/docs/sui-otp-input/README.md +116 -0
  36. package/docs/sui-pagination/README.md +146 -0
  37. package/docs/sui-password-strength/README.md +99 -0
  38. package/docs/sui-period-range/README.md +93 -0
  39. package/docs/sui-popover/README.md +178 -0
  40. package/docs/sui-product-card/README.md +173 -0
  41. package/docs/sui-radio-card/README.md +160 -0
  42. package/docs/sui-rating/README.md +7 -6
  43. package/docs/sui-rich-editor/README.md +114 -0
  44. package/docs/sui-select/README.md +180 -0
  45. package/docs/sui-stepper/README.md +166 -0
  46. package/docs/sui-store-card/README.md +147 -0
  47. package/docs/sui-switch-card/README.md +149 -0
  48. package/docs/sui-tab-chips/README.md +185 -0
  49. package/docs/sui-tab-menu-horizontal/README.md +142 -0
  50. package/docs/sui-tab-menu-vertical/README.md +136 -0
  51. package/docs/sui-tag-input/README.md +120 -0
  52. package/docs/sui-textarea/README.md +157 -0
  53. package/docs/sui-time-picker/README.md +237 -0
  54. package/docs/sui-toast/README.md +190 -0
  55. package/docs/sui-tooltip/README.md +201 -0
  56. package/fesm2022/ajuarezso-sui-design-system.mjs +273 -231
  57. package/fesm2022/ajuarezso-sui-design-system.mjs.map +1 -1
  58. package/package.json +1 -1
  59. package/types/ajuarezso-sui-design-system.d.ts +208 -52
@@ -1507,7 +1507,7 @@ interface SuiBreadcrumbEntry {
1507
1507
  * - Output `(navigate)` emite el item clickeado.
1508
1508
  *
1509
1509
  * Accesibilidad:
1510
- * - host = `<nav aria-label="Breadcrumb">`
1510
+ * - host = `<nav aria-label="Ruta de navegación">`
1511
1511
  * - Lista interna `<ol>` (orden semántica) sin estilos default.
1512
1512
  * - Active item con `aria-current="page"` (manejado por `<sui-breadcrumb-item>`).
1513
1513
  * - Dividers `aria-hidden="true"`.
@@ -1592,7 +1592,7 @@ declare class SuiButtonGroupItem {
1592
1592
  /** aria-label para icon-only buttons */
1593
1593
  readonly ariaLabel: _angular_core.InputSignal<string>;
1594
1594
  /** Estado del data-attribute para CSS scoping */
1595
- readonly state: _angular_core.Signal<"default" | "active" | "disabled">;
1595
+ readonly state: _angular_core.Signal<"default" | "disabled" | "active">;
1596
1596
  /** True cuando solo tiene icon (left o right) sin label */
1597
1597
  readonly onlyIcon: _angular_core.Signal<boolean>;
1598
1598
  /**
@@ -1812,7 +1812,10 @@ type SuiCardSize = 'small' | 'medium' | 'large' | 'xlarge';
1812
1812
  * al gap visual (queda pegado al body o al footer según haya footer o no).
1813
1813
  *
1814
1814
  * Interactive cards:
1815
- * - [interactive]="true" → cursor pointer, hover lift, focus ring.
1815
+ * - [interactive]="true" → cursor pointer, hover lift, focus ring, role=button,
1816
+ * tabindex=0 y teclado: Enter y Espacio disparan un click en el host (fix
1817
+ * 03-10-2026), así el `(click)` / `routerLink` del consumer sirve también
1818
+ * con teclado, igual que un <button>.
1816
1819
  * Apply only on cards that act as a single action surface (e.g., a tile that
1817
1820
  * navigates). For cards with multiple inner CTAs, leave non-interactive.
1818
1821
  *
@@ -1823,6 +1826,15 @@ declare class SuiCard {
1823
1826
  readonly variant: _angular_core.InputSignal<SuiCardVariant>;
1824
1827
  readonly size: _angular_core.InputSignal<SuiCardSize>;
1825
1828
  readonly interactive: _angular_core.InputSignal<boolean>;
1829
+ private readonly host;
1830
+ /**
1831
+ * Enter / Espacio sobre la card interactiva → click en el host (dispara el
1832
+ * `(click)` del consumer y un `routerLink` puesto en la card o en un `<a>`
1833
+ * que la envuelve). Solo cuando el foco está EN la card: una tecla dentro
1834
+ * de un campo o botón proyectado es de ese control. `preventDefault` evita
1835
+ * que el Espacio haga scroll; la tecla sostenida (`repeat`) no repite.
1836
+ */
1837
+ protected onKeyActivate(event: Event): void;
1826
1838
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SuiCard, never>;
1827
1839
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<SuiCard, "sui-card", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "interactive": { "alias": "interactive"; "required": false; "isSignal": true; }; }, {}, never, ["[sui-card-header]", "*", "[sui-card-media]", "[sui-card-footer]"], true, never>;
1828
1840
  }
@@ -2152,7 +2164,7 @@ declare class SuiCheckboxCard implements ControlValueAccessor {
2152
2164
  /** RemixIcon name (sin prefijo "ri-") para type='left-icon'. */
2153
2165
  readonly icon: _angular_core.InputSignal<string | null>;
2154
2166
  /** Emoji del catálogo SUI_EMOJI_MAP — alternativa a icon para type='left-icon'. */
2155
- readonly emoji: _angular_core.InputSignal<"label" | "warning" | "pensive-face" | "confused-face" | "neutral-face" | "slightly-smiling-face" | "grinning-face-smiling-eyes" | "thinking-face" | "grinning-face" | "smiling-face-hearts" | "face-with-rolling-eyes" | "face-screaming" | "partying-face" | "star-struck" | "sleeping-face" | "package" | "receipt" | "money-bag" | "money-with-wings" | "shopping-cart" | "shopping-bags" | "card-index-dividers" | "bell" | "bell-with-slash" | "pushpin" | "mobile-phone" | "gear" | "locked" | "unlocked" | "wrench" | "hammer" | "magnifying-glass-tilted-left" | "spiral-calendar" | "bar-chart" | "delivery-truck" | "motorcycle" | "rocket" | "house" | "office-building" | "shop" | "dollar-banknote" | "glowing-star" | "kick-scooter" | "check-mark" | "check-mark-button" | "cross-mark" | "no-entry" | "sparkles" | "party-popper" | "waving-hand" | "thumbs-up" | "clapping-hands" | "handshake" | "busts-in-silhouette" | "pizza" | "hamburger" | "taco" | "birthday-cake" | null>;
2167
+ readonly emoji: _angular_core.InputSignal<"warning" | "label" | "pensive-face" | "confused-face" | "neutral-face" | "slightly-smiling-face" | "grinning-face-smiling-eyes" | "thinking-face" | "grinning-face" | "smiling-face-hearts" | "face-with-rolling-eyes" | "face-screaming" | "partying-face" | "star-struck" | "sleeping-face" | "package" | "receipt" | "money-bag" | "money-with-wings" | "shopping-cart" | "shopping-bags" | "card-index-dividers" | "bell" | "bell-with-slash" | "pushpin" | "mobile-phone" | "gear" | "locked" | "unlocked" | "wrench" | "hammer" | "magnifying-glass-tilted-left" | "spiral-calendar" | "bar-chart" | "delivery-truck" | "motorcycle" | "rocket" | "house" | "office-building" | "shop" | "dollar-banknote" | "glowing-star" | "kick-scooter" | "check-mark" | "check-mark-button" | "cross-mark" | "no-entry" | "sparkles" | "party-popper" | "waving-hand" | "thumbs-up" | "clapping-hands" | "handshake" | "busts-in-silhouette" | "pizza" | "hamburger" | "taco" | "birthday-cake" | null>;
2156
2168
  /** URL directa al emoji para type='left-icon'. Precedencia: icon > emoji > iconSrc. */
2157
2169
  readonly iconSrc: _angular_core.InputSignal<string | null>;
2158
2170
  /** URL de imagen para type='avatar'. Si falla, fallback a iniciales del label. */
@@ -2623,7 +2635,7 @@ declare class SuiColorDot {
2623
2635
  * - `selected` → dot 12×12 + ring 2px.
2624
2636
  * - `disabled` → dot gris pálido, sin pointer events.
2625
2637
  */
2626
- readonly state: _angular_core.InputSignal<"default" | "disabled" | "hover" | "selected">;
2638
+ readonly state: _angular_core.InputSignal<"default" | "disabled" | "selected" | "hover">;
2627
2639
  /**
2628
2640
  * Tamaño. `medium` (default, Figma 24): dot 16 / hover 14 / selected 12 + anillo 18.
2629
2641
  * `large` (32, extensión SUI para mobile): dot 22 / hover 18 / selected 16 + anillo 24.
@@ -3263,15 +3275,16 @@ declare class SuiFlag {
3263
3275
  * - SIN border (el input padre tiene su propio border)
3264
3276
  * - SIN focus ring (el input padre maneja el focus state)
3265
3277
  * - SIN error state (heredado del input padre)
3266
- * - X-Small usa flag 16×16, medium/small 20×20 (mismo patrón que el compact-select normal)
3278
+ * - X-Small usa flag 16×16, large/medium/small 20×20 (mismo patrón que el compact-select normal)
3279
+ * - `large` (extensión SUI, 03-10-2026) va dentro de un sui-input large (48)
3267
3280
  * - Menu matchea trigger width con minWidth=200
3268
3281
  *
3269
3282
  * `ControlValueAccessor` implementado — funciona con `formControlName`.
3270
3283
  *
3271
3284
  * Uso:
3272
- * <sui-input>
3285
+ * <sui-input [leadingControl]="true">
3273
3286
  * <sui-compact-select-for-input
3274
- * slot="prefix"
3287
+ * data-slot="start"
3275
3288
  * size="medium"
3276
3289
  * [items]="countries"
3277
3290
  * formControlName="country"
@@ -3282,7 +3295,8 @@ declare class SuiFlag {
3282
3295
  * Si el consumer escribe `[(selected)]` desde código, el FormControl NO se entera
3283
3296
  * (split-brain). Usar UNA fuente de verdad: formControl O selected, no las dos.
3284
3297
  */
3285
- type SuiCompactSelectForInputSize = 'medium' | 'small' | 'xsmall';
3298
+ /** `large` es extensión SUI (03-10-2026): para el `sui-input` large (48) de mobile. */
3299
+ type SuiCompactSelectForInputSize = 'large' | 'medium' | 'small' | 'xsmall';
3286
3300
  interface SuiCompactSelectForInputItem<T = string> {
3287
3301
  value: T;
3288
3302
  label: string;
@@ -3355,6 +3369,7 @@ declare class SuiCompactSelectForInput<T = string> implements ControlValueAccess
3355
3369
  *
3356
3370
  * Specs Figma (sin cambios vs versión anterior):
3357
3371
  * Sizes: medium 40 (p=10 r=10) / small 36 (p=8 r=8) / xsmall 32 (p=6 r=8)
3372
+ * + large 48 (p=14 r=12, extensión SUI 03-10-2026, para mobile)
3358
3373
  * States: placeholder / filled / hover / focused / disabled / error
3359
3374
  * Types: basic / icon (RemixIcon 20×20) / country (sui-flag 20×20; 16×16 en xsmall)
3360
3375
  *
@@ -3372,7 +3387,8 @@ declare class SuiCompactSelectForInput<T = string> implements ControlValueAccess
3372
3387
  * se entera del cambio (split-brain). Usar UNA u OTRA, no las dos juntas.
3373
3388
  */
3374
3389
  type SuiCompactSelectType = 'basic' | 'icon' | 'country';
3375
- type SuiCompactSelectSize = 'medium' | 'small' | 'xsmall';
3390
+ /** `large` (48) es extensión SUI (03-10-2026): el alto del `sui-button` large para mobile. */
3391
+ type SuiCompactSelectSize = 'large' | 'medium' | 'small' | 'xsmall';
3376
3392
  /**
3377
3393
  * Shape del item dentro del menu. El consumer pasa array de estos en `[items]`.
3378
3394
  * Compatible con generics (T = tipo del value que se guarda en formControl).
@@ -3646,6 +3662,9 @@ type SuiContentCardType = 'basic' | 'left-icon' | 'avatar' | 'card-provider' | '
3646
3662
  * <sui-content-card type="brand" brand="stripe" title="Stripe" subtitle="Conectado"
3647
3663
  * [badge]="{ label: 'Activo', color: 'green' }" />
3648
3664
  */
3665
+ /** Tamaño de la X de quitar: `medium` 20 (Figma, default) · `large` 32 con
3666
+ área táctil de 40 (extensión SUI 03-10-2026, mobile). */
3667
+ type SuiContentCardSize = 'medium' | 'large';
3649
3668
  declare class SuiContentCard {
3650
3669
  /** Tipo de leading visual. */
3651
3670
  readonly type: _angular_core.InputSignal<SuiContentCardType>;
@@ -3678,6 +3697,13 @@ declare class SuiContentCard {
3678
3697
  readonly dismissible: _angular_core.InputSignal<boolean>;
3679
3698
  /** aria-label del botón X. */
3680
3699
  readonly dismissAriaLabel: _angular_core.InputSignal<string>;
3700
+ /**
3701
+ * Tamaño de la X de quitar (la fila no cambia: sigue en 72).
3702
+ * `medium` (default, Figma): 20 × 20 sin área extra.
3703
+ * `large` — extensión SUI (03-10-2026) para mobile: caja de 32 × 32 con el
3704
+ * glyph en 20 y un área táctil invisible de 40 × 40.
3705
+ */
3706
+ readonly size: _angular_core.InputSignal<SuiContentCardSize>;
3681
3707
  /**
3682
3708
  * Estado deshabilitado: atenúa contenido a tokens disabled-300, deshabilita el
3683
3709
  * badge y el botón X (sin pointer-events), y setea aria-disabled en el host.
@@ -3693,7 +3719,7 @@ declare class SuiContentCard {
3693
3719
  protected readonly labelType: _angular_core.Signal<SuiContentLabelType>;
3694
3720
  onDismiss(event: MouseEvent): void;
3695
3721
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SuiContentCard, never>;
3696
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<SuiContentCard, "sui-content-card", never, { "type": { "alias": "type"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "sublabel": { "alias": "sublabel"; "required": false; "isSignal": true; }; "subtitle": { "alias": "subtitle"; "required": false; "isSignal": true; }; "badge": { "alias": "badge"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "avatar": { "alias": "avatar"; "required": false; "isSignal": true; }; "companyLogoSrc": { "alias": "companyLogoSrc"; "required": false; "isSignal": true; }; "brand": { "alias": "brand"; "required": false; "isSignal": true; }; "dismissible": { "alias": "dismissible"; "required": false; "isSignal": true; }; "dismissAriaLabel": { "alias": "dismissAriaLabel"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "dismiss": "dismiss"; }, never, never, true, never>;
3722
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SuiContentCard, "sui-content-card", never, { "type": { "alias": "type"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "sublabel": { "alias": "sublabel"; "required": false; "isSignal": true; }; "subtitle": { "alias": "subtitle"; "required": false; "isSignal": true; }; "badge": { "alias": "badge"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "avatar": { "alias": "avatar"; "required": false; "isSignal": true; }; "companyLogoSrc": { "alias": "companyLogoSrc"; "required": false; "isSignal": true; }; "brand": { "alias": "brand"; "required": false; "isSignal": true; }; "dismissible": { "alias": "dismissible"; "required": false; "isSignal": true; }; "dismissAriaLabel": { "alias": "dismissAriaLabel"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "dismiss": "dismiss"; }, never, never, true, never>;
3697
3723
  }
3698
3724
 
3699
3725
  type SuiContentDividerType = 'line' | 'line-spacing' | 'text-line' | 'text' | 'solid-text' | 'icon-button' | 'icon-button-group' | 'text-button' | 'text-button-group';
@@ -3928,8 +3954,10 @@ type SuiCounterInputSize = '2xsmall' | 'xsmall' | 'small' | 'medium' | 'large' |
3928
3954
  * - bg-white-0 + 1px solid stroke-soft-200 + regular-shadow x-small (default)
3929
3955
  *
3930
3956
  * Steppers (Compact Button [1.1], style ghost):
3931
- * - padding 2px, radius 6px, icono 20×20 (subtract-line / add-line) en TODOS
3932
- * los sizes → caja del stepper = 24×24. color icon-sub-600.
3957
+ * - padding 2px, radius 6px, icono 20×20 (subtract-line / add-line) → caja
3958
+ * del stepper = 24×24 de 2xsmall a medium. color icon-sub-600.
3959
+ * - large / xlarge (extensión SUI, 03-10-2026): el stepper crece a 40 / 44
3960
+ * para tocarlo con el dedo en mobile (ícono 20 / 24).
3933
3961
  *
3934
3962
  * Valor (Paragraph/Small — Inter 14/20, -0.084px), text-center, flex 1:
3935
3963
  * - default: text-soft-400 (placeholder gris, valor "vacío"/sin foco)
@@ -3966,6 +3994,8 @@ declare class SuiCounterInput implements ControlValueAccessor {
3966
3994
  readonly size: _angular_core.InputSignal<SuiCounterInputSize>;
3967
3995
  /** El form-label no tiene 'large' — se capea a medium (el label no escala). */
3968
3996
  protected readonly labelSize: _angular_core.Signal<SuiFormLabelSize>;
3997
+ /** Ícono de los botones − / +: 20 hasta large, 24 en xlarge (botón de 44). */
3998
+ protected readonly iconSize: _angular_core.Signal<20 | 24>;
3969
3999
  readonly label: _angular_core.InputSignal<string | null>;
3970
4000
  readonly sublabel: _angular_core.InputSignal<string | null>;
3971
4001
  readonly required: _angular_core.InputSignal<boolean>;
@@ -4106,12 +4136,21 @@ declare function buildCalendarGrid(monthAnchor: Date, options: {
4106
4136
  }): CalendarCell[];
4107
4137
  /** Etiquetas de días para el header del grid — locale ES (lunes-domingo). */
4108
4138
  declare const DAY_LABELS_ES: readonly string[];
4139
+ /** «Octubre 2026» — con mayúscula inicial (date-fns en español la da en
4140
+ * minúscula; la regla de copy del proyecto es sentence case). Fix 03-10-2026. */
4109
4141
  declare function formatMonthYear(date: Date): string;
4110
4142
  declare function formatDateShort(date: Date): string;
4111
4143
  declare function formatDateInput(date: Date): string;
4112
4144
 
4113
4145
  type SuiDatepickerMode = 'date' | 'range';
4114
4146
  type SuiDatepickerCalendars = 1 | 2;
4147
+ /**
4148
+ * Alto del campo (trigger): small 36 · medium 40 (default) · large 48.
4149
+ * `small` y `large` son extensión SUI (03-10-2026): large es el de mobile, el
4150
+ * mismo alto que sui-input/sui-select large. Con large (y siempre en mobile)
4151
+ * las flechas de mes miden 40 y Cancelar/Aplicar van en large.
4152
+ */
4153
+ type SuiDatepickerSize = 'small' | 'medium' | 'large';
4115
4154
  interface SuiDateRange {
4116
4155
  start: Date | null;
4117
4156
  end: Date | null;
@@ -4206,6 +4245,8 @@ declare class SuiDatepicker implements ControlValueAccessor {
4206
4245
  readonly calendars: _angular_core.InputSignal<SuiDatepickerCalendars>;
4207
4246
  /** Renderiza el calendar inline (sin trigger ni popover). */
4208
4247
  readonly inline: _angular_core.InputSignal<boolean>;
4248
+ /** Alto del campo: small 36 · medium 40 (default) · large 48 (ver SuiDatepickerSize). */
4249
+ readonly size: _angular_core.InputSignal<SuiDatepickerSize>;
4209
4250
  /** Placeholder del input cuando no hay valor seleccionado. */
4210
4251
  readonly placeholder: _angular_core.InputSignal<string>;
4211
4252
  /** Si true, muestra Cancel/Apply en el footer. Range siempre lo muestra. */
@@ -4248,6 +4289,11 @@ declare class SuiDatepicker implements ControlValueAccessor {
4248
4289
  * - mode='range' + mobile → 1
4249
4290
  * - mode='range' + desktop → respeta el prop
4250
4291
  */
4292
+ /**
4293
+ * Cancelar / Aplicar: large (48) con el campo large y siempre en mobile, para
4294
+ * tocarlos con el dedo (extensión SUI, 03-10-2026); small (36, Figma) si no.
4295
+ */
4296
+ readonly footerButtonSize: _angular_core.Signal<"small" | "large">;
4251
4297
  readonly effectiveCalendars: _angular_core.Signal<SuiDatepickerCalendars>;
4252
4298
  private _onChange;
4253
4299
  private _onTouched;
@@ -4275,6 +4321,8 @@ declare class SuiDatepicker implements ControlValueAccessor {
4275
4321
  readonly rangeHint: _angular_core.Signal<string | null>;
4276
4322
  toggle(): void;
4277
4323
  openPopover(): void;
4324
+ /** Copia `value` a lo staged (lo que pinta el calendario). */
4325
+ private _stageFromValue;
4278
4326
  cancel(): void;
4279
4327
  apply(): void;
4280
4328
  selectCell(cell: CalendarCell): void;
@@ -4298,7 +4346,7 @@ declare class SuiDatepicker implements ControlValueAccessor {
4298
4346
  * - null → fuera de range o mode=date */
4299
4347
  cellRangePosition(cell: CalendarCell): 'start' | 'end' | 'in' | null;
4300
4348
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SuiDatepicker, never>;
4301
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<SuiDatepicker, "sui-datepicker", never, { "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "calendars": { "alias": "calendars"; "required": false; "isSignal": true; }; "inline": { "alias": "inline"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "showFooter": { "alias": "showFooter"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "presets": { "alias": "presets"; "required": false; "isSignal": true; }; "markedDates": { "alias": "markedDates"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
4349
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SuiDatepicker, "sui-datepicker", never, { "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "calendars": { "alias": "calendars"; "required": false; "isSignal": true; }; "inline": { "alias": "inline"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "showFooter": { "alias": "showFooter"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "presets": { "alias": "presets"; "required": false; "isSignal": true; }; "markedDates": { "alias": "markedDates"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
4302
4350
  }
4303
4351
 
4304
4352
  type SuiDayCellType = 'basic' | 'range';
@@ -5083,7 +5131,7 @@ type SuiEmojiName = keyof typeof SUI_EMOJI_MAP;
5083
5131
  type SuiEmojiSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'full';
5084
5132
  declare class SuiEmoji {
5085
5133
  /** Nombre del emoji del catálogo. Si se proveé `src`, este se ignora. */
5086
- readonly name: _angular_core.InputSignal<"label" | "warning" | "pensive-face" | "confused-face" | "neutral-face" | "slightly-smiling-face" | "grinning-face-smiling-eyes" | "thinking-face" | "grinning-face" | "smiling-face-hearts" | "face-with-rolling-eyes" | "face-screaming" | "partying-face" | "star-struck" | "sleeping-face" | "package" | "receipt" | "money-bag" | "money-with-wings" | "shopping-cart" | "shopping-bags" | "card-index-dividers" | "bell" | "bell-with-slash" | "pushpin" | "mobile-phone" | "gear" | "locked" | "unlocked" | "wrench" | "hammer" | "magnifying-glass-tilted-left" | "spiral-calendar" | "bar-chart" | "delivery-truck" | "motorcycle" | "rocket" | "house" | "office-building" | "shop" | "dollar-banknote" | "glowing-star" | "kick-scooter" | "check-mark" | "check-mark-button" | "cross-mark" | "no-entry" | "sparkles" | "party-popper" | "waving-hand" | "thumbs-up" | "clapping-hands" | "handshake" | "busts-in-silhouette" | "pizza" | "hamburger" | "taco" | "birthday-cake" | null>;
5134
+ readonly name: _angular_core.InputSignal<"warning" | "label" | "pensive-face" | "confused-face" | "neutral-face" | "slightly-smiling-face" | "grinning-face-smiling-eyes" | "thinking-face" | "grinning-face" | "smiling-face-hearts" | "face-with-rolling-eyes" | "face-screaming" | "partying-face" | "star-struck" | "sleeping-face" | "package" | "receipt" | "money-bag" | "money-with-wings" | "shopping-cart" | "shopping-bags" | "card-index-dividers" | "bell" | "bell-with-slash" | "pushpin" | "mobile-phone" | "gear" | "locked" | "unlocked" | "wrench" | "hammer" | "magnifying-glass-tilted-left" | "spiral-calendar" | "bar-chart" | "delivery-truck" | "motorcycle" | "rocket" | "house" | "office-building" | "shop" | "dollar-banknote" | "glowing-star" | "kick-scooter" | "check-mark" | "check-mark-button" | "cross-mark" | "no-entry" | "sparkles" | "party-popper" | "waving-hand" | "thumbs-up" | "clapping-hands" | "handshake" | "busts-in-silhouette" | "pizza" | "hamburger" | "taco" | "birthday-cake" | null>;
5087
5135
  /** URL directa al emoji (override del catálogo). Útil para usar emojis fuera del map. */
5088
5136
  readonly src: _angular_core.InputSignal<string | null>;
5089
5137
  /** Tamaño del emoji. */
@@ -5141,6 +5189,11 @@ interface SuiEmptyStateAction {
5141
5189
  label: string;
5142
5190
  route?: string;
5143
5191
  }
5192
+ /**
5193
+ * Tamaño del botón de la acción. `medium` (40) es el default de siempre;
5194
+ * `large` (48) es extensión SUI (03-10-2026): el CTA de mobile.
5195
+ */
5196
+ type SuiEmptyStateSize = 'medium' | 'large';
5144
5197
  /**
5145
5198
  * SUI Empty State — SUI Design System 2.0
5146
5199
  *
@@ -5174,6 +5227,8 @@ interface SuiEmptyStateAction {
5174
5227
  * - subtitle: descripción
5175
5228
  * - action: string shorthand (solo label → botón emite actionClicked) o
5176
5229
  * { label, route? } — con route el botón navega vía routerLink
5230
+ * - size: tamaño del botón de la acción — medium 40 (default) | large 48
5231
+ * (extensión SUI 03-10-2026, para mobile)
5177
5232
  */
5178
5233
  declare class SuiEmptyState {
5179
5234
  /** URL de Fluent Emoji (3D o animado) — override del zorro default. */
@@ -5185,6 +5240,10 @@ declare class SuiEmptyState {
5185
5240
  null/'' = sin botón. */
5186
5241
  action: _angular_core.InputSignal<string | SuiEmptyStateAction | null>;
5187
5242
  actionClicked: _angular_core.OutputEmitterRef<void>;
5243
+ /** Tamaño del botón de la acción: `medium` 40 (default) o `large` 48 para
5244
+ mobile — extensión SUI (03-10-2026). Solo cambia el botón; emoji, título
5245
+ y padding siguen igual. */
5246
+ size: _angular_core.InputSignal<SuiEmptyStateSize>;
5188
5247
  /** Config resuelta del CTA (string → { label }; sin label → null). */
5189
5248
  protected readonly actionCfg: _angular_core.Signal<SuiEmptyStateAction | null>;
5190
5249
  /** URL del emoji. Default = zorro (mascota canon de empty states del proyecto):
@@ -5193,7 +5252,7 @@ declare class SuiEmptyState {
5193
5252
  incluidas las secciones reutilizables — sin tocar cada uso. */
5194
5253
  protected readonly resolvedEmojiSrc: _angular_core.Signal<string>;
5195
5254
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SuiEmptyState, never>;
5196
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<SuiEmptyState, "sui-empty-state", never, { "emoji": { "alias": "emoji"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": true; "isSignal": true; }; "subtitle": { "alias": "subtitle"; "required": false; "isSignal": true; }; "action": { "alias": "action"; "required": false; "isSignal": true; }; }, { "actionClicked": "actionClicked"; }, never, never, true, never>;
5255
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SuiEmptyState, "sui-empty-state", never, { "emoji": { "alias": "emoji"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": true; "isSignal": true; }; "subtitle": { "alias": "subtitle"; "required": false; "isSignal": true; }; "action": { "alias": "action"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, { "actionClicked": "actionClicked"; }, never, never, true, never>;
5197
5256
  }
5198
5257
  /** Zorro animado (Fluent Emoji) — emoji default canon de los empty states. */
5199
5258
  declare const EMPTY_STATE_FOX_EMOJI = "https://raw.githubusercontent.com/Tarikul-Islam-Anik/Animated-Fluent-Emojis/master/Emojis/Animals/Fox.png";
@@ -5498,13 +5557,13 @@ interface SuiFileUploadCardFile {
5498
5557
  * - file: string shorthand (= filename, default "file.pdf") o
5499
5558
  * { filename, extension? } — extension overridea el FileIcon
5500
5559
  * (si falta se extrae del filename)
5501
- * - description: texto secundario izquierdo (ej. "0 KB of 120 KB")
5560
+ * - description: texto secundario izquierdo (ej. «0 KB de 120 KB»)
5502
5561
  * - state: 'in-progress' | 'success' | 'error'
5503
5562
  * - progress: 0–100 — solo se muestra si state==='in-progress'
5504
5563
  * - statusText: override del label de status (sino default por state:
5505
- * "Uploading..." / "Completed" / "Failed")
5564
+ * «Subiendo…» / «Completado» / «Falló»; en español desde el 03-10-2026)
5506
5565
  * - showStatus: muestra/oculta el bloque de status (default true)
5507
- * - retryLabel: texto del link de error (default "Try Again")
5566
+ * - retryLabel: texto del link de error (default «Reintentar»)
5508
5567
  *
5509
5568
  * Outputs:
5510
5569
  * - actionClicked: click en el botón compacto (close en in-progress,
@@ -5521,6 +5580,10 @@ declare class SuiFileUploadCard {
5521
5580
  readonly progress: _angular_core.InputSignal<number>;
5522
5581
  readonly statusText: _angular_core.InputSignal<string | null>;
5523
5582
  readonly showStatus: _angular_core.InputSignal<boolean>;
5583
+ /** Textos para el lector de pantalla (antes fijos en inglés). */
5584
+ readonly cancelLabel: _angular_core.InputSignal<string>;
5585
+ readonly removeLabel: _angular_core.InputSignal<string>;
5586
+ readonly progressLabel: _angular_core.InputSignal<string>;
5524
5587
  readonly retryLabel: _angular_core.InputSignal<string>;
5525
5588
  readonly actionClicked: _angular_core.OutputEmitterRef<void>;
5526
5589
  readonly retryClicked: _angular_core.OutputEmitterRef<void>;
@@ -5535,7 +5598,7 @@ declare class SuiFileUploadCard {
5535
5598
  protected onAction(): void;
5536
5599
  protected onRetry(): void;
5537
5600
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SuiFileUploadCard, never>;
5538
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<SuiFileUploadCard, "sui-file-upload-card", never, { "file": { "alias": "file"; "required": false; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "state": { "alias": "state"; "required": false; "isSignal": true; }; "progress": { "alias": "progress"; "required": false; "isSignal": true; }; "statusText": { "alias": "statusText"; "required": false; "isSignal": true; }; "showStatus": { "alias": "showStatus"; "required": false; "isSignal": true; }; "retryLabel": { "alias": "retryLabel"; "required": false; "isSignal": true; }; }, { "actionClicked": "actionClicked"; "retryClicked": "retryClicked"; }, never, never, true, never>;
5601
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SuiFileUploadCard, "sui-file-upload-card", never, { "file": { "alias": "file"; "required": false; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "state": { "alias": "state"; "required": false; "isSignal": true; }; "progress": { "alias": "progress"; "required": false; "isSignal": true; }; "statusText": { "alias": "statusText"; "required": false; "isSignal": true; }; "showStatus": { "alias": "showStatus"; "required": false; "isSignal": true; }; "cancelLabel": { "alias": "cancelLabel"; "required": false; "isSignal": true; }; "removeLabel": { "alias": "removeLabel"; "required": false; "isSignal": true; }; "progressLabel": { "alias": "progressLabel"; "required": false; "isSignal": true; }; "retryLabel": { "alias": "retryLabel"; "required": false; "isSignal": true; }; }, { "actionClicked": "actionClicked"; "retryClicked": "retryClicked"; }, never, never, true, never>;
5539
5602
  }
5540
5603
 
5541
5604
  type SuiFileUploadSize = 'small' | 'medium' | 'large' | 'xlarge';
@@ -5552,7 +5615,8 @@ type SuiFileUploadSize = 'small' | 'medium' | 'large' | 'xlarge';
5552
5615
  * default / hover / dragover / disabled / error. Soporta single o multi.
5553
5616
  *
5554
5617
  * EXACT (pulled from Figma, verified — node 450:9410 / 450:9429):
5555
- * - Container: w=400px (responsive 100% en consumer), padding=32px, gap=20px,
5618
+ * - Container: Figma w=400px; SUI lo hace fluido (width 100% del contenedor,
5619
+ * 03-10-2026) para que llene la columna del formulario. padding=32px, gap=20px,
5556
5620
  * border=1px dashed --sui-stroke-sub-300 (#d1d1d1), radius=12px,
5557
5621
  * bg=--sui-bg-white-0. Flex column, items+justify center.
5558
5622
  * - Icon: upload-cloud-2-line (Remix) 24×24, color --sui-icon-sub-600 (#5c5c5c),
@@ -5596,7 +5660,8 @@ type SuiFileUploadSize = 'small' | 'medium' | 'large' | 'xlarge';
5596
5660
  * - maxSize: bytes máximo por archivo. 0 = sin límite.
5597
5661
  * - title: label primario.
5598
5662
  * - subtitle: texto secundario.
5599
- * - browseLabel: texto del botón Browse File (default "Browse File").
5663
+ * - browseLabel: texto del botón (default «Buscar archivo»; era "Browse File"
5664
+ * hasta el 03-10-2026).
5600
5665
  * - disabled: bloquea interacción.
5601
5666
  * - error: estado de error (border rojo).
5602
5667
  * - errorMessage: texto del error mostrado debajo.
@@ -5628,7 +5693,7 @@ declare class SuiFileUpload {
5628
5693
  protected readonly resolvedErrorMessage: _angular_core.Signal<string | null>;
5629
5694
  /** Icon size px. Figma verified = 24 (medium). small/large/xlarge escalan +4
5630
5695
  * (small 20 → medium 24 → large 28 → xlarge 32) — extensión de proyecto. */
5631
- protected readonly iconSize: _angular_core.Signal<20 | 24 | 32 | 28>;
5696
+ protected readonly iconSize: _angular_core.Signal<20 | 24 | 28 | 32>;
5632
5697
  onClick(): void;
5633
5698
  /** Browse File button — abre el picker. stopPropagation evita doble-open
5634
5699
  * (el host también es clickeable). */
@@ -6155,6 +6220,10 @@ declare class SuiImageUploadProfile implements ControlValueAccessor {
6155
6220
 
6156
6221
  type SuiImageUploadShape = 'circle' | 'rect';
6157
6222
  type SuiImageUploadSize = 'sm' | 'md' | 'lg' | 'xl';
6223
+ /** Valor del `accept` del input file (tipos + extensiones, por el .heic sin MIME). */
6224
+ declare const SUI_IMAGE_UPLOAD_ACCEPT: string;
6225
+ /** ¿Es una imagen que el componente acepta? Por MIME o, si viene vacío, por extensión. */
6226
+ declare function esImagenAceptada(file: Pick<File, 'type' | 'name'>): boolean;
6158
6227
  /**
6159
6228
  * SUI Image Upload — SUI Design System 2.0
6160
6229
  *
@@ -6203,7 +6272,7 @@ type SuiImageUploadSize = 'sm' | 'md' | 'lg' | 'xl';
6203
6272
  *
6204
6273
  * RESUELTO 2026-05-29:
6205
6274
  * - 1.7 (component library): el botón "Quitar" pasó de <button> custom a
6206
- * <sui-button variant="stroke" color="error" size="2xsmall">. Los iconos
6275
+ * <sui-button variant="stroke" color="error" size="xsmall">. Los iconos
6207
6276
  * cámara/lápiz pasaron de SVG inline a <sui-icon name="image-add-line" /> y
6208
6277
  * <sui-icon name="pencil-line" />.
6209
6278
  *
@@ -6271,7 +6340,13 @@ declare class SuiImageUpload {
6271
6340
  /** Camera icon px en el empty state. xl escala a 20, resto 16
6272
6341
  * (matchea el escalado del contenedor 32→40 en SCSS). */
6273
6342
  protected readonly iconSize: _angular_core.Signal<16 | 20>;
6343
+ /** Ícono del lápiz y el tacho (editable): 20 en botones de 40, 16 en sm (32). */
6344
+ protected readonly ctrlIconSize: _angular_core.Signal<16 | 20>;
6274
6345
  protected readonly hasSrc: _angular_core.Signal<boolean>;
6346
+ /** Hay imagen y se muestra el botón «Quitar» debajo (sin `editable`). */
6347
+ protected readonly conQuitar: _angular_core.Signal<boolean>;
6348
+ /** Valor del `accept` del input file (incluye HEIC/HEIF). */
6349
+ protected readonly accept: string;
6275
6350
  protected readonly state: _angular_core.Signal<"filled" | "disabled" | "dragover" | "empty">;
6276
6351
  protected readonly resolvedTitle: _angular_core.Signal<string>;
6277
6352
  protected readonly resolvedSubtitle: _angular_core.Signal<string>;
@@ -6802,7 +6877,7 @@ type SuiIntegrationSwitchAppearance = 'card' | 'list';
6802
6877
  * Config del manage button embebido. Un solo input `[manage]` reemplaza al
6803
6878
  * trío showManage/manageLabel/manageIcon (mismo patrón objeto que
6804
6879
  * `badge`/SuiBadgeConfig — canon sui-checkbox-label):
6805
- * - `true` (default) → botón con defaults ('Manage' + settings-2-line)
6880
+ * - `true` (default) → botón con defaults ('Administrar' + settings-2-line)
6806
6881
  * - `'Configurar'` → string shorthand: label custom, icon default
6807
6882
  * - `{ label, icon }` → config completa
6808
6883
  * - `false` / `null` → sin botón
@@ -6894,7 +6969,7 @@ declare class SuiIntegrationSwitch implements ControlValueAccessor {
6894
6969
  (label + color/variant/size, tipado como sui-badge). null = sin badge. */
6895
6970
  readonly badge: _angular_core.InputSignal<string | SuiBadgeConfig | null>;
6896
6971
  protected readonly badgeCfg: _angular_core.Signal<SuiBadgeConfig | null>;
6897
- /** Manage button — true = defaults ('Manage' + settings-2-line), string =
6972
+ /** Manage button — true = defaults ('Administrar' + settings-2-line), string =
6898
6973
  label custom con icon default, SuiIntegrationManageConfig = todo,
6899
6974
  false/null = oculto. */
6900
6975
  readonly manage: _angular_core.InputSignal<string | boolean | SuiIntegrationManageConfig | null>;
@@ -7833,7 +7908,7 @@ declare class SuiNotificationFooter {
7833
7908
  private static readonly DEFAULT_MANAGE_LABEL;
7834
7909
  readonly usePrefix: _angular_core.InputSignal<string>;
7835
7910
  readonly useSuffix: _angular_core.InputSignal<string>;
7836
- /** Link de gestión — true = label default ('Manage Notification'); string =
7911
+ /** Link de gestión — true = label default ('Administrar notificaciones'); string =
7837
7912
  * label custom (emite `manageClick`); SuiLinkConfig { label, href?, target?,
7838
7913
  * rel? }: con href renderiza <a> real, rel automático 'noopener noreferrer'
7839
7914
  * para _blank. false/null = oculto (Figma prop `button` off). */
@@ -8040,7 +8115,7 @@ declare class SuiNotification {
8040
8115
  readonly dismissible: _angular_core.InputSignal<boolean>;
8041
8116
  readonly unread: _angular_core.InputSignal<boolean>;
8042
8117
  /** Item body type. 'basic' keeps the legacy/alert layout (no body slot). */
8043
- readonly type: _angular_core.InputSignal<"basic" | "button" | "file" | "message">;
8118
+ readonly type: _angular_core.InputSignal<"basic" | "file" | "button" | "message">;
8044
8119
  /** When true, item paints the Figma hover bg + reveals the more-2-line button. */
8045
8120
  readonly showMore: _angular_core.InputSignal<boolean>;
8046
8121
  /** Forces the hover affordance visible (e.g. keyboard-focused row). */
@@ -8073,6 +8148,13 @@ declare class SuiNotification {
8073
8148
  }
8074
8149
 
8075
8150
  type SuiOtpInputType = 'number' | 'text';
8151
+ /**
8152
+ * Tamaño de la celda (extensión SUI, 03-10-2026). `large` es el de la guía
8153
+ * (80 × 64) y el default. `medium` (52 × 56) hace entrar 6 celdas en un
8154
+ * teléfono de 390 (6 × 52 + 5 × 8 = 352 de 358 útiles); `small` (44 × 48)
8155
+ * para pantallas de 360 o un código dentro de una tarjeta.
8156
+ */
8157
+ type SuiOtpInputSize = 'large' | 'medium' | 'small';
8076
8158
  /**
8077
8159
  * SUI OTP / Digit Input — SUI Design System 2.0
8078
8160
  *
@@ -8114,6 +8196,9 @@ type SuiOtpInputType = 'number' | 'text';
8114
8196
  * - CVA: el value expuesto es el string concatenado de todas las celdas.
8115
8197
  *
8116
8198
  * @input length Cantidad de celdas (default 6).
8199
+ * @input size 'large' (80×64, guía) | 'medium' (52×56) | 'small' (44×48).
8200
+ * Además las celdas se achican si no entran en el ancho
8201
+ * del contenedor (extensión SUI, 03-10-2026).
8117
8202
  * @input type 'number' | 'text' — 'number' restringe a [0-9] e
8118
8203
  * inputmode='numeric'; 'text' acepta cualquier char e
8119
8204
  * inputmode='text'.
@@ -8132,6 +8217,8 @@ type SuiOtpInputType = 'number' | 'text';
8132
8217
  */
8133
8218
  declare class SuiOtpInput implements ControlValueAccessor {
8134
8219
  readonly length: _angular_core.InputSignal<number>;
8220
+ /** Tamaño de la celda: large 80×64 (guía, default) · medium 52×56 · small 44×48. */
8221
+ readonly size: _angular_core.InputSignal<SuiOtpInputSize>;
8135
8222
  readonly type: _angular_core.InputSignal<SuiOtpInputType>;
8136
8223
  readonly disabled: _angular_core.ModelSignal<boolean>;
8137
8224
  readonly error: _angular_core.InputSignal<boolean>;
@@ -8169,7 +8256,7 @@ declare class SuiOtpInput implements ControlValueAccessor {
8169
8256
  registerOnTouched(fn: () => void): void;
8170
8257
  setDisabledState(isDisabled: boolean): void;
8171
8258
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SuiOtpInput, never>;
8172
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<SuiOtpInput, "sui-otp-input", never, { "length": { "alias": "length"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "error": { "alias": "error"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "disabled": "disabledChange"; "value": "valueChange"; "completed": "completed"; }, never, never, true, never>;
8259
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SuiOtpInput, "sui-otp-input", never, { "length": { "alias": "length"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "error": { "alias": "error"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "disabled": "disabledChange"; "value": "valueChange"; "completed": "completed"; }, never, never, true, never>;
8173
8260
  }
8174
8261
 
8175
8262
  /**
@@ -8488,6 +8575,9 @@ declare class SuiPeriodRange {
8488
8575
  type SuiPopoverPosition = 'top-left' | 'top-center' | 'top-right' | 'bottom-left' | 'bottom-center' | 'bottom-right' | 'right-top' | 'right-center' | 'right-bottom' | 'left-top' | 'left-center' | 'left-bottom';
8489
8576
  /** Tipo de footer del popover (Figma 4456:83048). `none` = sin footer. */
8490
8577
  type SuiPopoverFooter = 'none' | 'stretch' | 'text-stepper' | 'stepper';
8578
+ /** Tamaño de los botones del pie (escala del sui-button): `small` 36 (Figma,
8579
+ default) · `medium` 40 para mobile — extensión SUI (03-10-2026). */
8580
+ type SuiPopoverSize = 'small' | 'medium';
8491
8581
  declare class SuiPopover {
8492
8582
  /** Placement axis del tail relativo al trigger (12 variantes Figma). */
8493
8583
  readonly position: _angular_core.InputSignal<SuiPopoverPosition>;
@@ -8515,6 +8605,9 @@ declare class SuiPopover {
8515
8605
  current: number;
8516
8606
  total: number;
8517
8607
  } | null>;
8608
+ /** Botones del pie: `small` 36 (Figma, default) · `medium` 40 para mobile —
8609
+ * extensión SUI (03-10-2026). */
8610
+ readonly size: _angular_core.InputSignal<SuiPopoverSize>;
8518
8611
  /** Click en el botón X de dismiss. */
8519
8612
  readonly dismissed: _angular_core.OutputEmitterRef<void>;
8520
8613
  /** Click en el botón secundario (Back). */
@@ -8533,12 +8626,12 @@ declare class SuiPopover {
8533
8626
  readonly isDotStepper: _angular_core.Signal<boolean>;
8534
8627
  /** Config resuelta del step (null → default { current: 1, total: 4 }). */
8535
8628
  private readonly stepCfg;
8536
- /** Texto "Step X of N" del text-stepper. */
8629
+ /** Texto «Paso X de N» del text-stepper (era «Step X of N» hasta 03-10-2026). */
8537
8630
  readonly stepperText: _angular_core.Signal<string>;
8538
8631
  /** Array de dots para el stepper. Cada item: índice activo => primary. */
8539
8632
  readonly dots: _angular_core.Signal<boolean[]>;
8540
8633
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SuiPopover, never>;
8541
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<SuiPopover, "sui-popover", never, { "position": { "alias": "position"; "required": false; "isSignal": true; }; "tail": { "alias": "tail"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "dismissIcon": { "alias": "dismissIcon"; "required": false; "isSignal": true; }; "footer": { "alias": "footer"; "required": false; "isSignal": true; }; "backLabel": { "alias": "backLabel"; "required": false; "isSignal": true; }; "nextLabel": { "alias": "nextLabel"; "required": false; "isSignal": true; }; "doubleButton": { "alias": "doubleButton"; "required": false; "isSignal": true; }; "step": { "alias": "step"; "required": false; "isSignal": true; }; }, { "dismissed": "dismissed"; "back": "back"; "next": "next"; }, never, ["[data-slot=body]"], true, never>;
8634
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SuiPopover, "sui-popover", never, { "position": { "alias": "position"; "required": false; "isSignal": true; }; "tail": { "alias": "tail"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "dismissIcon": { "alias": "dismissIcon"; "required": false; "isSignal": true; }; "footer": { "alias": "footer"; "required": false; "isSignal": true; }; "backLabel": { "alias": "backLabel"; "required": false; "isSignal": true; }; "nextLabel": { "alias": "nextLabel"; "required": false; "isSignal": true; }; "doubleButton": { "alias": "doubleButton"; "required": false; "isSignal": true; }; "step": { "alias": "step"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, { "dismissed": "dismissed"; "back": "back"; "next": "next"; }, never, ["[data-slot=body]"], true, never>;
8542
8635
  }
8543
8636
 
8544
8637
  type SuiProgressBarColor = 'blue' | 'green' | 'orange' | 'red' | 'purple';
@@ -8869,7 +8962,7 @@ declare class SuiRadioCard implements ControlValueAccessor {
8869
8962
  * Emoji del catálogo SUI_EMOJI_MAP — alternativa a icon para type='left-icon'.
8870
8963
  * Si ambos están, icon tiene precedencia.
8871
8964
  */
8872
- readonly emoji: _angular_core.InputSignal<"label" | "warning" | "pensive-face" | "confused-face" | "neutral-face" | "slightly-smiling-face" | "grinning-face-smiling-eyes" | "thinking-face" | "grinning-face" | "smiling-face-hearts" | "face-with-rolling-eyes" | "face-screaming" | "partying-face" | "star-struck" | "sleeping-face" | "package" | "receipt" | "money-bag" | "money-with-wings" | "shopping-cart" | "shopping-bags" | "card-index-dividers" | "bell" | "bell-with-slash" | "pushpin" | "mobile-phone" | "gear" | "locked" | "unlocked" | "wrench" | "hammer" | "magnifying-glass-tilted-left" | "spiral-calendar" | "bar-chart" | "delivery-truck" | "motorcycle" | "rocket" | "house" | "office-building" | "shop" | "dollar-banknote" | "glowing-star" | "kick-scooter" | "check-mark" | "check-mark-button" | "cross-mark" | "no-entry" | "sparkles" | "party-popper" | "waving-hand" | "thumbs-up" | "clapping-hands" | "handshake" | "busts-in-silhouette" | "pizza" | "hamburger" | "taco" | "birthday-cake" | null>;
8965
+ readonly emoji: _angular_core.InputSignal<"warning" | "label" | "pensive-face" | "confused-face" | "neutral-face" | "slightly-smiling-face" | "grinning-face-smiling-eyes" | "thinking-face" | "grinning-face" | "smiling-face-hearts" | "face-with-rolling-eyes" | "face-screaming" | "partying-face" | "star-struck" | "sleeping-face" | "package" | "receipt" | "money-bag" | "money-with-wings" | "shopping-cart" | "shopping-bags" | "card-index-dividers" | "bell" | "bell-with-slash" | "pushpin" | "mobile-phone" | "gear" | "locked" | "unlocked" | "wrench" | "hammer" | "magnifying-glass-tilted-left" | "spiral-calendar" | "bar-chart" | "delivery-truck" | "motorcycle" | "rocket" | "house" | "office-building" | "shop" | "dollar-banknote" | "glowing-star" | "kick-scooter" | "check-mark" | "check-mark-button" | "cross-mark" | "no-entry" | "sparkles" | "party-popper" | "waving-hand" | "thumbs-up" | "clapping-hands" | "handshake" | "busts-in-silhouette" | "pizza" | "hamburger" | "taco" | "birthday-cake" | null>;
8873
8966
  /**
8874
8967
  * URL directa al emoji para type='left-icon'. Útil cuando el consumer ya tiene
8875
8968
  * la URL (ej. FLUENT_EMOJI map del proyecto) y no quiere registrar el emoji
@@ -9126,7 +9219,7 @@ interface SuiRatingCellView {
9126
9219
  * @input readonly deshabilita clicks (display only)
9127
9220
  * @input halfStep inline + readonly: renderiza half-fill basado en value decimal
9128
9221
  * @input showValue inline: muestra "4.5" al lado de los íconos
9129
- * @input reviewCount inline: muestra "5.2K Ratings" al lado (formato corto)
9222
+ * @input reviewCount inline: muestra "5.2K calificaciones" al lado (formato corto)
9130
9223
  * @input reviewLink inline: link "18 reviews" al lado
9131
9224
  * @input alignment inline: 'inline' (only) | 'vertical' | 'horizontal'
9132
9225
  * @input emojis array de chars Unicode para type='emoji' (default 😞😕😐🙂😄)
@@ -9398,11 +9491,10 @@ declare class SuiRichEditor {
9398
9491
  * `large` y `xlarge` son extensión nuestra (12-08-2026), igual que en
9399
9492
  * `sui-input`: alturas del `sui-button` para que campo y botón se alineen.
9400
9493
  *
9401
- * OJO — crecen el TRIGGER, no la lista. Las opciones son `sui-dropdown-item`,
9402
- * un componente aparte con su propia escala (36/56/76), y el select NUNCA le
9403
- * pasó su `size`: hoy todas las opciones salen del mismo tamaño para xsmall y
9404
- * para medium. No es algo que estos dos tamaños rompan — ya era así —, pero es
9405
- * la deuda que hay que saldar el día que la lista tenga que acompañar.
9494
+ * La lista acompaña desde el 03-10-2026 (extensión SUI): las opciones son
9495
+ * `sui-dropdown-item` de 36 (Figma) hasta medium, 44 en large y 48 en xlarge,
9496
+ * y ≥ 44 en mobile (≤ 767 px) con cualquier size. Lo resuelve sui-select.scss
9497
+ * sobre los ítems del panel; el dropdown-item no se toca.
9406
9498
  */
9407
9499
  type SuiSelectSize = 'xsmall' | 'small' | 'medium' | 'large' | 'xlarge';
9408
9500
  /**
@@ -9867,9 +9959,9 @@ declare class SuiSlider implements ControlValueAccessor {
9867
9959
  private readonly _cvaValue;
9868
9960
  private readonly _useCvaValue;
9869
9961
  /** Handle siendo arrastrado: null | 'single' | 'min' | 'max'. */
9870
- readonly dragging: _angular_core.WritableSignal<"single" | "min" | "max" | null>;
9962
+ readonly dragging: _angular_core.WritableSignal<"min" | "max" | "single" | null>;
9871
9963
  /** Handle bajo hover (para tooltip): igual dominio que dragging. */
9872
- readonly hovering: _angular_core.WritableSignal<"single" | "min" | "max" | null>;
9964
+ readonly hovering: _angular_core.WritableSignal<"min" | "max" | "single" | null>;
9873
9965
  private clamp;
9874
9966
  readonly effectiveValue: _angular_core.Signal<number>;
9875
9967
  readonly effectiveMin: _angular_core.Signal<number>;
@@ -10283,6 +10375,12 @@ interface SuiStoreCardData {
10283
10375
  logoUrl?: string | null;
10284
10376
  coverUrl?: string | null;
10285
10377
  }
10378
+ /**
10379
+ * Tamaño del corazón de favorito, en la escala del sui-button. `small` (36, el
10380
+ * de siempre) es el default; `medium` (40) es extensión SUI (03-10-2026) para
10381
+ * tocarlo con el dedo en mobile.
10382
+ */
10383
+ type SuiStoreCardSize = 'small' | 'medium';
10286
10384
  interface PreviewBadge {
10287
10385
  label: string;
10288
10386
  variant: 'draft' | 'pending' | 'rejected';
@@ -10292,6 +10390,12 @@ declare class SuiStoreCard {
10292
10390
  readonly isFavorite: _angular_core.InputSignal<boolean>;
10293
10391
  /** Si true, no se navega al detalle (caso suspendido). El padre puede sobreescribir. */
10294
10392
  readonly disableLink: _angular_core.InputSignal<boolean>;
10393
+ /** Ruta base del detalle: la tarjeta navega a `[linkBase, store.id]`. El
10394
+ * default es la ruta del cliente de Master Pedidos; otra app pasa la suya. */
10395
+ readonly linkBase: _angular_core.InputSignal<string>;
10396
+ /** Corazón de favorito: `small` 36 (default) · `medium` 40 para mobile —
10397
+ * extensión SUI (03-10-2026). */
10398
+ readonly size: _angular_core.InputSignal<SuiStoreCardSize>;
10295
10399
  /**
10296
10400
  * El texto de Envío y el de Distancia, ya escritos por quien llama.
10297
10401
  *
@@ -10331,6 +10435,8 @@ declare class SuiStoreCard {
10331
10435
  logoUrl: string | null;
10332
10436
  }>;
10333
10437
  readonly link: _angular_core.Signal<string[] | null>;
10438
+ /** Glyph del corazón: 18 en small, 20 en medium. */
10439
+ readonly favIconSize: _angular_core.Signal<20 | 18>;
10334
10440
  readonly initial: _angular_core.Signal<string>;
10335
10441
  /**
10336
10442
  * El puntaje con cuántas opiniones lo sostienen: «4.67 (12)».
@@ -10361,7 +10467,7 @@ declare class SuiStoreCard {
10361
10467
  onCardClick(event: Event): void;
10362
10468
  onRatingClick(event: Event): void;
10363
10469
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SuiStoreCard, never>;
10364
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<SuiStoreCard, "sui-store-card", never, { "store": { "alias": "store"; "required": true; "isSignal": true; }; "isFavorite": { "alias": "isFavorite"; "required": false; "isSignal": true; }; "disableLink": { "alias": "disableLink"; "required": false; "isSignal": true; }; "deliveryText": { "alias": "deliveryText"; "required": false; "isSignal": true; }; "distanceText": { "alias": "distanceText"; "required": false; "isSignal": true; }; }, { "toggleFavorite": "toggleFavorite"; "ratingClicked": "ratingClicked"; }, never, never, true, never>;
10470
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SuiStoreCard, "sui-store-card", never, { "store": { "alias": "store"; "required": true; "isSignal": true; }; "isFavorite": { "alias": "isFavorite"; "required": false; "isSignal": true; }; "disableLink": { "alias": "disableLink"; "required": false; "isSignal": true; }; "linkBase": { "alias": "linkBase"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "deliveryText": { "alias": "deliveryText"; "required": false; "isSignal": true; }; "distanceText": { "alias": "distanceText"; "required": false; "isSignal": true; }; }, { "toggleFavorite": "toggleFavorite"; "ratingClicked": "ratingClicked"; }, never, never, true, never>;
10365
10471
  }
10366
10472
 
10367
10473
  /**
@@ -10431,6 +10537,12 @@ interface SuiProductCardImage {
10431
10537
  /** Encuadre vertical de la imagen (CSS object-position Y, 0–100). Default 50. */
10432
10538
  position?: number;
10433
10539
  }
10540
+ /**
10541
+ * Tamaño de los botones del pie («+», lápiz y stepper), en la escala del
10542
+ * sui-button. `small` (36, el de siempre) es el default; `medium` (40) es
10543
+ * extensión SUI (03-10-2026) para tocar con el dedo en mobile.
10544
+ */
10545
+ type SuiProductCardSize = 'small' | 'medium';
10434
10546
  /** Config del fallback sin imagen. */
10435
10547
  interface SuiProductCardFallback {
10436
10548
  /** `'name'` = banda de color + nombre (default) · `'icon'` = ícono. */
@@ -10476,6 +10588,14 @@ declare class SuiProductCard {
10476
10588
  * se ve SIEMPRE: también con `available=false` (el agotado es justo el
10477
10589
  * que el dueño quiere tocar) y sin que `closed` lo apague. Nunca stepper. */
10478
10590
  readonly action: _angular_core.InputSignal<"add" | "edit">;
10591
+ /** Precio de referencia (antes del descuento). Si es MAYOR que `price`, la
10592
+ * card muestra el precio en rojo con la chapa «-N%» al lado y este precio
10593
+ * tachado debajo. Igual o menor → se ignora. El porcentaje se calcula, no se
10594
+ * pasa: un tercer número podría quedar desincronizado de los otros dos. */
10595
+ readonly precioLista: _angular_core.InputSignal<number | null>;
10596
+ /** Tamaño de los botones del pie: `small` 36 (default) · `medium` 40 para
10597
+ * mobile — extensión SUI (03-10-2026). */
10598
+ readonly size: _angular_core.InputSignal<SuiProductCardSize>;
10479
10599
  /** Tap en la card (abrir detalle del producto). */
10480
10600
  readonly openDetail: _angular_core.OutputEmitterRef<void>;
10481
10601
  /** Tap en el botón "+" (agregar al carrito). */
@@ -10487,6 +10607,15 @@ declare class SuiProductCard {
10487
10607
  /** Tap en el lápiz (solo con `action="edit"`). */
10488
10608
  readonly edit: _angular_core.OutputEmitterRef<void>;
10489
10609
  readonly formattedPrice: _angular_core.Signal<string>;
10610
+ /** Descuento resuelto: solo si `precioLista` > `price`. */
10611
+ readonly descuento: _angular_core.Signal<{
10612
+ pct: number;
10613
+ antes: string;
10614
+ } | null>;
10615
+ /** Glyph del «+» / lápiz: 18 en small, 20 en medium. */
10616
+ readonly iconSize: _angular_core.Signal<20 | 18>;
10617
+ /** Glyph del stepper: 16 en small, 20 en medium. */
10618
+ readonly stepIconSize: _angular_core.Signal<16 | 20>;
10490
10619
  readonly showStepper: _angular_core.Signal<boolean>;
10491
10620
  /** Config resuelta de la imagen (string → { url }; `position` default 50).
10492
10621
  * null = sin imagen → fallback. */
@@ -10514,7 +10643,7 @@ declare class SuiProductCard {
10514
10643
  onDec(event: Event): void;
10515
10644
  onEdit(event: Event): void;
10516
10645
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SuiProductCard, never>;
10517
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<SuiProductCard, "sui-product-card", never, { "name": { "alias": "name"; "required": true; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "price": { "alias": "price"; "required": true; "isSignal": true; }; "image": { "alias": "image"; "required": false; "isSignal": true; }; "available": { "alias": "available"; "required": false; "isSignal": true; }; "quantity": { "alias": "quantity"; "required": false; "isSignal": true; }; "closed": { "alias": "closed"; "required": false; "isSignal": true; }; "currencySymbol": { "alias": "currencySymbol"; "required": false; "isSignal": true; }; "fallback": { "alias": "fallback"; "required": false; "isSignal": true; }; "unavailableLabel": { "alias": "unavailableLabel"; "required": false; "isSignal": true; }; "action": { "alias": "action"; "required": false; "isSignal": true; }; }, { "openDetail": "openDetail"; "add": "add"; "increment": "increment"; "decrement": "decrement"; "edit": "edit"; }, never, never, true, never>;
10646
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SuiProductCard, "sui-product-card", never, { "name": { "alias": "name"; "required": true; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "price": { "alias": "price"; "required": true; "isSignal": true; }; "image": { "alias": "image"; "required": false; "isSignal": true; }; "available": { "alias": "available"; "required": false; "isSignal": true; }; "quantity": { "alias": "quantity"; "required": false; "isSignal": true; }; "closed": { "alias": "closed"; "required": false; "isSignal": true; }; "currencySymbol": { "alias": "currencySymbol"; "required": false; "isSignal": true; }; "fallback": { "alias": "fallback"; "required": false; "isSignal": true; }; "unavailableLabel": { "alias": "unavailableLabel"; "required": false; "isSignal": true; }; "action": { "alias": "action"; "required": false; "isSignal": true; }; "precioLista": { "alias": "precioLista"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, { "openDetail": "openDetail"; "add": "add"; "increment": "increment"; "decrement": "decrement"; "edit": "edit"; }, never, never, true, never>;
10518
10647
  }
10519
10648
 
10520
10649
  /**
@@ -10648,7 +10777,7 @@ declare class SuiSwitchCard implements ControlValueAccessor {
10648
10777
  * `<sui-icon>` proyectado vía `[sui-switch-card-leading]` y se renderiza
10649
10778
  * con las MISMAS dimensiones (20×20 dentro del círculo de 40px).
10650
10779
  */
10651
- readonly emoji: _angular_core.InputSignal<"label" | "warning" | "pensive-face" | "confused-face" | "neutral-face" | "slightly-smiling-face" | "grinning-face-smiling-eyes" | "thinking-face" | "grinning-face" | "smiling-face-hearts" | "face-with-rolling-eyes" | "face-screaming" | "partying-face" | "star-struck" | "sleeping-face" | "package" | "receipt" | "money-bag" | "money-with-wings" | "shopping-cart" | "shopping-bags" | "card-index-dividers" | "bell" | "bell-with-slash" | "pushpin" | "mobile-phone" | "gear" | "locked" | "unlocked" | "wrench" | "hammer" | "magnifying-glass-tilted-left" | "spiral-calendar" | "bar-chart" | "delivery-truck" | "motorcycle" | "rocket" | "house" | "office-building" | "shop" | "dollar-banknote" | "glowing-star" | "kick-scooter" | "check-mark" | "check-mark-button" | "cross-mark" | "no-entry" | "sparkles" | "party-popper" | "waving-hand" | "thumbs-up" | "clapping-hands" | "handshake" | "busts-in-silhouette" | "pizza" | "hamburger" | "taco" | "birthday-cake" | null>;
10780
+ readonly emoji: _angular_core.InputSignal<"warning" | "label" | "pensive-face" | "confused-face" | "neutral-face" | "slightly-smiling-face" | "grinning-face-smiling-eyes" | "thinking-face" | "grinning-face" | "smiling-face-hearts" | "face-with-rolling-eyes" | "face-screaming" | "partying-face" | "star-struck" | "sleeping-face" | "package" | "receipt" | "money-bag" | "money-with-wings" | "shopping-cart" | "shopping-bags" | "card-index-dividers" | "bell" | "bell-with-slash" | "pushpin" | "mobile-phone" | "gear" | "locked" | "unlocked" | "wrench" | "hammer" | "magnifying-glass-tilted-left" | "spiral-calendar" | "bar-chart" | "delivery-truck" | "motorcycle" | "rocket" | "house" | "office-building" | "shop" | "dollar-banknote" | "glowing-star" | "kick-scooter" | "check-mark" | "check-mark-button" | "cross-mark" | "no-entry" | "sparkles" | "party-popper" | "waving-hand" | "thumbs-up" | "clapping-hands" | "handshake" | "busts-in-silhouette" | "pizza" | "hamburger" | "taco" | "birthday-cake" | null>;
10652
10781
  /**
10653
10782
  * URL de imagen para type='avatar' — se renderiza con sui-avatar size=lg
10654
10783
  * (40×40 redonda). Si la imagen falla, fallback automático a iniciales del
@@ -11195,9 +11324,9 @@ interface SuiTabMenuHorizontalItem<T = string> {
11195
11324
  * radius-full, overflow-clip, icon arrow-right-s-line 18px, SIN shadow
11196
11325
  *
11197
11326
  * PENDING VERIFY:
11198
- * - `size`: el Tab Menu Horizontal de Figma no expone eje size. El input se
11199
- * mantiene como extensión SUI (espeja el data-attr del host como hook de
11200
- * SCSS), pero hoy solo medium está 1:1 y no altera estilos.
11327
+ * - `size`: el Tab Menu Horizontal de Figma no expone eje size. Extensión SUI
11328
+ * (03-10-2026): small 40 · medium 48 (Figma) · large 52 · xlarge 56 de
11329
+ * franja tocable; large/xlarge con texto 16 (mobile).
11201
11330
  * - `disabled` por ítem es extensión SUI (Figma no muestra estado Disabled).
11202
11331
  *
11203
11332
  * Historia: hasta la v0.2.x este componente vivía como `<sui-tabs variant="line">`;
@@ -11209,9 +11338,12 @@ interface SuiTabMenuHorizontalItem<T = string> {
11209
11338
  declare class SuiTabMenuHorizontal<T = string> {
11210
11339
  readonly tabs: _angular_core.InputSignal<SuiTabMenuHorizontalItem<T>[]>;
11211
11340
  readonly active: _angular_core.ModelSignal<T | undefined>;
11212
- /** PENDING spec: hoy solo emite data-sui-size (sin reglas scss) y el set de
11213
- Figma no tiene eje size. Se conserva por compat de consumers. */
11341
+ /** Alto de la franja tocable (cada pestaña ocupa todo el alto) — extensión
11342
+ SUI (03-10-2026): small 40 · medium 48 (Figma, default) · large 52 ·
11343
+ xlarge 56. large y xlarge llevan el texto a 16 (mobile). */
11214
11344
  readonly size: _angular_core.InputSignal<SuiTabMenuHorizontalSize>;
11345
+ /** Glyph del ícono de la pestaña: 24 en xlarge, 20 en el resto. */
11346
+ readonly iconSize: _angular_core.Signal<20 | 24>;
11215
11347
  readonly tabChange: _angular_core.OutputEmitterRef<T>;
11216
11348
  isActive(tab: SuiTabMenuHorizontalItem<T>): boolean;
11217
11349
  select(tab: SuiTabMenuHorizontalItem<T>): void;
@@ -11663,6 +11795,12 @@ declare class SuiTag {
11663
11795
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<SuiTag, "sui-tag", never, { "tagStyle": { "alias": "tagStyle"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "leading": { "alias": "leading"; "required": false; "isSignal": true; }; "sublabel": { "alias": "sublabel"; "required": false; "isSignal": true; }; "dismissible": { "alias": "dismissible"; "required": false; "isSignal": true; }; "interactive": { "alias": "interactive"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "dismissLabel": { "alias": "dismissLabel"; "required": false; "isSignal": true; }; }, { "dismiss": "dismiss"; }, never, ["[data-slot=start]", "*"], true, never>;
11664
11796
  }
11665
11797
 
11798
+ /**
11799
+ * Tamaño del campo — los mismos nombres que `sui-input` para que un formulario
11800
+ * pase el mismo `size` a los dos. Cambia el padding y el radio (el alto lo
11801
+ * ponen las `rows`). Extensión SUI (03-10-2026): la guía solo dibuja el medium.
11802
+ */
11803
+ type SuiTextareaSize = 'xsmall' | 'small' | 'medium' | 'large' | 'xlarge';
11666
11804
  /**
11667
11805
  * SUI Textarea — SUI Design System 2.0
11668
11806
  *
@@ -11744,6 +11882,7 @@ declare class SuiTag {
11744
11882
  * convention, bump it then — flagged here so it isn't silently changed.
11745
11883
  *
11746
11884
  * @input rows: number — Filas iniciales del textarea (default 4)
11885
+ * @input size: SuiTextareaSize — padding/radio, mismos nombres que sui-input (default medium)
11747
11886
  * @input label: string | null — Texto del label
11748
11887
  * @input sublabel: string | null — Texto secundario del label (ej. "Optional")
11749
11888
  * @input required: boolean — Muestra asterisco rojo en el label
@@ -11760,6 +11899,12 @@ declare class SuiTag {
11760
11899
  */
11761
11900
  declare class SuiTextarea implements ControlValueAccessor {
11762
11901
  readonly rows: _angular_core.InputSignal<number>;
11902
+ /**
11903
+ * Padding y radio del campo, con los mismos nombres que `sui-input`:
11904
+ * medium (default, el de la guía) 10/12 · large 12/14 · xlarge 14/16 ·
11905
+ * small 8/10 · xsmall 6/8. Extensión SUI (03-10-2026).
11906
+ */
11907
+ readonly size: _angular_core.InputSignal<SuiTextareaSize>;
11763
11908
  readonly placeholder: _angular_core.InputSignal<string>;
11764
11909
  readonly disabled: _angular_core.InputSignal<boolean>;
11765
11910
  readonly readonly: _angular_core.InputSignal<boolean>;
@@ -11799,7 +11944,7 @@ declare class SuiTextarea implements ControlValueAccessor {
11799
11944
  registerOnTouched(fn: () => void): void;
11800
11945
  setDisabledState(isDisabled: boolean): void;
11801
11946
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SuiTextarea, never>;
11802
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<SuiTextarea, "sui-textarea", never, { "rows": { "alias": "rows"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "error": { "alias": "error"; "required": false; "isSignal": true; }; "errorMessage": { "alias": "errorMessage"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "autocomplete": { "alias": "autocomplete"; "required": false; "isSignal": true; }; "resizable": { "alias": "resizable"; "required": false; "isSignal": true; }; "maxLength": { "alias": "maxLength"; "required": false; "isSignal": true; }; "sublabel": { "alias": "sublabel"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "tooltip": { "alias": "tooltip"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
11947
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SuiTextarea, "sui-textarea", never, { "rows": { "alias": "rows"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "error": { "alias": "error"; "required": false; "isSignal": true; }; "errorMessage": { "alias": "errorMessage"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "autocomplete": { "alias": "autocomplete"; "required": false; "isSignal": true; }; "resizable": { "alias": "resizable"; "required": false; "isSignal": true; }; "maxLength": { "alias": "maxLength"; "required": false; "isSignal": true; }; "sublabel": { "alias": "sublabel"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "tooltip": { "alias": "tooltip"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
11803
11948
  }
11804
11949
 
11805
11950
  /**
@@ -12086,6 +12231,8 @@ interface ColumnItem {
12086
12231
  * @input showFooter — muestra Cancel/Apply (default true)
12087
12232
  * @model value — SuiTimeValue | null (two-way + CVA)
12088
12233
  */
12234
+ /** `large` (48) es extensión SUI (03-10-2026) para mobile. */
12235
+ type SuiTimePickerSize = 'small' | 'medium' | 'large';
12089
12236
  declare class SuiTimePicker implements ControlValueAccessor {
12090
12237
  readonly label: _angular_core.InputSignal<string | null>;
12091
12238
  readonly sublabel: _angular_core.InputSignal<string | null>;
@@ -12096,7 +12243,16 @@ declare class SuiTimePicker implements ControlValueAccessor {
12096
12243
  readonly error: _angular_core.InputSignal<boolean>;
12097
12244
  readonly placeholder: _angular_core.InputSignal<string>;
12098
12245
  readonly disabled: _angular_core.InputSignal<boolean>;
12099
- readonly size: _angular_core.InputSignal<"small" | "medium">;
12246
+ /**
12247
+ * Alto del campo: small 36 · medium 40 (default) · large 48 (extensión SUI,
12248
+ * 03-10-2026, para mobile: mismo alto que sui-input/sui-select large). En
12249
+ * large las filas del panel miden 44 y Cancelar/Aplicar van en large.
12250
+ */
12251
+ readonly size: _angular_core.InputSignal<SuiTimePickerSize>;
12252
+ /** sui-form-label no tiene large: el label queda en medium. */
12253
+ protected readonly labelSize: _angular_core.Signal<"small" | "medium">;
12254
+ /** Botones del footer: large (48) con el campo large; small (36) si no. */
12255
+ protected readonly footerButtonSize: _angular_core.Signal<"small" | "large">;
12100
12256
  /** Formato de display: '12h' (AM/PM) o '24h'. */
12101
12257
  readonly format: _angular_core.InputSignal<SuiTimeFormat>;
12102
12258
  /** Incremento de minutos de la lista (1, 5, 15, ...). Default 5. */
@@ -12804,5 +12960,5 @@ declare class SuiTooltipPanel {
12804
12960
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<SuiTooltipPanel, "sui-tooltip-panel", never, { "text": { "alias": "text"; "required": false; "isSignal": true; }; "position": { "alias": "position"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "theme": { "alias": "theme"; "required": false; "isSignal": true; }; "showArrow": { "alias": "showArrow"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "dismissible": { "alias": "dismissible"; "required": false; "isSignal": true; }; }, { "dismissed": "dismissed"; }, never, never, true, never>;
12805
12961
  }
12806
12962
 
12807
- export { DAY_LABELS_ES, DEFAULT_DURATION_PRESETS, DEFAULT_PRESETS, EMPTY_STATE_FOX_EMOJI, SUI_BRAND_LOGO_COMPANIES, SUI_CHART_LEGEND_COLORS, SUI_CHART_LEGEND_HEX, SUI_CHART_SERIES_COLORS, SUI_COLOR_DOT_COLORS, SUI_COLOR_DOT_HEX, SUI_CUSTOM_ICONS, SUI_EMOJI_MAP, SUI_EMOJI_STATIC, SUI_FLAG_NAMES, SUI_HEX_TO_COLOR, SUI_KEY_ICON_COLORS, SUI_KEY_ICON_SIZES, SUI_NAVBAR_VISIBILITY, SUI_PASSWORD_STRENGTH_DEFAULT_CONDITIONS, SUI_PASSWORD_STRENGTH_DEFAULT_LEVEL_LABELS, SUI_PAYMENT_ICON_TYPES, SUI_PRODUCT_FALLBACK_COLORS, SUI_TAB_BAR, SuiAccordion, SuiAccordionContent, SuiActivityFeed, SuiActivityFilter, SuiAlert, SuiAppStoreBadge, SuiAvatar, SuiAvatarGroup, SuiBadge, SuiBanner, SuiBrandLogo, SuiBreadcrumbItem, SuiBreadcrumbs, SuiButton, SuiButtonGroup, SuiButtonGroupItem, SuiCard, SuiChartLegend, SuiChartLegendDot, SuiCheckbox, SuiCheckboxCard, SuiCheckboxLabel, SuiCircularProgressBar, SuiColorDot, SuiColorPicker, SuiCommandMenuFooter, SuiCommandMenuItem, SuiCommandMenuSearch, SuiCompactAvatarGroup, SuiCompactButton, SuiCompactSelect, SuiCompactSelectForInput, SuiContentCard, SuiContentDivider, SuiContentLabel, SuiCounterInput, SuiDateSelector, SuiDatepicker, SuiDayCell, SuiDayLabel, SuiDivider, SuiDrawerFooter, SuiDrawerHeader, SuiDropdownCaption, SuiDropdownItem, SuiDropdownMenu, SuiDropdownPanel, SuiDropdownSearch, SuiEmoji, SuiEmptyState, SuiFancyButton, SuiFileIcon, SuiFileUpload, SuiFileUploadCard, SuiFilterBar, SuiFilterItem, SuiFilterPanelFooter, SuiFilterPanelHeader, SuiFlag, SuiFormHint, SuiFormLabel, SuiHref, SuiIcon, SuiImageUpload, SuiImageUploadProfile, SuiImgRetry, SuiInlineInput, SuiInlineSelect, SuiInput, SuiIntegrationSwitch, SuiKbd, SuiKeyIcon, SuiLinkButton, SuiLogo, SuiModal, SuiModalFooter, SuiModalHeader, SuiModalSheet, SuiNotification, SuiNotificationFooter, SuiNotificationTabMenu, SuiOtpInput, SuiPageHeader, SuiPagination, SuiPasswordStrength, SuiPaymentIcon, SuiPeriodRange, SuiPopover, SuiProductCard, SuiProgressBar, SuiProgressBarLabel, SuiRadio, SuiRadioCard, SuiRadioGroup, SuiRadioLabel, SuiRating, SuiRichEditor, SuiRichEditorItem, SuiSegmentedControl, SuiSelect, SuiSidebar, SuiSlider, SuiSocialButton, SuiStatusBadge, SuiStepper, SuiStoreCard, SuiSwitch, SuiSwitchCard, SuiSwitchLabel, SuiTabChips, SuiTabMenuHorizontal, SuiTabMenuVertical, SuiTable, SuiTableCellDirective, SuiTag, SuiTagInput, SuiTextarea, SuiTimePicker, SuiTimePickerDuration, SuiTimePickerItem, SuiTimePickerStatus, SuiToastOutlet, SuiToastService, SuiTooltip, SuiTooltipPanel, SuiTopbar, SuiTopbarButton, SuiTopbarItem, SuiTopbarUser, buildCalendarGrid, buildHourList, buildMinuteList, formatDateInput, formatDateShort, formatMonthYear, formatTime, isSameTime, normalizeHex, pad2, parseTime, to12h, to24h };
12808
- export type { CalendarCell, CalendarRow, DatepickerPreset, DatepickerPresetId, SuiAccordionFlipIcon, SuiActivityAvatarRef, SuiActivityFeedItem, SuiActivityFile, SuiActivityFilterState, SuiActivityTask, SuiActivityTaskState, SuiAlertAction, SuiAlertSize, SuiAlertStyle, SuiAlertVariant, SuiAppStoreBadgeAppearance, SuiAppStoreBadgeCompany, SuiAvatarColor, SuiAvatarConfig, SuiAvatarGroupItem, SuiAvatarSize, SuiAvatarStatus, SuiAvatarTopBadge, SuiBadgeColor, SuiBadgeConfig, SuiBadgeSize, SuiBadgeType, SuiBadgeVariant, SuiBannerStyle, SuiBannerVariant, SuiBrandLogoCompany, SuiBrandLogoSize, SuiBrandLogoStyle, SuiBreadcrumbDivider, SuiBreadcrumbEntry, SuiButtonColor, SuiButtonGroupEntry, SuiButtonGroupItemSize, SuiButtonSize, SuiButtonVariant, SuiCardSize, SuiCardVariant, SuiChartLegendColor, SuiChartLegendItem, SuiCheckboxCardType, SuiCheckboxLabelSize, SuiCheckboxSize, SuiCircularProgressBarColor, SuiCircularProgressBarSize, SuiColorDotColor, SuiColorDotSize, SuiCommandMenuItemSize, SuiCommandMenuItemType, SuiCompactAvatarGroupAppearance, SuiCompactAvatarGroupSize, SuiCompactButtonSize, SuiCompactButtonStyle, SuiCompactSelectForInputItem, SuiCompactSelectForInputSize, SuiCompactSelectItem, SuiCompactSelectSize, SuiCompactSelectType, SuiContentCardType, SuiContentDividerItem, SuiContentDividerType, SuiContentLabelBadgePlacement, SuiContentLabelSize, SuiContentLabelType, SuiCounterInputSize, SuiDateRange, SuiDatepickerCalendars, SuiDatepickerMode, SuiDayCellType, SuiDividerOrientation, SuiDrawerFooterType, SuiDrawerHeaderSize, SuiDrawerHeaderType, SuiDropdownItemMode, SuiDropdownItemSize, SuiDropdownMenuPopupRole, SuiDropdownMenuPosition, SuiEmojiName, SuiEmojiSize, SuiEmptyStateAction, SuiFancyButtonSize, SuiFancyButtonType, SuiFileIconColor, SuiFileIconSize, SuiFileUploadCardFile, SuiFileUploadCardState, SuiFileUploadSize, SuiFilterItemState, SuiFlagName, SuiFlagSize, SuiFooterButtonConfig, SuiFormHintVariant, SuiFormLabelSize, SuiImageUploadProfileAlignment, SuiImageUploadProfileLabels, SuiImageUploadProfileType, SuiImageUploadShape, SuiImageUploadSize, SuiInlineSelectItem, SuiInlineSelectType, SuiInputEnterKeyHint, SuiInputMode, SuiInputSize, SuiInputType, SuiIntegrationManageConfig, SuiIntegrationSwitchAppearance, SuiIntegrationSwitchType, SuiKbdVariant, SuiKeyIconColor, SuiKeyIconSize, SuiKeyIconStyle, SuiLinkButtonSize, SuiLinkButtonVariant, SuiLinkConfig, SuiLogoOrientation, SuiLogoSize, SuiModalHeaderVariant, SuiModalIconVariant, SuiModalSize, SuiModalStatusAlignment, SuiNavbarVisibility, SuiNotificationStyle, SuiNotificationTab, SuiNotificationVariant, SuiOtpInputType, SuiPaginationInfoFormat, SuiPaginationSize, SuiPaginationType, SuiPasswordStrengthCondition, SuiPasswordStrengthLevel, SuiPaymentIconSize, SuiPaymentIconType, SuiPopoverFooter, SuiPopoverPosition, SuiProductCardFallback, SuiProductCardImage, SuiProgressBarColor, SuiProgressBarLabelType, SuiProgressBarSize, SuiRadioCardType, SuiRadioLabelSize, SuiRadioSize, SuiRadioValue, SuiRatingAlignment, SuiRatingAppearance, SuiRatingReviewLink, SuiRatingSize, SuiRatingType, SuiRichEditorAction, SuiRichEditorCommand, SuiRichEditorItemState, SuiRichEditorItemType, SuiRichEditorLayout, SuiSegmentedControlItem, SuiSegmentedControlSize, SuiSelectOption, SuiSelectSize, SuiSelectType, SuiSidebarBrandConfig, SuiSidebarIndicatorColor, SuiSidebarItem, SuiSidebarMobileMode, SuiSidebarProfile, SuiSidebarSearchConfig, SuiSliderSize, SuiSliderType, SuiSocialButtonBrand, SuiSocialButtonStyle, SuiStatusBadgeAppearance, SuiStatusBadgeSize, SuiStatusBadgeStatus, SuiStepperItem, SuiStepperSize, SuiStepperState, SuiStepperVariant, SuiStoreCardData, SuiSwitchCardType, SuiSwitchSize, SuiTabBar, SuiTabChipItem, SuiTabChipsSize, SuiTabMenuHorizontalItem, SuiTabMenuHorizontalSize, SuiTabMenuVerticalItem, SuiTabMenuVerticalStyle, SuiTableCellMisc, SuiTableCellPriority, SuiTableColumn, SuiTableSize, SuiTagInputSize, SuiTagSize, SuiTagStyle, SuiTimeDurationPreset, SuiTimeFormat, SuiTimePeriod, SuiTimePickerItemDirection, SuiTimePickerStatusType, SuiTimeValue, SuiToastAction, SuiToastData, SuiToastItem, SuiToastPosition, SuiToastStyle, SuiToastVariant, SuiTooltipLargeData, SuiTooltipPosition, SuiTooltipSize, SuiTooltipTheme, SuiTooltipThemeInput, SuiTopbarAccent, SuiTopbarAction, SuiTopbarEntry, SuiTopbarSearchConfig, SuiTopbarUserConfig };
12963
+ export { DAY_LABELS_ES, DEFAULT_DURATION_PRESETS, DEFAULT_PRESETS, EMPTY_STATE_FOX_EMOJI, SUI_BRAND_LOGO_COMPANIES, SUI_CHART_LEGEND_COLORS, SUI_CHART_LEGEND_HEX, SUI_CHART_SERIES_COLORS, SUI_COLOR_DOT_COLORS, SUI_COLOR_DOT_HEX, SUI_CUSTOM_ICONS, SUI_EMOJI_MAP, SUI_EMOJI_STATIC, SUI_FLAG_NAMES, SUI_HEX_TO_COLOR, SUI_IMAGE_UPLOAD_ACCEPT, SUI_KEY_ICON_COLORS, SUI_KEY_ICON_SIZES, SUI_NAVBAR_VISIBILITY, SUI_PASSWORD_STRENGTH_DEFAULT_CONDITIONS, SUI_PASSWORD_STRENGTH_DEFAULT_LEVEL_LABELS, SUI_PAYMENT_ICON_TYPES, SUI_PRODUCT_FALLBACK_COLORS, SUI_TAB_BAR, SuiAccordion, SuiAccordionContent, SuiActivityFeed, SuiActivityFilter, SuiAlert, SuiAppStoreBadge, SuiAvatar, SuiAvatarGroup, SuiBadge, SuiBanner, SuiBrandLogo, SuiBreadcrumbItem, SuiBreadcrumbs, SuiButton, SuiButtonGroup, SuiButtonGroupItem, SuiCard, SuiChartLegend, SuiChartLegendDot, SuiCheckbox, SuiCheckboxCard, SuiCheckboxLabel, SuiCircularProgressBar, SuiColorDot, SuiColorPicker, SuiCommandMenuFooter, SuiCommandMenuItem, SuiCommandMenuSearch, SuiCompactAvatarGroup, SuiCompactButton, SuiCompactSelect, SuiCompactSelectForInput, SuiContentCard, SuiContentDivider, SuiContentLabel, SuiCounterInput, SuiDateSelector, SuiDatepicker, SuiDayCell, SuiDayLabel, SuiDivider, SuiDrawerFooter, SuiDrawerHeader, SuiDropdownCaption, SuiDropdownItem, SuiDropdownMenu, SuiDropdownPanel, SuiDropdownSearch, SuiEmoji, SuiEmptyState, SuiFancyButton, SuiFileIcon, SuiFileUpload, SuiFileUploadCard, SuiFilterBar, SuiFilterItem, SuiFilterPanelFooter, SuiFilterPanelHeader, SuiFlag, SuiFormHint, SuiFormLabel, SuiHref, SuiIcon, SuiImageUpload, SuiImageUploadProfile, SuiImgRetry, SuiInlineInput, SuiInlineSelect, SuiInput, SuiIntegrationSwitch, SuiKbd, SuiKeyIcon, SuiLinkButton, SuiLogo, SuiModal, SuiModalFooter, SuiModalHeader, SuiModalSheet, SuiNotification, SuiNotificationFooter, SuiNotificationTabMenu, SuiOtpInput, SuiPageHeader, SuiPagination, SuiPasswordStrength, SuiPaymentIcon, SuiPeriodRange, SuiPopover, SuiProductCard, SuiProgressBar, SuiProgressBarLabel, SuiRadio, SuiRadioCard, SuiRadioGroup, SuiRadioLabel, SuiRating, SuiRichEditor, SuiRichEditorItem, SuiSegmentedControl, SuiSelect, SuiSidebar, SuiSlider, SuiSocialButton, SuiStatusBadge, SuiStepper, SuiStoreCard, SuiSwitch, SuiSwitchCard, SuiSwitchLabel, SuiTabChips, SuiTabMenuHorizontal, SuiTabMenuVertical, SuiTable, SuiTableCellDirective, SuiTag, SuiTagInput, SuiTextarea, SuiTimePicker, SuiTimePickerDuration, SuiTimePickerItem, SuiTimePickerStatus, SuiToastOutlet, SuiToastService, SuiTooltip, SuiTooltipPanel, SuiTopbar, SuiTopbarButton, SuiTopbarItem, SuiTopbarUser, buildCalendarGrid, buildHourList, buildMinuteList, esImagenAceptada, formatDateInput, formatDateShort, formatMonthYear, formatTime, isSameTime, normalizeHex, pad2, parseTime, to12h, to24h };
12964
+ export type { CalendarCell, CalendarRow, DatepickerPreset, DatepickerPresetId, SuiAccordionFlipIcon, SuiActivityAvatarRef, SuiActivityFeedItem, SuiActivityFile, SuiActivityFilterState, SuiActivityTask, SuiActivityTaskState, SuiAlertAction, SuiAlertSize, SuiAlertStyle, SuiAlertVariant, SuiAppStoreBadgeAppearance, SuiAppStoreBadgeCompany, SuiAvatarColor, SuiAvatarConfig, SuiAvatarGroupItem, SuiAvatarSize, SuiAvatarStatus, SuiAvatarTopBadge, SuiBadgeColor, SuiBadgeConfig, SuiBadgeSize, SuiBadgeType, SuiBadgeVariant, SuiBannerStyle, SuiBannerVariant, SuiBrandLogoCompany, SuiBrandLogoSize, SuiBrandLogoStyle, SuiBreadcrumbDivider, SuiBreadcrumbEntry, SuiButtonColor, SuiButtonGroupEntry, SuiButtonGroupItemSize, SuiButtonSize, SuiButtonVariant, SuiCardSize, SuiCardVariant, SuiChartLegendColor, SuiChartLegendItem, SuiCheckboxCardType, SuiCheckboxLabelSize, SuiCheckboxSize, SuiCircularProgressBarColor, SuiCircularProgressBarSize, SuiColorDotColor, SuiColorDotSize, SuiCommandMenuItemSize, SuiCommandMenuItemType, SuiCompactAvatarGroupAppearance, SuiCompactAvatarGroupSize, SuiCompactButtonSize, SuiCompactButtonStyle, SuiCompactSelectForInputItem, SuiCompactSelectForInputSize, SuiCompactSelectItem, SuiCompactSelectSize, SuiCompactSelectType, SuiContentCardSize, SuiContentCardType, SuiContentDividerItem, SuiContentDividerType, SuiContentLabelBadgePlacement, SuiContentLabelSize, SuiContentLabelType, SuiCounterInputSize, SuiDateRange, SuiDatepickerCalendars, SuiDatepickerMode, SuiDatepickerSize, SuiDayCellType, SuiDividerOrientation, SuiDrawerFooterType, SuiDrawerHeaderSize, SuiDrawerHeaderType, SuiDropdownItemMode, SuiDropdownItemSize, SuiDropdownMenuPopupRole, SuiDropdownMenuPosition, SuiEmojiName, SuiEmojiSize, SuiEmptyStateAction, SuiEmptyStateSize, SuiFancyButtonSize, SuiFancyButtonType, SuiFileIconColor, SuiFileIconSize, SuiFileUploadCardFile, SuiFileUploadCardState, SuiFileUploadSize, SuiFilterItemState, SuiFlagName, SuiFlagSize, SuiFooterButtonConfig, SuiFormHintVariant, SuiFormLabelSize, SuiImageUploadProfileAlignment, SuiImageUploadProfileLabels, SuiImageUploadProfileType, SuiImageUploadShape, SuiImageUploadSize, SuiInlineSelectItem, SuiInlineSelectType, SuiInputEnterKeyHint, SuiInputMode, SuiInputSize, SuiInputType, SuiIntegrationManageConfig, SuiIntegrationSwitchAppearance, SuiIntegrationSwitchType, SuiKbdVariant, SuiKeyIconColor, SuiKeyIconSize, SuiKeyIconStyle, SuiLinkButtonSize, SuiLinkButtonVariant, SuiLinkConfig, SuiLogoOrientation, SuiLogoSize, SuiModalHeaderVariant, SuiModalIconVariant, SuiModalSize, SuiModalStatusAlignment, SuiNavbarVisibility, SuiNotificationStyle, SuiNotificationTab, SuiNotificationVariant, SuiOtpInputSize, SuiOtpInputType, SuiPaginationInfoFormat, SuiPaginationSize, SuiPaginationType, SuiPasswordStrengthCondition, SuiPasswordStrengthLevel, SuiPaymentIconSize, SuiPaymentIconType, SuiPopoverFooter, SuiPopoverPosition, SuiPopoverSize, SuiProductCardFallback, SuiProductCardImage, SuiProductCardSize, SuiProgressBarColor, SuiProgressBarLabelType, SuiProgressBarSize, SuiRadioCardType, SuiRadioLabelSize, SuiRadioSize, SuiRadioValue, SuiRatingAlignment, SuiRatingAppearance, SuiRatingReviewLink, SuiRatingSize, SuiRatingType, SuiRichEditorAction, SuiRichEditorCommand, SuiRichEditorItemState, SuiRichEditorItemType, SuiRichEditorLayout, SuiSegmentedControlItem, SuiSegmentedControlSize, SuiSelectOption, SuiSelectSize, SuiSelectType, SuiSidebarBrandConfig, SuiSidebarIndicatorColor, SuiSidebarItem, SuiSidebarMobileMode, SuiSidebarProfile, SuiSidebarSearchConfig, SuiSliderSize, SuiSliderType, SuiSocialButtonBrand, SuiSocialButtonStyle, SuiStatusBadgeAppearance, SuiStatusBadgeSize, SuiStatusBadgeStatus, SuiStepperItem, SuiStepperSize, SuiStepperState, SuiStepperVariant, SuiStoreCardData, SuiStoreCardSize, SuiSwitchCardType, SuiSwitchSize, SuiTabBar, SuiTabChipItem, SuiTabChipsSize, SuiTabMenuHorizontalItem, SuiTabMenuHorizontalSize, SuiTabMenuVerticalItem, SuiTabMenuVerticalStyle, SuiTableCellMisc, SuiTableCellPriority, SuiTableColumn, SuiTableSize, SuiTagInputSize, SuiTagSize, SuiTagStyle, SuiTextareaSize, SuiTimeDurationPreset, SuiTimeFormat, SuiTimePeriod, SuiTimePickerItemDirection, SuiTimePickerSize, SuiTimePickerStatusType, SuiTimeValue, SuiToastAction, SuiToastData, SuiToastItem, SuiToastPosition, SuiToastStyle, SuiToastVariant, SuiTooltipLargeData, SuiTooltipPosition, SuiTooltipSize, SuiTooltipTheme, SuiTooltipThemeInput, SuiTopbarAccent, SuiTopbarAction, SuiTopbarEntry, SuiTopbarSearchConfig, SuiTopbarUserConfig };