@ajuarezso/sui-design-system 0.22.0 → 0.23.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/docs/INDEX.md +8 -8
- package/docs/sui-accordion/README.md +2 -2
- package/docs/sui-activity-feed/README.md +1 -2
- package/docs/sui-alert/README.md +28 -19
- package/docs/sui-app-store-badge/README.md +5 -4
- package/docs/sui-avatar/README.md +16 -16
- package/docs/sui-avatar-group/README.md +4 -4
- package/docs/sui-badge/README.md +27 -9
- package/docs/sui-banner/README.md +10 -9
- package/docs/sui-brand-logo/README.md +3 -3
- package/docs/sui-breadcrumbs/README.md +1 -1
- package/docs/sui-button/README.md +48 -24
- package/docs/sui-button-group/README.md +6 -4
- package/docs/sui-button-group-item/README.md +3 -3
- package/docs/sui-card/README.md +17 -19
- package/docs/sui-chart-legend/README.md +8 -7
- package/docs/sui-checkbox/README.md +11 -6
- package/docs/sui-checkbox-card/README.md +24 -19
- package/docs/sui-checkbox-label/README.md +32 -10
- package/docs/sui-circular-progress-bar/README.md +2 -0
- package/docs/sui-color-dot/README.md +1 -1
- package/docs/sui-color-picker/README.md +22 -7
- package/docs/sui-command-menu-footer/README.md +8 -8
- package/docs/sui-command-menu-search/README.md +2 -2
- package/docs/sui-compact-avatar-group/README.md +4 -3
- package/docs/sui-compact-button/README.md +41 -44
- package/docs/sui-compact-select/README.md +9 -5
- package/docs/sui-compact-select-for-input/README.md +2 -2
- package/docs/sui-content-card/README.md +6 -5
- package/docs/sui-content-divider/README.md +4 -4
- package/docs/sui-content-label/README.md +11 -6
- package/docs/sui-counter-input/README.md +19 -18
- package/docs/sui-date-selector/README.md +16 -12
- package/docs/sui-datepicker/README.md +46 -32
- package/docs/sui-day-cell/README.md +17 -8
- package/docs/sui-day-label/README.md +2 -2
- package/docs/sui-divider/README.md +5 -5
- package/docs/sui-drawer-footer/README.md +19 -5
- package/docs/sui-dropdown-search/README.md +3 -3
- package/docs/sui-emoji/README.md +6 -6
- package/docs/sui-empty-state/README.md +13 -23
- package/docs/sui-fancy-button/README.md +24 -18
- package/docs/sui-file-icon/README.md +1 -1
- package/docs/sui-file-upload/README.md +3 -0
- package/docs/sui-file-upload-card/README.md +8 -7
- package/docs/sui-filter/README.md +5 -5
- package/docs/sui-flag/README.md +3 -2
- package/docs/sui-form-hint/README.md +12 -8
- package/docs/sui-form-label/README.md +11 -16
- package/docs/sui-icon/README.md +4 -3
- package/docs/sui-image-upload/README.md +28 -16
- package/docs/sui-inline-input/README.md +7 -6
- package/docs/sui-inline-select/README.md +8 -5
- package/docs/sui-input/README.md +26 -35
- package/docs/sui-integration-switch/README.md +14 -7
- package/docs/sui-kbd/README.md +4 -4
- package/docs/sui-key-icon/README.md +6 -2
- package/docs/sui-link-button/README.md +21 -17
- package/docs/sui-modal-footer/README.md +1 -1
- package/docs/sui-notification/README.md +8 -6
- package/docs/sui-notification-footer/README.md +2 -2
- package/docs/sui-notification-tab-menu/README.md +5 -3
- package/docs/sui-pagination/README.md +8 -5
- package/docs/sui-password-strength/README.md +1 -1
- package/docs/sui-period-range/README.md +18 -14
- package/docs/sui-popover/README.md +13 -7
- package/docs/sui-product-card/README.md +14 -10
- package/docs/sui-progress-bar/README.md +4 -2
- package/docs/sui-progress-bar-label/README.md +2 -0
- package/docs/sui-radio/README.md +14 -7
- package/docs/sui-radio-card/README.md +12 -12
- package/docs/sui-radio-label/README.md +36 -11
- package/docs/sui-rating/README.md +28 -9
- package/docs/sui-rich-editor/README.md +3 -3
- package/docs/sui-segmented-control/README.md +32 -21
- package/docs/sui-select/README.md +35 -31
- package/docs/sui-sidebar/README.md +1 -2
- package/docs/sui-slider/README.md +7 -0
- package/docs/sui-social-button/README.md +24 -11
- package/docs/sui-status-badge/README.md +7 -3
- package/docs/sui-stepper/README.md +30 -17
- package/docs/sui-store-card/README.md +9 -4
- package/docs/sui-switch/README.md +16 -11
- package/docs/sui-switch-card/README.md +18 -16
- package/docs/sui-switch-label/README.md +22 -11
- package/docs/sui-tab-chips/README.md +55 -41
- package/docs/sui-tab-menu-horizontal/README.md +19 -11
- package/docs/sui-tab-menu-vertical/README.md +10 -5
- package/docs/sui-tag/README.md +25 -11
- package/docs/sui-tag-input/README.md +24 -14
- package/docs/sui-textarea/README.md +21 -21
- package/docs/sui-time-picker/README.md +38 -32
- package/docs/sui-toast/README.md +27 -22
- package/docs/sui-tooltip/README.md +14 -17
- package/docs/sui-topbar-button/README.md +2 -2
- package/fesm2022/ajuarezso-sui-design-system.mjs +1067 -236
- package/fesm2022/ajuarezso-sui-design-system.mjs.map +1 -1
- package/package.json +1 -1
- package/types/ajuarezso-sui-design-system.d.ts +601 -267
|
@@ -51,18 +51,28 @@ 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:302` (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
|
|
58
58
|
|
|
59
|
-
|
|
|
60
|
-
|
|
61
|
-
|
|
|
59
|
+
| size | botón que abre el panel | puntos del panel | fuente |
|
|
60
|
+
|---|---|---|---|
|
|
61
|
+
| `medium` (default) | 38 (6 + 24 del punto + 6, más 2 de borde), texto 14 | 24, separados 4 | Figma |
|
|
62
|
+
| `large` | 44 (9 + 24 + 9 + 2), texto 16 | 32 (`sui-color-dot` `large`), separados 12: paso de 44 entre centros, 5 por fila | canon (dueño, 04-10-2026): piso táctil 44 en el teléfono. Size nuevo del 04-10-2026 |
|
|
63
|
+
|
|
64
|
+
| uso | mobile | web | fuente |
|
|
65
|
+
|---|---|---|---|
|
|
66
|
+
| color picker | `large` | `medium` | canon (dueño, 04-10-2026): piso táctil 44 en el teléfono |
|
|
67
|
+
|
|
68
|
+
```html
|
|
69
|
+
<sui-color-picker [size]="bp.isMobile() ? 'large' : 'medium'" [(value)]="color" />
|
|
70
|
+
```
|
|
62
71
|
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
72
|
+
Los puntos se **ven y se tocan** de 32: el dibujo de `sui-color-dot` usa sus dos pseudo-elementos
|
|
73
|
+
(punto y anillo), así que no hay dónde colgar un área invisible. La separación de 12 deja 44 entre
|
|
74
|
+
centros, lo que evita tocar el vecino. Los controles del espectro, los sliders y el campo hex no
|
|
75
|
+
cambian con `size`.
|
|
66
76
|
|
|
67
77
|
## «No usar»: por qué no hoy y cuándo sí
|
|
68
78
|
|
|
@@ -88,6 +98,7 @@ Agrandarlo es una decisión del DS.
|
|
|
88
98
|
| `eyedropper` | `boolean` | `true` |
|
|
89
99
|
| `showFormatLabel` | `boolean` | `true` |
|
|
90
100
|
| `disabled` | `boolean` | `false` |
|
|
101
|
+
| `size` | `'medium' \| 'large'` | `'medium'` |
|
|
91
102
|
| `ariaLabel` | `string` | `'Seleccionar color'` |
|
|
92
103
|
|
|
93
104
|
| output | payload |
|
|
@@ -108,6 +119,10 @@ Agrandarlo es una decisión del DS.
|
|
|
108
119
|
- Acepta 3, 4, 6 u 8 caracteres con o sin `#`, y siempre emite con `#`.
|
|
109
120
|
- El botón muestra el nombre en español si el color es uno de los 10 («Naranja»); si no, el hex
|
|
110
121
|
en mayúsculas.
|
|
122
|
+
- La muestra de color del botón es un `<span>` con el dibujo de `sui-color-dot` en `selected`, no
|
|
123
|
+
un `sui-color-dot`: hasta el 04-10-2026 quedaba un botón (`role="radio"`) dentro del botón. El
|
|
124
|
+
campo hex ya no lleva `inputmode="text"` (no cambiaba nada y es lo que rompe la acción del
|
|
125
|
+
teclado en Android).
|
|
111
126
|
- Elegir un recomendado **cierra** el panel; arrastrar el espectro no.
|
|
112
127
|
- El panel vive en un overlay del CDK: escapa a cualquier `overflow: hidden` del contenedor.
|
|
113
128
|
- No implementa `ControlValueAccessor`: se usa con `[(value)]`.
|
|
@@ -38,8 +38,8 @@ No tiene variantes. Se decide el copy y si va el bloque de ayuda.
|
|
|
38
38
|
|
|
39
39
|
| prop | regla | fuente |
|
|
40
40
|
|---|---|---|
|
|
41
|
-
| `navigateLabel` · `selectLabel` | **Siempre en español**: «Moverte» y «Abrir» (o «Elegir»). Los defaults son `'
|
|
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
|
|
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». | propuesta |
|
|
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
|
|
@@ -63,10 +63,10 @@ No tiene tamaños: 48 px de alto, textos 12/16, hasta 600 px de ancho.
|
|
|
63
63
|
|
|
64
64
|
| input | tipo | default |
|
|
65
65
|
|---|---|---|
|
|
66
|
-
| `navigateLabel` | `string` | `'
|
|
67
|
-
| `selectLabel` | `string` | `'
|
|
68
|
-
| `helpText` | `string \| null` | `
|
|
69
|
-
| `helpLink` | `SuiLinkConfig \| string \| null` | `'
|
|
66
|
+
| `navigateLabel` | `string` | `'Navegar'` |
|
|
67
|
+
| `selectLabel` | `string` | `'Seleccionar'` |
|
|
68
|
+
| `helpText` | `string \| null` | `'¿No es lo que buscas? Prueba el'` |
|
|
69
|
+
| `helpLink` | `SuiLinkConfig \| string \| null` | `'Centro de ayuda'` |
|
|
70
70
|
|
|
71
71
|
| output | payload |
|
|
72
72
|
|---|---|
|
|
@@ -78,8 +78,8 @@ No tiene tamaños: 48 px de alto, textos 12/16, hasta 600 px de ancho.
|
|
|
78
78
|
|
|
79
79
|
## Trampas
|
|
80
80
|
|
|
81
|
-
- **Los cuatro textos
|
|
82
|
-
|
|
81
|
+
- **Los cuatro textos por defecto están en español desde el 04-10-2026**: «Navegar», «Seleccionar»,
|
|
82
|
+
«¿No es lo que buscas? Prueba el» y «Centro de ayuda». El link no lleva a ningún lado si no le pasas `href`.
|
|
83
83
|
- **`helpText: null` saca también el link**; `helpLink: null` saca solo el link y deja el texto.
|
|
84
84
|
- **Promete flechas que nadie cablea**: ni `sui-command-menu-item` ni el modal mueven la selección
|
|
85
85
|
con ↑ ↓.
|
|
@@ -41,7 +41,7 @@ más oscuro) y con texto (lupa naranja, X para limpiar).
|
|
|
41
41
|
|
|
42
42
|
| prop | regla | fuente |
|
|
43
43
|
|---|---|---|
|
|
44
|
-
| `placeholder` | **Siempre**, en español y diciendo qué se busca: «Busca pedidos, locales o repartidores…». El default es `'
|
|
44
|
+
| `placeholder` | **Siempre**, en español y diciendo qué se busca: «Busca pedidos, locales o repartidores…». El default genérico es `'Buscar o ir a…'`. | canon (CANON-SUI §5: copy en español, elipsis `…`) |
|
|
45
45
|
| `shortcut` | `true` solo en web; en mobile `false` (no hay teclado físico). | canon (README de `sui-kbd`) |
|
|
46
46
|
| `button` | Déjalo en `true`: la X de limpiar ahorra borrar a mano. El ícono de info del estado vacío no hace nada. | propuesta |
|
|
47
47
|
|
|
@@ -66,7 +66,7 @@ No tiene tamaños: 48 px de alto (14 + 20 + 13 + 1 de borde), texto 14/20, hasta
|
|
|
66
66
|
| input | tipo | default |
|
|
67
67
|
|---|---|---|
|
|
68
68
|
| `value` | `string` | `''` |
|
|
69
|
-
| `placeholder` | `string` | `'
|
|
69
|
+
| `placeholder` | `string` | `'Buscar o ir a…'` |
|
|
70
70
|
| `shortcut` | `boolean` | `true` |
|
|
71
71
|
| `button` | `boolean` | `true` |
|
|
72
72
|
|
|
@@ -25,8 +25,8 @@ de lista. Es una píldora blanca con los avatares casi pegados y el «+N» como
|
|
|
25
25
|
> marcado «según la guía del DS» sale de su texto o de su código; el resto es **propuesta,
|
|
26
26
|
> falta aprobación**.
|
|
27
27
|
>
|
|
28
|
-
> Uso medido el 03-10-2026 en `master-pedidos/src/app`: **0 usos directos**.
|
|
29
|
-
>
|
|
28
|
+
> Uso medido el 03-10-2026 en `master-pedidos/src/app`: **0 usos directos**. En el DS no lo
|
|
29
|
+
> monta ningún componente: `sui-table` solo lo nombra como contenido que se proyecta en una celda.
|
|
30
30
|
|
|
31
31
|
### Lo que sí dice la guía del DS
|
|
32
32
|
|
|
@@ -94,7 +94,8 @@ Outputs: ninguno.
|
|
|
94
94
|
- **El estilo se llama `appearance`**, no `variant` ni `style` (el atributo `style` es del HTML).
|
|
95
95
|
- **`size` no es el de `sui-avatar`**: `'24'` → avatar `sm`, `'32'` → `md`, `'40'` → `lg`.
|
|
96
96
|
- **`count` gana sobre el cálculo**: si lo pasas, se muestra aunque no sobre nadie.
|
|
97
|
-
- Las reglas de foto y color de cada persona son las de `sui-avatar
|
|
97
|
+
- Las reglas de foto y color de cada persona son las de `sui-avatar`: el `color` por rol va
|
|
98
|
+
explícito en cada item (canon, aprobado por el dueño, 03-10-2026); sin él cae a `slate`.
|
|
98
99
|
|
|
99
100
|
## Ejemplo
|
|
100
101
|
|
|
@@ -27,11 +27,11 @@ carrusel o un mapa.
|
|
|
27
27
|
> dos tamaños, el radio completo y el deshabilitado, sin do/don't. Las reglas de abajo son
|
|
28
28
|
> **canon (aprobado por el dueño, 03-10-2026)** salvo donde dice otra fuente.
|
|
29
29
|
>
|
|
30
|
-
> Uso medido el
|
|
30
|
+
> Uso medido el 04-10-2026 en `master-pedidos/src/app`: 11 compact-buttons en 7 archivos, sin
|
|
31
31
|
> contar prototipos ni vitrinas (`master-preview`, `master-prototipos`, `mockup-sheets-*`,
|
|
32
32
|
> `dx/*`, `master-rutina`, `master-medico`, `dev-index`). Estilos: 6 `ghost`, 3 `stroke` (uno
|
|
33
|
-
> por error, ver abajo), 2 `white`, 0 `modifiable`. Tamaños:
|
|
34
|
-
> 4 con `fullRadius`, 1 con `disabled`.
|
|
33
|
+
> por error, ver abajo), 2 `white`, 0 `modifiable`. Tamaños: 3 `large`, 2 `medium`, 2 `xlarge` y
|
|
34
|
+
> 4 por `bp` (`2xlarge`/`large` y `3xlarge`/`medium`). 4 con `fullRadius`, 1 con `disabled`.
|
|
35
35
|
|
|
36
36
|
### Lo que sí dice la guía del DS
|
|
37
37
|
|
|
@@ -47,21 +47,20 @@ carrusel o un mapa.
|
|
|
47
47
|
| variantStyle | cuándo | ejemplo real de la app | fuente |
|
|
48
48
|
|---|---|---|---|
|
|
49
49
|
| `stroke` (default) | Acciones de una fila o una card: «más», «editar», el − / + de una cantidad. | `components/product-detail-view/product-detail-view.html:169` (− / +) | canon (aprobado por el dueño, 03-10-2026) |
|
|
50
|
-
| `ghost` | Cerrar en la cabecera de un modal o un sheet. | `components/store-ratings-modal/store-ratings-modal.html:33` («Cerrar») | canon (aprobado por el dueño, 03-10-2026) |
|
|
50
|
+
| `ghost` | Cerrar en la cabecera de un modal o un sheet, y acciones de fila sin caja (quitar, más, editar) donde el `stroke` recarga una lista densa. | `components/store-ratings-modal/store-ratings-modal.html:33` («Cerrar») · `components/option-sections-manager/option-sections-manager.html:38` (quitar) | cerrar: canon (aprobado por el dueño, 03-10-2026) · filas: canon (dueño, 04-10-2026), igual que en `sui-button` |
|
|
51
51
|
| `white` | Flotante sobre un mapa o una foto, siempre con `fullRadius`. | `pages/customer/store-browser/arrastre-carrusel.ts:102` (flechas del carrusel) | canon (aprobado por el dueño, 03-10-2026) |
|
|
52
52
|
| `modifiable` | Hereda el color del contenedor: el cerrar del alert (ya lo trae `sui-alert` adentro). | (sin uso directo; vive dentro de `sui-alert`) | hereda el color: según la guía del DS · dónde va: canon (aprobado por el dueño, 03-10-2026) |
|
|
53
53
|
|
|
54
54
|
**Usos de hoy que rompen la regla:**
|
|
55
55
|
|
|
56
|
-
- **1 bug: `variant="ghost"` en vez de `variantStyle`.** `pages/super-admin/master-settings/master-settings.html:
|
|
56
|
+
- **1 bug: `variant="ghost"` en vez de `variantStyle`.** `pages/super-admin/master-settings/master-settings.html:658`
|
|
57
57
|
(«Quitar este nivel»). `variant` no es un input del compact-button: el atributo se ignora y el
|
|
58
58
|
botón sale `stroke`. Pasar a `variantStyle="ghost"`.
|
|
59
|
-
- **
|
|
60
|
-
`components/option-sections-manager/option-sections-manager.html:
|
|
61
|
-
`components/add-product-modal/add-product-modal.html:
|
|
62
|
-
`pages/super-admin/master-settings/master-settings.html:
|
|
63
|
-
|
|
64
|
-
borrar en filas. Los dos canon se contradicen: hay que elegir uno.
|
|
59
|
+
- **Resuelto — `ghost` en acciones de fila** (canon, dueño 04-10-2026): se permite, igual que en
|
|
60
|
+
`sui-button`. Los 5 usos de hoy quedan bien: `components/option-sections-manager/option-sections-manager.html:38`
|
|
61
|
+
y `:148`, `components/add-product-modal/add-product-modal.html:315`,
|
|
62
|
+
`pages/super-admin/master-settings/master-settings.html:113` y `:658` (este último sigue con el
|
|
63
|
+
bug de `variant` en vez de `variantStyle`).
|
|
65
64
|
|
|
66
65
|
### `size`
|
|
67
66
|
|
|
@@ -70,19 +69,18 @@ carrusel o un mapa.
|
|
|
70
69
|
| `medium` | 20 (16) | Solo desktop, filas muy densas (tablas). | escala: según la guía del DS · cuándo: canon (aprobado por el dueño, 03-10-2026) |
|
|
71
70
|
| `large` (default) | 24 (20) | Desktop, dentro de cards. | default según la guía del DS · cuándo: canon (aprobado por el dueño, 03-10-2026) |
|
|
72
71
|
| `xlarge` | 28 (24) | Cabeceras de modal en desktop; flechas de carrusel que solo se ven con mouse. | extensión de SUI · canon (aprobado por el dueño, 03-10-2026) |
|
|
73
|
-
| `2xlarge` | 32 (20) | **El mínimo en mobile**: filas y cards que se tocan con el dedo. | extensión de SUI · canon (aprobado por el dueño, 03-10-2026).
|
|
74
|
-
| `3xlarge` | 36 (20) | Cerrar en modales y sheets en mobile. | ídem: canon;
|
|
75
|
-
| `4xlarge` | 40 (24) | Flotantes sobre el mapa (volver, centrar). | ídem: canon;
|
|
72
|
+
| `2xlarge` | 32 (20) | **El mínimo en mobile**: filas y cards que se tocan con el dedo. | extensión de SUI · canon (aprobado por el dueño, 03-10-2026). Publicado desde 0.20.0 |
|
|
73
|
+
| `3xlarge` | 36 (20) | Cerrar en modales y sheets en mobile. | ídem: canon; publicado desde 0.20.0 |
|
|
74
|
+
| `4xlarge` | 40 (24) | Flotantes sobre el mapa (volver, centrar). | ídem: canon; publicado desde 0.20.0 |
|
|
75
|
+
| `5xlarge` | 44 (24) | **El del teléfono** cuando el botón se toca solo: cerrar un modal o sheet, flotantes sobre el mapa. El ícono se queda en 24 como `4xlarge`: crece el área, no el dibujo. | canon (dueño, 04-10-2026): piso táctil 44 en el teléfono |
|
|
76
76
|
|
|
77
|
-
**
|
|
78
|
-
|
|
77
|
+
**Migración a tamaños de mobile: hecha** (medido el 04-10-2026). Los 4 casos del cliente ya usan
|
|
78
|
+
`bp`: `components/product-detail-view/product-detail-view.html:169` y `:173` y
|
|
79
|
+
`pages/customer/order-history/order-history.html:382` con `2xlarge`/`large`, y
|
|
80
|
+
`components/store-ratings-modal/store-ratings-modal.html:33` con `3xlarge` en mobile.
|
|
79
81
|
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
`medium` → `3xlarge`), `pages/customer/order-history/order-history.html:383` (flecha de la fila
|
|
83
|
-
en `large` → `2xlarge`).
|
|
84
|
-
- **La migración está bloqueada** hasta que se publique la versión del DS con `2xlarge`,
|
|
85
|
-
`3xlarge` y `4xlarge`.
|
|
82
|
+
**Uso de hoy que rompe la regla:** `store-ratings-modal.html:33` cierra en web con `medium` (20);
|
|
83
|
+
la tabla de abajo pide `xlarge` (28).
|
|
86
84
|
|
|
87
85
|
### `fullRadius`
|
|
88
86
|
|
|
@@ -106,29 +104,29 @@ botones de 20 o 24 px):
|
|
|
106
104
|
En mobile se toca con el dedo: el área táctil tiene que medir **44 px o más**. En web, con mouse,
|
|
107
105
|
va un tamaño más chico. La app ya lo resuelve con `BreakpointsService`
|
|
108
106
|
(`src/app/services/breakpoints.service.ts`, mobile = hasta 767 px):
|
|
109
|
-
`[size]="bp.isMobile() ? 'large' : 'small'"
|
|
110
|
-
|
|
107
|
+
`[size]="bp.isMobile() ? 'large' : 'small'"`. Medido el 04-10-2026 en `master-pedidos`: 166 `[size]`
|
|
108
|
+
con `bp` (142 `large`/`medium`, 22 `large`/`small`, 2 `medium`/`xsmall`). Regla del dueño, 03-10-2026.
|
|
111
109
|
|
|
112
110
|
| uso | mobile | web | fuente |
|
|
113
111
|
|---|---|---|---|
|
|
114
|
-
| acciones de fila o card (más, quitar, − / +) | `2xlarge` (32) | `large` (24); `medium` (20) en tablas densas | canon (
|
|
115
|
-
| cerrar en la cabecera de un modal o sheet | `
|
|
116
|
-
| flotante sobre el mapa o una foto | `
|
|
112
|
+
| acciones de fila o card (más, quitar, − / +) | `5xlarge` (44); si la fila no lo deja entrar, `2xlarge` (32) con aire alrededor | `large` (24); `medium` (20) en tablas densas | 44: canon (dueño, 04-10-2026): piso táctil 44 en el teléfono · la excepción de 32: propuesta, falta aprobación |
|
|
113
|
+
| cerrar en la cabecera de un modal o sheet | `5xlarge` (44) | `xlarge` (28) | canon (dueño, 04-10-2026): piso táctil 44 en el teléfono (antes `3xlarge`, 03-10-2026) |
|
|
114
|
+
| flotante sobre el mapa o una foto | `5xlarge` (44) | `xlarge` (28) | canon (dueño, 04-10-2026): piso táctil 44 en el teléfono (antes `4xlarge`, 03-10-2026) |
|
|
117
115
|
|
|
118
116
|
```html
|
|
119
117
|
<sui-compact-button icon="close-line" variantStyle="ghost" ariaLabel="Cerrar"
|
|
120
|
-
[size]="bp.isMobile() ? '
|
|
118
|
+
[size]="bp.isMobile() ? '5xlarge' : 'xlarge'" (clicked)="cerrar()" />
|
|
121
119
|
```
|
|
122
120
|
|
|
123
|
-
|
|
124
|
-
(
|
|
125
|
-
|
|
126
|
-
toque el vecino. `medium` y `large` no
|
|
127
|
-
|
|
121
|
+
`2xlarge`, `3xlarge` y `4xlarge` están publicados desde la 0.20.0 (la app usa la 0.22.0); `5xlarge`
|
|
122
|
+
(44) se agregó el 04-10-2026 para llegar al piso táctil del teléfono. Si una fila o card no deja
|
|
123
|
+
entrar un botón de 44, `2xlarge` (32) con aire alrededor (gap o padding) es la excepción, para que el
|
|
124
|
+
dedo no toque el vecino. `medium` y `large` no
|
|
125
|
+
van en mobile.
|
|
128
126
|
|
|
129
127
|
## «No usar»: por qué no hoy y cuándo sí
|
|
130
128
|
|
|
131
|
-
Ningún valor del compact-button está en «no usar»: los cuatro estilos y los
|
|
129
|
+
Ningún valor del compact-button está en «no usar»: los cuatro estilos y los siete tamaños tienen
|
|
132
130
|
un caso. `modifiable` no tiene un uso directo hoy porque el único lugar donde va (el cerrar del
|
|
133
131
|
alert) ya lo trae `sui-alert` adentro.
|
|
134
132
|
|
|
@@ -141,7 +139,7 @@ alert) ya lo trae `sui-alert` adentro.
|
|
|
141
139
|
|---|---|---|
|
|
142
140
|
| `icon` | `string` | — (requerido) |
|
|
143
141
|
| `variantStyle` | `'stroke' \| 'ghost' \| 'modifiable' \| 'white'` | `'stroke'` |
|
|
144
|
-
| `size` | `'medium' \| 'large' \| 'xlarge' \| '2xlarge' \| '3xlarge' \| '4xlarge'` | `'large'` |
|
|
142
|
+
| `size` | `'medium' \| 'large' \| 'xlarge' \| '2xlarge' \| '3xlarge' \| '4xlarge' \| '5xlarge'` | `'large'` |
|
|
145
143
|
| `fullRadius` | `boolean` | `false` |
|
|
146
144
|
| `disabled` | `boolean` | `false` |
|
|
147
145
|
| `href` | `string \| null` | `null` |
|
|
@@ -160,14 +158,12 @@ El clic se escucha con `(clicked)`. `icon` recibe el nombre RemixIcon, sin el pr
|
|
|
160
158
|
## Trampas
|
|
161
159
|
|
|
162
160
|
- **El estilo se llama `variantStyle`**, no `variant`. `variant="ghost"` no da error de
|
|
163
|
-
compilación: se ignora y sale `stroke` (
|
|
161
|
+
compilación: se ignora y sale `stroke` (pasa hoy en `master-settings.html:658`).
|
|
164
162
|
- **`icon` y `ariaLabel` son obligatorios**: sin `ariaLabel` no compila.
|
|
165
163
|
- **El output es `(clicked)`**. `(click)` sobre el host también llega porque el clic burbujea; hoy 6
|
|
166
|
-
usos lo escuchan así (`product-detail-view.html:169` y `:173`, `master-settings.html:
|
|
167
|
-
`arrastre-carrusel.ts:102` y `:104`, `order-history.html:
|
|
164
|
+
usos lo escuchan así (`product-detail-view.html:169` y `:173`, `master-settings.html:658`,
|
|
165
|
+
`arrastre-carrusel.ts:102` y `:104`, `order-history.html:382`). Usa `(clicked)`, que ya respeta
|
|
168
166
|
`disabled`.
|
|
169
|
-
- **El paquete publicado (0.19.0) solo trae `medium`, `large` y `xlarge`.** Pasar `2xlarge` con un
|
|
170
|
-
cast compila, pero el botón sale sin tamaño y con ícono de 16: no lo hagas hasta que se publique.
|
|
171
167
|
- En `medium` el ícono mide 16, no los 18 de la guía.
|
|
172
168
|
- `modifiable` en hover pinta blanco al 16 %: pensado para fondos oscuros o de color. Sobre blanco
|
|
173
169
|
casi no se nota. Se ajusta con `--sui-compact-button-hover-bg` y `--sui-compact-button-active-bg`.
|
|
@@ -178,13 +174,14 @@ El clic se escucha con `(clicked)`. `icon` recibe el nombre RemixIcon, sin el pr
|
|
|
178
174
|
## Ejemplo
|
|
179
175
|
|
|
180
176
|
```html
|
|
181
|
-
<!-- Cerrar en la cabecera de un sheet
|
|
182
|
-
<sui-compact-button icon="close-line" variantStyle="ghost" size="
|
|
177
|
+
<!-- Cerrar en la cabecera de un sheet: 5xlarge (44) en mobile, xlarge en web -->
|
|
178
|
+
<sui-compact-button icon="close-line" variantStyle="ghost" [size]="bp.isMobile() ? '5xlarge' : 'xlarge'"
|
|
179
|
+
ariaLabel="Cerrar" (clicked)="cerrar()" />
|
|
183
180
|
|
|
184
181
|
<!-- Acción de una fila en desktop -->
|
|
185
182
|
<sui-compact-button icon="more-2-line" ariaLabel="Opciones de la sección" (clicked)="abrirMenu()" />
|
|
186
183
|
|
|
187
184
|
<!-- Flotante sobre el mapa -->
|
|
188
|
-
<sui-compact-button icon="arrow-left-line" variantStyle="white" [fullRadius]="true"
|
|
189
|
-
ariaLabel="Volver" (clicked)="volver()" />
|
|
185
|
+
<sui-compact-button icon="arrow-left-line" variantStyle="white" [fullRadius]="true"
|
|
186
|
+
[size]="bp.isMobile() ? '5xlarge' : 'xlarge'" ariaLabel="Volver" (clicked)="volver()" />
|
|
190
187
|
```
|
|
@@ -31,7 +31,7 @@ Regla corta: **filtro suelto en una barra, ancho al texto → compact · campo c
|
|
|
31
31
|
>
|
|
32
32
|
> Uso medido el 03-10-2026 en `master-pedidos/src/app`: **0 usos**. Los filtros de las barras del
|
|
33
33
|
> panel usan `sui-select` sin label (6: `pages/customers/customers.html:38`,
|
|
34
|
-
> `pages/settings/team/team.html:
|
|
34
|
+
> `pages/settings/team/team.html:67`, `pages/drivers/drivers.html:73`…), que se estira a todo el ancho.
|
|
35
35
|
|
|
36
36
|
| prop | cuándo | fuente |
|
|
37
37
|
|---|---|---|
|
|
@@ -42,18 +42,19 @@ Regla corta: **filtro suelto en una barra, ancho al texto → compact · campo c
|
|
|
42
42
|
| `selected` / `selectedChange` | La opción elegida (objeto entero). O `formControlName`, nunca los dos. | API |
|
|
43
43
|
| `placeholder` | El filtro sin elegir: «Todos». Corto. | propuesta, falta aprobación |
|
|
44
44
|
| `value` / `icon` | Lo que muestra el campo cuando no hay `items` (modo «solo campo», el menú lo arma la pantalla). | API |
|
|
45
|
-
| `error` | No usar hoy: un filtro no tiene error. |
|
|
45
|
+
| `error` | No usar hoy: un filtro no tiene error. | propuesta, falta aprobación |
|
|
46
46
|
| `disabled` | Mientras carga la lista. | según la guía del DS |
|
|
47
47
|
| `clicked` | Solo si la pantalla arma su propio menú (sin `items`). | API |
|
|
48
48
|
|
|
49
|
-
**Candidatos de hoy:** los 6 filtros de barra del panel en web (arriba). En mobile
|
|
50
|
-
`sui-select` `large` a todo el ancho
|
|
49
|
+
**Candidatos de hoy:** los 6 filtros de barra del panel en web (arriba). En mobile pueden seguir
|
|
50
|
+
como `sui-select` `large` a todo el ancho o pasar a este en `large` (48, desde el 03-10-2026).
|
|
51
51
|
|
|
52
52
|
## Tamaño en mobile y en web
|
|
53
53
|
|
|
54
54
|
Tiene los tres tamaños de la guía —`medium` (40), `small` (36), `xsmall` (32)— y **`large` (48)**,
|
|
55
55
|
extensión SUI para mobile: mide lo mismo que un `sui-button` `large` de la misma barra. En `large`
|
|
56
|
-
crece el aire (padding 12 a los lados, radio 12) y los íconos
|
|
56
|
+
crece el aire (padding 12 a los lados, 14 a la izquierda en `type="basic"`; radio 12) y los íconos
|
|
57
|
+
siguen en 20. Alto: padding 11 + línea 24 + 11 + borde 2 = 48.
|
|
57
58
|
|
|
58
59
|
En large y xlarge el texto sube a 16 px (regla del 03-10-2026): el valor y las opciones del menú
|
|
59
60
|
van en 16/24 en `large` y el padding vertical baja para que el alto siga en 48 (trigger) y 44 (opción).
|
|
@@ -104,6 +105,7 @@ Las opciones del menú siguen al `size` como en `sui-select`: 36 hasta `medium`,
|
|
|
104
105
|
| `selected` · model, `[(selected)]` | `SuiCompactSelectItem<T> \| null` | `null` |
|
|
105
106
|
| `error` | `boolean` | `false` |
|
|
106
107
|
| `disabled` | `boolean` | `false` |
|
|
108
|
+
| `ariaLabel` | `string \| null` | `null` |
|
|
107
109
|
|
|
108
110
|
| output | payload |
|
|
109
111
|
|---|---|
|
|
@@ -119,6 +121,8 @@ Implementa `ControlValueAccessor` (el valor es el `value` de la opción).
|
|
|
119
121
|
se entera de lo que escribe `selected`.
|
|
120
122
|
- Sin `items` no abre nada: solo emite `(clicked)`.
|
|
121
123
|
- `type="icon"` **no muestra texto**: solo el ícono de la opción elegida.
|
|
124
|
+
Pásale `ariaLabel` («Ordenar por»): es el nombre que lee el lector de pantalla (desde el
|
|
125
|
+
04-10-2026; sin él usa el label de la opción elegida o el placeholder).
|
|
122
126
|
- El menú mide al menos 200 px aunque el campo sea más angosto.
|
|
123
127
|
- Las opciones miden 36 px en web hasta `medium`; 44 en `large` y en mobile (ver «Tamaño»).
|
|
124
128
|
|
|
@@ -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:195` y `:203`.
|
|
34
34
|
|
|
35
35
|
| prop | cuándo | fuente |
|
|
36
36
|
|---|---|---|
|
|
@@ -70,7 +70,7 @@ de la guía no descontaba el borde del input). Ahora el campo mide exacto.
|
|
|
70
70
|
|
|
71
71
|
| qué | por qué no hoy | cuándo sí, en un flujo nuevo |
|
|
72
72
|
|---|---|---|
|
|
73
|
-
| el componente entero (0 usos) | todo es en soles y con +51 | la moneda de un gasto (`master-gastos.html:
|
|
73
|
+
| el componente entero (0 usos) | todo es en soles y con +51 | la moneda de un gasto (`master-gastos.html:195`) o teléfonos de otro país |
|
|
74
74
|
| `country` con bandera | solo hay teléfonos de Perú | repartidores o clientes con número extranjero |
|
|
75
75
|
|
|
76
76
|
## API
|
|
@@ -65,20 +65,21 @@ no le sirve a ningún uso de hoy.
|
|
|
65
65
|
|
|
66
66
|
## Tamaño en mobile y en web
|
|
67
67
|
|
|
68
|
-
La fila mide
|
|
68
|
+
La fila mide 74 en las dos: leading de 40 + padding 16 × 2 + borde 1 × 2 (`sui-content-card.scss:19,21`; Figma la dibuja en 72 con el borde por dentro). El `size` cambia **solo la X de quitar**:
|
|
69
69
|
|
|
70
70
|
| size | X visible | área táctil | glyph | fuente |
|
|
71
71
|
|---|---|---|---|---|
|
|
72
72
|
| `medium` (default) | 20 × 20 | 20 × 20 | 20 | Figma |
|
|
73
|
-
| `large` | 32 × 32 (radius 8 al hover) | 40 × 40 (`::before` invisible) | 20 | canon (aprobado por el dueño, 03-10-2026): extensión SUI |
|
|
73
|
+
| `large` | 32 × 32 (radius 8 al hover) | 44 × 44 en el teléfono, 40 × 40 en web (`::before` invisible) | 20 | canon (aprobado por el dueño, 03-10-2026): extensión SUI · 44: canon (dueño, 04-10-2026): piso táctil 44 en el teléfono |
|
|
74
74
|
|
|
75
75
|
En `large` el glyph queda en el mismo lugar que en `medium` (la caja grande se come el aire del
|
|
76
|
-
gap con margen negativo), así que la fila se ve igual: lo que crece es dónde se puede tocar.
|
|
76
|
+
gap con margen negativo), así que la fila se ve igual: lo que crece es dónde se puede tocar. En el teléfono el área
|
|
77
|
+
táctil de `large` es de **44** (desde el 04-10-2026; 40 en web).
|
|
77
78
|
|
|
78
79
|
| uso | mobile | web | fuente |
|
|
79
80
|
|---|---|---|---|
|
|
80
|
-
| fila |
|
|
81
|
-
| X para quitar | `large` (32, área
|
|
81
|
+
| fila | 74, sin cambio | 74, sin cambio | medido del `.scss` |
|
|
82
|
+
| X para quitar | `large` (32, área 44) | `medium` (20) | propuesta: el tamaño es extensión SUI aprobada (03-10-2026); el «cuándo» falta aprobarlo |
|
|
82
83
|
|
|
83
84
|
```html
|
|
84
85
|
<sui-content-card … [size]="bp.isMobile() ? 'large' : 'medium'" (dismiss)="quitar(item)" />
|
|
@@ -27,16 +27,16 @@ Story: [Atoms/Divider/Content Divider](https://sui-design-system.web.app/?path=/
|
|
|
27
27
|
> marcado «según la guía del DS» sale de su texto o de sus ejemplos; el resto es **propuesta,
|
|
28
28
|
> falta aprobación**.
|
|
29
29
|
>
|
|
30
|
-
> Uso medido el
|
|
31
|
-
>
|
|
32
|
-
> pedidos»), sin contar prototipos ni vitrinas (`master-preview`, `master-prototipos`,
|
|
30
|
+
> Uso medido el 04-10-2026 en `master-pedidos/src/app`: **3 content-dividers en 3 archivos**:
|
|
31
|
+
> `pages/auth/login/login.html:61` y `pages/auth/register/register.html:97` (`text-line` «o») y
|
|
32
|
+
> `pages/super-admin/master-drivers/master-drivers.html:192` (`solid-text` «Con pocos pedidos»), sin contar prototipos ni vitrinas (`master-preview`, `master-prototipos`,
|
|
33
33
|
> `mockup-sheets-*`, `dx/*`, `_guia-*`, `master-rutina`, `master-medico`, `master-ejercicios`,
|
|
34
34
|
> `dev-index`).
|
|
35
35
|
|
|
36
36
|
| type | cuándo | ejemplo | fuente |
|
|
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
|
-
| `solid-text` | Cabecera de un grupo dentro de una lista o un modal, con fondo. | «Con pocos pedidos» (`master-drivers.html:
|
|
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
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) · propuesta (cuándo) |
|
|
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 |
|
|
@@ -73,11 +73,15 @@ content-card · ajuste → switch-label.**
|
|
|
73
73
|
|
|
74
74
|
No se toca, así que no tiene que llegar a 44. El `size` es de lectura, no de dedo.
|
|
75
75
|
|
|
76
|
-
| uso | mobile | web |
|
|
77
|
-
|
|
78
|
-
| consejos y pasos | `large` | `large` |
|
|
79
|
-
| filas de dato | `medium` | `medium` |
|
|
80
|
-
| fila que se toca (soporte) | `large`, o dale a la fila un alto mínimo de 44 | `medium` |
|
|
76
|
+
| uso | mobile | web | fuente |
|
|
77
|
+
|---|---|---|---|
|
|
78
|
+
| consejos y pasos | `large` | `large` | propuesta, falta aprobación |
|
|
79
|
+
| filas de dato | `medium` | `medium` | propuesta, falta aprobación |
|
|
80
|
+
| fila que se toca (soporte) | `large`, o dale a la fila un alto mínimo de 44 | `medium` | propuesta, falta aprobación |
|
|
81
|
+
|
|
82
|
+
Alto de la fila, medido: `medium` 40 (máx. entre el leading de 40 y el texto 20 + 4 + 16) y
|
|
83
|
+
`large` 48 (máx. entre 48 y 24 + 4 + 20). Lo que se toca es lo que la envuelve: «Contactar soporte»
|
|
84
|
+
va dentro de un `<a>` con padding 12 y borde 1, que da 66.
|
|
81
85
|
|
|
82
86
|
```html
|
|
83
87
|
<sui-content-label [size]="bp.isMobile() ? 'large' : 'medium'" … /> <!-- solo si la fila se toca -->
|
|
@@ -130,7 +134,8 @@ No se toca, así que no tiene que llegar a 44. El `size` es de lectura, no de de
|
|
|
130
134
|
salen `slate`, no el color del rol.
|
|
131
135
|
- `left-icon` sin `icon` no dibuja nada a la izquierda.
|
|
132
136
|
- El `toggle` es un `sui-switch` `medium` fijo y solo el interruptor se toca, no la fila.
|
|
133
|
-
- El host lleva `role="group"` y `aria-label` = `label`.
|
|
137
|
+
- El host lleva `role="group"` y `aria-label` = `label`. El `toggle` toma su nombre del `label`
|
|
138
|
+
(y su descripción de `description`) con `aria-labelledby` (revisión 04-10-2026).
|
|
134
139
|
|
|
135
140
|
## Ejemplo
|
|
136
141
|
|
|
@@ -31,14 +31,14 @@ Regla corta: **se ajusta de a uno y tiene tope → counter · se tipea → input
|
|
|
31
31
|
> con − y + a los lados) y no dice cuándo usarlo. Todo lo de abajo es **propuesta, falta
|
|
32
32
|
> aprobación**, salvo lo que se indica.
|
|
33
33
|
>
|
|
34
|
-
> Uso medido el
|
|
35
|
-
> `master-ejercicios`): **4 usos en 4 archivos**, todos con `min=1`. Tamaños: 2 `large`, 2
|
|
36
|
-
>
|
|
34
|
+
> Uso medido el 04-10-2026 en `master-pedidos/src/app` (misma exclusión que `sui-badge`, más
|
|
35
|
+
> `master-ejercicios`): **4 usos en 4 archivos**, todos con `min=1`. Tamaños: 2 `large`, 2
|
|
36
|
+
> `bp.isMobile() ? 'large' : 'medium'`. Los 4 con `ariaLabel` (1 además con `label`).
|
|
37
37
|
|
|
38
38
|
| prop | cuándo | fuente |
|
|
39
39
|
|---|---|---|
|
|
40
|
-
| `min` | `1` en cantidades de compra: en 1 el − se apaga y quitar queda en el tacho (evita borrar por error). | propuesta (ya es práctica en los 4 usos: `pages/customer/cart/cart.html:
|
|
41
|
-
| `max` | Siempre el tope real: stock, tope por pedido, cupo del viaje. Sin dato, 99. | propuesta (ya es práctica: `pages/customer/restaurant-menu/restaurant-menu.html:
|
|
40
|
+
| `min` | `1` en cantidades de compra: en 1 el − se apaga y quitar queda en el tacho (evita borrar por error). | propuesta (ya es práctica en los 4 usos: `pages/customer/cart/cart.html:80`) |
|
|
41
|
+
| `max` | Siempre el tope real: stock, tope por pedido, cupo del viaje. Sin dato, 99. | propuesta (ya es práctica: `pages/customer/restaurant-menu/restaurant-menu.html:479`) |
|
|
42
42
|
| `step` | `1`. Otro paso no tiene caso hoy. | propuesta, falta aprobación |
|
|
43
43
|
| `label` | Cuando es un campo de un formulario («Pasajeros»). | según la guía del DS (su ejemplo lleva label) |
|
|
44
44
|
| `hint` | El tope dicho en palabras: «Hasta 4 pasajeros». | propuesta (ya es práctica: `components/cambiar-pasajeros/cambiar-pasajeros.html:7`) |
|
|
@@ -48,12 +48,8 @@ Regla corta: **se ajusta de a uno y tiene tope → counter · se tipea → input
|
|
|
48
48
|
| `error` + `errorMessage` | No usar hoy: el contador no deja salir del rango. | — |
|
|
49
49
|
| `required` · `sublabel` · `tooltip` | No usar hoy: una cantidad siempre tiene valor. | — |
|
|
50
50
|
|
|
51
|
-
**Usos de hoy que rompen la regla:**
|
|
52
|
-
|
|
53
|
-
- **2 sin `label` ni `ariaLabel`** (el lector de pantalla dice solo «grupo»):
|
|
54
|
-
`pages/customer/cart/cart.html:82`, `pages/customer/restaurant-menu/restaurant-menu.html:480`.
|
|
55
|
-
- **2 en `medium` en pantallas del teléfono** → `large`: `pages/customer/cart/cart.html:82`,
|
|
56
|
-
`pages/customer/viaje/viaje.html:190`.
|
|
51
|
+
**Usos de hoy que rompen la regla:** ninguno (medido el 04-10-2026). Los 2 sin nombre para el
|
|
52
|
+
lector y los 2 en `medium` fijo en el teléfono se corrigieron en la app el 03-10-2026 (`f96cf735`).
|
|
57
53
|
|
|
58
54
|
## Tamaño en mobile y en web
|
|
59
55
|
|
|
@@ -70,16 +66,19 @@ dentro de la píldora). El ícono es de 20 hasta `large` y de 24 en `xlarge`.
|
|
|
70
66
|
| `medium` (default) · `small` · `xsmall` | 40 · 36 · 32 | 24 | según la guía del DS |
|
|
71
67
|
| `2xsmall` | 28 | 24 | extensión SUI |
|
|
72
68
|
|
|
73
|
-
En large y xlarge el texto sube a 16 px (
|
|
69
|
+
En large y xlarge el texto sube a 16 px (canon, aprobado por el dueño el 03-10-2026): el número va en 16/24; el alto del
|
|
74
70
|
campo no cambia (lo ponen los botones).
|
|
75
71
|
|
|
72
|
+
**En el teléfono va en `xlarge`: botones − y + de 44** (canon (dueño, 04-10-2026): piso táctil 44 en el teléfono). `large` deja los botones
|
|
73
|
+
en 40, por debajo del piso; no hace falta un size nuevo porque `xlarge` ya llega.
|
|
74
|
+
|
|
76
75
|
| uso | mobile | web | fuente |
|
|
77
76
|
|---|---|---|---|
|
|
78
|
-
| cantidad junto al CTA (detalle del producto) | `
|
|
79
|
-
| cantidad en una fila (carrito, pasajeros) | `
|
|
77
|
+
| cantidad junto al CTA (detalle del producto) | `xlarge` (52, botones de 44) | `large` | mobile: canon (dueño, 04-10-2026): piso táctil 44 en el teléfono · web: propuesta |
|
|
78
|
+
| cantidad en una fila (carrito, pasajeros) | `xlarge` (52, botones de 44) | `medium` (40) | mobile: canon (dueño, 04-10-2026): piso táctil 44 en el teléfono · web: propuesta, falta aprobación |
|
|
80
79
|
|
|
81
80
|
```html
|
|
82
|
-
<sui-counter-input [size]="bp.isMobile() ? '
|
|
81
|
+
<sui-counter-input [size]="bp.isMobile() ? 'xlarge' : 'medium'" … /> <!-- bp = BreakpointsService -->
|
|
83
82
|
```
|
|
84
83
|
|
|
85
84
|
## «No usar»: por qué no hoy y cuándo sí
|
|
@@ -130,9 +129,11 @@ campo no cambia (lo ponen los botones).
|
|
|
130
129
|
(ya recortado a `min`/`max`) y el padre lo aplica. Con solo `[value]` y sin `(valueChange)` el
|
|
131
130
|
número no se mueve.
|
|
132
131
|
- `min` y `max` arrancan en −∞ y +∞: sin pasarlos, el contador baja a negativos.
|
|
133
|
-
- Los botones
|
|
134
|
-
|
|
135
|
-
-
|
|
132
|
+
- Los botones − y + miden 24 px de `medium` para abajo, 40 en `large` y 44 en `xlarge`: solo
|
|
133
|
+
`xlarge` llega a los 44 del área táctil del teléfono (ver «Tamaño en mobile y en web»).
|
|
134
|
+
- El número (`role="spinbutton"`) toma su nombre del `label` visible (`aria-labelledby`); si se
|
|
135
|
+
pasa `ariaLabel`, manda ese. Recibe foco y responde a ↑/↓ (un paso) e Inicio/Fin (al
|
|
136
|
+
mínimo/máximo, si están definidos) desde el 04-10-2026; antes solo se operaba con − y +.
|
|
136
137
|
- El campo es una píldora (radio completo), decisión de SUI; el Figma de origen usa 10/8 px.
|
|
137
138
|
|
|
138
139
|
## Ejemplo
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
name: sui-date-selector
|
|
3
3
|
selector: sui-date-selector
|
|
4
4
|
resumen: La cabecera de un calendario con el mes y las flechas de anterior y siguiente
|
|
5
|
-
alternativas: [sui-datepicker (el calendario completo, que ya la trae), sui-
|
|
5
|
+
alternativas: [sui-datepicker (el calendario completo, que ya la trae), sui-segmented-control (2 a 4 días o períodos fijos), sui-tab-chips (5 o más)]
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
# sui-date-selector
|
|
@@ -19,7 +19,8 @@ del mes, las ganancias del repartidor por mes).
|
|
|
19
19
|
|
|
20
20
|
- Un calendario completo: `sui-datepicker` ya lo trae adentro.
|
|
21
21
|
- Elegir entre pocos días: `sui-tab-chips` (como la hoja de pedido programado).
|
|
22
|
-
- Cambiar entre períodos fijos («Hoy», «Esta semana», «Este mes»): `sui-
|
|
22
|
+
- Cambiar entre períodos fijos («Hoy», «Esta semana», «Este mes»): `sui-segmented-control` si son 2 a 4,
|
|
23
|
+
`sui-tab-chips` si son 5 o más. **Período o filtro con 2 a 4 opciones excluyentes → `sui-segmented-control`; con 5 o más, o si no caben y tienen que deslizarse → `sui-tab-chips`** (canon, dueño 04-10-2026).
|
|
23
24
|
|
|
24
25
|
## Qué variante usar
|
|
25
26
|
|
|
@@ -35,27 +36,29 @@ del mes, las ganancias del repartidor por mes).
|
|
|
35
36
|
| `leftIcon` + `rightIcon` | `true` / `true` (default) | Lo normal: se puede ir atrás y adelante. | propuesta |
|
|
36
37
|
| `rightIcon` | `false` | Ya se está en el período actual y no hay futuro que mirar (ganancias, gastos). Mejor que dejar la flecha y que no haga nada. | propuesta |
|
|
37
38
|
| `leftIcon` | `false` | Ya se está en el primer período con datos (el mes en que se abrió el local). | propuesta |
|
|
38
|
-
| los dos en `false` | — | No usar: sin flechas es un título; va un texto. |
|
|
39
|
+
| los dos en `false` | — | No usar: sin flechas es un título; va un texto. | propuesta |
|
|
39
40
|
| `disabled` | `true` | Mientras carga el período nuevo, para que no se encadenen toques. | propuesta |
|
|
40
41
|
|
|
41
42
|
Usos de hoy que rompen la regla: **0**.
|
|
42
43
|
|
|
43
44
|
## Tamaño en mobile y en web
|
|
44
45
|
|
|
45
|
-
|
|
46
|
-
|
|
46
|
+
Tiene `size`: **`medium`** (default, 288 × 36, flechas `sui-compact-button` de 24, Figma) y
|
|
47
|
+
**`large`** (52 de alto, flechas de **44 × 44** con el ícono en 20, mes en 16/24). El
|
|
48
|
+
`sui-datepicker` `xlarge` usa `large`.
|
|
47
49
|
|
|
48
|
-
|
|
|
49
|
-
|
|
50
|
-
|
|
|
50
|
+
| size | barra | flechas | texto | uso | fuente |
|
|
51
|
+
|---|---|---|---|---|---|
|
|
52
|
+
| `large` | 52 (44 + 4 de aire arriba y abajo) | **44 × 44** | 16/24 | mobile | canon (dueño, 04-10-2026): piso táctil 44 en el teléfono |
|
|
53
|
+
| `medium` (default) | 36 | 24 × 24 | 14/20 | web | medido (Figma 442:192) |
|
|
51
54
|
|
|
52
55
|
```html
|
|
53
|
-
|
|
54
|
-
|
|
56
|
+
<sui-date-selector [size]="bp.isMobile() ? 'large' : 'medium'" label="Octubre 2026"
|
|
57
|
+
[rightIcon]="!esMesActual()" (prev)="mesAnterior()" (next)="mesSiguiente()" />
|
|
55
58
|
```
|
|
56
59
|
|
|
57
|
-
|
|
58
|
-
con `
|
|
60
|
+
Dentro del `sui-datepicker` `large` (y en mobile con `small`–`large`) el datepicker agranda las
|
|
61
|
+
flechas a 40 por su cuenta; con `xlarge` usa este `size="large"` (44).
|
|
59
62
|
|
|
60
63
|
## «No usar»: por qué no hoy y cuándo sí
|
|
61
64
|
|
|
@@ -75,6 +78,7 @@ con `sui-compact-button` `xlarge` (o `sui-button` `onlyIcon` `large`) a los lado
|
|
|
75
78
|
| `leftIcon` | `boolean` | `true` |
|
|
76
79
|
| `rightIcon` | `boolean` | `true` |
|
|
77
80
|
| `disabled` | `boolean` | `false` |
|
|
81
|
+
| `size` | `'medium' \| 'large'` | `'medium'` |
|
|
78
82
|
|
|
79
83
|
| output | payload |
|
|
80
84
|
|---|---|
|