@ajuarezso/sui-design-system 0.21.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 +30 -35
- package/docs/sui-accordion/README.md +171 -0
- package/docs/sui-activity-feed/README.md +154 -0
- package/docs/sui-activity-filter/README.md +100 -0
- 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 +64 -21
- 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 +100 -0
- package/docs/sui-command-menu-item/README.md +140 -0
- package/docs/sui-command-menu-search/README.md +105 -0
- 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 +12 -5
- package/docs/sui-compact-select-for-input/README.md +5 -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 +21 -17
- package/docs/sui-date-selector/README.md +16 -12
- package/docs/sui-datepicker/README.md +46 -28
- 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-caption/README.md +92 -0
- package/docs/sui-dropdown-item/README.md +163 -0
- package/docs/sui-dropdown-menu/README.md +196 -0
- package/docs/sui-dropdown-search/README.md +113 -0
- 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 +181 -0
- 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-href/README.md +85 -0
- package/docs/sui-icon/README.md +4 -3
- package/docs/sui-image-upload/README.md +28 -16
- package/docs/sui-img-retry/README.md +107 -0
- package/docs/sui-inline-input/README.md +7 -6
- package/docs/sui-inline-select/README.md +8 -5
- package/docs/sui-input/README.md +27 -33
- 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/README.md +238 -0
- package/docs/sui-modal-footer/README.md +178 -0
- package/docs/sui-modal-header/README.md +115 -0
- package/docs/sui-modal-sheet/README.md +170 -0
- 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-page-header/README.md +123 -0
- 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 +33 -19
- package/docs/sui-select/README.md +40 -33
- package/docs/sui-sidebar/README.md +216 -0
- 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 +25 -11
- package/docs/sui-tab-chips/README.md +56 -39
- package/docs/sui-tab-menu-horizontal/README.md +19 -11
- package/docs/sui-tab-menu-vertical/README.md +10 -5
- package/docs/sui-table/README.md +264 -0
- package/docs/sui-tag/README.md +25 -11
- package/docs/sui-tag-input/README.md +25 -12
- package/docs/sui-textarea/README.md +23 -20
- package/docs/sui-time-picker/README.md +39 -30
- package/docs/sui-toast/README.md +27 -22
- package/docs/sui-tooltip/README.md +14 -17
- package/docs/sui-topbar/README.md +153 -0
- package/docs/sui-topbar-button/README.md +95 -0
- package/docs/sui-topbar-item/README.md +97 -0
- package/docs/sui-topbar-user/README.md +83 -0
- package/fesm2022/ajuarezso-sui-design-system.mjs +1076 -242
- package/fesm2022/ajuarezso-sui-design-system.mjs.map +1 -1
- package/package.json +1 -1
- package/types/ajuarezso-sui-design-system.d.ts +616 -280
|
@@ -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
|
|---|---|---|
|
|
@@ -51,6 +51,9 @@ contiene**: el selector ocupa todo el alto interior del campo (46 · 38 · 34 ·
|
|
|
51
51
|
toca (y su hover) cubre el campo de arriba a abajo. Sus opciones miden 44 en `large` y en mobile
|
|
52
52
|
(≤ 767 px); 36 en el resto, como en `sui-select`.
|
|
53
53
|
|
|
54
|
+
En large y xlarge el texto sube a 16 px (regla del 03-10-2026): en `large` el valor y las opciones van
|
|
55
|
+
en 16/24, igual que el valor del `sui-input` large; el alto no cambia (46 dentro del campo, 44 la opción).
|
|
56
|
+
|
|
54
57
|
| size del input y del selector | campo | fuente |
|
|
55
58
|
|---|---|---|
|
|
56
59
|
| `large` | 48 | canon (aprobado por el dueño, 03-10-2026), extensión SUI |
|
|
@@ -67,7 +70,7 @@ de la guía no descontaba el borde del input). Ahora el campo mide exacto.
|
|
|
67
70
|
|
|
68
71
|
| qué | por qué no hoy | cuándo sí, en un flujo nuevo |
|
|
69
72
|
|---|---|---|
|
|
70
|
-
| 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 |
|
|
71
74
|
| `country` con bandera | solo hay teléfonos de Perú | repartidores o clientes con número extranjero |
|
|
72
75
|
|
|
73
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,13 +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
|
|
|
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
|
|
70
|
+
campo no cambia (lo ponen los botones).
|
|
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
|
+
|
|
73
75
|
| uso | mobile | web | fuente |
|
|
74
76
|
|---|---|---|---|
|
|
75
|
-
| cantidad junto al CTA (detalle del producto) | `
|
|
76
|
-
| 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 |
|
|
77
79
|
|
|
78
80
|
```html
|
|
79
|
-
<sui-counter-input [size]="bp.isMobile() ? '
|
|
81
|
+
<sui-counter-input [size]="bp.isMobile() ? 'xlarge' : 'medium'" … /> <!-- bp = BreakpointsService -->
|
|
80
82
|
```
|
|
81
83
|
|
|
82
84
|
## «No usar»: por qué no hoy y cuándo sí
|
|
@@ -127,9 +129,11 @@ dentro de la píldora). El ícono es de 20 hasta `large` y de 24 en `xlarge`.
|
|
|
127
129
|
(ya recortado a `min`/`max`) y el padre lo aplica. Con solo `[value]` y sin `(valueChange)` el
|
|
128
130
|
número no se mueve.
|
|
129
131
|
- `min` y `max` arrancan en −∞ y +∞: sin pasarlos, el contador baja a negativos.
|
|
130
|
-
- Los botones
|
|
131
|
-
|
|
132
|
-
-
|
|
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 +.
|
|
133
137
|
- El campo es una píldora (radio completo), decisión de SUI; el Figma de origen usa 10/8 px.
|
|
134
138
|
|
|
135
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
|
|---|---|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
name: sui-datepicker
|
|
3
3
|
selector: sui-datepicker
|
|
4
4
|
resumen: Calendario para elegir una fecha o un rango de fechas, en popover o en línea
|
|
5
|
-
alternativas: [sui-input type="date" (una fecha suelta en un formulario: abre el selector del sistema), sui-tab-chips + sui-radio-label (día y franja de un pedido programado), sui-
|
|
5
|
+
alternativas: [sui-input type="date" (una fecha suelta en un formulario: abre el selector del sistema), sui-tab-chips + sui-radio-label (día y franja de un pedido programado), sui-segmented-control (2 a 4 períodos fijos: hoy, 7 días, 30 días), sui-tab-chips (5 o más períodos fijos)]
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
# sui-datepicker
|
|
@@ -23,8 +23,8 @@ un **calendario en línea** donde importa ver el mes entero (días con pedidos m
|
|
|
23
23
|
- **El día y la hora de un pedido programado**: el checkout ya tiene su hoja (`sui-modal-sheet`
|
|
24
24
|
con `sui-tab-chips` para el día y `sui-radio-label` con `flip` para la franja). Es la maqueta
|
|
25
25
|
aprobada.
|
|
26
|
-
- **Períodos fijos** («Hoy», «Últimos 7 días», «Este mes») sin rango libre: `sui-
|
|
27
|
-
|
|
26
|
+
- **Períodos fijos** («Hoy», «Últimos 7 días», «Este mes») sin rango libre: `sui-segmented-control`
|
|
27
|
+
si son 2 a 4, `sui-tab-chips` si son 5 o más o se deslizan (canon, dueño 04-10-2026).
|
|
28
28
|
- Una hora: `sui-time-picker`.
|
|
29
29
|
|
|
30
30
|
Regla corta: **rango o calendario visible → datepicker · una fecha en un formulario → `sui-input
|
|
@@ -65,14 +65,14 @@ type="date"` · día + franja de entrega → la hoja del checkout.**
|
|
|
65
65
|
| `min` / `max` | Siempre que haya un límite real: un cupón no vence en el pasado (`min` = hoy), un reporte no pasa de hoy (`max` = hoy). Los presets se recortan al límite. | propuesta |
|
|
66
66
|
| `markedDates` | Días con algo: pedidos programados, gastos cargados. El punto es chico: dice «hay algo», no cuánto. | propuesta |
|
|
67
67
|
| `presets` | Los 8 de fábrica están en español (Hoy, Últimos 7 días… Todo el tiempo). Recortarlos a los que la pantalla usa: un reporte del local no necesita «Últimos 12 meses» si no hay datos de hace un año. | propuesta |
|
|
68
|
-
| `placeholder` |
|
|
68
|
+
| `placeholder` | El default «Seleccionar fecha» ya está en español y se usa tal cual. Cambiarlo por lo que se elige («Elige el período», «Desde cuándo») es propuesta: hoy choca con esa regla. | default: canon (CANON-SUI §5.7) · cambiarlo: propuesta, falta aprobación |
|
|
69
69
|
| `disabled` | Mientras carga lo que depende de la fecha. | propuesta |
|
|
70
70
|
|
|
71
71
|
Usos de hoy que rompen la regla: **0** (no hay datepickers). Los 8 campos de fecha son fechas
|
|
72
|
-
sueltas en formularios y ya usan `sui-input
|
|
73
|
-
(«Válido hasta»), `pages/super-admin/super-admin.html:
|
|
74
|
-
`pages/super-admin/master-gastos/master-gastos.html:
|
|
75
|
-
`pages/central/central-gastos/central-gastos.html:115`, y `pages/promociones/promociones.html:
|
|
72
|
+
sueltas en formularios y ya usan `sui-input` (líneas del `type`, medidas el 04-10-2026):
|
|
73
|
+
`pages/discounts/discounts.html:189` y `:301` («Válido hasta»), `pages/super-admin/super-admin.html:324`,
|
|
74
|
+
`:330` y `:419`, `pages/super-admin/master-gastos/master-gastos.html:220`,
|
|
75
|
+
`pages/central/central-gastos/central-gastos.html:115`, y `pages/promociones/promociones.html:341`
|
|
76
76
|
(`datetime-local`, «Programar»).
|
|
77
77
|
|
|
78
78
|
**A decidir por el dueño** (la regla de arriba es la lectura plana; la contraria también se sostiene):
|
|
@@ -80,30 +80,41 @@ sueltas en formularios y ya usan `sui-input`: `pages/discounts/discounts.html:18
|
|
|
80
80
|
| opción | a favor | en contra |
|
|
81
81
|
|---|---|---|
|
|
82
82
|
| fecha suelta → `sui-input type="date"` (la propuesta) | selector del sistema, 48 px, cero código nuevo, 0 cambios en la app | se ve distinto en iOS, Android y web; no marca días |
|
|
83
|
-
| toda fecha → `sui-datepicker` | se ve igual en todos lados, con la marca | el popover de 368 px no es hoja en mobile, el trigger mide 40 px
|
|
83
|
+
| toda fecha → `sui-datepicker` | se ve igual en todos lados, con la marca | el popover de 368 px no es hoja en mobile, el trigger mide 40 px si no se pasa `size="large"`, las celdas de día miden 40 y los presets 36 (ver «Tamaño») |
|
|
84
84
|
|
|
85
85
|
## Tamaño en mobile y en web
|
|
86
86
|
|
|
87
|
-
En mobile se toca con el dedo: lo que se toca mide **44 px o más** (
|
|
88
|
-
|
|
87
|
+
En mobile se toca con el dedo: lo que se toca mide **44 px o más** (canon del dueño, 04-10-2026).
|
|
88
|
+
Para eso está **`xlarge`**: con los otros sizes las celdas de día (40) y los presets (36) no llegan.
|
|
89
|
+
En web, con mouse, puede ir más chico. En pantallas de los dos se elige con el servicio de breakpoints
|
|
89
90
|
de la app (`bp`, en `services/breakpoints.service.ts`).
|
|
90
91
|
|
|
91
|
-
Tiene `size` para el campo: `small` (36), `medium` (40, default, el de siempre)
|
|
92
|
-
el mismo alto que `sui-input` y `sui-select` `large
|
|
93
|
-
px)** el panel también crece: **flechas de mes de 40** y
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
|
101
|
-
|
|
92
|
+
Tiene `size` para el campo: `small` (36), `medium` (40, default, el de siempre), **`large` (48)**,
|
|
93
|
+
el mismo alto que `sui-input` y `sui-select` `large`, y **`xlarge` (52)**, el de `sui-input` `xlarge`.
|
|
94
|
+
Con `large` **y siempre en mobile (≤ 767 px)** el panel también crece: **flechas de mes de 40** y
|
|
95
|
+
**Cancelar / Aplicar en `large` (48)**. Con **`xlarge`** todo lo que se toca llega a 44: **días de
|
|
96
|
+
44 × 44** (`sui-day-cell` `large`, gap 4: 7 × 44 + 6 × 4 = 332, entra en 390), **flechas de mes de
|
|
97
|
+
44** (`sui-date-selector` `large`, barra de 52) y **rangos predefinidos de 44** (`sui-period-range`
|
|
98
|
+
`large`). En el teléfono el footer del rango pone el resumen «Rango: …» arriba y los dos botones
|
|
99
|
+
abajo, 50/50.
|
|
100
|
+
|
|
101
|
+
| pieza | web (`medium`) | `large` | mobile (`small`–`large`) | **`xlarge`** | fuente |
|
|
102
|
+
|---|---|---|---|---|---|
|
|
103
|
+
| campo (trigger) | 40 | 48 | el del `size` | **52** | 40: medido · 36 y 48: canon (aprobado por el dueño, 03-10-2026), extensión SUI · 52: canon (dueño, 04-10-2026): piso táctil 44 en el teléfono |
|
|
104
|
+
| celda de día | 40 × 40, paso de 48 | igual | 40 × 40, paso de 44 (**no llega a 44**) | **44 × 44**, paso de 48 | 40: medido · 44: canon (dueño, 04-10-2026): piso táctil 44 en el teléfono |
|
|
105
|
+
| preset del rango (`sui-period-range`) | 168 × 36 | igual | 36 de alto, en fila que se desliza (**no llega a 44**) | **44** de alto | 36: medido · 44: canon (dueño, 04-10-2026): piso táctil 44 en el teléfono |
|
|
106
|
+
| flechas de mes | 24 | 40 | 40 | **44** | 40: canon (aprobado por el dueño, 03-10-2026) · 44: canon (dueño, 04-10-2026): piso táctil 44 en el teléfono |
|
|
107
|
+
| Cancelar / Aplicar | 36 | 48 | 48 | 48 | canon (aprobado por el dueño, 03-10-2026), extensión SUI |
|
|
108
|
+
|
|
109
|
+
En large y xlarge el texto sube a 16 px (regla del 03-10-2026): con `large` y `xlarge`, la fecha del
|
|
110
|
+
campo (y su placeholder) va en 16/24. Con `large` el calendario no cambia (días, mes y resumen en
|
|
111
|
+
14); con `xlarge` los días, el mes y los rangos predefinidos también van en 16/24 (sus piezas son
|
|
112
|
+
`large`). El resumen del rango sigue en 14.
|
|
102
113
|
|
|
103
114
|
```html
|
|
104
115
|
<!-- Web: popover. Mobile: en línea dentro de un sui-modal fullscreen. -->
|
|
105
116
|
@if (bp.isMobile()) {
|
|
106
|
-
<sui-datepicker mode="range" size="
|
|
117
|
+
<sui-datepicker mode="range" size="xlarge" [inline]="true" [calendars]="1" [(value)]="rango" />
|
|
107
118
|
} @else {
|
|
108
119
|
<sui-datepicker mode="range" placeholder="Elige el período" [(value)]="rango" />
|
|
109
120
|
}
|
|
@@ -111,8 +122,8 @@ el teléfono el footer del rango pone el resumen «Rango: …» arriba y los dos
|
|
|
111
122
|
|
|
112
123
|
| uso | mobile | web | fuente |
|
|
113
124
|
|---|---|---|---|
|
|
114
|
-
| fecha en un formulario | `
|
|
115
|
-
| filtro de período de un reporte | `
|
|
125
|
+
| fecha en un formulario | `xlarge` (días de 44) | `medium` | canon (dueño, 04-10-2026): piso táctil 44 en el teléfono (el «web medium» es propuesta) |
|
|
126
|
+
| filtro de período de un reporte | `xlarge`, en línea dentro de un modal | `medium`, popover | canon (dueño, 04-10-2026): piso táctil 44 en el teléfono (el «web medium» es propuesta) |
|
|
116
127
|
|
|
117
128
|
## «No usar»: por qué no hoy y cuándo sí
|
|
118
129
|
|
|
@@ -125,7 +136,7 @@ en la columna de la derecha, se usa (aprobado por el dueño, 03-10-2026).
|
|
|
125
136
|
| `mode="date"` en un formulario | `sui-input type="date"` hace lo mismo con el selector del sistema | un calendario que se ve siempre, con días marcados (pedidos programados de la semana para el local) |
|
|
126
137
|
| `markedDates` | no hay calendarios a la vista | días con pedidos programados o con gastos cargados |
|
|
127
138
|
| `calendars="2"` en mobile | se fuerza a 1 solo | — |
|
|
128
|
-
| el popover (`inline=false`) en mobile | no es hoja: es un panel flotante de 368 px
|
|
139
|
+
| el popover (`inline=false`) en mobile | no es hoja: es un panel flotante de 368 px (aunque el campo `large` mida 48) | ninguno en mobile; en web, cualquiera |
|
|
129
140
|
|
|
130
141
|
## API
|
|
131
142
|
|
|
@@ -137,7 +148,7 @@ en la columna de la derecha, se usa (aprobado por el dueño, 03-10-2026).
|
|
|
137
148
|
| `mode` | `'date' \| 'range'` | `'date'` |
|
|
138
149
|
| `calendars` | `1 \| 2` | `2` |
|
|
139
150
|
| `inline` | `boolean` | `false` |
|
|
140
|
-
| `size` | `'small' \| 'medium' \| 'large'` | `'medium'` |
|
|
151
|
+
| `size` | `'small' \| 'medium' \| 'large' \| 'xlarge'` | `'medium'` |
|
|
141
152
|
| `placeholder` | `string` | `'Seleccionar fecha'` |
|
|
142
153
|
| `showFooter` | `boolean` | `true` |
|
|
143
154
|
| `disabled` | `boolean` | `false` |
|
|
@@ -175,7 +186,14 @@ interface DatepickerPreset { id: DatepickerPresetId; label: string; resolve: (ho
|
|
|
175
186
|
- En mobile (hasta 767 px) **se fuerza un solo calendario** aunque `calendars` sea 2.
|
|
176
187
|
- El campo muestra la fecha como `dd/MM/yyyy`; el rango, como «1 de oct 2026 – 7 de oct 2026».
|
|
177
188
|
- «Todo el tiempo» devuelve `{ start: null, end: null }`: quien lo recibe tiene que tratarlo como
|
|
178
|
-
«sin filtro», no como «vacío».
|
|
189
|
+
«sin filtro», no como «vacío». El campo muestra «Todo el tiempo» (antes caía al placeholder y
|
|
190
|
+
parecía vacío; fix 04-10-2026). Un `{ start: null, end: null }` que llega de afuera se sigue
|
|
191
|
+
mostrando como placeholder: el componente no sabe si es «todo» o «nada».
|
|
192
|
+
- **Accesibilidad (04-10-2026)**: el panel es un `dialog` modal con nombre («Elegir fecha» /
|
|
193
|
+
«Elegir período»; `group` en `inline`), la fila LU…DO está dentro de la grilla, cada día se
|
|
194
|
+
anuncia con la fecha completa («martes 7 de octubre de 2026»), hoy lleva `aria-current="date"`,
|
|
195
|
+
inicio y fin del rango salen seleccionados, y las flechas mueven el foco entre días (← → un
|
|
196
|
+
día, ↑ ↓ una semana, Inicio/Fin a la punta de la semana). Las flechas no cambian de mes.
|
|
179
197
|
- Cierra con clic afuera y con Escape, y eso **descarta** la elección (como Cancelar).
|
|
180
198
|
- Las piezas internas son `sui-date-selector`, `sui-day-label`, `sui-day-cell` y
|
|
181
199
|
`sui-period-range`: no se arman a mano.
|
|
@@ -54,18 +54,23 @@ Usos de hoy que rompen la regla: **0**.
|
|
|
54
54
|
|
|
55
55
|
## Tamaño en mobile y en web
|
|
56
56
|
|
|
57
|
-
|
|
58
|
-
|
|
57
|
+
Tiene `size`: **`medium`** (default, 40 × 40, Figma) y **`large`** (44 × 44, número en 16/24). El
|
|
58
|
+
`sui-datepicker` `xlarge` pinta sus días en `large`. En el `sui-datepicker` el paso entre celdas es
|
|
59
|
+
de 44 px en mobile (gap 4) y 48 en web (gap 8) con `medium`, y 48 (gap 4) con `large`.
|
|
59
60
|
|
|
60
|
-
|
|
|
61
|
-
|
|
62
|
-
|
|
|
61
|
+
| size | celda | texto | uso | fuente |
|
|
62
|
+
|---|---|---|---|---|
|
|
63
|
+
| `large` | **44 × 44** | 16/24 | mobile: lo que se toca llega a 44 (en 390 entran 7 × 44 con gap 4 = 332) | canon (dueño, 04-10-2026): piso táctil 44 en el teléfono |
|
|
64
|
+
| `medium` (default) | 40 × 40 | 14/20 | web | medido (Figma 437:174) |
|
|
65
|
+
|
|
66
|
+
Los puntos de hoy y de marcado no cambian con el size.
|
|
63
67
|
|
|
64
68
|
```html
|
|
65
|
-
<!-- La grilla da el paso: gap 4
|
|
66
|
-
<div class="semana" [style.gap.px]="
|
|
69
|
+
<!-- La grilla da el paso: gap 4 -->
|
|
70
|
+
<div class="semana" [style.gap.px]="4">
|
|
67
71
|
@for (d of dias(); track d.fecha) {
|
|
68
|
-
<sui-day-cell [
|
|
72
|
+
<sui-day-cell [size]="bp.isMobile() ? 'large' : 'medium'" [day]="d.numero" [today]="d.esHoy"
|
|
73
|
+
[marked]="d.conTurno" (clicked)="elegir(d)" />
|
|
69
74
|
}
|
|
70
75
|
</div>
|
|
71
76
|
```
|
|
@@ -86,6 +91,7 @@ mobile (gap 4) y 48 en web (gap 8): llega justo a los 44.
|
|
|
86
91
|
|---|---|---|
|
|
87
92
|
| `day` | `number \| string` | — (requerido) |
|
|
88
93
|
| `type` | `'basic' \| 'range'` | `'basic'` |
|
|
94
|
+
| `size` | `'medium' \| 'large'` | `'medium'` |
|
|
89
95
|
| `rangePosition` | `'start' \| 'end' \| 'in' \| null` | `null` |
|
|
90
96
|
| `selected` | `boolean` | `false` |
|
|
91
97
|
| `marked` | `boolean` | `false` |
|
|
@@ -108,6 +114,9 @@ mobile (gap 4) y 48 en web (gap 8): llega justo a los 44.
|
|
|
108
114
|
- `today` y `marked` juntos: se ve solo el punto de hoy.
|
|
109
115
|
- `outOfMonth` no la bloquea: se puede tocar igual. Para bloquearla, `disabled`.
|
|
110
116
|
- Ya trae el arreglo de iOS para el `:active` pegado.
|
|
117
|
+
- Sin `ariaLabel` se anuncia «Día N», sin mes: dentro de `sui-datepicker` ya recibe la fecha
|
|
118
|
+
completa. Hoy lleva `aria-current="date"` y, en `type="range"`, `start`/`end` salen
|
|
119
|
+
`aria-selected` (04-10-2026).
|
|
111
120
|
|
|
112
121
|
## Ejemplo
|
|
113
122
|
|
|
@@ -31,8 +31,8 @@ Story: [Molecules/Date & Time/Day Label](https://sui-design-system.web.app/?path
|
|
|
31
31
|
| input | valor | cuándo | fuente |
|
|
32
32
|
|---|---|---|---|
|
|
33
33
|
| `label` | dos letras en mayúsculas | Lo normal, igual que el datepicker: `LU MA MI JU VI SÁ DO`. La semana arranca el lunes. | propuesta |
|
|
34
|
-
| `label` | una letra | No usar: «M» es martes y miércoles a la vez. |
|
|
35
|
-
| `label` | tres letras o más | No usar: «MIÉ» entra justo en 40 px, pero rompe el formato de dos letras del datepicker; «LUNES» ya no entra. |
|
|
34
|
+
| `label` | una letra | No usar: «M» es martes y miércoles a la vez. | propuesta |
|
|
35
|
+
| `label` | tres letras o más | No usar: «MIÉ» entra justo en 40 px, pero rompe el formato de dos letras del datepicker; «LUNES» ya no entra. | propuesta |
|
|
36
36
|
|
|
37
37
|
Usos de hoy que rompen la regla: **0**.
|
|
38
38
|
|
|
@@ -15,7 +15,7 @@ Story: [Atoms/Divider/Divider](https://sui-design-system.web.app/?path=/docs/ato
|
|
|
15
15
|
|
|
16
16
|
- **horizontal**: bloques dentro de una card, filas de una lista, secciones de un formulario, el
|
|
17
17
|
subtotal del total.
|
|
18
|
-
- **vertical**: datos en una misma fila («4
|
|
18
|
+
- **vertical**: datos en una misma fila («4.7 | 25–35 min | Envío S/ 3.00»).
|
|
19
19
|
|
|
20
20
|
**No lo uses** para:
|
|
21
21
|
|
|
@@ -35,14 +35,14 @@ Story: [Atoms/Divider/Divider](https://sui-design-system.web.app/?path=/docs/ato
|
|
|
35
35
|
> dice cuándo separar con línea y cuándo con espacio. Lo marcado «según la guía del DS» sale de
|
|
36
36
|
> ahí; el resto es **propuesta, falta aprobación**.
|
|
37
37
|
>
|
|
38
|
-
> Uso medido el
|
|
39
|
-
> horizontales, sin contar prototipos ni vitrinas (`master-preview`, `master-prototipos`,
|
|
38
|
+
> Uso medido el 04-10-2026 en `master-pedidos/src/app`: **39 dividers en 14 archivos** (los 13 de
|
|
39
|
+
> antes + las 26 líneas a mano que se pasaron el 03-10-2026), todos horizontales, sin contar prototipos ni vitrinas (`master-preview`, `master-prototipos`,
|
|
40
40
|
> `mockup-sheets-*`, `dx/*`, `_guia-*`, `master-rutina`, `master-medico`, `master-ejercicios`,
|
|
41
41
|
> `dev-index`).
|
|
42
42
|
|
|
43
43
|
| orientation | cuándo | ejemplo real | fuente |
|
|
44
44
|
|---|---|---|---|
|
|
45
|
-
| `horizontal` (default) | Separa bloques o filas. El espacio arriba y abajo lo pone el `gap` del padre, no el divider. | `pages/driver/driver-dashboard/driver-dashboard.html:
|
|
45
|
+
| `horizontal` (default) | Separa bloques o filas. El espacio arriba y abajo lo pone el `gap` del padre, no el divider. | `pages/driver/driver-dashboard/driver-dashboard.html:1127` (entre filas, `@if (!last)`) | según la guía del DS («Line») |
|
|
46
46
|
| `vertical` | Separa datos cortos en una sola fila. El padre necesita alto (si no, mide 16 px). | — (sin usos) | propuesta, falta aprobación |
|
|
47
47
|
|
|
48
48
|
**Corregido el 03-10-2026:** las 26 líneas hechas a mano (mi-negocio, checkout, carrito, billetera y movimientos) ya son `sui-divider`. Seis conservan un `margin` propio porque sus vecinos se separan con margen y no con el `gap` del padre; pasarlo al `gap` es un cambio aparte.
|
|
@@ -97,6 +97,6 @@ Outputs: ninguno.
|
|
|
97
97
|
|
|
98
98
|
<!-- Datos en una fila -->
|
|
99
99
|
<div class="meta">
|
|
100
|
-
<span>4
|
|
100
|
+
<span>4.7</span><sui-divider orientation="vertical" /><span>25–35 min</span>
|
|
101
101
|
</div>
|
|
102
102
|
```
|
|
@@ -58,15 +58,23 @@ Usos de hoy que rompen las reglas: **0** (no se usa).
|
|
|
58
58
|
|
|
59
59
|
## Tamaño en mobile y en web
|
|
60
60
|
|
|
61
|
-
|
|
62
|
-
|
|
61
|
+
El `size` cambia **los botones** (escala del `sui-button`):
|
|
62
|
+
|
|
63
|
+
| size | botones | texto del checkbox / switch | alto del pie | fuente |
|
|
64
|
+
|---|---|---|---|---|
|
|
65
|
+
| `medium` (default) | 40 | 14 | 80 | Figma |
|
|
66
|
+
| `large` | 48 | 16 (Paragraph/Medium) | 88 (el padding sigue en 20) | canon (dueño, 04-10-2026): piso táctil 44 en el teléfono. Size nuevo del 04-10-2026 |
|
|
67
|
+
|
|
68
|
+
`large` es el siguiente de la escala del `sui-button` (48), el mismo alto que el canon de modales.
|
|
63
69
|
|
|
64
70
|
| uso | mobile | web | fuente |
|
|
65
71
|
|---|---|---|---|
|
|
66
|
-
|
|
|
72
|
+
| pie de un drawer | `large` (48) | `medium` (40) | canon (dueño, 04-10-2026): piso táctil 44 en el teléfono |
|
|
73
|
+
| par de botones de un modal | `sui-modal-footer` (botones `large`, 48) | `sui-modal-footer` | canon (CLAUDE.md, botones: size `large` en todos los modales) |
|
|
67
74
|
|
|
68
75
|
```html
|
|
69
|
-
<sui-
|
|
76
|
+
<sui-drawer-footer type="stretch" [size]="bp.isMobile() ? 'large' : 'medium'"
|
|
77
|
+
(primaryClick)="guardar()" (secondaryClick)="cancelar()" />
|
|
70
78
|
```
|
|
71
79
|
|
|
72
80
|
## «No usar»: por qué no hoy y cuándo sí
|
|
@@ -83,6 +91,7 @@ modales pide 48. El pie mide 80 px de alto.
|
|
|
83
91
|
| input | tipo | default |
|
|
84
92
|
|---|---|---|
|
|
85
93
|
| `type` | `'stretch' \| 'basic' \| 'checkbox' \| 'toggle' \| 'stepper' \| 'link-button'` | `'stretch'` |
|
|
94
|
+
| `size` | `'medium' \| 'large'` | `'medium'` |
|
|
86
95
|
| `primaryButton` | `SuiFooterButtonConfig \| string` | `'Continuar'` |
|
|
87
96
|
| `secondaryButton` | `SuiFooterButtonConfig \| string \| null` | `'Cancelar'` |
|
|
88
97
|
| `checkboxLabel` | `string` | `''` |
|
|
@@ -110,9 +119,14 @@ interface SuiFooterButtonConfig { label: string; disabled?: boolean; color?: 'pr
|
|
|
110
119
|
«Continuar» y sin `secondaryButton` dice «Cancelar». Para un solo botón pasa
|
|
111
120
|
`[secondaryButton]="null"`.
|
|
112
121
|
- **`color: 'error'` se ignora**: el primario está fijo en `primary`.
|
|
113
|
-
-
|
|
122
|
+
- **`size` va de `medium` (40, default) a `large` (48)** desde el 04-10-2026; antes no tenía tamaño.
|
|
123
|
+
- **Los botones del pie no emitían nada antes del 04-10-2026**: el template escuchaba `(clicked)` en
|
|
124
|
+
`sui-button`, que no tiene ese output (su evento es el `click` nativo), así que `primaryClick` y
|
|
125
|
+
`secondaryClick` nunca salían con un toque real. Arreglado (`(click)`), con test.
|
|
114
126
|
- `stepper` usa `{ current, total }` con `current` desde 0, y dibuja sus propios puntos (no es
|
|
115
127
|
`sui-stepper`).
|
|
128
|
+
Para el lector es un `progressbar` «Progreso» que dice «Paso 2 de 4» (`aria-valuetext`, desde
|
|
129
|
+
el 04-10-2026).
|
|
116
130
|
- `checkboxActive` y `toggleActive` son `model`: `[(checkboxActive)]`.
|
|
117
131
|
- El borde de arriba ya viene puesto: no le sumes otro.
|
|
118
132
|
|