@adamosuiteservices/ui 1.7.13 → 1.8.13

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 (307) hide show
  1. package/dist/accordion-rounded.cjs +24 -2
  2. package/dist/accordion-rounded.js +46 -8
  3. package/dist/accordion.cjs +20 -1
  4. package/dist/accordion.js +29 -5
  5. package/dist/alert.cjs +26 -1
  6. package/dist/alert.js +33 -8
  7. package/dist/avatar.cjs +7 -1
  8. package/dist/avatar.js +8 -2
  9. package/dist/badge.cjs +83 -1
  10. package/dist/badge.js +106 -24
  11. package/dist/breadcrumb.cjs +8 -1
  12. package/dist/breadcrumb.js +11 -4
  13. package/dist/button-B7ZP4LZN.js +127 -0
  14. package/dist/button-D-qFRXiM.cjs +70 -0
  15. package/dist/button-group.cjs +25 -1
  16. package/dist/button-group.js +33 -9
  17. package/dist/button.cjs +1 -1
  18. package/dist/button.js +1 -1
  19. package/dist/calendar.cjs +74 -1
  20. package/dist/calendar.js +114 -35
  21. package/dist/card.cjs +35 -1
  22. package/dist/card.js +45 -11
  23. package/dist/{checkbox-YWAnswaW.cjs → checkbox-CdnZ8VFJ.cjs} +21 -1
  24. package/dist/{checkbox-Dr487kAg.js → checkbox-DhBcmKze.js} +34 -4
  25. package/dist/checkbox.cjs +1 -1
  26. package/dist/checkbox.js +1 -1
  27. package/dist/combobox.cjs +36 -2
  28. package/dist/combobox.js +62 -22
  29. package/dist/components/icons/account-balance-icon.d.ts +3 -0
  30. package/dist/components/icons/account-icon.d.ts +3 -0
  31. package/dist/components/icons/add-circle-icon.d.ts +3 -0
  32. package/dist/components/icons/alarm-icon.d.ts +3 -0
  33. package/dist/components/icons/archive-icon.d.ts +3 -0
  34. package/dist/components/icons/arrow-back-icon.d.ts +3 -0
  35. package/dist/components/icons/arrow-circle-up-icon.d.ts +3 -0
  36. package/dist/components/icons/arrow-forward-icon.d.ts +3 -0
  37. package/dist/components/icons/arrow-outward-icon.d.ts +3 -0
  38. package/dist/components/icons/article-icon.d.ts +3 -0
  39. package/dist/components/icons/attach-file-icon.d.ts +3 -0
  40. package/dist/components/icons/autorenew-icon.d.ts +3 -0
  41. package/dist/components/icons/bookmark-icon.d.ts +3 -0
  42. package/dist/components/icons/calculate-icon.d.ts +3 -0
  43. package/dist/components/icons/calendar-today-icon.d.ts +3 -0
  44. package/dist/components/icons/call-split-icon.d.ts +3 -0
  45. package/dist/components/icons/cancel-filled-icon.d.ts +3 -0
  46. package/dist/components/icons/cancel-icon.d.ts +3 -0
  47. package/dist/components/icons/check-circle-icon.d.ts +3 -0
  48. package/dist/components/icons/check-icon.d.ts +3 -0
  49. package/dist/components/icons/chevron-back-icon.d.ts +3 -0
  50. package/dist/components/icons/chevron-down-icon.d.ts +3 -0
  51. package/dist/components/icons/chevron-forward-icon.d.ts +3 -0
  52. package/dist/components/icons/chevron-up-icon.d.ts +3 -0
  53. package/dist/components/icons/clarify-icon.d.ts +3 -0
  54. package/dist/components/icons/clock-icon.d.ts +3 -0
  55. package/dist/components/icons/close-icon.d.ts +3 -0
  56. package/dist/components/icons/confirmation-number-icon.d.ts +3 -0
  57. package/dist/components/icons/contacts-icon.d.ts +3 -0
  58. package/dist/components/icons/contract-delete-icon.d.ts +3 -0
  59. package/dist/components/icons/copy-icon.d.ts +3 -0
  60. package/dist/components/icons/do-not-touch-icon.d.ts +3 -0
  61. package/dist/components/icons/download-icon.d.ts +3 -0
  62. package/dist/components/icons/dragger-icon.d.ts +3 -0
  63. package/dist/components/icons/edit-icon.d.ts +3 -0
  64. package/dist/components/icons/edit-square-icon.d.ts +3 -0
  65. package/dist/components/icons/exclamation-icon.d.ts +3 -0
  66. package/dist/components/icons/expand-circle-right-icon.d.ts +3 -0
  67. package/dist/components/icons/feature-search-icon.d.ts +3 -0
  68. package/dist/components/icons/filter-icon.d.ts +3 -0
  69. package/dist/components/icons/folder-icon.d.ts +3 -0
  70. package/dist/components/icons/folder-open-icon.d.ts +3 -0
  71. package/dist/components/icons/format-list-bulleted-icon.d.ts +3 -0
  72. package/dist/components/icons/hamburger-menu-icon.d.ts +3 -0
  73. package/dist/components/icons/help-icon.d.ts +3 -0
  74. package/dist/components/icons/hide-pass-icon.d.ts +3 -0
  75. package/dist/components/icons/home-icon.d.ts +3 -0
  76. package/dist/components/icons/id-card-icon.d.ts +3 -0
  77. package/dist/components/icons/index.d.ts +88 -0
  78. package/dist/components/icons/info-icon.d.ts +3 -0
  79. package/dist/components/icons/kid-star-icon.d.ts +3 -0
  80. package/dist/components/icons/language-icon.d.ts +3 -0
  81. package/dist/components/icons/last-page-icon.d.ts +3 -0
  82. package/dist/components/icons/layers-icon.d.ts +3 -0
  83. package/dist/components/icons/location-icon.d.ts +3 -0
  84. package/dist/components/icons/mail-icon.d.ts +3 -0
  85. package/dist/components/icons/manage-search-icon.d.ts +3 -0
  86. package/dist/components/icons/menu-icon.d.ts +3 -0
  87. package/dist/components/icons/message-icon.d.ts +3 -0
  88. package/dist/components/icons/metrics-icon.d.ts +3 -0
  89. package/dist/components/icons/mic-icon.d.ts +3 -0
  90. package/dist/components/icons/minus-icon.d.ts +3 -0
  91. package/dist/components/icons/mode-comment-icon.d.ts +3 -0
  92. package/dist/components/icons/money-icon.d.ts +3 -0
  93. package/dist/components/icons/monitoring-icon.d.ts +3 -0
  94. package/dist/components/icons/more-icon.d.ts +3 -0
  95. package/dist/components/icons/notifications-icon.d.ts +3 -0
  96. package/dist/components/icons/open-in-new-icon.d.ts +3 -0
  97. package/dist/components/icons/palette-icon.d.ts +3 -0
  98. package/dist/components/icons/password-icon.d.ts +3 -0
  99. package/dist/components/icons/pending-icon.d.ts +3 -0
  100. package/dist/components/icons/person-add-icon.d.ts +3 -0
  101. package/dist/components/icons/person-search-icon.d.ts +3 -0
  102. package/dist/components/icons/photo-icon.d.ts +3 -0
  103. package/dist/components/icons/plus-icon.d.ts +3 -0
  104. package/dist/components/icons/policy-icon.d.ts +3 -0
  105. package/dist/components/icons/publish-icon.d.ts +3 -0
  106. package/dist/components/icons/ready-icon.d.ts +3 -0
  107. package/dist/components/icons/receipt-icon.d.ts +3 -0
  108. package/dist/components/icons/receive-icon.d.ts +3 -0
  109. package/dist/components/icons/refresh-icon.d.ts +3 -0
  110. package/dist/components/icons/search-icon.d.ts +3 -0
  111. package/dist/components/icons/see-icon.d.ts +3 -0
  112. package/dist/components/icons/send-icon.d.ts +3 -0
  113. package/dist/components/icons/settings-icon.d.ts +3 -0
  114. package/dist/components/icons/shield-icon.d.ts +3 -0
  115. package/dist/components/icons/swap-horiz-icon.d.ts +3 -0
  116. package/dist/components/icons/tag-icon.d.ts +3 -0
  117. package/dist/components/icons/trash-icon.d.ts +3 -0
  118. package/dist/components/layout/toaster/toaster.d.ts +1 -1
  119. package/dist/components/layout/toaster/toaster.stories.d.ts +1 -1
  120. package/dist/components/ui/accordion/accordion.d.ts +1 -1
  121. package/dist/components/ui/accordion/accordion.stories.d.ts +1 -1
  122. package/dist/components/ui/accordion-rounded/accordion-rounded.d.ts +1 -1
  123. package/dist/components/ui/accordion-rounded/accordion-rounded.stories.d.ts +1 -1
  124. package/dist/components/ui/alert/alert.stories.d.ts +1 -1
  125. package/dist/components/ui/avatar/avatar.d.ts +1 -1
  126. package/dist/components/ui/avatar/avatar.stories.d.ts +1 -1
  127. package/dist/components/ui/badge/badge.stories.d.ts +1 -1
  128. package/dist/components/ui/breadcrumb/breadcrumb.stories.d.ts +1 -1
  129. package/dist/components/ui/button/button.stories.d.ts +1 -1
  130. package/dist/components/ui/button-group/button-group.d.ts +1 -1
  131. package/dist/components/ui/button-group/button-group.stories.d.ts +1 -1
  132. package/dist/components/ui/calendar/calendar.d.ts +1 -1
  133. package/dist/components/ui/calendar/calendar.stories.d.ts +1 -1
  134. package/dist/components/ui/card/card.stories.d.ts +1 -1
  135. package/dist/components/ui/checkbox/checkbox.d.ts +1 -1
  136. package/dist/components/ui/checkbox/checkbox.stories.d.ts +1 -1
  137. package/dist/components/ui/collapsible/collapsible.stories.d.ts +1 -1
  138. package/dist/components/ui/combobox/combobox.stories.d.ts +1 -1
  139. package/dist/components/ui/command/command.d.ts +1 -1
  140. package/dist/components/ui/context-menu/context-menu.d.ts +1 -1
  141. package/dist/components/ui/context-menu/context-menu.stories.d.ts +1 -1
  142. package/dist/components/ui/dialog/dialog.d.ts +1 -1
  143. package/dist/components/ui/dialog/dialog.stories.d.ts +1 -1
  144. package/dist/components/ui/dropdown-menu/dropdown-menu.d.ts +1 -1
  145. package/dist/components/ui/dropdown-menu/dropdown-menu.stories.d.ts +1 -1
  146. package/dist/components/ui/field/field.d.ts +1 -1
  147. package/dist/components/ui/field/field.stories.d.ts +1 -1
  148. package/dist/components/ui/hover-card/hover-card.d.ts +1 -1
  149. package/dist/components/ui/hover-card/hover-card.stories.d.ts +1 -1
  150. package/dist/components/ui/input/input.stories.d.ts +1 -1
  151. package/dist/components/ui/input-group/Input-group.stories.d.ts +1 -1
  152. package/dist/components/ui/input-group/input-group.d.ts +1 -1
  153. package/dist/components/ui/kbd/kbd.stories.d.ts +1 -1
  154. package/dist/components/ui/label/label.d.ts +1 -1
  155. package/dist/components/ui/label/label.stories.d.ts +1 -1
  156. package/dist/components/ui/pagination/pagination.stories.d.ts +1 -1
  157. package/dist/components/ui/popover/popover.d.ts +1 -1
  158. package/dist/components/ui/popover/popover.stories.d.ts +1 -1
  159. package/dist/components/ui/progress/progress.d.ts +1 -1
  160. package/dist/components/ui/progress/progress.stories.d.ts +1 -1
  161. package/dist/components/ui/radio-group/radio-group.d.ts +1 -1
  162. package/dist/components/ui/radio-group/radio-group.stories.d.ts +1 -1
  163. package/dist/components/ui/scroll-area/scroll-area.d.ts +1 -1
  164. package/dist/components/ui/scroll-area/scroll-area.stories.d.ts +1 -1
  165. package/dist/components/ui/select/select.d.ts +1 -1
  166. package/dist/components/ui/select/select.stories.d.ts +1 -1
  167. package/dist/components/ui/separator/separator.d.ts +1 -1
  168. package/dist/components/ui/separator/separator.stories.d.ts +1 -1
  169. package/dist/components/ui/sheet/sheet.d.ts +1 -1
  170. package/dist/components/ui/sheet/sheet.stories.d.ts +1 -1
  171. package/dist/components/ui/skeleton/skeleton.stories.d.ts +1 -1
  172. package/dist/components/ui/slider/slider.d.ts +1 -1
  173. package/dist/components/ui/slider/slider.stories.d.ts +1 -1
  174. package/dist/components/ui/spinner/spinner.stories.d.ts +1 -1
  175. package/dist/components/ui/switch/switch.d.ts +1 -1
  176. package/dist/components/ui/switch/switch.stories.d.ts +1 -1
  177. package/dist/components/ui/tabs/tabs.d.ts +1 -1
  178. package/dist/components/ui/tabs/tabs.stories.d.ts +1 -1
  179. package/dist/components/ui/tabs-underline/tabs-underline.d.ts +1 -1
  180. package/dist/components/ui/tabs-underline/tabs-underline.stories.d.ts +1 -1
  181. package/dist/components/ui/textarea/textarea.stories.d.ts +1 -1
  182. package/dist/components/ui/toggle/toggle.d.ts +1 -1
  183. package/dist/components/ui/toggle/toggle.stories.d.ts +1 -1
  184. package/dist/components/ui/tooltip/tooltip.d.ts +1 -1
  185. package/dist/components/ui/tooltip/tooltip.stories.d.ts +1 -1
  186. package/dist/context-menu.cjs +79 -1
  187. package/dist/context-menu.js +101 -11
  188. package/dist/custom-layered-styles.css +1 -1
  189. package/dist/dialog.cjs +30 -1
  190. package/dist/dialog.js +35 -6
  191. package/dist/dropdown-menu.cjs +79 -1
  192. package/dist/dropdown-menu.js +101 -11
  193. package/dist/field.cjs +66 -1
  194. package/dist/field.js +91 -26
  195. package/dist/hover-card.cjs +15 -1
  196. package/dist/hover-card.js +15 -1
  197. package/dist/icons.cjs +1 -0
  198. package/dist/icons.js +1507 -0
  199. package/dist/input-BQZUpTEY.js +42 -0
  200. package/dist/input-DSmxdfq5.cjs +21 -0
  201. package/dist/input-group.cjs +76 -1
  202. package/dist/input-group.js +99 -24
  203. package/dist/input.cjs +1 -1
  204. package/dist/input.js +1 -1
  205. package/dist/kbd.cjs +10 -1
  206. package/dist/kbd.js +11 -2
  207. package/dist/{label-CmwGvhy1.js → label-BJ8Yf6Ft.js} +7 -1
  208. package/dist/{label-BjXORCBM.cjs → label-CNGQhi5L.cjs} +7 -1
  209. package/dist/label.cjs +1 -1
  210. package/dist/label.js +1 -1
  211. package/dist/pagination.cjs +13 -1
  212. package/dist/pagination.js +30 -6
  213. package/dist/{popover-FCKBtFo-.cjs → popover-CYbik-H4.cjs} +15 -1
  214. package/dist/{popover-3rIoNCXs.js → popover-DAwH8jUh.js} +15 -1
  215. package/dist/popover.cjs +1 -1
  216. package/dist/popover.js +1 -1
  217. package/dist/radio-group.cjs +14 -1
  218. package/dist/radio-group.js +20 -2
  219. package/dist/select.cjs +68 -1
  220. package/dist/select.js +83 -10
  221. package/dist/{separator-BaZqZZ9R.cjs → separator-Brpax0EI.cjs} +7 -1
  222. package/dist/{separator-DR7lQjv9.js → separator-DVypR3Qf.js} +7 -1
  223. package/dist/separator.cjs +1 -1
  224. package/dist/separator.js +1 -1
  225. package/dist/sheet-CGahUP7F.cjs +41 -0
  226. package/dist/sheet-Q3dBOQG-.js +174 -0
  227. package/dist/sheet.cjs +1 -1
  228. package/dist/sheet.js +1 -1
  229. package/dist/sidebar.cjs +20 -2
  230. package/dist/sidebar.js +58 -26
  231. package/dist/skeleton.cjs +1 -1
  232. package/dist/skeleton.js +1 -1
  233. package/dist/slider.cjs +27 -1
  234. package/dist/slider.js +30 -4
  235. package/dist/space.css +1 -1
  236. package/dist/styles.css +1 -1
  237. package/dist/switch.cjs +18 -1
  238. package/dist/switch.js +19 -2
  239. package/dist/table.cjs +20 -1
  240. package/dist/table.js +26 -7
  241. package/dist/tabs-underline.cjs +21 -1
  242. package/dist/tabs-underline.js +23 -3
  243. package/dist/tabs.cjs +22 -1
  244. package/dist/tabs.js +24 -3
  245. package/dist/textarea-CG7iQcb3.cjs +14 -0
  246. package/dist/textarea-CUPWKl-S.js +32 -0
  247. package/dist/textarea.cjs +1 -1
  248. package/dist/textarea.js +1 -1
  249. package/dist/toaster.cjs +4 -1
  250. package/dist/toaster.js +9 -6
  251. package/dist/toggle.cjs +17 -1
  252. package/dist/toggle.js +25 -9
  253. package/dist/tooltip.cjs +16 -1
  254. package/dist/tooltip.js +22 -2
  255. package/dist/typography.cjs +1 -1
  256. package/dist/typography.js +6 -6
  257. package/docs/AI-GUIDE.md +321 -321
  258. package/docs/components/layout/sidebar.md +404 -404
  259. package/docs/components/layout/toaster.md +436 -436
  260. package/docs/components/ui/accordion-rounded.md +583 -583
  261. package/docs/components/ui/accordion.md +267 -267
  262. package/docs/components/ui/alert.md +671 -671
  263. package/docs/components/ui/avatar.md +588 -588
  264. package/docs/components/ui/badge.md +1024 -1024
  265. package/docs/components/ui/button-group.md +1002 -1002
  266. package/docs/components/ui/button.md +1078 -1078
  267. package/docs/components/ui/calendar.md +1159 -1159
  268. package/docs/components/ui/card.md +1265 -1265
  269. package/docs/components/ui/checkbox.md +292 -292
  270. package/docs/components/ui/collapsible.md +320 -320
  271. package/docs/components/ui/command.md +454 -454
  272. package/docs/components/ui/context-menu.md +540 -540
  273. package/docs/components/ui/dialog.md +628 -628
  274. package/docs/components/ui/dropdown-menu.md +731 -731
  275. package/docs/components/ui/field.md +706 -706
  276. package/docs/components/ui/hover-card.md +446 -446
  277. package/docs/components/ui/input-group.md +509 -509
  278. package/docs/components/ui/input.md +362 -362
  279. package/docs/components/ui/kbd.md +434 -434
  280. package/docs/components/ui/label.md +359 -359
  281. package/docs/components/ui/pagination.md +650 -650
  282. package/docs/components/ui/popover.md +536 -536
  283. package/docs/components/ui/progress.md +182 -182
  284. package/docs/components/ui/radio-group.md +311 -311
  285. package/docs/components/ui/select.md +352 -352
  286. package/docs/components/ui/separator.md +214 -214
  287. package/docs/components/ui/sheet.md +142 -142
  288. package/docs/components/ui/skeleton.md +140 -140
  289. package/docs/components/ui/slider.md +341 -341
  290. package/docs/components/ui/spinner.md +170 -170
  291. package/docs/components/ui/switch.md +402 -402
  292. package/docs/components/ui/table.md +183 -183
  293. package/docs/components/ui/tabs-underline.md +106 -106
  294. package/docs/components/ui/tabs.md +122 -122
  295. package/docs/components/ui/textarea.md +243 -243
  296. package/docs/components/ui/toggle.md +243 -243
  297. package/docs/components/ui/tooltip.md +320 -320
  298. package/docs/components/ui/typography.md +191 -191
  299. package/package.json +7 -1
  300. package/dist/button-2GdKenQI.js +0 -58
  301. package/dist/button-DEQVHMrX.cjs +0 -1
  302. package/dist/input-BF73maXg.cjs +0 -1
  303. package/dist/input-C04hsVXE.js +0 -22
  304. package/dist/sheet-B-9YHdR5.js +0 -128
  305. package/dist/sheet-CU-sFSaJ.cjs +0 -1
  306. package/dist/textarea-3ZdbFRDN.cjs +0 -1
  307. package/dist/textarea-BZbcAAAu.js +0 -19
@@ -1,583 +1,583 @@
1
- # Accordion Rounded Component
2
-
3
- ## Descripción
4
-
5
- Variante especializada del componente Accordion diseñada para mostrar items con **bordes redondeados**, fondo gris claro, y soporte para **badges** en el trigger. Ideal para formularios de validación, procesos por pasos, y listas con estados visuales.
6
-
7
- ## Características Únicas
8
-
9
- - ✅ Bordes completamente redondeados (rounded-2xl)
10
- - ✅ Fondo gris claro en cada item
11
- - ✅ Soporte nativo para badges en el trigger
12
- - ✅ Iconos Plus/Minus para indicar estado
13
- - ✅ Títulos en mayúsculas y estilo compacto
14
- - ✅ Espaciado automático entre items
15
- - ✅ Animaciones suaves de apertura/cierre
16
-
17
- ## Importación
18
-
19
- ```typescript
20
- import {
21
- Accordion,
22
- AccordionContent,
23
- AccordionItem,
24
- AccordionTrigger,
25
- } from "@adamosuiteservices/ui/accordion-rounded";
26
- ```
27
-
28
- **Nota**: Los nombres de exportación son los mismos que el Accordion regular para facilitar el intercambio entre variantes.
29
-
30
- ## Uso Básico
31
-
32
- ### Accordion Simple
33
-
34
- ```tsx
35
- <Accordion type="single" collapsible>
36
- <AccordionItem value="item-1">
37
- <AccordionTrigger title="Basic Accordion Item" />
38
- <AccordionContent>
39
- <div className="p-4">
40
- <p className="text-sm text-neutrals-600">
41
- This is a simple accordion with just a title and content.
42
- </p>
43
- </div>
44
- </AccordionContent>
45
- </AccordionItem>
46
- </Accordion>
47
- ```
48
-
49
- ### Con Badge
50
-
51
- ```tsx
52
- import { Badge } from "@adamosuiteservices/ui/badge";
53
- import { AlertCircle } from "lucide-react";
54
-
55
- <Accordion type="single" collapsible>
56
- <AccordionItem value="item-1">
57
- <AccordionTrigger
58
- title="Name Matches"
59
- badge={
60
- <Badge variant="warning-medium" size="lg">
61
- <AlertCircle />2 matches found
62
- </Badge>
63
- }
64
- />
65
- <AccordionContent>
66
- <div className="p-4">
67
- <p className="text-sm text-neutrals-600">
68
- Content with warning badge indicator.
69
- </p>
70
- </div>
71
- </AccordionContent>
72
- </AccordionItem>
73
- </Accordion>;
74
- ```
75
-
76
- ## Props
77
-
78
- ### Accordion (Root)
79
-
80
- Basado en Radix UI Accordion Root.
81
-
82
- | Prop | Tipo | Default | Descripción |
83
- | ------------- | ------------------------------------- | ------- | ------------------------------------------------------- |
84
- | type | `"single" \| "multiple"` | - | **Requerido**. Tipo de accordion |
85
- | collapsible | `boolean` | `false` | Solo para type="single". Permite cerrar el item abierto |
86
- | defaultValue | `string \| string[]` | - | Valor(es) abierto(s) por defecto |
87
- | value | `string \| string[]` | - | Valor(es) controlado(s) |
88
- | onValueChange | `(value: string \| string[]) => void` | - | Callback al cambiar valores |
89
- | disabled | `boolean` | `false` | Deshabilita todo el accordion |
90
- | ...props | `HTMLAttributes<HTMLDivElement>` | - | Props nativas de div |
91
-
92
- **type="single"**: Solo un item puede estar abierto a la vez.
93
- **type="multiple"**: Múltiples items pueden estar abiertos simultáneamente.
94
-
95
- ### AccordionItem
96
-
97
- Contenedor individual de cada item del accordion.
98
-
99
- | Prop | Tipo | Descripción |
100
- | --------- | ---------------------------- | ------------------------------------------- |
101
- | value | `string` | **Requerido**. Identificador único del item |
102
- | className | `string` | Clases adicionales |
103
- | disabled | `boolean` | Deshabilita este item específico |
104
- | ...props | Props de Radix AccordionItem | Props nativas |
105
-
106
- **Estilos aplicados**:
107
-
108
- - `rounded-2xl`: Bordes muy redondeados
109
- - `bg-neutrals-50`: Fondo gris claro
110
- - `mb-4`: Margen inferior de 1rem
111
- - `last:mb-0`: Sin margen en el último item
112
-
113
- ### AccordionTrigger
114
-
115
- Botón que controla la apertura/cierre del item.
116
-
117
- | Prop | Tipo | Default | Descripción |
118
- | --------- | ---------------------- | ------- | ------------------------------------------------- |
119
- | title | `string` | - | Título del accordion (recomendado sobre children) |
120
- | badge | `ReactNode` | - | Badge o indicador a mostrar (ej: Badge component) |
121
- | className | `string` | - | Clases adicionales |
122
- | children | `ReactNode` | - | Contenido alternativo si no usas title |
123
- | ...props | `ButtonHTMLAttributes` | - | Props nativas de button |
124
-
125
- **Características**:
126
-
127
- - Título en mayúsculas automáticamente (uppercase)
128
- - Icono Plus cuando está cerrado
129
- - Icono Minus cuando está abierto
130
- - Transición suave de iconos
131
- - Altura fija de 3.5rem (h-14)
132
- - Text clamp para títulos largos
133
-
134
- ### AccordionContent
135
-
136
- Contenedor del contenido que se expande/colapsa.
137
-
138
- | Prop | Tipo | Descripción |
139
- | --------- | ------------------------------- | ------------------------------------------------- |
140
- | className | `string` | Clases adicionales (aplicadas al padding interno) |
141
- | children | `ReactNode` | Contenido a mostrar |
142
- | ...props | Props de Radix AccordionContent | Props nativas |
143
-
144
- **Animaciones**:
145
-
146
- - `animate-accordion-down`: Al abrir
147
- - `animate-accordion-up`: Al cerrar
148
- - Padding bottom de 1rem (pb-4)
149
-
150
- ## Variantes de Badge
151
-
152
- ### Success Badge
153
-
154
- Para estados completados o validados.
155
-
156
- ```tsx
157
- <AccordionTrigger
158
- title="Verification Completed"
159
- badge={
160
- <Badge variant="success-medium" size="lg">
161
- <CheckCircle />
162
- All fields validated
163
- </Badge>
164
- }
165
- />
166
- ```
167
-
168
- ### Warning Badge
169
-
170
- Para items que requieren atención.
171
-
172
- ```tsx
173
- <AccordionTrigger
174
- title="Name Matches"
175
- badge={
176
- <Badge variant="warning-medium" size="lg">
177
- <AlertCircle />2 matches found
178
- </Badge>
179
- }
180
- />
181
- ```
182
-
183
- ### Error/Destructive Badge
184
-
185
- Para errores o validaciones fallidas.
186
-
187
- ```tsx
188
- <AccordionTrigger
189
- title="Failed Validation"
190
- badge={
191
- <Badge variant="destructive-medium" size="lg">
192
- <XCircle />3 errors detected
193
- </Badge>
194
- }
195
- />
196
- ```
197
-
198
- ### Info Badge
199
-
200
- Para información adicional.
201
-
202
- ```tsx
203
- <AccordionTrigger
204
- title="Additional Information"
205
- badge={
206
- <Badge variant="default-medium" size="lg">
207
- <Info />
208
- Read more
209
- </Badge>
210
- }
211
- />
212
- ```
213
-
214
- ### Text Only Badge
215
-
216
- Sin icono.
217
-
218
- ```tsx
219
- <AccordionTrigger
220
- title="Custom Badge"
221
- badge={
222
- <Badge variant="muted" size="lg">
223
- NEW
224
- </Badge>
225
- }
226
- />
227
- ```
228
-
229
- ## Ejemplos Avanzados
230
-
231
- ### Múltiples Items (Single Type)
232
-
233
- Solo un item abierto a la vez:
234
-
235
- ```tsx
236
- <Accordion type="single" collapsible>
237
- <AccordionItem value="item-1">
238
- <AccordionTrigger
239
- title="Personal Information"
240
- badge={
241
- <Badge variant="warning-medium" size="lg">
242
- <AlertCircle />3 required fields
243
- </Badge>
244
- }
245
- />
246
- <AccordionContent>
247
- <div className="p-4 space-y-3">
248
- <div className="rounded-lg border border-neutrals-200 p-3">
249
- <h4 className="text-sm font-semibold text-neutrals-700">Full Name</h4>
250
- <p className="text-sm text-neutrals-600 mt-1">Required field</p>
251
- </div>
252
- {/* Más campos... */}
253
- </div>
254
- </AccordionContent>
255
- </AccordionItem>
256
-
257
- <AccordionItem value="item-2">
258
- <AccordionTrigger
259
- title="Address Details"
260
- badge={
261
- <Badge variant="success-medium" size="lg">
262
- <CheckCircle />
263
- Complete
264
- </Badge>
265
- }
266
- />
267
- <AccordionContent>
268
- <div className="p-4">
269
- <p className="text-sm text-neutrals-600">
270
- All address information has been verified.
271
- </p>
272
- </div>
273
- </AccordionContent>
274
- </AccordionItem>
275
-
276
- <AccordionItem value="item-3">
277
- <AccordionTrigger title="Additional Notes" />
278
- <AccordionContent>
279
- <div className="p-4">
280
- <p className="text-sm text-neutrals-600">
281
- Optional section without badge.
282
- </p>
283
- </div>
284
- </AccordionContent>
285
- </AccordionItem>
286
- </Accordion>
287
- ```
288
-
289
- ### Múltiples Items Abiertos (Multiple Type)
290
-
291
- Varios items pueden estar abiertos simultáneamente:
292
-
293
- ```tsx
294
- <Accordion type="multiple">
295
- <AccordionItem value="item-1">
296
- <AccordionTrigger
297
- title="Account Settings"
298
- badge={
299
- <Badge variant="default-medium" size="lg">
300
- <Info />
301
- Updated
302
- </Badge>
303
- }
304
- />
305
- <AccordionContent>
306
- <div className="p-4">
307
- <p className="text-sm text-neutrals-600">
308
- Configure your account preferences. Multiple sections can be open at
309
- once.
310
- </p>
311
- </div>
312
- </AccordionContent>
313
- </AccordionItem>
314
-
315
- <AccordionItem value="item-2">
316
- <AccordionTrigger
317
- title="Notification Preferences"
318
- badge={
319
- <Badge variant="warning-medium" size="lg">
320
- <AlertCircle />
321
- Action required
322
- </Badge>
323
- }
324
- />
325
- <AccordionContent>
326
- <div className="p-4">
327
- <p className="text-sm text-neutrals-600">
328
- Manage notification settings.
329
- </p>
330
- </div>
331
- </AccordionContent>
332
- </AccordionItem>
333
- </Accordion>
334
- ```
335
-
336
- ### Abierto por Defecto
337
-
338
- ```tsx
339
- <Accordion type="single" collapsible defaultValue="item-1">
340
- <AccordionItem value="item-1">
341
- <AccordionTrigger
342
- title="Important Notice"
343
- badge={
344
- <Badge variant="destructive-medium" size="lg">
345
- <AlertCircle />
346
- Attention required
347
- </Badge>
348
- }
349
- />
350
- <AccordionContent>
351
- <div className="p-4">
352
- <p className="text-sm text-neutrals-600">
353
- This accordion is open by default using defaultValue prop.
354
- </p>
355
- </div>
356
- </AccordionContent>
357
- </AccordionItem>
358
- </Accordion>
359
- ```
360
-
361
- ### Contenido Rico (Rich Content)
362
-
363
- ```tsx
364
- <Accordion type="single" collapsible>
365
- <AccordionItem value="item-1">
366
- <AccordionTrigger
367
- title="Payment Methods"
368
- badge={
369
- <Badge variant="success-medium" size="lg">
370
- <CheckCircle />3 active
371
- </Badge>
372
- }
373
- />
374
- <AccordionContent>
375
- <div className="p-4 space-y-4">
376
- <div className="flex items-center justify-between p-3 bg-neutrals-50 rounded-lg">
377
- <div>
378
- <p className="text-sm font-semibold text-neutrals-700">
379
- Credit Card
380
- </p>
381
- <p className="text-xs text-neutrals-500">•••• 4242</p>
382
- </div>
383
- <span className="text-xs text-success-600 font-medium">Active</span>
384
- </div>
385
- <div className="flex items-center justify-between p-3 bg-neutrals-50 rounded-lg">
386
- <div>
387
- <p className="text-sm font-semibold text-neutrals-700">PayPal</p>
388
- <p className="text-xs text-neutrals-500">user@example.com</p>
389
- </div>
390
- <span className="text-xs text-success-600 font-medium">Active</span>
391
- </div>
392
- </div>
393
- </AccordionContent>
394
- </AccordionItem>
395
- </Accordion>
396
- ```
397
-
398
- ### Estados Mixtos (Wizard/Stepper)
399
-
400
- ```tsx
401
- <Accordion type="single" collapsible>
402
- <AccordionItem value="step-1">
403
- <AccordionTrigger
404
- title="Step 1: Documentation"
405
- badge={
406
- <Badge variant="success-medium" size="lg">
407
- <CheckCircle />
408
- Completed
409
- </Badge>
410
- }
411
- />
412
- <AccordionContent>
413
- <div className="p-4">
414
- <p className="text-sm text-neutrals-600">
415
- All required documents submitted and verified.
416
- </p>
417
- </div>
418
- </AccordionContent>
419
- </AccordionItem>
420
-
421
- <AccordionItem value="step-2">
422
- <AccordionTrigger
423
- title="Step 2: Review Process"
424
- badge={
425
- <Badge variant="warning-medium" size="lg">
426
- <AlertCircle />
427
- In progress
428
- </Badge>
429
- }
430
- />
431
- <AccordionContent>
432
- <div className="p-4">
433
- <p className="text-sm text-neutrals-600">
434
- Application under review. Expected completion in 2-3 business days.
435
- </p>
436
- </div>
437
- </AccordionContent>
438
- </AccordionItem>
439
-
440
- <AccordionItem value="step-3">
441
- <AccordionTrigger
442
- title="Step 3: Final Approval"
443
- badge={
444
- <Badge variant="muted" size="lg">
445
- Pending
446
- </Badge>
447
- }
448
- />
449
- <AccordionContent>
450
- <div className="p-4">
451
- <p className="text-sm text-neutrals-600">
452
- Available once review is completed.
453
- </p>
454
- </div>
455
- </AccordionContent>
456
- </AccordionItem>
457
- </Accordion>
458
- ```
459
-
460
- ### Versión Compacta (FAQ)
461
-
462
- Sin badges para diseño minimalista:
463
-
464
- ```tsx
465
- <Accordion type="single" collapsible>
466
- <AccordionItem value="faq-1">
467
- <AccordionTrigger title="FAQ #1" />
468
- <AccordionContent>
469
- <div className="px-4 pb-4">
470
- <p className="text-sm text-neutrals-600">
471
- Simple FAQ layout without badges for cleaner appearance.
472
- </p>
473
- </div>
474
- </AccordionContent>
475
- </AccordionItem>
476
-
477
- <AccordionItem value="faq-2">
478
- <AccordionTrigger title="FAQ #2" />
479
- <AccordionContent>
480
- <div className="px-4 pb-4">
481
- <p className="text-sm text-neutrals-600">
482
- Perfect for documentation or help sections.
483
- </p>
484
- </div>
485
- </AccordionContent>
486
- </AccordionItem>
487
- </Accordion>
488
- ```
489
-
490
- ## Casos de Uso Comunes
491
-
492
- ### Formularios con Validación
493
-
494
- ```tsx
495
- <Accordion type="single" collapsible>
496
- <AccordionItem value="personal">
497
- <AccordionTrigger
498
- title="Personal Information"
499
- badge={
500
- <Badge variant="warning-medium" size="lg">
501
- <AlertCircle />3 required fields
502
- </Badge>
503
- }
504
- />
505
- <AccordionContent>{/* Campos del formulario */}</AccordionContent>
506
- </AccordionItem>
507
- </Accordion>
508
- ```
509
-
510
- ### Proceso por Pasos (Stepper)
511
-
512
- ```tsx
513
- <Accordion type="single" collapsible defaultValue="current-step">
514
- {steps.map((step) => (
515
- <AccordionItem key={step.id} value={step.id}>
516
- <AccordionTrigger
517
- title={step.title}
518
- badge={<Badge variant={step.status}>{step.label}</Badge>}
519
- />
520
- <AccordionContent>{step.content}</AccordionContent>
521
- </AccordionItem>
522
- ))}
523
- </Accordion>
524
- ```
525
-
526
- ### Configuración de Cuenta
527
-
528
- ```tsx
529
- <Accordion type="multiple">
530
- <AccordionItem value="profile">
531
- <AccordionTrigger title="Profile Settings" />
532
- <AccordionContent>{/* Settings */}</AccordionContent>
533
- </AccordionItem>
534
-
535
- <AccordionItem value="security">
536
- <AccordionTrigger
537
- title="Security"
538
- badge={<Badge variant="warning-medium">Update required</Badge>}
539
- />
540
- <AccordionContent>{/* Security settings */}</AccordionContent>
541
- </AccordionItem>
542
- </Accordion>
543
- ```
544
-
545
- ## Diferencias con Accordion Regular
546
-
547
- | Característica | Accordion Regular | Accordion Rounded |
548
- | ------------------ | ----------------------- | --------------------------------- |
549
- | Bordes | Esquinas cuadradas | `rounded-2xl` (muy redondeado) |
550
- | Fondo del Item | Transparente con border | `bg-neutrals-50` (gris claro) |
551
- | Separación | Border entre items | Margen `mb-4` entre items |
552
- | Badge Support | No (solo children) | Sí (prop `badge` dedicada) |
553
- | Estilo del Título | Normal | Mayúsculas, compacto, color gris |
554
- | Iconos | ChevronDown | Plus/Minus |
555
- | Altura del Trigger | Variable | Fija `h-14` (3.5rem) |
556
- | Uso Principal | General, documentación | Formularios, validación, steppers |
557
-
558
- ## Notas de Implementación
559
-
560
- - Usa Radix UI Accordion como base
561
- - Iconos de lucide-react (Plus, Minus)
562
- - El componente usa internamente clases con prefijo `adm:` para evitar conflictos
563
- - Los títulos se truncan automáticamente con `line-clamp-1` si son muy largos
564
- - La prop `title` es preferida sobre `children` para consistencia
565
- - Badge se renderiza antes del icono Plus/Minus
566
- - Altura del trigger es fija para mantener alineación visual
567
- - Animaciones CSS personalizadas (accordion-up, accordion-down)
568
-
569
- ## Accesibilidad
570
-
571
- - ✅ Usa elementos button nativos para triggers
572
- - ✅ Estados expanded/collapsed con `data-state`
573
- - ✅ Navegación por teclado completa (Space, Enter, Arrow keys)
574
- - ✅ Focus visible en triggers
575
- - ✅ ARIA attributes automáticos de Radix UI
576
- - ✅ Disabled state soportado en items individuales
577
- - ✅ Screen reader friendly
578
-
579
- ## Referencias
580
-
581
- - Basado en Radix UI Accordion: https://www.radix-ui.com/primitives/docs/components/accordion
582
- - Patrones de diseño: Material Design Expansion Panels
583
- - Variante visual personalizada de Adamo Suite
1
+ # Accordion Rounded Component
2
+
3
+ ## Descripción
4
+
5
+ Variante especializada del componente Accordion diseñada para mostrar items con **bordes redondeados**, fondo gris claro, y soporte para **badges** en el trigger. Ideal para formularios de validación, procesos por pasos, y listas con estados visuales.
6
+
7
+ ## Características Únicas
8
+
9
+ - ✅ Bordes completamente redondeados (rounded-2xl)
10
+ - ✅ Fondo gris claro en cada item
11
+ - ✅ Soporte nativo para badges en el trigger
12
+ - ✅ Iconos Plus/Minus para indicar estado
13
+ - ✅ Títulos en mayúsculas y estilo compacto
14
+ - ✅ Espaciado automático entre items
15
+ - ✅ Animaciones suaves de apertura/cierre
16
+
17
+ ## Importación
18
+
19
+ ```typescript
20
+ import {
21
+ Accordion,
22
+ AccordionContent,
23
+ AccordionItem,
24
+ AccordionTrigger,
25
+ } from "@adamosuiteservices/ui/accordion-rounded";
26
+ ```
27
+
28
+ **Nota**: Los nombres de exportación son los mismos que el Accordion regular para facilitar el intercambio entre variantes.
29
+
30
+ ## Uso Básico
31
+
32
+ ### Accordion Simple
33
+
34
+ ```tsx
35
+ <Accordion type="single" collapsible>
36
+ <AccordionItem value="item-1">
37
+ <AccordionTrigger title="Basic Accordion Item" />
38
+ <AccordionContent>
39
+ <div className="p-4">
40
+ <p className="text-sm text-neutrals-600">
41
+ This is a simple accordion with just a title and content.
42
+ </p>
43
+ </div>
44
+ </AccordionContent>
45
+ </AccordionItem>
46
+ </Accordion>
47
+ ```
48
+
49
+ ### Con Badge
50
+
51
+ ```tsx
52
+ import { Badge } from "@adamosuiteservices/ui/badge";
53
+ import { AlertCircle } from "lucide-react";
54
+
55
+ <Accordion type="single" collapsible>
56
+ <AccordionItem value="item-1">
57
+ <AccordionTrigger
58
+ title="Name Matches"
59
+ badge={
60
+ <Badge variant="warning-medium" size="lg">
61
+ <AlertCircle />2 matches found
62
+ </Badge>
63
+ }
64
+ />
65
+ <AccordionContent>
66
+ <div className="p-4">
67
+ <p className="text-sm text-neutrals-600">
68
+ Content with warning badge indicator.
69
+ </p>
70
+ </div>
71
+ </AccordionContent>
72
+ </AccordionItem>
73
+ </Accordion>;
74
+ ```
75
+
76
+ ## Props
77
+
78
+ ### Accordion (Root)
79
+
80
+ Basado en Radix UI Accordion Root.
81
+
82
+ | Prop | Tipo | Default | Descripción |
83
+ | ------------- | ------------------------------------- | ------- | ------------------------------------------------------- |
84
+ | type | `"single" \| "multiple"` | - | **Requerido**. Tipo de accordion |
85
+ | collapsible | `boolean` | `false` | Solo para type="single". Permite cerrar el item abierto |
86
+ | defaultValue | `string \| string[]` | - | Valor(es) abierto(s) por defecto |
87
+ | value | `string \| string[]` | - | Valor(es) controlado(s) |
88
+ | onValueChange | `(value: string \| string[]) => void` | - | Callback al cambiar valores |
89
+ | disabled | `boolean` | `false` | Deshabilita todo el accordion |
90
+ | ...props | `HTMLAttributes<HTMLDivElement>` | - | Props nativas de div |
91
+
92
+ **type="single"**: Solo un item puede estar abierto a la vez.
93
+ **type="multiple"**: Múltiples items pueden estar abiertos simultáneamente.
94
+
95
+ ### AccordionItem
96
+
97
+ Contenedor individual de cada item del accordion.
98
+
99
+ | Prop | Tipo | Descripción |
100
+ | --------- | ---------------------------- | ------------------------------------------- |
101
+ | value | `string` | **Requerido**. Identificador único del item |
102
+ | className | `string` | Clases adicionales |
103
+ | disabled | `boolean` | Deshabilita este item específico |
104
+ | ...props | Props de Radix AccordionItem | Props nativas |
105
+
106
+ **Estilos aplicados**:
107
+
108
+ - `rounded-2xl`: Bordes muy redondeados
109
+ - `bg-neutrals-50`: Fondo gris claro
110
+ - `mb-4`: Margen inferior de 1rem
111
+ - `last:mb-0`: Sin margen en el último item
112
+
113
+ ### AccordionTrigger
114
+
115
+ Botón que controla la apertura/cierre del item.
116
+
117
+ | Prop | Tipo | Default | Descripción |
118
+ | --------- | ---------------------- | ------- | ------------------------------------------------- |
119
+ | title | `string` | - | Título del accordion (recomendado sobre children) |
120
+ | badge | `ReactNode` | - | Badge o indicador a mostrar (ej: Badge component) |
121
+ | className | `string` | - | Clases adicionales |
122
+ | children | `ReactNode` | - | Contenido alternativo si no usas title |
123
+ | ...props | `ButtonHTMLAttributes` | - | Props nativas de button |
124
+
125
+ **Características**:
126
+
127
+ - Título en mayúsculas automáticamente (uppercase)
128
+ - Icono Plus cuando está cerrado
129
+ - Icono Minus cuando está abierto
130
+ - Transición suave de iconos
131
+ - Altura fija de 3.5rem (h-14)
132
+ - Text clamp para títulos largos
133
+
134
+ ### AccordionContent
135
+
136
+ Contenedor del contenido que se expande/colapsa.
137
+
138
+ | Prop | Tipo | Descripción |
139
+ | --------- | ------------------------------- | ------------------------------------------------- |
140
+ | className | `string` | Clases adicionales (aplicadas al padding interno) |
141
+ | children | `ReactNode` | Contenido a mostrar |
142
+ | ...props | Props de Radix AccordionContent | Props nativas |
143
+
144
+ **Animaciones**:
145
+
146
+ - `animate-accordion-down`: Al abrir
147
+ - `animate-accordion-up`: Al cerrar
148
+ - Padding bottom de 1rem (pb-4)
149
+
150
+ ## Variantes de Badge
151
+
152
+ ### Success Badge
153
+
154
+ Para estados completados o validados.
155
+
156
+ ```tsx
157
+ <AccordionTrigger
158
+ title="Verification Completed"
159
+ badge={
160
+ <Badge variant="success-medium" size="lg">
161
+ <CheckCircle />
162
+ All fields validated
163
+ </Badge>
164
+ }
165
+ />
166
+ ```
167
+
168
+ ### Warning Badge
169
+
170
+ Para items que requieren atención.
171
+
172
+ ```tsx
173
+ <AccordionTrigger
174
+ title="Name Matches"
175
+ badge={
176
+ <Badge variant="warning-medium" size="lg">
177
+ <AlertCircle />2 matches found
178
+ </Badge>
179
+ }
180
+ />
181
+ ```
182
+
183
+ ### Error/Destructive Badge
184
+
185
+ Para errores o validaciones fallidas.
186
+
187
+ ```tsx
188
+ <AccordionTrigger
189
+ title="Failed Validation"
190
+ badge={
191
+ <Badge variant="destructive-medium" size="lg">
192
+ <XCircle />3 errors detected
193
+ </Badge>
194
+ }
195
+ />
196
+ ```
197
+
198
+ ### Info Badge
199
+
200
+ Para información adicional.
201
+
202
+ ```tsx
203
+ <AccordionTrigger
204
+ title="Additional Information"
205
+ badge={
206
+ <Badge variant="default-medium" size="lg">
207
+ <Info />
208
+ Read more
209
+ </Badge>
210
+ }
211
+ />
212
+ ```
213
+
214
+ ### Text Only Badge
215
+
216
+ Sin icono.
217
+
218
+ ```tsx
219
+ <AccordionTrigger
220
+ title="Custom Badge"
221
+ badge={
222
+ <Badge variant="muted" size="lg">
223
+ NEW
224
+ </Badge>
225
+ }
226
+ />
227
+ ```
228
+
229
+ ## Ejemplos Avanzados
230
+
231
+ ### Múltiples Items (Single Type)
232
+
233
+ Solo un item abierto a la vez:
234
+
235
+ ```tsx
236
+ <Accordion type="single" collapsible>
237
+ <AccordionItem value="item-1">
238
+ <AccordionTrigger
239
+ title="Personal Information"
240
+ badge={
241
+ <Badge variant="warning-medium" size="lg">
242
+ <AlertCircle />3 required fields
243
+ </Badge>
244
+ }
245
+ />
246
+ <AccordionContent>
247
+ <div className="p-4 space-y-3">
248
+ <div className="rounded-lg border border-neutrals-200 p-3">
249
+ <h4 className="text-sm font-semibold text-neutrals-700">Full Name</h4>
250
+ <p className="text-sm text-neutrals-600 mt-1">Required field</p>
251
+ </div>
252
+ {/* Más campos... */}
253
+ </div>
254
+ </AccordionContent>
255
+ </AccordionItem>
256
+
257
+ <AccordionItem value="item-2">
258
+ <AccordionTrigger
259
+ title="Address Details"
260
+ badge={
261
+ <Badge variant="success-medium" size="lg">
262
+ <CheckCircle />
263
+ Complete
264
+ </Badge>
265
+ }
266
+ />
267
+ <AccordionContent>
268
+ <div className="p-4">
269
+ <p className="text-sm text-neutrals-600">
270
+ All address information has been verified.
271
+ </p>
272
+ </div>
273
+ </AccordionContent>
274
+ </AccordionItem>
275
+
276
+ <AccordionItem value="item-3">
277
+ <AccordionTrigger title="Additional Notes" />
278
+ <AccordionContent>
279
+ <div className="p-4">
280
+ <p className="text-sm text-neutrals-600">
281
+ Optional section without badge.
282
+ </p>
283
+ </div>
284
+ </AccordionContent>
285
+ </AccordionItem>
286
+ </Accordion>
287
+ ```
288
+
289
+ ### Múltiples Items Abiertos (Multiple Type)
290
+
291
+ Varios items pueden estar abiertos simultáneamente:
292
+
293
+ ```tsx
294
+ <Accordion type="multiple">
295
+ <AccordionItem value="item-1">
296
+ <AccordionTrigger
297
+ title="Account Settings"
298
+ badge={
299
+ <Badge variant="default-medium" size="lg">
300
+ <Info />
301
+ Updated
302
+ </Badge>
303
+ }
304
+ />
305
+ <AccordionContent>
306
+ <div className="p-4">
307
+ <p className="text-sm text-neutrals-600">
308
+ Configure your account preferences. Multiple sections can be open at
309
+ once.
310
+ </p>
311
+ </div>
312
+ </AccordionContent>
313
+ </AccordionItem>
314
+
315
+ <AccordionItem value="item-2">
316
+ <AccordionTrigger
317
+ title="Notification Preferences"
318
+ badge={
319
+ <Badge variant="warning-medium" size="lg">
320
+ <AlertCircle />
321
+ Action required
322
+ </Badge>
323
+ }
324
+ />
325
+ <AccordionContent>
326
+ <div className="p-4">
327
+ <p className="text-sm text-neutrals-600">
328
+ Manage notification settings.
329
+ </p>
330
+ </div>
331
+ </AccordionContent>
332
+ </AccordionItem>
333
+ </Accordion>
334
+ ```
335
+
336
+ ### Abierto por Defecto
337
+
338
+ ```tsx
339
+ <Accordion type="single" collapsible defaultValue="item-1">
340
+ <AccordionItem value="item-1">
341
+ <AccordionTrigger
342
+ title="Important Notice"
343
+ badge={
344
+ <Badge variant="destructive-medium" size="lg">
345
+ <AlertCircle />
346
+ Attention required
347
+ </Badge>
348
+ }
349
+ />
350
+ <AccordionContent>
351
+ <div className="p-4">
352
+ <p className="text-sm text-neutrals-600">
353
+ This accordion is open by default using defaultValue prop.
354
+ </p>
355
+ </div>
356
+ </AccordionContent>
357
+ </AccordionItem>
358
+ </Accordion>
359
+ ```
360
+
361
+ ### Contenido Rico (Rich Content)
362
+
363
+ ```tsx
364
+ <Accordion type="single" collapsible>
365
+ <AccordionItem value="item-1">
366
+ <AccordionTrigger
367
+ title="Payment Methods"
368
+ badge={
369
+ <Badge variant="success-medium" size="lg">
370
+ <CheckCircle />3 active
371
+ </Badge>
372
+ }
373
+ />
374
+ <AccordionContent>
375
+ <div className="p-4 space-y-4">
376
+ <div className="flex items-center justify-between p-3 bg-neutrals-50 rounded-lg">
377
+ <div>
378
+ <p className="text-sm font-semibold text-neutrals-700">
379
+ Credit Card
380
+ </p>
381
+ <p className="text-xs text-neutrals-500">•••• 4242</p>
382
+ </div>
383
+ <span className="text-xs text-success-600 font-medium">Active</span>
384
+ </div>
385
+ <div className="flex items-center justify-between p-3 bg-neutrals-50 rounded-lg">
386
+ <div>
387
+ <p className="text-sm font-semibold text-neutrals-700">PayPal</p>
388
+ <p className="text-xs text-neutrals-500">user@example.com</p>
389
+ </div>
390
+ <span className="text-xs text-success-600 font-medium">Active</span>
391
+ </div>
392
+ </div>
393
+ </AccordionContent>
394
+ </AccordionItem>
395
+ </Accordion>
396
+ ```
397
+
398
+ ### Estados Mixtos (Wizard/Stepper)
399
+
400
+ ```tsx
401
+ <Accordion type="single" collapsible>
402
+ <AccordionItem value="step-1">
403
+ <AccordionTrigger
404
+ title="Step 1: Documentation"
405
+ badge={
406
+ <Badge variant="success-medium" size="lg">
407
+ <CheckCircle />
408
+ Completed
409
+ </Badge>
410
+ }
411
+ />
412
+ <AccordionContent>
413
+ <div className="p-4">
414
+ <p className="text-sm text-neutrals-600">
415
+ All required documents submitted and verified.
416
+ </p>
417
+ </div>
418
+ </AccordionContent>
419
+ </AccordionItem>
420
+
421
+ <AccordionItem value="step-2">
422
+ <AccordionTrigger
423
+ title="Step 2: Review Process"
424
+ badge={
425
+ <Badge variant="warning-medium" size="lg">
426
+ <AlertCircle />
427
+ In progress
428
+ </Badge>
429
+ }
430
+ />
431
+ <AccordionContent>
432
+ <div className="p-4">
433
+ <p className="text-sm text-neutrals-600">
434
+ Application under review. Expected completion in 2-3 business days.
435
+ </p>
436
+ </div>
437
+ </AccordionContent>
438
+ </AccordionItem>
439
+
440
+ <AccordionItem value="step-3">
441
+ <AccordionTrigger
442
+ title="Step 3: Final Approval"
443
+ badge={
444
+ <Badge variant="muted" size="lg">
445
+ Pending
446
+ </Badge>
447
+ }
448
+ />
449
+ <AccordionContent>
450
+ <div className="p-4">
451
+ <p className="text-sm text-neutrals-600">
452
+ Available once review is completed.
453
+ </p>
454
+ </div>
455
+ </AccordionContent>
456
+ </AccordionItem>
457
+ </Accordion>
458
+ ```
459
+
460
+ ### Versión Compacta (FAQ)
461
+
462
+ Sin badges para diseño minimalista:
463
+
464
+ ```tsx
465
+ <Accordion type="single" collapsible>
466
+ <AccordionItem value="faq-1">
467
+ <AccordionTrigger title="FAQ #1" />
468
+ <AccordionContent>
469
+ <div className="px-4 pb-4">
470
+ <p className="text-sm text-neutrals-600">
471
+ Simple FAQ layout without badges for cleaner appearance.
472
+ </p>
473
+ </div>
474
+ </AccordionContent>
475
+ </AccordionItem>
476
+
477
+ <AccordionItem value="faq-2">
478
+ <AccordionTrigger title="FAQ #2" />
479
+ <AccordionContent>
480
+ <div className="px-4 pb-4">
481
+ <p className="text-sm text-neutrals-600">
482
+ Perfect for documentation or help sections.
483
+ </p>
484
+ </div>
485
+ </AccordionContent>
486
+ </AccordionItem>
487
+ </Accordion>
488
+ ```
489
+
490
+ ## Casos de Uso Comunes
491
+
492
+ ### Formularios con Validación
493
+
494
+ ```tsx
495
+ <Accordion type="single" collapsible>
496
+ <AccordionItem value="personal">
497
+ <AccordionTrigger
498
+ title="Personal Information"
499
+ badge={
500
+ <Badge variant="warning-medium" size="lg">
501
+ <AlertCircle />3 required fields
502
+ </Badge>
503
+ }
504
+ />
505
+ <AccordionContent>{/* Campos del formulario */}</AccordionContent>
506
+ </AccordionItem>
507
+ </Accordion>
508
+ ```
509
+
510
+ ### Proceso por Pasos (Stepper)
511
+
512
+ ```tsx
513
+ <Accordion type="single" collapsible defaultValue="current-step">
514
+ {steps.map((step) => (
515
+ <AccordionItem key={step.id} value={step.id}>
516
+ <AccordionTrigger
517
+ title={step.title}
518
+ badge={<Badge variant={step.status}>{step.label}</Badge>}
519
+ />
520
+ <AccordionContent>{step.content}</AccordionContent>
521
+ </AccordionItem>
522
+ ))}
523
+ </Accordion>
524
+ ```
525
+
526
+ ### Configuración de Cuenta
527
+
528
+ ```tsx
529
+ <Accordion type="multiple">
530
+ <AccordionItem value="profile">
531
+ <AccordionTrigger title="Profile Settings" />
532
+ <AccordionContent>{/* Settings */}</AccordionContent>
533
+ </AccordionItem>
534
+
535
+ <AccordionItem value="security">
536
+ <AccordionTrigger
537
+ title="Security"
538
+ badge={<Badge variant="warning-medium">Update required</Badge>}
539
+ />
540
+ <AccordionContent>{/* Security settings */}</AccordionContent>
541
+ </AccordionItem>
542
+ </Accordion>
543
+ ```
544
+
545
+ ## Diferencias con Accordion Regular
546
+
547
+ | Característica | Accordion Regular | Accordion Rounded |
548
+ | ------------------ | ----------------------- | --------------------------------- |
549
+ | Bordes | Esquinas cuadradas | `rounded-2xl` (muy redondeado) |
550
+ | Fondo del Item | Transparente con border | `bg-neutrals-50` (gris claro) |
551
+ | Separación | Border entre items | Margen `mb-4` entre items |
552
+ | Badge Support | No (solo children) | Sí (prop `badge` dedicada) |
553
+ | Estilo del Título | Normal | Mayúsculas, compacto, color gris |
554
+ | Iconos | ChevronDown | Plus/Minus |
555
+ | Altura del Trigger | Variable | Fija `h-14` (3.5rem) |
556
+ | Uso Principal | General, documentación | Formularios, validación, steppers |
557
+
558
+ ## Notas de Implementación
559
+
560
+ - Usa Radix UI Accordion como base
561
+ - Iconos de lucide-react (Plus, Minus)
562
+ - El componente usa internamente clases con prefijo `adm:` para evitar conflictos
563
+ - Los títulos se truncan automáticamente con `line-clamp-1` si son muy largos
564
+ - La prop `title` es preferida sobre `children` para consistencia
565
+ - Badge se renderiza antes del icono Plus/Minus
566
+ - Altura del trigger es fija para mantener alineación visual
567
+ - Animaciones CSS personalizadas (accordion-up, accordion-down)
568
+
569
+ ## Accesibilidad
570
+
571
+ - ✅ Usa elementos button nativos para triggers
572
+ - ✅ Estados expanded/collapsed con `data-state`
573
+ - ✅ Navegación por teclado completa (Space, Enter, Arrow keys)
574
+ - ✅ Focus visible en triggers
575
+ - ✅ ARIA attributes automáticos de Radix UI
576
+ - ✅ Disabled state soportado en items individuales
577
+ - ✅ Screen reader friendly
578
+
579
+ ## Referencias
580
+
581
+ - Basado en Radix UI Accordion: https://www.radix-ui.com/primitives/docs/components/accordion
582
+ - Patrones de diseño: Material Design Expansion Panels
583
+ - Variante visual personalizada de Adamo Suite