@adamosuiteservices/ui 2.13.2 → 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.
- package/dist/components/ui/slider/slider.d.ts +5 -2
- package/dist/slider.cjs +6 -7
- package/dist/slider.js +191 -177
- package/docs/AI-GUIDE.md +321 -321
- package/docs/components/layout/sidebar.md +399 -399
- package/docs/components/layout/toaster.md +436 -436
- package/docs/components/ui/accordion-rounded.md +584 -584
- package/docs/components/ui/accordion.md +269 -269
- package/docs/components/ui/calendar.md +1159 -1159
- package/docs/components/ui/card.md +1455 -1455
- package/docs/components/ui/checkbox.md +292 -292
- package/docs/components/ui/collapsible.md +323 -323
- package/docs/components/ui/dialog.md +628 -628
- package/docs/components/ui/field.md +706 -706
- package/docs/components/ui/hover-card.md +446 -446
- package/docs/components/ui/kbd.md +434 -434
- package/docs/components/ui/label.md +359 -359
- package/docs/components/ui/pagination.md +650 -650
- package/docs/components/ui/popover.md +536 -536
- package/docs/components/ui/progress.md +182 -182
- package/docs/components/ui/radio-group.md +311 -311
- package/docs/components/ui/separator.md +214 -214
- package/docs/components/ui/sheet.md +174 -174
- package/docs/components/ui/skeleton.md +140 -140
- package/docs/components/ui/slider.md +460 -341
- package/docs/components/ui/spinner.md +170 -170
- package/docs/components/ui/switch.md +408 -408
- package/docs/components/ui/tabs-underline.md +106 -106
- package/docs/components/ui/tabs.md +122 -122
- package/docs/components/ui/textarea.md +243 -243
- package/docs/components/ui/toggle.md +237 -237
- package/docs/components/ui/tooltip.md +317 -317
- package/docs/components/ui/typography.md +320 -320
- package/package.json +1 -1
|
@@ -1,269 +1,269 @@
|
|
|
1
|
-
# Accordion Component
|
|
2
|
-
|
|
3
|
-
## Descripción
|
|
4
|
-
|
|
5
|
-
El componente `Accordion` es un elemento de interfaz vertically apilado que permite a los usuarios expandir y colapsar secciones de contenido.
|
|
6
|
-
|
|
7
|
-
## Importación
|
|
8
|
-
|
|
9
|
-
```typescript
|
|
10
|
-
import {
|
|
11
|
-
Accordion,
|
|
12
|
-
AccordionContent,
|
|
13
|
-
AccordionItem,
|
|
14
|
-
AccordionTrigger,
|
|
15
|
-
} from "@adamosuiteservices/ui/accordion";
|
|
16
|
-
```
|
|
17
|
-
|
|
18
|
-
## Componentes
|
|
19
|
-
|
|
20
|
-
### Accordion (Root)
|
|
21
|
-
|
|
22
|
-
Contenedor principal que controla el comportamiento del accordion.
|
|
23
|
-
|
|
24
|
-
### AccordionItem
|
|
25
|
-
|
|
26
|
-
Representa cada elemento individual del accordion.
|
|
27
|
-
|
|
28
|
-
### AccordionTrigger
|
|
29
|
-
|
|
30
|
-
El botón/header que se puede clickear para expandir/colapsar.
|
|
31
|
-
|
|
32
|
-
### AccordionContent
|
|
33
|
-
|
|
34
|
-
El contenido que se muestra/oculta al activar el trigger.
|
|
35
|
-
|
|
36
|
-
## Uso Básico
|
|
37
|
-
|
|
38
|
-
```tsx
|
|
39
|
-
<Accordion type="single" collapsible>
|
|
40
|
-
<AccordionItem value="item-1">
|
|
41
|
-
<AccordionTrigger>Is it accessible?</AccordionTrigger>
|
|
42
|
-
<AccordionContent>
|
|
43
|
-
Yes. It adheres to the WAI-ARIA design pattern.
|
|
44
|
-
</AccordionContent>
|
|
45
|
-
</AccordionItem>
|
|
46
|
-
<AccordionItem value="item-2">
|
|
47
|
-
<AccordionTrigger>Is it styled?</AccordionTrigger>
|
|
48
|
-
<AccordionContent>Yes. It comes with default styles.</AccordionContent>
|
|
49
|
-
</AccordionItem>
|
|
50
|
-
</Accordion>
|
|
51
|
-
```
|
|
52
|
-
|
|
53
|
-
## Tipos de Accordion
|
|
54
|
-
|
|
55
|
-
### Single (Un elemento a la vez)
|
|
56
|
-
|
|
57
|
-
Solo permite que un elemento esté abierto a la vez.
|
|
58
|
-
|
|
59
|
-
```tsx
|
|
60
|
-
<Accordion type="single" collapsible>
|
|
61
|
-
{/* items */}
|
|
62
|
-
</Accordion>
|
|
63
|
-
```
|
|
64
|
-
|
|
65
|
-
### Multiple (Múltiples elementos)
|
|
66
|
-
|
|
67
|
-
Permite que múltiples elementos estén abiertos simultáneamente.
|
|
68
|
-
|
|
69
|
-
```tsx
|
|
70
|
-
<Accordion type="multiple">{/* items */}</Accordion>
|
|
71
|
-
```
|
|
72
|
-
|
|
73
|
-
## Con Valor por Defecto
|
|
74
|
-
|
|
75
|
-
Puedes especificar qué elemento debe estar abierto inicialmente.
|
|
76
|
-
|
|
77
|
-
```tsx
|
|
78
|
-
<Accordion type="single" defaultValue="item-2" collapsible>
|
|
79
|
-
<AccordionItem value="item-1">
|
|
80
|
-
<AccordionTrigger>First Item</AccordionTrigger>
|
|
81
|
-
<AccordionContent>Content 1</AccordionContent>
|
|
82
|
-
</AccordionItem>
|
|
83
|
-
<AccordionItem value="item-2">
|
|
84
|
-
<AccordionTrigger>Second Item (Default Open)</AccordionTrigger>
|
|
85
|
-
<AccordionContent>Content 2</AccordionContent>
|
|
86
|
-
</AccordionItem>
|
|
87
|
-
</Accordion>
|
|
88
|
-
```
|
|
89
|
-
|
|
90
|
-
## Modo No-Collapsible
|
|
91
|
-
|
|
92
|
-
En modo `type="single"` sin `collapsible`, al menos un elemento debe estar abierto.
|
|
93
|
-
|
|
94
|
-
```tsx
|
|
95
|
-
<Accordion type="single" collapsible={false} defaultValue="item-1">
|
|
96
|
-
{/* items */}
|
|
97
|
-
</Accordion>
|
|
98
|
-
```
|
|
99
|
-
|
|
100
|
-
## Controlado
|
|
101
|
-
|
|
102
|
-
Puedes controlar el accordion externamente con estado.
|
|
103
|
-
|
|
104
|
-
```tsx
|
|
105
|
-
const [value, setValue] = useState<string | undefined>("item-1");
|
|
106
|
-
|
|
107
|
-
<Accordion type="single" collapsible value={value} onValueChange={setValue}>
|
|
108
|
-
{/* items */}
|
|
109
|
-
</Accordion>;
|
|
110
|
-
```
|
|
111
|
-
|
|
112
|
-
## Con Contenido Rico
|
|
113
|
-
|
|
114
|
-
### Con Listas
|
|
115
|
-
|
|
116
|
-
```tsx
|
|
117
|
-
<AccordionContent>
|
|
118
|
-
<div className="space-y-2">
|
|
119
|
-
<p>Modern frontend development stack includes:</p>
|
|
120
|
-
<ul className="list-disc list-inside space-y-1">
|
|
121
|
-
<li>React for building user interfaces</li>
|
|
122
|
-
<li>TypeScript for type safety</li>
|
|
123
|
-
<li>Tailwind CSS for styling</li>
|
|
124
|
-
</ul>
|
|
125
|
-
</div>
|
|
126
|
-
</AccordionContent>
|
|
127
|
-
```
|
|
128
|
-
|
|
129
|
-
### Con Iconos y Badges
|
|
130
|
-
|
|
131
|
-
```tsx
|
|
132
|
-
import { Icon } from "@adamosuiteservices/ui/icon";
|
|
133
|
-
|
|
134
|
-
<AccordionTrigger className="text-left">
|
|
135
|
-
<div className="flex items-center gap-2">
|
|
136
|
-
<Icon symbol="info" className="text-lg" />
|
|
137
|
-
Product Information
|
|
138
|
-
</div>
|
|
139
|
-
</AccordionTrigger>
|
|
140
|
-
<AccordionContent>
|
|
141
|
-
<div className="flex gap-2">
|
|
142
|
-
<Badge>Premium Quality</Badge>
|
|
143
|
-
<Badge variant="secondary">Wireless</Badge>
|
|
144
|
-
</div>
|
|
145
|
-
</AccordionContent>
|
|
146
|
-
```
|
|
147
|
-
|
|
148
|
-
## Props
|
|
149
|
-
|
|
150
|
-
### Accordion
|
|
151
|
-
|
|
152
|
-
| Prop | Tipo | Default | Descripción |
|
|
153
|
-
| ------------- | ------------------------ | ------- | --------------------------------------------------------- |
|
|
154
|
-
| type | `"single" \| "multiple"` | - | Tipo de accordion |
|
|
155
|
-
| collapsible | `boolean` | - | Solo para type="single". Permite colapsar todos los items |
|
|
156
|
-
| defaultValue | `string \| string[]` | - | Valor inicial abierto |
|
|
157
|
-
| value | `string \| string[]` | - | Valor controlado |
|
|
158
|
-
| onValueChange | `(value) => void` | - | Callback cuando cambia el valor |
|
|
159
|
-
|
|
160
|
-
### AccordionItem
|
|
161
|
-
|
|
162
|
-
| Prop | Tipo | Default | Descripción |
|
|
163
|
-
| --------- | --------- | ------- | ---------------------------------------- |
|
|
164
|
-
| value | `string` | - | Identificador único del item (requerido) |
|
|
165
|
-
| disabled | `boolean` | `false` | Desactiva el item |
|
|
166
|
-
| className | `string` | - | Clases CSS adicionales |
|
|
167
|
-
|
|
168
|
-
### AccordionTrigger
|
|
169
|
-
|
|
170
|
-
| Prop | Tipo | Default | Descripción |
|
|
171
|
-
| --------- | ----------- | ------- | ---------------------- |
|
|
172
|
-
| className | `string` | - | Clases CSS adicionales |
|
|
173
|
-
| children | `ReactNode` | - | Contenido del trigger |
|
|
174
|
-
|
|
175
|
-
### AccordionContent
|
|
176
|
-
|
|
177
|
-
| Prop | Tipo | Default | Descripción |
|
|
178
|
-
| --------- | ----------- | ------- | --------------------------- |
|
|
179
|
-
| className | `string` | - | Clases CSS adicionales |
|
|
180
|
-
| children | `ReactNode` | - | Contenido a mostrar/ocultar |
|
|
181
|
-
|
|
182
|
-
## Animaciones
|
|
183
|
-
|
|
184
|
-
El componente incluye animaciones suaves de entrada/salida:
|
|
185
|
-
|
|
186
|
-
- El contenido se desliza hacia abajo al abrir
|
|
187
|
-
- El contenido se desliza hacia arriba al cerrar
|
|
188
|
-
- El icono chevron rota 180° al abrir
|
|
189
|
-
|
|
190
|
-
## Estilizado
|
|
191
|
-
|
|
192
|
-
Cada item tiene un borde inferior que desaparece en el último elemento:
|
|
193
|
-
|
|
194
|
-
```tsx
|
|
195
|
-
<AccordionItem className="border-b last:border-b-0">
|
|
196
|
-
```
|
|
197
|
-
|
|
198
|
-
El trigger incluye hover effect con subrayado:
|
|
199
|
-
|
|
200
|
-
```tsx
|
|
201
|
-
<AccordionTrigger className="hover:underline">
|
|
202
|
-
```
|
|
203
|
-
|
|
204
|
-
## Casos de Uso Comunes
|
|
205
|
-
|
|
206
|
-
### FAQ Section
|
|
207
|
-
|
|
208
|
-
```tsx
|
|
209
|
-
<Accordion type="single" collapsible>
|
|
210
|
-
<AccordionItem value="q1">
|
|
211
|
-
<AccordionTrigger>How do I get started?</AccordionTrigger>
|
|
212
|
-
<AccordionContent>Follow our quick start guide...</AccordionContent>
|
|
213
|
-
</AccordionItem>
|
|
214
|
-
</Accordion>
|
|
215
|
-
```
|
|
216
|
-
|
|
217
|
-
### Product Information
|
|
218
|
-
|
|
219
|
-
```tsx
|
|
220
|
-
<Accordion type="single" collapsible defaultValue="info">
|
|
221
|
-
<AccordionItem value="info">
|
|
222
|
-
<AccordionTrigger>Product Information</AccordionTrigger>
|
|
223
|
-
<AccordionContent>{/* Specifications, features, etc */}</AccordionContent>
|
|
224
|
-
</AccordionItem>
|
|
225
|
-
<AccordionItem value="shipping">
|
|
226
|
-
<AccordionTrigger>Shipping & Delivery</AccordionTrigger>
|
|
227
|
-
<AccordionContent>{/* Shipping details */}</AccordionContent>
|
|
228
|
-
</AccordionItem>
|
|
229
|
-
</Accordion>
|
|
230
|
-
```
|
|
231
|
-
|
|
232
|
-
### Project Timeline
|
|
233
|
-
|
|
234
|
-
```tsx
|
|
235
|
-
<Accordion type="single" collapsible>
|
|
236
|
-
<AccordionItem value="phase-1">
|
|
237
|
-
<AccordionTrigger>
|
|
238
|
-
<div className="flex items-center gap-2">
|
|
239
|
-
<Icon symbol="check_circle" className="text-lg" />
|
|
240
|
-
Phase 1: Planning
|
|
241
|
-
</div>
|
|
242
|
-
</AccordionTrigger>
|
|
243
|
-
<AccordionContent>
|
|
244
|
-
<Progress value={100} />
|
|
245
|
-
{/* Phase details */}
|
|
246
|
-
</AccordionContent>
|
|
247
|
-
</AccordionItem>
|
|
248
|
-
</Accordion>
|
|
249
|
-
```
|
|
250
|
-
|
|
251
|
-
## Accesibilidad
|
|
252
|
-
|
|
253
|
-
- Sigue el patrón WAI-ARIA para accordions
|
|
254
|
-
- Navegación por teclado completa
|
|
255
|
-
- Estados de focus visibles
|
|
256
|
-
- Screen readers pueden anunciar el estado expandido/colapsado
|
|
257
|
-
- Cada trigger tiene el header semántico apropiado
|
|
258
|
-
|
|
259
|
-
## Notas de Implementación
|
|
260
|
-
|
|
261
|
-
- Usa Radix UI Accordion internamente
|
|
262
|
-
- Todos los estilos tienen prefijo ``
|
|
263
|
-
- El icono keyboard_arrow_down se incluye automáticamente en el trigger
|
|
264
|
-
- Las animaciones son manejadas por CSS y data attributes
|
|
265
|
-
|
|
266
|
-
## Referencias
|
|
267
|
-
|
|
268
|
-
- Documentación de shadcn/ui: https://ui.shadcn.com/docs/components/accordion
|
|
269
|
-
- Radix UI Accordion: https://www.radix-ui.com/primitives/docs/components/accordion
|
|
1
|
+
# Accordion Component
|
|
2
|
+
|
|
3
|
+
## Descripción
|
|
4
|
+
|
|
5
|
+
El componente `Accordion` es un elemento de interfaz vertically apilado que permite a los usuarios expandir y colapsar secciones de contenido.
|
|
6
|
+
|
|
7
|
+
## Importación
|
|
8
|
+
|
|
9
|
+
```typescript
|
|
10
|
+
import {
|
|
11
|
+
Accordion,
|
|
12
|
+
AccordionContent,
|
|
13
|
+
AccordionItem,
|
|
14
|
+
AccordionTrigger,
|
|
15
|
+
} from "@adamosuiteservices/ui/accordion";
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Componentes
|
|
19
|
+
|
|
20
|
+
### Accordion (Root)
|
|
21
|
+
|
|
22
|
+
Contenedor principal que controla el comportamiento del accordion.
|
|
23
|
+
|
|
24
|
+
### AccordionItem
|
|
25
|
+
|
|
26
|
+
Representa cada elemento individual del accordion.
|
|
27
|
+
|
|
28
|
+
### AccordionTrigger
|
|
29
|
+
|
|
30
|
+
El botón/header que se puede clickear para expandir/colapsar.
|
|
31
|
+
|
|
32
|
+
### AccordionContent
|
|
33
|
+
|
|
34
|
+
El contenido que se muestra/oculta al activar el trigger.
|
|
35
|
+
|
|
36
|
+
## Uso Básico
|
|
37
|
+
|
|
38
|
+
```tsx
|
|
39
|
+
<Accordion type="single" collapsible>
|
|
40
|
+
<AccordionItem value="item-1">
|
|
41
|
+
<AccordionTrigger>Is it accessible?</AccordionTrigger>
|
|
42
|
+
<AccordionContent>
|
|
43
|
+
Yes. It adheres to the WAI-ARIA design pattern.
|
|
44
|
+
</AccordionContent>
|
|
45
|
+
</AccordionItem>
|
|
46
|
+
<AccordionItem value="item-2">
|
|
47
|
+
<AccordionTrigger>Is it styled?</AccordionTrigger>
|
|
48
|
+
<AccordionContent>Yes. It comes with default styles.</AccordionContent>
|
|
49
|
+
</AccordionItem>
|
|
50
|
+
</Accordion>
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
## Tipos de Accordion
|
|
54
|
+
|
|
55
|
+
### Single (Un elemento a la vez)
|
|
56
|
+
|
|
57
|
+
Solo permite que un elemento esté abierto a la vez.
|
|
58
|
+
|
|
59
|
+
```tsx
|
|
60
|
+
<Accordion type="single" collapsible>
|
|
61
|
+
{/* items */}
|
|
62
|
+
</Accordion>
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
### Multiple (Múltiples elementos)
|
|
66
|
+
|
|
67
|
+
Permite que múltiples elementos estén abiertos simultáneamente.
|
|
68
|
+
|
|
69
|
+
```tsx
|
|
70
|
+
<Accordion type="multiple">{/* items */}</Accordion>
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
## Con Valor por Defecto
|
|
74
|
+
|
|
75
|
+
Puedes especificar qué elemento debe estar abierto inicialmente.
|
|
76
|
+
|
|
77
|
+
```tsx
|
|
78
|
+
<Accordion type="single" defaultValue="item-2" collapsible>
|
|
79
|
+
<AccordionItem value="item-1">
|
|
80
|
+
<AccordionTrigger>First Item</AccordionTrigger>
|
|
81
|
+
<AccordionContent>Content 1</AccordionContent>
|
|
82
|
+
</AccordionItem>
|
|
83
|
+
<AccordionItem value="item-2">
|
|
84
|
+
<AccordionTrigger>Second Item (Default Open)</AccordionTrigger>
|
|
85
|
+
<AccordionContent>Content 2</AccordionContent>
|
|
86
|
+
</AccordionItem>
|
|
87
|
+
</Accordion>
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
## Modo No-Collapsible
|
|
91
|
+
|
|
92
|
+
En modo `type="single"` sin `collapsible`, al menos un elemento debe estar abierto.
|
|
93
|
+
|
|
94
|
+
```tsx
|
|
95
|
+
<Accordion type="single" collapsible={false} defaultValue="item-1">
|
|
96
|
+
{/* items */}
|
|
97
|
+
</Accordion>
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
## Controlado
|
|
101
|
+
|
|
102
|
+
Puedes controlar el accordion externamente con estado.
|
|
103
|
+
|
|
104
|
+
```tsx
|
|
105
|
+
const [value, setValue] = useState<string | undefined>("item-1");
|
|
106
|
+
|
|
107
|
+
<Accordion type="single" collapsible value={value} onValueChange={setValue}>
|
|
108
|
+
{/* items */}
|
|
109
|
+
</Accordion>;
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
## Con Contenido Rico
|
|
113
|
+
|
|
114
|
+
### Con Listas
|
|
115
|
+
|
|
116
|
+
```tsx
|
|
117
|
+
<AccordionContent>
|
|
118
|
+
<div className="space-y-2">
|
|
119
|
+
<p>Modern frontend development stack includes:</p>
|
|
120
|
+
<ul className="list-disc list-inside space-y-1">
|
|
121
|
+
<li>React for building user interfaces</li>
|
|
122
|
+
<li>TypeScript for type safety</li>
|
|
123
|
+
<li>Tailwind CSS for styling</li>
|
|
124
|
+
</ul>
|
|
125
|
+
</div>
|
|
126
|
+
</AccordionContent>
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
### Con Iconos y Badges
|
|
130
|
+
|
|
131
|
+
```tsx
|
|
132
|
+
import { Icon } from "@adamosuiteservices/ui/icon";
|
|
133
|
+
|
|
134
|
+
<AccordionTrigger className="text-left">
|
|
135
|
+
<div className="flex items-center gap-2">
|
|
136
|
+
<Icon symbol="info" className="text-lg" />
|
|
137
|
+
Product Information
|
|
138
|
+
</div>
|
|
139
|
+
</AccordionTrigger>
|
|
140
|
+
<AccordionContent>
|
|
141
|
+
<div className="flex gap-2">
|
|
142
|
+
<Badge>Premium Quality</Badge>
|
|
143
|
+
<Badge variant="secondary">Wireless</Badge>
|
|
144
|
+
</div>
|
|
145
|
+
</AccordionContent>
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
## Props
|
|
149
|
+
|
|
150
|
+
### Accordion
|
|
151
|
+
|
|
152
|
+
| Prop | Tipo | Default | Descripción |
|
|
153
|
+
| ------------- | ------------------------ | ------- | --------------------------------------------------------- |
|
|
154
|
+
| type | `"single" \| "multiple"` | - | Tipo de accordion |
|
|
155
|
+
| collapsible | `boolean` | - | Solo para type="single". Permite colapsar todos los items |
|
|
156
|
+
| defaultValue | `string \| string[]` | - | Valor inicial abierto |
|
|
157
|
+
| value | `string \| string[]` | - | Valor controlado |
|
|
158
|
+
| onValueChange | `(value) => void` | - | Callback cuando cambia el valor |
|
|
159
|
+
|
|
160
|
+
### AccordionItem
|
|
161
|
+
|
|
162
|
+
| Prop | Tipo | Default | Descripción |
|
|
163
|
+
| --------- | --------- | ------- | ---------------------------------------- |
|
|
164
|
+
| value | `string` | - | Identificador único del item (requerido) |
|
|
165
|
+
| disabled | `boolean` | `false` | Desactiva el item |
|
|
166
|
+
| className | `string` | - | Clases CSS adicionales |
|
|
167
|
+
|
|
168
|
+
### AccordionTrigger
|
|
169
|
+
|
|
170
|
+
| Prop | Tipo | Default | Descripción |
|
|
171
|
+
| --------- | ----------- | ------- | ---------------------- |
|
|
172
|
+
| className | `string` | - | Clases CSS adicionales |
|
|
173
|
+
| children | `ReactNode` | - | Contenido del trigger |
|
|
174
|
+
|
|
175
|
+
### AccordionContent
|
|
176
|
+
|
|
177
|
+
| Prop | Tipo | Default | Descripción |
|
|
178
|
+
| --------- | ----------- | ------- | --------------------------- |
|
|
179
|
+
| className | `string` | - | Clases CSS adicionales |
|
|
180
|
+
| children | `ReactNode` | - | Contenido a mostrar/ocultar |
|
|
181
|
+
|
|
182
|
+
## Animaciones
|
|
183
|
+
|
|
184
|
+
El componente incluye animaciones suaves de entrada/salida:
|
|
185
|
+
|
|
186
|
+
- El contenido se desliza hacia abajo al abrir
|
|
187
|
+
- El contenido se desliza hacia arriba al cerrar
|
|
188
|
+
- El icono chevron rota 180° al abrir
|
|
189
|
+
|
|
190
|
+
## Estilizado
|
|
191
|
+
|
|
192
|
+
Cada item tiene un borde inferior que desaparece en el último elemento:
|
|
193
|
+
|
|
194
|
+
```tsx
|
|
195
|
+
<AccordionItem className="border-b last:border-b-0">
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
El trigger incluye hover effect con subrayado:
|
|
199
|
+
|
|
200
|
+
```tsx
|
|
201
|
+
<AccordionTrigger className="hover:underline">
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
## Casos de Uso Comunes
|
|
205
|
+
|
|
206
|
+
### FAQ Section
|
|
207
|
+
|
|
208
|
+
```tsx
|
|
209
|
+
<Accordion type="single" collapsible>
|
|
210
|
+
<AccordionItem value="q1">
|
|
211
|
+
<AccordionTrigger>How do I get started?</AccordionTrigger>
|
|
212
|
+
<AccordionContent>Follow our quick start guide...</AccordionContent>
|
|
213
|
+
</AccordionItem>
|
|
214
|
+
</Accordion>
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
### Product Information
|
|
218
|
+
|
|
219
|
+
```tsx
|
|
220
|
+
<Accordion type="single" collapsible defaultValue="info">
|
|
221
|
+
<AccordionItem value="info">
|
|
222
|
+
<AccordionTrigger>Product Information</AccordionTrigger>
|
|
223
|
+
<AccordionContent>{/* Specifications, features, etc */}</AccordionContent>
|
|
224
|
+
</AccordionItem>
|
|
225
|
+
<AccordionItem value="shipping">
|
|
226
|
+
<AccordionTrigger>Shipping & Delivery</AccordionTrigger>
|
|
227
|
+
<AccordionContent>{/* Shipping details */}</AccordionContent>
|
|
228
|
+
</AccordionItem>
|
|
229
|
+
</Accordion>
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
### Project Timeline
|
|
233
|
+
|
|
234
|
+
```tsx
|
|
235
|
+
<Accordion type="single" collapsible>
|
|
236
|
+
<AccordionItem value="phase-1">
|
|
237
|
+
<AccordionTrigger>
|
|
238
|
+
<div className="flex items-center gap-2">
|
|
239
|
+
<Icon symbol="check_circle" className="text-lg" />
|
|
240
|
+
Phase 1: Planning
|
|
241
|
+
</div>
|
|
242
|
+
</AccordionTrigger>
|
|
243
|
+
<AccordionContent>
|
|
244
|
+
<Progress value={100} />
|
|
245
|
+
{/* Phase details */}
|
|
246
|
+
</AccordionContent>
|
|
247
|
+
</AccordionItem>
|
|
248
|
+
</Accordion>
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
## Accesibilidad
|
|
252
|
+
|
|
253
|
+
- Sigue el patrón WAI-ARIA para accordions
|
|
254
|
+
- Navegación por teclado completa
|
|
255
|
+
- Estados de focus visibles
|
|
256
|
+
- Screen readers pueden anunciar el estado expandido/colapsado
|
|
257
|
+
- Cada trigger tiene el header semántico apropiado
|
|
258
|
+
|
|
259
|
+
## Notas de Implementación
|
|
260
|
+
|
|
261
|
+
- Usa Radix UI Accordion internamente
|
|
262
|
+
- Todos los estilos tienen prefijo ``
|
|
263
|
+
- El icono keyboard_arrow_down se incluye automáticamente en el trigger
|
|
264
|
+
- Las animaciones son manejadas por CSS y data attributes
|
|
265
|
+
|
|
266
|
+
## Referencias
|
|
267
|
+
|
|
268
|
+
- Documentación de shadcn/ui: https://ui.shadcn.com/docs/components/accordion
|
|
269
|
+
- Radix UI Accordion: https://www.radix-ui.com/primitives/docs/components/accordion
|