@ajuarezso/sui-design-system 0.6.0 → 0.7.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,6 +1,6 @@
1
1
  {
2
2
  "name": "@ajuarezso/sui-design-system",
3
- "version": "0.6.0",
3
+ "version": "0.7.1",
4
4
  "description": "SUI Design System — librería de componentes Angular (SUI 2.0).",
5
5
  "license": "UNLICENSED",
6
6
  "publishConfig": {
@@ -1655,6 +1655,10 @@ type SuiButtonSize = '2xsmall' | 'xsmall' | 'small' | 'medium' | 'large' | 'xlar
1655
1655
  interface SuiFooterButtonConfig {
1656
1656
  label: string;
1657
1657
  disabled?: boolean;
1658
+ /** Color del botón primario — 'error' para acciones destructivas
1659
+ * (confirmar borrado). Default 'primary'. Solo lo consume el botón
1660
+ * primario de sui-modal-footer; los secundarios son stroke neutral. */
1661
+ color?: 'primary' | 'error';
1658
1662
  }
1659
1663
  /**
1660
1664
  * SUI Button — SUI Design System 2.0
@@ -6817,7 +6821,7 @@ type SuiModalStatusAlignment = 'horizontal' | 'vertical';
6817
6821
  * @input closeOnEscape — boolean — close on Escape key (default: true)
6818
6822
  * @input showClose — boolean — show X button (default: true)
6819
6823
  * @input iconVariant — SuiModalIconVariant | null — circular icon in header
6820
- * @input statusAlignment — 'horizontal' | 'vertical' — layout del icono+texto.
6824
+ * @input statusAlignment — 'horizontal' | 'vertical' | null — anatomía Status Modal (480:1372); null = header normal.
6821
6825
  * 'vertical' = patrón Status Modal de Figma (default: 'horizontal')
6822
6826
  * @input backdropBlur — boolean — blur(10px) del fondo. default true (look
6823
6827
  * glass del proyecto); opt-out con [backdropBlur]="false"
@@ -6845,11 +6849,11 @@ declare class SuiModal implements AfterViewInit, OnDestroy {
6845
6849
  contenedor circular bg `neutral-lighter` + color `sub-600`. Si NO se
6846
6850
  pasa y hay `iconVariant`, fallback al variant semántico. */
6847
6851
  readonly headerIcon: _angular_core.InputSignal<string | null>;
6848
- /** Layout del header con icono. `vertical` = patrón Status Modal de Figma
6849
- (node 480:1372): icono centrado arriba, texto centrado en columna,
6850
- tipografía escalada. Requiere `iconVariant` o `headerIcon` para tener
6851
- efecto visible. */
6852
- readonly statusAlignment: _angular_core.InputSignal<SuiModalStatusAlignment>;
6852
+ /** Anatomía Status Modal de Figma (set 480:1372) — null (default) = header
6853
+ normal (Modal Header 466:4778). `horizontal`: tile cuadrado + texto en
6854
+ fila dentro del body (480:1366). `vertical`: icono centrado arriba +
6855
+ texto centrado en columna. Requiere `iconVariant` o `headerIcon`. */
6856
+ readonly statusAlignment: _angular_core.InputSignal<SuiModalStatusAlignment | null>;
6853
6857
  /** Aplica `backdrop-filter: blur(10px)` al overlay. Por defecto `true` —
6854
6858
  extra-feature "glass" del proyecto encima del overlay-gray plano del DS
6855
6859
  (rgba(51,51,51,0.24)). Pasar `[backdropBlur]="false"` lo quita y deja el
@@ -6918,14 +6922,12 @@ declare class SuiModal implements AfterViewInit, OnDestroy {
6918
6922
  /** data-variant del círculo: si hay variant semántico lo usa; si solo hay
6919
6923
  * headerIcon custom, retorna 'neutral'. */
6920
6924
  protected readonly resolvedIconVariant: _angular_core.Signal<string>;
6921
- /** True cuando el modal está en modo Status vertical Y hay un icono que
6922
- * mostrar. En este modo el icono+texto se renderizan centrados en el body,
6923
- * no en el header horizontal. */
6925
+ /** Modo Status Modal activo (statusAlignment seteado + icono presente):
6926
+ * el icono+texto se renderizan en el body con la anatomía 480:1372 y el
6927
+ * header queda solo con el close flotante. */
6928
+ readonly isStatus: _angular_core.Signal<boolean>;
6924
6929
  readonly isStatusVertical: _angular_core.Signal<boolean>;
6925
- /** True cuando el header con icono debe renderizar el icono "flat" (24px sin
6926
- * círculo): patrón Figma "Modal Header / Small" (size sin description). Solo
6927
- * aplica en modo horizontal con icono y SIN description. */
6928
- readonly isCompactHeader: _angular_core.Signal<boolean>;
6930
+ readonly isStatusHorizontal: _angular_core.Signal<boolean>;
6929
6931
  private _previousFocus;
6930
6932
  private _escapeHandler?;
6931
6933
  ngAfterViewInit(): void;
@@ -6952,23 +6954,28 @@ type SuiModalHeaderVariant = 'info' | 'success' | 'warning' | 'error';
6952
6954
  * Figma file: 8p1k72aKKvzJV4XcvPS4VO
6953
6955
  * Component set: 466:4778 ("Modal Header [1.1]") — 6 Types × 2 Sizes
6954
6956
  * 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).
6957
+ * Sizes: Medium (min-height 80, title + description) ·
6958
+ * Small (min-height 56, título; icono FLAT 24 sin círculo)
6959
+ *
6960
+ * Es la ÚNICA fuente de verdad de la anatomía del header de modal: sui-modal
6961
+ * lo renderiza internamente y también se usa standalone para componer paneles
6962
+ * custom (par de sui-modal-footer).
6963
+ *
6964
+ * EXACT (Figma 466:4777 medium / 472:298 small — homologado con sui-modal):
6965
+ * Container flex align-center · padding 16px 56px 16px 20px (pr 56 reserva
6966
+ * el close absolute) · border-bottom stroke-soft-200 · bg white-0
6967
+ * · min-height 80 (small: 56) · gap 16 (small: 12; con icono: 14
6968
+ * en ambos sizes — cascade fix nodo "with-icon")
6969
+ * Title Label/Small (14/500/20/−0.006em), strong-950
6970
+ * Description Paragraph/X-Small (12/400/16), sub-600, margen-top 4
6971
+ * Status icon medium: círculo padding-10 radius-full state lighter/base,
6972
+ * icono 20 · small: flat 24 sin círculo (Figma "Small")
6973
+ * Close sui-compact-button ghost large, absolute top 16 right 16
6974
+ *
6975
+ * Tipos: `iconVariant` (semántico) o `icon` (custom, type Left Icon, círculo
6976
+ * neutral — prioridad). Ambos null → Basic.
6977
+ * `titleId`/`descriptionId` opcionales: ids para aria-labelledby/describedby
6978
+ * del dialog contenedor (los usa sui-modal).
6972
6979
  *
6973
6980
  * Usage:
6974
6981
  * <sui-modal-header title="Editar producto" description="Cambios en vivo."
@@ -6976,25 +6983,29 @@ type SuiModalHeaderVariant = 'info' | 'success' | 'warning' | 'error';
6976
6983
  * <sui-modal-header size="small" title="Filtros" (closed)="cerrar()" />
6977
6984
  */
6978
6985
  declare class SuiModalHeader {
6979
- /** Título del header (14/20 Medium). */
6986
+ /** Título del header (Label/Small). */
6980
6987
  readonly title: _angular_core.InputSignal<string>;
6981
- /** Descripción bajo el título (solo size medium). */
6988
+ /** Descripción bajo el título (Paragraph/X-Small). */
6982
6989
  readonly description: _angular_core.InputSignal<string | null>;
6983
- /** medium (80): title + description · small (56): solo title. */
6990
+ /** medium (80): título + descripción · small (56): título; icono flat 24. */
6984
6991
  readonly size: _angular_core.InputSignal<"small" | "medium">;
6985
- /** Icono semántico de status (círculo state lighter/base). */
6992
+ /** Icono semántico de status (círculo state lighter/base en medium). */
6986
6993
  readonly iconVariant: _angular_core.InputSignal<SuiModalHeaderVariant | null>;
6987
- /** Icono custom (tipo "Left Icon" de Figma). Prioridad sobre iconVariant. */
6994
+ /** Icono custom (type "Left Icon" de Figma). Prioridad sobre iconVariant. */
6988
6995
  readonly icon: _angular_core.InputSignal<string | null>;
6989
6996
  /** Muestra el botón de cerrar (default true). */
6990
6997
  readonly showClose: _angular_core.InputSignal<boolean>;
6998
+ /** id del h2 del título — para aria-labelledby del dialog contenedor. */
6999
+ readonly titleId: _angular_core.InputSignal<string | null>;
7000
+ /** id del p de la descripción — para aria-describedby del dialog contenedor. */
7001
+ readonly descriptionId: _angular_core.InputSignal<string | null>;
6991
7002
  /** Click en el botón de cerrar. */
6992
7003
  readonly closed: _angular_core.OutputEmitterRef<void>;
6993
7004
  protected readonly iconName: _angular_core.Signal<string | null>;
6994
7005
  /** Variant efectivo para el data-attr del círculo (custom icon = neutral). */
6995
7006
  protected readonly resolvedVariant: _angular_core.Signal<string | null>;
6996
7007
  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>;
7008
+ 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; }; "titleId": { "alias": "titleId"; "required": false; "isSignal": true; }; "descriptionId": { "alias": "descriptionId"; "required": false; "isSignal": true; }; }, { "closed": "closed"; }, never, never, true, never>;
6998
7009
  }
6999
7010
 
7000
7011
  /**