@ajuarezso/sui-design-system 0.5.4 → 0.6.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.
|
@@ -23,6 +23,93 @@ interface SuiTabBar {
|
|
|
23
23
|
}
|
|
24
24
|
declare const SUI_TAB_BAR: InjectionToken<SuiTabBar>;
|
|
25
25
|
|
|
26
|
+
type SuiBadgeColor = 'gray' | 'blue' | 'orange' | 'red' | 'green' | 'yellow' | 'purple' | 'sky' | 'pink' | 'teal';
|
|
27
|
+
type SuiBadgeVariant = 'filled' | 'light' | 'lighter' | 'stroke' | 'dark';
|
|
28
|
+
type SuiBadgeSize = 'small' | 'medium';
|
|
29
|
+
type SuiBadgeType = 'basic' | 'with-dot' | 'left-icon' | 'right-icon' | 'number';
|
|
30
|
+
/**
|
|
31
|
+
* Config de badge embebido en otros componentes (checkbox-label, switch-label,
|
|
32
|
+
* integration-switch, checkbox-card, radio-card, switch-card). Un solo input
|
|
33
|
+
* `[badge]` reemplaza al par booleano + badgeLabel; acepta string shorthand
|
|
34
|
+
* (`badge="NEW"`) para el caso común. Los componentes que renderizan un
|
|
35
|
+
* <sui-badge> real honran color/variant/size (defaults orange/light/small);
|
|
36
|
+
* las cards usan su render Figma-exacto y toman solo `label`.
|
|
37
|
+
*/
|
|
38
|
+
interface SuiBadgeConfig {
|
|
39
|
+
label: string;
|
|
40
|
+
color?: SuiBadgeColor;
|
|
41
|
+
variant?: SuiBadgeVariant;
|
|
42
|
+
size?: SuiBadgeSize;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* SUI Badge — SUI Design System 2.0
|
|
46
|
+
*
|
|
47
|
+
* Figma file: 8p1k72aKKvzJV4XcvPS4VO
|
|
48
|
+
* Variants pulled for verification:
|
|
49
|
+
* - 118:2584 Basic/Filled/Small/Gray
|
|
50
|
+
* - 118:2587 Basic/Light/Small/Gray
|
|
51
|
+
* - 118:2590 Basic/Lighter/Small/Gray
|
|
52
|
+
* - 118:2616 With Dot/Filled/Small/Gray
|
|
53
|
+
* - 118:2322 Left Icon/Light/Small/Gray
|
|
54
|
+
* - 289:7551 Right Icon/Stroke/Small/Gray
|
|
55
|
+
* - 118:2686 Basic/Filled/Small/Gray/Number=On
|
|
56
|
+
* - 119:2361 Basic/Filled/Medium/Gray
|
|
57
|
+
*
|
|
58
|
+
* EXACT (pulled):
|
|
59
|
+
* - Small: padding py=2px, font Subheading/2X Small 11/12/0.22px UPPERCASE, ss11 features
|
|
60
|
+
* - Medium basic: padding px=8 py=2 (119:2361), font Label/X Small 12/16/0 NO uppercase, ss11
|
|
61
|
+
* - Radius: 999 (full)
|
|
62
|
+
* - Per-type padding Small: Basic=px8 / LeftIcon=pl4 pr8 / RightIcon=pl8 pr4 /
|
|
63
|
+
* WithDot=pr8 ONLY (no left, no py) / Number=p2 (near-square, text w12)
|
|
64
|
+
* - WithDot box: dot vive en CONTAINER 16×16 (full-height del badge small),
|
|
65
|
+
* círculo r=2 → DIÁMETRO 4px centrado (asset SVG 118:2632). El dot del Badge
|
|
66
|
+
* regular (4px) es DISTINTO del dot del sui-status-badge (6px, r=3) — assets
|
|
67
|
+
* separados en el DS, NO unificar.
|
|
68
|
+
* - WithDot Medium (119:2369): padding pl2 pr8 py2, dot box SIGUE 16×16 (NO 20).
|
|
69
|
+
* - Style colors: Filled=bg-base+text-white, Light=bg-light+text-dark,
|
|
70
|
+
* Lighter=bg-lighter+text-BASE (NOT dark!), Stroke=border1-base+text-base
|
|
71
|
+
*
|
|
72
|
+
* INFERRED (declared approximations):
|
|
73
|
+
* - Medium Left/Right Icon padding: same asymmetric pattern as Small (4/8 vs 8/4)
|
|
74
|
+
* - Medium Number: p=2 (proportional to Small)
|
|
75
|
+
* - Medium icon size: 16x16 (scaled from Small's 12x12)
|
|
76
|
+
*
|
|
77
|
+
* PENDING VERIFY (inferido, sin confirmar pixel-exacto en Figma):
|
|
78
|
+
* - Medium Left Icon / Right Icon: el padding asimétrico (pl4/pr8, pl8/pr4) se
|
|
79
|
+
* asumió igual al Small. No se pulló la variante Medium+LeftIcon/RightIcon
|
|
80
|
+
* específica del archivo — el frame 118:2324 es too-large para pull directo.
|
|
81
|
+
* - Medium icon slot size 16×16: escalado del Small (12×12) sin confirmar contra
|
|
82
|
+
* una variante Medium con icono real.
|
|
83
|
+
* - Number type: el width del label (12px small / 16px medium) y el padding p2
|
|
84
|
+
* se infirieron de la variante Small Number=On (118:2686); no se confirmó si
|
|
85
|
+
* un número de 2 dígitos ('99') reflowea el width o se mantiene fijo.
|
|
86
|
+
* - Disabled: Figma demuestra Disabled=On solo en color Gray (representativo).
|
|
87
|
+
* El override universal a tokens disabled (todos los colores) es extrapolación
|
|
88
|
+
* intencional — más completa que la demo, asumida consistente con SUI 2.0.
|
|
89
|
+
*
|
|
90
|
+
* CUSTOM (not in Figma 118:2324 — add-on local del proyecto):
|
|
91
|
+
* - `variant='dark'` — glass translúcido vibrante pensado para superficies
|
|
92
|
+
* oscuras. El color tiñe el bg (22% alpha) y borde (45% alpha) del
|
|
93
|
+
* state-base, texto blanco para contraste. Se mantiene porque está en
|
|
94
|
+
* uso en pantallas con backgrounds oscuros (master-preview, etc.).
|
|
95
|
+
* Sin `[color]`, cae al fallback white-glass neutral.
|
|
96
|
+
*
|
|
97
|
+
* - `disabled` state: implementado con override de bg/border/text a tokens
|
|
98
|
+
* disabled-300 y faded-light/lighter (matchea visual figma), NO con
|
|
99
|
+
* `opacity` (que produciría tintes desaturados en lugar de gris uniforme).
|
|
100
|
+
*/
|
|
101
|
+
declare class SuiBadge {
|
|
102
|
+
readonly color: _angular_core.InputSignal<SuiBadgeColor>;
|
|
103
|
+
readonly variant: _angular_core.InputSignal<SuiBadgeVariant>;
|
|
104
|
+
readonly size: _angular_core.InputSignal<SuiBadgeSize>;
|
|
105
|
+
readonly type: _angular_core.InputSignal<SuiBadgeType>;
|
|
106
|
+
readonly disabled: _angular_core.InputSignal<boolean>;
|
|
107
|
+
/** Internal: true when the badge renders its built-in dot (type=with-dot). */
|
|
108
|
+
readonly showsDot: _angular_core.Signal<boolean>;
|
|
109
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SuiBadge, never>;
|
|
110
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SuiBadge, "sui-badge", never, { "color": { "alias": "color"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "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; }; }, {}, never, ["[data-slot=start]", "*", "[data-slot=end]"], true, never>;
|
|
111
|
+
}
|
|
112
|
+
|
|
26
113
|
type SuiAccordionFlipIcon = 'off' | 'on';
|
|
27
114
|
/**
|
|
28
115
|
* SUI Accordion — SUI Design System 2.0
|
|
@@ -123,9 +210,11 @@ type SuiAccordionFlipIcon = 'off' | 'on';
|
|
|
123
210
|
* el contenido proyectado se monta solo cuando se abre la primera vez,
|
|
124
211
|
* y permanece en el DOM (no se desmuenta al cerrar) para conservar
|
|
125
212
|
* state interno y evitar re-medir.
|
|
126
|
-
* - `leftIcon` (boolean)
|
|
127
|
-
* `flipIcon=off
|
|
128
|
-
* (
|
|
213
|
+
* - `leftIcon` (string | boolean) controla el slot izquierdo cuando
|
|
214
|
+
* `flipIcon=off`: true = icono default 'question-line', string = nombre
|
|
215
|
+
* custom (Remix), false = sin icono. Cuando `flipIcon=on`, el slot
|
|
216
|
+
* izquierdo nunca aparece (el toggle ocupa esa posición — coincide con
|
|
217
|
+
* Figma 210:4105/4111/4117).
|
|
129
218
|
*
|
|
130
219
|
* iOS WKWebView :active fix: el host es interactive (botón), aplicamos los
|
|
131
220
|
* listeners touchstart/touchend para liberar :active inmediatamente.
|
|
@@ -185,24 +274,29 @@ declare class SuiAccordion {
|
|
|
185
274
|
*/
|
|
186
275
|
readonly flipIcon: _angular_core.InputSignal<SuiAccordionFlipIcon>;
|
|
187
276
|
/**
|
|
188
|
-
*
|
|
189
|
-
*
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
/**
|
|
193
|
-
* Nombre del icono izquierdo (Remix Icon, sin prefijo `ri-`).
|
|
194
|
-
* Solo se renderiza si `flipIcon=off` y `leftIcon=true`.
|
|
195
|
-
* Default: 'question-line'.
|
|
277
|
+
* Icono izquierdo (solo aplica con `flipIcon=off`):
|
|
278
|
+
* - `true` (default) → icono default `question-line`
|
|
279
|
+
* - string → nombre custom del Remix Icon (sin prefijo `ri-`)
|
|
280
|
+
* - `false` → sin icono
|
|
196
281
|
*/
|
|
197
|
-
readonly
|
|
282
|
+
readonly leftIcon: _angular_core.InputSignal<string | boolean>;
|
|
283
|
+
/** Nombre resuelto del icono izquierdo; `null` = no renderizar el slot. */
|
|
284
|
+
protected readonly leftIconName: _angular_core.Signal<string | null>;
|
|
198
285
|
/**
|
|
199
|
-
* Badge opcional en el header
|
|
200
|
-
*
|
|
201
|
-
*
|
|
286
|
+
* Badge opcional en el header — string shorthand (`badge="New"`) o
|
|
287
|
+
* `SuiBadgeConfig` ({ label, color?, variant?, size? }, tipado sui-badge).
|
|
288
|
+
* `null` = sin badge. Render con `<sui-badge>` real.
|
|
289
|
+
*
|
|
290
|
+
* Defaults cuando el config no trae color/variant/size: color `green` +
|
|
291
|
+
* variant `lighter` + size `small` — equivalente visual del viejo enum
|
|
292
|
+
* `badgeColor='new'` (texto success-base sobre bg success-lighter = variant
|
|
293
|
+
* `lighter` de sui-badge). Mapeo del enum eliminado → el consumer lo pasa
|
|
294
|
+
* ahora via config: new→`color: 'green'` · upd→`color: 'blue'` ·
|
|
295
|
+
* old→`color: 'gray'`.
|
|
202
296
|
*/
|
|
203
|
-
readonly badge: _angular_core.InputSignal<string>;
|
|
204
|
-
/**
|
|
205
|
-
readonly
|
|
297
|
+
readonly badge: _angular_core.InputSignal<string | SuiBadgeConfig | null>;
|
|
298
|
+
/** Config resuelta del badge (string → { label }; null → null). */
|
|
299
|
+
protected readonly badgeCfg: _angular_core.Signal<SuiBadgeConfig | null>;
|
|
206
300
|
/** Estado del data-attribute (default | active) — usa _resolvedOpen para
|
|
207
301
|
* consistencia visual con el data-state del body (que también usa
|
|
208
302
|
* _resolvedOpen). El icono y el bg cambian junto con la animation. */
|
|
@@ -270,7 +364,7 @@ declare class SuiAccordion {
|
|
|
270
364
|
private readonly syncOpen;
|
|
271
365
|
toggle(): void;
|
|
272
366
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SuiAccordion, never>;
|
|
273
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SuiAccordion, "sui-accordion", never, { "title": { "alias": "title"; "required": false; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "open": { "alias": "open"; "required": false; "isSignal": true; }; "lazy": { "alias": "lazy"; "required": false; "isSignal": true; }; "flipIcon": { "alias": "flipIcon"; "required": false; "isSignal": true; }; "leftIcon": { "alias": "leftIcon"; "required": false; "isSignal": true; }; "
|
|
367
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SuiAccordion, "sui-accordion", never, { "title": { "alias": "title"; "required": false; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "open": { "alias": "open"; "required": false; "isSignal": true; }; "lazy": { "alias": "lazy"; "required": false; "isSignal": true; }; "flipIcon": { "alias": "flipIcon"; "required": false; "isSignal": true; }; "leftIcon": { "alias": "leftIcon"; "required": false; "isSignal": true; }; "badge": { "alias": "badge"; "required": false; "isSignal": true; }; }, { "open": "openChange"; }, never, ["[sui-accordion-body]", "*"], true, never>;
|
|
274
368
|
}
|
|
275
369
|
|
|
276
370
|
/**
|
|
@@ -280,6 +374,17 @@ declare class SuiAccordion {
|
|
|
280
374
|
*/
|
|
281
375
|
type SuiAvatarSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl' | '4xl' | '5xl';
|
|
282
376
|
type SuiAvatarColor = 'slate' | 'gray' | 'blue' | 'orange' | 'red' | 'green' | 'yellow' | 'purple' | 'sky' | 'pink' | 'teal';
|
|
377
|
+
/**
|
|
378
|
+
* Config del avatar que exponen los componentes con <sui-avatar> interno
|
|
379
|
+
* (command-menu-item, content-card, notification…). Mismo espíritu que
|
|
380
|
+
* SuiBadgeConfig/SuiLinkConfig: un objeto en vez de N props sueltos.
|
|
381
|
+
* String shorthand = src directo.
|
|
382
|
+
*/
|
|
383
|
+
interface SuiAvatarConfig {
|
|
384
|
+
src?: string | null;
|
|
385
|
+
initials?: string;
|
|
386
|
+
color?: SuiAvatarColor;
|
|
387
|
+
}
|
|
283
388
|
/**
|
|
284
389
|
* BottomStatus types (Figma 245:18721): indicador bottom-right.
|
|
285
390
|
* Online/offline/away/busy renderizan como dot; `company` renderiza el
|
|
@@ -904,7 +1009,7 @@ declare class SuiAlert {
|
|
|
904
1009
|
* `small` (12/16) en los compactos (small/xsmall). Mapea el tipo del action al
|
|
905
1010
|
* tamaño del alert.
|
|
906
1011
|
*/
|
|
907
|
-
readonly actionLinkSize: _angular_core.Signal<"
|
|
1012
|
+
readonly actionLinkSize: _angular_core.Signal<"small" | "medium">;
|
|
908
1013
|
/**
|
|
909
1014
|
* Tamaño del `sui-compact-button` del cierre, mapeado del size del alert para
|
|
910
1015
|
* conservar el footprint del icono: xsmall (icon 16) → compact `medium`;
|
|
@@ -1064,93 +1169,6 @@ declare class SuiAvatarGroup {
|
|
|
1064
1169
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SuiAvatarGroup, "sui-avatar-group", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; "items": { "alias": "items"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
1065
1170
|
}
|
|
1066
1171
|
|
|
1067
|
-
type SuiBadgeColor = 'gray' | 'blue' | 'orange' | 'red' | 'green' | 'yellow' | 'purple' | 'sky' | 'pink' | 'teal';
|
|
1068
|
-
type SuiBadgeVariant = 'filled' | 'light' | 'lighter' | 'stroke' | 'dark';
|
|
1069
|
-
type SuiBadgeSize = 'small' | 'medium';
|
|
1070
|
-
type SuiBadgeType = 'basic' | 'with-dot' | 'left-icon' | 'right-icon' | 'number';
|
|
1071
|
-
/**
|
|
1072
|
-
* Config de badge embebido en otros componentes (checkbox-label, switch-label,
|
|
1073
|
-
* integration-switch, checkbox-card, radio-card, switch-card). Un solo input
|
|
1074
|
-
* `[badge]` reemplaza al par booleano + badgeLabel; acepta string shorthand
|
|
1075
|
-
* (`badge="NEW"`) para el caso común. Los componentes que renderizan un
|
|
1076
|
-
* <sui-badge> real honran color/variant/size (defaults orange/light/small);
|
|
1077
|
-
* las cards usan su render Figma-exacto y toman solo `label`.
|
|
1078
|
-
*/
|
|
1079
|
-
interface SuiBadgeConfig {
|
|
1080
|
-
label: string;
|
|
1081
|
-
color?: SuiBadgeColor;
|
|
1082
|
-
variant?: SuiBadgeVariant;
|
|
1083
|
-
size?: SuiBadgeSize;
|
|
1084
|
-
}
|
|
1085
|
-
/**
|
|
1086
|
-
* SUI Badge — SUI Design System 2.0
|
|
1087
|
-
*
|
|
1088
|
-
* Figma file: 8p1k72aKKvzJV4XcvPS4VO
|
|
1089
|
-
* Variants pulled for verification:
|
|
1090
|
-
* - 118:2584 Basic/Filled/Small/Gray
|
|
1091
|
-
* - 118:2587 Basic/Light/Small/Gray
|
|
1092
|
-
* - 118:2590 Basic/Lighter/Small/Gray
|
|
1093
|
-
* - 118:2616 With Dot/Filled/Small/Gray
|
|
1094
|
-
* - 118:2322 Left Icon/Light/Small/Gray
|
|
1095
|
-
* - 289:7551 Right Icon/Stroke/Small/Gray
|
|
1096
|
-
* - 118:2686 Basic/Filled/Small/Gray/Number=On
|
|
1097
|
-
* - 119:2361 Basic/Filled/Medium/Gray
|
|
1098
|
-
*
|
|
1099
|
-
* EXACT (pulled):
|
|
1100
|
-
* - Small: padding py=2px, font Subheading/2X Small 11/12/0.22px UPPERCASE, ss11 features
|
|
1101
|
-
* - Medium basic: padding px=8 py=2 (119:2361), font Label/X Small 12/16/0 NO uppercase, ss11
|
|
1102
|
-
* - Radius: 999 (full)
|
|
1103
|
-
* - Per-type padding Small: Basic=px8 / LeftIcon=pl4 pr8 / RightIcon=pl8 pr4 /
|
|
1104
|
-
* WithDot=pr8 ONLY (no left, no py) / Number=p2 (near-square, text w12)
|
|
1105
|
-
* - WithDot box: dot vive en CONTAINER 16×16 (full-height del badge small),
|
|
1106
|
-
* círculo r=2 → DIÁMETRO 4px centrado (asset SVG 118:2632). El dot del Badge
|
|
1107
|
-
* regular (4px) es DISTINTO del dot del sui-status-badge (6px, r=3) — assets
|
|
1108
|
-
* separados en el DS, NO unificar.
|
|
1109
|
-
* - WithDot Medium (119:2369): padding pl2 pr8 py2, dot box SIGUE 16×16 (NO 20).
|
|
1110
|
-
* - Style colors: Filled=bg-base+text-white, Light=bg-light+text-dark,
|
|
1111
|
-
* Lighter=bg-lighter+text-BASE (NOT dark!), Stroke=border1-base+text-base
|
|
1112
|
-
*
|
|
1113
|
-
* INFERRED (declared approximations):
|
|
1114
|
-
* - Medium Left/Right Icon padding: same asymmetric pattern as Small (4/8 vs 8/4)
|
|
1115
|
-
* - Medium Number: p=2 (proportional to Small)
|
|
1116
|
-
* - Medium icon size: 16x16 (scaled from Small's 12x12)
|
|
1117
|
-
*
|
|
1118
|
-
* PENDING VERIFY (inferido, sin confirmar pixel-exacto en Figma):
|
|
1119
|
-
* - Medium Left Icon / Right Icon: el padding asimétrico (pl4/pr8, pl8/pr4) se
|
|
1120
|
-
* asumió igual al Small. No se pulló la variante Medium+LeftIcon/RightIcon
|
|
1121
|
-
* específica del archivo — el frame 118:2324 es too-large para pull directo.
|
|
1122
|
-
* - Medium icon slot size 16×16: escalado del Small (12×12) sin confirmar contra
|
|
1123
|
-
* una variante Medium con icono real.
|
|
1124
|
-
* - Number type: el width del label (12px small / 16px medium) y el padding p2
|
|
1125
|
-
* se infirieron de la variante Small Number=On (118:2686); no se confirmó si
|
|
1126
|
-
* un número de 2 dígitos ('99') reflowea el width o se mantiene fijo.
|
|
1127
|
-
* - Disabled: Figma demuestra Disabled=On solo en color Gray (representativo).
|
|
1128
|
-
* El override universal a tokens disabled (todos los colores) es extrapolación
|
|
1129
|
-
* intencional — más completa que la demo, asumida consistente con SUI 2.0.
|
|
1130
|
-
*
|
|
1131
|
-
* CUSTOM (not in Figma 118:2324 — add-on local del proyecto):
|
|
1132
|
-
* - `variant='dark'` — glass translúcido vibrante pensado para superficies
|
|
1133
|
-
* oscuras. El color tiñe el bg (22% alpha) y borde (45% alpha) del
|
|
1134
|
-
* state-base, texto blanco para contraste. Se mantiene porque está en
|
|
1135
|
-
* uso en pantallas con backgrounds oscuros (master-preview, etc.).
|
|
1136
|
-
* Sin `[color]`, cae al fallback white-glass neutral.
|
|
1137
|
-
*
|
|
1138
|
-
* - `disabled` state: implementado con override de bg/border/text a tokens
|
|
1139
|
-
* disabled-300 y faded-light/lighter (matchea visual figma), NO con
|
|
1140
|
-
* `opacity` (que produciría tintes desaturados en lugar de gris uniforme).
|
|
1141
|
-
*/
|
|
1142
|
-
declare class SuiBadge {
|
|
1143
|
-
readonly color: _angular_core.InputSignal<SuiBadgeColor>;
|
|
1144
|
-
readonly variant: _angular_core.InputSignal<SuiBadgeVariant>;
|
|
1145
|
-
readonly size: _angular_core.InputSignal<SuiBadgeSize>;
|
|
1146
|
-
readonly type: _angular_core.InputSignal<SuiBadgeType>;
|
|
1147
|
-
readonly disabled: _angular_core.InputSignal<boolean>;
|
|
1148
|
-
/** Internal: true when the badge renders its built-in dot (type=with-dot). */
|
|
1149
|
-
readonly showsDot: _angular_core.Signal<boolean>;
|
|
1150
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SuiBadge, never>;
|
|
1151
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SuiBadge, "sui-badge", never, { "color": { "alias": "color"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "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; }; }, {}, never, ["[data-slot=start]", "*", "[data-slot=end]"], true, never>;
|
|
1152
|
-
}
|
|
1153
|
-
|
|
1154
1172
|
type SuiBannerVariant = 'info' | 'success' | 'warning' | 'error' | 'feature';
|
|
1155
1173
|
type SuiBannerStyle = 'filled' | 'light' | 'lighter' | 'stroke';
|
|
1156
1174
|
/**
|
|
@@ -1629,6 +1647,15 @@ declare class SuiButtonGroup {
|
|
|
1629
1647
|
type SuiButtonColor = 'primary' | 'neutral' | 'error';
|
|
1630
1648
|
type SuiButtonVariant = 'filled' | 'stroke' | 'lighter' | 'ghost';
|
|
1631
1649
|
type SuiButtonSize = '2xsmall' | 'xsmall' | 'small' | 'medium' | 'large' | 'xlarge';
|
|
1650
|
+
/**
|
|
1651
|
+
* Config de los botones internos de footers (drawer-footer, filter-panel-footer):
|
|
1652
|
+
* { label, disabled? } con string shorthand = solo label. Interfaz COMPARTIDA
|
|
1653
|
+
* para que ambos footers expongan el mismo contrato.
|
|
1654
|
+
*/
|
|
1655
|
+
interface SuiFooterButtonConfig {
|
|
1656
|
+
label: string;
|
|
1657
|
+
disabled?: boolean;
|
|
1658
|
+
}
|
|
1632
1659
|
/**
|
|
1633
1660
|
* SUI Button — SUI Design System 2.0
|
|
1634
1661
|
*
|
|
@@ -1913,7 +1940,7 @@ declare class SuiCheckboxCard implements ControlValueAccessor {
|
|
|
1913
1940
|
/** RemixIcon name (sin prefijo "ri-") para type='left-icon'. */
|
|
1914
1941
|
readonly icon: _angular_core.InputSignal<string | null>;
|
|
1915
1942
|
/** Emoji del catálogo SUI_EMOJI_MAP — alternativa a icon para type='left-icon'. */
|
|
1916
|
-
readonly emoji: _angular_core.InputSignal<"
|
|
1943
|
+
readonly emoji: _angular_core.InputSignal<"label" | "warning" | "thinking-face" | "grinning-face" | "smiling-face-hearts" | "face-with-rolling-eyes" | "face-screaming" | "partying-face" | "star-struck" | "sleeping-face" | "pensive-face" | "confused-face" | "neutral-face" | "slightly-smiling-face" | "grinning-face-smiling-eyes" | "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>;
|
|
1917
1944
|
/** URL directa al emoji para type='left-icon'. Precedencia: icon > emoji > iconSrc. */
|
|
1918
1945
|
readonly iconSrc: _angular_core.InputSignal<string | null>;
|
|
1919
1946
|
/** URL de imagen para type='avatar'. Si falla, fallback a iniciales del label. */
|
|
@@ -1948,6 +1975,101 @@ declare class SuiCheckboxCard implements ControlValueAccessor {
|
|
|
1948
1975
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SuiCheckboxCard, "sui-checkbox-card", never, { "type": { "alias": "type"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "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; }; "badge": { "alias": "badge"; "required": false; "isSignal": true; }; "indeterminate": { "alias": "indeterminate"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "checked": { "alias": "checked"; "required": false; "isSignal": true; }; }, { "checked": "checkedChange"; "checkedChange2": "checkedChange2"; }, never, ["[slot=leading]"], true, never>;
|
|
1949
1976
|
}
|
|
1950
1977
|
|
|
1978
|
+
type SuiLinkButtonVariant = 'gray' | 'black' | 'primary' | 'error' | 'modifiable';
|
|
1979
|
+
/**
|
|
1980
|
+
* Config del "link" que exponen los componentes con Link Button integrado
|
|
1981
|
+
* (checkbox-label, switch-label, drawer-header/footer, progress-bar-label).
|
|
1982
|
+
* String shorthand = solo label (renderiza <button> + output linkClick);
|
|
1983
|
+
* con `href` el link es un <a> real. `rel` default 'noopener noreferrer'
|
|
1984
|
+
* cuando target='_blank' (mismo patrón objeto que SuiBadgeConfig).
|
|
1985
|
+
*/
|
|
1986
|
+
interface SuiLinkConfig {
|
|
1987
|
+
label: string;
|
|
1988
|
+
href?: string;
|
|
1989
|
+
target?: string;
|
|
1990
|
+
rel?: string;
|
|
1991
|
+
}
|
|
1992
|
+
type SuiLinkButtonSize = 'medium' | 'small';
|
|
1993
|
+
/**
|
|
1994
|
+
* SUI Link Button — SUI Design System 2.0
|
|
1995
|
+
*
|
|
1996
|
+
* Figma file: 8p1k72aKKvzJV4XcvPS4VO
|
|
1997
|
+
* Frame: 168:4889 ("Link Buttons [1.1]") — 80 variants total
|
|
1998
|
+
*
|
|
1999
|
+
* EXACT (pulled from Figma + verified against sui-tokens.scss):
|
|
2000
|
+
* Anatomy
|
|
2001
|
+
* Container flex / inline-flex, gap=4px, items=center
|
|
2002
|
+
* Medium size text 14/20/-0.6%, icons 20×20
|
|
2003
|
+
* Small size text 12/16/0, icons 16×16
|
|
2004
|
+
* Font features 'ss11' 1, 'calt' 0, 'liga' 0
|
|
2005
|
+
* Underline (hover / focus / underline=on): línea continua SOLO
|
|
2006
|
+
* bajo el texto (los iconos chevron NO van subrayados —
|
|
2007
|
+
* Figma 169:1391/169:1419: la clase `underline` vive solo
|
|
2008
|
+
* en el <p>). Implementado vía ::after en
|
|
2009
|
+
* .sui-link-button__text (NO `text-decoration` sobre el
|
|
2010
|
+
* flex, que se fragmentaba en 3 trazos icon|text|icon).
|
|
2011
|
+
* Variant × State color matrix
|
|
2012
|
+
* Gray Default → text/sub-600 | Hover → sub-600 + underline | Focus → strong-950 + underline | Disabled → disabled-300
|
|
2013
|
+
* Black Default → text/strong-950 | Hover → strong-950 + underline
|
|
2014
|
+
* Primary Default → primary-base | Hover → primary-dark + underline
|
|
2015
|
+
* Error Default → state/error/base | Hover → red/700 + underline
|
|
2016
|
+
* Modifiable → currentColor (consumer-controlled)
|
|
2017
|
+
*
|
|
2018
|
+
* Token map (Figma → sui-tokens.scss):
|
|
2019
|
+
* text/sub-600 #5c5c5c → --sui-text-sub-600
|
|
2020
|
+
* text/strong-950 #171717 → --sui-text-strong-950
|
|
2021
|
+
* text/disabled-300 #d1d1d1 → --sui-text-disabled-300
|
|
2022
|
+
* primary-base #335cff → --sui-primary-base (project remaps to orange #fa7319)
|
|
2023
|
+
* primary-dark #2547d0 → --sui-primary-dark (project remaps to dark orange #e16614)
|
|
2024
|
+
* state/error/base #fb3748 → --sui-state-error-base
|
|
2025
|
+
* red/700 #d02533 → --sui-red-700
|
|
2026
|
+
* icon/* same as text/* per token level
|
|
2027
|
+
*
|
|
2028
|
+
* FOCUS states PULLED from Figma (2026-05-29) — el Focus mantiene el color
|
|
2029
|
+
* BASE + underline; solo el Hover oscurece. Nodos verificados:
|
|
2030
|
+
* Gray focus 169:1034 → strong-950 + underline
|
|
2031
|
+
* Black focus 169:1090 → strong-950 + underline
|
|
2032
|
+
* Primary focus 169:1138 → primary-base (NO dark) + underline
|
|
2033
|
+
* Error focus 169:1187 → error-base (NO red-700) + underline
|
|
2034
|
+
* (Hover: Primary 169:1134 → primary-dark; Error 169:1183 → red-700)
|
|
2035
|
+
*
|
|
2036
|
+
* PENDING VERIFY (inferred, NOT pulled):
|
|
2037
|
+
* - Modifiable Focus / Hover / Disabled: currentColor para hover/focus; disabled assumed --sui-text-disabled-300
|
|
2038
|
+
* - Underline=On styling para todos: misma decoration spec que Gray (decoration solid, thickness/position from-font, skip-ink none)
|
|
2039
|
+
* - Active state: no es variante Figma; tactile-press scale(0.97) por convención project
|
|
2040
|
+
* - Figma usa font-feature 'cv09' 1 además de 'ss11' 1 'calt' 0 'liga' 0; SUI omite cv09 (alterna del 9) — diferencia tipográfica menor, no afecta layout
|
|
2041
|
+
*
|
|
2042
|
+
* Usage:
|
|
2043
|
+
* <sui-link-button variant="primary" leftIcon="arrow-left-s-line">Volver</sui-link-button>
|
|
2044
|
+
* <sui-link-button variant="error" [underline]="true" (click)="onDelete()">Eliminar</sui-link-button>
|
|
2045
|
+
* <sui-link-button variant="primary" href="https://docs.example" target="_blank">Ver documentación</sui-link-button>
|
|
2046
|
+
*
|
|
2047
|
+
* Floating vs inline: el componente es `display: inline-flex` con baseline align,
|
|
2048
|
+
* por lo que fluye dentro de un párrafo como un link normal. Para uso "flotante"
|
|
2049
|
+
* (toast actions, notification CTA), el consumer lo posiciona libremente — el
|
|
2050
|
+
* componente no impone position/z-index propios.
|
|
2051
|
+
*/
|
|
2052
|
+
declare class SuiLinkButton {
|
|
2053
|
+
readonly variant: _angular_core.InputSignal<SuiLinkButtonVariant>;
|
|
2054
|
+
readonly size: _angular_core.InputSignal<SuiLinkButtonSize>;
|
|
2055
|
+
readonly underline: _angular_core.InputSignal<boolean>;
|
|
2056
|
+
readonly disabled: _angular_core.InputSignal<boolean>;
|
|
2057
|
+
readonly leftIcon: _angular_core.InputSignal<string | null>;
|
|
2058
|
+
readonly rightIcon: _angular_core.InputSignal<string | null>;
|
|
2059
|
+
/** Cuando se setea, el componente renderiza un <a> nativo en vez de <button>. */
|
|
2060
|
+
readonly href: _angular_core.InputSignal<string | null>;
|
|
2061
|
+
readonly target: _angular_core.InputSignal<string | null>;
|
|
2062
|
+
readonly rel: _angular_core.InputSignal<string | null>;
|
|
2063
|
+
readonly type: _angular_core.InputSignal<"button" | "submit" | "reset">;
|
|
2064
|
+
readonly ariaLabel: _angular_core.InputSignal<string | null>;
|
|
2065
|
+
readonly clicked: _angular_core.OutputEmitterRef<MouseEvent>;
|
|
2066
|
+
readonly iconSize: _angular_core.Signal<number>;
|
|
2067
|
+
readonly isAnchor: _angular_core.Signal<boolean>;
|
|
2068
|
+
onClick(event: MouseEvent): void;
|
|
2069
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SuiLinkButton, never>;
|
|
2070
|
+
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>;
|
|
2071
|
+
}
|
|
2072
|
+
|
|
1951
2073
|
/**
|
|
1952
2074
|
* SUI Checkbox Label — SUI Design System 2.0
|
|
1953
2075
|
*
|
|
@@ -2025,7 +2147,13 @@ declare class SuiCheckboxLabel implements ControlValueAccessor {
|
|
|
2025
2147
|
protected readonly badgeCfg: _angular_core.Signal<SuiBadgeConfig | null>;
|
|
2026
2148
|
/** Texto del Link Button opcional debajo de la description. Solo se renderiza
|
|
2027
2149
|
cuando description tiene valor. */
|
|
2028
|
-
|
|
2150
|
+
/** Link Button bajo la descripción — string shorthand (solo label, emite
|
|
2151
|
+
* `linkClick`) o SuiLinkConfig { label, href?, target?, rel? }: con href
|
|
2152
|
+
* renderiza <a> real; rel automático 'noopener noreferrer' para _blank.
|
|
2153
|
+
* (Mismo patrón objeto que `badge`/SuiBadgeConfig.) */
|
|
2154
|
+
readonly link: _angular_core.InputSignal<string | SuiLinkConfig | null>;
|
|
2155
|
+
/** Config resuelta del link (string → { label }, rel automático). */
|
|
2156
|
+
protected readonly linkCfg: _angular_core.Signal<SuiLinkConfig | null>;
|
|
2029
2157
|
/** Si true, invierte orden: [content] [checkbox] (label a la izquierda). */
|
|
2030
2158
|
readonly flip: _angular_core.InputSignal<boolean>;
|
|
2031
2159
|
/** Deshabilita el checkbox + wrapper. */
|
|
@@ -2052,7 +2180,7 @@ declare class SuiCheckboxLabel implements ControlValueAccessor {
|
|
|
2052
2180
|
registerOnTouched(fn: () => void): void;
|
|
2053
2181
|
setDisabledState(isDisabled: boolean): void;
|
|
2054
2182
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SuiCheckboxLabel, never>;
|
|
2055
|
-
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; }; "
|
|
2183
|
+
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>;
|
|
2056
2184
|
}
|
|
2057
2185
|
|
|
2058
2186
|
type SuiCircularProgressBarColor = 'blue' | 'green' | 'orange' | 'red' | 'purple';
|
|
@@ -2523,19 +2651,27 @@ declare class SuiColorPicker {
|
|
|
2523
2651
|
* - navigateLabel: string ('Navigate' por default)
|
|
2524
2652
|
* - selectLabel: string ('Select')
|
|
2525
2653
|
* - helpText: string | null ('Not what you're looking for? Try the')
|
|
2526
|
-
*
|
|
2527
|
-
* -
|
|
2654
|
+
* — copy previo al link; null oculta el bloque de ayuda completo
|
|
2655
|
+
* - helpLink: SuiLinkConfig | string | null ('Help Center') — string
|
|
2656
|
+
* shorthand = solo label (renderiza <button>, emite helpClicked);
|
|
2657
|
+
* SuiLinkConfig { label, href?, target?, rel? } = <a> real con
|
|
2658
|
+
* rel automático 'noopener noreferrer' si target='_blank'.
|
|
2659
|
+
* (Patrón canon `link` de sui-checkbox-label.)
|
|
2528
2660
|
* - (helpClicked): output cuando el link se clickea
|
|
2529
2661
|
*/
|
|
2530
2662
|
declare class SuiCommandMenuFooter {
|
|
2531
2663
|
readonly navigateLabel: _angular_core.InputSignal<string>;
|
|
2532
2664
|
readonly selectLabel: _angular_core.InputSignal<string>;
|
|
2533
2665
|
readonly helpText: _angular_core.InputSignal<string | null>;
|
|
2534
|
-
|
|
2535
|
-
|
|
2666
|
+
/** Link de ayuda — string shorthand (solo label, emite `helpClicked`) o
|
|
2667
|
+
* SuiLinkConfig { label, href?, target?, rel? }: con href renderiza <a> real;
|
|
2668
|
+
* rel automático 'noopener noreferrer' para _blank. null = sin link. */
|
|
2669
|
+
readonly helpLink: _angular_core.InputSignal<string | SuiLinkConfig | null>;
|
|
2670
|
+
/** Config resuelta del link (string → { label }, rel automático). */
|
|
2671
|
+
protected readonly helpLinkCfg: _angular_core.Signal<SuiLinkConfig | null>;
|
|
2536
2672
|
readonly helpClicked: _angular_core.OutputEmitterRef<MouseEvent>;
|
|
2537
2673
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SuiCommandMenuFooter, never>;
|
|
2538
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SuiCommandMenuFooter, "sui-command-menu-footer", never, { "navigateLabel": { "alias": "navigateLabel"; "required": false; "isSignal": true; }; "selectLabel": { "alias": "selectLabel"; "required": false; "isSignal": true; }; "helpText": { "alias": "helpText"; "required": false; "isSignal": true; }; "
|
|
2674
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SuiCommandMenuFooter, "sui-command-menu-footer", never, { "navigateLabel": { "alias": "navigateLabel"; "required": false; "isSignal": true; }; "selectLabel": { "alias": "selectLabel"; "required": false; "isSignal": true; }; "helpText": { "alias": "helpText"; "required": false; "isSignal": true; }; "helpLink": { "alias": "helpLink"; "required": false; "isSignal": true; }; }, { "helpClicked": "helpClicked"; }, never, never, true, never>;
|
|
2539
2675
|
}
|
|
2540
2676
|
|
|
2541
2677
|
/**
|
|
@@ -2557,7 +2693,8 @@ declare class SuiCommandMenuFooter {
|
|
|
2557
2693
|
* - medium (64) → multi-line (title row + description)
|
|
2558
2694
|
*
|
|
2559
2695
|
* **Optional bits** (right-aligned, en este orden):
|
|
2560
|
-
* - badge: sui-badge (gray
|
|
2696
|
+
* - badge: sui-badge — string shorthand (pill gray/lighter, ej. "Pro") o
|
|
2697
|
+
* SuiBadgeConfig { label, color?, variant?, size? }
|
|
2561
2698
|
* - shortcut: sui-kbd con texto (ej. "⌘K")
|
|
2562
2699
|
* - button: chevron arrow-right (Default) / lifted compact-button (Hover)
|
|
2563
2700
|
*
|
|
@@ -2594,6 +2731,11 @@ declare class SuiCommandMenuFooter {
|
|
|
2594
2731
|
* description="Edita tu nombre, email, contraseña."
|
|
2595
2732
|
* shortcut="⌘K"
|
|
2596
2733
|
* [showButton]="true" />
|
|
2734
|
+
*
|
|
2735
|
+
* <sui-command-menu-item type="avatar" size="medium"
|
|
2736
|
+
* [avatar]="{ initials: 'JB', color: 'purple' }"
|
|
2737
|
+
* title="James Brown"
|
|
2738
|
+
* [badge]="{ label: 'Pro', color: 'purple', variant: 'light' }" />
|
|
2597
2739
|
*/
|
|
2598
2740
|
type SuiCommandMenuItemType = 'basic' | 'left-icon' | 'avatar' | 'brand' | 'company' | 'country';
|
|
2599
2741
|
type SuiCommandMenuItemSize = 'small' | 'medium';
|
|
@@ -2607,14 +2749,18 @@ declare class SuiCommandMenuItem {
|
|
|
2607
2749
|
readonly description: _angular_core.InputSignal<string | null>;
|
|
2608
2750
|
/** Type=left-icon: nombre RemixIcon para el leading. */
|
|
2609
2751
|
readonly icon: _angular_core.InputSignal<string | null>;
|
|
2610
|
-
/** Type=avatar/company:
|
|
2611
|
-
|
|
2612
|
-
|
|
2613
|
-
readonly
|
|
2752
|
+
/** Type=avatar/company: avatar — string shorthand (src de la imagen) o
|
|
2753
|
+
SuiAvatarConfig { src?, initials?, color? } (tipado como sui-avatar).
|
|
2754
|
+
null = sin datos (sui-avatar cae a su placeholder). */
|
|
2755
|
+
readonly avatar: _angular_core.InputSignal<string | SuiAvatarConfig | null>;
|
|
2756
|
+
protected readonly avatarCfg: _angular_core.Signal<SuiAvatarConfig | null>;
|
|
2614
2757
|
/** Type=country: slug del país. */
|
|
2615
2758
|
readonly flagName: _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>;
|
|
2616
|
-
/** Right side: badge
|
|
2617
|
-
|
|
2759
|
+
/** Right side: badge — string shorthand (pill gray/lighter, ej. "Pro") o
|
|
2760
|
+
SuiBadgeConfig { label, color?, variant?, size? } (tipado como sui-badge).
|
|
2761
|
+
null = sin badge. */
|
|
2762
|
+
readonly badge: _angular_core.InputSignal<string | SuiBadgeConfig | null>;
|
|
2763
|
+
protected readonly badgeCfg: _angular_core.Signal<SuiBadgeConfig | null>;
|
|
2618
2764
|
/** Right side: shortcut text (sui-kbd, ej. "⌘K"). */
|
|
2619
2765
|
readonly shortcut: _angular_core.InputSignal<string | null>;
|
|
2620
2766
|
/** Right side: chevron button (arrow-right). */
|
|
@@ -2628,7 +2774,7 @@ declare class SuiCommandMenuItem {
|
|
|
2628
2774
|
onClick(event: MouseEvent): void;
|
|
2629
2775
|
onButtonClick(event: MouseEvent): void;
|
|
2630
2776
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SuiCommandMenuItem, never>;
|
|
2631
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SuiCommandMenuItem, "sui-command-menu-item", never, { "type": { "alias": "type"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": true; "isSignal": true; }; "sublabel": { "alias": "sublabel"; "required": false; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "
|
|
2777
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SuiCommandMenuItem, "sui-command-menu-item", never, { "type": { "alias": "type"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": true; "isSignal": true; }; "sublabel": { "alias": "sublabel"; "required": false; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "avatar": { "alias": "avatar"; "required": false; "isSignal": true; }; "flagName": { "alias": "flagName"; "required": false; "isSignal": true; }; "badge": { "alias": "badge"; "required": false; "isSignal": true; }; "shortcut": { "alias": "shortcut"; "required": false; "isSignal": true; }; "showButton": { "alias": "showButton"; "required": false; "isSignal": true; }; }, { "clicked": "clicked"; "buttonClicked": "buttonClicked"; }, never, ["[slot=brand]"], true, never>;
|
|
2632
2778
|
}
|
|
2633
2779
|
|
|
2634
2780
|
/**
|
|
@@ -3092,19 +3238,21 @@ type SuiContentCardType = 'basic' | 'left-icon' | 'avatar' | 'card-provider' | '
|
|
|
3092
3238
|
* basic → sin leading
|
|
3093
3239
|
* left-icon → cuadro 40×40 radius-10 border stroke-soft-200 bg-white-0,
|
|
3094
3240
|
* sui-icon `icon` 20px color icon-sub-600
|
|
3095
|
-
* avatar → sui-avatar size=md (40px) src
|
|
3241
|
+
* avatar → sui-avatar size=md (40px) via input `avatar` (config u src)
|
|
3096
3242
|
* card-provider → cuadro 40×28 (ratio tarjeta) radius-6 con brand logo centrado
|
|
3097
3243
|
* brand → cuadro 40×40 radius-10 border + sui-brand-logo `brand`
|
|
3098
3244
|
* company → sui-avatar size=md con companyLogoSrc / iniciales
|
|
3099
3245
|
*
|
|
3100
|
-
* Badge (input `badge
|
|
3101
|
-
* título), usando <sui-badge
|
|
3246
|
+
* Badge (input `badge: SuiBadgeConfig | string | null`): vive DENTRO del Title row
|
|
3247
|
+
* (al lado del título), usando <sui-badge>. String shorthand = solo el label con los
|
|
3248
|
+
* defaults de la card (color 'orange', variant 'lighter', size 'small'); el objeto
|
|
3249
|
+
* SuiBadgeConfig { label, color?, variant?, size? } controla el badge completo.
|
|
3102
3250
|
* El DS de Figma especifica AZUL (state/information/light #c0d5ff → sui-badge
|
|
3103
3251
|
* color="blue"). El proyecto Master Pedidos prefiere NARANJA por branding, así que
|
|
3104
|
-
*
|
|
3105
|
-
*
|
|
3106
|
-
*
|
|
3107
|
-
*
|
|
3252
|
+
* el fallback de color = 'orange'; cualquier consumer que necesite el color del DS
|
|
3253
|
+
* u otro semántico pasa `[badge]="{ label: 'X', color: 'blue' }"` sin forkear el
|
|
3254
|
+
* template. La tipografía del badge small es Subheading/2X Small 11/12 UPPERCASE
|
|
3255
|
+
* tracking 0.22px (0.02em), provista por el propio sui-badge.
|
|
3108
3256
|
*
|
|
3109
3257
|
* Token map (Figma → sui-tokens):
|
|
3110
3258
|
* bg/white-0 → --sui-bg-white-0 (#ffffff, card bg + leading bg)
|
|
@@ -3162,10 +3310,10 @@ type SuiContentCardType = 'basic' | 'left-icon' | 'avatar' | 'card-provider' | '
|
|
|
3162
3310
|
* <sui-content-card type="left-icon" icon="bank-card-line"
|
|
3163
3311
|
* title="Visa **** 4242" subtitle="Expira 09/27"
|
|
3164
3312
|
* badge="Principal" (dismiss)="onRemove()" />
|
|
3165
|
-
* <sui-content-card type="avatar" [
|
|
3313
|
+
* <sui-content-card type="avatar" [avatar]="{ src: user.photo, initials: 'AT' }"
|
|
3166
3314
|
* title="Ana Torres" subtitle="ana@correo.com" />
|
|
3167
|
-
* <sui-content-card type="brand" brand="stripe"
|
|
3168
|
-
*
|
|
3315
|
+
* <sui-content-card type="brand" brand="stripe" title="Stripe" subtitle="Conectado"
|
|
3316
|
+
* [badge]="{ label: 'Activo', color: 'green' }" />
|
|
3169
3317
|
*/
|
|
3170
3318
|
declare class SuiContentCard {
|
|
3171
3319
|
/** Tipo de leading visual. */
|
|
@@ -3174,20 +3322,18 @@ declare class SuiContentCard {
|
|
|
3174
3322
|
readonly title: _angular_core.InputSignal<string>;
|
|
3175
3323
|
/** Subtítulo — Paragraph/Small, text-sub-600. */
|
|
3176
3324
|
readonly subtitle: _angular_core.InputSignal<string>;
|
|
3177
|
-
/**
|
|
3178
|
-
|
|
3179
|
-
|
|
3180
|
-
|
|
3181
|
-
|
|
3182
|
-
|
|
3183
|
-
*/
|
|
3184
|
-
readonly badgeColor: _angular_core.InputSignal<SuiBadgeColor>;
|
|
3325
|
+
/** Badge inline (Title row) — string shorthand ('Principal') o SuiBadgeConfig
|
|
3326
|
+
(label + color/variant/size, tipado como sui-badge). Fallbacks de la card:
|
|
3327
|
+
color 'orange' (branding; el DS de Figma usa 'blue'), variant 'lighter',
|
|
3328
|
+
size 'small'. null/'' = sin badge. */
|
|
3329
|
+
readonly badge: _angular_core.InputSignal<string | SuiBadgeConfig | null>;
|
|
3330
|
+
protected readonly badgeCfg: _angular_core.Signal<SuiBadgeConfig | null>;
|
|
3185
3331
|
/** RemixIcon name (sin 'ri-') para type=left-icon. */
|
|
3186
3332
|
readonly icon: _angular_core.InputSignal<string | null>;
|
|
3187
|
-
/**
|
|
3188
|
-
|
|
3189
|
-
|
|
3190
|
-
readonly
|
|
3333
|
+
/** Avatar del leading (type=avatar / company) — string shorthand (src directo)
|
|
3334
|
+
o SuiAvatarConfig { src?, initials?, color? }. null = sin avatar. */
|
|
3335
|
+
readonly avatar: _angular_core.InputSignal<string | SuiAvatarConfig | null>;
|
|
3336
|
+
protected readonly avatarCfg: _angular_core.Signal<SuiAvatarConfig | null>;
|
|
3191
3337
|
/** Logo de empresa para type=company (mini-avatar bottom-right del sui-avatar). */
|
|
3192
3338
|
readonly companyLogoSrc: _angular_core.InputSignal<string | null>;
|
|
3193
3339
|
/** Marca para type=brand / card-provider. */
|
|
@@ -3207,7 +3353,7 @@ declare class SuiContentCard {
|
|
|
3207
3353
|
readonly hasLeading: _angular_core.Signal<boolean>;
|
|
3208
3354
|
onDismiss(event: MouseEvent): void;
|
|
3209
3355
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SuiContentCard, never>;
|
|
3210
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SuiContentCard, "sui-content-card", never, { "type": { "alias": "type"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "subtitle": { "alias": "subtitle"; "required": false; "isSignal": true; }; "badge": { "alias": "badge"; "required": false; "isSignal": true; }; "
|
|
3356
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SuiContentCard, "sui-content-card", never, { "type": { "alias": "type"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "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>;
|
|
3211
3357
|
}
|
|
3212
3358
|
|
|
3213
3359
|
type SuiContentDividerType = 'line' | 'line-spacing' | 'text-line' | 'text' | 'solid-text' | 'icon-button' | 'icon-button-group' | 'text-button' | 'text-button-group';
|
|
@@ -3869,13 +4015,14 @@ type SuiDrawerFooterType = 'stretch' | 'basic' | 'checkbox' | 'toggle' | 'steppe
|
|
|
3869
4015
|
* radius-full → --sui-radius-full (stepper dots)
|
|
3870
4016
|
*
|
|
3871
4017
|
* Decisiones de homologación (vs reporte Drawer):
|
|
3872
|
-
* -
|
|
3873
|
-
*
|
|
3874
|
-
*
|
|
3875
|
-
*
|
|
3876
|
-
*
|
|
4018
|
+
* - `disabled` de los botones: NO existe como variant en Figma, pero se
|
|
4019
|
+
* PRESERVA (via SuiFooterButtonConfig.disabled) — necesario para flujos
|
|
4020
|
+
* con validación. extraFeature.
|
|
4021
|
+
* - stepper { current, total }: Figma es decorativo (3 dots fijos); el SUI
|
|
4022
|
+
* lo hace dinámico/multi-step real. Se PRESERVA (mejora funcional).
|
|
4023
|
+
* - type='link-button' con link null o label vacío NO renderiza el link
|
|
3877
4024
|
* (antes renderizaba un sui-link-button vacío). Corrige openQuestion del
|
|
3878
|
-
* reporte
|
|
4025
|
+
* reporte.
|
|
3879
4026
|
*
|
|
3880
4027
|
* Confirmado contra Figma live (2026-05-29):
|
|
3881
4028
|
* - Stepper Dot [1.1] (479:14399): gap inter-dot = 10px exacto, dots 8×8,
|
|
@@ -3887,8 +4034,8 @@ type SuiDrawerFooterType = 'stretch' | 'basic' | 'checkbox' | 'toggle' | 'steppe
|
|
|
3887
4034
|
* Usage:
|
|
3888
4035
|
* <sui-drawer-footer
|
|
3889
4036
|
* type="stretch"
|
|
3890
|
-
*
|
|
3891
|
-
*
|
|
4037
|
+
* primaryButton="Continuar"
|
|
4038
|
+
* secondaryButton="Cancelar"
|
|
3892
4039
|
* (primaryClick)="save()"
|
|
3893
4040
|
* (secondaryClick)="cancel()"
|
|
3894
4041
|
* />
|
|
@@ -3897,28 +4044,31 @@ type SuiDrawerFooterType = 'stretch' | 'basic' | 'checkbox' | 'toggle' | 'steppe
|
|
|
3897
4044
|
* type="checkbox"
|
|
3898
4045
|
* checkboxLabel="No mostrar de nuevo"
|
|
3899
4046
|
* [(checkboxActive)]="dontShowAgain"
|
|
3900
|
-
*
|
|
4047
|
+
* [primaryButton]="{ label: 'Continuar', disabled: !valido }"
|
|
3901
4048
|
* (primaryClick)="save()"
|
|
3902
4049
|
* />
|
|
3903
4050
|
*
|
|
3904
4051
|
* <sui-drawer-footer
|
|
3905
4052
|
* type="stepper"
|
|
3906
|
-
* [
|
|
3907
|
-
*
|
|
3908
|
-
*
|
|
3909
|
-
* secondaryLabel="Atrás"
|
|
4053
|
+
* [stepper]="{ current: 2, total: 5 }"
|
|
4054
|
+
* primaryButton="Siguiente"
|
|
4055
|
+
* secondaryButton="Atrás"
|
|
3910
4056
|
* />
|
|
3911
4057
|
*/
|
|
3912
4058
|
declare class SuiDrawerFooter {
|
|
3913
4059
|
readonly type: _angular_core.InputSignal<SuiDrawerFooterType>;
|
|
3914
|
-
/**
|
|
3915
|
-
|
|
3916
|
-
|
|
3917
|
-
readonly
|
|
3918
|
-
/**
|
|
3919
|
-
|
|
3920
|
-
|
|
3921
|
-
|
|
4060
|
+
/** Botón primario (filled primary-base) — string shorthand (solo label) o
|
|
4061
|
+
* SuiFooterButtonConfig { label, disabled? }. Interfaz compartida con
|
|
4062
|
+
* sui-filter-panel-footer. */
|
|
4063
|
+
readonly primaryButton: _angular_core.InputSignal<string | SuiFooterButtonConfig>;
|
|
4064
|
+
/** Botón secundario (stroke neutral) — string shorthand o
|
|
4065
|
+
* SuiFooterButtonConfig. null (o label vacío) = ocultar. */
|
|
4066
|
+
readonly secondaryButton: _angular_core.InputSignal<string | SuiFooterButtonConfig | null>;
|
|
4067
|
+
/** Config resuelta del botón primario (string → { label }). */
|
|
4068
|
+
protected readonly primaryCfg: _angular_core.Signal<SuiFooterButtonConfig>;
|
|
4069
|
+
/** Config resuelta del botón secundario (string → { label }; null/label vacío
|
|
4070
|
+
* = oculto — regla DS: config presente = visible). */
|
|
4071
|
+
protected readonly secondaryCfg: _angular_core.Signal<SuiFooterButtonConfig | null>;
|
|
3922
4072
|
/** Label del checkbox (type='checkbox'). */
|
|
3923
4073
|
readonly checkboxLabel: _angular_core.InputSignal<string>;
|
|
3924
4074
|
/** Two-way del checkbox state. */
|
|
@@ -3927,12 +4077,24 @@ declare class SuiDrawerFooter {
|
|
|
3927
4077
|
readonly toggleLabel: _angular_core.InputSignal<string>;
|
|
3928
4078
|
/** Two-way del switch state. */
|
|
3929
4079
|
readonly toggleActive: _angular_core.ModelSignal<boolean>;
|
|
3930
|
-
/** Stepper
|
|
3931
|
-
|
|
3932
|
-
|
|
3933
|
-
|
|
3934
|
-
|
|
3935
|
-
|
|
4080
|
+
/** Stepper (type='stepper') — { current (0-indexed), total }. null cae al
|
|
4081
|
+
* default Figma (3 dots, primero activo). */
|
|
4082
|
+
readonly stepper: _angular_core.InputSignal<{
|
|
4083
|
+
current: number;
|
|
4084
|
+
total: number;
|
|
4085
|
+
} | null>;
|
|
4086
|
+
/** Config resuelta del stepper (null → default { current: 0, total: 3 }). */
|
|
4087
|
+
protected readonly stepperCfg: _angular_core.Signal<{
|
|
4088
|
+
current: number;
|
|
4089
|
+
total: number;
|
|
4090
|
+
}>;
|
|
4091
|
+
/** Link button (type='link-button') — string shorthand (solo label, emite
|
|
4092
|
+
* `linkClick`) o SuiLinkConfig { label, href?, target?, rel? }: con href
|
|
4093
|
+
* renderiza <a> real; rel automático 'noopener noreferrer' para _blank.
|
|
4094
|
+
* null o label vacío no renderiza el link. */
|
|
4095
|
+
readonly link: _angular_core.InputSignal<string | SuiLinkConfig | null>;
|
|
4096
|
+
/** Config resuelta del link (string → { label }, rel automático). */
|
|
4097
|
+
protected readonly linkCfg: _angular_core.Signal<SuiLinkConfig | null>;
|
|
3936
4098
|
readonly primaryClick: _angular_core.OutputEmitterRef<Event>;
|
|
3937
4099
|
readonly secondaryClick: _angular_core.OutputEmitterRef<Event>;
|
|
3938
4100
|
readonly linkClick: _angular_core.OutputEmitterRef<MouseEvent>;
|
|
@@ -3942,7 +4104,7 @@ declare class SuiDrawerFooter {
|
|
|
3942
4104
|
onSecondary(event: Event): void;
|
|
3943
4105
|
onLink(event: MouseEvent): void;
|
|
3944
4106
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SuiDrawerFooter, never>;
|
|
3945
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SuiDrawerFooter, "sui-drawer-footer", never, { "type": { "alias": "type"; "required": false; "isSignal": true; }; "
|
|
4107
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SuiDrawerFooter, "sui-drawer-footer", never, { "type": { "alias": "type"; "required": false; "isSignal": true; }; "primaryButton": { "alias": "primaryButton"; "required": false; "isSignal": true; }; "secondaryButton": { "alias": "secondaryButton"; "required": false; "isSignal": true; }; "checkboxLabel": { "alias": "checkboxLabel"; "required": false; "isSignal": true; }; "checkboxActive": { "alias": "checkboxActive"; "required": false; "isSignal": true; }; "toggleLabel": { "alias": "toggleLabel"; "required": false; "isSignal": true; }; "toggleActive": { "alias": "toggleActive"; "required": false; "isSignal": true; }; "stepper": { "alias": "stepper"; "required": false; "isSignal": true; }; "link": { "alias": "link"; "required": false; "isSignal": true; }; }, { "checkboxActive": "checkboxActiveChange"; "toggleActive": "toggleActiveChange"; "primaryClick": "primaryClick"; "secondaryClick": "secondaryClick"; "linkClick": "linkClick"; }, never, never, true, never>;
|
|
3946
4108
|
}
|
|
3947
4109
|
|
|
3948
4110
|
type SuiDrawerHeaderType = 'basic' | 'left-icon';
|
|
@@ -3973,8 +4135,8 @@ type SuiDrawerHeaderSize = 'small' | 'large' | 'xlarge';
|
|
|
3973
4135
|
* Link Button (opcional, input `button=true` en Figma) — un Link Button
|
|
3974
4136
|
* gray/medium/underlined (14/20/-0.6%, text/sub-600) entre el
|
|
3975
4137
|
* content y el dismiss icon. Solo aparece en Basic+Small y
|
|
3976
|
-
* LeftIcon+Small en Figma. Homologado vía `
|
|
3977
|
-
* `linkClick` (usa sui-link-button size=medium).
|
|
4138
|
+
* LeftIcon+Small en Figma. Homologado vía `link` (SuiLinkConfig
|
|
4139
|
+
* | string) + `linkClick` (usa sui-link-button size=medium).
|
|
3978
4140
|
*
|
|
3979
4141
|
* Divider (opcional, posición=absolute bottom) — 1px stroke-soft-200
|
|
3980
4142
|
*
|
|
@@ -3988,16 +4150,20 @@ type SuiDrawerHeaderSize = 'small' | 'large' | 'xlarge';
|
|
|
3988
4150
|
* radius-full → --sui-radius-full (badge + icon-badge)
|
|
3989
4151
|
* shadow x-small → --sui-regular-shadow-x-small (icon-badge frame)
|
|
3990
4152
|
*
|
|
3991
|
-
* Badge:
|
|
3992
|
-
*
|
|
3993
|
-
*
|
|
3994
|
-
*
|
|
3995
|
-
*
|
|
4153
|
+
* Badge (`badge: SuiBadgeConfig | number | string | null`):
|
|
4154
|
+
* - number → badge NUMÉRICO Figma (círculo error 20×20, span custom): círculo
|
|
4155
|
+
* 20×20 fijo en Figma (siempre muestra "2"). El SUI usa min-width:20px +
|
|
4156
|
+
* height:20px → para 1 dígito es un círculo 20×20 exacto; para 2+ dígitos
|
|
4157
|
+
* crece en width manteniendo height 20 (pill), comportamiento DS estándar de
|
|
4158
|
+
* un number-badge. NO se fuerza width:20px fijo para no recortar números
|
|
4159
|
+
* >= 10 (ver openQuestion del reporte).
|
|
4160
|
+
* - string / SuiBadgeConfig → <sui-badge> estándar con los fallbacks canon del
|
|
4161
|
+
* patrón (orange/light/small), igual que checkbox-label/switch-label.
|
|
3996
4162
|
*
|
|
3997
4163
|
* Confirmado contra Figma live (2026-05-29):
|
|
3998
4164
|
* - Link Button SOLO existe en variants Small. El prop `button` solo está
|
|
3999
4165
|
* en Basic+Small (3187:5673) y LeftIcon+Small; las variants Large
|
|
4000
|
-
* (3187:4549) NO lo tienen. El template gatea `
|
|
4166
|
+
* (3187:4549) NO lo tienen. El template gatea `linkCfg() && size()==='small'`.
|
|
4001
4167
|
* - Link Button color = text/sub-600 (gray variant del sui-link-button).
|
|
4002
4168
|
* - Posición: entre content y dismiss icon (orden de capas Figma confirmado).
|
|
4003
4169
|
*
|
|
@@ -4026,17 +4192,29 @@ declare class SuiDrawerHeader {
|
|
|
4026
4192
|
readonly description: _angular_core.InputSignal<string | null>;
|
|
4027
4193
|
/** RemixIcon name (sin 'ri-') para variant left-icon. */
|
|
4028
4194
|
readonly icon: _angular_core.InputSignal<string | null>;
|
|
4029
|
-
/**
|
|
4030
|
-
|
|
4031
|
-
|
|
4032
|
-
*
|
|
4033
|
-
*
|
|
4034
|
-
*
|
|
4035
|
-
*
|
|
4036
|
-
|
|
4037
|
-
|
|
4038
|
-
|
|
4039
|
-
|
|
4195
|
+
/** Badge junto al title — union de 3 formas:
|
|
4196
|
+
* - `number` → badge NUMÉRICO built-in del Figma (círculo state/error/base
|
|
4197
|
+
* 20×20, span custom). `0` es válido (se renderiza).
|
|
4198
|
+
* - `string` → shorthand de badge estándar (solo label, fallbacks canon).
|
|
4199
|
+
* - `SuiBadgeConfig` → <sui-badge> con color/variant/size (defaults
|
|
4200
|
+
* orange/light/small, mismo patrón que checkbox-label).
|
|
4201
|
+
* null = sin badge. */
|
|
4202
|
+
readonly badge: _angular_core.InputSignal<string | number | SuiBadgeConfig | null>;
|
|
4203
|
+
/** Valor del badge numérico Figma (render span custom). null si el badge no es number. */
|
|
4204
|
+
protected readonly badgeNum: _angular_core.Signal<number | null>;
|
|
4205
|
+
/** Config resuelta del badge estándar (string → { label }). null si number/sin badge. */
|
|
4206
|
+
protected readonly badgeCfg: _angular_core.Signal<SuiBadgeConfig | null>;
|
|
4207
|
+
/** Link Button inline del header (Figma input `button=true`) — string
|
|
4208
|
+
* shorthand (solo label, emite `linkClick`) o SuiLinkConfig
|
|
4209
|
+
* { label, href?, target?, rel? }: con href renderiza <a> real; rel
|
|
4210
|
+
* automático 'noopener noreferrer' para _blank. (Mismo patrón objeto que
|
|
4211
|
+
* `badge`/SuiBadgeConfig.) Se muestra entre el content y el dismiss icon —
|
|
4212
|
+
* PERO solo cuando size='small', porque Figma define el Link Button
|
|
4213
|
+
* únicamente en Basic+Small / LeftIcon+Small (las variants Large no tienen
|
|
4214
|
+
* el prop `button`). Pasar link con size='large' no renderiza nada. */
|
|
4215
|
+
readonly link: _angular_core.InputSignal<string | SuiLinkConfig | null>;
|
|
4216
|
+
/** Config resuelta del link (string → { label }, rel automático). */
|
|
4217
|
+
protected readonly linkCfg: _angular_core.Signal<SuiLinkConfig | null>;
|
|
4040
4218
|
/** Muestra el close button trailing. Default true. */
|
|
4041
4219
|
readonly showDismiss: _angular_core.InputSignal<boolean>;
|
|
4042
4220
|
/** Muestra divider 1px al fondo del header. Default false. */
|
|
@@ -4045,12 +4223,12 @@ declare class SuiDrawerHeader {
|
|
|
4045
4223
|
readonly dismissAriaLabel: _angular_core.InputSignal<string>;
|
|
4046
4224
|
/** Click en el close button. */
|
|
4047
4225
|
readonly dismiss: _angular_core.OutputEmitterRef<MouseEvent>;
|
|
4048
|
-
/** Click en el Link Button inline (solo cuando
|
|
4226
|
+
/** Click en el Link Button inline (solo cuando `link` está set). */
|
|
4049
4227
|
readonly linkClick: _angular_core.OutputEmitterRef<MouseEvent>;
|
|
4050
4228
|
onDismiss(event: MouseEvent): void;
|
|
4051
4229
|
onLink(event: MouseEvent): void;
|
|
4052
4230
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SuiDrawerHeader, never>;
|
|
4053
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SuiDrawerHeader, "sui-drawer-header", never, { "type": { "alias": "type"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "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; }; "
|
|
4231
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SuiDrawerHeader, "sui-drawer-header", never, { "type": { "alias": "type"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "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; }; "badge": { "alias": "badge"; "required": false; "isSignal": true; }; "link": { "alias": "link"; "required": false; "isSignal": true; }; "showDismiss": { "alias": "showDismiss"; "required": false; "isSignal": true; }; "showDivider": { "alias": "showDivider"; "required": false; "isSignal": true; }; "dismissAriaLabel": { "alias": "dismissAriaLabel"; "required": false; "isSignal": true; }; }, { "dismiss": "dismiss"; "linkClick": "linkClick"; }, never, never, true, never>;
|
|
4054
4232
|
}
|
|
4055
4233
|
|
|
4056
4234
|
/**
|
|
@@ -4278,6 +4456,18 @@ type SuiDropdownMenuPopupRole = 'menu' | 'listbox' | 'true';
|
|
|
4278
4456
|
declare class SuiDropdownMenu {
|
|
4279
4457
|
/** Si true, el panel matchea el ancho del trigger. Default: auto width. */
|
|
4280
4458
|
readonly matchWidth: _angular_core.InputSignal<boolean>;
|
|
4459
|
+
/** Estrategia ante espacio insuficiente. Default (true): el pane se ENCOGE
|
|
4460
|
+
* al espacio libre (correcto para menús de items con scroll interno).
|
|
4461
|
+
* Para paneles de tamaño FIJO (color picker): false + push=true — el panel
|
|
4462
|
+
* se corre (puede tapar el trigger) pero se muestra ENTERO. */
|
|
4463
|
+
readonly flexibleDimensions: _angular_core.InputSignal<boolean>;
|
|
4464
|
+
/** withPush del CDK: empuja el pane dentro del viewport si no cabe.
|
|
4465
|
+
* ⚠️ Caveat CDK: un pane pusheado queda con coordenadas fijas y NO
|
|
4466
|
+
* re-ancla al origin al scrollear (flota despegado del trigger) — bug
|
|
4467
|
+
* real con el color picker 2026-07-21. Preferir push=false: el pane
|
|
4468
|
+
* queda anclado y sigue el scroll; si no cabe, sobresale del viewport
|
|
4469
|
+
* como cualquier popover nativo. */
|
|
4470
|
+
readonly push: _angular_core.InputSignal<boolean>;
|
|
4281
4471
|
/** Min-width fijo del panel (px). Si matchWidth + minWidth: `max(triggerWidth, minWidth)`. */
|
|
4282
4472
|
readonly minWidth: _angular_core.InputSignal<number | null>;
|
|
4283
4473
|
/** Position primary. Default: auto = below con fallback above. */
|
|
@@ -4322,7 +4512,7 @@ declare class SuiDropdownMenu {
|
|
|
4322
4512
|
open(): void;
|
|
4323
4513
|
close(): void;
|
|
4324
4514
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SuiDropdownMenu, never>;
|
|
4325
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SuiDropdownMenu, "sui-dropdown-menu", ["suiDropdownMenu"], { "matchWidth": { "alias": "matchWidth"; "required": false; "isSignal": true; }; "minWidth": { "alias": "minWidth"; "required": false; "isSignal": true; }; "position": { "alias": "position"; "required": false; "isSignal": true; }; "viewportMargin": { "alias": "viewportMargin"; "required": false; "isSignal": true; }; "panelClass": { "alias": "panelClass"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "popupRole": { "alias": "popupRole"; "required": false; "isSignal": true; }; "origin": { "alias": "origin"; "required": false; "isSignal": true; }; }, { "openedChange": "openedChange"; }, ["_panel"], ["[trigger]"], true, never>;
|
|
4515
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SuiDropdownMenu, "sui-dropdown-menu", ["suiDropdownMenu"], { "matchWidth": { "alias": "matchWidth"; "required": false; "isSignal": true; }; "flexibleDimensions": { "alias": "flexibleDimensions"; "required": false; "isSignal": true; }; "push": { "alias": "push"; "required": false; "isSignal": true; }; "minWidth": { "alias": "minWidth"; "required": false; "isSignal": true; }; "position": { "alias": "position"; "required": false; "isSignal": true; }; "viewportMargin": { "alias": "viewportMargin"; "required": false; "isSignal": true; }; "panelClass": { "alias": "panelClass"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "popupRole": { "alias": "popupRole"; "required": false; "isSignal": true; }; "origin": { "alias": "origin"; "required": false; "isSignal": true; }; }, { "openedChange": "openedChange"; }, ["_panel"], ["[trigger]"], true, never>;
|
|
4326
4516
|
}
|
|
4327
4517
|
|
|
4328
4518
|
/**
|
|
@@ -4465,7 +4655,7 @@ type SuiEmojiName = keyof typeof SUI_EMOJI_MAP;
|
|
|
4465
4655
|
type SuiEmojiSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'full';
|
|
4466
4656
|
declare class SuiEmoji {
|
|
4467
4657
|
/** Nombre del emoji del catálogo. Si se proveé `src`, este se ignora. */
|
|
4468
|
-
readonly name: _angular_core.InputSignal<"
|
|
4658
|
+
readonly name: _angular_core.InputSignal<"label" | "warning" | "thinking-face" | "grinning-face" | "smiling-face-hearts" | "face-with-rolling-eyes" | "face-screaming" | "partying-face" | "star-struck" | "sleeping-face" | "pensive-face" | "confused-face" | "neutral-face" | "slightly-smiling-face" | "grinning-face-smiling-eyes" | "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>;
|
|
4469
4659
|
/** URL directa al emoji (override del catálogo). Útil para usar emojis fuera del map. */
|
|
4470
4660
|
readonly src: _angular_core.InputSignal<string | null>;
|
|
4471
4661
|
/** Tamaño del emoji. */
|
|
@@ -4481,6 +4671,15 @@ declare class SuiEmoji {
|
|
|
4481
4671
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SuiEmoji, "sui-emoji", never, { "name": { "alias": "name"; "required": false; "isSignal": true; }; "src": { "alias": "src"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
4482
4672
|
}
|
|
4483
4673
|
|
|
4674
|
+
/**
|
|
4675
|
+
* Config del CTA del empty state. String shorthand = solo label (el botón
|
|
4676
|
+
* emite `actionClicked`); con `route` el botón navega vía routerLink.
|
|
4677
|
+
* (Mismo patrón objeto que `badge`/`link` de sui-checkbox-label.)
|
|
4678
|
+
*/
|
|
4679
|
+
interface SuiEmptyStateAction {
|
|
4680
|
+
label: string;
|
|
4681
|
+
route?: string;
|
|
4682
|
+
}
|
|
4484
4683
|
/**
|
|
4485
4684
|
* SUI Empty State — SUI Design System 2.0
|
|
4486
4685
|
*
|
|
@@ -4512,24 +4711,28 @@ declare class SuiEmoji {
|
|
|
4512
4711
|
* ilustración default es el zorro (mascota canon de los empty states).
|
|
4513
4712
|
* - title (required): heading
|
|
4514
4713
|
* - subtitle: descripción
|
|
4515
|
-
* -
|
|
4516
|
-
*
|
|
4714
|
+
* - action: string shorthand (solo label → botón emite actionClicked) o
|
|
4715
|
+
* { label, route? } — con route el botón navega vía routerLink
|
|
4517
4716
|
*/
|
|
4518
4717
|
declare class SuiEmptyState {
|
|
4519
4718
|
/** URL de Fluent Emoji (3D o animado) — override del zorro default. */
|
|
4520
4719
|
emoji: _angular_core.InputSignal<string>;
|
|
4521
4720
|
title: _angular_core.InputSignal<string>;
|
|
4522
4721
|
subtitle: _angular_core.InputSignal<string>;
|
|
4523
|
-
|
|
4524
|
-
|
|
4722
|
+
/** CTA del empty state — string shorthand (solo label, emite `actionClicked`)
|
|
4723
|
+
o SuiEmptyStateAction { label, route? } (con route usa routerLink).
|
|
4724
|
+
null/'' = sin botón. */
|
|
4725
|
+
action: _angular_core.InputSignal<string | SuiEmptyStateAction | null>;
|
|
4525
4726
|
actionClicked: _angular_core.OutputEmitterRef<void>;
|
|
4727
|
+
/** Config resuelta del CTA (string → { label }; sin label → null). */
|
|
4728
|
+
protected readonly actionCfg: _angular_core.Signal<SuiEmptyStateAction | null>;
|
|
4526
4729
|
/** URL del emoji. Default = zorro (mascota canon de empty states del proyecto):
|
|
4527
4730
|
todo empty muestra el zorro salvo que pase un `emoji` URL distinto explícito.
|
|
4528
4731
|
Centralizar el default acá garantiza consistencia en TODOS los empty —
|
|
4529
4732
|
incluidas las secciones reutilizables — sin tocar cada uso. */
|
|
4530
4733
|
protected readonly resolvedEmojiSrc: _angular_core.Signal<string>;
|
|
4531
4734
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SuiEmptyState, never>;
|
|
4532
|
-
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; }; "
|
|
4735
|
+
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>;
|
|
4533
4736
|
}
|
|
4534
4737
|
/** Zorro animado (Fluent Emoji) — emoji default canon de los empty states. */
|
|
4535
4738
|
declare const EMPTY_STATE_FOX_EMOJI = "https://raw.githubusercontent.com/Tarikul-Islam-Anik/Animated-Fluent-Emojis/master/Emojis/Animals/Fox.png";
|
|
@@ -4739,6 +4942,15 @@ declare class SuiFileIcon {
|
|
|
4739
4942
|
}
|
|
4740
4943
|
|
|
4741
4944
|
type SuiFileUploadCardState = 'in-progress' | 'success' | 'error';
|
|
4945
|
+
/**
|
|
4946
|
+
* Config del archivo mostrado en la card. String shorthand = filename directo
|
|
4947
|
+
* (mismo patrón objeto que `badge`/`link` de sui-checkbox-label).
|
|
4948
|
+
* `extension` fuerza el tipo del file-icon; si falta se extrae del filename.
|
|
4949
|
+
*/
|
|
4950
|
+
interface SuiFileUploadCardFile {
|
|
4951
|
+
filename: string;
|
|
4952
|
+
extension?: string;
|
|
4953
|
+
}
|
|
4742
4954
|
/**
|
|
4743
4955
|
* SUI File Upload Card — SUI Design System 2.0
|
|
4744
4956
|
*
|
|
@@ -4822,8 +5034,9 @@ type SuiFileUploadCardState = 'in-progress' | 'success' | 'error';
|
|
|
4822
5034
|
* error-warning-fill (error) → --sui-state-error-base (rojo) — íd.
|
|
4823
5035
|
*
|
|
4824
5036
|
* Inputs:
|
|
4825
|
-
* -
|
|
4826
|
-
*
|
|
5037
|
+
* - file: string shorthand (= filename, default "file.pdf") o
|
|
5038
|
+
* { filename, extension? } — extension overridea el FileIcon
|
|
5039
|
+
* (si falta se extrae del filename)
|
|
4827
5040
|
* - description: texto secundario izquierdo (ej. "0 KB of 120 KB")
|
|
4828
5041
|
* - state: 'in-progress' | 'success' | 'error'
|
|
4829
5042
|
* - progress: 0–100 — solo se muestra si state==='in-progress'
|
|
@@ -4838,8 +5051,10 @@ type SuiFileUploadCardState = 'in-progress' | 'success' | 'error';
|
|
|
4838
5051
|
* - retryClicked: click en "Try Again" (solo state==='error')
|
|
4839
5052
|
*/
|
|
4840
5053
|
declare class SuiFileUploadCard {
|
|
4841
|
-
|
|
4842
|
-
readonly
|
|
5054
|
+
/** Archivo mostrado — string shorthand (= filename) o { filename, extension? }. */
|
|
5055
|
+
readonly file: _angular_core.InputSignal<string | SuiFileUploadCardFile>;
|
|
5056
|
+
/** Config resuelta del archivo (string → { filename }). */
|
|
5057
|
+
protected readonly fileCfg: _angular_core.Signal<Required<SuiFileUploadCardFile>>;
|
|
4843
5058
|
readonly description: _angular_core.InputSignal<string>;
|
|
4844
5059
|
readonly state: _angular_core.InputSignal<SuiFileUploadCardState>;
|
|
4845
5060
|
readonly progress: _angular_core.InputSignal<number>;
|
|
@@ -4859,7 +5074,7 @@ declare class SuiFileUploadCard {
|
|
|
4859
5074
|
protected onAction(): void;
|
|
4860
5075
|
protected onRetry(): void;
|
|
4861
5076
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SuiFileUploadCard, never>;
|
|
4862
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SuiFileUploadCard, "sui-file-upload-card", never, { "
|
|
5077
|
+
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>;
|
|
4863
5078
|
}
|
|
4864
5079
|
|
|
4865
5080
|
type SuiFileUploadSize = 'small' | 'medium' | 'large' | 'xlarge';
|
|
@@ -5118,19 +5333,24 @@ declare class SuiFilterItem {
|
|
|
5118
5333
|
*
|
|
5119
5334
|
* Usage:
|
|
5120
5335
|
* <sui-filter-panel-header label="Filters" leftIcon="equalizer-line"
|
|
5121
|
-
* [
|
|
5336
|
+
* [clear]="true" (clearClick)="onClear()" />
|
|
5337
|
+
* <sui-filter-panel-header label="Filtros" clear="Limpiar"
|
|
5338
|
+
* (clearClick)="onClear()" />
|
|
5122
5339
|
*/
|
|
5123
5340
|
declare class SuiFilterPanelHeader {
|
|
5124
5341
|
readonly label: _angular_core.InputSignal<string>;
|
|
5125
5342
|
/** Icono opcional a la izquierda del label (20×20). */
|
|
5126
5343
|
readonly leftIcon: _angular_core.InputSignal<string | null>;
|
|
5127
|
-
/**
|
|
5128
|
-
|
|
5129
|
-
|
|
5130
|
-
|
|
5131
|
-
readonly
|
|
5344
|
+
/** Link de limpieza a la derecha: `true` = label default 'Clear', string =
|
|
5345
|
+
* label custom, `false` (default) = oculto. */
|
|
5346
|
+
readonly clear: _angular_core.InputSignal<string | boolean>;
|
|
5347
|
+
/** Label resuelto del link (null = oculto). */
|
|
5348
|
+
protected readonly clearLabelCfg: _angular_core.Signal<string | null>;
|
|
5349
|
+
/** Click en el link de limpieza. (Renombrado de `clear` — el nombre lo tomó
|
|
5350
|
+
* el input consolidado; input y output no pueden compartir nombre.) */
|
|
5351
|
+
readonly clearClick: _angular_core.OutputEmitterRef<void>;
|
|
5132
5352
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SuiFilterPanelHeader, never>;
|
|
5133
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SuiFilterPanelHeader, "sui-filter-panel-header", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "leftIcon": { "alias": "leftIcon"; "required": false; "isSignal": true; }; "
|
|
5353
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SuiFilterPanelHeader, "sui-filter-panel-header", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "leftIcon": { "alias": "leftIcon"; "required": false; "isSignal": true; }; "clear": { "alias": "clear"; "required": false; "isSignal": true; }; }, { "clearClick": "clearClick"; }, never, never, true, never>;
|
|
5134
5354
|
}
|
|
5135
5355
|
|
|
5136
5356
|
/**
|
|
@@ -5165,20 +5385,27 @@ declare class SuiFilterPanelHeader {
|
|
|
5165
5385
|
*
|
|
5166
5386
|
* Usage:
|
|
5167
5387
|
* <sui-filter-panel-footer (clear)="onClear()" (apply)="onApply()" />
|
|
5168
|
-
* <sui-filter-panel-footer
|
|
5169
|
-
* [
|
|
5388
|
+
* <sui-filter-panel-footer clearButton="Reset"
|
|
5389
|
+
* [applyButton]="{ label: 'Aplicar filtros', disabled: !dirty() }"
|
|
5390
|
+
* (apply)="onApply()" />
|
|
5170
5391
|
*/
|
|
5171
5392
|
declare class SuiFilterPanelFooter {
|
|
5172
|
-
|
|
5173
|
-
|
|
5174
|
-
|
|
5175
|
-
readonly
|
|
5393
|
+
/** Botón "Clear" (stroke neutral) — string shorthand (solo label) o
|
|
5394
|
+
* SuiFooterButtonConfig { label, disabled? }. Interfaz compartida con
|
|
5395
|
+
* sui-drawer-footer. */
|
|
5396
|
+
readonly clearButton: _angular_core.InputSignal<string | SuiFooterButtonConfig>;
|
|
5397
|
+
/** Botón "Apply" (filled primary) — string shorthand o SuiFooterButtonConfig. */
|
|
5398
|
+
readonly applyButton: _angular_core.InputSignal<string | SuiFooterButtonConfig>;
|
|
5176
5399
|
/** Tamaño de los botones. Default 'small' (Figma: p-8px/radius-8 = size small). */
|
|
5177
|
-
readonly size: _angular_core.InputSignal<"
|
|
5400
|
+
readonly size: _angular_core.InputSignal<"small" | "medium">;
|
|
5401
|
+
/** Config resuelta del botón Clear (string → { label }). */
|
|
5402
|
+
protected readonly clearCfg: _angular_core.Signal<SuiFooterButtonConfig>;
|
|
5403
|
+
/** Config resuelta del botón Apply (string → { label }). */
|
|
5404
|
+
protected readonly applyCfg: _angular_core.Signal<SuiFooterButtonConfig>;
|
|
5178
5405
|
readonly clear: _angular_core.OutputEmitterRef<void>;
|
|
5179
5406
|
readonly apply: _angular_core.OutputEmitterRef<void>;
|
|
5180
5407
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SuiFilterPanelFooter, never>;
|
|
5181
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SuiFilterPanelFooter, "sui-filter-panel-footer", never, { "
|
|
5408
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SuiFilterPanelFooter, "sui-filter-panel-footer", never, { "clearButton": { "alias": "clearButton"; "required": false; "isSignal": true; }; "applyButton": { "alias": "applyButton"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, { "clear": "clear"; "apply": "apply"; }, never, never, true, never>;
|
|
5182
5409
|
}
|
|
5183
5410
|
|
|
5184
5411
|
type SuiFormHintVariant = 'neutral' | 'error' | 'success' | 'warning' | 'disabled';
|
|
@@ -5261,18 +5488,21 @@ type SuiFormLabelSize = 'xsmall' | 'small' | 'medium';
|
|
|
5261
5488
|
* - Required → input `required` (asterisco)
|
|
5262
5489
|
* - Sublabel → input `sublabel` (texto secundario)
|
|
5263
5490
|
* - Info → input `tooltip` (icono ℹ + tooltip)
|
|
5264
|
-
* - Button → input `
|
|
5491
|
+
* - Button → input `link` + output `linkClick` (link tipo "Help?" a la derecha)
|
|
5265
5492
|
*
|
|
5266
5493
|
* @input label: string (required) — Texto principal del label
|
|
5267
5494
|
* @input sublabel: string | null — Texto secundario pequeño (ej. "Optional", "Required")
|
|
5268
5495
|
* @input required: boolean — Muestra asterisco al final del label principal
|
|
5269
5496
|
* @input tooltip: string | null — Tooltip sobre icono info (ℹ) al final del label
|
|
5270
|
-
* @input
|
|
5271
|
-
* de Figma, ej. "Help?").
|
|
5497
|
+
* @input link: SuiLinkConfig | string | null — Link de acción a la derecha (variante
|
|
5498
|
+
* "Button" de Figma, ej. "Help?"). String shorthand = solo label (emite `linkClick`);
|
|
5499
|
+
* SuiLinkConfig { label, href?, target?, rel? } = <a> real con rel automático
|
|
5500
|
+
* 'noopener noreferrer' si target='_blank' (patrón canon sui-checkbox-label).
|
|
5501
|
+
* Si null, no se renderiza el link.
|
|
5272
5502
|
* @input size: 'xsmall' | 'small' | 'medium' — Tamaño visual, default 'medium'
|
|
5273
5503
|
* @input disabled: boolean — Atenúa todo el label (text/sublabel/asterisco/icono/link)
|
|
5274
5504
|
* @input for: string | null — Attr `for` del <label> para accesibilidad
|
|
5275
|
-
* @output linkClick:
|
|
5505
|
+
* @output linkClick: MouseEvent — Emite cuando se clickea el link de acción ("Button" variant)
|
|
5276
5506
|
*
|
|
5277
5507
|
* Variantes (todas verificadas contra el variantMatrix de la auditoría;
|
|
5278
5508
|
* los valores cromáticos exactos quedan PENDING VERIFY hasta re-correr MCP Figma):
|
|
@@ -5286,7 +5516,12 @@ type SuiFormLabelSize = 'xsmall' | 'small' | 'medium';
|
|
|
5286
5516
|
* (registrado en SUI_CUSTOM_ICONS) — círculo relleno con "i" serif, NO el
|
|
5287
5517
|
* ri-information-fill de RemixIcon (i recta). Color --sui-icon-disabled-300 (#d1d1d1)
|
|
5288
5518
|
* via currentColor; el vector queda ~12.5px centrado en slot 20px (padding 18.75%).
|
|
5289
|
-
* -
|
|
5519
|
+
* - link: sui-link-button variant="gray" size="small" alineado a la derecha
|
|
5520
|
+
* (margin-left: auto). En Figma el nodo del link ES una instancia de
|
|
5521
|
+
* "Link Buttons [1.1]" (266:2814) → se renderiza con el COMPONENTE real,
|
|
5522
|
+
* no un <button> maqueta (canon: ningún button custom donde un SUI sirve).
|
|
5523
|
+
* Variant gray = 12/16/500 text/sub-600 base + disabled-300, idéntico al
|
|
5524
|
+
* spec verificado del label.
|
|
5290
5525
|
* - disabled: --sui-text-disabled-300 / --sui-icon-disabled-300 en todo, sin cursor pointer.
|
|
5291
5526
|
* - sizes: xsmall/small/medium — tipografía escala con el field que acompaña.
|
|
5292
5527
|
*
|
|
@@ -5302,11 +5537,14 @@ declare class SuiFormLabel {
|
|
|
5302
5537
|
readonly required: _angular_core.InputSignal<boolean>;
|
|
5303
5538
|
/** Tooltip opcional sobre un icono info (ℹ) al final del label */
|
|
5304
5539
|
readonly tooltip: _angular_core.InputSignal<string | null>;
|
|
5305
|
-
/**
|
|
5306
|
-
*
|
|
5307
|
-
*
|
|
5308
|
-
|
|
5309
|
-
|
|
5540
|
+
/** Link de acción a la derecha (variante "Button" de Figma, ej. "Help?") —
|
|
5541
|
+
* string shorthand (solo label, emite `linkClick`) o SuiLinkConfig
|
|
5542
|
+
* { label, href?, target?, rel? }: con href renderiza <a> real; rel
|
|
5543
|
+
* automático 'noopener noreferrer' para _blank. Si null/vacío, no se
|
|
5544
|
+
* renderiza el link. (Patrón canon `link` de sui-checkbox-label.) */
|
|
5545
|
+
readonly link: _angular_core.InputSignal<string | SuiLinkConfig | null>;
|
|
5546
|
+
/** Config resuelta del link (string → { label }, rel automático). */
|
|
5547
|
+
protected readonly linkCfg: _angular_core.Signal<SuiLinkConfig | null>;
|
|
5310
5548
|
/** Tamaño visual — matchea al field que acompaña */
|
|
5311
5549
|
readonly size: _angular_core.InputSignal<SuiFormLabelSize>;
|
|
5312
5550
|
/** Atenúa todo el label (estado Disabled de Figma) */
|
|
@@ -5314,9 +5552,12 @@ declare class SuiFormLabel {
|
|
|
5314
5552
|
/** ID del field controlado (para accesibilidad `for` attribute) */
|
|
5315
5553
|
readonly for: _angular_core.InputSignal<string | null>;
|
|
5316
5554
|
/** Emite cuando se clickea el link de acción (variante "Button" de Figma) */
|
|
5317
|
-
readonly linkClick: _angular_core.OutputEmitterRef<
|
|
5555
|
+
readonly linkClick: _angular_core.OutputEmitterRef<MouseEvent>;
|
|
5556
|
+
/** Click del link: stop-propagation para no disparar la activación del <label>
|
|
5557
|
+
* contenedor. sui-link-button ya bloquea el click cuando está disabled. */
|
|
5558
|
+
onLinkClick(event: MouseEvent): void;
|
|
5318
5559
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SuiFormLabel, never>;
|
|
5319
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SuiFormLabel, "sui-form-label", never, { "label": { "alias": "label"; "required": true; "isSignal": true; }; "sublabel": { "alias": "sublabel"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "tooltip": { "alias": "tooltip"; "required": false; "isSignal": true; }; "
|
|
5560
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SuiFormLabel, "sui-form-label", never, { "label": { "alias": "label"; "required": true; "isSignal": true; }; "sublabel": { "alias": "sublabel"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "tooltip": { "alias": "tooltip"; "required": false; "isSignal": true; }; "link": { "alias": "link"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "for": { "alias": "for"; "required": false; "isSignal": true; }; }, { "linkClick": "linkClick"; }, never, never, true, never>;
|
|
5320
5561
|
}
|
|
5321
5562
|
|
|
5322
5563
|
/**
|
|
@@ -5350,6 +5591,13 @@ declare class SuiIcon {
|
|
|
5350
5591
|
|
|
5351
5592
|
type SuiImageUploadProfileAlignment = 'vertical' | 'horizontal';
|
|
5352
5593
|
type SuiImageUploadProfileType = 'avatar' | 'company';
|
|
5594
|
+
/** Copy de los botones de acción (i18n). Cada key es opcional — lo no seteado
|
|
5595
|
+
* cae al default en español (tuteo): Subir / Eliminar / Cambiar. */
|
|
5596
|
+
interface SuiImageUploadProfileLabels {
|
|
5597
|
+
upload?: string;
|
|
5598
|
+
remove?: string;
|
|
5599
|
+
change?: string;
|
|
5600
|
+
}
|
|
5353
5601
|
/**
|
|
5354
5602
|
* SUI Image Upload Profile — SUI Design System 2.0
|
|
5355
5603
|
*
|
|
@@ -5396,9 +5644,10 @@ type SuiImageUploadProfileType = 'avatar' | 'company';
|
|
|
5396
5644
|
* + "Change" (stroke neutral) — node 452:847
|
|
5397
5645
|
* Geometría Figma: p-6 uniforme, radius-8, inner text-wrap px-4,
|
|
5398
5646
|
* Label/Small 14/20/-0.6% 500. Mapea EXACTO a <sui-button size="xsmall">.
|
|
5399
|
-
* Labels configurables via
|
|
5400
|
-
* en Figma están hardcodeadas en inglés;
|
|
5401
|
-
* (tuteo peruano) y el consumer puede
|
|
5647
|
+
* Labels configurables via el input objeto `labels`
|
|
5648
|
+
* ({ upload?, remove?, change? }) — en Figma están hardcodeadas en inglés;
|
|
5649
|
+
* acá el default va en español (tuteo peruano) y el consumer puede
|
|
5650
|
+
* overridear (parcial o total) para i18n.
|
|
5402
5651
|
*
|
|
5403
5652
|
* Type=Company (452:792 / 452:1006): el avatar es un SLOT `pickCompany` —
|
|
5404
5653
|
* el consumer pasa el logo real de la empresa. Acá se expone como
|
|
@@ -5431,7 +5680,8 @@ type SuiImageUploadProfileType = 'avatar' | 'company';
|
|
|
5431
5680
|
* - subtitle: subtítulo (Paragraph/Small). Default hint de dimensiones.
|
|
5432
5681
|
* - alignment: 'vertical' (texto + avatar 64) | 'horizontal' (avatar 56, sin texto).
|
|
5433
5682
|
* - type: 'avatar' (silueta humana) | 'company' (silueta edificios).
|
|
5434
|
-
* -
|
|
5683
|
+
* - labels: copy de los botones (i18n) — { upload?, remove?, change? },
|
|
5684
|
+
* defaults Subir / Eliminar / Cambiar.
|
|
5435
5685
|
* - disabled: deshabilita los botones (no se puede interactuar).
|
|
5436
5686
|
* - loading: estado de carga (botones deshabilitados mientras sube).
|
|
5437
5687
|
*
|
|
@@ -5457,9 +5707,10 @@ declare class SuiImageUploadProfile implements ControlValueAccessor {
|
|
|
5457
5707
|
readonly subtitle: _angular_core.InputSignal<string>;
|
|
5458
5708
|
readonly alignment: _angular_core.InputSignal<SuiImageUploadProfileAlignment>;
|
|
5459
5709
|
readonly type: _angular_core.InputSignal<SuiImageUploadProfileType>;
|
|
5460
|
-
|
|
5461
|
-
readonly
|
|
5462
|
-
|
|
5710
|
+
/** Copy de los botones (i18n) — objeto parcial; lo no seteado cae al default. */
|
|
5711
|
+
readonly labels: _angular_core.InputSignal<SuiImageUploadProfileLabels>;
|
|
5712
|
+
/** Labels resueltas con los defaults en español (tuteo). */
|
|
5713
|
+
protected readonly labelsCfg: _angular_core.Signal<Required<SuiImageUploadProfileLabels>>;
|
|
5463
5714
|
readonly disabled: _angular_core.InputSignal<boolean>;
|
|
5464
5715
|
readonly loading: _angular_core.InputSignal<boolean>;
|
|
5465
5716
|
readonly upload: _angular_core.OutputEmitterRef<void>;
|
|
@@ -5499,7 +5750,7 @@ declare class SuiImageUploadProfile implements ControlValueAccessor {
|
|
|
5499
5750
|
registerOnTouched(fn: () => void): void;
|
|
5500
5751
|
setDisabledState(isDisabled: boolean): void;
|
|
5501
5752
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SuiImageUploadProfile, never>;
|
|
5502
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SuiImageUploadProfile, "sui-image-upload-profile", never, { "imageUrl": { "alias": "imageUrl"; "required": false; "isSignal": true; }; "companyLogoSrc": { "alias": "companyLogoSrc"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "subtitle": { "alias": "subtitle"; "required": false; "isSignal": true; }; "alignment": { "alias": "alignment"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "
|
|
5753
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SuiImageUploadProfile, "sui-image-upload-profile", never, { "imageUrl": { "alias": "imageUrl"; "required": false; "isSignal": true; }; "companyLogoSrc": { "alias": "companyLogoSrc"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "subtitle": { "alias": "subtitle"; "required": false; "isSignal": true; }; "alignment": { "alias": "alignment"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "labels": { "alias": "labels"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; }, { "upload": "upload"; "remove": "remove"; "change": "change"; }, never, never, true, never>;
|
|
5503
5754
|
}
|
|
5504
5755
|
|
|
5505
5756
|
type SuiImageUploadShape = 'circle' | 'rect';
|
|
@@ -6071,6 +6322,19 @@ declare class SuiInput implements ControlValueAccessor {
|
|
|
6071
6322
|
|
|
6072
6323
|
type SuiIntegrationSwitchType = 'horizontal' | 'vertical';
|
|
6073
6324
|
type SuiIntegrationSwitchAppearance = 'card' | 'list';
|
|
6325
|
+
/**
|
|
6326
|
+
* Config del manage button embebido. Un solo input `[manage]` reemplaza al
|
|
6327
|
+
* trío showManage/manageLabel/manageIcon (mismo patrón objeto que
|
|
6328
|
+
* `badge`/SuiBadgeConfig — canon sui-checkbox-label):
|
|
6329
|
+
* - `true` (default) → botón con defaults ('Manage' + settings-2-line)
|
|
6330
|
+
* - `'Configurar'` → string shorthand: label custom, icon default
|
|
6331
|
+
* - `{ label, icon }` → config completa
|
|
6332
|
+
* - `false` / `null` → sin botón
|
|
6333
|
+
*/
|
|
6334
|
+
interface SuiIntegrationManageConfig {
|
|
6335
|
+
label?: string;
|
|
6336
|
+
icon?: string;
|
|
6337
|
+
}
|
|
6074
6338
|
/**
|
|
6075
6339
|
* SUI Integration Switch — SUI Design System 2.0
|
|
6076
6340
|
*
|
|
@@ -6133,9 +6397,13 @@ type SuiIntegrationSwitchAppearance = 'card' | 'list';
|
|
|
6133
6397
|
* description="Seamless collaboration and document management."
|
|
6134
6398
|
* brandIconSrc="/assets/brand/microsoft.svg"
|
|
6135
6399
|
* [(active)]="integrations.microsoft"
|
|
6136
|
-
*
|
|
6137
|
-
* (
|
|
6400
|
+
* badge="NEW"
|
|
6401
|
+
* (manageClick)="openSettings('microsoft')"
|
|
6138
6402
|
* />
|
|
6403
|
+
*
|
|
6404
|
+
* <!-- Manage custom (config objeto) · sin manage -->
|
|
6405
|
+
* <sui-integration-switch title="..." [manage]="{ label: 'Configurar', icon: 'tools-line' }" />
|
|
6406
|
+
* <sui-integration-switch title="..." [manage]="false" />
|
|
6139
6407
|
*/
|
|
6140
6408
|
declare class SuiIntegrationSwitch implements ControlValueAccessor {
|
|
6141
6409
|
readonly type: _angular_core.InputSignal<SuiIntegrationSwitchType>;
|
|
@@ -6150,10 +6418,11 @@ declare class SuiIntegrationSwitch implements ControlValueAccessor {
|
|
|
6150
6418
|
(label + color/variant/size, tipado como sui-badge). null = sin badge. */
|
|
6151
6419
|
readonly badge: _angular_core.InputSignal<string | SuiBadgeConfig | null>;
|
|
6152
6420
|
protected readonly badgeCfg: _angular_core.Signal<SuiBadgeConfig | null>;
|
|
6153
|
-
/**
|
|
6154
|
-
|
|
6155
|
-
|
|
6156
|
-
readonly
|
|
6421
|
+
/** Manage button — true = defaults ('Manage' + settings-2-line), string =
|
|
6422
|
+
label custom con icon default, SuiIntegrationManageConfig = todo,
|
|
6423
|
+
false/null = oculto. */
|
|
6424
|
+
readonly manage: _angular_core.InputSignal<string | boolean | SuiIntegrationManageConfig | null>;
|
|
6425
|
+
protected readonly manageCfg: _angular_core.Signal<Required<SuiIntegrationManageConfig> | null>;
|
|
6157
6426
|
/** Mostrar el switch toggle. Default true. */
|
|
6158
6427
|
readonly showToggle: _angular_core.InputSignal<boolean>;
|
|
6159
6428
|
readonly disabled: _angular_core.InputSignal<boolean>;
|
|
@@ -6163,8 +6432,9 @@ declare class SuiIntegrationSwitch implements ControlValueAccessor {
|
|
|
6163
6432
|
* two-way con `input + output` separados (input `active` + output `activeChange`). */
|
|
6164
6433
|
readonly active: _angular_core.InputSignal<boolean>;
|
|
6165
6434
|
readonly activeChange: _angular_core.OutputEmitterRef<boolean>;
|
|
6166
|
-
/** Click en el manage button.
|
|
6167
|
-
|
|
6435
|
+
/** Click en el manage button. (Nombrado como checkbox-label.linkClick —
|
|
6436
|
+
el nombre `manage` lo ocupa el input config del botón.) */
|
|
6437
|
+
readonly manageClick: _angular_core.OutputEmitterRef<MouseEvent>;
|
|
6168
6438
|
private readonly _disabledByForm;
|
|
6169
6439
|
readonly isDisabled: _angular_core.Signal<boolean>;
|
|
6170
6440
|
/** CVA buffer — usado SOLO en form mode (formControlName/formControl). */
|
|
@@ -6183,7 +6453,7 @@ declare class SuiIntegrationSwitch implements ControlValueAccessor {
|
|
|
6183
6453
|
registerOnTouched(fn: () => void): void;
|
|
6184
6454
|
setDisabledState(isDisabled: boolean): void;
|
|
6185
6455
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SuiIntegrationSwitch, never>;
|
|
6186
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SuiIntegrationSwitch, "sui-integration-switch", never, { "type": { "alias": "type"; "required": false; "isSignal": true; }; "appearance": { "alias": "appearance"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "brandIconSrc": { "alias": "brandIconSrc"; "required": false; "isSignal": true; }; "brandIcon": { "alias": "brandIcon"; "required": false; "isSignal": true; }; "badge": { "alias": "badge"; "required": false; "isSignal": true; }; "
|
|
6456
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SuiIntegrationSwitch, "sui-integration-switch", never, { "type": { "alias": "type"; "required": false; "isSignal": true; }; "appearance": { "alias": "appearance"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "brandIconSrc": { "alias": "brandIconSrc"; "required": false; "isSignal": true; }; "brandIcon": { "alias": "brandIcon"; "required": false; "isSignal": true; }; "badge": { "alias": "badge"; "required": false; "isSignal": true; }; "manage": { "alias": "manage"; "required": false; "isSignal": true; }; "showToggle": { "alias": "showToggle"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "active": { "alias": "active"; "required": false; "isSignal": true; }; }, { "activeChange": "activeChange"; "manageClick": "manageClick"; }, never, ["[sui-integration-brand]"], true, never>;
|
|
6187
6457
|
}
|
|
6188
6458
|
|
|
6189
6459
|
/**
|
|
@@ -6319,88 +6589,6 @@ declare class SuiKeyIcon {
|
|
|
6319
6589
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SuiKeyIcon, "sui-key-icon", never, { "name": { "alias": "name"; "required": true; "isSignal": true; }; "styleVariant": { "alias": "styleVariant"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
6320
6590
|
}
|
|
6321
6591
|
|
|
6322
|
-
type SuiLinkButtonVariant = 'gray' | 'black' | 'primary' | 'error' | 'modifiable';
|
|
6323
|
-
type SuiLinkButtonSize = 'medium' | 'small';
|
|
6324
|
-
/**
|
|
6325
|
-
* SUI Link Button — SUI Design System 2.0
|
|
6326
|
-
*
|
|
6327
|
-
* Figma file: 8p1k72aKKvzJV4XcvPS4VO
|
|
6328
|
-
* Frame: 168:4889 ("Link Buttons [1.1]") — 80 variants total
|
|
6329
|
-
*
|
|
6330
|
-
* EXACT (pulled from Figma + verified against sui-tokens.scss):
|
|
6331
|
-
* Anatomy
|
|
6332
|
-
* Container flex / inline-flex, gap=4px, items=center
|
|
6333
|
-
* Medium size text 14/20/-0.6%, icons 20×20
|
|
6334
|
-
* Small size text 12/16/0, icons 16×16
|
|
6335
|
-
* Font features 'ss11' 1, 'calt' 0, 'liga' 0
|
|
6336
|
-
* Underline (hover / focus / underline=on): línea continua SOLO
|
|
6337
|
-
* bajo el texto (los iconos chevron NO van subrayados —
|
|
6338
|
-
* Figma 169:1391/169:1419: la clase `underline` vive solo
|
|
6339
|
-
* en el <p>). Implementado vía ::after en
|
|
6340
|
-
* .sui-link-button__text (NO `text-decoration` sobre el
|
|
6341
|
-
* flex, que se fragmentaba en 3 trazos icon|text|icon).
|
|
6342
|
-
* Variant × State color matrix
|
|
6343
|
-
* Gray Default → text/sub-600 | Hover → sub-600 + underline | Focus → strong-950 + underline | Disabled → disabled-300
|
|
6344
|
-
* Black Default → text/strong-950 | Hover → strong-950 + underline
|
|
6345
|
-
* Primary Default → primary-base | Hover → primary-dark + underline
|
|
6346
|
-
* Error Default → state/error/base | Hover → red/700 + underline
|
|
6347
|
-
* Modifiable → currentColor (consumer-controlled)
|
|
6348
|
-
*
|
|
6349
|
-
* Token map (Figma → sui-tokens.scss):
|
|
6350
|
-
* text/sub-600 #5c5c5c → --sui-text-sub-600
|
|
6351
|
-
* text/strong-950 #171717 → --sui-text-strong-950
|
|
6352
|
-
* text/disabled-300 #d1d1d1 → --sui-text-disabled-300
|
|
6353
|
-
* primary-base #335cff → --sui-primary-base (project remaps to orange #fa7319)
|
|
6354
|
-
* primary-dark #2547d0 → --sui-primary-dark (project remaps to dark orange #e16614)
|
|
6355
|
-
* state/error/base #fb3748 → --sui-state-error-base
|
|
6356
|
-
* red/700 #d02533 → --sui-red-700
|
|
6357
|
-
* icon/* same as text/* per token level
|
|
6358
|
-
*
|
|
6359
|
-
* FOCUS states PULLED from Figma (2026-05-29) — el Focus mantiene el color
|
|
6360
|
-
* BASE + underline; solo el Hover oscurece. Nodos verificados:
|
|
6361
|
-
* Gray focus 169:1034 → strong-950 + underline
|
|
6362
|
-
* Black focus 169:1090 → strong-950 + underline
|
|
6363
|
-
* Primary focus 169:1138 → primary-base (NO dark) + underline
|
|
6364
|
-
* Error focus 169:1187 → error-base (NO red-700) + underline
|
|
6365
|
-
* (Hover: Primary 169:1134 → primary-dark; Error 169:1183 → red-700)
|
|
6366
|
-
*
|
|
6367
|
-
* PENDING VERIFY (inferred, NOT pulled):
|
|
6368
|
-
* - Modifiable Focus / Hover / Disabled: currentColor para hover/focus; disabled assumed --sui-text-disabled-300
|
|
6369
|
-
* - Underline=On styling para todos: misma decoration spec que Gray (decoration solid, thickness/position from-font, skip-ink none)
|
|
6370
|
-
* - Active state: no es variante Figma; tactile-press scale(0.97) por convención project
|
|
6371
|
-
* - Figma usa font-feature 'cv09' 1 además de 'ss11' 1 'calt' 0 'liga' 0; SUI omite cv09 (alterna del 9) — diferencia tipográfica menor, no afecta layout
|
|
6372
|
-
*
|
|
6373
|
-
* Usage:
|
|
6374
|
-
* <sui-link-button variant="primary" leftIcon="arrow-left-s-line">Volver</sui-link-button>
|
|
6375
|
-
* <sui-link-button variant="error" [underline]="true" (click)="onDelete()">Eliminar</sui-link-button>
|
|
6376
|
-
* <sui-link-button variant="primary" href="https://docs.example" target="_blank">Ver documentación</sui-link-button>
|
|
6377
|
-
*
|
|
6378
|
-
* Floating vs inline: el componente es `display: inline-flex` con baseline align,
|
|
6379
|
-
* por lo que fluye dentro de un párrafo como un link normal. Para uso "flotante"
|
|
6380
|
-
* (toast actions, notification CTA), el consumer lo posiciona libremente — el
|
|
6381
|
-
* componente no impone position/z-index propios.
|
|
6382
|
-
*/
|
|
6383
|
-
declare class SuiLinkButton {
|
|
6384
|
-
readonly variant: _angular_core.InputSignal<SuiLinkButtonVariant>;
|
|
6385
|
-
readonly size: _angular_core.InputSignal<SuiLinkButtonSize>;
|
|
6386
|
-
readonly underline: _angular_core.InputSignal<boolean>;
|
|
6387
|
-
readonly disabled: _angular_core.InputSignal<boolean>;
|
|
6388
|
-
readonly leftIcon: _angular_core.InputSignal<string | null>;
|
|
6389
|
-
readonly rightIcon: _angular_core.InputSignal<string | null>;
|
|
6390
|
-
/** Cuando se setea, el componente renderiza un <a> nativo en vez de <button>. */
|
|
6391
|
-
readonly href: _angular_core.InputSignal<string | null>;
|
|
6392
|
-
readonly target: _angular_core.InputSignal<string | null>;
|
|
6393
|
-
readonly rel: _angular_core.InputSignal<string | null>;
|
|
6394
|
-
readonly type: _angular_core.InputSignal<"button" | "submit" | "reset">;
|
|
6395
|
-
readonly ariaLabel: _angular_core.InputSignal<string | null>;
|
|
6396
|
-
readonly clicked: _angular_core.OutputEmitterRef<MouseEvent>;
|
|
6397
|
-
readonly iconSize: _angular_core.Signal<number>;
|
|
6398
|
-
readonly isAnchor: _angular_core.Signal<boolean>;
|
|
6399
|
-
onClick(event: MouseEvent): void;
|
|
6400
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SuiLinkButton, never>;
|
|
6401
|
-
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>;
|
|
6402
|
-
}
|
|
6403
|
-
|
|
6404
6592
|
/**
|
|
6405
6593
|
* SUI Modal Sheet — bottom sheet con breakpoints (estilo Apple Maps / Ionic ion-modal sheet).
|
|
6406
6594
|
*
|
|
@@ -6756,6 +6944,102 @@ declare class SuiModal implements AfterViewInit, OnDestroy {
|
|
|
6756
6944
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SuiModal, "sui-modal", never, { "open": { "alias": "open"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "closeOnBackdrop": { "alias": "closeOnBackdrop"; "required": false; "isSignal": true; }; "closeOnEscape": { "alias": "closeOnEscape"; "required": false; "isSignal": true; }; "showClose": { "alias": "showClose"; "required": false; "isSignal": true; }; "iconVariant": { "alias": "iconVariant"; "required": false; "isSignal": true; }; "headerIcon": { "alias": "headerIcon"; "required": false; "isSignal": true; }; "statusAlignment": { "alias": "statusAlignment"; "required": false; "isSignal": true; }; "backdropBlur": { "alias": "backdropBlur"; "required": false; "isSignal": true; }; "fullscreen": { "alias": "fullscreen"; "required": false; "isSignal": true; }; "fullBody": { "alias": "fullBody"; "required": false; "isSignal": true; }; }, { "open": "openChange"; "closed": "closed"; }, never, ["*", "[slot=footer]"], true, never>;
|
|
6757
6945
|
}
|
|
6758
6946
|
|
|
6947
|
+
/** Variantes semánticas del icono de status (mismo union que sui-modal). */
|
|
6948
|
+
type SuiModalHeaderVariant = 'info' | 'success' | 'warning' | 'error';
|
|
6949
|
+
/**
|
|
6950
|
+
* SUI Modal Header — SUI Design System 2.0
|
|
6951
|
+
*
|
|
6952
|
+
* Figma file: 8p1k72aKKvzJV4XcvPS4VO
|
|
6953
|
+
* Component set: 466:4778 ("Modal Header [1.1]") — 6 Types × 2 Sizes
|
|
6954
|
+
* Types: Basic · Left Icon · Error · Warning · Success · Information
|
|
6955
|
+
* Sizes: Medium (80, title 14/20 Medium + description 12/16) · Small (56, solo title)
|
|
6956
|
+
*
|
|
6957
|
+
* Componente STANDALONE para componer modales/paneles custom — el mismo header
|
|
6958
|
+
* que sui-modal renderiza internamente, ahora como pieza independiente (igual
|
|
6959
|
+
* que drawer-header/drawer-footer para drawers).
|
|
6960
|
+
*
|
|
6961
|
+
* EXACT (Figma 466:4777 medium / 472:298 small):
|
|
6962
|
+
* Container bg white-0 · border-bottom stroke-soft-200 · flex gap-16
|
|
6963
|
+
* (small: gap-12) · padding 16px 16px 16px 20px
|
|
6964
|
+
* Title Inter Medium 14/20 ls -0.084px, text-strong-950
|
|
6965
|
+
* Description Inter Regular 12/16, text-sub-600 (solo medium)
|
|
6966
|
+
* Status icon círculo padding-10 radius-full, state lighter bg + base color
|
|
6967
|
+
* (mismos tokens que sui-modal)
|
|
6968
|
+
* Close compact button ghost (icon close-line 20), top-right
|
|
6969
|
+
*
|
|
6970
|
+
* Tipos: `iconVariant` (semántico) o `icon` (custom, tipo Left Icon).
|
|
6971
|
+
* `icon` custom tiene prioridad; con ambos null → Basic (sin icono).
|
|
6972
|
+
*
|
|
6973
|
+
* Usage:
|
|
6974
|
+
* <sui-modal-header title="Editar producto" description="Cambios en vivo."
|
|
6975
|
+
* iconVariant="info" (closed)="cerrar()" />
|
|
6976
|
+
* <sui-modal-header size="small" title="Filtros" (closed)="cerrar()" />
|
|
6977
|
+
*/
|
|
6978
|
+
declare class SuiModalHeader {
|
|
6979
|
+
/** Título del header (14/20 Medium). */
|
|
6980
|
+
readonly title: _angular_core.InputSignal<string>;
|
|
6981
|
+
/** Descripción bajo el título (solo size medium). */
|
|
6982
|
+
readonly description: _angular_core.InputSignal<string | null>;
|
|
6983
|
+
/** medium (80): title + description · small (56): solo title. */
|
|
6984
|
+
readonly size: _angular_core.InputSignal<"small" | "medium">;
|
|
6985
|
+
/** Icono semántico de status (círculo state lighter/base). */
|
|
6986
|
+
readonly iconVariant: _angular_core.InputSignal<SuiModalHeaderVariant | null>;
|
|
6987
|
+
/** Icono custom (tipo "Left Icon" de Figma). Prioridad sobre iconVariant. */
|
|
6988
|
+
readonly icon: _angular_core.InputSignal<string | null>;
|
|
6989
|
+
/** Muestra el botón de cerrar (default true). */
|
|
6990
|
+
readonly showClose: _angular_core.InputSignal<boolean>;
|
|
6991
|
+
/** Click en el botón de cerrar. */
|
|
6992
|
+
readonly closed: _angular_core.OutputEmitterRef<void>;
|
|
6993
|
+
protected readonly iconName: _angular_core.Signal<string | null>;
|
|
6994
|
+
/** Variant efectivo para el data-attr del círculo (custom icon = neutral). */
|
|
6995
|
+
protected readonly resolvedVariant: _angular_core.Signal<string | null>;
|
|
6996
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SuiModalHeader, never>;
|
|
6997
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SuiModalHeader, "sui-modal-header", never, { "title": { "alias": "title"; "required": false; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "iconVariant": { "alias": "iconVariant"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "showClose": { "alias": "showClose"; "required": false; "isSignal": true; }; }, { "closed": "closed"; }, never, never, true, never>;
|
|
6998
|
+
}
|
|
6999
|
+
|
|
7000
|
+
/**
|
|
7001
|
+
* SUI Modal Footer — SUI Design System 2.0
|
|
7002
|
+
*
|
|
7003
|
+
* Figma file: 8p1k72aKKvzJV4XcvPS4VO
|
|
7004
|
+
* Component set: 472:566 ("Modal Footer [1.1]") — 7 Types:
|
|
7005
|
+
* Basic · Checkbox · Information · Toggle · Stepper · Link Button · Stretch
|
|
7006
|
+
*
|
|
7007
|
+
* Componente STANDALONE para componer modales/paneles custom (par del
|
|
7008
|
+
* sui-modal-header). Diseño componible en vez de 7 types hardcodeados:
|
|
7009
|
+
* - Los botones (derecha) via `primaryButton`/`secondaryButton` con la
|
|
7010
|
+
* interfaz COMPARTIDA SuiFooterButtonConfig (string shorthand = label).
|
|
7011
|
+
* - El slot izquierdo (los "types" de Figma) via <ng-content>: proyecta
|
|
7012
|
+
* ahí un <sui-checkbox-label>, <sui-switch-label>, <sui-link-button>,
|
|
7013
|
+
* texto informativo o el stepper — las stories muestran cada uno.
|
|
7014
|
+
* - `stretch` (type Stretch): los botones ocupan todo el ancho 50/50.
|
|
7015
|
+
*
|
|
7016
|
+
* EXACT (Figma 472:567): container bg white-0 + border-top soft-200,
|
|
7017
|
+
* padding 16px 20px · actions a la derecha gap-12 · botones size small.
|
|
7018
|
+
*
|
|
7019
|
+
* Usage:
|
|
7020
|
+
* <sui-modal-footer primaryButton="Continuar" secondaryButton="Cancelar"
|
|
7021
|
+
* (primaryClick)="save()" (secondaryClick)="close()" />
|
|
7022
|
+
*
|
|
7023
|
+
* <sui-modal-footer [primaryButton]="{ label: 'Eliminar', disabled: !ok }">
|
|
7024
|
+
* <sui-checkbox-label label="No volver a preguntar" [(active)]="skip" />
|
|
7025
|
+
* </sui-modal-footer>
|
|
7026
|
+
*/
|
|
7027
|
+
declare class SuiModalFooter {
|
|
7028
|
+
/** Botón primario (derecha) — string shorthand o { label, disabled? }. */
|
|
7029
|
+
readonly primaryButton: _angular_core.InputSignal<string | SuiFooterButtonConfig | null>;
|
|
7030
|
+
/** Botón secundario (izquierda del primario) — string o config. */
|
|
7031
|
+
readonly secondaryButton: _angular_core.InputSignal<string | SuiFooterButtonConfig | null>;
|
|
7032
|
+
/** Type Stretch de Figma: los botones ocupan todo el ancho (50/50). */
|
|
7033
|
+
readonly stretch: _angular_core.InputSignal<boolean>;
|
|
7034
|
+
readonly primaryClick: _angular_core.OutputEmitterRef<void>;
|
|
7035
|
+
readonly secondaryClick: _angular_core.OutputEmitterRef<void>;
|
|
7036
|
+
private cfg;
|
|
7037
|
+
protected readonly primaryCfg: _angular_core.Signal<SuiFooterButtonConfig | null>;
|
|
7038
|
+
protected readonly secondaryCfg: _angular_core.Signal<SuiFooterButtonConfig | null>;
|
|
7039
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SuiModalFooter, never>;
|
|
7040
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SuiModalFooter, "sui-modal-footer", never, { "primaryButton": { "alias": "primaryButton"; "required": false; "isSignal": true; }; "secondaryButton": { "alias": "secondaryButton"; "required": false; "isSignal": true; }; "stretch": { "alias": "stretch"; "required": false; "isSignal": true; }; }, { "primaryClick": "primaryClick"; "secondaryClick": "secondaryClick"; }, never, ["*"], true, never>;
|
|
7041
|
+
}
|
|
7042
|
+
|
|
6759
7043
|
/**
|
|
6760
7044
|
* SUI Notification Footer — SUI Design System 2.0
|
|
6761
7045
|
*
|
|
@@ -6793,12 +7077,17 @@ declare class SuiModal implements AfterViewInit, OnDestroy {
|
|
|
6793
7077
|
* API:
|
|
6794
7078
|
* - usePrefix: string ('Use') — texto antes de las teclas
|
|
6795
7079
|
* - useSuffix: string ('to navigate') — texto después de las teclas
|
|
6796
|
-
* -
|
|
6797
|
-
*
|
|
7080
|
+
* - manage: SuiLinkConfig | string | boolean | null (true) — link de gestión
|
|
7081
|
+
* (Figma prop `button`): true = label default 'Manage Notification';
|
|
7082
|
+
* string = label custom; SuiLinkConfig { label, href?, target?, rel? }
|
|
7083
|
+
* = <a> real con rel automático 'noopener noreferrer' si
|
|
7084
|
+
* target='_blank'; false/null = oculto.
|
|
7085
|
+
* (Patrón canon `link` de sui-checkbox-label.)
|
|
6798
7086
|
* - (manageClick): output<MouseEvent> — click en "Manage Notification"
|
|
6799
7087
|
*
|
|
6800
7088
|
* Uso:
|
|
6801
7089
|
* <sui-notification-footer (manageClick)="abrirAjustes()" />
|
|
7090
|
+
* <sui-notification-footer [manage]="{ label: 'Ajustes', href: '/ajustes' }" />
|
|
6802
7091
|
*
|
|
6803
7092
|
* PENDING VERIFY:
|
|
6804
7093
|
* - El frame Figma es 540px fijo; acá el host es width 100% para encajar en el
|
|
@@ -6807,13 +7096,21 @@ declare class SuiModal implements AfterViewInit, OnDestroy {
|
|
|
6807
7096
|
* que existe en RemixIcon; si el panel real usa otro glyph, ajustar el name.
|
|
6808
7097
|
*/
|
|
6809
7098
|
declare class SuiNotificationFooter {
|
|
7099
|
+
/** Label default del link de gestión (Figma "Manage Notification"). */
|
|
7100
|
+
private static readonly DEFAULT_MANAGE_LABEL;
|
|
6810
7101
|
readonly usePrefix: _angular_core.InputSignal<string>;
|
|
6811
7102
|
readonly useSuffix: _angular_core.InputSignal<string>;
|
|
6812
|
-
|
|
6813
|
-
|
|
7103
|
+
/** Link de gestión — true = label default ('Manage Notification'); string =
|
|
7104
|
+
* label custom (emite `manageClick`); SuiLinkConfig { label, href?, target?,
|
|
7105
|
+
* rel? }: con href renderiza <a> real, rel automático 'noopener noreferrer'
|
|
7106
|
+
* para _blank. false/null = oculto (Figma prop `button` off). */
|
|
7107
|
+
readonly manage: _angular_core.InputSignal<string | boolean | SuiLinkConfig | null>;
|
|
7108
|
+
/** Config resuelta del link (true → label default, string → { label },
|
|
7109
|
+
* rel automático). null cuando el link está oculto. */
|
|
7110
|
+
protected readonly manageCfg: _angular_core.Signal<SuiLinkConfig | null>;
|
|
6814
7111
|
readonly manageClick: _angular_core.OutputEmitterRef<MouseEvent>;
|
|
6815
7112
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SuiNotificationFooter, never>;
|
|
6816
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SuiNotificationFooter, "sui-notification-footer", never, { "usePrefix": { "alias": "usePrefix"; "required": false; "isSignal": true; }; "useSuffix": { "alias": "useSuffix"; "required": false; "isSignal": true; }; "
|
|
7113
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SuiNotificationFooter, "sui-notification-footer", never, { "usePrefix": { "alias": "usePrefix"; "required": false; "isSignal": true; }; "useSuffix": { "alias": "useSuffix"; "required": false; "isSignal": true; }; "manage": { "alias": "manage"; "required": false; "isSignal": true; }; }, { "manageClick": "manageClick"; }, never, never, true, never>;
|
|
6817
7114
|
}
|
|
6818
7115
|
|
|
6819
7116
|
/**
|
|
@@ -6984,7 +7281,8 @@ type SuiNotificationStyle = 'filled' | 'light' | 'lighter' | 'stroke';
|
|
|
6984
7281
|
* Extra features preservadas (no Figma, producto):
|
|
6985
7282
|
* - status variant×style (alert inline)
|
|
6986
7283
|
* - unread dot (8px primary-base — Figma node 4308:731)
|
|
6987
|
-
* -
|
|
7284
|
+
* - avatar config `{ src?, initials? }` (string shorthand = src) con
|
|
7285
|
+
* fallback a initials
|
|
6988
7286
|
* - dismissible (X close)
|
|
6989
7287
|
* - showIcon/iconName status icons
|
|
6990
7288
|
*/
|
|
@@ -6994,13 +7292,18 @@ declare class SuiNotification {
|
|
|
6994
7292
|
readonly title: _angular_core.InputSignal<string | null>;
|
|
6995
7293
|
readonly description: _angular_core.InputSignal<string | null>;
|
|
6996
7294
|
readonly timestamp: _angular_core.InputSignal<string | null>;
|
|
6997
|
-
|
|
6998
|
-
|
|
7295
|
+
/** Avatar del item de panel — string shorthand (URL = src directo) o
|
|
7296
|
+
* SuiAvatarConfig { src?, initials? } (mismo patrón objeto que
|
|
7297
|
+
* `badge`/`link` de sui-checkbox-label). null = sin avatar (modelo
|
|
7298
|
+
* status inline). Su presencia activa el modelo item de panel. */
|
|
7299
|
+
readonly avatar: _angular_core.InputSignal<string | SuiAvatarConfig | null>;
|
|
7300
|
+
/** Config resuelta del avatar (string → { src }). */
|
|
7301
|
+
protected readonly avatarCfg: _angular_core.Signal<SuiAvatarConfig | null>;
|
|
6999
7302
|
readonly showIcon: _angular_core.InputSignal<boolean>;
|
|
7000
7303
|
readonly dismissible: _angular_core.InputSignal<boolean>;
|
|
7001
7304
|
readonly unread: _angular_core.InputSignal<boolean>;
|
|
7002
7305
|
/** Item body type. 'basic' keeps the legacy/alert layout (no body slot). */
|
|
7003
|
-
readonly type: _angular_core.InputSignal<"
|
|
7306
|
+
readonly type: _angular_core.InputSignal<"basic" | "file" | "button" | "message">;
|
|
7004
7307
|
/** When true, item paints the Figma hover bg + reveals the more-2-line button. */
|
|
7005
7308
|
readonly showMore: _angular_core.InputSignal<boolean>;
|
|
7006
7309
|
/** Forces the hover affordance visible (e.g. keyboard-focused row). */
|
|
@@ -7029,7 +7332,7 @@ declare class SuiNotification {
|
|
|
7029
7332
|
onDismiss(): void;
|
|
7030
7333
|
onMore(event: MouseEvent): void;
|
|
7031
7334
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SuiNotification, never>;
|
|
7032
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SuiNotification, "sui-notification", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "variantStyle": { "alias": "variantStyle"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "timestamp": { "alias": "timestamp"; "required": false; "isSignal": true; }; "
|
|
7335
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SuiNotification, "sui-notification", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "variantStyle": { "alias": "variantStyle"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "timestamp": { "alias": "timestamp"; "required": false; "isSignal": true; }; "avatar": { "alias": "avatar"; "required": false; "isSignal": true; }; "showIcon": { "alias": "showIcon"; "required": false; "isSignal": true; }; "dismissible": { "alias": "dismissible"; "required": false; "isSignal": true; }; "unread": { "alias": "unread"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "showMore": { "alias": "showMore"; "required": false; "isSignal": true; }; "active": { "alias": "active"; "required": false; "isSignal": true; }; }, { "dismissed": "dismissed"; "moreClicked": "moreClicked"; }, never, ["[slot=company-logo]", "[slot=file]", "[slot=message]", "*", "[slot=actions]"], true, never>;
|
|
7033
7336
|
}
|
|
7034
7337
|
|
|
7035
7338
|
type SuiOtpInputType = 'number' | 'text';
|
|
@@ -7327,10 +7630,12 @@ declare class SuiPopover {
|
|
|
7327
7630
|
readonly nextLabel: _angular_core.InputSignal<string>;
|
|
7328
7631
|
/** Renderear el botón secundario (Back). Si false, solo se muestra el primario. */
|
|
7329
7632
|
readonly doubleButton: _angular_core.InputSignal<boolean>;
|
|
7330
|
-
/**
|
|
7331
|
-
|
|
7332
|
-
|
|
7333
|
-
|
|
7633
|
+
/** Progreso del stepper — { current (1-based), total }. Usado en text-stepper
|
|
7634
|
+
* y stepper. null cae al default del sample de Figma ({ current: 1, total: 4 }). */
|
|
7635
|
+
readonly step: _angular_core.InputSignal<{
|
|
7636
|
+
current: number;
|
|
7637
|
+
total: number;
|
|
7638
|
+
} | null>;
|
|
7334
7639
|
/** Click en el botón X de dismiss. */
|
|
7335
7640
|
readonly dismissed: _angular_core.OutputEmitterRef<void>;
|
|
7336
7641
|
/** Click en el botón secundario (Back). */
|
|
@@ -7347,12 +7652,14 @@ declare class SuiPopover {
|
|
|
7347
7652
|
readonly isTextStepper: _angular_core.Signal<boolean>;
|
|
7348
7653
|
/** True para footer con dot indicator. */
|
|
7349
7654
|
readonly isDotStepper: _angular_core.Signal<boolean>;
|
|
7655
|
+
/** Config resuelta del step (null → default { current: 1, total: 4 }). */
|
|
7656
|
+
private readonly stepCfg;
|
|
7350
7657
|
/** Texto "Step X of N" del text-stepper. */
|
|
7351
7658
|
readonly stepperText: _angular_core.Signal<string>;
|
|
7352
7659
|
/** Array de dots para el stepper. Cada item: índice activo => primary. */
|
|
7353
7660
|
readonly dots: _angular_core.Signal<boolean[]>;
|
|
7354
7661
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SuiPopover, never>;
|
|
7355
|
-
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; }; "
|
|
7662
|
+
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>;
|
|
7356
7663
|
}
|
|
7357
7664
|
|
|
7358
7665
|
type SuiProgressBarColor = 'blue' | 'green' | 'orange' | 'red' | 'purple';
|
|
@@ -7452,8 +7759,9 @@ type SuiProgressBarLabelType = 'on-top' | 'on-right';
|
|
|
7452
7759
|
* pending-verify): el primary de este proyecto nunca será azul.
|
|
7453
7760
|
*
|
|
7454
7761
|
* Decisiones (responde openQuestions del audit):
|
|
7455
|
-
* - #2: el texto del link NO es hardcoded "Upgrade" → input `
|
|
7456
|
-
* (default 'Upgrade'). La acción se
|
|
7762
|
+
* - #2: el texto del link NO es hardcoded "Upgrade" → input `link`
|
|
7763
|
+
* (string shorthand o SuiLinkConfig; default 'Upgrade'). La acción se
|
|
7764
|
+
* expone vía output `linkClick`; con `href` el <a> además navega.
|
|
7457
7765
|
* - #3: es componente SUI nuevo (`sui-progress-bar-label`) que COMPONE
|
|
7458
7766
|
* `sui-progress-bar` internamente (no proyección de contenido), para
|
|
7459
7767
|
* mantener la barra como única fuente de verdad del fill.
|
|
@@ -7470,14 +7778,17 @@ type SuiProgressBarLabelType = 'on-top' | 'on-right';
|
|
|
7470
7778
|
* - value: number 0–100 (delegado a sui-progress-bar).
|
|
7471
7779
|
* - type: 'on-top' (default) | 'on-right'.
|
|
7472
7780
|
* - title: string — título (sólo on-top). Se espera no-vacío en
|
|
7473
|
-
* on-top (la fila head se omite si title='' y
|
|
7781
|
+
* on-top (la fila head se omite si title='' y percentage
|
|
7474
7782
|
* es false, para no dejar una fila invisible ocupando alto).
|
|
7475
|
-
* -
|
|
7476
|
-
*
|
|
7783
|
+
* - percentage: boolean | string (default true) — true muestra `${value}%`,
|
|
7784
|
+
* string lo reemplaza por un texto custom, false lo oculta.
|
|
7477
7785
|
* - showBottom: boolean (default false) — fila inferior link+descripción (sólo on-top).
|
|
7478
7786
|
* - description: string — texto descriptivo (fila inferior).
|
|
7479
|
-
* -
|
|
7480
|
-
*
|
|
7787
|
+
* - link: SuiLinkConfig | string | null (default null = sin link) —
|
|
7788
|
+
* string = solo label (el <a> no navega, emite linkClick);
|
|
7789
|
+
* objeto { label, href?, target?, rel? } = <a> con navegación
|
|
7790
|
+
* real; rel automático 'noopener noreferrer' si target='_blank'.
|
|
7791
|
+
* Presente = visible (contrato config del DS, sin flag show).
|
|
7481
7792
|
* - color / size: delegados a sui-progress-bar.
|
|
7482
7793
|
* - ariaLabel: delegado a sui-progress-bar.
|
|
7483
7794
|
*
|
|
@@ -7488,22 +7799,30 @@ declare class SuiProgressBarLabel {
|
|
|
7488
7799
|
readonly value: _angular_core.InputSignal<number>;
|
|
7489
7800
|
readonly type: _angular_core.InputSignal<SuiProgressBarLabelType>;
|
|
7490
7801
|
readonly title: _angular_core.InputSignal<string>;
|
|
7491
|
-
|
|
7492
|
-
readonly
|
|
7802
|
+
/** % textual — true = `${value}%` automático · string = texto custom · false = oculto. */
|
|
7803
|
+
readonly percentage: _angular_core.InputSignal<string | boolean>;
|
|
7493
7804
|
readonly showBottom: _angular_core.InputSignal<boolean>;
|
|
7494
7805
|
readonly description: _angular_core.InputSignal<string>;
|
|
7495
|
-
|
|
7496
|
-
|
|
7806
|
+
/** Link de la fila inferior — string shorthand (solo label, el <a> no navega
|
|
7807
|
+
* y emite `linkClick`) o SuiLinkConfig { label, href?, target?, rel? }: con
|
|
7808
|
+
* `href` el <a> navega de verdad; rel automático 'noopener noreferrer' para
|
|
7809
|
+
* target='_blank'. Presente = visible; null (default) = sin link.
|
|
7810
|
+
* (Mismo patrón objeto que sui-checkbox-label.link / SuiBadgeConfig.) */
|
|
7811
|
+
readonly link: _angular_core.InputSignal<string | SuiLinkConfig | null>;
|
|
7497
7812
|
readonly color: _angular_core.InputSignal<SuiProgressBarColor>;
|
|
7498
7813
|
readonly size: _angular_core.InputSignal<SuiProgressBarSize>;
|
|
7499
7814
|
readonly ariaLabel: _angular_core.InputSignal<string | null>;
|
|
7500
7815
|
readonly linkClick: _angular_core.OutputEmitterRef<void>;
|
|
7816
|
+
/** Config resuelta del link (string → { label }, rel automático). */
|
|
7817
|
+
protected readonly linkCfg: _angular_core.Signal<SuiLinkConfig | null>;
|
|
7501
7818
|
readonly clampedValue: _angular_core.Signal<number>;
|
|
7502
7819
|
/** Texto del % mostrado: override explícito o `${value}%`. */
|
|
7820
|
+
/** Mostrar el bloque de % (percentage !== false). */
|
|
7821
|
+
readonly showPercent: _angular_core.Signal<boolean>;
|
|
7503
7822
|
readonly percentLabel: _angular_core.Signal<string>;
|
|
7504
7823
|
onLinkClick(event: Event): void;
|
|
7505
7824
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SuiProgressBarLabel, never>;
|
|
7506
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SuiProgressBarLabel, "sui-progress-bar-label", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "
|
|
7825
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SuiProgressBarLabel, "sui-progress-bar-label", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "percentage": { "alias": "percentage"; "required": false; "isSignal": true; }; "showBottom": { "alias": "showBottom"; "required": false; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "link": { "alias": "link"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, { "linkClick": "linkClick"; }, never, never, true, never>;
|
|
7507
7826
|
}
|
|
7508
7827
|
|
|
7509
7828
|
type SuiRadioValue = string | number | null;
|
|
@@ -7552,7 +7871,7 @@ declare class SuiRadio {
|
|
|
7552
7871
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SuiRadio, "sui-radio", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "standaloneChecked": { "alias": "standaloneChecked"; "required": false; "isSignal": true; }; }, { "standaloneChecked": "standaloneCheckedChange"; }, never, never, true, never>;
|
|
7553
7872
|
}
|
|
7554
7873
|
|
|
7555
|
-
type SuiRadioCardType = 'basic' | 'left-icon' | 'avatar';
|
|
7874
|
+
type SuiRadioCardType = 'basic' | 'left-icon' | 'avatar' | 'card-provider' | 'brand' | 'company';
|
|
7556
7875
|
/**
|
|
7557
7876
|
* SUI Radio Card — SUI Design System 2.0
|
|
7558
7877
|
*
|
|
@@ -7671,7 +7990,7 @@ declare class SuiRadioCard implements ControlValueAccessor {
|
|
|
7671
7990
|
* Emoji del catálogo SUI_EMOJI_MAP — alternativa a icon para type='left-icon'.
|
|
7672
7991
|
* Si ambos están, icon tiene precedencia.
|
|
7673
7992
|
*/
|
|
7674
|
-
readonly emoji: _angular_core.InputSignal<"
|
|
7993
|
+
readonly emoji: _angular_core.InputSignal<"label" | "warning" | "thinking-face" | "grinning-face" | "smiling-face-hearts" | "face-with-rolling-eyes" | "face-screaming" | "partying-face" | "star-struck" | "sleeping-face" | "pensive-face" | "confused-face" | "neutral-face" | "slightly-smiling-face" | "grinning-face-smiling-eyes" | "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>;
|
|
7675
7994
|
/**
|
|
7676
7995
|
* URL directa al emoji para type='left-icon'. Útil cuando el consumer ya tiene
|
|
7677
7996
|
* la URL (ej. FLUENT_EMOJI map del proyecto) y no quiere registrar el emoji
|
|
@@ -7684,6 +8003,9 @@ declare class SuiRadioCard implements ControlValueAccessor {
|
|
|
7684
8003
|
* label. Para los otros types se ignora.
|
|
7685
8004
|
*/
|
|
7686
8005
|
readonly imageUrl: _angular_core.InputSignal<string | null>;
|
|
8006
|
+
/** Company del sui-brand-logo para type='brand' (Figma 515:4383 — logo 40px).
|
|
8007
|
+
Para logos fuera del catálogo, usar `imageUrl` (fallback circular). */
|
|
8008
|
+
readonly brand: _angular_core.InputSignal<"adobe" | "amazon" | "apple" | "bitcoin" | "discord" | "dropbox" | "facebook" | "figma" | "framer" | "github" | "google" | "instagram" | "linkedin" | "microsoft" | "netflix" | "notion" | "paypal" | "pinterest" | "slack" | "spotify" | "stripe" | "telegram" | "twitch" | "webflow" | "whatsapp" | "wise" | "x-twitter" | "youtube" | null>;
|
|
7687
8009
|
/** Badge junto al label — string shorthand ('NEW') o SuiBadgeConfig
|
|
7688
8010
|
(label + color/variant/size, tipado como sui-badge). null = sin badge. */
|
|
7689
8011
|
readonly badge: _angular_core.InputSignal<string | SuiBadgeConfig | null>;
|
|
@@ -7712,7 +8034,81 @@ declare class SuiRadioCard implements ControlValueAccessor {
|
|
|
7712
8034
|
registerOnTouched(fn: () => void): void;
|
|
7713
8035
|
setDisabledState(isDisabled: boolean): void;
|
|
7714
8036
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SuiRadioCard, never>;
|
|
7715
|
-
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; }; "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>;
|
|
8037
|
+
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>;
|
|
8038
|
+
}
|
|
8039
|
+
|
|
8040
|
+
/**
|
|
8041
|
+
* SUI Radio Label — SUI Design System 2.0
|
|
8042
|
+
*
|
|
8043
|
+
* Figma file: 8p1k72aKKvzJV4XcvPS4VO
|
|
8044
|
+
* Component set: 515:4282 ("Radio Label [1.1]") — 8 variants
|
|
8045
|
+
* Active(off/on) × Description(off/on) × Flip(off/on)
|
|
8046
|
+
*
|
|
8047
|
+
* Anatomía IDÉNTICA a sui-checkbox-label (misma familia label en Figma):
|
|
8048
|
+
* Container flex gap-8 items-start · radio 20×20 shrink-0
|
|
8049
|
+
* description=off → fila gap-4: Label (14/20 Regular) + Sublabel + Badge
|
|
8050
|
+
* description=on → columna gap-10: Title (Label 14/20 MEDIUM + Sublabel +
|
|
8051
|
+
* Badge) · Description 12/16 sub-600 · Link Button 12/16
|
|
8052
|
+
* Flip → radio a la derecha (CSS order, DOM order estable)
|
|
8053
|
+
*
|
|
8054
|
+
* Semántica de GRUPO (patrón sui-radio-card, NO el CVA boolean del checkbox):
|
|
8055
|
+
* - `value` requerido; dentro de <sui-radio-group> el group manda
|
|
8056
|
+
* (group.value() === value() ⇒ checked; click ⇒ group.select(value)).
|
|
8057
|
+
* - Standalone: model two-way `checked` + output `selected`.
|
|
8058
|
+
* - El sui-radio interno es SOLO visual (pointer-events none en SCSS):
|
|
8059
|
+
* todos los clicks/teclas los maneja el host — una sola fuente de
|
|
8060
|
+
* selección, sin doble-toggle.
|
|
8061
|
+
*
|
|
8062
|
+
* A11y: host role="radio" + aria-checked + Space/Enter seleccionan.
|
|
8063
|
+
* iOS WKWebView fix: touchstart/touchend en host (SUI canon).
|
|
8064
|
+
*
|
|
8065
|
+
* Usage:
|
|
8066
|
+
* <sui-radio-group [(ngModel)]="plan">
|
|
8067
|
+
* <sui-radio-label value="free" label="Freemium" />
|
|
8068
|
+
* <sui-radio-label value="pro" label="Pro" sublabel="(recomendado)"
|
|
8069
|
+
* badge="NEW" description="Facturación mensual."
|
|
8070
|
+
* [link]="{ label: 'Ver precios', href: '/precios' }" />
|
|
8071
|
+
* </sui-radio-group>
|
|
8072
|
+
*/
|
|
8073
|
+
declare class SuiRadioLabel {
|
|
8074
|
+
private readonly group;
|
|
8075
|
+
/** Valor que representa esta opción dentro del grupo. */
|
|
8076
|
+
readonly value: _angular_core.InputSignal<string>;
|
|
8077
|
+
/** Texto principal del label. */
|
|
8078
|
+
readonly label: _angular_core.InputSignal<string>;
|
|
8079
|
+
/** Sublabel opcional (12/16 sub-600 al lado del label). */
|
|
8080
|
+
readonly sublabel: _angular_core.InputSignal<string | null>;
|
|
8081
|
+
/** Descripción opcional debajo del title (variant "with description"). */
|
|
8082
|
+
readonly description: _angular_core.InputSignal<string | null>;
|
|
8083
|
+
/** Badge junto al label — string shorthand ('NEW') o SuiBadgeConfig
|
|
8084
|
+
(label + color/variant/size). null = sin badge. */
|
|
8085
|
+
readonly badge: _angular_core.InputSignal<string | SuiBadgeConfig | null>;
|
|
8086
|
+
protected readonly badgeCfg: _angular_core.Signal<SuiBadgeConfig | null>;
|
|
8087
|
+
/** Link Button bajo la descripción — string shorthand (solo label, emite
|
|
8088
|
+
* `linkClick`) o SuiLinkConfig { label, href?, target?, rel? }: con href
|
|
8089
|
+
* renderiza <a> real; rel automático 'noopener noreferrer' para _blank. */
|
|
8090
|
+
readonly link: _angular_core.InputSignal<string | SuiLinkConfig | null>;
|
|
8091
|
+
/** Config resuelta del link (string → { label }, rel automático). */
|
|
8092
|
+
protected readonly linkCfg: _angular_core.Signal<SuiLinkConfig | null>;
|
|
8093
|
+
/** Si true, invierte orden: [content] [radio] (radio a la derecha). */
|
|
8094
|
+
readonly flip: _angular_core.InputSignal<boolean>;
|
|
8095
|
+
/** Deshabilita el radio + wrapper. */
|
|
8096
|
+
readonly disabled: _angular_core.InputSignal<boolean>;
|
|
8097
|
+
/** Standalone mode (sin group): two-way binding del estado checked. */
|
|
8098
|
+
readonly checked: _angular_core.ModelSignal<boolean>;
|
|
8099
|
+
/** Emite el value cuando se selecciona. */
|
|
8100
|
+
readonly selected: _angular_core.OutputEmitterRef<string>;
|
|
8101
|
+
/** Click en el Link Button (stop-propagation interno — no selecciona). */
|
|
8102
|
+
readonly linkClick: _angular_core.OutputEmitterRef<MouseEvent>;
|
|
8103
|
+
readonly isDisabled: _angular_core.Signal<boolean>;
|
|
8104
|
+
/** Checked resuelto: group-driven > standalone. */
|
|
8105
|
+
readonly isChecked: _angular_core.Signal<boolean>;
|
|
8106
|
+
onLabelClick(event: MouseEvent): void;
|
|
8107
|
+
onKeySelect(event: Event): void;
|
|
8108
|
+
private select;
|
|
8109
|
+
onLinkClick(event: MouseEvent): void;
|
|
8110
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SuiRadioLabel, never>;
|
|
8111
|
+
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>;
|
|
7716
8112
|
}
|
|
7717
8113
|
|
|
7718
8114
|
declare class SuiRadioGroup implements ControlValueAccessor {
|
|
@@ -8099,8 +8495,8 @@ type SuiSelectSize = 'xsmall' | 'small' | 'medium';
|
|
|
8099
8495
|
* - brand → 🎗️ logo/thumbnail (placeholder: award-line)
|
|
8100
8496
|
* - company → 🏢 logo/thumbnail (placeholder: building-line)
|
|
8101
8497
|
*
|
|
8102
|
-
* El default `'basic'` NO renderea left-icon a menos que `
|
|
8103
|
-
* activado o
|
|
8498
|
+
* El default `'basic'` NO renderea left-icon a menos que `leadingIcon` esté
|
|
8499
|
+
* activado (true o string) o haya imageUrl/flag — el slot es opt-in.
|
|
8104
8500
|
*/
|
|
8105
8501
|
type SuiSelectType = 'basic' | 'country' | 'avatar' | 'provider' | 'brand' | 'company';
|
|
8106
8502
|
interface SuiSelectOption<T = any> {
|
|
@@ -8136,10 +8532,11 @@ interface SuiSelectOption<T = any> {
|
|
|
8136
8532
|
* @input options: SuiSelectOption<T>[]
|
|
8137
8533
|
*
|
|
8138
8534
|
* @input type — left-decoration kind (basic/country/avatar/provider/brand/company)
|
|
8139
|
-
* @input
|
|
8140
|
-
*
|
|
8535
|
+
* @input leadingIcon — left-decoration: true = icono default por type, string =
|
|
8536
|
+
* RemixIcon custom, false = sin icono (default: opt-in)
|
|
8141
8537
|
* @input imageUrl — imagen del left slot cuando hay value (avatar/brand/provider/company logo)
|
|
8142
|
-
* @input badge —
|
|
8538
|
+
* @input badge — badge inline entre value y chevron: string shorthand o
|
|
8539
|
+
* SuiBadgeConfig { label, color?, variant?, size? }. null = sin badge.
|
|
8143
8540
|
* Slot proyectado: `[slot=leading]` → left-decoration totalmente custom (gana sobre todo)
|
|
8144
8541
|
*
|
|
8145
8542
|
* @model value: T | null — two-way con FormControl via CVA
|
|
@@ -8151,7 +8548,8 @@ interface SuiSelectOption<T = any> {
|
|
|
8151
8548
|
* (basic=flashlight, country=global, avatar=user, provider=bank-card-rect).
|
|
8152
8549
|
* - badge: confirmado decorativo en el DS (px-8 py-2, radius-full,
|
|
8153
8550
|
* bg state/information/lighter, text state/information/base 12/16 medium).
|
|
8154
|
-
*
|
|
8551
|
+
* Renderizado con <sui-badge> real — defaults orange/lighter/medium (brand
|
|
8552
|
+
* naranja, DECISIONES.md §1) replican pixel-exacto el chip del Figma.
|
|
8155
8553
|
*/
|
|
8156
8554
|
declare class SuiSelect<T = any> implements ControlValueAccessor {
|
|
8157
8555
|
readonly size: _angular_core.InputSignal<SuiSelectSize>;
|
|
@@ -8164,16 +8562,18 @@ declare class SuiSelect<T = any> implements ControlValueAccessor {
|
|
|
8164
8562
|
readonly hint: _angular_core.InputSignal<string | null>;
|
|
8165
8563
|
/** Tipo de left-decoration del trigger (Figma Select[1.1] Type variant). */
|
|
8166
8564
|
readonly type: _angular_core.InputSignal<SuiSelectType>;
|
|
8167
|
-
/**
|
|
8168
|
-
|
|
8169
|
-
|
|
8170
|
-
readonly leadingIcon: _angular_core.InputSignal<string |
|
|
8565
|
+
/** Left-decoration del trigger — true = icono default por type, string =
|
|
8566
|
+
RemixIcon custom, false = sin icono (default: opt-in). Consolida el par
|
|
8567
|
+
leftIcon (boolean) + leadingIcon (string) previo. */
|
|
8568
|
+
readonly leadingIcon: _angular_core.InputSignal<string | boolean>;
|
|
8171
8569
|
/** sui-flag name para `type="country"` (override; sino el option selected puede traerla). */
|
|
8172
8570
|
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>;
|
|
8173
8571
|
/** Imagen del left slot cuando hay value (avatar/brand/provider/company logo). */
|
|
8174
8572
|
readonly imageUrl: _angular_core.InputSignal<string | null>;
|
|
8175
|
-
/**
|
|
8176
|
-
|
|
8573
|
+
/** Badge inline entre value y chevron — string shorthand ('New') o
|
|
8574
|
+
SuiBadgeConfig (label + color/variant/size). null = sin badge. */
|
|
8575
|
+
readonly badge: _angular_core.InputSignal<string | SuiBadgeConfig | null>;
|
|
8576
|
+
protected readonly badgeCfg: _angular_core.Signal<SuiBadgeConfig | null>;
|
|
8177
8577
|
/** Texto secundario del label (ej. "Optional", "Required") */
|
|
8178
8578
|
readonly sublabel: _angular_core.InputSignal<string | null>;
|
|
8179
8579
|
/** Muestra asterisco rojo en el label */
|
|
@@ -8194,8 +8594,11 @@ declare class SuiSelect<T = any> implements ControlValueAccessor {
|
|
|
8194
8594
|
* provider=bank-card, brand=award, company=building).
|
|
8195
8595
|
*/
|
|
8196
8596
|
private readonly _defaultIconByType;
|
|
8197
|
-
/** Icono efectivo del left slot: custom > default-por-type. */
|
|
8597
|
+
/** Icono efectivo del left slot: string custom > default-por-type (true). */
|
|
8198
8598
|
readonly leadingIconName: _angular_core.Signal<string>;
|
|
8599
|
+
/** Muestra el slot de left-decoration: leadingIcon activo (true o string)
|
|
8600
|
+
o presencia de imageUrl/flag. */
|
|
8601
|
+
readonly showLeading: _angular_core.Signal<boolean>;
|
|
8199
8602
|
/** Muestra la imagen (avatar/logo) en vez del ícono cuando hay imageUrl. */
|
|
8200
8603
|
readonly showLeadingImage: _angular_core.Signal<boolean>;
|
|
8201
8604
|
/** Trigger element — pasado al sui-dropdown-menu como [origin]. */
|
|
@@ -8221,7 +8624,7 @@ declare class SuiSelect<T = any> implements ControlValueAccessor {
|
|
|
8221
8624
|
setDisabledState(isDisabled: boolean): void;
|
|
8222
8625
|
private _moveHighlight;
|
|
8223
8626
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SuiSelect<any>, never>;
|
|
8224
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SuiSelect<any>, "sui-select", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "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; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "
|
|
8627
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SuiSelect<any>, "sui-select", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "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; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "leadingIcon": { "alias": "leadingIcon"; "required": false; "isSignal": true; }; "flag": { "alias": "flag"; "required": false; "isSignal": true; }; "imageUrl": { "alias": "imageUrl"; "required": false; "isSignal": true; }; "badge": { "alias": "badge"; "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, ["[slot=leading]"], true, never>;
|
|
8225
8628
|
}
|
|
8226
8629
|
|
|
8227
8630
|
interface SuiSidebarItem {
|
|
@@ -8261,6 +8664,30 @@ interface SuiSidebarItem {
|
|
|
8261
8664
|
tooltip?: string;
|
|
8262
8665
|
}
|
|
8263
8666
|
type SuiSidebarMobileMode = 'drawer' | 'sheet';
|
|
8667
|
+
/** Config del brand header (logo + nombre + subtítulo). Patrón objeto, como `profile`. */
|
|
8668
|
+
interface SuiSidebarBrandConfig {
|
|
8669
|
+
/** Nombre de la marca / workspace en el header */
|
|
8670
|
+
name: string;
|
|
8671
|
+
/** Texto secundario debajo del nombre (ej. "HR Management" o "SUPERADMIN") */
|
|
8672
|
+
subtitle?: string;
|
|
8673
|
+
/**
|
|
8674
|
+
* Cuando true, el subtitle se renderiza como <sui-badge variant="filled"
|
|
8675
|
+
* color="orange" size="small"> (típico para roles tipo "SUPERADMIN").
|
|
8676
|
+
* Cuando false (default) → texto plano sub-600.
|
|
8677
|
+
*/
|
|
8678
|
+
subtitleAsBadge?: boolean;
|
|
8679
|
+
/** URL de imagen del brand logo (40×40 rounded-full) */
|
|
8680
|
+
logo?: string;
|
|
8681
|
+
/** Fallback (emoji o texto corto) cuando no hay logo */
|
|
8682
|
+
fallback?: string;
|
|
8683
|
+
}
|
|
8684
|
+
/** Config del search slot (Figma prop search=true). Patrón objeto, como `profile`. */
|
|
8685
|
+
interface SuiSidebarSearchConfig {
|
|
8686
|
+
/** Placeholder del input. Default 'Search...'. */
|
|
8687
|
+
placeholder?: string;
|
|
8688
|
+
/** Shortcut pill dentro del search (ej. '⌘1'). Omitir → sin pill. */
|
|
8689
|
+
shortcut?: string;
|
|
8690
|
+
}
|
|
8264
8691
|
interface SuiSidebarProfile {
|
|
8265
8692
|
name: string;
|
|
8266
8693
|
avatarUrl?: string;
|
|
@@ -8289,29 +8716,23 @@ declare class SuiSidebar {
|
|
|
8289
8716
|
* - 'information': azul --sui-state-information-base (Figma canon SUI, opt-in)
|
|
8290
8717
|
*/
|
|
8291
8718
|
readonly indicatorColor: _angular_core.InputSignal<SuiSidebarIndicatorColor>;
|
|
8292
|
-
readonly brandName: _angular_core.InputSignal<string>;
|
|
8293
|
-
/** Texto secundario debajo del nombre (ej. "HR Management" o "SUPERADMIN") */
|
|
8294
|
-
readonly brandSubtitle: _angular_core.InputSignal<string | null>;
|
|
8295
8719
|
/**
|
|
8296
|
-
*
|
|
8297
|
-
*
|
|
8298
|
-
* Cuando false (default) → texto plano sub-600.
|
|
8720
|
+
* Config del brand header: { name, subtitle?, subtitleAsBadge?, logo?, fallback? }.
|
|
8721
|
+
* null → header sin nombre (solo el placeholder building-line).
|
|
8299
8722
|
*/
|
|
8300
|
-
readonly
|
|
8301
|
-
/** URL de imagen del brand logo (40×40 rounded-full) */
|
|
8302
|
-
readonly brandLogo: _angular_core.InputSignal<string | null>;
|
|
8303
|
-
/** Fallback (emoji o texto corto) cuando no hay logo */
|
|
8304
|
-
readonly brandFallback: _angular_core.InputSignal<string | null>;
|
|
8723
|
+
readonly brand: _angular_core.InputSignal<SuiSidebarBrandConfig | null>;
|
|
8305
8724
|
/**
|
|
8306
8725
|
* Muestra el Compact Button del header (expand-up-down-line) — workspace
|
|
8307
8726
|
* switcher de Figma. Emite (headerButtonClicked) al click. Default false.
|
|
8308
8727
|
*/
|
|
8309
8728
|
readonly showHeaderButton: _angular_core.InputSignal<boolean>;
|
|
8310
|
-
/**
|
|
8311
|
-
|
|
8312
|
-
|
|
8313
|
-
|
|
8314
|
-
|
|
8729
|
+
/**
|
|
8730
|
+
* Search encima de las secciones:
|
|
8731
|
+
* - `false` / `null` (default): sin search
|
|
8732
|
+
* - `true`: search con defaults (placeholder 'Search...', sin shortcut)
|
|
8733
|
+
* - objeto `{ placeholder?, shortcut? }`: search configurado
|
|
8734
|
+
*/
|
|
8735
|
+
readonly search: _angular_core.InputSignal<boolean | SuiSidebarSearchConfig | null>;
|
|
8315
8736
|
/** Valor del input de búsqueda (2-way). */
|
|
8316
8737
|
readonly searchValue: _angular_core.ModelSignal<string>;
|
|
8317
8738
|
readonly items: _angular_core.InputSignal<SuiSidebarItem[]>;
|
|
@@ -8369,6 +8790,16 @@ declare class SuiSidebar {
|
|
|
8369
8790
|
readonly profileClicked: _angular_core.OutputEmitterRef<void>;
|
|
8370
8791
|
/** Submit del search input (Enter). Emite el valor actual. */
|
|
8371
8792
|
readonly searchSubmitted: _angular_core.OutputEmitterRef<string>;
|
|
8793
|
+
/** Brand normalizado — nunca null para simplificar los binds del template. */
|
|
8794
|
+
protected readonly brandCfg: _angular_core.Signal<SuiSidebarBrandConfig>;
|
|
8795
|
+
/**
|
|
8796
|
+
* Search normalizado: null → sin search; objeto con defaults aplicados
|
|
8797
|
+
* (placeholder 'Search...') cuando search=true o config parcial.
|
|
8798
|
+
*/
|
|
8799
|
+
protected readonly searchCfg: _angular_core.Signal<{
|
|
8800
|
+
placeholder: string;
|
|
8801
|
+
shortcut: string | null;
|
|
8802
|
+
} | null>;
|
|
8372
8803
|
/**
|
|
8373
8804
|
* Resuelve cuándo un item sin route está "activo" via activeRoute.
|
|
8374
8805
|
* Match por prefijo: '/master/inicio' activa también '/master/inicio/sub'.
|
|
@@ -8383,7 +8814,7 @@ declare class SuiSidebar {
|
|
|
8383
8814
|
protected onSearchInput(value: string): void;
|
|
8384
8815
|
protected onSearchSubmit(): void;
|
|
8385
8816
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SuiSidebar, never>;
|
|
8386
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SuiSidebar, "sui-sidebar", never, { "collapsed": { "alias": "collapsed"; "required": false; "isSignal": true; }; "indicatorColor": { "alias": "indicatorColor"; "required": false; "isSignal": true; }; "
|
|
8817
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SuiSidebar, "sui-sidebar", never, { "collapsed": { "alias": "collapsed"; "required": false; "isSignal": true; }; "indicatorColor": { "alias": "indicatorColor"; "required": false; "isSignal": true; }; "brand": { "alias": "brand"; "required": false; "isSignal": true; }; "showHeaderButton": { "alias": "showHeaderButton"; "required": false; "isSignal": true; }; "search": { "alias": "search"; "required": false; "isSignal": true; }; "searchValue": { "alias": "searchValue"; "required": false; "isSignal": true; }; "items": { "alias": "items"; "required": false; "isSignal": true; }; "secondaryItems": { "alias": "secondaryItems"; "required": false; "isSignal": true; }; "supportingItems": { "alias": "supportingItems"; "required": false; "isSignal": true; }; "supportingAnchorBottom": { "alias": "supportingAnchorBottom"; "required": false; "isSignal": true; }; "itemsLabel": { "alias": "itemsLabel"; "required": false; "isSignal": true; }; "secondaryItemsLabel": { "alias": "secondaryItemsLabel"; "required": false; "isSignal": true; }; "supportingItemsLabel": { "alias": "supportingItemsLabel"; "required": false; "isSignal": true; }; "activeRoute": { "alias": "activeRoute"; "required": false; "isSignal": true; }; "profile": { "alias": "profile"; "required": false; "isSignal": true; }; "profileDropdown": { "alias": "profileDropdown"; "required": false; "isSignal": true; }; "open": { "alias": "open"; "required": false; "isSignal": true; }; "closeOnNavigate": { "alias": "closeOnNavigate"; "required": false; "isSignal": true; }; "showBackdrop": { "alias": "showBackdrop"; "required": false; "isSignal": true; }; "mobileMode": { "alias": "mobileMode"; "required": false; "isSignal": true; }; }, { "searchValue": "searchValueChange"; "open": "openChange"; "itemClicked": "itemClicked"; "logoutClicked": "logoutClicked"; "backdropClicked": "backdropClicked"; "headerButtonClicked": "headerButtonClicked"; "profileClicked": "profileClicked"; "searchSubmitted": "searchSubmitted"; }, never, ["[feature-card]"], true, never>;
|
|
8387
8818
|
}
|
|
8388
8819
|
|
|
8389
8820
|
/**
|
|
@@ -8940,6 +9371,20 @@ declare class SuiImgRetry {
|
|
|
8940
9371
|
* (ej. random por visita) y la pase por `[fallbackColor]`. El componente NO
|
|
8941
9372
|
* hace random internamente — se mantiene presentacional y puro. */
|
|
8942
9373
|
declare const SUI_PRODUCT_FALLBACK_COLORS: readonly ["var(--sui-state-information-base)", "var(--sui-state-warning-base)", "var(--sui-state-error-base)", "var(--sui-state-success-base)", "var(--sui-state-feature-base)", "var(--sui-state-highlighted-base)"];
|
|
9374
|
+
/** Config de la imagen del producto. El input `image` también acepta string
|
|
9375
|
+
* shorthand (= solo la `url`, `position` default 50). */
|
|
9376
|
+
interface SuiProductCardImage {
|
|
9377
|
+
url: string;
|
|
9378
|
+
/** Encuadre vertical de la imagen (CSS object-position Y, 0–100). Default 50. */
|
|
9379
|
+
position?: number;
|
|
9380
|
+
}
|
|
9381
|
+
/** Config del fallback sin imagen. */
|
|
9382
|
+
interface SuiProductCardFallback {
|
|
9383
|
+
/** `'name'` = banda de color + nombre (default) · `'icon'` = ícono. */
|
|
9384
|
+
variant?: 'name' | 'icon';
|
|
9385
|
+
/** Color de la banda del variant `'name'` (CSS color o `var(--sui-...)`). */
|
|
9386
|
+
color?: string | null;
|
|
9387
|
+
}
|
|
8943
9388
|
declare class SuiProductCard {
|
|
8944
9389
|
/** Nombre del producto (título de la card + fuente del color del fallback). */
|
|
8945
9390
|
readonly name: _angular_core.InputSignal<string>;
|
|
@@ -8947,10 +9392,10 @@ declare class SuiProductCard {
|
|
|
8947
9392
|
readonly description: _angular_core.InputSignal<string>;
|
|
8948
9393
|
/** Precio numérico; se formatea a 2 decimales. */
|
|
8949
9394
|
readonly price: _angular_core.InputSignal<number>;
|
|
8950
|
-
/**
|
|
8951
|
-
|
|
8952
|
-
|
|
8953
|
-
readonly
|
|
9395
|
+
/** Imagen del producto — string shorthand (solo URL) o SuiProductCardImage
|
|
9396
|
+
* { url, position? } para fine-tuning del encuadre vertical.
|
|
9397
|
+
* null → se usa `fallbackVariant`. */
|
|
9398
|
+
readonly image: _angular_core.InputSignal<string | SuiProductCardImage | null>;
|
|
8954
9399
|
/** false → card atenuada + tag "Agotado", sin botón de agregar. */
|
|
8955
9400
|
readonly available: _angular_core.InputSignal<boolean>;
|
|
8956
9401
|
/** Cantidad en el carrito. > 0 → muestra el stepper en vez del botón "+". */
|
|
@@ -8959,12 +9404,12 @@ declare class SuiProductCard {
|
|
|
8959
9404
|
readonly closed: _angular_core.InputSignal<boolean>;
|
|
8960
9405
|
/** Prefijo de moneda. */
|
|
8961
9406
|
readonly currencySymbol: _angular_core.InputSignal<string>;
|
|
8962
|
-
/** Fallback sin imagen
|
|
8963
|
-
|
|
8964
|
-
|
|
8965
|
-
*
|
|
8966
|
-
*
|
|
8967
|
-
readonly
|
|
9407
|
+
/** Fallback sin imagen — `{ variant?, color? }`. `variant`: `'name'` = banda
|
|
9408
|
+
* de color + nombre (default) · `'icon'` = ícono. `color`: CSS color o
|
|
9409
|
+
* `var(--sui-...)` para la banda del variant `'name'` (ej. random por visita
|
|
9410
|
+
* usando `SUI_PRODUCT_FALLBACK_COLORS`); sin color cae a un default
|
|
9411
|
+
* determinista por nombre (puro, sin random). */
|
|
9412
|
+
readonly fallback: _angular_core.InputSignal<SuiProductCardFallback | null>;
|
|
8968
9413
|
/** Texto del tag cuando no está disponible. */
|
|
8969
9414
|
readonly unavailableLabel: _angular_core.InputSignal<string>;
|
|
8970
9415
|
/** Tap en la card (abrir detalle del producto). */
|
|
@@ -8977,19 +9422,24 @@ declare class SuiProductCard {
|
|
|
8977
9422
|
readonly decrement: _angular_core.OutputEmitterRef<void>;
|
|
8978
9423
|
readonly formattedPrice: _angular_core.Signal<string>;
|
|
8979
9424
|
readonly showStepper: _angular_core.Signal<boolean>;
|
|
9425
|
+
/** Config resuelta de la imagen (string → { url }; `position` default 50).
|
|
9426
|
+
* null = sin imagen → fallback. */
|
|
9427
|
+
readonly imageCfg: _angular_core.Signal<Required<SuiProductCardImage> | null>;
|
|
9428
|
+
/** Config resuelta del fallback (null → variant `'name'`, sin color explícito). */
|
|
9429
|
+
private readonly fallbackCfg;
|
|
8980
9430
|
readonly showNamedFallback: _angular_core.Signal<boolean>;
|
|
8981
9431
|
readonly showIconFallback: _angular_core.Signal<boolean>;
|
|
8982
|
-
/** Color resuelto del fallback `'name'`. Usa `
|
|
9432
|
+
/** Color resuelto del fallback `'name'`. Usa `fallback.color` si el consumidor
|
|
8983
9433
|
* lo pasa; si no, un default DETERMINISTA por nombre (puro, sin `Math.random`
|
|
8984
9434
|
* ni efectos → seguro para SSR/hidratación y testeable). La variedad "random
|
|
8985
|
-
* por visita" la implementa el consumidor pasando `
|
|
9435
|
+
* por visita" la implementa el consumidor pasando `color` en el config. */
|
|
8986
9436
|
readonly resolvedFallbackColor: _angular_core.Signal<string>;
|
|
8987
9437
|
onCard(): void;
|
|
8988
9438
|
onAdd(event: Event): void;
|
|
8989
9439
|
onInc(event: Event): void;
|
|
8990
9440
|
onDec(event: Event): void;
|
|
8991
9441
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SuiProductCard, never>;
|
|
8992
|
-
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; }; "
|
|
9442
|
+
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; }; }, { "openDetail": "openDetail"; "add": "add"; "increment": "increment"; "decrement": "decrement"; }, never, never, true, never>;
|
|
8993
9443
|
}
|
|
8994
9444
|
|
|
8995
9445
|
/**
|
|
@@ -9121,7 +9571,7 @@ declare class SuiSwitchCard implements ControlValueAccessor {
|
|
|
9121
9571
|
* `<sui-icon>` proyectado vía `[sui-switch-card-leading]` y se renderiza
|
|
9122
9572
|
* con las MISMAS dimensiones (20×20 dentro del círculo de 40px).
|
|
9123
9573
|
*/
|
|
9124
|
-
readonly emoji: _angular_core.InputSignal<"
|
|
9574
|
+
readonly emoji: _angular_core.InputSignal<"label" | "warning" | "thinking-face" | "grinning-face" | "smiling-face-hearts" | "face-with-rolling-eyes" | "face-screaming" | "partying-face" | "star-struck" | "sleeping-face" | "pensive-face" | "confused-face" | "neutral-face" | "slightly-smiling-face" | "grinning-face-smiling-eyes" | "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>;
|
|
9125
9575
|
/**
|
|
9126
9576
|
* URL de imagen para type='avatar' — se renderiza con sui-avatar size=lg
|
|
9127
9577
|
* (40×40 redonda). Si la imagen falla, fallback automático a iniciales del
|
|
@@ -9234,7 +9684,13 @@ declare class SuiSwitchLabel implements ControlValueAccessor {
|
|
|
9234
9684
|
(label + color/variant/size, tipado como sui-badge). null = sin badge. */
|
|
9235
9685
|
readonly badge: _angular_core.InputSignal<string | SuiBadgeConfig | null>;
|
|
9236
9686
|
protected readonly badgeCfg: _angular_core.Signal<SuiBadgeConfig | null>;
|
|
9237
|
-
|
|
9687
|
+
/** Link Button bajo la descripción — string shorthand (solo label, emite
|
|
9688
|
+
* `linkClick`) o SuiLinkConfig { label, href?, target?, rel? }: con href
|
|
9689
|
+
* renderiza <a> real; rel automático 'noopener noreferrer' para _blank.
|
|
9690
|
+
* (Mismo patrón objeto que `badge`/SuiBadgeConfig.) */
|
|
9691
|
+
readonly link: _angular_core.InputSignal<string | SuiLinkConfig | null>;
|
|
9692
|
+
/** Config resuelta del link (string → { label }, rel automático). */
|
|
9693
|
+
protected readonly linkCfg: _angular_core.Signal<SuiLinkConfig | null>;
|
|
9238
9694
|
/** Si true, invierte orden: [content] [switch] (label a la izquierda). */
|
|
9239
9695
|
readonly flip: _angular_core.InputSignal<boolean>;
|
|
9240
9696
|
readonly disabled: _angular_core.InputSignal<boolean>;
|
|
@@ -9267,7 +9723,7 @@ declare class SuiSwitchLabel implements ControlValueAccessor {
|
|
|
9267
9723
|
registerOnTouched(fn: () => void): void;
|
|
9268
9724
|
setDisabledState(isDisabled: boolean): void;
|
|
9269
9725
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SuiSwitchLabel, never>;
|
|
9270
|
-
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; }; "
|
|
9726
|
+
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>;
|
|
9271
9727
|
}
|
|
9272
9728
|
|
|
9273
9729
|
interface SuiTabChipItem {
|
|
@@ -9909,13 +10365,15 @@ declare class SuiTagInput implements ControlValueAccessor {
|
|
|
9909
10365
|
readonly error: _angular_core.InputSignal<boolean>;
|
|
9910
10366
|
readonly errorMessage: _angular_core.InputSignal<string | null>;
|
|
9911
10367
|
/**
|
|
9912
|
-
*
|
|
9913
|
-
*
|
|
10368
|
+
* Icono trailing del frame "Basic" (Figma `rightIcon`, node 428:4819).
|
|
10369
|
+
* `true` = icono default `info-custom-fill` 20×20 coloreado text-soft-400;
|
|
10370
|
+
* string = nombre de icono custom; `false` = sin icono. Para sustituir el
|
|
9914
10371
|
* contenido del slot proyectá markup en `[slot=right]` (equivalente `pickRight`).
|
|
10372
|
+
* (Mismo patrón fusionado que `badge`/`link` de sui-checkbox-label.)
|
|
9915
10373
|
*/
|
|
9916
|
-
readonly rightIcon: _angular_core.InputSignal<boolean>;
|
|
9917
|
-
/** Nombre del icono trailing
|
|
9918
|
-
readonly
|
|
10374
|
+
readonly rightIcon: _angular_core.InputSignal<string | boolean>;
|
|
10375
|
+
/** Nombre resuelto del icono trailing (null = no se renderiza). */
|
|
10376
|
+
protected readonly rightIconCfg: _angular_core.Signal<string | null>;
|
|
9919
10377
|
readonly label: _angular_core.InputSignal<string | null>;
|
|
9920
10378
|
readonly sublabel: _angular_core.InputSignal<string | null>;
|
|
9921
10379
|
readonly required: _angular_core.InputSignal<boolean>;
|
|
@@ -9964,7 +10422,7 @@ declare class SuiTagInput implements ControlValueAccessor {
|
|
|
9964
10422
|
registerOnTouched(fn: () => void): void;
|
|
9965
10423
|
setDisabledState(isDisabled: boolean): void;
|
|
9966
10424
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SuiTagInput, never>;
|
|
9967
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SuiTagInput, "sui-tag-input", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "error": { "alias": "error"; "required": false; "isSignal": true; }; "errorMessage": { "alias": "errorMessage"; "required": false; "isSignal": true; }; "rightIcon": { "alias": "rightIcon"; "required": false; "isSignal": true; }; "
|
|
10425
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SuiTagInput, "sui-tag-input", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "error": { "alias": "error"; "required": false; "isSignal": true; }; "errorMessage": { "alias": "errorMessage"; "required": false; "isSignal": true; }; "rightIcon": { "alias": "rightIcon"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "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; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "commaSeparator": { "alias": "commaSeparator"; "required": false; "isSignal": true; }; "allowDuplicates": { "alias": "allowDuplicates"; "required": false; "isSignal": true; }; "maxTags": { "alias": "maxTags"; "required": false; "isSignal": true; }; "addOnBlur": { "alias": "addOnBlur"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "tagAdded": "tagAdded"; "tagRemoved": "tagRemoved"; }, never, ["[slot=right]"], true, never>;
|
|
9968
10426
|
}
|
|
9969
10427
|
|
|
9970
10428
|
type SuiTagStyle = 'stroke' | 'gray';
|
|
@@ -10517,7 +10975,7 @@ declare class SuiTimePicker implements ControlValueAccessor {
|
|
|
10517
10975
|
readonly error: _angular_core.InputSignal<boolean>;
|
|
10518
10976
|
readonly placeholder: _angular_core.InputSignal<string>;
|
|
10519
10977
|
readonly disabled: _angular_core.InputSignal<boolean>;
|
|
10520
|
-
readonly size: _angular_core.InputSignal<"
|
|
10978
|
+
readonly size: _angular_core.InputSignal<"small" | "medium">;
|
|
10521
10979
|
/** Formato de display: '12h' (AM/PM) o '24h'. */
|
|
10522
10980
|
readonly format: _angular_core.InputSignal<SuiTimeFormat>;
|
|
10523
10981
|
/** Incremento de minutos de la lista (1, 5, 15, ...). Default 5. */
|
|
@@ -10888,5 +11346,5 @@ declare class SuiTooltipPanel {
|
|
|
10888
11346
|
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>;
|
|
10889
11347
|
}
|
|
10890
11348
|
|
|
10891
|
-
export { DAY_LABELS_ES, DEFAULT_DURATION_PRESETS, DEFAULT_PRESETS, EMPTY_STATE_FOX_EMOJI, SUI_BRAND_LOGO_COMPANIES, SUI_COLOR_DOT_COLORS, SUI_COLOR_DOT_HEX, SUI_CUSTOM_ICONS, SUI_EMOJI_MAP, SUI_FLAG_NAMES, SUI_HEX_TO_COLOR, SUI_KEY_ICON_COLORS, SUI_KEY_ICON_SIZES, SUI_NAVBAR_VISIBILITY, SUI_PRODUCT_FALLBACK_COLORS, SUI_TAB_BAR, SuiAccordion, SuiActivityFeed, SuiActivityFilter, SuiAlert, SuiAppStoreBadge, SuiAvatar, SuiAvatarGroup, SuiBadge, SuiBanner, SuiBrandLogo, SuiBreadcrumbItem, SuiBreadcrumbs, SuiButton, SuiButtonGroup, SuiButtonGroupItem, SuiCard, SuiCheckbox, SuiCheckboxCard, SuiCheckboxLabel, SuiCircularProgressBar, SuiColorDot, SuiColorPicker, SuiCommandMenuFooter, SuiCommandMenuItem, SuiCommandMenuSearch, SuiCompactAvatarGroup, SuiCompactButton, SuiCompactSelect, SuiCompactSelectForInput, SuiContentCard, SuiContentDivider, 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, SuiIcon, SuiImageUpload, SuiImageUploadProfile, SuiImgRetry, SuiInlineInput, SuiInlineSelect, SuiInput, SuiIntegrationSwitch, SuiKbd, SuiKeyIcon, SuiLinkButton, SuiModal, SuiModalSheet, SuiNotification, SuiNotificationFooter, SuiNotificationTabMenu, SuiOtpInput, SuiPageHeader, SuiPagination, SuiPeriodRange, SuiPopover, SuiProductCard, SuiProgressBar, SuiProgressBarLabel, SuiRadio, SuiRadioCard, SuiRadioGroup, 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, buildCalendarGrid, buildHourList, buildMinuteList, formatDateInput, formatDateShort, formatMonthYear, formatTime, isSameTime, normalizeHex, pad2, parseTime, to12h, to24h };
|
|
10892
|
-
export type { CalendarCell, CalendarRow, DatepickerPreset, DatepickerPresetId, SuiAccordionFlipIcon, SuiActivityAvatarRef, SuiActivityFeedItem, SuiActivityFile, SuiActivityFilterState, SuiActivityTask, SuiActivityTaskState, SuiAlertAction, SuiAlertSize, SuiAlertStyle, SuiAlertVariant, SuiAppStoreBadgeAppearance, SuiAppStoreBadgeCompany, SuiAvatarColor, SuiAvatarGroupItem, SuiAvatarSize, SuiAvatarStatus, SuiAvatarTopBadge, SuiBadgeColor, SuiBadgeConfig, SuiBadgeSize, SuiBadgeType, SuiBadgeVariant, SuiBannerStyle, SuiBannerVariant, SuiBrandLogoCompany, SuiBrandLogoSize, SuiBrandLogoStyle, SuiBreadcrumbDivider, SuiBreadcrumbEntry, SuiButtonColor, SuiButtonGroupEntry, SuiButtonGroupItemSize, SuiButtonSize, SuiButtonVariant, SuiCardSize, SuiCardVariant, SuiCheckboxCardType, SuiCheckboxSize, SuiCircularProgressBarColor, SuiCircularProgressBarSize, SuiColorDotColor, SuiCommandMenuItemSize, SuiCommandMenuItemType, SuiCompactAvatarGroupAppearance, SuiCompactAvatarGroupSize, SuiCompactButtonSize, SuiCompactButtonStyle, SuiCompactSelectForInputItem, SuiCompactSelectForInputSize, SuiCompactSelectItem, SuiCompactSelectSize, SuiCompactSelectType, SuiContentCardType, SuiContentDividerItem, SuiContentDividerType, SuiCounterInputSize, SuiDateRange, SuiDatepickerCalendars, SuiDatepickerMode, SuiDayCellType, SuiDividerOrientation, SuiDrawerFooterType, SuiDrawerHeaderSize, SuiDrawerHeaderType, SuiDropdownItemMode, SuiDropdownItemSize, SuiDropdownMenuPopupRole, SuiDropdownMenuPosition, SuiEmojiName, SuiEmojiSize, SuiFancyButtonSize, SuiFancyButtonType, SuiFileIconColor, SuiFileIconSize, SuiFileUploadCardState, SuiFileUploadSize, SuiFilterItemState, SuiFlagName, SuiFlagSize, SuiFormHintSize, SuiFormHintVariant, SuiFormLabelSize, SuiImageUploadProfileAlignment, SuiImageUploadProfileType, SuiImageUploadShape, SuiImageUploadSize, SuiInlineSelectItem, SuiInlineSelectType, SuiInputSize, SuiInputType, SuiIntegrationSwitchAppearance, SuiIntegrationSwitchType, SuiKbdVariant, SuiKeyIconColor, SuiKeyIconSize, SuiKeyIconStyle, SuiLinkButtonSize, SuiLinkButtonVariant, SuiModalIconVariant, SuiModalSize, SuiModalStatusAlignment, SuiNavbarVisibility, SuiNotificationStyle, SuiNotificationTab, SuiNotificationVariant, SuiOtpInputType, SuiPaginationInfoFormat, SuiPaginationSize, SuiPaginationType, SuiPopoverFooter, SuiPopoverPosition, SuiProgressBarColor, SuiProgressBarLabelType, SuiProgressBarSize, SuiRadioCardType, SuiRadioSize, SuiRadioValue, SuiRatingAlignment, SuiRatingAppearance, SuiRatingReviewLink, SuiRatingSize, SuiRatingType, SuiRichEditorAction, SuiRichEditorCommand, SuiRichEditorItemState, SuiRichEditorItemType, SuiRichEditorLayout, SuiSegmentedControlItem, SuiSegmentedControlSize, SuiSelectOption, SuiSelectSize, SuiSelectType, SuiSidebarIndicatorColor, SuiSidebarItem, SuiSidebarMobileMode, SuiSidebarProfile, 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 };
|
|
11349
|
+
export { DAY_LABELS_ES, DEFAULT_DURATION_PRESETS, DEFAULT_PRESETS, EMPTY_STATE_FOX_EMOJI, SUI_BRAND_LOGO_COMPANIES, SUI_COLOR_DOT_COLORS, SUI_COLOR_DOT_HEX, SUI_CUSTOM_ICONS, SUI_EMOJI_MAP, SUI_FLAG_NAMES, SUI_HEX_TO_COLOR, SUI_KEY_ICON_COLORS, SUI_KEY_ICON_SIZES, SUI_NAVBAR_VISIBILITY, SUI_PRODUCT_FALLBACK_COLORS, SUI_TAB_BAR, SuiAccordion, SuiActivityFeed, SuiActivityFilter, SuiAlert, SuiAppStoreBadge, SuiAvatar, SuiAvatarGroup, SuiBadge, SuiBanner, SuiBrandLogo, SuiBreadcrumbItem, SuiBreadcrumbs, SuiButton, SuiButtonGroup, SuiButtonGroupItem, SuiCard, SuiCheckbox, SuiCheckboxCard, SuiCheckboxLabel, SuiCircularProgressBar, SuiColorDot, SuiColorPicker, SuiCommandMenuFooter, SuiCommandMenuItem, SuiCommandMenuSearch, SuiCompactAvatarGroup, SuiCompactButton, SuiCompactSelect, SuiCompactSelectForInput, SuiContentCard, SuiContentDivider, 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, SuiIcon, SuiImageUpload, SuiImageUploadProfile, SuiImgRetry, SuiInlineInput, SuiInlineSelect, SuiInput, SuiIntegrationSwitch, SuiKbd, SuiKeyIcon, SuiLinkButton, SuiModal, SuiModalFooter, SuiModalHeader, SuiModalSheet, SuiNotification, SuiNotificationFooter, SuiNotificationTabMenu, SuiOtpInput, SuiPageHeader, SuiPagination, 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, buildCalendarGrid, buildHourList, buildMinuteList, formatDateInput, formatDateShort, formatMonthYear, formatTime, isSameTime, normalizeHex, pad2, parseTime, to12h, to24h };
|
|
11350
|
+
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, SuiCheckboxCardType, SuiCheckboxSize, SuiCircularProgressBarColor, SuiCircularProgressBarSize, SuiColorDotColor, SuiCommandMenuItemSize, SuiCommandMenuItemType, SuiCompactAvatarGroupAppearance, SuiCompactAvatarGroupSize, SuiCompactButtonSize, SuiCompactButtonStyle, SuiCompactSelectForInputItem, SuiCompactSelectForInputSize, SuiCompactSelectItem, SuiCompactSelectSize, SuiCompactSelectType, SuiContentCardType, SuiContentDividerItem, SuiContentDividerType, 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, SuiFormHintSize, SuiFormHintVariant, SuiFormLabelSize, SuiImageUploadProfileAlignment, SuiImageUploadProfileLabels, SuiImageUploadProfileType, SuiImageUploadShape, SuiImageUploadSize, SuiInlineSelectItem, SuiInlineSelectType, SuiInputSize, SuiInputType, SuiIntegrationManageConfig, SuiIntegrationSwitchAppearance, SuiIntegrationSwitchType, SuiKbdVariant, SuiKeyIconColor, SuiKeyIconSize, SuiKeyIconStyle, SuiLinkButtonSize, SuiLinkButtonVariant, SuiLinkConfig, SuiModalHeaderVariant, SuiModalIconVariant, SuiModalSize, SuiModalStatusAlignment, SuiNavbarVisibility, SuiNotificationStyle, SuiNotificationTab, SuiNotificationVariant, SuiOtpInputType, SuiPaginationInfoFormat, SuiPaginationSize, SuiPaginationType, 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 };
|