@adamosuiteservices/ui 2.13.1 → 2.13.3

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 (46) hide show
  1. package/dist/components/ui/file-upload/file-upload.d.ts +11 -3
  2. package/dist/components/ui/slider/slider.d.ts +5 -2
  3. package/dist/components/ui/typography/typography.d.ts +1 -1
  4. package/dist/file-upload.cjs +6 -18
  5. package/dist/file-upload.js +264 -134
  6. package/dist/slider.cjs +6 -7
  7. package/dist/slider.js +191 -177
  8. package/dist/styles.css +1 -1
  9. package/dist/typography-Bj8oEDuE.cjs +1 -0
  10. package/dist/typography-MnY0LQoZ.js +50 -0
  11. package/dist/typography.cjs +1 -1
  12. package/dist/typography.js +1 -1
  13. package/docs/AI-GUIDE.md +321 -321
  14. package/docs/components/layout/sidebar.md +399 -399
  15. package/docs/components/layout/toaster.md +436 -436
  16. package/docs/components/ui/accordion-rounded.md +584 -584
  17. package/docs/components/ui/accordion.md +269 -269
  18. package/docs/components/ui/calendar.md +1159 -1159
  19. package/docs/components/ui/card.md +1455 -1455
  20. package/docs/components/ui/checkbox.md +292 -292
  21. package/docs/components/ui/collapsible.md +323 -323
  22. package/docs/components/ui/dialog.md +628 -628
  23. package/docs/components/ui/field.md +706 -706
  24. package/docs/components/ui/file-upload.md +475 -66
  25. package/docs/components/ui/hover-card.md +446 -446
  26. package/docs/components/ui/kbd.md +434 -434
  27. package/docs/components/ui/label.md +359 -359
  28. package/docs/components/ui/pagination.md +650 -650
  29. package/docs/components/ui/popover.md +536 -536
  30. package/docs/components/ui/progress.md +182 -182
  31. package/docs/components/ui/radio-group.md +311 -311
  32. package/docs/components/ui/separator.md +214 -214
  33. package/docs/components/ui/sheet.md +174 -174
  34. package/docs/components/ui/skeleton.md +140 -140
  35. package/docs/components/ui/slider.md +460 -341
  36. package/docs/components/ui/spinner.md +170 -170
  37. package/docs/components/ui/switch.md +408 -408
  38. package/docs/components/ui/tabs-underline.md +106 -106
  39. package/docs/components/ui/tabs.md +122 -122
  40. package/docs/components/ui/textarea.md +243 -243
  41. package/docs/components/ui/toggle.md +237 -237
  42. package/docs/components/ui/tooltip.md +317 -317
  43. package/docs/components/ui/typography.md +320 -280
  44. package/package.json +1 -1
  45. package/dist/typography-9EoV0kcN.js +0 -44
  46. package/dist/typography-DqQZZpkD.cjs +0 -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>