@ajuarezso/sui-design-system 0.24.1 → 0.25.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/docs/sui-accordion/README.md +4 -4
- package/docs/sui-activity-feed/README.md +11 -11
- package/docs/sui-activity-filter/README.md +5 -5
- package/docs/sui-app-store-badge/README.md +7 -7
- package/docs/sui-avatar/README.md +26 -23
- package/docs/sui-avatar-group/README.md +11 -7
- package/docs/sui-badge/README.md +7 -7
- package/docs/sui-banner/README.md +15 -15
- package/docs/sui-brand-logo/README.md +24 -23
- package/docs/sui-breadcrumb-item/README.md +3 -3
- package/docs/sui-breadcrumbs/README.md +6 -6
- package/docs/sui-button/README.md +9 -7
- package/docs/sui-button-group/README.md +25 -22
- package/docs/sui-button-group-item/README.md +16 -13
- package/docs/sui-card/README.md +8 -8
- package/docs/sui-chart-legend/README.md +10 -10
- package/docs/sui-chart-legend-dot/README.md +10 -10
- package/docs/sui-checkbox/README.md +4 -4
- package/docs/sui-checkbox-card/README.md +12 -12
- package/docs/sui-checkbox-label/README.md +3 -3
- package/docs/sui-circular-progress-bar/README.md +19 -16
- package/docs/sui-color-dot/README.md +13 -9
- package/docs/sui-color-picker/README.md +9 -9
- package/docs/sui-command-menu-footer/README.md +1 -1
- package/docs/sui-command-menu-item/README.md +13 -12
- package/docs/sui-command-menu-search/README.md +3 -2
- package/docs/sui-compact-avatar-group/README.md +14 -11
- package/docs/sui-compact-button/README.md +16 -11
- package/docs/sui-compact-select/README.md +5 -5
- package/docs/sui-compact-select-for-input/README.md +1 -1
- package/docs/sui-content-card/README.md +12 -12
- package/docs/sui-content-divider/README.md +18 -15
- package/docs/sui-content-label/README.md +17 -17
- package/docs/sui-counter-input/README.md +12 -12
- package/docs/sui-date-selector/README.md +8 -8
- package/docs/sui-datepicker/README.md +14 -14
- package/docs/sui-day-cell/README.md +15 -14
- package/docs/sui-day-label/README.md +4 -4
- package/docs/sui-divider/README.md +9 -6
- package/docs/sui-drawer-header/README.md +9 -9
- package/docs/sui-dropdown-caption/README.md +5 -5
- package/docs/sui-dropdown-item/README.md +5 -5
- package/docs/sui-dropdown-menu/README.md +10 -10
- package/docs/sui-dropdown-search/README.md +3 -3
- package/docs/sui-emoji/README.md +13 -13
- package/docs/sui-empty-state/README.md +4 -4
- package/docs/sui-fancy-button/README.md +15 -13
- package/docs/sui-file-icon/README.md +14 -11
- package/docs/sui-file-upload/README.md +10 -10
- package/docs/sui-file-upload-card/README.md +11 -10
- package/docs/sui-filter/README.md +12 -12
- package/docs/sui-flag/README.md +11 -7
- package/docs/sui-form-hint/README.md +2 -2
- package/docs/sui-form-label/README.md +4 -4
- package/docs/sui-icon/README.md +19 -16
- package/docs/sui-image-upload/README.md +20 -19
- package/docs/sui-image-upload-profile/README.md +12 -11
- package/docs/sui-img-retry/README.md +1 -1
- package/docs/sui-inline-input/README.md +6 -6
- package/docs/sui-inline-select/README.md +2 -2
- package/docs/sui-input/README.md +14 -14
- package/docs/sui-integration-switch/README.md +15 -15
- package/docs/sui-kbd/README.md +3 -3
- package/docs/sui-key-icon/README.md +22 -19
- package/docs/sui-link-button/README.md +21 -18
- package/docs/sui-logo/README.md +20 -19
- package/docs/sui-modal/README.md +11 -11
- package/docs/sui-modal-footer/README.md +3 -3
- package/docs/sui-modal-header/README.md +1 -1
- package/docs/sui-modal-sheet/README.md +4 -4
- package/docs/sui-notification/README.md +11 -11
- package/docs/sui-notification-footer/README.md +4 -4
- package/docs/sui-notification-tab-menu/README.md +4 -4
- package/docs/sui-otp-input/README.md +5 -5
- package/docs/sui-page-header/README.md +14 -12
- package/docs/sui-pagination/README.md +13 -13
- package/docs/sui-payment-icon/README.md +16 -13
- package/docs/sui-period-range/README.md +5 -5
- package/docs/sui-popover/README.md +10 -10
- package/docs/sui-product-card/README.md +15 -15
- package/docs/sui-progress-bar/README.md +12 -9
- package/docs/sui-progress-bar-label/README.md +14 -10
- package/docs/sui-radio/README.md +2 -2
- package/docs/sui-radio-card/README.md +12 -12
- package/docs/sui-radio-label/README.md +3 -3
- package/docs/sui-rating/README.md +22 -19
- package/docs/sui-rich-editor/README.md +2 -2
- package/docs/sui-segmented-control/README.md +9 -9
- package/docs/sui-select/README.md +9 -9
- package/docs/sui-sidebar/README.md +7 -7
- package/docs/sui-slider/README.md +7 -7
- package/docs/sui-social-button/README.md +8 -8
- package/docs/sui-status-badge/README.md +13 -10
- package/docs/sui-stepper/README.md +18 -18
- package/docs/sui-store-card/README.md +16 -16
- package/docs/sui-switch/README.md +2 -2
- package/docs/sui-switch-card/README.md +10 -10
- package/docs/sui-switch-label/README.md +1 -1
- package/docs/sui-tab-chips/README.md +17 -15
- package/docs/sui-tab-menu-horizontal/README.md +6 -6
- package/docs/sui-tab-menu-vertical/README.md +8 -8
- package/docs/sui-table/README.md +13 -13
- package/docs/sui-tag/README.md +14 -11
- package/docs/sui-tag-input/README.md +6 -6
- package/docs/sui-textarea/README.md +8 -8
- package/docs/sui-time-picker/README.md +25 -25
- package/docs/sui-toast/README.md +16 -15
- package/docs/sui-tooltip/README.md +19 -18
- package/docs/sui-topbar/README.md +7 -7
- package/docs/sui-topbar-button/README.md +4 -4
- package/docs/sui-topbar-item/README.md +7 -7
- package/docs/sui-topbar-user/README.md +5 -5
- package/fesm2022/ajuarezso-sui-design-system.mjs +15 -10
- package/fesm2022/ajuarezso-sui-design-system.mjs.map +1 -1
- package/package.json +1 -1
- package/types/ajuarezso-sui-design-system.d.ts +26 -22
|
@@ -22,8 +22,9 @@ de la semana con los días de turno del repartidor, o un mes con los días que e
|
|
|
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).
|
|
26
|
-
>
|
|
25
|
+
> **La guía del DS no tiene página para este componente** (vive dentro del datepicker). Las
|
|
26
|
+
> filas que describen lo que el componente ya hace van «según el código»; las reglas marcadas canon
|
|
27
|
+
> están aprobadas.
|
|
27
28
|
>
|
|
28
29
|
> Uso medido el 03-10-2026 en `master-pedidos/src/app`: **0 usos directos**. Lo usa por dentro
|
|
29
30
|
> `sui-datepicker`.
|
|
@@ -32,23 +33,23 @@ de la semana con los días de turno del repartidor, o un mes con los días que e
|
|
|
32
33
|
|
|
33
34
|
| valor | cuándo | fuente |
|
|
34
35
|
|---|---|---|
|
|
35
|
-
| `type="basic"` (default) | Calendario de una fecha. |
|
|
36
|
-
| `type="range"` | Calendario de rango. Va con `rangePosition`. |
|
|
37
|
-
| `rangePosition="start"` | Primer día del rango (fondo naranja, esquina izquierda). |
|
|
38
|
-
| `rangePosition="end"` | Último día (fondo naranja, esquina derecha). |
|
|
39
|
-
| `rangePosition="in"` | Días del medio (texto naranja, sin fondo propio: la banda la pinta la fila). |
|
|
40
|
-
| `rangePosition=null` | Fuera del rango. |
|
|
36
|
+
| `type="basic"` (default) | Calendario de una fecha. | según el código |
|
|
37
|
+
| `type="range"` | Calendario de rango. Va con `rangePosition`. | según el código |
|
|
38
|
+
| `rangePosition="start"` | Primer día del rango (fondo naranja, esquina izquierda). | según el código |
|
|
39
|
+
| `rangePosition="end"` | Último día (fondo naranja, esquina derecha). | según el código |
|
|
40
|
+
| `rangePosition="in"` | Días del medio (texto naranja, sin fondo propio: la banda la pinta la fila). | según el código |
|
|
41
|
+
| `rangePosition=null` | Fuera del rango. | según el código |
|
|
41
42
|
|
|
42
43
|
### Estados
|
|
43
44
|
|
|
44
45
|
| input | cuándo | fuente |
|
|
45
46
|
|---|---|---|
|
|
46
|
-
| `selected` | El día elegido (fondo naranja). Uno solo en `basic`. |
|
|
47
|
-
| `today` | Hoy: un punto debajo del número. Siempre, para que la persona se ubique. |
|
|
48
|
-
| `marked` | El día tiene algo (pedidos, un turno). Si además es hoy, gana el punto de hoy. |
|
|
49
|
-
| `disabled` | Fuera de `min`/`max` o no se puede elegir (local cerrado ese día). |
|
|
50
|
-
| `outOfMonth` | Días del mes anterior o siguiente que completan la grilla: se ven apagados. |
|
|
51
|
-
| `ariaLabel` | Siempre que el número solo no alcance: «Martes 7 de octubre, con pedidos». El default dice «Día 7». |
|
|
47
|
+
| `selected` | El día elegido (fondo naranja). Uno solo en `basic`. | según el código |
|
|
48
|
+
| `today` | Hoy: un punto debajo del número. Siempre, para que la persona se ubique. | según el código |
|
|
49
|
+
| `marked` | El día tiene algo (pedidos, un turno). Si además es hoy, gana el punto de hoy. | según el código |
|
|
50
|
+
| `disabled` | Fuera de `min`/`max` o no se puede elegir (local cerrado ese día). | según el código |
|
|
51
|
+
| `outOfMonth` | Días del mes anterior o siguiente que completan la grilla: se ven apagados. | según el código |
|
|
52
|
+
| `ariaLabel` | Siempre que el número solo no alcance: «Martes 7 de octubre, con pedidos». El default dice «Día 7». | canon (aprobado por el dueño, 05-10-2026, bloque B5) |
|
|
52
53
|
|
|
53
54
|
Usos de hoy que rompen la regla: **0**.
|
|
54
55
|
|
|
@@ -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).
|
|
26
|
-
>
|
|
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,8 +31,8 @@ Story: [Molecules/Date & Time/Day Label](https://sui-design-system.web.app/?path
|
|
|
31
31
|
| input | valor | cuándo | fuente |
|
|
32
32
|
|---|---|---|---|
|
|
33
33
|
| `label` | dos letras en mayúsculas | Lo normal, igual que el datepicker: `LU MA MI JU VI SÁ DO`. La semana arranca el lunes. | propuesta |
|
|
34
|
-
| `label` | una letra | No usar: «M» es martes y miércoles a la vez. |
|
|
35
|
-
| `label` | tres letras o más | No usar: «MIÉ» entra justo en 40 px, pero rompe el formato de dos letras del datepicker; «LUNES» ya no entra. |
|
|
34
|
+
| `label` | una letra | No usar: «M» es martes y miércoles a la vez. | 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
|
|
|
@@ -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
|
|
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,7 +43,7 @@ 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) |
|
|
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
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.
|
|
49
49
|
|
|
@@ -56,10 +56,13 @@ Nada: las dos orientaciones tienen caso. La vertical no tiene usos hoy, pero el
|
|
|
56
56
|
|
|
57
57
|
## Tamaño en mobile y en web
|
|
58
58
|
|
|
59
|
-
Criterio de la app: **
|
|
60
|
-
(
|
|
61
|
-
|
|
62
|
-
|
|
59
|
+
Criterio de la app: **D16, tamaño por dispositivo** (canon, dueño, 05-10-2026), que reemplaza al
|
|
60
|
+
«tamaño por plataforma» del 03-10-2026 (mobile grande, web chico). La columna «mobile» es el celular de
|
|
61
|
+
380 px o más y, en lo que se toca, también la tablet (`pointer: coarse`). La columna «web» es la
|
|
62
|
+
computadora (`pointer: fine`) y, en lo que no se toca, también la tablet. En el celular chico
|
|
63
|
+
(< 380 px) va `medium` a la vista, sin achicar el área de 44 de lo que se toca. **Nada en `small` ni
|
|
64
|
+
`xsmall`**, salvo lo que el componente solo tiene en chico. Hoy la app corta con
|
|
65
|
+
`BreakpointsService.isMobile()` (≤ 767 px), que todavía no mira el puntero ni los 380 px.
|
|
63
66
|
|
|
64
67
|
**No aplica**: es 1 px en las dos plataformas. Lo que cambia por plataforma es el `gap` del padre,
|
|
65
68
|
que separa los bloques (la regla de spacing de la app: 20/16/12 según el breakpoint).
|
|
@@ -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. |
|
|
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. |
|
|
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`. |
|
|
48
|
-
| `large` | 88 px, título arriba y `description` debajo | Panel que necesita una línea de contexto («Últimos 30 días»). |
|
|
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. |
|
|
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). |
|
|
57
|
-
| `showDivider` | `true` | Cuando el cuerpo scrollea por debajo de la cabecera. |
|
|
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
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`. |
|
|
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` |
|
|
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()) {
|
|
@@ -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»).
|
|
36
|
-
> **propuesta
|
|
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`). |
|
|
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. |
|
|
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,7 @@ 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) |
|
|
60
|
+
| pie de un menú | igual (14/20) | igual (14/20) | canon (aprobado por el dueño, 05-10-2026, bloque B1) |
|
|
61
61
|
|
|
62
62
|
## API
|
|
63
63
|
|
|
@@ -46,7 +46,7 @@ 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») |
|
|
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`
|
|
@@ -54,7 +54,7 @@ dropdown, select y command menu en el README de `sui-dropdown-menu`.
|
|
|
54
54
|
| size | alto | cuándo | fuente |
|
|
55
55
|
|---|---|---|---|
|
|
56
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
|
|
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. |
|
|
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,8 +90,8 @@ 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) | `small` (36) | mobile: canon (decisión del dueño 04-10-2026, piso táctil 44); `large` es el primer size ≥ 44, no hay 44 · web: propuesta, falta aprobación |
|
|
94
|
+
| switcher con segunda línea (negocio + dirección) | `large` (56) | `large` (56) | mobile: canon (decisión del dueño 04-10-2026, piso táctil 44) · web: propuesta (ya es práctica en el sidebar) |
|
|
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
|
|
@@ -55,8 +55,8 @@ trigger no se dibuja.
|
|
|
55
55
|
|
|
56
56
|
> **La guía del DS lo define como el menú de acciones que abre un botón** y lo arma por partes:
|
|
57
57
|
> item con ícono, grupo con su etiqueta, separador, items con casilla o radio y submenús. No trae
|
|
58
|
-
> variantes ni do/don't; el panel arranca en 300 px de ancho y 8 px separado del trigger.
|
|
59
|
-
>
|
|
58
|
+
> variantes ni do/don't; el panel arranca en 300 px de ancho y 8 px separado del trigger. Las
|
|
59
|
+
> reglas marcadas canon están aprobadas; lo que sigue en propuesta espera decisión.
|
|
60
60
|
>
|
|
61
61
|
> Uso medido el 03-10-2026 en `master-pedidos/src/app` (sin `master-preview`, `master-prototipos`,
|
|
62
62
|
> `mockup-sheets-*`, `dx/*`, `master-rutina`, `master-medico`, `master-ejercicios`, `dev-index` ni las
|
|
@@ -77,15 +77,15 @@ trigger no se dibuja.
|
|
|
77
77
|
|
|
78
78
|
| prop | cuándo | fuente |
|
|
79
79
|
|---|---|---|
|
|
80
|
-
| sin props (default) | El caso normal: un ⋮ o un botón con 2 a 5 acciones. El panel se ajusta al contenido. |
|
|
81
|
-
| `matchWidth` | El panel debe medir lo mismo que el trigger (un botón ancho que abre opciones). |
|
|
80
|
+
| sin props (default) | El caso normal: un ⋮ o un botón con 2 a 5 acciones. El panel se ajusta al contenido. | canon (aprobado por el dueño, 05-10-2026, bloque B9) |
|
|
81
|
+
| `matchWidth` | El panel debe medir lo mismo que el trigger (un botón ancho que abre opciones). | canon (aprobado por el dueño, 05-10-2026, bloque B9) |
|
|
82
82
|
| `minWidth` | El trigger es un ícono chico y el panel quedaría angosto: 200 a 240 px. | propuesta |
|
|
83
|
-
| `position="above"` | El trigger vive pegado al borde de abajo (una barra inferior). Con `auto` ya cae arriba si no entra. |
|
|
83
|
+
| `position="above"` | El trigger vive pegado al borde de abajo (una barra inferior). Con `auto` ya cae arriba si no entra. | canon (aprobado por el dueño, 05-10-2026, bloque B9) |
|
|
84
84
|
| `popupRole="listbox"` | **Solo** si los items son `mode="option"`. El rol tiene que coincidir con el de los items. | según ARIA (documentado en el `.ts`) |
|
|
85
|
-
| `popupRole="true"` | El panel no es un menú: un campo, un formulario chico (`option-image.ts:52`). |
|
|
86
|
-
| `origin` | El trigger lo maneja el padre (los selects del DS). En la app no hace falta. |
|
|
85
|
+
| `popupRole="true"` | El panel no es un menú: un campo, un formulario chico (`option-image.ts:52`). | canon (aprobado por el dueño, 05-10-2026, bloque B9) |
|
|
86
|
+
| `origin` | El trigger lo maneja el padre (los selects del DS). En la app no hace falta. | según el código |
|
|
87
87
|
| `push` | No usar: un panel empujado queda fijo y **se despega del trigger al scrollear**. | canon (comentario del `.ts`, bug real del color picker 21-07-2026) |
|
|
88
|
-
| `flexibleDimensions=false` | Solo paneles de tamaño fijo que no pueden encogerse (el color picker). |
|
|
88
|
+
| `flexibleDimensions=false` | Solo paneles de tamaño fijo que no pueden encogerse (el color picker). | canon (aprobado por el dueño, 05-10-2026, bloque B9) |
|
|
89
89
|
|
|
90
90
|
**Usos de hoy que rompen la propuesta:**
|
|
91
91
|
|
|
@@ -103,8 +103,8 @@ El menú **no tiene `size`**: el alto lo ponen los items. El panel mide lo que s
|
|
|
103
103
|
|
|
104
104
|
| uso | mobile | web | fuente |
|
|
105
105
|
|---|---|---|---|
|
|
106
|
-
| items de un menú de acciones | `sui-dropdown-item size="large"` (56) | `size="small"` (36) | propuesta; hoy los 3 items del ⋮ van en `large` en las dos |
|
|
107
|
-
| trigger ⋮ | `sui-compact-button`
|
|
106
|
+
| items de un menú de acciones | `sui-dropdown-item size="large"` (56) | `size="small"` (36) | mobile: canon (decisión del dueño 04-10-2026, piso táctil 44); `large` es el primer size ≥ 44, no hay 44 · web: propuesta; hoy los 3 items del ⋮ van en `large` en las dos |
|
|
107
|
+
| trigger ⋮ | `sui-compact-button` `5xlarge` (44) | `sui-compact-button` `large` | canon (aprobado por el dueño, 05-10-2026, bloque B13) (ver README de `sui-compact-button`) |
|
|
108
108
|
| más de 5 acciones, o alguna destructiva que pide confirmar | `sui-modal-sheet` | `sui-dropdown-menu` | propuesta, falta aprobación |
|
|
109
109
|
|
|
110
110
|
```html
|
|
@@ -36,8 +36,8 @@ aprobación.
|
|
|
36
36
|
## Qué variante usar
|
|
37
37
|
|
|
38
38
|
> **La guía del DS no tiene buscador en su dropdown**; el buscador de lista vive en su command
|
|
39
|
-
> menu. Este sale del Figma del DS («Dropdown Misc Items», estados Default / Hover / Active).
|
|
40
|
-
>
|
|
39
|
+
> menu. Este sale del Figma del DS («Dropdown Misc Items», estados Default / Hover / Active). Las
|
|
40
|
+
> reglas marcadas canon están aprobadas; lo que sigue en propuesta espera decisión.
|
|
41
41
|
>
|
|
42
42
|
> Uso medido el 03-10-2026 en `master-pedidos/src/app` (misma exclusión que `sui-dropdown-menu`):
|
|
43
43
|
> **0 usos**.
|
|
@@ -61,7 +61,7 @@ No tiene tamaños: 36 px de alto (8 + 20 + 8), texto 14/20, en los dos.
|
|
|
61
61
|
|
|
62
62
|
En mobile tiene dos problemas que el componente no resuelve (ver «Trampas»): el texto de 14 px hace
|
|
63
63
|
que iOS haga zoom al enfocarlo, y el teclado no muestra la lupa. Para buscar en una lista larga en
|
|
64
|
-
mobile, mejor un `sui-modal-sheet` con `sui-input type="search"` arriba.
|
|
64
|
+
mobile, mejor un `sui-modal-sheet` con `sui-input type="search"` arriba. Canon (aprobado por el dueño, 05-10-2026, bloque B7).
|
|
65
65
|
|
|
66
66
|
## API
|
|
67
67
|
|
package/docs/sui-emoji/README.md
CHANGED
|
@@ -22,8 +22,8 @@ confirmado», los pasos de una landing, la barra de calificación.
|
|
|
22
22
|
|
|
23
23
|
## Qué variante usar
|
|
24
24
|
|
|
25
|
-
> **La guía del DS no tiene este componente**: es propio de SUI.
|
|
26
|
-
>
|
|
25
|
+
> **La guía del DS no tiene este componente**: es propio de SUI. Las reglas marcadas canon están
|
|
26
|
+
> aprobadas; lo que sigue en propuesta espera decisión.
|
|
27
27
|
>
|
|
28
28
|
> Uso medido el 03-10-2026 en `master-pedidos/src/app`: 10 emojis en 3 archivos, sin contar
|
|
29
29
|
> prototipos ni vitrinas. El catálogo tiene 59.
|
|
@@ -33,29 +33,29 @@ confirmado», los pasos de una landing, la barra de calificación.
|
|
|
33
33
|
| caso | cómo | fuente |
|
|
34
34
|
|---|---|---|
|
|
35
35
|
| Estados vacíos y celebraciones | Emoji animado, uno solo, en `xl`. Nada de íconos genéricos en un estado vacío. | canon (CANON-SUI §5.6) para los estados vacíos · propuesta, falta aprobación para celebraciones y el `xl` |
|
|
36
|
-
| Pasos de una landing | `lg`, uno por paso. |
|
|
37
|
-
| Junto a un título o dentro de un texto | `md` o `sm`, como acento. |
|
|
38
|
-
| Como ícono de un botón | No: el botón lleva `leftIcon`. |
|
|
36
|
+
| Pasos de una landing | `lg`, uno por paso. | canon (aprobado por el dueño, 05-10-2026, bloque B1) |
|
|
37
|
+
| Junto a un título o dentro de un texto | `md` o `sm`, como acento. | canon (aprobado por el dueño, 05-10-2026, bloque B1) |
|
|
38
|
+
| Como ícono de un botón | No: el botón lleva `leftIcon`. | canon (CANON-SUI §5.7: emojis solo en contenido escrito por un usuario; en un botón, `leftIcon` con `sui-icon`) |
|
|
39
39
|
|
|
40
40
|
### `size`
|
|
41
41
|
|
|
42
42
|
| valor | px | cuándo | fuente |
|
|
43
43
|
|---|---|---|---|
|
|
44
44
|
| `xl` | 48 | Estado vacío, celebración. | propuesta |
|
|
45
|
-
| `lg` | 32 | Pasos de una landing, la barra de calificación. |
|
|
46
|
-
| `md` (default) | 24 | Acompaña un título. |
|
|
47
|
-
| `sm` | 20 | Dentro de una línea de texto. |
|
|
48
|
-
| `xs` | 16 | No usar hoy. |
|
|
49
|
-
| `full` | 100 % | Llena su caja: lo usa `sui-empty-state`. |
|
|
45
|
+
| `lg` | 32 | Pasos de una landing, la barra de calificación. | canon (aprobado por el dueño, 05-10-2026, bloque B1) |
|
|
46
|
+
| `md` (default) | 24 | Acompaña un título. | canon (aprobado por el dueño, 05-10-2026, bloque B1) |
|
|
47
|
+
| `sm` | 20 | Dentro de una línea de texto. | canon (aprobado por el dueño, 05-10-2026, bloque B1) |
|
|
48
|
+
| `xs` | 16 | No usar hoy. | canon (aprobado por el dueño, 05-10-2026, bloque B6) |
|
|
49
|
+
| `full` | 100 % | Llena su caja: lo usa `sui-empty-state`. | según el código |
|
|
50
50
|
|
|
51
51
|
### `animated`, `src`, `name`, `ariaLabel`
|
|
52
52
|
|
|
53
53
|
| input | cuándo | fuente |
|
|
54
54
|
|---|---|---|
|
|
55
55
|
| `animated` (default `true`) | Uno solo → animado. **Varios a la vez → `false`.** Ojo: solo las 5 caritas de la calificación (`pensive-face` … `grinning-face-smiling-eyes`) tienen copia estática; para el resto, `false` no cambia nada. | propuesta (la regla ya está escrita en `sui-emoji.ts`) |
|
|
56
|
-
| `name` | Uno del catálogo. Si no está, se agrega al catálogo del DS. |
|
|
57
|
-
| `src` | Un emoji que no está en el catálogo, mientras se agrega. **Nunca** un `<img>` suelto con la URL del emoji. |
|
|
58
|
-
| `ariaLabel` | Solo si el emoji dice algo que el texto no dice. Si no, queda decorativo (`aria-hidden`). |
|
|
56
|
+
| `name` | Uno del catálogo. Si no está, se agrega al catálogo del DS. | canon (aprobado por el dueño, 05-10-2026, bloque B9) |
|
|
57
|
+
| `src` | Un emoji que no está en el catálogo, mientras se agrega. **Nunca** un `<img>` suelto con la URL del emoji. | canon (aprobado por el dueño, 05-10-2026, bloque B9) |
|
|
58
|
+
| `ariaLabel` | Solo si el emoji dice algo que el texto no dice. Si no, queda decorativo (`aria-hidden`). | canon (aprobado por el dueño, 05-10-2026, bloque B5) |
|
|
59
59
|
|
|
60
60
|
**Usos de hoy que romperían la propuesta:**
|
|
61
61
|
|
|
@@ -44,9 +44,9 @@ algo que avisar → alert.**
|
|
|
44
44
|
| `title` (obligatorio) | Qué pasa, sin punto y en 2 a 4 palabras, con uno de tres patrones: «Todavía no hay <cosa>», «Sin <cosa>», «Tu <cosa> está vacío» («Tu carrito está vacío», «Sin pedidos aún»). En una búsqueda, repetir lo buscado («Nada con “pollo broaster”») queda fuera de esos patrones. | canon (CANON-SUI §5.6) · lo de la búsqueda: propuesta, falta aprobación |
|
|
45
45
|
| `subtitle` | Una oración con punto, en futuro tranquilizador: «Cuando hagas tu primer pedido, aparecerá aquí.» | canon (CANON-SUI §5.6) |
|
|
46
46
|
| `action` como string + `(actionClicked)` | La salida es algo de esta misma pantalla: «Reintentar», «Ver todo el catálogo», «Activar captura». | propuesta |
|
|
47
|
-
| `action` como `{ label, route }` | La salida es otra pantalla: «Ver negocios» → `/cliente/inicio`. |
|
|
48
|
-
| sin `action` | No hay un paso obvio, o la pantalla ya tiene el botón para llenarla (el «Nuevo local» de arriba). |
|
|
49
|
-
| error de carga | Siempre con `action="Reintentar"`. Excepción: la pantalla reintenta sola y lo dice («Seguimos intentando»). |
|
|
47
|
+
| `action` como `{ label, route }` | La salida es otra pantalla: «Ver negocios» → `/cliente/inicio`. | canon (aprobado por el dueño, 05-10-2026, bloque B10) |
|
|
48
|
+
| sin `action` | No hay un paso obvio, o la pantalla ya tiene el botón para llenarla (el «Nuevo local» de arriba). | canon (aprobado por el dueño, 05-10-2026, bloque B9) |
|
|
49
|
+
| error de carga | Siempre con `action="Reintentar"`. Excepción: la pantalla reintenta sola y lo dice («Seguimos intentando»). | canon (aprobado por el dueño, 05-10-2026, bloque B4) |
|
|
50
50
|
|
|
51
51
|
**Usos de hoy que rompen las reglas:** 0. Los 29 `icon="…"` (que no es un input), las 22 URL del
|
|
52
52
|
zorro pegadas a mano y los 4 errores de carga sin «Reintentar» se corrigieron el 03-10-2026 (commit
|
|
@@ -66,7 +66,7 @@ abajo (media query `bp.medium` del componente). El `size` solo cambia **el botó
|
|
|
66
66
|
| uso | mobile | web | fuente |
|
|
67
67
|
|---|---|---|---|
|
|
68
68
|
| ilustración + texto | lo resuelve el componente | lo resuelve el componente | lo que hay en el DS |
|
|
69
|
-
| botón de la acción | `large` (48) | `medium` (40) |
|
|
69
|
+
| botón de la acción | `large` (48) | `medium` (40) | el tamaño es extensión SUI aprobada (03-10-2026) · mobile: canon (decisión del dueño 04-10-2026, piso táctil 44) · web: propuesta, falta aprobación |
|
|
70
70
|
|
|
71
71
|
```html
|
|
72
72
|
<sui-empty-state
|
|
@@ -56,30 +56,32 @@ marketing: brillo arriba, borde interior claro y un anillo del color del botón.
|
|
|
56
56
|
| size | cuándo | fuente |
|
|
57
57
|
|---|---|---|
|
|
58
58
|
| `large` (48) | El CTA en el teléfono. Texto 16. | canon (dueño, 04-10-2026): piso táctil 44 en el teléfono; extensión de SUI, la guía no lo tiene |
|
|
59
|
-
| `medium` (40, default) | El CTA de la landing en
|
|
60
|
-
| `small` (36) |
|
|
61
|
-
| `xsmall` (32) | Sin caso: en una landing el CTA nunca es tan chico. | escala según la guía del DS · cuándo:
|
|
59
|
+
| `medium` (40, default) | El CTA de la landing en la computadora, también dentro de la card de un plan. | escala y default según la guía del DS · cuándo: canon (aprobado por el dueño, 05-10-2026, bloque B1) · la card de un plan: canon (dueño, 05-10-2026, D16) |
|
|
60
|
+
| `small` (36) | No usar: es chico. El CTA dentro de la card de un plan va `medium`. | escala según la guía del DS · no usarlo: canon (dueño, 05-10-2026, D16), reemplaza el «cuándo» del bloque B1 |
|
|
61
|
+
| `xsmall` (32) | Sin caso: en una landing el CTA nunca es tan chico. | escala según la guía del DS · cuándo: canon (aprobado por el dueño, 05-10-2026, bloque B6) |
|
|
62
62
|
|
|
63
63
|
### Íconos y `disabled`
|
|
64
64
|
|
|
65
65
|
| prop | cuándo | fuente |
|
|
66
66
|
|---|---|---|
|
|
67
|
-
| `rightIcon` (`arrow-right-line`) | El CTA lleva a otra página: «Empieza gratis →». |
|
|
68
|
-
| `leftIcon` | El ícono dice la acción (descargar, WhatsApp). |
|
|
69
|
-
| `disabled` | Casi nunca: un CTA de marketing no se deshabilita, se esconde. | cómo se ve: según la guía del DS · cuándo:
|
|
70
|
-
| `href` | El CTA navega (lo normal en una landing): pinta un `<a>`; `rel` ya viene en `'noopener noreferrer'`. |
|
|
67
|
+
| `rightIcon` (`arrow-right-line`) | El CTA lleva a otra página: «Empieza gratis →». | canon (aprobado por el dueño, 05-10-2026, bloque B9) |
|
|
68
|
+
| `leftIcon` | El ícono dice la acción (descargar, WhatsApp). | canon (aprobado por el dueño, 05-10-2026, bloque B9) |
|
|
69
|
+
| `disabled` | Casi nunca: un CTA de marketing no se deshabilita, se esconde. | cómo se ve: según la guía del DS · cuándo: canon (aprobado por el dueño, 05-10-2026, bloque B8) |
|
|
70
|
+
| `href` | El CTA navega (lo normal en una landing): pinta un `<a>`; `rel` ya viene en `'noopener noreferrer'`. | canon (aprobado por el dueño, 05-10-2026, bloque B10) |
|
|
71
71
|
|
|
72
72
|
## Tamaño en mobile y en web
|
|
73
73
|
|
|
74
|
-
En mobile se toca con el dedo: el área táctil tiene que medir **44 px o más** (canon (dueño, 04-10-2026): piso táctil 44 en el teléfono). En
|
|
75
|
-
|
|
76
|
-
(`
|
|
74
|
+
En mobile se toca con el dedo: el área táctil tiene que medir **44 px o más** (canon (dueño, 04-10-2026): piso táctil 44 en el teléfono). En la tablet
|
|
75
|
+
(`pointer: coarse`) va igual que en el celular; en la computadora (`pointer: fine`), `medium`; en el celular
|
|
76
|
+
chico (< 380 px), `medium` a la vista sin bajar el área de 44. Nada en `small` ni `xsmall` (canon, dueño,
|
|
77
|
+
05-10-2026, D16). Hoy la app lo resuelve con `BreakpointsService` (`src/app/services/breakpoints.service.ts`,
|
|
78
|
+
mobile = hasta 767 px).
|
|
77
79
|
|
|
78
80
|
| size | alto | texto | cuándo | fuente |
|
|
79
81
|
|---|---|---|---|---|
|
|
80
82
|
| `large` | 48 | 16 (Label/Medium) | CTA en el teléfono | canon (dueño, 04-10-2026): piso táctil 44 en el teléfono. Size nuevo del 04-10-2026 |
|
|
81
83
|
| `medium` (default) | 40 | 14 | CTA en web | Figma |
|
|
82
|
-
| `small` | 36 | 14 |
|
|
84
|
+
| `small` | 36 | 14 | — (no se usa: D16) | Figma |
|
|
83
85
|
| `xsmall` | 32 | 14 | — | Figma |
|
|
84
86
|
|
|
85
87
|
**Por qué `large` = 48 y no 44**: el fancy es «el mismo botón con otro acabado» que `sui-button` y su
|
|
@@ -89,8 +91,8 @@ que va al lado. El texto sube a 16 (regla de tamaños del 03-10-2026); los ícon
|
|
|
89
91
|
|
|
90
92
|
| uso | mobile | web | fuente |
|
|
91
93
|
|---|---|---|---|
|
|
92
|
-
| CTA principal de una landing | `large` (48) | `medium` (40) |
|
|
93
|
-
| CTA dentro de la card de un plan | `large` (48) | `
|
|
94
|
+
| CTA principal de una landing | `large` (48) | `medium` (40) | mobile: canon (decisión del dueño 04-10-2026, piso táctil 44) · web: canon (dueño, 05-10-2026, D16) |
|
|
95
|
+
| CTA dentro de la card de un plan | `large` (48) | `medium` (40) | mobile: canon (decisión del dueño 04-10-2026, piso táctil 44) · web: canon (dueño, 05-10-2026, D16) |
|
|
94
96
|
|
|
95
97
|
```html
|
|
96
98
|
<sui-fancy-button type="primary" [size]="bp.isMobile() ? 'large' : 'medium'">Empieza gratis</sui-fancy-button>
|
|
@@ -22,8 +22,8 @@ descargar. La etiqueta con la extensión le dice a la persona qué va a abrir.
|
|
|
22
22
|
|
|
23
23
|
## Qué variante usar
|
|
24
24
|
|
|
25
|
-
> **La guía del DS no tiene página para este componente.**
|
|
26
|
-
>
|
|
25
|
+
> **La guía del DS no tiene página para este componente.** Las reglas marcadas canon
|
|
26
|
+
> están aprobadas; la tabla de mobile y web quedó en canon el 05-10-2026 (P1 b y D16).
|
|
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-file-upload-card`.
|
|
@@ -32,9 +32,9 @@ descargar. La etiqueta con la extensión le dice a la persona qué va a abrir.
|
|
|
32
32
|
|
|
33
33
|
| input | cuándo | fuente |
|
|
34
34
|
|---|---|---|
|
|
35
|
-
| `filename` | Siempre que haya nombre: saca la extensión y el color solo (`comprobante.pdf` → PDF en rojo). |
|
|
36
|
-
| `extension` | Solo si el nombre no la trae (un archivo de Storage sin extensión). |
|
|
37
|
-
| `color` | No usar: el color dice el tipo y forzarlo miente (un CSV en rojo parece PDF). |
|
|
35
|
+
| `filename` | Siempre que haya nombre: saca la extensión y el color solo (`comprobante.pdf` → PDF en rojo). | canon (aprobado por el dueño, 05-10-2026, bloque B9) |
|
|
36
|
+
| `extension` | Solo si el nombre no la trae (un archivo de Storage sin extensión). | canon (aprobado por el dueño, 05-10-2026, bloque B9) |
|
|
37
|
+
| `color` | No usar: el color dice el tipo y forzarlo miente (un CSV en rojo parece PDF). | canon (aprobado por el dueño, 05-10-2026, bloque B6) |
|
|
38
38
|
|
|
39
39
|
Colores automáticos: PDF rojo · Word y texto azul · Excel y CSV verde · PowerPoint naranja ·
|
|
40
40
|
imágenes rosa · video morado · audio celeste · comprimidos amarillo · el resto gris.
|
|
@@ -43,8 +43,8 @@ imágenes rosa · video morado · audio celeste · comprimidos amarillo · el re
|
|
|
43
43
|
|
|
44
44
|
| valor | px | cuándo | fuente |
|
|
45
45
|
|---|---|---|---|
|
|
46
|
-
| `medium` (default) | 40 |
|
|
47
|
-
| `xsmall` | 32 |
|
|
46
|
+
| `medium` (default) | 40 | Siempre: listas de documentos, filas y tablas, en el celular, la tablet y la computadora. | canon (aprobado por el dueño, 05-10-2026, bloque B1) · también filas y tablas: canon (dueño, 05-10-2026, D16) |
|
|
47
|
+
| `xsmall` | 32 | No usar: es chico. Las filas densas y las tablas van en `medium`. | canon (dueño, 05-10-2026, D16); reemplaza el «filas densas, tablas» del bloque B1 |
|
|
48
48
|
|
|
49
49
|
Usos de hoy que rompen la regla: **0**.
|
|
50
50
|
|
|
@@ -53,18 +53,21 @@ Usos de hoy que rompen la regla: **0**.
|
|
|
53
53
|
En mobile se lee y se toca con el dedo, así que va más grande; en web, más chico. En las
|
|
54
54
|
pantallas que se usan en los dos (panel del local, super admin) se elige con el servicio de
|
|
55
55
|
breakpoints de la app (`bp`, en `services/breakpoints.service.ts`); en las que solo existen en
|
|
56
|
-
el celular (cliente, repartidor) va directo el valor de mobile.
|
|
56
|
+
el celular (cliente, repartidor) va directo el valor de mobile. No se toca, así que la tablet va
|
|
57
|
+
con el valor de web, y el celular chico (< 380 px) también (D16).
|
|
58
|
+
Es **canon (dueño, 05-10-2026, P1 b y D16)**.
|
|
57
59
|
|
|
58
60
|
| uso | mobile | web |
|
|
59
61
|
|---|---|---|
|
|
60
|
-
| fila de una lista | `medium` (40) | `
|
|
62
|
+
| fila de una lista | `medium` (40) | `medium` (40) |
|
|
61
63
|
|
|
62
64
|
```html
|
|
63
|
-
<sui-file-icon [filename]="doc.nombre"
|
|
65
|
+
<sui-file-icon [filename]="doc.nombre" size="medium" />
|
|
64
66
|
```
|
|
65
67
|
|
|
66
68
|
El ícono no se toca: si la fila abre el archivo, la fila da los 44 px. `medium` es el tamaño más
|
|
67
|
-
grande que tiene
|
|
69
|
+
grande que tiene y `xsmall` es chico (D16), así que va igual en las dos: es la excepción a P1 b
|
|
70
|
+
(«un paso más grande en el celular»), porque no hay un paso más.
|
|
68
71
|
|
|
69
72
|
## «No usar»: por qué no hoy y cuándo sí
|
|
70
73
|
|
|
@@ -30,8 +30,8 @@ elegido → file-upload-card.**
|
|
|
30
30
|
> buscar en el equipo**, para subir un archivo. Su ejemplo arma el texto así: una línea que invita
|
|
31
31
|
> («Elige un archivo o arrástralo aquí»), una línea con **formatos y tamaño máximo** («JPEG, PNG,
|
|
32
32
|
> PDF y MP4, hasta 50 MB») y el botón **«Buscar archivo»**. Trae aparte el ícono por tipo de
|
|
33
|
-
> archivo (en SUI, `sui-file-icon`). No dice cuándo usar cada tamaño.
|
|
34
|
-
>
|
|
33
|
+
> archivo (en SUI, `sui-file-icon`). No dice cuándo usar cada tamaño. Lo de abajo marcado canon
|
|
34
|
+
> está aprobado; lo que sigue en **propuesta** (el `small` en mobile) espera decisión.
|
|
35
35
|
>
|
|
36
36
|
> Uso medido el 03-10-2026 en `master-pedidos/src/app`: **0 usos**. Hoy todo lo que se sube es
|
|
37
37
|
> imagen y va con `sui-image-upload` (13) o con un `<input type="file">` a mano (3: `renewal-modal`,
|
|
@@ -43,15 +43,15 @@ elegido → file-upload-card.**
|
|
|
43
43
|
|---|---|---|
|
|
44
44
|
| `title` | Qué se sube, en la voz de la persona: «Sube tu carta en PDF», «Arrastra tu Excel aquí». Si se omite, sale «Arrastra y suelta el archivo aquí». | guía (línea que invita) |
|
|
45
45
|
| `subtitle` | **Formatos y tamaño máximo**, siempre: «PDF o Excel, hasta 10 MB». El default «o haz clic para seleccionar» no dice nada que el área no diga. | guía (formatos y tamaño) |
|
|
46
|
-
| `browseLabel` | El default ya es «Buscar archivo»; se pasa solo para otro texto («Elegir foto»). | guía (el botón) · el texto
|
|
46
|
+
| `browseLabel` | El default ya es «Buscar archivo»; se pasa solo para otro texto («Elegir foto»). | guía (el botón) · el texto, canon (aprobado por el dueño, 05-10-2026, bloque B4) |
|
|
47
47
|
|
|
48
48
|
### `accept`, `multiple`, `maxSize`
|
|
49
49
|
|
|
50
50
|
| input | cuándo | fuente |
|
|
51
51
|
|---|---|---|
|
|
52
|
-
| `accept` | Siempre, con lo mismo que dice el `subtitle`: `".pdf,.xlsx,.csv"`. Si el texto y el filtro no coinciden, la persona elige un archivo que se rechaza. |
|
|
53
|
-
| `multiple` | Varios archivos del mismo tipo (las boletas del mes). Con `multiple` cada archivo va en su `sui-file-upload-card`. |
|
|
54
|
-
| `maxSize` | Siempre, en **bytes** (`10 * 1024 * 1024`), y el mismo número en el `subtitle`. |
|
|
52
|
+
| `accept` | Siempre, con lo mismo que dice el `subtitle`: `".pdf,.xlsx,.csv"`. Si el texto y el filtro no coinciden, la persona elige un archivo que se rechaza. | canon (aprobado por el dueño, 05-10-2026, bloque B9) |
|
|
53
|
+
| `multiple` | Varios archivos del mismo tipo (las boletas del mes). Con `multiple` cada archivo va en su `sui-file-upload-card`. | canon (aprobado por el dueño, 05-10-2026, bloque B9) |
|
|
54
|
+
| `maxSize` | Siempre, en **bytes** (`10 * 1024 * 1024`), y el mismo número en el `subtitle`. | canon (aprobado por el dueño, 05-10-2026, bloque B9) |
|
|
55
55
|
|
|
56
56
|
### `size`
|
|
57
57
|
|
|
@@ -59,15 +59,15 @@ elegido → file-upload-card.**
|
|
|
59
59
|
|---|---|---|---|
|
|
60
60
|
| `small` | 24 | En mobile y dentro de un modal o una card. | propuesta |
|
|
61
61
|
| `medium` (default) | 32 | En web, en una página o un modal ancho. | guía (es el único tamaño que muestra) |
|
|
62
|
-
| `large` | 40 | Cuando subir el archivo es lo único de la pantalla (importar la carta). |
|
|
62
|
+
| `large` | 40 | Cuando subir el archivo es lo único de la pantalla (importar la carta). | canon (aprobado por el dueño, 05-10-2026, bloque B1) |
|
|
63
63
|
| `xlarge` | 48 | No usar: más aire no ayuda a soltar el archivo. | no usar |
|
|
64
64
|
|
|
65
65
|
### Estados: `error`, `errorMessage`, `disabled`
|
|
66
66
|
|
|
67
67
|
| input | cuándo | fuente |
|
|
68
68
|
|---|---|---|
|
|
69
|
-
| `error` + `errorMessage` | El archivo se subió y el servidor lo rechazó («El PDF está protegido con clave»). Lo de tamaño y tipo ya lo avisa solo. |
|
|
70
|
-
| `disabled` | Mientras se sube, o si ya se llegó al máximo de archivos. |
|
|
69
|
+
| `error` + `errorMessage` | El archivo se subió y el servidor lo rechazó («El PDF está protegido con clave»). Lo de tamaño y tipo ya lo avisa solo. | canon (aprobado por el dueño, 05-10-2026, bloque B8) |
|
|
70
|
+
| `disabled` | Mientras se sube, o si ya se llegó al máximo de archivos. | canon (aprobado por el dueño, 05-10-2026, bloque B8) |
|
|
71
71
|
|
|
72
72
|
Usos de hoy que rompen la regla: **0** (no hay file-upload).
|
|
73
73
|
|
|
@@ -81,7 +81,7 @@ más compacta. En pantallas de los dos, con el servicio de breakpoints de la app
|
|
|
81
81
|
| uso | mobile | web | fuente |
|
|
82
82
|
|---|---|---|---|
|
|
83
83
|
| subir un documento en un formulario o modal | `small` | `medium` | propuesta |
|
|
84
|
-
| subir es lo único de la pantalla | `medium` | `large` |
|
|
84
|
+
| subir es lo único de la pantalla | `medium` | `large` | canon (aprobado por el dueño, 05-10-2026, bloque B1) |
|
|
85
85
|
|
|
86
86
|
```html
|
|
87
87
|
<sui-file-upload [size]="bp.isMobile() ? 'small' : 'medium'"
|
|
@@ -23,7 +23,8 @@ subiendo con su barra, listo, o falló con «Reintentar».
|
|
|
23
23
|
## Qué variante usar
|
|
24
24
|
|
|
25
25
|
> **La guía del DS no tiene página para este componente** (su página del file upload solo muestra
|
|
26
|
-
> el área y el ícono por tipo).
|
|
26
|
+
> el área y el ícono por tipo). Las reglas marcadas canon están aprobadas y las de «según el
|
|
27
|
+
> código» describen lo que el componente ya hace.
|
|
27
28
|
>
|
|
28
29
|
> Uso medido el 03-10-2026 en `master-pedidos/src/app`: **0 usos**. Las subidas de hoy son de
|
|
29
30
|
> imágenes y avisan con el `subtitle` del image-upload («Procesando…») o lo deshabilitan.
|
|
@@ -32,20 +33,20 @@ subiendo con su barra, listo, o falló con «Reintentar».
|
|
|
32
33
|
|
|
33
34
|
| valor | cuándo | qué muestra | fuente |
|
|
34
35
|
|---|---|---|---|
|
|
35
|
-
| `in-progress` (default) | Mientras sube. Va con `progress`. | barra azul, ícono de carga, X para cancelar |
|
|
36
|
-
| `success` | Subió. | check verde, tacho para quitar |
|
|
37
|
-
| `error` | Falló. Va con `statusText` que diga por qué. | ícono rojo, «Reintentar», tacho |
|
|
36
|
+
| `in-progress` (default) | Mientras sube. Va con `progress`. | barra azul, ícono de carga, X para cancelar | según el código |
|
|
37
|
+
| `success` | Subió. | check verde, tacho para quitar | según el código |
|
|
38
|
+
| `error` | Falló. Va con `statusText` que diga por qué. | ícono rojo, «Reintentar», tacho | canon (aprobado por el dueño, 05-10-2026, bloque B4) |
|
|
38
39
|
|
|
39
40
|
### Textos y datos
|
|
40
41
|
|
|
41
42
|
| input | cuándo | fuente |
|
|
42
43
|
|---|---|---|
|
|
43
|
-
| `file` | El nombre real del archivo (`'carta-octubre.pdf'`). La extensión da el ícono y el color. |
|
|
44
|
-
| `description` | **Siempre** se pasa: el default es un texto de ejemplo («0 KB de 120 KB»). Subiendo: «1.2 MB de 3.4 MB»; listo: «3.4 MB» (punto decimal, como el «10.0 MB» que arma `sui-file-upload`). |
|
|
45
|
-
| `progress` | 0–100, solo en `in-progress`. |
|
|
46
|
-
| `statusText` | Los defaults ya están en español («Subiendo…», «Completado», «Falló»); en error, mejor el motivo: «Se cortó la conexión». |
|
|
47
|
-
| `showStatus=false` | Solo en `success`, cuando el check sobra porque la lista ya dice «Archivos subidos». |
|
|
48
|
-
| `retryLabel` | El default ya es «Reintentar». |
|
|
44
|
+
| `file` | El nombre real del archivo (`'carta-octubre.pdf'`). La extensión da el ícono y el color. | canon (aprobado por el dueño, 05-10-2026, bloque B4) |
|
|
45
|
+
| `description` | **Siempre** se pasa: el default es un texto de ejemplo («0 KB de 120 KB»). Subiendo: «1.2 MB de 3.4 MB»; listo: «3.4 MB» (punto decimal, como el «10.0 MB» que arma `sui-file-upload`). | canon (aprobado por el dueño, 05-10-2026, bloque B4) |
|
|
46
|
+
| `progress` | 0–100, solo en `in-progress`. | canon (aprobado por el dueño, 05-10-2026, bloque B9) |
|
|
47
|
+
| `statusText` | Los defaults ya están en español («Subiendo…», «Completado», «Falló»); en error, mejor el motivo: «Se cortó la conexión». | canon (aprobado por el dueño, 05-10-2026, bloque B4) |
|
|
48
|
+
| `showStatus=false` | Solo en `success`, cuando el check sobra porque la lista ya dice «Archivos subidos». | canon (aprobado por el dueño, 05-10-2026, bloque B9) |
|
|
49
|
+
| `retryLabel` | El default ya es «Reintentar». | canon (CANON-SUI §5.3 y §6.4: «Reintentar» es copy de acción canon) |
|
|
49
50
|
|
|
50
51
|
Usos de hoy que rompen la regla: **0**.
|
|
51
52
|
|