siesa-ui-kit 1.0.4 → 1.0.5

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 (541) hide show
  1. package/README.md +89 -115
  2. package/bin/install.cjs +502 -502
  3. package/bin/prepare-publish.cjs +28 -28
  4. package/bin/restore-folders.cjs +28 -28
  5. package/claude/agents/siesa-ui-kit-specialist.md +2401 -2445
  6. package/claude/prompts/component-template.md +121 -121
  7. package/claude/settings.local.json +61 -72
  8. package/docs/border-radius.md +1261 -1261
  9. package/docs/colors.md +832 -832
  10. package/docs/dark-mode-guide.md +1426 -1426
  11. package/docs/filters.md +1243 -1243
  12. package/docs/icons.md +1283 -1264
  13. package/docs/shadows.md +1377 -1377
  14. package/docs/spacing.md +1684 -1684
  15. package/docs/typography.md +1268 -1268
  16. package/package.json +83 -111
  17. package/postcss.config.cjs +6 -6
  18. package/src/App.css +42 -42
  19. package/src/App.tsx +8 -8
  20. package/src/ButtonTest.tsx +147 -147
  21. package/src/assets/fonts/README.md +261 -261
  22. package/src/components/Alert/Alert.stories.tsx +332 -332
  23. package/src/components/Alert/Alert.tsx +106 -106
  24. package/src/components/Alert/Alert.types.ts +54 -54
  25. package/src/components/Avatar/Avatar.stories.tsx +494 -494
  26. package/src/components/Avatar/Avatar.tsx +143 -143
  27. package/src/components/Avatar/Avatar.types.ts +53 -53
  28. package/src/components/Badge/Badge.stories.tsx +339 -339
  29. package/src/components/Badge/Badge.tsx +278 -278
  30. package/src/components/Badge/Badge.types.ts +58 -58
  31. package/src/components/Button/Button.stories.tsx +950 -950
  32. package/src/components/Button/Button.tsx +337 -337
  33. package/src/components/Button/Button.types.ts +180 -180
  34. package/src/components/Button/icons.tsx +87 -48
  35. package/src/components/Button/index.ts +3 -3
  36. package/src/components/Checkbox/Checkbox.stories.tsx +453 -453
  37. package/src/components/Checkbox/Checkbox.tsx +208 -208
  38. package/src/components/Checkbox/Checkbox.types.ts +61 -61
  39. package/src/components/DescriptionList/DescriptionList.stories.tsx +250 -250
  40. package/src/components/DescriptionList/DescriptionList.tsx +96 -96
  41. package/src/components/DescriptionList/DescriptionList.types.ts +29 -29
  42. package/src/components/Divider/Divider.stories.tsx +263 -263
  43. package/src/components/Divider/Divider.tsx +80 -80
  44. package/src/components/Divider/Divider.types.ts +24 -24
  45. package/src/components/Dropdown/Dropdown.stories.tsx +552 -552
  46. package/src/components/Dropdown/Dropdown.tsx +422 -422
  47. package/src/components/Dropdown/Dropdown.types.ts +146 -146
  48. package/src/components/Dropdown/README.md +266 -266
  49. package/src/components/Dropdown/icons.tsx +72 -72
  50. package/src/components/Dropdown/index.ts +8 -8
  51. package/src/components/Input/Input.stories.tsx +583 -583
  52. package/src/components/Input/Input.tsx +204 -204
  53. package/src/components/Input/Input.types.ts +80 -80
  54. package/src/components/Input/icons.tsx +145 -145
  55. package/src/components/Input/index.ts +2 -2
  56. package/src/components/LoginView/LoginView.stories.tsx +148 -148
  57. package/src/components/LoginView/LoginView.tsx +426 -426
  58. package/src/components/LoginView/LoginView.types.ts +52 -52
  59. package/src/components/LoginView/README.md +396 -396
  60. package/src/components/LoginView/icons.tsx +85 -85
  61. package/src/components/LoginView/index.ts +3 -3
  62. package/src/components/Navbar/Navbar.stories.tsx +810 -810
  63. package/src/components/Navbar/Navbar.tsx +755 -755
  64. package/src/components/Navbar/Navbar.types.ts +219 -219
  65. package/src/components/Navbar/README.md +279 -279
  66. package/src/components/Navbar/icons.tsx +102 -102
  67. package/src/components/Navbar/index.ts +8 -8
  68. package/src/components/NavigationBar/NavigationBar.stories.tsx +406 -406
  69. package/src/components/NavigationBar/NavigationBar.tsx +246 -246
  70. package/src/components/NavigationBar/NavigationBar.types.ts +74 -74
  71. package/src/components/NavigationBar/README.md +469 -469
  72. package/src/components/NavigationBar/index.ts +2 -2
  73. package/src/components/NavigationRail/NavigationRail.stories.tsx +417 -417
  74. package/src/components/NavigationRail/NavigationRail.tsx +418 -418
  75. package/src/components/NavigationRail/NavigationRail.types.ts +109 -109
  76. package/src/components/NavigationRail/README.md +224 -224
  77. package/src/components/NavigationRail/index.ts +2 -2
  78. package/src/components/Notification/Notification.stories.tsx +513 -513
  79. package/src/components/Notification/Notification.tsx +145 -145
  80. package/src/components/Notification/Notification.types.ts +142 -142
  81. package/src/components/Notification/README.md +409 -409
  82. package/src/components/Notification/index.ts +3 -3
  83. package/src/components/POSConvention/POSConvention.stories.tsx +235 -235
  84. package/src/components/POSConvention/POSConvention.tsx +129 -129
  85. package/src/components/POSConvention/POSConvention.types.ts +38 -38
  86. package/src/components/POSConvention/README.md +123 -123
  87. package/src/components/POSConvention/icons.tsx +45 -45
  88. package/src/components/POSConvention/index.ts +3 -3
  89. package/src/components/POSLocationButton/POSLocationButton.stories.tsx +531 -531
  90. package/src/components/POSLocationButton/POSLocationButton.tsx +247 -247
  91. package/src/components/POSLocationButton/POSLocationButton.types.ts +87 -87
  92. package/src/components/POSLocationButton/README.md +253 -253
  93. package/src/components/POSLocationButton/icons.tsx +120 -120
  94. package/src/components/POSLocationButton/index.ts +14 -14
  95. package/src/components/POSNumberButton/POSNumberButton.stories.tsx +415 -415
  96. package/src/components/POSNumberButton/POSNumberButton.tsx +179 -179
  97. package/src/components/POSNumberButton/POSNumberButton.types.ts +51 -51
  98. package/src/components/POSNumberButton/README.md +321 -321
  99. package/src/components/POSNumberButton/index.ts +3 -3
  100. package/src/components/POSProductButton/POSProductButton.stories.tsx +318 -318
  101. package/src/components/POSProductButton/POSProductButton.tsx +152 -152
  102. package/src/components/POSProductButton/POSProductButton.types.ts +46 -46
  103. package/src/components/POSProductButton/README.md +269 -269
  104. package/src/components/POSProductButton/index.ts +2 -2
  105. package/src/components/POSProductCard/POSProductCard.stories.tsx +642 -642
  106. package/src/components/POSProductCard/POSProductCard.tsx +208 -208
  107. package/src/components/POSProductCard/POSProductCard.types.ts +76 -76
  108. package/src/components/POSProductCard/README.md +179 -179
  109. package/src/components/POSProductCard/icons.tsx +26 -26
  110. package/src/components/POSProductCard/index.ts +2 -2
  111. package/src/components/POSProductSidebarItems/POSProductSidebarItems.stories.tsx +753 -753
  112. package/src/components/POSProductSidebarItems/POSProductSidebarItems.tsx +332 -332
  113. package/src/components/POSProductSidebarItems/POSProductSidebarItems.types.ts +119 -119
  114. package/src/components/POSProductSidebarItems/README.md +198 -198
  115. package/src/components/POSProductSidebarItems/icons.tsx +21 -21
  116. package/src/components/POSProductSidebarItems/index.ts +3 -3
  117. package/src/components/POSTable/POSTable.stories.tsx +737 -737
  118. package/src/components/POSTable/POSTable.tsx +401 -401
  119. package/src/components/POSTable/POSTable.types.ts +83 -83
  120. package/src/components/POSTable/README.md +286 -286
  121. package/src/components/POSTable/index.ts +7 -7
  122. package/src/components/Pagination/Pagination.stories.tsx +555 -555
  123. package/src/components/Pagination/Pagination.tsx +286 -286
  124. package/src/components/Pagination/Pagination.types.ts +93 -93
  125. package/src/components/Pagination/README.md +298 -298
  126. package/src/components/Pagination/icons.tsx +47 -47
  127. package/src/components/Pagination/index.ts +3 -3
  128. package/src/components/Quantity/Quantity.stories.tsx +457 -457
  129. package/src/components/Quantity/Quantity.tsx +289 -289
  130. package/src/components/Quantity/Quantity.types.ts +70 -70
  131. package/src/components/Radio/Radio.stories.tsx +523 -523
  132. package/src/components/Radio/Radio.tsx +170 -170
  133. package/src/components/Radio/Radio.types.ts +122 -122
  134. package/src/components/Select/README.md +299 -299
  135. package/src/components/Select/Select.stories.tsx +673 -705
  136. package/src/components/Select/Select.tsx +454 -457
  137. package/src/components/Select/Select.types.ts +148 -148
  138. package/src/components/Select/icons.tsx +50 -25
  139. package/src/components/Select/index.ts +3 -3
  140. package/src/components/SignUpView/SignUpView.stories.tsx +129 -129
  141. package/src/components/SignUpView/SignUpView.tsx +503 -503
  142. package/src/components/SignUpView/SignUpView.types.ts +58 -58
  143. package/src/components/SignUpView/icons.tsx +71 -71
  144. package/src/components/SignUpView/index.ts +3 -3
  145. package/src/components/Switch/README.md +112 -112
  146. package/src/components/Switch/Switch.stories.tsx +550 -550
  147. package/src/components/Switch/Switch.tsx +246 -246
  148. package/src/components/Switch/Switch.types.ts +67 -67
  149. package/src/components/Table/README.md +369 -369
  150. package/src/components/Table/Table.stories.tsx +805 -805
  151. package/src/components/Table/Table.tsx +688 -688
  152. package/src/components/Table/Table.types.ts +204 -204
  153. package/src/components/Table/index.ts +9 -9
  154. package/src/components/Tabs/README.md +201 -201
  155. package/src/components/Tabs/Tabs.stories.tsx +580 -580
  156. package/src/components/Tabs/Tabs.tsx +356 -356
  157. package/src/components/Tabs/Tabs.types.ts +127 -127
  158. package/src/components/Tabs/icons.tsx +129 -129
  159. package/src/components/Tabs/index.ts +11 -11
  160. package/src/components/Textarea/Textarea.stories.tsx +535 -535
  161. package/src/components/Textarea/Textarea.tsx +188 -188
  162. package/src/components/Textarea/Textarea.types.ts +54 -54
  163. package/src/context/ThemeContext.tsx +99 -99
  164. package/src/context/index.ts +1 -1
  165. package/src/index.css +29 -29
  166. package/src/index.ts +39 -133
  167. package/src/main.tsx +10 -10
  168. package/src/views/ProductsView/ProductsView.stories.tsx +344 -344
  169. package/src/views/ProductsView/ProductsView.tsx +480 -480
  170. package/src/views/ProductsView/ProductsView.types.ts +238 -238
  171. package/src/views/ProductsView/README.md +312 -312
  172. package/src/views/ProductsView/icons.tsx +38 -38
  173. package/src/views/ProductsView/index.ts +8 -8
  174. package/src/views/RecoverPasswordView/README.md +269 -269
  175. package/src/views/RecoverPasswordView/RecoverPasswordView.stories.tsx +131 -131
  176. package/src/views/RecoverPasswordView/RecoverPasswordView.tsx +376 -376
  177. package/src/views/RecoverPasswordView/RecoverPasswordView.types.ts +56 -56
  178. package/src/views/RecoverPasswordView/icons.tsx +17 -17
  179. package/src/views/RecoverPasswordView/index.ts +2 -2
  180. package/src/views/TableLayoutView/README.md +268 -268
  181. package/src/views/TableLayoutView/TableLayoutView.stories.tsx +235 -235
  182. package/src/views/TableLayoutView/TableLayoutView.tsx +461 -461
  183. package/src/views/TableLayoutView/TableLayoutView.types.ts +209 -209
  184. package/src/views/TableLayoutView/icons.tsx +113 -113
  185. package/src/views/TableLayoutView/index.ts +6 -6
  186. package/storybook/main.ts +19 -19
  187. package/storybook/preview.tsx +84 -84
  188. package/storybook/vitest.setup.ts +6 -6
  189. package/tailwind.config.js +128 -128
  190. package/claude/prompts/siesa-ui-kit.md +0 -28
  191. package/dist/ButtonTest.d.ts +0 -6
  192. package/dist/ButtonTest.d.ts.map +0 -1
  193. package/dist/components/Alert/Alert.d.ts +0 -23
  194. package/dist/components/Alert/Alert.d.ts.map +0 -1
  195. package/dist/components/Alert/Alert.types.d.ts +0 -46
  196. package/dist/components/Alert/Alert.types.d.ts.map +0 -1
  197. package/dist/components/Avatar/Avatar.d.ts +0 -41
  198. package/dist/components/Avatar/Avatar.d.ts.map +0 -1
  199. package/dist/components/Avatar/Avatar.types.d.ts +0 -46
  200. package/dist/components/Avatar/Avatar.types.d.ts.map +0 -1
  201. package/dist/components/Badge/Badge.d.ts +0 -42
  202. package/dist/components/Badge/Badge.d.ts.map +0 -1
  203. package/dist/components/Badge/Badge.types.d.ts +0 -32
  204. package/dist/components/Badge/Badge.types.d.ts.map +0 -1
  205. package/dist/components/Button/Button.d.ts +0 -84
  206. package/dist/components/Button/Button.d.ts.map +0 -1
  207. package/dist/components/Button/Button.types.d.ts +0 -162
  208. package/dist/components/Button/Button.types.d.ts.map +0 -1
  209. package/dist/components/Button/icons.d.ts +0 -27
  210. package/dist/components/Button/icons.d.ts.map +0 -1
  211. package/dist/components/Button/index.d.ts +0 -4
  212. package/dist/components/Button/index.d.ts.map +0 -1
  213. package/dist/components/Checkbox/Checkbox.d.ts +0 -31
  214. package/dist/components/Checkbox/Checkbox.d.ts.map +0 -1
  215. package/dist/components/Checkbox/Checkbox.types.d.ts +0 -53
  216. package/dist/components/Checkbox/Checkbox.types.d.ts.map +0 -1
  217. package/dist/components/DescriptionList/DescriptionList.d.ts +0 -38
  218. package/dist/components/DescriptionList/DescriptionList.d.ts.map +0 -1
  219. package/dist/components/DescriptionList/DescriptionList.types.d.ts +0 -27
  220. package/dist/components/DescriptionList/DescriptionList.types.d.ts.map +0 -1
  221. package/dist/components/Divider/Divider.d.ts +0 -33
  222. package/dist/components/Divider/Divider.d.ts.map +0 -1
  223. package/dist/components/Divider/Divider.types.d.ts +0 -22
  224. package/dist/components/Divider/Divider.types.d.ts.map +0 -1
  225. package/dist/components/Dropdown/Dropdown.d.ts +0 -66
  226. package/dist/components/Dropdown/Dropdown.d.ts.map +0 -1
  227. package/dist/components/Dropdown/Dropdown.types.d.ts +0 -124
  228. package/dist/components/Dropdown/Dropdown.types.d.ts.map +0 -1
  229. package/dist/components/Dropdown/icons.d.ts +0 -10
  230. package/dist/components/Dropdown/icons.d.ts.map +0 -1
  231. package/dist/components/Dropdown/index.d.ts +0 -4
  232. package/dist/components/Dropdown/index.d.ts.map +0 -1
  233. package/dist/components/DropdownItemCollapsible/DropdownItemCollapsible.d.ts +0 -101
  234. package/dist/components/DropdownItemCollapsible/DropdownItemCollapsible.d.ts.map +0 -1
  235. package/dist/components/DropdownItemCollapsible/DropdownItemCollapsible.types.d.ts +0 -116
  236. package/dist/components/DropdownItemCollapsible/DropdownItemCollapsible.types.d.ts.map +0 -1
  237. package/dist/components/DropdownItemCollapsible/icons.d.ts +0 -19
  238. package/dist/components/DropdownItemCollapsible/icons.d.ts.map +0 -1
  239. package/dist/components/DropdownItemCollapsible/index.d.ts +0 -9
  240. package/dist/components/DropdownItemCollapsible/index.d.ts.map +0 -1
  241. package/dist/components/DropdownItemHeading/DropdownItemHeading.d.ts +0 -75
  242. package/dist/components/DropdownItemHeading/DropdownItemHeading.d.ts.map +0 -1
  243. package/dist/components/DropdownItemHeading/DropdownItemHeading.types.d.ts +0 -85
  244. package/dist/components/DropdownItemHeading/DropdownItemHeading.types.d.ts.map +0 -1
  245. package/dist/components/DropdownItemHeading/icons.d.ts +0 -48
  246. package/dist/components/DropdownItemHeading/icons.d.ts.map +0 -1
  247. package/dist/components/DropdownItemHeading/index.d.ts +0 -4
  248. package/dist/components/DropdownItemHeading/index.d.ts.map +0 -1
  249. package/dist/components/Input/Input.d.ts +0 -40
  250. package/dist/components/Input/Input.d.ts.map +0 -1
  251. package/dist/components/Input/Input.types.d.ts +0 -71
  252. package/dist/components/Input/Input.types.d.ts.map +0 -1
  253. package/dist/components/Input/icons.d.ts +0 -15
  254. package/dist/components/Input/icons.d.ts.map +0 -1
  255. package/dist/components/Input/index.d.ts +0 -3
  256. package/dist/components/Input/index.d.ts.map +0 -1
  257. package/dist/components/LoginView/LoginView.d.ts +0 -36
  258. package/dist/components/LoginView/LoginView.d.ts.map +0 -1
  259. package/dist/components/LoginView/LoginView.types.d.ts +0 -46
  260. package/dist/components/LoginView/LoginView.types.d.ts.map +0 -1
  261. package/dist/components/LoginView/icons.d.ts +0 -18
  262. package/dist/components/LoginView/icons.d.ts.map +0 -1
  263. package/dist/components/LoginView/index.d.ts +0 -4
  264. package/dist/components/LoginView/index.d.ts.map +0 -1
  265. package/dist/components/Navbar/Navbar.d.ts +0 -63
  266. package/dist/components/Navbar/Navbar.d.ts.map +0 -1
  267. package/dist/components/Navbar/Navbar.types.d.ts +0 -194
  268. package/dist/components/Navbar/Navbar.types.d.ts.map +0 -1
  269. package/dist/components/Navbar/icons.d.ts +0 -12
  270. package/dist/components/Navbar/icons.d.ts.map +0 -1
  271. package/dist/components/Navbar/index.d.ts +0 -4
  272. package/dist/components/Navbar/index.d.ts.map +0 -1
  273. package/dist/components/NavigationBar/NavigationBar.d.ts +0 -75
  274. package/dist/components/NavigationBar/NavigationBar.d.ts.map +0 -1
  275. package/dist/components/NavigationBar/NavigationBar.types.d.ts +0 -63
  276. package/dist/components/NavigationBar/NavigationBar.types.d.ts.map +0 -1
  277. package/dist/components/NavigationBar/index.d.ts +0 -3
  278. package/dist/components/NavigationBar/index.d.ts.map +0 -1
  279. package/dist/components/NavigationRail/NavigationRail.d.ts +0 -7
  280. package/dist/components/NavigationRail/NavigationRail.d.ts.map +0 -1
  281. package/dist/components/NavigationRail/NavigationRail.types.d.ts +0 -92
  282. package/dist/components/NavigationRail/NavigationRail.types.d.ts.map +0 -1
  283. package/dist/components/NavigationRail/index.d.ts +0 -3
  284. package/dist/components/NavigationRail/index.d.ts.map +0 -1
  285. package/dist/components/NavigationRailCommercial/NavigationRailCommercial.d.ts +0 -122
  286. package/dist/components/NavigationRailCommercial/NavigationRailCommercial.d.ts.map +0 -1
  287. package/dist/components/NavigationRailCommercial/NavigationRailCommercial.types.d.ts +0 -139
  288. package/dist/components/NavigationRailCommercial/NavigationRailCommercial.types.d.ts.map +0 -1
  289. package/dist/components/NavigationRailCommercial/icons.d.ts +0 -33
  290. package/dist/components/NavigationRailCommercial/icons.d.ts.map +0 -1
  291. package/dist/components/NavigationRailCommercial/index.d.ts +0 -4
  292. package/dist/components/NavigationRailCommercial/index.d.ts.map +0 -1
  293. package/dist/components/NavigationRailItem/NavigationRailItem.d.ts +0 -90
  294. package/dist/components/NavigationRailItem/NavigationRailItem.d.ts.map +0 -1
  295. package/dist/components/NavigationRailItem/NavigationRailItem.types.d.ts +0 -162
  296. package/dist/components/NavigationRailItem/NavigationRailItem.types.d.ts.map +0 -1
  297. package/dist/components/NavigationRailItem/index.d.ts +0 -3
  298. package/dist/components/NavigationRailItem/index.d.ts.map +0 -1
  299. package/dist/components/NavigationRailPanel/NavigationRailPanel.d.ts +0 -124
  300. package/dist/components/NavigationRailPanel/NavigationRailPanel.d.ts.map +0 -1
  301. package/dist/components/NavigationRailPanel/NavigationRailPanel.types.d.ts +0 -154
  302. package/dist/components/NavigationRailPanel/NavigationRailPanel.types.d.ts.map +0 -1
  303. package/dist/components/NavigationRailPanel/index.d.ts +0 -3
  304. package/dist/components/NavigationRailPanel/index.d.ts.map +0 -1
  305. package/dist/components/NavigationRailTypes/NavigationRailTypes.d.ts +0 -99
  306. package/dist/components/NavigationRailTypes/NavigationRailTypes.d.ts.map +0 -1
  307. package/dist/components/NavigationRailTypes/NavigationRailTypes.types.d.ts +0 -152
  308. package/dist/components/NavigationRailTypes/NavigationRailTypes.types.d.ts.map +0 -1
  309. package/dist/components/NavigationRailTypes/icons.d.ts +0 -44
  310. package/dist/components/NavigationRailTypes/icons.d.ts.map +0 -1
  311. package/dist/components/NavigationRailTypes/index.d.ts +0 -4
  312. package/dist/components/NavigationRailTypes/index.d.ts.map +0 -1
  313. package/dist/components/Notification/Notification.d.ts +0 -52
  314. package/dist/components/Notification/Notification.d.ts.map +0 -1
  315. package/dist/components/Notification/Notification.types.d.ts +0 -138
  316. package/dist/components/Notification/Notification.types.d.ts.map +0 -1
  317. package/dist/components/Notification/index.d.ts +0 -3
  318. package/dist/components/Notification/index.d.ts.map +0 -1
  319. package/dist/components/POSConvention/POSConvention.d.ts +0 -55
  320. package/dist/components/POSConvention/POSConvention.d.ts.map +0 -1
  321. package/dist/components/POSConvention/POSConvention.types.d.ts +0 -37
  322. package/dist/components/POSConvention/POSConvention.types.d.ts.map +0 -1
  323. package/dist/components/POSConvention/icons.d.ts +0 -21
  324. package/dist/components/POSConvention/icons.d.ts.map +0 -1
  325. package/dist/components/POSConvention/index.d.ts +0 -4
  326. package/dist/components/POSConvention/index.d.ts.map +0 -1
  327. package/dist/components/POSLocationButton/POSLocationButton.d.ts +0 -73
  328. package/dist/components/POSLocationButton/POSLocationButton.d.ts.map +0 -1
  329. package/dist/components/POSLocationButton/POSLocationButton.types.d.ts +0 -75
  330. package/dist/components/POSLocationButton/POSLocationButton.types.d.ts.map +0 -1
  331. package/dist/components/POSLocationButton/icons.d.ts +0 -37
  332. package/dist/components/POSLocationButton/icons.d.ts.map +0 -1
  333. package/dist/components/POSLocationButton/index.d.ts +0 -4
  334. package/dist/components/POSLocationButton/index.d.ts.map +0 -1
  335. package/dist/components/POSNumberButton/POSNumberButton.d.ts +0 -61
  336. package/dist/components/POSNumberButton/POSNumberButton.d.ts.map +0 -1
  337. package/dist/components/POSNumberButton/POSNumberButton.types.d.ts +0 -43
  338. package/dist/components/POSNumberButton/POSNumberButton.types.d.ts.map +0 -1
  339. package/dist/components/POSNumberButton/index.d.ts +0 -3
  340. package/dist/components/POSNumberButton/index.d.ts.map +0 -1
  341. package/dist/components/POSProductButton/POSProductButton.d.ts +0 -59
  342. package/dist/components/POSProductButton/POSProductButton.d.ts.map +0 -1
  343. package/dist/components/POSProductButton/POSProductButton.types.d.ts +0 -40
  344. package/dist/components/POSProductButton/POSProductButton.types.d.ts.map +0 -1
  345. package/dist/components/POSProductButton/index.d.ts +0 -3
  346. package/dist/components/POSProductButton/index.d.ts.map +0 -1
  347. package/dist/components/POSProductCard/POSProductCard.d.ts +0 -68
  348. package/dist/components/POSProductCard/POSProductCard.d.ts.map +0 -1
  349. package/dist/components/POSProductCard/POSProductCard.types.d.ts +0 -67
  350. package/dist/components/POSProductCard/POSProductCard.types.d.ts.map +0 -1
  351. package/dist/components/POSProductCard/icons.d.ts +0 -10
  352. package/dist/components/POSProductCard/icons.d.ts.map +0 -1
  353. package/dist/components/POSProductCard/index.d.ts +0 -3
  354. package/dist/components/POSProductCard/index.d.ts.map +0 -1
  355. package/dist/components/POSProductSidebarItems/POSProductSidebarItems.d.ts +0 -57
  356. package/dist/components/POSProductSidebarItems/POSProductSidebarItems.d.ts.map +0 -1
  357. package/dist/components/POSProductSidebarItems/POSProductSidebarItems.types.d.ts +0 -85
  358. package/dist/components/POSProductSidebarItems/POSProductSidebarItems.types.d.ts.map +0 -1
  359. package/dist/components/POSProductSidebarItems/icons.d.ts +0 -9
  360. package/dist/components/POSProductSidebarItems/icons.d.ts.map +0 -1
  361. package/dist/components/POSProductSidebarItems/index.d.ts +0 -4
  362. package/dist/components/POSProductSidebarItems/index.d.ts.map +0 -1
  363. package/dist/components/POSTable/POSTable.d.ts +0 -75
  364. package/dist/components/POSTable/POSTable.d.ts.map +0 -1
  365. package/dist/components/POSTable/POSTable.types.d.ts +0 -71
  366. package/dist/components/POSTable/POSTable.types.d.ts.map +0 -1
  367. package/dist/components/POSTable/index.d.ts +0 -3
  368. package/dist/components/POSTable/index.d.ts.map +0 -1
  369. package/dist/components/Pagination/Pagination.d.ts +0 -29
  370. package/dist/components/Pagination/Pagination.d.ts.map +0 -1
  371. package/dist/components/Pagination/Pagination.types.d.ts +0 -79
  372. package/dist/components/Pagination/Pagination.types.d.ts.map +0 -1
  373. package/dist/components/Pagination/icons.d.ts +0 -18
  374. package/dist/components/Pagination/icons.d.ts.map +0 -1
  375. package/dist/components/Pagination/index.d.ts +0 -4
  376. package/dist/components/Pagination/index.d.ts.map +0 -1
  377. package/dist/components/Quantity/Quantity.d.ts +0 -38
  378. package/dist/components/Quantity/Quantity.d.ts.map +0 -1
  379. package/dist/components/Quantity/Quantity.types.d.ts +0 -59
  380. package/dist/components/Quantity/Quantity.types.d.ts.map +0 -1
  381. package/dist/components/Radio/Radio.d.ts +0 -45
  382. package/dist/components/Radio/Radio.d.ts.map +0 -1
  383. package/dist/components/Radio/Radio.types.d.ts +0 -115
  384. package/dist/components/Radio/Radio.types.d.ts.map +0 -1
  385. package/dist/components/Select/Select.d.ts +0 -37
  386. package/dist/components/Select/Select.d.ts.map +0 -1
  387. package/dist/components/Select/Select.types.d.ts +0 -124
  388. package/dist/components/Select/Select.types.d.ts.map +0 -1
  389. package/dist/components/Select/icons.d.ts +0 -20
  390. package/dist/components/Select/icons.d.ts.map +0 -1
  391. package/dist/components/Select/index.d.ts +0 -4
  392. package/dist/components/Select/index.d.ts.map +0 -1
  393. package/dist/components/SignUpView/SignUpView.d.ts +0 -38
  394. package/dist/components/SignUpView/SignUpView.d.ts.map +0 -1
  395. package/dist/components/SignUpView/SignUpView.types.d.ts +0 -51
  396. package/dist/components/SignUpView/SignUpView.types.d.ts.map +0 -1
  397. package/dist/components/SignUpView/icons.d.ts +0 -18
  398. package/dist/components/SignUpView/icons.d.ts.map +0 -1
  399. package/dist/components/SignUpView/index.d.ts +0 -4
  400. package/dist/components/SignUpView/index.d.ts.map +0 -1
  401. package/dist/components/Switch/Switch.d.ts +0 -46
  402. package/dist/components/Switch/Switch.d.ts.map +0 -1
  403. package/dist/components/Switch/Switch.types.d.ts +0 -58
  404. package/dist/components/Switch/Switch.types.d.ts.map +0 -1
  405. package/dist/components/Table/Table.d.ts +0 -64
  406. package/dist/components/Table/Table.d.ts.map +0 -1
  407. package/dist/components/Table/Table.types.d.ts +0 -173
  408. package/dist/components/Table/Table.types.d.ts.map +0 -1
  409. package/dist/components/Table/index.d.ts +0 -3
  410. package/dist/components/Table/index.d.ts.map +0 -1
  411. package/dist/components/Tabs/Tabs.d.ts +0 -76
  412. package/dist/components/Tabs/Tabs.d.ts.map +0 -1
  413. package/dist/components/Tabs/Tabs.types.d.ts +0 -107
  414. package/dist/components/Tabs/Tabs.types.d.ts.map +0 -1
  415. package/dist/components/Tabs/icons.d.ts +0 -45
  416. package/dist/components/Tabs/icons.d.ts.map +0 -1
  417. package/dist/components/Tabs/index.d.ts +0 -4
  418. package/dist/components/Tabs/index.d.ts.map +0 -1
  419. package/dist/components/Textarea/Textarea.d.ts +0 -38
  420. package/dist/components/Textarea/Textarea.d.ts.map +0 -1
  421. package/dist/components/Textarea/Textarea.types.d.ts +0 -46
  422. package/dist/components/Textarea/Textarea.types.d.ts.map +0 -1
  423. package/dist/context/ThemeContext.d.ts +0 -46
  424. package/dist/context/ThemeContext.d.ts.map +0 -1
  425. package/dist/context/index.d.ts +0 -2
  426. package/dist/context/index.d.ts.map +0 -1
  427. package/dist/index.d.ts +0 -88
  428. package/dist/index.d.ts.map +0 -1
  429. package/dist/siesa-ui-kit.cjs +0 -1474
  430. package/dist/siesa-ui-kit.cjs.map +0 -1
  431. package/dist/siesa-ui-kit.mjs +0 -9580
  432. package/dist/siesa-ui-kit.mjs.map +0 -1
  433. package/dist/views/LayoutCommercial/LayoutCommercial.d.ts +0 -48
  434. package/dist/views/LayoutCommercial/LayoutCommercial.d.ts.map +0 -1
  435. package/dist/views/LayoutCommercial/LayoutCommercial.types.d.ts +0 -49
  436. package/dist/views/LayoutCommercial/LayoutCommercial.types.d.ts.map +0 -1
  437. package/dist/views/LayoutCommercial/index.d.ts +0 -3
  438. package/dist/views/LayoutCommercial/index.d.ts.map +0 -1
  439. package/dist/views/ListView/ListView.d.ts +0 -47
  440. package/dist/views/ListView/ListView.d.ts.map +0 -1
  441. package/dist/views/ListView/ListView.types.d.ts +0 -177
  442. package/dist/views/ListView/ListView.types.d.ts.map +0 -1
  443. package/dist/views/ListView/icons.d.ts +0 -60
  444. package/dist/views/ListView/icons.d.ts.map +0 -1
  445. package/dist/views/ListView/index.d.ts +0 -3
  446. package/dist/views/ListView/index.d.ts.map +0 -1
  447. package/dist/views/LoginView/LoginView.d.ts +0 -36
  448. package/dist/views/LoginView/LoginView.d.ts.map +0 -1
  449. package/dist/views/LoginView/LoginView.types.d.ts +0 -46
  450. package/dist/views/LoginView/LoginView.types.d.ts.map +0 -1
  451. package/dist/views/LoginView/icons.d.ts +0 -18
  452. package/dist/views/LoginView/icons.d.ts.map +0 -1
  453. package/dist/views/LoginView/index.d.ts +0 -4
  454. package/dist/views/LoginView/index.d.ts.map +0 -1
  455. package/dist/views/ProductsView/ProductsView.d.ts +0 -56
  456. package/dist/views/ProductsView/ProductsView.d.ts.map +0 -1
  457. package/dist/views/ProductsView/ProductsView.types.d.ts +0 -184
  458. package/dist/views/ProductsView/ProductsView.types.d.ts.map +0 -1
  459. package/dist/views/ProductsView/icons.d.ts +0 -12
  460. package/dist/views/ProductsView/icons.d.ts.map +0 -1
  461. package/dist/views/ProductsView/index.d.ts +0 -3
  462. package/dist/views/ProductsView/index.d.ts.map +0 -1
  463. package/dist/views/RecoverPasswordView/RecoverPasswordView.d.ts +0 -34
  464. package/dist/views/RecoverPasswordView/RecoverPasswordView.d.ts.map +0 -1
  465. package/dist/views/RecoverPasswordView/RecoverPasswordView.types.d.ts +0 -50
  466. package/dist/views/RecoverPasswordView/RecoverPasswordView.types.d.ts.map +0 -1
  467. package/dist/views/RecoverPasswordView/icons.d.ts +0 -9
  468. package/dist/views/RecoverPasswordView/icons.d.ts.map +0 -1
  469. package/dist/views/RecoverPasswordView/index.d.ts +0 -3
  470. package/dist/views/RecoverPasswordView/index.d.ts.map +0 -1
  471. package/dist/views/SignUpView/SignUpView.d.ts +0 -38
  472. package/dist/views/SignUpView/SignUpView.d.ts.map +0 -1
  473. package/dist/views/SignUpView/SignUpView.types.d.ts +0 -51
  474. package/dist/views/SignUpView/SignUpView.types.d.ts.map +0 -1
  475. package/dist/views/SignUpView/icons.d.ts +0 -18
  476. package/dist/views/SignUpView/icons.d.ts.map +0 -1
  477. package/dist/views/SignUpView/index.d.ts +0 -4
  478. package/dist/views/SignUpView/index.d.ts.map +0 -1
  479. package/dist/views/TableLayoutView/TableLayoutView.d.ts +0 -46
  480. package/dist/views/TableLayoutView/TableLayoutView.d.ts.map +0 -1
  481. package/dist/views/TableLayoutView/TableLayoutView.types.d.ts +0 -170
  482. package/dist/views/TableLayoutView/TableLayoutView.types.d.ts.map +0 -1
  483. package/dist/views/TableLayoutView/icons.d.ts +0 -27
  484. package/dist/views/TableLayoutView/icons.d.ts.map +0 -1
  485. package/dist/views/TableLayoutView/index.d.ts +0 -3
  486. package/dist/views/TableLayoutView/index.d.ts.map +0 -1
  487. package/src/components/DropdownItemCollapsible/DropdownItemCollapsible.stories.tsx +0 -317
  488. package/src/components/DropdownItemCollapsible/DropdownItemCollapsible.tsx +0 -307
  489. package/src/components/DropdownItemCollapsible/DropdownItemCollapsible.types.ts +0 -136
  490. package/src/components/DropdownItemCollapsible/README.md +0 -264
  491. package/src/components/DropdownItemCollapsible/icons.tsx +0 -57
  492. package/src/components/DropdownItemCollapsible/index.ts +0 -12
  493. package/src/components/DropdownItemHeading/DropdownItemHeading.stories.tsx +0 -386
  494. package/src/components/DropdownItemHeading/DropdownItemHeading.tsx +0 -216
  495. package/src/components/DropdownItemHeading/DropdownItemHeading.types.ts +0 -93
  496. package/src/components/DropdownItemHeading/README.md +0 -573
  497. package/src/components/DropdownItemHeading/icons.tsx +0 -125
  498. package/src/components/DropdownItemHeading/index.ts +0 -3
  499. package/src/components/NavigationRailCommercial/NavigationRailCommercial.stories.tsx +0 -464
  500. package/src/components/NavigationRailCommercial/NavigationRailCommercial.tsx +0 -301
  501. package/src/components/NavigationRailCommercial/NavigationRailCommercial.types.ts +0 -162
  502. package/src/components/NavigationRailCommercial/README.md +0 -251
  503. package/src/components/NavigationRailCommercial/icons.tsx +0 -54
  504. package/src/components/NavigationRailCommercial/index.ts +0 -6
  505. package/src/components/NavigationRailItem/NavigationRailItem.stories.tsx +0 -667
  506. package/src/components/NavigationRailItem/NavigationRailItem.tsx +0 -314
  507. package/src/components/NavigationRailItem/NavigationRailItem.types.ts +0 -175
  508. package/src/components/NavigationRailItem/README.md +0 -476
  509. package/src/components/NavigationRailItem/index.ts +0 -2
  510. package/src/components/NavigationRailPanel/NavigationRailPanel.stories.tsx +0 -462
  511. package/src/components/NavigationRailPanel/NavigationRailPanel.tsx +0 -332
  512. package/src/components/NavigationRailPanel/NavigationRailPanel.types.ts +0 -178
  513. package/src/components/NavigationRailPanel/README.md +0 -461
  514. package/src/components/NavigationRailPanel/index.ts +0 -6
  515. package/src/components/NavigationRailTypes/NavigationRailTypes.stories.tsx +0 -682
  516. package/src/components/NavigationRailTypes/NavigationRailTypes.tsx +0 -363
  517. package/src/components/NavigationRailTypes/NavigationRailTypes.types.ts +0 -178
  518. package/src/components/NavigationRailTypes/README.md +0 -573
  519. package/src/components/NavigationRailTypes/icons.tsx +0 -76
  520. package/src/components/NavigationRailTypes/index.ts +0 -7
  521. package/src/views/LayoutCommercial/LayoutCommercial.stories.tsx +0 -374
  522. package/src/views/LayoutCommercial/LayoutCommercial.tsx +0 -125
  523. package/src/views/LayoutCommercial/LayoutCommercial.types.ts +0 -54
  524. package/src/views/LayoutCommercial/README.md +0 -286
  525. package/src/views/LayoutCommercial/index.ts +0 -2
  526. package/src/views/ListView/ListView.stories.tsx +0 -329
  527. package/src/views/ListView/ListView.tsx +0 -570
  528. package/src/views/ListView/ListView.types.ts +0 -211
  529. package/src/views/ListView/icons.tsx +0 -282
  530. package/src/views/ListView/index.ts +0 -11
  531. package/src/views/LoginView/LoginView.stories.tsx +0 -148
  532. package/src/views/LoginView/LoginView.tsx +0 -426
  533. package/src/views/LoginView/LoginView.types.ts +0 -52
  534. package/src/views/LoginView/README.md +0 -396
  535. package/src/views/LoginView/icons.tsx +0 -85
  536. package/src/views/LoginView/index.ts +0 -3
  537. package/src/views/SignUpView/SignUpView.stories.tsx +0 -129
  538. package/src/views/SignUpView/SignUpView.tsx +0 -503
  539. package/src/views/SignUpView/SignUpView.types.ts +0 -58
  540. package/src/views/SignUpView/icons.tsx +0 -71
  541. package/src/views/SignUpView/index.ts +0 -3
package/docs/colors.md CHANGED
@@ -1,832 +1,832 @@
1
- # 🎨 Sistema de Colores - Siesa UI Kit
2
-
3
- ## 📋 Tabla de Contenidos
4
-
5
- 1. [Introducción](#introducción)
6
- 2. [Arquitectura de Colores](#arquitectura-de-colores)
7
- 3. [Colores Primitivos](#colores-primitivos)
8
- 4. [Tokens Semánticos](#tokens-semánticos)
9
- 5. [Modos de Color (Light/Dark)](#modos-de-color-lightdark)
10
- 6. [Guía de Uso en Componentes](#guía-de-uso-en-componentes)
11
- 7. [Ejemplos de Código](#ejemplos-de-código)
12
- 8. [Mejores Prácticas](#mejores-prácticas)
13
- 9. [Referencia Rápida](#referencia-rápida)
14
-
15
- ---
16
-
17
- ## Introducción
18
-
19
- Este documento describe el sistema de colores del **Siesa UI Kit**, diseñado para garantizar consistencia visual, accesibilidad y mantenibilidad en todos los componentes de la interfaz.
20
-
21
- ### 🎯 Objetivos del Sistema
22
-
23
- - **Consistencia**: Colores unificados en toda la aplicación
24
- - **Accesibilidad**: Ratios de contraste WCAG AA/AAA
25
- - **Mantenibilidad**: Tokens semánticos fáciles de actualizar
26
- - **Escalabilidad**: Sistema extensible para nuevos componentes
27
- - **Dark Mode**: Soporte completo para modo oscuro
28
-
29
- ---
30
-
31
- ## Arquitectura de Colores
32
-
33
- El sistema de colores está estructurado en 3 capas:
34
-
35
- ```
36
- ┌─────────────────────────────────────┐
37
- │ CAPA 3: Componentes │
38
- │ (Button, Alert, Badge, etc.) │
39
- └─────────────────────────────────────┘
40
-
41
- │ usa tokens
42
-
43
- ┌─────────────────────────────────────┐
44
- │ CAPA 2: Tokens Semánticos │
45
- │ (content-primary, bg-primary, etc) │
46
- └─────────────────────────────────────┘
47
-
48
- │ mapea a
49
-
50
- ┌─────────────────────────────────────┐
51
- │ CAPA 1: Colores Primitivos │
52
- │ (primary-custom-600, gray-100, etc)│
53
- └─────────────────────────────────────┘
54
- ```
55
-
56
- ### Principios de Diseño
57
-
58
- 1. **Primitivos = Valores Hex**: Colores base inmutables
59
- 2. **Tokens = Intención de Uso**: Nombres semánticos que describen propósito
60
- 3. **Componentes = Aplicación**: Uso consistente de tokens
61
-
62
- ---
63
-
64
- ## Colores Primitivos
65
-
66
- Los colores primitivos son la base del sistema. Están organizados en escalas de 100-700 (actualmente) con planes de expandir a 50-950.
67
-
68
- ### 📘 Primary Custom (Azul Principal)
69
-
70
- Color primario de marca Siesa. Usado en botones, enlaces y elementos interactivos principales.
71
-
72
- | Escala | Valor Hex | CSS Class | Uso Principal |
73
- |--------|-----------|-----------|---------------|
74
- | **100** | `#dbeefe` | `primary-custom-100` | Hover backgrounds (outline buttons) |
75
- | **300** | `#93d1fd` | `primary-custom-300` | Bordes (outline buttons, inputs) |
76
- | **400** | `#60b6fa` | `primary-custom-400` | Focus rings |
77
- | **500** | `#3c9bf6` | `primary-custom-500` | Hover state (default buttons) |
78
- | **600** | `#0e79fd` | `primary-custom-600` | **Color principal** (contenido, íconos) |
79
- | **700** | `#0c6ade` | `primary-custom-700` | Active/Pressed states |
80
-
81
- **Ejemplo de Aplicación**:
82
- ```tsx
83
- // Botón primario
84
- <button className="bg-primary-custom-600 hover:bg-primary-custom-500 focus:ring-primary-custom-400">
85
- Click me
86
- </button>
87
- ```
88
-
89
- ---
90
-
91
- ### 🎨 Colores Inverse (Para fondos oscuros)
92
-
93
- Colores optimizados para usar sobre fondos de color primario.
94
-
95
- | Token | Valor Hex | Uso |
96
- |-------|-----------|-----|
97
- | `primary-inverse-content` | `#eff8ff` | Texto sobre fondo primario |
98
- | `primary-inverse-background` | `#0e79fd` | Fondo de botones primarios |
99
- | `primary-inverse-border` | `#3c9bf6` | Bordes sobre fondo primario |
100
-
101
- **Ejemplo de Aplicación**:
102
- ```tsx
103
- // Botón con fondo primario y texto claro
104
- <button className="bg-primary-inverse-background text-primary-inverse-content border-primary-inverse-border">
105
- Botón Primario
106
- </button>
107
- ```
108
-
109
- ---
110
-
111
- ### 🌈 Colores del Sistema (Light Mode)
112
-
113
- Paleta neutral para textos, fondos y bordes en modo claro.
114
-
115
- #### Contenido (Texto)
116
-
117
- | Token | Valor Hex | Uso | Contraste |
118
- |-------|-----------|-----|-----------|
119
- | `content-primary` | `#18181b` | Texto principal | AAA (18:1) |
120
- | `content-secondary` | `#a1a1aa` | Descripciones, labels | AA (4.5:1) |
121
- | `content-tertiary` | `#71717a` | Placeholders, disabled text | AA (4.5:1) |
122
-
123
- #### Fondos
124
-
125
- | Token | Valor Hex | Uso |
126
- |-------|-----------|-----|
127
- | `bg-primary` | `#ffffff` | Fondo principal de la app |
128
- | `background-secondary` | `#f4f4f5` | Cards, fondos disabled |
129
-
130
- #### Bordes
131
-
132
- | Token | Valor Hex | Uso |
133
- |-------|-----------|-----|
134
- | `border-primary` | `#e4e4e7` | Bordes normales (inputs, cards) |
135
- | `border-secondary` | `#f4f4f5` | Dividers, bordes suaves |
136
-
137
- **Ejemplo de Aplicación**:
138
- ```tsx
139
- // Card con sistema de colores semánticos
140
- <div className="bg-bg-primary border border-border-primary">
141
- <h3 className="text-content-primary">Título Principal</h3>
142
- <p className="text-content-secondary">Descripción secundaria</p>
143
- </div>
144
- ```
145
-
146
- ---
147
-
148
- ### 🔴 Colores de Error
149
-
150
- Paleta para estados de error y validación.
151
-
152
- | Token | Valor Hex | Base Color | Uso |
153
- |-------|-----------|------------|-----|
154
- | `error-bg` | `#fef2f2` | Red 50 | Fondo de alertas de error |
155
- | `error-border` | `#ef4444` | Red 500 | Bordes de inputs con error |
156
- | `error-content` | `#dc2626` | Red 600 | Texto de mensajes de error |
157
-
158
- **Ejemplo de Aplicación**:
159
- ```tsx
160
- // Input con error
161
- <div className="border-2 border-error-border bg-error-bg">
162
- <input type="text" />
163
- <span className="text-error-content">Email inválido</span>
164
- </div>
165
- ```
166
-
167
- > **⚠️ PENDIENTE**: Agregar colores para Success, Warning, Info con la misma estructura.
168
-
169
- ---
170
-
171
- ## Tokens Semánticos
172
-
173
- Los tokens semánticos describen **dónde y cómo** usar los colores, no **qué color** son.
174
-
175
- ### 📊 Estructura de Tokens
176
-
177
- ```
178
- {categoria}-{proposito}-{variante}
179
-
180
- Ejemplos:
181
- - content-primary (Categoría: content, Propósito: primary)
182
- - bg-secondary (Categoría: bg, Propósito: secondary)
183
- - border-custom (Categoría: border, Propósito: custom)
184
- ```
185
-
186
- ### Categorías de Tokens
187
-
188
- | Categoría | Prefijo | Uso | Ejemplos |
189
- |-----------|---------|-----|----------|
190
- | **Content** | `content-` | Texto, íconos | `content-primary`, `content-secondary` |
191
- | **Background** | `bg-`, `background-` | Fondos | `bg-primary`, `background-secondary` |
192
- | **Border** | `border-` | Bordes, divisores | `border-primary`, `border-secondary` |
193
- | **Primary Custom** | `primary-custom-` | Color de marca | `primary-custom-600`, `primary-custom-300` |
194
- | **Error** | `error-` | Estados de error | `error-bg`, `error-border`, `error-content` |
195
-
196
- ---
197
-
198
- ## Modos de Color (Light/Dark)
199
-
200
- ### Configuración de Tailwind CSS
201
-
202
- Siesa UI Kit utiliza la estrategia **class-based** de Tailwind CSS para dark mode:
203
-
204
- ```javascript
205
- // tailwind.config.js
206
- module.exports = {
207
- darkMode: 'class', // ✅ Estrategia basada en clases
208
- // ... resto de la configuración
209
- }
210
- ```
211
-
212
- Con `darkMode: 'class'`, el modificador `dark:` se activa cuando un elemento ancestro (típicamente `<html>`) tiene la clase `dark`:
213
-
214
- ### 🌞 Light Mode (Por Defecto)
215
-
216
- ```html
217
- <html>
218
- <!-- Sin clase 'dark' = Light Mode activo -->
219
- <body>
220
- <div class="bg-white text-content-primary">
221
- Contenido en light mode
222
- </div>
223
- </body>
224
- </html>
225
- ```
226
-
227
- ### 🌙 Dark Mode
228
-
229
- ```html
230
- <html class="dark">
231
- <!-- Con clase 'dark' = Dark Mode activo -->
232
- <body>
233
- <div class="bg-white dark:bg-dark-bg-primary text-content-primary dark:text-dark-content-primary">
234
- Contenido adaptado a dark mode
235
- </div>
236
- </body>
237
- </html>
238
- ```
239
-
240
- ### Modificador dark: en Tailwind
241
-
242
- El modificador `dark:` funciona como prefijo para cualquier utilidad de Tailwind:
243
-
244
- ```tsx
245
- // Sintaxis básica
246
- dark:{utility}
247
-
248
- // Ejemplos
249
- dark:bg-dark-bg-primary // Background en dark mode
250
- dark:text-white // Texto en dark mode
251
- dark:border-gray-700 // Borde en dark mode
252
- dark:hover:bg-blue-600 // Hover en dark mode
253
- ```
254
-
255
- ### Colores para Dark Mode
256
-
257
- | Token (Dark) | Valor Hex | Descripción |
258
- |--------------|-----------|-------------|
259
- | `dark-bg-primary` | `#000000` | Fondo principal oscuro |
260
- | `dark-content-primary` | `#ffffff` | Texto principal claro (blanco) |
261
- | `dark-border-primary` | `#71717a` | Bordes en dark mode |
262
- | `dark-border-custom` | `#0f6ae3` | Bordes de componentes interactivos |
263
- | `dark-bg-inverse` | `#bfe2fe` | Fondos inversos (botones) |
264
- | `dark-content-inverse` | `#0e79fd` | Texto inverso |
265
-
266
- ### Combinación con Otros Modificadores
267
-
268
- El modificador `dark:` se puede combinar con cualquier otro modificador de Tailwind:
269
-
270
- ```tsx
271
- // dark: + hover:
272
- <button className="
273
- bg-primary-custom-600
274
- hover:bg-primary-custom-500
275
- dark:bg-dark-bg-inverse
276
- dark:hover:bg-dark-bg-inverse/90
277
- ">
278
- Button con hover en ambos modos
279
- </button>
280
-
281
- // dark: + focus:
282
- <input className="
283
- border-border-primary
284
- focus:border-primary-custom-400
285
- dark:border-dark-border-primary
286
- dark:focus:border-dark-border-custom
287
- " />
288
-
289
- // dark: + responsive (orden correcto: responsive → dark → state)
290
- <div className="
291
- bg-white
292
- md:bg-gray-50
293
- dark:bg-dark-bg-primary
294
- dark:md:bg-gray-900
295
- ">
296
- Responsive + dark mode
297
- </div>
298
-
299
- // dark: + group-hover:
300
- <div className="group">
301
- <p className="
302
- text-content-secondary
303
- group-hover:text-content-primary
304
- dark:text-gray-400
305
- dark:group-hover:text-white
306
- ">
307
- Text con group hover
308
- </p>
309
- </div>
310
- ```
311
-
312
- ### Orden de Modificadores
313
-
314
- Cuando combines múltiples modificadores, sigue este orden:
315
-
316
- **Formato**: `{responsive}:{dark}:{state}:{utility}`
317
-
318
- ```tsx
319
- // ✅ CORRECTO - Orden consistente
320
- <button className="
321
- md:bg-blue-500
322
- md:dark:bg-blue-700
323
- md:dark:hover:bg-blue-800
324
- ">
325
-
326
- // ❌ INCORRECTO - Orden inconsistente
327
- <button className="
328
- dark:md:hover:bg-blue-800
329
- ">
330
- ```
331
-
332
- Ejemplos correctos:
333
- ```tsx
334
- sm:dark:hover:bg-blue-500 // responsive → dark → state
335
- lg:dark:focus:text-white // responsive → dark → state
336
- md:dark:group-hover:opacity-100 // responsive → dark → state
337
- ```
338
-
339
- ### Estados Hover con Dark Mode
340
-
341
- | Token | Light Mode | Dark Mode | Uso |
342
- |-------|------------|-----------|-----|
343
- | Hover Overlay | `rgba(0, 0, 0, 0.1)` | `rgba(255, 255, 255, 0.2)` | Botones ghost |
344
- | Hover Primary | `-primary-custom-500` | `dark-bg-inverse/90` | Botones primarios |
345
- | Hover Border | `-primary-custom-300` | `dark-border-custom` | Cards interactivas |
346
-
347
- ```tsx
348
- // Hover overlay para botones ghost
349
- <button className="
350
- bg-transparent
351
- hover:bg-hover-overlay
352
- dark:hover:bg-hover-overlay-dark
353
- ">
354
- Ghost Button
355
- </button>
356
-
357
- // Hover para botones primarios
358
- <button className="
359
- bg-primary-custom-600
360
- hover:bg-primary-custom-500
361
- dark:bg-dark-bg-inverse
362
- dark:hover:bg-dark-bg-inverse/90
363
- ">
364
- Primary Button
365
- </button>
366
-
367
- // Hover para cards interactivas
368
- <div className="
369
- border-border-primary
370
- hover:border-primary-custom-300
371
- dark:border-dark-border-primary
372
- dark:hover:border-dark-border-custom
373
- ">
374
- Interactive Card
375
- </div>
376
- ```
377
-
378
- ### Implementación con JavaScript
379
-
380
- Para alternar entre modos, agrega/quita la clase `dark` del elemento `<html>`:
381
-
382
- ```tsx
383
- // Toggle básico
384
- const toggleDarkMode = () => {
385
- document.documentElement.classList.toggle('dark');
386
- };
387
-
388
- // Con persistencia en localStorage
389
- const toggleDarkMode = () => {
390
- const isDark = document.documentElement.classList.contains('dark');
391
-
392
- if (isDark) {
393
- document.documentElement.classList.remove('dark');
394
- localStorage.setItem('theme', 'light');
395
- } else {
396
- document.documentElement.classList.add('dark');
397
- localStorage.setItem('theme', 'dark');
398
- }
399
- };
400
-
401
- // Aplicar tema guardado al cargar
402
- const savedTheme = localStorage.getItem('theme');
403
- if (savedTheme === 'dark') {
404
- document.documentElement.classList.add('dark');
405
- }
406
- ```
407
-
408
- **Ver**: `docs/dark-mode-guide.md` para implementación completa con React hooks y Context API.
409
-
410
- ### Ejemplo Completo de Componente
411
-
412
- ```tsx
413
- // Card que adapta todos sus colores a dark mode
414
- export const AdaptiveCard = () => {
415
- return (
416
- <div className="
417
- p-6
418
- bg-white dark:bg-dark-bg-primary
419
- border border-border-primary dark:border-dark-border-primary
420
- rounded-2xl
421
- shadow-base
422
- hover:shadow-lg
423
- transition-shadow
424
- ">
425
- {/* Header */}
426
- <div className="mb-4 flex items-center justify-between">
427
- <h3 className="
428
- text-content-primary dark:text-dark-content-primary
429
- font-bold
430
- text-lg
431
- ">
432
- Card Title
433
- </h3>
434
- <span className="
435
- text-content-secondary dark:text-content-secondary
436
- text-sm
437
- ">
438
- Just now
439
- </span>
440
- </div>
441
-
442
- {/* Content */}
443
- <p className="
444
- mb-4
445
- text-content-secondary dark:text-content-secondary
446
- ">
447
- Card content que se adapta automáticamente según el modo activo.
448
- Todos los colores usan el modificador dark: correctamente.
449
- </p>
450
-
451
- {/* Actions */}
452
- <div className="flex gap-3">
453
- <button className="
454
- px-4 py-2
455
- bg-primary-custom-600 dark:bg-dark-bg-inverse
456
- text-primary-inverse-content dark:text-dark-content-inverse
457
- hover:bg-primary-custom-500 dark:hover:bg-dark-bg-inverse/90
458
- rounded-md
459
- font-bold
460
- transition-colors
461
- ">
462
- Primary
463
- </button>
464
-
465
- <button className="
466
- px-4 py-2
467
- border border-border-primary dark:border-dark-border-custom
468
- text-content-primary dark:text-dark-content-primary
469
- hover:bg-background-secondary dark:hover:bg-dark-bg-primary
470
- rounded-md
471
- font-bold
472
- transition-colors
473
- ">
474
- Secondary
475
- </button>
476
- </div>
477
- </div>
478
- );
479
- };
480
- ```
481
-
482
- ---
483
-
484
- ## Guía de Uso en Componentes
485
-
486
- ### ✅ Buenas Prácticas
487
-
488
- #### 1. **Usar Tokens Semánticos, NO Primitivos**
489
-
490
- ```tsx
491
- // ✅ CORRECTO - Usa tokens semánticos
492
- <p className="text-content-primary">Texto principal</p>
493
-
494
- // ❌ INCORRECTO - Usa primitivos directamente
495
- <p className="text-primary-custom-600">Texto</p>
496
- ```
497
-
498
- **Razón**: Los tokens permiten cambiar el sistema de colores sin tocar componentes.
499
-
500
- ---
501
-
502
- #### 2. **Especificar Dark Mode Explícitamente**
503
-
504
- ```tsx
505
- // ✅ CORRECTO - Dark mode explícito
506
- <div className="bg-white dark:bg-dark-bg-primary">
507
- Contenido
508
- </div>
509
-
510
- // ⚠️ EVITAR - Confiar en defaults
511
- <div className="bg-white">
512
- Contenido
513
- </div>
514
- ```
515
-
516
- ---
517
-
518
- #### 3. **Agrupar Colores Relacionados**
519
-
520
- ```tsx
521
- // ✅ CORRECTO - Colores agrupados por propósito
522
- <button className="
523
- bg-primary-inverse-background
524
- text-primary-inverse-content
525
- border-primary-inverse-border
526
- ">
527
- Botón
528
- </button>
529
- ```
530
-
531
- ---
532
-
533
- #### 4. **Usar Hover Overlay para Interacciones Sutiles**
534
-
535
- ```tsx
536
- // ✅ CORRECTO - Hover overlay ligero
537
- <button className="
538
- bg-transparent
539
- hover:bg-hover-overlay
540
- dark:hover:bg-hover-overlay-dark
541
- ">
542
- Plain Button
543
- </button>
544
- ```
545
-
546
- ---
547
-
548
- ### ❌ Anti-Patrones a Evitar
549
-
550
- #### 1. **NO mezclar capas**
551
-
552
- ```tsx
553
- // ❌ INCORRECTO - Mezcla tokens y primitivos
554
- <div className="text-content-primary bg-primary-custom-600">
555
- Contenido
556
- </div>
557
- ```
558
-
559
- #### 2. **NO hardcodear valores hex**
560
-
561
- ```tsx
562
- // ❌ INCORRECTO - Valor hex hardcodeado
563
- <div style={{ backgroundColor: '#0e79fd' }}>
564
- Contenido
565
- </div>
566
- ```
567
-
568
- #### 3. **NO usar colores Tailwind nativos en componentes core**
569
-
570
- ```tsx
571
- // ❌ INCORRECTO - Tailwind nativo (inconsistente)
572
- <div className="bg-blue-500 text-white">
573
- Contenido
574
- </div>
575
-
576
- // ✅ CORRECTO - Tokens del sistema
577
- <div className="bg-primary-inverse-background text-primary-inverse-content">
578
- Contenido
579
- </div>
580
- ```
581
-
582
- ---
583
-
584
- ## Ejemplos de Código
585
-
586
- ### Ejemplo 1: Botón Primario
587
-
588
- ```tsx
589
- import React from 'react';
590
-
591
- export const PrimaryButton = ({ children, onClick }) => {
592
- return (
593
- <button
594
- onClick={onClick}
595
- className="
596
- bg-primary-inverse-background
597
- text-primary-inverse-content
598
- border border-primary-inverse-border
599
- hover:bg-primary-custom-500
600
- focus:ring-2 focus:ring-primary-custom-400 focus:ring-offset-2
601
- active:scale-95
602
- disabled:opacity-50 disabled:cursor-not-allowed
603
- px-4 py-2 rounded-md font-bold
604
- transition-all duration-150
605
- dark:bg-primary-inverse-background
606
- dark:text-primary-inverse-content
607
- dark:hover:bg-primary-custom-500
608
- "
609
- >
610
- {children}
611
- </button>
612
- );
613
- };
614
- ```
615
-
616
- ---
617
-
618
- ### Ejemplo 2: Card con Dark Mode
619
-
620
- ```tsx
621
- import React from 'react';
622
-
623
- export const Card = ({ title, description }) => {
624
- return (
625
- <div className="
626
- bg-white dark:bg-dark-bg-primary
627
- border border-border-primary dark:border-dark-border-primary
628
- rounded-lg p-6
629
- shadow-sm
630
- ">
631
- <h3 className="
632
- text-content-primary dark:text-dark-content-primary
633
- text-xl font-bold mb-2
634
- ">
635
- {title}
636
- </h3>
637
- <p className="
638
- text-content-secondary dark:text-dark-content-primary
639
- opacity-80
640
- ">
641
- {description}
642
- </p>
643
- </div>
644
- );
645
- };
646
- ```
647
-
648
- ---
649
-
650
- ### Ejemplo 3: Input con Validación
651
-
652
- ```tsx
653
- import React from 'react';
654
-
655
- export const Input = ({ label, error, ...props }) => {
656
- return (
657
- <div className="space-y-1">
658
- <label className="text-content-primary dark:text-dark-content-primary text-sm font-medium">
659
- {label}
660
- </label>
661
- <input
662
- {...props}
663
- className={`
664
- w-full px-3 py-2 rounded-md
665
- bg-white dark:bg-dark-bg-primary
666
- text-content-primary dark:text-dark-content-primary
667
- border-2
668
- ${error
669
- ? 'border-error-border bg-error-bg focus:ring-error-border'
670
- : 'border-border-primary dark:border-dark-border-primary focus:ring-primary-custom-400'
671
- }
672
- focus:outline-none focus:ring-2 focus:ring-offset-1
673
- disabled:opacity-50 disabled:cursor-not-allowed
674
- `}
675
- />
676
- {error && (
677
- <p className="text-error-content text-sm">
678
- {error}
679
- </p>
680
- )}
681
- </div>
682
- );
683
- };
684
- ```
685
-
686
- ---
687
-
688
- ## Mejores Prácticas
689
-
690
- ### 🎯 Principios de Uso
691
-
692
- 1. **Jerarquía de Texto**
693
- - `content-primary`: Títulos y contenido principal
694
- - `content-secondary`: Descripciones y labels
695
- - `content-tertiary`: Placeholders y texto deshabilitado
696
-
697
- 2. **Contraste y Accesibilidad**
698
- - Verificar ratios de contraste (WCAG AA mínimo: 4.5:1)
699
- - Usar herramientas como [WebAIM Contrast Checker](https://webaim.org/resources/contrastchecker/)
700
- - Contenido principal debe tener AAA (7:1)
701
-
702
- 3. **Estados Interactivos**
703
- - **Default**: Color base del token
704
- - **Hover**: Tono más claro/oscuro (+100 en escala)
705
- - **Active**: Tono más oscuro (-100 en escala)
706
- - **Focus**: Ring con `primary-custom-400`
707
- - **Disabled**: Reducir opacity a 50%
708
-
709
- 4. **Consistencia en Componentes**
710
- - Todos los botones primarios usan los mismos colores
711
- - Todos los inputs usan los mismos bordes
712
- - Todos los errores usan la misma paleta
713
-
714
- ---
715
-
716
- ### 🔧 Flujo de Trabajo Recomendado
717
-
718
- ```
719
- 1. Diseño en Figma
720
-
721
- 2. Identificar colores usados
722
-
723
- 3. Mapear a tokens existentes
724
-
725
- 4. Si no existe token → Crear nuevo en tailwind.config.js
726
-
727
- 5. Implementar en componente
728
-
729
- 6. Probar en Light y Dark mode
730
-
731
- 7. Verificar accesibilidad (contraste)
732
- ```
733
-
734
- ---
735
-
736
- ## Referencia Rápida
737
-
738
- ### Cheat Sheet: Colores por Caso de Uso
739
-
740
- | Caso de Uso | Light Mode | Dark Mode |
741
- |-------------|------------|-----------|
742
- | **Fondo principal** | `bg-white` | `dark:bg-dark-bg-primary` |
743
- | **Fondo secundario** | `background-secondary` | `dark:bg-dark-bg-primary` |
744
- | **Texto principal** | `text-content-primary` | `dark:text-dark-content-primary` |
745
- | **Texto secundario** | `text-content-secondary` | `dark:text-dark-content-primary opacity-80` |
746
- | **Bordes normales** | `border-border-primary` | `dark:border-dark-border-primary` |
747
- | **Botón primario BG** | `bg-primary-inverse-background` | `dark:bg-primary-inverse-background` |
748
- | **Botón primario texto** | `text-primary-inverse-content` | `dark:text-primary-inverse-content` |
749
- | **Focus ring** | `focus:ring-primary-custom-400` | `focus:ring-primary-custom-400` |
750
- | **Error BG** | `bg-error-bg` | `bg-error-bg` |
751
- | **Error texto** | `text-error-content` | `text-error-content` |
752
- | **Hover overlay** | `hover:bg-hover-overlay` | `dark:hover:bg-hover-overlay-dark` |
753
-
754
- ---
755
-
756
- ### Configuración en `tailwind.config.js`
757
-
758
- ```javascript
759
- // Archivo: tailwind.config.js
760
- module.exports = {
761
- darkMode: 'class',
762
- theme: {
763
- extend: {
764
- colors: {
765
- // Primary Custom Colors
766
- 'primary-custom': {
767
- 100: '#dbeefe',
768
- 300: '#93d1fd',
769
- 400: '#60b6fa',
770
- 500: '#3c9bf6',
771
- 600: '#0e79fd',
772
- 700: '#0c6ade',
773
- },
774
-
775
- // Primary Inverse
776
- 'primary-inverse-content': '#eff8ff',
777
- 'primary-inverse-background': '#0e79fd',
778
- 'primary-inverse-border': '#3c9bf6',
779
-
780
- // System Colors (Light)
781
- 'content-primary': '#18181b',
782
- 'content-secondary': '#a1a1aa',
783
- 'content-tertiary': '#71717a',
784
- 'bg-primary': '#ffffff',
785
- 'background-secondary': '#f4f4f5',
786
- 'border-primary': '#e4e4e7',
787
- 'border-secondary': '#f4f4f5',
788
-
789
- // Error Colors
790
- 'error-border': '#ef4444',
791
- 'error-content': '#dc2626',
792
- 'error-bg': '#fef2f2',
793
-
794
- // Dark Mode Colors
795
- 'dark-bg-primary': '#18181b', // zinc-900 - gris muy oscuro
796
- 'dark-content-primary': '#ffffff',
797
- 'dark-border-primary': '#71717a',
798
- 'dark-border-custom': '#0f6ae3',
799
- 'dark-bg-inverse': '#bfe2fe',
800
- 'dark-content-inverse': '#0e79fd',
801
- },
802
-
803
- backgroundColor: {
804
- 'hover-overlay': 'rgba(0, 0, 0, 0.1)',
805
- 'hover-overlay-dark': 'rgba(255, 255, 255, 0.2)',
806
- },
807
- },
808
- },
809
- };
810
- ```
811
-
812
- ---
813
-
814
- ## 📚 Referencias
815
-
816
- - **Figma**: [Color Primitives](https://www.figma.com/design/5XNqf2YTxvwemxwo1LMQ6j/Siesa-UI-Kit?node-id=16-4560&m=dev)
817
- - **Figma**: [Color Tokens](https://www.figma.com/design/5XNqf2YTxvwemxwo1LMQ6j/Siesa-UI-Kit?node-id=4001-1314&m=dev)
818
- - **Código**: `tailwind.config.js` (líneas 15-73)
819
- - **WCAG**: [Web Content Accessibility Guidelines](https://www.w3.org/WAI/WCAG21/quickref/)
820
-
821
- ---
822
-
823
- ## 🔄 Historial de Cambios
824
-
825
- | Versión | Fecha | Cambios |
826
- |---------|-------|---------|
827
- | 1.0.0 | 2025-11-11 | Documentación inicial del sistema de colores |
828
-
829
- ---
830
-
831
- **Última actualización**: 2025-11-11
832
- **Mantenido por**: Equipo de Siesa UI Kit
1
+ # 🎨 Sistema de Colores - Siesa UI Kit
2
+
3
+ ## 📋 Tabla de Contenidos
4
+
5
+ 1. [Introducción](#introducción)
6
+ 2. [Arquitectura de Colores](#arquitectura-de-colores)
7
+ 3. [Colores Primitivos](#colores-primitivos)
8
+ 4. [Tokens Semánticos](#tokens-semánticos)
9
+ 5. [Modos de Color (Light/Dark)](#modos-de-color-lightdark)
10
+ 6. [Guía de Uso en Componentes](#guía-de-uso-en-componentes)
11
+ 7. [Ejemplos de Código](#ejemplos-de-código)
12
+ 8. [Mejores Prácticas](#mejores-prácticas)
13
+ 9. [Referencia Rápida](#referencia-rápida)
14
+
15
+ ---
16
+
17
+ ## Introducción
18
+
19
+ Este documento describe el sistema de colores del **Siesa UI Kit**, diseñado para garantizar consistencia visual, accesibilidad y mantenibilidad en todos los componentes de la interfaz.
20
+
21
+ ### 🎯 Objetivos del Sistema
22
+
23
+ - **Consistencia**: Colores unificados en toda la aplicación
24
+ - **Accesibilidad**: Ratios de contraste WCAG AA/AAA
25
+ - **Mantenibilidad**: Tokens semánticos fáciles de actualizar
26
+ - **Escalabilidad**: Sistema extensible para nuevos componentes
27
+ - **Dark Mode**: Soporte completo para modo oscuro
28
+
29
+ ---
30
+
31
+ ## Arquitectura de Colores
32
+
33
+ El sistema de colores está estructurado en 3 capas:
34
+
35
+ ```
36
+ ┌─────────────────────────────────────┐
37
+ │ CAPA 3: Componentes │
38
+ │ (Button, Alert, Badge, etc.) │
39
+ └─────────────────────────────────────┘
40
+
41
+ │ usa tokens
42
+
43
+ ┌─────────────────────────────────────┐
44
+ │ CAPA 2: Tokens Semánticos │
45
+ │ (content-primary, bg-primary, etc) │
46
+ └─────────────────────────────────────┘
47
+
48
+ │ mapea a
49
+
50
+ ┌─────────────────────────────────────┐
51
+ │ CAPA 1: Colores Primitivos │
52
+ │ (primary-custom-600, gray-100, etc)│
53
+ └─────────────────────────────────────┘
54
+ ```
55
+
56
+ ### Principios de Diseño
57
+
58
+ 1. **Primitivos = Valores Hex**: Colores base inmutables
59
+ 2. **Tokens = Intención de Uso**: Nombres semánticos que describen propósito
60
+ 3. **Componentes = Aplicación**: Uso consistente de tokens
61
+
62
+ ---
63
+
64
+ ## Colores Primitivos
65
+
66
+ Los colores primitivos son la base del sistema. Están organizados en escalas de 100-700 (actualmente) con planes de expandir a 50-950.
67
+
68
+ ### 📘 Primary Custom (Azul Principal)
69
+
70
+ Color primario de marca Siesa. Usado en botones, enlaces y elementos interactivos principales.
71
+
72
+ | Escala | Valor Hex | CSS Class | Uso Principal |
73
+ |--------|-----------|-----------|---------------|
74
+ | **100** | `#dbeefe` | `primary-custom-100` | Hover backgrounds (outline buttons) |
75
+ | **300** | `#93d1fd` | `primary-custom-300` | Bordes (outline buttons, inputs) |
76
+ | **400** | `#60b6fa` | `primary-custom-400` | Focus rings |
77
+ | **500** | `#3c9bf6` | `primary-custom-500` | Hover state (default buttons) |
78
+ | **600** | `#0e79fd` | `primary-custom-600` | **Color principal** (contenido, íconos) |
79
+ | **700** | `#0c6ade` | `primary-custom-700` | Active/Pressed states |
80
+
81
+ **Ejemplo de Aplicación**:
82
+ ```tsx
83
+ // Botón primario
84
+ <button className="bg-primary-custom-600 hover:bg-primary-custom-500 focus:ring-primary-custom-400">
85
+ Click me
86
+ </button>
87
+ ```
88
+
89
+ ---
90
+
91
+ ### 🎨 Colores Inverse (Para fondos oscuros)
92
+
93
+ Colores optimizados para usar sobre fondos de color primario.
94
+
95
+ | Token | Valor Hex | Uso |
96
+ |-------|-----------|-----|
97
+ | `primary-inverse-content` | `#eff8ff` | Texto sobre fondo primario |
98
+ | `primary-inverse-background` | `#0e79fd` | Fondo de botones primarios |
99
+ | `primary-inverse-border` | `#3c9bf6` | Bordes sobre fondo primario |
100
+
101
+ **Ejemplo de Aplicación**:
102
+ ```tsx
103
+ // Botón con fondo primario y texto claro
104
+ <button className="bg-primary-inverse-background text-primary-inverse-content border-primary-inverse-border">
105
+ Botón Primario
106
+ </button>
107
+ ```
108
+
109
+ ---
110
+
111
+ ### 🌈 Colores del Sistema (Light Mode)
112
+
113
+ Paleta neutral para textos, fondos y bordes en modo claro.
114
+
115
+ #### Contenido (Texto)
116
+
117
+ | Token | Valor Hex | Uso | Contraste |
118
+ |-------|-----------|-----|-----------|
119
+ | `content-primary` | `#18181b` | Texto principal | AAA (18:1) |
120
+ | `content-secondary` | `#a1a1aa` | Descripciones, labels | AA (4.5:1) |
121
+ | `content-tertiary` | `#71717a` | Placeholders, disabled text | AA (4.5:1) |
122
+
123
+ #### Fondos
124
+
125
+ | Token | Valor Hex | Uso |
126
+ |-------|-----------|-----|
127
+ | `bg-primary` | `#ffffff` | Fondo principal de la app |
128
+ | `background-secondary` | `#f4f4f5` | Cards, fondos disabled |
129
+
130
+ #### Bordes
131
+
132
+ | Token | Valor Hex | Uso |
133
+ |-------|-----------|-----|
134
+ | `border-primary` | `#e4e4e7` | Bordes normales (inputs, cards) |
135
+ | `border-secondary` | `#f4f4f5` | Dividers, bordes suaves |
136
+
137
+ **Ejemplo de Aplicación**:
138
+ ```tsx
139
+ // Card con sistema de colores semánticos
140
+ <div className="bg-bg-primary border border-border-primary">
141
+ <h3 className="text-content-primary">Título Principal</h3>
142
+ <p className="text-content-secondary">Descripción secundaria</p>
143
+ </div>
144
+ ```
145
+
146
+ ---
147
+
148
+ ### 🔴 Colores de Error
149
+
150
+ Paleta para estados de error y validación.
151
+
152
+ | Token | Valor Hex | Base Color | Uso |
153
+ |-------|-----------|------------|-----|
154
+ | `error-bg` | `#fef2f2` | Red 50 | Fondo de alertas de error |
155
+ | `error-border` | `#ef4444` | Red 500 | Bordes de inputs con error |
156
+ | `error-content` | `#dc2626` | Red 600 | Texto de mensajes de error |
157
+
158
+ **Ejemplo de Aplicación**:
159
+ ```tsx
160
+ // Input con error
161
+ <div className="border-2 border-error-border bg-error-bg">
162
+ <input type="text" />
163
+ <span className="text-error-content">Email inválido</span>
164
+ </div>
165
+ ```
166
+
167
+ > **⚠️ PENDIENTE**: Agregar colores para Success, Warning, Info con la misma estructura.
168
+
169
+ ---
170
+
171
+ ## Tokens Semánticos
172
+
173
+ Los tokens semánticos describen **dónde y cómo** usar los colores, no **qué color** son.
174
+
175
+ ### 📊 Estructura de Tokens
176
+
177
+ ```
178
+ {categoria}-{proposito}-{variante}
179
+
180
+ Ejemplos:
181
+ - content-primary (Categoría: content, Propósito: primary)
182
+ - bg-secondary (Categoría: bg, Propósito: secondary)
183
+ - border-custom (Categoría: border, Propósito: custom)
184
+ ```
185
+
186
+ ### Categorías de Tokens
187
+
188
+ | Categoría | Prefijo | Uso | Ejemplos |
189
+ |-----------|---------|-----|----------|
190
+ | **Content** | `content-` | Texto, íconos | `content-primary`, `content-secondary` |
191
+ | **Background** | `bg-`, `background-` | Fondos | `bg-primary`, `background-secondary` |
192
+ | **Border** | `border-` | Bordes, divisores | `border-primary`, `border-secondary` |
193
+ | **Primary Custom** | `primary-custom-` | Color de marca | `primary-custom-600`, `primary-custom-300` |
194
+ | **Error** | `error-` | Estados de error | `error-bg`, `error-border`, `error-content` |
195
+
196
+ ---
197
+
198
+ ## Modos de Color (Light/Dark)
199
+
200
+ ### Configuración de Tailwind CSS
201
+
202
+ Siesa UI Kit utiliza la estrategia **class-based** de Tailwind CSS para dark mode:
203
+
204
+ ```javascript
205
+ // tailwind.config.js
206
+ module.exports = {
207
+ darkMode: 'class', // ✅ Estrategia basada en clases
208
+ // ... resto de la configuración
209
+ }
210
+ ```
211
+
212
+ Con `darkMode: 'class'`, el modificador `dark:` se activa cuando un elemento ancestro (típicamente `<html>`) tiene la clase `dark`:
213
+
214
+ ### 🌞 Light Mode (Por Defecto)
215
+
216
+ ```html
217
+ <html>
218
+ <!-- Sin clase 'dark' = Light Mode activo -->
219
+ <body>
220
+ <div class="bg-white text-content-primary">
221
+ Contenido en light mode
222
+ </div>
223
+ </body>
224
+ </html>
225
+ ```
226
+
227
+ ### 🌙 Dark Mode
228
+
229
+ ```html
230
+ <html class="dark">
231
+ <!-- Con clase 'dark' = Dark Mode activo -->
232
+ <body>
233
+ <div class="bg-white dark:bg-dark-bg-primary text-content-primary dark:text-dark-content-primary">
234
+ Contenido adaptado a dark mode
235
+ </div>
236
+ </body>
237
+ </html>
238
+ ```
239
+
240
+ ### Modificador dark: en Tailwind
241
+
242
+ El modificador `dark:` funciona como prefijo para cualquier utilidad de Tailwind:
243
+
244
+ ```tsx
245
+ // Sintaxis básica
246
+ dark:{utility}
247
+
248
+ // Ejemplos
249
+ dark:bg-dark-bg-primary // Background en dark mode
250
+ dark:text-white // Texto en dark mode
251
+ dark:border-gray-700 // Borde en dark mode
252
+ dark:hover:bg-blue-600 // Hover en dark mode
253
+ ```
254
+
255
+ ### Colores para Dark Mode
256
+
257
+ | Token (Dark) | Valor Hex | Descripción |
258
+ |--------------|-----------|-------------|
259
+ | `dark-bg-primary` | `#000000` | Fondo principal oscuro |
260
+ | `dark-content-primary` | `#ffffff` | Texto principal claro (blanco) |
261
+ | `dark-border-primary` | `#71717a` | Bordes en dark mode |
262
+ | `dark-border-custom` | `#0f6ae3` | Bordes de componentes interactivos |
263
+ | `dark-bg-inverse` | `#bfe2fe` | Fondos inversos (botones) |
264
+ | `dark-content-inverse` | `#0e79fd` | Texto inverso |
265
+
266
+ ### Combinación con Otros Modificadores
267
+
268
+ El modificador `dark:` se puede combinar con cualquier otro modificador de Tailwind:
269
+
270
+ ```tsx
271
+ // dark: + hover:
272
+ <button className="
273
+ bg-primary-custom-600
274
+ hover:bg-primary-custom-500
275
+ dark:bg-dark-bg-inverse
276
+ dark:hover:bg-dark-bg-inverse/90
277
+ ">
278
+ Button con hover en ambos modos
279
+ </button>
280
+
281
+ // dark: + focus:
282
+ <input className="
283
+ border-border-primary
284
+ focus:border-primary-custom-400
285
+ dark:border-dark-border-primary
286
+ dark:focus:border-dark-border-custom
287
+ " />
288
+
289
+ // dark: + responsive (orden correcto: responsive → dark → state)
290
+ <div className="
291
+ bg-white
292
+ md:bg-gray-50
293
+ dark:bg-dark-bg-primary
294
+ dark:md:bg-gray-900
295
+ ">
296
+ Responsive + dark mode
297
+ </div>
298
+
299
+ // dark: + group-hover:
300
+ <div className="group">
301
+ <p className="
302
+ text-content-secondary
303
+ group-hover:text-content-primary
304
+ dark:text-gray-400
305
+ dark:group-hover:text-white
306
+ ">
307
+ Text con group hover
308
+ </p>
309
+ </div>
310
+ ```
311
+
312
+ ### Orden de Modificadores
313
+
314
+ Cuando combines múltiples modificadores, sigue este orden:
315
+
316
+ **Formato**: `{responsive}:{dark}:{state}:{utility}`
317
+
318
+ ```tsx
319
+ // ✅ CORRECTO - Orden consistente
320
+ <button className="
321
+ md:bg-blue-500
322
+ md:dark:bg-blue-700
323
+ md:dark:hover:bg-blue-800
324
+ ">
325
+
326
+ // ❌ INCORRECTO - Orden inconsistente
327
+ <button className="
328
+ dark:md:hover:bg-blue-800
329
+ ">
330
+ ```
331
+
332
+ Ejemplos correctos:
333
+ ```tsx
334
+ sm:dark:hover:bg-blue-500 // responsive → dark → state
335
+ lg:dark:focus:text-white // responsive → dark → state
336
+ md:dark:group-hover:opacity-100 // responsive → dark → state
337
+ ```
338
+
339
+ ### Estados Hover con Dark Mode
340
+
341
+ | Token | Light Mode | Dark Mode | Uso |
342
+ |-------|------------|-----------|-----|
343
+ | Hover Overlay | `rgba(0, 0, 0, 0.1)` | `rgba(255, 255, 255, 0.2)` | Botones ghost |
344
+ | Hover Primary | `-primary-custom-500` | `dark-bg-inverse/90` | Botones primarios |
345
+ | Hover Border | `-primary-custom-300` | `dark-border-custom` | Cards interactivas |
346
+
347
+ ```tsx
348
+ // Hover overlay para botones ghost
349
+ <button className="
350
+ bg-transparent
351
+ hover:bg-hover-overlay
352
+ dark:hover:bg-hover-overlay-dark
353
+ ">
354
+ Ghost Button
355
+ </button>
356
+
357
+ // Hover para botones primarios
358
+ <button className="
359
+ bg-primary-custom-600
360
+ hover:bg-primary-custom-500
361
+ dark:bg-dark-bg-inverse
362
+ dark:hover:bg-dark-bg-inverse/90
363
+ ">
364
+ Primary Button
365
+ </button>
366
+
367
+ // Hover para cards interactivas
368
+ <div className="
369
+ border-border-primary
370
+ hover:border-primary-custom-300
371
+ dark:border-dark-border-primary
372
+ dark:hover:border-dark-border-custom
373
+ ">
374
+ Interactive Card
375
+ </div>
376
+ ```
377
+
378
+ ### Implementación con JavaScript
379
+
380
+ Para alternar entre modos, agrega/quita la clase `dark` del elemento `<html>`:
381
+
382
+ ```tsx
383
+ // Toggle básico
384
+ const toggleDarkMode = () => {
385
+ document.documentElement.classList.toggle('dark');
386
+ };
387
+
388
+ // Con persistencia en localStorage
389
+ const toggleDarkMode = () => {
390
+ const isDark = document.documentElement.classList.contains('dark');
391
+
392
+ if (isDark) {
393
+ document.documentElement.classList.remove('dark');
394
+ localStorage.setItem('theme', 'light');
395
+ } else {
396
+ document.documentElement.classList.add('dark');
397
+ localStorage.setItem('theme', 'dark');
398
+ }
399
+ };
400
+
401
+ // Aplicar tema guardado al cargar
402
+ const savedTheme = localStorage.getItem('theme');
403
+ if (savedTheme === 'dark') {
404
+ document.documentElement.classList.add('dark');
405
+ }
406
+ ```
407
+
408
+ **Ver**: `docs/dark-mode-guide.md` para implementación completa con React hooks y Context API.
409
+
410
+ ### Ejemplo Completo de Componente
411
+
412
+ ```tsx
413
+ // Card que adapta todos sus colores a dark mode
414
+ export const AdaptiveCard = () => {
415
+ return (
416
+ <div className="
417
+ p-6
418
+ bg-white dark:bg-dark-bg-primary
419
+ border border-border-primary dark:border-dark-border-primary
420
+ rounded-2xl
421
+ shadow-base
422
+ hover:shadow-lg
423
+ transition-shadow
424
+ ">
425
+ {/* Header */}
426
+ <div className="mb-4 flex items-center justify-between">
427
+ <h3 className="
428
+ text-content-primary dark:text-dark-content-primary
429
+ font-bold
430
+ text-lg
431
+ ">
432
+ Card Title
433
+ </h3>
434
+ <span className="
435
+ text-content-secondary dark:text-content-secondary
436
+ text-sm
437
+ ">
438
+ Just now
439
+ </span>
440
+ </div>
441
+
442
+ {/* Content */}
443
+ <p className="
444
+ mb-4
445
+ text-content-secondary dark:text-content-secondary
446
+ ">
447
+ Card content que se adapta automáticamente según el modo activo.
448
+ Todos los colores usan el modificador dark: correctamente.
449
+ </p>
450
+
451
+ {/* Actions */}
452
+ <div className="flex gap-3">
453
+ <button className="
454
+ px-4 py-2
455
+ bg-primary-custom-600 dark:bg-dark-bg-inverse
456
+ text-primary-inverse-content dark:text-dark-content-inverse
457
+ hover:bg-primary-custom-500 dark:hover:bg-dark-bg-inverse/90
458
+ rounded-md
459
+ font-bold
460
+ transition-colors
461
+ ">
462
+ Primary
463
+ </button>
464
+
465
+ <button className="
466
+ px-4 py-2
467
+ border border-border-primary dark:border-dark-border-custom
468
+ text-content-primary dark:text-dark-content-primary
469
+ hover:bg-background-secondary dark:hover:bg-dark-bg-primary
470
+ rounded-md
471
+ font-bold
472
+ transition-colors
473
+ ">
474
+ Secondary
475
+ </button>
476
+ </div>
477
+ </div>
478
+ );
479
+ };
480
+ ```
481
+
482
+ ---
483
+
484
+ ## Guía de Uso en Componentes
485
+
486
+ ### ✅ Buenas Prácticas
487
+
488
+ #### 1. **Usar Tokens Semánticos, NO Primitivos**
489
+
490
+ ```tsx
491
+ // ✅ CORRECTO - Usa tokens semánticos
492
+ <p className="text-content-primary">Texto principal</p>
493
+
494
+ // ❌ INCORRECTO - Usa primitivos directamente
495
+ <p className="text-primary-custom-600">Texto</p>
496
+ ```
497
+
498
+ **Razón**: Los tokens permiten cambiar el sistema de colores sin tocar componentes.
499
+
500
+ ---
501
+
502
+ #### 2. **Especificar Dark Mode Explícitamente**
503
+
504
+ ```tsx
505
+ // ✅ CORRECTO - Dark mode explícito
506
+ <div className="bg-white dark:bg-dark-bg-primary">
507
+ Contenido
508
+ </div>
509
+
510
+ // ⚠️ EVITAR - Confiar en defaults
511
+ <div className="bg-white">
512
+ Contenido
513
+ </div>
514
+ ```
515
+
516
+ ---
517
+
518
+ #### 3. **Agrupar Colores Relacionados**
519
+
520
+ ```tsx
521
+ // ✅ CORRECTO - Colores agrupados por propósito
522
+ <button className="
523
+ bg-primary-inverse-background
524
+ text-primary-inverse-content
525
+ border-primary-inverse-border
526
+ ">
527
+ Botón
528
+ </button>
529
+ ```
530
+
531
+ ---
532
+
533
+ #### 4. **Usar Hover Overlay para Interacciones Sutiles**
534
+
535
+ ```tsx
536
+ // ✅ CORRECTO - Hover overlay ligero
537
+ <button className="
538
+ bg-transparent
539
+ hover:bg-hover-overlay
540
+ dark:hover:bg-hover-overlay-dark
541
+ ">
542
+ Plain Button
543
+ </button>
544
+ ```
545
+
546
+ ---
547
+
548
+ ### ❌ Anti-Patrones a Evitar
549
+
550
+ #### 1. **NO mezclar capas**
551
+
552
+ ```tsx
553
+ // ❌ INCORRECTO - Mezcla tokens y primitivos
554
+ <div className="text-content-primary bg-primary-custom-600">
555
+ Contenido
556
+ </div>
557
+ ```
558
+
559
+ #### 2. **NO hardcodear valores hex**
560
+
561
+ ```tsx
562
+ // ❌ INCORRECTO - Valor hex hardcodeado
563
+ <div style={{ backgroundColor: '#0e79fd' }}>
564
+ Contenido
565
+ </div>
566
+ ```
567
+
568
+ #### 3. **NO usar colores Tailwind nativos en componentes core**
569
+
570
+ ```tsx
571
+ // ❌ INCORRECTO - Tailwind nativo (inconsistente)
572
+ <div className="bg-blue-500 text-white">
573
+ Contenido
574
+ </div>
575
+
576
+ // ✅ CORRECTO - Tokens del sistema
577
+ <div className="bg-primary-inverse-background text-primary-inverse-content">
578
+ Contenido
579
+ </div>
580
+ ```
581
+
582
+ ---
583
+
584
+ ## Ejemplos de Código
585
+
586
+ ### Ejemplo 1: Botón Primario
587
+
588
+ ```tsx
589
+ import React from 'react';
590
+
591
+ export const PrimaryButton = ({ children, onClick }) => {
592
+ return (
593
+ <button
594
+ onClick={onClick}
595
+ className="
596
+ bg-primary-inverse-background
597
+ text-primary-inverse-content
598
+ border border-primary-inverse-border
599
+ hover:bg-primary-custom-500
600
+ focus:ring-2 focus:ring-primary-custom-400 focus:ring-offset-2
601
+ active:scale-95
602
+ disabled:opacity-50 disabled:cursor-not-allowed
603
+ px-4 py-2 rounded-md font-bold
604
+ transition-all duration-150
605
+ dark:bg-primary-inverse-background
606
+ dark:text-primary-inverse-content
607
+ dark:hover:bg-primary-custom-500
608
+ "
609
+ >
610
+ {children}
611
+ </button>
612
+ );
613
+ };
614
+ ```
615
+
616
+ ---
617
+
618
+ ### Ejemplo 2: Card con Dark Mode
619
+
620
+ ```tsx
621
+ import React from 'react';
622
+
623
+ export const Card = ({ title, description }) => {
624
+ return (
625
+ <div className="
626
+ bg-white dark:bg-dark-bg-primary
627
+ border border-border-primary dark:border-dark-border-primary
628
+ rounded-lg p-6
629
+ shadow-sm
630
+ ">
631
+ <h3 className="
632
+ text-content-primary dark:text-dark-content-primary
633
+ text-xl font-bold mb-2
634
+ ">
635
+ {title}
636
+ </h3>
637
+ <p className="
638
+ text-content-secondary dark:text-dark-content-primary
639
+ opacity-80
640
+ ">
641
+ {description}
642
+ </p>
643
+ </div>
644
+ );
645
+ };
646
+ ```
647
+
648
+ ---
649
+
650
+ ### Ejemplo 3: Input con Validación
651
+
652
+ ```tsx
653
+ import React from 'react';
654
+
655
+ export const Input = ({ label, error, ...props }) => {
656
+ return (
657
+ <div className="space-y-1">
658
+ <label className="text-content-primary dark:text-dark-content-primary text-sm font-medium">
659
+ {label}
660
+ </label>
661
+ <input
662
+ {...props}
663
+ className={`
664
+ w-full px-3 py-2 rounded-md
665
+ bg-white dark:bg-dark-bg-primary
666
+ text-content-primary dark:text-dark-content-primary
667
+ border-2
668
+ ${error
669
+ ? 'border-error-border bg-error-bg focus:ring-error-border'
670
+ : 'border-border-primary dark:border-dark-border-primary focus:ring-primary-custom-400'
671
+ }
672
+ focus:outline-none focus:ring-2 focus:ring-offset-1
673
+ disabled:opacity-50 disabled:cursor-not-allowed
674
+ `}
675
+ />
676
+ {error && (
677
+ <p className="text-error-content text-sm">
678
+ {error}
679
+ </p>
680
+ )}
681
+ </div>
682
+ );
683
+ };
684
+ ```
685
+
686
+ ---
687
+
688
+ ## Mejores Prácticas
689
+
690
+ ### 🎯 Principios de Uso
691
+
692
+ 1. **Jerarquía de Texto**
693
+ - `content-primary`: Títulos y contenido principal
694
+ - `content-secondary`: Descripciones y labels
695
+ - `content-tertiary`: Placeholders y texto deshabilitado
696
+
697
+ 2. **Contraste y Accesibilidad**
698
+ - Verificar ratios de contraste (WCAG AA mínimo: 4.5:1)
699
+ - Usar herramientas como [WebAIM Contrast Checker](https://webaim.org/resources/contrastchecker/)
700
+ - Contenido principal debe tener AAA (7:1)
701
+
702
+ 3. **Estados Interactivos**
703
+ - **Default**: Color base del token
704
+ - **Hover**: Tono más claro/oscuro (+100 en escala)
705
+ - **Active**: Tono más oscuro (-100 en escala)
706
+ - **Focus**: Ring con `primary-custom-400`
707
+ - **Disabled**: Reducir opacity a 50%
708
+
709
+ 4. **Consistencia en Componentes**
710
+ - Todos los botones primarios usan los mismos colores
711
+ - Todos los inputs usan los mismos bordes
712
+ - Todos los errores usan la misma paleta
713
+
714
+ ---
715
+
716
+ ### 🔧 Flujo de Trabajo Recomendado
717
+
718
+ ```
719
+ 1. Diseño en Figma
720
+
721
+ 2. Identificar colores usados
722
+
723
+ 3. Mapear a tokens existentes
724
+
725
+ 4. Si no existe token → Crear nuevo en tailwind.config.js
726
+
727
+ 5. Implementar en componente
728
+
729
+ 6. Probar en Light y Dark mode
730
+
731
+ 7. Verificar accesibilidad (contraste)
732
+ ```
733
+
734
+ ---
735
+
736
+ ## Referencia Rápida
737
+
738
+ ### Cheat Sheet: Colores por Caso de Uso
739
+
740
+ | Caso de Uso | Light Mode | Dark Mode |
741
+ |-------------|------------|-----------|
742
+ | **Fondo principal** | `bg-white` | `dark:bg-dark-bg-primary` |
743
+ | **Fondo secundario** | `background-secondary` | `dark:bg-dark-bg-primary` |
744
+ | **Texto principal** | `text-content-primary` | `dark:text-dark-content-primary` |
745
+ | **Texto secundario** | `text-content-secondary` | `dark:text-dark-content-primary opacity-80` |
746
+ | **Bordes normales** | `border-border-primary` | `dark:border-dark-border-primary` |
747
+ | **Botón primario BG** | `bg-primary-inverse-background` | `dark:bg-primary-inverse-background` |
748
+ | **Botón primario texto** | `text-primary-inverse-content` | `dark:text-primary-inverse-content` |
749
+ | **Focus ring** | `focus:ring-primary-custom-400` | `focus:ring-primary-custom-400` |
750
+ | **Error BG** | `bg-error-bg` | `bg-error-bg` |
751
+ | **Error texto** | `text-error-content` | `text-error-content` |
752
+ | **Hover overlay** | `hover:bg-hover-overlay` | `dark:hover:bg-hover-overlay-dark` |
753
+
754
+ ---
755
+
756
+ ### Configuración en `tailwind.config.js`
757
+
758
+ ```javascript
759
+ // Archivo: tailwind.config.js
760
+ module.exports = {
761
+ darkMode: 'class',
762
+ theme: {
763
+ extend: {
764
+ colors: {
765
+ // Primary Custom Colors
766
+ 'primary-custom': {
767
+ 100: '#dbeefe',
768
+ 300: '#93d1fd',
769
+ 400: '#60b6fa',
770
+ 500: '#3c9bf6',
771
+ 600: '#0e79fd',
772
+ 700: '#0c6ade',
773
+ },
774
+
775
+ // Primary Inverse
776
+ 'primary-inverse-content': '#eff8ff',
777
+ 'primary-inverse-background': '#0e79fd',
778
+ 'primary-inverse-border': '#3c9bf6',
779
+
780
+ // System Colors (Light)
781
+ 'content-primary': '#18181b',
782
+ 'content-secondary': '#a1a1aa',
783
+ 'content-tertiary': '#71717a',
784
+ 'bg-primary': '#ffffff',
785
+ 'background-secondary': '#f4f4f5',
786
+ 'border-primary': '#e4e4e7',
787
+ 'border-secondary': '#f4f4f5',
788
+
789
+ // Error Colors
790
+ 'error-border': '#ef4444',
791
+ 'error-content': '#dc2626',
792
+ 'error-bg': '#fef2f2',
793
+
794
+ // Dark Mode Colors
795
+ 'dark-bg-primary': '#18181b', // zinc-900 - gris muy oscuro
796
+ 'dark-content-primary': '#ffffff',
797
+ 'dark-border-primary': '#71717a',
798
+ 'dark-border-custom': '#0f6ae3',
799
+ 'dark-bg-inverse': '#bfe2fe',
800
+ 'dark-content-inverse': '#0e79fd',
801
+ },
802
+
803
+ backgroundColor: {
804
+ 'hover-overlay': 'rgba(0, 0, 0, 0.1)',
805
+ 'hover-overlay-dark': 'rgba(255, 255, 255, 0.2)',
806
+ },
807
+ },
808
+ },
809
+ };
810
+ ```
811
+
812
+ ---
813
+
814
+ ## 📚 Referencias
815
+
816
+ - **Figma**: [Color Primitives](https://www.figma.com/design/5XNqf2YTxvwemxwo1LMQ6j/Siesa-UI-Kit?node-id=16-4560&m=dev)
817
+ - **Figma**: [Color Tokens](https://www.figma.com/design/5XNqf2YTxvwemxwo1LMQ6j/Siesa-UI-Kit?node-id=4001-1314&m=dev)
818
+ - **Código**: `tailwind.config.js` (líneas 15-73)
819
+ - **WCAG**: [Web Content Accessibility Guidelines](https://www.w3.org/WAI/WCAG21/quickref/)
820
+
821
+ ---
822
+
823
+ ## 🔄 Historial de Cambios
824
+
825
+ | Versión | Fecha | Cambios |
826
+ |---------|-------|---------|
827
+ | 1.0.0 | 2025-11-11 | Documentación inicial del sistema de colores |
828
+
829
+ ---
830
+
831
+ **Última actualización**: 2025-11-11
832
+ **Mantenido por**: Equipo de Siesa UI Kit