@ajuarezso/sui-design-system 0.7.23 → 0.7.25
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json
CHANGED
|
@@ -1921,6 +1921,9 @@ type SuiCheckboxCardType = 'basic' | 'left-icon' | 'avatar' | 'card-provider' |
|
|
|
1921
1921
|
* badge→bordeado con texto disabled-300. CONFIRMADO (262:254/258/259).
|
|
1922
1922
|
* - Badge "NEW": variant Light color Information (state/information/light +
|
|
1923
1923
|
* dark), NO primary-base. CONFIRMADO (261:3928). Corregido del naranja previo.
|
|
1924
|
+
* Renderiza un `<sui-badge>` real (homologación familia radio/checkbox card):
|
|
1925
|
+
* defaults color 'blue' (→ state information, fiel Figma) + variant 'light' +
|
|
1926
|
+
* size 'small'; la SuiBadgeConfig del consumer puede overridear los tres.
|
|
1924
1927
|
* - 6 types completos (basic/left-icon/avatar + card-provider/brand/company via
|
|
1925
1928
|
* slot proyectado). CONFIRMADO contra los 24 variants.
|
|
1926
1929
|
*
|
|
@@ -1978,7 +1981,9 @@ declare class SuiCheckboxCard implements ControlValueAccessor {
|
|
|
1978
1981
|
/** URL de imagen para type='avatar'. Si falla, fallback a iniciales del label. */
|
|
1979
1982
|
readonly imageUrl: _angular_core.InputSignal<string | null>;
|
|
1980
1983
|
/** Badge junto al label — string shorthand ('NEW') o SuiBadgeConfig
|
|
1981
|
-
(label + color/variant/size, tipado como sui-badge).
|
|
1984
|
+
(label + color/variant/size, tipado como sui-badge). Renderiza un
|
|
1985
|
+
`<sui-badge>` real; defaults blue/light/small (information azul, fiel
|
|
1986
|
+
Figma 261:3928). null = sin badge. */
|
|
1982
1987
|
readonly badge: _angular_core.InputSignal<string | SuiBadgeConfig | null>;
|
|
1983
1988
|
protected readonly badgeCfg: _angular_core.Signal<SuiBadgeConfig | null>;
|
|
1984
1989
|
/** Indeterminate state (tri-state checkbox). */
|
|
@@ -3044,7 +3049,7 @@ declare class SuiFlag {
|
|
|
3044
3049
|
* - SIN border (el input padre tiene su propio border)
|
|
3045
3050
|
* - SIN focus ring (el input padre maneja el focus state)
|
|
3046
3051
|
* - SIN error state (heredado del input padre)
|
|
3047
|
-
* - X-Small usa flag 16×16
|
|
3052
|
+
* - X-Small usa flag 16×16, medium/small 20×20 (mismo patrón que el compact-select normal)
|
|
3048
3053
|
* - Menu matchea trigger width con minWidth=200
|
|
3049
3054
|
*
|
|
3050
3055
|
* `ControlValueAccessor` implementado — funciona con `formControlName`.
|
|
@@ -5281,7 +5286,7 @@ declare class SuiFileUpload {
|
|
|
5281
5286
|
protected readonly inputRef: _angular_core.Signal<ElementRef<HTMLInputElement> | undefined>;
|
|
5282
5287
|
protected readonly dragging: _angular_core.WritableSignal<boolean>;
|
|
5283
5288
|
protected readonly internalError: _angular_core.WritableSignal<string | null>;
|
|
5284
|
-
protected readonly state: _angular_core.Signal<"
|
|
5289
|
+
protected readonly state: _angular_core.Signal<"error" | "default" | "disabled" | "dragover">;
|
|
5285
5290
|
protected readonly resolvedTitle: _angular_core.Signal<string>;
|
|
5286
5291
|
protected readonly resolvedSubtitle: _angular_core.Signal<string>;
|
|
5287
5292
|
protected readonly resolvedErrorMessage: _angular_core.Signal<string | null>;
|
|
@@ -6141,6 +6146,9 @@ type SuiInputType = 'text' | 'email' | 'password' | 'number' | 'tel' | 'url' | '
|
|
|
6141
6146
|
* @input required: boolean — Muestra asterisco rojo en el label
|
|
6142
6147
|
* @input tooltip: string | null — Tooltip en ícono info del label
|
|
6143
6148
|
* @input hint: string | null — Mensaje de ayuda debajo del field
|
|
6149
|
+
* @input hintIcon: string | null — Icono Remix del hint neutral (ej. 'information-fill',
|
|
6150
|
+
* como en el set de Figma 266:5251). null (default) = sin icono. No afecta el
|
|
6151
|
+
* estado error (sui-form-hint conserva su icono default por variant).
|
|
6144
6152
|
* @input error: boolean — Activa borde rojo + muestra errorMessage
|
|
6145
6153
|
* @input errorMessage: string | null — Mensaje de error
|
|
6146
6154
|
*
|
|
@@ -6196,6 +6204,15 @@ declare class SuiInput implements ControlValueAccessor {
|
|
|
6196
6204
|
readonly errorMessage: _angular_core.InputSignal<string | null>;
|
|
6197
6205
|
readonly label: _angular_core.InputSignal<string | null>;
|
|
6198
6206
|
readonly hint: _angular_core.InputSignal<string | null>;
|
|
6207
|
+
/**
|
|
6208
|
+
* Icono Remix del hint neutral (ej. 'information-fill' ⓘ como en el set de
|
|
6209
|
+
* Figma). null (default) = sin icono — comportamiento previo. Aditivo: en
|
|
6210
|
+
* estado error NO aplica (el hint de error mantiene su icono default).
|
|
6211
|
+
*/
|
|
6212
|
+
readonly hintIcon: _angular_core.InputSignal<string | null>;
|
|
6213
|
+
/** Icon efectivo para sui-form-hint: solo aplica al hint neutral. En error se
|
|
6214
|
+
pasa undefined → sui-form-hint usa su default por variant (information-fill). */
|
|
6215
|
+
protected readonly _resolvedHintIcon: _angular_core.Signal<string | undefined>;
|
|
6199
6216
|
readonly autocomplete: _angular_core.InputSignal<string | null>;
|
|
6200
6217
|
/** Texto secundario del label (ej. "Optional", "Required") */
|
|
6201
6218
|
readonly sublabel: _angular_core.InputSignal<string | null>;
|
|
@@ -6346,7 +6363,7 @@ declare class SuiInput implements ControlValueAccessor {
|
|
|
6346
6363
|
registerOnTouched(fn: () => void): void;
|
|
6347
6364
|
setDisabledState(isDisabled: boolean): void;
|
|
6348
6365
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SuiInput, never>;
|
|
6349
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SuiInput, "sui-input", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "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; }; "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; }; "maxlength": { "alias": "maxlength"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "paste": { "alias": "paste"; "required": false; "isSignal": true; }; "prefix": { "alias": "prefix"; "required": false; "isSignal": true; }; "showClear": { "alias": "showClear"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "iconPosition": { "alias": "iconPosition"; "required": false; "isSignal": true; }; "closeOnOutsideClick": { "alias": "closeOnOutsideClick"; "required": false; "isSignal": true; }; "leadingDivider": { "alias": "leadingDivider"; "required": false; "isSignal": true; }; "trailingDivider": { "alias": "trailingDivider"; "required": false; "isSignal": true; }; "leadingControl": { "alias": "leadingControl"; "required": false; "isSignal": true; }; "trailingControl": { "alias": "trailingControl"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, ["[data-slot=start]", "[data-slot=end]"], true, never>;
|
|
6366
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SuiInput, "sui-input", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "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; }; "hintIcon": { "alias": "hintIcon"; "required": false; "isSignal": true; }; "autocomplete": { "alias": "autocomplete"; "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; }; "maxlength": { "alias": "maxlength"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "paste": { "alias": "paste"; "required": false; "isSignal": true; }; "prefix": { "alias": "prefix"; "required": false; "isSignal": true; }; "showClear": { "alias": "showClear"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "iconPosition": { "alias": "iconPosition"; "required": false; "isSignal": true; }; "closeOnOutsideClick": { "alias": "closeOnOutsideClick"; "required": false; "isSignal": true; }; "leadingDivider": { "alias": "leadingDivider"; "required": false; "isSignal": true; }; "trailingDivider": { "alias": "trailingDivider"; "required": false; "isSignal": true; }; "leadingControl": { "alias": "leadingControl"; "required": false; "isSignal": true; }; "trailingControl": { "alias": "trailingControl"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, ["[data-slot=start]", "[data-slot=end]"], true, never>;
|
|
6350
6367
|
}
|
|
6351
6368
|
|
|
6352
6369
|
type SuiIntegrationSwitchType = 'horizontal' | 'vertical';
|
|
@@ -6512,10 +6529,10 @@ declare class SuiIntegrationSwitch implements ControlValueAccessor {
|
|
|
6512
6529
|
* padding: 2px 6px
|
|
6513
6530
|
* Icon content (16×16):
|
|
6514
6531
|
* padding: 2px (all sides)
|
|
6515
|
-
* color:
|
|
6532
|
+
* color: var(--text/sub-600) #5c5c5c (forzado por el scss sobre el sui-icon proyectado)
|
|
6516
6533
|
*
|
|
6517
|
-
*
|
|
6518
|
-
*
|
|
6534
|
+
* El variant NO se auto-detecta: default es `default`; para el caso icono el
|
|
6535
|
+
* consumer debe pasar `variant="subtle"` explícito.
|
|
6519
6536
|
*
|
|
6520
6537
|
* Uso:
|
|
6521
6538
|
* <sui-kbd>⌘K</sui-kbd> <!-- text default -->
|
|
@@ -7069,13 +7086,11 @@ declare class SuiModalFooter {
|
|
|
7069
7086
|
readonly secondaryButton: _angular_core.InputSignal<string | SuiFooterButtonConfig | null>;
|
|
7070
7087
|
/** Type Stretch de Figma: los botones ocupan todo el ancho (50/50). */
|
|
7071
7088
|
readonly stretch: _angular_core.InputSignal<boolean>;
|
|
7072
|
-
/**
|
|
7073
|
-
|
|
7074
|
-
|
|
7075
|
-
|
|
7076
|
-
|
|
7077
|
-
fullscreen — touch targets móviles — y `small` (36px, canon Figma
|
|
7078
|
-
472:566) en dialogs normales. */
|
|
7089
|
+
/** Size explícito de los botones. Si no se pasa, el DS legisla `large`
|
|
7090
|
+
(48px) en TODOS los modales — decisión de marca del proyecto (2026-07-23):
|
|
7091
|
+
touch target consistente entre dialogs y hojas fullscreen, por encima del
|
|
7092
|
+
canon Figma 472:566 que dibuja `small` (36px). Pasar buttonSize para
|
|
7093
|
+
forzar otro tamaño en un caso puntual. */
|
|
7079
7094
|
readonly buttonSize: _angular_core.InputSignal<SuiButtonSize | null>;
|
|
7080
7095
|
protected readonly effectiveButtonSize: _angular_core.Signal<SuiButtonSize>;
|
|
7081
7096
|
readonly primaryClick: _angular_core.OutputEmitterRef<void>;
|
|
@@ -7301,9 +7316,13 @@ type SuiNotificationStyle = 'filled' | 'light' | 'lighter' | 'stroke';
|
|
|
7301
7316
|
* derecha (input `showMore` → output `moreClicked`).
|
|
7302
7317
|
* ────────────────────────────────────────────────────────────────────────────
|
|
7303
7318
|
*
|
|
7304
|
-
*
|
|
7305
|
-
*
|
|
7306
|
-
* -
|
|
7319
|
+
* VERIFIED 2026-07-23 (screenshot MCP del set 4308:731 — sella el PENDING
|
|
7320
|
+
* VERIFY heredado de la homologación 2026-05-29):
|
|
7321
|
+
* - Items de panel = filas PLANAS: sin border/shadow propios (el radius-12
|
|
7322
|
+
* solo se manifiesta en el fill bg-weak-50 del hover, redondeado en Figma).
|
|
7323
|
+
* - File card: hug-content con icono attachment-line 16 + "(4mb)" muted
|
|
7324
|
+
* (soft-400); bg-white, border stroke/soft-200, radius-8, shadow xs.
|
|
7325
|
+
* - Message bubble: hug-content (radius asimétrico tl4 tr8 br10 bl8 OK).
|
|
7307
7326
|
* - Button-type: Deny stroke + Approve filled, px-10 py-6 radius-8.
|
|
7308
7327
|
* - Company logo: 16×16 circle, antes del texto de descripción.
|
|
7309
7328
|
* - Hover: bg --sui-bg-weak-50 (#f7f7f7) + more-2-line 20px compact radius-6.
|
|
@@ -7486,13 +7505,15 @@ declare class SuiOtpInput implements ControlValueAccessor {
|
|
|
7486
7505
|
* SUI Page Header — header reutilizable para cada page del empresa.
|
|
7487
7506
|
*
|
|
7488
7507
|
* Reemplaza al topbar contextual en mobile. Cada page lo coloca arriba del
|
|
7489
|
-
* todo (antes de cualquier contenido)
|
|
7490
|
-
*
|
|
7508
|
+
* todo (antes de cualquier contenido) y deja un espacio visual coherente
|
|
7509
|
+
* entre pages. El safe-area-inset-top lo maneja el layout/container de la
|
|
7510
|
+
* página, NO este componente (padding vertical fijo, sin env()).
|
|
7491
7511
|
*
|
|
7492
7512
|
* Slots:
|
|
7493
|
-
* - default → contenido principal (cards, listas, etc.)
|
|
7494
7513
|
* - [slot=actions] → botones a la derecha (siempre visibles, no scrollean
|
|
7495
7514
|
* con la página). Útil para "Guardar", "Agregar", filtros.
|
|
7515
|
+
* No hay slot default: el contenido de la página va DESPUÉS del header,
|
|
7516
|
+
* no dentro — cualquier contenido proyectado sin slot="actions" se descarta.
|
|
7496
7517
|
*
|
|
7497
7518
|
* Inputs:
|
|
7498
7519
|
* - title: string visible (h1)
|
|
@@ -7994,13 +8015,13 @@ type SuiRadioCardType = 'basic' | 'left-icon' | 'avatar' | 'card-provider' | 'br
|
|
|
7994
8015
|
* (el component_set no publica variant Focus distinto del Hover/Active). Es
|
|
7995
8016
|
* extensión de a11y del proyecto, no rompe fidelidad visual con Figma.
|
|
7996
8017
|
*
|
|
7997
|
-
*
|
|
7998
|
-
* - type='card-provider' (515:4374): slot 32×24 radius-4 para logo de tarjeta
|
|
7999
|
-
*
|
|
8000
|
-
* - type='
|
|
8001
|
-
*
|
|
8002
|
-
*
|
|
8003
|
-
*
|
|
8018
|
+
* IMPLEMENTED 2026-07-21 (types completos del set Figma):
|
|
8019
|
+
* - type='card-provider' (515:4374): slot 32×24 radius-4 para logo de tarjeta
|
|
8020
|
+
* (imageUrl).
|
|
8021
|
+
* - type='brand' (515:4383): slot 40×40 logo externo sin frame
|
|
8022
|
+
* (sui-brand-logo via [brand], o imageUrl circular de fallback).
|
|
8023
|
+
* - type='company' (515:4392): slot 40×40 circle radius-full
|
|
8024
|
+
* (imageUrl, fallback sui-avatar con iniciales del label).
|
|
8004
8025
|
*
|
|
8005
8026
|
* Form integration:
|
|
8006
8027
|
* - Implementa ControlValueAccessor: usable con [(ngModel)] / [formControl].
|
|
@@ -8223,6 +8244,8 @@ interface SuiRatingCellView {
|
|
|
8223
8244
|
* + border stroke/soft-200 + regular-shadow x-small (0 1px 2px rgba(10,13,20,.03));
|
|
8224
8245
|
* hover → bg weak-50 sin border ni shadow. Es la versión "tarjeta" del input de
|
|
8225
8246
|
* estrellas/corazones (distinta del bare 'inline' y del segmented 'bar').
|
|
8247
|
+
* Estado EMPTY: glyph RELLENO gris sólido ("Empty Filled" star-fill/heart-3-fill
|
|
8248
|
+
* en stroke/sub-300), NO el outline del inline — ver cellIconName().
|
|
8226
8249
|
* - 'bar' → 5 cells horizontales con border + padding (matches Rating Bar).
|
|
8227
8250
|
* Usado para input formulario (modal review en order-tracking, rate-order
|
|
8228
8251
|
* CSAT survey). Permite type='emoji'|'number' además de star/heart.
|
|
@@ -8241,9 +8264,10 @@ interface SuiRatingCellView {
|
|
|
8241
8264
|
* selected agrega bg weak-50. emoji: solo selected sale de grayscale.
|
|
8242
8265
|
*
|
|
8243
8266
|
* PENDING VERIFY (revisar en device / master-preview tras deploy):
|
|
8244
|
-
* - 'cell' appearance:
|
|
8245
|
-
*
|
|
8246
|
-
*
|
|
8267
|
+
* - 'cell' appearance: screenshot MCP de 532:4160 verificado 2026-07-23 —
|
|
8268
|
+
* confirmó que el empty es glyph RELLENO gris (fix aplicado en cellIconName).
|
|
8269
|
+
* Queda pendiente medir chrome fino en device (padding 12 / radius 10 /
|
|
8270
|
+
* icon 32 / shadow x-small).
|
|
8247
8271
|
* - 'bar-area' homologado a Figma 535:5057: card 132px = bar 36px + input 96px;
|
|
8248
8272
|
* textarea resize:none, min-height 72px, top-aligned (text node y=12 en Figma)
|
|
8249
8273
|
* - hover 'Empty Filled' star/heart: glyph relleno sólido en stroke/sub-300
|
|
@@ -8373,6 +8397,15 @@ declare class SuiRating implements ControlValueAccessor {
|
|
|
8373
8397
|
setDisabledState(isDisabled: boolean): void;
|
|
8374
8398
|
/** Map del fill al icon name de Remix. */
|
|
8375
8399
|
iconName(type: SuiRatingType, fill: 'empty' | 'half' | 'full'): string;
|
|
8400
|
+
/**
|
|
8401
|
+
* Icon name para el template iconCell (appearances 'inline' y 'cell').
|
|
8402
|
+
* En appearance='cell' el estado EMPTY renderiza el glyph RELLENO gris
|
|
8403
|
+
* (star-fill / heart-3-fill en stroke/sub-300) — Figma Rating Cell 532:4160
|
|
8404
|
+
* usa el atom "Empty Filled" (relleno sólido neutro), NO el outline
|
|
8405
|
+
* "Empty Line" del inline. Verificado contra screenshot MCP 2026-07-23.
|
|
8406
|
+
* inline mantiene el outline (Rating Items 532:4137 / Rating Review 532:4340).
|
|
8407
|
+
*/
|
|
8408
|
+
cellIconName(fill: 'empty' | 'half' | 'full'): string;
|
|
8376
8409
|
/**
|
|
8377
8410
|
* Icon name para una celda de bar/bar-area según su estado visual (Figma 535:4535).
|
|
8378
8411
|
* El glyph de HOVER ("Empty Filled") y SELECTED ("Full") es el mismo relleno sólido
|
|
@@ -8613,7 +8646,8 @@ declare class SuiSelect<T = any> implements ControlValueAccessor {
|
|
|
8613
8646
|
RemixIcon custom, false = sin icono (default: opt-in). Consolida el par
|
|
8614
8647
|
leftIcon (boolean) + leadingIcon (string) previo. */
|
|
8615
8648
|
readonly leadingIcon: _angular_core.InputSignal<string | boolean>;
|
|
8616
|
-
/** sui-flag name para `type="country"`
|
|
8649
|
+
/** sui-flag name para `type="country"` — se muestra SOLO con selección hecha;
|
|
8650
|
+
en estado vacío el left slot renderea el globo (global-line), fiel a Figma. */
|
|
8617
8651
|
readonly flag: _angular_core.InputSignal<"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>;
|
|
8618
8652
|
/** Imagen del left slot cuando hay value (avatar/brand/provider/company logo). */
|
|
8619
8653
|
readonly imageUrl: _angular_core.InputSignal<string | null>;
|
|
@@ -9559,10 +9593,12 @@ type SuiSwitchCardType = 'basic' | 'left-icon' | 'avatar' | 'card-provider' | 'b
|
|
|
9559
9593
|
* - Sublabel: 12/16 regular sub-600
|
|
9560
9594
|
* - Description: 12/16 regular sub-600
|
|
9561
9595
|
* - Title row gap: 4px, Body gap: 4px
|
|
9562
|
-
* -
|
|
9563
|
-
*
|
|
9564
|
-
*
|
|
9565
|
-
*
|
|
9596
|
+
* - Badge junto al label: <sui-badge> real honrando SuiBadgeConfig
|
|
9597
|
+
* (color/variant/size). Defaults blue/light/small = bg state/information/light,
|
|
9598
|
+
* text state/information/dark, 11/12 500 0.22px uppercase, padding 2/8,
|
|
9599
|
+
* radius 999 — color INFORMATION azul, fiel a Figma (DECISIONES.md §1: para
|
|
9600
|
+
* este badge "se cambió a azul (fiel Figma)"; el naranja de marca aplica solo
|
|
9601
|
+
* al active border / focus ring).
|
|
9566
9602
|
*
|
|
9567
9603
|
* LEADING SLOTS (verified vs Figma 2026-05-29, pull per-type design-context):
|
|
9568
9604
|
* - basic → sin leading.
|
|
@@ -9595,8 +9631,8 @@ type SuiSwitchCardType = 'basic' | 'left-icon' | 'avatar' | 'card-provider' | 'b
|
|
|
9595
9631
|
* - Switch internal margin-top 2px para baseline align: convención visual.
|
|
9596
9632
|
*
|
|
9597
9633
|
* COLOR MAPPING:
|
|
9598
|
-
* #c0d5ff → --sui-state-information-light (
|
|
9599
|
-
* #122368 → --sui-state-information-dark (
|
|
9634
|
+
* #c0d5ff → --sui-state-information-light (badge default bg, via sui-badge blue/light)
|
|
9635
|
+
* #122368 → --sui-state-information-dark (badge default text, via sui-badge blue/light)
|
|
9600
9636
|
* No hex hardcoded fuera de los fallbacks de los tokens.
|
|
9601
9637
|
*
|
|
9602
9638
|
* Form integration:
|
|
@@ -10167,6 +10203,8 @@ interface SuiTabMenuHorizontalItem<T = string> {
|
|
|
10167
10203
|
declare class SuiTabMenuHorizontal<T = string> {
|
|
10168
10204
|
readonly tabs: _angular_core.InputSignal<SuiTabMenuHorizontalItem<T>[]>;
|
|
10169
10205
|
readonly active: _angular_core.ModelSignal<T | undefined>;
|
|
10206
|
+
/** PENDING spec: hoy solo emite data-sui-size (sin reglas scss) y el set de
|
|
10207
|
+
Figma no tiene eje size. Se conserva por compat de consumers. */
|
|
10170
10208
|
readonly size: _angular_core.InputSignal<SuiTabMenuHorizontalSize>;
|
|
10171
10209
|
readonly tabChange: _angular_core.OutputEmitterRef<T>;
|
|
10172
10210
|
isActive(tab: SuiTabMenuHorizontalItem<T>): boolean;
|
|
@@ -11045,6 +11083,11 @@ declare class SuiTimePicker implements ControlValueAccessor {
|
|
|
11045
11083
|
protected readonly triggerEl: _angular_core.Signal<ElementRef<HTMLElement> | undefined>;
|
|
11046
11084
|
/** Ref al sui-dropdown-menu interno — para invocar open/close (modo popover). */
|
|
11047
11085
|
private readonly _menu;
|
|
11086
|
+
/** Columnas scrollables del panel (hora / minuto / periodo) — la query
|
|
11087
|
+
alcanza también la embedded view proyectada al CDK Overlay porque el
|
|
11088
|
+
ng-template se declara en este componente. */
|
|
11089
|
+
private readonly _columnEls;
|
|
11090
|
+
private readonly _injector;
|
|
11048
11091
|
private _onChange;
|
|
11049
11092
|
private _onTouched;
|
|
11050
11093
|
constructor();
|
|
@@ -11063,6 +11106,14 @@ declare class SuiTimePicker implements ControlValueAccessor {
|
|
|
11063
11106
|
hourLabelOf(item: ColumnItem): string;
|
|
11064
11107
|
toggle(): void;
|
|
11065
11108
|
openPopover(): void;
|
|
11109
|
+
/**
|
|
11110
|
+
* Scrollea cada columna (hora / minuto / periodo) para que su opción activa
|
|
11111
|
+
* quede centrada en el viewport de la columna (equivalente a block: 'center').
|
|
11112
|
+
* Instantáneo (sin behavior smooth): al abrir, el panel aparece ya
|
|
11113
|
+
* posicionado. Con step que no contiene el minuto exacto (-1) la columna se
|
|
11114
|
+
* deja en su scroll actual.
|
|
11115
|
+
*/
|
|
11116
|
+
private _scrollColumnsToSelection;
|
|
11066
11117
|
cancel(): void;
|
|
11067
11118
|
apply(): void;
|
|
11068
11119
|
/**
|