@ajuarezso/sui-design-system 0.22.0 → 0.23.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.
Files changed (99) hide show
  1. package/docs/INDEX.md +8 -8
  2. package/docs/sui-accordion/README.md +2 -2
  3. package/docs/sui-activity-feed/README.md +1 -2
  4. package/docs/sui-alert/README.md +28 -19
  5. package/docs/sui-app-store-badge/README.md +5 -4
  6. package/docs/sui-avatar/README.md +16 -16
  7. package/docs/sui-avatar-group/README.md +4 -4
  8. package/docs/sui-badge/README.md +27 -9
  9. package/docs/sui-banner/README.md +10 -9
  10. package/docs/sui-brand-logo/README.md +3 -3
  11. package/docs/sui-breadcrumbs/README.md +1 -1
  12. package/docs/sui-button/README.md +48 -24
  13. package/docs/sui-button-group/README.md +6 -4
  14. package/docs/sui-button-group-item/README.md +3 -3
  15. package/docs/sui-card/README.md +17 -19
  16. package/docs/sui-chart-legend/README.md +8 -7
  17. package/docs/sui-checkbox/README.md +11 -6
  18. package/docs/sui-checkbox-card/README.md +24 -19
  19. package/docs/sui-checkbox-label/README.md +32 -10
  20. package/docs/sui-circular-progress-bar/README.md +2 -0
  21. package/docs/sui-color-dot/README.md +1 -1
  22. package/docs/sui-color-picker/README.md +22 -7
  23. package/docs/sui-command-menu-footer/README.md +8 -8
  24. package/docs/sui-command-menu-search/README.md +2 -2
  25. package/docs/sui-compact-avatar-group/README.md +4 -3
  26. package/docs/sui-compact-button/README.md +41 -44
  27. package/docs/sui-compact-select/README.md +9 -5
  28. package/docs/sui-compact-select-for-input/README.md +2 -2
  29. package/docs/sui-content-card/README.md +6 -5
  30. package/docs/sui-content-divider/README.md +4 -4
  31. package/docs/sui-content-label/README.md +11 -6
  32. package/docs/sui-counter-input/README.md +19 -18
  33. package/docs/sui-date-selector/README.md +16 -12
  34. package/docs/sui-datepicker/README.md +46 -32
  35. package/docs/sui-day-cell/README.md +17 -8
  36. package/docs/sui-day-label/README.md +2 -2
  37. package/docs/sui-divider/README.md +5 -5
  38. package/docs/sui-drawer-footer/README.md +19 -5
  39. package/docs/sui-dropdown-search/README.md +3 -3
  40. package/docs/sui-emoji/README.md +6 -6
  41. package/docs/sui-empty-state/README.md +13 -23
  42. package/docs/sui-fancy-button/README.md +24 -18
  43. package/docs/sui-file-icon/README.md +1 -1
  44. package/docs/sui-file-upload/README.md +3 -0
  45. package/docs/sui-file-upload-card/README.md +8 -7
  46. package/docs/sui-filter/README.md +5 -5
  47. package/docs/sui-flag/README.md +3 -2
  48. package/docs/sui-form-hint/README.md +12 -8
  49. package/docs/sui-form-label/README.md +11 -16
  50. package/docs/sui-icon/README.md +4 -3
  51. package/docs/sui-image-upload/README.md +28 -16
  52. package/docs/sui-inline-input/README.md +7 -6
  53. package/docs/sui-inline-select/README.md +8 -5
  54. package/docs/sui-input/README.md +26 -35
  55. package/docs/sui-integration-switch/README.md +14 -7
  56. package/docs/sui-kbd/README.md +4 -4
  57. package/docs/sui-key-icon/README.md +6 -2
  58. package/docs/sui-link-button/README.md +21 -17
  59. package/docs/sui-modal-footer/README.md +1 -1
  60. package/docs/sui-notification/README.md +8 -6
  61. package/docs/sui-notification-footer/README.md +2 -2
  62. package/docs/sui-notification-tab-menu/README.md +5 -3
  63. package/docs/sui-pagination/README.md +8 -5
  64. package/docs/sui-password-strength/README.md +1 -1
  65. package/docs/sui-period-range/README.md +18 -14
  66. package/docs/sui-popover/README.md +13 -7
  67. package/docs/sui-product-card/README.md +14 -10
  68. package/docs/sui-progress-bar/README.md +4 -2
  69. package/docs/sui-progress-bar-label/README.md +2 -0
  70. package/docs/sui-radio/README.md +14 -7
  71. package/docs/sui-radio-card/README.md +12 -12
  72. package/docs/sui-radio-label/README.md +36 -11
  73. package/docs/sui-rating/README.md +28 -9
  74. package/docs/sui-rich-editor/README.md +3 -3
  75. package/docs/sui-segmented-control/README.md +32 -21
  76. package/docs/sui-select/README.md +35 -31
  77. package/docs/sui-sidebar/README.md +1 -2
  78. package/docs/sui-slider/README.md +7 -0
  79. package/docs/sui-social-button/README.md +24 -11
  80. package/docs/sui-status-badge/README.md +7 -3
  81. package/docs/sui-stepper/README.md +30 -17
  82. package/docs/sui-store-card/README.md +9 -4
  83. package/docs/sui-switch/README.md +16 -11
  84. package/docs/sui-switch-card/README.md +18 -16
  85. package/docs/sui-switch-label/README.md +22 -11
  86. package/docs/sui-tab-chips/README.md +55 -41
  87. package/docs/sui-tab-menu-horizontal/README.md +19 -11
  88. package/docs/sui-tab-menu-vertical/README.md +10 -5
  89. package/docs/sui-tag/README.md +25 -11
  90. package/docs/sui-tag-input/README.md +24 -14
  91. package/docs/sui-textarea/README.md +21 -21
  92. package/docs/sui-time-picker/README.md +38 -32
  93. package/docs/sui-toast/README.md +27 -22
  94. package/docs/sui-tooltip/README.md +14 -17
  95. package/docs/sui-topbar-button/README.md +2 -2
  96. package/fesm2022/ajuarezso-sui-design-system.mjs +1071 -240
  97. package/fesm2022/ajuarezso-sui-design-system.mjs.map +1 -1
  98. package/package.json +1 -1
  99. 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:293` (color de cada opción cuando el grupo
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
- | uso | mobile | web |
60
- |---|---|---|
61
- | botón que abre el panel | 32 px de alto (no hay `size`) | 32 px |
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
- **No tiene un tamaño grande para mobile.** El botón mide unos 32 px de alto y los puntos de
64
- color del panel 24 px. En mobile funciona, pero queda debajo de los 44 px de área táctil.
65
- Agrandarlo es una decisión del DS.
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 `'Navigate'` y `'Select'`. | 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 están en inglés. | propuesta |
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` | `'Navigate'` |
67
- | `selectLabel` | `string` | `'Select'` |
68
- | `helpText` | `string \| null` | `"Not what you're looking for? Try the"` |
69
- | `helpLink` | `SuiLinkConfig \| string \| null` | `'Help Center'` |
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 vienen en inglés.** Si no se pasan, el pie dice «Navigate», «Select», «Not
82
- what you're looking for? Try the» y «Help Center».
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 `'Search or jump to'`. | canon (CANON-SUI §5: copy en español, elipsis `…`) |
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` | `'Search or jump to'` |
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**. El DS lo usa dentro
29
- > de `sui-table`.
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 03-10-2026 en `master-pedidos/src/app`: 11 compact-buttons en 7 archivos, sin
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: 6 `large`, 3 `medium`, 2 `xlarge`.
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:647`
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
- - **A discutir — 5 `ghost` para acciones de fila** (quitar, más):
60
- `components/option-sections-manager/option-sections-manager.html:39` y `:146`,
61
- `components/add-product-modal/add-product-modal.html:306`,
62
- `pages/super-admin/master-settings/master-settings.html:111` y `:647`. Este canon dice `stroke`
63
- para filas y `ghost` solo para cerrar; el canon de `sui-button` permite `ghost` para editar y
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). **En el repo del DS, todavía no en el paquete publicado 0.19.0** |
74
- | `3xlarge` | 36 (20) | Cerrar en modales y sheets en mobile. | ídem: canon; en el repo, no en 0.19.0 |
75
- | `4xlarge` | 40 (24) | Flotantes sobre el mapa (volver, centrar). | ídem: canon; en el repo, no en 0.19.0 |
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
- **Usos de hoy que rompen la regla** (pantallas del cliente, que se usan en el teléfono, con
78
- botones de 20 o 24 px):
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
- - **4 casos**: `components/product-detail-view/product-detail-view.html:169` y `:173` (− / + en
81
- `large` → `2xlarge`), `components/store-ratings-modal/store-ratings-modal.html:33` (cerrar en
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'"`, 27 usos hoy en `master-pedidos` (16 `large`/`small`,
110
- 9 `large`/`medium`, 2 `medium`/`xsmall`). Regla del dueño, 03-10-2026.
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 (aprobado por el dueño, 03-10-2026) |
115
- | cerrar en la cabecera de un modal o sheet | `3xlarge` (36) | `xlarge` (28) | canon (aprobado por el dueño, 03-10-2026) |
116
- | flotante sobre el mapa o una foto | `4xlarge` (40) | `xlarge` (28) | canon (aprobado por el dueño, 03-10-2026) |
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() ? '3xlarge' : 'xlarge'" (clicked)="cerrar()" />
118
+ [size]="bp.isMobile() ? '5xlarge' : 'xlarge'" (clicked)="cerrar()" />
121
119
  ```
122
120
 
123
- **`2xlarge`, `3xlarge` y `4xlarge` están en el repo del DS y todavía no en el paquete publicado
124
- (0.19.0).** Hasta publicarlos, el patrón de arriba no compila. Aun en `4xlarge` (40) el botón queda
125
- por debajo de 44: deja 4 px de aire alrededor (gap o padding del contenedor) para que el dedo no
126
- toque el vecino. `medium` y `large` no van en mobile: hoy hay 4 en pantallas del cliente (ver
127
- «`size`» arriba).
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 seis tamaños tienen
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` (pasó en `master-settings.html:647`).
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:647`,
167
- `arrastre-carrusel.ts:102` y `:104`, `order-history.html:383`). Usa `(clicked)`, que ya respeta
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, en mobile -->
182
- <sui-compact-button icon="close-line" variantStyle="ghost" size="xlarge" ariaLabel="Cerrar" (clicked)="cerrar()" />
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" size="xlarge"
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:66`, `pages/drivers/drivers.html:72`…), que se estira a todo el ancho.
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 siguen como
50
- `sui-select` `large` a todo el ancho, porque este no pasa de 40 px.
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 siguen en 20.
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:193` y `:200`.
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:193`) o teléfonos de otro país |
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 72 (leading de 40 + padding 16) en las dos. El `size` cambia **solo la X de quitar**:
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 | 72, sin cambio | 72, sin cambio | Figma |
81
- | X para quitar | `large` (32, área 40) | `medium` (20) | propuesta: el tamaño es extensión SUI aprobada (03-10-2026); el «cuándo» falta aprobarlo |
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 03-10-2026 en `master-pedidos/src/app`: **1 content-divider**
31
- > (`pages/super-admin/master-drivers/master-drivers.html:190`, `solid-text` «Con pocos
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:190`) | según la guía del DS («a menudo en modales») |
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 03-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 `medium`.
36
- > 1 con `label`, 2 con `ariaLabel`, 2 sin ninguno de los dos.
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:82`) |
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:480`) |
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 (regla del 03-10-2026): el número va en 16/24; el alto del
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) | `large` (48), igual que el botón | `large` | propuesta (ya es práctica en `restaurant-menu.html:480`) |
79
- | cantidad en una fila (carrito, pasajeros) | `large` (48) | `medium` (40) | propuesta, falta aprobación |
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() ? 'large' : 'medium'" … /> <!-- bp = BreakpointsService -->
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 de 24 px de `medium` para abajo no llegan a los 40 de un dedo: en mobile, `large`
134
- o `xlarge` (ver «Tamaño en mobile y en web»).
135
- - Sin `label` ni `ariaLabel` el grupo no tiene nombre para el lector de pantalla.
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-tab-chips (elegir entre pocos días: hoy, mañana, sábado)]
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-tab-chips`, como el super admin.
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. | no usar |
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
- **No tiene `size`.** Mide 288 × 36 y las flechas son `sui-compact-button` `large` de **24 px**:
46
- en mobile **no llegan** a los 44 px.
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
- | uso | mobile | web | fuente |
49
- |---|---|---|---|
50
- | cabecera de un período | — **no hay tamaño** | 288 × 36, flechas de 24 | medido |
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
- <!-- Web -->
54
- <sui-date-selector label="Octubre 2026" [rightIcon]="!esMesActual()" (prev)="mesAnterior()" (next)="mesSiguiente()" />
56
+ <sui-date-selector [size]="bp.isMobile() ? 'large' : 'medium'" label="Octubre 2026"
57
+ [rightIcon]="!esMesActual()" (prev)="mesAnterior()" (next)="mesSiguiente()" />
55
58
  ```
56
59
 
57
- **Sin tamaño suficiente para mobile.** En el celular, hasta que el DS le sume un `size`, se arma
58
- con `sui-compact-button` `xlarge` (o `sui-button` `onlyIcon` `large`) a los lados de un título.
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
  |---|---|