siesa-ui-kit 1.0.4 → 1.0.6

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 (554) 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/dist/index.cjs +1479 -0
  6. package/dist/index.cjs.map +1 -0
  7. package/dist/index.js +1479 -0
  8. package/dist/index.js.map +1 -0
  9. package/package.json +92 -111
  10. package/claude/agents/siesa-ui-kit-specialist.md +0 -2445
  11. package/claude/prompts/component-template.md +0 -121
  12. package/claude/prompts/siesa-ui-kit.md +0 -28
  13. package/claude/settings.local.json +0 -72
  14. package/dist/ButtonTest.d.ts +0 -6
  15. package/dist/ButtonTest.d.ts.map +0 -1
  16. package/dist/components/Alert/Alert.d.ts +0 -23
  17. package/dist/components/Alert/Alert.d.ts.map +0 -1
  18. package/dist/components/Alert/Alert.types.d.ts +0 -46
  19. package/dist/components/Alert/Alert.types.d.ts.map +0 -1
  20. package/dist/components/Avatar/Avatar.d.ts +0 -41
  21. package/dist/components/Avatar/Avatar.d.ts.map +0 -1
  22. package/dist/components/Avatar/Avatar.types.d.ts +0 -46
  23. package/dist/components/Avatar/Avatar.types.d.ts.map +0 -1
  24. package/dist/components/Badge/Badge.d.ts +0 -42
  25. package/dist/components/Badge/Badge.d.ts.map +0 -1
  26. package/dist/components/Badge/Badge.types.d.ts +0 -32
  27. package/dist/components/Badge/Badge.types.d.ts.map +0 -1
  28. package/dist/components/Button/Button.d.ts +0 -84
  29. package/dist/components/Button/Button.d.ts.map +0 -1
  30. package/dist/components/Button/Button.types.d.ts +0 -162
  31. package/dist/components/Button/Button.types.d.ts.map +0 -1
  32. package/dist/components/Button/icons.d.ts +0 -27
  33. package/dist/components/Button/icons.d.ts.map +0 -1
  34. package/dist/components/Button/index.d.ts +0 -4
  35. package/dist/components/Button/index.d.ts.map +0 -1
  36. package/dist/components/Checkbox/Checkbox.d.ts +0 -31
  37. package/dist/components/Checkbox/Checkbox.d.ts.map +0 -1
  38. package/dist/components/Checkbox/Checkbox.types.d.ts +0 -53
  39. package/dist/components/Checkbox/Checkbox.types.d.ts.map +0 -1
  40. package/dist/components/DescriptionList/DescriptionList.d.ts +0 -38
  41. package/dist/components/DescriptionList/DescriptionList.d.ts.map +0 -1
  42. package/dist/components/DescriptionList/DescriptionList.types.d.ts +0 -27
  43. package/dist/components/DescriptionList/DescriptionList.types.d.ts.map +0 -1
  44. package/dist/components/Divider/Divider.d.ts +0 -33
  45. package/dist/components/Divider/Divider.d.ts.map +0 -1
  46. package/dist/components/Divider/Divider.types.d.ts +0 -22
  47. package/dist/components/Divider/Divider.types.d.ts.map +0 -1
  48. package/dist/components/Dropdown/Dropdown.d.ts +0 -66
  49. package/dist/components/Dropdown/Dropdown.d.ts.map +0 -1
  50. package/dist/components/Dropdown/Dropdown.types.d.ts +0 -124
  51. package/dist/components/Dropdown/Dropdown.types.d.ts.map +0 -1
  52. package/dist/components/Dropdown/icons.d.ts +0 -10
  53. package/dist/components/Dropdown/icons.d.ts.map +0 -1
  54. package/dist/components/Dropdown/index.d.ts +0 -4
  55. package/dist/components/Dropdown/index.d.ts.map +0 -1
  56. package/dist/components/DropdownItemCollapsible/DropdownItemCollapsible.d.ts +0 -101
  57. package/dist/components/DropdownItemCollapsible/DropdownItemCollapsible.d.ts.map +0 -1
  58. package/dist/components/DropdownItemCollapsible/DropdownItemCollapsible.types.d.ts +0 -116
  59. package/dist/components/DropdownItemCollapsible/DropdownItemCollapsible.types.d.ts.map +0 -1
  60. package/dist/components/DropdownItemCollapsible/icons.d.ts +0 -19
  61. package/dist/components/DropdownItemCollapsible/icons.d.ts.map +0 -1
  62. package/dist/components/DropdownItemCollapsible/index.d.ts +0 -9
  63. package/dist/components/DropdownItemCollapsible/index.d.ts.map +0 -1
  64. package/dist/components/DropdownItemHeading/DropdownItemHeading.d.ts +0 -75
  65. package/dist/components/DropdownItemHeading/DropdownItemHeading.d.ts.map +0 -1
  66. package/dist/components/DropdownItemHeading/DropdownItemHeading.types.d.ts +0 -85
  67. package/dist/components/DropdownItemHeading/DropdownItemHeading.types.d.ts.map +0 -1
  68. package/dist/components/DropdownItemHeading/icons.d.ts +0 -48
  69. package/dist/components/DropdownItemHeading/icons.d.ts.map +0 -1
  70. package/dist/components/DropdownItemHeading/index.d.ts +0 -4
  71. package/dist/components/DropdownItemHeading/index.d.ts.map +0 -1
  72. package/dist/components/Input/Input.d.ts +0 -40
  73. package/dist/components/Input/Input.d.ts.map +0 -1
  74. package/dist/components/Input/Input.types.d.ts +0 -71
  75. package/dist/components/Input/Input.types.d.ts.map +0 -1
  76. package/dist/components/Input/icons.d.ts +0 -15
  77. package/dist/components/Input/icons.d.ts.map +0 -1
  78. package/dist/components/Input/index.d.ts +0 -3
  79. package/dist/components/Input/index.d.ts.map +0 -1
  80. package/dist/components/LoginView/LoginView.d.ts +0 -36
  81. package/dist/components/LoginView/LoginView.d.ts.map +0 -1
  82. package/dist/components/LoginView/LoginView.types.d.ts +0 -46
  83. package/dist/components/LoginView/LoginView.types.d.ts.map +0 -1
  84. package/dist/components/LoginView/icons.d.ts +0 -18
  85. package/dist/components/LoginView/icons.d.ts.map +0 -1
  86. package/dist/components/LoginView/index.d.ts +0 -4
  87. package/dist/components/LoginView/index.d.ts.map +0 -1
  88. package/dist/components/Navbar/Navbar.d.ts +0 -63
  89. package/dist/components/Navbar/Navbar.d.ts.map +0 -1
  90. package/dist/components/Navbar/Navbar.types.d.ts +0 -194
  91. package/dist/components/Navbar/Navbar.types.d.ts.map +0 -1
  92. package/dist/components/Navbar/icons.d.ts +0 -12
  93. package/dist/components/Navbar/icons.d.ts.map +0 -1
  94. package/dist/components/Navbar/index.d.ts +0 -4
  95. package/dist/components/Navbar/index.d.ts.map +0 -1
  96. package/dist/components/NavigationBar/NavigationBar.d.ts +0 -75
  97. package/dist/components/NavigationBar/NavigationBar.d.ts.map +0 -1
  98. package/dist/components/NavigationBar/NavigationBar.types.d.ts +0 -63
  99. package/dist/components/NavigationBar/NavigationBar.types.d.ts.map +0 -1
  100. package/dist/components/NavigationBar/index.d.ts +0 -3
  101. package/dist/components/NavigationBar/index.d.ts.map +0 -1
  102. package/dist/components/NavigationRail/NavigationRail.d.ts +0 -7
  103. package/dist/components/NavigationRail/NavigationRail.d.ts.map +0 -1
  104. package/dist/components/NavigationRail/NavigationRail.types.d.ts +0 -92
  105. package/dist/components/NavigationRail/NavigationRail.types.d.ts.map +0 -1
  106. package/dist/components/NavigationRail/index.d.ts +0 -3
  107. package/dist/components/NavigationRail/index.d.ts.map +0 -1
  108. package/dist/components/NavigationRailCommercial/NavigationRailCommercial.d.ts +0 -122
  109. package/dist/components/NavigationRailCommercial/NavigationRailCommercial.d.ts.map +0 -1
  110. package/dist/components/NavigationRailCommercial/NavigationRailCommercial.types.d.ts +0 -139
  111. package/dist/components/NavigationRailCommercial/NavigationRailCommercial.types.d.ts.map +0 -1
  112. package/dist/components/NavigationRailCommercial/icons.d.ts +0 -33
  113. package/dist/components/NavigationRailCommercial/icons.d.ts.map +0 -1
  114. package/dist/components/NavigationRailCommercial/index.d.ts +0 -4
  115. package/dist/components/NavigationRailCommercial/index.d.ts.map +0 -1
  116. package/dist/components/NavigationRailItem/NavigationRailItem.d.ts +0 -90
  117. package/dist/components/NavigationRailItem/NavigationRailItem.d.ts.map +0 -1
  118. package/dist/components/NavigationRailItem/NavigationRailItem.types.d.ts +0 -162
  119. package/dist/components/NavigationRailItem/NavigationRailItem.types.d.ts.map +0 -1
  120. package/dist/components/NavigationRailItem/index.d.ts +0 -3
  121. package/dist/components/NavigationRailItem/index.d.ts.map +0 -1
  122. package/dist/components/NavigationRailPanel/NavigationRailPanel.d.ts +0 -124
  123. package/dist/components/NavigationRailPanel/NavigationRailPanel.d.ts.map +0 -1
  124. package/dist/components/NavigationRailPanel/NavigationRailPanel.types.d.ts +0 -154
  125. package/dist/components/NavigationRailPanel/NavigationRailPanel.types.d.ts.map +0 -1
  126. package/dist/components/NavigationRailPanel/index.d.ts +0 -3
  127. package/dist/components/NavigationRailPanel/index.d.ts.map +0 -1
  128. package/dist/components/NavigationRailTypes/NavigationRailTypes.d.ts +0 -99
  129. package/dist/components/NavigationRailTypes/NavigationRailTypes.d.ts.map +0 -1
  130. package/dist/components/NavigationRailTypes/NavigationRailTypes.types.d.ts +0 -152
  131. package/dist/components/NavigationRailTypes/NavigationRailTypes.types.d.ts.map +0 -1
  132. package/dist/components/NavigationRailTypes/icons.d.ts +0 -44
  133. package/dist/components/NavigationRailTypes/icons.d.ts.map +0 -1
  134. package/dist/components/NavigationRailTypes/index.d.ts +0 -4
  135. package/dist/components/NavigationRailTypes/index.d.ts.map +0 -1
  136. package/dist/components/Notification/Notification.d.ts +0 -52
  137. package/dist/components/Notification/Notification.d.ts.map +0 -1
  138. package/dist/components/Notification/Notification.types.d.ts +0 -138
  139. package/dist/components/Notification/Notification.types.d.ts.map +0 -1
  140. package/dist/components/Notification/index.d.ts +0 -3
  141. package/dist/components/Notification/index.d.ts.map +0 -1
  142. package/dist/components/POSConvention/POSConvention.d.ts +0 -55
  143. package/dist/components/POSConvention/POSConvention.d.ts.map +0 -1
  144. package/dist/components/POSConvention/POSConvention.types.d.ts +0 -37
  145. package/dist/components/POSConvention/POSConvention.types.d.ts.map +0 -1
  146. package/dist/components/POSConvention/icons.d.ts +0 -21
  147. package/dist/components/POSConvention/icons.d.ts.map +0 -1
  148. package/dist/components/POSConvention/index.d.ts +0 -4
  149. package/dist/components/POSConvention/index.d.ts.map +0 -1
  150. package/dist/components/POSLocationButton/POSLocationButton.d.ts +0 -73
  151. package/dist/components/POSLocationButton/POSLocationButton.d.ts.map +0 -1
  152. package/dist/components/POSLocationButton/POSLocationButton.types.d.ts +0 -75
  153. package/dist/components/POSLocationButton/POSLocationButton.types.d.ts.map +0 -1
  154. package/dist/components/POSLocationButton/icons.d.ts +0 -37
  155. package/dist/components/POSLocationButton/icons.d.ts.map +0 -1
  156. package/dist/components/POSLocationButton/index.d.ts +0 -4
  157. package/dist/components/POSLocationButton/index.d.ts.map +0 -1
  158. package/dist/components/POSNumberButton/POSNumberButton.d.ts +0 -61
  159. package/dist/components/POSNumberButton/POSNumberButton.d.ts.map +0 -1
  160. package/dist/components/POSNumberButton/POSNumberButton.types.d.ts +0 -43
  161. package/dist/components/POSNumberButton/POSNumberButton.types.d.ts.map +0 -1
  162. package/dist/components/POSNumberButton/index.d.ts +0 -3
  163. package/dist/components/POSNumberButton/index.d.ts.map +0 -1
  164. package/dist/components/POSProductButton/POSProductButton.d.ts +0 -59
  165. package/dist/components/POSProductButton/POSProductButton.d.ts.map +0 -1
  166. package/dist/components/POSProductButton/POSProductButton.types.d.ts +0 -40
  167. package/dist/components/POSProductButton/POSProductButton.types.d.ts.map +0 -1
  168. package/dist/components/POSProductButton/index.d.ts +0 -3
  169. package/dist/components/POSProductButton/index.d.ts.map +0 -1
  170. package/dist/components/POSProductCard/POSProductCard.d.ts +0 -68
  171. package/dist/components/POSProductCard/POSProductCard.d.ts.map +0 -1
  172. package/dist/components/POSProductCard/POSProductCard.types.d.ts +0 -67
  173. package/dist/components/POSProductCard/POSProductCard.types.d.ts.map +0 -1
  174. package/dist/components/POSProductCard/icons.d.ts +0 -10
  175. package/dist/components/POSProductCard/icons.d.ts.map +0 -1
  176. package/dist/components/POSProductCard/index.d.ts +0 -3
  177. package/dist/components/POSProductCard/index.d.ts.map +0 -1
  178. package/dist/components/POSProductSidebarItems/POSProductSidebarItems.d.ts +0 -57
  179. package/dist/components/POSProductSidebarItems/POSProductSidebarItems.d.ts.map +0 -1
  180. package/dist/components/POSProductSidebarItems/POSProductSidebarItems.types.d.ts +0 -85
  181. package/dist/components/POSProductSidebarItems/POSProductSidebarItems.types.d.ts.map +0 -1
  182. package/dist/components/POSProductSidebarItems/icons.d.ts +0 -9
  183. package/dist/components/POSProductSidebarItems/icons.d.ts.map +0 -1
  184. package/dist/components/POSProductSidebarItems/index.d.ts +0 -4
  185. package/dist/components/POSProductSidebarItems/index.d.ts.map +0 -1
  186. package/dist/components/POSTable/POSTable.d.ts +0 -75
  187. package/dist/components/POSTable/POSTable.d.ts.map +0 -1
  188. package/dist/components/POSTable/POSTable.types.d.ts +0 -71
  189. package/dist/components/POSTable/POSTable.types.d.ts.map +0 -1
  190. package/dist/components/POSTable/index.d.ts +0 -3
  191. package/dist/components/POSTable/index.d.ts.map +0 -1
  192. package/dist/components/Pagination/Pagination.d.ts +0 -29
  193. package/dist/components/Pagination/Pagination.d.ts.map +0 -1
  194. package/dist/components/Pagination/Pagination.types.d.ts +0 -79
  195. package/dist/components/Pagination/Pagination.types.d.ts.map +0 -1
  196. package/dist/components/Pagination/icons.d.ts +0 -18
  197. package/dist/components/Pagination/icons.d.ts.map +0 -1
  198. package/dist/components/Pagination/index.d.ts +0 -4
  199. package/dist/components/Pagination/index.d.ts.map +0 -1
  200. package/dist/components/Quantity/Quantity.d.ts +0 -38
  201. package/dist/components/Quantity/Quantity.d.ts.map +0 -1
  202. package/dist/components/Quantity/Quantity.types.d.ts +0 -59
  203. package/dist/components/Quantity/Quantity.types.d.ts.map +0 -1
  204. package/dist/components/Radio/Radio.d.ts +0 -45
  205. package/dist/components/Radio/Radio.d.ts.map +0 -1
  206. package/dist/components/Radio/Radio.types.d.ts +0 -115
  207. package/dist/components/Radio/Radio.types.d.ts.map +0 -1
  208. package/dist/components/Select/Select.d.ts +0 -37
  209. package/dist/components/Select/Select.d.ts.map +0 -1
  210. package/dist/components/Select/Select.types.d.ts +0 -124
  211. package/dist/components/Select/Select.types.d.ts.map +0 -1
  212. package/dist/components/Select/icons.d.ts +0 -20
  213. package/dist/components/Select/icons.d.ts.map +0 -1
  214. package/dist/components/Select/index.d.ts +0 -4
  215. package/dist/components/Select/index.d.ts.map +0 -1
  216. package/dist/components/SignUpView/SignUpView.d.ts +0 -38
  217. package/dist/components/SignUpView/SignUpView.d.ts.map +0 -1
  218. package/dist/components/SignUpView/SignUpView.types.d.ts +0 -51
  219. package/dist/components/SignUpView/SignUpView.types.d.ts.map +0 -1
  220. package/dist/components/SignUpView/icons.d.ts +0 -18
  221. package/dist/components/SignUpView/icons.d.ts.map +0 -1
  222. package/dist/components/SignUpView/index.d.ts +0 -4
  223. package/dist/components/SignUpView/index.d.ts.map +0 -1
  224. package/dist/components/Switch/Switch.d.ts +0 -46
  225. package/dist/components/Switch/Switch.d.ts.map +0 -1
  226. package/dist/components/Switch/Switch.types.d.ts +0 -58
  227. package/dist/components/Switch/Switch.types.d.ts.map +0 -1
  228. package/dist/components/Table/Table.d.ts +0 -64
  229. package/dist/components/Table/Table.d.ts.map +0 -1
  230. package/dist/components/Table/Table.types.d.ts +0 -173
  231. package/dist/components/Table/Table.types.d.ts.map +0 -1
  232. package/dist/components/Table/index.d.ts +0 -3
  233. package/dist/components/Table/index.d.ts.map +0 -1
  234. package/dist/components/Tabs/Tabs.d.ts +0 -76
  235. package/dist/components/Tabs/Tabs.d.ts.map +0 -1
  236. package/dist/components/Tabs/Tabs.types.d.ts +0 -107
  237. package/dist/components/Tabs/Tabs.types.d.ts.map +0 -1
  238. package/dist/components/Tabs/icons.d.ts +0 -45
  239. package/dist/components/Tabs/icons.d.ts.map +0 -1
  240. package/dist/components/Tabs/index.d.ts +0 -4
  241. package/dist/components/Tabs/index.d.ts.map +0 -1
  242. package/dist/components/Textarea/Textarea.d.ts +0 -38
  243. package/dist/components/Textarea/Textarea.d.ts.map +0 -1
  244. package/dist/components/Textarea/Textarea.types.d.ts +0 -46
  245. package/dist/components/Textarea/Textarea.types.d.ts.map +0 -1
  246. package/dist/context/ThemeContext.d.ts +0 -46
  247. package/dist/context/ThemeContext.d.ts.map +0 -1
  248. package/dist/context/index.d.ts +0 -2
  249. package/dist/context/index.d.ts.map +0 -1
  250. package/dist/index.d.ts +0 -88
  251. package/dist/index.d.ts.map +0 -1
  252. package/dist/siesa-ui-kit.cjs +0 -1474
  253. package/dist/siesa-ui-kit.cjs.map +0 -1
  254. package/dist/siesa-ui-kit.mjs +0 -9580
  255. package/dist/siesa-ui-kit.mjs.map +0 -1
  256. package/dist/views/LayoutCommercial/LayoutCommercial.d.ts +0 -48
  257. package/dist/views/LayoutCommercial/LayoutCommercial.d.ts.map +0 -1
  258. package/dist/views/LayoutCommercial/LayoutCommercial.types.d.ts +0 -49
  259. package/dist/views/LayoutCommercial/LayoutCommercial.types.d.ts.map +0 -1
  260. package/dist/views/LayoutCommercial/index.d.ts +0 -3
  261. package/dist/views/LayoutCommercial/index.d.ts.map +0 -1
  262. package/dist/views/ListView/ListView.d.ts +0 -47
  263. package/dist/views/ListView/ListView.d.ts.map +0 -1
  264. package/dist/views/ListView/ListView.types.d.ts +0 -177
  265. package/dist/views/ListView/ListView.types.d.ts.map +0 -1
  266. package/dist/views/ListView/icons.d.ts +0 -60
  267. package/dist/views/ListView/icons.d.ts.map +0 -1
  268. package/dist/views/ListView/index.d.ts +0 -3
  269. package/dist/views/ListView/index.d.ts.map +0 -1
  270. package/dist/views/LoginView/LoginView.d.ts +0 -36
  271. package/dist/views/LoginView/LoginView.d.ts.map +0 -1
  272. package/dist/views/LoginView/LoginView.types.d.ts +0 -46
  273. package/dist/views/LoginView/LoginView.types.d.ts.map +0 -1
  274. package/dist/views/LoginView/icons.d.ts +0 -18
  275. package/dist/views/LoginView/icons.d.ts.map +0 -1
  276. package/dist/views/LoginView/index.d.ts +0 -4
  277. package/dist/views/LoginView/index.d.ts.map +0 -1
  278. package/dist/views/ProductsView/ProductsView.d.ts +0 -56
  279. package/dist/views/ProductsView/ProductsView.d.ts.map +0 -1
  280. package/dist/views/ProductsView/ProductsView.types.d.ts +0 -184
  281. package/dist/views/ProductsView/ProductsView.types.d.ts.map +0 -1
  282. package/dist/views/ProductsView/icons.d.ts +0 -12
  283. package/dist/views/ProductsView/icons.d.ts.map +0 -1
  284. package/dist/views/ProductsView/index.d.ts +0 -3
  285. package/dist/views/ProductsView/index.d.ts.map +0 -1
  286. package/dist/views/RecoverPasswordView/RecoverPasswordView.d.ts +0 -34
  287. package/dist/views/RecoverPasswordView/RecoverPasswordView.d.ts.map +0 -1
  288. package/dist/views/RecoverPasswordView/RecoverPasswordView.types.d.ts +0 -50
  289. package/dist/views/RecoverPasswordView/RecoverPasswordView.types.d.ts.map +0 -1
  290. package/dist/views/RecoverPasswordView/icons.d.ts +0 -9
  291. package/dist/views/RecoverPasswordView/icons.d.ts.map +0 -1
  292. package/dist/views/RecoverPasswordView/index.d.ts +0 -3
  293. package/dist/views/RecoverPasswordView/index.d.ts.map +0 -1
  294. package/dist/views/SignUpView/SignUpView.d.ts +0 -38
  295. package/dist/views/SignUpView/SignUpView.d.ts.map +0 -1
  296. package/dist/views/SignUpView/SignUpView.types.d.ts +0 -51
  297. package/dist/views/SignUpView/SignUpView.types.d.ts.map +0 -1
  298. package/dist/views/SignUpView/icons.d.ts +0 -18
  299. package/dist/views/SignUpView/icons.d.ts.map +0 -1
  300. package/dist/views/SignUpView/index.d.ts +0 -4
  301. package/dist/views/SignUpView/index.d.ts.map +0 -1
  302. package/dist/views/TableLayoutView/TableLayoutView.d.ts +0 -46
  303. package/dist/views/TableLayoutView/TableLayoutView.d.ts.map +0 -1
  304. package/dist/views/TableLayoutView/TableLayoutView.types.d.ts +0 -170
  305. package/dist/views/TableLayoutView/TableLayoutView.types.d.ts.map +0 -1
  306. package/dist/views/TableLayoutView/icons.d.ts +0 -27
  307. package/dist/views/TableLayoutView/icons.d.ts.map +0 -1
  308. package/dist/views/TableLayoutView/index.d.ts +0 -3
  309. package/dist/views/TableLayoutView/index.d.ts.map +0 -1
  310. package/docs/border-radius.md +0 -1261
  311. package/docs/colors.md +0 -832
  312. package/docs/dark-mode-guide.md +0 -1426
  313. package/docs/filters.md +0 -1243
  314. package/docs/icons.md +0 -1264
  315. package/docs/shadows.md +0 -1377
  316. package/docs/spacing.md +0 -1684
  317. package/docs/typography.md +0 -1268
  318. package/postcss.config.cjs +0 -6
  319. package/src/App.css +0 -42
  320. package/src/App.tsx +0 -8
  321. package/src/ButtonTest.tsx +0 -147
  322. package/src/assets/fonts/README.md +0 -261
  323. package/src/assets/fonts/SiesaBT/SiesaBT-Bold.otf +0 -0
  324. package/src/assets/fonts/SiesaBT/SiesaBT-Light.otf +0 -0
  325. package/src/assets/fonts/SiesaBT/SiesaBT-Regular.otf +0 -0
  326. package/src/assets/react.svg +0 -1
  327. package/src/components/Alert/Alert.stories.tsx +0 -332
  328. package/src/components/Alert/Alert.tsx +0 -106
  329. package/src/components/Alert/Alert.types.ts +0 -54
  330. package/src/components/Avatar/Avatar.stories.tsx +0 -494
  331. package/src/components/Avatar/Avatar.tsx +0 -143
  332. package/src/components/Avatar/Avatar.types.ts +0 -53
  333. package/src/components/Badge/Badge.stories.tsx +0 -339
  334. package/src/components/Badge/Badge.tsx +0 -278
  335. package/src/components/Badge/Badge.types.ts +0 -58
  336. package/src/components/Button/Button.stories.tsx +0 -950
  337. package/src/components/Button/Button.tsx +0 -337
  338. package/src/components/Button/Button.types.ts +0 -180
  339. package/src/components/Button/icons.tsx +0 -48
  340. package/src/components/Button/index.ts +0 -3
  341. package/src/components/Checkbox/Checkbox.stories.tsx +0 -453
  342. package/src/components/Checkbox/Checkbox.tsx +0 -208
  343. package/src/components/Checkbox/Checkbox.types.ts +0 -61
  344. package/src/components/DescriptionList/DescriptionList.stories.tsx +0 -250
  345. package/src/components/DescriptionList/DescriptionList.tsx +0 -96
  346. package/src/components/DescriptionList/DescriptionList.types.ts +0 -29
  347. package/src/components/Divider/Divider.stories.tsx +0 -263
  348. package/src/components/Divider/Divider.tsx +0 -80
  349. package/src/components/Divider/Divider.types.ts +0 -24
  350. package/src/components/Dropdown/Dropdown.stories.tsx +0 -552
  351. package/src/components/Dropdown/Dropdown.tsx +0 -422
  352. package/src/components/Dropdown/Dropdown.types.ts +0 -146
  353. package/src/components/Dropdown/README.md +0 -266
  354. package/src/components/Dropdown/icons.tsx +0 -72
  355. package/src/components/Dropdown/index.ts +0 -8
  356. package/src/components/DropdownItemCollapsible/DropdownItemCollapsible.stories.tsx +0 -317
  357. package/src/components/DropdownItemCollapsible/DropdownItemCollapsible.tsx +0 -307
  358. package/src/components/DropdownItemCollapsible/DropdownItemCollapsible.types.ts +0 -136
  359. package/src/components/DropdownItemCollapsible/README.md +0 -264
  360. package/src/components/DropdownItemCollapsible/icons.tsx +0 -57
  361. package/src/components/DropdownItemCollapsible/index.ts +0 -12
  362. package/src/components/DropdownItemHeading/DropdownItemHeading.stories.tsx +0 -386
  363. package/src/components/DropdownItemHeading/DropdownItemHeading.tsx +0 -216
  364. package/src/components/DropdownItemHeading/DropdownItemHeading.types.ts +0 -93
  365. package/src/components/DropdownItemHeading/README.md +0 -573
  366. package/src/components/DropdownItemHeading/icons.tsx +0 -125
  367. package/src/components/DropdownItemHeading/index.ts +0 -3
  368. package/src/components/Input/Input.stories.tsx +0 -583
  369. package/src/components/Input/Input.tsx +0 -204
  370. package/src/components/Input/Input.types.ts +0 -80
  371. package/src/components/Input/icons.tsx +0 -145
  372. package/src/components/Input/index.ts +0 -2
  373. package/src/components/LoginView/LoginView.stories.tsx +0 -148
  374. package/src/components/LoginView/LoginView.tsx +0 -426
  375. package/src/components/LoginView/LoginView.types.ts +0 -52
  376. package/src/components/LoginView/README.md +0 -396
  377. package/src/components/LoginView/icons.tsx +0 -85
  378. package/src/components/LoginView/index.ts +0 -3
  379. package/src/components/Navbar/Navbar.stories.tsx +0 -810
  380. package/src/components/Navbar/Navbar.tsx +0 -755
  381. package/src/components/Navbar/Navbar.types.ts +0 -219
  382. package/src/components/Navbar/README.md +0 -279
  383. package/src/components/Navbar/icons.tsx +0 -102
  384. package/src/components/Navbar/index.ts +0 -8
  385. package/src/components/NavigationBar/NavigationBar.stories.tsx +0 -406
  386. package/src/components/NavigationBar/NavigationBar.tsx +0 -246
  387. package/src/components/NavigationBar/NavigationBar.types.ts +0 -74
  388. package/src/components/NavigationBar/README.md +0 -469
  389. package/src/components/NavigationBar/index.ts +0 -2
  390. package/src/components/NavigationRail/NavigationRail.stories.tsx +0 -417
  391. package/src/components/NavigationRail/NavigationRail.tsx +0 -418
  392. package/src/components/NavigationRail/NavigationRail.types.ts +0 -109
  393. package/src/components/NavigationRail/README.md +0 -224
  394. package/src/components/NavigationRail/index.ts +0 -2
  395. package/src/components/NavigationRailCommercial/NavigationRailCommercial.stories.tsx +0 -464
  396. package/src/components/NavigationRailCommercial/NavigationRailCommercial.tsx +0 -301
  397. package/src/components/NavigationRailCommercial/NavigationRailCommercial.types.ts +0 -162
  398. package/src/components/NavigationRailCommercial/README.md +0 -251
  399. package/src/components/NavigationRailCommercial/icons.tsx +0 -54
  400. package/src/components/NavigationRailCommercial/index.ts +0 -6
  401. package/src/components/NavigationRailItem/NavigationRailItem.stories.tsx +0 -667
  402. package/src/components/NavigationRailItem/NavigationRailItem.tsx +0 -314
  403. package/src/components/NavigationRailItem/NavigationRailItem.types.ts +0 -175
  404. package/src/components/NavigationRailItem/README.md +0 -476
  405. package/src/components/NavigationRailItem/index.ts +0 -2
  406. package/src/components/NavigationRailPanel/NavigationRailPanel.stories.tsx +0 -462
  407. package/src/components/NavigationRailPanel/NavigationRailPanel.tsx +0 -332
  408. package/src/components/NavigationRailPanel/NavigationRailPanel.types.ts +0 -178
  409. package/src/components/NavigationRailPanel/README.md +0 -461
  410. package/src/components/NavigationRailPanel/index.ts +0 -6
  411. package/src/components/NavigationRailTypes/NavigationRailTypes.stories.tsx +0 -682
  412. package/src/components/NavigationRailTypes/NavigationRailTypes.tsx +0 -363
  413. package/src/components/NavigationRailTypes/NavigationRailTypes.types.ts +0 -178
  414. package/src/components/NavigationRailTypes/README.md +0 -573
  415. package/src/components/NavigationRailTypes/icons.tsx +0 -76
  416. package/src/components/NavigationRailTypes/index.ts +0 -7
  417. package/src/components/Notification/Notification.stories.tsx +0 -513
  418. package/src/components/Notification/Notification.tsx +0 -145
  419. package/src/components/Notification/Notification.types.ts +0 -142
  420. package/src/components/Notification/README.md +0 -409
  421. package/src/components/Notification/index.ts +0 -3
  422. package/src/components/POSConvention/POSConvention.stories.tsx +0 -235
  423. package/src/components/POSConvention/POSConvention.tsx +0 -129
  424. package/src/components/POSConvention/POSConvention.types.ts +0 -38
  425. package/src/components/POSConvention/README.md +0 -123
  426. package/src/components/POSConvention/icons.tsx +0 -45
  427. package/src/components/POSConvention/index.ts +0 -3
  428. package/src/components/POSLocationButton/POSLocationButton.stories.tsx +0 -531
  429. package/src/components/POSLocationButton/POSLocationButton.tsx +0 -247
  430. package/src/components/POSLocationButton/POSLocationButton.types.ts +0 -87
  431. package/src/components/POSLocationButton/README.md +0 -253
  432. package/src/components/POSLocationButton/icons.tsx +0 -120
  433. package/src/components/POSLocationButton/index.ts +0 -14
  434. package/src/components/POSNumberButton/POSNumberButton.stories.tsx +0 -415
  435. package/src/components/POSNumberButton/POSNumberButton.tsx +0 -179
  436. package/src/components/POSNumberButton/POSNumberButton.types.ts +0 -51
  437. package/src/components/POSNumberButton/README.md +0 -321
  438. package/src/components/POSNumberButton/index.ts +0 -3
  439. package/src/components/POSProductButton/POSProductButton.stories.tsx +0 -318
  440. package/src/components/POSProductButton/POSProductButton.tsx +0 -152
  441. package/src/components/POSProductButton/POSProductButton.types.ts +0 -46
  442. package/src/components/POSProductButton/README.md +0 -269
  443. package/src/components/POSProductButton/index.ts +0 -2
  444. package/src/components/POSProductCard/POSProductCard.stories.tsx +0 -642
  445. package/src/components/POSProductCard/POSProductCard.tsx +0 -208
  446. package/src/components/POSProductCard/POSProductCard.types.ts +0 -76
  447. package/src/components/POSProductCard/README.md +0 -179
  448. package/src/components/POSProductCard/icons.tsx +0 -26
  449. package/src/components/POSProductCard/index.ts +0 -2
  450. package/src/components/POSProductSidebarItems/POSProductSidebarItems.stories.tsx +0 -753
  451. package/src/components/POSProductSidebarItems/POSProductSidebarItems.tsx +0 -332
  452. package/src/components/POSProductSidebarItems/POSProductSidebarItems.types.ts +0 -119
  453. package/src/components/POSProductSidebarItems/README.md +0 -198
  454. package/src/components/POSProductSidebarItems/icons.tsx +0 -21
  455. package/src/components/POSProductSidebarItems/index.ts +0 -3
  456. package/src/components/POSTable/POSTable.stories.tsx +0 -737
  457. package/src/components/POSTable/POSTable.tsx +0 -401
  458. package/src/components/POSTable/POSTable.types.ts +0 -83
  459. package/src/components/POSTable/README.md +0 -286
  460. package/src/components/POSTable/index.ts +0 -7
  461. package/src/components/Pagination/Pagination.stories.tsx +0 -555
  462. package/src/components/Pagination/Pagination.tsx +0 -286
  463. package/src/components/Pagination/Pagination.types.ts +0 -93
  464. package/src/components/Pagination/README.md +0 -298
  465. package/src/components/Pagination/icons.tsx +0 -47
  466. package/src/components/Pagination/index.ts +0 -3
  467. package/src/components/Quantity/Quantity.stories.tsx +0 -457
  468. package/src/components/Quantity/Quantity.tsx +0 -289
  469. package/src/components/Quantity/Quantity.types.ts +0 -70
  470. package/src/components/Radio/Radio.stories.tsx +0 -523
  471. package/src/components/Radio/Radio.tsx +0 -170
  472. package/src/components/Radio/Radio.types.ts +0 -122
  473. package/src/components/Select/README.md +0 -299
  474. package/src/components/Select/Select.stories.tsx +0 -705
  475. package/src/components/Select/Select.tsx +0 -457
  476. package/src/components/Select/Select.types.ts +0 -148
  477. package/src/components/Select/icons.tsx +0 -25
  478. package/src/components/Select/index.ts +0 -3
  479. package/src/components/SignUpView/SignUpView.stories.tsx +0 -129
  480. package/src/components/SignUpView/SignUpView.tsx +0 -503
  481. package/src/components/SignUpView/SignUpView.types.ts +0 -58
  482. package/src/components/SignUpView/icons.tsx +0 -71
  483. package/src/components/SignUpView/index.ts +0 -3
  484. package/src/components/Switch/README.md +0 -112
  485. package/src/components/Switch/Switch.stories.tsx +0 -550
  486. package/src/components/Switch/Switch.tsx +0 -246
  487. package/src/components/Switch/Switch.types.ts +0 -67
  488. package/src/components/Table/README.md +0 -369
  489. package/src/components/Table/Table.stories.tsx +0 -805
  490. package/src/components/Table/Table.tsx +0 -688
  491. package/src/components/Table/Table.types.ts +0 -204
  492. package/src/components/Table/index.ts +0 -9
  493. package/src/components/Tabs/README.md +0 -201
  494. package/src/components/Tabs/Tabs.stories.tsx +0 -580
  495. package/src/components/Tabs/Tabs.tsx +0 -356
  496. package/src/components/Tabs/Tabs.types.ts +0 -127
  497. package/src/components/Tabs/icons.tsx +0 -129
  498. package/src/components/Tabs/index.ts +0 -11
  499. package/src/components/Textarea/Textarea.stories.tsx +0 -535
  500. package/src/components/Textarea/Textarea.tsx +0 -188
  501. package/src/components/Textarea/Textarea.types.ts +0 -54
  502. package/src/context/ThemeContext.tsx +0 -99
  503. package/src/context/index.ts +0 -1
  504. package/src/index.css +0 -29
  505. package/src/index.ts +0 -133
  506. package/src/main.tsx +0 -10
  507. package/src/views/LayoutCommercial/LayoutCommercial.stories.tsx +0 -374
  508. package/src/views/LayoutCommercial/LayoutCommercial.tsx +0 -125
  509. package/src/views/LayoutCommercial/LayoutCommercial.types.ts +0 -54
  510. package/src/views/LayoutCommercial/README.md +0 -286
  511. package/src/views/LayoutCommercial/index.ts +0 -2
  512. package/src/views/ListView/ListView.stories.tsx +0 -329
  513. package/src/views/ListView/ListView.tsx +0 -570
  514. package/src/views/ListView/ListView.types.ts +0 -211
  515. package/src/views/ListView/icons.tsx +0 -282
  516. package/src/views/ListView/index.ts +0 -11
  517. package/src/views/LoginView/LoginView.stories.tsx +0 -148
  518. package/src/views/LoginView/LoginView.tsx +0 -426
  519. package/src/views/LoginView/LoginView.types.ts +0 -52
  520. package/src/views/LoginView/README.md +0 -396
  521. package/src/views/LoginView/icons.tsx +0 -85
  522. package/src/views/LoginView/index.ts +0 -3
  523. package/src/views/ProductsView/ProductsView.stories.tsx +0 -344
  524. package/src/views/ProductsView/ProductsView.tsx +0 -480
  525. package/src/views/ProductsView/ProductsView.types.ts +0 -238
  526. package/src/views/ProductsView/README.md +0 -312
  527. package/src/views/ProductsView/icons.tsx +0 -38
  528. package/src/views/ProductsView/index.ts +0 -8
  529. package/src/views/RecoverPasswordView/README.md +0 -269
  530. package/src/views/RecoverPasswordView/RecoverPasswordView.stories.tsx +0 -131
  531. package/src/views/RecoverPasswordView/RecoverPasswordView.tsx +0 -376
  532. package/src/views/RecoverPasswordView/RecoverPasswordView.types.ts +0 -56
  533. package/src/views/RecoverPasswordView/icons.tsx +0 -17
  534. package/src/views/RecoverPasswordView/index.ts +0 -2
  535. package/src/views/SignUpView/SignUpView.stories.tsx +0 -129
  536. package/src/views/SignUpView/SignUpView.tsx +0 -503
  537. package/src/views/SignUpView/SignUpView.types.ts +0 -58
  538. package/src/views/SignUpView/icons.tsx +0 -71
  539. package/src/views/SignUpView/index.ts +0 -3
  540. package/src/views/TableLayoutView/README.md +0 -268
  541. package/src/views/TableLayoutView/TableLayoutView.stories.tsx +0 -235
  542. package/src/views/TableLayoutView/TableLayoutView.tsx +0 -461
  543. package/src/views/TableLayoutView/TableLayoutView.types.ts +0 -209
  544. package/src/views/TableLayoutView/icons.tsx +0 -113
  545. package/src/views/TableLayoutView/index.ts +0 -6
  546. package/storybook/main.ts +0 -20
  547. package/storybook/preview.tsx +0 -84
  548. package/storybook/vitest.setup.ts +0 -7
  549. package/tailwind.config.js +0 -128
  550. /package/{public → dist}/,Business Logo.png +0 -0
  551. /package/{public → dist}/.Siesa Logo.png +0 -0
  552. /package/{public → dist}/bg_siesa.png +0 -0
  553. /package/{public → dist}/siesa_logo_mobile.png +0 -0
  554. /package/{public → dist}/vite.svg +0 -0
package/docs/icons.md DELETED
@@ -1,1264 +0,0 @@
1
- # Sistema de Iconos - Siesa UI Kit
2
-
3
- ## 📋 Tabla de Contenidos
4
-
5
- 1. [Introducción](#introducción)
6
- 2. [Librería de Iconos](#librería-de-iconos)
7
- 3. [Catálogo de Iconos](#catálogo-de-iconos)
8
- 4. [Implementación](#implementación)
9
- 5. [Guía de Uso](#guía-de-uso)
10
- 6. [Accesibilidad](#accesibilidad)
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
- El sistema de iconos de Siesa UI Kit está basado en **Heroicons Micro**, una librería de iconos SVG de 16x16px diseñada específicamente para interfaces de usuario modernas. Los iconos están optimizados para claridad a tamaños pequeños y se integran perfectamente con nuestro sistema de diseño.
20
-
21
- ### Objetivos del Sistema de Iconos
22
-
23
- - **Consistencia Visual**: Todos los iconos mantienen el mismo peso visual y estilo
24
- - **Escalabilidad**: Iconos vectoriales que se adaptan a cualquier tamaño
25
- - **Accesibilidad**: Soporte para lectores de pantalla y temas oscuros
26
- - **Rendimiento**: SVG inline para carga rápida sin requests adicionales
27
- - **Flexibilidad**: Fácil personalización de tamaño, color y estilos
28
-
29
- ### Principios de Diseño
30
-
31
- 1. **Simplicidad**: Formas claras y reconocibles
32
- 2. **Peso Consistente**: Todos los iconos tienen el mismo grosor de línea
33
- 3. **Alineación Pixel-Perfect**: Optimizados para 16x16px
34
- 4. **Color Heredado**: Usan `currentColor` para adaptarse al contexto
35
-
36
- ---
37
-
38
- ## Librería de Iconos
39
-
40
- ### Heroicons Micro
41
-
42
- **Especificaciones Técnicas:**
43
- - **Tamaño Base**: 16x16px (viewBox="0 0 16 16")
44
- - **Formato**: SVG inline
45
- - **Estilo**: Solid (relleno completo)
46
- - **Grosor**: 1.5px stroke weight equivalent
47
- - **Licencia**: MIT License
48
-
49
- **Ventajas:**
50
- - ✅ Diseñados específicamente para UI de 16px
51
- - ✅ Optimizados para claridad a tamaños pequeños
52
- - ✅ Mantenidos por el equipo de Tailwind CSS
53
- - ✅ Biblioteca completa y consistente
54
- - ✅ Excelente legibilidad en pantallas de alta densidad
55
-
56
- ---
57
-
58
- ## Catálogo de Iconos
59
-
60
- ### Iconos de Botón (Button)
61
-
62
- Iconos disponibles en `src/components/Button/icons.tsx`
63
-
64
- | Icono | Nombre | Uso Principal | Ubicación |
65
- |-------|--------|---------------|-----------|
66
- | ➕ | `PlusIcon` | Acciones de añadir/crear | Button.tsx:12 |
67
- | 🔽 | `ChevronDownIcon` | Menús desplegables | Button.tsx:12 |
68
- | ➡️ | `ArrowRightIcon` | Navegación/siguiente | Button.tsx:12 |
69
- | ✓ | `CheckIcon` | Confirmación/éxito | Button.tsx:14 |
70
- | ✕ | `XIcon` | Cerrar/cancelar | Button.tsx:14 |
71
-
72
- ### Iconos de Input (Input)
73
-
74
- Iconos disponibles en `src/components/Input/icons.tsx`
75
-
76
- | Icono | Nombre | Uso Principal | Contexto |
77
- |-------|--------|---------------|----------|
78
- | ✉️ | `EnvelopeIcon` | Email input | Campo de correo electrónico |
79
- | ❓ | `QuestionMarkCircleIcon` | Ayuda contextual | Tooltips, hints |
80
- | 👤 | `UserIcon` | Usuario/perfil | Campos de nombre, login |
81
- | 🔒 | `LockClosedIcon` | Seguridad | Password, campos privados |
82
- | 🔍 | `MagnifyingGlassIcon` | Búsqueda | Search inputs |
83
- | 👁️ | `EyeIcon` | Ver contraseña | Toggle password visibility |
84
- | 👁️‍🗨️ | `EyeSlashIcon` | Ocultar contraseña | Toggle password visibility |
85
- | ✕ | `XMarkIcon` | Limpiar campo | Clear input |
86
- | ✓ | `CheckIcon` | Validación exitosa | Estado de éxito |
87
- | ⚠️ | `ExclamationCircleIcon` | Error/advertencia | Estado de error |
88
-
89
- **Total de Iconos Disponibles**: 16 (5 Button + 11 Input)
90
-
91
- ---
92
-
93
- ## Implementación
94
-
95
- ### Patrón de Implementación
96
-
97
- Utilizamos la librería `@heroicons/react` para todos los iconos estándar. El patrón consiste en envolver el icono de la librería para mantener consistencia y facilitar personalizaciones futuras.
98
-
99
- ```typescript
100
- import { BeakerIcon } from '@heroicons/react/24/outline';
101
-
102
- interface IconProps {
103
- className?: string;
104
- }
105
-
106
- export const IconName: React.FC<IconProps> = ({ className = 'size-5' }) => (
107
- <BeakerIcon
108
- className={className}
109
- aria-hidden="true"
110
- />
111
- );
112
- ```
113
-
114
- ### Características Clave
115
-
116
- 1. **Librería Estándar**: Uso de Heroicons Outline (24x24px) vía `@heroicons/react/24/outline`.
117
- 2. **TypeScript**: Interfaz `IconProps` para type safety.
118
- 3. **Color Heredado**: Los iconos de la librería heredan automáticamente `fill="none" stroke="currentColor"`.
119
- 4. **className**: Permite personalización con Tailwind CSS (ej: `size-5`, `text-primary`).
120
- 5. **Accesibilidad**: Inclusión de `aria-hidden="true"` para iconos decorativos.
121
-
122
- ---
123
-
124
- ## Guía de Uso
125
-
126
- ### 1. Importación
127
-
128
- ```typescript
129
- // Importar iconos específicos
130
- import { PlusIcon, CheckIcon } from '@/components/Button/icons';
131
- import { EnvelopeIcon, UserIcon } from '@/components/Input/icons';
132
- ```
133
-
134
- ### 2. Uso Básico
135
-
136
- ```tsx
137
- // Icono básico (hereda color del texto padre)
138
- <PlusIcon />
139
-
140
- // Con tamaño personalizado
141
- <UserIcon className="w-5 h-5" />
142
-
143
- // Con color personalizado
144
- <CheckIcon className="w-4 h-4 text-green-600" />
145
- ```
146
-
147
- ### 3. En Componentes
148
-
149
- #### Button con Iconos
150
-
151
- ```tsx
152
- import { Button } from '@/components/Button';
153
- import { PlusIcon, ArrowRightIcon } from '@/components/Button/icons';
154
-
155
- // Icon only button
156
- <Button iconOnly leftIcon={<PlusIcon />} ariaLabel="Añadir" />
157
-
158
- // Button con icono izquierdo
159
- <Button leftIcon={<PlusIcon />}>
160
- Crear Nuevo
161
- </Button>
162
-
163
- // Button con icono derecho
164
- <Button rightIcon={<ArrowRightIcon />}>
165
- Continuar
166
- </Button>
167
-
168
- // Button con ambos iconos
169
- <Button
170
- leftIcon={<CheckIcon />}
171
- rightIcon={<ArrowRightIcon />}
172
- >
173
- Guardar y Continuar
174
- </Button>
175
- ```
176
-
177
- #### Input con Iconos
178
-
179
- ```tsx
180
- import { Input } from '@/components/Input';
181
- import { EnvelopeIcon, EyeIcon } from '@/components/Input/icons';
182
-
183
- // Input con icono izquierdo
184
- <Input
185
- leftIcon={<EnvelopeIcon />}
186
- placeholder="correo@ejemplo.com"
187
- type="email"
188
- />
189
-
190
- // Input con icono derecho
191
- <Input
192
- rightIcon={<EyeIcon />}
193
- placeholder="Contraseña"
194
- type="password"
195
- />
196
- ```
197
-
198
- ### 4. Estados y Temas
199
-
200
- Los iconos heredan automáticamente el color del contexto:
201
-
202
- ```tsx
203
- // En modo claro (hereda color del texto)
204
- <Button type="default">
205
- <PlusIcon /> {/* Hereda text-primary-inverse-content */}
206
- </Button>
207
-
208
- // En modo oscuro (se adapta automáticamente)
209
- <div className="dark">
210
- <Button type="outline">
211
- <UserIcon /> {/* Hereda dark:text-dark-content-primary */}
212
- </Button>
213
- </div>
214
-
215
- // Estados disabled
216
- <Button disabled>
217
- <CheckIcon /> {/* Hereda opacity-50 del botón */}
218
- </Button>
219
- ```
220
-
221
- ---
222
-
223
- ## Modo Oscuro (Dark Mode)
224
-
225
- ### Configuración de Tailwind CSS
226
-
227
- El modo oscuro en Siesa UI Kit se basa en la estrategia de clases de Tailwind CSS:
228
-
229
- ```javascript
230
- // tailwind.config.js
231
- module.exports = {
232
- darkMode: 'class', // ✅ Estrategia basada en clases (NO 'media')
233
- // ...resto de la configuración
234
- }
235
- ```
236
-
237
- Con esta configuración, el modo oscuro se activa añadiendo la clase `.dark` al elemento `<html>`:
238
-
239
- ```html
240
- <!-- Modo claro -->
241
- <html>
242
- <body>
243
- <!-- Contenido en modo claro -->
244
- </body>
245
- </html>
246
-
247
- <!-- Modo oscuro -->
248
- <html class="dark">
249
- <body>
250
- <!-- Contenido en modo oscuro -->
251
- </body>
252
- </html>
253
- ```
254
-
255
- ### El Modificador `dark:`
256
-
257
- El modificador `dark:` de Tailwind funciona como un **prefijo condicional** que aplica estilos solo cuando la clase `.dark` está presente en un elemento padre (típicamente `<html>`).
258
-
259
- #### Sintaxis Básica
260
-
261
- ```tsx
262
- // Patrón básico
263
- <Icon className="text-content-primary dark:text-dark-content-primary" />
264
-
265
- // El icono usa:
266
- // - text-content-primary en modo claro
267
- // - text-dark-content-primary en modo oscuro
268
- ```
269
-
270
- #### Herencia de Color con currentColor
271
-
272
- Los iconos usan `fill="currentColor"`, lo que significa que heredan el color del texto del elemento padre:
273
-
274
- ```tsx
275
- // El icono hereda el color del div padre
276
- <div className="text-content-primary dark:text-dark-content-primary">
277
- <UserIcon /> {/* Automáticamente se adapta */}
278
- </div>
279
-
280
- // Equivalente a especificar el color directamente en el icono
281
- <UserIcon className="text-content-primary dark:text-dark-content-primary" />
282
- ```
283
-
284
- ### Combinando con Otros Modificadores
285
-
286
- El modificador `dark:` se puede combinar con hover, focus, active, y responsive:
287
-
288
- ```tsx
289
- // Dark mode + Hover
290
- <button className="text-gray-700 hover:text-blue-600 dark:text-gray-300 dark:hover:text-blue-400">
291
- <PlusIcon />
292
- </button>
293
-
294
- // Dark mode + Focus
295
- <input className="text-content-primary focus:text-primary-custom-600 dark:text-dark-content-primary dark:focus:text-blue-400">
296
- <MagnifyingGlassIcon />
297
- </input>
298
-
299
- // Dark mode + Responsive
300
- <div className="text-gray-900 md:text-blue-600 dark:text-white dark:md:text-blue-400">
301
- <CheckIcon />
302
- </div>
303
-
304
- // Dark mode + Group hover
305
- <div className="group">
306
- <button className="text-gray-700 dark:text-gray-300">
307
- <ArrowRightIcon className="
308
- text-gray-500
309
- group-hover:text-blue-600
310
- dark:text-gray-400
311
- dark:group-hover:text-blue-400
312
- " />
313
- </button>
314
- </div>
315
- ```
316
-
317
- ### Orden de Modificadores
318
-
319
- Tailwind CSS recomienda un orden específico para los modificadores:
320
-
321
- **Formato**: `{responsive}:{dark}:{state}:{utility}`
322
-
323
- ```tsx
324
- // ✅ CORRECTO - Orden: responsive → dark → state → utility
325
- <button className="
326
- md:text-gray-700
327
- md:dark:text-gray-300
328
- md:dark:hover:text-blue-400
329
- ">
330
- <PlusIcon />
331
- </button>
332
-
333
- // ❌ INCORRECTO - Orden equivocado
334
- <button className="
335
- dark:md:hover:text-blue-400
336
- ">
337
- <PlusIcon />
338
- </button>
339
- ```
340
-
341
- ### Tabla de Estados con Hover
342
-
343
- | Estado | Light Mode | Dark Mode | Descripción |
344
- |--------|------------|-----------|-------------|
345
- | **Default** | `text-content-primary` | `dark:text-dark-content-primary` | Color principal del icono |
346
- | **Hover** | `hover:text-primary-custom-600` | `dark:hover:text-blue-400` | Color al pasar el mouse |
347
- | **Focus** | `focus:text-primary-custom-600` | `dark:focus:text-blue-400` | Color al enfocar |
348
- | **Active** | `active:text-primary-custom-700` | `dark:active:text-blue-500` | Color al hacer clic |
349
- | **Disabled** | `text-content-tertiary` | `dark:text-dark-content-tertiary` | Color deshabilitado |
350
- | **Error** | `text-error-content` | `dark:text-red-400` | Color de error |
351
- | **Success** | `text-green-600` | `dark:text-green-400` | Color de éxito |
352
-
353
- ### Implementación del Toggle Dark Mode
354
-
355
- #### Implementación Básica con JavaScript
356
-
357
- ```typescript
358
- // utils/darkMode.ts
359
- export const toggleDarkMode = () => {
360
- const isDark = document.documentElement.classList.contains('dark');
361
-
362
- if (isDark) {
363
- document.documentElement.classList.remove('dark');
364
- localStorage.setItem('theme', 'light');
365
- } else {
366
- document.documentElement.classList.add('dark');
367
- localStorage.setItem('theme', 'dark');
368
- }
369
- };
370
-
371
- // Cargar el tema al iniciar la aplicación
372
- export const loadTheme = () => {
373
- const savedTheme = localStorage.getItem('theme');
374
- const prefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches;
375
-
376
- if (savedTheme === 'dark' || (!savedTheme && prefersDark)) {
377
- document.documentElement.classList.add('dark');
378
- } else {
379
- document.documentElement.classList.remove('dark');
380
- }
381
- };
382
- ```
383
-
384
- #### Prevenir Flash de Contenido (FOUC)
385
-
386
- Añadir este script en el `<head>` del HTML antes de que React se cargue:
387
-
388
- ```html
389
- <!-- index.html -->
390
- <head>
391
- <script>
392
- // Aplicar tema inmediatamente antes del render
393
- (function() {
394
- const theme = localStorage.getItem('theme');
395
- const prefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches;
396
-
397
- if (theme === 'dark' || (!theme && prefersDark)) {
398
- document.documentElement.classList.add('dark');
399
- }
400
- })();
401
- </script>
402
- </head>
403
- ```
404
-
405
- ### Ejemplos Completos
406
-
407
- #### Ejemplo 1: Toolbar de Iconos con Dark Mode
408
-
409
- ```tsx
410
- import { Button } from '@/components/Button';
411
- import { PlusIcon, CheckIcon, XIcon } from '@/components/Button/icons';
412
-
413
- export const IconToolbar = () => {
414
- return (
415
- <div className="
416
- flex gap-2 p-4
417
- bg-white dark:bg-dark-bg-primary
418
- border-b border-border-primary dark:border-dark-border-primary
419
- ">
420
- {/* Icono con hover adaptado */}
421
- <Button
422
- iconOnly
423
- type="outline"
424
- leftIcon={<PlusIcon />}
425
- ariaLabel="Añadir"
426
- className="
427
- text-content-primary dark:text-dark-content-primary
428
- hover:text-primary-custom-600 dark:hover:text-blue-400
429
- hover:bg-gray-100 dark:hover:bg-gray-800
430
- "
431
- />
432
-
433
- {/* Icono de éxito */}
434
- <Button
435
- iconOnly
436
- type="outline"
437
- leftIcon={<CheckIcon />}
438
- ariaLabel="Guardar"
439
- className="
440
- text-green-600 dark:text-green-400
441
- hover:text-green-700 dark:hover:text-green-300
442
- hover:bg-green-50 dark:hover:bg-green-900/20
443
- "
444
- />
445
-
446
- {/* Icono de error */}
447
- <Button
448
- iconOnly
449
- type="outline"
450
- leftIcon={<XIcon />}
451
- ariaLabel="Cancelar"
452
- className="
453
- text-error-content dark:text-red-400
454
- hover:text-red-700 dark:hover:text-red-300
455
- hover:bg-red-50 dark:hover:bg-red-900/20
456
- "
457
- />
458
- </div>
459
- );
460
- };
461
- ```
462
-
463
- #### Ejemplo 2: Formulario con Iconos Adaptativos
464
-
465
- ```tsx
466
- import { Input } from '@/components/Input';
467
- import { UserIcon, LockClosedIcon, EnvelopeIcon } from '@/components/Input/icons';
468
- import { Button } from '@/components/Button';
469
- import { ArrowRightIcon, CheckIcon } from '@/components/Button/icons';
470
-
471
- export const AdaptiveForm = () => {
472
- return (
473
- <div className="
474
- w-full max-w-md p-6
475
- bg-white dark:bg-dark-bg-primary
476
- border border-border-primary dark:border-dark-border-primary
477
- rounded-2xl
478
- shadow-base dark:shadow-lg
479
- ">
480
- <h2 className="
481
- mb-6
482
- text-content-primary dark:text-dark-content-primary
483
- font-bold text-xl
484
- ">
485
- Iniciar Sesión
486
- </h2>
487
-
488
- <form className="space-y-4">
489
- {/* Input de email con icono */}
490
- <Input
491
- label="Correo Electrónico"
492
- type="email"
493
- leftIcon={
494
- <EnvelopeIcon className="
495
- text-content-secondary dark:text-dark-content-secondary
496
- " />
497
- }
498
- placeholder="tu@email.com"
499
- className="
500
- text-content-primary dark:text-dark-content-primary
501
- bg-bg-primary dark:bg-dark-bg-secondary
502
- border-border-primary dark:border-dark-border-primary
503
- focus:border-primary-custom-600 dark:focus:border-blue-400
504
- "
505
- />
506
-
507
- {/* Input de usuario con icono */}
508
- <Input
509
- label="Usuario"
510
- leftIcon={
511
- <UserIcon className="
512
- text-content-secondary dark:text-dark-content-secondary
513
- " />
514
- }
515
- placeholder="Tu usuario"
516
- className="
517
- text-content-primary dark:text-dark-content-primary
518
- bg-bg-primary dark:bg-dark-bg-secondary
519
- "
520
- />
521
-
522
- {/* Input de contraseña con icono */}
523
- <Input
524
- label="Contraseña"
525
- type="password"
526
- leftIcon={
527
- <LockClosedIcon className="
528
- text-content-secondary dark:text-dark-content-secondary
529
- " />
530
- }
531
- placeholder="Tu contraseña"
532
- className="
533
- text-content-primary dark:text-dark-content-primary
534
- bg-bg-primary dark:bg-dark-bg-secondary
535
- "
536
- />
537
-
538
- {/* Botón de submit con icono */}
539
- <Button
540
- type="default"
541
- fullWidth
542
- rightIcon={<ArrowRightIcon />}
543
- className="
544
- bg-primary-custom-600 dark:bg-dark-bg-inverse
545
- text-primary-inverse-content dark:text-dark-content-inverse
546
- hover:bg-primary-custom-500 dark:hover:bg-dark-bg-inverse/90
547
- "
548
- >
549
- Continuar
550
- </Button>
551
- </form>
552
- </div>
553
- );
554
- };
555
- ```
556
-
557
- #### Ejemplo 3: Status Icons con Colores Adaptativos
558
-
559
- ```tsx
560
- import { CheckIcon, ExclamationCircleIcon, XMarkIcon } from '@/components/Input/icons';
561
-
562
- export const StatusMessages = () => {
563
- return (
564
- <div className="space-y-3">
565
- {/* Mensaje de éxito */}
566
- <div className="
567
- flex items-center gap-3 p-4
568
- bg-green-50 dark:bg-green-900/20
569
- border border-green-200 dark:border-green-800
570
- rounded-lg
571
- ">
572
- <CheckIcon className="
573
- w-5 h-5
574
- text-green-600 dark:text-green-400
575
- " />
576
- <p className="
577
- text-green-800 dark:text-green-300
578
- font-medium
579
- ">
580
- Operación completada con éxito
581
- </p>
582
- </div>
583
-
584
- {/* Mensaje de advertencia */}
585
- <div className="
586
- flex items-center gap-3 p-4
587
- bg-yellow-50 dark:bg-yellow-900/20
588
- border border-yellow-200 dark:border-yellow-800
589
- rounded-lg
590
- ">
591
- <ExclamationCircleIcon className="
592
- w-5 h-5
593
- text-yellow-600 dark:text-yellow-400
594
- " />
595
- <p className="
596
- text-yellow-800 dark:text-yellow-300
597
- font-medium
598
- ">
599
- Advertencia: Revisa la información
600
- </p>
601
- </div>
602
-
603
- {/* Mensaje de error */}
604
- <div className="
605
- flex items-center gap-3 p-4
606
- bg-red-50 dark:bg-red-900/20
607
- border border-red-200 dark:border-red-800
608
- rounded-lg
609
- ">
610
- <XMarkIcon className="
611
- w-5 h-5
612
- text-error-content dark:text-red-400
613
- " />
614
- <p className="
615
- text-red-800 dark:text-red-300
616
- font-medium
617
- ">
618
- Error: No se pudo completar la operación
619
- </p>
620
- </div>
621
- </div>
622
- );
623
- };
624
- ```
625
-
626
- #### Ejemplo 4: Icon Button con Group Hover
627
-
628
- ```tsx
629
- import { ArrowRightIcon } from '@/components/Button/icons';
630
-
631
- export const NavigationCard = () => {
632
- return (
633
- <button className="
634
- group
635
- w-full p-6
636
- bg-white dark:bg-dark-bg-primary
637
- border border-border-primary dark:border-dark-border-primary
638
- rounded-xl
639
- hover:border-primary-custom-600 dark:hover:border-blue-400
640
- hover:shadow-lg
641
- transition-all
642
- text-left
643
- ">
644
- <div className="flex items-center justify-between">
645
- <div>
646
- <h3 className="
647
- mb-2
648
- text-content-primary dark:text-dark-content-primary
649
- font-bold text-lg
650
- group-hover:text-primary-custom-600 dark:group-hover:text-blue-400
651
- ">
652
- Ir a la Configuración
653
- </h3>
654
- <p className="
655
- text-content-secondary dark:text-dark-content-secondary
656
- text-sm
657
- ">
658
- Administra las preferencias del sistema
659
- </p>
660
- </div>
661
-
662
- {/* Icono que se anima y cambia de color en hover */}
663
- <ArrowRightIcon className="
664
- w-6 h-6
665
- text-content-tertiary dark:text-dark-content-tertiary
666
- group-hover:text-primary-custom-600 dark:group-hover:text-blue-400
667
- group-hover:translate-x-1
668
- transition-all
669
- " />
670
- </div>
671
- </button>
672
- );
673
- };
674
- ```
675
-
676
- ### Mejores Prácticas para Iconos en Dark Mode
677
-
678
- #### ✅ Hacer
679
-
680
- 1. **Usar tokens semánticos que se adaptan automáticamente**
681
- ```tsx
682
- // ✅ CORRECTO - Los tokens ya incluyen dark mode
683
- <UserIcon className="text-content-primary dark:text-dark-content-primary" />
684
- ```
685
-
686
- 2. **Aprovechar currentColor para heredar colores del padre**
687
- ```tsx
688
- // ✅ CORRECTO - El icono hereda el color
689
- <div className="text-primary-custom-600 dark:text-blue-400">
690
- <EnvelopeIcon />
691
- </div>
692
- ```
693
-
694
- 3. **Usar colores más brillantes en dark mode**
695
- ```tsx
696
- // ✅ CORRECTO - Ajustar intensidad para dark mode
697
- <CheckIcon className="text-green-600 dark:text-green-400" />
698
- ```
699
-
700
- 4. **Combinar con estados hover y focus**
701
- ```tsx
702
- // ✅ CORRECTO - Estados completos
703
- <button className="
704
- text-gray-700 dark:text-gray-300
705
- hover:text-blue-600 dark:hover:text-blue-400
706
- ">
707
- <PlusIcon />
708
- </button>
709
- ```
710
-
711
- 5. **Reducir opacidad de iconos secundarios en dark mode**
712
- ```tsx
713
- // ✅ CORRECTO - Jerarquía visual
714
- <QuestionMarkCircleIcon className="
715
- text-content-secondary/70 dark:text-dark-content-secondary/60
716
- " />
717
- ```
718
-
719
- #### ❌ Evitar
720
-
721
- 1. **No usar el mismo color para light y dark mode**
722
- ```tsx
723
- // ❌ INCORRECTO - Sin dark variant
724
- <UserIcon className="text-gray-900" />
725
-
726
- // ✅ CORRECTO
727
- <UserIcon className="text-gray-900 dark:text-gray-100" />
728
- ```
729
-
730
- 2. **No hardcodear colores sin considerar contraste**
731
- ```tsx
732
- // ❌ INCORRECTO - Pobre contraste en dark mode
733
- <CheckIcon className="text-gray-300" />
734
-
735
- // ✅ CORRECTO - Buen contraste en ambos modos
736
- <CheckIcon className="text-green-600 dark:text-green-400" />
737
- ```
738
-
739
- 3. **No olvidar estados interactivos**
740
- ```tsx
741
- // ❌ INCORRECTO - Sin hover para dark mode
742
- <button className="hover:text-blue-600">
743
- <PlusIcon />
744
- </button>
745
-
746
- // ✅ CORRECTO
747
- <button className="hover:text-blue-600 dark:hover:text-blue-400">
748
- <PlusIcon />
749
- </button>
750
- ```
751
-
752
- 4. **No usar colores muy oscuros en dark mode**
753
- ```tsx
754
- // ❌ INCORRECTO - Invisible en fondo oscuro
755
- <XIcon className="text-gray-900 dark:text-gray-900" />
756
-
757
- // ✅ CORRECTO - Visible en ambos modos
758
- <XIcon className="text-gray-900 dark:text-gray-100" />
759
- ```
760
-
761
- ### Guía Rápida: Colores de Iconos por Contexto
762
-
763
- | Contexto | Light Mode | Dark Mode | Ejemplo |
764
- |----------|------------|-----------|---------|
765
- | **Icono Principal** | `text-content-primary` | `dark:text-dark-content-primary` | Iconos en botones principales |
766
- | **Icono Secundario** | `text-content-secondary` | `dark:text-dark-content-secondary` | Iconos decorativos |
767
- | **Icono Terciario** | `text-content-tertiary` | `dark:text-dark-content-tertiary` | Iconos de ayuda |
768
- | **Icono Interactivo** | `text-gray-700 hover:text-blue-600` | `dark:text-gray-300 dark:hover:text-blue-400` | Botones icon-only |
769
- | **Icono de Éxito** | `text-green-600` | `dark:text-green-400` | Check, confirmación |
770
- | **Icono de Error** | `text-error-content` | `dark:text-red-400` | X, advertencias |
771
- | **Icono de Info** | `text-blue-600` | `dark:text-blue-400` | Información, ayuda |
772
- | **Icono Deshabilitado** | `text-content-tertiary opacity-50` | `dark:text-dark-content-tertiary opacity-50` | Elementos inactivos |
773
-
774
- ### Recursos Adicionales
775
-
776
- Para más información sobre el modo oscuro:
777
- - Ver `docs/dark-mode-guide.md` - Guía completa de Dark Mode en Tailwind CSS
778
- - Ver `docs/colors.md` - Sistema de colores completo con tokens dark mode
779
- - [Documentación oficial de Tailwind Dark Mode](https://tailwindcss.com/docs/dark-mode)
780
-
781
- ---
782
-
783
- ## Accesibilidad
784
-
785
- ### Consideraciones de Accesibilidad
786
-
787
- #### 1. Iconos Decorativos
788
-
789
- Cuando el icono acompaña texto visible, es decorativo:
790
-
791
- ```tsx
792
- // ✅ CORRECTO: El texto describe la acción
793
- <Button leftIcon={<PlusIcon />}>
794
- Crear Usuario
795
- </Button>
796
- // No se necesita aria-label adicional
797
- ```
798
-
799
- #### 2. Iconos Funcionales (Icon-Only)
800
-
801
- Cuando el icono es el único elemento visual:
802
-
803
- ```tsx
804
- // ✅ CORRECTO: Usar aria-label
805
- <Button
806
- iconOnly
807
- leftIcon={<PlusIcon />}
808
- ariaLabel="Añadir nuevo elemento"
809
- />
810
-
811
- // ❌ INCORRECTO: Sin aria-label
812
- <Button iconOnly leftIcon={<PlusIcon />} />
813
- // Los lectores de pantalla no sabrán la función
814
- ```
815
-
816
- #### 3. Iconos con Significado
817
-
818
- En contextos donde el icono comunica información:
819
-
820
- ```tsx
821
- // ✅ CORRECTO: Añadir rol y aria-label
822
- <span role="img" aria-label="Estado: Exitoso">
823
- <CheckIcon className="text-green-600" />
824
- </span>
825
-
826
- // ✅ CORRECTO: Con texto de soporte visible
827
- <div className="flex items-center gap-2">
828
- <ExclamationCircleIcon className="text-error-content" />
829
- <span>Error en la validación</span>
830
- </div>
831
- ```
832
-
833
- #### 4. Tooltips para Contexto Adicional
834
-
835
- ```tsx
836
- // ✅ MEJOR PRÁCTICA: Icono + Tooltip
837
- <button
838
- className="p-2"
839
- aria-label="Ayuda"
840
- title="Obtener ayuda sobre este campo"
841
- >
842
- <QuestionMarkCircleIcon />
843
- </button>
844
- ```
845
-
846
- ### Directrices WCAG 2.1
847
-
848
- - **Nivel A**: Todos los iconos funcionales deben tener texto alternativo
849
- - **Nivel AA**: Contraste mínimo 3:1 para iconos (se cumple con currentColor)
850
- - **Nivel AAA**: Proveer texto descriptivo adicional cuando sea posible
851
-
852
- ---
853
-
854
- ## Ejemplos de Código
855
-
856
- ### Ejemplo 1: Toolbar de Acciones
857
-
858
- ```tsx
859
- import { Button } from '@/components/Button';
860
- import { PlusIcon, CheckIcon, XIcon } from '@/components/Button/icons';
861
-
862
- export const ActionToolbar = () => {
863
- return (
864
- <div className="flex gap-2 p-4 bg-bg-primary border-b border-border-primary">
865
- {/* Botones icon-only con tooltips */}
866
- <Button
867
- iconOnly
868
- size="base"
869
- type="default"
870
- leftIcon={<PlusIcon />}
871
- ariaLabel="Añadir nuevo registro"
872
- title="Añadir nuevo registro"
873
- />
874
-
875
- <Button
876
- iconOnly
877
- size="base"
878
- type="outline"
879
- leftIcon={<CheckIcon />}
880
- ariaLabel="Guardar cambios"
881
- title="Guardar cambios"
882
- />
883
-
884
- <Button
885
- iconOnly
886
- size="base"
887
- type="plain"
888
- leftIcon={<XIcon />}
889
- ariaLabel="Cancelar operación"
890
- title="Cancelar operación"
891
- />
892
- </div>
893
- );
894
- };
895
- ```
896
-
897
- ### Ejemplo 2: Formulario de Login
898
-
899
- ```tsx
900
- import { Input } from '@/components/Input';
901
- import { Button } from '@/components/Button';
902
- import {
903
- UserIcon,
904
- LockClosedIcon,
905
- EyeIcon,
906
- EyeSlashIcon
907
- } from '@/components/Input/icons';
908
- import { ArrowRightIcon } from '@/components/Button/icons';
909
- import { useState } from 'react';
910
-
911
- export const LoginForm = () => {
912
- const [showPassword, setShowPassword] = useState(false);
913
-
914
- return (
915
- <form className="space-y-4 w-full max-w-sm">
916
- {/* Usuario */}
917
- <Input
918
- label="Usuario"
919
- name="username"
920
- leftIcon={<UserIcon />}
921
- placeholder="Ingrese su usuario"
922
- required
923
- />
924
-
925
- {/* Contraseña con toggle */}
926
- <Input
927
- label="Contraseña"
928
- name="password"
929
- type={showPassword ? 'text' : 'password'}
930
- leftIcon={<LockClosedIcon />}
931
- rightIcon={
932
- <button
933
- type="button"
934
- onClick={() => setShowPassword(!showPassword)}
935
- className="cursor-pointer"
936
- aria-label={showPassword ? 'Ocultar contraseña' : 'Mostrar contraseña'}
937
- >
938
- {showPassword ? <EyeSlashIcon /> : <EyeIcon />}
939
- </button>
940
- }
941
- placeholder="Ingrese su contraseña"
942
- required
943
- />
944
-
945
- {/* Submit */}
946
- <Button
947
- type="default"
948
- size="base"
949
- fullWidth
950
- rightIcon={<ArrowRightIcon />}
951
- htmlType="submit"
952
- >
953
- Iniciar Sesión
954
- </Button>
955
- </form>
956
- );
957
- };
958
- ```
959
-
960
- ### Ejemplo 3: Search Input con Estados
961
-
962
- ```tsx
963
- import { Input } from '@/components/Input';
964
- import {
965
- MagnifyingGlassIcon,
966
- XMarkIcon,
967
- CheckIcon,
968
- ExclamationCircleIcon
969
- } from '@/components/Input/icons';
970
- import { useState } from 'react';
971
-
972
- export const SearchInput = () => {
973
- const [query, setQuery] = useState('');
974
- const [status, setStatus] = useState<'idle' | 'searching' | 'success' | 'error'>('idle');
975
-
976
- const getStatusIcon = () => {
977
- switch (status) {
978
- case 'success':
979
- return <CheckIcon className="text-green-600" />;
980
- case 'error':
981
- return <ExclamationCircleIcon className="text-error-content" />;
982
- default:
983
- return null;
984
- }
985
- };
986
-
987
- return (
988
- <div className="w-full max-w-md">
989
- <Input
990
- label="Búsqueda"
991
- value={query}
992
- onChange={(e) => setQuery(e.target.value)}
993
- leftIcon={<MagnifyingGlassIcon />}
994
- rightIcon={
995
- query ? (
996
- <button
997
- type="button"
998
- onClick={() => setQuery('')}
999
- aria-label="Limpiar búsqueda"
1000
- className="cursor-pointer hover:text-primary-custom-600"
1001
- >
1002
- <XMarkIcon />
1003
- </button>
1004
- ) : (
1005
- getStatusIcon()
1006
- )
1007
- }
1008
- placeholder="Buscar..."
1009
- helperText={
1010
- status === 'error' ? 'No se encontraron resultados' : undefined
1011
- }
1012
- error={status === 'error'}
1013
- />
1014
- </div>
1015
- );
1016
- };
1017
- ```
1018
-
1019
- ---
1020
-
1021
- ## Mejores Prácticas
1022
-
1023
- ### ✅ Hacer
1024
-
1025
- 1. **Usar iconos semánticamente apropiados**
1026
- ```tsx
1027
- // ✅ CORRECTO
1028
- <Button leftIcon={<PlusIcon />}>Añadir</Button>
1029
- <Button leftIcon={<CheckIcon />}>Guardar</Button>
1030
- ```
1031
-
1032
- 2. **Mantener el tamaño de 16px en la mayoría de casos**
1033
- ```tsx
1034
- // ✅ CORRECTO - tamaño por defecto
1035
- <UserIcon className="w-4 h-4" />
1036
- ```
1037
-
1038
- 3. **Usar currentColor para heredar el color del contexto**
1039
- ```tsx
1040
- // ✅ CORRECTO - el icono hereda el color
1041
- <div className="text-primary-custom-600">
1042
- <EnvelopeIcon />
1043
- </div>
1044
- ```
1045
-
1046
- 4. **Proveer aria-label en botones icon-only**
1047
- ```tsx
1048
- // ✅ CORRECTO
1049
- <Button iconOnly leftIcon={<XIcon />} ariaLabel="Cerrar" />
1050
- ```
1051
-
1052
- 5. **Agrupar iconos relacionados en el mismo archivo**
1053
- ```tsx
1054
- // ✅ CORRECTO - iconos de un componente juntos
1055
- // src/components/Button/icons.tsx
1056
- ```
1057
-
1058
- ### ❌ Evitar
1059
-
1060
- 1. **No mezclar diferentes estilos de iconos**
1061
- ```tsx
1062
- // ❌ INCORRECTO - mezclar Heroicons con otros
1063
- <PlusIcon /> {/* Heroicons Micro */}
1064
- <SomeOtherIcon /> {/* Otra librería */}
1065
- ```
1066
-
1067
- 2. **No usar tamaños inconsistentes sin razón**
1068
- ```tsx
1069
- // ❌ INCORRECTO - tamaños arbitrarios
1070
- <UserIcon className="w-7 h-7" />
1071
- <EnvelopeIcon className="w-3 h-3" />
1072
- ```
1073
-
1074
- 3. **No hardcodear colores directamente en el SVG**
1075
- ```tsx
1076
- // ❌ INCORRECTO - hardcodear fill
1077
- <svg fill="#0e79fd">...</svg>
1078
-
1079
- // ✅ CORRECTO - usar currentColor
1080
- <svg fill="currentColor">...</svg>
1081
- ```
1082
-
1083
- 4. **No omitir aria-label en iconos funcionales**
1084
- ```tsx
1085
- // ❌ INCORRECTO
1086
- <button><XIcon /></button>
1087
-
1088
- // ✅ CORRECTO
1089
- <button aria-label="Cerrar"><XIcon /></button>
1090
- ```
1091
-
1092
- 5. **No usar iconos como única forma de comunicación**
1093
- ```tsx
1094
- // ❌ INCORRECTO - solo icono sin contexto
1095
- <div><ExclamationCircleIcon /></div>
1096
-
1097
- // ✅ CORRECTO - icono + texto
1098
- <div className="flex gap-2">
1099
- <ExclamationCircleIcon />
1100
- <span>Error: Campo requerido</span>
1101
- </div>
1102
- ```
1103
-
1104
- ### Rendimiento
1105
-
1106
- - **✅ SVG Inline**: Mejor para iconos que se usan frecuentemente
1107
- - **✅ Tree-shaking**: Importar solo los iconos necesarios
1108
- - **✅ Evitar re-renders**: Los iconos son componentes puros
1109
- - **✅ Memoización**: React.memo si se pasan como props frecuentemente
1110
-
1111
- ```tsx
1112
- // ✅ CORRECTO - memoizar icono si se pasa como prop
1113
- const MemoizedIcon = React.memo(PlusIcon);
1114
-
1115
- // En componente padre
1116
- <Button leftIcon={<MemoizedIcon />}>Añadir</Button>
1117
- ```
1118
-
1119
- ---
1120
-
1121
- ## Referencia Rápida
1122
-
1123
- ### Cheat Sheet: Importaciones
1124
-
1125
- ```typescript
1126
- // Iconos de Button
1127
- import {
1128
- PlusIcon, // Añadir/Crear
1129
- ChevronDownIcon, // Dropdown
1130
- ArrowRightIcon, // Navegación
1131
- CheckIcon, // Confirmar
1132
- XIcon // Cerrar/Cancelar
1133
- } from '@/components/Button/icons';
1134
-
1135
- // Iconos de Input
1136
- import {
1137
- EnvelopeIcon, // Email
1138
- QuestionMarkCircleIcon, // Ayuda
1139
- UserIcon, // Usuario
1140
- LockClosedIcon, // Seguridad
1141
- MagnifyingGlassIcon, // Búsqueda
1142
- EyeIcon, // Ver password
1143
- EyeSlashIcon, // Ocultar password
1144
- XMarkIcon, // Limpiar
1145
- CheckIcon, // Éxito
1146
- ExclamationCircleIcon // Error
1147
- } from '@/components/Input/icons';
1148
- ```
1149
-
1150
- ### Cheat Sheet: Tamaños Comunes
1151
-
1152
- | Clase Tailwind | Tamaño | Uso |
1153
- |----------------|--------|-----|
1154
- | `w-4 h-4` | 16px | **Default** - Botones, inputs |
1155
- | `w-5 h-5` | 20px | Iconos destacados |
1156
- | `w-6 h-6` | 24px | Headers, títulos |
1157
- | `w-8 h-8` | 32px | Iconos grandes, heros |
1158
-
1159
- ### Cheat Sheet: Colores Comunes
1160
-
1161
- ```tsx
1162
- // Primary
1163
- <Icon className="text-primary-custom-600" />
1164
-
1165
- // Éxito (Verde)
1166
- <CheckIcon className="text-green-600" />
1167
-
1168
- // Error (Rojo)
1169
- <ExclamationCircleIcon className="text-error-content" />
1170
-
1171
- // Secundario (Gris)
1172
- <Icon className="text-content-secondary" />
1173
-
1174
- // Dark Mode (automático)
1175
- <Icon className="text-content-primary dark:text-dark-content-primary" />
1176
- ```
1177
-
1178
- ### Cheat Sheet: Patrones de Uso
1179
-
1180
- ```tsx
1181
- // 1. Icon-only Button
1182
- <Button iconOnly leftIcon={<PlusIcon />} ariaLabel="Añadir" />
1183
-
1184
- // 2. Button con texto e icono
1185
- <Button leftIcon={<CheckIcon />}>Guardar</Button>
1186
-
1187
- // 3. Input con icono
1188
- <Input leftIcon={<UserIcon />} placeholder="Usuario" />
1189
-
1190
- // 4. Toggle icon
1191
- {visible ? <EyeIcon /> : <EyeSlashIcon />}
1192
-
1193
- // 5. Status icon
1194
- {status === 'success' ? <CheckIcon /> : <ExclamationCircleIcon />}
1195
- ```
1196
-
1197
- ---
1198
-
1199
- ## Añadir Nuevos Iconos
1200
-
1201
- ### Proceso para Agregar un Icono
1202
-
1203
- 1. **Obtener el SVG de Heroicons Micro**
1204
- - Visitar: https://heroicons.com
1205
- - Seleccionar versión "Micro" (16px)
1206
- - Copiar el código SVG
1207
-
1208
- 2. **Crear el Componente React**
1209
- ```tsx
1210
- // En el archivo icons.tsx correspondiente
1211
- export const NewIcon: React.FC<IconProps> = ({ className = '' }) => (
1212
- <svg
1213
- xmlns="http://www.w3.org/2000/svg"
1214
- viewBox="0 0 16 16"
1215
- fill="currentColor"
1216
- className={className}
1217
- >
1218
- {/* Pegar path(s) del SVG */}
1219
- <path d="..." />
1220
- </svg>
1221
- );
1222
- ```
1223
-
1224
- 3. **Documentar el Nuevo Icono**
1225
- - Añadir a la tabla de catálogo
1226
- - Incluir ejemplo de uso
1227
- - Especificar contexto apropiado
1228
-
1229
- 4. **Testing**
1230
- - Verificar en modo claro y oscuro
1231
- - Probar diferentes tamaños
1232
- - Validar accesibilidad
1233
-
1234
- ### Decisiones de Organización
1235
-
1236
- - **¿Dónde colocar el nuevo icono?**
1237
- - ¿Se usa en Button? → `src/components/Button/icons.tsx`
1238
- - ¿Se usa en Input? → `src/components/Input/icons.tsx`
1239
- - ¿Se usa en múltiples componentes? → Crear `src/shared/icons.tsx`
1240
-
1241
- ---
1242
-
1243
- ## Recursos Adicionales
1244
-
1245
- ### Enlaces Útiles
1246
-
1247
- - **Heroicons**: https://heroicons.com
1248
- - **Documentación Heroicons**: https://github.com/tailwindlabs/heroicons
1249
- - **WCAG Guidelines**: https://www.w3.org/WAI/WCAG21/quickref/
1250
- - **SVG Accessibility**: https://css-tricks.com/accessible-svgs/
1251
-
1252
- ### Archivos Relacionados
1253
-
1254
- - `src/components/Button/icons.tsx` - Iconos de botones
1255
- - `src/components/Input/icons.tsx` - Iconos de inputs
1256
- - `src/components/Button/Button.tsx` - Implementación de iconos en Button
1257
- - `docs/colors.md` - Sistema de colores (para colores de iconos)
1258
- - `docs/typography.md` - Sistema tipográfico
1259
-
1260
- ---
1261
-
1262
- **Última actualización**: 2025-11-11
1263
- **Versión**: 1.0.0
1264
- **Mantenedor**: Siesa UI Kit Team