@ajuarezso/sui-design-system 0.15.8 → 0.17.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.15.8",
3
+ "version": "0.17.0",
4
4
  "description": "SUI Design System — librería de componentes Angular (SUI 2.0).",
5
5
  "license": "UNLICENSED",
6
6
  "publishConfig": {
@@ -1587,7 +1587,7 @@ declare class SuiButtonGroupItem {
1587
1587
  /** aria-label para icon-only buttons */
1588
1588
  readonly ariaLabel: _angular_core.InputSignal<string>;
1589
1589
  /** Estado del data-attribute para CSS scoping */
1590
- readonly state: _angular_core.Signal<"default" | "active" | "disabled">;
1590
+ readonly state: _angular_core.Signal<"disabled" | "default" | "active">;
1591
1591
  /** True cuando solo tiene icon (left o right) sin label */
1592
1592
  readonly onlyIcon: _angular_core.Signal<boolean>;
1593
1593
  /**
@@ -1598,7 +1598,7 @@ declare class SuiButtonGroupItem {
1598
1598
  * - 'both' → ambos iconos: padding cuadrado (p)
1599
1599
  * - 'only' → icon-only: padding cuadrado (p) → square box
1600
1600
  */
1601
- readonly iconLayout: _angular_core.Signal<"none" | "left" | "right" | "both" | "only">;
1601
+ readonly iconLayout: _angular_core.Signal<"left" | "right" | "none" | "both" | "only">;
1602
1602
  /** Tamaño del icono en px según size del item (small/xsmall=20, 2xsmall=16) */
1603
1603
  readonly iconSize: _angular_core.Signal<number>;
1604
1604
  readonly clicked: _angular_core.OutputEmitterRef<void>;
@@ -2584,7 +2584,7 @@ declare class SuiColorDot {
2584
2584
  * - `selected` → dot 12×12 + ring 2px.
2585
2585
  * - `disabled` → dot gris pálido, sin pointer events.
2586
2586
  */
2587
- readonly state: _angular_core.InputSignal<"default" | "disabled" | "hover" | "selected">;
2587
+ readonly state: _angular_core.InputSignal<"disabled" | "default" | "hover" | "selected">;
2588
2588
  /** aria-label override. */
2589
2589
  readonly ariaLabel: _angular_core.InputSignal<string>;
2590
2590
  readonly clicked: _angular_core.OutputEmitterRef<void>;
@@ -3266,7 +3266,7 @@ declare class SuiCompactSelectForInput<T = string> implements ControlValueAccess
3266
3266
  readonly arrowIcon: _angular_core.Signal<"arrow-up-s-line" | "arrow-down-s-line">;
3267
3267
  readonly displayValue: _angular_core.Signal<string>;
3268
3268
  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>;
3269
- readonly flagSizePx: _angular_core.Signal<20 | 16>;
3269
+ readonly flagSizePx: _angular_core.Signal<16 | 20>;
3270
3270
  onHostClick(event: Event): void;
3271
3271
  protected onMenuOpenedChange(open: boolean): void;
3272
3272
  protected selectItem(item: SuiCompactSelectForInputItem<T>): void;
@@ -5576,7 +5576,7 @@ declare class SuiFileUpload {
5576
5576
  protected readonly inputRef: _angular_core.Signal<ElementRef<HTMLInputElement> | undefined>;
5577
5577
  protected readonly dragging: _angular_core.WritableSignal<boolean>;
5578
5578
  protected readonly internalError: _angular_core.WritableSignal<string | null>;
5579
- protected readonly state: _angular_core.Signal<"default" | "error" | "disabled" | "dragover">;
5579
+ protected readonly state: _angular_core.Signal<"error" | "disabled" | "default" | "dragover">;
5580
5580
  protected readonly resolvedTitle: _angular_core.Signal<string>;
5581
5581
  protected readonly resolvedSubtitle: _angular_core.Signal<string>;
5582
5582
  protected readonly resolvedErrorMessage: _angular_core.Signal<string | null>;
@@ -6224,9 +6224,9 @@ declare class SuiImageUpload {
6224
6224
  protected readonly sizePx: _angular_core.Signal<number>;
6225
6225
  /** Camera icon px en el empty state. xl escala a 20, resto 16
6226
6226
  * (matchea el escalado del contenedor 32→40 en SCSS). */
6227
- protected readonly iconSize: _angular_core.Signal<20 | 16>;
6227
+ protected readonly iconSize: _angular_core.Signal<16 | 20>;
6228
6228
  protected readonly hasSrc: _angular_core.Signal<boolean>;
6229
- protected readonly state: _angular_core.Signal<"filled" | "disabled" | "dragover" | "empty">;
6229
+ protected readonly state: _angular_core.Signal<"disabled" | "filled" | "dragover" | "empty">;
6230
6230
  protected readonly resolvedTitle: _angular_core.Signal<string>;
6231
6231
  protected readonly resolvedSubtitle: _angular_core.Signal<string>;
6232
6232
  onHostClick(): void;
@@ -6441,7 +6441,14 @@ declare class SuiInlineSelect<T = string> implements ControlValueAccessor {
6441
6441
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<SuiInlineSelect<any>, "sui-inline-select", never, { "type": { "alias": "type"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "flag": { "alias": "flag"; "required": false; "isSignal": true; }; "items": { "alias": "items"; "required": false; "isSignal": true; }; "selected": { "alias": "selected"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "selected": "selectedChange"; "clicked": "clicked"; "selectedChange": "selectedChange"; }, never, never, true, never>;
6442
6442
  }
6443
6443
 
6444
- type SuiInputSize = 'xsmall' | 'small' | 'medium';
6444
+ /**
6445
+ * Los tres primeros salen del set de Figma. `large` y `xlarge` son una
6446
+ * EXTENSIÓN nuestra (12-08-2026): el campo se quedaba en 40 px mientras
6447
+ * `sui-button` llega a 48 y 52, así que un campo y un botón puestos lado a lado
6448
+ * nunca se alineaban. Los altos son los del botón a propósito, para que sí lo
6449
+ * hagan.
6450
+ */
6451
+ type SuiInputSize = 'xsmall' | 'small' | 'medium' | 'large' | 'xlarge';
6445
6452
  type SuiInputType = 'text' | 'email' | 'password' | 'number' | 'tel' | 'url' | 'search' | 'amount' | 'card' | 'password-toggle' | 'date' | 'datetime-local' | 'time'
6446
6453
  /**
6447
6454
  * Split-field con divisor vertical: zona de input a la izquierda + acción a
@@ -6457,6 +6464,40 @@ declare class SuiInput implements ControlValueAccessor {
6457
6464
  readonly placeholder: _angular_core.InputSignal<string>;
6458
6465
  readonly disabled: _angular_core.InputSignal<boolean>;
6459
6466
  readonly readonly: _angular_core.InputSignal<boolean>;
6467
+ /**
6468
+ * Esquinas de píldora en vez del radio por tamaño.
6469
+ *
6470
+ * Se llama `fullRadius` y no `rounded` para hablar el mismo idioma que
6471
+ * `sui-compact-button`, que ya tenía este parámetro con ese nombre —y el
6472
+ * nombre viene del propio Figma, que lista «2 fullRadius» entre sus
6473
+ * variantes—. Dos nombres para la misma idea es cómo un design system deja
6474
+ * de ser un sistema.
6475
+ *
6476
+ * El radio normal del campo sube con el tamaño (8 → 8 → 10) y es el correcto
6477
+ * para un formulario, donde los campos se leen como una columna de cajas. Con
6478
+ * `fullRadius`, el campo pasa a `999px` y se lee como un control suelto — un
6479
+ * buscador arriba de una lista, un filtro al lado de chips redondos.
6480
+ *
6481
+ * No es un capricho estético: al lado de `sui-button` y de los chips, que ya
6482
+ * son píldora en TODOS sus tamaños, un campo con esquina de 10 px se ve como
6483
+ * de otro sistema.
6484
+ *
6485
+ * Sigue siendo opt-in y el default no cambia: los formularios de la app
6486
+ * —onboarding, checkout, panel del dueño— se quedan como están.
6487
+ */
6488
+ readonly fullRadius: _angular_core.InputSignal<boolean>;
6489
+ /**
6490
+ * El tamaño que se le pasa al `sui-form-label`.
6491
+ *
6492
+ * El label NO crece con el campo. Su escala llega a `medium` y ahí se queda a
6493
+ * propósito: en `large` y `xlarge` lo que crece es el ÁREA DE TOQUE del
6494
+ * control, no la jerarquía del formulario. Un rótulo gigante encima de un
6495
+ * campo de 52 px se lee como un título, que es otra cosa.
6496
+ *
6497
+ * Además lo obliga el tipo: `SuiFormLabelSize` no tiene los dos grandes, y el
6498
+ * compilador lo cazó apenas se agregaron.
6499
+ */
6500
+ protected readonly labelSize: _angular_core.Signal<SuiFormLabelSize>;
6460
6501
  readonly error: _angular_core.InputSignal<boolean>;
6461
6502
  readonly errorMessage: _angular_core.InputSignal<string | null>;
6462
6503
  readonly label: _angular_core.InputSignal<string | null>;
@@ -6632,7 +6673,7 @@ declare class SuiInput implements ControlValueAccessor {
6632
6673
  registerOnTouched(fn: () => void): void;
6633
6674
  setDisabledState(isDisabled: boolean): void;
6634
6675
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SuiInput, never>;
6635
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<SuiInput, "sui-input", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "error": { "alias": "error"; "required": false; "isSignal": true; }; "errorMessage": { "alias": "errorMessage"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "hintIcon": { "alias": "hintIcon"; "required": false; "isSignal": true; }; "autocomplete": { "alias": "autocomplete"; "required": false; "isSignal": true; }; "sublabel": { "alias": "sublabel"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "tooltip": { "alias": "tooltip"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "maxlength": { "alias": "maxlength"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "paste": { "alias": "paste"; "required": false; "isSignal": true; }; "prefix": { "alias": "prefix"; "required": false; "isSignal": true; }; "showClear": { "alias": "showClear"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "iconPosition": { "alias": "iconPosition"; "required": false; "isSignal": true; }; "closeOnOutsideClick": { "alias": "closeOnOutsideClick"; "required": false; "isSignal": true; }; "leadingDivider": { "alias": "leadingDivider"; "required": false; "isSignal": true; }; "trailingDivider": { "alias": "trailingDivider"; "required": false; "isSignal": true; }; "leadingControl": { "alias": "leadingControl"; "required": false; "isSignal": true; }; "trailingControl": { "alias": "trailingControl"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, ["[data-slot=start]", "[data-slot=end]"], true, never>;
6676
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SuiInput, "sui-input", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "fullRadius": { "alias": "fullRadius"; "required": false; "isSignal": true; }; "error": { "alias": "error"; "required": false; "isSignal": true; }; "errorMessage": { "alias": "errorMessage"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "hintIcon": { "alias": "hintIcon"; "required": false; "isSignal": true; }; "autocomplete": { "alias": "autocomplete"; "required": false; "isSignal": true; }; "sublabel": { "alias": "sublabel"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "tooltip": { "alias": "tooltip"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "maxlength": { "alias": "maxlength"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "paste": { "alias": "paste"; "required": false; "isSignal": true; }; "prefix": { "alias": "prefix"; "required": false; "isSignal": true; }; "showClear": { "alias": "showClear"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "iconPosition": { "alias": "iconPosition"; "required": false; "isSignal": true; }; "closeOnOutsideClick": { "alias": "closeOnOutsideClick"; "required": false; "isSignal": true; }; "leadingDivider": { "alias": "leadingDivider"; "required": false; "isSignal": true; }; "trailingDivider": { "alias": "trailingDivider"; "required": false; "isSignal": true; }; "leadingControl": { "alias": "leadingControl"; "required": false; "isSignal": true; }; "trailingControl": { "alias": "trailingControl"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, ["[data-slot=start]", "[data-slot=end]"], true, never>;
6636
6677
  }
6637
6678
 
6638
6679
  type SuiIntegrationSwitchType = 'horizontal' | 'vertical';
@@ -7680,7 +7721,7 @@ declare class SuiNotification {
7680
7721
  readonly dismissible: _angular_core.InputSignal<boolean>;
7681
7722
  readonly unread: _angular_core.InputSignal<boolean>;
7682
7723
  /** Item body type. 'basic' keeps the legacy/alert layout (no body slot). */
7683
- readonly type: _angular_core.InputSignal<"basic" | "file" | "button" | "message">;
7724
+ readonly type: _angular_core.InputSignal<"button" | "basic" | "file" | "message">;
7684
7725
  /** When true, item paints the Figma hover bg + reveals the more-2-line button. */
7685
7726
  readonly showMore: _angular_core.InputSignal<boolean>;
7686
7727
  /** Forces the hover affordance visible (e.g. keyboard-focused row). */
@@ -9016,7 +9057,17 @@ declare class SuiRichEditor {
9016
9057
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<SuiRichEditor, "sui-rich-editor", never, { "layout": { "alias": "layout"; "required": false; "isSignal": true; }; "showMore": { "alias": "showMore"; "required": false; "isSignal": true; }; "editable": { "alias": "editable"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "headingLabel": { "alias": "headingLabel"; "required": false; "isSignal": true; }; "fontSizeLabel": { "alias": "fontSizeLabel"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "action": "action"; "valueChange": "valueChange"; }, never, never, true, never>;
9017
9058
  }
9018
9059
 
9019
- type SuiSelectSize = 'xsmall' | 'small' | 'medium';
9060
+ /**
9061
+ * `large` y `xlarge` son extensión nuestra (12-08-2026), igual que en
9062
+ * `sui-input`: alturas del `sui-button` para que campo y botón se alineen.
9063
+ *
9064
+ * OJO — crecen el TRIGGER, no la lista. Las opciones son `sui-dropdown-item`,
9065
+ * un componente aparte con su propia escala (36/56/76), y el select NUNCA le
9066
+ * pasó su `size`: hoy todas las opciones salen del mismo tamaño para xsmall y
9067
+ * para medium. No es algo que estos dos tamaños rompan — ya era así —, pero es
9068
+ * la deuda que hay que saldar el día que la lista tenga que acompañar.
9069
+ */
9070
+ type SuiSelectSize = 'xsmall' | 'small' | 'medium' | 'large' | 'xlarge';
9020
9071
  /**
9021
9072
  * Tipo de left-decoration del trigger (Figma Select[1.1] · Type variant).
9022
9073
  * - basic → 📂 ícono RemixIcon genérico (placeholder: flashlight-line)
@@ -9084,6 +9135,9 @@ interface SuiSelectOption<T = any> {
9084
9135
  */
9085
9136
  declare class SuiSelect<T = any> implements ControlValueAccessor {
9086
9137
  readonly size: _angular_core.InputSignal<SuiSelectSize>;
9138
+ /** El rótulo no crece con el control: su escala llega a `medium`. Ver la nota
9139
+ * en `sui-input`, que hace exactamente lo mismo. */
9140
+ protected readonly labelSize: _angular_core.Signal<SuiFormLabelSize>;
9087
9141
  readonly placeholder: _angular_core.InputSignal<string>;
9088
9142
  readonly options: _angular_core.InputSignal<SuiSelectOption<T>[]>;
9089
9143
  readonly disabled: _angular_core.InputSignal<boolean>;