@ajuarezso/sui-design-system 0.23.0 → 0.24.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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ajuarezso/sui-design-system",
3
- "version": "0.23.0",
3
+ "version": "0.24.0",
4
4
  "description": "SUI Design System — librería de componentes Angular (SUI 2.0).",
5
5
  "license": "UNLICENSED",
6
6
  "publishConfig": {
@@ -1614,7 +1614,7 @@ declare class SuiButtonGroupItem {
1614
1614
  * - 'both' → ambos iconos: padding cuadrado (p)
1615
1615
  * - 'only' → icon-only: padding cuadrado (p) → square box
1616
1616
  */
1617
- readonly iconLayout: _angular_core.Signal<"none" | "left" | "right" | "both" | "only">;
1617
+ readonly iconLayout: _angular_core.Signal<"both" | "none" | "left" | "right" | "only">;
1618
1618
  /** Tamaño del icono en px según size del item (large/medium/small/xsmall=20, 2xsmall=16).
1619
1619
  * En large y medium el ícono se queda en 20, igual que `sui-button`: el ícono
1620
1620
  * que acompaña texto no escala. */
@@ -1779,7 +1779,7 @@ declare class SuiButton {
1779
1779
  readonly disabled: _angular_core.InputSignal<boolean>;
1780
1780
  readonly leftIcon: _angular_core.InputSignal<string | null>;
1781
1781
  readonly rightIcon: _angular_core.InputSignal<string | null>;
1782
- readonly type: _angular_core.InputSignal<"button" | "submit" | "reset">;
1782
+ readonly type: _angular_core.InputSignal<"reset" | "submit" | "button">;
1783
1783
  private _spacePressed;
1784
1784
  private _esDelHost;
1785
1785
  _onEnter(event: Event): void;
@@ -2311,7 +2311,7 @@ declare class SuiLinkButton {
2311
2311
  readonly href: _angular_core.InputSignal<string | null>;
2312
2312
  readonly target: _angular_core.InputSignal<string | null>;
2313
2313
  readonly rel: _angular_core.InputSignal<string | null>;
2314
- readonly type: _angular_core.InputSignal<"button" | "submit" | "reset">;
2314
+ readonly type: _angular_core.InputSignal<"reset" | "submit" | "button">;
2315
2315
  readonly ariaLabel: _angular_core.InputSignal<string | null>;
2316
2316
  readonly clicked: _angular_core.OutputEmitterRef<MouseEvent>;
2317
2317
  /** Px de los íconos por tamaño: large 20 · medium 20 · small 16. */
@@ -3272,7 +3272,7 @@ declare class SuiCompactButton {
3272
3272
  readonly href: _angular_core.InputSignal<string | null>;
3273
3273
  readonly target: _angular_core.InputSignal<string | null>;
3274
3274
  readonly rel: _angular_core.InputSignal<string | null>;
3275
- readonly type: _angular_core.InputSignal<"button" | "submit" | "reset">;
3275
+ readonly type: _angular_core.InputSignal<"reset" | "submit" | "button">;
3276
3276
  readonly ariaLabel: _angular_core.InputSignal<string>;
3277
3277
  readonly clicked: _angular_core.OutputEmitterRef<MouseEvent>;
3278
3278
  readonly iconSize: _angular_core.Signal<number>;
@@ -3369,7 +3369,7 @@ declare class SuiCompactSelectForInput<T = string> implements ControlValueAccess
3369
3369
  readonly arrowIcon: _angular_core.Signal<"arrow-up-s-line" | "arrow-down-s-line">;
3370
3370
  readonly displayValue: _angular_core.Signal<string>;
3371
3371
  readonly displayFlag: _angular_core.Signal<"abkhazia" | "afghanistan" | "aland-islands" | "albania" | "algeria" | "american-samoa" | "andorra" | "angola" | "anguilla" | "antigua-and-barbuda" | "argentina" | "armenia" | "aruba" | "australia" | "austria" | "azerbaijan" | "azores-islands" | "bahamas" | "bahrain" | "balearic-islands" | "bangladesh" | "barbados" | "basque-country" | "belarus" | "belgium" | "belize" | "benin" | "bermuda" | "bhutan" | "bolivia" | "bonaire" | "bosnia-and-herzegovina" | "botswana" | "brazil" | "british-columbia" | "british-indian-ocean-territory" | "british-virgin-islands" | "brunei" | "bulgaria" | "burkina-faso" | "burundi" | "cambodia" | "cameroon" | "canada" | "canary-islands" | "cape-verde" | "cayman-islands" | "central-african-republic" | "ceuta" | "chad" | "chile" | "china" | "christmas-island" | "cocos-island" | "colombia" | "comoros" | "cook-islands" | "corsica" | "costa-rica" | "croatia" | "cuba" | "curacao" | "cyprus" | "czech-republic" | "democratic-republic-of-congo" | "denmark" | "djibouti" | "dominica" | "dominican-republic" | "east-timor" | "ecuador" | "egypt" | "el-salvador" | "england" | "equatorial-guinea" | "eritrea" | "estonia" | "ethiopia" | "european-union" | "falkland-islands" | "faroe-islands" | "fiji" | "finland" | "france" | "french-polynesia" | "gabon" | "galapagos-islands" | "gambia" | "georgia" | "germany" | "ghana" | "gibraltar" | "greece" | "greenland" | "grenada" | "guam" | "guatemala" | "guernsey" | "guinea-bissau" | "guinea" | "guyana" | "haiti" | "hawaii" | "honduras" | "hong-kong" | "hungary" | "iceland" | "india" | "indonesia" | "iran" | "iraq" | "ireland" | "isle-of-man" | "israel" | "italy" | "ivory-coast" | "jamaica" | "japan" | "jersey" | "jordan" | "kazakhstan" | "kenya" | "kiribati" | "kosovo" | "kuwait" | "kyrgyzstan" | "laos" | "latvia" | "lebanon" | "lesotho" | "liberia" | "libya" | "liechtenstein" | "lithuania" | "luxembourg" | "macao" | "madagascar" | "madeira" | "malawi" | "malaysia" | "maldives" | "mali" | "malta" | "marshall-island" | "martinique" | "mauritania" | "mauritus" | "melilla" | "mexico" | "micronesia" | "moldova" | "monaco" | "mongolia" | "montenegro" | "montserrat" | "morocco" | "mozambique" | "myanmar" | "namibia" | "nato" | "nauru" | "nepal" | "netherlands" | "new-zealand" | "nicaragua" | "niger" | "nigeria" | "niue" | "norfolk-island" | "north-korea" | "northern-cyprus" | "northern-marianas-islands" | "norway" | "oman" | "orkney-islands" | "ossetia" | "pakistan" | "palau" | "palestine" | "panama" | "papua-new-guinea" | "paraguay" | "peru" | "philippines" | "pitcairn-islands" | "poland" | "portugal" | "puerto-rico" | "qatar" | "rapa-nui" | "republic-of-macedonia" | "republic-of-the-congo" | "romania" | "russia" | "rwanda" | "saba-island" | "sahrawi-arab-democratic-republic" | "saint-kitts-and-nevis" | "samoa" | "san-marino" | "sao-tome-and-prince" | "sardinia" | "saudi-arabia" | "scotland" | "senegal" | "serbia" | "seychelles" | "sierra-leone" | "singapore" | "sint-eustatius" | "sint-maarten" | "slovakia" | "slovania" | "solomon-islands" | "somalia" | "somaliland" | "south-africa" | "south-korea" | "south-sudan" | "spain" | "sri-lanka" | "st-barts" | "st-lucia" | "st-vincent-and-the-grenadines" | "sudan" | "suriname" | "swaziland" | "sweden" | "switzerland" | "syria" | "taijikistan" | "taiwan" | "tanzania" | "thailand" | "tibet" | "togo" | "tokelau" | "tonga" | "transnistria" | "trinidad-and-tobago" | "tunisia" | "turkey" | "turkmenistan" | "turks-and-caicos" | "tuvalu" | "uganda" | "ukraine" | "united-arab-emirates" | "united-kingdom" | "united-nations" | "united-states" | "uruguay" | "uzbekistan" | "vanuatu" | "vatican-city" | "venezuela" | "vietnam" | "virgin-islands" | "wales" | "yemen" | "zambia" | "zimbabwe" | null>;
3372
- readonly flagSizePx: _angular_core.Signal<20 | 16>;
3372
+ readonly flagSizePx: _angular_core.Signal<16 | 20>;
3373
3373
  onHostClick(event: Event): void;
3374
3374
  protected onMenuOpenedChange(open: boolean): void;
3375
3375
  protected selectItem(item: SuiCompactSelectForInputItem<T>): void;
@@ -5483,7 +5483,7 @@ declare class SuiFancyButton {
5483
5483
  readonly href: _angular_core.InputSignal<string | null>;
5484
5484
  readonly target: _angular_core.InputSignal<string | null>;
5485
5485
  readonly rel: _angular_core.InputSignal<string | null>;
5486
- readonly htmlType: _angular_core.InputSignal<"button" | "submit" | "reset">;
5486
+ readonly htmlType: _angular_core.InputSignal<"reset" | "submit" | "button">;
5487
5487
  readonly ariaLabel: _angular_core.InputSignal<string | null>;
5488
5488
  readonly clicked: _angular_core.OutputEmitterRef<MouseEvent>;
5489
5489
  readonly iconSize: _angular_core.Signal<number>;
@@ -5806,13 +5806,13 @@ declare class SuiFileUpload {
5806
5806
  protected readonly inputRef: _angular_core.Signal<ElementRef<HTMLInputElement> | undefined>;
5807
5807
  protected readonly dragging: _angular_core.WritableSignal<boolean>;
5808
5808
  protected readonly internalError: _angular_core.WritableSignal<string | null>;
5809
- protected readonly state: _angular_core.Signal<"default" | "error" | "disabled" | "dragover">;
5809
+ protected readonly state: _angular_core.Signal<"dragover" | "error" | "default" | "disabled">;
5810
5810
  protected readonly resolvedTitle: _angular_core.Signal<string>;
5811
5811
  protected readonly resolvedSubtitle: _angular_core.Signal<string>;
5812
5812
  protected readonly resolvedErrorMessage: _angular_core.Signal<string | null>;
5813
5813
  /** Icon size px. Figma verified = 24 (medium). small/large/xlarge escalan +4
5814
5814
  * (small 20 → medium 24 → large 28 → xlarge 32) — extensión de proyecto. */
5815
- protected readonly iconSize: _angular_core.Signal<20 | 24 | 32 | 28>;
5815
+ protected readonly iconSize: _angular_core.Signal<32 | 20 | 24 | 28>;
5816
5816
  onClick(): void;
5817
5817
  /** Browse File button — abre el picker. stopPropagation evita doble-open
5818
5818
  * (el host también es clickeable). */
@@ -6458,15 +6458,15 @@ declare class SuiImageUpload {
6458
6458
  protected readonly sizePx: _angular_core.Signal<number>;
6459
6459
  /** Camera icon px en el empty state. xl escala a 20, resto 16
6460
6460
  * (matchea el escalado del contenedor 32→40 en SCSS). */
6461
- protected readonly iconSize: _angular_core.Signal<20 | 16>;
6461
+ protected readonly iconSize: _angular_core.Signal<16 | 20>;
6462
6462
  /** Ícono del lápiz y el tacho (editable): 20 en botones de 40, 16 en sm (32). */
6463
- protected readonly ctrlIconSize: _angular_core.Signal<20 | 16>;
6463
+ protected readonly ctrlIconSize: _angular_core.Signal<16 | 20>;
6464
6464
  protected readonly hasSrc: _angular_core.Signal<boolean>;
6465
6465
  /** Hay imagen y se muestra el botón «Quitar» debajo (sin `editable`). */
6466
6466
  protected readonly conQuitar: _angular_core.Signal<boolean>;
6467
6467
  /** Valor del `accept` del input file (incluye HEIC/HEIF). */
6468
6468
  protected readonly accept: string;
6469
- protected readonly state: _angular_core.Signal<"filled" | "disabled" | "dragover" | "empty">;
6469
+ protected readonly state: _angular_core.Signal<"dragover" | "filled" | "disabled" | "empty">;
6470
6470
  protected readonly resolvedTitle: _angular_core.Signal<string>;
6471
6471
  protected readonly resolvedSubtitle: _angular_core.Signal<string>;
6472
6472
  onHostClick(): void;
@@ -8261,7 +8261,7 @@ declare class SuiNotification {
8261
8261
  readonly dismissible: _angular_core.InputSignal<boolean>;
8262
8262
  readonly unread: _angular_core.InputSignal<boolean>;
8263
8263
  /** Item body type. 'basic' keeps the legacy/alert layout (no body slot). */
8264
- readonly type: _angular_core.InputSignal<"basic" | "file" | "button" | "message">;
8264
+ readonly type: _angular_core.InputSignal<"button" | "basic" | "file" | "message">;
8265
8265
  /** When true, item paints the Figma hover bg + reveals the more-2-line button. */
8266
8266
  readonly showMore: _angular_core.InputSignal<boolean>;
8267
8267
  /** Forces the hover affordance visible (e.g. keyboard-focused row). */
@@ -9535,7 +9535,7 @@ declare class SuiRating implements ControlValueAccessor {
9535
9535
  * bar/bar-area usan 20px hardcoded en el template (no pasan por aquí). */
9536
9536
  readonly iconPx: _angular_core.Signal<number>;
9537
9537
  /** Rol del host: `img` para la nota de solo lectura (o `group` si trae link), `radiogroup` para pedirla. */
9538
- protected readonly hostRole: _angular_core.Signal<"group" | "img" | "radiogroup">;
9538
+ protected readonly hostRole: _angular_core.Signal<"img" | "group" | "radiogroup">;
9539
9539
  /** Nombre accesible: interactivo = `ariaLabel`; readonly = «Calificación: 4,5 de 5, 120 calificaciones». */
9540
9540
  protected readonly hostAriaLabel: _angular_core.Signal<string>;
9541
9541
  /** Índice (1..max) de la celda con tabindex 0: la elegida, o la primera. */
@@ -10353,7 +10353,7 @@ declare class SuiSocialButton {
10353
10353
  readonly href: _angular_core.InputSignal<string | null>;
10354
10354
  readonly target: _angular_core.InputSignal<string | null>;
10355
10355
  readonly rel: _angular_core.InputSignal<string | null>;
10356
- readonly type: _angular_core.InputSignal<"button" | "submit" | "reset">;
10356
+ readonly type: _angular_core.InputSignal<"reset" | "submit" | "button">;
10357
10357
  readonly ariaLabel: _angular_core.InputSignal<string | null>;
10358
10358
  readonly clicked: _angular_core.OutputEmitterRef<MouseEvent>;
10359
10359
  /** Disabled efectivo: el input disabled O el estado loading. */
@@ -10888,7 +10888,7 @@ declare class SuiProductCard {
10888
10888
  /** Glyph del «+» / lápiz: 18 en small, 20 en medium y large. */
10889
10889
  readonly iconSize: _angular_core.Signal<20 | 18>;
10890
10890
  /** Glyph del stepper: 16 en small, 20 en medium y large. */
10891
- readonly stepIconSize: _angular_core.Signal<20 | 16>;
10891
+ readonly stepIconSize: _angular_core.Signal<16 | 20>;
10892
10892
  readonly showStepper: _angular_core.Signal<boolean>;
10893
10893
  /** Config resuelta de la imagen (string → { url }; `position` default 50).
10894
10894
  * null = sin imagen → fallback. */
@@ -11281,8 +11281,14 @@ declare class SuiTabChips implements AfterViewInit, OnDestroy {
11281
11281
  readonly size: _angular_core.InputSignal<SuiTabChipsSize>;
11282
11282
  /** Auto-scroll horizontal del chip activo al cambiar `value`. */
11283
11283
  readonly autoScroll: _angular_core.InputSignal<boolean>;
11284
+ /**
11285
+ * Pista de desborde (canon, dueño 05-10-2026): degradado en el borde con chips
11286
+ * ocultos y, con mouse, flechas que desplazan. `false` la apaga.
11287
+ */
11288
+ readonly pistaDeScroll: _angular_core.InputSignal<boolean>;
11284
11289
  sentinelRef?: ElementRef<HTMLDivElement>;
11285
11290
  navRef?: ElementRef<HTMLElement>;
11291
+ private pistaRef?;
11286
11292
  /** Estado interno: chip pegado al top del viewport (solo si sticky=true). */
11287
11293
  protected readonly stuck: _angular_core.WritableSignal<boolean>;
11288
11294
  /** Normaliza el input a SuiTabChipItem[] para iteración uniforme. */
@@ -11308,7 +11314,7 @@ declare class SuiTabChips implements AfterViewInit, OnDestroy {
11308
11314
  protected onKeydown(event: KeyboardEvent): void;
11309
11315
  private scrollToChip;
11310
11316
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SuiTabChips, never>;
11311
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<SuiTabChips, "sui-tab-chips", never, { "chips": { "alias": "chips"; "required": true; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "sticky": { "alias": "sticky"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "autoScroll": { "alias": "autoScroll"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
11317
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SuiTabChips, "sui-tab-chips", never, { "chips": { "alias": "chips"; "required": true; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "sticky": { "alias": "sticky"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "autoScroll": { "alias": "autoScroll"; "required": false; "isSignal": true; }; "pistaDeScroll": { "alias": "pistaDeScroll"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
11312
11318
  }
11313
11319
 
11314
11320
  /**
@@ -11517,6 +11523,11 @@ declare class SuiTable<T = any> {
11517
11523
  readonly striped: _angular_core.InputSignal<boolean>;
11518
11524
  readonly selectable: _angular_core.InputSignal<boolean>;
11519
11525
  readonly rowKey: _angular_core.InputSignal<keyof T | ((row: T) => any) | undefined>;
11526
+ /**
11527
+ * Pista de desborde (canon, dueño 05-10-2026): degradado en el borde con
11528
+ * columnas ocultas y, con mouse, flechas que desplazan. `false` la apaga.
11529
+ */
11530
+ readonly pistaDeScroll: _angular_core.InputSignal<boolean>;
11520
11531
  readonly selectedRows: _angular_core.ModelSignal<Set<any>>;
11521
11532
  readonly sortKey: _angular_core.ModelSignal<string | null>;
11522
11533
  readonly sortDir: _angular_core.ModelSignal<"desc" | "asc" | null>;
@@ -11526,6 +11537,7 @@ declare class SuiTable<T = any> {
11526
11537
  dir: "asc" | "desc" | null;
11527
11538
  }>;
11528
11539
  private readonly scrollEl;
11540
+ private readonly pista;
11529
11541
  private readonly destroyRef;
11530
11542
  private readonly doc;
11531
11543
  constructor();
@@ -11579,7 +11591,7 @@ declare class SuiTable<T = any> {
11579
11591
  /** Genera skeleton cells basado en columnas */
11580
11592
  get skeletonCells(): number[];
11581
11593
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SuiTable<any>, never>;
11582
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<SuiTable<any>, "sui-table", never, { "columns": { "alias": "columns"; "required": true; "isSignal": true; }; "rows": { "alias": "rows"; "required": true; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "emptyMessage": { "alias": "emptyMessage"; "required": false; "isSignal": true; }; "striped": { "alias": "striped"; "required": false; "isSignal": true; }; "selectable": { "alias": "selectable"; "required": false; "isSignal": true; }; "rowKey": { "alias": "rowKey"; "required": false; "isSignal": true; }; "selectedRows": { "alias": "selectedRows"; "required": false; "isSignal": true; }; "sortKey": { "alias": "sortKey"; "required": false; "isSignal": true; }; "sortDir": { "alias": "sortDir"; "required": false; "isSignal": true; }; }, { "selectedRows": "selectedRowsChange"; "sortKey": "sortKeyChange"; "sortDir": "sortDirChange"; "rowClicked": "rowClicked"; "sortChanged": "sortChanged"; }, ["cellTemplates"], never, true, never>;
11594
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SuiTable<any>, "sui-table", never, { "columns": { "alias": "columns"; "required": true; "isSignal": true; }; "rows": { "alias": "rows"; "required": true; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "emptyMessage": { "alias": "emptyMessage"; "required": false; "isSignal": true; }; "striped": { "alias": "striped"; "required": false; "isSignal": true; }; "selectable": { "alias": "selectable"; "required": false; "isSignal": true; }; "rowKey": { "alias": "rowKey"; "required": false; "isSignal": true; }; "pistaDeScroll": { "alias": "pistaDeScroll"; "required": false; "isSignal": true; }; "selectedRows": { "alias": "selectedRows"; "required": false; "isSignal": true; }; "sortKey": { "alias": "sortKey"; "required": false; "isSignal": true; }; "sortDir": { "alias": "sortDir"; "required": false; "isSignal": true; }; }, { "selectedRows": "selectedRowsChange"; "sortKey": "sortKeyChange"; "sortDir": "sortDirChange"; "rowClicked": "rowClicked"; "sortChanged": "sortChanged"; }, ["cellTemplates"], never, true, never>;
11583
11595
  }
11584
11596
 
11585
11597
  type SuiTabMenuHorizontalSize = 'small' | 'medium' | 'large' | 'xlarge';