@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.
Files changed (47) hide show
  1. package/docs/INDEX.md +136 -0
  2. package/docs/sui-alert/README.md +216 -0
  3. package/docs/sui-app-store-badge/README.md +137 -0
  4. package/docs/sui-avatar/README.md +263 -0
  5. package/docs/sui-avatar-group/README.md +115 -0
  6. package/docs/sui-badge/README.md +212 -0
  7. package/docs/sui-brand-logo/README.md +143 -0
  8. package/docs/sui-button/README.md +192 -0
  9. package/docs/sui-button-group/README.md +178 -0
  10. package/docs/sui-button-group-item/README.md +102 -0
  11. package/docs/sui-checkbox/README.md +147 -0
  12. package/docs/sui-checkbox-label/README.md +143 -0
  13. package/docs/sui-circular-progress-bar/README.md +131 -0
  14. package/docs/sui-color-dot/README.md +112 -0
  15. package/docs/sui-color-picker/README.md +124 -0
  16. package/docs/sui-compact-avatar-group/README.md +103 -0
  17. package/docs/sui-compact-button/README.md +190 -0
  18. package/docs/sui-content-divider/README.md +124 -0
  19. package/docs/sui-divider/README.md +102 -0
  20. package/docs/sui-emoji/README.md +138 -0
  21. package/docs/sui-fancy-button/README.md +148 -0
  22. package/docs/sui-file-icon/README.md +103 -0
  23. package/docs/sui-flag/README.md +99 -0
  24. package/docs/sui-form-hint/README.md +124 -0
  25. package/docs/sui-form-label/README.md +148 -0
  26. package/docs/sui-icon/README.md +135 -0
  27. package/docs/sui-kbd/README.md +97 -0
  28. package/docs/sui-key-icon/README.md +125 -0
  29. package/docs/sui-link-button/README.md +221 -0
  30. package/docs/sui-logo/README.md +152 -0
  31. package/docs/sui-payment-icon/README.md +98 -0
  32. package/docs/sui-progress-bar/README.md +132 -0
  33. package/docs/sui-progress-bar-label/README.md +143 -0
  34. package/docs/sui-radio/README.md +134 -0
  35. package/docs/sui-radio-label/README.md +137 -0
  36. package/docs/sui-rating/README.md +198 -0
  37. package/docs/sui-segmented-control/README.md +144 -0
  38. package/docs/sui-slider/README.md +143 -0
  39. package/docs/sui-social-button/README.md +158 -0
  40. package/docs/sui-status-badge/README.md +164 -0
  41. package/docs/sui-switch/README.md +146 -0
  42. package/docs/sui-switch-label/README.md +139 -0
  43. package/docs/sui-tag/README.md +145 -0
  44. package/fesm2022/ajuarezso-sui-design-system.mjs +207 -52
  45. package/fesm2022/ajuarezso-sui-design-system.mjs.map +1 -1
  46. package/package.json +1 -1
  47. 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
+ ```