@ajuarezso/sui-design-system 0.24.1 → 0.25.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.
Files changed (116) hide show
  1. package/docs/sui-accordion/README.md +4 -4
  2. package/docs/sui-activity-feed/README.md +11 -11
  3. package/docs/sui-activity-filter/README.md +5 -5
  4. package/docs/sui-app-store-badge/README.md +7 -7
  5. package/docs/sui-avatar/README.md +26 -23
  6. package/docs/sui-avatar-group/README.md +11 -7
  7. package/docs/sui-badge/README.md +7 -7
  8. package/docs/sui-banner/README.md +15 -15
  9. package/docs/sui-brand-logo/README.md +24 -23
  10. package/docs/sui-breadcrumb-item/README.md +3 -3
  11. package/docs/sui-breadcrumbs/README.md +6 -6
  12. package/docs/sui-button/README.md +9 -7
  13. package/docs/sui-button-group/README.md +25 -22
  14. package/docs/sui-button-group-item/README.md +16 -13
  15. package/docs/sui-card/README.md +8 -8
  16. package/docs/sui-chart-legend/README.md +10 -10
  17. package/docs/sui-chart-legend-dot/README.md +10 -10
  18. package/docs/sui-checkbox/README.md +4 -4
  19. package/docs/sui-checkbox-card/README.md +12 -12
  20. package/docs/sui-checkbox-label/README.md +3 -3
  21. package/docs/sui-circular-progress-bar/README.md +19 -16
  22. package/docs/sui-color-dot/README.md +13 -9
  23. package/docs/sui-color-picker/README.md +9 -9
  24. package/docs/sui-command-menu-footer/README.md +1 -1
  25. package/docs/sui-command-menu-item/README.md +13 -12
  26. package/docs/sui-command-menu-search/README.md +3 -2
  27. package/docs/sui-compact-avatar-group/README.md +14 -11
  28. package/docs/sui-compact-button/README.md +16 -11
  29. package/docs/sui-compact-select/README.md +5 -5
  30. package/docs/sui-compact-select-for-input/README.md +1 -1
  31. package/docs/sui-content-card/README.md +12 -12
  32. package/docs/sui-content-divider/README.md +18 -15
  33. package/docs/sui-content-label/README.md +17 -17
  34. package/docs/sui-counter-input/README.md +12 -12
  35. package/docs/sui-date-selector/README.md +8 -8
  36. package/docs/sui-datepicker/README.md +14 -14
  37. package/docs/sui-day-cell/README.md +15 -14
  38. package/docs/sui-day-label/README.md +4 -4
  39. package/docs/sui-divider/README.md +9 -6
  40. package/docs/sui-drawer-header/README.md +9 -9
  41. package/docs/sui-dropdown-caption/README.md +5 -5
  42. package/docs/sui-dropdown-item/README.md +5 -5
  43. package/docs/sui-dropdown-menu/README.md +10 -10
  44. package/docs/sui-dropdown-search/README.md +3 -3
  45. package/docs/sui-emoji/README.md +13 -13
  46. package/docs/sui-empty-state/README.md +4 -4
  47. package/docs/sui-fancy-button/README.md +15 -13
  48. package/docs/sui-file-icon/README.md +14 -11
  49. package/docs/sui-file-upload/README.md +10 -10
  50. package/docs/sui-file-upload-card/README.md +11 -10
  51. package/docs/sui-filter/README.md +12 -12
  52. package/docs/sui-flag/README.md +11 -7
  53. package/docs/sui-form-hint/README.md +2 -2
  54. package/docs/sui-form-label/README.md +4 -4
  55. package/docs/sui-icon/README.md +19 -16
  56. package/docs/sui-image-upload/README.md +20 -19
  57. package/docs/sui-image-upload-profile/README.md +12 -11
  58. package/docs/sui-img-retry/README.md +1 -1
  59. package/docs/sui-inline-input/README.md +6 -6
  60. package/docs/sui-inline-select/README.md +2 -2
  61. package/docs/sui-input/README.md +14 -14
  62. package/docs/sui-integration-switch/README.md +15 -15
  63. package/docs/sui-kbd/README.md +3 -3
  64. package/docs/sui-key-icon/README.md +22 -19
  65. package/docs/sui-link-button/README.md +21 -18
  66. package/docs/sui-logo/README.md +20 -19
  67. package/docs/sui-modal/README.md +11 -11
  68. package/docs/sui-modal-footer/README.md +3 -3
  69. package/docs/sui-modal-header/README.md +1 -1
  70. package/docs/sui-modal-sheet/README.md +4 -4
  71. package/docs/sui-notification/README.md +11 -11
  72. package/docs/sui-notification-footer/README.md +4 -4
  73. package/docs/sui-notification-tab-menu/README.md +4 -4
  74. package/docs/sui-otp-input/README.md +5 -5
  75. package/docs/sui-page-header/README.md +14 -12
  76. package/docs/sui-pagination/README.md +13 -13
  77. package/docs/sui-payment-icon/README.md +16 -13
  78. package/docs/sui-period-range/README.md +5 -5
  79. package/docs/sui-popover/README.md +10 -10
  80. package/docs/sui-product-card/README.md +15 -15
  81. package/docs/sui-progress-bar/README.md +12 -9
  82. package/docs/sui-progress-bar-label/README.md +14 -10
  83. package/docs/sui-radio/README.md +2 -2
  84. package/docs/sui-radio-card/README.md +12 -12
  85. package/docs/sui-radio-label/README.md +3 -3
  86. package/docs/sui-rating/README.md +22 -19
  87. package/docs/sui-rich-editor/README.md +2 -2
  88. package/docs/sui-segmented-control/README.md +9 -9
  89. package/docs/sui-select/README.md +9 -9
  90. package/docs/sui-sidebar/README.md +7 -7
  91. package/docs/sui-slider/README.md +7 -7
  92. package/docs/sui-social-button/README.md +8 -8
  93. package/docs/sui-status-badge/README.md +13 -10
  94. package/docs/sui-stepper/README.md +18 -18
  95. package/docs/sui-store-card/README.md +16 -16
  96. package/docs/sui-switch/README.md +2 -2
  97. package/docs/sui-switch-card/README.md +10 -10
  98. package/docs/sui-switch-label/README.md +1 -1
  99. package/docs/sui-tab-chips/README.md +17 -15
  100. package/docs/sui-tab-menu-horizontal/README.md +6 -6
  101. package/docs/sui-tab-menu-vertical/README.md +8 -8
  102. package/docs/sui-table/README.md +13 -13
  103. package/docs/sui-tag/README.md +14 -11
  104. package/docs/sui-tag-input/README.md +6 -6
  105. package/docs/sui-textarea/README.md +8 -8
  106. package/docs/sui-time-picker/README.md +25 -25
  107. package/docs/sui-toast/README.md +16 -15
  108. package/docs/sui-tooltip/README.md +19 -18
  109. package/docs/sui-topbar/README.md +7 -7
  110. package/docs/sui-topbar-button/README.md +4 -4
  111. package/docs/sui-topbar-item/README.md +7 -7
  112. package/docs/sui-topbar-user/README.md +5 -5
  113. package/fesm2022/ajuarezso-sui-design-system.mjs +15 -10
  114. package/fesm2022/ajuarezso-sui-design-system.mjs.map +1 -1
  115. package/package.json +1 -1
  116. package/types/ajuarezso-sui-design-system.d.ts +26 -22
@@ -25,18 +25,18 @@ igual.
25
25
  ## Qué variante usar
26
26
 
27
27
  > **La guía del DS no tiene página de este item.** Sale del Figma de SUI (Topbar Items [Topbar],
28
- > set 3802:24588: Default, Hover, Active). Uso medido el 03-10-2026: **0 usos** en la app. Lo de
29
- > abajo es **propuesta, falta aprobación**.
28
+ > set 3802:24588: Default, Hover, Active). Uso medido el 03-10-2026: **0 usos** en la app. Las reglas
29
+ > marcadas canon están aprobadas (05-10-2026) y no queda ninguna en propuesta.
30
30
 
31
31
  | prop | cuándo | fuente |
32
32
  |---|---|---|
33
- | solo `label` | El caso normal. Una o dos palabras, sentence case. | propuesta, falta aprobación |
34
- | `icon` | Si **todos** los items de la barra lo llevan. | propuesta, falta aprobación |
33
+ | solo `label` | El caso normal. Una o dos palabras, sentence case. | canon (aprobado por el dueño, 05-10-2026, bloque B4) |
34
+ | `icon` | Si **todos** los items de la barra lo llevan. | canon (aprobado por el dueño, 05-10-2026, bloque B9) |
35
35
  | `rightIcon: 'arrow-down-s-line'` | El item abre un menú («Más ⌄»). El menú lo pones tú. | Figma |
36
36
  | `count` | Pendientes que piden acción («3» pedidos por aceptar). Número rojo. | Figma (notification=true) |
37
37
  | `badge` | Un «Nuevo» temporal en una sección recién lanzada. String = badge naranja `light` `small`. | Figma (badge=true) |
38
- | `href` | El item es un link: con ruta interna navega por el router; con `target="_blank"` abre otra pestaña con `rel` seguro. | propuesta, falta aprobación |
39
- | sin `href` | Es un `<button>`: navegas tú en `(clicked)`. | propuesta, falta aprobación |
38
+ | `href` | El item es un link: con ruta interna navega por el router; con `target="_blank"` abre otra pestaña con `rel` seguro. | según el código |
39
+ | sin `href` | Es un `<button>`: navegas tú en `(clicked)`. | según el código |
40
40
  | `active` | La sección actual (fondo gris, texto oscuro, ícono naranja y `aria-current="page"`). Uno solo por barra. | Figma (State=Active) |
41
41
 
42
42
  ## Tamaño en mobile y en web
@@ -46,7 +46,7 @@ topbar, que hoy es solo de escritorio.
46
46
 
47
47
  | uso | mobile | web | fuente |
48
48
  |---|---|---|---|
49
- | sección de la barra superior | no usar (no hay topbar en mobile) | tamaño único | propuesta, falta aprobación |
49
+ | sección de la barra superior | no usar (no hay topbar en mobile) | tamaño único | canon (aprobado por el dueño, 05-10-2026, bloque B7) |
50
50
 
51
51
  En mobile, 36 de alto queda por debajo del área táctil cómoda (44): si algún día se usa ahí, la
52
52
  barra tendría que darle más aire.
@@ -24,15 +24,15 @@ nombre y un menú (perfil, cambiar de rol, salir). Dentro de `sui-topbar` sale d
24
24
  ## Qué variante usar
25
25
 
26
26
  > **La guía del DS no tiene página de este chip.** Sale del Figma de SUI (User Profile [Topbar],
27
- > set 3814:24667: Default, Hover, Active). Uso medido el 03-10-2026: **0 usos** en la app. Lo de
28
- > abajo es **propuesta, falta aprobación**, salvo lo que es canon de la app.
27
+ > set 3814:24667: Default, Hover, Active). Uso medido el 03-10-2026: **0 usos** en la app. Las reglas
28
+ > marcadas canon están aprobadas (05-10-2026) y no queda ninguna en propuesta.
29
29
 
30
30
  | prop | cuándo | fuente |
31
31
  |---|---|---|
32
32
  | `avatar` (string) | La URL de la foto. Siempre de `avatarUrl`, nunca de `photoURL`. | canon (CLAUDE.md, «Fotos de otra persona») |
33
- | `avatar` (objeto) | Sin foto: `{ initials, color }` para que las iniciales tengan contraste. | propuesta, falta aprobación |
33
+ | `avatar` (objeto) | Sin foto: `{ initials, color }` con el color del rol: `orange` local, `green` repartidor, `blue` cliente. | canon (decisión del dueño, color de avatar sin foto por rol; README de `sui-avatar`, 03-10-2026) |
34
34
  | `name` | El nombre corto («Sophia», no el correo). Vacío = chip solo con la foto, para barras angostas. | Figma (name=false) |
35
- | `verified` | No usar hoy: la app no verifica cuentas de personas. | propuesta, falta aprobación |
35
+ | `verified` | No usar hoy: la app no verifica cuentas de personas. | canon (aprobado por el dueño, 05-10-2026, bloque B6) |
36
36
  | `open` | Mientras el menú de la cuenta está abierto (flecha hacia arriba, `aria-expanded`). | Figma (State=Active) |
37
37
 
38
38
  ## Tamaño en mobile y en web
@@ -42,7 +42,7 @@ topbar, que hoy es solo de escritorio.
42
42
 
43
43
  | uso | mobile | web | fuente |
44
44
  |---|---|---|---|
45
- | cuenta en la barra superior | no usar (en mobile la cuenta va en el cajón del sidebar) | con nombre | propuesta, falta aprobación |
45
+ | cuenta en la barra superior | no usar (en mobile la cuenta va en el cajón del sidebar) | con nombre | canon (aprobado por el dueño, 05-10-2026, bloque B7) |
46
46
 
47
47
  ## API
48
48
 
@@ -4105,8 +4105,8 @@ class SuiColorPicker {
4105
4105
  * Default `null` = sin valor seleccionado.
4106
4106
  */
4107
4107
  value = model(null, ...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
4108
- /** Label visible cuando no hay color seleccionado. */
4109
- placeholder = input('Elegir color', ...(ngDevMode ? [{ debugName: "placeholder" }] : /* istanbul ignore next */ []));
4108
+ /** Label visible cuando no hay color seleccionado. Imperativo con tuteo (dueño, 05-10-2026, P4 a). */
4109
+ placeholder = input('Elige un color', ...(ngDevMode ? [{ debugName: "placeholder" }] : /* istanbul ignore next */ []));
4110
4110
  /** Etiqueta de la sección Recommended Colors dentro del panel. */
4111
4111
  recommendedLabel = input('Colores recomendados', ...(ngDevMode ? [{ debugName: "recommendedLabel" }] : /* istanbul ignore next */ []));
4112
4112
  /** Si true, oculta el HSV spectrum + sliders + hex input — solo grid de presets. */
@@ -7296,8 +7296,9 @@ class SuiDatepicker {
7296
7296
  inline = input(false, ...(ngDevMode ? [{ debugName: "inline" }] : /* istanbul ignore next */ []));
7297
7297
  /** Alto del campo: small 36 · medium 40 (default) · large 48 · xlarge 52 con días de 44 (ver SuiDatepickerSize). */
7298
7298
  size = input('medium', ...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
7299
- /** Placeholder del input cuando no hay valor seleccionado. */
7300
- placeholder = input('Seleccionar fecha', ...(ngDevMode ? [{ debugName: "placeholder" }] : /* istanbul ignore next */ []));
7299
+ /** Placeholder del campo cuando no hay valor. Sin pasarlo: «Elige una fecha» (`date`) o
7300
+ * «Elige el período» (`range`), en imperativo con tuteo (dueño, 05-10-2026, P4 a). */
7301
+ placeholder = input(null, ...(ngDevMode ? [{ debugName: "placeholder" }] : /* istanbul ignore next */ []));
7301
7302
  /** Si true, muestra Cancel/Apply en el footer. Range siempre lo muestra. */
7302
7303
  showFooter = input(true, ...(ngDevMode ? [{ debugName: "showFooter" }] : /* istanbul ignore next */ []));
7303
7304
  disabled = input(false, ...(ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []));
@@ -7463,11 +7464,13 @@ class SuiDatepicker {
7463
7464
  /** Preset «Todo el tiempo» aplicado: su valor es `{ start: null, end: null }`,
7464
7465
  * igual que «nada elegido», así que se recuerda aparte para el trigger. */
7465
7466
  _todoElTiempoAplicado = signal(false, ...(ngDevMode ? [{ debugName: "_todoElTiempoAplicado" }] : /* istanbul ignore next */ []));
7467
+ /** El placeholder que se ve: el que se pasó o, si no, el de fábrica según `mode`. */
7468
+ resolvedPlaceholder = computed(() => this.placeholder() ?? (this.mode() === 'range' ? 'Elige el período' : 'Elige una fecha'), ...(ngDevMode ? [{ debugName: "resolvedPlaceholder" }] : /* istanbul ignore next */ []));
7466
7469
  /** Texto del trigger input. */
7467
7470
  triggerText = computed(() => {
7468
7471
  const v = this.value();
7469
7472
  if (!v)
7470
- return this.placeholder();
7473
+ return this.resolvedPlaceholder();
7471
7474
  if (v instanceof Date)
7472
7475
  return formatDateInput(v);
7473
7476
  if (v.start && v.end)
@@ -7477,12 +7480,12 @@ class SuiDatepicker {
7477
7480
  // Fix 04-10-2026: con «Todo el tiempo» el campo mostraba el placeholder,
7478
7481
  // como si estuviera vacío.
7479
7482
  if (this._todoElTiempoAplicado()) {
7480
- return this.presets().find(p => p.id === 'all-time')?.label ?? this.placeholder();
7483
+ return this.presets().find(p => p.id === 'all-time')?.label ?? this.resolvedPlaceholder();
7481
7484
  }
7482
- return this.placeholder();
7485
+ return this.resolvedPlaceholder();
7483
7486
  }, ...(ngDevMode ? [{ debugName: "triggerText" }] : /* istanbul ignore next */ []));
7484
7487
  /** ¿El trigger muestra un valor (no el placeholder)? Pinta el texto oscuro. */
7485
- hasDisplayValue = computed(() => this.triggerText() !== this.placeholder(), ...(ngDevMode ? [{ debugName: "hasDisplayValue" }] : /* istanbul ignore next */ []));
7488
+ hasDisplayValue = computed(() => this.triggerText() !== this.resolvedPlaceholder(), ...(ngDevMode ? [{ debugName: "hasDisplayValue" }] : /* istanbul ignore next */ []));
7486
7489
  /** Nombre del panel para el lector de pantalla (role dialog / group). */
7487
7490
  panelAriaLabel = computed(() => this.mode() === 'range' ? 'Elegir período' : 'Elegir fecha', ...(ngDevMode ? [{ debugName: "panelAriaLabel" }] : /* istanbul ignore next */ []));
7488
7491
  /** «martes 7 de octubre de 2026» para cada celda (antes «Día 7»). */
@@ -9630,7 +9633,8 @@ class SuiImageUpload {
9630
9633
  resolvedTitle = computed(() => {
9631
9634
  if (this.title())
9632
9635
  return this.title();
9633
- return this.shape() === 'circle' ? 'Subir foto' : 'Subir logo';
9636
+ // Imperativo con tuteo (dueño, 05-10-2026, P4 a).
9637
+ return this.shape() === 'circle' ? 'Sube tu foto' : 'Sube tu logo';
9634
9638
  }, ...(ngDevMode ? [{ debugName: "resolvedTitle" }] : /* istanbul ignore next */ []));
9635
9639
  resolvedSubtitle = computed(() => {
9636
9640
  if (this.subtitle())
@@ -19826,7 +19830,8 @@ class SuiTimePicker {
19826
19830
  hint = input(null, ...(ngDevMode ? [{ debugName: "hint" }] : /* istanbul ignore next */ []));
19827
19831
  errorMessage = input(null, ...(ngDevMode ? [{ debugName: "errorMessage" }] : /* istanbul ignore next */ []));
19828
19832
  error = input(false, ...(ngDevMode ? [{ debugName: "error" }] : /* istanbul ignore next */ []));
19829
- placeholder = input('Seleccionar hora', ...(ngDevMode ? [{ debugName: "placeholder" }] : /* istanbul ignore next */ []));
19833
+ /** Texto del campo sin hora. Imperativo con tuteo (dueño, 05-10-2026, P4 a). */
19834
+ placeholder = input('Elige una hora', ...(ngDevMode ? [{ debugName: "placeholder" }] : /* istanbul ignore next */ []));
19830
19835
  disabled = input(false, ...(ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []));
19831
19836
  /**
19832
19837
  * Alto del campo: small 36 · medium 40 (default) · large 48 (extensión SUI,