siesa-ui-kit 1.0.5 → 1.0.7

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 (462) hide show
  1. package/README.md +115 -89
  2. package/dist/ButtonTest.d.ts +6 -0
  3. package/dist/ButtonTest.d.ts.map +1 -0
  4. package/dist/components/Alert/Alert.d.ts +23 -0
  5. package/dist/components/Alert/Alert.d.ts.map +1 -0
  6. package/dist/components/Alert/Alert.types.d.ts +46 -0
  7. package/dist/components/Alert/Alert.types.d.ts.map +1 -0
  8. package/dist/components/Avatar/Avatar.d.ts +41 -0
  9. package/dist/components/Avatar/Avatar.d.ts.map +1 -0
  10. package/dist/components/Avatar/Avatar.types.d.ts +46 -0
  11. package/dist/components/Avatar/Avatar.types.d.ts.map +1 -0
  12. package/dist/components/Badge/Badge.d.ts +42 -0
  13. package/dist/components/Badge/Badge.d.ts.map +1 -0
  14. package/dist/components/Badge/Badge.types.d.ts +32 -0
  15. package/dist/components/Badge/Badge.types.d.ts.map +1 -0
  16. package/dist/components/Button/Button.d.ts +84 -0
  17. package/dist/components/Button/Button.d.ts.map +1 -0
  18. package/dist/components/Button/Button.types.d.ts +162 -0
  19. package/dist/components/Button/Button.types.d.ts.map +1 -0
  20. package/dist/components/Button/icons.d.ts +26 -0
  21. package/dist/components/Button/icons.d.ts.map +1 -0
  22. package/{src/components/Button/index.ts → dist/components/Button/index.d.ts} +4 -3
  23. package/dist/components/Button/index.d.ts.map +1 -0
  24. package/dist/components/Checkbox/Checkbox.d.ts +31 -0
  25. package/dist/components/Checkbox/Checkbox.d.ts.map +1 -0
  26. package/dist/components/Checkbox/Checkbox.types.d.ts +53 -0
  27. package/dist/components/Checkbox/Checkbox.types.d.ts.map +1 -0
  28. package/dist/components/DescriptionList/DescriptionList.d.ts +38 -0
  29. package/dist/components/DescriptionList/DescriptionList.d.ts.map +1 -0
  30. package/dist/components/DescriptionList/DescriptionList.types.d.ts +27 -0
  31. package/dist/components/DescriptionList/DescriptionList.types.d.ts.map +1 -0
  32. package/dist/components/Divider/Divider.d.ts +33 -0
  33. package/dist/components/Divider/Divider.d.ts.map +1 -0
  34. package/dist/components/Divider/Divider.types.d.ts +22 -0
  35. package/dist/components/Divider/Divider.types.d.ts.map +1 -0
  36. package/dist/components/Dropdown/Dropdown.d.ts +66 -0
  37. package/dist/components/Dropdown/Dropdown.d.ts.map +1 -0
  38. package/dist/components/Dropdown/Dropdown.types.d.ts +124 -0
  39. package/dist/components/Dropdown/Dropdown.types.d.ts.map +1 -0
  40. package/dist/components/Dropdown/icons.d.ts +10 -0
  41. package/dist/components/Dropdown/icons.d.ts.map +1 -0
  42. package/{src/components/Dropdown/index.ts → dist/components/Dropdown/index.d.ts} +4 -8
  43. package/dist/components/Dropdown/index.d.ts.map +1 -0
  44. package/dist/components/DropdownItemCollapsible/DropdownItemCollapsible.d.ts +101 -0
  45. package/dist/components/DropdownItemCollapsible/DropdownItemCollapsible.d.ts.map +1 -0
  46. package/dist/components/DropdownItemCollapsible/DropdownItemCollapsible.types.d.ts +95 -0
  47. package/dist/components/DropdownItemCollapsible/DropdownItemCollapsible.types.d.ts.map +1 -0
  48. package/dist/components/DropdownItemCollapsible/icons.d.ts +19 -0
  49. package/dist/components/DropdownItemCollapsible/icons.d.ts.map +1 -0
  50. package/dist/components/DropdownItemCollapsible/index.d.ts +9 -0
  51. package/dist/components/DropdownItemCollapsible/index.d.ts.map +1 -0
  52. package/dist/components/DropdownItemHeading/DropdownItemHeading.d.ts +75 -0
  53. package/dist/components/DropdownItemHeading/DropdownItemHeading.d.ts.map +1 -0
  54. package/dist/components/DropdownItemHeading/DropdownItemHeading.types.d.ts +85 -0
  55. package/dist/components/DropdownItemHeading/DropdownItemHeading.types.d.ts.map +1 -0
  56. package/dist/components/DropdownItemHeading/icons.d.ts +48 -0
  57. package/dist/components/DropdownItemHeading/icons.d.ts.map +1 -0
  58. package/dist/components/DropdownItemHeading/index.d.ts +4 -0
  59. package/dist/components/DropdownItemHeading/index.d.ts.map +1 -0
  60. package/dist/components/Input/Input.d.ts +40 -0
  61. package/dist/components/Input/Input.d.ts.map +1 -0
  62. package/dist/components/Input/Input.types.d.ts +71 -0
  63. package/dist/components/Input/Input.types.d.ts.map +1 -0
  64. package/dist/components/Input/icons.d.ts +15 -0
  65. package/dist/components/Input/icons.d.ts.map +1 -0
  66. package/{src/components/Input/index.ts → dist/components/Input/index.d.ts} +3 -2
  67. package/dist/components/Input/index.d.ts.map +1 -0
  68. package/dist/components/LoginView/LoginView.d.ts +36 -0
  69. package/dist/components/LoginView/LoginView.d.ts.map +1 -0
  70. package/dist/components/LoginView/LoginView.types.d.ts +46 -0
  71. package/dist/components/LoginView/LoginView.types.d.ts.map +1 -0
  72. package/dist/components/LoginView/icons.d.ts +18 -0
  73. package/dist/components/LoginView/icons.d.ts.map +1 -0
  74. package/{src/components/LoginView/index.ts → dist/components/LoginView/index.d.ts} +4 -3
  75. package/dist/components/LoginView/index.d.ts.map +1 -0
  76. package/dist/components/Navbar/Navbar.d.ts +63 -0
  77. package/dist/components/Navbar/Navbar.d.ts.map +1 -0
  78. package/dist/components/Navbar/Navbar.types.d.ts +194 -0
  79. package/dist/components/Navbar/Navbar.types.d.ts.map +1 -0
  80. package/dist/components/Navbar/icons.d.ts +12 -0
  81. package/dist/components/Navbar/icons.d.ts.map +1 -0
  82. package/dist/components/Navbar/index.d.ts +4 -0
  83. package/dist/components/Navbar/index.d.ts.map +1 -0
  84. package/dist/components/NavigationBar/NavigationBar.d.ts +75 -0
  85. package/dist/components/NavigationBar/NavigationBar.d.ts.map +1 -0
  86. package/dist/components/NavigationBar/NavigationBar.types.d.ts +63 -0
  87. package/dist/components/NavigationBar/NavigationBar.types.d.ts.map +1 -0
  88. package/{src/components/NavigationBar/index.ts → dist/components/NavigationBar/index.d.ts} +3 -2
  89. package/dist/components/NavigationBar/index.d.ts.map +1 -0
  90. package/dist/components/NavigationRail/NavigationRail.d.ts +7 -0
  91. package/dist/components/NavigationRail/NavigationRail.d.ts.map +1 -0
  92. package/dist/components/NavigationRail/NavigationRail.types.d.ts +92 -0
  93. package/dist/components/NavigationRail/NavigationRail.types.d.ts.map +1 -0
  94. package/{src/components/NavigationRail/index.ts → dist/components/NavigationRail/index.d.ts} +3 -2
  95. package/dist/components/NavigationRail/index.d.ts.map +1 -0
  96. package/dist/components/NavigationRailItem/NavigationRailItem.d.ts +90 -0
  97. package/dist/components/NavigationRailItem/NavigationRailItem.d.ts.map +1 -0
  98. package/dist/components/NavigationRailItem/NavigationRailItem.types.d.ts +155 -0
  99. package/dist/components/NavigationRailItem/NavigationRailItem.types.d.ts.map +1 -0
  100. package/dist/components/NavigationRailItem/index.d.ts +3 -0
  101. package/dist/components/NavigationRailItem/index.d.ts.map +1 -0
  102. package/dist/components/NavigationRailPanel/NavigationRailPanel.d.ts +124 -0
  103. package/dist/components/NavigationRailPanel/NavigationRailPanel.d.ts.map +1 -0
  104. package/dist/components/NavigationRailPanel/NavigationRailPanel.types.d.ts +154 -0
  105. package/dist/components/NavigationRailPanel/NavigationRailPanel.types.d.ts.map +1 -0
  106. package/dist/components/NavigationRailPanel/index.d.ts +3 -0
  107. package/dist/components/NavigationRailPanel/index.d.ts.map +1 -0
  108. package/dist/components/NavigationRailTypes/NavigationRailTypes.d.ts +99 -0
  109. package/dist/components/NavigationRailTypes/NavigationRailTypes.d.ts.map +1 -0
  110. package/dist/components/NavigationRailTypes/NavigationRailTypes.types.d.ts +111 -0
  111. package/dist/components/NavigationRailTypes/NavigationRailTypes.types.d.ts.map +1 -0
  112. package/dist/components/NavigationRailTypes/icons.d.ts +58 -0
  113. package/dist/components/NavigationRailTypes/icons.d.ts.map +1 -0
  114. package/dist/components/NavigationRailTypes/index.d.ts +4 -0
  115. package/dist/components/NavigationRailTypes/index.d.ts.map +1 -0
  116. package/dist/components/Notification/Notification.d.ts +52 -0
  117. package/dist/components/Notification/Notification.d.ts.map +1 -0
  118. package/dist/components/Notification/Notification.types.d.ts +138 -0
  119. package/dist/components/Notification/Notification.types.d.ts.map +1 -0
  120. package/{src/components/Notification/index.ts → dist/components/Notification/index.d.ts} +3 -3
  121. package/dist/components/Notification/index.d.ts.map +1 -0
  122. package/dist/components/POSConvention/POSConvention.d.ts +55 -0
  123. package/dist/components/POSConvention/POSConvention.d.ts.map +1 -0
  124. package/{src/components/POSConvention/POSConvention.types.ts → dist/components/POSConvention/POSConvention.types.d.ts} +37 -38
  125. package/dist/components/POSConvention/POSConvention.types.d.ts.map +1 -0
  126. package/dist/components/POSConvention/icons.d.ts +21 -0
  127. package/dist/components/POSConvention/icons.d.ts.map +1 -0
  128. package/{src/components/POSConvention/index.ts → dist/components/POSConvention/index.d.ts} +4 -3
  129. package/dist/components/POSConvention/index.d.ts.map +1 -0
  130. package/dist/components/POSLocationButton/POSLocationButton.d.ts +73 -0
  131. package/dist/components/POSLocationButton/POSLocationButton.d.ts.map +1 -0
  132. package/dist/components/POSLocationButton/POSLocationButton.types.d.ts +75 -0
  133. package/dist/components/POSLocationButton/POSLocationButton.types.d.ts.map +1 -0
  134. package/dist/components/POSLocationButton/icons.d.ts +37 -0
  135. package/dist/components/POSLocationButton/icons.d.ts.map +1 -0
  136. package/dist/components/POSLocationButton/index.d.ts +4 -0
  137. package/dist/components/POSLocationButton/index.d.ts.map +1 -0
  138. package/dist/components/POSNumberButton/POSNumberButton.d.ts +61 -0
  139. package/dist/components/POSNumberButton/POSNumberButton.d.ts.map +1 -0
  140. package/dist/components/POSNumberButton/POSNumberButton.types.d.ts +43 -0
  141. package/dist/components/POSNumberButton/POSNumberButton.types.d.ts.map +1 -0
  142. package/{src/components/POSNumberButton/index.ts → dist/components/POSNumberButton/index.d.ts} +3 -3
  143. package/dist/components/POSNumberButton/index.d.ts.map +1 -0
  144. package/dist/components/POSProductButton/POSProductButton.d.ts +59 -0
  145. package/dist/components/POSProductButton/POSProductButton.d.ts.map +1 -0
  146. package/dist/components/POSProductButton/POSProductButton.types.d.ts +40 -0
  147. package/dist/components/POSProductButton/POSProductButton.types.d.ts.map +1 -0
  148. package/{src/components/POSProductButton/index.ts → dist/components/POSProductButton/index.d.ts} +3 -2
  149. package/dist/components/POSProductButton/index.d.ts.map +1 -0
  150. package/dist/components/POSProductCard/POSProductCard.d.ts +68 -0
  151. package/dist/components/POSProductCard/POSProductCard.d.ts.map +1 -0
  152. package/dist/components/POSProductCard/POSProductCard.types.d.ts +67 -0
  153. package/dist/components/POSProductCard/POSProductCard.types.d.ts.map +1 -0
  154. package/dist/components/POSProductCard/icons.d.ts +10 -0
  155. package/dist/components/POSProductCard/icons.d.ts.map +1 -0
  156. package/{src/components/POSProductCard/index.ts → dist/components/POSProductCard/index.d.ts} +3 -2
  157. package/dist/components/POSProductCard/index.d.ts.map +1 -0
  158. package/dist/components/POSProductSidebarItems/POSProductSidebarItems.d.ts +57 -0
  159. package/dist/components/POSProductSidebarItems/POSProductSidebarItems.d.ts.map +1 -0
  160. package/dist/components/POSProductSidebarItems/POSProductSidebarItems.types.d.ts +85 -0
  161. package/dist/components/POSProductSidebarItems/POSProductSidebarItems.types.d.ts.map +1 -0
  162. package/dist/components/POSProductSidebarItems/icons.d.ts +9 -0
  163. package/dist/components/POSProductSidebarItems/icons.d.ts.map +1 -0
  164. package/{src/components/POSProductSidebarItems/index.ts → dist/components/POSProductSidebarItems/index.d.ts} +4 -3
  165. package/dist/components/POSProductSidebarItems/index.d.ts.map +1 -0
  166. package/dist/components/POSTable/POSTable.d.ts +75 -0
  167. package/dist/components/POSTable/POSTable.d.ts.map +1 -0
  168. package/dist/components/POSTable/POSTable.types.d.ts +71 -0
  169. package/dist/components/POSTable/POSTable.types.d.ts.map +1 -0
  170. package/dist/components/POSTable/index.d.ts +3 -0
  171. package/dist/components/POSTable/index.d.ts.map +1 -0
  172. package/dist/components/Pagination/Pagination.d.ts +29 -0
  173. package/dist/components/Pagination/Pagination.d.ts.map +1 -0
  174. package/dist/components/Pagination/Pagination.types.d.ts +79 -0
  175. package/dist/components/Pagination/Pagination.types.d.ts.map +1 -0
  176. package/dist/components/Pagination/icons.d.ts +18 -0
  177. package/dist/components/Pagination/icons.d.ts.map +1 -0
  178. package/{src/components/Pagination/index.ts → dist/components/Pagination/index.d.ts} +4 -3
  179. package/dist/components/Pagination/index.d.ts.map +1 -0
  180. package/dist/components/Quantity/Quantity.d.ts +38 -0
  181. package/dist/components/Quantity/Quantity.d.ts.map +1 -0
  182. package/dist/components/Quantity/Quantity.types.d.ts +59 -0
  183. package/dist/components/Quantity/Quantity.types.d.ts.map +1 -0
  184. package/dist/components/Radio/Radio.d.ts +45 -0
  185. package/dist/components/Radio/Radio.d.ts.map +1 -0
  186. package/dist/components/Radio/Radio.types.d.ts +115 -0
  187. package/dist/components/Radio/Radio.types.d.ts.map +1 -0
  188. package/dist/components/Select/Select.d.ts +37 -0
  189. package/dist/components/Select/Select.d.ts.map +1 -0
  190. package/dist/components/Select/Select.types.d.ts +124 -0
  191. package/dist/components/Select/Select.types.d.ts.map +1 -0
  192. package/dist/components/Select/icons.d.ts +16 -0
  193. package/dist/components/Select/icons.d.ts.map +1 -0
  194. package/{src/components/Select/index.ts → dist/components/Select/index.d.ts} +4 -3
  195. package/dist/components/Select/index.d.ts.map +1 -0
  196. package/dist/components/SignUpView/SignUpView.d.ts +38 -0
  197. package/dist/components/SignUpView/SignUpView.d.ts.map +1 -0
  198. package/dist/components/SignUpView/SignUpView.types.d.ts +51 -0
  199. package/dist/components/SignUpView/SignUpView.types.d.ts.map +1 -0
  200. package/dist/components/SignUpView/icons.d.ts +18 -0
  201. package/dist/components/SignUpView/icons.d.ts.map +1 -0
  202. package/{src/components/SignUpView/index.ts → dist/components/SignUpView/index.d.ts} +4 -3
  203. package/dist/components/SignUpView/index.d.ts.map +1 -0
  204. package/dist/components/Switch/Switch.d.ts +46 -0
  205. package/dist/components/Switch/Switch.d.ts.map +1 -0
  206. package/dist/components/Switch/Switch.types.d.ts +58 -0
  207. package/dist/components/Switch/Switch.types.d.ts.map +1 -0
  208. package/dist/components/Table/Table.d.ts +64 -0
  209. package/dist/components/Table/Table.d.ts.map +1 -0
  210. package/dist/components/Table/Table.types.d.ts +173 -0
  211. package/dist/components/Table/Table.types.d.ts.map +1 -0
  212. package/dist/components/Table/index.d.ts +3 -0
  213. package/dist/components/Table/index.d.ts.map +1 -0
  214. package/dist/components/Tabs/Tabs.d.ts +76 -0
  215. package/dist/components/Tabs/Tabs.d.ts.map +1 -0
  216. package/dist/components/Tabs/Tabs.types.d.ts +107 -0
  217. package/dist/components/Tabs/Tabs.types.d.ts.map +1 -0
  218. package/dist/components/Tabs/icons.d.ts +45 -0
  219. package/dist/components/Tabs/icons.d.ts.map +1 -0
  220. package/dist/components/Tabs/index.d.ts +4 -0
  221. package/dist/components/Tabs/index.d.ts.map +1 -0
  222. package/dist/components/Textarea/Textarea.d.ts +38 -0
  223. package/dist/components/Textarea/Textarea.d.ts.map +1 -0
  224. package/dist/components/Textarea/Textarea.types.d.ts +46 -0
  225. package/dist/components/Textarea/Textarea.types.d.ts.map +1 -0
  226. package/dist/context/ThemeContext.d.ts +46 -0
  227. package/dist/context/ThemeContext.d.ts.map +1 -0
  228. package/{src/context/index.ts → dist/context/index.d.ts} +2 -1
  229. package/dist/context/index.d.ts.map +1 -0
  230. package/dist/index.d.ts +56 -0
  231. package/dist/index.d.ts.map +1 -0
  232. package/dist/siesa-ui-kit.cjs +1273 -0
  233. package/dist/siesa-ui-kit.cjs.map +1 -0
  234. package/dist/siesa-ui-kit.mjs +4510 -0
  235. package/dist/siesa-ui-kit.mjs.map +1 -0
  236. package/dist/views/ListView/ListView.d.ts +47 -0
  237. package/dist/views/ListView/ListView.d.ts.map +1 -0
  238. package/dist/views/ListView/ListView.types.d.ts +177 -0
  239. package/dist/views/ListView/ListView.types.d.ts.map +1 -0
  240. package/dist/views/ListView/icons.d.ts +60 -0
  241. package/dist/views/ListView/icons.d.ts.map +1 -0
  242. package/dist/views/ListView/index.d.ts +3 -0
  243. package/dist/views/ListView/index.d.ts.map +1 -0
  244. package/dist/views/LoginView/LoginView.d.ts +36 -0
  245. package/dist/views/LoginView/LoginView.d.ts.map +1 -0
  246. package/dist/views/LoginView/LoginView.types.d.ts +46 -0
  247. package/dist/views/LoginView/LoginView.types.d.ts.map +1 -0
  248. package/dist/views/LoginView/icons.d.ts +18 -0
  249. package/dist/views/LoginView/icons.d.ts.map +1 -0
  250. package/dist/views/LoginView/index.d.ts +4 -0
  251. package/dist/views/LoginView/index.d.ts.map +1 -0
  252. package/dist/views/ProductsView/ProductsView.d.ts +56 -0
  253. package/dist/views/ProductsView/ProductsView.d.ts.map +1 -0
  254. package/dist/views/ProductsView/ProductsView.types.d.ts +184 -0
  255. package/dist/views/ProductsView/ProductsView.types.d.ts.map +1 -0
  256. package/dist/views/ProductsView/icons.d.ts +12 -0
  257. package/dist/views/ProductsView/icons.d.ts.map +1 -0
  258. package/dist/views/ProductsView/index.d.ts +3 -0
  259. package/dist/views/ProductsView/index.d.ts.map +1 -0
  260. package/dist/views/RecoverPasswordView/RecoverPasswordView.d.ts +34 -0
  261. package/dist/views/RecoverPasswordView/RecoverPasswordView.d.ts.map +1 -0
  262. package/dist/views/RecoverPasswordView/RecoverPasswordView.types.d.ts +50 -0
  263. package/dist/views/RecoverPasswordView/RecoverPasswordView.types.d.ts.map +1 -0
  264. package/dist/views/RecoverPasswordView/icons.d.ts +9 -0
  265. package/dist/views/RecoverPasswordView/icons.d.ts.map +1 -0
  266. package/{src/views/RecoverPasswordView/index.ts → dist/views/RecoverPasswordView/index.d.ts} +3 -2
  267. package/dist/views/RecoverPasswordView/index.d.ts.map +1 -0
  268. package/dist/views/SignUpView/SignUpView.d.ts +38 -0
  269. package/dist/views/SignUpView/SignUpView.d.ts.map +1 -0
  270. package/dist/views/SignUpView/SignUpView.types.d.ts +51 -0
  271. package/dist/views/SignUpView/SignUpView.types.d.ts.map +1 -0
  272. package/dist/views/SignUpView/icons.d.ts +18 -0
  273. package/dist/views/SignUpView/icons.d.ts.map +1 -0
  274. package/dist/views/SignUpView/index.d.ts +4 -0
  275. package/dist/views/SignUpView/index.d.ts.map +1 -0
  276. package/dist/views/TableLayoutView/TableLayoutView.d.ts +46 -0
  277. package/dist/views/TableLayoutView/TableLayoutView.d.ts.map +1 -0
  278. package/dist/views/TableLayoutView/TableLayoutView.types.d.ts +170 -0
  279. package/dist/views/TableLayoutView/TableLayoutView.types.d.ts.map +1 -0
  280. package/dist/views/TableLayoutView/icons.d.ts +27 -0
  281. package/dist/views/TableLayoutView/icons.d.ts.map +1 -0
  282. package/dist/views/TableLayoutView/index.d.ts +3 -0
  283. package/dist/views/TableLayoutView/index.d.ts.map +1 -0
  284. package/package.json +93 -83
  285. package/bin/install.cjs +0 -502
  286. package/bin/prepare-publish.cjs +0 -28
  287. package/bin/restore-folders.cjs +0 -28
  288. package/claude/agents/siesa-ui-kit-specialist.md +0 -2401
  289. package/claude/prompts/component-template.md +0 -121
  290. package/claude/settings.local.json +0 -61
  291. package/docs/border-radius.md +0 -1261
  292. package/docs/colors.md +0 -832
  293. package/docs/dark-mode-guide.md +0 -1426
  294. package/docs/filters.md +0 -1243
  295. package/docs/icons.md +0 -1283
  296. package/docs/shadows.md +0 -1377
  297. package/docs/spacing.md +0 -1684
  298. package/docs/typography.md +0 -1268
  299. package/postcss.config.cjs +0 -6
  300. package/public/,Business Logo.png +0 -0
  301. package/public/.Siesa Logo.png +0 -0
  302. package/public/bg_siesa.png +0 -0
  303. package/public/siesa_logo_mobile.png +0 -0
  304. package/public/vite.svg +0 -1
  305. package/src/App.css +0 -42
  306. package/src/App.tsx +0 -8
  307. package/src/ButtonTest.tsx +0 -147
  308. package/src/assets/fonts/README.md +0 -261
  309. package/src/assets/fonts/SiesaBT/SiesaBT-Bold.otf +0 -0
  310. package/src/assets/fonts/SiesaBT/SiesaBT-Light.otf +0 -0
  311. package/src/assets/fonts/SiesaBT/SiesaBT-Regular.otf +0 -0
  312. package/src/assets/react.svg +0 -1
  313. package/src/components/Alert/Alert.stories.tsx +0 -332
  314. package/src/components/Alert/Alert.tsx +0 -106
  315. package/src/components/Alert/Alert.types.ts +0 -54
  316. package/src/components/Avatar/Avatar.stories.tsx +0 -494
  317. package/src/components/Avatar/Avatar.tsx +0 -143
  318. package/src/components/Avatar/Avatar.types.ts +0 -53
  319. package/src/components/Badge/Badge.stories.tsx +0 -339
  320. package/src/components/Badge/Badge.tsx +0 -278
  321. package/src/components/Badge/Badge.types.ts +0 -58
  322. package/src/components/Button/Button.stories.tsx +0 -950
  323. package/src/components/Button/Button.tsx +0 -337
  324. package/src/components/Button/Button.types.ts +0 -180
  325. package/src/components/Button/icons.tsx +0 -87
  326. package/src/components/Checkbox/Checkbox.stories.tsx +0 -453
  327. package/src/components/Checkbox/Checkbox.tsx +0 -208
  328. package/src/components/Checkbox/Checkbox.types.ts +0 -61
  329. package/src/components/DescriptionList/DescriptionList.stories.tsx +0 -250
  330. package/src/components/DescriptionList/DescriptionList.tsx +0 -96
  331. package/src/components/DescriptionList/DescriptionList.types.ts +0 -29
  332. package/src/components/Divider/Divider.stories.tsx +0 -263
  333. package/src/components/Divider/Divider.tsx +0 -80
  334. package/src/components/Divider/Divider.types.ts +0 -24
  335. package/src/components/Dropdown/Dropdown.stories.tsx +0 -552
  336. package/src/components/Dropdown/Dropdown.tsx +0 -422
  337. package/src/components/Dropdown/Dropdown.types.ts +0 -146
  338. package/src/components/Dropdown/README.md +0 -266
  339. package/src/components/Dropdown/icons.tsx +0 -72
  340. package/src/components/Input/Input.stories.tsx +0 -583
  341. package/src/components/Input/Input.tsx +0 -204
  342. package/src/components/Input/Input.types.ts +0 -80
  343. package/src/components/Input/icons.tsx +0 -145
  344. package/src/components/LoginView/LoginView.stories.tsx +0 -148
  345. package/src/components/LoginView/LoginView.tsx +0 -426
  346. package/src/components/LoginView/LoginView.types.ts +0 -52
  347. package/src/components/LoginView/README.md +0 -396
  348. package/src/components/LoginView/icons.tsx +0 -85
  349. package/src/components/Navbar/Navbar.stories.tsx +0 -810
  350. package/src/components/Navbar/Navbar.tsx +0 -755
  351. package/src/components/Navbar/Navbar.types.ts +0 -219
  352. package/src/components/Navbar/README.md +0 -279
  353. package/src/components/Navbar/icons.tsx +0 -102
  354. package/src/components/Navbar/index.ts +0 -8
  355. package/src/components/NavigationBar/NavigationBar.stories.tsx +0 -406
  356. package/src/components/NavigationBar/NavigationBar.tsx +0 -246
  357. package/src/components/NavigationBar/NavigationBar.types.ts +0 -74
  358. package/src/components/NavigationBar/README.md +0 -469
  359. package/src/components/NavigationRail/NavigationRail.stories.tsx +0 -417
  360. package/src/components/NavigationRail/NavigationRail.tsx +0 -418
  361. package/src/components/NavigationRail/NavigationRail.types.ts +0 -109
  362. package/src/components/NavigationRail/README.md +0 -224
  363. package/src/components/Notification/Notification.stories.tsx +0 -513
  364. package/src/components/Notification/Notification.tsx +0 -145
  365. package/src/components/Notification/Notification.types.ts +0 -142
  366. package/src/components/Notification/README.md +0 -409
  367. package/src/components/POSConvention/POSConvention.stories.tsx +0 -235
  368. package/src/components/POSConvention/POSConvention.tsx +0 -129
  369. package/src/components/POSConvention/README.md +0 -123
  370. package/src/components/POSConvention/icons.tsx +0 -45
  371. package/src/components/POSLocationButton/POSLocationButton.stories.tsx +0 -531
  372. package/src/components/POSLocationButton/POSLocationButton.tsx +0 -247
  373. package/src/components/POSLocationButton/POSLocationButton.types.ts +0 -87
  374. package/src/components/POSLocationButton/README.md +0 -253
  375. package/src/components/POSLocationButton/icons.tsx +0 -120
  376. package/src/components/POSLocationButton/index.ts +0 -14
  377. package/src/components/POSNumberButton/POSNumberButton.stories.tsx +0 -415
  378. package/src/components/POSNumberButton/POSNumberButton.tsx +0 -179
  379. package/src/components/POSNumberButton/POSNumberButton.types.ts +0 -51
  380. package/src/components/POSNumberButton/README.md +0 -321
  381. package/src/components/POSProductButton/POSProductButton.stories.tsx +0 -318
  382. package/src/components/POSProductButton/POSProductButton.tsx +0 -152
  383. package/src/components/POSProductButton/POSProductButton.types.ts +0 -46
  384. package/src/components/POSProductButton/README.md +0 -269
  385. package/src/components/POSProductCard/POSProductCard.stories.tsx +0 -642
  386. package/src/components/POSProductCard/POSProductCard.tsx +0 -208
  387. package/src/components/POSProductCard/POSProductCard.types.ts +0 -76
  388. package/src/components/POSProductCard/README.md +0 -179
  389. package/src/components/POSProductCard/icons.tsx +0 -26
  390. package/src/components/POSProductSidebarItems/POSProductSidebarItems.stories.tsx +0 -753
  391. package/src/components/POSProductSidebarItems/POSProductSidebarItems.tsx +0 -332
  392. package/src/components/POSProductSidebarItems/POSProductSidebarItems.types.ts +0 -119
  393. package/src/components/POSProductSidebarItems/README.md +0 -198
  394. package/src/components/POSProductSidebarItems/icons.tsx +0 -21
  395. package/src/components/POSTable/POSTable.stories.tsx +0 -737
  396. package/src/components/POSTable/POSTable.tsx +0 -401
  397. package/src/components/POSTable/POSTable.types.ts +0 -83
  398. package/src/components/POSTable/README.md +0 -286
  399. package/src/components/POSTable/index.ts +0 -7
  400. package/src/components/Pagination/Pagination.stories.tsx +0 -555
  401. package/src/components/Pagination/Pagination.tsx +0 -286
  402. package/src/components/Pagination/Pagination.types.ts +0 -93
  403. package/src/components/Pagination/README.md +0 -298
  404. package/src/components/Pagination/icons.tsx +0 -47
  405. package/src/components/Quantity/Quantity.stories.tsx +0 -457
  406. package/src/components/Quantity/Quantity.tsx +0 -289
  407. package/src/components/Quantity/Quantity.types.ts +0 -70
  408. package/src/components/Radio/Radio.stories.tsx +0 -523
  409. package/src/components/Radio/Radio.tsx +0 -170
  410. package/src/components/Radio/Radio.types.ts +0 -122
  411. package/src/components/Select/README.md +0 -299
  412. package/src/components/Select/Select.stories.tsx +0 -673
  413. package/src/components/Select/Select.tsx +0 -454
  414. package/src/components/Select/Select.types.ts +0 -148
  415. package/src/components/Select/icons.tsx +0 -50
  416. package/src/components/SignUpView/SignUpView.stories.tsx +0 -129
  417. package/src/components/SignUpView/SignUpView.tsx +0 -503
  418. package/src/components/SignUpView/SignUpView.types.ts +0 -58
  419. package/src/components/SignUpView/icons.tsx +0 -71
  420. package/src/components/Switch/README.md +0 -112
  421. package/src/components/Switch/Switch.stories.tsx +0 -550
  422. package/src/components/Switch/Switch.tsx +0 -246
  423. package/src/components/Switch/Switch.types.ts +0 -67
  424. package/src/components/Table/README.md +0 -369
  425. package/src/components/Table/Table.stories.tsx +0 -805
  426. package/src/components/Table/Table.tsx +0 -688
  427. package/src/components/Table/Table.types.ts +0 -204
  428. package/src/components/Table/index.ts +0 -9
  429. package/src/components/Tabs/README.md +0 -201
  430. package/src/components/Tabs/Tabs.stories.tsx +0 -580
  431. package/src/components/Tabs/Tabs.tsx +0 -356
  432. package/src/components/Tabs/Tabs.types.ts +0 -127
  433. package/src/components/Tabs/icons.tsx +0 -129
  434. package/src/components/Tabs/index.ts +0 -11
  435. package/src/components/Textarea/Textarea.stories.tsx +0 -535
  436. package/src/components/Textarea/Textarea.tsx +0 -188
  437. package/src/components/Textarea/Textarea.types.ts +0 -54
  438. package/src/context/ThemeContext.tsx +0 -99
  439. package/src/index.css +0 -29
  440. package/src/index.ts +0 -39
  441. package/src/main.tsx +0 -10
  442. package/src/views/ProductsView/ProductsView.stories.tsx +0 -344
  443. package/src/views/ProductsView/ProductsView.tsx +0 -480
  444. package/src/views/ProductsView/ProductsView.types.ts +0 -238
  445. package/src/views/ProductsView/README.md +0 -312
  446. package/src/views/ProductsView/icons.tsx +0 -38
  447. package/src/views/ProductsView/index.ts +0 -8
  448. package/src/views/RecoverPasswordView/README.md +0 -269
  449. package/src/views/RecoverPasswordView/RecoverPasswordView.stories.tsx +0 -131
  450. package/src/views/RecoverPasswordView/RecoverPasswordView.tsx +0 -376
  451. package/src/views/RecoverPasswordView/RecoverPasswordView.types.ts +0 -56
  452. package/src/views/RecoverPasswordView/icons.tsx +0 -17
  453. package/src/views/TableLayoutView/README.md +0 -268
  454. package/src/views/TableLayoutView/TableLayoutView.stories.tsx +0 -235
  455. package/src/views/TableLayoutView/TableLayoutView.tsx +0 -461
  456. package/src/views/TableLayoutView/TableLayoutView.types.ts +0 -209
  457. package/src/views/TableLayoutView/icons.tsx +0 -113
  458. package/src/views/TableLayoutView/index.ts +0 -6
  459. package/storybook/main.ts +0 -20
  460. package/storybook/preview.tsx +0 -84
  461. package/storybook/vitest.setup.ts +0 -7
  462. package/tailwind.config.js +0 -128
package/docs/spacing.md DELETED
@@ -1,1684 +0,0 @@
1
- # Sistema de Spacing - Siesa UI Kit
2
-
3
- ## 📋 Tabla de Contenidos
4
-
5
- 1. [Introducción](#introducción)
6
- 2. [Escala de Spacing](#escala-de-spacing)
7
- 3. [Guía de Uso](#guía-de-uso)
8
- 4. [Ejemplos de Código](#ejemplos-de-código)
9
- 5. [Mejores Prácticas](#mejores-prácticas)
10
- 6. [Dark Mode](#dark-mode)
11
- 7. [Referencia Rápida](#referencia-rápida)
12
-
13
- ---
14
-
15
- ## Introducción
16
-
17
- El sistema de spacing de Siesa UI Kit proporciona una escala consistente para controlar márgenes (margin), padding, gaps entre elementos, y posicionamiento. Este sistema está basado en Tailwind CSS con algunas extensiones personalizadas para casos de uso específicos.
18
-
19
- ### Objetivos del Sistema
20
-
21
- - **Consistencia Visual**: Usar múltiplos de 4px para crear una cuadrícula visual coherente
22
- - **Escalabilidad**: Escala logarítmica que permite desde espacios pequeños (2px) hasta grandes (384px)
23
- - **Facilidad de Uso**: Nombres memorables y predecibles
24
- - **Responsive Design**: Fácil de combinar con breakpoints para diseños adaptables
25
-
26
- ### Principios de Diseño
27
-
28
- 1. **Sistema Base-4**: La mayoría de los valores son múltiplos de 4px (excepto px, 0.5, 1.5, 2.5, 3.5)
29
- 2. **Progresión Lógica**: Los valores crecen de manera predecible
30
- 3. **Valores Intermedios**: Escalas .5 (2px, 6px, 10px, 14px) para ajustes finos
31
- 4. **Responsive First**: Diseñado para funcionar con modificadores responsive (sm:, md:, lg:)
32
-
33
- ---
34
-
35
- ## Escala de Spacing
36
-
37
- El sistema de spacing usa una convención numérica donde cada unidad representa un incremento basado en `rem` (donde 1rem = 16px por defecto).
38
-
39
- ### Tabla Completa de Spacing
40
-
41
- | Clase Tailwind | REM | Pixels | Uso Principal |
42
- |----------------|-----|--------|---------------|
43
- | `0` | 0px | 0px | Sin espaciado |
44
- | `px` | 1px | 1px | Bordes finos, líneas divisorias |
45
- | `0.5` | 0.125rem | 2px | Espaciado mínimo |
46
- | `1` | 0.25rem | 4px | Espaciado muy pequeño |
47
- | `1.5` | 0.375rem | 6px | **Espaciado compacto** |
48
- | `2` | 0.5rem | 8px | Espaciado pequeño |
49
- | `2.5` | 0.625rem | 10px | Espaciado entre pequeño y medio |
50
- | `3` | 0.75rem | 12px | **Padding interno de componentes** |
51
- | `3.5` | 0.875rem | 14px | Espaciado medio-compacto |
52
- | `4` | 1rem | 16px | **Espaciado base estándar** |
53
- | `5` | 1.25rem | 20px | Espaciado medio |
54
- | `6` | 1.5rem | 24px | **Padding de cards, modales** |
55
- | `7` | 1.75rem | 28px | Espaciado medio-grande |
56
- | `8` | 2rem | 32px | **Gaps entre secciones** |
57
- | `9` | 2.25rem | 36px | Espaciado grande |
58
- | `10` | 2.5rem | 40px | Espaciado grande |
59
- | `11` | 2.75rem | 44px | Espaciado muy grande |
60
- | `12` | 3rem | 48px | **Separación entre secciones** |
61
- | `14` | 3.5rem | 56px | Espaciado extra grande |
62
- | `16` | 4rem | 64px | **Padding de containers** |
63
- | `20` | 5rem | 80px | Espaciado muy amplio |
64
- | `24` | 6rem | 96px | Espaciado masivo |
65
- | `28` | 7rem | 112px | Espaciado extra masivo |
66
- | `32` | 8rem | 128px | **Separación entre secciones principales** |
67
- | `36` | 9rem | 144px | Espaciado muy amplio |
68
- | `40` | 10rem | 160px | Márgenes grandes de página |
69
- | `44` | 11rem | 176px | Márgenes muy grandes |
70
- | `48` | 12rem | 192px | Espaciado hero |
71
- | `52` | 13rem | 208px | Espaciado hero grande |
72
- | `56` | 14rem | 224px | Espaciado hero muy grande |
73
- | `60` | 15rem | 240px | Espaciado extremo |
74
- | `64` | 16rem | 256px | Márgenes de página completos |
75
- | `72` | 18rem | 288px | Espaciado máximo |
76
- | `80` | 20rem | 320px | Espaciado extra máximo |
77
- | `96` | 24rem | 384px | Espaciado ultra máximo |
78
-
79
- ### Valores Más Comunes
80
-
81
- Los siguientes valores se usan en el 90% de los casos:
82
-
83
- - **`3` (12px)**: Padding interno de botones, inputs, labels
84
- - **`4` (16px)**: Espaciado estándar entre elementos
85
- - **`6` (24px)**: Padding de cards, paneles, modales
86
- - **`8` (32px)**: Gaps entre secciones relacionadas
87
- - **`12` (48px)**: Separación entre secciones distintas
88
- - **`16` (64px)**: Padding horizontal de containers principales
89
-
90
- ### Valores Personalizados
91
-
92
- El sistema de Siesa UI Kit incluye dos valores personalizados que no son estándar en Tailwind:
93
-
94
- ```javascript
95
- // tailwind.config.js
96
- spacing: {
97
- '1.5': '6px', // Entre 1 (4px) y 2 (8px)
98
- '2.5': '10px', // Entre 2 (8px) y 3 (12px)
99
- }
100
- ```
101
-
102
- Estos valores son útiles para ajustes finos en componentes específicos.
103
-
104
- ---
105
-
106
- ## Guía de Uso
107
-
108
- ### Por Tipo de Espaciado
109
-
110
- #### 1. Padding (p-, px-, py-, pt-, pr-, pb-, pl-)
111
-
112
- Controla el espacio interior de un elemento.
113
-
114
- ```tsx
115
- // Padding uniforme en todos los lados
116
- <div className="p-6">Card content</div>
117
-
118
- // Padding horizontal (izquierda y derecha)
119
- <div className="px-4">Horizontal padding</div>
120
-
121
- // Padding vertical (arriba y abajo)
122
- <div className="py-2">Vertical padding</div>
123
-
124
- // Padding individual por lado
125
- <div className="pt-8 pr-6 pb-8 pl-6">Custom padding each side</div>
126
- ```
127
-
128
- **Casos de Uso Comunes:**
129
- - Botones: `px-4 py-2` o `px-6 py-3`
130
- - Cards: `p-6` o `p-8`
131
- - Inputs: `px-3 py-2`
132
- - Containers: `px-6` o `px-16`
133
-
134
- #### 2. Margin (m-, mx-, my-, mt-, mr-, mb-, ml-)
135
-
136
- Controla el espacio exterior entre elementos.
137
-
138
- ```tsx
139
- // Margin bottom para separar elementos verticalmente
140
- <div className="mb-4">First element</div>
141
-
142
- // Margin top
143
- <div className="mt-8">Second element</div>
144
-
145
- // Margin horizontal (auto para centrar)
146
- <div className="mx-auto">Centered content</div>
147
-
148
- // Margin negativo para overlays
149
- <div className="mt-[-2rem]">Overlapping element</div>
150
- ```
151
-
152
- **Casos de Uso Comunes:**
153
- - Separar párrafos: `mb-4`
154
- - Separar secciones: `mb-12` o `mb-16`
155
- - Centrar elementos: `mx-auto`
156
- - Espaciar elementos en listas: `mb-2` o `mb-3`
157
-
158
- #### 3. Gap (gap-, gap-x-, gap-y-)
159
-
160
- Controla el espacio entre elementos en flex y grid.
161
-
162
- ```tsx
163
- // Gap uniforme en flex/grid
164
- <div className="flex gap-4">
165
- <div>Item 1</div>
166
- <div>Item 2</div>
167
- </div>
168
-
169
- // Gap horizontal (entre columnas)
170
- <div className="grid grid-cols-3 gap-x-6">
171
- {/* items */}
172
- </div>
173
-
174
- // Gap vertical (entre filas)
175
- <div className="grid gap-y-4">
176
- {/* items */}
177
- </div>
178
-
179
- // Gap diferente para horizontal y vertical
180
- <div className="grid gap-x-6 gap-y-4">
181
- {/* items */}
182
- </div>
183
- ```
184
-
185
- **Casos de Uso Comunes:**
186
- - Botones en grupo: `gap-2` o `gap-3`
187
- - Cards en grid: `gap-6`
188
- - Formularios: `gap-4`
189
- - Navegación: `gap-6` o `gap-8`
190
-
191
- #### 4. Space Between (space-x-, space-y-)
192
-
193
- Añade espacio entre elementos hijos (alternativa a gap).
194
-
195
- ```tsx
196
- // Espacio horizontal entre hijos
197
- <div className="flex space-x-4">
198
- <button>Button 1</button>
199
- <button>Button 2</button>
200
- <button>Button 3</button>
201
- </div>
202
-
203
- // Espacio vertical entre hijos
204
- <div className="space-y-6">
205
- <article>Article 1</article>
206
- <article>Article 2</article>
207
- </div>
208
- ```
209
-
210
- **Diferencia entre `gap` y `space-x/y`:**
211
- - `gap`: Aplica espacio en contenedores flex/grid (más moderno)
212
- - `space-x/y`: Aplica margin a los hijos (compatible con más navegadores antiguos)
213
-
214
- #### 5. Inset (top-, right-, bottom-, left-)
215
-
216
- Controla el posicionamiento absoluto/relativo.
217
-
218
- ```tsx
219
- // Posicionar elemento en la esquina superior derecha
220
- <div className="absolute top-4 right-4">
221
- Notification badge
222
- </div>
223
-
224
- // Posicionar overlay completo
225
- <div className="absolute inset-0">
226
- Full overlay
227
- </div>
228
-
229
- // Posicionar desde el centro
230
- <div className="absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2">
231
- Centered absolutely
232
- </div>
233
- ```
234
-
235
- ### Por Caso de Uso
236
-
237
- #### 1. Botones
238
-
239
- ```tsx
240
- // Botón pequeño (Small)
241
- <button className="px-3 py-1.5 text-sm">
242
- Small Button
243
- </button>
244
-
245
- // Botón mediano (Medium - Default)
246
- <button className="px-4 py-2 text-sm">
247
- Medium Button
248
- </button>
249
-
250
- // Botón grande (Large)
251
- <button className="px-6 py-3 text-base">
252
- Large Button
253
- </button>
254
-
255
- // Grupo de botones
256
- <div className="flex gap-3">
257
- <button className="px-4 py-2">Cancel</button>
258
- <button className="px-4 py-2">Confirm</button>
259
- </div>
260
- ```
261
-
262
- #### 2. Cards y Paneles
263
-
264
- ```tsx
265
- // Card compacta
266
- <div className="p-4 rounded-2xl border border-border-primary">
267
- <h3 className="mb-2 font-bold">Card Title</h3>
268
- <p>Card content</p>
269
- </div>
270
-
271
- // Card estándar
272
- <div className="p-6 rounded-2xl border border-border-primary">
273
- <h3 className="mb-4 font-bold text-lg">Card Title</h3>
274
- <p className="mb-4">Card content</p>
275
- <button className="px-4 py-2">Action</button>
276
- </div>
277
-
278
- // Card espaciosa
279
- <div className="p-8 rounded-2xl border border-border-primary">
280
- <h2 className="mb-6 font-bold text-2xl">Card Title</h2>
281
- <p className="mb-6">Card content with more breathing room</p>
282
- <div className="flex gap-3">
283
- <button>Cancel</button>
284
- <button>Confirm</button>
285
- </div>
286
- </div>
287
- ```
288
-
289
- #### 3. Formularios
290
-
291
- ```tsx
292
- // Formulario con spacing consistente
293
- <form className="space-y-6">
294
- {/* Campo de input */}
295
- <div className="space-y-2">
296
- <label className="block font-bold text-sm">Email</label>
297
- <input
298
- type="email"
299
- className="w-full px-3 py-2 border border-border-primary rounded-md"
300
- />
301
- <p className="text-xs text-content-secondary">
302
- We'll never share your email.
303
- </p>
304
- </div>
305
-
306
- {/* Campo de input */}
307
- <div className="space-y-2">
308
- <label className="block font-bold text-sm">Password</label>
309
- <input
310
- type="password"
311
- className="w-full px-3 py-2 border border-border-primary rounded-md"
312
- />
313
- </div>
314
-
315
- {/* Botones */}
316
- <div className="flex gap-3 pt-4">
317
- <button type="button" className="px-4 py-2">Cancel</button>
318
- <button type="submit" className="px-4 py-2">Submit</button>
319
- </div>
320
- </form>
321
- ```
322
-
323
- #### 4. Grid de Cards
324
-
325
- ```tsx
326
- // Grid responsive con spacing
327
- <div className="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-6">
328
- <div className="p-6 border rounded-2xl">Card 1</div>
329
- <div className="p-6 border rounded-2xl">Card 2</div>
330
- <div className="p-6 border rounded-2xl">Card 3</div>
331
- <div className="p-6 border rounded-2xl">Card 4</div>
332
- <div className="p-6 border rounded-2xl">Card 5</div>
333
- <div className="p-6 border rounded-2xl">Card 6</div>
334
- </div>
335
- ```
336
-
337
- #### 5. Navegación
338
-
339
- ```tsx
340
- // Navbar con spacing
341
- <nav className="px-6 py-4 border-b border-border-primary">
342
- <div className="container mx-auto flex items-center justify-between">
343
- <div className="font-bold text-xl">Logo</div>
344
- <ul className="flex gap-6">
345
- <li><a href="#home">Home</a></li>
346
- <li><a href="#about">About</a></li>
347
- <li><a href="#contact">Contact</a></li>
348
- </ul>
349
- <button className="px-4 py-2">Sign In</button>
350
- </div>
351
- </nav>
352
- ```
353
-
354
- #### 6. Layouts de Página
355
-
356
- ```tsx
357
- // Layout con márgenes consistentes
358
- <div className="min-h-screen">
359
- {/* Header */}
360
- <header className="px-6 py-4">
361
- <div className="container mx-auto">Header content</div>
362
- </header>
363
-
364
- {/* Main content */}
365
- <main className="px-6 py-12">
366
- <div className="container mx-auto">
367
- {/* Hero section */}
368
- <section className="mb-16">
369
- <h1 className="mb-6 font-bold text-6xl">Hero Title</h1>
370
- <p className="mb-8 text-lg">Hero description</p>
371
- <button className="px-6 py-3">Get Started</button>
372
- </section>
373
-
374
- {/* Features section */}
375
- <section className="mb-16">
376
- <h2 className="mb-8 font-bold text-4xl">Features</h2>
377
- <div className="grid grid-cols-3 gap-6">
378
- {/* Feature cards */}
379
- </div>
380
- </section>
381
- </div>
382
- </main>
383
-
384
- {/* Footer */}
385
- <footer className="px-6 py-12 bg-background-secondary">
386
- <div className="container mx-auto">Footer content</div>
387
- </footer>
388
- </div>
389
- ```
390
-
391
- ---
392
-
393
- ## Ejemplos de Código
394
-
395
- ### Ejemplo 1: Sistema de Cards Completo
396
-
397
- ```tsx
398
- export const CardSystem = () => {
399
- return (
400
- <div className="p-8 space-y-8">
401
- {/* Compact Card - Para información densa */}
402
- <div className="p-4 border border-border-primary rounded-2xl">
403
- <div className="flex items-center gap-3 mb-2">
404
- <div className="w-8 h-8 rounded-full bg-primary-custom-600" />
405
- <h3 className="font-bold text-sm">Compact Card</h3>
406
- </div>
407
- <p className="text-xs text-content-secondary">
408
- Minimal spacing for dense information display.
409
- </p>
410
- </div>
411
-
412
- {/* Standard Card - Uso general */}
413
- <div className="p-6 border border-border-primary rounded-2xl shadow-base">
414
- <div className="flex items-center gap-4 mb-4">
415
- <div className="w-12 h-12 rounded-full bg-primary-custom-600" />
416
- <h3 className="font-bold text-base">Standard Card</h3>
417
- </div>
418
- <p className="mb-4 text-sm text-content-secondary">
419
- Balanced spacing for most use cases. This is the most common card style.
420
- </p>
421
- <div className="flex gap-3">
422
- <button className="px-4 py-2 border border-border-primary rounded-md text-sm font-bold">
423
- Cancel
424
- </button>
425
- <button className="px-4 py-2 bg-primary-custom-600 text-white rounded-md text-sm font-bold">
426
- Confirm
427
- </button>
428
- </div>
429
- </div>
430
-
431
- {/* Spacious Card - Para contenido importante */}
432
- <div className="p-8 border border-border-primary rounded-2xl shadow-lg">
433
- <div className="flex items-center gap-6 mb-6">
434
- <div className="w-16 h-16 rounded-full bg-primary-custom-600" />
435
- <h2 className="font-bold text-xl">Spacious Card</h2>
436
- </div>
437
- <p className="mb-6 text-base text-content-secondary">
438
- Generous spacing for important content that needs breathing room.
439
- Perfect for hero cards or feature highlights.
440
- </p>
441
- <div className="flex gap-4">
442
- <button className="px-6 py-3 border border-border-primary rounded-md font-bold">
443
- Learn More
444
- </button>
445
- <button className="px-6 py-3 bg-primary-custom-600 text-white rounded-md font-bold">
446
- Get Started
447
- </button>
448
- </div>
449
- </div>
450
- </div>
451
- );
452
- };
453
- ```
454
-
455
- ### Ejemplo 2: Formulario con Spacing Consistente
456
-
457
- ```tsx
458
- export const ConsistentForm = () => {
459
- return (
460
- <div className="max-w-md mx-auto p-8">
461
- <form className="space-y-6">
462
- {/* Form header */}
463
- <div className="space-y-2">
464
- <h2 className="font-bold text-2xl">Create Account</h2>
465
- <p className="text-sm text-content-secondary">
466
- Fill in your details to get started.
467
- </p>
468
- </div>
469
-
470
- {/* Name field */}
471
- <div className="space-y-2">
472
- <label htmlFor="name" className="block font-bold text-sm">
473
- Full Name
474
- </label>
475
- <input
476
- id="name"
477
- type="text"
478
- className="w-full px-3 py-2 border border-border-primary rounded-md text-sm"
479
- placeholder="John Doe"
480
- />
481
- </div>
482
-
483
- {/* Email field */}
484
- <div className="space-y-2">
485
- <label htmlFor="email" className="block font-bold text-sm">
486
- Email Address
487
- </label>
488
- <input
489
- id="email"
490
- type="email"
491
- className="w-full px-3 py-2 border border-border-primary rounded-md text-sm"
492
- placeholder="john@example.com"
493
- />
494
- <p className="text-xs text-content-secondary">
495
- We'll send a verification email to this address.
496
- </p>
497
- </div>
498
-
499
- {/* Password field */}
500
- <div className="space-y-2">
501
- <label htmlFor="password" className="block font-bold text-sm">
502
- Password
503
- </label>
504
- <input
505
- id="password"
506
- type="password"
507
- className="w-full px-3 py-2 border border-border-primary rounded-md text-sm"
508
- placeholder="••••••••"
509
- />
510
- <p className="text-xs text-content-secondary">
511
- Must be at least 8 characters long.
512
- </p>
513
- </div>
514
-
515
- {/* Checkbox */}
516
- <div className="flex items-start gap-3">
517
- <input
518
- id="terms"
519
- type="checkbox"
520
- className="mt-1 w-4 h-4"
521
- />
522
- <label htmlFor="terms" className="text-sm text-content-secondary">
523
- I agree to the{' '}
524
- <a href="#" className="text-primary-custom-600 font-bold">
525
- Terms of Service
526
- </a>{' '}
527
- and{' '}
528
- <a href="#" className="text-primary-custom-600 font-bold">
529
- Privacy Policy
530
- </a>
531
- </label>
532
- </div>
533
-
534
- {/* Submit button */}
535
- <button
536
- type="submit"
537
- className="w-full px-4 py-3 bg-primary-custom-600 text-white rounded-md font-bold text-sm"
538
- >
539
- Create Account
540
- </button>
541
-
542
- {/* Divider */}
543
- <div className="relative py-4">
544
- <div className="absolute inset-0 flex items-center">
545
- <div className="w-full border-t border-border-primary" />
546
- </div>
547
- <div className="relative flex justify-center">
548
- <span className="px-4 bg-white text-xs text-content-secondary">
549
- Or continue with
550
- </span>
551
- </div>
552
- </div>
553
-
554
- {/* Social buttons */}
555
- <div className="grid grid-cols-2 gap-3">
556
- <button className="px-4 py-2 border border-border-primary rounded-md text-sm font-bold">
557
- Google
558
- </button>
559
- <button className="px-4 py-2 border border-border-primary rounded-md text-sm font-bold">
560
- GitHub
561
- </button>
562
- </div>
563
- </form>
564
- </div>
565
- );
566
- };
567
- ```
568
-
569
- ### Ejemplo 3: Dashboard Layout con Spacing
570
-
571
- ```tsx
572
- export const DashboardLayout = () => {
573
- return (
574
- <div className="min-h-screen bg-background-secondary">
575
- {/* Header */}
576
- <header className="bg-white border-b border-border-primary px-6 py-4">
577
- <div className="flex items-center justify-between">
578
- <div className="flex items-center gap-8">
579
- <div className="font-bold text-xl">Dashboard</div>
580
- <nav className="flex gap-6">
581
- <a href="#" className="text-sm font-bold">Overview</a>
582
- <a href="#" className="text-sm">Analytics</a>
583
- <a href="#" className="text-sm">Reports</a>
584
- </nav>
585
- </div>
586
- <button className="px-4 py-2 bg-primary-custom-600 text-white rounded-md text-sm font-bold">
587
- New Project
588
- </button>
589
- </div>
590
- </header>
591
-
592
- {/* Main content */}
593
- <main className="p-6">
594
- <div className="max-w-7xl mx-auto">
595
- {/* Page title */}
596
- <div className="mb-8">
597
- <h1 className="mb-2 font-bold text-4xl">Welcome back, John</h1>
598
- <p className="text-content-secondary">
599
- Here's what's happening with your projects today.
600
- </p>
601
- </div>
602
-
603
- {/* Stats grid */}
604
- <div className="grid grid-cols-4 gap-6 mb-8">
605
- {[
606
- { label: 'Total Projects', value: '24' },
607
- { label: 'Active Tasks', value: '156' },
608
- { label: 'Team Members', value: '12' },
609
- { label: 'Completion', value: '87%' },
610
- ].map((stat) => (
611
- <div key={stat.label} className="p-6 bg-white rounded-2xl border border-border-primary">
612
- <p className="mb-2 text-xs text-content-secondary">
613
- {stat.label}
614
- </p>
615
- <p className="font-bold text-3xl">{stat.value}</p>
616
- </div>
617
- ))}
618
- </div>
619
-
620
- {/* Content sections */}
621
- <div className="grid grid-cols-3 gap-6">
622
- {/* Recent activity */}
623
- <div className="col-span-2 p-6 bg-white rounded-2xl border border-border-primary">
624
- <h2 className="mb-6 font-bold text-xl">Recent Activity</h2>
625
- <div className="space-y-4">
626
- {[1, 2, 3, 4].map((item) => (
627
- <div key={item} className="flex items-start gap-4 pb-4 border-b border-border-primary last:border-0">
628
- <div className="w-10 h-10 rounded-full bg-primary-custom-100" />
629
- <div className="flex-1">
630
- <p className="mb-1 font-bold text-sm">Activity title</p>
631
- <p className="text-xs text-content-secondary">
632
- Activity description goes here
633
- </p>
634
- </div>
635
- <span className="text-xs text-content-secondary">2h ago</span>
636
- </div>
637
- ))}
638
- </div>
639
- </div>
640
-
641
- {/* Sidebar */}
642
- <div className="space-y-6">
643
- {/* Team card */}
644
- <div className="p-6 bg-white rounded-2xl border border-border-primary">
645
- <h3 className="mb-4 font-bold">Team Members</h3>
646
- <div className="space-y-3">
647
- {[1, 2, 3].map((member) => (
648
- <div key={member} className="flex items-center gap-3">
649
- <div className="w-8 h-8 rounded-full bg-primary-custom-600" />
650
- <div className="flex-1">
651
- <p className="font-bold text-sm">Team Member</p>
652
- <p className="text-xs text-content-secondary">Role</p>
653
- </div>
654
- </div>
655
- ))}
656
- </div>
657
- <button className="mt-4 w-full px-4 py-2 border border-border-primary rounded-md text-sm font-bold">
658
- View All
659
- </button>
660
- </div>
661
-
662
- {/* Quick actions */}
663
- <div className="p-6 bg-white rounded-2xl border border-border-primary">
664
- <h3 className="mb-4 font-bold">Quick Actions</h3>
665
- <div className="space-y-2">
666
- <button className="w-full px-4 py-2 text-left border border-border-primary rounded-md text-sm">
667
- Create Project
668
- </button>
669
- <button className="w-full px-4 py-2 text-left border border-border-primary rounded-md text-sm">
670
- Add Task
671
- </button>
672
- <button className="w-full px-4 py-2 text-left border border-border-primary rounded-md text-sm">
673
- Invite Member
674
- </button>
675
- </div>
676
- </div>
677
- </div>
678
- </div>
679
- </div>
680
- </main>
681
- </div>
682
- );
683
- };
684
- ```
685
-
686
- ### Ejemplo 4: Modal con Spacing Correcto
687
-
688
- ```tsx
689
- export const SpacedModal = ({ isOpen, onClose }) => {
690
- if (!isOpen) return null;
691
-
692
- return (
693
- <div className="fixed inset-0 z-50 flex items-center justify-center p-4">
694
- {/* Overlay */}
695
- <div
696
- className="absolute inset-0 bg-black/50 backdrop-blur-lg"
697
- onClick={onClose}
698
- />
699
-
700
- {/* Modal */}
701
- <div className="relative z-10 w-full max-w-md bg-white rounded-3xl shadow-2xl">
702
- {/* Header */}
703
- <div className="flex items-center justify-between p-6 border-b border-border-primary">
704
- <h2 className="font-bold text-2xl">Modal Title</h2>
705
- <button
706
- onClick={onClose}
707
- className="p-2 hover:bg-background-secondary rounded-full"
708
- >
709
- <XIcon className="w-5 h-5" />
710
- </button>
711
- </div>
712
-
713
- {/* Body */}
714
- <div className="p-6">
715
- <p className="mb-4 text-content-secondary">
716
- This is the modal body. Notice the consistent spacing throughout
717
- the modal for a polished look.
718
- </p>
719
-
720
- {/* Form inside modal */}
721
- <div className="space-y-4">
722
- <div className="space-y-2">
723
- <label className="block font-bold text-sm">Name</label>
724
- <input
725
- type="text"
726
- className="w-full px-3 py-2 border border-border-primary rounded-md"
727
- />
728
- </div>
729
-
730
- <div className="space-y-2">
731
- <label className="block font-bold text-sm">Email</label>
732
- <input
733
- type="email"
734
- className="w-full px-3 py-2 border border-border-primary rounded-md"
735
- />
736
- </div>
737
- </div>
738
- </div>
739
-
740
- {/* Footer */}
741
- <div className="flex gap-3 justify-end p-6 border-t border-border-primary">
742
- <button
743
- onClick={onClose}
744
- className="px-4 py-2 border border-border-primary rounded-md font-bold"
745
- >
746
- Cancel
747
- </button>
748
- <button className="px-4 py-2 bg-primary-custom-600 text-white rounded-md font-bold">
749
- Save Changes
750
- </button>
751
- </div>
752
- </div>
753
- </div>
754
- );
755
- };
756
- ```
757
-
758
- ### Ejemplo 5: List con Spacing Consistente
759
-
760
- ```tsx
761
- export const SpacedList = () => {
762
- const items = [
763
- { id: 1, title: 'First item', description: 'Description for first item' },
764
- { id: 2, title: 'Second item', description: 'Description for second item' },
765
- { id: 3, title: 'Third item', description: 'Description for third item' },
766
- ];
767
-
768
- return (
769
- <div className="max-w-2xl mx-auto p-8">
770
- {/* List header */}
771
- <div className="mb-6">
772
- <h2 className="mb-2 font-bold text-2xl">Task List</h2>
773
- <p className="text-sm text-content-secondary">
774
- Manage your daily tasks and priorities.
775
- </p>
776
- </div>
777
-
778
- {/* List */}
779
- <div className="space-y-3">
780
- {items.map((item) => (
781
- <div
782
- key={item.id}
783
- className="p-4 border border-border-primary rounded-xl hover:border-primary-custom-300 transition-colors"
784
- >
785
- <div className="flex items-start gap-4">
786
- {/* Checkbox */}
787
- <input
788
- type="checkbox"
789
- className="mt-1 w-5 h-5"
790
- />
791
-
792
- {/* Content */}
793
- <div className="flex-1">
794
- <h3 className="mb-1 font-bold">{item.title}</h3>
795
- <p className="text-sm text-content-secondary">
796
- {item.description}
797
- </p>
798
- </div>
799
-
800
- {/* Actions */}
801
- <div className="flex gap-2">
802
- <button className="p-2 hover:bg-background-secondary rounded-md">
803
- <EditIcon className="w-4 h-4" />
804
- </button>
805
- <button className="p-2 hover:bg-background-secondary rounded-md">
806
- <TrashIcon className="w-4 h-4" />
807
- </button>
808
- </div>
809
- </div>
810
- </div>
811
- ))}
812
- </div>
813
-
814
- {/* Add button */}
815
- <button className="mt-6 w-full px-4 py-3 border border-dashed border-border-primary rounded-xl font-bold hover:border-primary-custom-300 hover:bg-primary-custom-100/50 transition-colors">
816
- + Add New Task
817
- </button>
818
- </div>
819
- );
820
- };
821
- ```
822
-
823
- ---
824
-
825
- ## Mejores Prácticas
826
-
827
- ### ✅ Hacer
828
-
829
- 1. **Usar valores consistentes del sistema**
830
- ```tsx
831
- // ✅ CORRECTO - Usar valores del sistema
832
- <div className="p-6 mb-8">Content</div>
833
- ```
834
-
835
- 2. **Mantener jerarquía visual con spacing**
836
- ```tsx
837
- // ✅ CORRECTO - Spacing más pequeño para elementos relacionados
838
- <div className="space-y-2">
839
- <label>Label</label>
840
- <input />
841
- <p className="text-xs">Helper text</p>
842
- </div>
843
-
844
- // Spacing más grande entre grupos diferentes
845
- <form className="space-y-6">
846
- <div className="space-y-2">{/* Group 1 */}</div>
847
- <div className="space-y-2">{/* Group 2 */}</div>
848
- </form>
849
- ```
850
-
851
- 3. **Usar `gap` en lugar de margin cuando sea posible**
852
- ```tsx
853
- // ✅ CORRECTO - gap es más limpio y predecible
854
- <div className="flex gap-4">
855
- <button>Button 1</button>
856
- <button>Button 2</button>
857
- </div>
858
- ```
859
-
860
- 4. **Usar spacing responsive**
861
- ```tsx
862
- // ✅ CORRECTO - Ajustar spacing para diferentes tamaños
863
- <div className="p-4 md:p-6 lg:p-8">
864
- Responsive padding
865
- </div>
866
- ```
867
-
868
- 5. **Agrupar elementos relacionados**
869
- ```tsx
870
- // ✅ CORRECTO - Spacing menor dentro de grupos
871
- <div className="space-y-8">
872
- <div className="space-y-2">
873
- <h2>Section 1</h2>
874
- <p>Content related to section 1</p>
875
- </div>
876
-
877
- <div className="space-y-2">
878
- <h2>Section 2</h2>
879
- <p>Content related to section 2</p>
880
- </div>
881
- </div>
882
- ```
883
-
884
- ### ❌ Evitar
885
-
886
- 1. **No usar valores arbitrarios sin necesidad**
887
- ```tsx
888
- // ❌ INCORRECTO - Valor arbitrario
889
- <div className="p-[13px]">Content</div>
890
-
891
- // ✅ CORRECTO - Usar valor del sistema
892
- <div className="p-3">Content</div>
893
- ```
894
-
895
- 2. **No mezclar unidades de spacing inconsistentes**
896
- ```tsx
897
- // ❌ INCORRECTO - Valores aleatorios
898
- <div className="space-y-5">
899
- <div className="mb-7">Item 1</div>
900
- <div className="mb-11">Item 2</div>
901
- </div>
902
-
903
- // ✅ CORRECTO - Valores consistentes
904
- <div className="space-y-6">
905
- <div>Item 1</div>
906
- <div>Item 2</div>
907
- </div>
908
- ```
909
-
910
- 3. **No usar demasiado spacing pequeño**
911
- ```tsx
912
- // ❌ INCORRECTO - Muy compacto, difícil de clickear
913
- <button className="px-1 py-0.5">Button</button>
914
-
915
- // ✅ CORRECTO - Área de click adecuada
916
- <button className="px-4 py-2">Button</button>
917
- ```
918
-
919
- 4. **No apilar márgenes innecesarios**
920
- ```tsx
921
- // ❌ INCORRECTO - Margen doble
922
- <div className="mb-4">
923
- <p className="mb-4">Text</p>
924
- </div>
925
-
926
- // ✅ CORRECTO - Usar space-y o gap
927
- <div className="space-y-4">
928
- <p>Text 1</p>
929
- <p>Text 2</p>
930
- </div>
931
- ```
932
-
933
- 5. **No ignorar el padding en elementos clickeables**
934
- ```tsx
935
- // ❌ INCORRECTO - Área de click pequeña
936
- <button className="p-0">Click me</button>
937
-
938
- // ✅ CORRECTO - Área de click generosa
939
- <button className="px-4 py-2">Click me</button>
940
- ```
941
-
942
- ### Reglas de Consistencia
943
-
944
- 1. **Elementos similares deben tener spacing similar**
945
- - Todos los botones primarios: `px-4 py-2`
946
- - Todas las cards estándar: `p-6`
947
- - Todos los inputs: `px-3 py-2`
948
-
949
- 2. **Escalar spacing proporcionalmente**
950
- - Botón small: `px-3 py-1.5`
951
- - Botón medium: `px-4 py-2`
952
- - Botón large: `px-6 py-3`
953
-
954
- 3. **Mantener ritmo vertical**
955
- - Usar `space-y-*` para mantener spacing vertical consistente
956
- - Duplicar el spacing entre secciones principales
957
-
958
- 4. **Responsive scaling**
959
- - Mobile: Padding más pequeño (p-4)
960
- - Tablet: Padding medio (md:p-6)
961
- - Desktop: Padding grande (lg:p-8)
962
-
963
- ---
964
-
965
- ## Dark Mode
966
-
967
- Los valores de spacing permanecen idénticos entre light y dark mode, pero es importante combinarlos con colores adaptativos para mantener la coherencia visual en ambos modos.
968
-
969
- ### Configuración de Tailwind CSS
970
-
971
- El modo oscuro en Siesa UI Kit se basa en la estrategia de clases de Tailwind CSS:
972
-
973
- ```javascript
974
- // tailwind.config.js
975
- module.exports = {
976
- darkMode: 'class', // ✅ Estrategia basada en clases (NO 'media')
977
- // ...resto de la configuración
978
- }
979
- ```
980
-
981
- Con esta configuración, el modo oscuro se activa añadiendo la clase `.dark` al elemento `<html>`:
982
-
983
- ```html
984
- <!-- Modo claro -->
985
- <html>
986
- <body>
987
- <!-- Contenido en modo claro -->
988
- </body>
989
- </html>
990
-
991
- <!-- Modo oscuro -->
992
- <html class="dark">
993
- <body>
994
- <!-- Contenido en modo oscuro -->
995
- </body>
996
- </html>
997
- ```
998
-
999
- ### El Modificador `dark:`
1000
-
1001
- 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>`).
1002
-
1003
- #### Sintaxis Básica para Spacing
1004
-
1005
- ```tsx
1006
- // Patrón básico - Mismo spacing, colores adaptativos
1007
- <div className="p-6 bg-white dark:bg-dark-bg-primary rounded-2xl">
1008
- Card con padding consistente
1009
- </div>
1010
-
1011
- // Los valores de spacing (p-6, mb-4, gap-3, etc.) NO cambian
1012
- // Solo los colores se adaptan al modo oscuro
1013
- ```
1014
-
1015
- ### Principios de Spacing en Dark Mode
1016
-
1017
- **Regla de Oro**: El sistema de spacing no cambia, pero el contexto visual sí:
1018
-
1019
- ```tsx
1020
- // ✅ CORRECTO - Mismo spacing, colores adaptativos
1021
- <div className="p-6 bg-white dark:bg-dark-bg-primary border border-border-primary dark:border-dark-border-primary rounded-2xl">
1022
- <h3 className="mb-4 text-content-primary dark:text-dark-content-primary font-bold">
1023
- Title
1024
- </h3>
1025
- <p className="text-content-secondary dark:text-content-secondary">
1026
- Content
1027
- </p>
1028
- </div>
1029
-
1030
- // ❌ INCORRECTO - Cambiar spacing en dark mode
1031
- <div className="p-6 dark:p-8">
1032
- NO hacer esto - mantener spacing consistente
1033
- </div>
1034
- ```
1035
-
1036
- ### Combinando Spacing con Estados Interactivos
1037
-
1038
- El modificador `dark:` se puede combinar con hover y otros estados, manteniendo el spacing consistente:
1039
-
1040
- ```tsx
1041
- // Dark mode + Hover (spacing no cambia, solo colores)
1042
- <button className="
1043
- px-4 py-2
1044
- bg-primary-custom-600 dark:bg-dark-bg-inverse
1045
- hover:bg-primary-custom-500 dark:hover:bg-dark-bg-inverse/90
1046
- text-white dark:text-dark-content-inverse
1047
- ">
1048
- Button con spacing consistente
1049
- </button>
1050
-
1051
- // Dark mode + Focus en inputs
1052
- <input className="
1053
- px-3 py-2
1054
- border border-border-primary dark:border-dark-border-primary
1055
- focus:ring-2 focus:ring-primary-custom-400/20 dark:focus:ring-dark-border-custom/20
1056
- " />
1057
- ```
1058
-
1059
- ### Orden de Modificadores
1060
-
1061
- Tailwind CSS recomienda un orden específico:
1062
-
1063
- **Formato**: `{responsive}:{dark}:{state}:{utility}`
1064
-
1065
- ```tsx
1066
- // ✅ CORRECTO - Orden: responsive → dark → state → utility
1067
- <div className="
1068
- p-4
1069
- md:p-6
1070
- bg-white
1071
- md:dark:bg-dark-bg-primary
1072
- md:dark:hover:bg-dark-bg-secondary
1073
- ">
1074
- Card con orden correcto
1075
- </div>
1076
-
1077
- // ❌ INCORRECTO - Orden equivocado
1078
- <div className="
1079
- dark:md:hover:bg-dark-bg-secondary
1080
- p-4
1081
- ">
1082
- Orden confuso
1083
- </div>
1084
- ```
1085
-
1086
- ### Ejemplos de Spacing con Dark Mode
1087
-
1088
- #### 1. Cards con Spacing Adaptado
1089
-
1090
- ```tsx
1091
- // Card con padding y spacing interno consistente
1092
- <div className="p-6 bg-white dark:bg-dark-bg-primary border border-border-primary dark:border-dark-border-primary rounded-2xl shadow-base">
1093
- {/* Header con margin-bottom */}
1094
- <div className="mb-4 flex items-center justify-between">
1095
- <h2 className="text-content-primary dark:text-dark-content-primary font-bold text-xl">
1096
- Card Title
1097
- </h2>
1098
- <span className="text-content-secondary dark:text-content-secondary text-sm">
1099
- Just now
1100
- </span>
1101
- </div>
1102
-
1103
- {/* Content con margin-bottom */}
1104
- <p className="mb-4 text-content-secondary dark:text-content-secondary">
1105
- Esta card mantiene el mismo spacing (p-6, mb-4) en ambos modos,
1106
- pero los colores se adaptan automáticamente.
1107
- </p>
1108
-
1109
- {/* Actions con gap */}
1110
- <div className="flex gap-3">
1111
- <button className="px-4 py-2 bg-primary-custom-600 dark:bg-dark-bg-inverse text-primary-inverse-content dark:text-dark-content-inverse rounded-md font-bold">
1112
- Primary
1113
- </button>
1114
- <button className="px-4 py-2 border border-border-primary dark:border-dark-border-custom text-content-primary dark:text-dark-content-primary rounded-md font-bold">
1115
- Secondary
1116
- </button>
1117
- </div>
1118
- </div>
1119
- ```
1120
-
1121
- #### 2. Form con Spacing Vertical
1122
-
1123
- ```tsx
1124
- // Formulario con spacing consistente en ambos modos
1125
- <form className="max-w-md mx-auto p-8 bg-white dark:bg-dark-bg-primary rounded-2xl border border-border-primary dark:border-dark-border-primary">
1126
- {/* Form header - spacing con mb-6 */}
1127
- <div className="mb-6">
1128
- <h2 className="mb-2 text-content-primary dark:text-dark-content-primary font-bold text-2xl">
1129
- Sign Up
1130
- </h2>
1131
- <p className="text-content-secondary dark:text-content-secondary text-sm">
1132
- Create your account to get started
1133
- </p>
1134
- </div>
1135
-
1136
- {/* Form fields - spacing con space-y-6 */}
1137
- <div className="space-y-6">
1138
- {/* Field 1 */}
1139
- <div className="space-y-2">
1140
- <label className="block text-content-primary dark:text-dark-content-primary font-bold text-sm">
1141
- Email
1142
- </label>
1143
- <input
1144
- type="email"
1145
- className="w-full px-3 py-2 bg-white dark:bg-dark-bg-primary border border-border-primary dark:border-dark-border-primary text-content-primary dark:text-dark-content-primary rounded-md"
1146
- placeholder="you@example.com"
1147
- />
1148
- <p className="text-content-tertiary dark:text-content-tertiary text-xs">
1149
- We'll never share your email
1150
- </p>
1151
- </div>
1152
-
1153
- {/* Field 2 */}
1154
- <div className="space-y-2">
1155
- <label className="block text-content-primary dark:text-dark-content-primary font-bold text-sm">
1156
- Password
1157
- </label>
1158
- <input
1159
- type="password"
1160
- className="w-full px-3 py-2 bg-white dark:bg-dark-bg-primary border border-border-primary dark:border-dark-border-primary text-content-primary dark:text-dark-content-primary rounded-md"
1161
- placeholder="••••••••"
1162
- />
1163
- </div>
1164
-
1165
- {/* Submit button - spacing con pt-4 */}
1166
- <button
1167
- type="submit"
1168
- className="w-full px-4 py-3 bg-primary-custom-600 dark:bg-dark-bg-inverse text-primary-inverse-content dark:text-dark-content-inverse rounded-md font-bold"
1169
- >
1170
- Create Account
1171
- </button>
1172
- </div>
1173
- </form>
1174
- ```
1175
-
1176
- #### 3. Grid de Cards con Gaps
1177
-
1178
- ```tsx
1179
- // Grid con gaps consistentes y colores adaptativos
1180
- <div className="p-8 bg-background-secondary dark:bg-dark-bg-primary min-h-screen">
1181
- <div className="max-w-7xl mx-auto">
1182
- {/* Header con mb-8 */}
1183
- <div className="mb-8">
1184
- <h1 className="mb-2 text-content-primary dark:text-dark-content-primary font-bold text-4xl">
1185
- Dashboard
1186
- </h1>
1187
- <p className="text-content-secondary dark:text-content-secondary">
1188
- Overview of your projects
1189
- </p>
1190
- </div>
1191
-
1192
- {/* Grid con gap-6 */}
1193
- <div className="grid grid-cols-3 gap-6">
1194
- {[1, 2, 3, 4, 5, 6].map((item) => (
1195
- <div
1196
- key={item}
1197
- className="p-6 bg-white dark:bg-dark-bg-primary border border-border-primary dark:border-dark-border-primary rounded-2xl shadow-base hover:shadow-lg transition-shadow"
1198
- >
1199
- <div className="mb-4 w-12 h-12 rounded-full bg-primary-custom-100 dark:bg-dark-border-custom flex items-center justify-center">
1200
- <span className="text-2xl">📊</span>
1201
- </div>
1202
- <h3 className="mb-2 text-content-primary dark:text-dark-content-primary font-bold">
1203
- Project {item}
1204
- </h3>
1205
- <p className="text-content-secondary dark:text-content-secondary text-sm">
1206
- Description for project {item}
1207
- </p>
1208
- </div>
1209
- ))}
1210
- </div>
1211
- </div>
1212
- </div>
1213
- ```
1214
-
1215
- #### 4. Navigation Bar con Spacing Horizontal
1216
-
1217
- ```tsx
1218
- // Navbar con padding y gaps adaptados
1219
- <nav className="px-6 py-4 bg-white dark:bg-dark-bg-primary border-b border-border-primary dark:border-dark-border-primary">
1220
- <div className="container mx-auto flex items-center justify-between">
1221
- {/* Logo */}
1222
- <div className="text-content-primary dark:text-dark-content-primary font-bold text-xl">
1223
- Logo
1224
- </div>
1225
-
1226
- {/* Nav items con gap-6 */}
1227
- <ul className="flex gap-6">
1228
- {['Home', 'About', 'Services', 'Contact'].map((item) => (
1229
- <li key={item}>
1230
- <a
1231
- href={`#${item.toLowerCase()}`}
1232
- className="text-content-primary dark:text-dark-content-primary font-bold hover:text-primary-custom-600 dark:hover:text-dark-content-primary transition-colors"
1233
- >
1234
- {item}
1235
- </a>
1236
- </li>
1237
- ))}
1238
- </ul>
1239
-
1240
- {/* CTA Button */}
1241
- <button className="px-4 py-2 bg-primary-custom-600 dark:bg-dark-bg-inverse text-primary-inverse-content dark:text-dark-content-inverse rounded-md font-bold">
1242
- Sign In
1243
- </button>
1244
- </div>
1245
- </nav>
1246
- ```
1247
-
1248
- #### 5. List con Spacing Vertical
1249
-
1250
- ```tsx
1251
- // Lista con spacing entre items
1252
- <div className="max-w-2xl mx-auto p-8">
1253
- <h2 className="mb-6 text-content-primary dark:text-dark-content-primary font-bold text-2xl">
1254
- Notifications
1255
- </h2>
1256
-
1257
- {/* Lista con space-y-3 */}
1258
- <div className="space-y-3">
1259
- {[1, 2, 3, 4].map((item) => (
1260
- <div
1261
- key={item}
1262
- className="p-4 bg-white dark:bg-dark-bg-primary border border-border-primary dark:border-dark-border-primary rounded-xl hover:border-primary-custom-300 dark:hover:border-dark-border-custom transition-colors"
1263
- >
1264
- <div className="flex items-start gap-4">
1265
- {/* Avatar */}
1266
- <div className="w-10 h-10 rounded-full bg-primary-custom-100 dark:bg-dark-border-custom flex-shrink-0" />
1267
-
1268
- {/* Content */}
1269
- <div className="flex-1">
1270
- <h3 className="mb-1 text-content-primary dark:text-dark-content-primary font-bold">
1271
- Notification Title
1272
- </h3>
1273
- <p className="text-content-secondary dark:text-content-secondary text-sm">
1274
- Notification description with some details
1275
- </p>
1276
- </div>
1277
-
1278
- {/* Time */}
1279
- <span className="text-content-tertiary dark:text-content-tertiary text-xs">
1280
- 2h ago
1281
- </span>
1282
- </div>
1283
- </div>
1284
- ))}
1285
- </div>
1286
- </div>
1287
- ```
1288
-
1289
- ### Mejores Prácticas de Spacing en Dark Mode
1290
-
1291
- #### 1. Mantener Spacing Consistente
1292
-
1293
- ```tsx
1294
- // ✅ CORRECTO - Mismo spacing en ambos modos
1295
- <div className="p-6 bg-white dark:bg-dark-bg-primary">
1296
- Content
1297
- </div>
1298
-
1299
- // ❌ INCORRECTO - Cambiar spacing en dark mode
1300
- <div className="p-6 dark:p-8 bg-white dark:bg-dark-bg-primary">
1301
- Content
1302
- </div>
1303
- ```
1304
-
1305
- #### 2. Combinar con Colores Adaptativos
1306
-
1307
- ```tsx
1308
- // ✅ CORRECTO - Todos los colores se adaptan
1309
- <div className="p-6 mb-4 bg-white dark:bg-dark-bg-primary border border-border-primary dark:border-dark-border-primary">
1310
- <h3 className="mb-2 text-content-primary dark:text-dark-content-primary">Title</h3>
1311
- <p className="text-content-secondary dark:text-content-secondary">Content</p>
1312
- </div>
1313
- ```
1314
-
1315
- #### 3. Gaps en Flexbox/Grid
1316
-
1317
- ```tsx
1318
- // ✅ CORRECTO - Gap consistente, colores adaptativos
1319
- <div className="flex gap-4">
1320
- <button className="px-4 py-2 bg-primary-custom-600 dark:bg-dark-bg-inverse text-white">
1321
- Button 1
1322
- </button>
1323
- <button className="px-4 py-2 border border-border-primary dark:border-dark-border-custom text-content-primary dark:text-dark-content-primary">
1324
- Button 2
1325
- </button>
1326
- </div>
1327
- ```
1328
-
1329
- #### 4. Spacing Responsive
1330
-
1331
- ```tsx
1332
- // ✅ CORRECTO - Spacing responsive + dark mode
1333
- <div className="p-4 md:p-6 lg:p-8 bg-white dark:bg-dark-bg-primary">
1334
- Responsive padding que funciona en ambos modos
1335
- </div>
1336
-
1337
- // Para containers principales
1338
- <div className="px-4 sm:px-6 lg:px-16 py-8 bg-background-secondary dark:bg-dark-bg-primary">
1339
- Main content
1340
- </div>
1341
- ```
1342
-
1343
- ### Ejemplo Completo: Dashboard Layout con Dark Mode
1344
-
1345
- ```tsx
1346
- export const DashboardDarkMode = () => {
1347
- return (
1348
- <div className="min-h-screen bg-background-secondary dark:bg-dark-bg-primary">
1349
- {/* Header - px-6 py-4 */}
1350
- <header className="bg-white dark:bg-dark-bg-primary border-b border-border-primary dark:border-dark-border-primary px-6 py-4">
1351
- <div className="flex items-center justify-between">
1352
- <h1 className="text-content-primary dark:text-dark-content-primary font-bold text-xl">
1353
- Dashboard
1354
- </h1>
1355
- <div className="flex items-center gap-4">
1356
- <button className="px-4 py-2 bg-primary-custom-600 dark:bg-dark-bg-inverse text-primary-inverse-content dark:text-dark-content-inverse rounded-md font-bold">
1357
- New Project
1358
- </button>
1359
- </div>
1360
- </div>
1361
- </header>
1362
-
1363
- {/* Main content - p-6 */}
1364
- <main className="p-6">
1365
- <div className="max-w-7xl mx-auto">
1366
- {/* Page title - mb-8 */}
1367
- <div className="mb-8">
1368
- <h2 className="mb-2 text-content-primary dark:text-dark-content-primary font-bold text-4xl">
1369
- Welcome back
1370
- </h2>
1371
- <p className="text-content-secondary dark:text-content-secondary">
1372
- Here's what's happening with your projects
1373
- </p>
1374
- </div>
1375
-
1376
- {/* Stats grid - gap-6, mb-8 */}
1377
- <div className="grid grid-cols-4 gap-6 mb-8">
1378
- {['24', '156', '12', '87%'].map((value, index) => (
1379
- <div
1380
- key={index}
1381
- className="p-6 bg-white dark:bg-dark-bg-primary border border-border-primary dark:border-dark-border-primary rounded-2xl"
1382
- >
1383
- <p className="mb-2 text-content-secondary dark:text-content-secondary text-xs">
1384
- Stat {index + 1}
1385
- </p>
1386
- <p className="text-content-primary dark:text-dark-content-primary font-bold text-3xl">
1387
- {value}
1388
- </p>
1389
- </div>
1390
- ))}
1391
- </div>
1392
-
1393
- {/* Content sections - grid gap-6 */}
1394
- <div className="grid grid-cols-3 gap-6">
1395
- {/* Main content - col-span-2 */}
1396
- <div className="col-span-2 p-6 bg-white dark:bg-dark-bg-primary border border-border-primary dark:border-dark-border-primary rounded-2xl">
1397
- <h3 className="mb-6 text-content-primary dark:text-dark-content-primary font-bold text-xl">
1398
- Recent Activity
1399
- </h3>
1400
- <div className="space-y-4">
1401
- {[1, 2, 3].map((item) => (
1402
- <div
1403
- key={item}
1404
- className="flex items-start gap-4 pb-4 border-b border-border-primary dark:border-dark-border-primary last:border-0"
1405
- >
1406
- <div className="w-10 h-10 rounded-full bg-primary-custom-100 dark:bg-dark-border-custom" />
1407
- <div className="flex-1">
1408
- <p className="mb-1 text-content-primary dark:text-dark-content-primary font-bold text-sm">
1409
- Activity title
1410
- </p>
1411
- <p className="text-content-secondary dark:text-content-secondary text-xs">
1412
- Description
1413
- </p>
1414
- </div>
1415
- </div>
1416
- ))}
1417
- </div>
1418
- </div>
1419
-
1420
- {/* Sidebar - space-y-6 */}
1421
- <div className="space-y-6">
1422
- <div className="p-6 bg-white dark:bg-dark-bg-primary border border-border-primary dark:border-dark-border-primary rounded-2xl">
1423
- <h4 className="mb-4 text-content-primary dark:text-dark-content-primary font-bold">
1424
- Team
1425
- </h4>
1426
- <div className="space-y-3">
1427
- {[1, 2, 3].map((member) => (
1428
- <div key={member} className="flex items-center gap-3">
1429
- <div className="w-8 h-8 rounded-full bg-primary-custom-600 dark:bg-dark-bg-inverse" />
1430
- <div>
1431
- <p className="text-content-primary dark:text-dark-content-primary font-bold text-sm">
1432
- Member {member}
1433
- </p>
1434
- </div>
1435
- </div>
1436
- ))}
1437
- </div>
1438
- </div>
1439
- </div>
1440
- </div>
1441
- </div>
1442
- </main>
1443
- </div>
1444
- );
1445
- };
1446
- ```
1447
-
1448
- ### Guía de Spacing con Dark Mode
1449
-
1450
- Los mismos valores de spacing funcionan perfectamente en ambos modos:
1451
-
1452
- | Uso | Spacing | Light Mode Colors | Dark Mode Colors |
1453
- |-----|---------|-------------------|------------------|
1454
- | **Card padding** | `p-6` | `bg-white` | `dark:bg-dark-bg-primary` |
1455
- | **Button padding** | `px-4 py-2` | `bg-primary-custom-600` | `dark:bg-dark-bg-inverse` |
1456
- | **Section margin** | `mb-8` | - | - |
1457
- | **Form spacing** | `space-y-6` | - | - |
1458
- | **Grid gap** | `gap-6` | - | - |
1459
- | **Container padding** | `px-6` | `bg-background-secondary` | `dark:bg-dark-bg-primary` |
1460
-
1461
- ### Recursos Adicionales sobre Dark Mode
1462
-
1463
- Para más información sobre el modo oscuro:
1464
- - Ver `docs/dark-mode-guide.md` - Guía completa de Dark Mode en Tailwind CSS
1465
- - Ver `docs/colors.md` - Sistema de colores completo con tokens dark mode
1466
- - Ver `docs/border-radius.md` - Border radius con ejemplos de dark mode
1467
- - Ver `docs/shadows.md` - Sombras adaptadas a dark mode
1468
- - Ver `docs/filters.md` - Filtros y glassmorphism en dark mode
1469
- - Ver `docs/typography.md` - Sistema tipográfico adaptado a dark mode
1470
- - [Documentación oficial de Tailwind Dark Mode](https://tailwindcss.com/docs/dark-mode)
1471
-
1472
- ---
1473
-
1474
- ## Referencia Rápida
1475
-
1476
- ### Cheat Sheet: Por Caso de Uso
1477
-
1478
- ```tsx
1479
- // ===== BOTONES =====
1480
- // Small
1481
- <button className="px-3 py-1.5 text-sm">Small</button>
1482
-
1483
- // Medium (default)
1484
- <button className="px-4 py-2 text-sm">Medium</button>
1485
-
1486
- // Large
1487
- <button className="px-6 py-3 text-base">Large</button>
1488
-
1489
- // ===== CARDS =====
1490
- // Compact
1491
- <div className="p-4">Compact card</div>
1492
-
1493
- // Standard
1494
- <div className="p-6">Standard card</div>
1495
-
1496
- // Spacious
1497
- <div className="p-8">Spacious card</div>
1498
-
1499
- // ===== INPUTS =====
1500
- <input className="px-3 py-2" />
1501
-
1502
- // ===== FORMULARIOS =====
1503
- // Spacing entre campos
1504
- <form className="space-y-6">
1505
- <div className="space-y-2">
1506
- <label>Label</label>
1507
- <input />
1508
- <p>Helper</p>
1509
- </div>
1510
- </form>
1511
-
1512
- // ===== GRIDS =====
1513
- // Compact grid
1514
- <div className="grid gap-4">...</div>
1515
-
1516
- // Standard grid
1517
- <div className="grid gap-6">...</div>
1518
-
1519
- // Spacious grid
1520
- <div className="grid gap-8">...</div>
1521
-
1522
- // ===== LAYOUTS =====
1523
- // Page padding
1524
- <div className="px-6 py-12">Page content</div>
1525
-
1526
- // Container
1527
- <div className="container mx-auto px-6">Content</div>
1528
-
1529
- // Section spacing
1530
- <div className="space-y-16">
1531
- <section>Section 1</section>
1532
- <section>Section 2</section>
1533
- </div>
1534
- ```
1535
-
1536
- ### Cheat Sheet: Valores Más Comunes
1537
-
1538
- ```tsx
1539
- // Espaciado interno (padding)
1540
- p-3 → 12px (botones, inputs)
1541
- p-4 → 16px (cards compactas)
1542
- p-6 → 24px (cards estándar)
1543
- p-8 → 32px (cards espaciosas)
1544
- p-12 → 48px (secciones)
1545
- p-16 → 64px (containers)
1546
-
1547
- // Espaciado externo (margin)
1548
- mb-2 → 8px (spacing mínimo)
1549
- mb-4 → 16px (entre elementos)
1550
- mb-6 → 24px (entre grupos)
1551
- mb-8 → 32px (entre secciones relacionadas)
1552
- mb-12 → 48px (entre secciones)
1553
- mb-16 → 64px (entre secciones principales)
1554
-
1555
- // Gap (flex/grid)
1556
- gap-2 → 8px (botones en grupo)
1557
- gap-3 → 12px (elementos pequeños)
1558
- gap-4 → 16px (elementos medianos)
1559
- gap-6 → 24px (cards, elementos grandes)
1560
- gap-8 → 32px (secciones)
1561
-
1562
- // Responsive padding
1563
- p-4 md:p-6 lg:p-8 (mobile → tablet → desktop)
1564
- px-4 sm:px-6 lg:px-16 (horizontal padding responsive)
1565
- ```
1566
-
1567
- ### Cheat Sheet: Combinaciones Comunes
1568
-
1569
- ```tsx
1570
- // Card con contenido
1571
- <div className="p-6 space-y-4">
1572
- <h3 className="font-bold">Title</h3>
1573
- <p>Content</p>
1574
- <div className="flex gap-3 pt-2">
1575
- <button className="px-4 py-2">Action</button>
1576
- </div>
1577
- </div>
1578
-
1579
- // Form field
1580
- <div className="space-y-2">
1581
- <label className="block font-bold text-sm">Label</label>
1582
- <input className="w-full px-3 py-2" />
1583
- <p className="text-xs">Helper text</p>
1584
- </div>
1585
-
1586
- // Navigation
1587
- <nav className="px-6 py-4">
1588
- <ul className="flex gap-6">
1589
- <li>Item</li>
1590
- </ul>
1591
- </nav>
1592
-
1593
- // Modal
1594
- <div className="rounded-3xl">
1595
- <div className="p-6 border-b">Header</div>
1596
- <div className="p-6">Body</div>
1597
- <div className="p-6 border-t flex gap-3 justify-end">
1598
- <button className="px-4 py-2">Action</button>
1599
- </div>
1600
- </div>
1601
-
1602
- // Grid de cards
1603
- <div className="grid grid-cols-3 gap-6">
1604
- <div className="p-6">Card</div>
1605
- </div>
1606
-
1607
- // Hero section
1608
- <section className="px-6 py-16 md:py-24">
1609
- <h1 className="mb-6">Title</h1>
1610
- <p className="mb-8">Description</p>
1611
- <button className="px-6 py-3">CTA</button>
1612
- </section>
1613
- ```
1614
-
1615
- ### Cheat Sheet: Regla del 4
1616
-
1617
- La mayoría de spacing debe ser múltiplo de 4px:
1618
-
1619
- ```
1620
- 4px → 1
1621
- 8px → 2
1622
- 12px → 3 ← Padding de botones
1623
- 16px → 4 ← Spacing base
1624
- 24px → 6 ← Padding de cards
1625
- 32px → 8 ← Gap entre secciones
1626
- 48px → 12 ← Separación entre secciones
1627
- 64px → 16 ← Padding de containers
1628
- ```
1629
-
1630
- Valores intermedios (.5) para ajustes finos:
1631
- ```
1632
- 2px → 0.5
1633
- 6px → 1.5
1634
- 10px → 2.5
1635
- 14px → 3.5
1636
- ```
1637
-
1638
- ---
1639
-
1640
- ## Recursos Adicionales
1641
-
1642
- ### Documentación de Tailwind CSS
1643
-
1644
- - **Padding**: https://tailwindcss.com/docs/padding
1645
- - **Margin**: https://tailwindcss.com/docs/margin
1646
- - **Space Between**: https://tailwindcss.com/docs/space
1647
- - **Gap**: https://tailwindcss.com/docs/gap
1648
-
1649
- ### Archivos Relacionados
1650
-
1651
- - `tailwind.config.js` - Configuración de spacing personalizado (tailwind.config.js:109-112)
1652
- - `docs/typography.md` - Sistema de tipografía (combina bien con spacing)
1653
- - `docs/colors.md` - Sistema de colores
1654
- - `docs/border-radius.md` - Border radius para complementar cards
1655
-
1656
- ### Conversión de Unidades
1657
-
1658
- ```
1659
- 1rem = 16px (por defecto en navegadores)
1660
-
1661
- Spacing → Pixels:
1662
- 0.5 → 2px
1663
- 1 → 4px
1664
- 1.5 → 6px
1665
- 2 → 8px
1666
- 3 → 12px
1667
- 4 → 16px
1668
- 6 → 24px
1669
- 8 → 32px
1670
- 12 → 48px
1671
- 16 → 64px
1672
- ```
1673
-
1674
- ### Tips de Performance
1675
-
1676
- 1. **Usar `gap` en lugar de margin cuando sea posible**: Más eficiente para el navegador
1677
- 2. **Evitar valores arbitrarios**: Los valores del sistema están optimizados
1678
- 3. **Usar spacing responsive**: Mejora la experiencia en diferentes dispositivos
1679
-
1680
- ---
1681
-
1682
- **Última actualización**: 2025-11-11
1683
- **Versión**: 1.0.0
1684
- **Mantenedor**: Siesa UI Kit Team