siesa-ui-kit 1.0.0

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 (198) hide show
  1. package/README.md +89 -0
  2. package/bin/install.cjs +502 -0
  3. package/bin/prepare-publish.cjs +28 -0
  4. package/bin/restore-folders.cjs +28 -0
  5. package/claude/agents/siesa-ui-kit-specialist.md +2401 -0
  6. package/claude/prompts/component-template.md +121 -0
  7. package/claude/settings.local.json +61 -0
  8. package/docs/border-radius.md +1261 -0
  9. package/docs/colors.md +832 -0
  10. package/docs/dark-mode-guide.md +1426 -0
  11. package/docs/filters.md +1243 -0
  12. package/docs/icons.md +1283 -0
  13. package/docs/shadows.md +1377 -0
  14. package/docs/spacing.md +1684 -0
  15. package/docs/typography.md +1268 -0
  16. package/package.json +83 -0
  17. package/postcss.config.cjs +6 -0
  18. package/public/,Business Logo.png +0 -0
  19. package/public/.Siesa Logo.png +0 -0
  20. package/public/bg_siesa.png +0 -0
  21. package/public/siesa_logo_mobile.png +0 -0
  22. package/public/vite.svg +1 -0
  23. package/src/App.css +42 -0
  24. package/src/App.tsx +8 -0
  25. package/src/ButtonTest.tsx +147 -0
  26. package/src/assets/fonts/README.md +261 -0
  27. package/src/assets/fonts/SiesaBT/SiesaBT-Bold.otf +0 -0
  28. package/src/assets/fonts/SiesaBT/SiesaBT-Light.otf +0 -0
  29. package/src/assets/fonts/SiesaBT/SiesaBT-Regular.otf +0 -0
  30. package/src/assets/react.svg +1 -0
  31. package/src/components/Alert/Alert.stories.tsx +332 -0
  32. package/src/components/Alert/Alert.tsx +106 -0
  33. package/src/components/Alert/Alert.types.ts +54 -0
  34. package/src/components/Avatar/Avatar.stories.tsx +494 -0
  35. package/src/components/Avatar/Avatar.tsx +143 -0
  36. package/src/components/Avatar/Avatar.types.ts +53 -0
  37. package/src/components/Badge/Badge.stories.tsx +339 -0
  38. package/src/components/Badge/Badge.tsx +278 -0
  39. package/src/components/Badge/Badge.types.ts +58 -0
  40. package/src/components/Button/Button.stories.tsx +950 -0
  41. package/src/components/Button/Button.tsx +337 -0
  42. package/src/components/Button/Button.types.ts +180 -0
  43. package/src/components/Button/icons.tsx +87 -0
  44. package/src/components/Button/index.ts +3 -0
  45. package/src/components/Checkbox/Checkbox.stories.tsx +453 -0
  46. package/src/components/Checkbox/Checkbox.tsx +208 -0
  47. package/src/components/Checkbox/Checkbox.types.ts +61 -0
  48. package/src/components/DescriptionList/DescriptionList.stories.tsx +250 -0
  49. package/src/components/DescriptionList/DescriptionList.tsx +96 -0
  50. package/src/components/DescriptionList/DescriptionList.types.ts +29 -0
  51. package/src/components/Divider/Divider.stories.tsx +263 -0
  52. package/src/components/Divider/Divider.tsx +80 -0
  53. package/src/components/Divider/Divider.types.ts +24 -0
  54. package/src/components/Dropdown/Dropdown.stories.tsx +552 -0
  55. package/src/components/Dropdown/Dropdown.tsx +422 -0
  56. package/src/components/Dropdown/Dropdown.types.ts +146 -0
  57. package/src/components/Dropdown/README.md +266 -0
  58. package/src/components/Dropdown/icons.tsx +72 -0
  59. package/src/components/Dropdown/index.ts +8 -0
  60. package/src/components/Input/Input.stories.tsx +583 -0
  61. package/src/components/Input/Input.tsx +204 -0
  62. package/src/components/Input/Input.types.ts +80 -0
  63. package/src/components/Input/icons.tsx +145 -0
  64. package/src/components/Input/index.ts +2 -0
  65. package/src/components/LoginView/LoginView.stories.tsx +148 -0
  66. package/src/components/LoginView/LoginView.tsx +426 -0
  67. package/src/components/LoginView/LoginView.types.ts +52 -0
  68. package/src/components/LoginView/README.md +396 -0
  69. package/src/components/LoginView/icons.tsx +85 -0
  70. package/src/components/LoginView/index.ts +3 -0
  71. package/src/components/Navbar/Navbar.stories.tsx +810 -0
  72. package/src/components/Navbar/Navbar.tsx +755 -0
  73. package/src/components/Navbar/Navbar.types.ts +219 -0
  74. package/src/components/Navbar/README.md +279 -0
  75. package/src/components/Navbar/icons.tsx +102 -0
  76. package/src/components/Navbar/index.ts +8 -0
  77. package/src/components/NavigationBar/NavigationBar.stories.tsx +406 -0
  78. package/src/components/NavigationBar/NavigationBar.tsx +246 -0
  79. package/src/components/NavigationBar/NavigationBar.types.ts +74 -0
  80. package/src/components/NavigationBar/README.md +469 -0
  81. package/src/components/NavigationBar/index.ts +2 -0
  82. package/src/components/NavigationRail/NavigationRail.stories.tsx +417 -0
  83. package/src/components/NavigationRail/NavigationRail.tsx +418 -0
  84. package/src/components/NavigationRail/NavigationRail.types.ts +109 -0
  85. package/src/components/NavigationRail/README.md +224 -0
  86. package/src/components/NavigationRail/index.ts +2 -0
  87. package/src/components/Notification/Notification.stories.tsx +513 -0
  88. package/src/components/Notification/Notification.tsx +145 -0
  89. package/src/components/Notification/Notification.types.ts +142 -0
  90. package/src/components/Notification/README.md +409 -0
  91. package/src/components/Notification/index.ts +3 -0
  92. package/src/components/POSConvention/POSConvention.stories.tsx +235 -0
  93. package/src/components/POSConvention/POSConvention.tsx +129 -0
  94. package/src/components/POSConvention/POSConvention.types.ts +38 -0
  95. package/src/components/POSConvention/README.md +123 -0
  96. package/src/components/POSConvention/icons.tsx +45 -0
  97. package/src/components/POSConvention/index.ts +3 -0
  98. package/src/components/POSLocationButton/POSLocationButton.stories.tsx +531 -0
  99. package/src/components/POSLocationButton/POSLocationButton.tsx +247 -0
  100. package/src/components/POSLocationButton/POSLocationButton.types.ts +87 -0
  101. package/src/components/POSLocationButton/README.md +253 -0
  102. package/src/components/POSLocationButton/icons.tsx +120 -0
  103. package/src/components/POSLocationButton/index.ts +14 -0
  104. package/src/components/POSNumberButton/POSNumberButton.stories.tsx +415 -0
  105. package/src/components/POSNumberButton/POSNumberButton.tsx +179 -0
  106. package/src/components/POSNumberButton/POSNumberButton.types.ts +51 -0
  107. package/src/components/POSNumberButton/README.md +321 -0
  108. package/src/components/POSNumberButton/index.ts +3 -0
  109. package/src/components/POSProductButton/POSProductButton.stories.tsx +318 -0
  110. package/src/components/POSProductButton/POSProductButton.tsx +152 -0
  111. package/src/components/POSProductButton/POSProductButton.types.ts +46 -0
  112. package/src/components/POSProductButton/README.md +269 -0
  113. package/src/components/POSProductButton/index.ts +2 -0
  114. package/src/components/POSProductCard/POSProductCard.stories.tsx +642 -0
  115. package/src/components/POSProductCard/POSProductCard.tsx +208 -0
  116. package/src/components/POSProductCard/POSProductCard.types.ts +76 -0
  117. package/src/components/POSProductCard/README.md +179 -0
  118. package/src/components/POSProductCard/icons.tsx +26 -0
  119. package/src/components/POSProductCard/index.ts +2 -0
  120. package/src/components/POSProductSidebarItems/POSProductSidebarItems.stories.tsx +753 -0
  121. package/src/components/POSProductSidebarItems/POSProductSidebarItems.tsx +332 -0
  122. package/src/components/POSProductSidebarItems/POSProductSidebarItems.types.ts +119 -0
  123. package/src/components/POSProductSidebarItems/README.md +198 -0
  124. package/src/components/POSProductSidebarItems/icons.tsx +21 -0
  125. package/src/components/POSProductSidebarItems/index.ts +3 -0
  126. package/src/components/POSTable/POSTable.stories.tsx +737 -0
  127. package/src/components/POSTable/POSTable.tsx +401 -0
  128. package/src/components/POSTable/POSTable.types.ts +83 -0
  129. package/src/components/POSTable/README.md +286 -0
  130. package/src/components/POSTable/index.ts +7 -0
  131. package/src/components/Pagination/Pagination.stories.tsx +555 -0
  132. package/src/components/Pagination/Pagination.tsx +286 -0
  133. package/src/components/Pagination/Pagination.types.ts +93 -0
  134. package/src/components/Pagination/README.md +298 -0
  135. package/src/components/Pagination/icons.tsx +47 -0
  136. package/src/components/Pagination/index.ts +3 -0
  137. package/src/components/Quantity/Quantity.stories.tsx +457 -0
  138. package/src/components/Quantity/Quantity.tsx +289 -0
  139. package/src/components/Quantity/Quantity.types.ts +70 -0
  140. package/src/components/Radio/Radio.stories.tsx +523 -0
  141. package/src/components/Radio/Radio.tsx +170 -0
  142. package/src/components/Radio/Radio.types.ts +122 -0
  143. package/src/components/Select/README.md +299 -0
  144. package/src/components/Select/Select.stories.tsx +673 -0
  145. package/src/components/Select/Select.tsx +454 -0
  146. package/src/components/Select/Select.types.ts +148 -0
  147. package/src/components/Select/icons.tsx +50 -0
  148. package/src/components/Select/index.ts +3 -0
  149. package/src/components/SignUpView/SignUpView.stories.tsx +129 -0
  150. package/src/components/SignUpView/SignUpView.tsx +503 -0
  151. package/src/components/SignUpView/SignUpView.types.ts +58 -0
  152. package/src/components/SignUpView/icons.tsx +71 -0
  153. package/src/components/SignUpView/index.ts +3 -0
  154. package/src/components/Switch/README.md +112 -0
  155. package/src/components/Switch/Switch.stories.tsx +550 -0
  156. package/src/components/Switch/Switch.tsx +246 -0
  157. package/src/components/Switch/Switch.types.ts +67 -0
  158. package/src/components/Table/README.md +369 -0
  159. package/src/components/Table/Table.stories.tsx +805 -0
  160. package/src/components/Table/Table.tsx +688 -0
  161. package/src/components/Table/Table.types.ts +204 -0
  162. package/src/components/Table/index.ts +9 -0
  163. package/src/components/Tabs/README.md +201 -0
  164. package/src/components/Tabs/Tabs.stories.tsx +580 -0
  165. package/src/components/Tabs/Tabs.tsx +356 -0
  166. package/src/components/Tabs/Tabs.types.ts +127 -0
  167. package/src/components/Tabs/icons.tsx +129 -0
  168. package/src/components/Tabs/index.ts +11 -0
  169. package/src/components/Textarea/Textarea.stories.tsx +535 -0
  170. package/src/components/Textarea/Textarea.tsx +188 -0
  171. package/src/components/Textarea/Textarea.types.ts +54 -0
  172. package/src/context/ThemeContext.tsx +99 -0
  173. package/src/context/index.ts +1 -0
  174. package/src/index.css +29 -0
  175. package/src/index.ts +39 -0
  176. package/src/main.tsx +10 -0
  177. package/src/views/ProductsView/ProductsView.stories.tsx +344 -0
  178. package/src/views/ProductsView/ProductsView.tsx +480 -0
  179. package/src/views/ProductsView/ProductsView.types.ts +238 -0
  180. package/src/views/ProductsView/README.md +312 -0
  181. package/src/views/ProductsView/icons.tsx +38 -0
  182. package/src/views/ProductsView/index.ts +8 -0
  183. package/src/views/RecoverPasswordView/README.md +269 -0
  184. package/src/views/RecoverPasswordView/RecoverPasswordView.stories.tsx +131 -0
  185. package/src/views/RecoverPasswordView/RecoverPasswordView.tsx +376 -0
  186. package/src/views/RecoverPasswordView/RecoverPasswordView.types.ts +56 -0
  187. package/src/views/RecoverPasswordView/icons.tsx +17 -0
  188. package/src/views/RecoverPasswordView/index.ts +2 -0
  189. package/src/views/TableLayoutView/README.md +268 -0
  190. package/src/views/TableLayoutView/TableLayoutView.stories.tsx +235 -0
  191. package/src/views/TableLayoutView/TableLayoutView.tsx +461 -0
  192. package/src/views/TableLayoutView/TableLayoutView.types.ts +209 -0
  193. package/src/views/TableLayoutView/icons.tsx +113 -0
  194. package/src/views/TableLayoutView/index.ts +6 -0
  195. package/storybook/main.ts +20 -0
  196. package/storybook/preview.tsx +84 -0
  197. package/storybook/vitest.setup.ts +7 -0
  198. package/tailwind.config.js +128 -0
@@ -0,0 +1,113 @@
1
+ import React from 'react';
2
+
3
+ /**
4
+ * Iconos para TableLayoutView
5
+ * Basados en Heroicons Micro (16x16px)
6
+ */
7
+
8
+ // Icono Plus (heroicons-micro/plus)
9
+ export const PlusIcon: React.FC<{ className?: string }> = ({ className = '' }) => (
10
+ <svg
11
+ className={className}
12
+ xmlns="http://www.w3.org/2000/svg"
13
+ viewBox="0 0 16 16"
14
+ fill="currentColor"
15
+ aria-hidden="true"
16
+ >
17
+ <path d="M8.75 3.75a.75.75 0 0 0-1.5 0v3.5h-3.5a.75.75 0 0 0 0 1.5h3.5v3.5a.75.75 0 0 0 1.5 0v-3.5h3.5a.75.75 0 0 0 0-1.5h-3.5v-3.5Z" />
18
+ </svg>
19
+ );
20
+
21
+ // Icono Arrows Pointing In (heroicons-micro/arrows-pointing-in)
22
+ export const ArrowsPointingInIcon: React.FC<{ className?: string }> = ({ className = '' }) => (
23
+ <svg
24
+ className={className}
25
+ xmlns="http://www.w3.org/2000/svg"
26
+ viewBox="0 0 16 16"
27
+ fill="currentColor"
28
+ aria-hidden="true"
29
+ >
30
+ <path
31
+ fillRule="evenodd"
32
+ d="M2.22 2.22a.75.75 0 0 1 1.06 0l2 2a.75.75 0 1 1-1.06 1.06l-.72-.72v2.69a.75.75 0 0 1-1.5 0V2.5c0-.69.56-1.25 1.25-1.25h4.75a.75.75 0 0 1 0 1.5H4.81l.72.72a.75.75 0 0 1-1.06 1.06l-2-2a.75.75 0 0 1 0-1.06ZM9 2.75a.75.75 0 0 1 .75-.75h4.75C15.19 2 15.75 2.56 15.75 3.25v4.75a.75.75 0 0 1-1.5 0V5.31l-.72.72a.75.75 0 1 1-1.06-1.06l2-2a.75.75 0 0 1 1.06 0l2 2a.75.75 0 1 1-1.06 1.06l-.72-.72V8a.75.75 0 0 1-1.5 0V3.5H9.75A.75.75 0 0 1 9 2.75ZM2.75 9a.75.75 0 0 1 .75.75v2.69l.72-.72a.75.75 0 1 1 1.06 1.06l-2 2a.75.75 0 0 1-1.06 0l-2-2a.75.75 0 1 1 1.06-1.06l.72.72V9.75c0-.41.34-.75.75-.75Zm10.5 0a.75.75 0 0 1 .75.75v3.5h3.5a.75.75 0 0 1 0 1.5h-4.75c-.69 0-1.25-.56-1.25-1.25V9.75a.75.75 0 0 1 .75-.75Z"
33
+ clipRule="evenodd"
34
+ />
35
+ </svg>
36
+ );
37
+
38
+ // Icono Arrows Pointing Out (heroicons-micro/arrows-pointing-out)
39
+ export const ArrowsPointingOutIcon: React.FC<{ className?: string }> = ({ className = '' }) => (
40
+ <svg
41
+ className={className}
42
+ xmlns="http://www.w3.org/2000/svg"
43
+ viewBox="0 0 16 16"
44
+ fill="currentColor"
45
+ aria-hidden="true"
46
+ >
47
+ <path
48
+ fillRule="evenodd"
49
+ d="M2.75 2a.75.75 0 0 0-.75.75v3.5a.75.75 0 0 0 1.5 0V3.81l2.47 2.47a.75.75 0 1 0 1.06-1.06L4.56 2.75h2.69a.75.75 0 0 0 0-1.5h-4.5ZM9 2.75a.75.75 0 0 1 .75-.75h4.5a.75.75 0 0 1 0 1.5h-2.69l2.47 2.47a.75.75 0 1 1-1.06 1.06L10.5 4.56v2.69a.75.75 0 0 1-1.5 0v-4.5ZM2.75 9a.75.75 0 0 1 .75.75v2.69l2.47-2.47a.75.75 0 1 1 1.06 1.06L4.56 13.5h2.69a.75.75 0 0 1 0 1.5h-4.5a.75.75 0 0 1-.75-.75v-4.5a.75.75 0 0 1 .75-.75Zm10.5 0a.75.75 0 0 1 .75.75v4.5a.75.75 0 0 1-.75.75h-4.5a.75.75 0 0 1 0-1.5h2.69l-2.47-2.47a.75.75 0 1 1 1.06-1.06l2.47 2.47V9.75a.75.75 0 0 1 .75-.75Z"
50
+ clipRule="evenodd"
51
+ />
52
+ </svg>
53
+ );
54
+
55
+ // Icono Arrow Right End On Rectangle (heroicons-micro/arrow-right-end-on-rectangle)
56
+ export const ArrowRightEndOnRectangleIcon: React.FC<{ className?: string }> = ({ className = '' }) => (
57
+ <svg
58
+ className={className}
59
+ xmlns="http://www.w3.org/2000/svg"
60
+ viewBox="0 0 16 16"
61
+ fill="currentColor"
62
+ aria-hidden="true"
63
+ >
64
+ <path
65
+ fillRule="evenodd"
66
+ d="M2 4.75A2.75 2.75 0 0 1 4.75 2h3a2.75 2.75 0 0 1 2.75 2.75v.5a.75.75 0 0 1-1.5 0v-.5c0-.69-.56-1.25-1.25-1.25h-3c-.69 0-1.25.56-1.25 1.25v6.5c0 .69.56 1.25 1.25 1.25h3c.69 0 1.25-.56 1.25-1.25v-.5a.75.75 0 0 1 1.5 0v.5A2.75 2.75 0 0 1 7.75 14h-3A2.75 2.75 0 0 1 2 11.25v-6.5Zm10.58 2.96-1.72-1.72a.75.75 0 1 1 1.06-1.06l2.78 2.78c.3.29.3.76 0 1.06l-2.78 2.78a.75.75 0 1 1-1.06-1.06l1.72-1.72H7.25a.75.75 0 0 1 0-1.5h5.33Z"
67
+ clipRule="evenodd"
68
+ />
69
+ </svg>
70
+ );
71
+
72
+ // Icono Arrows Right Left (heroicons-micro/arrows-right-left)
73
+ export const ArrowsRightLeftIcon: React.FC<{ className?: string }> = ({ className = '' }) => (
74
+ <svg
75
+ className={className}
76
+ xmlns="http://www.w3.org/2000/svg"
77
+ viewBox="0 0 16 16"
78
+ fill="currentColor"
79
+ aria-hidden="true"
80
+ >
81
+ <path
82
+ fillRule="evenodd"
83
+ d="M13.78 10.47a.75.75 0 0 1 0 1.06l-2.25 2.25a.75.75 0 1 1-1.06-1.06l.97-.97H5.75a.75.75 0 0 1 0-1.5h5.69l-.97-.97a.75.75 0 0 1 1.06-1.06l2.25 2.25ZM2.22 5.53a.75.75 0 0 1 0-1.06l2.25-2.25a.75.75 0 0 1 1.06 1.06l-.97.97h5.69a.75.75 0 0 1 0 1.5H4.56l.97.97a.75.75 0 1 1-1.06 1.06L2.22 5.53Z"
84
+ clipRule="evenodd"
85
+ />
86
+ </svg>
87
+ );
88
+
89
+ // Icono Rectangle Group (heroicons-micro/rectangle-group)
90
+ export const RectangleGroupIcon: React.FC<{ className?: string }> = ({ className = '' }) => (
91
+ <svg
92
+ className={className}
93
+ xmlns="http://www.w3.org/2000/svg"
94
+ viewBox="0 0 16 16"
95
+ fill="currentColor"
96
+ aria-hidden="true"
97
+ >
98
+ <path d="M2.5 3.5h3v3h-3v-3ZM6.5 2a.5.5 0 0 0-.5.5v4a.5.5 0 0 0 .5.5h4a.5.5 0 0 0 .5-.5v-4a.5.5 0 0 0-.5-.5h-4ZM2.5 10.5h3v3h-3v-3ZM6.5 9a.5.5 0 0 0-.5.5v4a.5.5 0 0 0 .5.5h4a.5.5 0 0 0 .5-.5v-4a.5.5 0 0 0-.5-.5h-4ZM10.5 3.5h3v3h-3v-3ZM13.5 2h-3a.5.5 0 0 0-.5.5v4a.5.5 0 0 0 .5.5h4a.5.5 0 0 0 .5-.5v-4a.5.5 0 0 0-.5-.5h-.5ZM10.5 10.5h3v3h-3v-3Z" />
99
+ </svg>
100
+ );
101
+
102
+ // Icono X Mark (heroicons-micro/x-mark)
103
+ export const XMarkIcon: React.FC<{ className?: string }> = ({ className = '' }) => (
104
+ <svg
105
+ className={className}
106
+ xmlns="http://www.w3.org/2000/svg"
107
+ viewBox="0 0 16 16"
108
+ fill="currentColor"
109
+ aria-hidden="true"
110
+ >
111
+ <path d="M5.28 4.22a.75.75 0 0 0-1.06 1.06L6.94 8l-2.72 2.72a.75.75 0 1 0 1.06 1.06L8 9.06l2.72 2.72a.75.75 0 1 0 1.06-1.06L9.06 8l2.72-2.72a.75.75 0 0 0-1.06-1.06L8 6.94 5.28 4.22Z" />
112
+ </svg>
113
+ );
@@ -0,0 +1,6 @@
1
+ export { TableLayoutView } from './TableLayoutView';
2
+ export type {
3
+ TableLayoutViewProps,
4
+ Location,
5
+ TableItem,
6
+ } from './TableLayoutView.types';
@@ -0,0 +1,20 @@
1
+ import type { StorybookConfig } from '@storybook/react-vite';
2
+
3
+ const config: StorybookConfig = {
4
+ "stories": [
5
+ "../src/**/*.mdx",
6
+ "../src/**/*.stories.@(js|jsx|mjs|ts|tsx)"
7
+ ],
8
+ "addons": [
9
+ "@chromatic-com/storybook",
10
+ "@storybook/addon-docs",
11
+ "@storybook/addon-onboarding",
12
+ "@storybook/addon-a11y",
13
+ "@storybook/addon-vitest"
14
+ ],
15
+ "framework": {
16
+ "name": "@storybook/react-vite",
17
+ "options": {}
18
+ }
19
+ };
20
+ export default config;
@@ -0,0 +1,84 @@
1
+ import type { Preview } from '@storybook/react-vite';
2
+ import React, { useEffect } from 'react';
3
+ import '../src/index.css';
4
+
5
+ // Decorador global para manejar el tema en Storybook
6
+ const withTheme = (Story: any, context: any) => {
7
+ const { theme } = context.globals;
8
+
9
+ useEffect(() => {
10
+ const htmlElement = document.documentElement;
11
+
12
+ if (theme === 'dark') {
13
+ htmlElement.classList.add('dark');
14
+ } else {
15
+ htmlElement.classList.remove('dark');
16
+ }
17
+ }, [theme]);
18
+
19
+ return (
20
+ <div className="bg-white dark:bg-dark-bg-primary text-content-primary dark:text-dark-content-primary p-6">
21
+ <Story />
22
+ </div>
23
+ );
24
+ };
25
+
26
+ const preview: Preview = {
27
+ parameters: {
28
+ controls: {
29
+ matchers: {
30
+ color: /(background|color)$/i,
31
+ date: /Date$/i,
32
+ },
33
+ },
34
+
35
+ a11y: {
36
+ // 'todo' - show a11y violations in the test UI only
37
+ // 'error' - fail CI on a11y violations
38
+ // 'off' - skip a11y checks entirely
39
+ test: 'todo'
40
+ },
41
+
42
+ // Configuración de fondos para las historias
43
+ backgrounds: {
44
+ default: 'light',
45
+ values: [
46
+ {
47
+ name: 'light',
48
+ value: '#ffffff',
49
+ },
50
+ {
51
+ name: 'dark',
52
+ value: '#000000',
53
+ },
54
+ ],
55
+ },
56
+
57
+ // Deshabilitar la cuadrícula de fondo
58
+ grid: {
59
+ disable: true,
60
+ },
61
+ },
62
+
63
+ // Control global de tema
64
+ globalTypes: {
65
+ theme: {
66
+ name: 'Theme',
67
+ description: 'Global theme for components',
68
+ defaultValue: 'light',
69
+ toolbar: {
70
+ title: 'Theme',
71
+ icon: 'circlehollow',
72
+ items: [
73
+ { value: 'light', icon: 'sun', title: 'Light' },
74
+ { value: 'dark', icon: 'moon', title: 'Dark' },
75
+ ],
76
+ dynamicTitle: true,
77
+ },
78
+ },
79
+ },
80
+
81
+ decorators: [withTheme],
82
+ };
83
+
84
+ export default preview;
@@ -0,0 +1,7 @@
1
+ import * as a11yAddonAnnotations from "@storybook/addon-a11y/preview";
2
+ import { setProjectAnnotations } from '@storybook/react-vite';
3
+ import * as projectAnnotations from './preview';
4
+
5
+ // This is an important step to apply the right configuration when testing your stories.
6
+ // More info at: https://storybook.js.org/docs/api/portable-stories/portable-stories-vitest#setprojectannotations
7
+ setProjectAnnotations([a11yAddonAnnotations, projectAnnotations]);
@@ -0,0 +1,128 @@
1
+ /** @type {import('tailwindcss').Config} */
2
+ module.exports = {
3
+ darkMode: 'class', // Habilita dark mode con clase 'dark' en el elemento raíz
4
+ content: [
5
+ "./index.html",
6
+ "./src/**/*.{js,ts,jsx,tsx}",
7
+ ],
8
+ theme: {
9
+ extend: {
10
+ // Fuentes
11
+ fontFamily: {
12
+ sans: ['SiesaBT', 'Inter', 'sans-serif'],
13
+ },
14
+
15
+ // Colores del Sistema de Diseño Siesa
16
+ colors: {
17
+ // Primary Custom Colors (extraído de Figma)
18
+ 'primary-custom': {
19
+ 100: '#dbeefe', // backgroundCustomPrimary - Hover para outline
20
+ 300: '#93d1fd', // borderCustomPrimary - Bordes
21
+ 400: '#60b6fa', // PrimaryCustom/400 - Focus ring
22
+ 500: '#3c9bf6', // PrimaryCustom/500 - Hover para botón default
23
+ 600: '#0e79fd', // contentCustomPrimary - Color principal
24
+ 700: '#0c6ade', // variante más oscura - Active/pressed
25
+ },
26
+
27
+ // Primary Inverse (para usar con bg-, text-, border-)
28
+ 'primary-inverse-content': '#eff8ff', // contentInverseCustomPrimary
29
+ 'primary-inverse-background': '#0e79fd', // backgroundInverseCustomPrimary
30
+ 'primary-inverse-border': '#3c9bf6', // borderInverseCustomPrimary
31
+
32
+ // System Colors (Light Mode)
33
+ 'content-primary': '#18181b', // contentPrimary
34
+ 'content-secondary': '#a1a1aa', // contentSecondary - Description text
35
+ 'content-tertiary': '#71717a', // contentTertiary - Texto secundario/placeholder
36
+ 'bg-primary': '#ffffff', // backgroundPrimary
37
+ 'background-secondary': '#f4f4f5', // backgroundSecondary - Fondos disabled
38
+ 'border-primary': '#e4e4e7', // borderPrimary
39
+ 'border-secondary': '#f4f4f5', // borderSecondary - Divider soft
40
+
41
+ // Error Colors
42
+ 'error-border': '#ef4444', // Error border - Red 500
43
+ 'error-content': '#dc2626', // Error text - Red 600
44
+ 'error-bg': '#fef2f2', // Error background - Red 50
45
+
46
+ // Extensions Colors (para badges, notificaciones, etc)
47
+ 'content-extensions-red': '#b91c1c', // contentRed - Red 700 para notificaciones
48
+
49
+ // Dark Mode Colors (extraído de Figma node 4001-17241)
50
+ 'dark-bg-primary': '#18181b', // backgroundPrimary - Fondo principal oscuro (zinc-900)
51
+ 'dark-bg-custom': '#112d57', // backgroundCustomPrimary - Fondo activo en dark mode
52
+ 'dark-content-primary': '#f4f4f5', // contentPrimary - Texto principal en dark mode (zinc-100)
53
+ 'dark-content-custom': '#93d1fd', // contentCustomPrimary - Texto activo en dark mode
54
+ 'dark-border-primary': '#71717a', // borderPrimary - Bordes en dark
55
+ 'dark-border-custom': '#0f6ae3', // borderCustomPrimary - Bordes de componentes
56
+ 'dark-bg-inverse': '#bfe2fe', // backgroundInverseCustomPrimary - Fondos inversos (botón dark)
57
+ 'dark-content-inverse': '#0e79fd', // contentInverseCustomPrimary - Texto inverso (botón dark)
58
+ 'dark-border-inverse': '#93d1fd', // borderInverseCustomPrimary - Borde botón en dark
59
+ },
60
+
61
+ // Background colors adicionales para hover
62
+ backgroundColor: {
63
+ 'hover-overlay': 'rgba(0, 0, 0, 0.1)', // Light mode hover overlay
64
+ 'hover-overlay-inverse': 'rgba(255, 255, 255, 0.2)', // Inverse hover
65
+ 'hover-overlay-dark': 'rgba(255, 255, 255, 0.2)', // Dark mode hover overlay (20% white)
66
+ },
67
+
68
+ // Text colors adicionales
69
+ textColor: {
70
+ 'primary-inverse-content': '#eff8ff',
71
+ 'primary-custom-600': '#0e79fd',
72
+ },
73
+
74
+ // Border colors adicionales
75
+ borderColor: {
76
+ 'primary-inverse-border': '#3c9bf6',
77
+ 'primary-custom-300': '#93d1fd',
78
+ },
79
+
80
+ // Tipografía completa del sistema de diseño (typography.md)
81
+ fontSize: {
82
+ // Display - Para heros y títulos muy grandes
83
+ '9xl': ['8rem', { lineHeight: '8rem', letterSpacing: '-0.025em', fontWeight: '700' }], // 128px
84
+ '8xl': ['6rem', { lineHeight: '6rem', letterSpacing: '-0.025em', fontWeight: '700' }], // 96px
85
+ '7xl': ['4.5rem', { lineHeight: '4.5rem', letterSpacing: '-0.025em', fontWeight: '700' }], // 72px
86
+ '6xl': ['3.75rem', { lineHeight: '3.75rem', letterSpacing: '-0.025em', fontWeight: '700' }], // 60px
87
+ '5xl': ['3rem', { lineHeight: '3rem', letterSpacing: '-0.025em', fontWeight: '700' }], // 48px
88
+
89
+ // Heading - Para títulos de secciones
90
+ '4xl': ['2.25rem', { lineHeight: '2.5rem', letterSpacing: '-0.025em', fontWeight: '700' }], // 36px
91
+ '3xl': ['1.875rem', { lineHeight: '2.25rem', letterSpacing: '-0.025em', fontWeight: '700' }], // 30px
92
+ '2xl': ['1.5rem', { lineHeight: '2rem', letterSpacing: '-0.025em', fontWeight: '700' }], // 24px
93
+ 'xl': ['1.25rem', { lineHeight: '1.75rem', letterSpacing: '-0.025em', fontWeight: '700' }], // 20px
94
+
95
+ // Label & Paragraph - Para contenido y labels
96
+ 'lg': ['1.125rem', { lineHeight: '1.75rem' }], // 18px
97
+ 'base': ['1rem', { lineHeight: '1.5rem' }], // 16px (default)
98
+ 'sm': ['0.875rem', { lineHeight: '1.25rem' }], // 14px
99
+ 'xs': ['0.75rem', { lineHeight: '1rem' }], // 12px
100
+ },
101
+
102
+ // Border Radius (valores exactos de Figma)
103
+ borderRadius: {
104
+ 'md': '6px', // rounded-md de Figma
105
+ '2xl': '16px', // rounded-2xl de Figma
106
+ '3xl': '24px', // rounded-3xl de Figma
107
+ },
108
+
109
+ // Letter Spacing (typography.md)
110
+ letterSpacing: {
111
+ 'tighter': '-0.025em', // -2.5% usado en Display y Heading
112
+ },
113
+
114
+ // Espaciado personalizado (alineado con Figma)
115
+ spacing: {
116
+ '1.5': '6px', // spacing/1.5
117
+ '2.5': '10px', // spacing/2.5
118
+ },
119
+
120
+ // Sombras personalizadas
121
+ boxShadow: {
122
+ 'button-inset': '0px 2px 0px 0px inset rgba(255,255,255,0.15)',
123
+ 'menu': '0px 4px 4px -1px rgba(12, 12, 13, 0.05), 0px 4px 4px -1px rgba(12, 12, 13, 0.1)',
124
+ },
125
+ },
126
+ },
127
+ plugins: [],
128
+ }