@ajuarezso/sui-design-system 0.19.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 (97) hide show
  1. package/docs/INDEX.md +136 -0
  2. package/docs/sui-alert/README.md +229 -0
  3. package/docs/sui-app-store-badge/README.md +137 -0
  4. package/docs/sui-avatar/README.md +263 -0
  5. package/docs/sui-avatar-group/README.md +115 -0
  6. package/docs/sui-badge/README.md +229 -0
  7. package/docs/sui-banner/README.md +190 -0
  8. package/docs/sui-brand-logo/README.md +143 -0
  9. package/docs/sui-breadcrumb-item/README.md +96 -0
  10. package/docs/sui-breadcrumbs/README.md +122 -0
  11. package/docs/sui-button/README.md +209 -0
  12. package/docs/sui-button-group/README.md +178 -0
  13. package/docs/sui-button-group-item/README.md +102 -0
  14. package/docs/sui-card/README.md +168 -0
  15. package/docs/sui-chart-legend/README.md +140 -0
  16. package/docs/sui-chart-legend-dot/README.md +118 -0
  17. package/docs/sui-checkbox/README.md +147 -0
  18. package/docs/sui-checkbox-card/README.md +150 -0
  19. package/docs/sui-checkbox-label/README.md +143 -0
  20. package/docs/sui-circular-progress-bar/README.md +131 -0
  21. package/docs/sui-color-dot/README.md +112 -0
  22. package/docs/sui-color-picker/README.md +124 -0
  23. package/docs/sui-compact-avatar-group/README.md +103 -0
  24. package/docs/sui-compact-button/README.md +190 -0
  25. package/docs/sui-compact-select/README.md +127 -0
  26. package/docs/sui-compact-select-for-input/README.md +117 -0
  27. package/docs/sui-content-card/README.md +147 -0
  28. package/docs/sui-content-divider/README.md +124 -0
  29. package/docs/sui-content-label/README.md +148 -0
  30. package/docs/sui-counter-input/README.md +145 -0
  31. package/docs/sui-date-selector/README.md +98 -0
  32. package/docs/sui-datepicker/README.md +193 -0
  33. package/docs/sui-day-cell/README.md +118 -0
  34. package/docs/sui-day-label/README.md +81 -0
  35. package/docs/sui-divider/README.md +102 -0
  36. package/docs/sui-drawer-footer/README.md +127 -0
  37. package/docs/sui-drawer-header/README.md +140 -0
  38. package/docs/sui-emoji/README.md +138 -0
  39. package/docs/sui-empty-state/README.md +145 -0
  40. package/docs/sui-fancy-button/README.md +148 -0
  41. package/docs/sui-file-icon/README.md +103 -0
  42. package/docs/sui-file-upload/README.md +154 -0
  43. package/docs/sui-file-upload-card/README.md +129 -0
  44. package/docs/sui-flag/README.md +99 -0
  45. package/docs/sui-form-hint/README.md +124 -0
  46. package/docs/sui-form-label/README.md +148 -0
  47. package/docs/sui-icon/README.md +135 -0
  48. package/docs/sui-image-upload/README.md +200 -0
  49. package/docs/sui-image-upload-profile/README.md +145 -0
  50. package/docs/sui-inline-input/README.md +104 -0
  51. package/docs/sui-inline-select/README.md +101 -0
  52. package/docs/sui-input/README.md +244 -0
  53. package/docs/sui-integration-switch/README.md +142 -0
  54. package/docs/sui-kbd/README.md +97 -0
  55. package/docs/sui-key-icon/README.md +125 -0
  56. package/docs/sui-link-button/README.md +221 -0
  57. package/docs/sui-logo/README.md +152 -0
  58. package/docs/sui-notification/README.md +179 -0
  59. package/docs/sui-notification-footer/README.md +98 -0
  60. package/docs/sui-notification-tab-menu/README.md +112 -0
  61. package/docs/sui-otp-input/README.md +116 -0
  62. package/docs/sui-pagination/README.md +146 -0
  63. package/docs/sui-password-strength/README.md +99 -0
  64. package/docs/sui-payment-icon/README.md +98 -0
  65. package/docs/sui-period-range/README.md +93 -0
  66. package/docs/sui-popover/README.md +178 -0
  67. package/docs/sui-product-card/README.md +173 -0
  68. package/docs/sui-progress-bar/README.md +132 -0
  69. package/docs/sui-progress-bar-label/README.md +143 -0
  70. package/docs/sui-radio/README.md +134 -0
  71. package/docs/sui-radio-card/README.md +160 -0
  72. package/docs/sui-radio-label/README.md +137 -0
  73. package/docs/sui-rating/README.md +199 -0
  74. package/docs/sui-rich-editor/README.md +114 -0
  75. package/docs/sui-segmented-control/README.md +144 -0
  76. package/docs/sui-select/README.md +180 -0
  77. package/docs/sui-slider/README.md +143 -0
  78. package/docs/sui-social-button/README.md +158 -0
  79. package/docs/sui-status-badge/README.md +164 -0
  80. package/docs/sui-stepper/README.md +166 -0
  81. package/docs/sui-store-card/README.md +147 -0
  82. package/docs/sui-switch/README.md +146 -0
  83. package/docs/sui-switch-card/README.md +149 -0
  84. package/docs/sui-switch-label/README.md +139 -0
  85. package/docs/sui-tab-chips/README.md +185 -0
  86. package/docs/sui-tab-menu-horizontal/README.md +142 -0
  87. package/docs/sui-tab-menu-vertical/README.md +136 -0
  88. package/docs/sui-tag/README.md +145 -0
  89. package/docs/sui-tag-input/README.md +120 -0
  90. package/docs/sui-textarea/README.md +157 -0
  91. package/docs/sui-time-picker/README.md +237 -0
  92. package/docs/sui-toast/README.md +190 -0
  93. package/docs/sui-tooltip/README.md +201 -0
  94. package/fesm2022/ajuarezso-sui-design-system.mjs +466 -279
  95. package/fesm2022/ajuarezso-sui-design-system.mjs.map +1 -1
  96. package/package.json +1 -1
  97. package/types/ajuarezso-sui-design-system.d.ts +367 -72
@@ -25,7 +25,7 @@ declare const SUI_TAB_BAR: InjectionToken<SuiTabBar>;
25
25
 
26
26
  type SuiBadgeColor = 'gray' | 'blue' | 'orange' | 'red' | 'green' | 'yellow' | 'purple' | 'sky' | 'pink' | 'teal';
27
27
  type SuiBadgeVariant = 'filled' | 'light' | 'lighter' | 'stroke' | 'dark';
28
- type SuiBadgeSize = 'small' | 'medium';
28
+ type SuiBadgeSize = 'small' | 'medium' | 'large' | 'xlarge';
29
29
  type SuiBadgeType = 'basic' | 'with-dot' | 'left-icon' | 'right-icon' | 'number';
30
30
  /**
31
31
  * Config de badge embebido en otros componentes (checkbox-label, switch-label,
@@ -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"`.
@@ -1531,7 +1531,7 @@ declare class SuiBreadcrumbs {
1531
1531
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<SuiBreadcrumbs, "sui-breadcrumbs", never, { "items": { "alias": "items"; "required": true; "isSignal": true; }; "divider": { "alias": "divider"; "required": false; "isSignal": true; }; }, { "navigate": "navigate"; }, never, never, true, never>;
1532
1532
  }
1533
1533
 
1534
- type SuiButtonGroupItemSize = 'small' | 'xsmall' | '2xsmall';
1534
+ type SuiButtonGroupItemSize = 'small' | 'xsmall' | '2xsmall' | 'medium' | 'large';
1535
1535
  /**
1536
1536
  * SUI Button Group Item — SUI Design System 2.0
1537
1537
  *
@@ -1562,6 +1562,11 @@ type SuiButtonGroupItemSize = 'small' | 'xsmall' | '2xsmall';
1562
1562
  * · both-icons (226:5344): p4 (cuadrado), gap 4
1563
1563
  * · only-icon (226:5348): p4 → 24×24, sin gap
1564
1564
  *
1565
+ * Extensión SUI (03-10-2026, pedido del dueño) — tamaños para mobile, fuera
1566
+ * del Figma, con la escala de `sui-button`:
1567
+ * large (48) — Label/Medium (16/24), icon 20px: px20 py11 · icono px18 · p11 → 48², gap 8 (py −1 del borde)
1568
+ * medium (40) — Label/Small (14/20), icon 20px: px18 py9 · icono px16 · p9 → 40², gap 8 (py −1 del borde)
1569
+ *
1565
1570
  * States × visual:
1566
1571
  * Default: bg-white-0 + border stroke-soft-200 + text-sub-600
1567
1572
  * Hover: bg-weak-50 + border stroke-soft-200 + text-sub-600
@@ -1587,7 +1592,7 @@ declare class SuiButtonGroupItem {
1587
1592
  /** aria-label para icon-only buttons */
1588
1593
  readonly ariaLabel: _angular_core.InputSignal<string>;
1589
1594
  /** Estado del data-attribute para CSS scoping */
1590
- readonly state: _angular_core.Signal<"default" | "active" | "disabled">;
1595
+ readonly state: _angular_core.Signal<"default" | "disabled" | "active">;
1591
1596
  /** True cuando solo tiene icon (left o right) sin label */
1592
1597
  readonly onlyIcon: _angular_core.Signal<boolean>;
1593
1598
  /**
@@ -1599,7 +1604,9 @@ declare class SuiButtonGroupItem {
1599
1604
  * - 'only' → icon-only: padding cuadrado (p) → square box
1600
1605
  */
1601
1606
  readonly iconLayout: _angular_core.Signal<"none" | "left" | "right" | "both" | "only">;
1602
- /** Tamaño del icono en px según size del item (small/xsmall=20, 2xsmall=16) */
1607
+ /** Tamaño del icono en px según size del item (large/medium/small/xsmall=20, 2xsmall=16).
1608
+ * En large y medium el ícono se queda en 20, igual que `sui-button`: el ícono
1609
+ * que acompaña texto no escala. */
1603
1610
  readonly iconSize: _angular_core.Signal<number>;
1604
1611
  readonly clicked: _angular_core.OutputEmitterRef<void>;
1605
1612
  protected onClick(): void;
@@ -1634,6 +1641,8 @@ interface SuiButtonGroupEntry {
1634
1641
  * - Group container: bg-white-0, border 1px stroke-soft-200, rounded:
1635
1642
  * · small / xsmall → radius-8 (8px)
1636
1643
  * · 2xsmall → radius-6 (6px)
1644
+ * - Extensión SUI (03-10-2026): medium (40, radius-10) y large (48, radius-12)
1645
+ * para tocar con el dedo en mobile; fuera del Figma, escala de sui-button.
1637
1646
  * - overflow: clip (corta los bordes externos de items en las esquinas)
1638
1647
  *
1639
1648
  * Behavior:
@@ -1803,7 +1812,10 @@ type SuiCardSize = 'small' | 'medium' | 'large' | 'xlarge';
1803
1812
  * al gap visual (queda pegado al body o al footer según haya footer o no).
1804
1813
  *
1805
1814
  * Interactive cards:
1806
- * - [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>.
1807
1819
  * Apply only on cards that act as a single action surface (e.g., a tile that
1808
1820
  * navigates). For cards with multiple inner CTAs, leave non-interactive.
1809
1821
  *
@@ -1814,6 +1826,15 @@ declare class SuiCard {
1814
1826
  readonly variant: _angular_core.InputSignal<SuiCardVariant>;
1815
1827
  readonly size: _angular_core.InputSignal<SuiCardSize>;
1816
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;
1817
1838
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SuiCard, never>;
1818
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>;
1819
1840
  }
@@ -2143,7 +2164,7 @@ declare class SuiCheckboxCard implements ControlValueAccessor {
2143
2164
  /** RemixIcon name (sin prefijo "ri-") para type='left-icon'. */
2144
2165
  readonly icon: _angular_core.InputSignal<string | null>;
2145
2166
  /** Emoji del catálogo SUI_EMOJI_MAP — alternativa a icon para type='left-icon'. */
2146
- 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>;
2147
2168
  /** URL directa al emoji para type='left-icon'. Precedencia: icon > emoji > iconSrc. */
2148
2169
  readonly iconSrc: _angular_core.InputSignal<string | null>;
2149
2170
  /** URL de imagen para type='avatar'. Si falla, fallback a iniciales del label. */
@@ -2194,7 +2215,8 @@ interface SuiLinkConfig {
2194
2215
  target?: string;
2195
2216
  rel?: string;
2196
2217
  }
2197
- type SuiLinkButtonSize = 'medium' | 'small';
2218
+ /** `large` (texto 16) es extensión SUI (03-10-2026) para mobile; Figma trae medium y small. */
2219
+ type SuiLinkButtonSize = 'large' | 'medium' | 'small';
2198
2220
  /**
2199
2221
  * SUI Link Button — SUI Design System 2.0
2200
2222
  *
@@ -2206,6 +2228,11 @@ type SuiLinkButtonSize = 'medium' | 'small';
2206
2228
  * Container flex / inline-flex, gap=4px, items=center
2207
2229
  * Medium size text 14/20/-0.6%, icons 20×20
2208
2230
  * Small size text 12/16/0, icons 16×16
2231
+ * Large size text 16/24/-1.1%, icons 20×20 — extensión SUI
2232
+ * (03-10-2026, pedido del dueño): en mobile el link se
2233
+ * lee y se toca con el dedo. Ícono 20 como el sui-button
2234
+ * large (texto 16 + ícono 20), no 24: con 24 el chevron
2235
+ * pesa más que el texto.
2209
2236
  * Font features 'ss11' 1, 'calt' 0, 'liga' 0
2210
2237
  * Underline (hover / focus / underline=on): línea continua SOLO
2211
2238
  * bajo el texto (los iconos chevron NO van subrayados —
@@ -2268,6 +2295,7 @@ declare class SuiLinkButton {
2268
2295
  readonly type: _angular_core.InputSignal<"button" | "submit" | "reset">;
2269
2296
  readonly ariaLabel: _angular_core.InputSignal<string | null>;
2270
2297
  readonly clicked: _angular_core.OutputEmitterRef<MouseEvent>;
2298
+ /** Px de los íconos por tamaño: large 20 · medium 20 · small 16. */
2271
2299
  readonly iconSize: _angular_core.Signal<number>;
2272
2300
  readonly isAnchor: _angular_core.Signal<boolean>;
2273
2301
  onClick(event: MouseEvent): void;
@@ -2275,6 +2303,12 @@ declare class SuiLinkButton {
2275
2303
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<SuiLinkButton, "sui-link-button", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "underline": { "alias": "underline"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "leftIcon": { "alias": "leftIcon"; "required": false; "isSignal": true; }; "rightIcon": { "alias": "rightIcon"; "required": false; "isSignal": true; }; "href": { "alias": "href"; "required": false; "isSignal": true; }; "target": { "alias": "target"; "required": false; "isSignal": true; }; "rel": { "alias": "rel"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, { "clicked": "clicked"; }, never, ["*"], true, never>;
2276
2304
  }
2277
2305
 
2306
+ /**
2307
+ * Tamaño del checkbox-label. `medium` es el de Figma (control 20, label 14/20);
2308
+ * `large` y `xlarge` son extensión SUI (03-10-2026, pedido del dueño) para mobile:
2309
+ * le pasan el tamaño al sui-checkbox interno (24 / 28) y suben la tipografía.
2310
+ */
2311
+ type SuiCheckboxLabelSize = 'medium' | 'large' | 'xlarge';
2278
2312
  /**
2279
2313
  * SUI Checkbox Label — SUI Design System 2.0
2280
2314
  *
@@ -2359,6 +2393,18 @@ declare class SuiCheckboxLabel implements ControlValueAccessor {
2359
2393
  readonly link: _angular_core.InputSignal<string | SuiLinkConfig | null>;
2360
2394
  /** Config resuelta del link (string → { label }, rel automático). */
2361
2395
  protected readonly linkCfg: _angular_core.Signal<SuiLinkConfig | null>;
2396
+ /**
2397
+ * Tamaño. `medium` (default, Figma): control 20, label 14/20.
2398
+ * Extensión SUI (03-10-2026) para tocar en mobile:
2399
+ * - `large`: control 24, label 16/24, sublabel y descripción 14/20, badge medium.
2400
+ * - `xlarge`: control 28, label 16/24, sublabel y descripción 14/20, badge large.
2401
+ * El badge toma este default solo si su config no trae `size`.
2402
+ */
2403
+ readonly size: _angular_core.InputSignal<SuiCheckboxLabelSize>;
2404
+ /** Badge por default según el tamaño (si la config no fija uno). */
2405
+ protected readonly badgeSize: _angular_core.Signal<SuiBadgeSize>;
2406
+ /** El link-button tiene dos tamaños: small (12/16) en Figma, medium (14/20) en mobile. */
2407
+ protected readonly linkSize: _angular_core.Signal<SuiLinkButtonSize>;
2362
2408
  /** Si true, invierte orden: [content] [checkbox] (label a la izquierda). */
2363
2409
  readonly flip: _angular_core.InputSignal<boolean>;
2364
2410
  /** Deshabilita el checkbox + wrapper. */
@@ -2385,7 +2431,7 @@ declare class SuiCheckboxLabel implements ControlValueAccessor {
2385
2431
  registerOnTouched(fn: () => void): void;
2386
2432
  setDisabledState(isDisabled: boolean): void;
2387
2433
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SuiCheckboxLabel, never>;
2388
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<SuiCheckboxLabel, "sui-checkbox-label", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "sublabel": { "alias": "sublabel"; "required": false; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "badge": { "alias": "badge"; "required": false; "isSignal": true; }; "link": { "alias": "link"; "required": false; "isSignal": true; }; "flip": { "alias": "flip"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "indeterminate": { "alias": "indeterminate"; "required": false; "isSignal": true; }; "active": { "alias": "active"; "required": false; "isSignal": true; }; }, { "active": "activeChange"; "linkClick": "linkClick"; }, never, never, true, never>;
2434
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SuiCheckboxLabel, "sui-checkbox-label", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "sublabel": { "alias": "sublabel"; "required": false; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "badge": { "alias": "badge"; "required": false; "isSignal": true; }; "link": { "alias": "link"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "flip": { "alias": "flip"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "indeterminate": { "alias": "indeterminate"; "required": false; "isSignal": true; }; "active": { "alias": "active"; "required": false; "isSignal": true; }; }, { "active": "activeChange"; "linkClick": "linkClick"; }, never, never, true, never>;
2389
2435
  }
2390
2436
 
2391
2437
  type SuiCircularProgressBarColor = 'blue' | 'green' | 'orange' | 'red' | 'purple';
@@ -2501,6 +2547,11 @@ declare class SuiCircularProgressBar {
2501
2547
  }
2502
2548
 
2503
2549
  type SuiColorDotColor = 'gray' | 'blue' | 'orange' | 'red' | 'green' | 'yellow' | 'purple' | 'sky' | 'pink' | 'teal';
2550
+ /**
2551
+ * Tamaño del dot. `medium` es el de Figma (24). `large` (32) es extensión SUI
2552
+ * (03-10-2026, pedido del dueño) para tocar con el dedo en mobile.
2553
+ */
2554
+ type SuiColorDotSize = 'medium' | 'large';
2504
2555
  /**
2505
2556
  * Set canon de 10 colores SUI 2.0 — usable como referencia desde el consumer.
2506
2557
  * Útil para iterar en pickers, badges, tag selectors.
@@ -2584,7 +2635,12 @@ declare class SuiColorDot {
2584
2635
  * - `selected` → dot 12×12 + ring 2px.
2585
2636
  * - `disabled` → dot gris pálido, sin pointer events.
2586
2637
  */
2587
- readonly state: _angular_core.InputSignal<"default" | "disabled" | "hover" | "selected">;
2638
+ readonly state: _angular_core.InputSignal<"default" | "disabled" | "selected" | "hover">;
2639
+ /**
2640
+ * Tamaño. `medium` (default, Figma 24): dot 16 / hover 14 / selected 12 + anillo 18.
2641
+ * `large` (32, extensión SUI para mobile): dot 22 / hover 18 / selected 16 + anillo 24.
2642
+ */
2643
+ readonly size: _angular_core.InputSignal<SuiColorDotSize>;
2588
2644
  /** aria-label override. */
2589
2645
  readonly ariaLabel: _angular_core.InputSignal<string>;
2590
2646
  readonly clicked: _angular_core.OutputEmitterRef<void>;
@@ -2592,7 +2648,7 @@ declare class SuiColorDot {
2592
2648
  readonly defaultAriaLabel: _angular_core.Signal<string>;
2593
2649
  protected onClick(): void;
2594
2650
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SuiColorDot, never>;
2595
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<SuiColorDot, "sui-color-dot", never, { "color": { "alias": "color"; "required": false; "isSignal": true; }; "customHex": { "alias": "customHex"; "required": false; "isSignal": true; }; "state": { "alias": "state"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, { "clicked": "clicked"; }, never, never, true, never>;
2651
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SuiColorDot, "sui-color-dot", never, { "color": { "alias": "color"; "required": false; "isSignal": true; }; "customHex": { "alias": "customHex"; "required": false; "isSignal": true; }; "state": { "alias": "state"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, { "clicked": "clicked"; }, never, never, true, never>;
2596
2652
  }
2597
2653
 
2598
2654
  /**
@@ -3095,7 +3151,7 @@ declare class SuiCompactAvatarGroup {
3095
3151
  }
3096
3152
 
3097
3153
  type SuiCompactButtonStyle = 'stroke' | 'ghost' | 'modifiable' | 'white';
3098
- type SuiCompactButtonSize = 'medium' | 'large' | 'xlarge';
3154
+ type SuiCompactButtonSize = 'medium' | 'large' | 'xlarge' | '2xlarge' | '3xlarge' | '4xlarge';
3099
3155
  /**
3100
3156
  * SUI Compact Button — SUI Design System 2.0
3101
3157
  *
@@ -3117,6 +3173,8 @@ type SuiCompactButtonSize = 'medium' | 'large' | 'xlarge';
3117
3173
  * Sizes:
3118
3174
  * Large: 24×24 container, icon 20×20
3119
3175
  * Medium: 20×20 container, icon 16×16
3176
+ * 2xlarge 32 / 3xlarge 36 / 4xlarge 40 (extensión SUI, 03-10-2026): para
3177
+ * tocar con el dedo en mobile; íconos 20 / 20 / 24 como sui-button.
3120
3178
  *
3121
3179
  * Style=Stroke (node 189:3645):
3122
3180
  * bg: var(--sui-bg-white-0)
@@ -3217,15 +3275,16 @@ declare class SuiFlag {
3217
3275
  * - SIN border (el input padre tiene su propio border)
3218
3276
  * - SIN focus ring (el input padre maneja el focus state)
3219
3277
  * - SIN error state (heredado del input padre)
3220
- * - 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)
3221
3280
  * - Menu matchea trigger width con minWidth=200
3222
3281
  *
3223
3282
  * `ControlValueAccessor` implementado — funciona con `formControlName`.
3224
3283
  *
3225
3284
  * Uso:
3226
- * <sui-input>
3285
+ * <sui-input [leadingControl]="true">
3227
3286
  * <sui-compact-select-for-input
3228
- * slot="prefix"
3287
+ * data-slot="start"
3229
3288
  * size="medium"
3230
3289
  * [items]="countries"
3231
3290
  * formControlName="country"
@@ -3236,7 +3295,8 @@ declare class SuiFlag {
3236
3295
  * Si el consumer escribe `[(selected)]` desde código, el FormControl NO se entera
3237
3296
  * (split-brain). Usar UNA fuente de verdad: formControl O selected, no las dos.
3238
3297
  */
3239
- 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';
3240
3300
  interface SuiCompactSelectForInputItem<T = string> {
3241
3301
  value: T;
3242
3302
  label: string;
@@ -3266,7 +3326,7 @@ declare class SuiCompactSelectForInput<T = string> implements ControlValueAccess
3266
3326
  readonly arrowIcon: _angular_core.Signal<"arrow-up-s-line" | "arrow-down-s-line">;
3267
3327
  readonly displayValue: _angular_core.Signal<string>;
3268
3328
  readonly displayFlag: _angular_core.Signal<"abkhazia" | "afghanistan" | "aland-islands" | "albania" | "algeria" | "american-samoa" | "andorra" | "angola" | "anguilla" | "antigua-and-barbuda" | "argentina" | "armenia" | "aruba" | "australia" | "austria" | "azerbaijan" | "azores-islands" | "bahamas" | "bahrain" | "balearic-islands" | "bangladesh" | "barbados" | "basque-country" | "belarus" | "belgium" | "belize" | "benin" | "bermuda" | "bhutan" | "bolivia" | "bonaire" | "bosnia-and-herzegovina" | "botswana" | "brazil" | "british-columbia" | "british-indian-ocean-territory" | "british-virgin-islands" | "brunei" | "bulgaria" | "burkina-faso" | "burundi" | "cambodia" | "cameroon" | "canada" | "canary-islands" | "cape-verde" | "cayman-islands" | "central-african-republic" | "ceuta" | "chad" | "chile" | "china" | "christmas-island" | "cocos-island" | "colombia" | "comoros" | "cook-islands" | "corsica" | "costa-rica" | "croatia" | "cuba" | "curacao" | "cyprus" | "czech-republic" | "democratic-republic-of-congo" | "denmark" | "djibouti" | "dominica" | "dominican-republic" | "east-timor" | "ecuador" | "egypt" | "el-salvador" | "england" | "equatorial-guinea" | "eritrea" | "estonia" | "ethiopia" | "european-union" | "falkland-islands" | "faroe-islands" | "fiji" | "finland" | "france" | "french-polynesia" | "gabon" | "galapagos-islands" | "gambia" | "georgia" | "germany" | "ghana" | "gibraltar" | "greece" | "greenland" | "grenada" | "guam" | "guatemala" | "guernsey" | "guinea-bissau" | "guinea" | "guyana" | "haiti" | "hawaii" | "honduras" | "hong-kong" | "hungary" | "iceland" | "india" | "indonesia" | "iran" | "iraq" | "ireland" | "isle-of-man" | "israel" | "italy" | "ivory-coast" | "jamaica" | "japan" | "jersey" | "jordan" | "kazakhstan" | "kenya" | "kiribati" | "kosovo" | "kuwait" | "kyrgyzstan" | "laos" | "latvia" | "lebanon" | "lesotho" | "liberia" | "libya" | "liechtenstein" | "lithuania" | "luxembourg" | "macao" | "madagascar" | "madeira" | "malawi" | "malaysia" | "maldives" | "mali" | "malta" | "marshall-island" | "martinique" | "mauritania" | "mauritus" | "melilla" | "mexico" | "micronesia" | "moldova" | "monaco" | "mongolia" | "montenegro" | "montserrat" | "morocco" | "mozambique" | "myanmar" | "namibia" | "nato" | "nauru" | "nepal" | "netherlands" | "new-zealand" | "nicaragua" | "niger" | "nigeria" | "niue" | "norfolk-island" | "north-korea" | "northern-cyprus" | "northern-marianas-islands" | "norway" | "oman" | "orkney-islands" | "ossetia" | "pakistan" | "palau" | "palestine" | "panama" | "papua-new-guinea" | "paraguay" | "peru" | "philippines" | "pitcairn-islands" | "poland" | "portugal" | "puerto-rico" | "qatar" | "rapa-nui" | "republic-of-macedonia" | "republic-of-the-congo" | "romania" | "russia" | "rwanda" | "saba-island" | "sahrawi-arab-democratic-republic" | "saint-kitts-and-nevis" | "samoa" | "san-marino" | "sao-tome-and-prince" | "sardinia" | "saudi-arabia" | "scotland" | "senegal" | "serbia" | "seychelles" | "sierra-leone" | "singapore" | "sint-eustatius" | "sint-maarten" | "slovakia" | "slovania" | "solomon-islands" | "somalia" | "somaliland" | "south-africa" | "south-korea" | "south-sudan" | "spain" | "sri-lanka" | "st-barts" | "st-lucia" | "st-vincent-and-the-grenadines" | "sudan" | "suriname" | "swaziland" | "sweden" | "switzerland" | "syria" | "taijikistan" | "taiwan" | "tanzania" | "thailand" | "tibet" | "togo" | "tokelau" | "tonga" | "transnistria" | "trinidad-and-tobago" | "tunisia" | "turkey" | "turkmenistan" | "turks-and-caicos" | "tuvalu" | "uganda" | "ukraine" | "united-arab-emirates" | "united-kingdom" | "united-nations" | "united-states" | "uruguay" | "uzbekistan" | "vanuatu" | "vatican-city" | "venezuela" | "vietnam" | "virgin-islands" | "wales" | "yemen" | "zambia" | "zimbabwe" | null>;
3269
- readonly flagSizePx: _angular_core.Signal<20 | 16>;
3329
+ readonly flagSizePx: _angular_core.Signal<16 | 20>;
3270
3330
  onHostClick(event: Event): void;
3271
3331
  protected onMenuOpenedChange(open: boolean): void;
3272
3332
  protected selectItem(item: SuiCompactSelectForInputItem<T>): void;
@@ -3309,6 +3369,7 @@ declare class SuiCompactSelectForInput<T = string> implements ControlValueAccess
3309
3369
  *
3310
3370
  * Specs Figma (sin cambios vs versión anterior):
3311
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)
3312
3373
  * States: placeholder / filled / hover / focused / disabled / error
3313
3374
  * Types: basic / icon (RemixIcon 20×20) / country (sui-flag 20×20; 16×16 en xsmall)
3314
3375
  *
@@ -3326,7 +3387,8 @@ declare class SuiCompactSelectForInput<T = string> implements ControlValueAccess
3326
3387
  * se entera del cambio (split-brain). Usar UNA u OTRA, no las dos juntas.
3327
3388
  */
3328
3389
  type SuiCompactSelectType = 'basic' | 'icon' | 'country';
3329
- 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';
3330
3392
  /**
3331
3393
  * Shape del item dentro del menu. El consumer pasa array de estos en `[items]`.
3332
3394
  * Compatible con generics (T = tipo del value que se guarda en formControl).
@@ -3600,6 +3662,9 @@ type SuiContentCardType = 'basic' | 'left-icon' | 'avatar' | 'card-provider' | '
3600
3662
  * <sui-content-card type="brand" brand="stripe" title="Stripe" subtitle="Conectado"
3601
3663
  * [badge]="{ label: 'Activo', color: 'green' }" />
3602
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';
3603
3668
  declare class SuiContentCard {
3604
3669
  /** Tipo de leading visual. */
3605
3670
  readonly type: _angular_core.InputSignal<SuiContentCardType>;
@@ -3632,6 +3697,13 @@ declare class SuiContentCard {
3632
3697
  readonly dismissible: _angular_core.InputSignal<boolean>;
3633
3698
  /** aria-label del botón X. */
3634
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>;
3635
3707
  /**
3636
3708
  * Estado deshabilitado: atenúa contenido a tokens disabled-300, deshabilita el
3637
3709
  * badge y el botón X (sin pointer-events), y setea aria-disabled en el host.
@@ -3647,7 +3719,7 @@ declare class SuiContentCard {
3647
3719
  protected readonly labelType: _angular_core.Signal<SuiContentLabelType>;
3648
3720
  onDismiss(event: MouseEvent): void;
3649
3721
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SuiContentCard, never>;
3650
- 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>;
3651
3723
  }
3652
3724
 
3653
3725
  type SuiContentDividerType = 'line' | 'line-spacing' | 'text-line' | 'text' | 'solid-text' | 'icon-button' | 'icon-button-group' | 'text-button' | 'text-button-group';
@@ -3882,8 +3954,10 @@ type SuiCounterInputSize = '2xsmall' | 'xsmall' | 'small' | 'medium' | 'large' |
3882
3954
  * - bg-white-0 + 1px solid stroke-soft-200 + regular-shadow x-small (default)
3883
3955
  *
3884
3956
  * Steppers (Compact Button [1.1], style ghost):
3885
- * - padding 2px, radius 6px, icono 20×20 (subtract-line / add-line) en TODOS
3886
- * 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).
3887
3961
  *
3888
3962
  * Valor (Paragraph/Small — Inter 14/20, -0.084px), text-center, flex 1:
3889
3963
  * - default: text-soft-400 (placeholder gris, valor "vacío"/sin foco)
@@ -3920,6 +3994,8 @@ declare class SuiCounterInput implements ControlValueAccessor {
3920
3994
  readonly size: _angular_core.InputSignal<SuiCounterInputSize>;
3921
3995
  /** El form-label no tiene 'large' — se capea a medium (el label no escala). */
3922
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>;
3923
3999
  readonly label: _angular_core.InputSignal<string | null>;
3924
4000
  readonly sublabel: _angular_core.InputSignal<string | null>;
3925
4001
  readonly required: _angular_core.InputSignal<boolean>;
@@ -4060,12 +4136,21 @@ declare function buildCalendarGrid(monthAnchor: Date, options: {
4060
4136
  }): CalendarCell[];
4061
4137
  /** Etiquetas de días para el header del grid — locale ES (lunes-domingo). */
4062
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. */
4063
4141
  declare function formatMonthYear(date: Date): string;
4064
4142
  declare function formatDateShort(date: Date): string;
4065
4143
  declare function formatDateInput(date: Date): string;
4066
4144
 
4067
4145
  type SuiDatepickerMode = 'date' | 'range';
4068
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';
4069
4154
  interface SuiDateRange {
4070
4155
  start: Date | null;
4071
4156
  end: Date | null;
@@ -4160,6 +4245,8 @@ declare class SuiDatepicker implements ControlValueAccessor {
4160
4245
  readonly calendars: _angular_core.InputSignal<SuiDatepickerCalendars>;
4161
4246
  /** Renderiza el calendar inline (sin trigger ni popover). */
4162
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>;
4163
4250
  /** Placeholder del input cuando no hay valor seleccionado. */
4164
4251
  readonly placeholder: _angular_core.InputSignal<string>;
4165
4252
  /** Si true, muestra Cancel/Apply en el footer. Range siempre lo muestra. */
@@ -4202,6 +4289,11 @@ declare class SuiDatepicker implements ControlValueAccessor {
4202
4289
  * - mode='range' + mobile → 1
4203
4290
  * - mode='range' + desktop → respeta el prop
4204
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">;
4205
4297
  readonly effectiveCalendars: _angular_core.Signal<SuiDatepickerCalendars>;
4206
4298
  private _onChange;
4207
4299
  private _onTouched;
@@ -4229,6 +4321,8 @@ declare class SuiDatepicker implements ControlValueAccessor {
4229
4321
  readonly rangeHint: _angular_core.Signal<string | null>;
4230
4322
  toggle(): void;
4231
4323
  openPopover(): void;
4324
+ /** Copia `value` a lo staged (lo que pinta el calendario). */
4325
+ private _stageFromValue;
4232
4326
  cancel(): void;
4233
4327
  apply(): void;
4234
4328
  selectCell(cell: CalendarCell): void;
@@ -4252,7 +4346,7 @@ declare class SuiDatepicker implements ControlValueAccessor {
4252
4346
  * - null → fuera de range o mode=date */
4253
4347
  cellRangePosition(cell: CalendarCell): 'start' | 'end' | 'in' | null;
4254
4348
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SuiDatepicker, never>;
4255
- 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>;
4256
4350
  }
4257
4351
 
4258
4352
  type SuiDayCellType = 'basic' | 'range';
@@ -5037,7 +5131,7 @@ type SuiEmojiName = keyof typeof SUI_EMOJI_MAP;
5037
5131
  type SuiEmojiSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'full';
5038
5132
  declare class SuiEmoji {
5039
5133
  /** Nombre del emoji del catálogo. Si se proveé `src`, este se ignora. */
5040
- 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>;
5041
5135
  /** URL directa al emoji (override del catálogo). Útil para usar emojis fuera del map. */
5042
5136
  readonly src: _angular_core.InputSignal<string | null>;
5043
5137
  /** Tamaño del emoji. */
@@ -5095,6 +5189,11 @@ interface SuiEmptyStateAction {
5095
5189
  label: string;
5096
5190
  route?: string;
5097
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';
5098
5197
  /**
5099
5198
  * SUI Empty State — SUI Design System 2.0
5100
5199
  *
@@ -5128,6 +5227,8 @@ interface SuiEmptyStateAction {
5128
5227
  * - subtitle: descripción
5129
5228
  * - action: string shorthand (solo label → botón emite actionClicked) o
5130
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)
5131
5232
  */
5132
5233
  declare class SuiEmptyState {
5133
5234
  /** URL de Fluent Emoji (3D o animado) — override del zorro default. */
@@ -5139,6 +5240,10 @@ declare class SuiEmptyState {
5139
5240
  null/'' = sin botón. */
5140
5241
  action: _angular_core.InputSignal<string | SuiEmptyStateAction | null>;
5141
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>;
5142
5247
  /** Config resuelta del CTA (string → { label }; sin label → null). */
5143
5248
  protected readonly actionCfg: _angular_core.Signal<SuiEmptyStateAction | null>;
5144
5249
  /** URL del emoji. Default = zorro (mascota canon de empty states del proyecto):
@@ -5147,7 +5252,7 @@ declare class SuiEmptyState {
5147
5252
  incluidas las secciones reutilizables — sin tocar cada uso. */
5148
5253
  protected readonly resolvedEmojiSrc: _angular_core.Signal<string>;
5149
5254
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SuiEmptyState, never>;
5150
- 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>;
5151
5256
  }
5152
5257
  /** Zorro animado (Fluent Emoji) — emoji default canon de los empty states. */
5153
5258
  declare const EMPTY_STATE_FOX_EMOJI = "https://raw.githubusercontent.com/Tarikul-Islam-Anik/Animated-Fluent-Emojis/master/Emojis/Animals/Fox.png";
@@ -5452,13 +5557,13 @@ interface SuiFileUploadCardFile {
5452
5557
  * - file: string shorthand (= filename, default "file.pdf") o
5453
5558
  * { filename, extension? } — extension overridea el FileIcon
5454
5559
  * (si falta se extrae del filename)
5455
- * - description: texto secundario izquierdo (ej. "0 KB of 120 KB")
5560
+ * - description: texto secundario izquierdo (ej. «0 KB de 120 KB»)
5456
5561
  * - state: 'in-progress' | 'success' | 'error'
5457
5562
  * - progress: 0–100 — solo se muestra si state==='in-progress'
5458
5563
  * - statusText: override del label de status (sino default por state:
5459
- * "Uploading..." / "Completed" / "Failed")
5564
+ * «Subiendo…» / «Completado» / «Falló»; en español desde el 03-10-2026)
5460
5565
  * - showStatus: muestra/oculta el bloque de status (default true)
5461
- * - retryLabel: texto del link de error (default "Try Again")
5566
+ * - retryLabel: texto del link de error (default «Reintentar»)
5462
5567
  *
5463
5568
  * Outputs:
5464
5569
  * - actionClicked: click en el botón compacto (close en in-progress,
@@ -5475,6 +5580,10 @@ declare class SuiFileUploadCard {
5475
5580
  readonly progress: _angular_core.InputSignal<number>;
5476
5581
  readonly statusText: _angular_core.InputSignal<string | null>;
5477
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>;
5478
5587
  readonly retryLabel: _angular_core.InputSignal<string>;
5479
5588
  readonly actionClicked: _angular_core.OutputEmitterRef<void>;
5480
5589
  readonly retryClicked: _angular_core.OutputEmitterRef<void>;
@@ -5489,7 +5598,7 @@ declare class SuiFileUploadCard {
5489
5598
  protected onAction(): void;
5490
5599
  protected onRetry(): void;
5491
5600
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SuiFileUploadCard, never>;
5492
- 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>;
5493
5602
  }
5494
5603
 
5495
5604
  type SuiFileUploadSize = 'small' | 'medium' | 'large' | 'xlarge';
@@ -5506,7 +5615,8 @@ type SuiFileUploadSize = 'small' | 'medium' | 'large' | 'xlarge';
5506
5615
  * default / hover / dragover / disabled / error. Soporta single o multi.
5507
5616
  *
5508
5617
  * EXACT (pulled from Figma, verified — node 450:9410 / 450:9429):
5509
- * - 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,
5510
5620
  * border=1px dashed --sui-stroke-sub-300 (#d1d1d1), radius=12px,
5511
5621
  * bg=--sui-bg-white-0. Flex column, items+justify center.
5512
5622
  * - Icon: upload-cloud-2-line (Remix) 24×24, color --sui-icon-sub-600 (#5c5c5c),
@@ -5550,7 +5660,8 @@ type SuiFileUploadSize = 'small' | 'medium' | 'large' | 'xlarge';
5550
5660
  * - maxSize: bytes máximo por archivo. 0 = sin límite.
5551
5661
  * - title: label primario.
5552
5662
  * - subtitle: texto secundario.
5553
- * - 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).
5554
5665
  * - disabled: bloquea interacción.
5555
5666
  * - error: estado de error (border rojo).
5556
5667
  * - errorMessage: texto del error mostrado debajo.
@@ -5576,13 +5687,13 @@ declare class SuiFileUpload {
5576
5687
  protected readonly inputRef: _angular_core.Signal<ElementRef<HTMLInputElement> | undefined>;
5577
5688
  protected readonly dragging: _angular_core.WritableSignal<boolean>;
5578
5689
  protected readonly internalError: _angular_core.WritableSignal<string | null>;
5579
- protected readonly state: _angular_core.Signal<"default" | "error" | "disabled" | "dragover">;
5690
+ protected readonly state: _angular_core.Signal<"error" | "default" | "disabled" | "dragover">;
5580
5691
  protected readonly resolvedTitle: _angular_core.Signal<string>;
5581
5692
  protected readonly resolvedSubtitle: _angular_core.Signal<string>;
5582
5693
  protected readonly resolvedErrorMessage: _angular_core.Signal<string | null>;
5583
5694
  /** Icon size px. Figma verified = 24 (medium). small/large/xlarge escalan +4
5584
5695
  * (small 20 → medium 24 → large 28 → xlarge 32) — extensión de proyecto. */
5585
- protected readonly iconSize: _angular_core.Signal<20 | 24 | 32 | 28>;
5696
+ protected readonly iconSize: _angular_core.Signal<20 | 24 | 28 | 32>;
5586
5697
  onClick(): void;
5587
5698
  /** Browse File button — abre el picker. stopPropagation evita doble-open
5588
5699
  * (el host también es clickeable). */
@@ -6109,6 +6220,10 @@ declare class SuiImageUploadProfile implements ControlValueAccessor {
6109
6220
 
6110
6221
  type SuiImageUploadShape = 'circle' | 'rect';
6111
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;
6112
6227
  /**
6113
6228
  * SUI Image Upload — SUI Design System 2.0
6114
6229
  *
@@ -6157,7 +6272,7 @@ type SuiImageUploadSize = 'sm' | 'md' | 'lg' | 'xl';
6157
6272
  *
6158
6273
  * RESUELTO 2026-05-29:
6159
6274
  * - 1.7 (component library): el botón "Quitar" pasó de <button> custom a
6160
- * <sui-button variant="stroke" color="error" size="2xsmall">. Los iconos
6275
+ * <sui-button variant="stroke" color="error" size="xsmall">. Los iconos
6161
6276
  * cámara/lápiz pasaron de SVG inline a <sui-icon name="image-add-line" /> y
6162
6277
  * <sui-icon name="pencil-line" />.
6163
6278
  *
@@ -6224,8 +6339,14 @@ declare class SuiImageUpload {
6224
6339
  protected readonly sizePx: _angular_core.Signal<number>;
6225
6340
  /** Camera icon px en el empty state. xl escala a 20, resto 16
6226
6341
  * (matchea el escalado del contenedor 32→40 en SCSS). */
6227
- protected readonly iconSize: _angular_core.Signal<20 | 16>;
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>;
6228
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;
6229
6350
  protected readonly state: _angular_core.Signal<"filled" | "disabled" | "dragover" | "empty">;
6230
6351
  protected readonly resolvedTitle: _angular_core.Signal<string>;
6231
6352
  protected readonly resolvedSubtitle: _angular_core.Signal<string>;
@@ -6756,7 +6877,7 @@ type SuiIntegrationSwitchAppearance = 'card' | 'list';
6756
6877
  * Config del manage button embebido. Un solo input `[manage]` reemplaza al
6757
6878
  * trío showManage/manageLabel/manageIcon (mismo patrón objeto que
6758
6879
  * `badge`/SuiBadgeConfig — canon sui-checkbox-label):
6759
- * - `true` (default) → botón con defaults ('Manage' + settings-2-line)
6880
+ * - `true` (default) → botón con defaults ('Administrar' + settings-2-line)
6760
6881
  * - `'Configurar'` → string shorthand: label custom, icon default
6761
6882
  * - `{ label, icon }` → config completa
6762
6883
  * - `false` / `null` → sin botón
@@ -6848,7 +6969,7 @@ declare class SuiIntegrationSwitch implements ControlValueAccessor {
6848
6969
  (label + color/variant/size, tipado como sui-badge). null = sin badge. */
6849
6970
  readonly badge: _angular_core.InputSignal<string | SuiBadgeConfig | null>;
6850
6971
  protected readonly badgeCfg: _angular_core.Signal<SuiBadgeConfig | null>;
6851
- /** Manage button — true = defaults ('Manage' + settings-2-line), string =
6972
+ /** Manage button — true = defaults ('Administrar' + settings-2-line), string =
6852
6973
  label custom con icon default, SuiIntegrationManageConfig = todo,
6853
6974
  false/null = oculto. */
6854
6975
  readonly manage: _angular_core.InputSignal<string | boolean | SuiIntegrationManageConfig | null>;
@@ -7787,7 +7908,7 @@ declare class SuiNotificationFooter {
7787
7908
  private static readonly DEFAULT_MANAGE_LABEL;
7788
7909
  readonly usePrefix: _angular_core.InputSignal<string>;
7789
7910
  readonly useSuffix: _angular_core.InputSignal<string>;
7790
- /** Link de gestión — true = label default ('Manage Notification'); string =
7911
+ /** Link de gestión — true = label default ('Administrar notificaciones'); string =
7791
7912
  * label custom (emite `manageClick`); SuiLinkConfig { label, href?, target?,
7792
7913
  * rel? }: con href renderiza <a> real, rel automático 'noopener noreferrer'
7793
7914
  * para _blank. false/null = oculto (Figma prop `button` off). */
@@ -8027,6 +8148,13 @@ declare class SuiNotification {
8027
8148
  }
8028
8149
 
8029
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';
8030
8158
  /**
8031
8159
  * SUI OTP / Digit Input — SUI Design System 2.0
8032
8160
  *
@@ -8068,6 +8196,9 @@ type SuiOtpInputType = 'number' | 'text';
8068
8196
  * - CVA: el value expuesto es el string concatenado de todas las celdas.
8069
8197
  *
8070
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).
8071
8202
  * @input type 'number' | 'text' — 'number' restringe a [0-9] e
8072
8203
  * inputmode='numeric'; 'text' acepta cualquier char e
8073
8204
  * inputmode='text'.
@@ -8086,6 +8217,8 @@ type SuiOtpInputType = 'number' | 'text';
8086
8217
  */
8087
8218
  declare class SuiOtpInput implements ControlValueAccessor {
8088
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>;
8089
8222
  readonly type: _angular_core.InputSignal<SuiOtpInputType>;
8090
8223
  readonly disabled: _angular_core.ModelSignal<boolean>;
8091
8224
  readonly error: _angular_core.InputSignal<boolean>;
@@ -8123,7 +8256,7 @@ declare class SuiOtpInput implements ControlValueAccessor {
8123
8256
  registerOnTouched(fn: () => void): void;
8124
8257
  setDisabledState(isDisabled: boolean): void;
8125
8258
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SuiOtpInput, never>;
8126
- 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>;
8127
8260
  }
8128
8261
 
8129
8262
  /**
@@ -8442,6 +8575,9 @@ declare class SuiPeriodRange {
8442
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';
8443
8576
  /** Tipo de footer del popover (Figma 4456:83048). `none` = sin footer. */
8444
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';
8445
8581
  declare class SuiPopover {
8446
8582
  /** Placement axis del tail relativo al trigger (12 variantes Figma). */
8447
8583
  readonly position: _angular_core.InputSignal<SuiPopoverPosition>;
@@ -8469,6 +8605,9 @@ declare class SuiPopover {
8469
8605
  current: number;
8470
8606
  total: number;
8471
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>;
8472
8611
  /** Click en el botón X de dismiss. */
8473
8612
  readonly dismissed: _angular_core.OutputEmitterRef<void>;
8474
8613
  /** Click en el botón secundario (Back). */
@@ -8487,12 +8626,12 @@ declare class SuiPopover {
8487
8626
  readonly isDotStepper: _angular_core.Signal<boolean>;
8488
8627
  /** Config resuelta del step (null → default { current: 1, total: 4 }). */
8489
8628
  private readonly stepCfg;
8490
- /** 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). */
8491
8630
  readonly stepperText: _angular_core.Signal<string>;
8492
8631
  /** Array de dots para el stepper. Cada item: índice activo => primary. */
8493
8632
  readonly dots: _angular_core.Signal<boolean[]>;
8494
8633
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SuiPopover, never>;
8495
- 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>;
8496
8635
  }
8497
8636
 
8498
8637
  type SuiProgressBarColor = 'blue' | 'green' | 'orange' | 'red' | 'purple';
@@ -8823,7 +8962,7 @@ declare class SuiRadioCard implements ControlValueAccessor {
8823
8962
  * Emoji del catálogo SUI_EMOJI_MAP — alternativa a icon para type='left-icon'.
8824
8963
  * Si ambos están, icon tiene precedencia.
8825
8964
  */
8826
- 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>;
8827
8966
  /**
8828
8967
  * URL directa al emoji para type='left-icon'. Útil cuando el consumer ya tiene
8829
8968
  * la URL (ej. FLUENT_EMOJI map del proyecto) y no quiere registrar el emoji
@@ -8870,6 +9009,12 @@ declare class SuiRadioCard implements ControlValueAccessor {
8870
9009
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<SuiRadioCard, "sui-radio-card", never, { "type": { "alias": "type"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": true; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "sublabel": { "alias": "sublabel"; "required": false; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "emoji": { "alias": "emoji"; "required": false; "isSignal": true; }; "iconSrc": { "alias": "iconSrc"; "required": false; "isSignal": true; }; "imageUrl": { "alias": "imageUrl"; "required": false; "isSignal": true; }; "brand": { "alias": "brand"; "required": false; "isSignal": true; }; "badge": { "alias": "badge"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "checked": { "alias": "checked"; "required": false; "isSignal": true; }; }, { "checked": "checkedChange"; "selected": "selected"; }, never, never, true, never>;
8871
9010
  }
8872
9011
 
9012
+ /**
9013
+ * Tamaño del radio-label. `medium` es el de Figma (control 20, label 14/20);
9014
+ * `large` y `xlarge` son extensión SUI (03-10-2026, pedido del dueño) para mobile:
9015
+ * le pasan el tamaño al sui-radio interno (24 / 28) y suben la tipografía.
9016
+ */
9017
+ type SuiRadioLabelSize = 'medium' | 'large' | 'xlarge';
8873
9018
  /**
8874
9019
  * SUI Radio Label — SUI Design System 2.0
8875
9020
  *
@@ -8923,6 +9068,18 @@ declare class SuiRadioLabel {
8923
9068
  readonly link: _angular_core.InputSignal<string | SuiLinkConfig | null>;
8924
9069
  /** Config resuelta del link (string → { label }, rel automático). */
8925
9070
  protected readonly linkCfg: _angular_core.Signal<SuiLinkConfig | null>;
9071
+ /**
9072
+ * Tamaño. `medium` (default, Figma): control 20, label 14/20.
9073
+ * Extensión SUI (03-10-2026) para tocar en mobile:
9074
+ * - `large`: control 24, label 16/24, sublabel y descripción 14/20, badge medium.
9075
+ * - `xlarge`: control 28, label 16/24, sublabel y descripción 14/20, badge large.
9076
+ * El badge toma este default solo si su config no trae `size`.
9077
+ */
9078
+ readonly size: _angular_core.InputSignal<SuiRadioLabelSize>;
9079
+ /** Badge por default según el tamaño (si la config no fija uno). */
9080
+ protected readonly badgeSize: _angular_core.Signal<SuiBadgeSize>;
9081
+ /** El link-button tiene dos tamaños: small (12/16) en Figma, medium (14/20) en mobile. */
9082
+ protected readonly linkSize: _angular_core.Signal<SuiLinkButtonSize>;
8926
9083
  /** Si true, invierte orden: [content] [radio] (radio a la derecha). */
8927
9084
  readonly flip: _angular_core.InputSignal<boolean>;
8928
9085
  /** Deshabilita el radio + wrapper. */
@@ -8941,7 +9098,7 @@ declare class SuiRadioLabel {
8941
9098
  private select;
8942
9099
  onLinkClick(event: MouseEvent): void;
8943
9100
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SuiRadioLabel, never>;
8944
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<SuiRadioLabel, "sui-radio-label", never, { "value": { "alias": "value"; "required": true; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "sublabel": { "alias": "sublabel"; "required": false; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "badge": { "alias": "badge"; "required": false; "isSignal": true; }; "link": { "alias": "link"; "required": false; "isSignal": true; }; "flip": { "alias": "flip"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "checked": { "alias": "checked"; "required": false; "isSignal": true; }; }, { "checked": "checkedChange"; "selected": "selected"; "linkClick": "linkClick"; }, never, never, true, never>;
9101
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SuiRadioLabel, "sui-radio-label", never, { "value": { "alias": "value"; "required": true; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "sublabel": { "alias": "sublabel"; "required": false; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "badge": { "alias": "badge"; "required": false; "isSignal": true; }; "link": { "alias": "link"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "flip": { "alias": "flip"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "checked": { "alias": "checked"; "required": false; "isSignal": true; }; }, { "checked": "checkedChange"; "selected": "selected"; "linkClick": "linkClick"; }, never, never, true, never>;
8945
9102
  }
8946
9103
 
8947
9104
  declare class SuiRadioGroup implements ControlValueAccessor {
@@ -9062,7 +9219,7 @@ interface SuiRatingCellView {
9062
9219
  * @input readonly deshabilita clicks (display only)
9063
9220
  * @input halfStep inline + readonly: renderiza half-fill basado en value decimal
9064
9221
  * @input showValue inline: muestra "4.5" al lado de los íconos
9065
- * @input reviewCount inline: muestra "5.2K Ratings" al lado (formato corto)
9222
+ * @input reviewCount inline: muestra "5.2K calificaciones" al lado (formato corto)
9066
9223
  * @input reviewLink inline: link "18 reviews" al lado
9067
9224
  * @input alignment inline: 'inline' (only) | 'vertical' | 'horizontal'
9068
9225
  * @input emojis array de chars Unicode para type='emoji' (default 😞😕😐🙂😄)
@@ -9334,11 +9491,10 @@ declare class SuiRichEditor {
9334
9491
  * `large` y `xlarge` son extensión nuestra (12-08-2026), igual que en
9335
9492
  * `sui-input`: alturas del `sui-button` para que campo y botón se alineen.
9336
9493
  *
9337
- * OJO — crecen el TRIGGER, no la lista. Las opciones son `sui-dropdown-item`,
9338
- * un componente aparte con su propia escala (36/56/76), y el select NUNCA le
9339
- * pasó su `size`: hoy todas las opciones salen del mismo tamaño para xsmall y
9340
- * para medium. No es algo que estos dos tamaños rompan — ya era así —, pero es
9341
- * 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.
9342
9498
  */
9343
9499
  type SuiSelectSize = 'xsmall' | 'small' | 'medium' | 'large' | 'xlarge';
9344
9500
  /**
@@ -9762,9 +9918,17 @@ declare class SuiSidebar {
9762
9918
  * el untouched del range slider.
9763
9919
  */
9764
9920
  type SuiSliderType = 'single' | 'range';
9921
+ /**
9922
+ * Tamaño del slider. `medium` es el de Figma (manija 16, riel 6). `large` es
9923
+ * extensión SUI (03-10-2026, pedido del dueño) para mobile: manija 24, riel 8,
9924
+ * punto interno 8 y label 14/20 — la manija de 16 es muy chica para el dedo.
9925
+ */
9926
+ type SuiSliderSize = 'medium' | 'large';
9765
9927
  declare class SuiSlider implements ControlValueAccessor {
9766
9928
  private readonly hostRef;
9767
9929
  readonly type: _angular_core.InputSignal<SuiSliderType>;
9930
+ /** `medium` (default, Figma) o `large` (mobile, extensión SUI). */
9931
+ readonly size: _angular_core.InputSignal<SuiSliderSize>;
9768
9932
  /** Rango numérico de la escala. */
9769
9933
  readonly min: _angular_core.InputSignal<number>;
9770
9934
  readonly max: _angular_core.InputSignal<number>;
@@ -9835,7 +9999,7 @@ declare class SuiSlider implements ControlValueAccessor {
9835
9999
  onThumbEnter(handle: 'single' | 'min' | 'max'): void;
9836
10000
  onThumbLeave(): void;
9837
10001
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SuiSlider, never>;
9838
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<SuiSlider, "sui-slider", never, { "type": { "alias": "type"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "step": { "alias": "step"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "sublabel": { "alias": "sublabel"; "required": false; "isSignal": true; }; "amount": { "alias": "amount"; "required": false; "isSignal": true; }; "tooltip": { "alias": "tooltip"; "required": false; "isSignal": true; }; "tooltipAlways": { "alias": "tooltipAlways"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "minValue": { "alias": "minValue"; "required": false; "isSignal": true; }; "maxValue": { "alias": "maxValue"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; "minValueChange": "minValueChange"; "maxValueChange": "maxValueChange"; }, never, never, true, never>;
10002
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SuiSlider, "sui-slider", never, { "type": { "alias": "type"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "step": { "alias": "step"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "sublabel": { "alias": "sublabel"; "required": false; "isSignal": true; }; "amount": { "alias": "amount"; "required": false; "isSignal": true; }; "tooltip": { "alias": "tooltip"; "required": false; "isSignal": true; }; "tooltipAlways": { "alias": "tooltipAlways"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "minValue": { "alias": "minValue"; "required": false; "isSignal": true; }; "maxValue": { "alias": "maxValue"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; "minValueChange": "minValueChange"; "maxValueChange": "maxValueChange"; }, never, never, true, never>;
9839
10003
  }
9840
10004
 
9841
10005
  type SuiSocialButtonBrand = 'apple' | 'x-twitter' | 'google' | 'facebook' | 'linkedin' | 'github' | 'dropbox';
@@ -9951,6 +10115,11 @@ declare class SuiSocialButton {
9951
10115
 
9952
10116
  type SuiStatusBadgeStatus = 'completed' | 'pending' | 'failed' | 'information' | 'disabled';
9953
10117
  type SuiStatusBadgeAppearance = 'stroke' | 'light';
10118
+ /**
10119
+ * Tamaño. `medium` (24) es el de Figma y el default. `large` 28 y `xlarge` 32
10120
+ * son extensión SUI (03-10-2026) para mobile, donde el estado se lee de lejos.
10121
+ */
10122
+ type SuiStatusBadgeSize = 'medium' | 'large' | 'xlarge';
9954
10123
  /**
9955
10124
  * SUI Status Badge — SUI Design System 2.0
9956
10125
  *
@@ -9959,7 +10128,8 @@ type SuiStatusBadgeAppearance = 'stroke' | 'light';
9959
10128
  *
9960
10129
  * Componente separado del `sui-badge` regular. A diferencia del Badge:
9961
10130
  * - radius 6 (NO full)
9962
- * - solo medium size (font Label/X Small 12/16/0)
10131
+ * - Figma trae solo medium (font Label/X Small 12/16/0); large/xlarge son
10132
+ * extensión SUI para mobile (ver «Tamaños» abajo)
9963
10133
  * - solo 2 styles: stroke + light (NO filled/lighter/dark)
9964
10134
  * - status enum cerrado (5 valores) — cada uno con su icono semántico fijo
9965
10135
  * - withDot reemplaza el icono por un dot de 6×6 (diámetro 6px) con el color del status
@@ -9999,11 +10169,17 @@ type SuiStatusBadgeAppearance = 'stroke' | 'light';
9999
10169
  * - 'information' → state-information + ri-information-fill
10000
10170
  * - 'disabled' → state-faded + ri-forbid-fill
10001
10171
  *
10172
+ * Tamaños — extensión SUI (03-10-2026, pedido del dueño):
10173
+ * El frame 171:5100 trae 20 símbolos, TODOS Medium (24px). Para mobile se
10174
+ * sumaron dos más grandes, en la escala del sui-button (28 · 32) y no en la
10175
+ * del sui-badge (24 · 28): el status-badge ya parte de 24, así que un
10176
+ * «large 24» no cambiaría nada.
10177
+ * medium 24 · Label/X Small 12/16 · icono 12 en caja 16 · dot 6 (default, Figma)
10178
+ * large 28 · Label/Small 14/20 · icono 16 en caja 20 · dot 8
10179
+ * xlarge 32 · Label/Medium 16/24 · icono 20 en caja 24 · dot 8
10180
+ * No hay `small`: Figma no lo trae y en web 24 ya es el mínimo legible.
10181
+ *
10002
10182
  * PENDING VERIFY (no críticos):
10003
- * - Small size del Status Badge: CONFIRMADO que NO existe — el frame 171:5100
10004
- * contiene 20 símbolos (5 status × 2 styles × 2 withDot), TODOS Medium (24px
10005
- * de alto). No hay eje Size en este componente. Si el DS agrega Small más
10006
- * adelante, recién ahí se introduce el input `size`.
10007
10183
  * - Hover/focus states: CONFIRMADO display-only — el frame no expone ningún
10008
10184
  * eje de interacción (ni Disabled como estado, salvo el status semántico
10009
10185
  * 'disabled' que es un valor de contenido, no un state CSS).
@@ -10022,6 +10198,10 @@ declare class SuiStatusBadge {
10022
10198
  * linter trata de parsear como CSS y rompe con valores como "light").
10023
10199
  */
10024
10200
  readonly appearance: _angular_core.InputSignal<SuiStatusBadgeAppearance>;
10201
+ /** Tamaño: medium 24 (default, Figma) · large 28 · xlarge 32 (mobile). */
10202
+ readonly size: _angular_core.InputSignal<SuiStatusBadgeSize>;
10203
+ /** Px del glyph del sui-icon interno por tamaño (12 / 16 / 20). */
10204
+ readonly iconSize: _angular_core.Signal<number>;
10025
10205
  /**
10026
10206
  * Si `true`, reemplaza el icono semántico por un dot 6×6 (diámetro 6px,
10027
10207
  * radio 3px — confirmado en Figma 171:5156) del color del status.
@@ -10046,11 +10226,11 @@ declare class SuiStatusBadge {
10046
10226
  readonly iconName: _angular_core.Signal<string>;
10047
10227
  private readonly iconoDelStatus;
10048
10228
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SuiStatusBadge, never>;
10049
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<SuiStatusBadge, "sui-status-badge", never, { "status": { "alias": "status"; "required": false; "isSignal": true; }; "appearance": { "alias": "appearance"; "required": false; "isSignal": true; }; "withDot": { "alias": "withDot"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
10229
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SuiStatusBadge, "sui-status-badge", never, { "status": { "alias": "status"; "required": false; "isSignal": true; }; "appearance": { "alias": "appearance"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "withDot": { "alias": "withDot"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
10050
10230
  }
10051
10231
 
10052
10232
  type SuiStepperVariant = 'dot' | 'horizontal' | 'vertical';
10053
- type SuiStepperSize = 'small' | 'xsmall';
10233
+ type SuiStepperSize = 'small' | 'xsmall' | 'medium';
10054
10234
  type SuiStepperState = 'default' | 'active' | 'completed' | 'error';
10055
10235
  interface SuiStepperItem {
10056
10236
  /** Etiqueta del step. Ignorada en variant='dot'. */
@@ -10091,7 +10271,13 @@ interface SuiStepperItemView {
10091
10271
  * @input count Cantidad de dots (variant='dot' only). Si se pasan steps,
10092
10272
  * tiene precedencia el length de steps.
10093
10273
  * @input currentStep 0-indexed; index < cur = completed, === cur = active, > cur = default
10094
- * @input size 'small' | 'xsmall' — solo aplica a variant='dot'
10274
+ * @input size 'small' | 'xsmall' | 'medium'.
10275
+ * small/xsmall (Figma) solo cambian el dot (8 / 4); horizontal y
10276
+ * vertical miden igual en los dos (indicador 20).
10277
+ * medium — extensión SUI (03-10-2026, pedido del dueño) para
10278
+ * mobile — agranda los tres variants: dot 10, indicador 24,
10279
+ * número Label/Small (14/20), label Paragraph/Medium (16/24),
10280
+ * card vertical de 44 de alto (24 + padding 10×2).
10095
10281
  * @input interactive Si true, los steps son clickeables y emiten stepClick
10096
10282
  *
10097
10283
  * @output stepClick Index del step clickeado (solo si interactive=true)
@@ -10140,6 +10326,9 @@ declare class SuiStepper {
10140
10326
  readonly interactive: _angular_core.InputSignal<boolean>;
10141
10327
  readonly ariaLabel: _angular_core.InputSignal<string>;
10142
10328
  readonly stepClick: _angular_core.OutputEmitterRef<number>;
10329
+ /** Ícono del indicador (completed / error): 24 en medium, 20 en los de Figma.
10330
+ * Es el indicador mismo, por eso crece; separador y chevron se quedan en 20. */
10331
+ readonly indicatorIconPx: _angular_core.Signal<number>;
10143
10332
  /**
10144
10333
  * Vista pre-computada de items. Una sola pasada por cambio de inputs:
10145
10334
  * - resuelve length: steps.length || count (para variant=dot sin labels)
@@ -10186,6 +10375,12 @@ interface SuiStoreCardData {
10186
10375
  logoUrl?: string | null;
10187
10376
  coverUrl?: string | null;
10188
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';
10189
10384
  interface PreviewBadge {
10190
10385
  label: string;
10191
10386
  variant: 'draft' | 'pending' | 'rejected';
@@ -10195,6 +10390,12 @@ declare class SuiStoreCard {
10195
10390
  readonly isFavorite: _angular_core.InputSignal<boolean>;
10196
10391
  /** Si true, no se navega al detalle (caso suspendido). El padre puede sobreescribir. */
10197
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>;
10198
10399
  /**
10199
10400
  * El texto de Envío y el de Distancia, ya escritos por quien llama.
10200
10401
  *
@@ -10234,6 +10435,8 @@ declare class SuiStoreCard {
10234
10435
  logoUrl: string | null;
10235
10436
  }>;
10236
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>;
10237
10440
  readonly initial: _angular_core.Signal<string>;
10238
10441
  /**
10239
10442
  * El puntaje con cuántas opiniones lo sostienen: «4.67 (12)».
@@ -10264,7 +10467,7 @@ declare class SuiStoreCard {
10264
10467
  onCardClick(event: Event): void;
10265
10468
  onRatingClick(event: Event): void;
10266
10469
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SuiStoreCard, never>;
10267
- 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>;
10268
10471
  }
10269
10472
 
10270
10473
  /**
@@ -10334,6 +10537,12 @@ interface SuiProductCardImage {
10334
10537
  /** Encuadre vertical de la imagen (CSS object-position Y, 0–100). Default 50. */
10335
10538
  position?: number;
10336
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';
10337
10546
  /** Config del fallback sin imagen. */
10338
10547
  interface SuiProductCardFallback {
10339
10548
  /** `'name'` = banda de color + nombre (default) · `'icon'` = ícono. */
@@ -10379,6 +10588,14 @@ declare class SuiProductCard {
10379
10588
  * se ve SIEMPRE: también con `available=false` (el agotado es justo el
10380
10589
  * que el dueño quiere tocar) y sin que `closed` lo apague. Nunca stepper. */
10381
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>;
10382
10599
  /** Tap en la card (abrir detalle del producto). */
10383
10600
  readonly openDetail: _angular_core.OutputEmitterRef<void>;
10384
10601
  /** Tap en el botón "+" (agregar al carrito). */
@@ -10390,6 +10607,15 @@ declare class SuiProductCard {
10390
10607
  /** Tap en el lápiz (solo con `action="edit"`). */
10391
10608
  readonly edit: _angular_core.OutputEmitterRef<void>;
10392
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>;
10393
10619
  readonly showStepper: _angular_core.Signal<boolean>;
10394
10620
  /** Config resuelta de la imagen (string → { url }; `position` default 50).
10395
10621
  * null = sin imagen → fallback. */
@@ -10417,7 +10643,7 @@ declare class SuiProductCard {
10417
10643
  onDec(event: Event): void;
10418
10644
  onEdit(event: Event): void;
10419
10645
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SuiProductCard, never>;
10420
- 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>;
10421
10647
  }
10422
10648
 
10423
10649
  /**
@@ -10551,7 +10777,7 @@ declare class SuiSwitchCard implements ControlValueAccessor {
10551
10777
  * `<sui-icon>` proyectado vía `[sui-switch-card-leading]` y se renderiza
10552
10778
  * con las MISMAS dimensiones (20×20 dentro del círculo de 40px).
10553
10779
  */
10554
- 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>;
10555
10781
  /**
10556
10782
  * URL de imagen para type='avatar' — se renderiza con sui-avatar size=lg
10557
10783
  * (40×40 redonda). Si la imagen falla, fallback automático a iniciales del
@@ -10706,6 +10932,12 @@ declare class SuiSwitchLabel implements ControlValueAccessor {
10706
10932
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<SuiSwitchLabel, "sui-switch-label", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "sublabel": { "alias": "sublabel"; "required": false; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "badge": { "alias": "badge"; "required": false; "isSignal": true; }; "link": { "alias": "link"; "required": false; "isSignal": true; }; "flip": { "alias": "flip"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "active": { "alias": "active"; "required": false; "isSignal": true; }; }, { "activeChange": "activeChange"; "linkClick": "linkClick"; }, never, never, true, never>;
10707
10933
  }
10708
10934
 
10935
+ /**
10936
+ * Tamaño del chip. `medium` (36 px) es el de siempre y el default: quien no
10937
+ * pase `size` no ve ningún cambio. `small` (32) para web densa; `large` (40)
10938
+ * para mobile, donde se toca con el dedo. Extensión SUI (03-10-2026).
10939
+ */
10940
+ type SuiTabChipsSize = 'small' | 'medium' | 'large';
10709
10941
  interface SuiTabChipItem {
10710
10942
  /** Valor único del chip (lo que devuelve `value`). */
10711
10943
  value: string;
@@ -10734,8 +10966,12 @@ interface SuiTabChipItem {
10734
10966
  * [chips]="['Hamburguesas', 'Pizzas', 'Bebidas']"
10735
10967
  * [(value)]="selected"
10736
10968
  * [sticky]="true"
10969
+ * [size]="bp.isMobile() ? 'large' : 'medium'"
10737
10970
  * />
10738
10971
  *
10972
+ * Tamaños (extensión SUI, 03-10-2026): small 32 · medium 36 (default) ·
10973
+ * large 40. Los tres con texto label-sm 14; cambia el alto y el aire lateral.
10974
+ *
10739
10975
  * También acepta objetos:
10740
10976
  * <sui-tab-chips
10741
10977
  * [chips]="[{value:'h', label:'Hamburguesas'}, {value:'p', label:'Pizzas'}]"
@@ -10749,6 +10985,8 @@ declare class SuiTabChips implements AfterViewInit, OnDestroy {
10749
10985
  readonly value: _angular_core.ModelSignal<string>;
10750
10986
  /** Si true, el componente queda sticky al top del scroll container. */
10751
10987
  readonly sticky: _angular_core.InputSignal<boolean>;
10988
+ /** Tamaño de los chips: small 32 · medium 36 (default) · large 40 (mobile). */
10989
+ readonly size: _angular_core.InputSignal<SuiTabChipsSize>;
10752
10990
  /** Auto-scroll horizontal del chip activo al cambiar `value`. */
10753
10991
  readonly autoScroll: _angular_core.InputSignal<boolean>;
10754
10992
  sentinelRef?: ElementRef<HTMLDivElement>;
@@ -10764,7 +11002,7 @@ declare class SuiTabChips implements AfterViewInit, OnDestroy {
10764
11002
  protected select(value: string): void;
10765
11003
  private scrollToChip;
10766
11004
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SuiTabChips, never>;
10767
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<SuiTabChips, "sui-tab-chips", never, { "chips": { "alias": "chips"; "required": true; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "sticky": { "alias": "sticky"; "required": false; "isSignal": true; }; "autoScroll": { "alias": "autoScroll"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
11005
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SuiTabChips, "sui-tab-chips", never, { "chips": { "alias": "chips"; "required": true; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "sticky": { "alias": "sticky"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "autoScroll": { "alias": "autoScroll"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
10768
11006
  }
10769
11007
 
10770
11008
  /**
@@ -11086,9 +11324,9 @@ interface SuiTabMenuHorizontalItem<T = string> {
11086
11324
  * radius-full, overflow-clip, icon arrow-right-s-line 18px, SIN shadow
11087
11325
  *
11088
11326
  * PENDING VERIFY:
11089
- * - `size`: el Tab Menu Horizontal de Figma no expone eje size. El input se
11090
- * mantiene como extensión SUI (espeja el data-attr del host como hook de
11091
- * 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).
11092
11330
  * - `disabled` por ítem es extensión SUI (Figma no muestra estado Disabled).
11093
11331
  *
11094
11332
  * Historia: hasta la v0.2.x este componente vivía como `<sui-tabs variant="line">`;
@@ -11100,9 +11338,12 @@ interface SuiTabMenuHorizontalItem<T = string> {
11100
11338
  declare class SuiTabMenuHorizontal<T = string> {
11101
11339
  readonly tabs: _angular_core.InputSignal<SuiTabMenuHorizontalItem<T>[]>;
11102
11340
  readonly active: _angular_core.ModelSignal<T | undefined>;
11103
- /** PENDING spec: hoy solo emite data-sui-size (sin reglas scss) y el set de
11104
- 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). */
11105
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>;
11106
11347
  readonly tabChange: _angular_core.OutputEmitterRef<T>;
11107
11348
  isActive(tab: SuiTabMenuHorizontalItem<T>): boolean;
11108
11349
  select(tab: SuiTabMenuHorizontalItem<T>): void;
@@ -11256,7 +11497,7 @@ declare class SuiSegmentedControl<T = string> implements AfterViewInit {
11256
11497
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<SuiSegmentedControl<any>, "sui-segmented-control", never, { "tabs": { "alias": "tabs"; "required": true; "isSignal": true; }; "active": { "alias": "active"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, { "active": "activeChange"; "tabChange": "tabChange"; }, never, never, true, never>;
11257
11498
  }
11258
11499
 
11259
- type SuiTagInputSize = 'xsmall' | 'small' | 'medium';
11500
+ type SuiTagInputSize = 'xsmall' | 'small' | 'medium' | 'large' | 'xlarge';
11260
11501
  /**
11261
11502
  * SUI Tag Input — SUI Design System 2.0
11262
11503
  *
@@ -11279,6 +11520,11 @@ type SuiTagInputSize = 'xsmall' | 'small' | 'medium';
11279
11520
  * - small (Small 36): py=8px, pl=10px, pr=8px, gap=8px, radius=8px
11280
11521
  * - medium (Medium 40): py=10px, pl=12px, pr=10px, gap=8px, radius=10px (default)
11281
11522
  *
11523
+ * - large (48, extensión SUI 03-10-2026): py=12−1, pl=14, pr=12, gap=10, radius=12
11524
+ * - xlarge (52, extensión SUI 03-10-2026): py=14−1, pl=16, pr=14, gap=10, radius=12
11525
+ * Mismos valores que `sui-input` large/xlarge, para que un tag-input y un input
11526
+ * del mismo formulario midan igual en mobile.
11527
+ *
11282
11528
  * El alto se deriva del line-height(20) del texto + 2×py. No height explícito.
11283
11529
  *
11284
11530
  * - Texto input/placeholder: Paragraph/Small (Inter 14 / 20 / -0.084px ≈ -0.006em),
@@ -11356,6 +11602,12 @@ declare class SuiTagInput implements ControlValueAccessor {
11356
11602
  readonly rightIcon: _angular_core.InputSignal<string | boolean>;
11357
11603
  /** Nombre resuelto del icono trailing (null = no se renderiza). */
11358
11604
  protected readonly rightIconCfg: _angular_core.Signal<string | null>;
11605
+ /**
11606
+ * El tamaño que se le pasa al `sui-form-label`. Igual que en `sui-input`: el
11607
+ * label no crece con el campo; en large y xlarge crece el área de toque, no la
11608
+ * jerarquía del formulario (y `SuiFormLabelSize` llega hasta medium).
11609
+ */
11610
+ protected readonly labelSize: _angular_core.Signal<SuiFormLabelSize>;
11359
11611
  readonly label: _angular_core.InputSignal<string | null>;
11360
11612
  readonly sublabel: _angular_core.InputSignal<string | null>;
11361
11613
  readonly required: _angular_core.InputSignal<boolean>;
@@ -11408,6 +11660,11 @@ declare class SuiTagInput implements ControlValueAccessor {
11408
11660
  }
11409
11661
 
11410
11662
  type SuiTagStyle = 'stroke' | 'gray';
11663
+ /**
11664
+ * Tamaño. `medium` (24) es el de Figma y el default. `large` 32 y `xlarge` 40
11665
+ * son extensión SUI (03-10-2026) para mobile, con la X de quitar más grande.
11666
+ */
11667
+ type SuiTagSize = 'medium' | 'large' | 'xlarge';
11411
11668
  /**
11412
11669
  * SUI Tag — SUI Design System 2.0
11413
11670
  *
@@ -11428,6 +11685,7 @@ type SuiTagStyle = 'stroke' | 'gray';
11428
11685
  *
11429
11686
  * EXACT (pulled, verified pixel/token):
11430
11687
  * - Container: border-radius 6px (--sui-radius-6), height 24px (py=4px + 16px line).
11688
+ * (24 es `medium`, el default; ver TAMAÑOS abajo para large/xlarge.)
11431
11689
  * NOTE: distinto del badge (radius-full 999px) — NO confundir.
11432
11690
  * - Typography: Label/X Small (Inter Medium, 12px / line 16 / tracking 0, NO uppercase),
11433
11691
  * font-feature 'ss11' 1, 'calt' 0, 'liga' 0. Label color text-sub-600 (#5c5c5c).
@@ -11490,12 +11748,25 @@ type SuiTagStyle = 'stroke' | 'gray';
11490
11748
  * contenido proyectado (avatar/flag con color propio) NO se puede forzar a gris
11491
11749
  * desde el host — el consumer debe atenuar su propio leading si lo requiere.
11492
11750
  *
11751
+ * TAMAÑOS — extensión SUI (03-10-2026, pedido del dueño):
11752
+ * Figma trae solo 24 px, con una X de 16 que en mobile queda muy por debajo de
11753
+ * los 44 del dedo. Se suman dos tamaños en la escala del sui-button:
11754
+ * medium 24 · Label/X Small 12/16 · leading 16 · X 16 (default, Figma)
11755
+ * large 32 · Label/Small 14/20 · leading 20 · X 20
11756
+ * xlarge 40 · Label/Medium 16/24 · leading 20 · X 24
11757
+ * En large/xlarge la X además se agranda por dentro (::before invisible) para
11758
+ * que el área táctil llegue al alto del tag sin cambiar cómo se ve.
11759
+ *
11493
11760
  * CUSTOM (no en Figma — add-on local): ninguno por ahora. extraFeatures del
11494
11761
  * reporte de auditoría estaba vacío.
11495
11762
  */
11496
11763
  declare class SuiTag {
11497
11764
  /** Visual style. `stroke` = white bg + soft border; `gray` = weak-50 bg, no border. Default stroke. */
11498
11765
  readonly tagStyle: _angular_core.InputSignal<SuiTagStyle>;
11766
+ /** Tamaño: medium 24 (default, Figma) · large 32 · xlarge 40 (mobile). */
11767
+ readonly size: _angular_core.InputSignal<SuiTagSize>;
11768
+ /** Px del glyph de la X por tamaño (16 / 20 / 24). */
11769
+ readonly dismissIconSize: _angular_core.Signal<number>;
11499
11770
  /**
11500
11771
  * True cuando hay un leading element proyectado (icon/avatar/flag/brand/company)
11501
11772
  * en `[data-slot=start]`. Ajusta el padding (pl=4) y agrega gap=4 leading↔texto.
@@ -11521,9 +11792,15 @@ declare class SuiTag {
11521
11792
  readonly showsSublabel: _angular_core.Signal<boolean>;
11522
11793
  protected onDismiss(event: MouseEvent): void;
11523
11794
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SuiTag, never>;
11524
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<SuiTag, "sui-tag", never, { "tagStyle": { "alias": "tagStyle"; "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>;
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>;
11525
11796
  }
11526
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';
11527
11804
  /**
11528
11805
  * SUI Textarea — SUI Design System 2.0
11529
11806
  *
@@ -11605,6 +11882,7 @@ declare class SuiTag {
11605
11882
  * convention, bump it then — flagged here so it isn't silently changed.
11606
11883
  *
11607
11884
  * @input rows: number — Filas iniciales del textarea (default 4)
11885
+ * @input size: SuiTextareaSize — padding/radio, mismos nombres que sui-input (default medium)
11608
11886
  * @input label: string | null — Texto del label
11609
11887
  * @input sublabel: string | null — Texto secundario del label (ej. "Optional")
11610
11888
  * @input required: boolean — Muestra asterisco rojo en el label
@@ -11621,6 +11899,12 @@ declare class SuiTag {
11621
11899
  */
11622
11900
  declare class SuiTextarea implements ControlValueAccessor {
11623
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>;
11624
11908
  readonly placeholder: _angular_core.InputSignal<string>;
11625
11909
  readonly disabled: _angular_core.InputSignal<boolean>;
11626
11910
  readonly readonly: _angular_core.InputSignal<boolean>;
@@ -11660,7 +11944,7 @@ declare class SuiTextarea implements ControlValueAccessor {
11660
11944
  registerOnTouched(fn: () => void): void;
11661
11945
  setDisabledState(isDisabled: boolean): void;
11662
11946
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SuiTextarea, never>;
11663
- 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>;
11664
11948
  }
11665
11949
 
11666
11950
  /**
@@ -11947,6 +12231,8 @@ interface ColumnItem {
11947
12231
  * @input showFooter — muestra Cancel/Apply (default true)
11948
12232
  * @model value — SuiTimeValue | null (two-way + CVA)
11949
12233
  */
12234
+ /** `large` (48) es extensión SUI (03-10-2026) para mobile. */
12235
+ type SuiTimePickerSize = 'small' | 'medium' | 'large';
11950
12236
  declare class SuiTimePicker implements ControlValueAccessor {
11951
12237
  readonly label: _angular_core.InputSignal<string | null>;
11952
12238
  readonly sublabel: _angular_core.InputSignal<string | null>;
@@ -11957,7 +12243,16 @@ declare class SuiTimePicker implements ControlValueAccessor {
11957
12243
  readonly error: _angular_core.InputSignal<boolean>;
11958
12244
  readonly placeholder: _angular_core.InputSignal<string>;
11959
12245
  readonly disabled: _angular_core.InputSignal<boolean>;
11960
- 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">;
11961
12256
  /** Formato de display: '12h' (AM/PM) o '24h'. */
11962
12257
  readonly format: _angular_core.InputSignal<SuiTimeFormat>;
11963
12258
  /** Incremento de minutos de la lista (1, 5, 15, ...). Default 5. */
@@ -12665,5 +12960,5 @@ declare class SuiTooltipPanel {
12665
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>;
12666
12961
  }
12667
12962
 
12668
- 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 };
12669
- 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, SuiCheckboxSize, SuiCircularProgressBarColor, SuiCircularProgressBarSize, SuiColorDotColor, 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, SuiRadioSize, SuiRadioValue, SuiRatingAlignment, SuiRatingAppearance, SuiRatingReviewLink, SuiRatingSize, SuiRatingType, SuiRichEditorAction, SuiRichEditorCommand, SuiRichEditorItemState, SuiRichEditorItemType, SuiRichEditorLayout, SuiSegmentedControlItem, SuiSegmentedControlSize, SuiSelectOption, SuiSelectSize, SuiSelectType, SuiSidebarBrandConfig, SuiSidebarIndicatorColor, SuiSidebarItem, SuiSidebarMobileMode, SuiSidebarProfile, SuiSidebarSearchConfig, SuiSliderType, SuiSocialButtonBrand, SuiSocialButtonStyle, SuiStatusBadgeAppearance, SuiStatusBadgeStatus, SuiStepperItem, SuiStepperSize, SuiStepperState, SuiStepperVariant, SuiStoreCardData, SuiSwitchCardType, SuiSwitchSize, SuiTabBar, SuiTabChipItem, SuiTabMenuHorizontalItem, SuiTabMenuHorizontalSize, SuiTabMenuVerticalItem, SuiTabMenuVerticalStyle, SuiTableCellMisc, SuiTableCellPriority, SuiTableColumn, SuiTableSize, SuiTagInputSize, 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 };