@ajuarezso/sui-design-system 0.21.0 → 0.23.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/docs/INDEX.md +30 -35
- package/docs/sui-accordion/README.md +171 -0
- package/docs/sui-activity-feed/README.md +154 -0
- package/docs/sui-activity-filter/README.md +100 -0
- package/docs/sui-alert/README.md +28 -19
- package/docs/sui-app-store-badge/README.md +5 -4
- package/docs/sui-avatar/README.md +16 -16
- package/docs/sui-avatar-group/README.md +4 -4
- package/docs/sui-badge/README.md +27 -9
- package/docs/sui-banner/README.md +10 -9
- package/docs/sui-brand-logo/README.md +3 -3
- package/docs/sui-breadcrumbs/README.md +1 -1
- package/docs/sui-button/README.md +64 -21
- package/docs/sui-button-group/README.md +6 -4
- package/docs/sui-button-group-item/README.md +3 -3
- package/docs/sui-card/README.md +17 -19
- package/docs/sui-chart-legend/README.md +8 -7
- package/docs/sui-checkbox/README.md +11 -6
- package/docs/sui-checkbox-card/README.md +24 -19
- package/docs/sui-checkbox-label/README.md +32 -10
- package/docs/sui-circular-progress-bar/README.md +2 -0
- package/docs/sui-color-dot/README.md +1 -1
- package/docs/sui-color-picker/README.md +22 -7
- package/docs/sui-command-menu-footer/README.md +100 -0
- package/docs/sui-command-menu-item/README.md +140 -0
- package/docs/sui-command-menu-search/README.md +105 -0
- package/docs/sui-compact-avatar-group/README.md +4 -3
- package/docs/sui-compact-button/README.md +41 -44
- package/docs/sui-compact-select/README.md +12 -5
- package/docs/sui-compact-select-for-input/README.md +5 -2
- package/docs/sui-content-card/README.md +6 -5
- package/docs/sui-content-divider/README.md +4 -4
- package/docs/sui-content-label/README.md +11 -6
- package/docs/sui-counter-input/README.md +21 -17
- package/docs/sui-date-selector/README.md +16 -12
- package/docs/sui-datepicker/README.md +46 -28
- package/docs/sui-day-cell/README.md +17 -8
- package/docs/sui-day-label/README.md +2 -2
- package/docs/sui-divider/README.md +5 -5
- package/docs/sui-drawer-footer/README.md +19 -5
- package/docs/sui-dropdown-caption/README.md +92 -0
- package/docs/sui-dropdown-item/README.md +163 -0
- package/docs/sui-dropdown-menu/README.md +196 -0
- package/docs/sui-dropdown-search/README.md +113 -0
- package/docs/sui-emoji/README.md +6 -6
- package/docs/sui-empty-state/README.md +13 -23
- package/docs/sui-fancy-button/README.md +24 -18
- package/docs/sui-file-icon/README.md +1 -1
- package/docs/sui-file-upload/README.md +3 -0
- package/docs/sui-file-upload-card/README.md +8 -7
- package/docs/sui-filter/README.md +181 -0
- package/docs/sui-flag/README.md +3 -2
- package/docs/sui-form-hint/README.md +12 -8
- package/docs/sui-form-label/README.md +11 -16
- package/docs/sui-href/README.md +85 -0
- package/docs/sui-icon/README.md +4 -3
- package/docs/sui-image-upload/README.md +28 -16
- package/docs/sui-img-retry/README.md +107 -0
- package/docs/sui-inline-input/README.md +7 -6
- package/docs/sui-inline-select/README.md +8 -5
- package/docs/sui-input/README.md +27 -33
- package/docs/sui-integration-switch/README.md +14 -7
- package/docs/sui-kbd/README.md +4 -4
- package/docs/sui-key-icon/README.md +6 -2
- package/docs/sui-link-button/README.md +21 -17
- package/docs/sui-modal/README.md +238 -0
- package/docs/sui-modal-footer/README.md +178 -0
- package/docs/sui-modal-header/README.md +115 -0
- package/docs/sui-modal-sheet/README.md +170 -0
- package/docs/sui-notification/README.md +8 -6
- package/docs/sui-notification-footer/README.md +2 -2
- package/docs/sui-notification-tab-menu/README.md +5 -3
- package/docs/sui-page-header/README.md +123 -0
- package/docs/sui-pagination/README.md +8 -5
- package/docs/sui-password-strength/README.md +1 -1
- package/docs/sui-period-range/README.md +18 -14
- package/docs/sui-popover/README.md +13 -7
- package/docs/sui-product-card/README.md +14 -10
- package/docs/sui-progress-bar/README.md +4 -2
- package/docs/sui-progress-bar-label/README.md +2 -0
- package/docs/sui-radio/README.md +14 -7
- package/docs/sui-radio-card/README.md +12 -12
- package/docs/sui-radio-label/README.md +36 -11
- package/docs/sui-rating/README.md +28 -9
- package/docs/sui-rich-editor/README.md +3 -3
- package/docs/sui-segmented-control/README.md +33 -19
- package/docs/sui-select/README.md +40 -33
- package/docs/sui-sidebar/README.md +216 -0
- package/docs/sui-slider/README.md +7 -0
- package/docs/sui-social-button/README.md +24 -11
- package/docs/sui-status-badge/README.md +7 -3
- package/docs/sui-stepper/README.md +30 -17
- package/docs/sui-store-card/README.md +9 -4
- package/docs/sui-switch/README.md +16 -11
- package/docs/sui-switch-card/README.md +18 -16
- package/docs/sui-switch-label/README.md +25 -11
- package/docs/sui-tab-chips/README.md +56 -39
- package/docs/sui-tab-menu-horizontal/README.md +19 -11
- package/docs/sui-tab-menu-vertical/README.md +10 -5
- package/docs/sui-table/README.md +264 -0
- package/docs/sui-tag/README.md +25 -11
- package/docs/sui-tag-input/README.md +25 -12
- package/docs/sui-textarea/README.md +23 -20
- package/docs/sui-time-picker/README.md +39 -30
- package/docs/sui-toast/README.md +27 -22
- package/docs/sui-tooltip/README.md +14 -17
- package/docs/sui-topbar/README.md +153 -0
- package/docs/sui-topbar-button/README.md +95 -0
- package/docs/sui-topbar-item/README.md +97 -0
- package/docs/sui-topbar-user/README.md +83 -0
- package/fesm2022/ajuarezso-sui-design-system.mjs +1076 -242
- package/fesm2022/ajuarezso-sui-design-system.mjs.map +1 -1
- package/package.json +1 -1
- package/types/ajuarezso-sui-design-system.d.ts +616 -280
package/docs/sui-alert/README.md
CHANGED
|
@@ -20,9 +20,11 @@ el motivo por el que se canceló un pedido.
|
|
|
20
20
|
|
|
21
21
|
- Confirmar que una acción salió bien («Producto guardado»): eso es `sui-toast`. Un alert que
|
|
22
22
|
hay que cerrar a mano para decir «guardado» estorba.
|
|
23
|
-
- Algo que afecta a toda la app (
|
|
23
|
+
- Algo que afecta a toda la app (modo demo, versión nueva, plan vencido): `sui-banner`. Si
|
|
24
|
+
impide usarla (sin conexión), ni alert ni banner: un `sui-modal` o una pantalla propia (ver `sui-banner`).
|
|
24
25
|
- La ayuda de un solo campo de formulario: `sui-form-hint`.
|
|
25
|
-
- Decorar.
|
|
26
|
+
- Decorar. El lector de pantalla lo anuncia apenas aparece (`role="alert"` en error y warning,
|
|
27
|
+
`role="status"` en el resto).
|
|
26
28
|
|
|
27
29
|
Regla corta: **contexto → alert · toda la app → banner · efímero → toast · bandeja → notification.**
|
|
28
30
|
|
|
@@ -59,35 +61,35 @@ El alert tiene **dos ejes** y se eligen por separado: `variant` dice **qué tipo
|
|
|
59
61
|
### `variantStyle` — el peso visual (lo que más se confunde)
|
|
60
62
|
|
|
61
63
|
Hoy cada tipo de mensaje se reparte casi mitad y mitad: 59 `filled`, 54 `lighter`, 2 `stroke` y
|
|
62
|
-
2 que cambian según el caso. No hay criterio, y la guía tampoco lo da. La regla
|
|
64
|
+
2 que cambian según el caso. No hay criterio, y la guía tampoco lo da. La regla sale
|
|
63
65
|
de la jerarquía: `filled` es un bloque de color saturado con texto blanco y compite con el
|
|
64
66
|
botón principal; `lighter` es un fondo pálido con texto oscuro y acompaña sin taparlo.
|
|
65
67
|
|
|
66
68
|
| variantStyle | cuándo | ejemplo real de la app | fuente |
|
|
67
69
|
|---|---|---|---|
|
|
68
70
|
| `lighter` (default SUI) | El aviso **acompaña** al contenido: explica, da contexto, advierte sin frenar. También los errores de formulario que se corrigen ahí mismo. Es el caso normal. | `pages/orders/orders.html:281` («Recojo en tienda») · `pages/auth/login/login.html:31` (error de login) | canon (aprobado por el dueño, 03-10-2026) |
|
|
69
|
-
| `filled` (default de la guía) | El aviso **es lo principal del momento** y hay que leerlo antes de actuar: la persona no puede seguir, va a hacer algo que no se deshace, o el resultado es final (cancelado, rechazado). Uno por pantalla como máximo. | `pages/mi-negocio/mi-negocio.html:
|
|
71
|
+
| `filled` (default de la guía) | El aviso **es lo principal del momento** y hay que leerlo antes de actuar: la persona no puede seguir, va a hacer algo que no se deshace, o el resultado es final (cancelado, rechazado). Uno por pantalla como máximo. | `pages/mi-negocio/mi-negocio.html:1257` («Se eliminará permanentemente») · `pages/customer/order-tracking/order-tracking.html:194` («Pedido cancelado») | canon (aprobado por el dueño, 03-10-2026) |
|
|
70
72
|
| `light` | No usar hoy: queda a medio camino entre los dos de arriba (0 usos). **Cuándo sí:** un aviso dentro de una superficie ya teñida (un banner de color) donde `lighter` se pierde. | — | canon (aprobado por el dueño, 03-10-2026) |
|
|
71
73
|
| `stroke` | Solo sobre una **superficie flotante** o encima de un mapa o una foto, donde un fondo pálido no se lee. | (sin uso correcto hoy) | canon (aprobado por el dueño, 03-10-2026) |
|
|
72
74
|
| `stroke-dark` | Igual que `stroke`, en oscuro. Default del toast. Extensión de SUI: la guía no lo tiene. | `sui-toast/sui-toast.service.ts:92` del DS | canon (aprobado por el dueño, 03-10-2026) |
|
|
73
75
|
|
|
74
|
-
**Usos de hoy que
|
|
76
|
+
**Usos de hoy que rompen la regla:**
|
|
75
77
|
|
|
76
78
|
- **24 `filled` que solo informan → `lighter`.** Los 22 `info filled` y los 5 `success filled`,
|
|
77
|
-
menos los 3 que sí frenan (`pages/promociones/promociones.html:
|
|
79
|
+
menos los 3 que sí frenan (`pages/promociones/promociones.html:107` «No disponible en tu plan»,
|
|
78
80
|
`pages/drivers/add-driver/add-driver.html:21`, `pages/super-admin/master-orders/master-orders.html:714`
|
|
79
81
|
«Ningún repartidor disponible»). Ejemplos: `pages/driver/driver-earnings/driver-earnings.html:18`
|
|
80
82
|
(«Cobras por cada entrega»), `pages/driver/driver-wallet/driver-wallet.html:12`,
|
|
81
|
-
`pages/customer/store-browser/store-browser.html:
|
|
83
|
+
`pages/customer/store-browser/store-browser.html:576` («Tu local fue aprobado»).
|
|
82
84
|
- **5 `warning filled` que no frenan nada → `lighter`:** `pages/super-admin/master-roles/master-roles.html:6`,
|
|
83
|
-
`pages/driver/driver-schedule/driver-schedule.html:12` y `:40`, `pages/customer/favorites/favorites.html:
|
|
85
|
+
`pages/driver/driver-schedule/driver-schedule.html:12` y `:40`, `pages/customer/favorites/favorites.html:96`,
|
|
84
86
|
`pages/customer/order-tracking/order-tracking.html:314` («Esperando que el local confirme»).
|
|
85
87
|
- **4 errores de carga en `lighter` → `filled`** (la pantalla queda vacía; el aviso es lo único
|
|
86
|
-
que hay): `pages/envios/envios.html:11`, `pages/super-admin/master-drivers/master-drivers.html:
|
|
88
|
+
que hay): `pages/envios/envios.html:11`, `pages/super-admin/master-drivers/master-drivers.html:703`,
|
|
87
89
|
`pages/super-admin/master-roles/master-roles.html:79`, `pages/super-admin/master-approvals/master-approvals.html:17`.
|
|
88
90
|
El mismo caso ya está en `filled` en `pages/super-admin/master-orders/master-orders.html:347`.
|
|
89
91
|
- **2 `stroke` inline sobre fondo blanco → `lighter`:** `pages/role-selector/role-selector.html:52`,
|
|
90
|
-
`pages/driver/driver-order-detail/driver-order-detail.html:
|
|
92
|
+
`pages/driver/driver-order-detail/driver-order-detail.html:379`.
|
|
91
93
|
|
|
92
94
|
La pregunta para decidir es una: **¿este aviso tiene que ganarle al botón principal?** Si no, `lighter`.
|
|
93
95
|
|
|
@@ -99,13 +101,13 @@ La guía lista los cinco tipos pero no dice cuándo va cada uno.
|
|
|
99
101
|
|---|---|---|---|
|
|
100
102
|
| `info` (default) | Un dato que conviene saber. No pide hacer nada. | `pages/orders/orders.html:281` | canon (aprobado por el dueño, 03-10-2026) |
|
|
101
103
|
| `success` | Un resultado bueno que se queda (aprobado, verificado, enviado). Si es la confirmación de un clic, es toast. | `components/transfer-tenant-modal/transfer-tenant-modal.html:16` («Cuenta verificada») | canon (aprobado por el dueño, 03-10-2026) |
|
|
102
|
-
| `warning` | Hay que atender algo o va a tener una consecuencia. | `pages/driver/driver-order-detail/driver-order-detail.html:
|
|
104
|
+
| `warning` | Hay que atender algo o va a tener una consecuencia. | `pages/driver/driver-order-detail/driver-order-detail.html:899` («Se te cobran S/ 0.50») | canon (aprobado por el dueño, 03-10-2026) |
|
|
103
105
|
| `error` | Algo falló o no se puede hacer. Su ejemplo de uso (contraseña incorrecta) es de este tipo. | `pages/auth/login/login.html:31` | canon (aprobado por el dueño, 03-10-2026) (el ejemplo sí es de la guía) |
|
|
104
106
|
| `feature` | Novedad o función en prueba. Solo eso. El color sale del estado «feature» de la paleta. | `pages/customer/viaje/viaje.html:81` («Viajes está en prueba») | canon (aprobado por el dueño, 03-10-2026) |
|
|
105
107
|
|
|
106
|
-
**Usos de hoy que
|
|
107
|
-
cliente**, que no es una novedad: `pages/envios/envios.html:
|
|
108
|
-
`pages/driver/driver-order-detail/driver-order-detail.html:
|
|
108
|
+
**Usos de hoy que rompen la regla:** 3 alerts `feature` muestran la **nota que dejó el
|
|
109
|
+
cliente**, que no es una novedad: `pages/envios/envios.html:728`,
|
|
110
|
+
`pages/driver/driver-order-detail/driver-order-detail.html:196`,
|
|
109
111
|
`pages/customer/order-tracking/order-tracking.html:551`. Pasarían a `info`.
|
|
110
112
|
|
|
111
113
|
### `size` y acciones
|
|
@@ -118,7 +120,7 @@ cliente**, que no es una novedad: `pages/envios/envios.html:725`,
|
|
|
118
120
|
|
|
119
121
|
| acciones | regla | fuente |
|
|
120
122
|
|---|---|---|
|
|
121
|
-
| tipo | Links por `actions[]`, nunca un `sui-button` proyectado en el slot. | según la guía del DS |
|
|
123
|
+
| tipo | Links por `actions[]`, nunca un `sui-button` proyectado en el slot (ni `lighter` ni otro). | según la guía del DS · canon (dueño, 04-10-2026): resuelve la contradicción con el README de `sui-button` |
|
|
122
124
|
| cuántas | Hasta dos, separadas por punto medio. | según la guía del DS |
|
|
123
125
|
| subrayado | Solo la primera, con `underline: true`. | según la guía del DS |
|
|
124
126
|
|
|
@@ -127,13 +129,13 @@ cliente**, que no es una novedad: `pages/envios/envios.html:725`,
|
|
|
127
129
|
- **3 alerts con descripción en `small` → `large`.** El componente hace lo que dice la guía
|
|
128
130
|
(en `small` no hay descripción), así que no es un bug del componente: es un error de uso, y la
|
|
129
131
|
descripción hoy **no se ve**. `pages/customer/checkout/checkout.html:417` (la descripción del
|
|
130
|
-
cupón), `pages/super-admin/master-settings/master-settings.html:
|
|
132
|
+
cupón), `pages/super-admin/master-settings/master-settings.html:644` y `:691`.
|
|
131
133
|
- **5 alerts con un `sui-button` en el slot `action` → `actions[]`:** `pages/role-selector/role-selector.html:52`,
|
|
132
|
-
`pages/overview/overview.html:34`, `pages/mi-negocio/mi-negocio.html:
|
|
134
|
+
`pages/overview/overview.html:34`, `pages/mi-negocio/mi-negocio.html:378`,
|
|
133
135
|
`pages/customer/cart/cart.html:29`, `pages/customer/viaje/viaje.html:86` (este último es un
|
|
134
136
|
`filled primary` dentro del alert: el CTA de la pantalla no debería vivir ahí).
|
|
135
|
-
- **2 acciones únicas sin subrayar → `underline: true`:** `pages/notifications/notifications.ts:
|
|
136
|
-
y `:
|
|
137
|
+
- **2 acciones únicas sin subrayar → `underline: true`:** `pages/notifications/notifications.ts:200`
|
|
138
|
+
y `:201` (`accionActivar`, `accionReintentar`, usadas en `notifications.html:17` y `:23`).
|
|
137
139
|
- Más de dos acciones: 0.
|
|
138
140
|
|
|
139
141
|
## Tamaño en mobile y en web
|
|
@@ -147,6 +149,8 @@ en mobile es el ancho: ocupa toda la columna.
|
|
|
147
149
|
| aviso con descripción | `large` | `large` | guía del DS |
|
|
148
150
|
| aviso de una línea en la página | `small` | `small` | guía del DS |
|
|
149
151
|
| dentro de un campo o una card | `xsmall` | `xsmall` | guía del DS |
|
|
152
|
+
| la X de cerrar (`dismissible`) | se ve de 16 px en `xsmall`, 20 en `small`, 24 en `large`, 28 en `xlarge`; **se toca en 44 × 44** (`::before` invisible; en `xsmall`/`small` el alert mide 32/36 y recorta el área a su alto, y a la izquierda solo crece 4 para no pisar las acciones inline) | se ve igual, sin área extra | canon (dueño, 04-10-2026): piso táctil 44 en el teléfono |
|
|
153
|
+
| las acciones (`actions[]`) | link de 20 px de alto en `large`/`xlarge`, 16 en `small`/`xsmall` | igual | según el componente |
|
|
150
154
|
|
|
151
155
|
|
|
152
156
|
## API
|
|
@@ -165,6 +169,7 @@ en mobile es el ancho: ocupa toda la columna.
|
|
|
165
169
|
| `dismissible` | `boolean` | `false` |
|
|
166
170
|
| `autoHideOnDismiss` | `boolean` | `true` |
|
|
167
171
|
| `actions` | `readonly SuiAlertAction[]` | `[]` |
|
|
172
|
+
| `ariaRole` | `'auto' \| 'alert' \| 'status' \| 'none'` | `'auto'` |
|
|
168
173
|
|
|
169
174
|
| output | payload |
|
|
170
175
|
|---|---|
|
|
@@ -202,6 +207,10 @@ Slot: `<ng-content select="[slot=action]">` — legado; solo se usa si `actions`
|
|
|
202
207
|
misma línea, a la derecha. Es lo que define la guía del DS para esos tamaños: si hay
|
|
203
208
|
descripción, va `large`.
|
|
204
209
|
- `description` va por `innerHTML`: no le pases texto escrito por el usuario sin sanear.
|
|
210
|
+
- **El rol depende del tipo** (desde el 04-10-2026; antes `role="alert"` fijo en los 117 alerts):
|
|
211
|
+
`error` y `warning` se anuncian con `role="alert"` (interrumpe), `info`, `success` y `feature`
|
|
212
|
+
con `role="status"` (espera a que el lector termine). `ariaRole` lo fuerza (`alert`, `status`) o lo
|
|
213
|
+
quita (`none`, cuando el contenedor ya anuncia: así lo usa `sui-toast`).
|
|
205
214
|
- Las acciones toman el **color del texto** del alert (blanco en `filled`, casi negro en el
|
|
206
215
|
resto), no el color del tipo. Para forzar otro, `color` en la acción.
|
|
207
216
|
- `feature` es **morado** aquí y **gris** en `sui-banner` (decisión documentada en los dos `.ts`).
|
|
@@ -57,9 +57,9 @@ Google Play, en ese orden.
|
|
|
57
57
|
|---|---|---|
|
|
58
58
|
| `height` (40, default) | 40 en desktop y en el footer. El ancho sale solo de la proporción de cada sello. | propuesta |
|
|
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. |
|
|
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
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
|
|
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
63
|
| `disabled` | Sin caso: si la app no está en una tienda, no se muestra su sello. | propuesta |
|
|
64
64
|
|
|
65
65
|
## Tamaño en mobile y en web
|
|
@@ -67,8 +67,9 @@ Google Play, en ese orden.
|
|
|
67
67
|
En mobile se toca con el dedo: el área táctil tiene que medir **44 px o más**. En web, con mouse,
|
|
68
68
|
va un tamaño más chico. La app ya lo resuelve con `BreakpointsService`
|
|
69
69
|
(`src/app/services/breakpoints.service.ts`, mobile = hasta 767 px):
|
|
70
|
-
`[size]="bp.isMobile() ? 'large' : '
|
|
71
|
-
|
|
70
|
+
en los componentes con `size` va `[size]="bp.isMobile() ? 'large' : 'medium'"` (142 de los 166 `[size]`
|
|
71
|
+
con `bp` medidos el 04-10-2026). **El sello no tiene `size`**: su alto va en px por `[height]`, ver abajo.
|
|
72
|
+
Regla del dueño, 03-10-2026.
|
|
72
73
|
|
|
73
74
|
| uso | mobile | web | fuente |
|
|
74
75
|
|---|---|---|---|
|
|
@@ -31,11 +31,11 @@ Regla corta: **es alguien → avatar · es una cosa → key-icon · son varios
|
|
|
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
32
|
> regla escrita del proyecto (`CLAUDE.md`); el resto es **propuesta, falta aprobación**.
|
|
33
33
|
>
|
|
34
|
-
> Uso medido el
|
|
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/*`,
|
|
36
36
|
> `master-rutina`, `master-medico`, `dev-index`). Tamaños: 23 `lg`, 19 `md`, 5 `sm`, 3 `xs`,
|
|
37
|
-
> 3 `xl`, 1 `2xl`, 1 `3xl`. Colores
|
|
38
|
-
> 1 `
|
|
37
|
+
> 3 `xl`, 1 `2xl`, 1 `3xl`. Colores, ya con el canon por rol: 21 `green`, 14 `orange`, 12 `blue`,
|
|
38
|
+
> 1 `gray` y 7 dinámicos (`[color]` que sale del rol). Ninguno con `bgColor` ni `slate`.
|
|
39
39
|
|
|
40
40
|
### Lo que sí dice la guía del DS
|
|
41
41
|
|
|
@@ -65,8 +65,8 @@ la foto falla al cargar, cae sola a las iniciales.
|
|
|
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:
|
|
69
|
-
| `sm` | 24 | Chips y filas compactas. | `pages/driver/driver-dashboard/driver-dashboard.html:
|
|
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
70
|
| `md` (default SUI) | 32 | Filas de listas y tablas. | `pages/super-admin/master-orders/master-orders.html:197` | propuesta |
|
|
71
71
|
| `lg` | 40 | La tarjeta de una persona o de un local. | `pages/customer/order-tracking/order-tracking.html:348` (tu repartidor) | propuesta |
|
|
72
72
|
| `xl` | 48 | Cabecera de un panel. | `pages/driver/driver-dashboard/driver-dashboard.html:19` (tu foto) | propuesta |
|
|
@@ -89,8 +89,8 @@ sin leer el nombre.
|
|
|
89
89
|
| `green` | Repartidores, también el propio repartidor en su app. Extensión de SUI. | canon (aprobado por el dueño, 03-10-2026) |
|
|
90
90
|
| `blue` | Clientes y destinatarios, también quien firma una reseña de cliente. | canon (aprobado por el dueño, 03-10-2026) |
|
|
91
91
|
| `gray` (default de la guía) | «Todavía nadie», con `icon` (pedido sin repartidor, envío sin destinatario). | canon (aprobado por el dueño, 03-10-2026) |
|
|
92
|
-
| `slate` (default SUI) | No hace falta en la app: todo avatar tiene un rol o es «todavía nadie». |
|
|
93
|
-
| `purple`, `sky`, `yellow`, `pink`, `teal`, `red` | No se usan para personas: un quinto color no diría ningún rol. |
|
|
92
|
+
| `slate` (default SUI) | No hace falta en la app: todo avatar tiene un rol o es «todavía nadie». | derivado del canon por rol, falta confirmación |
|
|
93
|
+
| `purple`, `sky`, `yellow`, `pink`, `teal`, `red` | No se usan para personas: un quinto color no diría ningún rol. | derivado del canon por rol, falta confirmación |
|
|
94
94
|
|
|
95
95
|
Reglas que van con la tabla:
|
|
96
96
|
|
|
@@ -138,14 +138,14 @@ 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. Sin `alt`, el lector
|
|
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
142
|
| `companyLogoSrc` | Solo con `status="company"`. | propuesta |
|
|
143
143
|
| `memojiSrc`, `illustrationSrc` | No usar hoy. | propuesta |
|
|
144
144
|
| `bgColor` | No usar (ver abajo). | propuesta |
|
|
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:
|
|
148
|
-
`pages/super-admin/master-drivers/master-drivers.html:
|
|
148
|
+
`pages/super-admin/master-drivers/master-drivers.html:252`, `:779`, `pages/employees/employees.html:70`.
|
|
149
149
|
|
|
150
150
|
**`bgColor` en la app: 0** (eran 7 hasta el 03-10-2026). Los cinco con paleta saturada escrita a
|
|
151
151
|
mano (clientes, empleados, reporte de repartidores y equipo) rompían la rampa `*-200` del DS y
|
|
@@ -154,14 +154,13 @@ disfrazado. Todos pasaron a `color` por rol.
|
|
|
154
154
|
|
|
155
155
|
### La foto de otra persona (regla del proyecto)
|
|
156
156
|
|
|
157
|
-
- **
|
|
158
|
-
|
|
159
|
-
`pages/customer/order-tracking/order-tracking.html:348`.
|
|
160
|
-
Google, el cliente ve la foto rota para siempre.
|
|
157
|
+
- **Resuelta** (commit `74fa3b26` de master-pedidos): `core/services/orders.service.ts:407` ya
|
|
158
|
+
congela en el pedido (`driverPhotoUrl`) solo una foto que pasa `esFotoDeStorage`, así que el
|
|
159
|
+
cliente ya no puede recibir la de Google en `pages/customer/order-tracking/order-tracking.html:348`.
|
|
161
160
|
- **A revisar** (pintan un `avatarUrl` de otra persona sin el filtro de `fotoMostrable` a la
|
|
162
|
-
vista): `pages/super-admin/master-drivers/master-drivers.html:
|
|
161
|
+
vista): `pages/super-admin/master-drivers/master-drivers.html:712` (`r.foto`), `:779`
|
|
163
162
|
(`s.avatarUrl`) y `pages/drivers/add-driver/add-driver.html:73`.
|
|
164
|
-
- **Latente**: `pages/customers/customers.ts:
|
|
163
|
+
- **Latente**: `pages/customers/customers.ts:277` arma `avatarUrl || photoURL`, pero la tabla
|
|
165
164
|
hoy no lo pinta.
|
|
166
165
|
|
|
167
166
|
## Tamaño en mobile y en web
|
|
@@ -243,7 +242,8 @@ interface SuiAvatarConfig {
|
|
|
243
242
|
- **El avatar no cambia con el tema oscuro**: fondos y texto de las iniciales son fijos a propósito.
|
|
244
243
|
- **`bgColor` gana sobre `color`** pero no cambia el color del texto: con un fondo oscuro, las
|
|
245
244
|
iniciales quedan ilegibles.
|
|
246
|
-
-
|
|
245
|
+
- **El punto de `status` mide el 25 % del avatar; `topBadge` y el logo de `company`, el 40 %**:
|
|
246
|
+
en `xs` casi no se ven.
|
|
247
247
|
- **`companyLogoSrc` solo se ve con `status="company"`.**
|
|
248
248
|
- **Si la foto falla, cae sola a las iniciales**, y si cambia el `src` lo vuelve a intentar.
|
|
249
249
|
- **No tiene `title`, ni output, ni es clickeable.** Para tocarlo, envuélvelo en un botón o en
|
|
@@ -25,8 +25,8 @@ conectados en una zona. Cada persona se ve chica; el grupo es lo que cuenta.
|
|
|
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
26
|
> del DS» sale de su texto o de su código; el resto es **propuesta, falta aprobación**.
|
|
27
27
|
>
|
|
28
|
-
> Uso medido el 03-10-2026 en `master-pedidos/src/app`: **0 usos directos**.
|
|
29
|
-
>
|
|
28
|
+
> Uso medido el 03-10-2026 en `master-pedidos/src/app`: **0 usos directos**. En el DS no lo
|
|
29
|
+
> monta ningún componente: `sui-table` solo lo nombra como contenido que se proyecta en una celda.
|
|
30
30
|
|
|
31
31
|
### Lo que sí dice la guía del DS
|
|
32
32
|
|
|
@@ -44,7 +44,7 @@ conectados en una zona. Cada persona se ve chica; el grupo es lo que cuenta.
|
|
|
44
44
|
| `size` | `lg` (40) | La cabecera de un panel (repartidores en la zona). | propuesta |
|
|
45
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
46
|
| `max` | `3` | Tres visibles y el «+N», como el ejemplo de la guía. El default de SUI es `4`. | propuesta |
|
|
47
|
-
| `items` | — | Cada item es `{ src, initials, color, alt }`. Las reglas de foto y color son las de `sui-avatar
|
|
47
|
+
| `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
48
|
|
|
49
49
|
Usos de hoy que rompen la regla: **0** (no hay usos).
|
|
50
50
|
|
|
@@ -108,7 +108,7 @@ interface SuiAvatarGroupItem {
|
|
|
108
108
|
```html
|
|
109
109
|
<sui-avatar-group size="md" [max]="3" [items]="[
|
|
110
110
|
{ initials: 'Carlos Mamani', color: 'green', alt: 'Carlos Mamani' },
|
|
111
|
-
{ src: repartidor2.avatarUrl, alt: repartidor2.nombre },
|
|
111
|
+
{ src: repartidor2.avatarUrl, initials: repartidor2.nombre, color: 'green', alt: repartidor2.nombre },
|
|
112
112
|
{ initials: 'Luis Huamán', color: 'green', alt: 'Luis Huamán' },
|
|
113
113
|
{ initials: 'Ana Torres', color: 'green', alt: 'Ana Torres' }
|
|
114
114
|
]" />
|
package/docs/sui-badge/README.md
CHANGED
|
@@ -71,22 +71,23 @@ Regla corta: **etiqueta, número o estado con muchos valores → badge · comple
|
|
|
71
71
|
| `pink` | highlighted | Destacado. | según la guía del DS (nombre del estado) |
|
|
72
72
|
| `teal` | stable | Estable. | según la guía del DS (nombre del estado) |
|
|
73
73
|
| (categorías) | — | Una categoría sin carga de bien/mal va en `gray`. Si tiene que distinguirse de otras en la misma fila, el color cuyo estado le calce (`purple` para lo nuevo, `pink` para lo destacado). | canon (aprobado por el dueño, 03-10-2026) |
|
|
74
|
+
| (distintivos del local) | — | «Local exclusivo» en `pink` (destacado) y «Mismo precio que en el local» en `sky` (verificado), `type="left-icon"`. Salen de `core/distintivos-local.ts` en master-pedidos; antes eran un `sui-status-badge` y no son un estado. | canon (aprobado por el dueño, 03-10-2026) |
|
|
74
75
|
|
|
75
76
|
**Usos de hoy que rompen la guía** (estado con el color de otro estado; se evaluaron los colores
|
|
76
77
|
fijos y los ternarios legibles en el template; el resto de los 77 dinámicos, que salen de
|
|
77
78
|
funciones o campos, no):
|
|
78
79
|
|
|
79
|
-
- **5 casos.** «Pendiente» en `red`: `pages/super-admin/super-admin.html:
|
|
80
|
+
- **5 casos.** «Pendiente» en `red`: `pages/super-admin/super-admin.html:626`. «Pendiente» en
|
|
80
81
|
`yellow` (ausente): `pages/super-admin/master-gastos/master-gastos.html:67` y `:115`. «No cuadra»
|
|
81
82
|
en `yellow`: `pages/super-admin/master-gastos/master-gastos.html:60` y `:129`. Los cinco pasan a
|
|
82
83
|
`orange`.
|
|
83
84
|
- Sin evaluar: `pages/super-admin/master-drivers/master-drivers.html:201` (`yellow` con un texto
|
|
84
85
|
que viene de datos).
|
|
85
86
|
|
|
86
|
-
**Usos de hoy que
|
|
87
|
+
**Usos de hoy que rompen la regla de categorías** (categoría pintada con color de estado):
|
|
87
88
|
|
|
88
|
-
- **15 casos.** «Por delivery» en `green` y «Sueldo fijo» en `blue`: `pages/drivers/drivers.html:
|
|
89
|
-
`:
|
|
89
|
+
- **15 casos.** «Por delivery» en `green` y «Sueldo fijo» en `blue`: `pages/drivers/drivers.html:134`,
|
|
90
|
+
`:136`, `:255`, `:257`. «Primer pedido» en `orange`: `pages/driver/driver-order-detail/driver-order-detail.html:482`,
|
|
90
91
|
`pages/super-admin/master-orders/master-orders.html:205` y `:505`. El plan en `purple`:
|
|
91
92
|
`pages/super-admin/super-admin.html:116`, `:252`, `pages/super-admin/master-earnings/master-earnings.html:95`.
|
|
92
93
|
«Envío» y «Mandadito» en `purple`: `pages/super-admin/master-orders/master-orders.html:83` y `:87`.
|
|
@@ -110,16 +111,16 @@ un paso más fuerte con texto **oscuro**; `filled` = fondo saturado con texto bl
|
|
|
110
111
|
| `filled` (default de la guía) | Solo dos casos: (1) **un conteo que pide acción** (pendientes, notificaciones), y (2) un badge **encima de una foto**, donde un fondo pálido se pierde. | `components/glass-tab-bar/glass-tab-bar.html:13` (conteo del tab) · `components/product-detail-view/product-detail-view.html:40` («Agotado» sobre la foto) | canon (aprobado por el dueño, 03-10-2026) |
|
|
111
112
|
| `light` | Solo sobre una **superficie ya teñida** (dentro de un alert `lighter`, una card de color), donde el `lighter` se confunde con el fondo. | (sin uso correcto hoy) | canon (aprobado por el dueño, 03-10-2026) |
|
|
112
113
|
| `stroke` | Metadato **neutro** (`gray`) que convive con badges de color en la misma fila y no debe leerse como estado: «Obligatorio», «12 secciones». | `components/product-detail-view/product-detail-view.html:93` («Obligatorio») · `pages/settings/team/team.html:136` | canon (aprobado por el dueño, 03-10-2026) |
|
|
113
|
-
| `dark` | Solo sobre una **superficie oscura** (card negra, foto oscura). Extensión de SUI: la guía no lo tiene. | `pages/mi-negocio/mi-negocio.html:
|
|
114
|
+
| `dark` | Solo sobre una **superficie oscura** (card negra, foto oscura). Extensión de SUI: la guía no lo tiene. | `pages/mi-negocio/mi-negocio.html:94` (precio sobre la card negra del plan) | canon (aprobado por el dueño, 03-10-2026) |
|
|
114
115
|
|
|
115
|
-
**Usos de hoy que
|
|
116
|
+
**Usos de hoy que rompen la regla:**
|
|
116
117
|
|
|
117
118
|
- **16 `light` → `lighter`** (salvo que estén sobre superficie teñida; no se verificó
|
|
118
119
|
renderizado). Ejemplos: `pages/super-admin/master-drivers/master-drivers.html:781`, `:783`, `:785`,
|
|
119
120
|
`pages/super-admin/master-users/master-user-sheet.html:44`, `pages/reports/reports.html:215`.
|
|
120
121
|
- **1 `filled` como metadato → `lighter`:** `pages/customer/profile/profile.html:122` («Por defecto»).
|
|
121
122
|
A discutir: `pages/public/pricing/pricing.html:37` (el «Popular» del plan destacado).
|
|
122
|
-
- **1 `lighter` sobre superficie oscura → `dark`:** `pages/mi-negocio/mi-negocio.html:
|
|
123
|
+
- **1 `lighter` sobre superficie oscura → `dark`:** `pages/mi-negocio/mi-negocio.html:89` («Mes gratis»).
|
|
123
124
|
|
|
124
125
|
### `size` y `type`
|
|
125
126
|
|
|
@@ -158,13 +159,29 @@ pedidos con muchos estados (`pages/orders/orders.html:113`) se quedan como badge
|
|
|
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
160
|
`large` (24) y `xlarge` (28) son extensión SUI del 03-10-2026.
|
|
160
161
|
|
|
162
|
+
| size | alto | texto | ícono del slot |
|
|
163
|
+
|---|---|---|---|
|
|
164
|
+
| `small` (default) | 16 px | 11/12, MAYÚSCULAS | 12 |
|
|
165
|
+
| `medium` | 20 px | 12/16 | 16 |
|
|
166
|
+
| `large` | 24 px | 14/20 | 16 |
|
|
167
|
+
| `xlarge` | 28 px | 16/24 | 20 |
|
|
168
|
+
|
|
169
|
+
Ojo con la regla de tamaños del 03-10-2026 (en `large`/`xlarge` el texto va en 16): el badge
|
|
170
|
+
`large` queda en 14. El README de `sui-button` toma esta escala como referencia de los chips:
|
|
171
|
+
`sui-tag` y `sui-status-badge` van en 14 en `large` y 16 en `xlarge`. **Excepción documentada,
|
|
172
|
+
canon (dueño, 04-10-2026):** el badge mantiene su escala propia 12 / 14 / 16 (`medium` / `large` /
|
|
173
|
+
`xlarge`) y no sube a 16 en `large`; tag y status-badge la siguen. El badge no se toca: no tiene
|
|
174
|
+
área táctil.
|
|
175
|
+
|
|
161
176
|
| uso | mobile | web | fuente |
|
|
162
177
|
|---|---|---|---|
|
|
163
178
|
| estado en una lista o card | `large` (24) | `small` (16, mayúsculas) | canon (aprobado por el dueño, 03-10-2026) |
|
|
164
179
|
| junto a un título o un monto | `xlarge` (28) | `medium` (20) | propuesta, falta aprobación |
|
|
165
180
|
| conteo (`type="number"`) | `large` (24) | `small` (16) | propuesta, falta aprobación |
|
|
166
181
|
|
|
167
|
-
Patrón (
|
|
182
|
+
Patrón (`bp` = `BreakpointsService`, mobile hasta 767 px). Medido el 04-10-2026: solo 6 de los
|
|
183
|
+
214 badges de la app lo aplican (`pages/customer/cart/cart.html:71`,
|
|
184
|
+
`pages/customer/order-history/order-history.html:176`…); el resto va con `size` fijo:
|
|
168
185
|
|
|
169
186
|
```html
|
|
170
187
|
<sui-badge [size]="bp.isMobile() ? 'large' : 'small'" …/>
|
|
@@ -211,7 +228,8 @@ interface SuiBadgeConfig {
|
|
|
211
228
|
intercambiables aunque se parezcan.
|
|
212
229
|
- Los slots usan **`data-slot=`**, no `slot=` (alert y banner sí usan `slot=`).
|
|
213
230
|
- Proyectar un ícono no basta: hace falta `type="left-icon"` o `"right-icon"`.
|
|
214
|
-
- El punto de `with-dot` mide 4 px; el de `sui-status-badge` mide 6 px
|
|
231
|
+
- El punto de `with-dot` mide 4 px en todos los tamaños; el de `sui-status-badge` mide 6 px en
|
|
232
|
+
`medium` y 8 en `large`/`xlarge`. Son distintos a propósito.
|
|
215
233
|
- `disabled` no baja la opacidad: pinta todo en los grises de deshabilitado.
|
|
216
234
|
- El host lleva `role="status"`: el lector de pantalla anuncia los cambios.
|
|
217
235
|
|
|
@@ -87,7 +87,7 @@ Misma pregunta que en el alert: **¿este aviso tiene que ganarle a todo lo demá
|
|
|
87
87
|
### Usos de hoy que rompen la regla
|
|
88
88
|
|
|
89
89
|
- **Rompe el canon — 1 banner en contexto → `sui-alert`:**
|
|
90
|
-
`pages/driver/driver-order-detail/driver-order-detail.html:
|
|
90
|
+
`pages/driver/driver-order-detail/driver-order-detail.html:410` («Cobras S/ … al local al
|
|
91
91
|
recoger»). Es el aviso de **un pedido**, dentro de su detalle: va `sui-alert` (`error` `filled`
|
|
92
92
|
si cobra en el mostrador, `info` `lighter` si cobra en la puerta).
|
|
93
93
|
- **Barra hecha a mano que es un banner — 1:** `components/impersonation-banner/impersonation-banner.ts:17`
|
|
@@ -106,8 +106,8 @@ El banner **no tiene `size`**: mide 44 px de alto en web, centrado; en mobile (
|
|
|
106
106
|
| uso | mobile | web | fuente |
|
|
107
107
|
|---|---|---|---|
|
|
108
108
|
| la barra | 44 px mínimo, crece si el texto envuelve | 44 px fijos, una línea | según el componente |
|
|
109
|
-
| el link de acción | `large` (24 px)
|
|
110
|
-
| la X de cerrar | se ve de 24 px; **se toca en
|
|
109
|
+
| el link de acción | `large` (24 px) | `medium` (20 px) | propuesta, falta aprobación |
|
|
110
|
+
| la X de cerrar | se ve de 24 px; **se toca en 44 × 44** | se ve de 24; se toca en 40 × 40 | canon (dueño, 04-10-2026): piso táctil 44 en el teléfono (antes 40, pedido del dueño 03-10-2026): área táctil invisible, extensión SUI |
|
|
111
111
|
|
|
112
112
|
```html
|
|
113
113
|
<sui-banner variant="warning" variantStyle="lighter" title="Tu plan vence en 3 días"
|
|
@@ -117,8 +117,8 @@ El banner **no tiene `size`**: mide 44 px de alto en web, centrado; en mobile (
|
|
|
117
117
|
</sui-banner>
|
|
118
118
|
```
|
|
119
119
|
|
|
120
|
-
`size="large"` del link-button está
|
|
121
|
-
|
|
120
|
+
`size="large"` del link-button ya está publicado (la app usa 0.22.0). Hoy el link del banner de la
|
|
121
|
+
suscripción (`subscription-banner.html:10`) sigue con `medium` en las dos.
|
|
122
122
|
|
|
123
123
|
## «No usar»: por qué no hoy y cuándo sí
|
|
124
124
|
|
|
@@ -164,10 +164,11 @@ y `[slot=action]` (el link).
|
|
|
164
164
|
alert. Los slots usan `slot=`, no `data-slot=`.
|
|
165
165
|
- En web la altura es **fija** (44 px): un título más una descripción largos se cortan. En mobile sí
|
|
166
166
|
envuelve.
|
|
167
|
-
- **La X se toca en 40 × 40
|
|
168
|
-
desde
|
|
169
|
-
|
|
170
|
-
letra del link puede caer
|
|
167
|
+
- **La X se toca en 44 × 44 en el teléfono** (40 × 40 en web) aunque se vea de 24 (un `::before`
|
|
168
|
+
invisible sobre su `<button>`; 44 desde el 04-10-2026). En mobile esa área crece hacia el borde
|
|
169
|
+
derecho y se mete solo 4 px en el espacio del texto o del link de acción (el padding derecho es 40
|
|
170
|
+
y la X ocupa de 0 a 44 px desde el borde): un toque justo en la última letra del link puede caer
|
|
171
|
+
en la X.
|
|
171
172
|
- Al tocar la X se oculta solo (`dismissed`) y emite `closed`; no recuerda nada: si tiene que
|
|
172
173
|
quedarse cerrado entre sesiones, lo guarda el padre.
|
|
173
174
|
- El host lleva `role="region"` con `aria-label` = `title`, y borra el `title` nativo.
|
|
@@ -68,7 +68,7 @@ Regla corta: **la marca es lo que se muestra → brand-logo · es un ícono más
|
|
|
68
68
|
| input | cuándo | fuente |
|
|
69
69
|
|---|---|---|
|
|
70
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 («Instagram
|
|
71
|
+
| `ariaLabel` | Con `href`, siempre: «Síguenos en Instagram». Sin `href`, el default («Logo de Instagram») alcanza. | propuesta |
|
|
72
72
|
| `disabled` | No usar hoy. | propuesta |
|
|
73
73
|
|
|
74
74
|
Usos de hoy que rompen la regla: **0**.
|
|
@@ -129,7 +129,7 @@ Outputs: ninguno.
|
|
|
129
129
|
- **No se tiñe**: es un `<img>`. Si necesitas otro color, es `sui-icon`.
|
|
130
130
|
- **`variant` es el color**, no el tamaño ni la forma.
|
|
131
131
|
- Con `href` y `disabled` a la vez, no se vuelve link.
|
|
132
|
-
- El `aria-label` por defecto
|
|
132
|
+
- El `aria-label` por defecto es «Logo de <Marca>» (en español desde el 04-10-2026); con `href` pasa uno que diga adónde lleva.
|
|
133
133
|
|
|
134
134
|
## Ejemplo
|
|
135
135
|
|
|
@@ -138,6 +138,6 @@ Outputs: ninguno.
|
|
|
138
138
|
<sui-brand-logo company="whatsapp" size="lg" />
|
|
139
139
|
|
|
140
140
|
<!-- Red del negocio, como link -->
|
|
141
|
-
<sui-brand-logo company="instagram" size="
|
|
141
|
+
<sui-brand-logo company="instagram" size="2xl" [href]="tenant.instagramUrl" target="_blank"
|
|
142
142
|
ariaLabel="Síguenos en Instagram" />
|
|
143
143
|
```
|
|
@@ -104,7 +104,7 @@ type SuiBreadcrumbDivider = 'arrow' | 'slash' | 'dot';
|
|
|
104
104
|
|
|
105
105
|
## Trampas
|
|
106
106
|
|
|
107
|
-
- **`navigate` sale en todo clic
|
|
107
|
+
- **`navigate` sale en todo clic** (menos en el ítem activo), también en los que tienen `href` (el navegador ya navega). Si
|
|
108
108
|
usas `href`, no navegues otra vez en `(navigate)`.
|
|
109
109
|
- **El último ítem es el activo solo**: no es clicable y va en negro.
|
|
110
110
|
- **No corta texto largo**: con nombres de producto largos la fila crece. Acórtalos tú.
|