@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
|
@@ -26,8 +26,8 @@ del día en una card chica.
|
|
|
26
26
|
> **En la guía del DS se llama «Progress Circle»** («un gráfico simple para mostrar qué tan
|
|
27
27
|
> completo está algo»). Trae cinco tamaños (80, 72, 64, 56 y 48; default 80), `value` y `max`,
|
|
28
28
|
> y **un solo color** (el primario del DS, que en SUI es el azul de información). No dice cuándo
|
|
29
|
-
> usar cada tamaño. Lo marcado «según la guía del DS» sale de ah
|
|
30
|
-
> falta aprobación
|
|
29
|
+
> usar cada tamaño. Lo marcado «según la guía del DS» sale de ahí. Lo marcado canon está
|
|
30
|
+
> aprobado; lo que sigue en **propuesta, falta aprobación** espera decisión.
|
|
31
31
|
>
|
|
32
32
|
> Uso medido el 03-10-2026 en `master-pedidos/src/app`: **0 usos**, sin contar prototipos ni
|
|
33
33
|
> vitrinas (`master-preview`, `master-prototipos`, `mockup-sheets-*`, `dx/*`, `_guia-*`,
|
|
@@ -38,10 +38,10 @@ del día en una card chica.
|
|
|
38
38
|
| size | número al centro | cuándo | fuente |
|
|
39
39
|
|---|---|---|---|
|
|
40
40
|
| `48` | no (solo el anillo) | Junto a un texto que ya dice el porcentaje. | según la guía del DS |
|
|
41
|
-
| `56` | sí, 12 px | Web: en una fila o una card. | según la guía del DS (tamaño) ·
|
|
42
|
-
| `64` (default SUI) | sí, 14 px | Mobile: en una fila o una card. | según la guía del DS (tamaño) ·
|
|
43
|
-
| `72` | sí, 14 px | Web: lo principal de la pantalla. | según la guía del DS (tamaño) ·
|
|
44
|
-
| `80` (default de la guía) | sí, 14 px | Mobile: lo principal de la pantalla. | según la guía del DS (tamaño) ·
|
|
41
|
+
| `56` | sí, 12 px | Web: en una fila o una card. | según la guía del DS (tamaño) · cuándo: canon (aprobado por el dueño, 05-10-2026, bloque B1) |
|
|
42
|
+
| `64` (default SUI) | sí, 14 px | Mobile: en una fila o una card. | según la guía del DS (tamaño) · cuándo: canon (aprobado por el dueño, 05-10-2026, bloque B1) |
|
|
43
|
+
| `72` | sí, 14 px | Web: lo principal de la pantalla. | según la guía del DS (tamaño) · cuándo: canon (aprobado por el dueño, 05-10-2026, bloque B1) |
|
|
44
|
+
| `80` (default de la guía) | sí, 14 px | Mobile: lo principal de la pantalla. | según la guía del DS (tamaño) · cuándo: canon (aprobado por el dueño, 05-10-2026, bloque B1) |
|
|
45
45
|
|
|
46
46
|
### `color` — misma regla que `sui-progress-bar`
|
|
47
47
|
|
|
@@ -58,9 +58,9 @@ del día en una card chica.
|
|
|
58
58
|
| propiedad | valor | cuándo | fuente |
|
|
59
59
|
|---|---|---|---|
|
|
60
60
|
| `number` | `true` (default) | Lo normal: el porcentaje al centro. | según la guía del DS |
|
|
61
|
-
| `number` | `false` | El texto de al lado ya dice el número. |
|
|
62
|
-
| `strokeWidth` | número | **No usar** (ver abajo). |
|
|
63
|
-
| `ariaLabel` | texto | Siempre: lo que mide («Perfil completado»). |
|
|
61
|
+
| `number` | `false` | El texto de al lado ya dice el número. | canon (aprobado por el dueño, 05-10-2026, bloque B9) |
|
|
62
|
+
| `strokeWidth` | número | **No usar** (ver abajo). | canon (aprobado por el dueño, 05-10-2026, bloque B6) |
|
|
63
|
+
| `ariaLabel` | texto | Siempre: lo que mide («Perfil completado»). | canon (aprobado por el dueño, 05-10-2026, bloque B5) |
|
|
64
64
|
|
|
65
65
|
Usos de hoy que rompen la regla: **0** (no hay usos).
|
|
66
66
|
|
|
@@ -74,26 +74,48 @@ Usos de hoy que rompen la regla: **0** (no hay usos).
|
|
|
74
74
|
|
|
75
75
|
## Tamaño en mobile y en web
|
|
76
76
|
|
|
77
|
-
Criterio de la app: **
|
|
78
|
-
(
|
|
79
|
-
|
|
80
|
-
|
|
77
|
+
Criterio de la app: **D16, tamaño por dispositivo** (canon, dueño, 05-10-2026), que reemplaza al
|
|
78
|
+
«tamaño por plataforma» del 03-10-2026 (mobile grande, web chico). La columna «mobile» es el celular de
|
|
79
|
+
380 px o más y, en lo que se toca, también la tablet (`pointer: coarse`). La columna «web» es la
|
|
80
|
+
computadora (`pointer: fine`) y, en lo que no se toca, también la tablet. En el celular chico
|
|
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. En la app, `BreakpointsService` ya
|
|
83
|
+
tiene las señales de D16: `celular()` (380–767 px), `celularChico()`, `toque()` y `tactil()`.
|
|
81
84
|
|
|
82
85
|
| uso | mobile | web | fuente |
|
|
83
86
|
|---|---|---|---|
|
|
84
|
-
| Junto a un texto que ya dice el número | `48` | `48` |
|
|
85
|
-
| En una fila o card | `64` | `56` |
|
|
86
|
-
| Lo principal de la pantalla | `80` | `72` |
|
|
87
|
+
| Junto a un texto que ya dice el número | `48` | `48` | canon (dueño, 05-10-2026, P1 b) |
|
|
88
|
+
| En una fila o card | `64` | `56` | canon (dueño, 05-10-2026, P1 b) |
|
|
89
|
+
| Lo principal de la pantalla | `80` | `72` | canon (dueño, 05-10-2026, P1 b) |
|
|
87
90
|
|
|
88
91
|
```ts
|
|
89
92
|
readonly bp = inject(BreakpointsService); // master-pedidos: src/app/services/breakpoints.service.ts
|
|
90
93
|
```
|
|
91
94
|
|
|
92
95
|
```html
|
|
93
|
-
<sui-circular-progress-bar [value]="60" [size]="bp.
|
|
96
|
+
<sui-circular-progress-bar [value]="60" [size]="bp.celular() ? 64 : 56" ariaLabel="Perfil completado" />
|
|
94
97
|
```
|
|
95
98
|
|
|
96
|
-
`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.
|
|
97
119
|
|
|
98
120
|
## API
|
|
99
121
|
|
|
@@ -123,11 +145,50 @@ Outputs: ninguno.
|
|
|
123
145
|
- Sin `ariaLabel` se anuncia «Progreso» (04-10-2026: antes quedaba sin nombre). Pasa uno que diga
|
|
124
146
|
qué avanza («Perfil completado»).
|
|
125
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
|
+
|
|
126
187
|
## Ejemplo
|
|
127
188
|
|
|
128
189
|
```html
|
|
129
190
|
<div class="perfil">
|
|
130
|
-
<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" />
|
|
131
192
|
<span>Completa tu perfil para empezar a repartir</span>
|
|
132
193
|
</div>
|
|
133
194
|
```
|
|
@@ -27,24 +27,25 @@ un `<button role="radio">`: se toca.
|
|
|
27
27
|
|
|
28
28
|
> **En la guía del DS es la fila «Recommended Colors» del selector de color**: muestras para
|
|
29
29
|
> elegir un color recomendado. No dice cuándo usar cada estado. Lo marcado «según la guía del
|
|
30
|
-
> DS» sale de ah
|
|
30
|
+
> DS» sale de ahí. Lo marcado canon está aprobado; lo que sigue en **propuesta, falta aprobación**
|
|
31
|
+
> espera decisión.
|
|
31
32
|
>
|
|
32
33
|
> Uso medido el 03-10-2026 en `master-pedidos/src/app`: **0 usos**, sin contar prototipos ni
|
|
33
34
|
> vitrinas (`master-preview`, `master-prototipos`, `mockup-sheets-*`, `dx/*`, `_guia-*`,
|
|
34
35
|
> `master-rutina`, `master-medico`, `master-ejercicios`, `dev-index`). Candidato:
|
|
35
|
-
> `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
|
|
36
37
|
> `<input type="color">`, que abre un selector distinto en iOS, Android y escritorio.
|
|
37
38
|
|
|
38
39
|
| propiedad | valor | cuándo | fuente |
|
|
39
40
|
|---|---|---|---|
|
|
40
41
|
| `color` | los 10 (`gray`, `blue`, `orange`, `red`, `green`, `yellow`, `purple`, `sky`, `pink`, `teal`) | El color literal que se ofrece. **No significan nada**: son la paleta `-500`, no los tokens de estado del badge. Se ofrecen en ese orden. | según la guía del DS (colores recomendados) |
|
|
41
|
-
| `customHex` | `#rrggbb` | Un color exacto que no está en los 10 (el de una variante de producto). Pisa a `color`. |
|
|
42
|
+
| `customHex` | `#rrggbb` | Un color exacto que no está en los 10 (el de una variante de producto). Pisa a `color`. | canon (aprobado por el dueño, 05-10-2026, bloque B3) |
|
|
42
43
|
| `state` | `default` | Opción disponible. | según la guía del DS |
|
|
43
44
|
| `state` | `selected` | El color elegido. Uno solo por fila; lo setea la pantalla. | según la guía del DS |
|
|
44
|
-
| `state` | `disabled` | Un color que no se puede elegir (agotado en esa variante). |
|
|
45
|
-
| `state` | `hover` | **No usar** (ver abajo). |
|
|
45
|
+
| `state` | `disabled` | Un color que no se puede elegir (agotado en esa variante). | canon (aprobado por el dueño, 05-10-2026, bloque B8) |
|
|
46
|
+
| `state` | `hover` | **No usar** (ver abajo). | canon (aprobado por el dueño, 05-10-2026, bloque B6) |
|
|
46
47
|
| `size` | `medium` (default) · `large` | `medium` 24 (Figma) en web; `large` 32 en mobile. En `large` el dot mide 22, 18 en hover y 16 seleccionado, con anillo de 24. | `medium`: según la guía del DS · `large`: canon (aprobado por el dueño, 03-10-2026), extensión SUI |
|
|
47
|
-
| `ariaLabel` | texto | El nombre del color para el lector de pantalla. Por default dice «Rojo», «Celeste»; con `customHex`, el hex. Con hex propio, pasar el nombre («Rojo vino»). |
|
|
48
|
+
| `ariaLabel` | texto | El nombre del color para el lector de pantalla. Por default dice «Rojo», «Celeste»; con `customHex`, el hex. Con hex propio, pasar el nombre («Rojo vino»). | canon (aprobado por el dueño, 05-10-2026, bloque B5) |
|
|
48
49
|
|
|
49
50
|
Usos de hoy que rompen la regla: **0** (no hay usos).
|
|
50
51
|
|
|
@@ -57,23 +58,43 @@ Usos de hoy que rompen la regla: **0** (no hay usos).
|
|
|
57
58
|
|
|
58
59
|
## Tamaño en mobile y en web
|
|
59
60
|
|
|
60
|
-
Criterio de la app: **
|
|
61
|
-
(
|
|
62
|
-
|
|
63
|
-
|
|
61
|
+
Criterio de la app: **D16, tamaño por dispositivo** (canon, dueño, 05-10-2026), que reemplaza al
|
|
62
|
+
«tamaño por plataforma» del 03-10-2026 (mobile grande, web chico). La columna «mobile» es el celular de
|
|
63
|
+
380 px o más y, en lo que se toca, también la tablet (`pointer: coarse`). La columna «web» es la
|
|
64
|
+
computadora (`pointer: fine`) y, en lo que no se toca, también la tablet. En el celular chico
|
|
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. 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()`.
|
|
64
69
|
|
|
65
70
|
| uso | mobile | web | fuente |
|
|
66
71
|
|---|---|---|---|
|
|
67
|
-
| 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 |
|
|
68
73
|
| Separación entre dots | 12 px | 4 px | propuesta, falta aprobación |
|
|
69
74
|
|
|
70
75
|
```html
|
|
71
|
-
<sui-color-dot [color]="c" [size]="bp.
|
|
76
|
+
<sui-color-dot [color]="c" [size]="bp.tactil() ? 'large' : 'medium'" [state]="c === elegido() ? 'selected' : 'default'" />
|
|
72
77
|
```
|
|
73
78
|
|
|
74
79
|
`large` mide 32, todavía por debajo de los 44 px del dedo: los 12 px de separación completan el
|
|
75
80
|
área para no tocar el vecino.
|
|
76
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
|
+
|
|
77
98
|
## API
|
|
78
99
|
|
|
79
100
|
<!-- api:inicio -->
|
|
@@ -103,6 +124,45 @@ lo pasa a `selected`.
|
|
|
103
124
|
- Con `customHex`, el `color` se ignora.
|
|
104
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.
|
|
105
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
|
+
|
|
106
166
|
## Ejemplo
|
|
107
167
|
|
|
108
168
|
```html
|
|
@@ -38,20 +38,20 @@ Regla corta: **color libre que se guarda → color-picker · una de N categoría
|
|
|
38
38
|
| prop | cuándo | fuente |
|
|
39
39
|
|---|---|---|
|
|
40
40
|
| `value` | El hex guardado (`[(value)]`). Sin valor, el botón muestra el `placeholder`. | según la guía del DS (popover con botón) |
|
|
41
|
-
| `placeholder` | «
|
|
42
|
-
| `alpha` | **`false` por defecto en la app**: la base guarda 6 caracteres (`#rrggbb`). Con `true` (default del componente) puede emitir 8. |
|
|
41
|
+
| `placeholder` | «Elige un color» (default, imperativo con tuteo). Cambiarlo solo si el campo dice qué color es, también en imperativo («Elige el color de la variante»). | canon (dueño, 05-10-2026, P4 a); el default cambió en la 0.25.0 (antes «Elegir color») |
|
|
42
|
+
| `alpha` | **`false` por defecto en la app**: la base guarda 6 caracteres (`#rrggbb`). Con `true` (default del componente) puede emitir 8. | canon (aprobado por el dueño, 05-10-2026, bloque B9) |
|
|
43
43
|
| `colors` | Acotar los recomendados a los que tengan sentido para el caso. Default: los 10 de SUI. | según la guía del DS (sección «Recommended Colors») |
|
|
44
|
-
| `recommendedLabel` | «Colores recomendados» (default). |
|
|
45
|
-
| `presetsOnly` | Solo la grilla de recomendados, sin espectro ni hex: cuando el color tiene que salir de la paleta. |
|
|
46
|
-
| `eyedropper` | Dejar el default (`true`): solo aparece donde el navegador lo soporta (Chromium de escritorio). |
|
|
47
|
-
| `showFormatLabel` | `false`: el «Hex» con flecha es decorativo, no cambia de formato. |
|
|
48
|
-
| `disabled` | El campo existe pero no se puede tocar ahora. |
|
|
49
|
-
| `ariaLabel` | Siempre que el botón no tenga un label al lado que diga qué color es. |
|
|
44
|
+
| `recommendedLabel` | «Colores recomendados» (default). | canon (aprobado por el dueño, 05-10-2026, bloque B4) |
|
|
45
|
+
| `presetsOnly` | Solo la grilla de recomendados, sin espectro ni hex: cuando el color tiene que salir de la paleta. | canon (aprobado por el dueño, 05-10-2026, bloque B9) |
|
|
46
|
+
| `eyedropper` | Dejar el default (`true`): solo aparece donde el navegador lo soporta (Chromium de escritorio). | canon (aprobado por el dueño, 05-10-2026, bloque B9) |
|
|
47
|
+
| `showFormatLabel` | `false`: el «Hex» con flecha es decorativo, no cambia de formato. | canon (aprobado por el dueño, 05-10-2026, bloque B9) |
|
|
48
|
+
| `disabled` | El campo existe pero no se puede tocar ahora. | canon (aprobado por el dueño, 05-10-2026, bloque B8) |
|
|
49
|
+
| `ariaLabel` | Siempre que el botón no tenga un label al lado que diga qué color es. | canon (aprobado por el dueño, 05-10-2026, bloque B5) |
|
|
50
50
|
|
|
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 |
|
|
@@ -91,7 +108,7 @@ cambian con `size`.
|
|
|
91
108
|
|---|---|---|
|
|
92
109
|
| `colors` | `readonly SuiColorDotColor[]` | `SUI_COLOR_DOT_COLORS` |
|
|
93
110
|
| `value` · model, `[(value)]` | `string \| null` | `null` |
|
|
94
|
-
| `placeholder` | `string` | `'
|
|
111
|
+
| `placeholder` | `string` | `'Elige un color'` |
|
|
95
112
|
| `recommendedLabel` | `string` | `'Colores recomendados'` |
|
|
96
113
|
| `presetsOnly` | `boolean` | `false` |
|
|
97
114
|
| `alpha` | `boolean` | `true` |
|
|
@@ -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
|
```
|
|
@@ -39,7 +39,7 @@ No tiene variantes. Se decide el copy y si va el bloque de ayuda.
|
|
|
39
39
|
| prop | regla | fuente |
|
|
40
40
|
|---|---|---|
|
|
41
41
|
| `navigateLabel` · `selectLabel` | **Siempre en español**: «Moverte» y «Abrir» (o «Elegir»). Los defaults son `'Navegar'` y `'Seleccionar'`. | canon (CANON-SUI §5: copy en español, tuteo) |
|
|
42
|
-
| `helpText` + `helpLink` | Solo si hay adónde mandar a la persona (el WhatsApp de soporte). Si no, `[helpText]="null"` saca el bloque entero. Los defaults dicen «¿No es lo que buscas? Prueba el» + «Centro de ayuda». |
|
|
42
|
+
| `helpText` + `helpLink` | Solo si hay adónde mandar a la persona (el WhatsApp de soporte). Si no, `[helpText]="null"` saca el bloque entero. Los defaults dicen «¿No es lo que buscas? Prueba el» + «Centro de ayuda». | canon (aprobado por el dueño, 05-10-2026, bloque B9) |
|
|
43
43
|
| `helpLink` como objeto | `{ label, href, target }` dibuja un `<a>` de verdad; con `target: '_blank'` pone `rel="noopener noreferrer"` solo. | API |
|
|
44
44
|
|
|
45
45
|
## Tamaño en mobile y en web
|
|
@@ -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
|
|
@@ -37,7 +37,8 @@ select.** La tabla completa está en el README de `sui-dropdown-menu`.
|
|
|
37
37
|
> **La guía del DS define el command menu como el buscador que deja saltar rápido desde cualquier
|
|
38
38
|
> pantalla**, armado dentro de un diálogo, con input, lista, grupos con título, items y un pie con
|
|
39
39
|
> teclas. El item tiene dos tamaños, `small` (default) y `medium`, y el elegido se marca con fondo
|
|
40
|
-
> `bg-weak-50`. No trae do/don't. Lo
|
|
40
|
+
> `bg-weak-50`. No trae do/don't. Lo marcado canon está aprobado; lo que sigue en **propuesta, falta
|
|
41
|
+
> aprobación** espera decisión.
|
|
41
42
|
>
|
|
42
43
|
> Uso medido el 03-10-2026 en `master-pedidos/src/app` (misma exclusión que `sui-dropdown-menu`):
|
|
43
44
|
> **0 usos**. Solo aparece en la vitrina `master-preview`.
|
|
@@ -46,20 +47,20 @@ select.** La tabla completa está en el README de `sui-dropdown-menu`.
|
|
|
46
47
|
|
|
47
48
|
| type | cuándo | fuente |
|
|
48
49
|
|---|---|---|
|
|
49
|
-
| `left-icon` | Ir a una **pantalla** o una sección: «Pedidos», «Mi negocio», «Recargas». | según la guía del DS (item con ícono); el cuándo
|
|
50
|
-
| `avatar` | Una **persona**: repartidor, cliente, dueño de local (`avatar` con `src` o `initials`). |
|
|
51
|
-
| `company` | Un **local**: su logo en `avatar.src`. |
|
|
52
|
-
| `basic` (default) | Una búsqueda reciente o un resultado sin imagen («Pedido #1234»). |
|
|
53
|
-
| `brand` | Un servicio externo con su logo (Yape, WhatsApp), proyectado en `slot="brand"`. |
|
|
54
|
-
| `country` | No usar hoy: todo es Perú. |
|
|
50
|
+
| `left-icon` | Ir a una **pantalla** o una sección: «Pedidos», «Mi negocio», «Recargas». | según la guía del DS (item con ícono); el cuándo: canon (aprobado por el dueño, 05-10-2026, bloque B2) |
|
|
51
|
+
| `avatar` | Una **persona**: repartidor, cliente, dueño de local (`avatar` con `src` o `initials`). | canon (aprobado por el dueño, 05-10-2026, bloque B2) |
|
|
52
|
+
| `company` | Un **local**: su logo en `avatar.src`. | canon (aprobado por el dueño, 05-10-2026, bloque B2) |
|
|
53
|
+
| `basic` (default) | Una búsqueda reciente o un resultado sin imagen («Pedido #1234»). | canon (aprobado por el dueño, 05-10-2026, bloque B2) |
|
|
54
|
+
| `brand` | Un servicio externo con su logo (Yape, WhatsApp), proyectado en `slot="brand"`. | canon (aprobado por el dueño, 05-10-2026, bloque B2) |
|
|
55
|
+
| `country` | No usar hoy: todo es Perú. | canon (aprobado por el dueño, 05-10-2026, bloque B6) |
|
|
55
56
|
|
|
56
57
|
### `size` y los extras
|
|
57
58
|
|
|
58
59
|
| prop | cuándo | fuente |
|
|
59
60
|
|---|---|---|
|
|
60
61
|
| `size="small"` (default, 40) | Listas de resultados de una línea (`title` + `sublabel`). | según la guía del DS (default `small`) |
|
|
61
|
-
| `size="medium"` (64) | Cuando el resultado necesita una segunda línea (`description`) para distinguirse: «Pedido #1234» · «Juan Pérez · S/ 45.00». | según la guía del DS (existe); el cuándo
|
|
62
|
-
| `badge` | Un estado corto que ayuda a elegir («Pendiente», «Cerrado»). String = gris `lighter`; objeto `SuiBadgeConfig` para color. |
|
|
62
|
+
| `size="medium"` (64) | Cuando el resultado necesita una segunda línea (`description`) para distinguirse: «Pedido #1234» · «Juan Pérez · S/ 45.00». | según la guía del DS (existe); el cuándo: canon (aprobado por el dueño, 05-10-2026, bloque B9) |
|
|
63
|
+
| `badge` | Un estado corto que ayuda a elegir («Pendiente», «Cerrado»). String = gris `lighter`; objeto `SuiBadgeConfig` para color. | canon (aprobado por el dueño, 05-10-2026, bloque B9) |
|
|
63
64
|
| `shortcut` | El atajo de esa acción (`sui-kbd`). Solo web. | canon (README de `sui-kbd`: en mobile no se pinta) |
|
|
64
65
|
| `showButton` | Una flecha a la derecha cuando el resultado abre otra pantalla. | propuesta |
|
|
65
66
|
|
|
@@ -70,13 +71,31 @@ buscador de mobile, la fila `small` mide 40 y queda debajo de los 44 del dedo.
|
|
|
70
71
|
|
|
71
72
|
| uso | mobile | web | fuente |
|
|
72
73
|
|---|---|---|---|
|
|
73
|
-
| resultado de una línea | `medium` (64) | `small
|
|
74
|
-
| resultado con descripción | `medium` (64) | `medium` (64) |
|
|
74
|
+
| resultado de una línea | `medium` (64) | **pendiente** (hoy `small`, 40, el default) | mobile: canon (decisión del dueño 04-10-2026, piso táctil 44: `small` mide 40, `medium` es el único size que llega) · web: pendiente (D16, dueño 05-10-2026: el tamaño cambia el layout) |
|
|
75
|
+
| resultado con descripción | `medium` (64) | `medium` (64) | mobile: canon (decisión del dueño 04-10-2026, piso táctil 44) · web: lo impone el código (`description` solo se pinta en `medium`) |
|
|
75
76
|
|
|
76
77
|
```html
|
|
77
|
-
<sui-command-menu-item [size]="bp.
|
|
78
|
+
<sui-command-menu-item [size]="bp.tactil() ? 'medium' : 'small'" … /> <!-- bp = BreakpointsService -->
|
|
78
79
|
```
|
|
79
80
|
|
|
81
|
+
### Por dispositivo (D16)
|
|
82
|
+
|
|
83
|
+
Se toca, así que la tablet va con el celular. En la computadora D16 lo deja **pendiente**: `small`
|
|
84
|
+
(40) y `medium` (64) no son el mismo ítem más chico o más grande, porque `description` solo se pinta
|
|
85
|
+
en `medium`; elegir uno cambia qué se lee en la fila.
|
|
86
|
+
|
|
87
|
+
| dispositivo | size | nota |
|
|
88
|
+
|---|---|---|
|
|
89
|
+
| celular chico (< 380) | — | D16 no lo fija: el ⌘K no se arma en el celular. Si se reusa la lista, solo `medium` llega a 44 |
|
|
90
|
+
| celular (380–767) | `medium` | el único que llega a 44 |
|
|
91
|
+
| tablet táctil (`pointer: coarse`) | `medium` | Apple pide 44 también en iPad |
|
|
92
|
+
| computadora (`pointer: fine`) | **pendiente** | falta decidir (D16, nota ⁵); hoy queda el default `small`, y con `description` va `medium` fijo |
|
|
93
|
+
|
|
94
|
+
Ultrawide: igual que la computadora.
|
|
95
|
+
|
|
96
|
+
En master-pedidos: `[size]="bp.tactil() ? 'medium' : 'small'"` (no hay helper; el `'small'` es el
|
|
97
|
+
default de hoy mientras la computadora sigue pendiente). Con `description`: `size="medium"` en todos.
|
|
98
|
+
|
|
80
99
|
## API
|
|
81
100
|
|
|
82
101
|
<!-- api:inicio -->
|
|
@@ -121,16 +140,57 @@ Slot: `[slot=brand]` (solo con `type="brand"`). `avatar` acepta un string (la UR
|
|
|
121
140
|
- Mide como máximo 600 px de ancho.
|
|
122
141
|
- El host borra el atributo `title` nativo (no aparece el tooltip gris del navegador).
|
|
123
142
|
|
|
143
|
+
## Bien y mal
|
|
144
|
+
|
|
145
|
+
Abrir el resultado
|
|
146
|
+
|
|
147
|
+
```html
|
|
148
|
+
<!-- ❌ mal: (clicked) nunca sale; el componente no lo conecta a ningún clic -->
|
|
149
|
+
<sui-command-menu-item type="left-icon" icon="file-list-3-line" title="Pedidos"
|
|
150
|
+
(clicked)="ir('/empresa/pedidos')" />
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
```html
|
|
154
|
+
<!-- ✅ bien: el (click) nativo del host, y Enter cableado a mano -->
|
|
155
|
+
<sui-command-menu-item type="left-icon" icon="file-list-3-line" title="Pedidos"
|
|
156
|
+
(click)="ir('/empresa/pedidos')" (keydown.enter)="ir('/empresa/pedidos')" />
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
Resultado con segunda línea
|
|
160
|
+
|
|
161
|
+
```html
|
|
162
|
+
<!-- ❌ mal: size queda en small (default) y description no se pinta -->
|
|
163
|
+
<sui-command-menu-item title="Pedido #1234" description="Juan Pérez · S/ 45.00" />
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
```html
|
|
167
|
+
<!-- ✅ bien -->
|
|
168
|
+
<sui-command-menu-item size="medium" title="Pedido #1234" description="Juan Pérez · S/ 45.00" />
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
Ir a una pantalla
|
|
172
|
+
|
|
173
|
+
```html
|
|
174
|
+
<!-- ❌ mal: left-icon sin icon; en medium (celular y tablet) deja el círculo vacío -->
|
|
175
|
+
<sui-command-menu-item type="left-icon" [size]="bp.tactil() ? 'medium' : 'small'" title="Recargas" />
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
```html
|
|
179
|
+
<!-- ✅ bien: el size de una línea sigue la expresión vigente (la computadora está pendiente) -->
|
|
180
|
+
<sui-command-menu-item type="left-icon" [size]="bp.tactil() ? 'medium' : 'small'" icon="wallet-3-line"
|
|
181
|
+
title="Recargas" />
|
|
182
|
+
```
|
|
183
|
+
|
|
124
184
|
## Ejemplo
|
|
125
185
|
|
|
126
186
|
```html
|
|
127
187
|
<sui-modal [(open)]="buscadorAbierto" size="large" [fullscreen]="true">
|
|
128
188
|
<sui-command-menu-search [(value)]="q" placeholder="Busca pedidos, locales o repartidores…"
|
|
129
|
-
[shortcut]="!bp.isMobile()" />
|
|
189
|
+
[shortcut]="!bp.isMobile()" [button]="!bp.tactil()" />
|
|
130
190
|
<sui-content-divider type="text" text="Pantallas" />
|
|
131
191
|
@for (p of pantallas(); track p.ruta) {
|
|
132
192
|
<sui-command-menu-item type="left-icon" [icon]="p.icono" [title]="p.nombre"
|
|
133
|
-
[size]="bp.
|
|
193
|
+
[size]="bp.tactil() ? 'medium' : 'small'"
|
|
134
194
|
(click)="ir(p.ruta)" (keydown.enter)="ir(p.ruta)" />
|
|
135
195
|
}
|
|
136
196
|
@if (!bp.isMobile()) {
|