@ajuarezso/sui-design-system 0.22.0 → 0.23.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/docs/INDEX.md +8 -8
- package/docs/sui-accordion/README.md +2 -2
- package/docs/sui-activity-feed/README.md +1 -2
- package/docs/sui-alert/README.md +28 -19
- package/docs/sui-app-store-badge/README.md +5 -4
- package/docs/sui-avatar/README.md +16 -16
- package/docs/sui-avatar-group/README.md +4 -4
- package/docs/sui-badge/README.md +27 -9
- package/docs/sui-banner/README.md +10 -9
- package/docs/sui-brand-logo/README.md +3 -3
- package/docs/sui-breadcrumbs/README.md +1 -1
- package/docs/sui-button/README.md +48 -24
- package/docs/sui-button-group/README.md +6 -4
- package/docs/sui-button-group-item/README.md +3 -3
- package/docs/sui-card/README.md +17 -19
- package/docs/sui-chart-legend/README.md +8 -7
- package/docs/sui-checkbox/README.md +11 -6
- package/docs/sui-checkbox-card/README.md +24 -19
- package/docs/sui-checkbox-label/README.md +32 -10
- package/docs/sui-circular-progress-bar/README.md +2 -0
- package/docs/sui-color-dot/README.md +1 -1
- package/docs/sui-color-picker/README.md +22 -7
- package/docs/sui-command-menu-footer/README.md +8 -8
- package/docs/sui-command-menu-search/README.md +2 -2
- package/docs/sui-compact-avatar-group/README.md +4 -3
- package/docs/sui-compact-button/README.md +41 -44
- package/docs/sui-compact-select/README.md +9 -5
- package/docs/sui-compact-select-for-input/README.md +2 -2
- package/docs/sui-content-card/README.md +6 -5
- package/docs/sui-content-divider/README.md +4 -4
- package/docs/sui-content-label/README.md +11 -6
- package/docs/sui-counter-input/README.md +19 -18
- package/docs/sui-date-selector/README.md +16 -12
- package/docs/sui-datepicker/README.md +46 -32
- package/docs/sui-day-cell/README.md +17 -8
- package/docs/sui-day-label/README.md +2 -2
- package/docs/sui-divider/README.md +5 -5
- package/docs/sui-drawer-footer/README.md +19 -5
- package/docs/sui-dropdown-search/README.md +3 -3
- package/docs/sui-emoji/README.md +6 -6
- package/docs/sui-empty-state/README.md +13 -23
- package/docs/sui-fancy-button/README.md +24 -18
- package/docs/sui-file-icon/README.md +1 -1
- package/docs/sui-file-upload/README.md +3 -0
- package/docs/sui-file-upload-card/README.md +8 -7
- package/docs/sui-filter/README.md +5 -5
- package/docs/sui-flag/README.md +3 -2
- package/docs/sui-form-hint/README.md +12 -8
- package/docs/sui-form-label/README.md +11 -16
- package/docs/sui-icon/README.md +4 -3
- package/docs/sui-image-upload/README.md +28 -16
- package/docs/sui-inline-input/README.md +7 -6
- package/docs/sui-inline-select/README.md +8 -5
- package/docs/sui-input/README.md +26 -35
- package/docs/sui-integration-switch/README.md +14 -7
- package/docs/sui-kbd/README.md +4 -4
- package/docs/sui-key-icon/README.md +6 -2
- package/docs/sui-link-button/README.md +21 -17
- package/docs/sui-modal-footer/README.md +1 -1
- package/docs/sui-notification/README.md +8 -6
- package/docs/sui-notification-footer/README.md +2 -2
- package/docs/sui-notification-tab-menu/README.md +5 -3
- package/docs/sui-pagination/README.md +8 -5
- package/docs/sui-password-strength/README.md +1 -1
- package/docs/sui-period-range/README.md +18 -14
- package/docs/sui-popover/README.md +13 -7
- package/docs/sui-product-card/README.md +14 -10
- package/docs/sui-progress-bar/README.md +4 -2
- package/docs/sui-progress-bar-label/README.md +2 -0
- package/docs/sui-radio/README.md +14 -7
- package/docs/sui-radio-card/README.md +12 -12
- package/docs/sui-radio-label/README.md +36 -11
- package/docs/sui-rating/README.md +28 -9
- package/docs/sui-rich-editor/README.md +3 -3
- package/docs/sui-segmented-control/README.md +32 -21
- package/docs/sui-select/README.md +35 -31
- package/docs/sui-sidebar/README.md +1 -2
- package/docs/sui-slider/README.md +7 -0
- package/docs/sui-social-button/README.md +24 -11
- package/docs/sui-status-badge/README.md +7 -3
- package/docs/sui-stepper/README.md +30 -17
- package/docs/sui-store-card/README.md +9 -4
- package/docs/sui-switch/README.md +16 -11
- package/docs/sui-switch-card/README.md +18 -16
- package/docs/sui-switch-label/README.md +22 -11
- package/docs/sui-tab-chips/README.md +55 -41
- package/docs/sui-tab-menu-horizontal/README.md +19 -11
- package/docs/sui-tab-menu-vertical/README.md +10 -5
- package/docs/sui-tag/README.md +25 -11
- package/docs/sui-tag-input/README.md +24 -14
- package/docs/sui-textarea/README.md +21 -21
- package/docs/sui-time-picker/README.md +38 -32
- package/docs/sui-toast/README.md +27 -22
- package/docs/sui-tooltip/README.md +14 -17
- package/docs/sui-topbar-button/README.md +2 -2
- package/fesm2022/ajuarezso-sui-design-system.mjs +1071 -240
- package/fesm2022/ajuarezso-sui-design-system.mjs.map +1 -1
- package/package.json +1 -1
- package/types/ajuarezso-sui-design-system.d.ts +601 -267
package/docs/sui-flag/README.md
CHANGED
|
@@ -22,8 +22,9 @@ nada a nadie.
|
|
|
22
22
|
> **La guía del DS no tiene este componente.** Todo es **propuesta, falta aprobación**.
|
|
23
23
|
>
|
|
24
24
|
> Uso medido el 03-10-2026 en `master-pedidos/src/app`: **0 usos directos**. Lo usan por dentro
|
|
25
|
-
> `sui-select`, `sui-compact-select`, `sui-
|
|
26
|
-
> `sui-command-menu-item`.
|
|
25
|
+
> `sui-select`, `sui-compact-select`, `sui-compact-select-for-input`, `sui-inline-select`,
|
|
26
|
+
> `sui-dropdown-item` y `sui-command-menu-item`. `sui-tag` no la trae: la recibe proyectada en
|
|
27
|
+
> `[data-slot=start]`.
|
|
27
28
|
|
|
28
29
|
### `size`
|
|
29
30
|
|
|
@@ -12,7 +12,7 @@ Story: [Atoms/Form/Form Hint](https://sui-design-system.web.app/?path=/docs/atom
|
|
|
12
12
|
## Cuándo usarlo / cuándo no
|
|
13
13
|
|
|
14
14
|
**Úsalo** para una línea debajo de un campo o grupo **que no trae la suya**: cómo se llena
|
|
15
|
-
(«Como aparece en tu DNI
|
|
15
|
+
(«Como aparece en tu DNI»), un contador («120/200»), o qué falló («Selecciona un método de
|
|
16
16
|
pago»). Va pegado al control que explica.
|
|
17
17
|
|
|
18
18
|
**No lo uses** para:
|
|
@@ -31,7 +31,8 @@ Regla corta: **ayuda o error de un control sin hint propio → form-hint · camp
|
|
|
31
31
|
> trae tres estados: normal, deshabilitado y con error (`hasError`). El ícono es una pieza aparte
|
|
32
32
|
> y opcional. No da reglas de largo ni de copy.
|
|
33
33
|
>
|
|
34
|
-
> Uso medido el 03-10-2026 en `master-pedidos/src/app` (misma exclusión que `sui-badge
|
|
34
|
+
> Uso medido el 03-10-2026 en `master-pedidos/src/app` (misma exclusión que `sui-badge`; las cifras
|
|
35
|
+
> siguen iguales el 04-10-2026, las líneas de abajo están actualizadas a esa fecha):
|
|
35
36
|
> **36 usos en 18 archivos**: 11 `error`, 25 `neutral` (24 por default y 1 explícito), 0
|
|
36
37
|
> `disabled`; 2 con `icon` propio (`information-line`). Hay además **al menos 14 hints escritos a
|
|
37
38
|
> mano** con clases propias (`__form-hint`, `__hint`).
|
|
@@ -48,7 +49,7 @@ Regla corta: **ayuda o error de un control sin hint propio → form-hint · camp
|
|
|
48
49
|
|
|
49
50
|
| qué | regla | fuente |
|
|
50
51
|
|---|---|---|
|
|
51
|
-
| `message` | Hasta 8 palabras (mediana 6). Si no cabe, es un `sui-alert`.
|
|
52
|
+
| `message` | Hasta 8 palabras (mediana 6). Si no cabe, es un `sui-alert`. Sin punto final si es una frase corta; con punto si son dos oraciones. | canon (`docs/CANON-SUI.md` §5.4 el largo; `docs/VOZ-Y-ESCRITURA.md` el punto) |
|
|
52
53
|
| `icon` sin pasar | El de la variante (ninguno en `neutral`, info en `error` y `disabled`). | según la guía del DS (ícono opcional); default de SUI |
|
|
53
54
|
| `icon="…"` en `neutral` | Solo cuando la ayuda es una advertencia que conviene notar («No reconocimos el distrito…»). | propuesta, falta aprobación (2 usos hoy) |
|
|
54
55
|
| `[icon]="null"` | Quita el ícono también en `error`. No usar: el error necesita algo más que el color. | propuesta, falta aprobación |
|
|
@@ -62,14 +63,14 @@ Regla corta: **ayuda o error de un control sin hint propio → form-hint · camp
|
|
|
62
63
|
Bien usado, en cambio, `step-vehicle.html:43`: el error de un grupo de `sui-radio-card`.
|
|
63
64
|
- **4 como subtítulo de una sección, no de un campo:** `pages/schedule/schedule.html:17`
|
|
64
65
|
(«Pausa tu sucursal…», bajo el título de la card), `:61`, `pages/drivers/drivers.html:29`,
|
|
65
|
-
`pages/driver/driver-schedule/driver-schedule.html:
|
|
66
|
+
`pages/driver/driver-schedule/driver-schedule.html:92`.
|
|
66
67
|
- **12 de más de 8 palabras** (4 son los subtítulos de arriba) → acortar, o `sui-alert` si de
|
|
67
68
|
verdad hace falta todo: `pages/super-admin/master-users/master-users.html:66` (26 palabras),
|
|
68
|
-
`pages/orders/orders.html:
|
|
69
|
-
`pages/envios/envios.html:
|
|
70
|
-
- **Al menos 14 hints a mano** con clases propias. Ejemplos: `pages/discounts/discounts.html:
|
|
69
|
+
`pages/orders/orders.html:589` (23), `pages/driver/driver-order-detail/driver-order-detail.html:868` (23),
|
|
70
|
+
`pages/envios/envios.html:401` (15).
|
|
71
|
+
- **Al menos 14 hints a mano** con clases propias. Ejemplos: `pages/discounts/discounts.html:205`
|
|
71
72
|
(`discounts__form-hint`), `components/settings-panel/settings-panel.html:93`,
|
|
72
|
-
`pages/promociones/promociones.html:
|
|
73
|
+
`pages/promociones/promociones.html:181`.
|
|
73
74
|
|
|
74
75
|
## Tamaño en mobile y en web
|
|
75
76
|
|
|
@@ -110,6 +111,9 @@ Outputs: ninguno.
|
|
|
110
111
|
- **Sin `message` no ocupa lugar**: no hace falta envolverlo en `@if`.
|
|
111
112
|
- En `error` el ícono es `information-fill` en rojo, no `error-warning-line`.
|
|
112
113
|
- Letra fija de 12/16 px; el ícono mide 16 px y se alinea con la primera línea.
|
|
114
|
+
- `variant="error"` con mensaje lleva `role="alert"`: el lector lo anuncia al aparecer
|
|
115
|
+
(04-10-2026). Para enlazarlo a un control propio, pon `id` en el host y apúntalo con
|
|
116
|
+
`aria-describedby`; los campos del DS ya lo hacen solos.
|
|
113
117
|
|
|
114
118
|
## Ejemplo
|
|
115
119
|
|
|
@@ -19,7 +19,8 @@ Story: [Atoms/Form/Form Label](https://sui-design-system.web.app/?path=/docs/ato
|
|
|
19
19
|
|
|
20
20
|
- **Encima de un `sui-input`, `sui-select` o `sui-textarea`**: esos ya dibujan su label, asterisco,
|
|
21
21
|
sublabel y tooltip con `[label]`, `[required]`, `[sublabel]`, `[tooltip]`. Ponerle uno afuera
|
|
22
|
-
duplica la pieza y
|
|
22
|
+
duplica la pieza y deja el `required` y el error separados del campo. El label interno sí
|
|
23
|
+
lleva `for` al `id` del control (desde el 04-10-2026); uno puesto afuera no lo conoce.
|
|
23
24
|
- El texto de un solo checkbox, radio o switch: `sui-checkbox-label`, `sui-radio-label`,
|
|
24
25
|
`sui-switch-label`.
|
|
25
26
|
- Un título de sección o de card («Datos personales»): `sui-page-header`, `sui-content-label` o
|
|
@@ -35,8 +36,8 @@ Regla corta: **campo de texto → su propio `[label]` · grupo o control sin lab
|
|
|
35
36
|
> es «Last Name*(Optional)»: el opcional va **entre paréntesis** en el sub. Tiene un solo tamaño y
|
|
36
37
|
> un estado deshabilitado. Info (tooltip) y el link de la derecha vienen del Figma del componente.
|
|
37
38
|
>
|
|
38
|
-
> Uso medido el
|
|
39
|
-
> **37 usos en 13 archivos**: 13 con `required`,
|
|
39
|
+
> Uso medido el 04-10-2026 en `master-pedidos/src/app` (misma exclusión que `sui-badge`):
|
|
40
|
+
> **37 usos en 13 archivos**: 13 con `required`, 7 con `sublabel="(Opcional)"`, 2 con `link`
|
|
40
41
|
> («Cambiar»), 0 con `tooltip`, 0 con `disabled`; 6 con `size="medium"` explícito, el resto en el
|
|
41
42
|
> default (`medium`).
|
|
42
43
|
|
|
@@ -63,27 +64,21 @@ Regla corta: **campo de texto → su propio `[label]` · grupo o control sin lab
|
|
|
63
64
|
La regla de controles grandes del dueño (28-09-2026) no aplica aquí: el `size` del label es
|
|
64
65
|
tipografía, no área táctil.
|
|
65
66
|
|
|
66
|
-
**Usos de hoy que rompen las reglas
|
|
67
|
+
**Usos de hoy que rompen las reglas** (medido el 04-10-2026; los sublabels sin paréntesis, el
|
|
68
|
+
«(opcional)» en el label, el número de paso en los labels de promociones y el Title Case de
|
|
69
|
+
`drivers.html:28` ya se corrigieron en la app, commits `ce4a2d12` y `8128dc03`):
|
|
67
70
|
|
|
68
71
|
- **8 encima de un campo que ya trae su label → pasar a `[label]` del campo:**
|
|
69
72
|
`pages/driver-onboarding/step-info/step-info.html:37` («Nombre completo»), `:56`, `:77`;
|
|
70
73
|
`pages/customer-onboarding/step-address/step-address.html:70` («Departamento», sobre
|
|
71
74
|
`sui-select`), `:87`, `:106`; `pages/driver-onboarding/step-vehicle/step-vehicle.html:49`, `:62`.
|
|
72
75
|
En esos mismos campos el `sui-form-hint` de abajo también es el `[hint]` del input.
|
|
73
|
-
- **5 con `sublabel="Opcional"` sin paréntesis** → se lee «ImagenOpcional» (1 px de separación).
|
|
74
|
-
Pasar a «(Opcional)»: `components/add-product-modal/add-product-modal.html:42`, `:195`;
|
|
75
|
-
`pages/promociones/promociones.html:200`; `pages/business-onboarding/step-info/step-info.html:41`, `:54`.
|
|
76
|
-
- **2 con «(opcional)» dentro del label → `sublabel`:** `pages/driver-onboarding/step-vehicle/step-vehicle.html:49`
|
|
77
|
-
(«Placa del vehículo (opcional)») y `:62`.
|
|
78
76
|
- **2 como título de sección → heading o `sui-content-label`:** `pages/customer/checkout/checkout.html:187`
|
|
79
77
|
(«Datos personales») y `:35` («Recoges en el local»).
|
|
80
|
-
- **
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
- **1 en Title Case:** `pages/drivers/drivers.html:28` («Modo de Asignación» → «Modo de asignación»).
|
|
85
|
-
- **3 con un switch armado a mano al lado → `sui-switch-label`:** `pages/discounts/discounts.html:195`,
|
|
86
|
-
`:299`; `components/add-product-modal/add-product-modal.html:195`.
|
|
78
|
+
- **1 encima de un `sui-textarea`**, que ya trae su `[label]`: `pages/promociones/promociones.html:201`
|
|
79
|
+
(«Descripción»).
|
|
80
|
+
- **3 con un switch armado a mano al lado → `sui-switch-label`:** `pages/discounts/discounts.html:204`,
|
|
81
|
+
`:316`; `components/add-product-modal/add-product-modal.html:204`.
|
|
87
82
|
|
|
88
83
|
## Tamaño en mobile y en web
|
|
89
84
|
|
package/docs/sui-icon/README.md
CHANGED
|
@@ -91,7 +91,7 @@ el celular (cliente, repartidor) va directo el valor de mobile. Todo es **propue
|
|
|
91
91
|
|
|
92
92
|
Un ícono suelto **nunca** es el área táctil: si se toca, va en `sui-compact-button` o
|
|
93
93
|
`sui-button` `onlyIcon`, que dan los 44 px. Hoy solo 2 íconos cambian por breakpoint
|
|
94
|
-
(`pages/discounts/discounts.html:
|
|
94
|
+
(`pages/discounts/discounts.html:103` y `:108`, con `bp.isTablet() ? 20 : 16`).
|
|
95
95
|
|
|
96
96
|
## «No usar»: por qué no hoy y cuándo sí
|
|
97
97
|
|
|
@@ -121,8 +121,9 @@ Outputs: ninguno.
|
|
|
121
121
|
- **`size` acepta número o string**: `[size]="20"` son px; `size="1.25em"` es CSS. Con
|
|
122
122
|
`size="20"` (string sin unidad) el ícono no toma tamaño.
|
|
123
123
|
- **El nombre no se valida**: si no existe en RemixIcon, sale vacío sin error.
|
|
124
|
-
- **No tiene `aria-label
|
|
125
|
-
`<i>`
|
|
124
|
+
- **No tiene `aria-label` y es decorativo siempre**: el SVG propio y el `<i>` de RemixIcon llevan
|
|
125
|
+
`aria-hidden="true"` (el `<i>` desde el 04-10-2026; antes el lector podía leer el glifo como un
|
|
126
|
+
símbolo raro). Si el ícono es lo único que dice algo, el texto va al lado o en el contenedor.
|
|
126
127
|
- **La app necesita la fuente de RemixIcon** (`remixicon/fonts/remixicon.css` en `styles.scss`):
|
|
127
128
|
el paquete del DS no la trae.
|
|
128
129
|
- Dentro de un `sui-kbd`, el kbd le fuerza el color `text-sub-600`.
|
|
@@ -63,7 +63,7 @@ El archivo que entrega **no se sube tal cual**: pasa por `ImageCompressorService
|
|
|
63
63
|
| input | cuándo | fuente |
|
|
64
64
|
|---|---|---|
|
|
65
65
|
| `title` | Verbo + qué: «Subir logo», «Subir comprobante», «Subir captura del pago». | propuesta |
|
|
66
|
-
| `subtitle` | Formatos y tamaño, **solo los que el componente acepta** (JPG, PNG o
|
|
66
|
+
| `subtitle` | Formatos y tamaño, **solo los que el componente acepta** (JPG, PNG, WebP, GIF o HEIC), o el encuadre que se va a aplicar («se recorta a 16:9»). Mientras procesa: «Procesando…». | propuesta |
|
|
67
67
|
|
|
68
68
|
### `maxSize`, `disabled`, `src`
|
|
69
69
|
|
|
@@ -75,19 +75,20 @@ El archivo que entrega **no se sube tal cual**: pasa por `ImageCompressorService
|
|
|
75
75
|
|
|
76
76
|
### Usos de hoy que rompen la propuesta
|
|
77
77
|
|
|
78
|
-
- **5 subtítulos prometen HEIC**: hasta el 03-10-2026 el componente lo rechazaba;
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
`
|
|
78
|
+
- **5 subtítulos prometen HEIC**: hasta el 03-10-2026 el componente lo rechazaba; desde la 0.22.0
|
|
79
|
+
(la que usa la app) ya lo acepta, así que **ya no rompen nada**. Lo que queda es la vista previa en
|
|
80
|
+
blanco en Chrome hasta que la pantalla ponga el JPG comprimido (ver Trampas):
|
|
81
|
+
`components/plan-change-modal/plan-change-modal.html:157`, `pages/driver/driver-wallet/driver-wallet.html:252`,
|
|
82
|
+
`pages/promociones/promociones.html:194` y `:279`, `pages/customer/order-tracking/order-tracking.html:985`.
|
|
82
83
|
- **1 logo en círculo** → `rect`: `pages/business-onboarding/step-info/step-info.html:42` (en
|
|
83
|
-
`mi-negocio.html:
|
|
84
|
+
`mi-negocio.html:520` el mismo logo es `rect`, y en el home del cliente se ve cuadrado).
|
|
84
85
|
- **3 imágenes en cuadrado que deberían ir `fluid`**: comprobantes en
|
|
85
86
|
`components/plan-change-modal/plan-change-modal.html:150` y `pages/central/central-gastos/central-gastos.html:118`;
|
|
86
|
-
la portada 16:9 en `pages/mi-negocio/mi-negocio.html:
|
|
87
|
+
la portada 16:9 en `pages/mi-negocio/mi-negocio.html:574` (en el onboarding ya va `fluid`).
|
|
87
88
|
- **8 sin `editable`**: `components/avatar-editor/avatar-editor.ts:33` (pone `false` aunque tiene
|
|
88
|
-
recortador), `pages/customer/order-tracking/order-tracking.html:
|
|
89
|
+
recortador), `pages/customer/order-tracking/order-tracking.html:978` (cliente, solo celular),
|
|
89
90
|
`components/plan-change-modal/plan-change-modal.html:150`, `pages/central/central-gastos/central-gastos.html:118`,
|
|
90
|
-
`pages/promociones/promociones.html:
|
|
91
|
+
`pages/promociones/promociones.html:186` y `:271`, y `pages/business-onboarding/step-info/step-info.html:42` y `:56`.
|
|
91
92
|
- **2 áreas de subida armadas a mano** que van con este componente (`rect`, `fluid`, `editable`):
|
|
92
93
|
`components/renewal-modal/renewal-modal.html:64` (comprobante, con SVG propio) y
|
|
93
94
|
`pages/products/add-product/add-product.html:223` (foto del producto, con dropzone propia).
|
|
@@ -95,16 +96,22 @@ El archivo que entrega **no se sube tal cual**: pasa por `ImageCompressorService
|
|
|
95
96
|
|
|
96
97
|
## Tamaño en mobile y en web
|
|
97
98
|
|
|
98
|
-
En mobile se toca con el dedo: lo que se toca mide **44 px o más
|
|
99
|
-
(80 a 200 px), así que pasa
|
|
100
|
-
|
|
99
|
+
En mobile se toca con el dedo: lo que se toca mide **44 px o más** (canon (dueño, 04-10-2026): piso táctil 44 en el teléfono). El área vacía se
|
|
100
|
+
toca entera (80 a 200 px), así que pasa. Los botones con imagen se **ven** de 40 (lápiz y tacho) y
|
|
101
|
+
32 («Quitar»), pero en el teléfono (≤ 767 px) **se tocan en 44 de alto** con un `::before`
|
|
102
|
+
invisible (04-10-2026). En pantallas de los dos se elige con el servicio de breakpoints de la app
|
|
103
|
+
(`bp`, en `services/breakpoints.service.ts`).
|
|
104
|
+
|
|
105
|
+
**Por qué no hay un size nuevo**: aquí `size` (`sm`/`md`/`lg`/`xl`) es el tamaño de la **foto**, no
|
|
106
|
+
el de los botones. Un `2xl` agrandaría la imagen sin que nadie lo pida; el área invisible lleva lo
|
|
107
|
+
que se toca a 44 sin cambiar el dibujo ni los sizes de hoy.
|
|
101
108
|
|
|
102
109
|
| uso | mobile | web | fuente |
|
|
103
110
|
|---|---|---|---|
|
|
104
111
|
| comprobante, captura, QR, portada, banner | `fluid` | `fluid` (en una columna de ≤ 480 px) | propuesta |
|
|
105
112
|
| logo, foto de producto, foto de perfil | `xl` (200) | `xl` (200), o `lg` (160) al lado del nombre | propuesta |
|
|
106
|
-
| lápiz y tacho (`editable`) | 40
|
|
107
|
-
| «Quitar» (sin `editable`) | 32
|
|
113
|
+
| lápiz y tacho (`editable`) | se ven de 40 (32 en `sm`), se tocan en 44 de alto; a los lados el área crece la mitad del espacio entre los dos (3; 2 en `sm`) para no pisarse | 40 px | canon (dueño, 04-10-2026): piso táctil 44 en el teléfono (área) · canon (aprobado por el dueño, 03-10-2026), extensión SUI (40) |
|
|
114
|
+
| «Quitar» (sin `editable`) | se ve de 32 (`sui-button` `xsmall`), se toca en 44 de alto: crece 4 hacia la foto (la mitad del gap de 8) y 8 hacia abajo | 32 px | canon (dueño, 04-10-2026): piso táctil 44 en el teléfono (área) · canon (aprobado por el dueño, 03-10-2026) |
|
|
108
115
|
|
|
109
116
|
```html
|
|
110
117
|
<sui-image-upload shape="rect" [size]="bp.isMobile() ? 'xl' : 'lg'" [editable]="true"
|
|
@@ -116,7 +123,8 @@ servicio de breakpoints de la app (`bp`, en `services/breakpoints.service.ts`).
|
|
|
116
123
|
|
|
117
124
|
Desde el 03-10-2026 el lápiz y el tacho miden **40** (antes 34; en `sm`, de 80 de lado, no entran dos
|
|
118
125
|
de 40 y quedan en 32) y el «Quitar» es un `sui-button` `xsmall` de **32** (antes 28). En `circle`
|
|
119
|
-
los dos botones van centrados abajo, dentro del círculo.
|
|
126
|
+
los dos botones van centrados abajo, dentro del círculo. Lo que haya justo debajo del «Quitar»
|
|
127
|
+
pierde 8 px de toque en el teléfono: no pegarle otro control sin margen.
|
|
120
128
|
|
|
121
129
|
## «No usar»: por qué no hoy y cuándo sí
|
|
122
130
|
|
|
@@ -169,7 +177,7 @@ recortador; se llama con una referencia: `#qr` → `qr.abrirSelector()`).
|
|
|
169
177
|
(antes en voseo).
|
|
170
178
|
- **El default de `shape` es `circle`** y el de `size` es `lg`: para un logo o un comprobante hay
|
|
171
179
|
que pasar los dos.
|
|
172
|
-
- **Con `fluid`, `size` no hace nada** (`promociones.html:
|
|
180
|
+
- **Con `fluid`, `size` no hace nada** (`promociones.html:186` pasa `size="lg"` y `fluid` a la vez).
|
|
173
181
|
- **`removed` ya vacía `src`** por dentro; quien lo usa solo limpia su `File` y su estado.
|
|
174
182
|
- **Al elegir, pone la vista previa sola** (`src` = data URL) y emite el `File` original, sin
|
|
175
183
|
comprimir ni recortar. Comprimir y recortar es trabajo de la pantalla.
|
|
@@ -178,6 +186,10 @@ recortador; se llama con una referencia: `#qr` → `qr.abrirSelector()`).
|
|
|
178
186
|
- Con `circle` + `editable` los botones van centrados abajo, sobre la foto (antes, en la esquina, el
|
|
179
187
|
círculo recortaba el tacho).
|
|
180
188
|
- Con `src` puesto, tocar el área vacía no hace nada: para elegir otra va el lápiz o `abrirSelector()`.
|
|
189
|
+
- **Teclado (04-10-2026):** vacío, el host es el botón (`role="button"`, Enter/Espacio abren el
|
|
190
|
+
selector). Con imagen deja de serlo, porque adentro hay botones: sin `editable` la foto entera es
|
|
191
|
+
un `<button>` «Cambiar imagen» (antes un `div` que solo respondía al mouse) y «Quitar» va aparte;
|
|
192
|
+
con `editable`, el lápiz y el tacho.
|
|
181
193
|
- El `alt` de la vista previa dice «Vista previa».
|
|
182
194
|
- El atributo `title` del host se borra solo (no sale el tooltip gris del navegador).
|
|
183
195
|
- Ya trae el arreglo de iOS para el `:active` pegado.
|
|
@@ -31,14 +31,14 @@ Regla corta: **un dato, en su lugar, que se corrige rápido → inline · varios
|
|
|
31
31
|
> Todo lo de abajo es **propuesta, falta aprobación**.
|
|
32
32
|
>
|
|
33
33
|
> Uso medido el 03-10-2026 en `master-pedidos/src/app`: **0 usos**. Hay listas con campos siempre
|
|
34
|
-
> abiertos que se parecen (`pages/super-admin/master-settings/master-settings.html:
|
|
34
|
+
> abiertos que se parecen (`pages/super-admin/master-settings/master-settings.html:101`, nombre de
|
|
35
35
|
> cada categoría del home), pero ahí se editan varias filas y se guarda todo junto: está bien con
|
|
36
36
|
> `sui-input`.
|
|
37
37
|
|
|
38
38
|
| prop / evento | cuándo | fuente |
|
|
39
39
|
|---|---|---|
|
|
40
40
|
| `value` | El dato. `[(value)]` o `formControlName`, nunca los dos. | API |
|
|
41
|
-
| `placeholder` | Lo que se ve si está vacío: «Sin nombre». **Siempre**: el default es «
|
|
41
|
+
| `placeholder` | Lo que se ve si está vacío: «Sin nombre». **Siempre**: el default genérico es «Escribe aquí…» (en español desde el 04-10-2026). | propuesta, falta aprobación |
|
|
42
42
|
| `leftIcon` | Un ícono que dice qué dato es (`price-tag-3-line` para una categoría). `false` si el texto se explica solo. El default es `user-3-line`. | propuesta, falta aprobación |
|
|
43
43
|
| `editLabel` | Nombre accesible del lápiz: «Editar nombre». | propuesta, falta aprobación |
|
|
44
44
|
| `error` | El valor escrito no sirve (vacío, repetido). Solo se ve en edición; no trae mensaje. | propuesta, falta aprobación |
|
|
@@ -48,14 +48,15 @@ Regla corta: **un dato, en su lugar, que se corrige rápido → inline · varios
|
|
|
48
48
|
|
|
49
49
|
## Tamaño en mobile y en web
|
|
50
50
|
|
|
51
|
-
**No tiene `size`**: mide
|
|
52
|
-
|
|
51
|
+
**No tiene `size`**: mide 38 px de alto (8 + 20 + 8 de padding y línea, más 1 + 1 de borde) y sus
|
|
52
|
+
botones (lápiz, ✓, ✕) son de 24 × 24 (ícono de 20 + 2 de padding). En edición el texto sube a 16 px
|
|
53
|
+
en mobile (sin zoom de iOS). **No tiene tamaño suficiente para mobile**: los botones
|
|
53
54
|
de 24 px quedan lejos de los 44 que pide un dedo. Usarlo en el panel web; en el teléfono, editar
|
|
54
55
|
con un `sui-input` `large`.
|
|
55
56
|
|
|
56
57
|
| uso | mobile | web |
|
|
57
58
|
|---|---|---|
|
|
58
|
-
| renombrar en una lista | `sui-input` `large` en un modal | este,
|
|
59
|
+
| renombrar en una lista | `sui-input` `large` en un modal | este, 38 px |
|
|
59
60
|
|
|
60
61
|
## «No usar»: por qué no hoy y cuándo sí
|
|
61
62
|
|
|
@@ -72,7 +73,7 @@ con un `sui-input` `large`.
|
|
|
72
73
|
| input | tipo | default |
|
|
73
74
|
|---|---|---|
|
|
74
75
|
| `value` · model, `[(value)]` | `string` | `''` |
|
|
75
|
-
| `placeholder` | `string` | `'
|
|
76
|
+
| `placeholder` | `string` | `'Escribe aquí…'` |
|
|
76
77
|
| `leftIcon` | `string \| false` | `'user-3-line'` |
|
|
77
78
|
| `error` | `boolean` | `false` |
|
|
78
79
|
| `disabled` | `boolean` | `false` |
|
|
@@ -33,7 +33,7 @@ Regla corta: **dentro de una frase o al final de un campo → inline · campo
|
|
|
33
33
|
|
|
34
34
|
| prop | cuándo | fuente |
|
|
35
35
|
|---|---|---|
|
|
36
|
-
| `type="icon"` (default) | Con un ícono delante (
|
|
36
|
+
| `type="icon"` (default) | Con un ícono delante. Texto e ícono van atenuados (`text-sub-600`) salvo en hover, con foco o con el menú abierto. | según la guía del DS |
|
|
37
37
|
| `type="country"` + `flag` | No usar hoy: todo es Perú. | según la guía del DS (ejemplo «Country») |
|
|
38
38
|
| `items` | `{ value, label, sublabel?, icon?, flag?, disabled? }`. | API |
|
|
39
39
|
| `selected` / `selectedChange` | La opción elegida. O `formControlName`, nunca los dos. | API |
|
|
@@ -48,10 +48,13 @@ es la palabra, muy por debajo de los 44 px. **No tiene tamaño suficiente para m
|
|
|
48
48
|
teléfono, solo dentro de un `sui-input` (que da el alto) o con la frase en una fila que se toque
|
|
49
49
|
entera.
|
|
50
50
|
|
|
51
|
-
| uso | mobile | web |
|
|
52
|
-
|
|
53
|
-
| dentro de una frase | evitar: usar `sui-select` | 20 px, en línea con el texto |
|
|
54
|
-
| al final de un `sui-input` | el alto lo da el input (`large`) | el alto lo da el input (`medium`) |
|
|
51
|
+
| uso | mobile | web | fuente |
|
|
52
|
+
|---|---|---|---|
|
|
53
|
+
| dentro de una frase | evitar: usar `sui-select` | 20 px, en línea con el texto | propuesta, falta aprobación |
|
|
54
|
+
| al final de un `sui-input` | el alto lo da el input (`large`) | el alto lo da el input (`medium`) | propuesta, falta aprobación |
|
|
55
|
+
|
|
56
|
+
Las opciones del menú miden **36 px también en mobile**: a diferencia de `sui-select` y de los
|
|
57
|
+
compactos, este no tiene la regla de 44 en ≤ 767 px (`sui-inline-select.scss` no la trae).
|
|
55
58
|
|
|
56
59
|
## «No usar»: por qué no hoy y cuándo sí
|
|
57
60
|
|
package/docs/sui-input/README.md
CHANGED
|
@@ -35,11 +35,11 @@ Regla corta: **una línea → input · varias → textarea · de una lista → s
|
|
|
35
35
|
> fecha y contador) sin do/don't. Lo marcado «según la guía del DS» sale de esos ejemplos; el
|
|
36
36
|
> resto es **propuesta, falta aprobación**, salvo lo que ya es canon (CLAUDE.md, CANON-SUI).
|
|
37
37
|
>
|
|
38
|
-
> Uso medido el
|
|
39
|
-
> `master-ejercicios`): **
|
|
40
|
-
>
|
|
41
|
-
> 1 `datetime-local`. Tamaños:
|
|
42
|
-
>
|
|
38
|
+
> Uso medido el 04-10-2026 en `master-pedidos/src/app` (misma exclusión que `sui-badge`, más
|
|
39
|
+
> `master-ejercicios`): **195 usos en 61 archivos**. Tipos: 42 `text`, 36 sin `type` (`text`),
|
|
40
|
+
> 34 `amount`, 21 `search`, 21 `number`, 18 `tel`, 10 `email`, 7 `date`, 3 `password-toggle`,
|
|
41
|
+
> 2 `url`, 1 `datetime-local`. Tamaños: 88 `bp.isMobile() ? 'large' : 'medium'`, 77 sin `size`
|
|
42
|
+
> (`medium`), 18 `large`, 3 `xlarge`, 3 `medium`, 1 `small`, 3 `bp.controlSize()`, 2 otros dinámicos.
|
|
43
43
|
|
|
44
44
|
### `type` — qué dato es
|
|
45
45
|
|
|
@@ -61,20 +61,9 @@ El `type` decide el teclado del teléfono y el filtro de teclas. Por dentro, `nu
|
|
|
61
61
|
| `card` | No usar hoy: no hay pago con tarjeta. | según la guía del DS (ejemplo «Payment Input») |
|
|
62
62
|
| `button` | No usar hoy: campo de solo lectura con una acción al lado (copiar enlace). | según la guía del DS (ejemplo «With Button») |
|
|
63
63
|
|
|
64
|
-
**Usos de hoy que rompen la regla:**
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
`pages/customers/customers.html:28`, `pages/products/products.html:71`,
|
|
68
|
-
`components/map-picker-modal/map-picker-modal.html:14`, `pages/settings/team/team.html:59`,
|
|
69
|
-
`pages/super-admin/super-admin.html:63`…
|
|
70
|
-
- **21 `amount` sin `prefix="S/"`**, 15 de ellos con «(S/)» metido en el label:
|
|
71
|
-
`pages/super-admin/master-settings/master-settings.html:273` («Mínimo (S/)»),
|
|
72
|
-
`pages/business-onboarding/step-product/step-product.html:33` («Precio (S/)», placeholder «Ej: 25»),
|
|
73
|
-
`pages/super-admin/master-drivers/master-drivers.html:99`.
|
|
74
|
-
- **2 montos con `type="number"`** → `amount` + `prefix`: `pages/super-admin/super-admin.html:649`
|
|
75
|
-
(«Monto a cobrar»), `pages/super-admin/master-gastos/master-gastos.html:193` («Monto»).
|
|
76
|
-
- **3 `password` sin ojo** → `password-toggle`: `pages/auth/login/login.html:71`,
|
|
77
|
-
`pages/auth/register/register.html:121`, `:133`.
|
|
64
|
+
**Usos de hoy que rompen la regla:** ninguno (medido el 04-10-2026). Los 11 buscadores con
|
|
65
|
+
`type="text"`, los 21 `amount` sin `prefix="S/"`, los 2 montos con `type="number"` y los 3
|
|
66
|
+
`password` sin ojo se corrigieron en la app el 03-10-2026 (merge `70f937e4`).
|
|
78
67
|
|
|
79
68
|
### Las piezas
|
|
80
69
|
|
|
@@ -103,17 +92,11 @@ El `type` decide el teclado del teléfono y el filtro de teclas. Por dentro, `nu
|
|
|
103
92
|
| `closeOnOutsideClick` | Déjalo en `true`: tocar fuera baja el teclado. `false` solo si la pantalla maneja el foco a mano (1 uso). | código del DS |
|
|
104
93
|
| `leadingControl` / `trailingControl` / `leadingDivider` / `trailingDivider` | Componer un control adentro: el país del teléfono (`sui-compact-select-for-input` en `[data-slot=start]`) o una acción al lado. Hoy sin uso. | según la guía del DS (ejemplos «With Select» y «With Button») |
|
|
105
94
|
|
|
106
|
-
**Usos de hoy que rompen la regla
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
- **16 «(opcional)» escritos en el label** (input, textarea y select juntos) → `sublabel="(Opcional)"`:
|
|
112
|
-
`pages/driver/driver-profile/driver-profile.html:431` («Placa (opcional)»),
|
|
113
|
-
`pages/super-admin/master-plans/master-plans.html:131`, `pages/super-admin/super-admin.html:661`.
|
|
114
|
-
- **13 placeholders con `...`** (input, textarea y select) → `…`: `pages/customers/customers.html:28`
|
|
115
|
-
(«Buscar clientes...»), `pages/products/products.html:71`, `components/address-form-modal/address-form-modal.html:134`.
|
|
116
|
-
- **2 campos sin label en el login** (el placeholder hace de rótulo): `pages/auth/login/login.html:64`, `:71`.
|
|
95
|
+
**Usos de hoy que rompen la regla** (medido el 04-10-2026; los `sublabel` sin paréntesis, los
|
|
96
|
+
«(opcional)» en el label y los placeholders con `...` ya se corrigieron en la app, commits
|
|
97
|
+
`ce4a2d12` y `e0470b34`):
|
|
98
|
+
|
|
99
|
+
- **2 campos sin label en el login** (el placeholder hace de rótulo): `pages/auth/login/login.html:64`, `:72`.
|
|
117
100
|
- **6 campos con el label afuera** (`<sui-form-label>` suelto encima) en el onboarding del
|
|
118
101
|
repartidor: `pages/driver-onboarding/step-info/step-info.html:37`. Funciona, pero el error y el
|
|
119
102
|
`required` quedan desconectados del campo: va el `label` del propio input.
|
|
@@ -124,8 +107,10 @@ Los altos de `sui-input` son **los del botón a propósito** (`large` 48 y `xlar
|
|
|
124
107
|
extensión de SUI): un campo y un botón puestos lado a lado miden lo mismo. La guía del DS solo
|
|
125
108
|
tiene `medium` (40), `small` (36) y `xsmall` (32).
|
|
126
109
|
|
|
127
|
-
En large y xlarge el texto sube a 16 px (
|
|
128
|
-
prefijo van en 16/24 también en desktop. En mobile
|
|
110
|
+
En large y xlarge el texto sube a 16 px (canon, aprobado por el dueño el 03-10-2026): el valor, el placeholder y el
|
|
111
|
+
prefijo van en 16/24 también en desktop. En mobile el valor y el placeholder ya iban en 16 en
|
|
112
|
+
cualquier tamaño (por el zoom de iOS), y desde el 04-10-2026 el prefijo `S/` los acompaña: en el
|
|
113
|
+
teléfono también va en 16 en todos los tamaños (antes se quedaba en 14 al lado de un monto de 16).
|
|
129
114
|
|
|
130
115
|
| uso | mobile | web | fuente |
|
|
131
116
|
|---|---|---|---|
|
|
@@ -140,11 +125,12 @@ prefijo van en 16/24 también en desktop. En mobile cualquier tamaño ya iba en
|
|
|
140
125
|
```
|
|
141
126
|
|
|
142
127
|
No uses `bp.controlSize()` en campos: da `xlarge` (52) en mobile, más alto que el botón `large`
|
|
143
|
-
del footer (3 usos hoy
|
|
128
|
+
del footer (3 usos hoy: `pages/customer/checkout/checkout.html:269`, `:384`,
|
|
129
|
+
`pages/super-admin/master-sonidos-push/master-sonidos-push.html:43`). El texto sube solo a 16 px
|
|
144
130
|
en mobile (evita el zoom de iOS): no hace falta pedirlo.
|
|
145
131
|
|
|
146
|
-
Hoy: **
|
|
147
|
-
botón `large`).
|
|
132
|
+
Hoy: **88 usos** ya van con `bp.isMobile() ? 'large' : 'medium'`; **77 sin `size`** quedan en 40 px
|
|
133
|
+
también en el teléfono (no alinea con el botón `large`).
|
|
148
134
|
|
|
149
135
|
## «No usar»: por qué no hoy y cuándo sí
|
|
150
136
|
|
|
@@ -229,6 +215,11 @@ proyectados con `leadingControl` / `trailingControl`).
|
|
|
229
215
|
- Tocar fuera baja el teclado (`closeOnOutsideClick`). Ya distingue tocar otro campo: no hace falta
|
|
230
216
|
agregar lógica de blur en la pantalla.
|
|
231
217
|
- El `(keydown.enter)` puesto en el host funciona: el evento sube desde el `<input>` de adentro.
|
|
218
|
+
- **Accesibilidad (04-10-2026)**: cada campo trae su `id`; el `label` interno apunta a él con `for`,
|
|
219
|
+
el hint o el error se enlazan con `aria-describedby` y `error` pone `aria-invalid`. No hace
|
|
220
|
+
falta agregarlos a mano. Un `sui-form-label` puesto **afuera** no conoce ese `id`: usa `[label]`.
|
|
221
|
+
- En el teléfono la X de limpiar y el ojo se ven de 12-20 px pero se tocan en 44 × 44 (área
|
|
222
|
+
invisible, 04-10-2026).
|
|
232
223
|
|
|
233
224
|
## Ejemplo
|
|
234
225
|
|
|
@@ -63,20 +63,24 @@ Regla corta: **servicio externo que se prende y se configura → integration-swi
|
|
|
63
63
|
|
|
64
64
|
## Tamaño en mobile y en web
|
|
65
65
|
|
|
66
|
-
|
|
66
|
+
| size | «Administrar» | interruptor | fuente |
|
|
67
|
+
|---|---|---|---|
|
|
68
|
+
| `medium` (default) | 38 (8 + 20 + 8 de padding y 2 de borde), texto 14 | `sui-switch` `medium`, 32 × 20 | Figma |
|
|
69
|
+
| `large` | 44 (9 + 24 + 9 + 2), texto 16 | igual: 32 × 20 | canon (dueño, 04-10-2026): piso táctil 44 en el teléfono. Size nuevo del 04-10-2026 |
|
|
67
70
|
|
|
68
71
|
| uso | mobile | web |
|
|
69
72
|
|---|---|---|
|
|
70
|
-
|
|
|
71
|
-
| «Administrar» | **36 de alto: bajo el piso de 44** | 36 |
|
|
73
|
+
| «Administrar» | `large` (44) | `medium` (38) |
|
|
72
74
|
| layout | `vertical` | `horizontal` |
|
|
73
75
|
|
|
74
76
|
```html
|
|
75
|
-
<sui-integration-switch [
|
|
77
|
+
<sui-integration-switch [size]="bp.isMobile() ? 'large' : 'medium'"
|
|
78
|
+
[type]="bp.isMobile() ? 'vertical' : 'horizontal'" … />
|
|
76
79
|
```
|
|
77
80
|
|
|
78
|
-
**
|
|
79
|
-
|
|
81
|
+
**El interruptor sigue bajo el piso**: es `sui-switch` `medium` fijo (20 de alto) en los dos sizes,
|
|
82
|
+
y a diferencia de `sui-switch-card`, tocar la tarjeta no prende nada: solo responde el
|
|
83
|
+
interruptor. Para algo que se prende y apaga en el teléfono, `sui-switch-card` es la salida.
|
|
80
84
|
|
|
81
85
|
## «No usar»: por qué no hoy y cuándo sí
|
|
82
86
|
|
|
@@ -94,6 +98,7 @@ de usarlo en el teléfono hace falta un `size` en el DS (no se inventó aquí).
|
|
|
94
98
|
|---|---|---|
|
|
95
99
|
| `type` | `'horizontal' \| 'vertical'` | `'horizontal'` |
|
|
96
100
|
| `appearance` | `'card' \| 'list'` | `'card'` |
|
|
101
|
+
| `size` | `'medium' \| 'large'` | `'medium'` |
|
|
97
102
|
| `title` | `string` | `''` |
|
|
98
103
|
| `description` | `string \| null` | `null` |
|
|
99
104
|
| `brandIconSrc` | `string \| null` | `null` |
|
|
@@ -123,10 +128,12 @@ Slot: `[sui-integration-brand]` (reemplaza al logo). Implementa `ControlValueAcc
|
|
|
123
128
|
- **Es controlada**: `active` es input y `activeChange` solo avisa; sin actualizar tu señal el
|
|
124
129
|
interruptor no se mueve.
|
|
125
130
|
- El estado se llama `active`, no `checked` (como en `sui-switch-label`).
|
|
126
|
-
- El interruptor no
|
|
131
|
+
- El interruptor no cambia con `size`: siempre `sui-switch` `medium`. El `size` del componente (04-10-2026) solo agranda «Administrar».
|
|
127
132
|
- En `vertical` el interruptor va arriba a la derecha y «Administrar» abajo a ancho completo.
|
|
128
133
|
- `appearance="list"` no tiene borde ni fondo ni padding: va dentro de algo que los ponga.
|
|
129
134
|
- El host borra el atributo `title` del DOM; el título se ve como texto, no como `aria-label`.
|
|
135
|
+
El interruptor toma su nombre de ese título (y su descripción de `description`) con
|
|
136
|
+
`aria-labelledby` (revisión 04-10-2026); antes el lector decía solo «interruptor».
|
|
130
137
|
|
|
131
138
|
## Ejemplo
|
|
132
139
|
|
package/docs/sui-kbd/README.md
CHANGED
|
@@ -46,10 +46,10 @@ Usos de hoy que rompen la regla: **0**.
|
|
|
46
46
|
|
|
47
47
|
## Tamaño en mobile y en web
|
|
48
48
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
breakpoints de la app (`bp`, en `services/breakpoints.service.ts`)
|
|
52
|
-
|
|
49
|
+
No es táctil: es una tecla dibujada. En mobile no hay teclado físico, así que no se muestra; en
|
|
50
|
+
web tiene un solo tamaño. Donde la pantalla existe en los dos (panel del local, super admin) se
|
|
51
|
+
oculta con el servicio de breakpoints de la app (`bp`, en `services/breakpoints.service.ts`). Todo
|
|
52
|
+
es **propuesta**.
|
|
53
53
|
|
|
54
54
|
| uso | mobile | web |
|
|
55
55
|
|---|---|---|
|
|
@@ -12,7 +12,7 @@ Story: [Atoms/Icon/Key Icon](https://sui-design-system.web.app/?path=/docs/atoms
|
|
|
12
12
|
## Cuándo usarlo / cuándo no
|
|
13
13
|
|
|
14
14
|
**Úsalo** cuando un ícono tiene que **anclar** algo: el inicio de una fila, la cabecera de un
|
|
15
|
-
modal, el resultado de una acción («Cuenta bloqueada»,
|
|
15
|
+
modal, el resultado de una acción («Cuenta bloqueada», «Gracias por calificar»).
|
|
16
16
|
|
|
17
17
|
**No lo uses** para:
|
|
18
18
|
|
|
@@ -35,7 +35,11 @@ modal, el resultado de una acción («Cuenta bloqueada», «¡Gracias por califi
|
|
|
35
35
|
| `lighter` | El ícono dice un estado: el color del fondo **es** el significado («Cuenta bloqueada» en rojo, «Calificación enviada» en verde). | propuesta |
|
|
36
36
|
| `stroke` (default) | Ícono neutro al inicio de una fila, sobre fondo blanco. **Siempre con `color="gray"`.** | propuesta |
|
|
37
37
|
|
|
38
|
-
### `color` — mismo significado que el badge
|
|
38
|
+
### `color` — mismo significado que el badge, salvo `teal`
|
|
39
|
+
|
|
40
|
+
Ojo: aquí `teal` pinta el token **verified** (celeste, `--sui-state-verified-*`), que en
|
|
41
|
+
`sui-badge` es `sky`; el `teal` del badge es **stable** (verde agua). La key-icon no tiene `sky`
|
|
42
|
+
ni un color para stable.
|
|
39
43
|
|
|
40
44
|
| valor | estado de la paleta | cuándo | fuente |
|
|
41
45
|
|---|---|---|---|
|