@ajuarezso/sui-design-system 0.25.0 → 0.25.2
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 +83 -9
- package/docs/sui-activity-feed/README.md +55 -1
- package/docs/sui-activity-filter/README.md +50 -1
- package/docs/sui-alert/README.md +54 -0
- package/docs/sui-app-store-badge/README.md +57 -3
- package/docs/sui-avatar/README.md +66 -6
- package/docs/sui-avatar-group/README.md +64 -2
- package/docs/sui-badge/README.md +79 -11
- package/docs/sui-banner/README.md +70 -5
- package/docs/sui-brand-logo/README.md +77 -14
- package/docs/sui-breadcrumb-item/README.md +51 -0
- package/docs/sui-breadcrumbs/README.md +48 -0
- package/docs/sui-button/README.md +68 -6
- package/docs/sui-button-group/README.md +70 -5
- package/docs/sui-button-group-item/README.md +68 -4
- package/docs/sui-card/README.md +97 -10
- package/docs/sui-chart-legend/README.md +53 -0
- package/docs/sui-chart-legend-dot/README.md +49 -0
- package/docs/sui-checkbox/README.md +106 -26
- package/docs/sui-checkbox-card/README.md +58 -2
- package/docs/sui-checkbox-label/README.md +89 -23
- package/docs/sui-circular-progress-bar/README.md +63 -5
- package/docs/sui-color-dot/README.md +61 -5
- package/docs/sui-color-picker/README.md +62 -4
- package/docs/sui-command-menu-footer/README.md +49 -0
- package/docs/sui-command-menu-item/README.md +63 -4
- package/docs/sui-command-menu-search/README.md +58 -4
- package/docs/sui-compact-avatar-group/README.md +61 -4
- package/docs/sui-compact-button/README.md +112 -28
- package/docs/sui-compact-select/README.md +58 -4
- package/docs/sui-compact-select-for-input/README.md +69 -5
- package/docs/sui-content-card/README.md +63 -2
- package/docs/sui-content-divider/README.md +49 -1
- package/docs/sui-content-label/README.md +83 -4
- package/docs/sui-counter-input/README.md +91 -7
- package/docs/sui-date-selector/README.md +61 -3
- package/docs/sui-datepicker/README.md +72 -5
- package/docs/sui-day-cell/README.md +60 -3
- package/docs/sui-day-label/README.md +52 -3
- package/docs/sui-divider/README.md +57 -5
- package/docs/sui-drawer-footer/README.md +63 -2
- package/docs/sui-drawer-header/README.md +60 -3
- package/docs/sui-dropdown-caption/README.md +53 -1
- package/docs/sui-dropdown-item/README.md +72 -6
- package/docs/sui-dropdown-menu/README.md +74 -5
- package/docs/sui-dropdown-search/README.md +57 -1
- package/docs/sui-emoji/README.md +82 -18
- package/docs/sui-empty-state/README.md +68 -4
- package/docs/sui-fancy-button/README.md +59 -1
- package/docs/sui-file-icon/README.md +56 -1
- package/docs/sui-file-upload/README.md +69 -9
- package/docs/sui-file-upload-card/README.md +53 -2
- package/docs/sui-filter/README.md +74 -5
- package/docs/sui-flag/README.md +62 -1
- package/docs/sui-form-hint/README.md +54 -5
- package/docs/sui-form-label/README.md +53 -1
- package/docs/sui-href/README.md +47 -0
- package/docs/sui-icon/README.md +69 -4
- package/docs/sui-image-upload/README.md +70 -3
- package/docs/sui-image-upload-profile/README.md +58 -0
- package/docs/sui-img-retry/README.md +49 -0
- package/docs/sui-inline-input/README.md +61 -3
- package/docs/sui-inline-select/README.md +60 -0
- package/docs/sui-input/README.md +77 -14
- package/docs/sui-integration-switch/README.md +69 -2
- package/docs/sui-kbd/README.md +71 -7
- package/docs/sui-key-icon/README.md +65 -6
- package/docs/sui-link-button/README.md +79 -13
- package/docs/sui-logo/README.md +74 -4
- package/docs/sui-modal/README.md +61 -2
- package/docs/sui-modal-footer/README.md +83 -9
- package/docs/sui-modal-header/README.md +56 -0
- package/docs/sui-modal-sheet/README.md +72 -10
- package/docs/sui-notification/README.md +71 -1
- package/docs/sui-notification-footer/README.md +51 -1
- package/docs/sui-notification-tab-menu/README.md +57 -1
- package/docs/sui-otp-input/README.md +67 -6
- package/docs/sui-page-header/README.md +83 -15
- package/docs/sui-pagination/README.md +60 -0
- package/docs/sui-password-strength/README.md +50 -1
- package/docs/sui-payment-icon/README.md +66 -7
- package/docs/sui-period-range/README.md +65 -6
- package/docs/sui-popover/README.md +73 -7
- package/docs/sui-product-card/README.md +76 -8
- package/docs/sui-progress-bar/README.md +72 -8
- package/docs/sui-progress-bar-label/README.md +69 -12
- package/docs/sui-radio/README.md +83 -6
- package/docs/sui-radio-card/README.md +58 -4
- package/docs/sui-radio-label/README.md +86 -19
- package/docs/sui-rating/README.md +81 -14
- package/docs/sui-rich-editor/README.md +45 -0
- package/docs/sui-segmented-control/README.md +83 -14
- package/docs/sui-select/README.md +72 -3
- package/docs/sui-sidebar/README.md +64 -9
- package/docs/sui-slider/README.md +68 -1
- package/docs/sui-social-button/README.md +63 -3
- package/docs/sui-status-badge/README.md +64 -6
- package/docs/sui-stepper/README.md +57 -0
- package/docs/sui-store-card/README.md +71 -8
- package/docs/sui-switch/README.md +80 -9
- package/docs/sui-switch-card/README.md +70 -6
- package/docs/sui-switch-label/README.md +90 -13
- package/docs/sui-tab-chips/README.md +79 -9
- package/docs/sui-tab-menu-horizontal/README.md +62 -1
- package/docs/sui-tab-menu-vertical/README.md +56 -3
- package/docs/sui-table/README.md +68 -7
- package/docs/sui-tag/README.md +75 -4
- package/docs/sui-tag-input/README.md +71 -7
- package/docs/sui-textarea/README.md +78 -11
- package/docs/sui-time-picker/README.md +70 -7
- package/docs/sui-toast/README.md +65 -5
- package/docs/sui-tooltip/README.md +61 -4
- package/docs/sui-topbar/README.md +57 -3
- package/docs/sui-topbar-button/README.md +57 -3
- package/docs/sui-topbar-item/README.md +61 -0
- package/docs/sui-topbar-user/README.md +56 -0
- package/fesm2022/ajuarezso-sui-design-system.mjs +216 -227
- package/fesm2022/ajuarezso-sui-design-system.mjs.map +1 -1
- package/package.json +1 -1
- package/types/ajuarezso-sui-design-system.d.ts +68 -45
|
@@ -71,7 +71,7 @@ una → radio-card.**
|
|
|
71
71
|
| `medium` (default), `small` | No usar en pantallas nuevas. | canon (aprobado por el dueño, 28-09-2026) |
|
|
72
72
|
|
|
73
73
|
**Usos de hoy que rompen las reglas: 0.** El que iba sin `size`
|
|
74
|
-
(`pages/super-admin/master-administrados/master-administrados.html:
|
|
74
|
+
(`pages/super-admin/master-administrados/master-administrados.html:171`) y los switch-cards que se
|
|
75
75
|
guardaban con un botón se corrigieron el 03-10-2026.
|
|
76
76
|
|
|
77
77
|
## Tamaño en mobile y en web
|
|
@@ -88,13 +88,27 @@ sola. El `size` cambia solo la casilla.
|
|
|
88
88
|
<sui-checkbox-card [size]="bp.controlSize()" … /> <!-- isMobile() ? 'xlarge' : 'large' -->
|
|
89
89
|
```
|
|
90
90
|
|
|
91
|
+
### Por dispositivo (D16)
|
|
92
|
+
|
|
93
|
+
| dispositivo | size | nota |
|
|
94
|
+
|---|---|---|
|
|
95
|
+
| celular chico (< 380) | `xlarge` | la card entera ya pasa de 44; el size solo agranda la casilla |
|
|
96
|
+
| celular (380–767) | `xlarge` | |
|
|
97
|
+
| tablet táctil (`pointer: coarse`) | `xlarge` | `bp.controlSize()` mira solo el ancho: un iPad de 768 o más recibe `large` hasta que el helper mire el puntero |
|
|
98
|
+
| computadora (`pointer: fine`) | `large` | un paso menos que el celular; no baja a `medium` (D16, dueño 06-10-2026) |
|
|
99
|
+
|
|
100
|
+
Ultrawide: igual que la computadora (`large`).
|
|
101
|
+
|
|
102
|
+
En master-pedidos: `[size]="bp.controlSize()"` (`xlarge` hasta 767 px, `large` desde ahí). La
|
|
103
|
+
expresión exacta de D16, con la tablet, es `bp.tactil() ? 'xlarge' : 'large'`.
|
|
104
|
+
|
|
91
105
|
## «No usar»: por qué no hoy y cuándo sí
|
|
92
106
|
|
|
93
107
|
| qué | por qué no hoy | cuándo sí, en un flujo nuevo |
|
|
94
108
|
|---|---|---|
|
|
95
109
|
| `type="avatar"` (0 usos) | no se elige gente de a varios | elegir a varios repartidores para mandarles un aviso |
|
|
96
110
|
| `type="brand"` / `"card-provider"` (0 usos) | no hay integraciones ni tarjetas | prender varias integraciones a la vez (logo proyectado), aceptar varias marcas de tarjeta |
|
|
97
|
-
| `size="medium"` / `"small"` | la casilla se pierde en el teléfono |
|
|
111
|
+
| `size="medium"` / `"small"` | la casilla se pierde en el teléfono | no hay: en la computadora va `large` (D16, dueño 06-10-2026) |
|
|
98
112
|
|
|
99
113
|
## API
|
|
100
114
|
|
|
@@ -141,6 +155,48 @@ Slot: `[slot=leading]` (solo para `card-provider`, `brand` y `company`). Impleme
|
|
|
141
155
|
derecha solo dibuja el estado, va oculta al lector y fuera del Tab (`[focusable]="false"`).
|
|
142
156
|
Hasta el 04-10-2026 quedaba enfocable con `aria-hidden` y ahí Espacio no marcaba nada.
|
|
143
157
|
|
|
158
|
+
## Bien y mal
|
|
159
|
+
|
|
160
|
+
Card sin `size`
|
|
161
|
+
|
|
162
|
+
```html
|
|
163
|
+
<!-- ❌ mal: sin size queda la casilla medium de 20 (así estaba pages/super-admin/master-administrados/master-administrados.html:171 hasta el 03-10-2026) -->
|
|
164
|
+
<sui-checkbox-card type="left-icon" icon="motorbike-line" label="Delivery" />
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
```html
|
|
168
|
+
<!-- ✅ bien -->
|
|
169
|
+
<sui-checkbox-card [size]="bp.controlSize()" type="left-icon" icon="motorbike-line" label="Delivery" />
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
Estado que no vuelve a la señal
|
|
173
|
+
|
|
174
|
+
```html
|
|
175
|
+
<!-- ❌ mal: es no controlada; el toque la marca adentro y ofreceRecojo() no se entera -->
|
|
176
|
+
<sui-checkbox-card [size]="bp.controlSize()" label="Recojo en tienda"
|
|
177
|
+
[checked]="ofreceRecojo()" />
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
```html
|
|
181
|
+
<!-- ✅ bien -->
|
|
182
|
+
<sui-checkbox-card [size]="bp.controlSize()" label="Recojo en tienda"
|
|
183
|
+
[checked]="ofreceRecojo()" (checkedChange)="ofreceRecojo.set($event)" />
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
Medio de pago con logo
|
|
187
|
+
|
|
188
|
+
```html
|
|
189
|
+
<!-- ❌ mal: type="company" sin slot="leading" deja el hueco del logo -->
|
|
190
|
+
<sui-checkbox-card type="company" [size]="bp.controlSize()" label="Yape" />
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
```html
|
|
194
|
+
<!-- ✅ bien (como pages/mi-negocio/mi-negocio.html:1209) -->
|
|
195
|
+
<sui-checkbox-card type="company" [size]="bp.controlSize()" label="Yape">
|
|
196
|
+
<span slot="leading" aria-label="Yape">Y</span>
|
|
197
|
+
</sui-checkbox-card>
|
|
198
|
+
```
|
|
199
|
+
|
|
144
200
|
## Ejemplo
|
|
145
201
|
|
|
146
202
|
```html
|
|
@@ -13,8 +13,8 @@ Story: [Atoms/Checkbox, Radio & Switch/Checkbox Label](https://sui-design-system
|
|
|
13
13
|
|
|
14
14
|
**Úsalo** para toda casilla que tiene texto al lado: «Acepto los términos», cada permiso de un
|
|
15
15
|
miembro del equipo, cada categoría de una lista. Toda la fila es clicable y se enchufa a un
|
|
16
|
-
formulario. En
|
|
17
|
-
controles.
|
|
16
|
+
formulario. En el celular y la tablet va `xlarge` (casilla de 28 px) y en la computadora `large`,
|
|
17
|
+
con `[size]="bp.controlSize()"`, como los demás controles (D16).
|
|
18
18
|
|
|
19
19
|
**No lo uses** para:
|
|
20
20
|
|
|
@@ -32,9 +32,10 @@ Regla corta: **casilla con texto → este · casilla sin texto → `sui-checkbox
|
|
|
32
32
|
> arma Label + (Sublabel) + badge «NEW» + descripción + Link Button, y la variante invertida
|
|
33
33
|
> (casilla a la derecha). No trae do/don't. Lo marcado «según la guía del DS» sale de ese ejemplo.
|
|
34
34
|
>
|
|
35
|
-
> Uso medido el
|
|
36
|
-
> de exclusión que `sui-badge`): **
|
|
37
|
-
>
|
|
35
|
+
> Uso medido el 06-10-2026 en `master-pedidos/src/app` (sin prototipos ni vitrinas, misma lista
|
|
36
|
+
> de exclusión que `sui-badge`): **4 usos**, todos con `bp.controlSize()` o su equivalente
|
|
37
|
+
> `ctrlSize()`. El 03-10-2026 eran 0: los 4 eran `sui-checkbox` dentro de un `<label>` a mano y se
|
|
38
|
+
> migraron el 04-10-2026. Queda **1 casilla armada a mano** (ver abajo).
|
|
38
39
|
|
|
39
40
|
### Las piezas
|
|
40
41
|
|
|
@@ -48,17 +49,15 @@ Regla corta: **casilla con texto → este · casilla sin texto → `sui-checkbox
|
|
|
48
49
|
| `flip` | No usar en formularios: la casilla va a la izquierda, como en la guía. | canon (aprobado por el dueño, 05-10-2026, bloque B9) |
|
|
49
50
|
| `indeterminate` | El «seleccionar todo» de un grupo, cuando hay algunas marcadas. Hoy no usar (ver abajo). | canon (aprobado por el dueño, 05-10-2026, bloque B8) |
|
|
50
51
|
| `disabled` | La opción existe pero no se puede tocar ahora; decir por qué en la descripción. | según la guía del DS |
|
|
51
|
-
| `size` | `medium` (default, Figma): casilla 20, label 14/20. `large`: casilla 24, label 16/24. `xlarge`: casilla 28, label 16/24. En large y xlarge el sublabel y la descripción se quedan en 12/16 (canon, dueño 04-10-2026); el badge sin `size` propio sube a `medium` / `large` y el link a `medium`. Se usa con `[size]="bp.controlSize()"`. | `medium`: según la guía del DS · `large` / `xlarge`: canon (aprobado por el dueño, 03-10-2026), extensión SUI |
|
|
52
|
+
| `size` | `medium` (default, Figma): casilla 20, label 14/20. `large`: casilla 24, label 16/24. `xlarge`: casilla 28, label 16/24. En large y xlarge el sublabel y la descripción se quedan en 12/16 (canon, dueño 04-10-2026); el badge sin `size` propio sube a `medium` / `large` y el link a `medium`. `2xlarge`: casilla 28 con la fila a 44 (su uso por dispositivo está pendiente, ver D16). Se usa con `[size]="bp.controlSize()"`. | `medium`: según la guía del DS · `large` / `xlarge`: canon (aprobado por el dueño, 03-10-2026), extensión SUI |
|
|
52
53
|
|
|
53
|
-
**Usos de hoy
|
|
54
|
+
**Usos de hoy (4), todos con el size de D16:** `pages/settings/team/team.html:237` y `:309`
|
|
55
|
+
(permisos, `bp.controlSize()`), `components/option-sections-manager/option-sections-manager.html:190`
|
|
56
|
+
y `:212` (`ctrlSize()`, que hace lo mismo con `bp.isMobile()`). Hasta el 04-10-2026 eran
|
|
57
|
+
`sui-checkbox` dentro de un `<label>` a mano: tocar el texto no marcaba nada.
|
|
54
58
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
- **1 nativo:** `pages/sales-channels/facebook/facebook.html:69`.
|
|
58
|
-
|
|
59
|
-
**Antes de migrarlos:** los 4 de `sui-checkbox` hoy están en 24/28 px (`bp.controlSize()`,
|
|
60
|
-
regla de controles grandes del dueño, 28-09-2026). Desde el 03-10-2026 el label tiene `size`
|
|
61
|
-
(`large` 24 / `xlarge` 28): al migrar se le pasa `[size]="bp.controlSize()"` y no se achican.
|
|
59
|
+
**Uso de hoy que debería ser este componente (1):** el nativo de
|
|
60
|
+
`pages/sales-channels/facebook/facebook.html:66`. Al migrarlo se le pasa `[size]="bp.controlSize()"`.
|
|
62
61
|
|
|
63
62
|
## Tamaño en mobile y en web
|
|
64
63
|
|
|
@@ -70,11 +69,11 @@ dueño, 28-09-2026).
|
|
|
70
69
|
|
|
71
70
|
| uso | mobile | web | fuente |
|
|
72
71
|
|---|---|---|---|
|
|
73
|
-
| casilla con texto en un formulario | `
|
|
74
|
-
| lista densa de desktop (tabla, filtros) | — | `
|
|
72
|
+
| casilla con texto en un formulario | `xlarge` (casilla 28, label 16/24; sin descripción la fila mide 28, no 44: `2xlarge` pendiente, ver D16) | `large` (casilla 24, label 16/24) | D16 (fila de checkbox, radio y switch; dueño 06-10-2026) |
|
|
73
|
+
| lista densa de desktop (tabla, filtros) | — | `large` (casilla 24): no baja a `medium` | D16, dueño 06-10-2026 |
|
|
75
74
|
|
|
76
75
|
```html
|
|
77
|
-
<sui-checkbox-label [size]="bp.
|
|
76
|
+
<sui-checkbox-label [size]="bp.controlSize()" label="Recordar mi dirección" [(active)]="recordar" />
|
|
78
77
|
```
|
|
79
78
|
|
|
80
79
|
| size | casilla | label | sublabel / descripción | alto de la fila sin descripción |
|
|
@@ -84,22 +83,43 @@ dueño, 28-09-2026).
|
|
|
84
83
|
| `xlarge` | 28 | 16/24 | 12/16 | 28 |
|
|
85
84
|
| `2xlarge` | 28 | 16/24 | 12/16 | **44** (`min-height`) |
|
|
86
85
|
|
|
87
|
-
`2xlarge` (canon
|
|
88
|
-
pero la fila mide 44 como mínimo con todo centrado en vertical, y el
|
|
89
|
-
(regla del 03-10). Con descripción la fila ya pasa de 44 y vuelve a
|
|
86
|
+
`2xlarge` (canon, dueño 04-10-2026: piso táctil 44 en el teléfono) tiene la misma casilla de 28 y
|
|
87
|
+
el mismo label que `xlarge`, pero la fila mide 44 como mínimo con todo centrado en vertical, y el
|
|
88
|
+
texto secundario se queda en 12 (regla del 03-10). Con descripción la fila ya pasa de 44 y vuelve a
|
|
89
|
+
alinearse arriba. Si reemplaza a `xlarge` en el celular y la tablet está **pendiente** (ver D16).
|
|
90
90
|
|
|
91
91
|
Toda la fila se toca (el host recibe el click), así que el área táctil es la fila entera, no solo
|
|
92
92
|
la casilla. Con `xlarge` el contenido baja 2 px para que la línea del label (24) quede centrada
|
|
93
93
|
con la casilla (28).
|
|
94
94
|
|
|
95
|
-
Sin descripción, la fila en `xlarge` mide 28 px (lo que mide la casilla)
|
|
96
|
-
`2xlarge
|
|
97
|
-
en `xlarge` y en `2xlarge`.
|
|
95
|
+
Sin descripción, la fila en `xlarge` mide 28 px (lo que mide la casilla), por debajo del piso de 44;
|
|
96
|
+
`2xlarge` la lleva a 44 (pendiente, ver D16). Con descripción llega sola: 2 + 24 (label) + 4 + 16
|
|
97
|
+
(descripción) = 46 px en `xlarge` y en `2xlarge`.
|
|
98
98
|
|
|
99
99
|
**Regla de tamaños aplicada (canon, dueño 04-10-2026):** en `large` y `xlarge` el label sube a
|
|
100
100
|
16/24 y el sublabel y la descripción se quedan en 12/16, igual que `sui-switch-label`. Antes subían
|
|
101
101
|
a 14/20. El badge y el link siguen creciendo con el size.
|
|
102
102
|
|
|
103
|
+
### Por dispositivo (D16)
|
|
104
|
+
|
|
105
|
+
| dispositivo | size | nota |
|
|
106
|
+
|---|---|---|
|
|
107
|
+
| celular chico (< 380) | `xlarge` | casilla de 28 |
|
|
108
|
+
| celular (380–767) | `xlarge` | |
|
|
109
|
+
| tablet táctil (`pointer: coarse`) | `xlarge` | `bp.controlSize()` mira solo el ancho: un iPad de 768 o más recibe `large` hasta que el helper mire el puntero |
|
|
110
|
+
| computadora (`pointer: fine`) | `large` | un paso menos que el celular; no baja a `medium` (D16, dueño 06-10-2026) |
|
|
111
|
+
|
|
112
|
+
Ultrawide: igual que la computadora (`large`).
|
|
113
|
+
|
|
114
|
+
En master-pedidos: `[size]="bp.controlSize()"` (`xlarge` hasta 767 px, `large` desde ahí). La
|
|
115
|
+
expresión exacta de D16, con la tablet, es `bp.tactil() ? 'xlarge' : 'large'`.
|
|
116
|
+
|
|
117
|
+
**Pendiente: `2xlarge` en el celular y la tablet.** Sin descripción, `xlarge` deja la fila en 28 px,
|
|
118
|
+
por debajo del piso de 44. El dueño aprobó `2xlarge` el 04-10-2026 justo para eso (fila de 44), pero
|
|
119
|
+
la fila de D16 dice `xlarge` para toda la familia y ningún helper devuelve `2xlarge`. Falta que el
|
|
120
|
+
dueño decida si en este componente el celular y la tablet pasan a `2xlarge` (y que D16 y
|
|
121
|
+
`bp.controlSize()` lo recojan). Mientras no lo decida, manda la fila de D16: `xlarge`.
|
|
122
|
+
|
|
103
123
|
## «No usar»: por qué no hoy y cuándo sí
|
|
104
124
|
|
|
105
125
|
| qué | por qué no hoy | cuándo sí, en un flujo nuevo |
|
|
@@ -151,6 +171,52 @@ Implementa `ControlValueAccessor` (`[(ngModel)]`, `formControlName`).
|
|
|
151
171
|
«casilla, no marcada» sin el texto.
|
|
152
172
|
- Deshabilitado baja la opacidad del bloque a 0.5 (convención del proyecto).
|
|
153
173
|
|
|
174
|
+
## Bien y mal
|
|
175
|
+
|
|
176
|
+
Casilla suelta con el texto en un `<label>` aparte
|
|
177
|
+
|
|
178
|
+
```html
|
|
179
|
+
<!-- ❌ mal: tocar el texto no marcaba nada (así estaba pages/settings/team/team.html:237 hasta el 04-10-2026) -->
|
|
180
|
+
<label class="team__permission-check">
|
|
181
|
+
<sui-checkbox [size]="bp.controlSize()" [checked]="hasPermission(perm)" (checkedChange)="togglePermission(perm)" />
|
|
182
|
+
<span>{{ PERMISSION_LABELS[perm] }}</span>
|
|
183
|
+
</label>
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
```html
|
|
187
|
+
<!-- ✅ bien (como pages/settings/team/team.html:237 hoy) -->
|
|
188
|
+
<sui-checkbox-label [size]="bp.controlSize()"
|
|
189
|
+
[label]="PERMISSION_LABELS[perm]" [active]="hasPermission(perm)" (activeChange)="togglePermission(perm)" />
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
Estado con el nombre de otro control
|
|
193
|
+
|
|
194
|
+
```html
|
|
195
|
+
<!-- ❌ mal: aquí el estado se llama active; [(checked)] no existe -->
|
|
196
|
+
<sui-checkbox-label label="Gestionar productos" [(checked)]="permisos.productos" />
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
```html
|
|
200
|
+
<!-- ✅ bien -->
|
|
201
|
+
<sui-checkbox-label [size]="bp.controlSize()" label="Gestionar productos" [(active)]="permisos.productos" />
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
Casilla con texto armada a mano
|
|
205
|
+
|
|
206
|
+
```html
|
|
207
|
+
<!-- ❌ mal: input nativo + label, sin tamaño ni foco del DS (pages/sales-channels/facebook/facebook.html:66) -->
|
|
208
|
+
<label class="fb-channel__sync-item">
|
|
209
|
+
<input type="checkbox" [checked]="item.checked" (change)="toggleSync(item.id)" />
|
|
210
|
+
<span>{{ item.label }}</span>
|
|
211
|
+
</label>
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
```html
|
|
215
|
+
<!-- ✅ bien -->
|
|
216
|
+
<sui-checkbox-label [size]="bp.controlSize()"
|
|
217
|
+
[label]="item.label" [active]="item.checked" (activeChange)="toggleSync(item.id)" />
|
|
218
|
+
```
|
|
219
|
+
|
|
154
220
|
## Ejemplo
|
|
155
221
|
|
|
156
222
|
```html
|
|
@@ -79,8 +79,8 @@ Criterio de la app: **D16, tamaño por dispositivo** (canon, dueño, 05-10-2026)
|
|
|
79
79
|
380 px o más y, en lo que se toca, también la tablet (`pointer: coarse`). La columna «web» es la
|
|
80
80
|
computadora (`pointer: fine`) y, en lo que no se toca, también la tablet. En el celular chico
|
|
81
81
|
(< 380 px) va `medium` a la vista, sin achicar el área de 44 de lo que se toca. **Nada en `small` ni
|
|
82
|
-
`xsmall`**, salvo lo que el componente solo tiene en chico.
|
|
83
|
-
`
|
|
82
|
+
`xsmall`**, salvo lo que el componente solo tiene en chico. En la app, `BreakpointsService` ya
|
|
83
|
+
tiene las señales de D16: `celular()` (380–767 px), `celularChico()`, `toque()` y `tactil()`.
|
|
84
84
|
|
|
85
85
|
| uso | mobile | web | fuente |
|
|
86
86
|
|---|---|---|---|
|
|
@@ -93,10 +93,29 @@ readonly bp = inject(BreakpointsService); // master-pedidos: src/app/services/br
|
|
|
93
93
|
```
|
|
94
94
|
|
|
95
95
|
```html
|
|
96
|
-
<sui-circular-progress-bar [value]="60" [size]="bp.
|
|
96
|
+
<sui-circular-progress-bar [value]="60" [size]="bp.celular() ? 64 : 56" ariaLabel="Perfil completado" />
|
|
97
97
|
```
|
|
98
98
|
|
|
99
|
-
`size` es un número: el ternario devuelve `64 : 56`, no `'64' : '56'`.
|
|
99
|
+
`size` es un número: el ternario devuelve `64 : 56`, no `'64' : '56'`. Va `bp.celular()` y no
|
|
100
|
+
`bp.isMobile()`: `isMobile()` también incluye el celular chico, que en lo que no se toca lleva el
|
|
101
|
+
valor de web (D16, dueño 05-10-2026).
|
|
102
|
+
|
|
103
|
+
### Por dispositivo (D16)
|
|
104
|
+
|
|
105
|
+
No se toca: sube un paso solo en el celular de 380 px o más (P1 b). El celular chico y la tablet
|
|
106
|
+
van con el valor de la computadora.
|
|
107
|
+
|
|
108
|
+
| dispositivo | size | nota |
|
|
109
|
+
|---|---|---|
|
|
110
|
+
| celular chico (< 380 px) | `56` en fila o card · `72` lo principal · `48` junto al texto | valor «web» |
|
|
111
|
+
| celular (380–767 px) | `64` en fila o card · `80` lo principal · `48` junto al texto | valor «mobile» |
|
|
112
|
+
| tablet táctil (`pointer: coarse`) | `56` · `72` · `48` | valor «web»: no se toca, no necesita crecer |
|
|
113
|
+
| computadora (`pointer: fine`) | `56` · `72` · `48` | |
|
|
114
|
+
|
|
115
|
+
Ultrawide (≥ 1920 px): igual que la computadora; el espacio extra no agranda el anillo.
|
|
116
|
+
|
|
117
|
+
En master-pedidos: no hay helper; `[size]="bp.celular() ? 64 : 56"` en una fila o card y
|
|
118
|
+
`[size]="bp.celular() ? 80 : 72"` en lo principal. Junto a un texto, `[size]="48"` fijo.
|
|
100
119
|
|
|
101
120
|
## API
|
|
102
121
|
|
|
@@ -126,11 +145,50 @@ Outputs: ninguno.
|
|
|
126
145
|
- Sin `ariaLabel` se anuncia «Progreso» (04-10-2026: antes quedaba sin nombre). Pasa uno que diga
|
|
127
146
|
qué avanza («Perfil completado»).
|
|
128
147
|
|
|
148
|
+
## Bien y mal
|
|
149
|
+
|
|
150
|
+
El tamaño es un número
|
|
151
|
+
|
|
152
|
+
```html
|
|
153
|
+
<!-- ❌ mal: un string no tipa con 48 | 56 | 64 | 72 | 80 -->
|
|
154
|
+
<sui-circular-progress-bar [value]="60" size="64" ariaLabel="Perfil completado" />
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
```html
|
|
158
|
+
<!-- ✅ bien -->
|
|
159
|
+
<sui-circular-progress-bar [value]="60" [size]="bp.celular() ? 64 : 56" ariaLabel="Perfil completado" />
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
Anillo de 48 solo
|
|
163
|
+
|
|
164
|
+
```html
|
|
165
|
+
<!-- ❌ mal: en 48 no hay número al centro, y nada al lado dice cuánto va -->
|
|
166
|
+
<sui-circular-progress-bar [value]="60" [size]="48" />
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
```html
|
|
170
|
+
<!-- ✅ bien: el texto de al lado dice el número; el anillo dice qué mide -->
|
|
171
|
+
<sui-circular-progress-bar [value]="60" [size]="48" ariaLabel="Perfil completado" />
|
|
172
|
+
<span>Perfil 60 % completo</span>
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
Grosor a mano
|
|
176
|
+
|
|
177
|
+
```html
|
|
178
|
+
<!-- ❌ mal: strokeWidth pisa el grosor que ya sale de la guía por tamaño -->
|
|
179
|
+
<sui-circular-progress-bar [value]="80" [size]="72" [strokeWidth]="10" ariaLabel="Meta del día" />
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
```html
|
|
183
|
+
<!-- ✅ bien -->
|
|
184
|
+
<sui-circular-progress-bar [value]="80" [size]="bp.celular() ? 80 : 72" ariaLabel="Meta del día" />
|
|
185
|
+
```
|
|
186
|
+
|
|
129
187
|
## Ejemplo
|
|
130
188
|
|
|
131
189
|
```html
|
|
132
190
|
<div class="perfil">
|
|
133
|
-
<sui-circular-progress-bar [value]="60" [size]="56" ariaLabel="Perfil completado" />
|
|
191
|
+
<sui-circular-progress-bar [value]="60" [size]="bp.celular() ? 64 : 56" ariaLabel="Perfil completado" />
|
|
134
192
|
<span>Completa tu perfil para empezar a repartir</span>
|
|
135
193
|
</div>
|
|
136
194
|
```
|
|
@@ -33,7 +33,7 @@ un `<button role="radio">`: se toca.
|
|
|
33
33
|
> Uso medido el 03-10-2026 en `master-pedidos/src/app`: **0 usos**, sin contar prototipos ni
|
|
34
34
|
> vitrinas (`master-preview`, `master-prototipos`, `mockup-sheets-*`, `dx/*`, `_guia-*`,
|
|
35
35
|
> `master-rutina`, `master-medico`, `master-ejercicios`, `dev-index`). Candidato:
|
|
36
|
-
> `components/add-product-modal/add-product-modal.html:
|
|
36
|
+
> `components/add-product-modal/add-product-modal.html:304` elige el color de una variante con
|
|
37
37
|
> `<input type="color">`, que abre un selector distinto en iOS, Android y escritorio.
|
|
38
38
|
|
|
39
39
|
| propiedad | valor | cuándo | fuente |
|
|
@@ -63,21 +63,38 @@ Criterio de la app: **D16, tamaño por dispositivo** (canon, dueño, 05-10-2026)
|
|
|
63
63
|
380 px o más y, en lo que se toca, también la tablet (`pointer: coarse`). La columna «web» es la
|
|
64
64
|
computadora (`pointer: fine`) y, en lo que no se toca, también la tablet. En el celular chico
|
|
65
65
|
(< 380 px) va `medium` a la vista, sin achicar el área de 44 de lo que se toca. **Nada en `small` ni
|
|
66
|
-
`xsmall`**, salvo lo que el componente solo tiene en chico.
|
|
67
|
-
`
|
|
66
|
+
`xsmall`**, salvo lo que el componente solo tiene en chico. En la app, `BreakpointsService` ya
|
|
67
|
+
tiene las señales de D16: `tactil()` (todo celular por ancho y toda pantalla `pointer: coarse`),
|
|
68
|
+
`celular()`, `celularChico()` y `toque()`.
|
|
68
69
|
|
|
69
70
|
| uso | mobile | web | fuente |
|
|
70
71
|
|---|---|---|---|
|
|
71
|
-
| Cualquiera | `large` (32 × 32) | `medium` (24 × 24) | canon (aprobado por el dueño, 03-10-2026) |
|
|
72
|
+
| Cualquiera | `large` (32 × 32) | `medium` (24 × 24) | canon (aprobado por el dueño, 03-10-2026) · «mobile» incluye la tablet táctil: D16, dueño 05-10-2026 |
|
|
72
73
|
| Separación entre dots | 12 px | 4 px | propuesta, falta aprobación |
|
|
73
74
|
|
|
74
75
|
```html
|
|
75
|
-
<sui-color-dot [color]="c" [size]="bp.
|
|
76
|
+
<sui-color-dot [color]="c" [size]="bp.tactil() ? 'large' : 'medium'" [state]="c === elegido() ? 'selected' : 'default'" />
|
|
76
77
|
```
|
|
77
78
|
|
|
78
79
|
`large` mide 32, todavía por debajo de los 44 px del dedo: los 12 px de separación completan el
|
|
79
80
|
área para no tocar el vecino.
|
|
80
81
|
|
|
82
|
+
### Por dispositivo (D16)
|
|
83
|
+
|
|
84
|
+
Fila de `color-dot` en la tabla de D16 (dueño, 05-10-2026): se toca.
|
|
85
|
+
|
|
86
|
+
| dispositivo | size | nota |
|
|
87
|
+
|---|---|---|
|
|
88
|
+
| celular chico (< 380 px) | `large` (32), interino | D16 pide `medium` con área tocable de 44, pero el DS todavía no la estira (P20, pendiente). Hasta entonces se queda `large` |
|
|
89
|
+
| celular (380–767 px) | `large` (32) | separación de 12 px entre dots |
|
|
90
|
+
| tablet táctil (`pointer: coarse`) | `large` (32) | separación de 12 px; con `isMobile()` el iPad caía en `medium` |
|
|
91
|
+
| computadora (`pointer: fine`) | `medium` (24) | separación de 4 px |
|
|
92
|
+
|
|
93
|
+
Ultrawide (≥ 1920 px): igual que la computadora, `medium`.
|
|
94
|
+
|
|
95
|
+
En master-pedidos: `[size]="bp.tactil() ? 'large' : 'medium'"` (da lo mismo que `bp.sizeControl()`,
|
|
96
|
+
el helper de botón y campo).
|
|
97
|
+
|
|
81
98
|
## API
|
|
82
99
|
|
|
83
100
|
<!-- api:inicio -->
|
|
@@ -107,6 +124,45 @@ lo pasa a `selected`.
|
|
|
107
124
|
- Con `customHex`, el `color` se ignora.
|
|
108
125
|
- `medium` mide 24 × 24 y `large` 32 × 32: los dos quedan por debajo de los 44 del dedo. En mobile va `large` con 12 px de separación entre dots.
|
|
109
126
|
|
|
127
|
+
## Bien y mal
|
|
128
|
+
|
|
129
|
+
Un estado no es un color
|
|
130
|
+
|
|
131
|
+
```html
|
|
132
|
+
<!-- ❌ mal: el dot es un botón para elegir color, no dice «en línea» -->
|
|
133
|
+
<sui-color-dot color="green" ariaLabel="En línea" />
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
```html
|
|
137
|
+
<!-- ✅ bien -->
|
|
138
|
+
<sui-badge type="with-dot" color="green" [size]="bp.sizeBadge()">En línea</sui-badge>
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
El dot no se marca solo
|
|
142
|
+
|
|
143
|
+
```html
|
|
144
|
+
<!-- ❌ mal: avisa el toque pero nadie le pasa el state; nunca se ve elegido -->
|
|
145
|
+
<sui-color-dot [color]="c" [size]="bp.tactil() ? 'large' : 'medium'" (clicked)="elegido.set(c)" />
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
```html
|
|
149
|
+
<!-- ✅ bien -->
|
|
150
|
+
<sui-color-dot [color]="c" [size]="bp.tactil() ? 'large' : 'medium'"
|
|
151
|
+
[state]="c === elegido() ? 'selected' : 'default'" (clicked)="elegido.set(c)" />
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
Color propio sin nombre
|
|
155
|
+
|
|
156
|
+
```html
|
|
157
|
+
<!-- ❌ mal: con customHex el lector de pantalla dice «Color #7b2d3a» -->
|
|
158
|
+
<sui-color-dot customHex="#7b2d3a" [size]="bp.tactil() ? 'large' : 'medium'" />
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
```html
|
|
162
|
+
<!-- ✅ bien -->
|
|
163
|
+
<sui-color-dot customHex="#7b2d3a" ariaLabel="Rojo vino" [size]="bp.tactil() ? 'large' : 'medium'" />
|
|
164
|
+
```
|
|
165
|
+
|
|
110
166
|
## Ejemplo
|
|
111
167
|
|
|
112
168
|
```html
|
|
@@ -51,7 +51,7 @@ Regla corta: **color libre que se guarda → color-picker · una de N categoría
|
|
|
51
51
|
**Usos de hoy que rompen la regla:**
|
|
52
52
|
|
|
53
53
|
- **1 nativo → `sui-color-picker` con `[alpha]="false"`:**
|
|
54
|
-
`components/add-product-modal/add-product-modal.html:
|
|
54
|
+
`components/add-product-modal/add-product-modal.html:304` (color de cada opción cuando el grupo
|
|
55
55
|
se muestra «como colores»; guarda `swatchHex` de 6 caracteres).
|
|
56
56
|
|
|
57
57
|
## Tamaño en mobile y en web
|
|
@@ -63,10 +63,10 @@ Regla corta: **color libre que se guarda → color-picker · una de N categoría
|
|
|
63
63
|
|
|
64
64
|
| uso | mobile | web | fuente |
|
|
65
65
|
|---|---|---|---|
|
|
66
|
-
| color picker | `large` | `medium` | canon (dueño, 04-10-2026): piso táctil 44 en el teléfono |
|
|
66
|
+
| color picker | `large` | `medium` | canon (dueño, 04-10-2026): piso táctil 44 en el teléfono · «mobile» incluye la tablet táctil: D16, dueño 05-10-2026 |
|
|
67
67
|
|
|
68
68
|
```html
|
|
69
|
-
<sui-color-picker [size]="bp.
|
|
69
|
+
<sui-color-picker [size]="bp.tactil() ? 'large' : 'medium'" [(value)]="color" />
|
|
70
70
|
```
|
|
71
71
|
|
|
72
72
|
Los puntos se **ven y se tocan** de 32: el dibujo de `sui-color-dot` usa sus dos pseudo-elementos
|
|
@@ -74,6 +74,23 @@ Los puntos se **ven y se tocan** de 32: el dibujo de `sui-color-dot` usa sus dos
|
|
|
74
74
|
centros, lo que evita tocar el vecino. Los controles del espectro, los sliders y el campo hex no
|
|
75
75
|
cambian con `size`.
|
|
76
76
|
|
|
77
|
+
### Por dispositivo (D16)
|
|
78
|
+
|
|
79
|
+
No tiene fila propia en la tabla de D16 (dueño, 05-10-2026): se toca (es un botón que abre un
|
|
80
|
+
panel), así que va «lo que se toca». Los puntos del panel siguen el mismo `size`.
|
|
81
|
+
|
|
82
|
+
| dispositivo | size | nota |
|
|
83
|
+
|---|---|---|
|
|
84
|
+
| celular chico (< 380 px) | `large` (44), interino | D16 pide `medium` con área tocable de 44, pero el botón `medium` mide 38 y el DS todavía no estira el área. Hasta entonces se queda `large` |
|
|
85
|
+
| celular (380–767 px) | `large` (44) | puntos de 32 separados 12 |
|
|
86
|
+
| tablet táctil (`pointer: coarse`) | `large` (44) | con `isMobile()` el iPad caía en `medium` |
|
|
87
|
+
| computadora (`pointer: fine`) | `medium` (38) | puntos de 24 separados 4 |
|
|
88
|
+
|
|
89
|
+
Ultrawide (≥ 1920 px): igual que la computadora, `medium`.
|
|
90
|
+
|
|
91
|
+
En master-pedidos: no hay helper propio; `[size]="bp.tactil() ? 'large' : 'medium'"` (da lo mismo
|
|
92
|
+
que `bp.sizeControl()`, el helper de botón y campo).
|
|
93
|
+
|
|
77
94
|
## «No usar»: por qué no hoy y cuándo sí
|
|
78
95
|
|
|
79
96
|
| qué | por qué no hoy | cuándo sí, en un flujo nuevo |
|
|
@@ -127,13 +144,54 @@ cambian con `size`.
|
|
|
127
144
|
- El panel vive en un overlay del CDK: escapa a cualquier `overflow: hidden` del contenedor.
|
|
128
145
|
- No implementa `ControlValueAccessor`: se usa con `[(value)]`.
|
|
129
146
|
|
|
147
|
+
## Bien y mal
|
|
148
|
+
|
|
149
|
+
Color de una variante
|
|
150
|
+
|
|
151
|
+
```html
|
|
152
|
+
<!-- ❌ mal: selector nativo, distinto en iOS, Android y escritorio (components/add-product-modal/add-product-modal.html:304) -->
|
|
153
|
+
<input type="color" [value]="v.swatchHex || '#cccccc'"
|
|
154
|
+
(input)="setValueField(gi, vi, 'swatchHex', $any($event.target).value)" aria-label="Elegir color" />
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
```html
|
|
158
|
+
<!-- ✅ bien -->
|
|
159
|
+
<sui-color-picker [size]="bp.tactil() ? 'large' : 'medium'" [alpha]="false" [showFormatLabel]="false"
|
|
160
|
+
[value]="v.swatchHex ?? null" (valueChange)="setValueField(gi, vi, 'swatchHex', $event)" />
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
Guardar `#rrggbb`
|
|
164
|
+
|
|
165
|
+
```html
|
|
166
|
+
<!-- ❌ mal: alpha viene en true; si bajan la opacidad se guarda #rrggbbaa -->
|
|
167
|
+
<sui-color-picker [size]="bp.tactil() ? 'large' : 'medium'" [showFormatLabel]="false" [(value)]="color" />
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
```html
|
|
171
|
+
<!-- ✅ bien: [alpha]="false" deja el valor en 6 caracteres -->
|
|
172
|
+
<sui-color-picker [size]="bp.tactil() ? 'large' : 'medium'" [alpha]="false" [showFormatLabel]="false" [(value)]="color" />
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
En el teléfono
|
|
176
|
+
|
|
177
|
+
```html
|
|
178
|
+
<!-- ❌ mal: sin size queda en medium: botón de 38 y puntos de 24 casi pegados (4 de separación), por debajo de los 44 del dedo -->
|
|
179
|
+
<sui-color-picker [alpha]="false" [showFormatLabel]="false" [(value)]="color" />
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
```html
|
|
183
|
+
<!-- ✅ bien: en táctil va large: botón de 44 y puntos de 32 con 44 entre centros, sin tocar el vecino -->
|
|
184
|
+
<sui-color-picker [size]="bp.tactil() ? 'large' : 'medium'" [alpha]="false" [showFormatLabel]="false" [(value)]="color" />
|
|
185
|
+
```
|
|
186
|
+
|
|
130
187
|
## Ejemplo
|
|
131
188
|
|
|
132
189
|
```html
|
|
133
190
|
<sui-color-picker
|
|
134
191
|
[alpha]="false"
|
|
135
192
|
[showFormatLabel]="false"
|
|
136
|
-
|
|
193
|
+
[size]="bp.tactil() ? 'large' : 'medium'"
|
|
194
|
+
placeholder="Elige el color de la variante"
|
|
137
195
|
[value]="opcion.swatchHex ?? null"
|
|
138
196
|
(valueChange)="cambiarColor(opcion, $event)" />
|
|
139
197
|
```
|
|
@@ -56,6 +56,12 @@ No tiene tamaños: 48 px de alto, textos 12/16, hasta 600 px de ancho.
|
|
|
56
56
|
}
|
|
57
57
|
```
|
|
58
58
|
|
|
59
|
+
### Por dispositivo (D16)
|
|
60
|
+
|
|
61
|
+
No aplica: no tiene input `size` (48 px fijo en todos los dispositivos), así que D16 no lo mueve. Lo
|
|
62
|
+
único que cambia por dispositivo es **si se pinta**: en el celular no (no hay teclado físico).
|
|
63
|
+
En master-pedidos: `@if (!bp.isMobile())` alrededor del pie, sin `[size]`.
|
|
64
|
+
|
|
59
65
|
## API
|
|
60
66
|
|
|
61
67
|
<!-- api:inicio -->
|
|
@@ -87,6 +93,49 @@ No tiene tamaños: 48 px de alto, textos 12/16, hasta 600 px de ancho.
|
|
|
87
93
|
desktop.
|
|
88
94
|
- Las teclas son íconos fijos (↑ ↓ ↵); no se pueden cambiar.
|
|
89
95
|
|
|
96
|
+
## Bien y mal
|
|
97
|
+
|
|
98
|
+
Pie en el celular
|
|
99
|
+
|
|
100
|
+
```html
|
|
101
|
+
<!-- ❌ mal: en el celular las teclas ↑ ↓ ↵ no dicen nada (README de sui-kbd) -->
|
|
102
|
+
<sui-command-menu-footer navigateLabel="Moverte" selectLabel="Abrir" [helpText]="null" />
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
```html
|
|
106
|
+
<!-- ✅ bien -->
|
|
107
|
+
@if (!bp.isMobile()) {
|
|
108
|
+
<sui-command-menu-footer navigateLabel="Moverte" selectLabel="Abrir" [helpText]="null" />
|
|
109
|
+
}
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
Link de ayuda sin destino
|
|
113
|
+
|
|
114
|
+
```html
|
|
115
|
+
<!-- ❌ mal: los defaults pintan «Centro de ayuda» sin href ni (helpClicked): el link no hace nada -->
|
|
116
|
+
<sui-command-menu-footer navigateLabel="Moverte" selectLabel="Abrir" />
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
```html
|
|
120
|
+
<!-- ✅ bien -->
|
|
121
|
+
<sui-command-menu-footer
|
|
122
|
+
navigateLabel="Moverte" selectLabel="Abrir"
|
|
123
|
+
helpText="¿No es lo que buscas? Escríbenos por"
|
|
124
|
+
[helpLink]="{ label: 'WhatsApp', href: 'https://wa.me/51931819925', target: '_blank' }" />
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
Sacar la ayuda entera
|
|
128
|
+
|
|
129
|
+
```html
|
|
130
|
+
<!-- ❌ mal: helpLink null saca solo el link y deja «¿No es lo que buscas? Prueba el» colgando -->
|
|
131
|
+
<sui-command-menu-footer navigateLabel="Moverte" selectLabel="Abrir" [helpLink]="null" />
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
```html
|
|
135
|
+
<!-- ✅ bien: helpText null saca el texto y el link -->
|
|
136
|
+
<sui-command-menu-footer navigateLabel="Moverte" selectLabel="Abrir" [helpText]="null" />
|
|
137
|
+
```
|
|
138
|
+
|
|
90
139
|
## Ejemplo
|
|
91
140
|
|
|
92
141
|
```html
|