@adamosuiteservices/ui 2.13.3 → 2.14.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 (66) 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/{combobox-BOi7QzmO.js → combobox-B8HMlZy6.js} +1 -1
  10. package/dist/{combobox-0ndFo07_.cjs → combobox-Btj-hiBy.cjs} +1 -1
  11. package/dist/combobox.cjs +1 -1
  12. package/dist/combobox.js +1 -1
  13. package/dist/components/ui/alert/alert.d.ts +1 -1
  14. package/dist/components/ui/button/button.d.ts +3 -2
  15. package/dist/components/ui/card/card.d.ts +2 -2
  16. package/dist/components/ui/slider/slider.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/slider.cjs +3 -3
  30. package/dist/slider.js +2 -2
  31. package/dist/styles.css +1 -1
  32. package/dist/tabs.cjs +14 -16
  33. package/dist/tabs.js +17 -19
  34. package/docs/AI-GUIDE.md +321 -321
  35. package/docs/components/layout/full-screen-loader.md +2 -2
  36. package/docs/components/layout/sidebar.md +399 -399
  37. package/docs/components/layout/toaster.md +436 -436
  38. package/docs/components/ui/accordion-rounded.md +584 -584
  39. package/docs/components/ui/accordion.md +269 -269
  40. package/docs/components/ui/button.md +35 -23
  41. package/docs/components/ui/calendar.md +1159 -1159
  42. package/docs/components/ui/card.md +1455 -1455
  43. package/docs/components/ui/checkbox.md +292 -292
  44. package/docs/components/ui/collapsible.md +323 -323
  45. package/docs/components/ui/dialog.md +628 -628
  46. package/docs/components/ui/field.md +706 -706
  47. package/docs/components/ui/hover-card.md +446 -446
  48. package/docs/components/ui/kbd.md +434 -434
  49. package/docs/components/ui/label.md +359 -359
  50. package/docs/components/ui/pagination.md +650 -650
  51. package/docs/components/ui/popover.md +536 -536
  52. package/docs/components/ui/progress.md +182 -182
  53. package/docs/components/ui/radio-group.md +311 -311
  54. package/docs/components/ui/separator.md +214 -214
  55. package/docs/components/ui/sheet.md +174 -174
  56. package/docs/components/ui/skeleton.md +140 -140
  57. package/docs/components/ui/slider.md +8 -8
  58. package/docs/components/ui/spinner.md +170 -170
  59. package/docs/components/ui/switch.md +408 -408
  60. package/docs/components/ui/tabs-underline.md +106 -106
  61. package/docs/components/ui/tabs.md +125 -122
  62. package/docs/components/ui/textarea.md +243 -243
  63. package/docs/components/ui/toggle.md +237 -237
  64. package/docs/components/ui/tooltip.md +317 -317
  65. package/docs/components/ui/typography.md +320 -320
  66. package/package.json +1 -1
@@ -1,174 +1,174 @@
1
- # Sheet
2
-
3
- Panel lateral deslizable (drawer). Basado en Radix UI Dialog con 4 direcciones.
4
-
5
- ## Descripción
6
-
7
- El componente `Sheet` muestra un panel lateral deslizante, similar a un drawer.
8
-
9
- ## Importación
10
-
11
- ```typescript
12
- import {
13
- Sheet,
14
- SheetBody,
15
- SheetContent,
16
- SheetDescription,
17
- SheetHeader,
18
- SheetTitle,
19
- SheetTrigger,
20
- SheetFooter,
21
- SheetClose,
22
- } from "@adamosuiteservices/ui/sheet";
23
- ```
24
-
25
- ## Anatomía
26
-
27
- ```tsx
28
- <Sheet>
29
- <SheetTrigger>Open</SheetTrigger>
30
- <SheetContent>
31
- <SheetHeader>
32
- <SheetTitle>Are you sure?</SheetTitle>
33
- <SheetDescription>This action cannot be undone.</SheetDescription>
34
- </SheetHeader>
35
- <SheetBody>
36
- {/* Content */}
37
- </SheetBody>
38
- </SheetContent>
39
- </Sheet>
40
- ```
41
-
42
- **Componentes**: 9 (Sheet, SheetTrigger, SheetContent, SheetHeader, SheetBody, SheetFooter, SheetTitle, SheetDescription, SheetClose)
43
-
44
- ## Props
45
-
46
- ### Sheet (Root)
47
-
48
- | Prop | Tipo | Descripción |
49
- | -------------- | ------------------------- | ------------------- |
50
- | `open` | `boolean` | Estado controlado |
51
- | `defaultOpen` | `boolean` | Estado inicial |
52
- | `onOpenChange` | `(open: boolean) => void` | Callback al cambiar |
53
-
54
- ### SheetContent
55
-
56
- | Prop | Tipo | Descripción |
57
- | ----------------- | ---------------------------------------- | -------------------------------- |
58
- | `side` | `"top" \| "right" \| "bottom" \| "left"` | Dirección (default: "right") |
59
- | `showCloseButton` | `boolean` | Mostrar X button (default: true) |
60
-
61
- ## Patrones de Uso
62
-
63
- ### Desde Derecha (Default)
64
-
65
- Ancho: `w-11/12` en móvil, `max-w-sm` en desktop. Border radius: `rounded-2xl`. Padding: `p-8` (32px).
66
-
67
- ```tsx
68
- <Sheet>
69
- <SheetTrigger asChild>
70
- <Button>Open Sheet</Button>
71
- </SheetTrigger>
72
- <SheetContent>
73
- <SheetHeader>
74
- <SheetTitle>Settings</SheetTitle>
75
- <SheetDescription>Configure your preferences</SheetDescription>
76
- </SheetHeader>
77
- <SheetBody>
78
- {/* Content with horizontal padding */}
79
- </SheetBody>
80
- </SheetContent>
81
- </Sheet>
82
- ```
83
-
84
- ### Desde Izquierda
85
-
86
- ```tsx
87
- <Sheet>
88
- <SheetTrigger>Open Left</SheetTrigger>
89
- <SheetContent side="left">
90
- <SheetHeader>
91
- <SheetTitle>Navigation</SheetTitle>
92
- </SheetHeader>
93
- </SheetContent>
94
- </Sheet>
95
- ```
96
-
97
- ### Desde Arriba/Abajo
98
-
99
- ```tsx
100
- <Sheet>
101
- <SheetTrigger>Open Top</SheetTrigger>
102
- <SheetContent side="top">
103
- <SheetHeader>
104
- <SheetTitle>Top Sheet</SheetTitle>
105
- </SheetHeader>
106
- </SheetContent>
107
- </Sheet>
108
-
109
- <Sheet>
110
- <SheetTrigger>Open Bottom</SheetTrigger>
111
- <SheetContent side="bottom">
112
- <SheetHeader>
113
- <SheetTitle>Bottom Sheet</SheetTitle>
114
- </SheetHeader>
115
- </SheetContent>
116
- </Sheet>
117
- ```
118
-
119
- ### Con Footer
120
-
121
- ```tsx
122
- <Sheet>
123
- <SheetTrigger>Edit Profile</SheetTrigger>
124
- <SheetContent>
125
- <SheetHeader>
126
- <SheetTitle>Edit profile</SheetTitle>
127
- <SheetDescription>Make changes to your profile here.</SheetDescription>
128
- </SheetHeader>
129
- <SheetBody>
130
- {/* Form fields */}
131
- </SheetBody>
132
- <SheetFooter>
133
- <SheetClose asChild>
134
- <Button variant="outline">Cancel</Button>
135
- </SheetClose>
136
- <Button type="submit">Save changes</Button>
137
- </SheetFooter>
138
- </SheetContent>
139
- </Sheet>
140
- ```
141
-
142
- ## Componentes
143
-
144
- ### SheetBody
145
-
146
- Contenedor para el contenido principal del sheet con padding horizontal de 32px (`px-8`).
147
-
148
- ```tsx
149
- <SheetBody>
150
- <p>Content goes here</p>
151
- </SheetBody>
152
- ```
153
-
154
- **Props**: Acepta todas las props de `div` + `className`
155
-
156
- **Estilos por defecto**: `px-8` (32px horizontal padding)
157
-
158
- ## Espaciado
159
-
160
- - **Padding del contenido**: SheetHeader, SheetBody, SheetFooter usan `p-8` o `px-8` (32px)
161
- - **Gap entre secciones**: `gap-8` (32px) entre SheetHeader, SheetBody, y SheetFooter
162
-
163
- ## Casos de Uso
164
-
165
- **Navigation menu**: Menú móvil
166
- **Filters**: Panel de filtros
167
- **Details**: Vista de detalles
168
- **Forms**: Formularios laterales
169
- **Settings**: Panel de configuración
170
-
171
- ## Referencias
172
-
173
- - **Radix UI Dialog**: <https://www.radix-ui.com/primitives/docs/components/dialog>
174
- - **shadcn/ui Sheet**: <https://ui.shadcn.com/docs/components/sheet>
1
+ # Sheet
2
+
3
+ Panel lateral deslizable (drawer). Basado en Radix UI Dialog con 4 direcciones.
4
+
5
+ ## Descripción
6
+
7
+ El componente `Sheet` muestra un panel lateral deslizante, similar a un drawer.
8
+
9
+ ## Importación
10
+
11
+ ```typescript
12
+ import {
13
+ Sheet,
14
+ SheetBody,
15
+ SheetContent,
16
+ SheetDescription,
17
+ SheetHeader,
18
+ SheetTitle,
19
+ SheetTrigger,
20
+ SheetFooter,
21
+ SheetClose,
22
+ } from "@adamosuiteservices/ui/sheet";
23
+ ```
24
+
25
+ ## Anatomía
26
+
27
+ ```tsx
28
+ <Sheet>
29
+ <SheetTrigger>Open</SheetTrigger>
30
+ <SheetContent>
31
+ <SheetHeader>
32
+ <SheetTitle>Are you sure?</SheetTitle>
33
+ <SheetDescription>This action cannot be undone.</SheetDescription>
34
+ </SheetHeader>
35
+ <SheetBody>
36
+ {/* Content */}
37
+ </SheetBody>
38
+ </SheetContent>
39
+ </Sheet>
40
+ ```
41
+
42
+ **Componentes**: 9 (Sheet, SheetTrigger, SheetContent, SheetHeader, SheetBody, SheetFooter, SheetTitle, SheetDescription, SheetClose)
43
+
44
+ ## Props
45
+
46
+ ### Sheet (Root)
47
+
48
+ | Prop | Tipo | Descripción |
49
+ | -------------- | ------------------------- | ------------------- |
50
+ | `open` | `boolean` | Estado controlado |
51
+ | `defaultOpen` | `boolean` | Estado inicial |
52
+ | `onOpenChange` | `(open: boolean) => void` | Callback al cambiar |
53
+
54
+ ### SheetContent
55
+
56
+ | Prop | Tipo | Descripción |
57
+ | ----------------- | ---------------------------------------- | -------------------------------- |
58
+ | `side` | `"top" \| "right" \| "bottom" \| "left"` | Dirección (default: "right") |
59
+ | `showCloseButton` | `boolean` | Mostrar X button (default: true) |
60
+
61
+ ## Patrones de Uso
62
+
63
+ ### Desde Derecha (Default)
64
+
65
+ Ancho: `w-11/12` en móvil, `max-w-sm` en desktop. Border radius: `rounded-2xl`. Padding: `p-8` (32px).
66
+
67
+ ```tsx
68
+ <Sheet>
69
+ <SheetTrigger asChild>
70
+ <Button>Open Sheet</Button>
71
+ </SheetTrigger>
72
+ <SheetContent>
73
+ <SheetHeader>
74
+ <SheetTitle>Settings</SheetTitle>
75
+ <SheetDescription>Configure your preferences</SheetDescription>
76
+ </SheetHeader>
77
+ <SheetBody>
78
+ {/* Content with horizontal padding */}
79
+ </SheetBody>
80
+ </SheetContent>
81
+ </Sheet>
82
+ ```
83
+
84
+ ### Desde Izquierda
85
+
86
+ ```tsx
87
+ <Sheet>
88
+ <SheetTrigger>Open Left</SheetTrigger>
89
+ <SheetContent side="left">
90
+ <SheetHeader>
91
+ <SheetTitle>Navigation</SheetTitle>
92
+ </SheetHeader>
93
+ </SheetContent>
94
+ </Sheet>
95
+ ```
96
+
97
+ ### Desde Arriba/Abajo
98
+
99
+ ```tsx
100
+ <Sheet>
101
+ <SheetTrigger>Open Top</SheetTrigger>
102
+ <SheetContent side="top">
103
+ <SheetHeader>
104
+ <SheetTitle>Top Sheet</SheetTitle>
105
+ </SheetHeader>
106
+ </SheetContent>
107
+ </Sheet>
108
+
109
+ <Sheet>
110
+ <SheetTrigger>Open Bottom</SheetTrigger>
111
+ <SheetContent side="bottom">
112
+ <SheetHeader>
113
+ <SheetTitle>Bottom Sheet</SheetTitle>
114
+ </SheetHeader>
115
+ </SheetContent>
116
+ </Sheet>
117
+ ```
118
+
119
+ ### Con Footer
120
+
121
+ ```tsx
122
+ <Sheet>
123
+ <SheetTrigger>Edit Profile</SheetTrigger>
124
+ <SheetContent>
125
+ <SheetHeader>
126
+ <SheetTitle>Edit profile</SheetTitle>
127
+ <SheetDescription>Make changes to your profile here.</SheetDescription>
128
+ </SheetHeader>
129
+ <SheetBody>
130
+ {/* Form fields */}
131
+ </SheetBody>
132
+ <SheetFooter>
133
+ <SheetClose asChild>
134
+ <Button variant="outline">Cancel</Button>
135
+ </SheetClose>
136
+ <Button type="submit">Save changes</Button>
137
+ </SheetFooter>
138
+ </SheetContent>
139
+ </Sheet>
140
+ ```
141
+
142
+ ## Componentes
143
+
144
+ ### SheetBody
145
+
146
+ Contenedor para el contenido principal del sheet con padding horizontal de 32px (`px-8`).
147
+
148
+ ```tsx
149
+ <SheetBody>
150
+ <p>Content goes here</p>
151
+ </SheetBody>
152
+ ```
153
+
154
+ **Props**: Acepta todas las props de `div` + `className`
155
+
156
+ **Estilos por defecto**: `px-8` (32px horizontal padding)
157
+
158
+ ## Espaciado
159
+
160
+ - **Padding del contenido**: SheetHeader, SheetBody, SheetFooter usan `p-8` o `px-8` (32px)
161
+ - **Gap entre secciones**: `gap-8` (32px) entre SheetHeader, SheetBody, y SheetFooter
162
+
163
+ ## Casos de Uso
164
+
165
+ **Navigation menu**: Menú móvil
166
+ **Filters**: Panel de filtros
167
+ **Details**: Vista de detalles
168
+ **Forms**: Formularios laterales
169
+ **Settings**: Panel de configuración
170
+
171
+ ## Referencias
172
+
173
+ - **Radix UI Dialog**: <https://www.radix-ui.com/primitives/docs/components/dialog>
174
+ - **shadcn/ui Sheet**: <https://ui.shadcn.com/docs/components/sheet>
@@ -1,140 +1,140 @@
1
- # Skeleton
2
-
3
- Placeholder animado para contenido en carga. Simula la estructura del contenido final con bloques pulsantes.
4
-
5
- ## Descripción
6
-
7
- El componente `Skeleton` muestra placeholders de carga para contenido que está siendo cargado.
8
-
9
- ## Importación
10
-
11
- ```typescript
12
- import { Skeleton } from "@adamosuiteservices/ui/skeleton";
13
- ```
14
-
15
- ## Anatomía
16
-
17
- ```tsx
18
- <Skeleton className="w-full h-12" />
19
- ```
20
-
21
- **Componentes**: 1 (Skeleton)
22
-
23
- ## Props
24
-
25
- | Prop | Tipo | Descripción |
26
- | ----------- | -------- | ------------------------------ |
27
- | `className` | `string` | Clases CSS para tamaño y forma |
28
-
29
- **Nota**: Acepta todas las props de `<div>`
30
-
31
- ## Patrones de Uso
32
-
33
- ### Básico
34
-
35
- ```tsx
36
- <Skeleton className="h-4 w-[250px]" />
37
- ```
38
-
39
- ### Avatar + Text
40
-
41
- ```tsx
42
- <div className="flex items-center space-x-4">
43
- <Skeleton className="h-12 w-12 rounded-full" />
44
- <div className="space-y-2">
45
- <Skeleton className="h-4 w-[250px]" />
46
- <Skeleton className="h-4 w-[200px]" />
47
- </div>
48
- </div>
49
- ```
50
-
51
- ### Card
52
-
53
- ```tsx
54
- <div className="flex flex-col space-y-3">
55
- <Skeleton className="h-[125px] w-[250px] rounded-xl" />
56
- <div className="space-y-2">
57
- <Skeleton className="h-4 w-[250px]" />
58
- <Skeleton className="h-4 w-[200px]" />
59
- </div>
60
- </div>
61
- ```
62
-
63
- ### Text Lines
64
-
65
- ```tsx
66
- <div className="space-y-2">
67
- <Skeleton className="h-4 w-full" />
68
- <Skeleton className="h-4 w-[90%]" />
69
- <Skeleton className="h-4 w-[80%]" />
70
- </div>
71
- ```
72
-
73
- ### Form
74
-
75
- ```tsx
76
- <div className="space-y-4 max-w-md">
77
- <div className="space-y-2">
78
- <Skeleton className="h-4 w-16" />
79
- <Skeleton className="h-10 w-full rounded-md" />
80
- </div>
81
- <div className="space-y-2">
82
- <Skeleton className="h-4 w-20" />
83
- <Skeleton className="h-10 w-full rounded-md" />
84
- </div>
85
- <Skeleton className="h-10 w-24 rounded-md" />
86
- </div>
87
- ```
88
-
89
- ### List Items
90
-
91
- ```tsx
92
- <div className="space-y-4">
93
- {Array.from({ length: 4 }).map((_, i) => (
94
- <div key={i} className="flex items-center space-x-4">
95
- <Skeleton className="h-10 w-10 rounded-full" />
96
- <div className="space-y-2 flex-1">
97
- <Skeleton className="h-4 w-[200px]" />
98
- <Skeleton className="h-3 w-[150px]" />
99
- </div>
100
- <Skeleton className="h-8 w-16 rounded-md" />
101
- </div>
102
- ))}
103
- </div>
104
- ```
105
-
106
- ## Casos de Uso
107
-
108
- **Loading states**: Placeholder mientras carga contenido
109
- **Lazy loading**: Imágenes/contenido que carga progresivamente
110
- **Optimistic UI**: Simular contenido antes de respuesta
111
- **Infinite scroll**: Items mientras cargan más
112
-
113
- ## Estilos Base
114
-
115
- - **Background**: `bg-accent`
116
- - **Animation**: `animate-pulse`
117
- - **Border radius**: `rounded-md` default
118
-
119
- ## Accesibilidad
120
-
121
- - ✅ **ARIA**: Usa `aria-busy="true"` en contenedor padre
122
- - ✅ **Screen readers**: Anuncia estado de carga en contenedor
123
- - ⚠️ **Replace**: Reemplaza skeleton con contenido real al cargar
124
-
125
- ## Notas de Implementación
126
-
127
- - **HTML nativo**: Simple `<div>` con estilos
128
- - **Pulse animation**: Tailwind `animate-pulse`
129
- - **Customizable**: Totalmente personalizable con className
130
- - **No state**: Stateless, solo visual
131
-
132
- ## Troubleshooting
133
-
134
- **No pulsa**: Verifica que `animate-pulse` esté aplicado
135
- **Tamaño inconsistente**: Usa height/width específicos con className
136
- **Forma incorrecta**: Ajusta `rounded-*` para avatars, cards, etc.
137
-
138
- ## Referencias
139
-
140
- - **shadcn/ui Skeleton**: <https://ui.shadcn.com/docs/components/skeleton>
1
+ # Skeleton
2
+
3
+ Placeholder animado para contenido en carga. Simula la estructura del contenido final con bloques pulsantes.
4
+
5
+ ## Descripción
6
+
7
+ El componente `Skeleton` muestra placeholders de carga para contenido que está siendo cargado.
8
+
9
+ ## Importación
10
+
11
+ ```typescript
12
+ import { Skeleton } from "@adamosuiteservices/ui/skeleton";
13
+ ```
14
+
15
+ ## Anatomía
16
+
17
+ ```tsx
18
+ <Skeleton className="w-full h-12" />
19
+ ```
20
+
21
+ **Componentes**: 1 (Skeleton)
22
+
23
+ ## Props
24
+
25
+ | Prop | Tipo | Descripción |
26
+ | ----------- | -------- | ------------------------------ |
27
+ | `className` | `string` | Clases CSS para tamaño y forma |
28
+
29
+ **Nota**: Acepta todas las props de `<div>`
30
+
31
+ ## Patrones de Uso
32
+
33
+ ### Básico
34
+
35
+ ```tsx
36
+ <Skeleton className="h-4 w-[250px]" />
37
+ ```
38
+
39
+ ### Avatar + Text
40
+
41
+ ```tsx
42
+ <div className="flex items-center space-x-4">
43
+ <Skeleton className="h-12 w-12 rounded-full" />
44
+ <div className="space-y-2">
45
+ <Skeleton className="h-4 w-[250px]" />
46
+ <Skeleton className="h-4 w-[200px]" />
47
+ </div>
48
+ </div>
49
+ ```
50
+
51
+ ### Card
52
+
53
+ ```tsx
54
+ <div className="flex flex-col space-y-3">
55
+ <Skeleton className="h-[125px] w-[250px] rounded-xl" />
56
+ <div className="space-y-2">
57
+ <Skeleton className="h-4 w-[250px]" />
58
+ <Skeleton className="h-4 w-[200px]" />
59
+ </div>
60
+ </div>
61
+ ```
62
+
63
+ ### Text Lines
64
+
65
+ ```tsx
66
+ <div className="space-y-2">
67
+ <Skeleton className="h-4 w-full" />
68
+ <Skeleton className="h-4 w-[90%]" />
69
+ <Skeleton className="h-4 w-[80%]" />
70
+ </div>
71
+ ```
72
+
73
+ ### Form
74
+
75
+ ```tsx
76
+ <div className="space-y-4 max-w-md">
77
+ <div className="space-y-2">
78
+ <Skeleton className="h-4 w-16" />
79
+ <Skeleton className="h-10 w-full rounded-md" />
80
+ </div>
81
+ <div className="space-y-2">
82
+ <Skeleton className="h-4 w-20" />
83
+ <Skeleton className="h-10 w-full rounded-md" />
84
+ </div>
85
+ <Skeleton className="h-10 w-24 rounded-md" />
86
+ </div>
87
+ ```
88
+
89
+ ### List Items
90
+
91
+ ```tsx
92
+ <div className="space-y-4">
93
+ {Array.from({ length: 4 }).map((_, i) => (
94
+ <div key={i} className="flex items-center space-x-4">
95
+ <Skeleton className="h-10 w-10 rounded-full" />
96
+ <div className="space-y-2 flex-1">
97
+ <Skeleton className="h-4 w-[200px]" />
98
+ <Skeleton className="h-3 w-[150px]" />
99
+ </div>
100
+ <Skeleton className="h-8 w-16 rounded-md" />
101
+ </div>
102
+ ))}
103
+ </div>
104
+ ```
105
+
106
+ ## Casos de Uso
107
+
108
+ **Loading states**: Placeholder mientras carga contenido
109
+ **Lazy loading**: Imágenes/contenido que carga progresivamente
110
+ **Optimistic UI**: Simular contenido antes de respuesta
111
+ **Infinite scroll**: Items mientras cargan más
112
+
113
+ ## Estilos Base
114
+
115
+ - **Background**: `bg-accent`
116
+ - **Animation**: `animate-pulse`
117
+ - **Border radius**: `rounded-md` default
118
+
119
+ ## Accesibilidad
120
+
121
+ - ✅ **ARIA**: Usa `aria-busy="true"` en contenedor padre
122
+ - ✅ **Screen readers**: Anuncia estado de carga en contenedor
123
+ - ⚠️ **Replace**: Reemplaza skeleton con contenido real al cargar
124
+
125
+ ## Notas de Implementación
126
+
127
+ - **HTML nativo**: Simple `<div>` con estilos
128
+ - **Pulse animation**: Tailwind `animate-pulse`
129
+ - **Customizable**: Totalmente personalizable con className
130
+ - **No state**: Stateless, solo visual
131
+
132
+ ## Troubleshooting
133
+
134
+ **No pulsa**: Verifica que `animate-pulse` esté aplicado
135
+ **Tamaño inconsistente**: Usa height/width específicos con className
136
+ **Forma incorrecta**: Ajusta `rounded-*` para avatars, cards, etc.
137
+
138
+ ## Referencias
139
+
140
+ - **shadcn/ui Skeleton**: <https://ui.shadcn.com/docs/components/skeleton>