@adamosuiteservices/ui 2.13.4 → 2.14.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/dist/{button-Bn4LFAa9.js → button-B0lWuG-D.js} +27 -18
  2. package/dist/{button-Day6_fbu.cjs → button-DVrteFz9.cjs} +2 -2
  3. package/dist/button.cjs +1 -1
  4. package/dist/button.js +1 -1
  5. package/dist/{calendar-B1_ybTg0.js → calendar-CfqtuOWv.js} +1 -1
  6. package/dist/{calendar-CZkzHgYi.cjs → calendar-CpUN6BGK.cjs} +1 -1
  7. package/dist/calendar.cjs +1 -1
  8. package/dist/calendar.js +1 -1
  9. package/dist/colors.css +1 -1
  10. package/dist/{combobox-BOi7QzmO.js → combobox-B8HMlZy6.js} +1 -1
  11. package/dist/{combobox-0ndFo07_.cjs → combobox-Btj-hiBy.cjs} +1 -1
  12. package/dist/combobox.cjs +1 -1
  13. package/dist/combobox.js +1 -1
  14. package/dist/components/ui/alert/alert.d.ts +1 -1
  15. package/dist/components/ui/button/button.d.ts +3 -2
  16. package/dist/components/ui/card/card.d.ts +2 -2
  17. package/dist/date-picker-selector.cjs +1 -1
  18. package/dist/date-picker-selector.js +3 -3
  19. package/dist/file-upload.cjs +1 -1
  20. package/dist/file-upload.js +1 -1
  21. package/dist/full-screen-loader.cjs +1 -1
  22. package/dist/full-screen-loader.js +1 -1
  23. package/dist/input-group.cjs +1 -1
  24. package/dist/input-group.js +1 -1
  25. package/dist/pagination.cjs +1 -1
  26. package/dist/pagination.js +1 -1
  27. package/dist/sidebar.cjs +1 -1
  28. package/dist/sidebar.js +1 -1
  29. package/dist/styles.css +1 -1
  30. package/dist/tabs.cjs +14 -16
  31. package/dist/tabs.js +17 -19
  32. package/docs/AI-GUIDE.md +321 -321
  33. package/docs/components/layout/full-screen-loader.md +2 -2
  34. package/docs/components/layout/sidebar.md +399 -399
  35. package/docs/components/layout/toaster.md +436 -436
  36. package/docs/components/ui/accordion-rounded.md +584 -584
  37. package/docs/components/ui/accordion.md +269 -269
  38. package/docs/components/ui/button.md +35 -23
  39. package/docs/components/ui/calendar.md +1159 -1159
  40. package/docs/components/ui/card.md +1455 -1455
  41. package/docs/components/ui/checkbox.md +292 -292
  42. package/docs/components/ui/collapsible.md +323 -323
  43. package/docs/components/ui/dialog.md +628 -628
  44. package/docs/components/ui/field.md +706 -706
  45. package/docs/components/ui/hover-card.md +446 -446
  46. package/docs/components/ui/kbd.md +434 -434
  47. package/docs/components/ui/label.md +359 -359
  48. package/docs/components/ui/pagination.md +650 -650
  49. package/docs/components/ui/popover.md +536 -536
  50. package/docs/components/ui/progress.md +182 -182
  51. package/docs/components/ui/radio-group.md +311 -311
  52. package/docs/components/ui/separator.md +214 -214
  53. package/docs/components/ui/sheet.md +174 -174
  54. package/docs/components/ui/skeleton.md +140 -140
  55. package/docs/components/ui/spinner.md +170 -170
  56. package/docs/components/ui/switch.md +408 -408
  57. package/docs/components/ui/tabs-underline.md +106 -106
  58. package/docs/components/ui/tabs.md +125 -122
  59. package/docs/components/ui/textarea.md +243 -243
  60. package/docs/components/ui/toggle.md +237 -237
  61. package/docs/components/ui/tooltip.md +317 -317
  62. package/docs/components/ui/typography.md +320 -320
  63. package/package.json +1 -1
@@ -1,317 +1,317 @@
1
- # Tooltip
2
-
3
- Mensaje flotante informativo en hover/focus. Basado en Radix UI con arrow.
4
-
5
- ## Descripción
6
-
7
- El componente `Tooltip` muestra información adicional al hacer hover sobre un elemento.
8
-
9
- ## Importación
10
-
11
- ```typescript
12
- import {
13
- Tooltip,
14
- TooltipContent,
15
- TooltipProvider,
16
- TooltipTrigger,
17
- } from "@adamosuiteservices/ui/tooltip";
18
- ```
19
-
20
- ## Anatomía
21
-
22
- ```tsx
23
- <Tooltip>
24
- <TooltipTrigger>Hover me</TooltipTrigger>
25
- <TooltipContent>
26
- <p>Tooltip content</p>
27
- </TooltipContent>
28
- </Tooltip>
29
- ```
30
-
31
- **Componentes**: 4 (TooltipProvider, Tooltip, TooltipTrigger, TooltipContent)
32
-
33
- ## Props
34
-
35
- ### Tooltip (Root)
36
-
37
- | Prop | Tipo | Descripción |
38
- | --------------- | ------------------------- | --------------------------------------- |
39
- | `open` | `boolean` | Estado controlado |
40
- | `defaultOpen` | `boolean` | Estado inicial |
41
- | `onOpenChange` | `(open: boolean) => void` | Callback al cambiar |
42
- | `delayDuration` | `number` | Delay antes de mostrar (ms, default: 0) |
43
-
44
- ### TooltipTrigger
45
-
46
- | Prop | Tipo | Descripción |
47
- | --------- | --------- | ---------------------------- |
48
- | `asChild` | `boolean` | Renderiza como child element |
49
-
50
- ### TooltipContent
51
-
52
- | Prop | Tipo | Descripción |
53
- | ------------ | ---------------------------------------- | ------------------------------------- |
54
- | `side` | `"top" \| "right" \| "bottom" \| "left"` | Posición del tooltip |
55
- | `sideOffset` | `number` | Offset desde trigger (px, default: 0) |
56
- | `align` | `"start" \| "center" \| "end"` | Alineación |
57
- | `className` | `string` | Clases CSS adicionales |
58
-
59
- ### TooltipProvider
60
-
61
- | Prop | Tipo | Descripción |
62
- | --------------- | -------- | ----------------------------- |
63
- | `delayDuration` | `number` | Delay global (ms, default: 0) |
64
-
65
- ## Patrones de Uso
66
-
67
- ### Básico
68
-
69
- ```tsx
70
- import {
71
- Tooltip,
72
- TooltipContent,
73
- TooltipTrigger,
74
- } from "@adamosuiteservices/ui/tooltip";
75
- import { Button } from "@adamosuiteservices/ui/button";
76
-
77
- <Tooltip>
78
- <TooltipTrigger asChild>
79
- <Button variant="outline">Hover</Button>
80
- </TooltipTrigger>
81
- <TooltipContent>
82
- <p>Add to library</p>
83
- </TooltipContent>
84
- </Tooltip>;
85
- ```
86
-
87
- ### Con Icono
88
-
89
- ```tsx
90
- import { Icon } from "@adamosuiteservices/ui/icon";
91
-
92
- <Tooltip>
93
- <TooltipTrigger asChild>
94
- <Button variant="outline" size="icon">
95
- <Icon symbol="info" className="text-lg" />
96
- </Button>
97
- </TooltipTrigger>
98
- <TooltipContent>
99
- <p>More information</p>
100
- </TooltipContent>
101
- </Tooltip>;
102
- ```
103
-
104
- ### Posiciones
105
-
106
- ```tsx
107
- // Top (default)
108
- <Tooltip>
109
- <TooltipTrigger asChild>
110
- <Button>Top</Button>
111
- </TooltipTrigger>
112
- <TooltipContent side="top">
113
- <p>Tooltip on top</p>
114
- </TooltipContent>
115
- </Tooltip>
116
-
117
- // Right
118
- <TooltipContent side="right"><p>Tooltip on right</p></TooltipContent>
119
-
120
- // Bottom
121
- <TooltipContent side="bottom"><p>Tooltip on bottom</p></TooltipContent>
122
-
123
- // Left
124
- <TooltipContent side="left"><p>Tooltip on left</p></TooltipContent>
125
- ```
126
-
127
- ### Con Offset
128
-
129
- ```tsx
130
- <Tooltip>
131
- <TooltipTrigger asChild>
132
- <Button>With Offset</Button>
133
- </TooltipTrigger>
134
- <TooltipContent sideOffset={10}>
135
- <p>10px offset from trigger</p>
136
- </TooltipContent>
137
- </Tooltip>
138
- ```
139
-
140
- ### Con Delay
141
-
142
- ```tsx
143
- <TooltipProvider delayDuration={800}>
144
- <Tooltip>
145
- <TooltipTrigger asChild>
146
- <Button>Slow Tooltip</Button>
147
- </TooltipTrigger>
148
- <TooltipContent>
149
- <p>Appears after 800ms</p>
150
- </TooltipContent>
151
- </Tooltip>
152
- </TooltipProvider>
153
- ```
154
-
155
- ### Con Provider Global
156
-
157
- Para múltiples tooltips, usa TooltipProvider:
158
-
159
- ```tsx
160
- <TooltipProvider delayDuration={300}>
161
- <Tooltip>...</Tooltip>
162
- <Tooltip>...</Tooltip>
163
- </TooltipProvider>
164
- ```
165
-
166
- ### Action Buttons
167
-
168
- ```tsx
169
- <div className="flex gap-2">
170
- <Tooltip>
171
- <TooltipTrigger asChild>
172
- <Button size="icon" variant="outline">
173
- <Icon symbol="content_copy" className="text-lg" />
174
- </Button>
175
- </TooltipTrigger>
176
- <TooltipContent>
177
- <p>Copy to clipboard</p>
178
- </TooltipContent>
179
- </Tooltip>
180
-
181
- <Tooltip>
182
- <TooltipTrigger asChild>
183
- <Button size="icon" variant="outline">
184
- <Icon symbol="edit" className="text-lg" />
185
- </Button>
186
- </TooltipTrigger>
187
- <TooltipContent>
188
- <p>Edit document</p>
189
- </TooltipContent>
190
- </Tooltip>
191
-
192
- <Tooltip>
193
- <TooltipTrigger asChild>
194
- <Button size="icon" variant="outline">
195
- <Icon symbol="share" className="text-lg" />
196
- </Button>
197
- </TooltipTrigger>
198
- <TooltipContent>
199
- <p>Share with others</p>
200
- </TooltipContent>
201
- </Tooltip>
202
-
203
- <Tooltip>
204
- <TooltipTrigger asChild>
205
- <Button size="icon" variant="destructive">
206
- <Icon symbol="delete" className="text-lg" />
207
- </Button>
208
- </TooltipTrigger>
209
- <TooltipContent>
210
- <p>Delete permanently</p>
211
- </TooltipContent>
212
- </Tooltip>
213
- </div>;
214
- ```
215
-
216
- ### Form Help Icons
217
-
218
- ```tsx
219
- import { Label } from "@adamosuiteservices/ui/label";
220
- import { Input } from "@adamosuiteservices/ui/input";
221
-
222
- <div className="space-y-2">
223
- <div className="flex items-center gap-2">
224
- <Label htmlFor="username">Username</Label>
225
- <Tooltip>
226
- <TooltipTrigger asChild>
227
- <Icon symbol="help" className="cursor-help text-lg text-muted-foreground" />
228
- </TooltipTrigger>
229
- <TooltipContent>
230
- <p>
231
- Must be 3-20 characters long and contain only letters, numbers, and
232
- underscores
233
- </p>
234
- </TooltipContent>
235
- </Tooltip>
236
- </div>
237
- <Input id="username" placeholder="Enter username" />
238
- </div>;
239
- ```
240
-
241
- ### Controlled
242
-
243
- ```tsx
244
- import { useState } from "react";
245
-
246
- function App() {
247
- const [open, setOpen] = useState(false);
248
-
249
- return (
250
- <div className="flex items-center gap-4">
251
- <Tooltip open={open} onOpenChange={setOpen}>
252
- <TooltipTrigger asChild>
253
- <Button>Controlled</Button>
254
- </TooltipTrigger>
255
- <TooltipContent>
256
- <p>Controlled programmatically</p>
257
- </TooltipContent>
258
- </Tooltip>
259
-
260
- <Button size="sm" onClick={() => setOpen(true)}>
261
- Show
262
- </Button>
263
- <Button size="sm" variant="outline" onClick={() => setOpen(false)}>
264
- Hide
265
- </Button>
266
- </div>
267
- );
268
- }
269
- ```
270
-
271
- ## Casos de Uso
272
-
273
- **Icon buttons**: Descripción de acciones
274
- **Form help**: Explicar campos de formulario
275
- **Status indicators**: Detalles de estados
276
- **Truncated text**: Mostrar texto completo
277
- **Disabled elements**: Explicar por qué está deshabilitado
278
-
279
- ## Estilos Base
280
-
281
- - **Background**: `bg-primary`
282
- - **Text**: `text-primary-foreground text-xs`
283
- - **Padding**: `px-3 py-1.5`
284
- - **Border radius**: `rounded-md`
285
- - **Arrow**: `size-2.5` con `bg-primary`
286
- - **Z-index**: `z-50`
287
- - **Animation**: Fade + zoom in/out
288
-
289
- ## Accesibilidad
290
-
291
- - ✅ **ARIA**: `aria-describedby` automático
292
- - ✅ **Keyboard**: Visible en focus del trigger
293
- - ✅ **Hover**: Aparece en hover
294
- - ✅ **Focus**: Aparece en focus del trigger
295
- - ✅ **Escape**: Cierra con Escape key
296
-
297
- ## Notas de Implementación
298
-
299
- - **Radix UI**: Basado en `@radix-ui/react-tooltip`
300
- - **Portal**: Content se renderiza en portal (fuera del DOM tree)
301
- - **Arrow**: Incluido automáticamente en TooltipContent
302
- - **Provider**: Tooltip individual ya incluye TooltipProvider interno
303
- - **Global Provider**: Usa TooltipProvider para delay global
304
-
305
- ## Troubleshooting
306
-
307
- **Tooltip no aparece**: Verifica que TooltipTrigger tenga `asChild` si es Button/componente
308
- **Posición incorrecta**: Usa `side` prop en TooltipContent
309
- **Delay muy largo**: Ajusta `delayDuration` en Tooltip o TooltipProvider
310
- **Z-index issues**: Tooltip usa `z-50`, puede necesitar ajuste si hay overlays
311
- **Arrow no visible**: Arrow incluido por default, verifica estilos no sobrescritos
312
- **No se cierra**: Usa Escape key o mouseleave del trigger
313
-
314
- ## Referencias
315
-
316
- - **Radix UI Tooltip**: <https://www.radix-ui.com/primitives/docs/components/tooltip>
317
- - **shadcn/ui Tooltip**: <https://ui.shadcn.com/docs/components/tooltip>
1
+ # Tooltip
2
+
3
+ Mensaje flotante informativo en hover/focus. Basado en Radix UI con arrow.
4
+
5
+ ## Descripción
6
+
7
+ El componente `Tooltip` muestra información adicional al hacer hover sobre un elemento.
8
+
9
+ ## Importación
10
+
11
+ ```typescript
12
+ import {
13
+ Tooltip,
14
+ TooltipContent,
15
+ TooltipProvider,
16
+ TooltipTrigger,
17
+ } from "@adamosuiteservices/ui/tooltip";
18
+ ```
19
+
20
+ ## Anatomía
21
+
22
+ ```tsx
23
+ <Tooltip>
24
+ <TooltipTrigger>Hover me</TooltipTrigger>
25
+ <TooltipContent>
26
+ <p>Tooltip content</p>
27
+ </TooltipContent>
28
+ </Tooltip>
29
+ ```
30
+
31
+ **Componentes**: 4 (TooltipProvider, Tooltip, TooltipTrigger, TooltipContent)
32
+
33
+ ## Props
34
+
35
+ ### Tooltip (Root)
36
+
37
+ | Prop | Tipo | Descripción |
38
+ | --------------- | ------------------------- | --------------------------------------- |
39
+ | `open` | `boolean` | Estado controlado |
40
+ | `defaultOpen` | `boolean` | Estado inicial |
41
+ | `onOpenChange` | `(open: boolean) => void` | Callback al cambiar |
42
+ | `delayDuration` | `number` | Delay antes de mostrar (ms, default: 0) |
43
+
44
+ ### TooltipTrigger
45
+
46
+ | Prop | Tipo | Descripción |
47
+ | --------- | --------- | ---------------------------- |
48
+ | `asChild` | `boolean` | Renderiza como child element |
49
+
50
+ ### TooltipContent
51
+
52
+ | Prop | Tipo | Descripción |
53
+ | ------------ | ---------------------------------------- | ------------------------------------- |
54
+ | `side` | `"top" \| "right" \| "bottom" \| "left"` | Posición del tooltip |
55
+ | `sideOffset` | `number` | Offset desde trigger (px, default: 0) |
56
+ | `align` | `"start" \| "center" \| "end"` | Alineación |
57
+ | `className` | `string` | Clases CSS adicionales |
58
+
59
+ ### TooltipProvider
60
+
61
+ | Prop | Tipo | Descripción |
62
+ | --------------- | -------- | ----------------------------- |
63
+ | `delayDuration` | `number` | Delay global (ms, default: 0) |
64
+
65
+ ## Patrones de Uso
66
+
67
+ ### Básico
68
+
69
+ ```tsx
70
+ import {
71
+ Tooltip,
72
+ TooltipContent,
73
+ TooltipTrigger,
74
+ } from "@adamosuiteservices/ui/tooltip";
75
+ import { Button } from "@adamosuiteservices/ui/button";
76
+
77
+ <Tooltip>
78
+ <TooltipTrigger asChild>
79
+ <Button variant="outline">Hover</Button>
80
+ </TooltipTrigger>
81
+ <TooltipContent>
82
+ <p>Add to library</p>
83
+ </TooltipContent>
84
+ </Tooltip>;
85
+ ```
86
+
87
+ ### Con Icono
88
+
89
+ ```tsx
90
+ import { Icon } from "@adamosuiteservices/ui/icon";
91
+
92
+ <Tooltip>
93
+ <TooltipTrigger asChild>
94
+ <Button variant="outline" size="icon">
95
+ <Icon symbol="info" className="text-lg" />
96
+ </Button>
97
+ </TooltipTrigger>
98
+ <TooltipContent>
99
+ <p>More information</p>
100
+ </TooltipContent>
101
+ </Tooltip>;
102
+ ```
103
+
104
+ ### Posiciones
105
+
106
+ ```tsx
107
+ // Top (default)
108
+ <Tooltip>
109
+ <TooltipTrigger asChild>
110
+ <Button>Top</Button>
111
+ </TooltipTrigger>
112
+ <TooltipContent side="top">
113
+ <p>Tooltip on top</p>
114
+ </TooltipContent>
115
+ </Tooltip>
116
+
117
+ // Right
118
+ <TooltipContent side="right"><p>Tooltip on right</p></TooltipContent>
119
+
120
+ // Bottom
121
+ <TooltipContent side="bottom"><p>Tooltip on bottom</p></TooltipContent>
122
+
123
+ // Left
124
+ <TooltipContent side="left"><p>Tooltip on left</p></TooltipContent>
125
+ ```
126
+
127
+ ### Con Offset
128
+
129
+ ```tsx
130
+ <Tooltip>
131
+ <TooltipTrigger asChild>
132
+ <Button>With Offset</Button>
133
+ </TooltipTrigger>
134
+ <TooltipContent sideOffset={10}>
135
+ <p>10px offset from trigger</p>
136
+ </TooltipContent>
137
+ </Tooltip>
138
+ ```
139
+
140
+ ### Con Delay
141
+
142
+ ```tsx
143
+ <TooltipProvider delayDuration={800}>
144
+ <Tooltip>
145
+ <TooltipTrigger asChild>
146
+ <Button>Slow Tooltip</Button>
147
+ </TooltipTrigger>
148
+ <TooltipContent>
149
+ <p>Appears after 800ms</p>
150
+ </TooltipContent>
151
+ </Tooltip>
152
+ </TooltipProvider>
153
+ ```
154
+
155
+ ### Con Provider Global
156
+
157
+ Para múltiples tooltips, usa TooltipProvider:
158
+
159
+ ```tsx
160
+ <TooltipProvider delayDuration={300}>
161
+ <Tooltip>...</Tooltip>
162
+ <Tooltip>...</Tooltip>
163
+ </TooltipProvider>
164
+ ```
165
+
166
+ ### Action Buttons
167
+
168
+ ```tsx
169
+ <div className="flex gap-2">
170
+ <Tooltip>
171
+ <TooltipTrigger asChild>
172
+ <Button size="icon" variant="outline">
173
+ <Icon symbol="content_copy" className="text-lg" />
174
+ </Button>
175
+ </TooltipTrigger>
176
+ <TooltipContent>
177
+ <p>Copy to clipboard</p>
178
+ </TooltipContent>
179
+ </Tooltip>
180
+
181
+ <Tooltip>
182
+ <TooltipTrigger asChild>
183
+ <Button size="icon" variant="outline">
184
+ <Icon symbol="edit" className="text-lg" />
185
+ </Button>
186
+ </TooltipTrigger>
187
+ <TooltipContent>
188
+ <p>Edit document</p>
189
+ </TooltipContent>
190
+ </Tooltip>
191
+
192
+ <Tooltip>
193
+ <TooltipTrigger asChild>
194
+ <Button size="icon" variant="outline">
195
+ <Icon symbol="share" className="text-lg" />
196
+ </Button>
197
+ </TooltipTrigger>
198
+ <TooltipContent>
199
+ <p>Share with others</p>
200
+ </TooltipContent>
201
+ </Tooltip>
202
+
203
+ <Tooltip>
204
+ <TooltipTrigger asChild>
205
+ <Button size="icon" variant="destructive">
206
+ <Icon symbol="delete" className="text-lg" />
207
+ </Button>
208
+ </TooltipTrigger>
209
+ <TooltipContent>
210
+ <p>Delete permanently</p>
211
+ </TooltipContent>
212
+ </Tooltip>
213
+ </div>;
214
+ ```
215
+
216
+ ### Form Help Icons
217
+
218
+ ```tsx
219
+ import { Label } from "@adamosuiteservices/ui/label";
220
+ import { Input } from "@adamosuiteservices/ui/input";
221
+
222
+ <div className="space-y-2">
223
+ <div className="flex items-center gap-2">
224
+ <Label htmlFor="username">Username</Label>
225
+ <Tooltip>
226
+ <TooltipTrigger asChild>
227
+ <Icon symbol="help" className="cursor-help text-lg text-muted-foreground" />
228
+ </TooltipTrigger>
229
+ <TooltipContent>
230
+ <p>
231
+ Must be 3-20 characters long and contain only letters, numbers, and
232
+ underscores
233
+ </p>
234
+ </TooltipContent>
235
+ </Tooltip>
236
+ </div>
237
+ <Input id="username" placeholder="Enter username" />
238
+ </div>;
239
+ ```
240
+
241
+ ### Controlled
242
+
243
+ ```tsx
244
+ import { useState } from "react";
245
+
246
+ function App() {
247
+ const [open, setOpen] = useState(false);
248
+
249
+ return (
250
+ <div className="flex items-center gap-4">
251
+ <Tooltip open={open} onOpenChange={setOpen}>
252
+ <TooltipTrigger asChild>
253
+ <Button>Controlled</Button>
254
+ </TooltipTrigger>
255
+ <TooltipContent>
256
+ <p>Controlled programmatically</p>
257
+ </TooltipContent>
258
+ </Tooltip>
259
+
260
+ <Button size="sm" onClick={() => setOpen(true)}>
261
+ Show
262
+ </Button>
263
+ <Button size="sm" variant="outline" onClick={() => setOpen(false)}>
264
+ Hide
265
+ </Button>
266
+ </div>
267
+ );
268
+ }
269
+ ```
270
+
271
+ ## Casos de Uso
272
+
273
+ **Icon buttons**: Descripción de acciones
274
+ **Form help**: Explicar campos de formulario
275
+ **Status indicators**: Detalles de estados
276
+ **Truncated text**: Mostrar texto completo
277
+ **Disabled elements**: Explicar por qué está deshabilitado
278
+
279
+ ## Estilos Base
280
+
281
+ - **Background**: `bg-primary`
282
+ - **Text**: `text-primary-foreground text-xs`
283
+ - **Padding**: `px-3 py-1.5`
284
+ - **Border radius**: `rounded-md`
285
+ - **Arrow**: `size-2.5` con `bg-primary`
286
+ - **Z-index**: `z-50`
287
+ - **Animation**: Fade + zoom in/out
288
+
289
+ ## Accesibilidad
290
+
291
+ - ✅ **ARIA**: `aria-describedby` automático
292
+ - ✅ **Keyboard**: Visible en focus del trigger
293
+ - ✅ **Hover**: Aparece en hover
294
+ - ✅ **Focus**: Aparece en focus del trigger
295
+ - ✅ **Escape**: Cierra con Escape key
296
+
297
+ ## Notas de Implementación
298
+
299
+ - **Radix UI**: Basado en `@radix-ui/react-tooltip`
300
+ - **Portal**: Content se renderiza en portal (fuera del DOM tree)
301
+ - **Arrow**: Incluido automáticamente en TooltipContent
302
+ - **Provider**: Tooltip individual ya incluye TooltipProvider interno
303
+ - **Global Provider**: Usa TooltipProvider para delay global
304
+
305
+ ## Troubleshooting
306
+
307
+ **Tooltip no aparece**: Verifica que TooltipTrigger tenga `asChild` si es Button/componente
308
+ **Posición incorrecta**: Usa `side` prop en TooltipContent
309
+ **Delay muy largo**: Ajusta `delayDuration` en Tooltip o TooltipProvider
310
+ **Z-index issues**: Tooltip usa `z-50`, puede necesitar ajuste si hay overlays
311
+ **Arrow no visible**: Arrow incluido por default, verifica estilos no sobrescritos
312
+ **No se cierra**: Usa Escape key o mouseleave del trigger
313
+
314
+ ## Referencias
315
+
316
+ - **Radix UI Tooltip**: <https://www.radix-ui.com/primitives/docs/components/tooltip>
317
+ - **shadcn/ui Tooltip**: <https://ui.shadcn.com/docs/components/tooltip>