@ajuarezso/sui-design-system 0.24.1 → 0.25.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/docs/sui-accordion/README.md +85 -11
- package/docs/sui-activity-feed/README.md +65 -11
- package/docs/sui-activity-filter/README.md +54 -5
- package/docs/sui-alert/README.md +54 -0
- package/docs/sui-app-store-badge/README.md +64 -10
- package/docs/sui-avatar/README.md +92 -29
- package/docs/sui-avatar-group/README.md +75 -9
- package/docs/sui-badge/README.md +85 -17
- package/docs/sui-banner/README.md +85 -20
- package/docs/sui-brand-logo/README.md +95 -31
- package/docs/sui-breadcrumb-item/README.md +54 -3
- package/docs/sui-breadcrumbs/README.md +54 -6
- package/docs/sui-button/README.md +76 -12
- package/docs/sui-button-group/README.md +91 -23
- package/docs/sui-button-group-item/README.md +81 -14
- package/docs/sui-card/README.md +105 -18
- package/docs/sui-chart-legend/README.md +63 -10
- package/docs/sui-chart-legend-dot/README.md +59 -10
- package/docs/sui-checkbox/README.md +109 -29
- package/docs/sui-checkbox-card/README.md +70 -14
- package/docs/sui-checkbox-label/README.md +92 -26
- package/docs/sui-circular-progress-bar/README.md +80 -19
- package/docs/sui-color-dot/README.md +72 -12
- package/docs/sui-color-picker/README.md +71 -13
- package/docs/sui-command-menu-footer/README.md +50 -1
- package/docs/sui-command-menu-item/README.md +74 -14
- package/docs/sui-command-menu-search/README.md +58 -3
- package/docs/sui-compact-avatar-group/README.md +73 -13
- package/docs/sui-compact-button/README.md +123 -34
- package/docs/sui-compact-select/README.md +61 -7
- package/docs/sui-compact-select-for-input/README.md +70 -6
- package/docs/sui-content-card/README.md +75 -14
- package/docs/sui-content-divider/README.md +67 -16
- package/docs/sui-content-label/README.md +99 -20
- package/docs/sui-counter-input/README.md +102 -18
- package/docs/sui-date-selector/README.md +69 -11
- package/docs/sui-datepicker/README.md +85 -18
- package/docs/sui-day-cell/README.md +75 -17
- package/docs/sui-day-label/README.md +56 -7
- package/docs/sui-divider/README.md +64 -9
- package/docs/sui-drawer-footer/README.md +63 -2
- package/docs/sui-drawer-header/README.md +69 -12
- package/docs/sui-dropdown-caption/README.md +58 -6
- package/docs/sui-dropdown-item/README.md +75 -9
- package/docs/sui-dropdown-menu/README.md +83 -14
- package/docs/sui-dropdown-search/README.md +60 -4
- package/docs/sui-emoji/README.md +94 -30
- package/docs/sui-empty-state/README.md +71 -7
- package/docs/sui-fancy-button/README.md +74 -14
- package/docs/sui-file-icon/README.md +70 -12
- package/docs/sui-file-upload/README.md +77 -17
- package/docs/sui-file-upload-card/README.md +64 -12
- package/docs/sui-filter/README.md +83 -14
- package/docs/sui-flag/README.md +73 -8
- package/docs/sui-form-hint/README.md +56 -7
- package/docs/sui-form-label/README.md +57 -5
- package/docs/sui-href/README.md +47 -0
- package/docs/sui-icon/README.md +86 -18
- package/docs/sui-image-upload/README.md +90 -22
- package/docs/sui-image-upload-profile/README.md +70 -11
- package/docs/sui-img-retry/README.md +50 -1
- package/docs/sui-inline-input/README.md +67 -9
- package/docs/sui-inline-select/README.md +62 -2
- package/docs/sui-input/README.md +90 -27
- package/docs/sui-integration-switch/README.md +84 -17
- package/docs/sui-kbd/README.md +73 -9
- package/docs/sui-key-icon/README.md +85 -23
- package/docs/sui-link-button/README.md +96 -27
- package/docs/sui-logo/README.md +93 -22
- package/docs/sui-modal/README.md +72 -13
- package/docs/sui-modal-footer/README.md +86 -12
- package/docs/sui-modal-header/README.md +57 -1
- package/docs/sui-modal-sheet/README.md +74 -12
- package/docs/sui-notification/README.md +81 -11
- package/docs/sui-notification-footer/README.md +55 -5
- package/docs/sui-notification-tab-menu/README.md +61 -5
- package/docs/sui-otp-input/README.md +70 -9
- package/docs/sui-page-header/README.md +89 -19
- package/docs/sui-pagination/README.md +73 -13
- package/docs/sui-password-strength/README.md +50 -1
- package/docs/sui-payment-icon/README.md +80 -18
- package/docs/sui-period-range/README.md +70 -11
- package/docs/sui-popover/README.md +81 -15
- package/docs/sui-product-card/README.md +89 -21
- package/docs/sui-progress-bar/README.md +82 -15
- package/docs/sui-progress-bar-label/README.md +79 -18
- package/docs/sui-radio/README.md +84 -7
- package/docs/sui-radio-card/README.md +70 -16
- package/docs/sui-radio-label/README.md +89 -22
- package/docs/sui-rating/README.md +101 -31
- package/docs/sui-rich-editor/README.md +47 -2
- package/docs/sui-segmented-control/README.md +90 -21
- package/docs/sui-select/README.md +80 -11
- package/docs/sui-sidebar/README.md +71 -16
- package/docs/sui-slider/README.md +75 -8
- package/docs/sui-social-button/README.md +71 -11
- package/docs/sui-status-badge/README.md +75 -14
- package/docs/sui-stepper/README.md +75 -18
- package/docs/sui-store-card/README.md +85 -22
- package/docs/sui-switch/README.md +82 -11
- package/docs/sui-switch-card/README.md +80 -16
- package/docs/sui-switch-label/README.md +91 -14
- package/docs/sui-tab-chips/README.md +93 -21
- package/docs/sui-tab-menu-horizontal/README.md +68 -7
- package/docs/sui-tab-menu-vertical/README.md +64 -11
- package/docs/sui-table/README.md +77 -16
- package/docs/sui-tag/README.md +86 -12
- package/docs/sui-tag-input/README.md +77 -13
- package/docs/sui-textarea/README.md +84 -17
- package/docs/sui-time-picker/README.md +96 -33
- package/docs/sui-toast/README.md +81 -20
- package/docs/sui-tooltip/README.md +80 -22
- package/docs/sui-topbar/README.md +64 -10
- package/docs/sui-topbar-button/README.md +61 -7
- package/docs/sui-topbar-item/README.md +68 -7
- package/docs/sui-topbar-user/README.md +61 -5
- package/fesm2022/ajuarezso-sui-design-system.mjs +15 -10
- package/fesm2022/ajuarezso-sui-design-system.mjs.map +1 -1
- package/package.json +1 -1
- package/types/ajuarezso-sui-design-system.d.ts +7 -3
|
@@ -42,10 +42,10 @@ segmented · secciones → tab menu · filtros → tab-chips.**
|
|
|
42
42
|
| qué | cuándo | fuente |
|
|
43
43
|
|---|---|---|
|
|
44
44
|
| texto | Lo normal: el nombre de la sección, una o dos palabras. | según la guía del DS (ejemplos con texto) |
|
|
45
|
-
| `icon` | Solo si **todas** las pestañas llevan ícono y ayuda a reconocerlas. Nunca en una sola. |
|
|
46
|
-
| `number` | Pendientes **que piden acción** dentro de esa sección («Solicitudes 3»). Es un círculo rojo: no lo uses para totales neutros. |
|
|
47
|
-
| `rightIcon` | No: la flecha dice «te lleva a otra pantalla» y una pestaña no navega. |
|
|
48
|
-
| `disabled` | Una sección que existe pero no aplica todavía (depende del plan). |
|
|
45
|
+
| `icon` | Solo si **todas** las pestañas llevan ícono y ayuda a reconocerlas. Nunca en una sola. | canon (aprobado por el dueño, 05-10-2026, bloque B9) |
|
|
46
|
+
| `number` | Pendientes **que piden acción** dentro de esa sección («Solicitudes 3»). Es un círculo rojo: no lo uses para totales neutros. | canon (aprobado por el dueño, 05-10-2026, bloque B3) |
|
|
47
|
+
| `rightIcon` | No: la flecha dice «te lleva a otra pantalla» y una pestaña no navega. | canon (aprobado por el dueño, 05-10-2026, bloque B6) |
|
|
48
|
+
| `disabled` | Una sección que existe pero no aplica todavía (depende del plan). | canon (aprobado por el dueño, 05-10-2026, bloque B8) |
|
|
49
49
|
|
|
50
50
|
### `size`
|
|
51
51
|
|
|
@@ -61,7 +61,7 @@ desde el 03-10-2026 (`sui-tab-menu-horizontal.scss`, bloque «Tamaños»). Cuán
|
|
|
61
61
|
- **A discutir, 1 sin tamaño por plataforma:** el único uso
|
|
62
62
|
(`components/store-ratings-modal/store-ratings-modal.html:43`) es del modal del local, que el
|
|
63
63
|
cliente abre en el teléfono, y no pasa `size`: mide 48 px tocables (`medium`). Llega a 44, pero la
|
|
64
|
-
|
|
64
|
+
regla de abajo (canon, 05-10-2026) pide `large` en mobile.
|
|
65
65
|
|
|
66
66
|
## Tamaño en mobile y en web
|
|
67
67
|
|
|
@@ -80,13 +80,31 @@ es solo el texto: el `gap` entre pestañas no responde.
|
|
|
80
80
|
|
|
81
81
|
| uso | mobile | web | fuente |
|
|
82
82
|
|---|---|---|---|
|
|
83
|
-
| 2-3 secciones | `large` (52, texto 16) | `medium` (48) |
|
|
83
|
+
| 2-3 secciones | `large` (52, texto 16) | `medium` (48) | canon (aprobado por el dueño, 05-10-2026, bloque B1); el tamaño es extensión SUI aprobada (03-10-2026) |
|
|
84
84
|
| 4+ secciones | si no entran a 390 px, se salen sin poder deslizarse (las 4 del panel de repartidores, con sus números, ya no entran a 360): va `sui-tab-chips` | el mismo | según el código |
|
|
85
85
|
|
|
86
86
|
```html
|
|
87
|
-
<sui-tab-menu-horizontal [tabs]="secciones" [(active)]="seccion" [size]="bp.
|
|
87
|
+
<sui-tab-menu-horizontal [tabs]="secciones" [(active)]="seccion" [size]="bp.tactil() && !bp.celularChico() ? 'large' : 'medium'" />
|
|
88
88
|
```
|
|
89
89
|
|
|
90
|
+
### Por dispositivo (D16)
|
|
91
|
+
|
|
92
|
+
Fila de `tab-menu-horizontal` en la tabla de D16 (dueño, 05-10-2026): se toca, pero su `medium`
|
|
93
|
+
ya mide 48 de alto, así que el celular chico no necesita subir.
|
|
94
|
+
|
|
95
|
+
| dispositivo | size | nota |
|
|
96
|
+
|---|---|---|
|
|
97
|
+
| celular chico (< 380 px) | `medium` (48) | ya mide 48: pasa el piso de 44 sin subir |
|
|
98
|
+
| celular (380–767 px) | `large` (52, texto 16) | |
|
|
99
|
+
| tablet táctil (`pointer: coarse`) | `large` (52) | se toca con el dedo, aunque mida más de 767 |
|
|
100
|
+
| computadora (`pointer: fine`) | `medium` (48) | `small` no se usa |
|
|
101
|
+
|
|
102
|
+
Ultrawide (≥ 1920 px): igual que la computadora, `medium`. `xlarge` no sale de ningún dispositivo.
|
|
103
|
+
|
|
104
|
+
En master-pedidos: `[size]="bp.tactil() && !bp.celularChico() ? 'large' : 'medium'"`. No hay
|
|
105
|
+
helper propio, y `bp.sizeControl()` no sirve aunque los valores coincidan: da `large` en el celular
|
|
106
|
+
chico.
|
|
107
|
+
|
|
90
108
|
## «No usar»: por qué no hoy y cuándo sí
|
|
91
109
|
|
|
92
110
|
| qué | por qué no hoy | cuándo sí, en un flujo nuevo |
|
|
@@ -141,6 +159,49 @@ interface SuiTabMenuHorizontalItem<T = string> {
|
|
|
141
159
|
- El ícono de la pestaña activa es `strong-950`, no naranja; en el tab menu vertical es naranja.
|
|
142
160
|
Es a propósito.
|
|
143
161
|
|
|
162
|
+
## Bien y mal
|
|
163
|
+
|
|
164
|
+
Pestañas del modal del local, que el cliente abre en el teléfono
|
|
165
|
+
|
|
166
|
+
```html
|
|
167
|
+
<!-- ❌ mal: sin size queda en medium en el teléfono y la tablet (components/store-ratings-modal/store-ratings-modal.html:43) -->
|
|
168
|
+
<sui-tab-menu-horizontal [tabs]="tabs" [active]="tab()" (tabChange)="tab.set($any($event))" />
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
```html
|
|
172
|
+
<!-- ✅ bien -->
|
|
173
|
+
<sui-tab-menu-horizontal [tabs]="tabs" [(active)]="tab"
|
|
174
|
+
[size]="bp.tactil() && !bp.celularChico() ? 'large' : 'medium'" />
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
Flecha en una pestaña
|
|
178
|
+
|
|
179
|
+
```html
|
|
180
|
+
<!-- ❌ mal: rightIcon dice «te lleva a otra pantalla» y una pestaña no navega -->
|
|
181
|
+
<sui-tab-menu-horizontal [(active)]="tab"
|
|
182
|
+
[tabs]="[{ value: 'opiniones', label: 'Opiniones', rightIcon: true }, { value: 'info', label: 'Información' }]" />
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
```html
|
|
186
|
+
<!-- ✅ bien -->
|
|
187
|
+
<sui-tab-menu-horizontal [(active)]="tab"
|
|
188
|
+
[tabs]="[{ value: 'opiniones', label: 'Opiniones' }, { value: 'info', label: 'Información' }]" />
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
Un total neutro en el círculo rojo
|
|
192
|
+
|
|
193
|
+
```html
|
|
194
|
+
<!-- ❌ mal: number es para pendientes que piden acción, no para cuántos repartidores hay -->
|
|
195
|
+
<sui-tab-menu-horizontal [(active)]="tab"
|
|
196
|
+
[tabs]="[{ value: 'activos', label: 'Activos', number: 42 }, { value: 'solicitudes', label: 'Solicitudes' }]" />
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
```html
|
|
200
|
+
<!-- ✅ bien -->
|
|
201
|
+
<sui-tab-menu-horizontal [(active)]="tab"
|
|
202
|
+
[tabs]="[{ value: 'activos', label: 'Activos' }, { value: 'solicitudes', label: 'Solicitudes', number: 3 }]" />
|
|
203
|
+
```
|
|
204
|
+
|
|
144
205
|
## Ejemplo
|
|
145
206
|
|
|
146
207
|
```html
|
|
@@ -17,13 +17,14 @@ de pago · Repartidores»), el perfil del super admin.
|
|
|
17
17
|
|
|
18
18
|
**No lo uses** para:
|
|
19
19
|
|
|
20
|
-
- **Mobile**: el ítem mide 36 px y
|
|
21
|
-
|
|
20
|
+
- **Mobile y tablet táctil**: el ítem mide 36 px y no llega a los 44 del dedo; en el celular,
|
|
21
|
+
además, ocupa el ancho de la pantalla dejando el contenido debajo. Ahí cada sección es una fila
|
|
22
|
+
de una lista que abre su propia pantalla.
|
|
22
23
|
- La navegación de toda la app: `sui-sidebar`.
|
|
23
24
|
- 2 a 4 secciones arriba del contenido: `sui-tab-menu-horizontal`.
|
|
24
25
|
- Filtros de una lista: `sui-tab-chips`.
|
|
25
26
|
|
|
26
|
-
Regla corta (
|
|
27
|
+
Regla corta (canon, aprobado por el dueño, 05-10-2026, bloque B7): **secciones de una página de ajustes en web → tab menu
|
|
27
28
|
vertical · en mobile → lista de filas que abren pantalla.**
|
|
28
29
|
|
|
29
30
|
## Qué variante usar
|
|
@@ -39,14 +40,14 @@ vertical · en mobile → lista de filas que abren pantalla.**
|
|
|
39
40
|
|
|
40
41
|
| valor | cuándo | fuente |
|
|
41
42
|
|---|---|---|
|
|
42
|
-
| `card` | El menú flota junto al contenido sobre un fondo gris (`bg-weak-50`): el borde y la sombra lo separan. | según la guía del DS (ejemplo «contenedor con estilo»); el cuándo
|
|
43
|
-
| `list` | El menú vive dentro de una columna que ya tiene fondo o borde propio (una card, un panel). | según la guía del DS (ejemplo base); el cuándo
|
|
43
|
+
| `card` | El menú flota junto al contenido sobre un fondo gris (`bg-weak-50`): el borde y la sombra lo separan. | según la guía del DS (ejemplo «contenedor con estilo»); el cuándo: canon (aprobado por el dueño, 05-10-2026, bloque B2) |
|
|
44
|
+
| `list` | El menú vive dentro de una columna que ya tiene fondo o borde propio (una card, un panel). | según la guía del DS (ejemplo base); el cuándo: canon (aprobado por el dueño, 05-10-2026, bloque B2) |
|
|
44
45
|
|
|
45
46
|
### `dividerLabel`
|
|
46
47
|
|
|
47
48
|
| valor | cuándo | fuente |
|
|
48
49
|
|---|---|---|
|
|
49
|
-
| vacío (default) | Un solo grupo de secciones. |
|
|
50
|
+
| vacío (default) | Un solo grupo de secciones. | canon (aprobado por el dueño, 05-10-2026, bloque B9) |
|
|
50
51
|
| texto | Nombra el grupo cuando hay más de un menú apilado («Tu local» · «Tu cuenta»). Sale en MAYÚSCULAS y gris. | según la guía del DS (ejemplo con título) |
|
|
51
52
|
|
|
52
53
|
### Ítems (`tabs`)
|
|
@@ -54,10 +55,10 @@ vertical · en mobile → lista de filas que abren pantalla.**
|
|
|
54
55
|
| qué | cuándo | fuente |
|
|
55
56
|
|---|---|---|
|
|
56
57
|
| texto | El nombre de la sección. Una o dos palabras; si es más largo, se corta con «…». | según la guía del DS (ejemplos con texto) |
|
|
57
|
-
| `icon` | Sí, en todos los ítems: en un menú lateral el ícono ayuda a encontrar rápido. El activo se pinta naranja. |
|
|
58
|
-
| `number` | Pendientes que piden acción en esa sección (círculo rojo). |
|
|
58
|
+
| `icon` | Sí, en todos los ítems: en un menú lateral el ícono ayuda a encontrar rápido. El activo se pinta naranja. | canon (aprobado por el dueño, 05-10-2026, bloque B9) |
|
|
59
|
+
| `number` | Pendientes que piden acción en esa sección (círculo rojo). | canon (aprobado por el dueño, 05-10-2026, bloque B3) |
|
|
59
60
|
| `rightIcon` | Cuando el ítem lleva a otra página en vez de cambiar el panel de al lado. | propuesta, falta aprobación |
|
|
60
|
-
| `disabled` | Una sección que depende del plan. |
|
|
61
|
+
| `disabled` | Una sección que depende del plan. | canon (aprobado por el dueño, 05-10-2026, bloque B8) |
|
|
61
62
|
|
|
62
63
|
Usos de hoy que rompen las reglas: **0** (no se usa).
|
|
63
64
|
|
|
@@ -68,14 +69,22 @@ Usos de hoy que rompen las reglas: **0** (no se usa).
|
|
|
68
69
|
|
|
69
70
|
| uso | mobile | web | fuente |
|
|
70
71
|
|---|---|---|---|
|
|
71
|
-
| secciones de ajustes | no se usa: lista de filas que abren pantalla | `tab-menu-vertical` |
|
|
72
|
+
| secciones de ajustes | no se usa: lista de filas que abren pantalla | `tab-menu-vertical` | «no se usa en mobile»: canon (dueño, 04-10-2026): piso táctil 44 en el teléfono — el ítem mide 36 y no tiene `size` · la lista de filas en mobile y el uso en web: canon (aprobado por el dueño, 05-10-2026, bloque B7) |
|
|
72
73
|
|
|
73
74
|
```html
|
|
74
|
-
@if (!bp.
|
|
75
|
+
@if (!bp.tactil()) {
|
|
75
76
|
<sui-tab-menu-vertical [tabs]="secciones" [(active)]="seccion" menuStyle="card" />
|
|
76
77
|
}
|
|
77
78
|
```
|
|
78
79
|
|
|
80
|
+
### Por dispositivo (D16)
|
|
81
|
+
|
|
82
|
+
No tiene `size` (ítem único de 36, sin eje de tamaño en Figma): no hay tabla por dispositivo. Como
|
|
83
|
+
se toca y no llega a 44, la regla general de D16 lo deja fuera de todo lo táctil: celular (chico o
|
|
84
|
+
no) y tablet táctil van con la lista de filas que abren pantalla (B7); computadora y ultrawide, el
|
|
85
|
+
menú tal cual. Fuente: D16, dueño 05-10-2026 (columna «lo que se toca»). En master-pedidos:
|
|
86
|
+
`@if (!bp.tactil()) { <sui-tab-menu-vertical … /> }`.
|
|
87
|
+
|
|
79
88
|
## «No usar»: por qué no hoy y cuándo sí
|
|
80
89
|
|
|
81
90
|
| qué | por qué no hoy | cuándo sí, en un flujo nuevo |
|
|
@@ -128,6 +137,50 @@ type SuiTabMenuVerticalStyle = 'card' | 'list';
|
|
|
128
137
|
- `role="tablist"`: si cada ítem navega a una ruta, el lector de pantalla lo anuncia mal; para
|
|
129
138
|
navegación entre rutas, `sui-sidebar`.
|
|
130
139
|
|
|
140
|
+
## Bien y mal
|
|
141
|
+
|
|
142
|
+
Menú en el celular
|
|
143
|
+
|
|
144
|
+
```html
|
|
145
|
+
<!-- ❌ mal: en el celular y la tablet táctil el ítem mide 36 (no llega a 44), y en el celular el contenido queda debajo -->
|
|
146
|
+
<sui-tab-menu-vertical [tabs]="secciones" [(active)]="seccion" />
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
```html
|
|
150
|
+
<!-- ✅ bien: en el celular y la tablet táctil, cada sección es una fila que abre su pantalla -->
|
|
151
|
+
@if (!bp.tactil()) {
|
|
152
|
+
<sui-tab-menu-vertical [tabs]="secciones" [(active)]="seccion" />
|
|
153
|
+
}
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
Ítem activo al entrar
|
|
157
|
+
|
|
158
|
+
```html
|
|
159
|
+
<!-- ❌ mal: sin active no se marca ningún ítem -->
|
|
160
|
+
<sui-tab-menu-vertical [tabs]="secciones" (tabChange)="mostrar($event)" />
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
```html
|
|
164
|
+
<!-- ✅ bien: seccion arranca en la primera sección ('datos') -->
|
|
165
|
+
<sui-tab-menu-vertical [tabs]="secciones" [(active)]="seccion" />
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
Menú dentro de una card
|
|
169
|
+
|
|
170
|
+
```html
|
|
171
|
+
<!-- ❌ mal: card dentro de una card, borde y sombra dobles -->
|
|
172
|
+
<sui-card>
|
|
173
|
+
<sui-tab-menu-vertical [tabs]="secciones" [(active)]="seccion" menuStyle="card" />
|
|
174
|
+
</sui-card>
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
```html
|
|
178
|
+
<!-- ✅ bien: la columna ya tiene fondo y borde, el menú va plano -->
|
|
179
|
+
<sui-card>
|
|
180
|
+
<sui-tab-menu-vertical [tabs]="secciones" [(active)]="seccion" menuStyle="list" />
|
|
181
|
+
</sui-card>
|
|
182
|
+
```
|
|
183
|
+
|
|
131
184
|
## Ejemplo
|
|
132
185
|
|
|
133
186
|
```html
|
package/docs/sui-table/README.md
CHANGED
|
@@ -32,9 +32,9 @@ Regla corta: **comparar por columnas → tabla · leer de a uno → tarjetas ·
|
|
|
32
32
|
> estructura de dos dimensiones donde cada fila es un ítem y cada columna un dato del ítem»,
|
|
33
33
|
> muestra un solo ejemplo (un directorio de personas **con selección por checkbox**), le pone
|
|
34
34
|
> `overflow-x-auto` al contenedor y deriva el orden, la selección y la paginación a una
|
|
35
|
-
> librería externa. No trae do/don't, tamaños ni comportamiento en mobile.
|
|
36
|
-
>
|
|
37
|
-
>
|
|
35
|
+
> librería externa. No trae do/don't, tamaños ni comportamiento en mobile. Lo de abajo es
|
|
36
|
+
> **práctica de la app**, **canon** (sale de `master-pedidos/CLAUDE.md`, de `docs/CANON-SUI.md` o lo
|
|
37
|
+
> aprobó el dueño el 05-10-2026) o **propuesta, falta aprobación**, que espera decisión.
|
|
38
38
|
>
|
|
39
39
|
> Uso medido el 03-10-2026 en `master-pedidos/src/app`: **9 tablas** en 7 pantallas, sin contar
|
|
40
40
|
> prototipos ni vitrinas (`master-preview`, `master-prototipos`, `mockup-sheets-*`, `dx/*`,
|
|
@@ -55,9 +55,9 @@ Regla corta: **comparar por columnas → tabla · leer de a uno → tarjetas ·
|
|
|
55
55
|
| prop de columna | cuándo | ejemplo real de la app | fuente |
|
|
56
56
|
|---|---|---|---|
|
|
57
57
|
| `priority: 'leading'` + `descriptionKey` | La **primera** columna: el dato que identifica la fila arriba (14/500) y un dato de apoyo debajo (12/400). Se usa en vez de una plantilla propia para la columna principal. | `pages/orders/orders.ts:278` (pedido + «hace 12 min») · `pages/super-admin/master-orders/master-orders.ts:390` | práctica de la app (7 de 9 tablas) |
|
|
58
|
-
| `priority: 'passive'` | Datos de contexto que no deciden nada: fecha, número de comprobante. Se leen en gris (`text-sub-600`). | `pages/super-admin/master-overview/master-overview.ts:192` |
|
|
58
|
+
| `priority: 'passive'` | Datos de contexto que no deciden nada: fecha, número de comprobante. Se leen en gris (`text-sub-600`). | `pages/super-admin/master-overview/master-overview.ts:192` | canon (aprobado por el dueño, 05-10-2026, bloque B2) |
|
|
59
59
|
| `priority: 'none'` | Columna de acciones (íconos) sin texto propio. Con `label: ''` y `width` fijo. | `pages/super-admin/master-gastos/master-gastos.ts:143` | práctica de la app |
|
|
60
|
-
| `align: 'right'` | Montos. Así se comparan en vertical. | `pages/central/central-gastos/central-gastos.ts:82` |
|
|
60
|
+
| `align: 'right'` | Montos. Así se comparan en vertical. | `pages/central/central-gastos/central-gastos.ts:82` | canon (aprobado por el dueño, 05-10-2026, bloque B9) |
|
|
61
61
|
| `width` | Columnas de largo fijo: monto, estado, fecha, acciones. | `central-gastos.ts:82-83` | práctica de la app |
|
|
62
62
|
| `minWidth` | Columnas de texto que crecen (nombre, concepto): el piso para que no se aplasten. | `master-orders.ts:392` | práctica de la app |
|
|
63
63
|
| `maxWidth` + `truncate` | Nombres que pueden ser muy largos: corta con «…» y el valor completo sale en tooltip. | `master-overview.ts:193` | práctica de la app |
|
|
@@ -72,10 +72,10 @@ Dentro va un componente SUI, no HTML a mano:
|
|
|
72
72
|
|
|
73
73
|
| contenido | componente | fuente |
|
|
74
74
|
|---|---|---|
|
|
75
|
-
| estado o categoría | `<sui-badge variant="lighter" size="
|
|
76
|
-
| acciones de la fila | `<sui-button variant="ghost" color="neutral" size="
|
|
75
|
+
| estado o categoría | `<sui-badge variant="lighter" [size]="bp.sizeBadge()">` (`medium` en la computadora, `large` en el celular) | D16, dueño 05-10-2026; CANON-SUI §0 («Chip de estado») todavía dice `small`: hay que actualizarlo en master-pedidos |
|
|
76
|
+
| acciones de la fila | `<sui-button variant="ghost" color="neutral" [size]="bp.sizeControl()" [onlyIcon]="true">` (`medium` en la computadora, `large` donde se toca) | D16, dueño 05-10-2026 (README de `sui-button`: en una tabla, `medium` en la computadora; antes `2xsmall`) |
|
|
77
77
|
| prender/apagar | `<sui-switch>` | propuesta, falta aprobación |
|
|
78
|
-
| calificación | `<sui-rating>` de solo lectura |
|
|
78
|
+
| calificación | `<sui-rating>` de solo lectura | canon (aprobado por el dueño, 05-10-2026, bloque B9) |
|
|
79
79
|
|
|
80
80
|
Si la columna tiene plantilla, `descriptionKey` y `truncate` **no se aplican**: solo funcionan en
|
|
81
81
|
el render de texto plano. Por eso `orders.html:94` deja la columna del pedido sin plantilla.
|
|
@@ -118,17 +118,17 @@ secundaria dentro de un tablero) y 6 sin `size` (o sea `medium`).
|
|
|
118
118
|
| uso | mobile | web | fuente |
|
|
119
119
|
|---|---|---|---|
|
|
120
120
|
| tabla principal de una pantalla | `medium` | `medium` | práctica de la app |
|
|
121
|
-
| tabla secundaria dentro de un tablero | `
|
|
122
|
-
| filas con dos líneas y un badge | `medium` | `medium` |
|
|
121
|
+
| tabla secundaria dentro de un tablero | `medium` | `medium` | D16, dueño 05-10-2026 (antes `small`, práctica de la app: `master-overview.html:126`) |
|
|
122
|
+
| filas con dos líneas y un badge | `medium` | `medium` | canon (aprobado por el dueño, 05-10-2026, bloque B1) |
|
|
123
123
|
|
|
124
|
-
El patrón
|
|
125
|
-
ya mide 64 y el toque es sobre toda la fila. `large`/`xlarge` no tienen uso hoy.
|
|
124
|
+
El patrón por dispositivo de los botones (`bp.sizeControl()`) **no aplica al `size` de la tabla**:
|
|
125
|
+
la fila ya mide 64 y el toque es sobre toda la fila. `large`/`xlarge` no tienen uso hoy.
|
|
126
126
|
|
|
127
127
|
**Qué pasa en mobile (≤ 767 px):** la tabla scrollea en horizontal dentro de sí misma; la
|
|
128
128
|
cabecera y el cuerpo miden lo mismo y la barra de scroll se oculta. En la app conviven dos
|
|
129
|
-
salidas, y
|
|
129
|
+
salidas, y cuándo va cada una ya es regla:
|
|
130
130
|
|
|
131
|
-
| salida | dónde | cuándo elegirla (
|
|
131
|
+
| salida | dónde | cuándo elegirla (canon (aprobado por el dueño, 05-10-2026, bloque B7)) |
|
|
132
132
|
|---|---|---|
|
|
133
133
|
| la misma tabla, con scroll lateral | `orders`, `master-orders`, `central-gastos`, `central-ingresos` | 3-4 columnas, y la primera (`leading`) ya dice casi todo |
|
|
134
134
|
| tarjetas en grilla por debajo de 1350 px | `drivers` (`drivers.ts:282`), `master-gastos` | 6+ columnas: con el sidebar abierto no entran ni en laptop ni en iPad |
|
|
@@ -140,6 +140,19 @@ solo en Android**: pone `touch-action: pan-x` por JS para que el scroll horizont
|
|
|
140
140
|
y mueve él mismo la página con el gesto vertical (con inercia). En iOS no hace nada: WebKit delega
|
|
141
141
|
el vertical solo. Por eso la página **no** agrega `touch-action` ni un wrapper con `overflow-x`.
|
|
142
142
|
|
|
143
|
+
### Por dispositivo (D16)
|
|
144
|
+
|
|
145
|
+
El `size` de la tabla no depende del dispositivo: cambia el alto de la fila (48 a 96), no el área
|
|
146
|
+
que se toca, y la fila entera ya pasa los 44 del dedo. Va `medium` (el default) en el celular
|
|
147
|
+
chico, el celular, la tablet táctil, la computadora y el ultrawide; por eso no hay tabla de D16.
|
|
148
|
+
Lo que sí sigue a D16 es lo que va **dentro** de las celdas: el badge como lo que no se toca y el
|
|
149
|
+
botón de acción como lo que se toca. Fuente: D16, dueño 05-10-2026.
|
|
150
|
+
|
|
151
|
+
En master-pedidos: `<sui-table>` sin `size`, y en las plantillas `[size]="bp.sizeBadge()"` (badge)
|
|
152
|
+
y `[size]="bp.sizeControl()"` (botón). Las tablas de la app que tienen badge o botón en una celda
|
|
153
|
+
ya llevan esos helpers; la que queda fuera es `master-overview.html:126`, que pasa `size="small"` a
|
|
154
|
+
la tabla.
|
|
155
|
+
|
|
143
156
|
## Pista de scroll (canon, aprobado por el dueño el 05-10-2026)
|
|
144
157
|
|
|
145
158
|
Desde la **0.24.0**. Cuando la tabla scrollea en horizontal (≤ 767 px, o con una columna `sticky`)
|
|
@@ -256,6 +269,54 @@ trabajo de la página.
|
|
|
256
269
|
- **El degradado de la pista es `bg-white-0`**, el fondo de la propia tabla. Si la tabla vive
|
|
257
270
|
sobre otro fondo (no es el caso hoy), se pisa `--sui-pista-de-scroll-fondo` en un contenedor.
|
|
258
271
|
|
|
272
|
+
## Bien y mal
|
|
273
|
+
|
|
274
|
+
Segunda línea en la columna principal
|
|
275
|
+
|
|
276
|
+
```html
|
|
277
|
+
<!-- ❌ mal: la columna tiene descriptionKey, pero con plantilla la segunda línea no sale (central-gastos.html:49, central-gastos.ts:83) -->
|
|
278
|
+
<ng-template suiTableCell="concepto" let-row>
|
|
279
|
+
<span class="cg__concepto">{{ row.concepto }}</span>
|
|
280
|
+
</ng-template>
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
```html
|
|
284
|
+
<!-- ✅ bien: sin plantilla en 'concepto'; leading + descriptionKey pintan las dos líneas (como orders.html:94) -->
|
|
285
|
+
<sui-table [columns]="columnas" [rows]="filas()" emptyMessage="No hay gastos registrados este mes." />
|
|
286
|
+
```
|
|
287
|
+
|
|
288
|
+
Columnas que no entran
|
|
289
|
+
|
|
290
|
+
```html
|
|
291
|
+
<!-- ❌ mal: wrapper con overflow-x desde la página (drivers.html:212, drivers.scss:111) -->
|
|
292
|
+
<div class="drivers__table-wrap">
|
|
293
|
+
<sui-table [columns]="tableColumns" [rows]="filteredDrivers()" rowKey="id" />
|
|
294
|
+
</div>
|
|
295
|
+
```
|
|
296
|
+
|
|
297
|
+
```html
|
|
298
|
+
<!-- ✅ bien: las columnas entran en el ancho real; con 6+ columnas, tarjetas por debajo de 1350 px -->
|
|
299
|
+
<sui-table [columns]="tableColumns" [rows]="filteredDrivers()" rowKey="id" />
|
|
300
|
+
```
|
|
301
|
+
|
|
302
|
+
Botón dentro de una fila que abre el detalle
|
|
303
|
+
|
|
304
|
+
```html
|
|
305
|
+
<!-- ❌ mal: el clic edita y además abre el detalle por rowClicked -->
|
|
306
|
+
<ng-template suiTableCell="acciones" let-row>
|
|
307
|
+
<sui-button variant="ghost" color="neutral" [size]="bp.sizeControl()" [onlyIcon]="true"
|
|
308
|
+
leftIcon="pencil-line" aria-label="Editar" (click)="editar(row)" />
|
|
309
|
+
</ng-template>
|
|
310
|
+
```
|
|
311
|
+
|
|
312
|
+
```html
|
|
313
|
+
<!-- ✅ bien -->
|
|
314
|
+
<ng-template suiTableCell="acciones" let-row>
|
|
315
|
+
<sui-button variant="ghost" color="neutral" [size]="bp.sizeControl()" [onlyIcon]="true"
|
|
316
|
+
leftIcon="pencil-line" aria-label="Editar" (click)="$event.stopPropagation(); editar(row)" />
|
|
317
|
+
</ng-template>
|
|
318
|
+
```
|
|
319
|
+
|
|
259
320
|
## Ejemplo
|
|
260
321
|
|
|
261
322
|
```html
|
|
@@ -268,12 +329,12 @@ trabajo de la página.
|
|
|
268
329
|
emptyMessage="Sin pedidos en este estado."
|
|
269
330
|
(rowClicked)="abrirDetalle($event)">
|
|
270
331
|
<ng-template suiTableCell="estado" let-row>
|
|
271
|
-
<sui-badge [color]="row.color" variant="lighter" size="
|
|
332
|
+
<sui-badge [color]="row.color" variant="lighter" [size]="bp.sizeBadge()">{{ row.estadoLabel }}</sui-badge>
|
|
272
333
|
</ng-template>
|
|
273
334
|
</sui-table>
|
|
274
335
|
|
|
275
336
|
@if (hayMas()) {
|
|
276
|
-
<sui-button variant="stroke" color="neutral" [size]="bp.
|
|
337
|
+
<sui-button variant="stroke" color="neutral" [size]="bp.sizeControl()"
|
|
277
338
|
[disabled]="cargandoMas()" (click)="cargarMas()">Cargar más</sui-button>
|
|
278
339
|
}
|
|
279
340
|
</sui-card>
|
package/docs/sui-tag/README.md
CHANGED
|
@@ -35,7 +35,7 @@ tab-chips o segmented-control.**
|
|
|
35
35
|
> **La guía del DS dice para qué es, no cuándo usar cada estilo.** Su página lo define como
|
|
36
36
|
> «categorizar y etiquetar contenido» y muestra `stroke` (default), `gray`, deshabilitado, con
|
|
37
37
|
> imagen, con avatar y con botón de quitar. No trae do/don't. Lo marcado «según la guía del DS»
|
|
38
|
-
> sale de ahí; el resto es **propuesta, falta aprobación
|
|
38
|
+
> sale de ahí; lo marcado canon lo aprobó el dueño; el resto es **propuesta, falta aprobación** y espera decisión.
|
|
39
39
|
>
|
|
40
40
|
> Uso medido el 03-10-2026 en `master-pedidos/src/app`: **0 tags**, sin contar prototipos ni
|
|
41
41
|
> vitrinas (`master-preview`, `master-prototipos`, `mockup-sheets-*`, `dx/*`, `_guia-*`,
|
|
@@ -48,12 +48,12 @@ tab-chips o segmented-control.**
|
|
|
48
48
|
| `tagStyle` | `stroke` (default) | Lo normal. Sirve sobre cualquier fondo (blanco o gris claro). | — | según la guía del DS (default) |
|
|
49
49
|
| `tagStyle` | `gray` | Solo sobre blanco, cuando hay muchos tags juntos y el borde hace ruido. **Sobre gris claro desaparece.** | Varios filtros aplicados en fila | propuesta, falta aprobación |
|
|
50
50
|
| `dismissible` | `true` | Lo que se nombra se puede quitar. Emite `(dismiss)`; la pantalla lo saca. | «Abierto ahora ✕» | según la guía del DS |
|
|
51
|
-
| `dismissLabel` | texto | Siempre «Quitar» + el nombre: el lector de pantalla no ve el texto del tag desde la X. | `dismissLabel="Quitar Abierto ahora"` |
|
|
51
|
+
| `dismissLabel` | texto | Siempre «Quitar» + el nombre: el lector de pantalla no ve el texto del tag desde la X. | `dismissLabel="Quitar Abierto ahora"` | canon (aprobado por el dueño, 05-10-2026, bloque B5) |
|
|
52
52
|
| `leading` + `[data-slot=start]` | avatar | Nombra a una persona o un local. | «Burger House» con su logo | según la guía del DS (con avatar, con imagen) |
|
|
53
53
|
| `leading` + `[data-slot=start]` | ícono de 16 | El ícono dice qué tipo de dato es. | «Andahuaylas» con un pin | según la guía del DS (`Tag.Icon`) |
|
|
54
54
|
| `sublabel` | texto | Cuántos resultados trae ese filtro, entre paréntesis. | «Pollerías (12)» | propuesta, falta aprobación |
|
|
55
|
-
| `disabled` | `true` | **No usar** hoy (ver abajo). | — | según la guía del DS (existe) ·
|
|
56
|
-
| `interactive` | `true` | **No usar** hoy (ver abajo). | — |
|
|
55
|
+
| `disabled` | `true` | **No usar** hoy (ver abajo). | — | según la guía del DS (existe) · canon (aprobado por el dueño, 05-10-2026, bloque B6) (cuándo) |
|
|
56
|
+
| `interactive` | `true` | **No usar** hoy (ver abajo). | — | canon (aprobado por el dueño, 05-10-2026, bloque B6) |
|
|
57
57
|
|
|
58
58
|
Usos de hoy que rompen la regla: **0** (no hay usos).
|
|
59
59
|
|
|
@@ -67,10 +67,14 @@ Usos de hoy que rompen la regla: **0** (no hay usos).
|
|
|
67
67
|
|
|
68
68
|
## Tamaño en mobile y en web
|
|
69
69
|
|
|
70
|
-
Criterio de la app: **
|
|
71
|
-
(
|
|
72
|
-
|
|
73
|
-
|
|
70
|
+
Criterio de la app: **D16, tamaño por dispositivo** (canon, dueño, 05-10-2026), que reemplaza al
|
|
71
|
+
«tamaño por plataforma» del 03-10-2026 (mobile grande, web chico). La columna «mobile» es el celular de
|
|
72
|
+
380 px o más y, en lo que se toca, también la tablet (`pointer: coarse`). La columna «web» es la
|
|
73
|
+
computadora (`pointer: fine`) y, en lo que no se toca, también la tablet. En el celular chico
|
|
74
|
+
(< 380 px) va `medium` a la vista, sin achicar el área de 44 de lo que se toca. **Nada en `small` ni
|
|
75
|
+
`xsmall`**, salvo lo que el componente solo tiene en chico. `BreakpointsService` ya mira el puntero
|
|
76
|
+
y los 380 px (`bp.toque()`, `bp.celularChico()`, `bp.celular()`, `bp.tactil()`), pero no tiene un
|
|
77
|
+
helper para el tag: se usa la expresión de «Por dispositivo (D16)».
|
|
74
78
|
|
|
75
79
|
| size | alto | texto | leading | X de quitar (área táctil) |
|
|
76
80
|
|---|---|---|---|---|
|
|
@@ -94,17 +98,42 @@ máximo se sigue cortando, y la X queda siempre visible.
|
|
|
94
98
|
|
|
95
99
|
| uso | mobile | web | fuente |
|
|
96
100
|
|---|---|---|---|
|
|
97
|
-
| Tag con X (filtro aplicado, elegido que se quita) | `xlarge` (40) | `medium` (24) |
|
|
98
|
-
| Tag de solo lectura (sin X) | `large` (32) | `medium` (24) |
|
|
99
|
-
| Separación entre tags | 8 px | 4–6 px |
|
|
101
|
+
| Tag con X (filtro aplicado, elegido que se quita) | `xlarge` (40) | `medium` (24) | mobile: canon (dueño, 04-10-2026): piso táctil 44 en el teléfono — solo la X de `xlarge` llega a 44 (en la tablet de más de 767 px, 40: ver «Por dispositivo») · web: canon (dueño, 05-10-2026, D16) (`medium` es el más chico que tiene) |
|
|
102
|
+
| Tag de solo lectura (sin X) | `large` (32) | `medium` (24) | canon (dueño, 05-10-2026, P1 b); el tamaño es extensión SUI aprobada (03-10-2026) |
|
|
103
|
+
| Separación entre tags | 8 px | 4–6 px | canon (aprobado por el dueño, 05-10-2026, bloque B1) |
|
|
100
104
|
|
|
101
105
|
```html
|
|
102
|
-
<sui-tag [size]="bp.
|
|
106
|
+
<sui-tag [size]="bp.tactil() ? 'xlarge' : 'medium'" [dismissible]="true" (dismiss)="quitar(f)">{{ f.nombre }}</sui-tag>
|
|
103
107
|
```
|
|
104
108
|
|
|
105
109
|
El leading proyectado (ícono, avatar, bandera) se escala solo a la caja de 20 en los grandes; un
|
|
106
110
|
`<i class="ri-…">` necesita además su `font-size` en 20.
|
|
107
111
|
|
|
112
|
+
### Por dispositivo (D16)
|
|
113
|
+
|
|
114
|
+
Fila `tag` de la tabla D16 (dueño, 05-10-2026). El tag con X se toca (la X); el de solo lectura no:
|
|
115
|
+
|
|
116
|
+
| dispositivo | size | nota |
|
|
117
|
+
|---|---|---|
|
|
118
|
+
| celular chico (< 380) | con X `xlarge` · solo lectura `medium` | la X solo llega a 44 en `xlarge` (el área de 44 se prende con `max-width: 767px`) |
|
|
119
|
+
| celular (380–767) | con X `xlarge` · solo lectura `large` | lo que no se toca sube un paso en el celular (P1 b) |
|
|
120
|
+
| tablet táctil (`pointer: coarse`) | con X `xlarge` · solo lectura `medium` | la X se toca con el dedo (Apple pide 44 también en el iPad), pero en la tablet de más de 767 px hoy se toca en **40×40**, no en 44: ver abajo |
|
|
121
|
+
| computadora (`pointer: fine`) | `medium` | `medium` es el más chico que tiene |
|
|
122
|
+
|
|
123
|
+
Ultrawide (≥ 1920 px): igual que la computadora, `medium`.
|
|
124
|
+
|
|
125
|
+
**La X en la tablet queda en 40×40.** El área de 44 de la X de `xlarge` se prende con
|
|
126
|
+
`@media (max-width: 767px)` (`sui-tag.scss`, `inset` −10); en una tablet de más de 767 px de ancho
|
|
127
|
+
(casi todos los iPad, y cualquiera en horizontal) la X se toca en 40×40 (`inset` −8). `xlarge`
|
|
128
|
+
sigue siendo lo correcto en la tablet (es el más grande que tiene); llega a 44 cuando el DS cambie
|
|
129
|
+
ese media query por el mixin `sui-tactil` (`max-width: 767px` o `pointer: coarse`), que está
|
|
130
|
+
propuesto en el doc de D16 y todavía no se hizo.
|
|
131
|
+
|
|
132
|
+
En master-pedidos (no hay helper para el tag):
|
|
133
|
+
|
|
134
|
+
- con X: `[size]="bp.tactil() ? 'xlarge' : 'medium'"`
|
|
135
|
+
- solo lectura: `[size]="bp.celular() ? 'large' : 'medium'"`
|
|
136
|
+
|
|
108
137
|
## API
|
|
109
138
|
|
|
110
139
|
<!-- api:inicio -->
|
|
@@ -143,6 +172,51 @@ Slots: `[data-slot=start]` (avatar, logo, bandera o ícono de 16 px) y `<ng-cont
|
|
|
143
172
|
- `sui-avatar` no tiene 16 px: el `xs` (20) se escala por CSS dentro del slot.
|
|
144
173
|
- Radio de 6 px, 24 px de alto en `medium`, sin mayúsculas: no es un badge (radio completo).
|
|
145
174
|
|
|
175
|
+
## Bien y mal
|
|
176
|
+
|
|
177
|
+
Dato de solo lectura
|
|
178
|
+
|
|
179
|
+
```html
|
|
180
|
+
<!-- ❌ mal: solo se lee y no lleva nada a la izquierda, eso es un badge -->
|
|
181
|
+
<sui-tag tagStyle="gray" sublabel="3 días">Frecuencia</sui-tag>
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
```html
|
|
185
|
+
<!-- ✅ bien -->
|
|
186
|
+
<sui-badge color="gray" [size]="bp.sizeBadge()">Frecuencia: 3 días</sui-badge>
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
Filtro aplicado que se quita
|
|
190
|
+
|
|
191
|
+
```html
|
|
192
|
+
<!-- ❌ mal: sin size la X mide 16 en el celular, y el lector de pantalla solo oye «Quitar» -->
|
|
193
|
+
<sui-tag [dismissible]="true" (dismiss)="quitarFiltro('abierto')">Abierto ahora</sui-tag>
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
```html
|
|
197
|
+
<!-- ✅ bien -->
|
|
198
|
+
<sui-tag [size]="bp.tactil() ? 'xlarge' : 'medium'" [dismissible]="true"
|
|
199
|
+
dismissLabel="Quitar Abierto ahora" (dismiss)="quitarFiltro('abierto')">Abierto ahora</sui-tag>
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
Logo a la izquierda
|
|
203
|
+
|
|
204
|
+
```html
|
|
205
|
+
<!-- ❌ mal: con algo en [data-slot=start] y sin [leading]="true", el padding queda mal -->
|
|
206
|
+
<sui-tag [size]="bp.celular() ? 'large' : 'medium'">
|
|
207
|
+
<sui-avatar data-slot="start" size="xs" [src]="local.imageUrl" [initials]="'B'" />
|
|
208
|
+
Burger House
|
|
209
|
+
</sui-tag>
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
```html
|
|
213
|
+
<!-- ✅ bien -->
|
|
214
|
+
<sui-tag [size]="bp.celular() ? 'large' : 'medium'" [leading]="true">
|
|
215
|
+
<sui-avatar data-slot="start" size="xs" [src]="local.imageUrl" [initials]="'B'" />
|
|
216
|
+
Burger House
|
|
217
|
+
</sui-tag>
|
|
218
|
+
```
|
|
219
|
+
|
|
146
220
|
## Ejemplo
|
|
147
221
|
|
|
148
222
|
```html
|