@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.
Files changed (114) hide show
  1. package/docs/INDEX.md +30 -35
  2. package/docs/sui-accordion/README.md +171 -0
  3. package/docs/sui-activity-feed/README.md +154 -0
  4. package/docs/sui-activity-filter/README.md +100 -0
  5. package/docs/sui-alert/README.md +28 -19
  6. package/docs/sui-app-store-badge/README.md +5 -4
  7. package/docs/sui-avatar/README.md +16 -16
  8. package/docs/sui-avatar-group/README.md +4 -4
  9. package/docs/sui-badge/README.md +27 -9
  10. package/docs/sui-banner/README.md +10 -9
  11. package/docs/sui-brand-logo/README.md +3 -3
  12. package/docs/sui-breadcrumbs/README.md +1 -1
  13. package/docs/sui-button/README.md +64 -21
  14. package/docs/sui-button-group/README.md +6 -4
  15. package/docs/sui-button-group-item/README.md +3 -3
  16. package/docs/sui-card/README.md +17 -19
  17. package/docs/sui-chart-legend/README.md +8 -7
  18. package/docs/sui-checkbox/README.md +11 -6
  19. package/docs/sui-checkbox-card/README.md +24 -19
  20. package/docs/sui-checkbox-label/README.md +32 -10
  21. package/docs/sui-circular-progress-bar/README.md +2 -0
  22. package/docs/sui-color-dot/README.md +1 -1
  23. package/docs/sui-color-picker/README.md +22 -7
  24. package/docs/sui-command-menu-footer/README.md +100 -0
  25. package/docs/sui-command-menu-item/README.md +140 -0
  26. package/docs/sui-command-menu-search/README.md +105 -0
  27. package/docs/sui-compact-avatar-group/README.md +4 -3
  28. package/docs/sui-compact-button/README.md +41 -44
  29. package/docs/sui-compact-select/README.md +12 -5
  30. package/docs/sui-compact-select-for-input/README.md +5 -2
  31. package/docs/sui-content-card/README.md +6 -5
  32. package/docs/sui-content-divider/README.md +4 -4
  33. package/docs/sui-content-label/README.md +11 -6
  34. package/docs/sui-counter-input/README.md +21 -17
  35. package/docs/sui-date-selector/README.md +16 -12
  36. package/docs/sui-datepicker/README.md +46 -28
  37. package/docs/sui-day-cell/README.md +17 -8
  38. package/docs/sui-day-label/README.md +2 -2
  39. package/docs/sui-divider/README.md +5 -5
  40. package/docs/sui-drawer-footer/README.md +19 -5
  41. package/docs/sui-dropdown-caption/README.md +92 -0
  42. package/docs/sui-dropdown-item/README.md +163 -0
  43. package/docs/sui-dropdown-menu/README.md +196 -0
  44. package/docs/sui-dropdown-search/README.md +113 -0
  45. package/docs/sui-emoji/README.md +6 -6
  46. package/docs/sui-empty-state/README.md +13 -23
  47. package/docs/sui-fancy-button/README.md +24 -18
  48. package/docs/sui-file-icon/README.md +1 -1
  49. package/docs/sui-file-upload/README.md +3 -0
  50. package/docs/sui-file-upload-card/README.md +8 -7
  51. package/docs/sui-filter/README.md +181 -0
  52. package/docs/sui-flag/README.md +3 -2
  53. package/docs/sui-form-hint/README.md +12 -8
  54. package/docs/sui-form-label/README.md +11 -16
  55. package/docs/sui-href/README.md +85 -0
  56. package/docs/sui-icon/README.md +4 -3
  57. package/docs/sui-image-upload/README.md +28 -16
  58. package/docs/sui-img-retry/README.md +107 -0
  59. package/docs/sui-inline-input/README.md +7 -6
  60. package/docs/sui-inline-select/README.md +8 -5
  61. package/docs/sui-input/README.md +27 -33
  62. package/docs/sui-integration-switch/README.md +14 -7
  63. package/docs/sui-kbd/README.md +4 -4
  64. package/docs/sui-key-icon/README.md +6 -2
  65. package/docs/sui-link-button/README.md +21 -17
  66. package/docs/sui-modal/README.md +238 -0
  67. package/docs/sui-modal-footer/README.md +178 -0
  68. package/docs/sui-modal-header/README.md +115 -0
  69. package/docs/sui-modal-sheet/README.md +170 -0
  70. package/docs/sui-notification/README.md +8 -6
  71. package/docs/sui-notification-footer/README.md +2 -2
  72. package/docs/sui-notification-tab-menu/README.md +5 -3
  73. package/docs/sui-page-header/README.md +123 -0
  74. package/docs/sui-pagination/README.md +8 -5
  75. package/docs/sui-password-strength/README.md +1 -1
  76. package/docs/sui-period-range/README.md +18 -14
  77. package/docs/sui-popover/README.md +13 -7
  78. package/docs/sui-product-card/README.md +14 -10
  79. package/docs/sui-progress-bar/README.md +4 -2
  80. package/docs/sui-progress-bar-label/README.md +2 -0
  81. package/docs/sui-radio/README.md +14 -7
  82. package/docs/sui-radio-card/README.md +12 -12
  83. package/docs/sui-radio-label/README.md +36 -11
  84. package/docs/sui-rating/README.md +28 -9
  85. package/docs/sui-rich-editor/README.md +3 -3
  86. package/docs/sui-segmented-control/README.md +33 -19
  87. package/docs/sui-select/README.md +40 -33
  88. package/docs/sui-sidebar/README.md +216 -0
  89. package/docs/sui-slider/README.md +7 -0
  90. package/docs/sui-social-button/README.md +24 -11
  91. package/docs/sui-status-badge/README.md +7 -3
  92. package/docs/sui-stepper/README.md +30 -17
  93. package/docs/sui-store-card/README.md +9 -4
  94. package/docs/sui-switch/README.md +16 -11
  95. package/docs/sui-switch-card/README.md +18 -16
  96. package/docs/sui-switch-label/README.md +25 -11
  97. package/docs/sui-tab-chips/README.md +56 -39
  98. package/docs/sui-tab-menu-horizontal/README.md +19 -11
  99. package/docs/sui-tab-menu-vertical/README.md +10 -5
  100. package/docs/sui-table/README.md +264 -0
  101. package/docs/sui-tag/README.md +25 -11
  102. package/docs/sui-tag-input/README.md +25 -12
  103. package/docs/sui-textarea/README.md +23 -20
  104. package/docs/sui-time-picker/README.md +39 -30
  105. package/docs/sui-toast/README.md +27 -22
  106. package/docs/sui-tooltip/README.md +14 -17
  107. package/docs/sui-topbar/README.md +153 -0
  108. package/docs/sui-topbar-button/README.md +95 -0
  109. package/docs/sui-topbar-item/README.md +97 -0
  110. package/docs/sui-topbar-user/README.md +83 -0
  111. package/fesm2022/ajuarezso-sui-design-system.mjs +1076 -242
  112. package/fesm2022/ajuarezso-sui-design-system.mjs.map +1 -1
  113. package/package.json +1 -1
  114. package/types/ajuarezso-sui-design-system.d.ts +616 -280
@@ -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)]`.
@@ -0,0 +1,100 @@
1
+ ---
2
+ name: sui-command-menu-footer
3
+ selector: sui-command-menu-footer
4
+ resumen: Pie del buscador ⌘K (command menu) con las teclas para moverse y elegir, y un link de ayuda
5
+ alternativas: [sui-modal-footer (botones de un modal), sui-kbd (una tecla suelta), sui-dropdown-caption (texto de pie de un menú flotante)]
6
+ ---
7
+
8
+ # sui-command-menu-footer
9
+
10
+ Story: [Organisms/Command Menu/Command Menu Footer](https://sui-design-system.web.app/?path=/docs/organisms-command-menu-command-menu-footer--docs)
11
+
12
+ La última de las tres piezas del command menu (ver README de `sui-command-menu-item`): dos grupos
13
+ de teclas (↑ ↓ «Navegar», ↵ «Seleccionar») y a la derecha un texto con un link de ayuda.
14
+
15
+ ## Cuándo usarlo / cuándo no
16
+
17
+ **Úsalo** al pie de un command menu **en desktop**, para enseñar las teclas.
18
+
19
+ **No lo uses** para:
20
+
21
+ - Mobile: no hay teclado físico; las teclas no dicen nada (README de `sui-kbd`). No se pinta.
22
+ - Un command menu que **no** se mueve con flechas: si el pie dice «↑ ↓ Navegar», las flechas tienen
23
+ que funcionar. `sui-command-menu-item` no las trae; las cablea quien arma el menú.
24
+ - Botones de un modal: `sui-modal-footer`.
25
+
26
+ Regla corta: **command menu en desktop con flechas cableadas → footer · mobile → nada.**
27
+
28
+ ## Qué variante usar
29
+
30
+ > **La guía del DS lo pone como parte opcional del command menu**: un pie para mostrar atajos de
31
+ > teclado o información extra. No trae do/don't. Todo lo de abajo es **propuesta, falta
32
+ > aprobación**, salvo lo marcado canon.
33
+ >
34
+ > Uso medido el 03-10-2026 en `master-pedidos/src/app` (misma exclusión que `sui-dropdown-menu`):
35
+ > **0 usos**.
36
+
37
+ No tiene variantes. Se decide el copy y si va el bloque de ayuda.
38
+
39
+ | prop | regla | fuente |
40
+ |---|---|---|
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
+ | `helpLink` como objeto | `{ label, href, target }` dibuja un `<a>` de verdad; con `target: '_blank'` pone `rel="noopener noreferrer"` solo. | API |
44
+
45
+ ## Tamaño en mobile y en web
46
+
47
+ No tiene tamaños: 48 px de alto, textos 12/16, hasta 600 px de ancho.
48
+
49
+ | uso | mobile | web | fuente |
50
+ |---|---|---|---|
51
+ | pie del command menu | no se pinta | 48 px | canon para mobile (README de `sui-kbd`: en mobile las teclas no se muestran) |
52
+
53
+ ```html
54
+ @if (!bp.isMobile()) {
55
+ <sui-command-menu-footer navigateLabel="Moverte" selectLabel="Abrir" [helpText]="null" />
56
+ }
57
+ ```
58
+
59
+ ## API
60
+
61
+ <!-- api:inicio -->
62
+ <!-- generada: no editar a mano — `npm run docs` -->
63
+
64
+ | input | tipo | default |
65
+ |---|---|---|
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
+
71
+ | output | payload |
72
+ |---|---|
73
+ | `helpClicked` | `MouseEvent` |
74
+ <!-- api:fin -->
75
+
76
+ `helpLink` como string dibuja un botón que solo emite `helpClicked`; como `SuiLinkConfig`
77
+ (`{ label, href?, target?, rel? }`) dibuja un `<a>`, y un `href` interno navega dentro de la app.
78
+
79
+ ## Trampas
80
+
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
+ - **`helpText: null` saca también el link**; `helpLink: null` saca solo el link y deja el texto.
84
+ - **Promete flechas que nadie cablea**: ni `sui-command-menu-item` ni el modal mueven la selección
85
+ con ↑ ↓.
86
+ - Hasta 600 px el texto de ayuda se oculta (queda solo el link): pasa en un modal angosto aunque sea
87
+ desktop.
88
+ - Las teclas son íconos fijos (↑ ↓ ↵); no se pueden cambiar.
89
+
90
+ ## Ejemplo
91
+
92
+ ```html
93
+ @if (!bp.isMobile()) {
94
+ <sui-command-menu-footer
95
+ navigateLabel="Moverte"
96
+ selectLabel="Abrir"
97
+ helpText="¿No es lo que buscas? Escríbenos por"
98
+ [helpLink]="{ label: 'WhatsApp', href: 'https://wa.me/51931819925', target: '_blank' }" />
99
+ }
100
+ ```
@@ -0,0 +1,140 @@
1
+ ---
2
+ name: sui-command-menu-item
3
+ selector: sui-command-menu-item
4
+ resumen: Fila de resultado del buscador ⌘K (command menu) que lleva a una pantalla, un pedido o una persona
5
+ alternativas: [sui-dropdown-item (fila de un menú de acciones anclado a un botón), sui-filter-item (fila de un panel de filtros), sui-content-card (resultado que se ve en una lista de la pantalla)]
6
+ ---
7
+
8
+ # sui-command-menu-item
9
+
10
+ Story: [Organisms/Command Menu/Command Menu Item](https://sui-design-system.web.app/?path=/docs/organisms-command-menu-command-menu-item--docs)
11
+
12
+ **SUI no tiene un componente «command menu» entero.** Se arma con tres piezas dentro de un
13
+ `sui-modal`: `sui-command-menu-search` arriba, la lista de `sui-command-menu-item` en el medio
14
+ (con cabeceras de grupo `sui-content-divider`) y `sui-command-menu-footer` abajo. Quien lo arma pone
15
+ el filtrado, el teclado y el atajo ⌘K.
16
+
17
+ ## Cuándo usarlo / cuándo no
18
+
19
+ **Úsalo** para los resultados de un buscador que **lleva a algún lado**: abrir un pedido, ir a una
20
+ pantalla del panel, abrir la ficha de un repartidor o un local. Es el patrón del super admin o del
21
+ panel del local **en desktop**, donde hay teclado.
22
+
23
+ **No lo uses** para:
24
+
25
+ - Acciones sobre algo concreto (editar, archivar): `sui-dropdown-item` dentro de un
26
+ `sui-dropdown-menu`.
27
+ - Elegir un valor de un formulario: `sui-select`.
28
+ - La lista de resultados de una pantalla de búsqueda (la del cliente buscando tiendas): ahí van las
29
+ cards de la pantalla, no filas de palette.
30
+ - Un menú en mobile: el ⌘K es un patrón de teclado.
31
+
32
+ Regla corta: **buscar y saltar → command menu · actuar sobre algo → dropdown · elegir un valor →
33
+ select.** La tabla completa está en el README de `sui-dropdown-menu`.
34
+
35
+ ## Qué variante usar
36
+
37
+ > **La guía del DS define el command menu como el buscador que deja saltar rápido desde cualquier
38
+ > pantalla**, armado dentro de un diálogo, con input, lista, grupos con título, items y un pie con
39
+ > teclas. El item tiene dos tamaños, `small` (default) y `medium`, y el elegido se marca con fondo
40
+ > `bg-weak-50`. No trae do/don't. Lo demás es **propuesta, falta aprobación**.
41
+ >
42
+ > Uso medido el 03-10-2026 en `master-pedidos/src/app` (misma exclusión que `sui-dropdown-menu`):
43
+ > **0 usos**. Solo aparece en la vitrina `master-preview`.
44
+
45
+ ### `type` — qué va a la izquierda
46
+
47
+ | type | cuándo | fuente |
48
+ |---|---|---|
49
+ | `left-icon` | Ir a una **pantalla** o una sección: «Pedidos», «Mi negocio», «Recargas». | según la guía del DS (item con ícono); el cuándo es propuesta |
50
+ | `avatar` | Una **persona**: repartidor, cliente, dueño de local (`avatar` con `src` o `initials`). | propuesta |
51
+ | `company` | Un **local**: su logo en `avatar.src`. | propuesta |
52
+ | `basic` (default) | Una búsqueda reciente o un resultado sin imagen («Pedido #1234»). | propuesta |
53
+ | `brand` | Un servicio externo con su logo (Yape, WhatsApp), proyectado en `slot="brand"`. | propuesta |
54
+ | `country` | No usar hoy: todo es Perú. | propuesta |
55
+
56
+ ### `size` y los extras
57
+
58
+ | prop | cuándo | fuente |
59
+ |---|---|---|
60
+ | `size="small"` (default, 40) | Listas de resultados de una línea (`title` + `sublabel`). | según la guía del DS (default `small`) |
61
+ | `size="medium"` (64) | Cuando el resultado necesita una segunda línea (`description`) para distinguirse: «Pedido #1234» · «Juan Pérez · S/ 45.00». | según la guía del DS (existe); el cuándo es propuesta |
62
+ | `badge` | Un estado corto que ayuda a elegir («Pendiente», «Cerrado»). String = gris `lighter`; objeto `SuiBadgeConfig` para color. | propuesta |
63
+ | `shortcut` | El atajo de esa acción (`sui-kbd`). Solo web. | canon (README de `sui-kbd`: en mobile no se pinta) |
64
+ | `showButton` | Una flecha a la derecha cuando el resultado abre otra pantalla. | propuesta |
65
+
66
+ ## Tamaño en mobile y en web
67
+
68
+ El command menu es un patrón de desktop. En mobile no hay ⌘K ni flechas; si se reusa la lista en un
69
+ buscador de mobile, la fila `small` mide 40 y queda debajo de los 44 del dedo.
70
+
71
+ | uso | mobile | web | fuente |
72
+ |---|---|---|---|
73
+ | resultado de una línea | `medium` (64) | `small` (40) | propuesta, falta aprobación |
74
+ | resultado con descripción | `medium` (64) | `medium` (64) | propuesta |
75
+
76
+ ```html
77
+ <sui-command-menu-item [size]="bp.isMobile() ? 'medium' : 'small'" … /> <!-- bp = BreakpointsService -->
78
+ ```
79
+
80
+ ## API
81
+
82
+ <!-- api:inicio -->
83
+ <!-- generada: no editar a mano — `npm run docs` -->
84
+
85
+ | input | tipo | default |
86
+ |---|---|---|
87
+ | `type` | `'basic' \| 'left-icon' \| 'avatar' \| 'brand' \| 'company' \| 'country'` | `'basic'` |
88
+ | `size` | `'small' \| 'medium'` | `'small'` |
89
+ | `title` | `string` | — (requerido) |
90
+ | `sublabel` | `string \| null` | `null` |
91
+ | `description` | `string \| null` | `null` |
92
+ | `icon` | `string \| null` | `null` |
93
+ | `avatar` | `SuiAvatarConfig \| string \| null` | `null` |
94
+ | `flagName` | `SuiFlagName \| null` | `null` |
95
+ | `badge` | `SuiBadgeConfig \| string \| null` | `null` |
96
+ | `shortcut` | `string \| null` | `null` |
97
+ | `showButton` | `boolean` | `false` |
98
+
99
+ | output | payload |
100
+ |---|---|
101
+ | `clicked` | `MouseEvent` |
102
+ | `buttonClicked` | `MouseEvent` |
103
+ <!-- api:fin -->
104
+
105
+ Slot: `[slot=brand]` (solo con `type="brand"`). `avatar` acepta un string (la URL) o
106
+ `SuiAvatarConfig` (`{ src?, initials?, color? }`).
107
+
108
+ ## Trampas
109
+
110
+ - **`(clicked)` nunca sale.** El componente declara el output pero no lo conecta a ningún clic (el
111
+ host no escucha `click` y el template no llama a `onClick`; el spec no lo prueba). Escucha el
112
+ `(click)` nativo del host: `<sui-command-menu-item (click)="ir(r)" … />`.
113
+ - **Enter y Espacio no hacen nada.** Tiene `role="button"` y `tabindex="0"`, así que se enfoca con
114
+ Tab, pero activarlo con teclado lo tiene que cablear quien lo usa (`(keydown.enter)`).
115
+ - **No hay estado «elegido»** para la navegación con flechas: el fondo `weak-50` sale con hover y
116
+ con `:focus-visible`. Para mover la selección con ↑ ↓ hay que mover el foco entre filas.
117
+ - `description` solo se ve en `medium`.
118
+ - `showButton` pinta una flecha con `ariaLabel="Abrir"` fijo, y su clic sale por `buttonClicked`
119
+ (no burbujea al item).
120
+ - `type="left-icon"` sin `icon` en `small` cae al ícono `apps-line`; en `medium` queda el círculo vacío.
121
+ - Mide como máximo 600 px de ancho.
122
+ - El host borra el atributo `title` nativo (no aparece el tooltip gris del navegador).
123
+
124
+ ## Ejemplo
125
+
126
+ ```html
127
+ <sui-modal [(open)]="buscadorAbierto" size="large" [fullscreen]="true">
128
+ <sui-command-menu-search [(value)]="q" placeholder="Busca pedidos, locales o repartidores…"
129
+ [shortcut]="!bp.isMobile()" />
130
+ <sui-content-divider type="text" text="Pantallas" />
131
+ @for (p of pantallas(); track p.ruta) {
132
+ <sui-command-menu-item type="left-icon" [icon]="p.icono" [title]="p.nombre"
133
+ [size]="bp.isMobile() ? 'medium' : 'small'"
134
+ (click)="ir(p.ruta)" (keydown.enter)="ir(p.ruta)" />
135
+ }
136
+ @if (!bp.isMobile()) {
137
+ <sui-command-menu-footer navigateLabel="Moverte" selectLabel="Abrir" [helpText]="null" />
138
+ }
139
+ </sui-modal>
140
+ ```
@@ -0,0 +1,105 @@
1
+ ---
2
+ name: sui-command-menu-search
3
+ selector: sui-command-menu-search
4
+ resumen: Campo de arriba del buscador ⌘K (command menu), sin caja y con borde inferior
5
+ alternativas: [sui-input type="search" (buscador de una pantalla), sui-dropdown-search (filtrar los items de un menú flotante)]
6
+ ---
7
+
8
+ # sui-command-menu-search
9
+
10
+ Story: [Organisms/Command Menu/Command Menu Search](https://sui-design-system.web.app/?path=/docs/organisms-command-menu-command-menu-search--docs)
11
+
12
+ Es la primera de las tres piezas del command menu (ver README de `sui-command-menu-item`): el
13
+ campo, el chip ⌘K y un botón para limpiar. **No busca**: emite el texto y quien lo usa filtra.
14
+
15
+ ## Cuándo usarlo / cuándo no
16
+
17
+ **Úsalo** arriba de un command menu armado dentro de un `sui-modal`: el buscador que salta a
18
+ pedidos, locales, repartidores o pantallas del panel en desktop.
19
+
20
+ **No lo uses** para:
21
+
22
+ - El buscador de una pantalla o de una lista a la vista: `sui-input type="search"` (ya lleva
23
+ `enterkeyhint="search"`, tamaños y label).
24
+ - Filtrar las opciones de un menú anclado a un botón: `sui-dropdown-search`.
25
+ - Fuera del command menu: no tiene caja, solo un borde abajo; suelto parece texto.
26
+
27
+ Regla corta: **buscar en toda la app → command-menu-search · buscar en una pantalla → sui-input
28
+ search · filtrar un menú → dropdown-search.**
29
+
30
+ ## Qué variante usar
31
+
32
+ > **La guía del DS define el command menu como el buscador que deja saltar rápido desde cualquier
33
+ > pantalla**; el input es su primera parte. No dice nada del chip ni del botón de la derecha (salen
34
+ > del Figma del DS). Todo lo de abajo es **propuesta, falta aprobación**, salvo lo marcado canon.
35
+ >
36
+ > Uso medido el 03-10-2026 en `master-pedidos/src/app` (misma exclusión que `sui-dropdown-menu`):
37
+ > **0 usos**.
38
+
39
+ Los tres estados salen solos del `value`: vacío (lupa gris, placeholder gris), hover (placeholder
40
+ más oscuro) y con texto (lupa naranja, X para limpiar).
41
+
42
+ | prop | regla | fuente |
43
+ |---|---|---|
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
+ | `shortcut` | `true` solo en web; en mobile `false` (no hay teclado físico). | canon (README de `sui-kbd`) |
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
+
48
+ ## Tamaño en mobile y en web
49
+
50
+ No tiene tamaños: 48 px de alto (14 + 20 + 13 + 1 de borde), texto 14/20, hasta 600 px de ancho.
51
+
52
+ | uso | mobile | web | fuente |
53
+ |---|---|---|---|
54
+ | buscador del command menu | igual, sin chip ⌘K | igual, con chip ⌘K | canon para el chip (README de `sui-kbd`); el resto, propuesta |
55
+
56
+ ```html
57
+ <sui-command-menu-search [(value)]="q" placeholder="Busca pedidos, locales o repartidores…"
58
+ [shortcut]="!bp.isMobile()" /> <!-- bp = BreakpointsService -->
59
+ ```
60
+
61
+ ## API
62
+
63
+ <!-- api:inicio -->
64
+ <!-- generada: no editar a mano — `npm run docs` -->
65
+
66
+ | input | tipo | default |
67
+ |---|---|---|
68
+ | `value` | `string` | `''` |
69
+ | `placeholder` | `string` | `'Buscar o ir a…'` |
70
+ | `shortcut` | `boolean` | `true` |
71
+ | `button` | `boolean` | `true` |
72
+
73
+ | output | payload |
74
+ |---|---|
75
+ | `valueChange` | `string` |
76
+ | `cleared` | `void` |
77
+ <!-- api:fin -->
78
+
79
+ `value` no es `model`, pero el par `value` + `valueChange` permite `[(value)]`. La X emite
80
+ `valueChange('')` y `cleared`, y devuelve el foco al campo.
81
+
82
+ ## Trampas
83
+
84
+ - **Sin `[(value)]` no funciona bien.** El componente no guarda lo que se escribe: solo lo emite. Si
85
+ no se le devuelve el `value`, la X nunca aparece y la lupa no cambia: el estado «con texto» sale
86
+ del input `value`, no de lo escrito.
87
+ - **El chip dice ⌘K, fijo.** En Windows el atajo es Ctrl+K y el chip no cambia; tampoco hay atajo
88
+ real: el `keydown` global lo cablea quien arma el command menu.
89
+ - **iOS hace zoom al enfocarlo**: el campo está en 14 px y la regla de la app pide 16 px en los
90
+ inputs de mobile (CLAUDE.md, «Responsive mobile»).
91
+ - **El teclado no trae la lupa**: el `<input>` es `type="text"` sin `enterkeyhint="search"` (CLAUDE.md,
92
+ «La lupa del teclado»).
93
+ - **El campo no tiene nombre accesible**: solo placeholder, sin `aria-label`.
94
+ - No tiene `disabled`.
95
+ - El ícono de info del estado vacío es decorativo: no abre ayuda ni tiene `aria-label`.
96
+
97
+ ## Ejemplo
98
+
99
+ ```html
100
+ <sui-command-menu-search
101
+ [(value)]="q"
102
+ placeholder="Busca pedidos, locales o repartidores…"
103
+ [shortcut]="!bp.isMobile()"
104
+ (cleared)="resultados.set([])" />
105
+ ```
@@ -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,22 @@ 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 14 · 12, radio 12); el texto y los íconos siguen en 14/20 y 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.
58
+
59
+ En large y xlarge el texto sube a 16 px (regla del 03-10-2026): el valor y las opciones del menú
60
+ van en 16/24 en `large` y el padding vertical baja para que el alto siga en 48 (trigger) y 44 (opción).
57
61
 
58
62
  Las opciones del menú siguen al `size` como en `sui-select`: 36 hasta `medium`, **44 en `large`**, y
59
63
  **44 en mobile (≤ 767 px) con cualquier tamaño**.
@@ -101,6 +105,7 @@ Las opciones del menú siguen al `size` como en `sui-select`: 36 hasta `medium`,
101
105
  | `selected` · model, `[(selected)]` | `SuiCompactSelectItem<T> \| null` | `null` |
102
106
  | `error` | `boolean` | `false` |
103
107
  | `disabled` | `boolean` | `false` |
108
+ | `ariaLabel` | `string \| null` | `null` |
104
109
 
105
110
  | output | payload |
106
111
  |---|---|
@@ -116,6 +121,8 @@ Implementa `ControlValueAccessor` (el valor es el `value` de la opción).
116
121
  se entera de lo que escribe `selected`.
117
122
  - Sin `items` no abre nada: solo emite `(clicked)`.
118
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).
119
126
  - El menú mide al menos 200 px aunque el campo sea más angosto.
120
127
  - Las opciones miden 36 px en web hasta `medium`; 44 en `large` y en mobile (ver «Tamaño»).
121
128