@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
|
@@ -30,7 +30,7 @@ Regla corta: **el campo cambia según una elección corta pegada a él → este
|
|
|
30
30
|
>
|
|
31
31
|
> Uso medido el 03-10-2026 en `master-pedidos/src/app`: **0 usos**. Candidato: el gasto del super
|
|
32
32
|
> admin pone «Monto» (`type="number"`) y «Moneda» (PEN/USD) como dos campos separados,
|
|
33
|
-
> `pages/super-admin/master-gastos/master-gastos.html:
|
|
33
|
+
> `pages/super-admin/master-gastos/master-gastos.html:197` y `:206` (medido el 06-10-2026).
|
|
34
34
|
|
|
35
35
|
| prop | cuándo | fuente |
|
|
36
36
|
|---|---|---|
|
|
@@ -57,20 +57,37 @@ en 16/24, igual que el valor del `sui-input` large; el alto no cambia (46 dentro
|
|
|
57
57
|
| size del input y del selector | campo | fuente |
|
|
58
58
|
|---|---|---|
|
|
59
59
|
| `large` | 48 | canon (aprobado por el dueño, 03-10-2026), extensión SUI |
|
|
60
|
-
| `medium` (default) · `small` · `xsmall` | 40 · 36 · 32 | según la guía del DS |
|
|
60
|
+
| `medium` (default) · `small` · `xsmall` | 40 · 36 · 32 | según la guía del DS · `small` y `xsmall` no se usan: D16, dueño 05-10-2026 |
|
|
61
61
|
|
|
62
62
|
| uso | mobile | web | fuente |
|
|
63
63
|
|---|---|---|---|
|
|
64
|
-
| moneda dentro del monto | `sui-input` `large` + este `large` | `sui-input` `medium` + este `medium` |
|
|
64
|
+
| moneda dentro del monto | `sui-input` `large` + este `large` | `sui-input` `medium` + este `medium` | mobile: canon (dueño, 04-10-2026): piso táctil 44 en el teléfono · web: canon (dueño, 05-10-2026, D16) |
|
|
65
65
|
|
|
66
66
|
Arreglo del 03-10-2026: antes el selector medía 40/36/32 y empujaba el campo a 42/38/34 (el padding
|
|
67
67
|
de la guía no descontaba el borde del input). Ahora el campo mide exacto.
|
|
68
68
|
|
|
69
|
+
### Por dispositivo (D16)
|
|
70
|
+
|
|
71
|
+
Comparte fila con `input` y `select` en la tabla de D16 (dueño, 05-10-2026). El size lo decide el
|
|
72
|
+
`sui-input` que lo contiene: el selector lleva **el mismo**.
|
|
73
|
+
|
|
74
|
+
| dispositivo | size (input y selector) | nota |
|
|
75
|
+
|---|---|---|
|
|
76
|
+
| celular chico (< 380 px) | `large` (48) | interino: D16 pide `medium` con área tocable de 44, pero el DS todavía no la estira en `medium` (40); hasta que lo haga, el mismo que el celular |
|
|
77
|
+
| celular (380–767 px) | `large` (48) | el selector toca de arriba a abajo (46) |
|
|
78
|
+
| tablet táctil (`pointer: coarse`) | `large` (48) | también se toca; las opciones de un `medium` solo suben a 44 hasta 767 px |
|
|
79
|
+
| computadora (`pointer: fine`) | `medium` (40) | `small` y `xsmall` no se usan |
|
|
80
|
+
|
|
81
|
+
Ultrawide (≥ 1920 px): igual que la computadora.
|
|
82
|
+
|
|
83
|
+
En master-pedidos: `[size]="bp.sizeControl()"` **en el `sui-input` y en el selector**, los dos con el
|
|
84
|
+
mismo helper.
|
|
85
|
+
|
|
69
86
|
## «No usar»: por qué no hoy y cuándo sí
|
|
70
87
|
|
|
71
88
|
| qué | por qué no hoy | cuándo sí, en un flujo nuevo |
|
|
72
89
|
|---|---|---|
|
|
73
|
-
| el componente entero (0 usos) | todo es en soles y con +51 | la moneda de un gasto (`master-gastos.html:
|
|
90
|
+
| el componente entero (0 usos) | todo es en soles y con +51 | la moneda de un gasto (`master-gastos.html:197`) o teléfonos de otro país |
|
|
74
91
|
| `country` con bandera | solo hay teléfonos de Perú | repartidores o clientes con número extranjero |
|
|
75
92
|
|
|
76
93
|
## API
|
|
@@ -110,11 +127,58 @@ Implementa `ControlValueAccessor`.
|
|
|
110
127
|
movió el clic a un div interno. Aquí sigue en el host. Probar en un iPhone antes del primer uso.
|
|
111
128
|
- No mezclar `[(selected)]` con `formControlName`.
|
|
112
129
|
|
|
130
|
+
## Bien y mal
|
|
131
|
+
|
|
132
|
+
**El tamaño del selector y del campo**
|
|
133
|
+
|
|
134
|
+
```html
|
|
135
|
+
<!-- ❌ mal: el selector en medium dentro de un input large; no cubre el campo (vitrina: master-preview/_guia-moleculas/campos.ts:247) -->
|
|
136
|
+
<sui-input size="large" type="amount" label="Monto" [leadingControl]="true">
|
|
137
|
+
<sui-compact-select-for-input data-slot="start" size="medium" [country]="false" [items]="monedas" />
|
|
138
|
+
</sui-input>
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
```html
|
|
142
|
+
<!-- ✅ bien -->
|
|
143
|
+
<sui-input [size]="bp.sizeControl()" type="amount" label="Monto" [leadingControl]="true">
|
|
144
|
+
<sui-compact-select-for-input data-slot="start" [size]="bp.sizeControl()" [country]="false" [items]="monedas" />
|
|
145
|
+
</sui-input>
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
**Dónde se proyecta**
|
|
149
|
+
|
|
150
|
+
```html
|
|
151
|
+
<!-- ❌ mal: slot="prefix" no proyecta y, sin leadingControl, el input no dibuja el divisor -->
|
|
152
|
+
<sui-input [size]="bp.sizeControl()" type="amount" label="Monto">
|
|
153
|
+
<sui-compact-select-for-input slot="prefix" [size]="bp.sizeControl()" [country]="false" [items]="monedas" />
|
|
154
|
+
</sui-input>
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
```html
|
|
158
|
+
<!-- ✅ bien -->
|
|
159
|
+
<sui-input [size]="bp.sizeControl()" type="amount" label="Monto" [leadingControl]="true">
|
|
160
|
+
<sui-compact-select-for-input data-slot="start" [size]="bp.sizeControl()" [country]="false" [items]="monedas" />
|
|
161
|
+
</sui-input>
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
**Una moneda**
|
|
165
|
+
|
|
166
|
+
```html
|
|
167
|
+
<!-- ❌ mal: country arranca en true; una moneda no lleva bandera -->
|
|
168
|
+
<sui-compact-select-for-input data-slot="start" [size]="bp.sizeControl()" [items]="monedas" [(selected)]="moneda" />
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
```html
|
|
172
|
+
<!-- ✅ bien -->
|
|
173
|
+
<sui-compact-select-for-input data-slot="start" [size]="bp.sizeControl()" [country]="false"
|
|
174
|
+
[items]="monedas" [(selected)]="moneda" />
|
|
175
|
+
```
|
|
176
|
+
|
|
113
177
|
## Ejemplo
|
|
114
178
|
|
|
115
179
|
```html
|
|
116
|
-
<sui-input label="Monto" type="amount" placeholder="0.00" [leadingControl]="true" [(value)]="monto">
|
|
117
|
-
<sui-compact-select-for-input data-slot="start" size="
|
|
180
|
+
<sui-input label="Monto" type="amount" placeholder="0.00" [size]="bp.sizeControl()" [leadingControl]="true" [(value)]="monto">
|
|
181
|
+
<sui-compact-select-for-input data-slot="start" [size]="bp.sizeControl()" [country]="false"
|
|
118
182
|
[items]="monedas" [(selected)]="moneda" />
|
|
119
183
|
</sui-input>
|
|
120
184
|
```
|
|
@@ -41,24 +41,24 @@ se elige → card de selección.**
|
|
|
41
41
|
|
|
42
42
|
| type | cuándo | fuente |
|
|
43
43
|
|---|---|---|
|
|
44
|
-
| `avatar` (`avatar`) | Una persona o un local con foto. El color de las iniciales va por rol: local `orange`, repartidor `green`, cliente `blue`. | canon (avatar por rol)
|
|
45
|
-
| `left-icon` (`icon`) | La misma fila cuando no hay foto: `store-2-line` para el local sin logo. |
|
|
46
|
-
| `basic` | Ver «No usar». |
|
|
47
|
-
| `company` (`avatar` + `companyLogoSrc`) | Ver «No usar». |
|
|
48
|
-
| `brand` (`brand`) | Ver «No usar». |
|
|
49
|
-
| `card-provider` (`brand`) | Ver «No usar». |
|
|
44
|
+
| `avatar` (`avatar`) | Una persona o un local con foto. El color de las iniciales va por rol: local `orange`, repartidor `green`, cliente `blue`. | canon (avatar por rol) · el uso: canon (aprobado por el dueño, 05-10-2026, bloque B2) |
|
|
45
|
+
| `left-icon` (`icon`) | La misma fila cuando no hay foto: `store-2-line` para el local sin logo. | canon (aprobado por el dueño, 05-10-2026, bloque B2; precedente `master-overview.html:224`) |
|
|
46
|
+
| `basic` | Ver «No usar». | canon (aprobado por el dueño, 05-10-2026, bloque B6) |
|
|
47
|
+
| `company` (`avatar` + `companyLogoSrc`) | Ver «No usar». | canon (aprobado por el dueño, 05-10-2026, bloque B6) |
|
|
48
|
+
| `brand` (`brand`) | Ver «No usar». | canon (aprobado por el dueño, 05-10-2026, bloque B6) |
|
|
49
|
+
| `card-provider` (`brand`) | Ver «No usar». | canon (aprobado por el dueño, 05-10-2026, bloque B6) |
|
|
50
50
|
|
|
51
51
|
### Las piezas
|
|
52
52
|
|
|
53
53
|
| prop | cuándo | fuente |
|
|
54
54
|
|---|---|---|
|
|
55
55
|
| `title` | Siempre. El nombre, nunca un id (regla de la pasada de UX). | canon (CLAUDE.md, «un identificador nunca es el título») |
|
|
56
|
-
| `subtitle` | El dato que se compara entre filas: «214 pedidos este mes», «38 calificaciones». |
|
|
57
|
-
| `badge` | Un dato chico que se compara de un vistazo (la nota). El color sigue el significado del badge: `red` si está mal. |
|
|
58
|
-
| `dismissible` | La X solo cuando quitar la fila ES la acción (sacar a alguien del equipo, borrar una tarjeta). **El default es `true`**: pasa `false` siempre que no. |
|
|
56
|
+
| `subtitle` | El dato que se compara entre filas: «214 pedidos este mes», «38 calificaciones». | canon (aprobado por el dueño, 05-10-2026, bloque B4) |
|
|
57
|
+
| `badge` | Un dato chico que se compara de un vistazo (la nota). El color sigue el significado del badge: `red` si está mal. | canon (aprobado por el dueño, 05-10-2026, bloque B3; badge: canon de colores) |
|
|
58
|
+
| `dismissible` | La X solo cuando quitar la fila ES la acción (sacar a alguien del equipo, borrar una tarjeta). **El default es `true`**: pasa `false` siempre que no. | canon (aprobado por el dueño, 05-10-2026, bloque B8) |
|
|
59
59
|
| `dismissAriaLabel` | Siempre que haya X: «Quitar a Rosa del equipo», no el default «Descartar». | propuesta |
|
|
60
|
-
| `sublabel` | Ver «No usar». |
|
|
61
|
-
| `disabled` | Ver «No usar». |
|
|
60
|
+
| `sublabel` | Ver «No usar». | canon (aprobado por el dueño, 05-10-2026, bloque B6) |
|
|
61
|
+
| `disabled` | Ver «No usar». | canon (aprobado por el dueño, 05-10-2026, bloque B6) |
|
|
62
62
|
|
|
63
63
|
**Usos de hoy que rompen las reglas:** 0. Las 4 apagan la X a mano: el default de `dismissible`
|
|
64
64
|
no le sirve a ningún uso de hoy.
|
|
@@ -79,12 +79,30 @@ táctil de `large` es de **44** (desde el 04-10-2026; 40 en web).
|
|
|
79
79
|
| uso | mobile | web | fuente |
|
|
80
80
|
|---|---|---|---|
|
|
81
81
|
| fila | 74, sin cambio | 74, sin cambio | medido del `.scss` |
|
|
82
|
-
| X para quitar | `large` (32, área 44) | `medium` (20) |
|
|
82
|
+
| X para quitar | `large` (32, área 44) | `medium` (20) | mobile: canon (dueño, 04-10-2026): piso táctil 44 en el teléfono · web: canon (aprobado por el dueño, 05-10-2026, bloque B1) (el tamaño `large` es extensión SUI aprobada el 03-10-2026) |
|
|
83
83
|
|
|
84
84
|
```html
|
|
85
|
-
<sui-content-card … [size]="bp.
|
|
85
|
+
<sui-content-card … [size]="bp.tactil() ? 'large' : 'medium'" (dismiss)="quitar(item)" />
|
|
86
86
|
```
|
|
87
87
|
|
|
88
|
+
### Por dispositivo (D16)
|
|
89
|
+
|
|
90
|
+
No está en la tabla por componente de D16 (dueño, 05-10-2026). La fila no cambia; el `size` solo
|
|
91
|
+
mueve la X, que **se toca**, así que va como «lo que se toca».
|
|
92
|
+
|
|
93
|
+
| dispositivo | size | nota |
|
|
94
|
+
|---|---|---|
|
|
95
|
+
| celular chico (< 380 px) | `large` (32, área 44) | interino: D16 pide `medium` con área de 44, pero la X `medium` tiene área de 20; hasta que el DS la estire, el mismo que el celular |
|
|
96
|
+
| celular (380–767 px) | `large` (32, área 44) | |
|
|
97
|
+
| tablet táctil (`pointer: coarse`) | `large` (32, área 40) | también se toca. Ojo: el área de 44 del `::before` está bajo `@media (max-width: 767px)` (`sui-content-card.scss:118`), así que en la tablet se queda en 40 hasta que el DS la prenda con `pointer: coarse` |
|
|
98
|
+
| computadora (`pointer: fine`) | `medium` (20) | |
|
|
99
|
+
|
|
100
|
+
Ultrawide (≥ 1920 px): igual que la computadora. Con `[dismissible]="false"` (los 4 usos de hoy) el
|
|
101
|
+
`size` no cambia nada y no hace falta pasarlo. El badge de adentro **no se toca**: su `size` va
|
|
102
|
+
dentro del objeto `badge` con `bp.sizeBadge()` (como `master-overview.html:335`).
|
|
103
|
+
|
|
104
|
+
En master-pedidos: `[size]="bp.tactil() ? 'large' : 'medium'"` (no hay helper propio).
|
|
105
|
+
|
|
88
106
|
## «No usar»: por qué no hoy y cuándo sí
|
|
89
107
|
|
|
90
108
|
| qué | por qué no hoy | cuándo sí, en un flujo nuevo |
|
|
@@ -135,6 +153,49 @@ táctil de `large` es de **44** (desde el 04-10-2026; 40 en web).
|
|
|
135
153
|
- No tiene `interactive` ni output de toque: la fila no se puede tocar entera.
|
|
136
154
|
- El host borra el atributo `title` del DOM y lleva `role="group"` con `aria-label` = `title`.
|
|
137
155
|
|
|
156
|
+
## Bien y mal
|
|
157
|
+
|
|
158
|
+
**La nota como badge**
|
|
159
|
+
|
|
160
|
+
```html
|
|
161
|
+
<!-- ❌ mal: badge en string sale naranja lighter small, en MAYÚSCULAS (prototipo: master-prototipos.html:146) -->
|
|
162
|
+
<sui-content-card type="avatar" [avatar]="{ initials: yo.iniciales, color: 'orange' }" [title]="yo.nombre"
|
|
163
|
+
badge="★ 5.0" [dismissible]="false" />
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
```html
|
|
167
|
+
<!-- ✅ bien -->
|
|
168
|
+
<sui-content-card type="avatar" [avatar]="{ initials: yo.iniciales, color: 'orange' }" [title]="yo.nombre"
|
|
169
|
+
[badge]="{ label: '5.0 ★', color: 'orange', variant: 'lighter', size: bp.sizeBadge() }"
|
|
170
|
+
[dismissible]="false" />
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
**Una fila que no se quita**
|
|
174
|
+
|
|
175
|
+
```html
|
|
176
|
+
<!-- ❌ mal: dismissible arranca en true; sale una X que no hace nada -->
|
|
177
|
+
<sui-content-card type="avatar" [avatar]="avatarDe(c, 'blue')" [title]="c.nombre" [subtitle]="c.detalle" />
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
```html
|
|
181
|
+
<!-- ✅ bien -->
|
|
182
|
+
<sui-content-card type="avatar" [avatar]="avatarDe(c, 'blue')" [title]="c.nombre" [subtitle]="c.detalle"
|
|
183
|
+
[dismissible]="false" />
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
**Una fila que sí se quita**
|
|
187
|
+
|
|
188
|
+
```html
|
|
189
|
+
<!-- ❌ mal: la X en medium mide 20 en el celular y se anuncia como «Descartar» -->
|
|
190
|
+
<sui-content-card type="avatar" [avatar]="m.avatar" [title]="m.nombre" (dismiss)="quitar(m)" />
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
```html
|
|
194
|
+
<!-- ✅ bien -->
|
|
195
|
+
<sui-content-card type="avatar" [avatar]="m.avatar" [title]="m.nombre" [size]="bp.tactil() ? 'large' : 'medium'"
|
|
196
|
+
[dismissAriaLabel]="'Quitar a ' + m.nombre + ' del equipo'" (dismiss)="quitar(m)" />
|
|
197
|
+
```
|
|
198
|
+
|
|
138
199
|
## Ejemplo
|
|
139
200
|
|
|
140
201
|
```html
|
|
@@ -143,6 +204,6 @@ táctil de `large` es de **44** (desde el 04-10-2026; 40 en web).
|
|
|
143
204
|
[avatar]="{ src: local.logo, initials: 'SA', color: 'orange' }"
|
|
144
205
|
[title]="local.nombre"
|
|
145
206
|
[subtitle]="local.pedidos + ' pedidos este mes'"
|
|
146
|
-
[badge]="{ label: '4.6 ★', color: 'orange', variant: 'lighter', size:
|
|
207
|
+
[badge]="{ label: '4.6 ★', color: 'orange', variant: 'lighter', size: bp.sizeBadge() }"
|
|
147
208
|
[dismissible]="false" />
|
|
148
209
|
```
|
|
@@ -24,8 +24,8 @@ Story: [Atoms/Divider/Content Divider](https://sui-design-system.web.app/?path=/
|
|
|
24
24
|
> **En la guía del DS este componente se llama «Divider»** y trae: línea (default), línea con
|
|
25
25
|
> espacio, línea con texto («OR»), solo texto, texto con fondo («a menudo va en modales») y
|
|
26
26
|
> contenido al centro. Los cuatro tipos con botones vienen del Figma del DS, no de la guía. Lo
|
|
27
|
-
> marcado «según la guía del DS» sale de su texto o de sus ejemplos;
|
|
28
|
-
>
|
|
27
|
+
> marcado «según la guía del DS» sale de su texto o de sus ejemplos; las reglas marcadas canon
|
|
28
|
+
> están aprobadas; lo que sigue en propuesta espera decisión.
|
|
29
29
|
>
|
|
30
30
|
> Uso medido el 04-10-2026 en `master-pedidos/src/app`: **3 content-dividers en 3 archivos**:
|
|
31
31
|
> `pages/auth/login/login.html:61` y `pages/auth/register/register.html:97` (`text-line` «o») y
|
|
@@ -37,21 +37,21 @@ Story: [Atoms/Divider/Content Divider](https://sui-design-system.web.app/?path=/
|
|
|
37
37
|
|---|---|---|---|
|
|
38
38
|
| `text-line` | El «o» entre dos formas de hacer lo mismo. | `text="o"` entre «Continuar con Google» y el formulario de correo | según la guía del DS («OR») |
|
|
39
39
|
| `solid-text` | Cabecera de un grupo dentro de una lista o un modal, con fondo. | «Con pocos pedidos» (`master-drivers.html:192`) | según la guía del DS («a menudo en modales») |
|
|
40
|
-
| `text` | Cabecera de grupo sin fondo, en una lista partida por fecha o por tipo. | «Ayer», «Esta semana» | según la guía del DS (existe) ·
|
|
40
|
+
| `text` | Cabecera de grupo sin fondo, en una lista partida por fecha o por tipo. | «Ayer», «Esta semana» | según la guía del DS (existe) · cuándo: canon (aprobado por el dueño, 05-10-2026, bloque B2) |
|
|
41
41
|
| `line` (default) | **No usar** (ver abajo). | — | según la guía del DS (default) |
|
|
42
42
|
| `line-spacing` | **No usar** (ver abajo). | — | según la guía del DS |
|
|
43
|
-
| `icon-button` | **No usar** hoy (ver abajo). | `icon="add-line"` |
|
|
44
|
-
| `text-button` | **No usar** hoy (ver abajo). | «Ver 12 más» |
|
|
45
|
-
| `icon-button-group` | **No usar** hoy (ver abajo). | Subir · agregar · bajar |
|
|
46
|
-
| `text-button-group` | **No usar** hoy (ver abajo). | «Producto» · «Sección» |
|
|
43
|
+
| `icon-button` | **No usar** hoy (ver abajo). | `icon="add-line"` | canon (aprobado por el dueño, 05-10-2026, bloque B6) |
|
|
44
|
+
| `text-button` | **No usar** hoy (ver abajo). | «Ver 12 más» | canon (aprobado por el dueño, 05-10-2026, bloque B6) |
|
|
45
|
+
| `icon-button-group` | **No usar** hoy (ver abajo). | Subir · agregar · bajar | canon (aprobado por el dueño, 05-10-2026, bloque B6) |
|
|
46
|
+
| `text-button-group` | **No usar** hoy (ver abajo). | «Producto» · «Sección» | canon (aprobado por el dueño, 05-10-2026, bloque B6) |
|
|
47
47
|
|
|
48
48
|
| propiedad | regla | fuente |
|
|
49
49
|
|---|---|---|
|
|
50
|
-
| `text` | Se escribe en sentence case («o», «Con pocos pedidos»): el componente lo pasa a MAYÚSCULAS. |
|
|
51
|
-
| `icon` | Solo en `icon-button`. Nombre Remix sin `ri-`. |
|
|
52
|
-
| `ariaLabel` | **Obligatorio en `icon-button`**: sin él el lector dice «Acción». |
|
|
50
|
+
| `text` | Se escribe en sentence case («o», «Con pocos pedidos»): el componente lo pasa a MAYÚSCULAS. | canon (CANON-SUI §5.1: sentence case, nunca ALL CAPS a mano) |
|
|
51
|
+
| `icon` | Solo en `icon-button`. Nombre Remix sin `ri-`. | canon (aprobado por el dueño, 05-10-2026, bloque B9) |
|
|
52
|
+
| `ariaLabel` | **Obligatorio en `icon-button`**: sin él el lector dice «Acción». | canon (aprobado por el dueño, 05-10-2026, bloque B5) |
|
|
53
53
|
| `items` | Solo en los `-group`: de 2 a 3, cada uno con `ariaLabel` si es ícono. | propuesta, falta aprobación |
|
|
54
|
-
| `disabled` | El botón existe pero hoy no aplica (lista ya completa). |
|
|
54
|
+
| `disabled` | El botón existe pero hoy no aplica (lista ya completa). | canon (aprobado por el dueño, 05-10-2026, bloque B8) |
|
|
55
55
|
|
|
56
56
|
**Corregido el 03-10-2026:** los 2 «o» que estaban hechos a mano (login y registro) ya son `type="text-line"`.
|
|
57
57
|
|
|
@@ -66,10 +66,13 @@ Story: [Atoms/Divider/Content Divider](https://sui-design-system.web.app/?path=/
|
|
|
66
66
|
|
|
67
67
|
## Tamaño en mobile y en web
|
|
68
68
|
|
|
69
|
-
Criterio de la app: **
|
|
70
|
-
(
|
|
71
|
-
|
|
72
|
-
|
|
69
|
+
Criterio de la app: **D16, tamaño por dispositivo** (canon, dueño, 05-10-2026), que reemplaza al
|
|
70
|
+
«tamaño por plataforma» del 03-10-2026 (mobile grande, web chico). La columna «mobile» es el celular de
|
|
71
|
+
380 px o más y, en lo que se toca, también la tablet (`pointer: coarse`). La columna «web» es la
|
|
72
|
+
computadora (`pointer: fine`) y, en lo que no se toca, también la tablet. En el celular chico
|
|
73
|
+
(< 380 px) va `medium` a la vista, sin achicar el área de 44 de lo que se toca. **Nada en `small` ni
|
|
74
|
+
`xsmall`**, salvo lo que el componente solo tiene en chico. Hoy la app corta con
|
|
75
|
+
`BreakpointsService.isMobile()` (≤ 767 px), que todavía no mira el puntero ni los 380 px.
|
|
73
76
|
|
|
74
77
|
| uso | mobile | web | fuente |
|
|
75
78
|
|---|---|---|---|
|
|
@@ -79,6 +82,15 @@ de la app.
|
|
|
79
82
|
los botones (`icon-button`, `text-button`, grupos) quedan debajo de los 44 px del dedo; es otra
|
|
80
83
|
razón para no usarlos hoy. Si un flujo nuevo los necesita en mobile, se pide al DS un tamaño grande.
|
|
81
84
|
|
|
85
|
+
### Por dispositivo (D16)
|
|
86
|
+
|
|
87
|
+
No aplica: **no tiene `size`** (texto de 11–12 y botones de 32 en todos los dispositivos, del
|
|
88
|
+
celular chico al ultrawide). Con D16 los botones de 32 quedan bajo los 44 también en la tablet
|
|
89
|
+
táctil (`pointer: coarse`), no solo en el celular: una razón más para no usar los tipos con botón
|
|
90
|
+
hasta que el DS tenga un tamaño grande.
|
|
91
|
+
|
|
92
|
+
En master-pedidos: no hay helper ni `[size]`; solo `type` y `text`.
|
|
93
|
+
|
|
82
94
|
## API
|
|
83
95
|
|
|
84
96
|
<!-- api:inicio -->
|
|
@@ -104,13 +116,52 @@ Outputs: `(buttonClick)` en `icon-button` y `text-button`; `(itemClick)` con
|
|
|
104
116
|
|
|
105
117
|
## Trampas
|
|
106
118
|
|
|
107
|
-
- **
|
|
119
|
+
- **El texto de `text-line`, `text` y `solid-text` sale en MAYÚSCULAS** por CSS: escribirlo normal.
|
|
120
|
+
Los botones (`text-button`, `text-button-group`) no van en mayúsculas.
|
|
108
121
|
- **`text` y `solid-text` alinean a la izquierda**, no al centro (así está en el Figma).
|
|
109
122
|
- `text-line` usa 11 px; `text` y `solid-text`, 12 px.
|
|
110
123
|
- Sin `ariaLabel`, el `icon-button` se anuncia como «Acción» y los ítems de grupo como
|
|
111
124
|
«Acción 0», «Acción 1».
|
|
112
125
|
- `line` y `line-spacing` existen, pero la línea sola es `sui-divider`.
|
|
113
126
|
|
|
127
|
+
## Bien y mal
|
|
128
|
+
|
|
129
|
+
**El «o» entre Google y el correo**
|
|
130
|
+
|
|
131
|
+
```html
|
|
132
|
+
<!-- ❌ mal: el «o» armado a mano, como estaba en login.html:61 y register.html:97 hasta el 03-10-2026 -->
|
|
133
|
+
<div class="auth-page__divider"><span>o</span></div>
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
```html
|
|
137
|
+
<!-- ✅ bien -->
|
|
138
|
+
<sui-content-divider type="text-line" text="o" />
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
**Cabecera de grupo en MAYÚSCULAS a mano**
|
|
142
|
+
|
|
143
|
+
```html
|
|
144
|
+
<!-- ❌ mal: el componente ya lo pasa a MAYÚSCULAS; el texto va en sentence case (CANON-SUI §5.1) -->
|
|
145
|
+
<sui-content-divider type="solid-text" text="CON POCOS PEDIDOS" />
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
```html
|
|
149
|
+
<!-- ✅ bien -->
|
|
150
|
+
<sui-content-divider type="solid-text" text="Con pocos pedidos" />
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
**Una línea sola entre dos bloques**
|
|
154
|
+
|
|
155
|
+
```html
|
|
156
|
+
<!-- ❌ mal: `line` no dice nada; la línea sola es `sui-divider`, que pesa menos -->
|
|
157
|
+
<sui-content-divider type="line" />
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
```html
|
|
161
|
+
<!-- ✅ bien -->
|
|
162
|
+
<sui-divider />
|
|
163
|
+
```
|
|
164
|
+
|
|
114
165
|
## Ejemplo
|
|
115
166
|
|
|
116
167
|
```html
|
|
@@ -39,54 +39,86 @@ content-card · ajuste → switch-label.**
|
|
|
39
39
|
|
|
40
40
|
| type | cuándo | fuente |
|
|
41
41
|
|---|---|---|
|
|
42
|
-
| `left-icon` (`icon`) | El ícono dice de qué va la fila: los consejos («Revisa tu zona de cobertura»), «Contactar soporte». Sale en un círculo con borde (`sui-key-icon` stroke). |
|
|
43
|
-
| `basic` | Fila de dato sin cara, casi siempre con badge: «Datos personales → Completados». |
|
|
42
|
+
| `left-icon` (`icon`) | El ícono dice de qué va la fila: los consejos («Revisa tu zona de cobertura»), «Contactar soporte». Sale en un círculo con borde (`sui-key-icon` stroke). | canon (aprobado por el dueño, 05-10-2026, bloque B2; 14 de 18) |
|
|
43
|
+
| `basic` | Fila de dato sin cara, casi siempre con badge: «Datos personales → Completados». | canon (aprobado por el dueño, 05-10-2026, bloque B2) |
|
|
44
44
|
| `avatar` (`avatar`) | Una persona o un local. El color de las iniciales va por rol: local `orange`, repartidor `green`, cliente `blue`. | canon (avatar por rol) |
|
|
45
|
-
| `company` (`avatar` + `companyLogoSrc`) | Ver «No usar». |
|
|
46
|
-
| `brand` (`brand`) | Ver «No usar». |
|
|
45
|
+
| `company` (`avatar` + `companyLogoSrc`) | Ver «No usar». | canon (aprobado por el dueño, 05-10-2026, bloque B6) |
|
|
46
|
+
| `brand` (`brand`) | Ver «No usar». | canon (aprobado por el dueño, 05-10-2026, bloque B6) |
|
|
47
47
|
|
|
48
48
|
### `size`
|
|
49
49
|
|
|
50
50
|
| size | cuándo | fuente |
|
|
51
51
|
|---|---|---|
|
|
52
|
-
| `large` (leading 48, título 16) | Consejos y pasos que se leen, con descripción larga (los 13 de hoy). |
|
|
53
|
-
| `medium` (leading 40, título 14, default) | Filas de dato en una lista: el negocio del repartidor, el resumen del registro. |
|
|
52
|
+
| `large` (leading 48, título 16) | Consejos y pasos que se leen, con descripción larga (los 13 de hoy). | canon (aprobado por el dueño, 05-10-2026, bloque B1) |
|
|
53
|
+
| `medium` (leading 40, título 14, default) | Filas de dato en una lista: el negocio del repartidor, el resumen del registro. | canon (aprobado por el dueño, 05-10-2026, bloque B1) |
|
|
54
54
|
|
|
55
55
|
### Las piezas
|
|
56
56
|
|
|
57
57
|
| prop | cuándo | fuente |
|
|
58
58
|
|---|---|---|
|
|
59
|
-
| `label` | Siempre. En los consejos, una instrucción («Ponle foto a tus productos»); en los datos, el nombre del dato. |
|
|
60
|
-
| `description` | La explicación o el detalle. En los consejos, el porqué. |
|
|
61
|
-
| `badge` trailing (default) | El estado del dato a la derecha. Pasa el objeto con el color del badge: con string sale naranja. |
|
|
62
|
-
| `badgePlacement="title"` | El badge pegado al nombre, cuando la derecha queda libre o es angosta («Sabores Andinos · Propio»). |
|
|
63
|
-
| `sublabel` | Ver «No usar». |
|
|
64
|
-
| `toggle` / `toggleChecked` | Ver «No usar». |
|
|
65
|
-
| `disabled` | Ver «No usar». |
|
|
66
|
-
|
|
67
|
-
**Usos de hoy que rompen las reglas:** 0.
|
|
59
|
+
| `label` | Siempre. En los consejos, una instrucción («Ponle foto a tus productos»); en los datos, el nombre del dato. | canon (aprobado por el dueño, 05-10-2026, bloque B4) |
|
|
60
|
+
| `description` | La explicación o el detalle. En los consejos, el porqué. | canon (aprobado por el dueño, 05-10-2026, bloque B4) |
|
|
61
|
+
| `badge` trailing (default) | El estado del dato a la derecha. Pasa el objeto con el color del badge: con string sale naranja. | canon (aprobado por el dueño, 05-10-2026, bloque B3) |
|
|
62
|
+
| `badgePlacement="title"` | El badge pegado al nombre, cuando la derecha queda libre o es angosta («Sabores Andinos · Propio»). | canon (aprobado por el dueño, 05-10-2026, bloque B9) |
|
|
63
|
+
| `sublabel` | Ver «No usar». | canon (aprobado por el dueño, 05-10-2026, bloque B6) |
|
|
64
|
+
| `toggle` / `toggleChecked` | Ver «No usar». | canon (aprobado por el dueño, 05-10-2026, bloque B6) |
|
|
65
|
+
| `disabled` | Ver «No usar». | canon (aprobado por el dueño, 05-10-2026, bloque B6) |
|
|
66
|
+
|
|
67
|
+
**Usos de hoy que rompen las reglas:** 0 en tipo y piezas. **Con D16 (medido el 06-10-2026)
|
|
68
|
+
rompen el `size` 5**: `pages/driver/driver-dashboard/driver-dashboard.html:1236` (`medium` fijo en
|
|
69
|
+
una fila de dato), los 3 de `step-complete.html:48`–`:58` (sin `size`, fila de dato) y
|
|
70
|
+
`step-complete.html:80` (sin `size`, fila que se toca: queda en `medium` en el celular y la tablet,
|
|
71
|
+
donde la fila de D16 pide `large`). Ojo: en ese último el área táctil está bien (el `<a>` que lo
|
|
72
|
+
envuelve mide 66); lo que rompe es el tamaño de lectura, no el dedo. A mirar: los 3 badges de
|
|
68
73
|
`pages/driver-onboarding/step-complete/step-complete.html:48`–`:58` dicen estados de ciclo
|
|
69
74
|
(«Completados», «Esperando vinculación»); el README de `sui-badge` deja esos en
|
|
70
75
|
`sui-status-badge`, pero el content-label solo recibe la config del badge.
|
|
71
76
|
|
|
72
77
|
## Tamaño en mobile y en web
|
|
73
78
|
|
|
74
|
-
No se toca, así que no tiene que llegar a 44. El `size` es de lectura, no de dedo
|
|
79
|
+
No se toca, así que no tiene que llegar a 44. El `size` es de lectura, no de dedo: cuando la fila
|
|
80
|
+
entera se toca, el área de 44 la pone lo que la envuelve (un `<a>` o un botón), no el `size`.
|
|
75
81
|
|
|
76
82
|
| uso | mobile | web | fuente |
|
|
77
83
|
|---|---|---|---|
|
|
78
|
-
| consejos y pasos | `large` | `large` |
|
|
79
|
-
| filas de dato | `
|
|
80
|
-
| fila que se toca (soporte) | `large
|
|
84
|
+
| consejos y pasos | `large` | `large` | canon (aprobado por el dueño, 05-10-2026, bloque B1) |
|
|
85
|
+
| filas de dato | `large` | `medium` | canon (dueño, 05-10-2026, D16): grande en el celular; `medium` en la computadora, la tablet y el celular chico (no se toca) |
|
|
86
|
+
| fila que se toca (soporte) | `large` (celular y tablet táctil) | `medium` (computadora y celular chico) | canon (aprobado por el dueño, 05-10-2026, bloque B1; dispositivos por D16). Además, lo que la envuelve mide 44 o más de alto |
|
|
81
87
|
|
|
82
88
|
Alto de la fila, medido: `medium` 40 (máx. entre el leading de 40 y el texto 20 + 4 + 16) y
|
|
83
89
|
`large` 48 (máx. entre 48 y 24 + 4 + 20). Lo que se toca es lo que la envuelve: «Contactar soporte»
|
|
84
90
|
va dentro de un `<a>` con padding 12 y borde 1, que da 66.
|
|
85
91
|
|
|
86
92
|
```html
|
|
87
|
-
<sui-content-label [size]="bp.
|
|
93
|
+
<sui-content-label [size]="bp.celular() ? 'large' : 'medium'" … /> <!-- filas de dato (D16) -->
|
|
94
|
+
<sui-content-label [size]="bp.tactil() && !bp.celularChico() ? 'large' : 'medium'" … /> <!-- fila que se toca (D16) -->
|
|
88
95
|
```
|
|
89
96
|
|
|
97
|
+
### Por dispositivo (D16)
|
|
98
|
+
|
|
99
|
+
Fila de D16 para `content-label` (dueño, 05-10-2026). Es de lectura: sube un paso solo en el
|
|
100
|
+
celular, salvo que la fila entera se toque, que entonces sube también en la tablet táctil. En el
|
|
101
|
+
celular chico queda `medium` en los dos casos: la fila de D16 no lleva el «+ área 44» de lo que se
|
|
102
|
+
toca, porque el área la da lo que envuelve a la fila.
|
|
103
|
+
|
|
104
|
+
| dispositivo | size | nota |
|
|
105
|
+
|---|---|---|
|
|
106
|
+
| celular chico (< 380) | `medium` | también si la fila se toca: el área de 44 la pone el `<a>` que la envuelve («Contactar soporte» mide 66) |
|
|
107
|
+
| celular (380–767) | `large` | lo que no se toca sube un paso en el celular (P1 b) |
|
|
108
|
+
| tablet táctil (`pointer: coarse`) | `medium` · `large` si la fila se toca | |
|
|
109
|
+
| computadora (`pointer: fine`) | `medium` | |
|
|
110
|
+
|
|
111
|
+
Ultrawide: igual que la computadora; el espacio extra va al ancho de la lista, no a la fila.
|
|
112
|
+
|
|
113
|
+
Los **consejos y pasos** quedan en `large` en todos los dispositivos (tabla de arriba, bloque B1):
|
|
114
|
+
el `size` ahí es por la descripción larga, no por el dispositivo.
|
|
115
|
+
|
|
116
|
+
En master-pedidos: no hay helper propio. Filas de dato `[size]="bp.celular() ? 'large' : 'medium'"`
|
|
117
|
+
(da lo mismo que `bp.sizeBadge()`); fila que se toca
|
|
118
|
+
`[size]="bp.tactil() && !bp.celularChico() ? 'large' : 'medium'"` (`bp.tactil()` solo daría `large`
|
|
119
|
+
también en el celular chico, que la fila de D16 deja en `medium`);
|
|
120
|
+
consejos `size="large"`.
|
|
121
|
+
|
|
90
122
|
## «No usar»: por qué no hoy y cuándo sí
|
|
91
123
|
|
|
92
124
|
| qué | por qué no hoy | cuándo sí, en un flujo nuevo |
|
|
@@ -137,6 +169,53 @@ va dentro de un `<a>` con padding 12 y borde 1, que da 66.
|
|
|
137
169
|
- El host lleva `role="group"` y `aria-label` = `label`. El `toggle` toma su nombre del `label`
|
|
138
170
|
(y su descripción de `description`) con `aria-labelledby` (revisión 04-10-2026).
|
|
139
171
|
|
|
172
|
+
## Bien y mal
|
|
173
|
+
|
|
174
|
+
**Fila de dato con el tamaño fijo**
|
|
175
|
+
|
|
176
|
+
```html
|
|
177
|
+
<!-- ❌ mal: `medium` también en el celular, donde D16 pide `large` (driver-dashboard.html:1236; sin size en step-complete.html:48–58) -->
|
|
178
|
+
<sui-content-label type="avatar" size="medium" [avatar]="n.avatar"
|
|
179
|
+
[label]="n.tenantName" [badge]="n.badge" badgePlacement="title" />
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
```html
|
|
183
|
+
<!-- ✅ bien -->
|
|
184
|
+
<sui-content-label type="avatar" [size]="bp.celular() ? 'large' : 'medium'" [avatar]="n.avatar"
|
|
185
|
+
[label]="n.tenantName" [badge]="n.badge" badgePlacement="title" />
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
**Fila que se toca sin `size`**
|
|
189
|
+
|
|
190
|
+
```html
|
|
191
|
+
<!-- ❌ mal: queda en `medium` en el celular y la tablet táctil, donde D16 pide `large`; el área ya está bien, el `<a>` mide 66 (step-complete.html:80) -->
|
|
192
|
+
<a class="complete__quick-action" [href]="whatsappUrl">
|
|
193
|
+
<sui-content-label type="left-icon" icon="whatsapp-line" label="Contactar soporte" />
|
|
194
|
+
</a>
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
```html
|
|
198
|
+
<!-- ✅ bien -->
|
|
199
|
+
<a class="complete__quick-action" [href]="whatsappUrl">
|
|
200
|
+
<sui-content-label type="left-icon" icon="whatsapp-line" label="Contactar soporte"
|
|
201
|
+
[size]="bp.tactil() && !bp.celularChico() ? 'large' : 'medium'" />
|
|
202
|
+
</a>
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
**Un ajuste que se prende o apaga**
|
|
206
|
+
|
|
207
|
+
```html
|
|
208
|
+
<!-- ❌ mal: el `toggle` es un switch `medium` fijo y la fila no se toca entera («No usar») -->
|
|
209
|
+
<sui-content-label label="Sonidos de la app" description="Avisos al confirmar pedidos"
|
|
210
|
+
[toggle]="true" [(toggleChecked)]="sonidos" />
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
```html
|
|
214
|
+
<!-- ✅ bien -->
|
|
215
|
+
<sui-switch-label [flip]="true" label="Sonidos de la app" description="Avisos al confirmar pedidos"
|
|
216
|
+
[size]="bp.controlSize()" [(active)]="sonidos" />
|
|
217
|
+
```
|
|
218
|
+
|
|
140
219
|
## Ejemplo
|
|
141
220
|
|
|
142
221
|
```html
|