siesa-ui-kit 1.0.0 → 1.0.2

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 (420) hide show
  1. package/README.md +54 -28
  2. package/claude/settings.local.json +7 -61
  3. package/dist/ButtonTest.d.ts +6 -0
  4. package/dist/ButtonTest.d.ts.map +1 -0
  5. package/dist/components/Alert/Alert.d.ts +23 -0
  6. package/dist/components/Alert/Alert.d.ts.map +1 -0
  7. package/dist/components/Alert/Alert.types.d.ts +46 -0
  8. package/dist/components/Alert/Alert.types.d.ts.map +1 -0
  9. package/dist/components/Avatar/Avatar.d.ts +41 -0
  10. package/dist/components/Avatar/Avatar.d.ts.map +1 -0
  11. package/dist/components/Avatar/Avatar.types.d.ts +46 -0
  12. package/dist/components/Avatar/Avatar.types.d.ts.map +1 -0
  13. package/dist/components/Badge/Badge.d.ts +42 -0
  14. package/dist/components/Badge/Badge.d.ts.map +1 -0
  15. package/dist/components/Badge/Badge.types.d.ts +32 -0
  16. package/dist/components/Badge/Badge.types.d.ts.map +1 -0
  17. package/dist/components/Button/Button.d.ts +84 -0
  18. package/dist/components/Button/Button.d.ts.map +1 -0
  19. package/dist/components/Button/Button.types.d.ts +162 -0
  20. package/dist/components/Button/Button.types.d.ts.map +1 -0
  21. package/dist/components/Button/icons.d.ts +26 -0
  22. package/dist/components/Button/icons.d.ts.map +1 -0
  23. package/dist/components/Button/index.d.ts +4 -0
  24. package/dist/components/Button/index.d.ts.map +1 -0
  25. package/dist/components/Checkbox/Checkbox.d.ts +31 -0
  26. package/dist/components/Checkbox/Checkbox.d.ts.map +1 -0
  27. package/dist/components/Checkbox/Checkbox.types.d.ts +53 -0
  28. package/dist/components/Checkbox/Checkbox.types.d.ts.map +1 -0
  29. package/dist/components/DescriptionList/DescriptionList.d.ts +38 -0
  30. package/dist/components/DescriptionList/DescriptionList.d.ts.map +1 -0
  31. package/dist/components/DescriptionList/DescriptionList.types.d.ts +27 -0
  32. package/dist/components/DescriptionList/DescriptionList.types.d.ts.map +1 -0
  33. package/dist/components/Divider/Divider.d.ts +33 -0
  34. package/dist/components/Divider/Divider.d.ts.map +1 -0
  35. package/dist/components/Divider/Divider.types.d.ts +22 -0
  36. package/dist/components/Divider/Divider.types.d.ts.map +1 -0
  37. package/dist/components/Dropdown/Dropdown.d.ts +66 -0
  38. package/dist/components/Dropdown/Dropdown.d.ts.map +1 -0
  39. package/dist/components/Dropdown/Dropdown.types.d.ts +124 -0
  40. package/dist/components/Dropdown/Dropdown.types.d.ts.map +1 -0
  41. package/dist/components/Dropdown/icons.d.ts +10 -0
  42. package/dist/components/Dropdown/icons.d.ts.map +1 -0
  43. package/dist/components/Dropdown/index.d.ts +4 -0
  44. package/dist/components/Dropdown/index.d.ts.map +1 -0
  45. package/dist/components/DropdownItemCollapsible/DropdownItemCollapsible.d.ts +101 -0
  46. package/dist/components/DropdownItemCollapsible/DropdownItemCollapsible.d.ts.map +1 -0
  47. package/dist/components/DropdownItemCollapsible/DropdownItemCollapsible.types.d.ts +95 -0
  48. package/dist/components/DropdownItemCollapsible/DropdownItemCollapsible.types.d.ts.map +1 -0
  49. package/dist/components/DropdownItemCollapsible/icons.d.ts +19 -0
  50. package/dist/components/DropdownItemCollapsible/icons.d.ts.map +1 -0
  51. package/dist/components/DropdownItemCollapsible/index.d.ts +9 -0
  52. package/dist/components/DropdownItemCollapsible/index.d.ts.map +1 -0
  53. package/dist/components/DropdownItemHeading/DropdownItemHeading.d.ts +75 -0
  54. package/dist/components/DropdownItemHeading/DropdownItemHeading.d.ts.map +1 -0
  55. package/dist/components/DropdownItemHeading/DropdownItemHeading.types.d.ts +85 -0
  56. package/dist/components/DropdownItemHeading/DropdownItemHeading.types.d.ts.map +1 -0
  57. package/dist/components/DropdownItemHeading/icons.d.ts +48 -0
  58. package/dist/components/DropdownItemHeading/icons.d.ts.map +1 -0
  59. package/dist/components/DropdownItemHeading/index.d.ts +4 -0
  60. package/dist/components/DropdownItemHeading/index.d.ts.map +1 -0
  61. package/dist/components/Input/Input.d.ts +40 -0
  62. package/dist/components/Input/Input.d.ts.map +1 -0
  63. package/dist/components/Input/Input.types.d.ts +71 -0
  64. package/dist/components/Input/Input.types.d.ts.map +1 -0
  65. package/dist/components/Input/icons.d.ts +15 -0
  66. package/dist/components/Input/icons.d.ts.map +1 -0
  67. package/dist/components/Input/index.d.ts +3 -0
  68. package/dist/components/Input/index.d.ts.map +1 -0
  69. package/dist/components/LoginView/LoginView.d.ts +36 -0
  70. package/dist/components/LoginView/LoginView.d.ts.map +1 -0
  71. package/dist/components/LoginView/LoginView.types.d.ts +46 -0
  72. package/dist/components/LoginView/LoginView.types.d.ts.map +1 -0
  73. package/dist/components/LoginView/icons.d.ts +18 -0
  74. package/dist/components/LoginView/icons.d.ts.map +1 -0
  75. package/dist/components/LoginView/index.d.ts +4 -0
  76. package/dist/components/LoginView/index.d.ts.map +1 -0
  77. package/dist/components/Navbar/Navbar.d.ts +63 -0
  78. package/dist/components/Navbar/Navbar.d.ts.map +1 -0
  79. package/dist/components/Navbar/Navbar.types.d.ts +194 -0
  80. package/dist/components/Navbar/Navbar.types.d.ts.map +1 -0
  81. package/dist/components/Navbar/icons.d.ts +12 -0
  82. package/dist/components/Navbar/icons.d.ts.map +1 -0
  83. package/dist/components/Navbar/index.d.ts +4 -0
  84. package/dist/components/Navbar/index.d.ts.map +1 -0
  85. package/dist/components/NavigationBar/NavigationBar.d.ts +75 -0
  86. package/dist/components/NavigationBar/NavigationBar.d.ts.map +1 -0
  87. package/dist/components/NavigationBar/NavigationBar.types.d.ts +63 -0
  88. package/dist/components/NavigationBar/NavigationBar.types.d.ts.map +1 -0
  89. package/dist/components/NavigationBar/index.d.ts +3 -0
  90. package/dist/components/NavigationBar/index.d.ts.map +1 -0
  91. package/dist/components/NavigationRail/NavigationRail.d.ts +7 -0
  92. package/dist/components/NavigationRail/NavigationRail.d.ts.map +1 -0
  93. package/dist/components/NavigationRail/NavigationRail.types.d.ts +92 -0
  94. package/dist/components/NavigationRail/NavigationRail.types.d.ts.map +1 -0
  95. package/dist/components/NavigationRail/index.d.ts +3 -0
  96. package/dist/components/NavigationRail/index.d.ts.map +1 -0
  97. package/dist/components/NavigationRailItem/NavigationRailItem.d.ts +90 -0
  98. package/dist/components/NavigationRailItem/NavigationRailItem.d.ts.map +1 -0
  99. package/dist/components/NavigationRailItem/NavigationRailItem.types.d.ts +155 -0
  100. package/dist/components/NavigationRailItem/NavigationRailItem.types.d.ts.map +1 -0
  101. package/dist/components/NavigationRailItem/index.d.ts +3 -0
  102. package/dist/components/NavigationRailItem/index.d.ts.map +1 -0
  103. package/dist/components/NavigationRailPanel/NavigationRailPanel.d.ts +124 -0
  104. package/dist/components/NavigationRailPanel/NavigationRailPanel.d.ts.map +1 -0
  105. package/dist/components/NavigationRailPanel/NavigationRailPanel.types.d.ts +154 -0
  106. package/dist/components/NavigationRailPanel/NavigationRailPanel.types.d.ts.map +1 -0
  107. package/dist/components/NavigationRailPanel/index.d.ts +3 -0
  108. package/dist/components/NavigationRailPanel/index.d.ts.map +1 -0
  109. package/dist/components/NavigationRailTypes/NavigationRailTypes.d.ts +99 -0
  110. package/dist/components/NavigationRailTypes/NavigationRailTypes.d.ts.map +1 -0
  111. package/dist/components/NavigationRailTypes/NavigationRailTypes.types.d.ts +111 -0
  112. package/dist/components/NavigationRailTypes/NavigationRailTypes.types.d.ts.map +1 -0
  113. package/dist/components/NavigationRailTypes/icons.d.ts +58 -0
  114. package/dist/components/NavigationRailTypes/icons.d.ts.map +1 -0
  115. package/dist/components/NavigationRailTypes/index.d.ts +4 -0
  116. package/dist/components/NavigationRailTypes/index.d.ts.map +1 -0
  117. package/dist/components/Notification/Notification.d.ts +52 -0
  118. package/dist/components/Notification/Notification.d.ts.map +1 -0
  119. package/dist/components/Notification/Notification.types.d.ts +138 -0
  120. package/dist/components/Notification/Notification.types.d.ts.map +1 -0
  121. package/dist/components/Notification/index.d.ts +3 -0
  122. package/dist/components/Notification/index.d.ts.map +1 -0
  123. package/dist/components/POSConvention/POSConvention.d.ts +55 -0
  124. package/dist/components/POSConvention/POSConvention.d.ts.map +1 -0
  125. package/dist/components/POSConvention/POSConvention.types.d.ts +37 -0
  126. package/dist/components/POSConvention/POSConvention.types.d.ts.map +1 -0
  127. package/dist/components/POSConvention/icons.d.ts +21 -0
  128. package/dist/components/POSConvention/icons.d.ts.map +1 -0
  129. package/dist/components/POSConvention/index.d.ts +4 -0
  130. package/dist/components/POSConvention/index.d.ts.map +1 -0
  131. package/dist/components/POSLocationButton/POSLocationButton.d.ts +73 -0
  132. package/dist/components/POSLocationButton/POSLocationButton.d.ts.map +1 -0
  133. package/dist/components/POSLocationButton/POSLocationButton.types.d.ts +75 -0
  134. package/dist/components/POSLocationButton/POSLocationButton.types.d.ts.map +1 -0
  135. package/dist/components/POSLocationButton/icons.d.ts +37 -0
  136. package/dist/components/POSLocationButton/icons.d.ts.map +1 -0
  137. package/dist/components/POSLocationButton/index.d.ts +4 -0
  138. package/dist/components/POSLocationButton/index.d.ts.map +1 -0
  139. package/dist/components/POSNumberButton/POSNumberButton.d.ts +61 -0
  140. package/dist/components/POSNumberButton/POSNumberButton.d.ts.map +1 -0
  141. package/dist/components/POSNumberButton/POSNumberButton.types.d.ts +43 -0
  142. package/dist/components/POSNumberButton/POSNumberButton.types.d.ts.map +1 -0
  143. package/dist/components/POSNumberButton/index.d.ts +3 -0
  144. package/dist/components/POSNumberButton/index.d.ts.map +1 -0
  145. package/dist/components/POSProductButton/POSProductButton.d.ts +59 -0
  146. package/dist/components/POSProductButton/POSProductButton.d.ts.map +1 -0
  147. package/dist/components/POSProductButton/POSProductButton.types.d.ts +40 -0
  148. package/dist/components/POSProductButton/POSProductButton.types.d.ts.map +1 -0
  149. package/dist/components/POSProductButton/index.d.ts +3 -0
  150. package/dist/components/POSProductButton/index.d.ts.map +1 -0
  151. package/dist/components/POSProductCard/POSProductCard.d.ts +68 -0
  152. package/dist/components/POSProductCard/POSProductCard.d.ts.map +1 -0
  153. package/dist/components/POSProductCard/POSProductCard.types.d.ts +67 -0
  154. package/dist/components/POSProductCard/POSProductCard.types.d.ts.map +1 -0
  155. package/dist/components/POSProductCard/icons.d.ts +10 -0
  156. package/dist/components/POSProductCard/icons.d.ts.map +1 -0
  157. package/dist/components/POSProductCard/index.d.ts +3 -0
  158. package/dist/components/POSProductCard/index.d.ts.map +1 -0
  159. package/dist/components/POSProductSidebarItems/POSProductSidebarItems.d.ts +57 -0
  160. package/dist/components/POSProductSidebarItems/POSProductSidebarItems.d.ts.map +1 -0
  161. package/dist/components/POSProductSidebarItems/POSProductSidebarItems.types.d.ts +85 -0
  162. package/dist/components/POSProductSidebarItems/POSProductSidebarItems.types.d.ts.map +1 -0
  163. package/dist/components/POSProductSidebarItems/icons.d.ts +9 -0
  164. package/dist/components/POSProductSidebarItems/icons.d.ts.map +1 -0
  165. package/dist/components/POSProductSidebarItems/index.d.ts +4 -0
  166. package/dist/components/POSProductSidebarItems/index.d.ts.map +1 -0
  167. package/dist/components/POSTable/POSTable.d.ts +75 -0
  168. package/dist/components/POSTable/POSTable.d.ts.map +1 -0
  169. package/dist/components/POSTable/POSTable.types.d.ts +71 -0
  170. package/dist/components/POSTable/POSTable.types.d.ts.map +1 -0
  171. package/dist/components/POSTable/index.d.ts +3 -0
  172. package/dist/components/POSTable/index.d.ts.map +1 -0
  173. package/dist/components/Pagination/Pagination.d.ts +29 -0
  174. package/dist/components/Pagination/Pagination.d.ts.map +1 -0
  175. package/dist/components/Pagination/Pagination.types.d.ts +79 -0
  176. package/dist/components/Pagination/Pagination.types.d.ts.map +1 -0
  177. package/dist/components/Pagination/icons.d.ts +18 -0
  178. package/dist/components/Pagination/icons.d.ts.map +1 -0
  179. package/dist/components/Pagination/index.d.ts +4 -0
  180. package/dist/components/Pagination/index.d.ts.map +1 -0
  181. package/dist/components/Quantity/Quantity.d.ts +38 -0
  182. package/dist/components/Quantity/Quantity.d.ts.map +1 -0
  183. package/dist/components/Quantity/Quantity.types.d.ts +59 -0
  184. package/dist/components/Quantity/Quantity.types.d.ts.map +1 -0
  185. package/dist/components/Radio/Radio.d.ts +45 -0
  186. package/dist/components/Radio/Radio.d.ts.map +1 -0
  187. package/dist/components/Radio/Radio.types.d.ts +115 -0
  188. package/dist/components/Radio/Radio.types.d.ts.map +1 -0
  189. package/dist/components/Select/Select.d.ts +37 -0
  190. package/dist/components/Select/Select.d.ts.map +1 -0
  191. package/dist/components/Select/Select.types.d.ts +124 -0
  192. package/dist/components/Select/Select.types.d.ts.map +1 -0
  193. package/dist/components/Select/icons.d.ts +16 -0
  194. package/dist/components/Select/icons.d.ts.map +1 -0
  195. package/dist/components/Select/index.d.ts +4 -0
  196. package/dist/components/Select/index.d.ts.map +1 -0
  197. package/dist/components/SignUpView/SignUpView.d.ts +38 -0
  198. package/dist/components/SignUpView/SignUpView.d.ts.map +1 -0
  199. package/dist/components/SignUpView/SignUpView.types.d.ts +51 -0
  200. package/dist/components/SignUpView/SignUpView.types.d.ts.map +1 -0
  201. package/dist/components/SignUpView/icons.d.ts +18 -0
  202. package/dist/components/SignUpView/icons.d.ts.map +1 -0
  203. package/dist/components/SignUpView/index.d.ts +4 -0
  204. package/dist/components/SignUpView/index.d.ts.map +1 -0
  205. package/dist/components/Switch/Switch.d.ts +46 -0
  206. package/dist/components/Switch/Switch.d.ts.map +1 -0
  207. package/dist/components/Switch/Switch.types.d.ts +58 -0
  208. package/dist/components/Switch/Switch.types.d.ts.map +1 -0
  209. package/dist/components/Table/Table.d.ts +64 -0
  210. package/dist/components/Table/Table.d.ts.map +1 -0
  211. package/dist/components/Table/Table.types.d.ts +173 -0
  212. package/dist/components/Table/Table.types.d.ts.map +1 -0
  213. package/dist/components/Table/index.d.ts +3 -0
  214. package/dist/components/Table/index.d.ts.map +1 -0
  215. package/dist/components/Tabs/Tabs.d.ts +76 -0
  216. package/dist/components/Tabs/Tabs.d.ts.map +1 -0
  217. package/dist/components/Tabs/Tabs.types.d.ts +107 -0
  218. package/dist/components/Tabs/Tabs.types.d.ts.map +1 -0
  219. package/dist/components/Tabs/icons.d.ts +45 -0
  220. package/dist/components/Tabs/icons.d.ts.map +1 -0
  221. package/dist/components/Tabs/index.d.ts +4 -0
  222. package/dist/components/Tabs/index.d.ts.map +1 -0
  223. package/dist/components/Textarea/Textarea.d.ts +38 -0
  224. package/dist/components/Textarea/Textarea.d.ts.map +1 -0
  225. package/dist/components/Textarea/Textarea.types.d.ts +46 -0
  226. package/dist/components/Textarea/Textarea.types.d.ts.map +1 -0
  227. package/dist/context/ThemeContext.d.ts +46 -0
  228. package/dist/context/ThemeContext.d.ts.map +1 -0
  229. package/dist/context/index.d.ts +2 -0
  230. package/dist/context/index.d.ts.map +1 -0
  231. package/dist/index.d.ts +56 -0
  232. package/dist/index.d.ts.map +1 -0
  233. package/dist/siesa-ui-kit.cjs +1260 -0
  234. package/dist/siesa-ui-kit.cjs.map +1 -0
  235. package/dist/siesa-ui-kit.mjs +4496 -0
  236. package/dist/siesa-ui-kit.mjs.map +1 -0
  237. package/dist/views/ListView/ListView.d.ts +47 -0
  238. package/dist/views/ListView/ListView.d.ts.map +1 -0
  239. package/dist/views/ListView/ListView.types.d.ts +177 -0
  240. package/dist/views/ListView/ListView.types.d.ts.map +1 -0
  241. package/dist/views/ListView/icons.d.ts +60 -0
  242. package/dist/views/ListView/icons.d.ts.map +1 -0
  243. package/dist/views/ListView/index.d.ts +3 -0
  244. package/dist/views/ListView/index.d.ts.map +1 -0
  245. package/dist/views/LoginView/LoginView.d.ts +36 -0
  246. package/dist/views/LoginView/LoginView.d.ts.map +1 -0
  247. package/dist/views/LoginView/LoginView.types.d.ts +46 -0
  248. package/dist/views/LoginView/LoginView.types.d.ts.map +1 -0
  249. package/dist/views/LoginView/icons.d.ts +18 -0
  250. package/dist/views/LoginView/icons.d.ts.map +1 -0
  251. package/dist/views/LoginView/index.d.ts +4 -0
  252. package/dist/views/LoginView/index.d.ts.map +1 -0
  253. package/dist/views/ProductsView/ProductsView.d.ts +56 -0
  254. package/dist/views/ProductsView/ProductsView.d.ts.map +1 -0
  255. package/dist/views/ProductsView/ProductsView.types.d.ts +184 -0
  256. package/dist/views/ProductsView/ProductsView.types.d.ts.map +1 -0
  257. package/dist/views/ProductsView/icons.d.ts +12 -0
  258. package/dist/views/ProductsView/icons.d.ts.map +1 -0
  259. package/dist/views/ProductsView/index.d.ts +3 -0
  260. package/dist/views/ProductsView/index.d.ts.map +1 -0
  261. package/dist/views/RecoverPasswordView/RecoverPasswordView.d.ts +34 -0
  262. package/dist/views/RecoverPasswordView/RecoverPasswordView.d.ts.map +1 -0
  263. package/dist/views/RecoverPasswordView/RecoverPasswordView.types.d.ts +50 -0
  264. package/dist/views/RecoverPasswordView/RecoverPasswordView.types.d.ts.map +1 -0
  265. package/dist/views/RecoverPasswordView/icons.d.ts +9 -0
  266. package/dist/views/RecoverPasswordView/icons.d.ts.map +1 -0
  267. package/dist/views/RecoverPasswordView/index.d.ts +3 -0
  268. package/dist/views/RecoverPasswordView/index.d.ts.map +1 -0
  269. package/dist/views/SignUpView/SignUpView.d.ts +38 -0
  270. package/dist/views/SignUpView/SignUpView.d.ts.map +1 -0
  271. package/dist/views/SignUpView/SignUpView.types.d.ts +51 -0
  272. package/dist/views/SignUpView/SignUpView.types.d.ts.map +1 -0
  273. package/dist/views/SignUpView/icons.d.ts +18 -0
  274. package/dist/views/SignUpView/icons.d.ts.map +1 -0
  275. package/dist/views/SignUpView/index.d.ts +4 -0
  276. package/dist/views/SignUpView/index.d.ts.map +1 -0
  277. package/dist/views/TableLayoutView/TableLayoutView.d.ts +46 -0
  278. package/dist/views/TableLayoutView/TableLayoutView.d.ts.map +1 -0
  279. package/dist/views/TableLayoutView/TableLayoutView.types.d.ts +170 -0
  280. package/dist/views/TableLayoutView/TableLayoutView.types.d.ts.map +1 -0
  281. package/dist/views/TableLayoutView/icons.d.ts +27 -0
  282. package/dist/views/TableLayoutView/icons.d.ts.map +1 -0
  283. package/dist/views/TableLayoutView/index.d.ts +3 -0
  284. package/dist/views/TableLayoutView/index.d.ts.map +1 -0
  285. package/docs/border-radius.md +1261 -1261
  286. package/docs/colors.md +832 -832
  287. package/docs/dark-mode-guide.md +1426 -1426
  288. package/docs/filters.md +1243 -1243
  289. package/docs/icons.md +1283 -1283
  290. package/docs/shadows.md +1377 -1377
  291. package/docs/spacing.md +1684 -1684
  292. package/docs/typography.md +1268 -1268
  293. package/package.json +33 -6
  294. package/postcss.config.cjs +6 -6
  295. package/src/App.css +42 -42
  296. package/src/App.tsx +8 -8
  297. package/src/ButtonTest.tsx +147 -147
  298. package/src/assets/fonts/README.md +261 -261
  299. package/src/components/Alert/Alert.stories.tsx +332 -332
  300. package/src/components/Alert/Alert.tsx +106 -106
  301. package/src/components/Alert/Alert.types.ts +54 -54
  302. package/src/components/Avatar/Avatar.tsx +143 -143
  303. package/src/components/Avatar/Avatar.types.ts +53 -53
  304. package/src/components/Badge/Badge.stories.tsx +339 -339
  305. package/src/components/Badge/Badge.tsx +278 -278
  306. package/src/components/Badge/Badge.types.ts +58 -58
  307. package/src/components/Button/icons.tsx +87 -87
  308. package/src/components/Button/index.ts +3 -3
  309. package/src/components/Checkbox/Checkbox.stories.tsx +453 -453
  310. package/src/components/Checkbox/Checkbox.tsx +208 -208
  311. package/src/components/Checkbox/Checkbox.types.ts +61 -61
  312. package/src/components/DescriptionList/DescriptionList.tsx +96 -96
  313. package/src/components/DescriptionList/DescriptionList.types.ts +29 -29
  314. package/src/components/Divider/Divider.tsx +80 -80
  315. package/src/components/Divider/Divider.types.ts +24 -24
  316. package/src/components/Dropdown/Dropdown.stories.tsx +552 -552
  317. package/src/components/Dropdown/Dropdown.tsx +422 -422
  318. package/src/components/Dropdown/Dropdown.types.ts +146 -146
  319. package/src/components/Dropdown/README.md +266 -266
  320. package/src/components/Dropdown/icons.tsx +72 -72
  321. package/src/components/Dropdown/index.ts +8 -8
  322. package/src/components/DropdownItemCollapsible/DropdownItemCollapsible.stories.tsx +317 -0
  323. package/src/components/DropdownItemCollapsible/DropdownItemCollapsible.tsx +287 -0
  324. package/src/components/DropdownItemCollapsible/DropdownItemCollapsible.types.ts +111 -0
  325. package/src/components/DropdownItemCollapsible/README.md +264 -0
  326. package/src/components/DropdownItemCollapsible/icons.tsx +57 -0
  327. package/src/components/DropdownItemCollapsible/index.ts +12 -0
  328. package/src/components/DropdownItemHeading/DropdownItemHeading.stories.tsx +386 -0
  329. package/src/components/DropdownItemHeading/DropdownItemHeading.tsx +216 -0
  330. package/src/components/DropdownItemHeading/DropdownItemHeading.types.ts +93 -0
  331. package/src/components/DropdownItemHeading/README.md +573 -0
  332. package/src/components/DropdownItemHeading/icons.tsx +125 -0
  333. package/src/components/DropdownItemHeading/index.ts +3 -0
  334. package/src/components/Input/Input.tsx +204 -204
  335. package/src/components/Input/Input.types.ts +80 -80
  336. package/src/components/Input/icons.tsx +145 -145
  337. package/src/components/Input/index.ts +2 -2
  338. package/src/components/Navbar/icons.tsx +102 -102
  339. package/src/components/NavigationBar/NavigationBar.stories.tsx +406 -406
  340. package/src/components/NavigationBar/NavigationBar.tsx +246 -246
  341. package/src/components/NavigationBar/NavigationBar.types.ts +74 -74
  342. package/src/components/NavigationBar/README.md +469 -469
  343. package/src/components/NavigationBar/index.ts +2 -2
  344. package/src/components/NavigationRail/NavigationRail.stories.tsx +417 -417
  345. package/src/components/NavigationRail/NavigationRail.tsx +418 -418
  346. package/src/components/NavigationRail/NavigationRail.types.ts +109 -109
  347. package/src/components/NavigationRail/README.md +224 -224
  348. package/src/components/NavigationRail/index.ts +2 -2
  349. package/src/components/NavigationRailItem/NavigationRailItem.stories.tsx +667 -0
  350. package/src/components/NavigationRailItem/NavigationRailItem.tsx +313 -0
  351. package/src/components/NavigationRailItem/NavigationRailItem.types.ts +167 -0
  352. package/src/components/NavigationRailItem/README.md +476 -0
  353. package/src/components/NavigationRailItem/index.ts +2 -0
  354. package/src/components/NavigationRailPanel/NavigationRailPanel.stories.tsx +462 -0
  355. package/src/components/NavigationRailPanel/NavigationRailPanel.tsx +332 -0
  356. package/src/components/NavigationRailPanel/NavigationRailPanel.types.ts +178 -0
  357. package/src/components/NavigationRailPanel/README.md +461 -0
  358. package/src/components/NavigationRailPanel/index.ts +6 -0
  359. package/src/components/NavigationRailTypes/NavigationRailTypes.stories.tsx +528 -0
  360. package/src/components/NavigationRailTypes/NavigationRailTypes.tsx +378 -0
  361. package/src/components/NavigationRailTypes/NavigationRailTypes.types.ts +130 -0
  362. package/src/components/NavigationRailTypes/README.md +573 -0
  363. package/src/components/NavigationRailTypes/icons.tsx +141 -0
  364. package/src/components/NavigationRailTypes/index.ts +7 -0
  365. package/src/components/Notification/index.ts +3 -3
  366. package/src/components/POSProductButton/POSProductButton.tsx +152 -152
  367. package/src/components/POSProductButton/POSProductButton.types.ts +46 -46
  368. package/src/components/POSProductButton/README.md +269 -269
  369. package/src/components/POSProductButton/index.ts +2 -2
  370. package/src/components/POSTable/POSTable.types.ts +83 -83
  371. package/src/components/POSTable/index.ts +7 -7
  372. package/src/components/Pagination/Pagination.stories.tsx +555 -555
  373. package/src/components/Pagination/Pagination.tsx +286 -286
  374. package/src/components/Pagination/Pagination.types.ts +93 -93
  375. package/src/components/Pagination/README.md +298 -298
  376. package/src/components/Pagination/icons.tsx +47 -47
  377. package/src/components/Pagination/index.ts +3 -3
  378. package/src/components/Quantity/Quantity.tsx +289 -289
  379. package/src/components/Quantity/Quantity.types.ts +70 -70
  380. package/src/components/Radio/Radio.tsx +170 -170
  381. package/src/components/Radio/Radio.types.ts +122 -122
  382. package/src/components/Select/README.md +299 -299
  383. package/src/components/Select/Select.stories.tsx +673 -673
  384. package/src/components/Select/Select.types.ts +148 -148
  385. package/src/components/Select/icons.tsx +50 -50
  386. package/src/components/Select/index.ts +3 -3
  387. package/src/components/Table/README.md +369 -369
  388. package/src/components/Table/Table.tsx +688 -688
  389. package/src/components/Table/Table.types.ts +204 -204
  390. package/src/components/Table/index.ts +9 -9
  391. package/src/components/Textarea/Textarea.tsx +188 -188
  392. package/src/components/Textarea/Textarea.types.ts +54 -54
  393. package/src/context/ThemeContext.tsx +99 -99
  394. package/src/context/index.ts +1 -1
  395. package/src/index.css +29 -29
  396. package/src/index.ts +63 -0
  397. package/src/main.tsx +10 -10
  398. package/src/views/ListView/ListView.stories.tsx +329 -0
  399. package/src/views/ListView/ListView.tsx +570 -0
  400. package/src/views/ListView/ListView.types.ts +211 -0
  401. package/src/views/ListView/icons.tsx +282 -0
  402. package/src/views/ListView/index.ts +11 -0
  403. package/src/views/LoginView/LoginView.stories.tsx +148 -0
  404. package/src/views/LoginView/LoginView.tsx +426 -0
  405. package/src/views/LoginView/LoginView.types.ts +52 -0
  406. package/src/views/LoginView/README.md +396 -0
  407. package/src/views/LoginView/icons.tsx +85 -0
  408. package/src/views/LoginView/index.ts +3 -0
  409. package/src/views/RecoverPasswordView/README.md +269 -269
  410. package/src/views/RecoverPasswordView/RecoverPasswordView.stories.tsx +131 -131
  411. package/src/views/RecoverPasswordView/RecoverPasswordView.types.ts +56 -56
  412. package/src/views/RecoverPasswordView/icons.tsx +17 -17
  413. package/src/views/RecoverPasswordView/index.ts +2 -2
  414. package/src/views/SignUpView/SignUpView.stories.tsx +129 -0
  415. package/src/views/SignUpView/SignUpView.tsx +503 -0
  416. package/src/views/SignUpView/SignUpView.types.ts +58 -0
  417. package/src/views/SignUpView/icons.tsx +71 -0
  418. package/src/views/SignUpView/index.ts +3 -0
  419. package/claude/agents/siesa-ui-kit-specialist.md +0 -2401
  420. package/claude/prompts/component-template.md +0 -121
@@ -1,8 +1,8 @@
1
- export { Dropdown, DropdownItem, DropdownHeading, DropdownDivider } from './Dropdown';
2
- export type {
3
- DropdownProps,
4
- DropdownItemProps,
5
- DropdownHeadingProps,
6
- DropdownDividerProps,
7
- } from './Dropdown.types';
8
- export { ChevronDownIcon, CogIcon, UserIcon, BellIcon, CreditCardIcon } from './icons';
1
+ export { Dropdown, DropdownItem, DropdownHeading, DropdownDivider } from './Dropdown';
2
+ export type {
3
+ DropdownProps,
4
+ DropdownItemProps,
5
+ DropdownHeadingProps,
6
+ DropdownDividerProps,
7
+ } from './Dropdown.types';
8
+ export { ChevronDownIcon, CogIcon, UserIcon, BellIcon, CreditCardIcon } from './icons';
@@ -0,0 +1,317 @@
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
+ import { DropdownItemCollapsible } from './DropdownItemCollapsible';
3
+ import { UserIcon } from './icons';
4
+
5
+ const meta = {
6
+ title: 'Components/DropdownItemCollapsible',
7
+ component: DropdownItemCollapsible,
8
+ parameters: {
9
+ layout: 'padded',
10
+ backgrounds: {
11
+ default: 'light',
12
+ },
13
+ },
14
+ tags: ['autodocs'],
15
+ } satisfies Meta<typeof DropdownItemCollapsible>;
16
+
17
+ export default meta;
18
+ type Story = StoryObj<typeof meta>;
19
+
20
+ /**
21
+ * Item colapsable básico sin encabezado ni divisor
22
+ * Muestra estructura simple con header colapsable
23
+ */
24
+ export const Basic: Story = {
25
+ render: () => (
26
+ <DropdownItemCollapsible
27
+ label="Users"
28
+ icon={<UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />}
29
+ children={[
30
+ {
31
+ label: 'Active Users',
32
+ icon: <UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />,
33
+ },
34
+ {
35
+ label: 'Inactive Users',
36
+ icon: <UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />,
37
+ },
38
+ ]}
39
+ />
40
+ ),
41
+ args: {
42
+ label: 'Users',
43
+ },
44
+ };
45
+
46
+ /**
47
+ * Item colapsable con encabezado de sección
48
+ * Útil para agrupar items relacionados
49
+ */
50
+ export const WithHeading: Story = {
51
+ render: () => (
52
+ <DropdownItemCollapsible
53
+ label="Customers"
54
+ icon={<UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />}
55
+ showHeading={true}
56
+ headingLabel="SECTION 1"
57
+ children={[
58
+ {
59
+ label: 'Enterprise',
60
+ icon: <UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />,
61
+ },
62
+ {
63
+ label: 'SMB',
64
+ icon: <UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />,
65
+ },
66
+ {
67
+ label: 'Startup',
68
+ icon: <UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />,
69
+ },
70
+ ]}
71
+ showDivider={true}
72
+ />
73
+ ),
74
+ args: {
75
+ label: 'Customers',
76
+ },
77
+ };
78
+
79
+ /**
80
+ * Item colapsable expandido por defecto
81
+ */
82
+ export const DefaultOpen: Story = {
83
+ render: () => (
84
+ <DropdownItemCollapsible
85
+ label="Departments"
86
+ icon={<UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />}
87
+ defaultOpen={true}
88
+ children={[
89
+ {
90
+ label: 'Sales',
91
+ icon: <UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />,
92
+ },
93
+ {
94
+ label: 'Marketing',
95
+ icon: <UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />,
96
+ },
97
+ {
98
+ label: 'Engineering',
99
+ icon: <UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />,
100
+ },
101
+ {
102
+ label: 'Operations',
103
+ icon: <UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />,
104
+ },
105
+ ]}
106
+ />
107
+ ),
108
+ args: {
109
+ label: 'Departments',
110
+ },
111
+ };
112
+
113
+ /**
114
+ * Item deshabilitado
115
+ * No se puede expandir ni interactuar
116
+ */
117
+ export const Disabled: Story = {
118
+ render: () => (
119
+ <DropdownItemCollapsible
120
+ label="Archived"
121
+ icon={<UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />}
122
+ disabled={true}
123
+ children={[
124
+ {
125
+ label: 'Old Item 1',
126
+ icon: <UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />,
127
+ },
128
+ {
129
+ label: 'Old Item 2',
130
+ icon: <UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />,
131
+ },
132
+ ]}
133
+ />
134
+ ),
135
+ args: {
136
+ label: 'Archived',
137
+ },
138
+ };
139
+
140
+ /**
141
+ * Item simple sin items anidados (no colapsable)
142
+ * Actúa como un botón normal
143
+ */
144
+ export const Simple: Story = {
145
+ args: {
146
+ label: 'Single Item',
147
+ icon: <UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />,
148
+ isCollapsible: false,
149
+ },
150
+ };
151
+
152
+ /**
153
+ * Item sin icono
154
+ */
155
+ export const WithoutIcon: Story = {
156
+ render: () => (
157
+ <DropdownItemCollapsible
158
+ label="No Icon Item"
159
+ children={[
160
+ {
161
+ label: 'Child 1',
162
+ },
163
+ {
164
+ label: 'Child 2',
165
+ },
166
+ {
167
+ label: 'Child 3',
168
+ },
169
+ ]}
170
+ />
171
+ ),
172
+ args: {
173
+ label: 'No Icon Item',
174
+ },
175
+ };
176
+
177
+ /**
178
+ * Items anidados sin iconos
179
+ */
180
+ export const ChildrenWithoutIcons: Story = {
181
+ render: () => (
182
+ <DropdownItemCollapsible
183
+ label="Groups"
184
+ icon={<UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />}
185
+ children={[
186
+ {
187
+ label: 'Admins',
188
+ },
189
+ {
190
+ label: 'Users',
191
+ },
192
+ {
193
+ label: 'Guests',
194
+ },
195
+ ]}
196
+ />
197
+ ),
198
+ args: {
199
+ label: 'Groups',
200
+ },
201
+ };
202
+
203
+ /**
204
+ * Múltiples items colapsables para simular dropdown completo
205
+ */
206
+ export const MultipleItems: Story = {
207
+ args: {
208
+ label: 'Multi Demo',
209
+ },
210
+ render: () => (
211
+ <div className="flex flex-col gap-0 w-56 bg-bg-primary dark:bg-dark-bg-primary rounded-lg border border-border-primary dark:border-dark-border-primary p-2">
212
+ <DropdownItemCollapsible
213
+ label="Users"
214
+ icon={<UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />}
215
+ showHeading={true}
216
+ headingLabel="RESOURCES"
217
+ showDivider={true}
218
+ children={[
219
+ {
220
+ label: 'Active Users',
221
+ icon: <UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />,
222
+ },
223
+ {
224
+ label: 'Inactive Users',
225
+ icon: <UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />,
226
+ },
227
+ ]}
228
+ />
229
+
230
+ <DropdownItemCollapsible
231
+ label="Departments"
232
+ icon={<UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />}
233
+ showDivider={true}
234
+ children={[
235
+ {
236
+ label: 'Sales',
237
+ icon: <UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />,
238
+ },
239
+ {
240
+ label: 'Marketing',
241
+ icon: <UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />,
242
+ },
243
+ {
244
+ label: 'Engineering',
245
+ icon: <UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />,
246
+ },
247
+ ]}
248
+ />
249
+
250
+ <DropdownItemCollapsible
251
+ label="Settings"
252
+ icon={<UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />}
253
+ showDivider={false}
254
+ isCollapsible={false}
255
+ />
256
+ </div>
257
+ ),
258
+ };
259
+
260
+ /**
261
+ * Ejemplo con callbacks
262
+ */
263
+ export const WithCallbacks: Story = {
264
+ render: () => (
265
+ <DropdownItemCollapsible
266
+ label="Actions"
267
+ icon={<UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />}
268
+ defaultOpen={false}
269
+ children={[
270
+ {
271
+ label: 'Edit',
272
+ icon: <UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />,
273
+ onClick: () => console.log('Edit clicked'),
274
+ },
275
+ {
276
+ label: 'Delete',
277
+ icon: <UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />,
278
+ onClick: () => console.log('Delete clicked'),
279
+ },
280
+ {
281
+ label: 'Archive',
282
+ disabled: true,
283
+ icon: <UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />,
284
+ },
285
+ ]}
286
+ onOpenChange={(open) => console.log('Toggle state:', open)}
287
+ />
288
+ ),
289
+ args: {
290
+ label: 'Actions',
291
+ },
292
+ };
293
+
294
+ /**
295
+ * Item con muchos items anidados
296
+ */
297
+ export const ManyChildren: Story = {
298
+ render: () => (
299
+ <DropdownItemCollapsible
300
+ label="Countries"
301
+ icon={<UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />}
302
+ children={[
303
+ { label: 'United States' },
304
+ { label: 'Canada' },
305
+ { label: 'Mexico' },
306
+ { label: 'Brazil' },
307
+ { label: 'Argentina' },
308
+ { label: 'Chile' },
309
+ { label: 'Colombia' },
310
+ { label: 'Peru' },
311
+ ]}
312
+ />
313
+ ),
314
+ args: {
315
+ label: 'Countries',
316
+ },
317
+ };
@@ -0,0 +1,287 @@
1
+ import React, { useState } from 'react';
2
+ import type {
3
+ DropdownItemCollapsibleProps,
4
+ DropdownItemCollapsibleChildProps,
5
+ } from './DropdownItemCollapsible.types';
6
+ import { ChevronDownIcon } from './icons';
7
+
8
+ /**
9
+ * Componente DropdownItemCollapsible del sistema de diseño Siesa
10
+ *
11
+ * Item colapsable para uso dentro de Dropdowns que permite agrupar
12
+ * items relacionados en secciones expandibles.
13
+ *
14
+ * **Características:**
15
+ * - Soporte completo para expandir/colapsar
16
+ * - Iconos personalizables en header y children
17
+ * - Items anidados indentados automáticamente
18
+ * - Dark mode completo con inversión de colores
19
+ * - Estados: default, hover, active, disabled
20
+ * - Focus rings adaptativos
21
+ * - Animación suave de rotación del chevron
22
+ *
23
+ * **Estados visuales:**
24
+ * - `collapsed`: Muestra solo el header con chevron apuntando down
25
+ * - `expanded`: Muestra header y lista de items anidados
26
+ * - `disabled`: Opacidad 50%, sin interacción
27
+ * - `hover`: Fondo de hover sutil, color primario del icono
28
+ * - `active`: Item anidado seleccionado con fondo custom-primary
29
+ *
30
+ * **Espaciado según Figma:**
31
+ * - Header padding: px-4 py-2 (16px horizontal, 8px vertical)
32
+ * - Item anidado padding: pl-6 pr-4 py-2 (24px left, 16px right, 8px vertical)
33
+ * - Gap entre elementos: gap-3 (12px)
34
+ * - Gap interno (icon + text): gap-3 (12px)
35
+ * - Indent entre niveles: 8px adicional por nivel
36
+ * - Divisor: borde top de 1px con spacing-0.5 (2px) arriba
37
+ * - Sección heading: pt-3 pb-1 px-0 (12px top, 4px bottom, sin horizontal)
38
+ *
39
+ * **Tipografía:**
40
+ * - Header: Paragraph/Small (14px, Regular, line-height 20px) - text-content-primary
41
+ * - Items anidados: Paragraph/Small (14px, Regular, line-height 20px) - text-content-primary
42
+ * - Heading: Paragraph/Tiny (12px, Regular, line-height 16px) - text-content-tertiary
43
+ *
44
+ * **Colores (Light Mode):**
45
+ * - Header text: content-primary (#18181b)
46
+ * - Header icon: content-secondary (#a1a1aa)
47
+ * - Header hover: bg-background-custom-primary (#dbeefe)
48
+ * - Header text hover: content-custom-primary (#0e79fd)
49
+ * - Item text: content-primary (#18181b)
50
+ * - Item hover: bg-transparent (sin fondo)
51
+ * - Divider: border-border-primary (#e4e4e7)
52
+ * - Heading text: content-tertiary (#71717a)
53
+ *
54
+ * **Colores (Dark Mode):**
55
+ * - Header text: content-primary/dark (#fafafa)
56
+ * - Header icon: content-secondary/dark (#a1a1aa)
57
+ * - Header hover: bg-background-custom-primary/dark (#0e5ab0)
58
+ * - Header text hover: content-custom-primary/dark (#bfe2fe)
59
+ * - Item text: content-primary/dark (#fafafa)
60
+ * - Divider: border-border-primary/dark (#3f3f46)
61
+ * - Heading text: content-tertiary/dark (#a1a1aa)
62
+ *
63
+ * **Border radius:**
64
+ * - Todos los items: rounded-lg (8px)
65
+ *
66
+ * **Sombras:**
67
+ * - Ninguna (usado dentro de dropdowns)
68
+ *
69
+ * @see docs/colors.md - Sistema de colores
70
+ * @see docs/typography.md - Sistema tipográfico
71
+ * @see docs/spacing.md - Sistema de espaciado
72
+ * @see https://www.figma.com/design/5XNqf2YTxvwemxwo1LMQ6j/Siesa-UI-Kit?node-id=6135-34374
73
+ *
74
+ * @example
75
+ * ```tsx
76
+ * // Item colapsable simple
77
+ * <DropdownItemCollapsible
78
+ * label="Users"
79
+ * icon={<UserIcon />}
80
+ * children={[
81
+ * { label: "Active Users", icon: <CheckIcon /> },
82
+ * { label: "Inactive Users", icon: <CloseIcon /> },
83
+ * ]}
84
+ * />
85
+ *
86
+ * // Con encabezado de sección
87
+ * <DropdownItemCollapsible
88
+ * label="Customers"
89
+ * icon={<BuildingIcon />}
90
+ * showHeading={true}
91
+ * headingLabel="SECTION 1"
92
+ * children={[...]}
93
+ * />
94
+ *
95
+ * // Item no colapsable (actúa como botón normal)
96
+ * <DropdownItemCollapsible
97
+ * label="Single Item"
98
+ * icon={<StarIcon />}
99
+ * isCollapsible={false}
100
+ * onClick={() => console.log('clicked')}
101
+ * />
102
+ * ```
103
+ */
104
+ export const DropdownItemCollapsible: React.FC<DropdownItemCollapsibleProps> = ({
105
+ label,
106
+ icon,
107
+ children = [],
108
+ defaultOpen = false,
109
+ disabled = false,
110
+ onOpenChange,
111
+ onClick,
112
+ isCollapsible = children.length > 0,
113
+ showHeading = false,
114
+ headingLabel,
115
+ showDivider = true,
116
+ className = '',
117
+ }) => {
118
+ const [isOpen, setIsOpen] = useState(defaultOpen);
119
+
120
+ const handleToggle = () => {
121
+ if (disabled || !isCollapsible) return;
122
+
123
+ const newOpen = !isOpen;
124
+ setIsOpen(newOpen);
125
+ onOpenChange?.(newOpen);
126
+ };
127
+
128
+ const handleHeaderClick = (e: React.MouseEvent<HTMLButtonElement>) => {
129
+ if (disabled) return;
130
+
131
+ if (isCollapsible) {
132
+ handleToggle();
133
+ } else {
134
+ onClick?.(e);
135
+ }
136
+ };
137
+
138
+ const handleChildClick = (child: DropdownItemCollapsibleChildProps) => (
139
+ e: React.MouseEvent<HTMLDivElement>,
140
+ ) => {
141
+ if (child.disabled) return;
142
+ child.onClick?.(e);
143
+ };
144
+
145
+ return (
146
+ <div className={`flex flex-col gap-0.5 w-full ${className}`}>
147
+ {/* Section Heading */}
148
+ {showHeading && headingLabel && (
149
+ <div className="flex flex-col gap-0 items-start pb-1 pt-3 px-0 w-full">
150
+ <p className="font-['Inter:Regular',sans-serif] font-normal leading-4 not-italic text-xs text-content-tertiary dark:text-content-tertiary w-full">
151
+ {headingLabel}
152
+ </p>
153
+ </div>
154
+ )}
155
+
156
+ {/* Header Button */}
157
+ <button
158
+ onClick={handleHeaderClick}
159
+ disabled={disabled}
160
+ className={[
161
+ // Base
162
+ 'flex items-center gap-3 px-4 py-2 w-full',
163
+ 'rounded-lg cursor-pointer',
164
+ 'transition-all duration-150',
165
+
166
+ // Colores y estados (Light Mode)
167
+ !disabled && 'text-content-primary',
168
+ !disabled && 'hover:bg-primary-custom-100',
169
+ !disabled && 'hover:text-primary-custom-600',
170
+
171
+ // Dark Mode
172
+ !disabled && 'dark:text-content-primary',
173
+ !disabled && 'dark:hover:bg-dark-bg-custom',
174
+ !disabled && 'dark:hover:text-dark-content-custom',
175
+
176
+ // Focus ring
177
+ !disabled && 'focus:outline-none',
178
+ !disabled && 'focus:ring-2',
179
+ !disabled && 'focus:ring-offset-2',
180
+ !disabled && 'focus:ring-primary-custom-400',
181
+ !disabled && 'focus:ring-offset-bg-primary',
182
+ !disabled && 'dark:focus:ring-offset-dark-bg-primary',
183
+
184
+ // Disabled
185
+ disabled && 'opacity-50',
186
+ disabled && 'cursor-not-allowed',
187
+ ]
188
+ .filter(Boolean)
189
+ .join(' ')}
190
+ aria-expanded={isOpen && isCollapsible}
191
+ aria-disabled={disabled}
192
+ >
193
+ {/* Icon Wrapper */}
194
+ {icon && (
195
+ <div className="flex items-center justify-center w-4 h-4 shrink-0 text-content-secondary dark:text-content-secondary">
196
+ {icon}
197
+ </div>
198
+ )}
199
+
200
+ {/* Content Wrapper */}
201
+ <div className="flex flex-1 flex-col items-start justify-center gap-0.5">
202
+ <p className="font-['Inter:Regular',sans-serif] font-normal leading-5 not-italic text-sm text-left">
203
+ {label}
204
+ </p>
205
+ </div>
206
+
207
+ {/* Chevron (solo visible si es colapsable) */}
208
+ {isCollapsible && (
209
+ <div
210
+ className={[
211
+ 'flex items-center justify-center w-4 h-4 shrink-0',
212
+ 'text-content-secondary dark:text-content-secondary',
213
+ 'transition-transform duration-200',
214
+ isOpen ? 'rotate-180' : 'rotate-0',
215
+ ].join(' ')}
216
+ >
217
+ <ChevronDownIcon className="w-4 h-4" />
218
+ </div>
219
+ )}
220
+ </button>
221
+
222
+ {/* Divider */}
223
+ {showDivider && <div className="w-full h-px bg-border-primary dark:bg-dark-border-primary" />}
224
+
225
+ {/* Children Container (expanded) */}
226
+ {isOpen && isCollapsible && children.length > 0 && (
227
+ <div className="flex flex-col gap-0.5 w-full py-2 px-0">
228
+ {children.map((child, index) => (
229
+ <div
230
+ key={index}
231
+ onClick={handleChildClick(child)}
232
+ className={[
233
+ // Base
234
+ 'flex gap-3 items-center pl-6 pr-4 py-2 w-full',
235
+ 'rounded-lg cursor-pointer',
236
+ 'transition-all duration-150',
237
+
238
+ // Colores y estados (Light Mode)
239
+ !child.disabled && 'text-content-primary',
240
+ !child.disabled && 'hover:bg-primary-custom-100',
241
+ !child.disabled && 'hover:text-primary-custom-600',
242
+
243
+ // Dark Mode
244
+ !child.disabled && 'dark:text-content-primary',
245
+ !child.disabled && 'dark:hover:bg-dark-bg-custom',
246
+ !child.disabled && 'dark:hover:text-dark-content-custom',
247
+
248
+ // Focus ring
249
+ !child.disabled && 'focus:outline-none',
250
+ !child.disabled && 'focus:ring-2',
251
+ !child.disabled && 'focus:ring-offset-2',
252
+ !child.disabled && 'focus:ring-primary-custom-400',
253
+ !child.disabled && 'focus:ring-offset-bg-primary',
254
+ !child.disabled && 'dark:focus:ring-offset-dark-bg-primary',
255
+
256
+ // Disabled
257
+ child.disabled && 'opacity-50',
258
+ child.disabled && 'cursor-not-allowed',
259
+
260
+ // Custom classes
261
+ child.className,
262
+ ]
263
+ .filter(Boolean)
264
+ .join(' ')}
265
+ >
266
+ {/* Child Icon Wrapper */}
267
+ {child.icon && (
268
+ <div className="flex items-center justify-center w-4 h-4 shrink-0 text-content-secondary dark:text-content-secondary">
269
+ {child.icon}
270
+ </div>
271
+ )}
272
+
273
+ {/* Child Content Wrapper */}
274
+ <div className="flex flex-1 flex-col items-start justify-center gap-0.5">
275
+ <p className="font-['Inter:Regular',sans-serif] font-normal leading-5 not-italic text-sm text-left">
276
+ {child.label}
277
+ </p>
278
+ </div>
279
+ </div>
280
+ ))}
281
+ </div>
282
+ )}
283
+ </div>
284
+ );
285
+ };
286
+
287
+ export default DropdownItemCollapsible;