@ajuarezso/sui-design-system 0.18.10 → 0.20.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/INDEX.md +136 -0
- package/docs/sui-alert/README.md +216 -0
- package/docs/sui-app-store-badge/README.md +137 -0
- package/docs/sui-avatar/README.md +263 -0
- package/docs/sui-avatar-group/README.md +115 -0
- package/docs/sui-badge/README.md +212 -0
- package/docs/sui-brand-logo/README.md +143 -0
- package/docs/sui-button/README.md +192 -0
- package/docs/sui-button-group/README.md +178 -0
- package/docs/sui-button-group-item/README.md +102 -0
- package/docs/sui-checkbox/README.md +147 -0
- package/docs/sui-checkbox-label/README.md +143 -0
- package/docs/sui-circular-progress-bar/README.md +131 -0
- package/docs/sui-color-dot/README.md +112 -0
- package/docs/sui-color-picker/README.md +124 -0
- package/docs/sui-compact-avatar-group/README.md +103 -0
- package/docs/sui-compact-button/README.md +190 -0
- package/docs/sui-content-divider/README.md +124 -0
- package/docs/sui-divider/README.md +102 -0
- package/docs/sui-emoji/README.md +138 -0
- package/docs/sui-fancy-button/README.md +148 -0
- package/docs/sui-file-icon/README.md +103 -0
- package/docs/sui-flag/README.md +99 -0
- package/docs/sui-form-hint/README.md +124 -0
- package/docs/sui-form-label/README.md +148 -0
- package/docs/sui-icon/README.md +135 -0
- package/docs/sui-kbd/README.md +97 -0
- package/docs/sui-key-icon/README.md +125 -0
- package/docs/sui-link-button/README.md +221 -0
- package/docs/sui-logo/README.md +152 -0
- package/docs/sui-payment-icon/README.md +98 -0
- package/docs/sui-progress-bar/README.md +132 -0
- package/docs/sui-progress-bar-label/README.md +143 -0
- package/docs/sui-radio/README.md +134 -0
- package/docs/sui-radio-label/README.md +137 -0
- package/docs/sui-rating/README.md +198 -0
- package/docs/sui-segmented-control/README.md +144 -0
- package/docs/sui-slider/README.md +143 -0
- package/docs/sui-social-button/README.md +158 -0
- package/docs/sui-status-badge/README.md +164 -0
- package/docs/sui-switch/README.md +146 -0
- package/docs/sui-switch-label/README.md +139 -0
- package/docs/sui-tag/README.md +145 -0
- package/fesm2022/ajuarezso-sui-design-system.mjs +207 -52
- package/fesm2022/ajuarezso-sui-design-system.mjs.map +1 -1
- package/package.json +1 -1
- package/types/ajuarezso-sui-design-system.d.ts +177 -28
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: sui-tag
|
|
3
|
+
selector: sui-tag
|
|
4
|
+
resumen: Chip neutro que nombra algo elegido o aplicado y que la persona puede quitar
|
|
5
|
+
alternativas: [sui-badge (etiqueta de solo lectura, con color y significado), sui-status-badge (resultado de un ciclo), sui-tab-chips / sui-filter (chips para elegir), sui-tag-input (campo que junta tags)]
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# sui-tag
|
|
9
|
+
|
|
10
|
+
Story: [Atoms/Tag](https://sui-design-system.web.app/?path=/docs/atoms-tag--docs)
|
|
11
|
+
|
|
12
|
+
## Cuándo usarlo / cuándo no
|
|
13
|
+
|
|
14
|
+
**Úsalo** para nombrar algo que la persona **eligió o aplicó y puede quitar**: un filtro activo
|
|
15
|
+
(«Abierto ahora ✕»), un local o una persona elegidos en una lista, una zona agregada. También
|
|
16
|
+
cuando la etiqueta lleva **avatar, logo o bandera** a la izquierda.
|
|
17
|
+
|
|
18
|
+
El tag **no tiene color**: es siempre gris neutro, así que nunca dice un estado.
|
|
19
|
+
|
|
20
|
+
**No lo uses** para:
|
|
21
|
+
|
|
22
|
+
- Una etiqueta de solo lectura sin nada a la izquierda: `sui-badge` gray (más liviano, va al lado
|
|
23
|
+
de un nombre).
|
|
24
|
+
- Algo con significado de color (pendiente, error, nuevo): `sui-badge` o `sui-status-badge`.
|
|
25
|
+
- **Elegir** entre opciones (chips que se prenden y apagan): `sui-tab-chips`, `sui-filter` o
|
|
26
|
+
`sui-segmented-control`. El tag no tiene estado «seleccionado».
|
|
27
|
+
- Escribir varios valores en un campo: `sui-tag-input`.
|
|
28
|
+
|
|
29
|
+
Regla corta: **se quita o lleva avatar/logo/bandera → tag · solo se lee → badge · se elige →
|
|
30
|
+
tab-chips o filter.**
|
|
31
|
+
|
|
32
|
+
## Qué variante usar
|
|
33
|
+
|
|
34
|
+
> **La guía del DS dice para qué es, no cuándo usar cada estilo.** Su página lo define como
|
|
35
|
+
> «categorizar y etiquetar contenido» y muestra `stroke` (default), `gray`, deshabilitado, con
|
|
36
|
+
> imagen, con avatar y con botón de quitar. No trae do/don't. Lo marcado «según la guía del DS»
|
|
37
|
+
> sale de ahí; el resto es **propuesta, falta aprobación**.
|
|
38
|
+
>
|
|
39
|
+
> Uso medido el 03-10-2026 en `master-pedidos/src/app`: **0 tags**, sin contar prototipos ni
|
|
40
|
+
> vitrinas (`master-preview`, `master-prototipos`, `mockup-sheets-*`, `dx/*`, `_guia-*`,
|
|
41
|
+
> `master-rutina`, `master-medico`, `master-ejercicios`, `dev-index`). Tampoco hay chips hechos a
|
|
42
|
+
> mano con botón de quitar: los chips de la app son para elegir (`rate-order`,
|
|
43
|
+
> `product-detail-view`, `driver-schedule`), y eso no es un tag.
|
|
44
|
+
|
|
45
|
+
| propiedad | valor | cuándo | ejemplo | fuente |
|
|
46
|
+
|---|---|---|---|---|
|
|
47
|
+
| `tagStyle` | `stroke` (default) | Lo normal. Sirve sobre cualquier fondo (blanco o gris claro). | — | según la guía del DS (default) |
|
|
48
|
+
| `tagStyle` | `gray` | Solo sobre blanco, cuando hay muchos tags juntos y el borde hace ruido. **Sobre gris claro desaparece.** | Varios filtros aplicados en fila | propuesta, falta aprobación |
|
|
49
|
+
| `dismissible` | `true` | Lo que se nombra se puede quitar. Emite `(dismiss)`; la pantalla lo saca. | «Abierto ahora ✕» | según la guía del DS |
|
|
50
|
+
| `dismissLabel` | texto | Siempre «Quitar» + el nombre: el lector de pantalla no ve el texto del tag desde la X. | `dismissLabel="Quitar Abierto ahora"` | propuesta, falta aprobación |
|
|
51
|
+
| `leading` + `[data-slot=start]` | avatar | Nombra a una persona o un local. | «Burger House» con su logo | según la guía del DS (con avatar, con imagen) |
|
|
52
|
+
| `leading` + `[data-slot=start]` | ícono de 16 | El ícono dice qué tipo de dato es. | «Andahuaylas» con un pin | según la guía del DS (`Tag.Icon`) |
|
|
53
|
+
| `sublabel` | texto | Cuántos resultados trae ese filtro, entre paréntesis. | «Pollerías (12)» | propuesta, falta aprobación |
|
|
54
|
+
| `disabled` | `true` | **No usar** hoy (ver abajo). | — | según la guía del DS (existe) · propuesta (cuándo) |
|
|
55
|
+
| `interactive` | `true` | **No usar** hoy (ver abajo). | — | propuesta, falta aprobación |
|
|
56
|
+
|
|
57
|
+
Usos de hoy que rompen la regla: **0** (no hay usos).
|
|
58
|
+
|
|
59
|
+
## No usar: por qué no hoy y cuándo sí
|
|
60
|
+
|
|
61
|
+
| qué | por qué no hoy | cuándo sí, en un flujo nuevo |
|
|
62
|
+
|---|---|---|
|
|
63
|
+
| El componente entero (0 usos) | No hay filtros aplicados que se quiten ni listas de elegidos con avatar. | Filtros aplicados en las tablas del super admin; los locales elegidos para una campaña; las zonas que cubre un repartidor. |
|
|
64
|
+
| `disabled` | No hay filtros fijos. | Un filtro que el sistema pone y la persona no puede quitar («Tu distrito»). |
|
|
65
|
+
| `interactive` | Un tag tocable se confunde con un chip para elegir. | Un tag que abre la ficha de lo que nombra (el local de una lista de locales vinculados). |
|
|
66
|
+
|
|
67
|
+
## Tamaño en mobile y en web
|
|
68
|
+
|
|
69
|
+
Criterio de la app: **en mobile se lee y se toca con el dedo, así que va más grande; en web
|
|
70
|
+
(desktop), más chico.** Mobile es `≤ 767 px`, el mismo corte de `BreakpointsService.isMobile()`
|
|
71
|
+
en master-pedidos. Fuente: canon del dueño (03-10-2026), el mismo patrón que ya usan 27 controles
|
|
72
|
+
de la app.
|
|
73
|
+
|
|
74
|
+
| size | alto | texto | leading | X de quitar (área táctil) |
|
|
75
|
+
|---|---|---|---|---|
|
|
76
|
+
| `medium` (default) | 24 px | `label-xs` 12/16 | 16 | 16 (16) |
|
|
77
|
+
| `large` | 32 px | `label-sm` 14/20 | 20 | 20 (32) |
|
|
78
|
+
| `xlarge` | 40 px | `label-md` 16/24 | 20 | 24 (40) |
|
|
79
|
+
|
|
80
|
+
`medium` es el de Figma; `large` y `xlarge` son extensión SUI (03-10-2026), en la escala del
|
|
81
|
+
`sui-button` (32 · 40). En los dos grandes la X tiene un área táctil invisible que llega al alto
|
|
82
|
+
del tag, sin cambiar cómo se ve.
|
|
83
|
+
|
|
84
|
+
| uso | mobile | web | fuente |
|
|
85
|
+
|---|---|---|---|
|
|
86
|
+
| Tag con X (filtro aplicado, elegido que se quita) | `xlarge` (40) | `medium` (24) | propuesta: el tamaño es extensión SUI aprobada (03-10-2026); el «cuándo» falta aprobarlo |
|
|
87
|
+
| Tag de solo lectura (sin X) | `large` (32) | `medium` (24) | propuesta: el tamaño es extensión SUI aprobada (03-10-2026); el «cuándo» falta aprobarlo |
|
|
88
|
+
| Separación entre tags | 8 px | 4–6 px | propuesta, falta aprobación |
|
|
89
|
+
|
|
90
|
+
```html
|
|
91
|
+
<sui-tag [size]="bp.isMobile() ? 'xlarge' : 'medium'" [dismissible]="true" (dismiss)="quitar(f)">{{ f.nombre }}</sui-tag>
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
El leading proyectado (ícono, avatar, bandera) se escala solo a la caja de 20 en los grandes; un
|
|
95
|
+
`<i class="ri-…">` necesita además su `font-size` en 20.
|
|
96
|
+
|
|
97
|
+
## API
|
|
98
|
+
|
|
99
|
+
<!-- api:inicio -->
|
|
100
|
+
<!-- generada: no editar a mano — `npm run docs` -->
|
|
101
|
+
|
|
102
|
+
| input | tipo | default |
|
|
103
|
+
|---|---|---|
|
|
104
|
+
| `tagStyle` | `'stroke' \| 'gray'` | `'stroke'` |
|
|
105
|
+
| `size` | `'medium' \| 'large' \| 'xlarge'` | `'medium'` |
|
|
106
|
+
| `leading` | `boolean` | `false` |
|
|
107
|
+
| `sublabel` | `string` | `''` |
|
|
108
|
+
| `dismissible` | `boolean` | `false` |
|
|
109
|
+
| `interactive` | `boolean` | `false` |
|
|
110
|
+
| `disabled` | `boolean` | `false` |
|
|
111
|
+
| `dismissLabel` | `string` | `'Quitar'` |
|
|
112
|
+
|
|
113
|
+
| output | payload |
|
|
114
|
+
|---|---|
|
|
115
|
+
| `dismiss` | `void` |
|
|
116
|
+
<!-- api:fin -->
|
|
117
|
+
|
|
118
|
+
Slots: `[data-slot=start]` (avatar, logo, bandera o ícono de 16 px) y `<ng-content>` (el texto).
|
|
119
|
+
|
|
120
|
+
## Trampas
|
|
121
|
+
|
|
122
|
+
- **`leading` no se prende solo**: si proyectas algo en `[data-slot=start]` y no pones
|
|
123
|
+
`[leading]="true"`, el padding queda mal.
|
|
124
|
+
- El estilo se llama **`tagStyle`** (en badge es `variant`, en status-badge `appearance`).
|
|
125
|
+
- **No tiene `color`**. Si hace falta color, no es un tag.
|
|
126
|
+
- El tag no saca nada de la lista: `(dismiss)` avisa y la pantalla lo quita.
|
|
127
|
+
- `disabled` bloquea también la X.
|
|
128
|
+
- Un avatar o una bandera proyectados no se ponen grises con `disabled`: los atenúa la pantalla.
|
|
129
|
+
- `sui-avatar` no tiene 16 px: el `xs` (20) se escala por CSS dentro del slot.
|
|
130
|
+
- Radio de 6 px, 24 px de alto, sin mayúsculas: no es un badge (radio completo).
|
|
131
|
+
|
|
132
|
+
## Ejemplo
|
|
133
|
+
|
|
134
|
+
```html
|
|
135
|
+
<!-- Filtro aplicado que se puede quitar -->
|
|
136
|
+
<sui-tag [dismissible]="true" dismissLabel="Quitar Abierto ahora" (dismiss)="quitarFiltro('abierto')">
|
|
137
|
+
Abierto ahora
|
|
138
|
+
</sui-tag>
|
|
139
|
+
|
|
140
|
+
<!-- Un local elegido, con su logo -->
|
|
141
|
+
<sui-tag [leading]="true" [dismissible]="true" dismissLabel="Quitar Burger House">
|
|
142
|
+
<sui-avatar data-slot="start" size="xs" [src]="local.imageUrl" [initials]="'B'" />
|
|
143
|
+
Burger House
|
|
144
|
+
</sui-tag>
|
|
145
|
+
```
|