siesa-ui-kit 1.0.4 → 1.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (541) hide show
  1. package/README.md +89 -115
  2. package/bin/install.cjs +502 -502
  3. package/bin/prepare-publish.cjs +28 -28
  4. package/bin/restore-folders.cjs +28 -28
  5. package/claude/agents/siesa-ui-kit-specialist.md +2401 -2445
  6. package/claude/prompts/component-template.md +121 -121
  7. package/claude/settings.local.json +61 -72
  8. package/docs/border-radius.md +1261 -1261
  9. package/docs/colors.md +832 -832
  10. package/docs/dark-mode-guide.md +1426 -1426
  11. package/docs/filters.md +1243 -1243
  12. package/docs/icons.md +1283 -1264
  13. package/docs/shadows.md +1377 -1377
  14. package/docs/spacing.md +1684 -1684
  15. package/docs/typography.md +1268 -1268
  16. package/package.json +83 -111
  17. package/postcss.config.cjs +6 -6
  18. package/src/App.css +42 -42
  19. package/src/App.tsx +8 -8
  20. package/src/ButtonTest.tsx +147 -147
  21. package/src/assets/fonts/README.md +261 -261
  22. package/src/components/Alert/Alert.stories.tsx +332 -332
  23. package/src/components/Alert/Alert.tsx +106 -106
  24. package/src/components/Alert/Alert.types.ts +54 -54
  25. package/src/components/Avatar/Avatar.stories.tsx +494 -494
  26. package/src/components/Avatar/Avatar.tsx +143 -143
  27. package/src/components/Avatar/Avatar.types.ts +53 -53
  28. package/src/components/Badge/Badge.stories.tsx +339 -339
  29. package/src/components/Badge/Badge.tsx +278 -278
  30. package/src/components/Badge/Badge.types.ts +58 -58
  31. package/src/components/Button/Button.stories.tsx +950 -950
  32. package/src/components/Button/Button.tsx +337 -337
  33. package/src/components/Button/Button.types.ts +180 -180
  34. package/src/components/Button/icons.tsx +87 -48
  35. package/src/components/Button/index.ts +3 -3
  36. package/src/components/Checkbox/Checkbox.stories.tsx +453 -453
  37. package/src/components/Checkbox/Checkbox.tsx +208 -208
  38. package/src/components/Checkbox/Checkbox.types.ts +61 -61
  39. package/src/components/DescriptionList/DescriptionList.stories.tsx +250 -250
  40. package/src/components/DescriptionList/DescriptionList.tsx +96 -96
  41. package/src/components/DescriptionList/DescriptionList.types.ts +29 -29
  42. package/src/components/Divider/Divider.stories.tsx +263 -263
  43. package/src/components/Divider/Divider.tsx +80 -80
  44. package/src/components/Divider/Divider.types.ts +24 -24
  45. package/src/components/Dropdown/Dropdown.stories.tsx +552 -552
  46. package/src/components/Dropdown/Dropdown.tsx +422 -422
  47. package/src/components/Dropdown/Dropdown.types.ts +146 -146
  48. package/src/components/Dropdown/README.md +266 -266
  49. package/src/components/Dropdown/icons.tsx +72 -72
  50. package/src/components/Dropdown/index.ts +8 -8
  51. package/src/components/Input/Input.stories.tsx +583 -583
  52. package/src/components/Input/Input.tsx +204 -204
  53. package/src/components/Input/Input.types.ts +80 -80
  54. package/src/components/Input/icons.tsx +145 -145
  55. package/src/components/Input/index.ts +2 -2
  56. package/src/components/LoginView/LoginView.stories.tsx +148 -148
  57. package/src/components/LoginView/LoginView.tsx +426 -426
  58. package/src/components/LoginView/LoginView.types.ts +52 -52
  59. package/src/components/LoginView/README.md +396 -396
  60. package/src/components/LoginView/icons.tsx +85 -85
  61. package/src/components/LoginView/index.ts +3 -3
  62. package/src/components/Navbar/Navbar.stories.tsx +810 -810
  63. package/src/components/Navbar/Navbar.tsx +755 -755
  64. package/src/components/Navbar/Navbar.types.ts +219 -219
  65. package/src/components/Navbar/README.md +279 -279
  66. package/src/components/Navbar/icons.tsx +102 -102
  67. package/src/components/Navbar/index.ts +8 -8
  68. package/src/components/NavigationBar/NavigationBar.stories.tsx +406 -406
  69. package/src/components/NavigationBar/NavigationBar.tsx +246 -246
  70. package/src/components/NavigationBar/NavigationBar.types.ts +74 -74
  71. package/src/components/NavigationBar/README.md +469 -469
  72. package/src/components/NavigationBar/index.ts +2 -2
  73. package/src/components/NavigationRail/NavigationRail.stories.tsx +417 -417
  74. package/src/components/NavigationRail/NavigationRail.tsx +418 -418
  75. package/src/components/NavigationRail/NavigationRail.types.ts +109 -109
  76. package/src/components/NavigationRail/README.md +224 -224
  77. package/src/components/NavigationRail/index.ts +2 -2
  78. package/src/components/Notification/Notification.stories.tsx +513 -513
  79. package/src/components/Notification/Notification.tsx +145 -145
  80. package/src/components/Notification/Notification.types.ts +142 -142
  81. package/src/components/Notification/README.md +409 -409
  82. package/src/components/Notification/index.ts +3 -3
  83. package/src/components/POSConvention/POSConvention.stories.tsx +235 -235
  84. package/src/components/POSConvention/POSConvention.tsx +129 -129
  85. package/src/components/POSConvention/POSConvention.types.ts +38 -38
  86. package/src/components/POSConvention/README.md +123 -123
  87. package/src/components/POSConvention/icons.tsx +45 -45
  88. package/src/components/POSConvention/index.ts +3 -3
  89. package/src/components/POSLocationButton/POSLocationButton.stories.tsx +531 -531
  90. package/src/components/POSLocationButton/POSLocationButton.tsx +247 -247
  91. package/src/components/POSLocationButton/POSLocationButton.types.ts +87 -87
  92. package/src/components/POSLocationButton/README.md +253 -253
  93. package/src/components/POSLocationButton/icons.tsx +120 -120
  94. package/src/components/POSLocationButton/index.ts +14 -14
  95. package/src/components/POSNumberButton/POSNumberButton.stories.tsx +415 -415
  96. package/src/components/POSNumberButton/POSNumberButton.tsx +179 -179
  97. package/src/components/POSNumberButton/POSNumberButton.types.ts +51 -51
  98. package/src/components/POSNumberButton/README.md +321 -321
  99. package/src/components/POSNumberButton/index.ts +3 -3
  100. package/src/components/POSProductButton/POSProductButton.stories.tsx +318 -318
  101. package/src/components/POSProductButton/POSProductButton.tsx +152 -152
  102. package/src/components/POSProductButton/POSProductButton.types.ts +46 -46
  103. package/src/components/POSProductButton/README.md +269 -269
  104. package/src/components/POSProductButton/index.ts +2 -2
  105. package/src/components/POSProductCard/POSProductCard.stories.tsx +642 -642
  106. package/src/components/POSProductCard/POSProductCard.tsx +208 -208
  107. package/src/components/POSProductCard/POSProductCard.types.ts +76 -76
  108. package/src/components/POSProductCard/README.md +179 -179
  109. package/src/components/POSProductCard/icons.tsx +26 -26
  110. package/src/components/POSProductCard/index.ts +2 -2
  111. package/src/components/POSProductSidebarItems/POSProductSidebarItems.stories.tsx +753 -753
  112. package/src/components/POSProductSidebarItems/POSProductSidebarItems.tsx +332 -332
  113. package/src/components/POSProductSidebarItems/POSProductSidebarItems.types.ts +119 -119
  114. package/src/components/POSProductSidebarItems/README.md +198 -198
  115. package/src/components/POSProductSidebarItems/icons.tsx +21 -21
  116. package/src/components/POSProductSidebarItems/index.ts +3 -3
  117. package/src/components/POSTable/POSTable.stories.tsx +737 -737
  118. package/src/components/POSTable/POSTable.tsx +401 -401
  119. package/src/components/POSTable/POSTable.types.ts +83 -83
  120. package/src/components/POSTable/README.md +286 -286
  121. package/src/components/POSTable/index.ts +7 -7
  122. package/src/components/Pagination/Pagination.stories.tsx +555 -555
  123. package/src/components/Pagination/Pagination.tsx +286 -286
  124. package/src/components/Pagination/Pagination.types.ts +93 -93
  125. package/src/components/Pagination/README.md +298 -298
  126. package/src/components/Pagination/icons.tsx +47 -47
  127. package/src/components/Pagination/index.ts +3 -3
  128. package/src/components/Quantity/Quantity.stories.tsx +457 -457
  129. package/src/components/Quantity/Quantity.tsx +289 -289
  130. package/src/components/Quantity/Quantity.types.ts +70 -70
  131. package/src/components/Radio/Radio.stories.tsx +523 -523
  132. package/src/components/Radio/Radio.tsx +170 -170
  133. package/src/components/Radio/Radio.types.ts +122 -122
  134. package/src/components/Select/README.md +299 -299
  135. package/src/components/Select/Select.stories.tsx +673 -705
  136. package/src/components/Select/Select.tsx +454 -457
  137. package/src/components/Select/Select.types.ts +148 -148
  138. package/src/components/Select/icons.tsx +50 -25
  139. package/src/components/Select/index.ts +3 -3
  140. package/src/components/SignUpView/SignUpView.stories.tsx +129 -129
  141. package/src/components/SignUpView/SignUpView.tsx +503 -503
  142. package/src/components/SignUpView/SignUpView.types.ts +58 -58
  143. package/src/components/SignUpView/icons.tsx +71 -71
  144. package/src/components/SignUpView/index.ts +3 -3
  145. package/src/components/Switch/README.md +112 -112
  146. package/src/components/Switch/Switch.stories.tsx +550 -550
  147. package/src/components/Switch/Switch.tsx +246 -246
  148. package/src/components/Switch/Switch.types.ts +67 -67
  149. package/src/components/Table/README.md +369 -369
  150. package/src/components/Table/Table.stories.tsx +805 -805
  151. package/src/components/Table/Table.tsx +688 -688
  152. package/src/components/Table/Table.types.ts +204 -204
  153. package/src/components/Table/index.ts +9 -9
  154. package/src/components/Tabs/README.md +201 -201
  155. package/src/components/Tabs/Tabs.stories.tsx +580 -580
  156. package/src/components/Tabs/Tabs.tsx +356 -356
  157. package/src/components/Tabs/Tabs.types.ts +127 -127
  158. package/src/components/Tabs/icons.tsx +129 -129
  159. package/src/components/Tabs/index.ts +11 -11
  160. package/src/components/Textarea/Textarea.stories.tsx +535 -535
  161. package/src/components/Textarea/Textarea.tsx +188 -188
  162. package/src/components/Textarea/Textarea.types.ts +54 -54
  163. package/src/context/ThemeContext.tsx +99 -99
  164. package/src/context/index.ts +1 -1
  165. package/src/index.css +29 -29
  166. package/src/index.ts +39 -133
  167. package/src/main.tsx +10 -10
  168. package/src/views/ProductsView/ProductsView.stories.tsx +344 -344
  169. package/src/views/ProductsView/ProductsView.tsx +480 -480
  170. package/src/views/ProductsView/ProductsView.types.ts +238 -238
  171. package/src/views/ProductsView/README.md +312 -312
  172. package/src/views/ProductsView/icons.tsx +38 -38
  173. package/src/views/ProductsView/index.ts +8 -8
  174. package/src/views/RecoverPasswordView/README.md +269 -269
  175. package/src/views/RecoverPasswordView/RecoverPasswordView.stories.tsx +131 -131
  176. package/src/views/RecoverPasswordView/RecoverPasswordView.tsx +376 -376
  177. package/src/views/RecoverPasswordView/RecoverPasswordView.types.ts +56 -56
  178. package/src/views/RecoverPasswordView/icons.tsx +17 -17
  179. package/src/views/RecoverPasswordView/index.ts +2 -2
  180. package/src/views/TableLayoutView/README.md +268 -268
  181. package/src/views/TableLayoutView/TableLayoutView.stories.tsx +235 -235
  182. package/src/views/TableLayoutView/TableLayoutView.tsx +461 -461
  183. package/src/views/TableLayoutView/TableLayoutView.types.ts +209 -209
  184. package/src/views/TableLayoutView/icons.tsx +113 -113
  185. package/src/views/TableLayoutView/index.ts +6 -6
  186. package/storybook/main.ts +19 -19
  187. package/storybook/preview.tsx +84 -84
  188. package/storybook/vitest.setup.ts +6 -6
  189. package/tailwind.config.js +128 -128
  190. package/claude/prompts/siesa-ui-kit.md +0 -28
  191. package/dist/ButtonTest.d.ts +0 -6
  192. package/dist/ButtonTest.d.ts.map +0 -1
  193. package/dist/components/Alert/Alert.d.ts +0 -23
  194. package/dist/components/Alert/Alert.d.ts.map +0 -1
  195. package/dist/components/Alert/Alert.types.d.ts +0 -46
  196. package/dist/components/Alert/Alert.types.d.ts.map +0 -1
  197. package/dist/components/Avatar/Avatar.d.ts +0 -41
  198. package/dist/components/Avatar/Avatar.d.ts.map +0 -1
  199. package/dist/components/Avatar/Avatar.types.d.ts +0 -46
  200. package/dist/components/Avatar/Avatar.types.d.ts.map +0 -1
  201. package/dist/components/Badge/Badge.d.ts +0 -42
  202. package/dist/components/Badge/Badge.d.ts.map +0 -1
  203. package/dist/components/Badge/Badge.types.d.ts +0 -32
  204. package/dist/components/Badge/Badge.types.d.ts.map +0 -1
  205. package/dist/components/Button/Button.d.ts +0 -84
  206. package/dist/components/Button/Button.d.ts.map +0 -1
  207. package/dist/components/Button/Button.types.d.ts +0 -162
  208. package/dist/components/Button/Button.types.d.ts.map +0 -1
  209. package/dist/components/Button/icons.d.ts +0 -27
  210. package/dist/components/Button/icons.d.ts.map +0 -1
  211. package/dist/components/Button/index.d.ts +0 -4
  212. package/dist/components/Button/index.d.ts.map +0 -1
  213. package/dist/components/Checkbox/Checkbox.d.ts +0 -31
  214. package/dist/components/Checkbox/Checkbox.d.ts.map +0 -1
  215. package/dist/components/Checkbox/Checkbox.types.d.ts +0 -53
  216. package/dist/components/Checkbox/Checkbox.types.d.ts.map +0 -1
  217. package/dist/components/DescriptionList/DescriptionList.d.ts +0 -38
  218. package/dist/components/DescriptionList/DescriptionList.d.ts.map +0 -1
  219. package/dist/components/DescriptionList/DescriptionList.types.d.ts +0 -27
  220. package/dist/components/DescriptionList/DescriptionList.types.d.ts.map +0 -1
  221. package/dist/components/Divider/Divider.d.ts +0 -33
  222. package/dist/components/Divider/Divider.d.ts.map +0 -1
  223. package/dist/components/Divider/Divider.types.d.ts +0 -22
  224. package/dist/components/Divider/Divider.types.d.ts.map +0 -1
  225. package/dist/components/Dropdown/Dropdown.d.ts +0 -66
  226. package/dist/components/Dropdown/Dropdown.d.ts.map +0 -1
  227. package/dist/components/Dropdown/Dropdown.types.d.ts +0 -124
  228. package/dist/components/Dropdown/Dropdown.types.d.ts.map +0 -1
  229. package/dist/components/Dropdown/icons.d.ts +0 -10
  230. package/dist/components/Dropdown/icons.d.ts.map +0 -1
  231. package/dist/components/Dropdown/index.d.ts +0 -4
  232. package/dist/components/Dropdown/index.d.ts.map +0 -1
  233. package/dist/components/DropdownItemCollapsible/DropdownItemCollapsible.d.ts +0 -101
  234. package/dist/components/DropdownItemCollapsible/DropdownItemCollapsible.d.ts.map +0 -1
  235. package/dist/components/DropdownItemCollapsible/DropdownItemCollapsible.types.d.ts +0 -116
  236. package/dist/components/DropdownItemCollapsible/DropdownItemCollapsible.types.d.ts.map +0 -1
  237. package/dist/components/DropdownItemCollapsible/icons.d.ts +0 -19
  238. package/dist/components/DropdownItemCollapsible/icons.d.ts.map +0 -1
  239. package/dist/components/DropdownItemCollapsible/index.d.ts +0 -9
  240. package/dist/components/DropdownItemCollapsible/index.d.ts.map +0 -1
  241. package/dist/components/DropdownItemHeading/DropdownItemHeading.d.ts +0 -75
  242. package/dist/components/DropdownItemHeading/DropdownItemHeading.d.ts.map +0 -1
  243. package/dist/components/DropdownItemHeading/DropdownItemHeading.types.d.ts +0 -85
  244. package/dist/components/DropdownItemHeading/DropdownItemHeading.types.d.ts.map +0 -1
  245. package/dist/components/DropdownItemHeading/icons.d.ts +0 -48
  246. package/dist/components/DropdownItemHeading/icons.d.ts.map +0 -1
  247. package/dist/components/DropdownItemHeading/index.d.ts +0 -4
  248. package/dist/components/DropdownItemHeading/index.d.ts.map +0 -1
  249. package/dist/components/Input/Input.d.ts +0 -40
  250. package/dist/components/Input/Input.d.ts.map +0 -1
  251. package/dist/components/Input/Input.types.d.ts +0 -71
  252. package/dist/components/Input/Input.types.d.ts.map +0 -1
  253. package/dist/components/Input/icons.d.ts +0 -15
  254. package/dist/components/Input/icons.d.ts.map +0 -1
  255. package/dist/components/Input/index.d.ts +0 -3
  256. package/dist/components/Input/index.d.ts.map +0 -1
  257. package/dist/components/LoginView/LoginView.d.ts +0 -36
  258. package/dist/components/LoginView/LoginView.d.ts.map +0 -1
  259. package/dist/components/LoginView/LoginView.types.d.ts +0 -46
  260. package/dist/components/LoginView/LoginView.types.d.ts.map +0 -1
  261. package/dist/components/LoginView/icons.d.ts +0 -18
  262. package/dist/components/LoginView/icons.d.ts.map +0 -1
  263. package/dist/components/LoginView/index.d.ts +0 -4
  264. package/dist/components/LoginView/index.d.ts.map +0 -1
  265. package/dist/components/Navbar/Navbar.d.ts +0 -63
  266. package/dist/components/Navbar/Navbar.d.ts.map +0 -1
  267. package/dist/components/Navbar/Navbar.types.d.ts +0 -194
  268. package/dist/components/Navbar/Navbar.types.d.ts.map +0 -1
  269. package/dist/components/Navbar/icons.d.ts +0 -12
  270. package/dist/components/Navbar/icons.d.ts.map +0 -1
  271. package/dist/components/Navbar/index.d.ts +0 -4
  272. package/dist/components/Navbar/index.d.ts.map +0 -1
  273. package/dist/components/NavigationBar/NavigationBar.d.ts +0 -75
  274. package/dist/components/NavigationBar/NavigationBar.d.ts.map +0 -1
  275. package/dist/components/NavigationBar/NavigationBar.types.d.ts +0 -63
  276. package/dist/components/NavigationBar/NavigationBar.types.d.ts.map +0 -1
  277. package/dist/components/NavigationBar/index.d.ts +0 -3
  278. package/dist/components/NavigationBar/index.d.ts.map +0 -1
  279. package/dist/components/NavigationRail/NavigationRail.d.ts +0 -7
  280. package/dist/components/NavigationRail/NavigationRail.d.ts.map +0 -1
  281. package/dist/components/NavigationRail/NavigationRail.types.d.ts +0 -92
  282. package/dist/components/NavigationRail/NavigationRail.types.d.ts.map +0 -1
  283. package/dist/components/NavigationRail/index.d.ts +0 -3
  284. package/dist/components/NavigationRail/index.d.ts.map +0 -1
  285. package/dist/components/NavigationRailCommercial/NavigationRailCommercial.d.ts +0 -122
  286. package/dist/components/NavigationRailCommercial/NavigationRailCommercial.d.ts.map +0 -1
  287. package/dist/components/NavigationRailCommercial/NavigationRailCommercial.types.d.ts +0 -139
  288. package/dist/components/NavigationRailCommercial/NavigationRailCommercial.types.d.ts.map +0 -1
  289. package/dist/components/NavigationRailCommercial/icons.d.ts +0 -33
  290. package/dist/components/NavigationRailCommercial/icons.d.ts.map +0 -1
  291. package/dist/components/NavigationRailCommercial/index.d.ts +0 -4
  292. package/dist/components/NavigationRailCommercial/index.d.ts.map +0 -1
  293. package/dist/components/NavigationRailItem/NavigationRailItem.d.ts +0 -90
  294. package/dist/components/NavigationRailItem/NavigationRailItem.d.ts.map +0 -1
  295. package/dist/components/NavigationRailItem/NavigationRailItem.types.d.ts +0 -162
  296. package/dist/components/NavigationRailItem/NavigationRailItem.types.d.ts.map +0 -1
  297. package/dist/components/NavigationRailItem/index.d.ts +0 -3
  298. package/dist/components/NavigationRailItem/index.d.ts.map +0 -1
  299. package/dist/components/NavigationRailPanel/NavigationRailPanel.d.ts +0 -124
  300. package/dist/components/NavigationRailPanel/NavigationRailPanel.d.ts.map +0 -1
  301. package/dist/components/NavigationRailPanel/NavigationRailPanel.types.d.ts +0 -154
  302. package/dist/components/NavigationRailPanel/NavigationRailPanel.types.d.ts.map +0 -1
  303. package/dist/components/NavigationRailPanel/index.d.ts +0 -3
  304. package/dist/components/NavigationRailPanel/index.d.ts.map +0 -1
  305. package/dist/components/NavigationRailTypes/NavigationRailTypes.d.ts +0 -99
  306. package/dist/components/NavigationRailTypes/NavigationRailTypes.d.ts.map +0 -1
  307. package/dist/components/NavigationRailTypes/NavigationRailTypes.types.d.ts +0 -152
  308. package/dist/components/NavigationRailTypes/NavigationRailTypes.types.d.ts.map +0 -1
  309. package/dist/components/NavigationRailTypes/icons.d.ts +0 -44
  310. package/dist/components/NavigationRailTypes/icons.d.ts.map +0 -1
  311. package/dist/components/NavigationRailTypes/index.d.ts +0 -4
  312. package/dist/components/NavigationRailTypes/index.d.ts.map +0 -1
  313. package/dist/components/Notification/Notification.d.ts +0 -52
  314. package/dist/components/Notification/Notification.d.ts.map +0 -1
  315. package/dist/components/Notification/Notification.types.d.ts +0 -138
  316. package/dist/components/Notification/Notification.types.d.ts.map +0 -1
  317. package/dist/components/Notification/index.d.ts +0 -3
  318. package/dist/components/Notification/index.d.ts.map +0 -1
  319. package/dist/components/POSConvention/POSConvention.d.ts +0 -55
  320. package/dist/components/POSConvention/POSConvention.d.ts.map +0 -1
  321. package/dist/components/POSConvention/POSConvention.types.d.ts +0 -37
  322. package/dist/components/POSConvention/POSConvention.types.d.ts.map +0 -1
  323. package/dist/components/POSConvention/icons.d.ts +0 -21
  324. package/dist/components/POSConvention/icons.d.ts.map +0 -1
  325. package/dist/components/POSConvention/index.d.ts +0 -4
  326. package/dist/components/POSConvention/index.d.ts.map +0 -1
  327. package/dist/components/POSLocationButton/POSLocationButton.d.ts +0 -73
  328. package/dist/components/POSLocationButton/POSLocationButton.d.ts.map +0 -1
  329. package/dist/components/POSLocationButton/POSLocationButton.types.d.ts +0 -75
  330. package/dist/components/POSLocationButton/POSLocationButton.types.d.ts.map +0 -1
  331. package/dist/components/POSLocationButton/icons.d.ts +0 -37
  332. package/dist/components/POSLocationButton/icons.d.ts.map +0 -1
  333. package/dist/components/POSLocationButton/index.d.ts +0 -4
  334. package/dist/components/POSLocationButton/index.d.ts.map +0 -1
  335. package/dist/components/POSNumberButton/POSNumberButton.d.ts +0 -61
  336. package/dist/components/POSNumberButton/POSNumberButton.d.ts.map +0 -1
  337. package/dist/components/POSNumberButton/POSNumberButton.types.d.ts +0 -43
  338. package/dist/components/POSNumberButton/POSNumberButton.types.d.ts.map +0 -1
  339. package/dist/components/POSNumberButton/index.d.ts +0 -3
  340. package/dist/components/POSNumberButton/index.d.ts.map +0 -1
  341. package/dist/components/POSProductButton/POSProductButton.d.ts +0 -59
  342. package/dist/components/POSProductButton/POSProductButton.d.ts.map +0 -1
  343. package/dist/components/POSProductButton/POSProductButton.types.d.ts +0 -40
  344. package/dist/components/POSProductButton/POSProductButton.types.d.ts.map +0 -1
  345. package/dist/components/POSProductButton/index.d.ts +0 -3
  346. package/dist/components/POSProductButton/index.d.ts.map +0 -1
  347. package/dist/components/POSProductCard/POSProductCard.d.ts +0 -68
  348. package/dist/components/POSProductCard/POSProductCard.d.ts.map +0 -1
  349. package/dist/components/POSProductCard/POSProductCard.types.d.ts +0 -67
  350. package/dist/components/POSProductCard/POSProductCard.types.d.ts.map +0 -1
  351. package/dist/components/POSProductCard/icons.d.ts +0 -10
  352. package/dist/components/POSProductCard/icons.d.ts.map +0 -1
  353. package/dist/components/POSProductCard/index.d.ts +0 -3
  354. package/dist/components/POSProductCard/index.d.ts.map +0 -1
  355. package/dist/components/POSProductSidebarItems/POSProductSidebarItems.d.ts +0 -57
  356. package/dist/components/POSProductSidebarItems/POSProductSidebarItems.d.ts.map +0 -1
  357. package/dist/components/POSProductSidebarItems/POSProductSidebarItems.types.d.ts +0 -85
  358. package/dist/components/POSProductSidebarItems/POSProductSidebarItems.types.d.ts.map +0 -1
  359. package/dist/components/POSProductSidebarItems/icons.d.ts +0 -9
  360. package/dist/components/POSProductSidebarItems/icons.d.ts.map +0 -1
  361. package/dist/components/POSProductSidebarItems/index.d.ts +0 -4
  362. package/dist/components/POSProductSidebarItems/index.d.ts.map +0 -1
  363. package/dist/components/POSTable/POSTable.d.ts +0 -75
  364. package/dist/components/POSTable/POSTable.d.ts.map +0 -1
  365. package/dist/components/POSTable/POSTable.types.d.ts +0 -71
  366. package/dist/components/POSTable/POSTable.types.d.ts.map +0 -1
  367. package/dist/components/POSTable/index.d.ts +0 -3
  368. package/dist/components/POSTable/index.d.ts.map +0 -1
  369. package/dist/components/Pagination/Pagination.d.ts +0 -29
  370. package/dist/components/Pagination/Pagination.d.ts.map +0 -1
  371. package/dist/components/Pagination/Pagination.types.d.ts +0 -79
  372. package/dist/components/Pagination/Pagination.types.d.ts.map +0 -1
  373. package/dist/components/Pagination/icons.d.ts +0 -18
  374. package/dist/components/Pagination/icons.d.ts.map +0 -1
  375. package/dist/components/Pagination/index.d.ts +0 -4
  376. package/dist/components/Pagination/index.d.ts.map +0 -1
  377. package/dist/components/Quantity/Quantity.d.ts +0 -38
  378. package/dist/components/Quantity/Quantity.d.ts.map +0 -1
  379. package/dist/components/Quantity/Quantity.types.d.ts +0 -59
  380. package/dist/components/Quantity/Quantity.types.d.ts.map +0 -1
  381. package/dist/components/Radio/Radio.d.ts +0 -45
  382. package/dist/components/Radio/Radio.d.ts.map +0 -1
  383. package/dist/components/Radio/Radio.types.d.ts +0 -115
  384. package/dist/components/Radio/Radio.types.d.ts.map +0 -1
  385. package/dist/components/Select/Select.d.ts +0 -37
  386. package/dist/components/Select/Select.d.ts.map +0 -1
  387. package/dist/components/Select/Select.types.d.ts +0 -124
  388. package/dist/components/Select/Select.types.d.ts.map +0 -1
  389. package/dist/components/Select/icons.d.ts +0 -20
  390. package/dist/components/Select/icons.d.ts.map +0 -1
  391. package/dist/components/Select/index.d.ts +0 -4
  392. package/dist/components/Select/index.d.ts.map +0 -1
  393. package/dist/components/SignUpView/SignUpView.d.ts +0 -38
  394. package/dist/components/SignUpView/SignUpView.d.ts.map +0 -1
  395. package/dist/components/SignUpView/SignUpView.types.d.ts +0 -51
  396. package/dist/components/SignUpView/SignUpView.types.d.ts.map +0 -1
  397. package/dist/components/SignUpView/icons.d.ts +0 -18
  398. package/dist/components/SignUpView/icons.d.ts.map +0 -1
  399. package/dist/components/SignUpView/index.d.ts +0 -4
  400. package/dist/components/SignUpView/index.d.ts.map +0 -1
  401. package/dist/components/Switch/Switch.d.ts +0 -46
  402. package/dist/components/Switch/Switch.d.ts.map +0 -1
  403. package/dist/components/Switch/Switch.types.d.ts +0 -58
  404. package/dist/components/Switch/Switch.types.d.ts.map +0 -1
  405. package/dist/components/Table/Table.d.ts +0 -64
  406. package/dist/components/Table/Table.d.ts.map +0 -1
  407. package/dist/components/Table/Table.types.d.ts +0 -173
  408. package/dist/components/Table/Table.types.d.ts.map +0 -1
  409. package/dist/components/Table/index.d.ts +0 -3
  410. package/dist/components/Table/index.d.ts.map +0 -1
  411. package/dist/components/Tabs/Tabs.d.ts +0 -76
  412. package/dist/components/Tabs/Tabs.d.ts.map +0 -1
  413. package/dist/components/Tabs/Tabs.types.d.ts +0 -107
  414. package/dist/components/Tabs/Tabs.types.d.ts.map +0 -1
  415. package/dist/components/Tabs/icons.d.ts +0 -45
  416. package/dist/components/Tabs/icons.d.ts.map +0 -1
  417. package/dist/components/Tabs/index.d.ts +0 -4
  418. package/dist/components/Tabs/index.d.ts.map +0 -1
  419. package/dist/components/Textarea/Textarea.d.ts +0 -38
  420. package/dist/components/Textarea/Textarea.d.ts.map +0 -1
  421. package/dist/components/Textarea/Textarea.types.d.ts +0 -46
  422. package/dist/components/Textarea/Textarea.types.d.ts.map +0 -1
  423. package/dist/context/ThemeContext.d.ts +0 -46
  424. package/dist/context/ThemeContext.d.ts.map +0 -1
  425. package/dist/context/index.d.ts +0 -2
  426. package/dist/context/index.d.ts.map +0 -1
  427. package/dist/index.d.ts +0 -88
  428. package/dist/index.d.ts.map +0 -1
  429. package/dist/siesa-ui-kit.cjs +0 -1474
  430. package/dist/siesa-ui-kit.cjs.map +0 -1
  431. package/dist/siesa-ui-kit.mjs +0 -9580
  432. package/dist/siesa-ui-kit.mjs.map +0 -1
  433. package/dist/views/LayoutCommercial/LayoutCommercial.d.ts +0 -48
  434. package/dist/views/LayoutCommercial/LayoutCommercial.d.ts.map +0 -1
  435. package/dist/views/LayoutCommercial/LayoutCommercial.types.d.ts +0 -49
  436. package/dist/views/LayoutCommercial/LayoutCommercial.types.d.ts.map +0 -1
  437. package/dist/views/LayoutCommercial/index.d.ts +0 -3
  438. package/dist/views/LayoutCommercial/index.d.ts.map +0 -1
  439. package/dist/views/ListView/ListView.d.ts +0 -47
  440. package/dist/views/ListView/ListView.d.ts.map +0 -1
  441. package/dist/views/ListView/ListView.types.d.ts +0 -177
  442. package/dist/views/ListView/ListView.types.d.ts.map +0 -1
  443. package/dist/views/ListView/icons.d.ts +0 -60
  444. package/dist/views/ListView/icons.d.ts.map +0 -1
  445. package/dist/views/ListView/index.d.ts +0 -3
  446. package/dist/views/ListView/index.d.ts.map +0 -1
  447. package/dist/views/LoginView/LoginView.d.ts +0 -36
  448. package/dist/views/LoginView/LoginView.d.ts.map +0 -1
  449. package/dist/views/LoginView/LoginView.types.d.ts +0 -46
  450. package/dist/views/LoginView/LoginView.types.d.ts.map +0 -1
  451. package/dist/views/LoginView/icons.d.ts +0 -18
  452. package/dist/views/LoginView/icons.d.ts.map +0 -1
  453. package/dist/views/LoginView/index.d.ts +0 -4
  454. package/dist/views/LoginView/index.d.ts.map +0 -1
  455. package/dist/views/ProductsView/ProductsView.d.ts +0 -56
  456. package/dist/views/ProductsView/ProductsView.d.ts.map +0 -1
  457. package/dist/views/ProductsView/ProductsView.types.d.ts +0 -184
  458. package/dist/views/ProductsView/ProductsView.types.d.ts.map +0 -1
  459. package/dist/views/ProductsView/icons.d.ts +0 -12
  460. package/dist/views/ProductsView/icons.d.ts.map +0 -1
  461. package/dist/views/ProductsView/index.d.ts +0 -3
  462. package/dist/views/ProductsView/index.d.ts.map +0 -1
  463. package/dist/views/RecoverPasswordView/RecoverPasswordView.d.ts +0 -34
  464. package/dist/views/RecoverPasswordView/RecoverPasswordView.d.ts.map +0 -1
  465. package/dist/views/RecoverPasswordView/RecoverPasswordView.types.d.ts +0 -50
  466. package/dist/views/RecoverPasswordView/RecoverPasswordView.types.d.ts.map +0 -1
  467. package/dist/views/RecoverPasswordView/icons.d.ts +0 -9
  468. package/dist/views/RecoverPasswordView/icons.d.ts.map +0 -1
  469. package/dist/views/RecoverPasswordView/index.d.ts +0 -3
  470. package/dist/views/RecoverPasswordView/index.d.ts.map +0 -1
  471. package/dist/views/SignUpView/SignUpView.d.ts +0 -38
  472. package/dist/views/SignUpView/SignUpView.d.ts.map +0 -1
  473. package/dist/views/SignUpView/SignUpView.types.d.ts +0 -51
  474. package/dist/views/SignUpView/SignUpView.types.d.ts.map +0 -1
  475. package/dist/views/SignUpView/icons.d.ts +0 -18
  476. package/dist/views/SignUpView/icons.d.ts.map +0 -1
  477. package/dist/views/SignUpView/index.d.ts +0 -4
  478. package/dist/views/SignUpView/index.d.ts.map +0 -1
  479. package/dist/views/TableLayoutView/TableLayoutView.d.ts +0 -46
  480. package/dist/views/TableLayoutView/TableLayoutView.d.ts.map +0 -1
  481. package/dist/views/TableLayoutView/TableLayoutView.types.d.ts +0 -170
  482. package/dist/views/TableLayoutView/TableLayoutView.types.d.ts.map +0 -1
  483. package/dist/views/TableLayoutView/icons.d.ts +0 -27
  484. package/dist/views/TableLayoutView/icons.d.ts.map +0 -1
  485. package/dist/views/TableLayoutView/index.d.ts +0 -3
  486. package/dist/views/TableLayoutView/index.d.ts.map +0 -1
  487. package/src/components/DropdownItemCollapsible/DropdownItemCollapsible.stories.tsx +0 -317
  488. package/src/components/DropdownItemCollapsible/DropdownItemCollapsible.tsx +0 -307
  489. package/src/components/DropdownItemCollapsible/DropdownItemCollapsible.types.ts +0 -136
  490. package/src/components/DropdownItemCollapsible/README.md +0 -264
  491. package/src/components/DropdownItemCollapsible/icons.tsx +0 -57
  492. package/src/components/DropdownItemCollapsible/index.ts +0 -12
  493. package/src/components/DropdownItemHeading/DropdownItemHeading.stories.tsx +0 -386
  494. package/src/components/DropdownItemHeading/DropdownItemHeading.tsx +0 -216
  495. package/src/components/DropdownItemHeading/DropdownItemHeading.types.ts +0 -93
  496. package/src/components/DropdownItemHeading/README.md +0 -573
  497. package/src/components/DropdownItemHeading/icons.tsx +0 -125
  498. package/src/components/DropdownItemHeading/index.ts +0 -3
  499. package/src/components/NavigationRailCommercial/NavigationRailCommercial.stories.tsx +0 -464
  500. package/src/components/NavigationRailCommercial/NavigationRailCommercial.tsx +0 -301
  501. package/src/components/NavigationRailCommercial/NavigationRailCommercial.types.ts +0 -162
  502. package/src/components/NavigationRailCommercial/README.md +0 -251
  503. package/src/components/NavigationRailCommercial/icons.tsx +0 -54
  504. package/src/components/NavigationRailCommercial/index.ts +0 -6
  505. package/src/components/NavigationRailItem/NavigationRailItem.stories.tsx +0 -667
  506. package/src/components/NavigationRailItem/NavigationRailItem.tsx +0 -314
  507. package/src/components/NavigationRailItem/NavigationRailItem.types.ts +0 -175
  508. package/src/components/NavigationRailItem/README.md +0 -476
  509. package/src/components/NavigationRailItem/index.ts +0 -2
  510. package/src/components/NavigationRailPanel/NavigationRailPanel.stories.tsx +0 -462
  511. package/src/components/NavigationRailPanel/NavigationRailPanel.tsx +0 -332
  512. package/src/components/NavigationRailPanel/NavigationRailPanel.types.ts +0 -178
  513. package/src/components/NavigationRailPanel/README.md +0 -461
  514. package/src/components/NavigationRailPanel/index.ts +0 -6
  515. package/src/components/NavigationRailTypes/NavigationRailTypes.stories.tsx +0 -682
  516. package/src/components/NavigationRailTypes/NavigationRailTypes.tsx +0 -363
  517. package/src/components/NavigationRailTypes/NavigationRailTypes.types.ts +0 -178
  518. package/src/components/NavigationRailTypes/README.md +0 -573
  519. package/src/components/NavigationRailTypes/icons.tsx +0 -76
  520. package/src/components/NavigationRailTypes/index.ts +0 -7
  521. package/src/views/LayoutCommercial/LayoutCommercial.stories.tsx +0 -374
  522. package/src/views/LayoutCommercial/LayoutCommercial.tsx +0 -125
  523. package/src/views/LayoutCommercial/LayoutCommercial.types.ts +0 -54
  524. package/src/views/LayoutCommercial/README.md +0 -286
  525. package/src/views/LayoutCommercial/index.ts +0 -2
  526. package/src/views/ListView/ListView.stories.tsx +0 -329
  527. package/src/views/ListView/ListView.tsx +0 -570
  528. package/src/views/ListView/ListView.types.ts +0 -211
  529. package/src/views/ListView/icons.tsx +0 -282
  530. package/src/views/ListView/index.ts +0 -11
  531. package/src/views/LoginView/LoginView.stories.tsx +0 -148
  532. package/src/views/LoginView/LoginView.tsx +0 -426
  533. package/src/views/LoginView/LoginView.types.ts +0 -52
  534. package/src/views/LoginView/README.md +0 -396
  535. package/src/views/LoginView/icons.tsx +0 -85
  536. package/src/views/LoginView/index.ts +0 -3
  537. package/src/views/SignUpView/SignUpView.stories.tsx +0 -129
  538. package/src/views/SignUpView/SignUpView.tsx +0 -503
  539. package/src/views/SignUpView/SignUpView.types.ts +0 -58
  540. package/src/views/SignUpView/icons.tsx +0 -71
  541. package/src/views/SignUpView/index.ts +0 -3
@@ -1,550 +1,550 @@
1
- import type { Meta, StoryObj } from '@storybook/react-vite';
2
- import { Switch } from './Switch';
3
- import { useState, useEffect } from 'react';
4
-
5
- /**
6
- * Switch - Componente de switch del sistema de diseño Siesa
7
- *
8
- * Campo de activación/desactivación con soporte para múltiples estados
9
- * y opciones de etiquetado. Diseñado para mantener consistencia visual
10
- * y funcional en toda la aplicación.
11
- */
12
- const meta = {
13
- title: 'Siesa UI Kit/Switch',
14
- component: Switch,
15
- parameters: {
16
- layout: 'centered',
17
- docs: {
18
- description: {
19
- component:
20
- 'Campos de activación/desactivación con soporte para múltiples estados y opciones de etiquetado.',
21
- },
22
- },
23
- },
24
- tags: ['autodocs'],
25
- argTypes: {
26
- label: {
27
- control: 'text',
28
- description: 'Etiqueta del switch',
29
- table: {
30
- type: { summary: 'string' },
31
- category: 'Contenido',
32
- },
33
- },
34
- description: {
35
- control: 'text',
36
- description: 'Descripción debajo del label',
37
- table: {
38
- type: { summary: 'string' },
39
- category: 'Contenido',
40
- },
41
- },
42
- checked: {
43
- control: 'boolean',
44
- description: 'Si el switch está activado',
45
- table: {
46
- type: { summary: 'boolean' },
47
- defaultValue: { summary: 'false' },
48
- category: 'Estado',
49
- },
50
- },
51
- disabled: {
52
- control: 'boolean',
53
- description: 'Deshabilita el switch',
54
- table: {
55
- type: { summary: 'boolean' },
56
- defaultValue: { summary: 'false' },
57
- category: 'Estado',
58
- },
59
- },
60
- ariaLabel: {
61
- control: 'text',
62
- description: 'Label para accesibilidad (ARIA)',
63
- table: {
64
- type: { summary: 'string' },
65
- category: 'Accesibilidad',
66
- },
67
- },
68
- labelPosition: {
69
- control: 'radio',
70
- options: ['leading', 'trailing'],
71
- description: 'Posición del label respecto al switch',
72
- table: {
73
- type: { summary: "'leading' | 'trailing'" },
74
- defaultValue: { summary: 'leading' },
75
- category: 'Apariencia',
76
- },
77
- },
78
- },
79
- } satisfies Meta<typeof Switch>;
80
-
81
- export default meta;
82
- type Story = StoryObj<typeof meta>;
83
-
84
- // ============================================
85
- // 1. PLAYGROUND INTERACTIVO
86
- // ============================================
87
-
88
- /**
89
- * Playground Interactivo - Usa los controles para experimentar con todas las props del Switch.
90
- */
91
- export const Playground: Story = {
92
- name: 'Playground',
93
- args: {
94
- label: 'Permitir inserción',
95
- description: 'Permite que otros inserten los detalles de tu evento en su propio sitio.',
96
- checked: false,
97
- disabled: false,
98
- labelPosition: 'leading',
99
- },
100
- render: (args) => {
101
- const [checked, setChecked] = useState(args.checked);
102
-
103
- // Sincronizar el estado local cuando cambian los args desde los controles
104
- useEffect(() => {
105
- setChecked(args.checked);
106
- }, [args.checked]);
107
-
108
- return (
109
- <Switch
110
- {...args}
111
- checked={checked}
112
- onChange={(e) => setChecked(e.target.checked)}
113
- />
114
- );
115
- },
116
- };
117
-
118
- // ============================================
119
- // 2. TODOS LOS ESTADOS
120
- // ============================================
121
-
122
- /**
123
- * Todos los Estados - Vista rápida de todos los estados del Switch.
124
- */
125
- export const TodosLosEstados: Story = {
126
- name: 'Todos los Estados',
127
- render: () => (
128
- <div className="space-y-8 p-6">
129
- {/* Estados Apagado */}
130
- <div>
131
- <h3 className="text-sm font-bold mb-4 text-content-primary dark:text-dark-content-primary">
132
- Estados Apagado
133
- </h3>
134
- <div className="space-y-3">
135
- <Switch label="Por Defecto" description="Switch en estado apagado por defecto" />
136
- <Switch label="Hover" description="Pasa el mouse sobre el switch para ver el estado" />
137
- <Switch label="Foco" description="Haz clic para enfocar (intenta presionar Tab)" />
138
- <Switch label="Deshabilitado" description="Switch deshabilitado apagado" disabled />
139
- </div>
140
- </div>
141
-
142
- {/* Estados Encendido */}
143
- <div>
144
- <h3 className="text-sm font-bold mb-4 text-content-primary dark:text-dark-content-primary">
145
- Estados Encendido
146
- </h3>
147
- <div className="space-y-3">
148
- <Switch
149
- label="Por Defecto"
150
- description="Switch en estado encendido por defecto"
151
- checked
152
- onChange={() => {}}
153
- />
154
- <Switch
155
- label="Hover"
156
- description="Pasa el mouse sobre el switch para ver el estado"
157
- checked
158
- onChange={() => {}}
159
- />
160
- <Switch
161
- label="Foco"
162
- description="Haz clic para enfocar (intenta presionar Tab)"
163
- checked
164
- onChange={() => {}}
165
- />
166
- <Switch
167
- label="Deshabilitado"
168
- description="Switch deshabilitado encendido"
169
- checked
170
- disabled
171
- onChange={() => {}}
172
- />
173
- </div>
174
- </div>
175
-
176
- {/* Tips */}
177
- <div className="mt-6 p-4 bg-blue-50 dark:bg-blue-900/20 border border-blue-200 dark:border-blue-800 rounded-lg">
178
- <p className="text-xs text-content-secondary dark:text-content-secondary">
179
- <strong className="text-content-primary dark:text-dark-content-primary">Consejo:</strong> Pasa el mouse sobre el switch o haz clic para ver los estados hover y focus.
180
- </p>
181
- </div>
182
- </div>
183
- ),
184
- };
185
-
186
- // ============================================
187
- // 3. POSICIÓN DEL LABEL
188
- // ============================================
189
-
190
- /**
191
- * Posición del Label - El label puede estar a la izquierda (leading) o a la derecha (trailing) del switch.
192
- */
193
- export const PosicionDelLabel: Story = {
194
- name: 'Posición del Label',
195
- render: () => (
196
- <div className="space-y-8 p-6">
197
- {/* Leading (Label a la izquierda) */}
198
- <div>
199
- <h3 className="text-sm font-bold mb-4 text-content-primary dark:text-dark-content-primary">
200
- Leading (Label a la Izquierda)
201
- </h3>
202
- <p className="text-xs text-content-secondary dark:text-content-secondary mb-4">
203
- El label se muestra a la izquierda y el switch a la derecha. Este es el valor por defecto.
204
- </p>
205
- <div className="space-y-3">
206
- <Switch
207
- label="Permitir inserción"
208
- description="Permite que otros inserten los detalles de tu evento en su propio sitio."
209
- labelPosition="leading"
210
- />
211
- <Switch
212
- label="Permitir inserción"
213
- description="Permite que otros inserten los detalles de tu evento en su propio sitio."
214
- labelPosition="leading"
215
- checked
216
- onChange={() => {}}
217
- />
218
- </div>
219
- </div>
220
-
221
- {/* Trailing (Label a la derecha) */}
222
- <div>
223
- <h3 className="text-sm font-bold mb-4 text-content-primary dark:text-dark-content-primary">
224
- Trailing (Label a la Derecha)
225
- </h3>
226
- <p className="text-xs text-content-secondary dark:text-content-secondary mb-4">
227
- El switch se muestra a la izquierda y el label a la derecha.
228
- </p>
229
- <div className="space-y-3">
230
- <Switch
231
- label="Permitir inserción"
232
- description="Permite que otros inserten los detalles de tu evento en su propio sitio."
233
- labelPosition="trailing"
234
- />
235
- <Switch
236
- label="Permitir inserción"
237
- description="Permite que otros inserten los detalles de tu evento en su propio sitio."
238
- labelPosition="trailing"
239
- checked
240
- onChange={() => {}}
241
- />
242
- </div>
243
- </div>
244
-
245
- {/* Solo Label (sin descripción) */}
246
- <div>
247
- <h3 className="text-sm font-bold mb-4 text-content-primary dark:text-dark-content-primary">
248
- Solo Label (sin descripción)
249
- </h3>
250
- <div className="space-y-3">
251
- <Switch label="Activar notificaciones" labelPosition="leading" />
252
- <Switch label="Activar notificaciones" labelPosition="trailing" />
253
- </div>
254
- </div>
255
-
256
- {/* Tips */}
257
- <div className="mt-6 p-4 bg-blue-50 dark:bg-blue-900/20 border border-blue-200 dark:border-blue-800 rounded-lg">
258
- <p className="text-xs text-content-secondary dark:text-content-secondary">
259
- <strong className="text-content-primary dark:text-dark-content-primary">Consejo:</strong> Usa <code className="px-1 bg-white dark:bg-gray-700 rounded">leading</code> para formularios estándar y <code className="px-1 bg-white dark:bg-gray-700 rounded">trailing</code> para listas de configuración donde el switch debe destacar primero.
260
- </p>
261
- </div>
262
- </div>
263
- ),
264
- };
265
-
266
- // ============================================
267
- // 4. CON Y SIN LABELS
268
- // ============================================
269
-
270
- /**
271
- * Con y Sin Etiquetas - Ejemplos de switches con diferentes combinaciones de label y description.
272
- */
273
- export const ConYSinEtiquetas: Story = {
274
- name: 'Con y Sin Etiquetas',
275
- render: () => (
276
- <div className="space-y-8 p-6">
277
- {/* Sin Label ni Description */}
278
- <div>
279
- <h3 className="text-sm font-bold mb-4 text-content-primary dark:text-dark-content-primary">
280
- Sin Etiqueta ni Descripción
281
- </h3>
282
- <Switch ariaLabel="Interruptor sin etiqueta" />
283
- </div>
284
-
285
- {/* Solo Label */}
286
- <div>
287
- <h3 className="text-sm font-bold mb-4 text-content-primary dark:text-dark-content-primary">
288
- Solo Etiqueta
289
- </h3>
290
- <Switch label="Activar notificaciones" />
291
- </div>
292
-
293
- {/* Label + Description */}
294
- <div>
295
- <h3 className="text-sm font-bold mb-4 text-content-primary dark:text-dark-content-primary">
296
- Etiqueta + Descripción
297
- </h3>
298
- <Switch
299
- label="Permitir inserción"
300
- description="Permite que otros inserten los detalles de tu evento en su propio sitio."
301
- />
302
- </div>
303
-
304
- {/* Label Largo */}
305
- <div>
306
- <h3 className="text-sm font-bold mb-4 text-content-primary dark:text-dark-content-primary">
307
- Con Texto Largo
308
- </h3>
309
- <Switch
310
- label="Enviarme correos promocionales y actualizaciones"
311
- description="Puedes darte de baja en cualquier momento. Nunca compartiremos tu correo electrónico con terceros ni lo usaremos para ningún otro propósito."
312
- />
313
- </div>
314
- </div>
315
- ),
316
- };
317
-
318
- // ============================================
319
- // 5. GRUPOS DE SWITCHES
320
- // ============================================
321
-
322
- /**
323
- * Grupos de Switches - Ejemplos de grupos de switches relacionados para diferentes configuraciones.
324
- */
325
- export const GruposDeSwitches: Story = {
326
- name: 'Grupos de Switches',
327
- render: () => {
328
- const [settings, setSettings] = useState({
329
- embedding: true,
330
- comments: false,
331
- analytics: true,
332
- });
333
-
334
- return (
335
- <div className="space-y-8 p-6">
336
- {/* Configuración de Evento */}
337
- <div>
338
- <h3 className="text-sm font-bold mb-4 text-content-primary dark:text-dark-content-primary">
339
- Configuración de Evento
340
- </h3>
341
- <div className="space-y-3">
342
- <Switch
343
- label="Permitir inserción"
344
- description="Permite que otros inserten los detalles de tu evento en su propio sitio."
345
- checked={settings.embedding}
346
- onChange={(e) => setSettings({ ...settings, embedding: e.target.checked })}
347
- />
348
- <Switch
349
- label="Activar comentarios"
350
- description="Permite que los asistentes dejen comentarios y retroalimentación en tu evento."
351
- checked={settings.comments}
352
- onChange={(e) => setSettings({ ...settings, comments: e.target.checked })}
353
- />
354
- <Switch
355
- label="Rastrear análisis"
356
- description="Recopilar datos de uso anónimos para mejorar tu experiencia de evento."
357
- checked={settings.analytics}
358
- onChange={(e) => setSettings({ ...settings, analytics: e.target.checked })}
359
- />
360
- </div>
361
- </div>
362
-
363
- {/* Preferencias de Notificación */}
364
- <div>
365
- <h3 className="text-sm font-bold mb-4 text-content-primary dark:text-dark-content-primary">
366
- Preferencias de Notificación
367
- </h3>
368
- <div className="space-y-3">
369
- <Switch label="Notificaciones por correo" />
370
- <Switch label="Notificaciones push" />
371
- <Switch label="Notificaciones SMS" />
372
- <Switch label="Notificaciones de escritorio" />
373
- </div>
374
- </div>
375
- </div>
376
- );
377
- },
378
- };
379
-
380
- // ============================================
381
- // 6. CASOS DE USO REALES
382
- // ============================================
383
-
384
- /**
385
- * Casos de Uso Reales - Ejemplos prácticos de cómo usar los switches en situaciones reales.
386
- */
387
- export const CasosDeUsoReales: Story = {
388
- name: 'Casos de Uso Reales',
389
- render: () => {
390
- const [accountSettings, setAccountSettings] = useState({
391
- twoFactor: true,
392
- emailNotifications: false,
393
- publicProfile: true,
394
- });
395
-
396
- const [privacySettings, setPrivacySettings] = useState({
397
- showEmail: false,
398
- showPhone: false,
399
- showActivity: true,
400
- });
401
-
402
- const [features, setFeatures] = useState({
403
- darkMode: false,
404
- autoSave: true,
405
- spellCheck: true,
406
- });
407
-
408
- return (
409
- <div className="space-y-8 p-6">
410
- {/* Seguridad de la Cuenta */}
411
- <div>
412
- <h3 className="text-sm font-bold mb-4 text-content-primary dark:text-dark-content-primary">
413
- Seguridad de la Cuenta
414
- </h3>
415
- <div className="p-6 bg-white dark:bg-dark-bg-primary border border-border-primary dark:border-dark-border-primary rounded-lg max-w-md">
416
- <h4 className="font-bold mb-4 text-base text-content-primary dark:text-dark-content-primary">
417
- Configuración de Seguridad
418
- </h4>
419
- <div className="space-y-3">
420
- <Switch
421
- label="Autenticación de dos factores"
422
- description="Agrega una capa extra de seguridad a tu cuenta"
423
- checked={accountSettings.twoFactor}
424
- onChange={(e) =>
425
- setAccountSettings({ ...accountSettings, twoFactor: e.target.checked })
426
- }
427
- />
428
- <Switch
429
- label="Notificaciones de inicio de sesión"
430
- description="Recibe notificaciones cuando alguien inicie sesión en tu cuenta"
431
- checked={accountSettings.emailNotifications}
432
- onChange={(e) =>
433
- setAccountSettings({ ...accountSettings, emailNotifications: e.target.checked })
434
- }
435
- />
436
- <Switch
437
- label="Perfil público"
438
- description="Haz que tu perfil sea visible para otros usuarios"
439
- checked={accountSettings.publicProfile}
440
- onChange={(e) =>
441
- setAccountSettings({ ...accountSettings, publicProfile: e.target.checked })
442
- }
443
- />
444
- </div>
445
- </div>
446
- </div>
447
-
448
- {/* Configuración de Privacidad */}
449
- <div>
450
- <h3 className="text-sm font-bold mb-4 text-content-primary dark:text-dark-content-primary">
451
- Configuración de Privacidad
452
- </h3>
453
- <div className="p-6 bg-white dark:bg-dark-bg-primary border border-border-primary dark:border-dark-border-primary rounded-lg max-w-md">
454
- <h4 className="font-bold mb-4 text-base text-content-primary dark:text-dark-content-primary">
455
- Qué pueden ver otros
456
- </h4>
457
- <div className="space-y-3">
458
- <Switch
459
- label="Mostrar dirección de correo"
460
- description="Muestra tu correo en tu perfil público"
461
- checked={privacySettings.showEmail}
462
- onChange={(e) =>
463
- setPrivacySettings({ ...privacySettings, showEmail: e.target.checked })
464
- }
465
- />
466
- <Switch
467
- label="Mostrar número de teléfono"
468
- description="Muestra tu número de teléfono en tu perfil público"
469
- checked={privacySettings.showPhone}
470
- onChange={(e) =>
471
- setPrivacySettings({ ...privacySettings, showPhone: e.target.checked })
472
- }
473
- />
474
- <Switch
475
- label="Mostrar estado de actividad"
476
- description="Permite que otros vean cuando estás en línea"
477
- checked={privacySettings.showActivity}
478
- onChange={(e) =>
479
- setPrivacySettings({ ...privacySettings, showActivity: e.target.checked })
480
- }
481
- />
482
- </div>
483
- </div>
484
- </div>
485
-
486
- {/* Características del Editor */}
487
- <div>
488
- <h3 className="text-sm font-bold mb-4 text-content-primary dark:text-dark-content-primary">
489
- Características del Editor
490
- </h3>
491
- <div className="p-6 bg-white dark:bg-dark-bg-primary border border-border-primary dark:border-dark-border-primary rounded-lg max-w-md">
492
- <h4 className="font-bold mb-4 text-base text-content-primary dark:text-dark-content-primary">
493
- Preferencias del Editor
494
- </h4>
495
- <div className="space-y-3">
496
- <Switch
497
- label="Modo oscuro"
498
- description="Usa el tema oscuro para el editor"
499
- checked={features.darkMode}
500
- onChange={(e) => setFeatures({ ...features, darkMode: e.target.checked })}
501
- />
502
- <Switch
503
- label="Guardado automático"
504
- description="Guarda tu trabajo automáticamente cada pocos segundos"
505
- checked={features.autoSave}
506
- onChange={(e) => setFeatures({ ...features, autoSave: e.target.checked })}
507
- />
508
- <Switch
509
- label="Corrección ortográfica"
510
- description="Verifica la ortografía mientras escribes"
511
- checked={features.spellCheck}
512
- onChange={(e) => setFeatures({ ...features, spellCheck: e.target.checked })}
513
- />
514
- </div>
515
- </div>
516
- </div>
517
-
518
- {/* Gestión de Eventos */}
519
- <div>
520
- <h3 className="text-sm font-bold mb-4 text-content-primary dark:text-dark-content-primary">
521
- Gestión de Eventos
522
- </h3>
523
- <div className="p-6 bg-white dark:bg-dark-bg-primary border border-border-primary dark:border-dark-border-primary rounded-lg max-w-md">
524
- <h4 className="font-bold mb-4 text-base text-content-primary dark:text-dark-content-primary">
525
- Opciones del Evento
526
- </h4>
527
- <div className="space-y-3">
528
- <Switch
529
- label="Permitir inserción"
530
- description="Permite que otros inserten los detalles de tu evento en su propio sitio."
531
- />
532
- <Switch
533
- label="Activar comentarios"
534
- description="Permite que los asistentes dejen comentarios en la página de tu evento."
535
- />
536
- <Switch
537
- label="Recopilar confirmaciones"
538
- description="Permite que las personas confirmen su asistencia a tu evento."
539
- />
540
- <Switch
541
- label="Enviar recordatorios"
542
- description="Envía automáticamente correos de recordatorio antes del evento."
543
- />
544
- </div>
545
- </div>
546
- </div>
547
- </div>
548
- );
549
- },
550
- };
1
+ import type { Meta, StoryObj } from '@storybook/react-vite';
2
+ import { Switch } from './Switch';
3
+ import { useState, useEffect } from 'react';
4
+
5
+ /**
6
+ * Switch - Componente de switch del sistema de diseño Siesa
7
+ *
8
+ * Campo de activación/desactivación con soporte para múltiples estados
9
+ * y opciones de etiquetado. Diseñado para mantener consistencia visual
10
+ * y funcional en toda la aplicación.
11
+ */
12
+ const meta = {
13
+ title: 'Siesa UI Kit/Switch',
14
+ component: Switch,
15
+ parameters: {
16
+ layout: 'centered',
17
+ docs: {
18
+ description: {
19
+ component:
20
+ 'Campos de activación/desactivación con soporte para múltiples estados y opciones de etiquetado.',
21
+ },
22
+ },
23
+ },
24
+ tags: ['autodocs'],
25
+ argTypes: {
26
+ label: {
27
+ control: 'text',
28
+ description: 'Etiqueta del switch',
29
+ table: {
30
+ type: { summary: 'string' },
31
+ category: 'Contenido',
32
+ },
33
+ },
34
+ description: {
35
+ control: 'text',
36
+ description: 'Descripción debajo del label',
37
+ table: {
38
+ type: { summary: 'string' },
39
+ category: 'Contenido',
40
+ },
41
+ },
42
+ checked: {
43
+ control: 'boolean',
44
+ description: 'Si el switch está activado',
45
+ table: {
46
+ type: { summary: 'boolean' },
47
+ defaultValue: { summary: 'false' },
48
+ category: 'Estado',
49
+ },
50
+ },
51
+ disabled: {
52
+ control: 'boolean',
53
+ description: 'Deshabilita el switch',
54
+ table: {
55
+ type: { summary: 'boolean' },
56
+ defaultValue: { summary: 'false' },
57
+ category: 'Estado',
58
+ },
59
+ },
60
+ ariaLabel: {
61
+ control: 'text',
62
+ description: 'Label para accesibilidad (ARIA)',
63
+ table: {
64
+ type: { summary: 'string' },
65
+ category: 'Accesibilidad',
66
+ },
67
+ },
68
+ labelPosition: {
69
+ control: 'radio',
70
+ options: ['leading', 'trailing'],
71
+ description: 'Posición del label respecto al switch',
72
+ table: {
73
+ type: { summary: "'leading' | 'trailing'" },
74
+ defaultValue: { summary: 'leading' },
75
+ category: 'Apariencia',
76
+ },
77
+ },
78
+ },
79
+ } satisfies Meta<typeof Switch>;
80
+
81
+ export default meta;
82
+ type Story = StoryObj<typeof meta>;
83
+
84
+ // ============================================
85
+ // 1. PLAYGROUND INTERACTIVO
86
+ // ============================================
87
+
88
+ /**
89
+ * Playground Interactivo - Usa los controles para experimentar con todas las props del Switch.
90
+ */
91
+ export const Playground: Story = {
92
+ name: 'Playground',
93
+ args: {
94
+ label: 'Permitir inserción',
95
+ description: 'Permite que otros inserten los detalles de tu evento en su propio sitio.',
96
+ checked: false,
97
+ disabled: false,
98
+ labelPosition: 'leading',
99
+ },
100
+ render: (args) => {
101
+ const [checked, setChecked] = useState(args.checked);
102
+
103
+ // Sincronizar el estado local cuando cambian los args desde los controles
104
+ useEffect(() => {
105
+ setChecked(args.checked);
106
+ }, [args.checked]);
107
+
108
+ return (
109
+ <Switch
110
+ {...args}
111
+ checked={checked}
112
+ onChange={(e) => setChecked(e.target.checked)}
113
+ />
114
+ );
115
+ },
116
+ };
117
+
118
+ // ============================================
119
+ // 2. TODOS LOS ESTADOS
120
+ // ============================================
121
+
122
+ /**
123
+ * Todos los Estados - Vista rápida de todos los estados del Switch.
124
+ */
125
+ export const TodosLosEstados: Story = {
126
+ name: 'Todos los Estados',
127
+ render: () => (
128
+ <div className="space-y-8 p-6">
129
+ {/* Estados Apagado */}
130
+ <div>
131
+ <h3 className="text-sm font-bold mb-4 text-content-primary dark:text-dark-content-primary">
132
+ Estados Apagado
133
+ </h3>
134
+ <div className="space-y-3">
135
+ <Switch label="Por Defecto" description="Switch en estado apagado por defecto" />
136
+ <Switch label="Hover" description="Pasa el mouse sobre el switch para ver el estado" />
137
+ <Switch label="Foco" description="Haz clic para enfocar (intenta presionar Tab)" />
138
+ <Switch label="Deshabilitado" description="Switch deshabilitado apagado" disabled />
139
+ </div>
140
+ </div>
141
+
142
+ {/* Estados Encendido */}
143
+ <div>
144
+ <h3 className="text-sm font-bold mb-4 text-content-primary dark:text-dark-content-primary">
145
+ Estados Encendido
146
+ </h3>
147
+ <div className="space-y-3">
148
+ <Switch
149
+ label="Por Defecto"
150
+ description="Switch en estado encendido por defecto"
151
+ checked
152
+ onChange={() => {}}
153
+ />
154
+ <Switch
155
+ label="Hover"
156
+ description="Pasa el mouse sobre el switch para ver el estado"
157
+ checked
158
+ onChange={() => {}}
159
+ />
160
+ <Switch
161
+ label="Foco"
162
+ description="Haz clic para enfocar (intenta presionar Tab)"
163
+ checked
164
+ onChange={() => {}}
165
+ />
166
+ <Switch
167
+ label="Deshabilitado"
168
+ description="Switch deshabilitado encendido"
169
+ checked
170
+ disabled
171
+ onChange={() => {}}
172
+ />
173
+ </div>
174
+ </div>
175
+
176
+ {/* Tips */}
177
+ <div className="mt-6 p-4 bg-blue-50 dark:bg-blue-900/20 border border-blue-200 dark:border-blue-800 rounded-lg">
178
+ <p className="text-xs text-content-secondary dark:text-content-secondary">
179
+ <strong className="text-content-primary dark:text-dark-content-primary">Consejo:</strong> Pasa el mouse sobre el switch o haz clic para ver los estados hover y focus.
180
+ </p>
181
+ </div>
182
+ </div>
183
+ ),
184
+ };
185
+
186
+ // ============================================
187
+ // 3. POSICIÓN DEL LABEL
188
+ // ============================================
189
+
190
+ /**
191
+ * Posición del Label - El label puede estar a la izquierda (leading) o a la derecha (trailing) del switch.
192
+ */
193
+ export const PosicionDelLabel: Story = {
194
+ name: 'Posición del Label',
195
+ render: () => (
196
+ <div className="space-y-8 p-6">
197
+ {/* Leading (Label a la izquierda) */}
198
+ <div>
199
+ <h3 className="text-sm font-bold mb-4 text-content-primary dark:text-dark-content-primary">
200
+ Leading (Label a la Izquierda)
201
+ </h3>
202
+ <p className="text-xs text-content-secondary dark:text-content-secondary mb-4">
203
+ El label se muestra a la izquierda y el switch a la derecha. Este es el valor por defecto.
204
+ </p>
205
+ <div className="space-y-3">
206
+ <Switch
207
+ label="Permitir inserción"
208
+ description="Permite que otros inserten los detalles de tu evento en su propio sitio."
209
+ labelPosition="leading"
210
+ />
211
+ <Switch
212
+ label="Permitir inserción"
213
+ description="Permite que otros inserten los detalles de tu evento en su propio sitio."
214
+ labelPosition="leading"
215
+ checked
216
+ onChange={() => {}}
217
+ />
218
+ </div>
219
+ </div>
220
+
221
+ {/* Trailing (Label a la derecha) */}
222
+ <div>
223
+ <h3 className="text-sm font-bold mb-4 text-content-primary dark:text-dark-content-primary">
224
+ Trailing (Label a la Derecha)
225
+ </h3>
226
+ <p className="text-xs text-content-secondary dark:text-content-secondary mb-4">
227
+ El switch se muestra a la izquierda y el label a la derecha.
228
+ </p>
229
+ <div className="space-y-3">
230
+ <Switch
231
+ label="Permitir inserción"
232
+ description="Permite que otros inserten los detalles de tu evento en su propio sitio."
233
+ labelPosition="trailing"
234
+ />
235
+ <Switch
236
+ label="Permitir inserción"
237
+ description="Permite que otros inserten los detalles de tu evento en su propio sitio."
238
+ labelPosition="trailing"
239
+ checked
240
+ onChange={() => {}}
241
+ />
242
+ </div>
243
+ </div>
244
+
245
+ {/* Solo Label (sin descripción) */}
246
+ <div>
247
+ <h3 className="text-sm font-bold mb-4 text-content-primary dark:text-dark-content-primary">
248
+ Solo Label (sin descripción)
249
+ </h3>
250
+ <div className="space-y-3">
251
+ <Switch label="Activar notificaciones" labelPosition="leading" />
252
+ <Switch label="Activar notificaciones" labelPosition="trailing" />
253
+ </div>
254
+ </div>
255
+
256
+ {/* Tips */}
257
+ <div className="mt-6 p-4 bg-blue-50 dark:bg-blue-900/20 border border-blue-200 dark:border-blue-800 rounded-lg">
258
+ <p className="text-xs text-content-secondary dark:text-content-secondary">
259
+ <strong className="text-content-primary dark:text-dark-content-primary">Consejo:</strong> Usa <code className="px-1 bg-white dark:bg-gray-700 rounded">leading</code> para formularios estándar y <code className="px-1 bg-white dark:bg-gray-700 rounded">trailing</code> para listas de configuración donde el switch debe destacar primero.
260
+ </p>
261
+ </div>
262
+ </div>
263
+ ),
264
+ };
265
+
266
+ // ============================================
267
+ // 4. CON Y SIN LABELS
268
+ // ============================================
269
+
270
+ /**
271
+ * Con y Sin Etiquetas - Ejemplos de switches con diferentes combinaciones de label y description.
272
+ */
273
+ export const ConYSinEtiquetas: Story = {
274
+ name: 'Con y Sin Etiquetas',
275
+ render: () => (
276
+ <div className="space-y-8 p-6">
277
+ {/* Sin Label ni Description */}
278
+ <div>
279
+ <h3 className="text-sm font-bold mb-4 text-content-primary dark:text-dark-content-primary">
280
+ Sin Etiqueta ni Descripción
281
+ </h3>
282
+ <Switch ariaLabel="Interruptor sin etiqueta" />
283
+ </div>
284
+
285
+ {/* Solo Label */}
286
+ <div>
287
+ <h3 className="text-sm font-bold mb-4 text-content-primary dark:text-dark-content-primary">
288
+ Solo Etiqueta
289
+ </h3>
290
+ <Switch label="Activar notificaciones" />
291
+ </div>
292
+
293
+ {/* Label + Description */}
294
+ <div>
295
+ <h3 className="text-sm font-bold mb-4 text-content-primary dark:text-dark-content-primary">
296
+ Etiqueta + Descripción
297
+ </h3>
298
+ <Switch
299
+ label="Permitir inserción"
300
+ description="Permite que otros inserten los detalles de tu evento en su propio sitio."
301
+ />
302
+ </div>
303
+
304
+ {/* Label Largo */}
305
+ <div>
306
+ <h3 className="text-sm font-bold mb-4 text-content-primary dark:text-dark-content-primary">
307
+ Con Texto Largo
308
+ </h3>
309
+ <Switch
310
+ label="Enviarme correos promocionales y actualizaciones"
311
+ description="Puedes darte de baja en cualquier momento. Nunca compartiremos tu correo electrónico con terceros ni lo usaremos para ningún otro propósito."
312
+ />
313
+ </div>
314
+ </div>
315
+ ),
316
+ };
317
+
318
+ // ============================================
319
+ // 5. GRUPOS DE SWITCHES
320
+ // ============================================
321
+
322
+ /**
323
+ * Grupos de Switches - Ejemplos de grupos de switches relacionados para diferentes configuraciones.
324
+ */
325
+ export const GruposDeSwitches: Story = {
326
+ name: 'Grupos de Switches',
327
+ render: () => {
328
+ const [settings, setSettings] = useState({
329
+ embedding: true,
330
+ comments: false,
331
+ analytics: true,
332
+ });
333
+
334
+ return (
335
+ <div className="space-y-8 p-6">
336
+ {/* Configuración de Evento */}
337
+ <div>
338
+ <h3 className="text-sm font-bold mb-4 text-content-primary dark:text-dark-content-primary">
339
+ Configuración de Evento
340
+ </h3>
341
+ <div className="space-y-3">
342
+ <Switch
343
+ label="Permitir inserción"
344
+ description="Permite que otros inserten los detalles de tu evento en su propio sitio."
345
+ checked={settings.embedding}
346
+ onChange={(e) => setSettings({ ...settings, embedding: e.target.checked })}
347
+ />
348
+ <Switch
349
+ label="Activar comentarios"
350
+ description="Permite que los asistentes dejen comentarios y retroalimentación en tu evento."
351
+ checked={settings.comments}
352
+ onChange={(e) => setSettings({ ...settings, comments: e.target.checked })}
353
+ />
354
+ <Switch
355
+ label="Rastrear análisis"
356
+ description="Recopilar datos de uso anónimos para mejorar tu experiencia de evento."
357
+ checked={settings.analytics}
358
+ onChange={(e) => setSettings({ ...settings, analytics: e.target.checked })}
359
+ />
360
+ </div>
361
+ </div>
362
+
363
+ {/* Preferencias de Notificación */}
364
+ <div>
365
+ <h3 className="text-sm font-bold mb-4 text-content-primary dark:text-dark-content-primary">
366
+ Preferencias de Notificación
367
+ </h3>
368
+ <div className="space-y-3">
369
+ <Switch label="Notificaciones por correo" />
370
+ <Switch label="Notificaciones push" />
371
+ <Switch label="Notificaciones SMS" />
372
+ <Switch label="Notificaciones de escritorio" />
373
+ </div>
374
+ </div>
375
+ </div>
376
+ );
377
+ },
378
+ };
379
+
380
+ // ============================================
381
+ // 6. CASOS DE USO REALES
382
+ // ============================================
383
+
384
+ /**
385
+ * Casos de Uso Reales - Ejemplos prácticos de cómo usar los switches en situaciones reales.
386
+ */
387
+ export const CasosDeUsoReales: Story = {
388
+ name: 'Casos de Uso Reales',
389
+ render: () => {
390
+ const [accountSettings, setAccountSettings] = useState({
391
+ twoFactor: true,
392
+ emailNotifications: false,
393
+ publicProfile: true,
394
+ });
395
+
396
+ const [privacySettings, setPrivacySettings] = useState({
397
+ showEmail: false,
398
+ showPhone: false,
399
+ showActivity: true,
400
+ });
401
+
402
+ const [features, setFeatures] = useState({
403
+ darkMode: false,
404
+ autoSave: true,
405
+ spellCheck: true,
406
+ });
407
+
408
+ return (
409
+ <div className="space-y-8 p-6">
410
+ {/* Seguridad de la Cuenta */}
411
+ <div>
412
+ <h3 className="text-sm font-bold mb-4 text-content-primary dark:text-dark-content-primary">
413
+ Seguridad de la Cuenta
414
+ </h3>
415
+ <div className="p-6 bg-white dark:bg-dark-bg-primary border border-border-primary dark:border-dark-border-primary rounded-lg max-w-md">
416
+ <h4 className="font-bold mb-4 text-base text-content-primary dark:text-dark-content-primary">
417
+ Configuración de Seguridad
418
+ </h4>
419
+ <div className="space-y-3">
420
+ <Switch
421
+ label="Autenticación de dos factores"
422
+ description="Agrega una capa extra de seguridad a tu cuenta"
423
+ checked={accountSettings.twoFactor}
424
+ onChange={(e) =>
425
+ setAccountSettings({ ...accountSettings, twoFactor: e.target.checked })
426
+ }
427
+ />
428
+ <Switch
429
+ label="Notificaciones de inicio de sesión"
430
+ description="Recibe notificaciones cuando alguien inicie sesión en tu cuenta"
431
+ checked={accountSettings.emailNotifications}
432
+ onChange={(e) =>
433
+ setAccountSettings({ ...accountSettings, emailNotifications: e.target.checked })
434
+ }
435
+ />
436
+ <Switch
437
+ label="Perfil público"
438
+ description="Haz que tu perfil sea visible para otros usuarios"
439
+ checked={accountSettings.publicProfile}
440
+ onChange={(e) =>
441
+ setAccountSettings({ ...accountSettings, publicProfile: e.target.checked })
442
+ }
443
+ />
444
+ </div>
445
+ </div>
446
+ </div>
447
+
448
+ {/* Configuración de Privacidad */}
449
+ <div>
450
+ <h3 className="text-sm font-bold mb-4 text-content-primary dark:text-dark-content-primary">
451
+ Configuración de Privacidad
452
+ </h3>
453
+ <div className="p-6 bg-white dark:bg-dark-bg-primary border border-border-primary dark:border-dark-border-primary rounded-lg max-w-md">
454
+ <h4 className="font-bold mb-4 text-base text-content-primary dark:text-dark-content-primary">
455
+ Qué pueden ver otros
456
+ </h4>
457
+ <div className="space-y-3">
458
+ <Switch
459
+ label="Mostrar dirección de correo"
460
+ description="Muestra tu correo en tu perfil público"
461
+ checked={privacySettings.showEmail}
462
+ onChange={(e) =>
463
+ setPrivacySettings({ ...privacySettings, showEmail: e.target.checked })
464
+ }
465
+ />
466
+ <Switch
467
+ label="Mostrar número de teléfono"
468
+ description="Muestra tu número de teléfono en tu perfil público"
469
+ checked={privacySettings.showPhone}
470
+ onChange={(e) =>
471
+ setPrivacySettings({ ...privacySettings, showPhone: e.target.checked })
472
+ }
473
+ />
474
+ <Switch
475
+ label="Mostrar estado de actividad"
476
+ description="Permite que otros vean cuando estás en línea"
477
+ checked={privacySettings.showActivity}
478
+ onChange={(e) =>
479
+ setPrivacySettings({ ...privacySettings, showActivity: e.target.checked })
480
+ }
481
+ />
482
+ </div>
483
+ </div>
484
+ </div>
485
+
486
+ {/* Características del Editor */}
487
+ <div>
488
+ <h3 className="text-sm font-bold mb-4 text-content-primary dark:text-dark-content-primary">
489
+ Características del Editor
490
+ </h3>
491
+ <div className="p-6 bg-white dark:bg-dark-bg-primary border border-border-primary dark:border-dark-border-primary rounded-lg max-w-md">
492
+ <h4 className="font-bold mb-4 text-base text-content-primary dark:text-dark-content-primary">
493
+ Preferencias del Editor
494
+ </h4>
495
+ <div className="space-y-3">
496
+ <Switch
497
+ label="Modo oscuro"
498
+ description="Usa el tema oscuro para el editor"
499
+ checked={features.darkMode}
500
+ onChange={(e) => setFeatures({ ...features, darkMode: e.target.checked })}
501
+ />
502
+ <Switch
503
+ label="Guardado automático"
504
+ description="Guarda tu trabajo automáticamente cada pocos segundos"
505
+ checked={features.autoSave}
506
+ onChange={(e) => setFeatures({ ...features, autoSave: e.target.checked })}
507
+ />
508
+ <Switch
509
+ label="Corrección ortográfica"
510
+ description="Verifica la ortografía mientras escribes"
511
+ checked={features.spellCheck}
512
+ onChange={(e) => setFeatures({ ...features, spellCheck: e.target.checked })}
513
+ />
514
+ </div>
515
+ </div>
516
+ </div>
517
+
518
+ {/* Gestión de Eventos */}
519
+ <div>
520
+ <h3 className="text-sm font-bold mb-4 text-content-primary dark:text-dark-content-primary">
521
+ Gestión de Eventos
522
+ </h3>
523
+ <div className="p-6 bg-white dark:bg-dark-bg-primary border border-border-primary dark:border-dark-border-primary rounded-lg max-w-md">
524
+ <h4 className="font-bold mb-4 text-base text-content-primary dark:text-dark-content-primary">
525
+ Opciones del Evento
526
+ </h4>
527
+ <div className="space-y-3">
528
+ <Switch
529
+ label="Permitir inserción"
530
+ description="Permite que otros inserten los detalles de tu evento en su propio sitio."
531
+ />
532
+ <Switch
533
+ label="Activar comentarios"
534
+ description="Permite que los asistentes dejen comentarios en la página de tu evento."
535
+ />
536
+ <Switch
537
+ label="Recopilar confirmaciones"
538
+ description="Permite que las personas confirmen su asistencia a tu evento."
539
+ />
540
+ <Switch
541
+ label="Enviar recordatorios"
542
+ description="Envía automáticamente correos de recordatorio antes del evento."
543
+ />
544
+ </div>
545
+ </div>
546
+ </div>
547
+ </div>
548
+ );
549
+ },
550
+ };