@ajuarezso/sui-design-system 0.2.0 → 0.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,18 +1,18 @@
1
1
  {
2
2
  "name": "@ajuarezso/sui-design-system",
3
- "version": "0.2.0",
3
+ "version": "0.2.2",
4
4
  "description": "SUI Design System — librería de componentes Angular (SUI 2.0).",
5
5
  "license": "UNLICENSED",
6
6
  "publishConfig": {
7
7
  "access": "public"
8
8
  },
9
9
  "peerDependencies": {
10
- "@angular/common": "^21.2.0",
11
- "@angular/core": "^21.2.0",
12
- "@angular/forms": "^21.2.0",
13
- "@angular/router": "^21.2.0",
14
- "@angular/cdk": "^21.2.0",
15
- "@angular/platform-browser": "^21.2.0",
10
+ "@angular/common": "^21.2.0 || ^22.0.0",
11
+ "@angular/core": "^21.2.0 || ^22.0.0",
12
+ "@angular/forms": "^21.2.0 || ^22.0.0",
13
+ "@angular/router": "^21.2.0 || ^22.0.0",
14
+ "@angular/cdk": "^21.2.0 || ^22.0.0",
15
+ "@angular/platform-browser": "^21.2.0 || ^22.0.0",
16
16
  "rxjs": "^7.8.0",
17
17
  "@capacitor/core": ">=6.0.0",
18
18
  "@capacitor/keyboard": ">=6.0.0"
@@ -904,7 +904,7 @@ declare class SuiAlert {
904
904
  * `small` (12/16) en los compactos (small/xsmall). Mapea el tipo del action al
905
905
  * tamaño del alert.
906
906
  */
907
- readonly actionLinkSize: _angular_core.Signal<"small" | "medium">;
907
+ readonly actionLinkSize: _angular_core.Signal<"medium" | "small">;
908
908
  /**
909
909
  * Tamaño del `sui-compact-button` del cierre, mapeado del size del alert para
910
910
  * conservar el footprint del icono: xsmall (icon 16) → compact `medium`;
@@ -1898,7 +1898,7 @@ declare class SuiCheckboxCard implements ControlValueAccessor {
1898
1898
  /** RemixIcon name (sin prefijo "ri-") para type='left-icon'. */
1899
1899
  readonly icon: _angular_core.InputSignal<string | null>;
1900
1900
  /** Emoji del catálogo SUI_EMOJI_MAP — alternativa a icon para type='left-icon'. */
1901
- 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>;
1901
+ readonly emoji: _angular_core.InputSignal<"warning" | "label" | "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>;
1902
1902
  /** URL directa al emoji para type='left-icon'. Precedencia: icon > emoji > iconSrc. */
1903
1903
  readonly iconSrc: _angular_core.InputSignal<string | null>;
1904
1904
  /** URL de imagen para type='avatar'. Si falla, fallback a iniciales del label. */
@@ -4353,7 +4353,7 @@ declare class SuiDropdownPanel {
4353
4353
  * placeholder text "Search..." color text-soft-400
4354
4354
  *
4355
4355
  * Active (con valor escrito):
4356
- * search icon: text-soft-400 (no cambia)
4356
+ * search icon: icon-sub-600 (oscurece vs el soft-400 de Default)
4357
4357
  * text input: color text-strong-950 (el valor escrito en negro)
4358
4358
  * close icon 20×20 trailing para clear (text-soft-400)
4359
4359
  *
@@ -4446,7 +4446,7 @@ type SuiEmojiName = keyof typeof SUI_EMOJI_MAP;
4446
4446
  type SuiEmojiSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'full';
4447
4447
  declare class SuiEmoji {
4448
4448
  /** Nombre del emoji del catálogo. Si se proveé `src`, este se ignora. */
4449
- 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>;
4449
+ readonly name: _angular_core.InputSignal<"warning" | "label" | "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>;
4450
4450
  /** URL directa al emoji (override del catálogo). Útil para usar emojis fuera del map. */
4451
4451
  readonly src: _angular_core.InputSignal<string | null>;
4452
4452
  /** Tamaño del emoji. */
@@ -4927,7 +4927,7 @@ declare class SuiFileUpload {
4927
4927
  protected readonly inputRef: _angular_core.Signal<ElementRef<HTMLInputElement> | undefined>;
4928
4928
  protected readonly dragging: _angular_core.WritableSignal<boolean>;
4929
4929
  protected readonly internalError: _angular_core.WritableSignal<string | null>;
4930
- protected readonly state: _angular_core.Signal<"error" | "default" | "disabled" | "dragover">;
4930
+ protected readonly state: _angular_core.Signal<"default" | "error" | "disabled" | "dragover">;
4931
4931
  protected readonly resolvedTitle: _angular_core.Signal<string>;
4932
4932
  protected readonly resolvedSubtitle: _angular_core.Signal<string>;
4933
4933
  protected readonly resolvedErrorMessage: _angular_core.Signal<string | null>;
@@ -5155,7 +5155,7 @@ declare class SuiFilterPanelFooter {
5155
5155
  readonly clearDisabled: _angular_core.InputSignal<boolean>;
5156
5156
  readonly applyDisabled: _angular_core.InputSignal<boolean>;
5157
5157
  /** Tamaño de los botones. Default 'small' (Figma: p-8px/radius-8 = size small). */
5158
- readonly size: _angular_core.InputSignal<"small" | "medium">;
5158
+ readonly size: _angular_core.InputSignal<"medium" | "small">;
5159
5159
  readonly clear: _angular_core.OutputEmitterRef<void>;
5160
5160
  readonly apply: _angular_core.OutputEmitterRef<void>;
5161
5161
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SuiFilterPanelFooter, never>;
@@ -6979,7 +6979,7 @@ declare class SuiNotification {
6979
6979
  readonly dismissible: _angular_core.InputSignal<boolean>;
6980
6980
  readonly unread: _angular_core.InputSignal<boolean>;
6981
6981
  /** Item body type. 'basic' keeps the legacy/alert layout (no body slot). */
6982
- readonly type: _angular_core.InputSignal<"button" | "file" | "basic" | "message">;
6982
+ readonly type: _angular_core.InputSignal<"file" | "button" | "basic" | "message">;
6983
6983
  /** When true, item paints the Figma hover bg + reveals the more-2-line button. */
6984
6984
  readonly showMore: _angular_core.InputSignal<boolean>;
6985
6985
  /** Forces the hover affordance visible (e.g. keyboard-focused row). */
@@ -7650,7 +7650,7 @@ declare class SuiRadioCard implements ControlValueAccessor {
7650
7650
  * Emoji del catálogo SUI_EMOJI_MAP — alternativa a icon para type='left-icon'.
7651
7651
  * Si ambos están, icon tiene precedencia.
7652
7652
  */
7653
- 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>;
7653
+ readonly emoji: _angular_core.InputSignal<"warning" | "label" | "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>;
7654
7654
  /**
7655
7655
  * URL directa al emoji para type='left-icon'. Útil cuando el consumer ya tiene
7656
7656
  * la URL (ej. FLUENT_EMOJI map del proyecto) y no quiere registrar el emoji
@@ -8585,7 +8585,19 @@ declare class SuiSocialButton {
8585
8585
  /** Disabled efectivo: el input disabled O el estado loading. */
8586
8586
  readonly isDisabled: _angular_core.Signal<boolean>;
8587
8587
  readonly isAnchor: _angular_core.Signal<boolean>;
8588
- /** Logo style derivado del button style. */
8588
+ /** Marcas con logo MONOCROMÁTICO OSCURO: su `original` es negro/gris horneado en
8589
+ * el SVG (no responde a currentColor por ser <img>), así que en stroke + dark
8590
+ * quedaría casi invisible sobre el bg oscuro → se usa el logo `white`. Las marcas
8591
+ * multicolor (google/facebook/linkedin/dropbox) se ven bien y quedan `original`. */
8592
+ private static readonly MONO_DARK_BRANDS;
8593
+ /** Dark mode reactivo — leído del `data-theme` del root (mecanismo del DS).
8594
+ * Necesario porque el logo es un asset distinto por tema (no un color CSS). */
8595
+ private readonly isDark;
8596
+ private readDark;
8597
+ constructor();
8598
+ /** Logo style derivado del button style + tema. filled → siempre blanco; stroke →
8599
+ * `original`, salvo dark + marca monocromática oscura, donde usa `white` para no
8600
+ * perder el logo sobre la superficie oscura (ver MONO_DARK_BRANDS). */
8589
8601
  readonly logoStyle: _angular_core.Signal<"white" | "original">;
8590
8602
  /** Color de fondo brand-specific (solo aplica si style=filled). */
8591
8603
  readonly filledBg: _angular_core.Signal<string | null>;
@@ -8981,7 +8993,7 @@ declare class SuiSwitchCard implements ControlValueAccessor {
8981
8993
  * `<sui-icon>` proyectado vía `[sui-switch-card-leading]` y se renderiza
8982
8994
  * con las MISMAS dimensiones (20×20 dentro del círculo de 40px).
8983
8995
  */
8984
- 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>;
8996
+ readonly emoji: _angular_core.InputSignal<"warning" | "label" | "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>;
8985
8997
  /**
8986
8998
  * URL de imagen para type='avatar' — se renderiza con sui-avatar size=lg
8987
8999
  * (40×40 redonda). Si la imagen falla, fallback automático a iniciales del
@@ -9006,6 +9018,8 @@ declare class SuiSwitchCard implements ControlValueAccessor {
9006
9018
  readonly isDisabled: _angular_core.Signal<boolean>;
9007
9019
  /** True si type requiere render del slot leading. */
9008
9020
  readonly hasLeading: _angular_core.Signal<boolean>;
9021
+ /** Box del leading según type — usado por el wrapper único del slot proyectado. */
9022
+ readonly leadingBoxClass: _angular_core.Signal<"" | "sui-switch-card__leading-icon" | "sui-switch-card__leading-card-provider" | "sui-switch-card__leading-brand" | "sui-switch-card__leading-company">;
9009
9023
  /** Iniciales para fallback de sui-avatar cuando la imagen no carga. */
9010
9024
  readonly initialsFromLabel: _angular_core.Signal<string>;
9011
9025
  private _onChange;
@@ -9022,7 +9036,7 @@ declare class SuiSwitchCard implements ControlValueAccessor {
9022
9036
  registerOnTouched(fn: () => void): void;
9023
9037
  setDisabledState(isDisabled: boolean): void;
9024
9038
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SuiSwitchCard, never>;
9025
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<SuiSwitchCard, "sui-switch-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; }; "emoji": { "alias": "emoji"; "required": false; "isSignal": true; }; "imageUrl": { "alias": "imageUrl"; "required": false; "isSignal": true; }; "badge": { "alias": "badge"; "required": false; "isSignal": true; }; "badgeLabel": { "alias": "badgeLabel"; "required": false; "isSignal": true; }; "checked": { "alias": "checked"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "checkedChange": "checkedChange"; }, never, ["[sui-switch-card-leading]", "[sui-switch-card-leading]", "[sui-switch-card-leading]", "[sui-switch-card-leading]", "[sui-switch-card-leading]"], true, never>;
9039
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SuiSwitchCard, "sui-switch-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; }; "emoji": { "alias": "emoji"; "required": false; "isSignal": true; }; "imageUrl": { "alias": "imageUrl"; "required": false; "isSignal": true; }; "badge": { "alias": "badge"; "required": false; "isSignal": true; }; "badgeLabel": { "alias": "badgeLabel"; "required": false; "isSignal": true; }; "checked": { "alias": "checked"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "checkedChange": "checkedChange"; }, never, ["[sui-switch-card-leading]"], true, never>;
9026
9040
  }
9027
9041
 
9028
9042
  /**
@@ -10292,7 +10306,7 @@ declare class SuiTimePicker implements ControlValueAccessor {
10292
10306
  readonly error: _angular_core.InputSignal<boolean>;
10293
10307
  readonly placeholder: _angular_core.InputSignal<string>;
10294
10308
  readonly disabled: _angular_core.InputSignal<boolean>;
10295
- readonly size: _angular_core.InputSignal<"small" | "medium">;
10309
+ readonly size: _angular_core.InputSignal<"medium" | "small">;
10296
10310
  /** Formato de display: '12h' (AM/PM) o '24h'. */
10297
10311
  readonly format: _angular_core.InputSignal<SuiTimeFormat>;
10298
10312
  /** Incremento de minutos de la lista (1, 5, 15, ...). Default 5. */