@ajuarezso/sui-design-system 0.2.0 → 0.2.1

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.1",
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"
@@ -1306,7 +1306,7 @@ type SuiBrandLogoSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';
1306
1306
  * ariaLabel="Síguenos en GitHub" />
1307
1307
  */
1308
1308
  declare class SuiBrandLogo {
1309
- readonly company: _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">;
1309
+ readonly company: _angular_core.InputSignal<"apple" | "x-twitter" | "google" | "facebook" | "linkedin" | "github" | "dropbox" | "adobe" | "amazon" | "bitcoin" | "discord" | "figma" | "framer" | "instagram" | "microsoft" | "netflix" | "notion" | "paypal" | "pinterest" | "slack" | "spotify" | "stripe" | "telegram" | "twitch" | "webflow" | "whatsapp" | "wise" | "youtube">;
1310
1310
  readonly variant: _angular_core.InputSignal<SuiBrandLogoStyle>;
1311
1311
  readonly size: _angular_core.InputSignal<SuiBrandLogoSize>;
1312
1312
  readonly href: _angular_core.InputSignal<string | null>;
@@ -1527,7 +1527,7 @@ declare class SuiButtonGroupItem {
1527
1527
  /** aria-label para icon-only buttons */
1528
1528
  readonly ariaLabel: _angular_core.InputSignal<string>;
1529
1529
  /** Estado del data-attribute para CSS scoping */
1530
- readonly state: _angular_core.Signal<"default" | "active" | "disabled">;
1530
+ readonly state: _angular_core.Signal<"disabled" | "default" | "active">;
1531
1531
  /** True cuando solo tiene icon (left o right) sin label */
1532
1532
  readonly onlyIcon: _angular_core.Signal<boolean>;
1533
1533
  /**
@@ -2235,7 +2235,7 @@ declare class SuiColorDot {
2235
2235
  * - `selected` → dot 12×12 + ring 2px.
2236
2236
  * - `disabled` → dot gris pálido, sin pointer events.
2237
2237
  */
2238
- readonly state: _angular_core.InputSignal<"default" | "disabled" | "hover" | "selected">;
2238
+ readonly state: _angular_core.InputSignal<"disabled" | "default" | "hover" | "selected">;
2239
2239
  /** aria-label override. */
2240
2240
  readonly ariaLabel: _angular_core.InputSignal<string>;
2241
2241
  readonly clicked: _angular_core.OutputEmitterRef<void>;
@@ -3172,7 +3172,7 @@ declare class SuiContentCard {
3172
3172
  /** Logo de empresa para type=company (mini-avatar bottom-right del sui-avatar). */
3173
3173
  readonly companyLogoSrc: _angular_core.InputSignal<string | null>;
3174
3174
  /** Marca para type=brand / card-provider. */
3175
- 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>;
3175
+ readonly brand: _angular_core.InputSignal<"apple" | "x-twitter" | "google" | "facebook" | "linkedin" | "github" | "dropbox" | "adobe" | "amazon" | "bitcoin" | "discord" | "figma" | "framer" | "instagram" | "microsoft" | "netflix" | "notion" | "paypal" | "pinterest" | "slack" | "spotify" | "stripe" | "telegram" | "twitch" | "webflow" | "whatsapp" | "wise" | "youtube" | null>;
3176
3176
  /** Mostrar el botón X de dismiss. Default true. */
3177
3177
  readonly dismissible: _angular_core.InputSignal<boolean>;
3178
3178
  /** aria-label del botón X. */
@@ -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
  *
@@ -4927,13 +4927,13 @@ 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<"error" | "disabled" | "default" | "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>;
4934
4934
  /** Icon size px. Figma verified = 24 (medium). small/large/xlarge escalan +4
4935
4935
  * (small 20 → medium 24 → large 28 → xlarge 32) — extensión de proyecto. */
4936
- protected readonly iconSize: _angular_core.Signal<20 | 24 | 32 | 28>;
4936
+ protected readonly iconSize: _angular_core.Signal<24 | 20 | 32 | 28>;
4937
4937
  onClick(): void;
4938
4938
  /** Browse File button — abre el picker. stopPropagation evita doble-open
4939
4939
  * (el host también es clickeable). */
@@ -5591,7 +5591,7 @@ declare class SuiImageUpload {
5591
5591
  * (matchea el escalado del contenedor 32→40 en SCSS). */
5592
5592
  protected readonly iconSize: _angular_core.Signal<20 | 16>;
5593
5593
  protected readonly hasSrc: _angular_core.Signal<boolean>;
5594
- protected readonly state: _angular_core.Signal<"filled" | "disabled" | "dragover" | "empty">;
5594
+ protected readonly state: _angular_core.Signal<"disabled" | "filled" | "dragover" | "empty">;
5595
5595
  protected readonly resolvedTitle: _angular_core.Signal<string>;
5596
5596
  protected readonly resolvedSubtitle: _angular_core.Signal<string>;
5597
5597
  onHostClick(): void;
@@ -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<"button" | "basic" | "file" | "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). */
@@ -7631,7 +7631,7 @@ declare class SuiRadioCard implements ControlValueAccessor {
7631
7631
  readonly size: _angular_core.InputSignal<SuiRadioSize>;
7632
7632
  /** Lado en px del radio según size: medium 20 · large 24 · xlarge 28. Los
7633
7633
  * insets internos (bg/box) son % → escalan solos. */
7634
- readonly radioPx: _angular_core.Signal<20 | 24 | 28>;
7634
+ readonly radioPx: _angular_core.Signal<24 | 20 | 28>;
7635
7635
  /** Valor del radio (requerido para uso en grupo). */
7636
7636
  readonly value: _angular_core.InputSignal<string>;
7637
7637
  /** Título principal del card (label de la fila Title). */
@@ -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>;
@@ -8679,7 +8691,7 @@ declare class SuiStatusBadge {
8679
8691
  */
8680
8692
  readonly withDot: _angular_core.InputSignal<boolean>;
8681
8693
  /** Icono Remix mapeado al status. Solo se usa cuando withDot=false. */
8682
- readonly iconName: _angular_core.Signal<"checkbox-circle-fill" | "alert-fill" | "error-warning-fill" | "information-fill" | "forbid-fill">;
8694
+ readonly iconName: _angular_core.Signal<"information-fill" | "checkbox-circle-fill" | "alert-fill" | "error-warning-fill" | "forbid-fill">;
8683
8695
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SuiStatusBadge, never>;
8684
8696
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<SuiStatusBadge, "sui-status-badge", never, { "status": { "alias": "status"; "required": false; "isSignal": true; }; "appearance": { "alias": "appearance"; "required": false; "isSignal": true; }; "withDot": { "alias": "withDot"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
8685
8697
  }
@@ -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
  /**