@ajuarezso/sui-design-system 0.24.1 → 0.25.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (120) hide show
  1. package/docs/sui-accordion/README.md +85 -11
  2. package/docs/sui-activity-feed/README.md +65 -11
  3. package/docs/sui-activity-filter/README.md +54 -5
  4. package/docs/sui-alert/README.md +54 -0
  5. package/docs/sui-app-store-badge/README.md +64 -10
  6. package/docs/sui-avatar/README.md +92 -29
  7. package/docs/sui-avatar-group/README.md +75 -9
  8. package/docs/sui-badge/README.md +85 -17
  9. package/docs/sui-banner/README.md +85 -20
  10. package/docs/sui-brand-logo/README.md +95 -31
  11. package/docs/sui-breadcrumb-item/README.md +54 -3
  12. package/docs/sui-breadcrumbs/README.md +54 -6
  13. package/docs/sui-button/README.md +76 -12
  14. package/docs/sui-button-group/README.md +91 -23
  15. package/docs/sui-button-group-item/README.md +81 -14
  16. package/docs/sui-card/README.md +105 -18
  17. package/docs/sui-chart-legend/README.md +63 -10
  18. package/docs/sui-chart-legend-dot/README.md +59 -10
  19. package/docs/sui-checkbox/README.md +109 -29
  20. package/docs/sui-checkbox-card/README.md +70 -14
  21. package/docs/sui-checkbox-label/README.md +92 -26
  22. package/docs/sui-circular-progress-bar/README.md +80 -19
  23. package/docs/sui-color-dot/README.md +72 -12
  24. package/docs/sui-color-picker/README.md +71 -13
  25. package/docs/sui-command-menu-footer/README.md +50 -1
  26. package/docs/sui-command-menu-item/README.md +74 -14
  27. package/docs/sui-command-menu-search/README.md +58 -3
  28. package/docs/sui-compact-avatar-group/README.md +73 -13
  29. package/docs/sui-compact-button/README.md +123 -34
  30. package/docs/sui-compact-select/README.md +61 -7
  31. package/docs/sui-compact-select-for-input/README.md +70 -6
  32. package/docs/sui-content-card/README.md +75 -14
  33. package/docs/sui-content-divider/README.md +67 -16
  34. package/docs/sui-content-label/README.md +99 -20
  35. package/docs/sui-counter-input/README.md +102 -18
  36. package/docs/sui-date-selector/README.md +69 -11
  37. package/docs/sui-datepicker/README.md +85 -18
  38. package/docs/sui-day-cell/README.md +75 -17
  39. package/docs/sui-day-label/README.md +56 -7
  40. package/docs/sui-divider/README.md +64 -9
  41. package/docs/sui-drawer-footer/README.md +63 -2
  42. package/docs/sui-drawer-header/README.md +69 -12
  43. package/docs/sui-dropdown-caption/README.md +58 -6
  44. package/docs/sui-dropdown-item/README.md +75 -9
  45. package/docs/sui-dropdown-menu/README.md +83 -14
  46. package/docs/sui-dropdown-search/README.md +60 -4
  47. package/docs/sui-emoji/README.md +94 -30
  48. package/docs/sui-empty-state/README.md +71 -7
  49. package/docs/sui-fancy-button/README.md +74 -14
  50. package/docs/sui-file-icon/README.md +70 -12
  51. package/docs/sui-file-upload/README.md +77 -17
  52. package/docs/sui-file-upload-card/README.md +64 -12
  53. package/docs/sui-filter/README.md +83 -14
  54. package/docs/sui-flag/README.md +73 -8
  55. package/docs/sui-form-hint/README.md +56 -7
  56. package/docs/sui-form-label/README.md +57 -5
  57. package/docs/sui-href/README.md +47 -0
  58. package/docs/sui-icon/README.md +86 -18
  59. package/docs/sui-image-upload/README.md +90 -22
  60. package/docs/sui-image-upload-profile/README.md +70 -11
  61. package/docs/sui-img-retry/README.md +50 -1
  62. package/docs/sui-inline-input/README.md +67 -9
  63. package/docs/sui-inline-select/README.md +62 -2
  64. package/docs/sui-input/README.md +90 -27
  65. package/docs/sui-integration-switch/README.md +84 -17
  66. package/docs/sui-kbd/README.md +73 -9
  67. package/docs/sui-key-icon/README.md +85 -23
  68. package/docs/sui-link-button/README.md +96 -27
  69. package/docs/sui-logo/README.md +93 -22
  70. package/docs/sui-modal/README.md +72 -13
  71. package/docs/sui-modal-footer/README.md +86 -12
  72. package/docs/sui-modal-header/README.md +57 -1
  73. package/docs/sui-modal-sheet/README.md +74 -12
  74. package/docs/sui-notification/README.md +81 -11
  75. package/docs/sui-notification-footer/README.md +55 -5
  76. package/docs/sui-notification-tab-menu/README.md +61 -5
  77. package/docs/sui-otp-input/README.md +70 -9
  78. package/docs/sui-page-header/README.md +89 -19
  79. package/docs/sui-pagination/README.md +73 -13
  80. package/docs/sui-password-strength/README.md +50 -1
  81. package/docs/sui-payment-icon/README.md +80 -18
  82. package/docs/sui-period-range/README.md +70 -11
  83. package/docs/sui-popover/README.md +81 -15
  84. package/docs/sui-product-card/README.md +89 -21
  85. package/docs/sui-progress-bar/README.md +82 -15
  86. package/docs/sui-progress-bar-label/README.md +79 -18
  87. package/docs/sui-radio/README.md +84 -7
  88. package/docs/sui-radio-card/README.md +70 -16
  89. package/docs/sui-radio-label/README.md +89 -22
  90. package/docs/sui-rating/README.md +101 -31
  91. package/docs/sui-rich-editor/README.md +47 -2
  92. package/docs/sui-segmented-control/README.md +90 -21
  93. package/docs/sui-select/README.md +80 -11
  94. package/docs/sui-sidebar/README.md +71 -16
  95. package/docs/sui-slider/README.md +75 -8
  96. package/docs/sui-social-button/README.md +71 -11
  97. package/docs/sui-status-badge/README.md +75 -14
  98. package/docs/sui-stepper/README.md +75 -18
  99. package/docs/sui-store-card/README.md +85 -22
  100. package/docs/sui-switch/README.md +82 -11
  101. package/docs/sui-switch-card/README.md +80 -16
  102. package/docs/sui-switch-label/README.md +91 -14
  103. package/docs/sui-tab-chips/README.md +93 -21
  104. package/docs/sui-tab-menu-horizontal/README.md +68 -7
  105. package/docs/sui-tab-menu-vertical/README.md +64 -11
  106. package/docs/sui-table/README.md +77 -16
  107. package/docs/sui-tag/README.md +86 -12
  108. package/docs/sui-tag-input/README.md +77 -13
  109. package/docs/sui-textarea/README.md +84 -17
  110. package/docs/sui-time-picker/README.md +96 -33
  111. package/docs/sui-toast/README.md +81 -20
  112. package/docs/sui-tooltip/README.md +80 -22
  113. package/docs/sui-topbar/README.md +64 -10
  114. package/docs/sui-topbar-button/README.md +61 -7
  115. package/docs/sui-topbar-item/README.md +68 -7
  116. package/docs/sui-topbar-user/README.md +61 -5
  117. package/fesm2022/ajuarezso-sui-design-system.mjs +15 -10
  118. package/fesm2022/ajuarezso-sui-design-system.mjs.map +1 -1
  119. package/package.json +1 -1
  120. package/types/ajuarezso-sui-design-system.d.ts +7 -3
@@ -22,8 +22,8 @@ Story: [Molecules/Date & Time/Day Label](https://sui-design-system.web.app/?path
22
22
 
23
23
  ## Qué variante usar
24
24
 
25
- > **La guía del DS no tiene página para este componente** (vive dentro del datepicker). Todo es
26
- > **propuesta, falta aprobación**.
25
+ > **La guía del DS no tiene página para este componente** (vive dentro del datepicker). Las
26
+ > reglas marcadas canon están aprobadas; lo que sigue en propuesta espera decisión.
27
27
  >
28
28
  > Uso medido el 03-10-2026 en `master-pedidos/src/app`: **0 usos directos**. Lo usa por dentro
29
29
  > `sui-datepicker`.
@@ -31,24 +31,35 @@ Story: [Molecules/Date & Time/Day Label](https://sui-design-system.web.app/?path
31
31
  | input | valor | cuándo | fuente |
32
32
  |---|---|---|---|
33
33
  | `label` | dos letras en mayúsculas | Lo normal, igual que el datepicker: `LU MA MI JU VI SÁ DO`. La semana arranca el lunes. | propuesta |
34
- | `label` | una letra | No usar: «M» es martes y miércoles a la vez. | propuesta |
35
- | `label` | tres letras o más | No usar: «MIÉ» entra justo en 40 px, pero rompe el formato de dos letras del datepicker; «LUNES» ya no entra. | propuesta |
34
+ | `label` | una letra | No usar: «M» es martes y miércoles a la vez. | canon (aprobado por el dueño, 05-10-2026, bloque B4) |
35
+ | `label` | tres letras o más | No usar: «MIÉ» entra justo en 40 px, pero rompe el formato de dos letras del datepicker; «LUNES» ya no entra. | canon (aprobado por el dueño, 05-10-2026, bloque B4) |
36
36
 
37
37
  Usos de hoy que rompen la regla: **0**.
38
38
 
39
39
  ## Tamaño en mobile y en web
40
40
 
41
- **No tiene `size`.** Mide 40 × 40, igual que `sui-day-cell`, para que las columnas calcen. No se
42
- toca: el tamaño solo importa para alinear.
41
+ **No tiene `size`.** Mide 40 × 40, igual que `sui-day-cell` `medium`, para que las columnas calcen.
42
+ No se toca: el tamaño solo importa para alinear. Con `sui-day-cell` `large` (44) la columna ya no
43
+ calza sola: el `sui-datepicker` `xlarge` le pone `width: 44px` desde afuera, y un calendario armado a
44
+ mano tiene que hacer lo mismo.
43
45
 
44
46
  | uso | mobile | web | fuente |
45
47
  |---|---|---|---|
46
- | cabecera de columna | 40 × 40 | 40 × 40 | medido |
48
+ | cabecera de columna | 40 × 40 (44 de ancho, desde afuera, si las celdas van en `large`) | 40 × 40 | medido · 44: `sui-datepicker.scss`, size `xlarge` |
47
49
 
48
50
  ```html
49
51
  @for (d of ['LU','MA','MI','JU','VI','SÁ','DO']; track d) { <sui-day-label [label]="d" /> }
50
52
  ```
51
53
 
54
+ ### Por dispositivo (D16)
55
+
56
+ No aplica: **no tiene `size`** y no se toca, así que no sube en ningún dispositivo. Lo único que
57
+ cambia es su ancho, que sigue al de la celda: 44 donde `sui-day-cell` va en `large` (celular chico,
58
+ celular y tablet táctil), 40 en la computadora. Fuente: D16, dueño 05-10-2026.
59
+
60
+ En master-pedidos: sin `[size]`; el ancho de 44 sale de la misma señal que la celda,
61
+ `bp.tactil()`.
62
+
52
63
  ## «No usar»: por qué no hoy y cuándo sí
53
64
 
54
65
  | qué | por qué no hoy | cuándo sí, en un flujo nuevo |
@@ -74,6 +85,44 @@ Outputs: ninguno.
74
85
  al lector de pantalla.
75
86
  - Acepta cualquier texto, pero el ancho es fijo de 40 px: lo que no entra se corta.
76
87
 
88
+ ## Bien y mal
89
+
90
+ La cabecera de la semana
91
+
92
+ ```html
93
+ <!-- ❌ mal: «M» es martes y miércoles a la vez (canon B4) -->
94
+ @for (d of ['L','M','M','J','V','S','D']; track $index) { <sui-day-label [label]="d" /> }
95
+ ```
96
+
97
+ ```html
98
+ <!-- ✅ bien -->
99
+ @for (d of ['LU','MA','MI','JU','VI','SÁ','DO']; track d) { <sui-day-label [label]="d" /> }
100
+ ```
101
+
102
+ Elegir los días que abre el local
103
+
104
+ ```html
105
+ <!-- ❌ mal: es solo texto (columnheader); no se toca ni se marca -->
106
+ @for (d of dias; track d.value) { <sui-day-label [label]="d.label" (click)="alternar(d)" /> }
107
+ ```
108
+
109
+ ```html
110
+ <!-- ✅ bien: size por D16 (celular `large`, o `medium` si los 7 no entran: P18, pendiente) -->
111
+ <sui-button-group [multi]="true" [items]="dias" [size]="bp.sizeControl()" [(value)]="diasAbiertos" />
112
+ ```
113
+
114
+ Cabecera sobre celdas de 44
115
+
116
+ ```html
117
+ <!-- ❌ mal: la etiqueta mide 40 y la celda large 44; las columnas se corren -->
118
+ <sui-day-label label="LU" />
119
+ ```
120
+
121
+ ```html
122
+ <!-- ✅ bien: el mismo ancho que la celda, como hace el datepicker xlarge -->
123
+ <sui-day-label label="LU" [style.width.px]="bp.tactil() ? 44 : 40" [style.max-width.px]="bp.tactil() ? 44 : 40" />
124
+ ```
125
+
77
126
  ## Ejemplo
78
127
 
79
128
  ```html
@@ -33,7 +33,7 @@ Story: [Atoms/Divider/Divider](https://sui-design-system.web.app/?path=/docs/ato
33
33
  > espacio, línea con texto, texto, texto con fondo y contenido al centro). Su variante «Line»
34
34
  > («una línea horizontal simple», la default) es este componente. La guía no trae la vertical ni
35
35
  > dice cuándo separar con línea y cuándo con espacio. Lo marcado «según la guía del DS» sale de
36
- > ahí; el resto es **propuesta, falta aprobación**.
36
+ > ahí; el resto quedó aprobado por el dueño (canon, 05-10-2026).
37
37
  >
38
38
  > Uso medido el 04-10-2026 en `master-pedidos/src/app`: **39 dividers en 14 archivos** (los 13 de
39
39
  > antes + las 26 líneas a mano que se pasaron el 03-10-2026), todos horizontales, sin contar prototipos ni vitrinas (`master-preview`, `master-prototipos`,
@@ -43,9 +43,11 @@ Story: [Atoms/Divider/Divider](https://sui-design-system.web.app/?path=/docs/ato
43
43
  | orientation | cuándo | ejemplo real | fuente |
44
44
  |---|---|---|---|
45
45
  | `horizontal` (default) | Separa bloques o filas. El espacio arriba y abajo lo pone el `gap` del padre, no el divider. | `pages/driver/driver-dashboard/driver-dashboard.html:1127` (entre filas, `@if (!last)`) | según la guía del DS («Line») |
46
- | `vertical` | Separa datos cortos en una sola fila. El padre necesita alto (si no, mide 16 px). | — (sin usos) | propuesta, falta aprobación |
46
+ | `vertical` | Separa datos cortos en una sola fila. El padre necesita alto (si no, mide 16 px). | — (sin usos) | canon (aprobado por el dueño, 05-10-2026, bloque B2) |
47
47
 
48
- **Corregido el 03-10-2026:** las 26 líneas hechas a mano (mi-negocio, checkout, carrito, billetera y movimientos) ya son `sui-divider`. Seis conservan un `margin` propio porque sus vecinos se separan con margen y no con el `gap` del padre; pasarlo al `gap` es un cambio aparte.
48
+ **Corregido el 03-10-2026:** las 26 líneas hechas a mano (mi-negocio, checkout, carrito, billetera y movimientos) ya son `sui-divider`. Seis conservan un `margin` propio porque sus vecinos se separan con margen y no con el `gap` del padre; pasarlo al `gap` es un cambio aparte. Quedan **dos líneas a mano** (medido el 06-10-2026):
49
+ `pages/driver/driver-dashboard/driver-dashboard.html:410` (`.dashboard__votaciones-sep`) y
50
+ `pages/customer/viaje/viaje.html:111` (`.vj__ruta-divisor`).
49
51
 
50
52
  El «o» del login y del registro también pasó a `sui-content-divider type="text-line"`.
51
53
 
@@ -56,13 +58,22 @@ Nada: las dos orientaciones tienen caso. La vertical no tiene usos hoy, pero el
56
58
 
57
59
  ## Tamaño en mobile y en web
58
60
 
59
- Criterio de la app: **en mobile se lee y se toca con el dedo, así que va más grande; en web
60
- (desktop), más chico.** Mobile es `≤ 767 px`, el mismo corte de `BreakpointsService.isMobile()`
61
- en master-pedidos. Fuente: canon del dueño (03-10-2026), el mismo patrón que ya usan 27 controles
62
- de la app.
61
+ Criterio de la app: **D16, tamaño por dispositivo** (canon, dueño, 05-10-2026), que reemplaza al
62
+ «tamaño por plataforma» del 03-10-2026 (mobile grande, web chico). La columna «mobile» es el celular de
63
+ 380 px o más y, en lo que se toca, también la tablet (`pointer: coarse`). La columna «web» es la
64
+ computadora (`pointer: fine`) y, en lo que no se toca, también la tablet. En el celular chico
65
+ (< 380 px) va `medium` a la vista, sin achicar el área de 44 de lo que se toca. **Nada en `small` ni
66
+ `xsmall`**, salvo lo que el componente solo tiene en chico. En la app, `BreakpointsService` ya
67
+ mira el puntero y los 380 px: `bp.tactil()` (celular o pantalla táctil), `bp.celular()` (380–767) y
68
+ `bp.celularChico()` (< 380).
63
69
 
64
- **No aplica**: es 1 px en las dos plataformas. Lo que cambia por plataforma es el `gap` del padre,
65
- que separa los bloques (la regla de spacing de la app: 20/16/12 según el breakpoint).
70
+ ### Por dispositivo (D16)
71
+
72
+ **No aplica**: no tiene `size` y es 1 px en todos los dispositivos (celular chico, celular, tablet
73
+ táctil, computadora y ultrawide). Lo que cambia es el `gap` del padre, que separa los bloques (la
74
+ regla de spacing de la app: 20/16/12 según el breakpoint). Fuente: D16, dueño 05-10-2026.
75
+
76
+ En master-pedidos: sin `[size]`.
66
77
 
67
78
  ## API
68
79
 
@@ -86,6 +97,50 @@ Outputs: ninguno.
86
97
  - Lleva `role="separator"` y `aria-orientation`. Va **entre** filas (`@if (!last)`), no uno por
87
98
  fila: el último sobra.
88
99
 
100
+ ## Bien y mal
101
+
102
+ Separar dos bloques dentro de una card
103
+
104
+ ```html
105
+ <!-- ❌ mal: línea hecha a mano (pages/driver/driver-dashboard/driver-dashboard.html:410, .scss:1527) -->
106
+ <div class="dashboard__votaciones-sep"></div>
107
+ ```
108
+
109
+ ```html
110
+ <!-- ✅ bien: la línea la pone el divider; la clase se queda solo con el margin, como en checkout y carrito -->
111
+ <sui-divider class="dashboard__votaciones-sep" />
112
+ ```
113
+
114
+ Una línea entre las filas de una lista
115
+
116
+ ```html
117
+ <!-- ❌ mal: uno por fila; el último sobra y queda pegado al borde (Trampas) -->
118
+ @for (f of filas; track f.id) {
119
+ <app-fila [fila]="f" />
120
+ <sui-divider />
121
+ }
122
+ ```
123
+
124
+ ```html
125
+ <!-- ✅ bien -->
126
+ @for (f of filas; track f.id; let last = $last) {
127
+ <app-fila [fila]="f" />
128
+ @if (!last) { <sui-divider /> }
129
+ }
130
+ ```
131
+
132
+ Datos en una fila
133
+
134
+ ```html
135
+ <!-- ❌ mal: el padre no tiene alto ni centra; la línea queda de 16 px y descolgada (Trampas) -->
136
+ <div><span>4.7</span><sui-divider orientation="vertical" /><span>25–35 min</span></div>
137
+ ```
138
+
139
+ ```html
140
+ <!-- ✅ bien: .meta { display: flex; align-items: center; height: 20px; gap: 8px } -->
141
+ <div class="meta"><span>4.7</span><sui-divider orientation="vertical" /><span>25–35 min</span></div>
142
+ ```
143
+
89
144
  ## Ejemplo
90
145
 
91
146
  ```html
@@ -69,14 +69,32 @@ El `size` cambia **los botones** (escala del `sui-button`):
69
69
 
70
70
  | uso | mobile | web | fuente |
71
71
  |---|---|---|---|
72
- | pie de un drawer | `large` (48) | `medium` (40) | canon (dueño, 04-10-2026): piso táctil 44 en el teléfono |
72
+ | pie de un drawer | `large` (48), también en la tablet táctil | `medium` (40) | canon (dueño, 04-10-2026): piso táctil 44 en el teléfono · tablet: D16, dueño 05-10-2026 |
73
73
  | par de botones de un modal | `sui-modal-footer` (botones `large`, 48) | `sui-modal-footer` | canon (CLAUDE.md, botones: size `large` en todos los modales) |
74
74
 
75
75
  ```html
76
- <sui-drawer-footer type="stretch" [size]="bp.isMobile() ? 'large' : 'medium'"
76
+ <sui-drawer-footer type="stretch" [size]="bp.sizeControl()"
77
77
  (primaryClick)="guardar()" (secondaryClick)="cancelar()" />
78
78
  ```
79
79
 
80
+ ### Por dispositivo (D16)
81
+
82
+ No está en la tabla por componente de D16: son botones, así que va con **lo que se toca** (la fila
83
+ de `button`). El `size` del pie es el de sus dos botones.
84
+
85
+ | dispositivo | size | nota |
86
+ |---|---|---|
87
+ | celular chico (< 380) | `large` (48) | D16 pide `medium` con área tocable de 44; mientras el DS no estire el área de los `medium`, va `large` (interino) |
88
+ | celular (380–767) | `large` (48) | |
89
+ | tablet táctil (`pointer: coarse`) | `large` (48) | se toca con el dedo: Apple pide 44 pt también en el iPad |
90
+ | computadora (`pointer: fine`) | `medium` (40) | |
91
+
92
+ Ultrawide (≥ 1920 px): igual que la computadora, `medium`; el espacio extra va a ancho, no a botones
93
+ más grandes.
94
+
95
+ En master-pedidos: `[size]="bp.sizeControl()"` (da `large` o `medium`, los dos sizes que tiene el pie).
96
+ Igual, el par de botones va en `sui-modal-footer` (ver arriba), cuyo canon es `large` siempre (D2).
97
+
80
98
  ## «No usar»: por qué no hoy y cuándo sí
81
99
 
82
100
  | qué | por qué no hoy | cuándo sí, en un flujo nuevo |
@@ -130,6 +148,49 @@ interface SuiFooterButtonConfig { label: string; disabled?: boolean; color?: 'pr
130
148
  - `checkboxActive` y `toggleActive` son `model`: `[(checkboxActive)]`.
131
149
  - El borde de arriba ya viene puesto: no le sumes otro.
132
150
 
151
+ ## Bien y mal
152
+
153
+ **Pie de un modal**
154
+
155
+ ```html
156
+ <!-- ❌ mal: el par de botones de un modal es de sui-modal-footer (canon de botones, 27-07-2026) -->
157
+ <sui-drawer-footer type="basic" primaryButton="Guardar"
158
+ (primaryClick)="guardar()" (secondaryClick)="cerrar()" />
159
+ ```
160
+
161
+ ```html
162
+ <!-- ✅ bien -->
163
+ <sui-modal-footer secondaryButton="Cancelar" [primaryButton]="{ label: 'Guardar' }"
164
+ (secondaryClick)="cerrar()" (primaryClick)="guardar()" />
165
+ ```
166
+
167
+ **Confirmar algo destructivo**
168
+
169
+ ```html
170
+ <!-- ❌ mal: el drawer-footer ignora `color: 'error'`; el «Eliminar» sale naranja -->
171
+ <sui-drawer-footer type="basic" [primaryButton]="{ label: 'Eliminar', color: 'error' }"
172
+ (primaryClick)="eliminar()" (secondaryClick)="cerrar()" />
173
+ ```
174
+
175
+ ```html
176
+ <!-- ✅ bien -->
177
+ <sui-modal-footer secondaryButton="Cancelar" [primaryButton]="{ label: 'Eliminar', color: 'error' }"
178
+ (secondaryClick)="cerrar()" (primaryClick)="eliminar()" />
179
+ ```
180
+
181
+ **Un solo botón**
182
+
183
+ ```html
184
+ <!-- ❌ mal: sin `secondaryButton` aparece un «Cancelar» que nadie pidió (es el default) -->
185
+ <sui-drawer-footer type="basic" primaryButton="Entendido" (primaryClick)="cerrar()" />
186
+ ```
187
+
188
+ ```html
189
+ <!-- ✅ bien -->
190
+ <sui-drawer-footer type="basic" primaryButton="Entendido" [secondaryButton]="null"
191
+ [size]="bp.sizeControl()" (primaryClick)="cerrar()" />
192
+ ```
193
+
133
194
  ## Ejemplo
134
195
 
135
196
  ```html
@@ -37,27 +37,27 @@ Regla corta: **modal o sheet → sui-modal con title · panel lateral de web →
37
37
 
38
38
  | type | cuándo | fuente |
39
39
  |---|---|---|
40
- | `basic` (default) | Lo normal: título y cerrar. | propuesta, falta aprobación |
41
- | `left-icon` | El ícono dice de qué es el panel antes de leer («history-line» en el historial). En `small` va suelto (24); en `large`/`xlarge`, en un círculo con borde. | propuesta, falta aprobación |
40
+ | `basic` (default) | Lo normal: título y cerrar. | canon (aprobado por el dueño, 05-10-2026, bloque B2) |
41
+ | `left-icon` | El ícono dice de qué es el panel antes de leer («history-line» en el historial). En `small` va suelto (24); en `large`/`xlarge`, en un círculo con borde. | canon (aprobado por el dueño, 05-10-2026, bloque B2) |
42
42
 
43
43
  ### `size`
44
44
 
45
45
  | size | qué cambia | cuándo | fuente |
46
46
  |---|---|---|---|
47
- | `small` (default) | 64 px, todo en una línea; **no muestra `description`** | Panel con título que se explica solo. Es el único que admite `link`. | propuesta, falta aprobación |
48
- | `large` | 88 px, título arriba y `description` debajo | Panel que necesita una línea de contexto («Últimos 30 días»). | propuesta, falta aprobación |
49
- | `xlarge` | padding 24, título 20, descripción 16 | No: extensión de SUI sin caso; en web no hace falta letra más grande. | propuesta, falta aprobación |
47
+ | `small` (default) | 64 px, todo en una línea; **no muestra `description`** | Panel con título que se explica solo. Es el único que admite `link`. | canon (aprobado por el dueño, 05-10-2026, bloque B1) |
48
+ | `large` | 88 px, título arriba y `description` debajo | Panel que necesita una línea de contexto («Últimos 30 días»). | canon (aprobado por el dueño, 05-10-2026, bloque B1) |
49
+ | `xlarge` | padding 24, título 20, descripción 16 | No: extensión de SUI sin caso; en web no hace falta letra más grande. | canon (aprobado por el dueño, 05-10-2026, bloque B6) |
50
50
 
51
51
  ### Lo demás
52
52
 
53
53
  | input | valor | cuándo | fuente |
54
54
  |---|---|---|---|
55
55
  | `showDismiss` | `true` (default) | Siempre. | según la guía del DS (cerrar visible por default) |
56
- | `showDismiss` | `false` | Solo si el panel no se puede cerrar sin decidir (y entonces es un modal, no un drawer). | propuesta, falta aprobación |
57
- | `showDivider` | `true` | Cuando el cuerpo scrollea por debajo de la cabecera. | propuesta, falta aprobación |
56
+ | `showDismiss` | `false` | Solo si el panel no se puede cerrar sin decidir (y entonces es un modal, no un drawer). | canon (aprobado por el dueño, 05-10-2026, bloque B8) |
57
+ | `showDivider` | `true` | Cuando el cuerpo scrollea por debajo de la cabecera. | canon (aprobado por el dueño, 05-10-2026, bloque B9) |
58
58
  | `badge` | número | Pendientes dentro del panel (círculo rojo). | propuesta, falta aprobación |
59
- | `badge` | texto o `SuiBadgeConfig` | Un estado o etiqueta al lado del título. Pasa `variant: 'lighter'`: el default de aquí es `light` (ver Trampas). | canon (README de `sui-badge`: `lighter` en cabeceras) |
60
- | `link` | texto | Una acción menor en la cabecera («Ver todo»). Solo en `small`. | propuesta, falta aprobación |
59
+ | `badge` | texto o `SuiBadgeConfig` | Un estado o etiqueta al lado del título. Pasa `variant: 'lighter'` y `size: 'medium'`: los defaults de aquí son `light` y `small` (ver Trampas). | canon (README de `sui-badge`: `lighter` en cabeceras) |
60
+ | `link` | texto | Una acción menor en la cabecera («Ver todo»). Solo en `small`. | canon (aprobado por el dueño, 05-10-2026, bloque B9) |
61
61
  | `dismissAriaLabel` | «Cerrar» (default) | Ya está en español. | según el código |
62
62
 
63
63
  Usos de hoy que rompen las reglas: **0** (no se usa).
@@ -69,7 +69,7 @@ los 40-44 del dedo. Es una pieza de web.
69
69
 
70
70
  | uso | mobile | web | fuente |
71
71
  |---|---|---|---|
72
- | cabecera de panel | no se usa: `sui-modal` fullscreen con `title` | `small` o `large` | propuesta, falta aprobación |
72
+ | cabecera de panel | no se usa: `sui-modal` fullscreen con `title` | `small` o `large` | canon (aprobado por el dueño, 05-10-2026, bloque B7) |
73
73
 
74
74
  ```html
75
75
  @if (!bp.isMobile()) {
@@ -77,6 +77,18 @@ los 40-44 del dedo. Es una pieza de web.
77
77
  }
78
78
  ```
79
79
 
80
+ ### Por dispositivo (D16)
81
+
82
+ No aplica: su `size` no depende del dispositivo sino del contenido (`large` cuando hay `description`,
83
+ `small` cuando el título se explica solo), y la X de cerrar es un `sui-compact-button` `large` fijo
84
+ (24 px) que el `size` de la cabecera no mueve. En el celular chico y en el celular no se usa (el
85
+ panel es un `sui-modal` fullscreen); en la computadora y el ultrawide va `small` o `large` según el
86
+ contenido. En la tablet táctil con 768 px o más el panel sí se mostraría y la X de 24 no llega al
87
+ piso de 44: ningún size lo arregla y queda **sin decidir**.
88
+
89
+ En master-pedidos: sin helper; `@if (!bp.isMobile())` alrededor y `size="large"` solo si lleva
90
+ `description`.
91
+
80
92
  ## «No usar»: por qué no hoy y cuándo sí
81
93
 
82
94
  | qué | por qué no hoy | cuándo sí, en un flujo nuevo |
@@ -119,13 +131,58 @@ type SuiDrawerHeaderSize = 'small' | 'large' | 'xlarge';
119
131
 
120
132
  - **`description` no se ve en `small`** y **`link` no se ve en `large`/`xlarge`**: los dos se pasan
121
133
  sin error y no aparecen.
122
- - **El badge de texto sale `orange` + `light` por default**, que va contra el canon del badge
123
- (`lighter` en cabeceras, naranja solo si pide atención). Pasa un `SuiBadgeConfig` completo.
134
+ - **El badge de texto sale `orange` + `light` + `small` por default**, que va contra el canon del badge
135
+ (`lighter` en cabeceras, naranja solo si pide atención) y contra D16 (`medium` en la computadora;
136
+ `small` no se usa). Pasa un `SuiBadgeConfig` completo, con `size: 'medium'`. Un `SuiBadgeConfig`
137
+ sin `size` también cae en `small` (`bcfg.size ?? 'small'` en el template).
124
138
  - **`badge` en `0` sí se dibuja** (un círculo rojo con «0»). Pasa `null` para no mostrarlo.
125
139
  - **`left-icon` sin `icon` no dibuja nada.**
126
140
  - El título es un `<h2>`: si la página ya tiene un `h2` al mismo nivel, revisa el orden de títulos.
127
141
  - No hay contenedor: el fondo, el ancho y la animación del panel los pones tú.
128
142
 
143
+ ## Bien y mal
144
+
145
+ **Cabecera de un modal**
146
+
147
+ ```html
148
+ <!-- ❌ mal: el modal ya trae su cabecera; el drawer-header es para un panel lateral de web -->
149
+ <sui-modal [(open)]="abierto" [fullscreen]="true">
150
+ <sui-drawer-header title="Editar producto" (dismiss)="abierto.set(false)" />
151
+ </sui-modal>
152
+ ```
153
+
154
+ ```html
155
+ <!-- ✅ bien -->
156
+ <sui-modal [(open)]="abierto" [fullscreen]="true" title="Editar producto"
157
+ description="Los cambios se ven en la carta" />
158
+ ```
159
+
160
+ **Estado al lado del título**
161
+
162
+ ```html
163
+ <!-- ❌ mal: el texto suelto sale `orange` + `light`, contra el canon del badge (ver Trampas) -->
164
+ <sui-drawer-header title="Sabores Andinos" badge="Abierto" (dismiss)="cerrar()" />
165
+ ```
166
+
167
+ ```html
168
+ <!-- ✅ bien: config completa; sin `size` el badge cae en `small` y D16 pide `medium` en la computadora -->
169
+ <sui-drawer-header title="Sabores Andinos" (dismiss)="cerrar()"
170
+ [badge]="{ label: 'Abierto', color: 'green', variant: 'lighter', size: 'medium' }" />
171
+ ```
172
+
173
+ **Línea de contexto**
174
+
175
+ ```html
176
+ <!-- ❌ mal: con el `small` del default la `description` no se ve, y no avisa -->
177
+ <sui-drawer-header title="Historial de pedidos" description="Últimos 30 días" (dismiss)="cerrar()" />
178
+ ```
179
+
180
+ ```html
181
+ <!-- ✅ bien -->
182
+ <sui-drawer-header size="large" title="Historial de pedidos" description="Últimos 30 días"
183
+ (dismiss)="cerrar()" />
184
+ ```
185
+
129
186
  ## Ejemplo
130
187
 
131
188
  ```html
@@ -32,8 +32,8 @@ form-hint.**
32
32
  ## Qué variante usar
33
33
 
34
34
  > **La guía del DS no tiene una pieza «caption»** en su dropdown: tiene etiqueta de grupo y
35
- > separador. La caption sale del Figma del DS («Dropdown Misc Items»). Todo lo de abajo es
36
- > **propuesta, falta aprobación**.
35
+ > separador. La caption sale del Figma del DS («Dropdown Misc Items»). Todas las reglas de abajo
36
+ > son **canon**: lo que estaba en propuesta lo aprobó el dueño el 05-10-2026.
37
37
  >
38
38
  > Uso medido el 03-10-2026 en `master-pedidos/src/app` (misma exclusión que `sui-dropdown-menu`):
39
39
  > **0 usos**.
@@ -42,9 +42,9 @@ No tiene variantes. Lo único que se decide es el texto:
42
42
 
43
43
  | qué | regla | fuente |
44
44
  |---|---|---|
45
- | largo | Una línea; si no entra, corta palabra y salta de línea (`word-break: break-word`). | propuesta |
45
+ | largo | Una línea; si no entra, corta palabra y salta de línea (`word-break: break-word`). | canon (aprobado por el dueño, 05-10-2026, bloque B4) |
46
46
  | copy | Sentence case, con punto solo si son dos frases. Tuteo: «Presiona Enter para agregar». | canon (CANON-SUI §5, `docs/VOZ-Y-ESCRITURA.md`) |
47
- | posición | Al final del panel, después del último item. | propuesta |
47
+ | posición | Al final del panel, después del último item. | canon (aprobado por el dueño, 05-10-2026, bloque B9) |
48
48
 
49
49
  **Candidatos de hoy:** las cabeceras de grupo a mano del switcher del sidebar
50
50
  (`components/sidebar/sidebar.html:67`, `:88`, `:104`) **no** son caption: son cabeceras de grupo y van
@@ -57,7 +57,15 @@ de 44 px del dedo.
57
57
 
58
58
  | uso | mobile | web | fuente |
59
59
  |---|---|---|---|
60
- | pie de un menú | igual (14/20) | igual (14/20) | propuesta |
60
+ | pie de un menú | igual (14/20) | igual (14/20) | canon (aprobado por el dueño, 05-10-2026, bloque B1) |
61
+
62
+ ### Por dispositivo (D16)
63
+
64
+ No aplica: no tiene input `size` y no se toca, así que mide 14/20 con 8 px de padding en todo
65
+ dispositivo (celular chico, celular, tablet táctil, computadora y ultrawide). El que crece en lo
66
+ táctil es el `sui-dropdown-item` de al lado, no la caption.
67
+
68
+ En master-pedidos: sin `[size]` ni helper.
61
69
 
62
70
  ## API
63
71
 
@@ -79,13 +87,57 @@ Slot: el contenido por defecto (`<ng-content />`) es el texto.
79
87
  la caja.
80
88
  - No lleva `role`: el lector de pantalla lo lee como texto suelto dentro del menú.
81
89
 
90
+ ## Bien y mal
91
+
92
+ **Cabecera de un grupo**
93
+
94
+ ```html
95
+ <!-- ❌ mal: la caption es gris claro y va al pie; no titula un grupo -->
96
+ <sui-dropdown-caption>Negocios</sui-dropdown-caption>
97
+ @for (t of negocios(); track t.id) { <sui-dropdown-item [label]="t.name" mode="option" size="large" /> }
98
+ ```
99
+
100
+ ```html
101
+ <!-- ✅ bien (lo mismo para los <span> a mano de sidebar.html:67, :88 y :104) -->
102
+ <sui-content-divider type="text" text="Negocios" />
103
+ @for (t of negocios(); track t.id) { <sui-dropdown-item [label]="t.name" mode="option" size="large" /> }
104
+ ```
105
+
106
+ **Un dato que ayuda a elegir**
107
+
108
+ ```html
109
+ <!-- ❌ mal: `soft-400` es el gris de los metadatos; lo que decide la elección no va aquí -->
110
+ <sui-dropdown-item label="Recojo en tienda" size="large" />
111
+ <sui-dropdown-caption>El recojo está listo en 20 min</sui-dropdown-caption>
112
+ ```
113
+
114
+ ```html
115
+ <!-- ✅ bien -->
116
+ <sui-dropdown-item label="Recojo en tienda" description="Listo en 20 min" size="large" />
117
+ ```
118
+
119
+ **Dónde va**
120
+
121
+ ```html
122
+ <!-- ❌ mal: arriba del todo, empuja los items y se lee antes que ellos -->
123
+ <sui-dropdown-caption>Presiona Enter para agregar</sui-dropdown-caption>
124
+ <sui-dropdown-search [(value)]="busqueda" placeholder="Buscar etiqueta…" />
125
+ ```
126
+
127
+ ```html
128
+ <!-- ✅ bien: al final del panel, después del último item -->
129
+ <sui-dropdown-search [(value)]="busqueda" placeholder="Buscar etiqueta…" />
130
+ @for (e of etiquetas(); track e) { <sui-dropdown-item [label]="e" size="large" /> }
131
+ <sui-dropdown-caption>Presiona Enter para agregar</sui-dropdown-caption>
132
+ ```
133
+
82
134
  ## Ejemplo
83
135
 
84
136
  ```html
85
137
  <ng-template suiDropdownPanel>
86
138
  <sui-dropdown-search [(value)]="busqueda" placeholder="Buscar etiqueta…" />
87
139
  @for (e of etiquetasFiltradas(); track e) {
88
- <sui-dropdown-item [label]="e" (clicked)="menu.close(); elegir(e)" />
140
+ <sui-dropdown-item [label]="e" size="large" (clicked)="menu.close(); elegir(e)" />
89
141
  }
90
142
  <sui-dropdown-caption>Presiona Enter para crear «{{ busqueda() }}»</sui-dropdown-caption>
91
143
  </ng-template>
@@ -46,15 +46,15 @@ dropdown, select y command menu en el README de `sui-dropdown-menu`.
46
46
 
47
47
  | mode | cuándo | ejemplo real de la app | fuente |
48
48
  |---|---|---|---|
49
- | `menuitem` (default) | La fila **hace algo**: editar, archivar, ir a otra pantalla. `selected` no pinta nada. | `option-sections-manager.html:40` («Editar») | propuesta |
49
+ | `menuitem` (default) | La fila **hace algo**: editar, archivar, ir a otra pantalla. `selected` no pinta nada. | `option-sections-manager.html:40` («Editar») | canon (aprobado por el dueño, 05-10-2026, bloque B2) |
50
50
  | `option` | La fila **es un valor** y el elegido queda marcado (fondo `primary-alpha-10` + check a la derecha). El contenedor lleva `role="listbox"`. | `sidebar.html:69` (el negocio actual) | propuesta (ya es práctica) |
51
51
 
52
52
  ### `size`
53
53
 
54
54
  | size | alto | cuándo | fuente |
55
55
  |---|---|---|---|
56
- | `small` (default) | 36 | Menú de acciones en web, una línea (label + `sublabel` en la misma línea). | según la guía del DS (Figma: Small 36) |
57
- | `large` | 56 | Toda fila en mobile; en web, cuando hay segunda línea (`description`) o el ícono va enmarcado. | según la guía del DS (Figma: Large 56); el cuándo es propuesta |
56
+ | `small` (default) | 36 | Fila de una línea (label + `sublabel` en la misma línea). En lo táctil no va (36 < 44); en la computadora está **pendiente** (D16, nota ⁵). | según la guía del DS (Figma: Small 36) · táctil y computadora: D16, dueño 05-10-2026 |
57
+ | `large` | 56 | Toda fila en mobile; en web, cuando hay segunda línea (`description`) o el ícono va enmarcado. | según la guía del DS (Figma: Large 56) · toda fila en mobile: canon (decisión del dueño 04-10-2026, piso táctil 44); es el primer size ≥ 44, no hay 44 · el cuándo en web: propuesta |
58
58
  | `xlarge` | 76 | Extensión SUI. Sin uso hoy. | — |
59
59
 
60
60
  ### Las piezas
@@ -68,7 +68,7 @@ dropdown, select y command menu en el README de `sui-dropdown-menu`.
68
68
  | `shortcut` | Solo web (en mobile no hay teclado físico, ver README de `sui-kbd`). | canon (README de `sui-kbd`) |
69
69
  | `slot="trailing"` | Badge primero, después el atajo (lo pone el componente), al final un switch o botón. | según la guía del DS (orden del Figma) |
70
70
  | `disabled` | Existe pero hoy no se puede: queda gris claro y no recibe toques. | según la guía del DS |
71
- | `highlighted` | Lo usa el select para la navegación con flechas. A mano no hace falta. | propuesta |
71
+ | `highlighted` | Lo usa el select para la navegación con flechas. A mano no hace falta. | según el código |
72
72
 
73
73
  **Usos de hoy que romperían la propuesta:**
74
74
 
@@ -90,18 +90,41 @@ celular: queda debajo de los 44 del dedo.
90
90
 
91
91
  | uso | mobile | web | fuente |
92
92
  |---|---|---|---|
93
- | menú de acciones (⋮) | `large` (56) | `small` (36) | propuesta, falta aprobación |
94
- | switcher con segunda línea (negocio + dirección) | `large` (56) | `large` (56) | propuesta (ya es práctica en el sidebar) |
93
+ | menú de acciones (⋮) | `large` (56), también en la tablet táctil | **pendiente** (ver D16 abajo); hoy la app va en `large` en los 10 usos | mobile: canon (decisión del dueño 04-10-2026, piso táctil 44); `large` es el primer size ≥ 44, no hay 44 · tablet y web: D16, dueño 05-10-2026 (antes decía `small` como propuesta) |
94
+ | switcher con segunda línea (negocio + dirección) | `large` (56), también en la tablet táctil | `large` (56) mientras lleve `description`: en `small` no se ve | mobile: canon (decisión del dueño 04-10-2026, piso táctil 44) · tablet: D16, dueño 05-10-2026 · web: según el código (`description` solo en `large`) |
95
95
  | opciones de un select | las pone el select (44) | las pone el select (36–48) | canon (README de `sui-select`, aprobado 03-10-2026) |
96
96
 
97
97
  ```html
98
- <sui-dropdown-item label="Editar" [size]="bp.isMobile() ? 'large' : 'small'" … /> <!-- bp = BreakpointsService -->
98
+ <!-- `large` fijo mientras la computadora siga pendiente (D16, nota ⁵): es lo que ya hace la app en los 10 usos -->
99
+ <sui-dropdown-item label="Editar" size="large" … />
99
100
  ```
100
101
 
101
102
  En large y xlarge el texto sube a 16 px (regla del 03-10-2026). El label va en Label/Medium 16/24
102
103
  (el nodo de Figma del large lo dibuja en 14); la description no cambia en large (12) y el alto
103
104
  sigue en 56: el padding-y bajó de 8 a 6.
104
105
 
106
+ ### Por dispositivo (D16)
107
+
108
+ Está en la tabla por componente de D16 (dueño, 05-10-2026). Se toca, así que la tablet va con el
109
+ celular. En la computadora D16 lo deja **pendiente** (nota ⁵): no hay `medium`, y `small` (36) y
110
+ `large` (56) no son la misma fila más chica o más grande, porque la `description` solo se ve en
111
+ `large`; elegir uno cambia qué se lee.
112
+
113
+ | dispositivo | size | nota |
114
+ |---|---|---|
115
+ | celular chico (< 380) | `large` (56) | D16 deja la celda vacía; `large` es el único size ≥ 44 y es lo que ya da `bp.tactil()` |
116
+ | celular (380–767) | `large` (56) | el primer size ≥ 44 |
117
+ | tablet táctil (`pointer: coarse`) | `large` (56) | Apple pide 44 pt también en el iPad |
118
+ | computadora (`pointer: fine`) | **pendiente** | falta decidir (D16, nota ⁵) entre `small` (36, sin `description`) y `large` (56); hoy la app va en `large` en los 10 usos, y con `description` o `leadingFramed` solo sirve `large` |
119
+
120
+ Ultrawide: igual que la computadora.
121
+
122
+ En master-pedidos: no hay helper. Mientras la computadora siga pendiente, `size="large"` fijo en todo
123
+ dispositivo (lo que ya hace la app en los 10 usos); no es la decisión de la celda pendiente, es no bajar
124
+ de 44 en lo táctil sin elegir por la computadora. Cuando se decida, si la computadora queda en otro
125
+ size: `[size]="bp.tactil() ? 'large' : '<ese size>'"`. Con `description` o `leadingFramed`:
126
+ `size="large"` siempre.
127
+
105
128
  ## API
106
129
 
107
130
  <!-- api:inicio -->
@@ -146,11 +169,54 @@ está `disabled`.
146
169
  - El label corta con `…` en una línea: no hace salto de línea.
147
170
  - Ya trae los listeners `touchstart`/`touchend` para el `:active` pegado de iOS.
148
171
 
172
+ ## Bien y mal
173
+
174
+ **Segunda línea en `large`**
175
+
176
+ ```html
177
+ <!-- ❌ mal: en `large` el sublabel cae abajo en gris claro (sidebar.html:71; igual en customer-layout.html:27, driver-layout.html:25 y master-layout.html:27) -->
178
+ <sui-dropdown-item [label]="t.name" [sublabel]="t.address ?? ''" mode="option" size="large" />
179
+ ```
180
+
181
+ ```html
182
+ <!-- ✅ bien -->
183
+ <sui-dropdown-item [label]="t.name" [description]="t.address ?? null" mode="option" size="large" />
184
+ ```
185
+
186
+ **Ícono enmarcado**
187
+
188
+ ```html
189
+ <!-- ❌ mal: el círculo está medido para 20; con 18 queda de 38 (option-sections-manager.html:41, :44, :47) -->
190
+ <sui-dropdown-item label="Editar" size="large" [leadingFramed]="true" (clicked)="menu.close(); openEdit(s)">
191
+ <sui-icon slot="leading" name="pencil-line" [size]="18" />
192
+ </sui-dropdown-item>
193
+ ```
194
+
195
+ ```html
196
+ <!-- ✅ bien -->
197
+ <sui-dropdown-item label="Editar" size="large" [leadingFramed]="true" (clicked)="menu.close(); openEdit(s)">
198
+ <sui-icon slot="leading" name="pencil-line" [size]="20" />
199
+ </sui-dropdown-item>
200
+ ```
201
+
202
+ **Cerrar el menú**
203
+
204
+ ```html
205
+ <!-- ❌ mal: el item no cierra el menú; el panel queda abierto después de archivar -->
206
+ <sui-dropdown-item label="Archivar" size="large" (clicked)="archivar()" />
207
+ ```
208
+
209
+ ```html
210
+ <!-- ✅ bien -->
211
+ <sui-dropdown-item label="Archivar" size="large"
212
+ (clicked)="menu.close(); archivar()" />
213
+ ```
214
+
149
215
  ## Ejemplo
150
216
 
151
217
  ```html
152
- <!-- Acción en un menú -->
153
- <sui-dropdown-item label="Archivar" [size]="bp.isMobile() ? 'large' : 'small'"
218
+ <!-- Acción en un menú (`large` fijo mientras la computadora siga pendiente) -->
219
+ <sui-dropdown-item label="Archivar" size="large"
154
220
  (clicked)="menu.close(); archivar()">
155
221
  <sui-icon slot="leading" name="archive-line" [size]="20" />
156
222
  </sui-dropdown-item>