@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
@@ -45,9 +45,9 @@ de cambios de una versión.
45
45
 
46
46
  | valor | cuándo | ejemplo real de la app | fuente |
47
47
  |---|---|---|---|
48
- | `[leftIcon]="false"` | el caso normal: el título se explica solo | `pages/envios/envios.html:412` («Más detalles (opcional)») | propuesta |
48
+ | `[leftIcon]="false"` | el caso normal: el título se explica solo | `pages/envios/envios.html:412` («Más detalles (opcional)») | canon (aprobado por el dueño, 05-10-2026, bloque B9) |
49
49
  | `true` (default, `question-line`) | **solo** si el título es una pregunta de ayuda | `pages/driver/driver-profile/driver-profile.html:156` («¿Por qué no me llegan pedidos?») | propuesta |
50
- | un nombre de ícono | el ícono dice de qué es la sección y hay varias juntas | `pages/notifications/notifications.html:72` (`settings-3-line`) | propuesta |
50
+ | un nombre de ícono | el ícono dice de qué es la sección y hay varias juntas | `pages/notifications/notifications.html:72` (`settings-3-line`) | canon (aprobado por el dueño, 05-10-2026, bloque B9) |
51
51
 
52
52
  Hoy: 16 en `false`, 2 con el default (las dos son preguntas de ayuda) y 1 con ícono propio. El
53
53
  default del componente es el caso raro: **casi siempre hay que apagarlo**.
@@ -61,7 +61,7 @@ son preguntas y van sin ícono; las dos de ayuda dentro de la app, con. Elegir u
61
61
  | qué | cuándo | fuente |
62
62
  |---|---|---|
63
63
  | `description` | **una respuesta corta en texto** (FAQ): aparece al abrir, alineada con el título | según el Figma del DS |
64
- | contenido proyectado | cualquier otra cosa: campos, listas, cards, tablas | propuesta |
64
+ | contenido proyectado | cualquier otra cosa: campos, listas, cards, tablas | canon (aprobado por el dueño, 05-10-2026, bloque B9) |
65
65
 
66
66
  **A revisar:** 4 accordions pasan un **resumen** en `description` (`resumenReto()`,
67
67
  `resumenVotaciones()`, `resumenDetalles()`…) que, por cómo funciona el componente, **solo se ve
@@ -87,7 +87,7 @@ con el accordion abierto**. Si la idea era ver el resumen cerrado, hoy no se ve:
87
87
  | input | cuándo | fuente |
88
88
  |---|---|---|
89
89
  | `flipIcon="on"` | listas largas donde el «+» a la izquierda se escanea mejor que a la derecha. 0 usos hoy | según el Figma del DS (la variante existe) |
90
- | `badge` | marcar una sección como nueva o actualizada («Nuevo»). Extensión de SUI; 0 usos hoy | propuesta |
90
+ | `badge` | marcar una sección como nueva o actualizada («Nuevo»). Extensión de SUI; 0 usos hoy | canon (aprobado por el dueño, 05-10-2026, bloque B9) |
91
91
 
92
92
  ## Tamaño en mobile y en web
93
93
 
@@ -29,28 +29,28 @@ Regla corta: **quién hizo qué → activity feed · avisos para mí → notific
29
29
 
30
30
  > **La guía del DS no tiene página del activity feed.** El componente sale del Figma de SUI
31
31
  > (Activity Feed [1.1], frame 166035:46833). Uso medido el 03-10-2026 en `master-pedidos/src/app`:
32
- > **0 usos**. Todo lo de abajo es **propuesta, falta aprobación**.
32
+ > **0 usos**. Lo marcado canon está aprobado; lo que sigue en **propuesta** espera decisión.
33
33
 
34
34
  El tipo de fila lo decide `type` de cada item (una unión discriminada): lo que cuelga debajo de
35
35
  la línea de texto.
36
36
 
37
37
  | `type` | cuándo | ejemplo posible en la app | fuente |
38
38
  |---|---|---|---|
39
- | `default` | La acción se entiende sola con la línea. Es el caso normal. | «Ana aprobó la recarga de Luis» | propuesta, falta aprobación |
40
- | `file` | La acción dejó archivos que se pueden bajar. | «Luis subió su comprobante de Yape» | propuesta, falta aprobación |
41
- | `comment` | La acción fue escribir algo y el texto importa. | «El local dejó una nota en el pedido» | propuesta, falta aprobación |
42
- | `avatar-group` | La acción involucró a varias personas. | «Se asignaron 3 repartidores a la zona» | propuesta, falta aprobación |
43
- | `tasks` | La acción tuvo un resultado por partes (hechas, pendientes, con error). | «Se importó la carta: 40 productos, 2 con error» | propuesta, falta aprobación |
39
+ | `default` | La acción se entiende sola con la línea. Es el caso normal. | «Ana aprobó la recarga de Luis» | canon (aprobado por el dueño, 05-10-2026, bloque B2) |
40
+ | `file` | La acción dejó archivos que se pueden bajar. | «Luis subió su comprobante de Yape» | canon (aprobado por el dueño, 05-10-2026, bloque B2) |
41
+ | `comment` | La acción fue escribir algo y el texto importa. | «El local dejó una nota en el pedido» | canon (aprobado por el dueño, 05-10-2026, bloque B2) |
42
+ | `avatar-group` | La acción involucró a varias personas. | «Se asignaron 3 repartidores a la zona» | canon (aprobado por el dueño, 05-10-2026, bloque B2) |
43
+ | `tasks` | La acción tuvo un resultado por partes (hechas, pendientes, con error). | «Se importó la carta: 40 productos, 2 con error» | canon (aprobado por el dueño, 05-10-2026, bloque B2) |
44
44
 
45
45
  | pieza del item | regla | fuente |
46
46
  |---|---|---|
47
- | leading | `avatar` cuando lo hizo una persona; `icon` cuando lo hizo el sistema (una Cloud Function, un cobro automático). | propuesta, falta aprobación |
47
+ | leading | `avatar` cuando lo hizo una persona; `icon` cuando lo hizo el sistema (una Cloud Function, un cobro automático). | canon (aprobado por el dueño, 05-10-2026, bloque B9) |
48
48
  | `avatar.src` | La foto de **otra** persona va denormalizada y pasada por `fotoDeStorage()`, nunca la URL de Google. | canon (CLAUDE.md, «Fotos de otra persona») |
49
49
  | `avatar.color` | Para iniciales sin foto, `color` del set de SUI. `bgColor` solo como escape: no ajusta el color del texto. | canon del componente |
50
50
  | `userName` / `target` | Nombres, nunca IDs. | canon (CLAUDE.md, «Pasada de UX/UI»: un identificador nunca es el título de nada) |
51
- | `verb` | En pasado y en minúscula: «aprobó», «subió». | propuesta, falta aprobación |
52
- | `timestamp` | Relativo y corto: «hace 4 min», «ayer». Lo formateas tú. | propuesta, falta aprobación |
53
- | `showAction` | `false` salvo que haya un menú real detrás de los tres puntos. | propuesta, falta aprobación |
51
+ | `verb` | En pasado y en minúscula: «aprobó», «subió». | canon (aprobado por el dueño, 05-10-2026, bloque B4) |
52
+ | `timestamp` | Relativo y corto: «hace 4 min», «ayer». Lo formateas tú. | canon (aprobado por el dueño, 05-10-2026, bloque B4) |
53
+ | `showAction` | `false` salvo que haya un menú real detrás de los tres puntos. | canon (aprobado por el dueño, 05-10-2026, bloque B8) |
54
54
 
55
55
  **Carga:** un historial crece sin techo. Se pide por páginas con cursor (`getCollectionPage`
56
56
  ordenado por fecha) y un «Cargar más» al final, nunca la colección entera. Canon
@@ -136,7 +136,7 @@ interface SuiActivityTask { state: 'success' | 'warning' | 'pending' | 'error';
136
136
  <sui-card>
137
137
  <sui-activity-feed [items]="historial()" (fileDownload)="descargar($event.file)" />
138
138
  @if (hayMas()) {
139
- <sui-button variant="stroke" color="neutral" [size]="bp.isMobile() ? 'large' : 'small'"
139
+ <sui-button variant="stroke" color="neutral" [size]="bp.isMobile() ? 'large' : 'medium'"
140
140
  (click)="cargarMas()">Cargar más</sui-button>
141
141
  }
142
142
  </sui-card>
@@ -28,16 +28,16 @@ Regla corta: **filtros del activity feed → activity filter · cualquier otra l
28
28
 
29
29
  > **La guía del DS no tiene página de este filtro.** Sale del Figma de SUI (Activity Feed Selected
30
30
  > Filter [1.1], frame 165967:3881: Default, Hover, Active). Uso medido el 03-10-2026 en
31
- > `master-pedidos/src/app`: **0 usos**. Lo de abajo es **propuesta, falta aprobación**.
31
+ > `master-pedidos/src/app`: **0 usos**. Lo marcado canon está aprobado; lo que sigue en **propuesta** espera decisión.
32
32
 
33
33
  | prop | cuándo | fuente |
34
34
  |---|---|---|
35
35
  | `active` | El filtro que está aplicado (fondo naranja al 10 %, texto e ícono naranja). | Figma (State=Active) |
36
- | `icon` | Un ícono que diga el tipo: `file-list-2-line` archivos, `chat-3-line` comentarios, `task-line` tareas. | propuesta, falta aprobación |
37
- | `icon` en `null` | «Todos»: el chip que limpia el filtro va sin ícono. | propuesta, falta aprobación |
36
+ | `icon` | Un ícono que diga el tipo: `file-list-2-line` archivos, `chat-3-line` comentarios, `task-line` tareas. | canon (aprobado por el dueño, 05-10-2026, bloque B9) |
37
+ | `icon` en `null` | «Todos»: el chip que limpia el filtro va sin ícono. | canon (aprobado por el dueño, 05-10-2026, bloque B9) |
38
38
  | `disabled` | Un tipo que no tiene ninguna actividad en el rango elegido. Mejor que esconderlo: la fila no salta. | propuesta, falta aprobación (el disabled no está en el Figma) |
39
39
 
40
- ¿Uno o varios a la vez? El componente no lo decide. Propuesta: **uno a la vez, con «Todos»**,
40
+ ¿Uno o varios a la vez? El componente no lo decide. Canon (aprobado por el dueño, 05-10-2026, bloque B8): **uno a la vez, con «Todos»**,
41
41
  igual que `sui-tab-chips`; así nadie se queda con un historial vacío por combinar filtros.
42
42
 
43
43
  ## Tamaño en mobile y en web
@@ -46,7 +46,7 @@ igual que `sui-tab-chips`; así nadie se queda con un historial vacío por combi
46
46
 
47
47
  | uso | mobile | web | fuente |
48
48
  |---|---|---|---|
49
- | filtros del activity feed | no usar: 30 no llega al dedo; usar `sui-tab-chips` en `large` | `sui-activity-filter` | propuesta, falta aprobación |
49
+ | filtros del activity feed | no usar: 30 no llega al dedo; usar `sui-tab-chips` en `xlarge` (44) | `sui-activity-filter` | canon (aprobado por el dueño, 05-10-2026, bloque B13) |
50
50
 
51
51
  La fila de chips la arma la pantalla: el componente no trae contenedor ni scroll lateral.
52
52
 
@@ -25,7 +25,7 @@ Google Play, en ese orden.
25
25
  ## Qué variante usar
26
26
 
27
27
  > **La guía del DS no tiene página para este componente.** Todo lo de abajo es **canon (aprobado
28
- > por el dueño, 03-10-2026)** o propuesta. Los sellos son los oficiales de cada tienda (cada una
28
+ > por el dueño, 03-10-2026 o 05-10-2026)** o propuesta. Los sellos son los oficiales de cada tienda (cada una
29
29
  > pide usar el suyo tal cual, sin recolorear ni tocar el logo).
30
30
  >
31
31
  > Uso medido el 03-10-2026 en `master-pedidos/src/app`: 10 sellos en 4 archivos, sin contar
@@ -55,12 +55,12 @@ Google Play, en ese orden.
55
55
 
56
56
  | prop | cuándo | fuente |
57
57
  |---|---|---|
58
- | `height` (40, default) | 40 en desktop y en el footer. El ancho sale solo de la proporción de cada sello. | propuesta |
58
+ | `height` (40, default) | 40 en web; el footer en mobile va a 44. El ancho sale solo de la proporción de cada sello. | canon (aprobado por el dueño, 05-10-2026, bloque B13) |
59
59
  | `height` 48 | En el hero de una landing en mobile, si los sellos son el CTA principal. Los dos sellos siempre a la misma altura. | propuesta |
60
- | `href` | Siempre: el link de la ficha de la tienda (`apps.apple.com/pe/app/master-pedidos/…`, `play.google.com/store/apps/details?id=com.masterpedidos.app`). Sin `href` el sello no es un link. | propuesta (es la práctica de los 10 usos de hoy) |
61
- | `target="_blank"` | Siempre que hay `href`: el `rel="noopener"` se aplica solo en ese caso. | propuesta |
62
- | `ariaLabel` | Siempre, en español: «Descargar Master Pedidos en App Store». Sin él, el texto alternativo es genérico («Descargar en App Store», en español desde el 04-10-2026). | propuesta |
63
- | `disabled` | Sin caso: si la app no está en una tienda, no se muestra su sello. | propuesta |
60
+ | `href` | Siempre: el link de la ficha de la tienda (`apps.apple.com/pe/app/master-pedidos/…`, `play.google.com/store/apps/details?id=com.masterpedidos.app`). Sin `href` el sello no es un link. | canon (aprobado por el dueño, 05-10-2026, bloque B10) (es la práctica de los 10 usos de hoy) |
61
+ | `target="_blank"` | Siempre que hay `href`: el `rel="noopener"` se aplica solo en ese caso. | canon (aprobado por el dueño, 05-10-2026, bloque B10) |
62
+ | `ariaLabel` | Siempre, en español: «Descargar Master Pedidos en App Store». Sin él, el texto alternativo es genérico («Descargar en App Store», en español desde el 04-10-2026). | canon (aprobado por el dueño, 05-10-2026, bloque B5) |
63
+ | `disabled` | Sin caso: si la app no está en una tienda, no se muestra su sello. | canon (aprobado por el dueño, 05-10-2026, bloque B6) |
64
64
 
65
65
  ## Tamaño en mobile y en web
66
66
 
@@ -74,7 +74,7 @@ Regla del dueño, 03-10-2026.
74
74
  | uso | mobile | web | fuente |
75
75
  |---|---|---|---|
76
76
  | hero de una landing, cuando los sellos son el CTA | `[height]="48"` | `[height]="40"` | propuesta |
77
- | footer de las landings, «Descarga la app» | `[height]="44"` | `[height]="40"` (default) | propuesta |
77
+ | footer de las landings, «Descarga la app» | `[height]="44"` | `[height]="40"` (default) | mobile: canon (decisión del dueño 04-10-2026, piso táctil 44) · web: propuesta |
78
78
 
79
79
  ```html
80
80
  <sui-app-store-badge company="app-store" [height]="bp.isMobile() ? 48 : 40" href="…" target="_blank"
@@ -29,7 +29,7 @@ Regla corta: **es alguien → avatar · es una cosa → key-icon · son varios
29
29
 
30
30
  > **La guía del DS dice qué es y qué opciones tiene, no cuándo usar cada una.** Lo marcado
31
31
  > «según la guía del DS» sale de su texto o de su código publicado; lo marcado «canon» ya es
32
- > regla escrita del proyecto (`CLAUDE.md`); el resto es **propuesta, falta aprobación**.
32
+ > regla escrita del proyecto (`CLAUDE.md`) o lo aprobó el dueño; el resto es **propuesta, falta aprobación**.
33
33
  >
34
34
  > Uso medido el 04-10-2026 en `master-pedidos/src/app`: 55 avatares en los templates, sin contar
35
35
  > prototipos ni vitrinas (`master-preview`, `master-prototipos`, `mockup-sheets-*`, `dx/*`,
@@ -58,21 +58,21 @@ la foto falla al cargar, cae sola a las iniciales.
58
58
  |---|---|---|
59
59
  | foto (`src`) | Siempre que exista. Si es la foto **de otra persona**, es su `avatarUrl` de nuestro Storage, denormalizada en el documento por la Cloud Function y filtrada por `fotoDeStorage()`. **Nunca `photoURL` de Google**: solo carga en el navegador del dueño de esa cuenta. | canon (`CLAUDE.md`, «Fotos de otra persona») |
60
60
  | `initials` | Sin foto. Pasa el **nombre completo**: el componente saca las iniciales. | según la guía del DS |
61
- | `icon` | Solo para «todavía no hay nadie»: pedido sin repartidor (`e-bike-2-line`), envío sin destinatario (`user-3-line`). Va con `color="gray"`. Extensión de SUI. | propuesta |
61
+ | `icon` | Solo para «todavía no hay nadie»: pedido sin repartidor (`e-bike-2-line`), envío sin destinatario (`user-3-line`). Va con `color="gray"`. Extensión de SUI. | canon (aprobado por el dueño, 05-10-2026, bloque B3) |
62
62
  | silueta | Cae sola cuando no hay ni nombre. No se pide a propósito. | según la guía del DS |
63
63
 
64
64
  ### `size`
65
65
 
66
66
  | size | px | cuándo | ejemplo real de la app | fuente |
67
67
  |---|---|---|---|---|
68
- | `xs` | 20 | Pegado a un texto en la misma línea. | `components/sidebar/sidebar.html:77` (selector de local) · `pages/envios/envios.html:250` | propuesta |
69
- | `sm` | 24 | Chips y filas compactas. | `pages/driver/driver-dashboard/driver-dashboard.html:1047` (quién tomó el pedido) | propuesta |
70
- | `md` (default SUI) | 32 | Filas de listas y tablas. | `pages/super-admin/master-orders/master-orders.html:197` | propuesta |
71
- | `lg` | 40 | La tarjeta de una persona o de un local. | `pages/customer/order-tracking/order-tracking.html:348` (tu repartidor) | propuesta |
72
- | `xl` | 48 | Cabecera de un panel. | `pages/driver/driver-dashboard/driver-dashboard.html:19` (tu foto) | propuesta |
73
- | `2xl` | 56 | Cabecera de una ficha. | `pages/super-admin/master-users/master-user-sheet.html:21` | propuesta |
74
- | `3xl` | 64 | Tu propia foto al registrarte. | `pages/driver-onboarding/step-info/step-info.html:31` | propuesta |
75
- | `4xl` / `5xl` | 72 / 80 | No usar hoy (ver «No usar»). | — | propuesta |
68
+ | `xs` | 20 | Pegado a un texto en la misma línea. | `components/sidebar/sidebar.html:77` (selector de local) · `pages/envios/envios.html:250` | canon (aprobado por el dueño, 05-10-2026, bloque B1) |
69
+ | `sm` | 24 | Chips y filas compactas. | `pages/driver/driver-dashboard/driver-dashboard.html:1047` (quién tomó el pedido) | canon (aprobado por el dueño, 05-10-2026, bloque B1) |
70
+ | `md` (default SUI) | 32 | Filas de listas y tablas. | `pages/super-admin/master-orders/master-orders.html:197` | canon (aprobado por el dueño, 05-10-2026, bloque B1) |
71
+ | `lg` | 40 | La tarjeta de una persona o de un local. | `pages/customer/order-tracking/order-tracking.html:348` (tu repartidor) | canon (aprobado por el dueño, 05-10-2026, bloque B1) |
72
+ | `xl` | 48 | Cabecera de un panel. | `pages/driver/driver-dashboard/driver-dashboard.html:19` (tu foto) | canon (aprobado por el dueño, 05-10-2026, bloque B1) |
73
+ | `2xl` | 56 | Cabecera de una ficha. | `pages/super-admin/master-users/master-user-sheet.html:21` | canon (aprobado por el dueño, 05-10-2026, bloque B1) |
74
+ | `3xl` | 64 | Tu propia foto al registrarte. | `pages/driver-onboarding/step-info/step-info.html:31` | canon (aprobado por el dueño, 05-10-2026, bloque B1) |
75
+ | `4xl` / `5xl` | 72 / 80 | No usar hoy (ver «No usar»). | — | canon (aprobado por el dueño, 05-10-2026, bloque B1) |
76
76
 
77
77
  Hasta `md` (32 px) se ve **una** inicial; desde `lg` (40 px), dos. Es del Figma: en chico dos
78
78
  letras no entran.
@@ -113,11 +113,11 @@ logueada sigue en el default.
113
113
 
114
114
  | status | cuándo | fuente |
115
115
  |---|---|---|
116
- | `online` | Conectado **ahora** (repartidor en línea). No significa «cuenta activa». | propuesta (el valor es de la guía) |
117
- | `away` | En pausa: conectado pero sin recibir pedidos. | propuesta (el valor es de la guía) |
118
- | `busy` | Ocupado: ya lleva un pedido. | propuesta (el valor es de la guía) |
119
- | `offline` | Desconectado. Si en esa lista todos estarían `offline` casi siempre, mejor sin punto. | propuesta (el valor es de la guía) |
120
- | `company` | Repartidor propio de un local: el logo del local abajo (con `companyLogoSrc`). | propuesta (la guía lo muestra como «con logo de marca») |
116
+ | `online` | Conectado **ahora** (repartidor en línea). No significa «cuenta activa». | canon (aprobado por el dueño, 05-10-2026, bloque B2) (el valor es de la guía) |
117
+ | `away` | En pausa: conectado pero sin recibir pedidos. | canon (aprobado por el dueño, 05-10-2026, bloque B2) (el valor es de la guía) |
118
+ | `busy` | Ocupado: ya lleva un pedido. | canon (aprobado por el dueño, 05-10-2026, bloque B2) (el valor es de la guía) |
119
+ | `offline` | Desconectado. Si en esa lista todos estarían `offline` casi siempre, mejor sin punto. | canon (aprobado por el dueño, 05-10-2026, bloque B2) (el valor es de la guía) |
120
+ | `company` | Repartidor propio de un local: el logo del local abajo (con `companyLogoSrc`). | canon (aprobado por el dueño, 05-10-2026, bloque B2) (la guía lo muestra como «con logo de marca») |
121
121
 
122
122
  **Usos de hoy que rompen la regla: 2.** Los dos usan el punto para el **estado de la cuenta**,
123
123
  no para la presencia: `pages/settings/team/team.html:99` (activo/pendiente/inactivo →
@@ -128,9 +128,9 @@ online/away/offline, mapeo en `pages/settings/team/team.ts:99`) y `pages/employe
128
128
 
129
129
  | topBadge | cuándo | fuente |
130
130
  |---|---|---|
131
- | `verified` | Identidad revisada (repartidor aprobado). | propuesta (la guía muestra un sello de verificado arriba) |
132
- | `notification` | Tiene algo sin leer. | propuesta (el punto rojo arriba es de la guía) |
133
- | `favorite`, `pin`, `add`, `remove` | No usar hoy (ver «No usar»). | propuesta |
131
+ | `verified` | Identidad revisada (repartidor aprobado). | canon (aprobado por el dueño, 05-10-2026, bloque B2) (la guía muestra un sello de verificado arriba) |
132
+ | `notification` | Tiene algo sin leer. | canon (aprobado por el dueño, 05-10-2026, bloque B2) (el punto rojo arriba es de la guía) |
133
+ | `favorite`, `pin`, `add`, `remove` | No usar hoy (ver «No usar»). | canon (aprobado por el dueño, 05-10-2026, bloque B2) |
134
134
 
135
135
  Hoy no hay ningún `topBadge` en la app.
136
136
 
@@ -138,10 +138,10 @@ Hoy no hay ningún `topBadge` en la app.
138
138
 
139
139
  | input | cuándo | fuente |
140
140
  |---|---|---|
141
- | `alt` | **Siempre** el nombre de quien es. Con foto va en el `<img>`; con iniciales, ícono o silueta el host pasa a `role="img"` con `aria-label` = `alt` (desde el 04-10-2026; antes el lector leía la letra suelta). Sin `alt`, el lector no dice nada. | propuesta |
142
- | `companyLogoSrc` | Solo con `status="company"`. | propuesta |
143
- | `memojiSrc`, `illustrationSrc` | No usar hoy. | propuesta |
144
- | `bgColor` | No usar (ver abajo). | propuesta |
141
+ | `alt` | **Siempre** el nombre de quien es. Con foto va en el `<img>`; con iniciales, ícono o silueta el host pasa a `role="img"` con `aria-label` = `alt` (desde el 04-10-2026; antes el lector leía la letra suelta). Sin `alt`, el lector no dice nada. | canon (aprobado por el dueño, 05-10-2026, bloque B5) |
142
+ | `companyLogoSrc` | Solo con `status="company"`. | canon (aprobado por el dueño, 05-10-2026, bloque B6) |
143
+ | `memojiSrc`, `illustrationSrc` | No usar hoy. | canon (aprobado por el dueño, 05-10-2026, bloque B6) |
144
+ | `bgColor` | No usar (ver abajo). | canon (aprobado por el dueño, 05-10-2026, bloque B6) |
145
145
 
146
146
  **Usos de hoy sin `alt`: 9** (más uno decorativo que está bien sin él,
147
147
  `pages/super-admin/master-orders/master-orders.html:586`). Ejemplos:
@@ -168,7 +168,10 @@ disfrazado. Todos pasaron a `color` por rol.
168
168
  En mobile se lee y se toca con el dedo, así que va más grande; en web, más chico. En las
169
169
  pantallas que se usan en los dos (panel del local, super admin) se elige con el servicio de
170
170
  breakpoints de la app (`bp`, en `services/breakpoints.service.ts`); en las que solo existen en
171
- el celular (cliente, repartidor) va directo el valor de mobile. Todo es **propuesta**.
171
+ el celular (cliente, repartidor) va directo el valor de mobile. No se toca, así que la tablet va
172
+ con el valor de web, y el celular chico (< 380 px) también (D16).
173
+ Es **canon (dueño, 05-10-2026, P1 b)**: un paso más grande en el celular que en computadora, y
174
+ se migra todo ahora, no solo al tocar cada pantalla.
172
175
 
173
176
  | uso | mobile | web |
174
177
  |---|---|---|
@@ -23,7 +23,8 @@ conectados en una zona. Cada persona se ve chica; el grupo es lo que cuenta.
23
23
  ## Qué variante usar
24
24
 
25
25
  > **La guía del DS dice qué es y sus tamaños, no cuándo usarlo.** Lo marcado «según la guía
26
- > del DS» sale de su texto o de su código; el resto es **propuesta, falta aprobación**.
26
+ > del DS» sale de su texto o de su código; lo marcado «canon» ya lo aprobó el dueño; el resto es
27
+ > **propuesta, falta aprobación**.
27
28
  >
28
29
  > Uso medido el 03-10-2026 en `master-pedidos/src/app`: **0 usos directos**. En el DS no lo
29
30
  > monta ningún componente: `sui-table` solo lo nombra como contenido que se proyecta en una celda.
@@ -39,11 +40,11 @@ conectados en una zona. Cada persona se ve chica; el grupo es lo que cuenta.
39
40
 
40
41
  | input | valor | cuándo | fuente |
41
42
  |---|---|---|---|
42
- | `size` | `sm` (24) | Dentro de una fila: «los que tomaron pedidos hoy». | propuesta |
43
- | `size` | `md` (32, default SUI) | La card del equipo de un local. | propuesta |
44
- | `size` | `lg` (40) | La cabecera de un panel (repartidores en la zona). | propuesta |
45
- | `size` | `xs`, `xl` a `5xl` | No usar hoy: en `xs` el «+N» no se lee; desde `xl` ya no es un resumen. | propuesta |
46
- | `max` | `3` | Tres visibles y el «+N», como el ejemplo de la guía. El default de SUI es `4`. | propuesta |
43
+ | `size` | `sm` (24) | Dentro de una fila: «los que tomaron pedidos hoy». | canon (aprobado por el dueño, 05-10-2026, bloque B1) |
44
+ | `size` | `md` (32, default SUI) | La card del equipo de un local. | canon (aprobado por el dueño, 05-10-2026, bloque B1) |
45
+ | `size` | `lg` (40) | La cabecera de un panel (repartidores en la zona). | canon (aprobado por el dueño, 05-10-2026, bloque B1) |
46
+ | `size` | `xs`, `xl` a `5xl` | No usar hoy: en `xs` el «+N» no se lee; desde `xl` ya no es un resumen. | canon (aprobado por el dueño, 05-10-2026, bloque B1) |
47
+ | `max` | `3` | Tres visibles y el «+N», como el ejemplo de la guía. El default de SUI es `4`. | canon (aprobado por el dueño, 05-10-2026, bloque B1) |
47
48
  | `items` | — | Cada item es `{ src, initials, color, alt }`. Las reglas de foto y color son las de `sui-avatar`: la foto de otra persona es su `avatarUrl` de Storage, y el `color` va **siempre** explícito por rol (sin `color` el item cae a `slate`). | canon (`CLAUDE.md`, «Fotos de otra persona») · canon (aprobado por el dueño, 03-10-2026: naranja local, verde repartidor, azul cliente) |
48
49
 
49
50
  Usos de hoy que rompen la regla: **0** (no hay usos).
@@ -53,7 +54,10 @@ Usos de hoy que rompen la regla: **0** (no hay usos).
53
54
  En mobile se lee y se toca con el dedo, así que va más grande; en web, más chico. En las
54
55
  pantallas que se usan en los dos (panel del local, super admin) se elige con el servicio de
55
56
  breakpoints de la app (`bp`, en `services/breakpoints.service.ts`); en las que solo existen en
56
- el celular (cliente, repartidor) va directo el valor de mobile. Todo es **propuesta**.
57
+ el celular (cliente, repartidor) va directo el valor de mobile. No se toca, así que la tablet va
58
+ con el valor de web, y el celular chico (< 380 px) también (D16).
59
+ Es **canon (dueño, 05-10-2026, P1 b)**: un paso más grande en el celular que en computadora, y
60
+ se migra todo ahora, no solo al tocar cada pantalla.
57
61
 
58
62
  | uso | mobile | web |
59
63
  |---|---|---|
@@ -127,8 +127,8 @@ un paso más fuerte con texto **oscuro**; `filled` = fondo saturado con texto bl
127
127
  | eje | valor | cuándo | fuente |
128
128
  |---|---|---|---|
129
129
  | `size` | `small` (default, 16 px) | Lo normal. **Va en MAYÚSCULAS.** | según la guía del DS (mayúsculas y default) |
130
- | `size` | `small` | Una o dos palabras, justamente por las mayúsculas. | canon (aprobado por el dueño, 03-10-2026) |
131
- | `size` | `medium` (20 px) | Texto que no debe ir en mayúsculas (nombres, montos) o un badge que acompaña un título grande. | canon (aprobado por el dueño, 03-10-2026) |
130
+ | `size` | `small` | No usar: es chico (D16). Hasta el 05-10-2026 era el normal de web, en mayúsculas. | canon (dueño, 05-10-2026, D16); reemplaza la regla del 03-10-2026 |
131
+ | `size` | `medium` (20 px) | **Lo normal en la computadora, la tablet y el celular chico** (el badge no se toca), sin mayúsculas. En el celular, `large` o `xlarge` (ver «Tamaño»). | canon (dueño, 05-10-2026, D16); antes, canon del 03-10-2026 solo para nombres, montos y títulos grandes |
132
132
  | `type` | `number` | **Números**: queda cuadrado/circular. | según la guía del DS |
133
133
  | `type` | `number` | Va con `filled` cuando el conteo pide acción. | canon (aprobado por el dueño, 03-10-2026) |
134
134
  | `type` | `with-dot` | Un estado **vivo** que cambia solo (abierto, en línea, en curso). La guía lo muestra pero no dice cuándo. | canon (aprobado por el dueño, 03-10-2026) |
@@ -156,7 +156,7 @@ pedidos con muchos estados (`pages/orders/orders.html:113`) se quedan como badge
156
156
 
157
157
  ## Tamaño en mobile y en web
158
158
 
159
- En mobile el badge se lee de más lejos y al lado de textos de 16 px; en web va más chico.
159
+ En mobile el badge se lee de más lejos y al lado de textos de 16 px; en la computadora, la tablet y el celular chico va `medium`, un paso más chico (P1 b), y nunca `small` (D16).
160
160
  `large` (24) y `xlarge` (28) son extensión SUI del 03-10-2026.
161
161
 
162
162
  | size | alto | texto | ícono del slot |
@@ -175,16 +175,16 @@ canon (dueño, 04-10-2026):** el badge mantiene su escala propia 12 / 14 / 16 (`
175
175
 
176
176
  | uso | mobile | web | fuente |
177
177
  |---|---|---|---|
178
- | estado en una lista o card | `large` (24) | `small` (16, mayúsculas) | canon (aprobado por el dueño, 03-10-2026) |
179
- | junto a un título o un monto | `xlarge` (28) | `medium` (20) | propuesta, falta aprobación |
180
- | conteo (`type="number"`) | `large` (24) | `small` (16) | propuesta, falta aprobación |
178
+ | estado en una lista o card | `large` (24) | `medium` (20) | mobile: canon (aprobado por el dueño, 03-10-2026) · web: canon (dueño, 05-10-2026, D16), antes `small` (03-10-2026) · un paso de diferencia: canon (dueño, 05-10-2026, P1 b) |
179
+ | junto a un título o un monto | `xlarge` (28) | `medium` (20) | canon (dueño, 05-10-2026, P1 b) |
180
+ | conteo (`type="number"`) | `large` (24) | `medium` (20) | canon (dueño, 05-10-2026, P1 b); web `medium`: canon (dueño, 05-10-2026, D16) · antes de migrar, ver en captura que el contador de 24 no tape el ícono de la barra inferior |
181
181
 
182
182
  Patrón (`bp` = `BreakpointsService`, mobile hasta 767 px). Medido el 04-10-2026: solo 6 de los
183
183
  214 badges de la app lo aplican (`pages/customer/cart/cart.html:71`,
184
184
  `pages/customer/order-history/order-history.html:176`…); el resto va con `size` fijo:
185
185
 
186
186
  ```html
187
- <sui-badge [size]="bp.isMobile() ? 'large' : 'small'" …/>
187
+ <sui-badge [size]="bp.isMobile() ? 'large' : 'medium'" …/>
188
188
  ```
189
189
 
190
190
  ## API
@@ -44,7 +44,7 @@ puesto.
44
44
 
45
45
  > La guía del DS dice **para qué** es el banner, pero no cuándo va cada relleno ni cada tipo. Lo
46
46
  > marcado «según la guía del DS» sale de su texto o de sus ejemplos publicados; lo marcado
47
- > «canon» ya lo aprobó el dueño en el README de `sui-alert`; el resto es **propuesta** y falta su ok.
47
+ > «canon» ya lo aprobó el dueño (en el README de `sui-alert` o el 05-10-2026); el resto es **propuesta** y falta su ok.
48
48
  >
49
49
  > Uso medido el 03-10-2026 en `master-pedidos/src/app`, sin contar prototipos ni vitrinas
50
50
  > (`master-preview`, `master-prototipos`, `mockup-*`, `dx/*`, `_guia-*`, `master-rutina`,
@@ -67,10 +67,10 @@ Los mismos cinco tipos que `sui-alert`, con el mismo significado.
67
67
 
68
68
  | variant | cuándo | ejemplo real de la app | fuente |
69
69
  |---|---|---|---|
70
- | `info` (default) | Un dato de toda la app que conviene saber y no pide nada: hay una versión nueva, estás viendo datos de prueba. | (sin uso hoy) | propuesta (sigue la regla canon del alert) |
71
- | `success` | Un estado bueno que dura y afecta a todo: «Tu local ya está publicado». Si es la confirmación de un clic, es toast. | (sin uso hoy) | propuesta (sigue la regla canon del alert) |
72
- | `warning` | Hay que hacer algo pronto o lo que hagas tiene consecuencia para toda la cuenta: el plan vence, estás administrando un local que no es tuyo. | `components/subscription-banner/subscription-banner.html:5` («Tu plan vence en 3 días») · candidato: `components/impersonation-banner/impersonation-banner.ts:17` | propuesta (sigue la regla canon del alert) |
73
- | `error` | Algo ya pasó y afecta a toda la cuenta. | `components/subscription-banner/subscription-banner.html:5` («Tu plan venció») | propuesta (sigue la regla canon del alert) |
70
+ | `info` (default) | Un dato de toda la app que conviene saber y no pide nada: hay una versión nueva, estás viendo datos de prueba. | (sin uso hoy) | canon (aprobado por el dueño, 05-10-2026, bloque B3) (sigue la regla canon del alert) |
71
+ | `success` | Un estado bueno que dura y afecta a todo: «Tu local ya está publicado». Si es la confirmación de un clic, es toast. | (sin uso hoy) | canon (aprobado por el dueño, 05-10-2026, bloque B3) (sigue la regla canon del alert) |
72
+ | `warning` | Hay que hacer algo pronto o lo que hagas tiene consecuencia para toda la cuenta: el plan vence, estás administrando un local que no es tuyo. | `components/subscription-banner/subscription-banner.html:5` («Tu plan vence en 3 días») · candidato: `components/impersonation-banner/impersonation-banner.ts:17` | canon (aprobado por el dueño, 05-10-2026, bloque B3) (sigue la regla canon del alert) |
73
+ | `error` | Algo ya pasó y afecta a toda la cuenta. | `components/subscription-banner/subscription-banner.html:5` («Tu plan venció») | canon (aprobado por el dueño, 05-10-2026, bloque B3) (sigue la regla canon del alert) |
74
74
  | `feature` | Novedad que alcanza a toda la app. **Aquí es gris**, no morado como en el alert. | (sin uso hoy) | canon (decisión documentada en el `.ts`, recogida en el README del alert) |
75
75
 
76
76
  ### `variantStyle` — el peso visual
@@ -79,20 +79,20 @@ Misma pregunta que en el alert: **¿este aviso tiene que ganarle a todo lo demá
79
79
 
80
80
  | variantStyle | cuándo | ejemplo real de la app | fuente |
81
81
  |---|---|---|---|
82
- | `lighter` | El aviso **acompaña**: hay que tenerlo presente, pero se puede seguir trabajando. Es el caso normal. | `subscription-banner.html:7` en el caso «vence en N días» (hoy en `light`) | propuesta |
83
- | `filled` (default de la guía) | Hay que **actuar ya**, o la app está en un **modo que cambia lo que haces**: el plan venció, estás administrando otro local. Uno a la vez. | `subscription-banner.html:7` («Tu plan venció») | propuesta |
84
- | `light` | No usar hoy, como en el alert. **Cuándo sí:** un banner dentro de una zona ya teñida, donde `lighter` se pierde. | — | propuesta |
85
- | `stroke` (default SUI) | No usar hoy: un banner blanco con borde se confunde con la barra superior. **Cuándo sí:** arriba de una pantalla a sangre (un mapa o una foto), donde la banda blanca sí se distingue. | — | propuesta |
82
+ | `lighter` | El aviso **acompaña**: hay que tenerlo presente, pero se puede seguir trabajando. Es el caso normal. | `subscription-banner.html:7` en el caso «vence en N días» (hoy en `light`) | canon (aprobado por el dueño, 05-10-2026, bloque B2) |
83
+ | `filled` (default de la guía) | Hay que **actuar ya**, o la app está en un **modo que cambia lo que haces**: el plan venció, estás administrando otro local. Uno a la vez. | `subscription-banner.html:7` («Tu plan venció») | canon (aprobado por el dueño, 05-10-2026, bloque B2) |
84
+ | `light` | No usar hoy, como en el alert. **Cuándo sí:** un banner dentro de una zona ya teñida, donde `lighter` se pierde. | — | canon (aprobado por el dueño, 05-10-2026, bloque B2) |
85
+ | `stroke` (default SUI) | No usar hoy: un banner blanco con borde se confunde con la barra superior. **Cuándo sí:** arriba de una pantalla a sangre (un mapa o una foto), donde la banda blanca sí se distingue. | — | canon (aprobado por el dueño, 05-10-2026, bloque B2) |
86
86
 
87
87
  ### `dismissible`, `showIcon`, acción y título
88
88
 
89
89
  | prop | valor | cuándo | fuente |
90
90
  |---|---|---|---|
91
- | `dismissible` | `true` | Solo si el aviso se puede ignorar sin problema (versión nueva, novedad). La guía lo muestra en todos sus ejemplos. | según la guía del DS (que exista) · propuesta (cuándo) |
92
- | `dismissible` | `false` (default) | Todo `filled` y todo aviso que tiene que seguir ahí: plan vencido, administrando otro local. Cerrarlo no arregla nada. | propuesta |
93
- | `showIcon` | `true` (default) | Siempre: el ícono es la mitad del significado del tipo. | propuesta |
94
- | `showIcon` | `false` | No usar hoy. **Cuándo sí:** cuando se proyecta un avatar o logo en `slot="icon"` (ver abajo), que ya ocupa ese lugar. | propuesta |
95
- | `slot="icon"` | avatar o logo | Reemplaza al ícono del tipo: el logo del local que estás administrando. | propuesta |
91
+ | `dismissible` | `true` | Solo si el aviso se puede ignorar sin problema (versión nueva, novedad). La guía lo muestra en todos sus ejemplos. | según la guía del DS (que exista) · canon (aprobado por el dueño, 05-10-2026, bloque B8) (cuándo) |
92
+ | `dismissible` | `false` (default) | Todo `filled` y todo aviso que tiene que seguir ahí: plan vencido, administrando otro local. Cerrarlo no arregla nada. | canon (aprobado por el dueño, 05-10-2026, bloque B8) |
93
+ | `showIcon` | `true` (default) | Siempre: el ícono es la mitad del significado del tipo. | canon (aprobado por el dueño, 05-10-2026, bloque B9) |
94
+ | `showIcon` | `false` | No usar hoy. **Cuándo sí:** cuando se proyecta un avatar o logo en `slot="icon"` (ver abajo), que ya ocupa ese lugar. | canon (aprobado por el dueño, 05-10-2026, bloque B9) |
95
+ | `slot="icon"` | avatar o logo | Reemplaza al ícono del tipo: el logo del local que estás administrando. | canon (aprobado por el dueño, 05-10-2026, bloque B9) |
96
96
  | `slot="action"` | **un** `sui-link-button` `variant="modifiable"` con `[underline]="true"` | La única acción del banner: «Renovar plan», «Salir», «Actualizar». Nunca un `sui-button`, nunca dos. | según la guía del DS |
97
97
  | `title` | frase corta | Lo que pasa, en sentence case y sin punto final. | canon (copy de la app) |
98
98
  | `description` | complemento | Qué hacer o hasta cuándo. Una línea en web; en mobile se envuelve. | según la guía del DS (una línea) |
@@ -106,7 +106,7 @@ Misma pregunta que en el alert: **¿este aviso tiene que ganarle a todo lo demá
106
106
  - **Barra hecha a mano que es un banner — 1:** `components/impersonation-banner/impersonation-banner.ts:17`
107
107
  («Estás administrando … como super admin» + botón «Salir»), con `#fff` y `rgb()` sueltos. Pasaría a
108
108
  `<sui-banner variant="warning" variantStyle="filled">` con un link «Salir».
109
- - **Romperían la propuesta — 1 `light` → `lighter`:** `components/subscription-banner/subscription-banner.html:7`
109
+ - **Rompe el canon (aprobado por el dueño, 05-10-2026, bloque B2) — 1 `light` → `lighter`:** `components/subscription-banner/subscription-banner.html:7`
110
110
  (el caso «vence en N días»).
111
111
  - No confundir: `components/upgrade-banner/` (6 pantallas) se llama «banner» pero es un aviso dentro
112
112
  de una sección; su destino es `sui-alert`, ya anotado en `docs/CANON-SUI.md`.
@@ -25,8 +25,8 @@ Regla corta: **la marca es lo que se muestra → brand-logo · es un ícono más
25
25
 
26
26
  ## Qué variante usar
27
27
 
28
- > **La guía del DS no tiene página para este componente.** Todo es **propuesta, falta
29
- > aprobación**.
28
+ > **La guía del DS no tiene página para este componente.** Lo marcado canon está
29
+ > aprobado; lo que sigue en **propuesta** espera decisión.
30
30
  >
31
31
  > Uso medido el 03-10-2026 en `master-pedidos/src/app`: **0 usos directos**. Lo usan por dentro
32
32
  > `sui-content-card` (`type="brand"`), `sui-social-button`, `sui-content-label`,
@@ -37,10 +37,10 @@ Regla corta: **la marca es lo que se muestra → brand-logo · es un ícono más
37
37
 
38
38
  | valor | cuándo | fuente |
39
39
  |---|---|---|
40
- | `whatsapp` | Soporte y contacto con el negocio. | propuesta |
41
- | `google`, `apple` | Entrar con esa cuenta (vía `sui-social-button`). | propuesta |
42
- | `instagram`, `facebook` | Las redes del negocio o de la app. | propuesta |
43
- | las otras 23 (`adobe`, `notion`, `slack`, `stripe`…) | No usar hoy. | propuesta |
40
+ | `whatsapp` | Soporte y contacto con el negocio. | canon (aprobado por el dueño, 05-10-2026, bloque B2) |
41
+ | `google`, `apple` | Entrar con esa cuenta (vía `sui-social-button`). | canon (aprobado por el dueño, 05-10-2026, bloque B2) |
42
+ | `instagram`, `facebook` | Las redes del negocio o de la app. | canon (aprobado por el dueño, 05-10-2026, bloque B2) |
43
+ | las otras 23 (`adobe`, `notion`, `slack`, `stripe`…) | No usar hoy. | canon (aprobado por el dueño, 05-10-2026, bloque B2) |
44
44
 
45
45
  **No hay TikTok** en el catálogo (son 28 marcas), aunque la app hace publicidad ahí.
46
46
 
@@ -48,28 +48,28 @@ Regla corta: **la marca es lo que se muestra → brand-logo · es un ícono más
48
48
 
49
49
  | valor | cuándo | fuente |
50
50
  |---|---|---|
51
- | `original` (default) | El normal: sobre fondo claro, con su color oficial. | propuesta |
52
- | `white` | Sobre fondo oscuro o sobre foto. | propuesta |
53
- | `black` | No usar hoy. | propuesta |
51
+ | `original` (default) | El normal: sobre fondo claro, con su color oficial. | canon (aprobado por el dueño, 05-10-2026, bloque B2) |
52
+ | `white` | Sobre fondo oscuro o sobre foto. | canon (aprobado por el dueño, 05-10-2026, bloque B2) |
53
+ | `black` | No usar hoy. | canon (aprobado por el dueño, 05-10-2026, bloque B2) |
54
54
 
55
55
  ### `size`
56
56
 
57
57
  | valor | px | cuándo | fuente |
58
58
  |---|---|---|---|
59
- | `xs` | 16 | Dentro de un texto o de un tag. | propuesta |
60
- | `sm` | 20 | Dentro de un botón (lo usa `sui-social-button`). | propuesta |
61
- | `md` (default) | 24 | Fila de una lista. | propuesta |
62
- | `lg` | 32 | Tarjeta de contacto (el tamaño del Figma). | propuesta |
63
- | `xl` | 40 | Tarjeta grande. | propuesta |
64
- | `2xl` | 48 | Lo pide `sui-content-label` en tamaño grande. | propuesta |
59
+ | `xs` | 16 | Dentro de un texto o de un tag. | canon (aprobado por el dueño, 05-10-2026, bloque B1) |
60
+ | `sm` | 20 | Dentro de un botón (lo usa `sui-social-button`). | canon (aprobado por el dueño, 05-10-2026, bloque B1) |
61
+ | `md` (default) | 24 | Fila de una lista. | canon (aprobado por el dueño, 05-10-2026, bloque B1) |
62
+ | `lg` | 32 | Tarjeta de contacto (el tamaño del Figma). | canon (aprobado por el dueño, 05-10-2026, bloque B1) |
63
+ | `xl` | 40 | Tarjeta grande. | canon (aprobado por el dueño, 05-10-2026, bloque B1) |
64
+ | `2xl` | 48 | Lo pide `sui-content-label` en tamaño grande. | canon (aprobado por el dueño, 05-10-2026, bloque B1) |
65
65
 
66
66
  ### `href`, `target`, `rel`, `disabled`, `ariaLabel`
67
67
 
68
68
  | input | cuándo | fuente |
69
69
  |---|---|---|
70
- | `href` + `target="_blank"` | El logo lleva a la red social. `rel` ya viene en `noopener noreferrer`. | propuesta |
71
- | `ariaLabel` | Con `href`, siempre: «Síguenos en Instagram». Sin `href`, el default («Logo de Instagram») alcanza. | propuesta |
72
- | `disabled` | No usar hoy. | propuesta |
70
+ | `href` + `target="_blank"` | El logo lleva a la red social. `rel` ya viene en `noopener noreferrer`. | canon (aprobado por el dueño, 05-10-2026, bloque B10) |
71
+ | `ariaLabel` | Con `href`, siempre: «Síguenos en Instagram». Sin `href`, el default («Logo de Instagram») alcanza. | canon (aprobado por el dueño, 05-10-2026, bloque B10) |
72
+ | `disabled` | No usar hoy. | canon (aprobado por el dueño, 05-10-2026, bloque B10) |
73
73
 
74
74
  Usos de hoy que rompen la regla: **0**.
75
75
 
@@ -78,12 +78,13 @@ Usos de hoy que rompen la regla: **0**.
78
78
  En mobile se lee y se toca con el dedo, así que va más grande; en web, más chico. En las
79
79
  pantallas que se usan en los dos (panel del local, super admin) se elige con el servicio de
80
80
  breakpoints de la app (`bp`, en `services/breakpoints.service.ts`); en las que solo existen en
81
- el celular (cliente, repartidor) va directo el valor de mobile. Todo es **propuesta**.
81
+ el celular (cliente, repartidor) va directo el valor de mobile. Todo es **propuesta**, salvo lo
82
+ marcado canon.
82
83
 
83
- | uso | mobile | web |
84
- |---|---|---|
85
- | tarjeta de contacto, fila | `lg` (32) | `md` (24) |
86
- | como link (con `href`, se toca) | `2xl` (48) | `lg` (32) |
84
+ | uso | mobile | web | fuente |
85
+ |---|---|---|---|
86
+ | tarjeta de contacto, fila | `lg` (32) | `md` (24) | canon (dueño, 05-10-2026, P1 b) |
87
+ | como link (con `href`, se toca) | `2xl` (48) | `lg` (32) | mobile: canon (decisión del dueño 04-10-2026, piso táctil 44: `2xl` es el único size que llega) · web: propuesta |
87
88
 
88
89
  ```html
89
90
  <sui-brand-logo company="instagram" [size]="bp.isMobile() ? '2xl' : 'lg'" [href]="url" target="_blank"
@@ -31,11 +31,11 @@ desplegable al lado o un separador propio. Hoy no hay ningún caso.
31
31
  | input | valor | cuándo | fuente |
32
32
  |---|---|---|---|
33
33
  | `label` | texto | El nombre del nivel. | según la guía del DS |
34
- | `icon` | nombre RemixIcon | Solo el primer nivel (inicio), y con `ariaLabel` si va sin texto. | según la guía del DS (el ícono existe); el cuándo es propuesta |
34
+ | `icon` | nombre RemixIcon | Solo el primer nivel (inicio), y con `ariaLabel` si va sin texto. | según la guía del DS (el ícono existe); el cuándo: canon (aprobado por el dueño, 05-10-2026, bloque B9) |
35
35
  | `href` | ruta | Con ruta: dibuja un `<a>`; una ruta interna (`/…`) navega con el router sin recargar. | según la guía del DS (como enlace) |
36
36
  | `href` | vacío | Dibuja un `<button>` y avisa por `(clicked)`. | según el código |
37
37
  | `active` | `true` | La página actual: no es clicable, va en negro y lleva `aria-current="page"`. | según la guía del DS |
38
- | `ariaLabel` | texto | Obligatorio cuando va solo el ícono. | propuesta, falta aprobación |
38
+ | `ariaLabel` | texto | Obligatorio cuando va solo el ícono. | canon (aprobado por el dueño, 05-10-2026, bloque B5) |
39
39
 
40
40
  Usos de hoy que rompen las reglas: **0** (no se usa).
41
41
 
@@ -46,7 +46,7 @@ no se usa en mobile.
46
46
 
47
47
  | uso | mobile | web | fuente |
48
48
  |---|---|---|---|
49
- | miga | no se usa | el componente (dentro de `sui-breadcrumbs`) | propuesta, falta aprobación |
49
+ | miga | no se usa | el componente (dentro de `sui-breadcrumbs`) | canon (aprobado por el dueño, 05-10-2026, bloque B7) |
50
50
 
51
51
  ```html
52
52
  @if (!bp.isMobile()) { <sui-breadcrumbs [items]="ruta()" /> }
@@ -38,17 +38,17 @@ Regla corta: **3+ niveles en web → breadcrumbs · mobile o 1-2 niveles → fle
38
38
  | divider | cuándo | fuente |
39
39
  |---|---|---|
40
40
  | `arrow` (default) | Siempre en la app. | según la guía del DS (es su default) |
41
- | `slash` | No: misma función que la flecha; dos estilos en la misma app se leen como dos cosas. | según la guía del DS (la forma existe); el no es propuesta |
42
- | `dot` | No: el punto separa metadatos («12 min · S/ 4.50»), no niveles. Extensión de SUI. | propuesta, falta aprobación |
41
+ | `slash` | No: misma función que la flecha; dos estilos en la misma app se leen como dos cosas. | según la guía del DS (la forma existe); el no: canon (aprobado por el dueño, 05-10-2026, bloque B6) |
42
+ | `dot` | No: el punto separa metadatos («12 min · S/ 4.50»), no niveles. Extensión de SUI. | canon (aprobado por el dueño, 05-10-2026, bloque B6) |
43
43
 
44
44
  ### Ítems (`items`)
45
45
 
46
46
  | qué | cuándo | fuente |
47
47
  |---|---|---|
48
48
  | `label` | Siempre el nombre real del nivel («Hamburguesas», no «Categoría»). Un id nunca es el nombre. | canon (CLAUDE.md, «un identificador nunca es el título de nada») |
49
- | `href` | Cada nivel anterior con su ruta interna (`/empresa/productos`): navega con el router, sin recargar. | propuesta, falta aprobación |
50
- | sin `href` + `(navigate)` | Cuando volver no es una ruta (cerrar un panel, limpiar un filtro). | propuesta, falta aprobación |
51
- | `icon` solo en el primero | El inicio como casa (`home-5-line`) con `ariaLabel`. | según la guía del DS (ítems con ícono); el cuándo es propuesta |
49
+ | `href` | Cada nivel anterior con su ruta interna (`/empresa/productos`): navega con el router, sin recargar. | canon (aprobado por el dueño, 05-10-2026, bloque B10) |
50
+ | sin `href` + `(navigate)` | Cuando volver no es una ruta (cerrar un panel, limpiar un filtro). | canon (aprobado por el dueño, 05-10-2026, bloque B10) |
51
+ | `icon` solo en el primero | El inicio como casa (`home-5-line`) con `ariaLabel`. | según la guía del DS (ítems con ícono); el cuándo: canon (aprobado por el dueño, 05-10-2026, bloque B9) |
52
52
  | `active` | No hace falta: el último ya es el activo. Solo si la página actual no va al final (raro). | según el código |
53
53
 
54
54
  Usos de hoy que rompen las reglas: **0** (no se usa).
@@ -59,7 +59,7 @@ Alto fijo de **20 px** (texto 14, ícono 20), sin `size`. **No tiene tamaño par
59
59
 
60
60
  | uso | mobile | web | fuente |
61
61
  |---|---|---|---|
62
- | ruta de 3+ niveles | no se usa: flecha de volver | `sui-breadcrumbs` | propuesta, falta aprobación |
62
+ | ruta de 3+ niveles | no se usa: flecha de volver | `sui-breadcrumbs` | canon (aprobado por el dueño, 05-10-2026, bloque B7) |
63
63
 
64
64
  ```html
65
65
  @if (!bp.isMobile()) {
@@ -98,9 +98,9 @@ Uso medido el 04-10-2026: 123 `large`, 93 `small`, 58 `medium` (5 por default),
98
98
  | size | cuándo | fuente |
99
99
  |---|---|---|
100
100
  | `large` (48 px) | Footers de modal y CTA táctiles en mobile. | ya es canon (default de sui-modal-footer); extensión de SUI, la guía no lo tiene |
101
- | `medium` (40 px, default) | CTA en desktop y formularios. | default según la guía del DS; el «cuándo» es propuesta |
102
- | `small` (36) / `xsmall` (32) | Acciones dentro de cards, filas y cabeceras de sección. | escala según la guía del DS; el «cuándo» es propuesta |
103
- | `2xsmall` (28) | Acciones de ícono en tablas y filas densas. Si el espacio es de verdad chico, mirar antes `sui-compact-button`. | escala según la guía del DS; el «cuándo» es propuesta |
101
+ | `medium` (40 px, default) | Todo botón en la computadora: CTA, formularios, acciones de cards, filas, cabeceras y tablas. En el celular chico (< 380 px), a la vista, con el área de 44. La tablet va como el celular. | default según la guía del DS; el «cuándo»: canon (aprobado por el dueño, 05-10-2026, bloque B1) y, para filas, cabeceras y tablas, canon (dueño, 05-10-2026, D16); solo en web (en el teléfono manda el piso táctil de 44) |
102
+ | `small` (36) / `xsmall` (32) | No usar: son chicos. Las acciones de cards, filas y cabeceras van en `medium` en web y `large` en el teléfono. | escala según la guía del DS; no usarlos: canon (dueño, 05-10-2026, D16), reemplaza el «cuándo» del bloque B13 |
103
+ | `2xsmall` (28) | No usar: es chico. Las acciones de ícono en tablas van en `medium` `onlyIcon`; si de verdad no entra, `sui-compact-button`. | escala según la guía del DS; no usarlo: canon (dueño, 05-10-2026, D16), reemplaza el «cuándo» del bloque B13 |
104
104
  | `xlarge` (52) | Extensión de SUI. Sin uso hoy. | canon (aprobado por el dueño, 03-10-2026) |
105
105
 
106
106
  En la app el patrón responsive ya es `[size]="bp.isMobile() ? 'large' : 'medium'"` (o
@@ -127,13 +127,15 @@ flujo nuevo cae en la columna de la derecha, se usa (aprobado por el dueño, 03-
127
127
  ## Tamaño en mobile y en web
128
128
 
129
129
  En mobile se toca con el dedo: **44 px como mínimo** (piso táctil, canon del dueño 04-10-2026) y 48
130
- en la acción principal. En web, 28–40.
130
+ en la acción principal. En la computadora, `medium` (40); la tablet va como el celular; en el celular chico
131
+ (< 380 px), `medium` a la vista con el área de 44. Nada en `small`, `xsmall` ni `2xsmall` (canon, dueño,
132
+ 05-10-2026, D16).
131
133
 
132
134
  | uso | mobile | web | fuente |
133
135
  |---|---|---|---|
134
136
  | acción principal de la pantalla o footer de modal | `large` (48) | `medium` (40) | canon (aprobado por el dueño, 03-10-2026) (footer de modal siempre `large`) |
135
- | acción dentro de una card o una fila | `large` (48) | `small` (36) / `xsmall` (32) | canon (dueño, 04-10-2026): piso táctil 44 en el teléfono — antes `medium` (40), que no llega |
136
- | acción en una tabla densa | — (no hay tablas en mobile) | `2xsmall` (28) | canon (aprobado por el dueño, 03-10-2026) |
137
+ | acción dentro de una card o una fila | `large` (48) | `medium` (40) | mobile: canon (dueño, 04-10-2026): piso táctil 44 en el teléfono — antes `medium` (40), que no llega · web: canon (dueño, 05-10-2026, D16), antes `small` / `xsmall` |
138
+ | acción en una tabla | — (no hay tablas en mobile) | `medium` (40) | canon (dueño, 05-10-2026, D16), antes `2xsmall` (03-10-2026) |
137
139
  | CTA de landing | `xlarge` (52) | `large` (48) | propuesta, falta aprobación |
138
140
 
139
141
  Patrón (`bp` = `BreakpointsService`, mobile hasta 767 px). Medido el 04-10-2026: 9 `sui-button` con este
@@ -247,6 +249,6 @@ interface SuiFooterButtonConfig {
247
249
  </sui-button>
248
250
 
249
251
  <!-- Solo ícono -->
250
- <sui-button variant="ghost" color="neutral" size="2xsmall" leftIcon="pencil-line" [onlyIcon]="true"
252
+ <sui-button variant="ghost" color="neutral" [size]="bp.isMobile() ? 'large' : 'medium'" leftIcon="pencil-line" [onlyIcon]="true"
251
253
  aria-label="Editar" (click)="editar()" />
252
254
  ```