@gv-tech/design-system 2.2.0 → 2.4.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 (261) hide show
  1. package/.release-please-manifest.json +1 -1
  2. package/CHANGELOG.md +20 -0
  3. package/dist/App.d.ts +1 -2
  4. package/dist/App.d.ts.map +1 -1
  5. package/dist/accordion.cjs.js +2 -0
  6. package/dist/accordion.cjs.js.map +1 -0
  7. package/dist/accordion.es.js +38 -0
  8. package/dist/accordion.es.js.map +1 -0
  9. package/dist/alert-dialog.cjs.js +2 -0
  10. package/dist/alert-dialog.cjs.js.map +1 -0
  11. package/dist/alert-dialog.es.js +64 -0
  12. package/dist/alert-dialog.es.js.map +1 -0
  13. package/dist/alert.cjs.js +2 -0
  14. package/dist/alert.cjs.js.map +1 -0
  15. package/dist/alert.es.js +32 -0
  16. package/dist/alert.es.js.map +1 -0
  17. package/dist/aspect-ratio.cjs.js +2 -0
  18. package/dist/aspect-ratio.cjs.js.map +1 -0
  19. package/dist/aspect-ratio.es.js +6 -0
  20. package/dist/aspect-ratio.es.js.map +1 -0
  21. package/dist/avatar.cjs.js +2 -0
  22. package/dist/avatar.cjs.js.map +1 -0
  23. package/dist/avatar.es.js +29 -0
  24. package/dist/avatar.es.js.map +1 -0
  25. package/dist/badge.cjs.js +2 -0
  26. package/dist/badge.cjs.js.map +1 -0
  27. package/dist/badge.es.js +26 -0
  28. package/dist/badge.es.js.map +1 -0
  29. package/dist/breadcrumb.cjs.js +2 -0
  30. package/dist/breadcrumb.cjs.js.map +1 -0
  31. package/dist/breadcrumb.es.js +68 -0
  32. package/dist/breadcrumb.es.js.map +1 -0
  33. package/dist/button.cjs.js +2 -0
  34. package/dist/button.cjs.js.map +1 -0
  35. package/dist/button.es.js +39 -0
  36. package/dist/button.es.js.map +1 -0
  37. package/dist/calendar.cjs.js +2 -0
  38. package/dist/calendar.cjs.js.map +1 -0
  39. package/dist/calendar.es.js +132 -0
  40. package/dist/calendar.es.js.map +1 -0
  41. package/dist/card.cjs.js +2 -0
  42. package/dist/card.cjs.js.map +1 -0
  43. package/dist/card.es.js +34 -0
  44. package/dist/card.es.js.map +1 -0
  45. package/dist/carousel.cjs.js +2 -0
  46. package/dist/carousel.cjs.js.map +1 -0
  47. package/dist/carousel.es.js +158 -0
  48. package/dist/carousel.es.js.map +1 -0
  49. package/dist/chart.cjs.js +8 -0
  50. package/dist/chart.cjs.js.map +1 -0
  51. package/dist/chart.es.js +187 -0
  52. package/dist/chart.es.js.map +1 -0
  53. package/dist/checkbox.cjs.js +2 -0
  54. package/dist/checkbox.cjs.js.map +1 -0
  55. package/dist/checkbox.es.js +20 -0
  56. package/dist/checkbox.es.js.map +1 -0
  57. package/dist/collapsible.cjs.js +2 -0
  58. package/dist/collapsible.cjs.js.map +1 -0
  59. package/dist/collapsible.es.js +8 -0
  60. package/dist/collapsible.es.js.map +1 -0
  61. package/dist/command.cjs.js +2 -0
  62. package/dist/command.cjs.js.map +1 -0
  63. package/dist/command.es.js +86 -0
  64. package/dist/command.es.js.map +1 -0
  65. package/dist/components/docs/Sidebar.d.ts +2 -1
  66. package/dist/components/docs/Sidebar.d.ts.map +1 -1
  67. package/dist/components/ui/command.d.ts.map +1 -1
  68. package/dist/components/ui/theme-provider.d.ts +4 -0
  69. package/dist/components/ui/theme-provider.d.ts.map +1 -0
  70. package/dist/components/ui/theme-provider.test.d.ts +2 -0
  71. package/dist/components/ui/theme-provider.test.d.ts.map +1 -0
  72. package/dist/context-menu.cjs.js +2 -0
  73. package/dist/context-menu.cjs.js.map +1 -0
  74. package/dist/context-menu.es.js +121 -0
  75. package/dist/context-menu.es.js.map +1 -0
  76. package/dist/design-system.css +1 -1
  77. package/dist/dialog.cjs.js +2 -0
  78. package/dist/dialog.cjs.js.map +1 -0
  79. package/dist/dialog.es.js +65 -0
  80. package/dist/dialog.es.js.map +1 -0
  81. package/dist/drawer.cjs.js +2 -0
  82. package/dist/drawer.cjs.js.map +1 -0
  83. package/dist/drawer.es.js +54 -0
  84. package/dist/drawer.es.js.map +1 -0
  85. package/dist/dropdown-menu.cjs.js +2 -0
  86. package/dist/dropdown-menu.cjs.js.map +1 -0
  87. package/dist/dropdown-menu.es.js +123 -0
  88. package/dist/dropdown-menu.es.js.map +1 -0
  89. package/dist/form.cjs.js +2 -0
  90. package/dist/form.cjs.js.map +1 -0
  91. package/dist/form.es.js +83 -0
  92. package/dist/form.es.js.map +1 -0
  93. package/dist/hover-card.cjs.js +2 -0
  94. package/dist/hover-card.cjs.js.map +1 -0
  95. package/dist/hover-card.es.js +23 -0
  96. package/dist/hover-card.es.js.map +1 -0
  97. package/dist/index.cjs.js +1 -7
  98. package/dist/index.cjs.js.map +1 -1
  99. package/dist/index.d.ts +1 -0
  100. package/dist/index.d.ts.map +1 -1
  101. package/dist/index.es.js +285 -2446
  102. package/dist/index.es.js.map +1 -1
  103. package/dist/input.cjs.js +2 -0
  104. package/dist/input.cjs.js.map +1 -0
  105. package/dist/input.es.js +22 -0
  106. package/dist/input.es.js.map +1 -0
  107. package/dist/label.cjs.js +2 -0
  108. package/dist/label.cjs.js.map +1 -0
  109. package/dist/label.es.js +9 -0
  110. package/dist/label.es.js.map +1 -0
  111. package/dist/menubar.cjs.js +2 -0
  112. package/dist/menubar.cjs.js.map +1 -0
  113. package/dist/menubar.es.js +161 -0
  114. package/dist/menubar.es.js.map +1 -0
  115. package/dist/navigation-menu.cjs.js +2 -0
  116. package/dist/navigation-menu.cjs.js.map +1 -0
  117. package/dist/navigation-menu.es.js +96 -0
  118. package/dist/navigation-menu.es.js.map +1 -0
  119. package/dist/pages/GettingStarted.d.ts.map +1 -1
  120. package/dist/pages/components/ThemeToggleDocs.d.ts.map +1 -1
  121. package/dist/pagination.cjs.js +2 -0
  122. package/dist/pagination.cjs.js.map +1 -0
  123. package/dist/pagination.es.js +60 -0
  124. package/dist/pagination.es.js.map +1 -0
  125. package/dist/popover.cjs.js +2 -0
  126. package/dist/popover.cjs.js.map +1 -0
  127. package/dist/popover.es.js +24 -0
  128. package/dist/popover.es.js.map +1 -0
  129. package/dist/progress.cjs.js +2 -0
  130. package/dist/progress.cjs.js.map +1 -0
  131. package/dist/progress.es.js +24 -0
  132. package/dist/progress.es.js.map +1 -0
  133. package/dist/radio-group.cjs.js +2 -0
  134. package/dist/radio-group.cjs.js.map +1 -0
  135. package/dist/radio-group.es.js +23 -0
  136. package/dist/radio-group.es.js.map +1 -0
  137. package/dist/registry/command.json +1 -1
  138. package/dist/registry/index.json +14 -0
  139. package/dist/registry/search.json +1 -1
  140. package/dist/registry/search.test.json +1 -1
  141. package/dist/registry/theme-provider.json +13 -0
  142. package/dist/registry/theme-provider.test.json +13 -0
  143. package/dist/resizable.cjs.js +2 -0
  144. package/dist/resizable.cjs.js.map +1 -0
  145. package/dist/resizable.es.js +34 -0
  146. package/dist/resizable.es.js.map +1 -0
  147. package/dist/scroll-area.cjs.js +2 -0
  148. package/dist/scroll-area.cjs.js.map +1 -0
  149. package/dist/scroll-area.es.js +30 -0
  150. package/dist/scroll-area.es.js.map +1 -0
  151. package/dist/search.cjs.js +2 -0
  152. package/dist/search.cjs.js.map +1 -0
  153. package/dist/search.es.js +60 -0
  154. package/dist/search.es.js.map +1 -0
  155. package/dist/select.cjs.js +2 -0
  156. package/dist/select.cjs.js.map +1 -0
  157. package/dist/select.es.js +100 -0
  158. package/dist/select.es.js.map +1 -0
  159. package/dist/separator.cjs.js +2 -0
  160. package/dist/separator.cjs.js.map +1 -0
  161. package/dist/separator.es.js +18 -0
  162. package/dist/separator.es.js.map +1 -0
  163. package/dist/sheet.cjs.js +2 -0
  164. package/dist/sheet.cjs.js.map +1 -0
  165. package/dist/sheet.es.js +64 -0
  166. package/dist/sheet.es.js.map +1 -0
  167. package/dist/skeleton.cjs.js +2 -0
  168. package/dist/skeleton.cjs.js.map +1 -0
  169. package/dist/skeleton.es.js +9 -0
  170. package/dist/skeleton.es.js.map +1 -0
  171. package/dist/slider.cjs.js +2 -0
  172. package/dist/slider.cjs.js.map +1 -0
  173. package/dist/slider.es.js +20 -0
  174. package/dist/slider.es.js.map +1 -0
  175. package/dist/sonner.cjs.js +2 -0
  176. package/dist/sonner.cjs.js.map +1 -0
  177. package/dist/sonner.es.js +25 -0
  178. package/dist/sonner.es.js.map +1 -0
  179. package/dist/switch.cjs.js +2 -0
  180. package/dist/switch.cjs.js.map +1 -0
  181. package/dist/switch.es.js +27 -0
  182. package/dist/switch.es.js.map +1 -0
  183. package/dist/table.cjs.js +2 -0
  184. package/dist/table.cjs.js.map +1 -0
  185. package/dist/table.es.js +70 -0
  186. package/dist/table.es.js.map +1 -0
  187. package/dist/tabs.cjs.js +2 -0
  188. package/dist/tabs.cjs.js.map +1 -0
  189. package/dist/tabs.es.js +46 -0
  190. package/dist/tabs.es.js.map +1 -0
  191. package/dist/textarea.cjs.js +2 -0
  192. package/dist/textarea.cjs.js.map +1 -0
  193. package/dist/textarea.es.js +21 -0
  194. package/dist/textarea.es.js.map +1 -0
  195. package/dist/theme/tokens.d.ts +46 -0
  196. package/dist/theme/tokens.d.ts.map +1 -1
  197. package/dist/theme-provider.cjs.js +2 -0
  198. package/dist/theme-provider.cjs.js.map +1 -0
  199. package/dist/theme-provider.es.js +9 -0
  200. package/dist/theme-provider.es.js.map +1 -0
  201. package/dist/theme-toggle-CCUkxY6o.mjs +181 -0
  202. package/dist/theme-toggle-CCUkxY6o.mjs.map +1 -0
  203. package/dist/theme-toggle-Dc_nm_32.js +2 -0
  204. package/dist/theme-toggle-Dc_nm_32.js.map +1 -0
  205. package/dist/theme-toggle.cjs.js +2 -0
  206. package/dist/theme-toggle.cjs.js.map +1 -0
  207. package/dist/theme-toggle.es.js +9 -0
  208. package/dist/theme-toggle.es.js.map +1 -0
  209. package/dist/toast.cjs.js +2 -0
  210. package/dist/toast.cjs.js.map +1 -0
  211. package/dist/toast.es.js +70 -0
  212. package/dist/toast.es.js.map +1 -0
  213. package/dist/toaster-BjPc-lId.js +2 -0
  214. package/dist/toaster-BjPc-lId.js.map +1 -0
  215. package/dist/toaster-Bk6a4gIz.mjs +120 -0
  216. package/dist/toaster-Bk6a4gIz.mjs.map +1 -0
  217. package/dist/toaster.cjs.js +2 -0
  218. package/dist/toaster.cjs.js.map +1 -0
  219. package/dist/toaster.es.js +7 -0
  220. package/dist/toaster.es.js.map +1 -0
  221. package/dist/toggle-group.cjs.js +2 -0
  222. package/dist/toggle-group.cjs.js.map +1 -0
  223. package/dist/toggle-group.es.js +33 -0
  224. package/dist/toggle-group.es.js.map +1 -0
  225. package/dist/toggle.cjs.js +2 -0
  226. package/dist/toggle.cjs.js.map +1 -0
  227. package/dist/toggle.es.js +29 -0
  228. package/dist/toggle.es.js.map +1 -0
  229. package/dist/tooltip.cjs.js +2 -0
  230. package/dist/tooltip.cjs.js.map +1 -0
  231. package/dist/tooltip.es.js +23 -0
  232. package/dist/tooltip.es.js.map +1 -0
  233. package/dist/utils-C9QGdMaH.mjs +8 -0
  234. package/dist/utils-C9QGdMaH.mjs.map +1 -0
  235. package/dist/utils-CUFNKXRW.js +2 -0
  236. package/dist/utils-CUFNKXRW.js.map +1 -0
  237. package/dist/{vendor-BLvpSabH.mjs → vendor-CCQzmGyD.mjs} +1131 -1160
  238. package/dist/vendor-CCQzmGyD.mjs.map +1 -0
  239. package/dist/{vendor-n4WFhtJT.js → vendor-CIyDEr7H.js} +12 -12
  240. package/dist/vendor-CIyDEr7H.js.map +1 -0
  241. package/package.json +251 -5
  242. package/scripts/sync-exports.ts +52 -0
  243. package/scripts/sync-tokens.ts +73 -0
  244. package/scripts/{validate.js → validate.ts} +14 -8
  245. package/src/App.tsx +64 -27
  246. package/src/components/docs/ComponentShowcase.tsx +5 -5
  247. package/src/components/docs/Sidebar.tsx +3 -2
  248. package/src/components/ui/command.tsx +3 -1
  249. package/src/components/ui/search.test.tsx +2 -0
  250. package/src/components/ui/search.tsx +3 -3
  251. package/src/components/ui/theme-provider.test.tsx +47 -0
  252. package/src/components/ui/theme-provider.tsx +12 -0
  253. package/src/globals.css +22 -0
  254. package/src/index.ts +1 -0
  255. package/src/pages/ColorTokensDocs.tsx +4 -4
  256. package/src/pages/GettingStarted.tsx +43 -10
  257. package/src/pages/components/ThemeToggleDocs.tsx +155 -8
  258. package/src/theme/tokens.ts +60 -38
  259. package/vite.config.ts +27 -4
  260. package/dist/vendor-BLvpSabH.mjs.map +0 -1
  261. package/dist/vendor-n4WFhtJT.js.map +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gv-tech/design-system",
3
- "version": "2.2.0",
3
+ "version": "2.4.0",
4
4
  "description": "Garcia Ventures react design system",
5
5
  "repository": "git@github.com:Garcia-Ventures/gvtech-design.git",
6
6
  "license": "MIT",
@@ -17,7 +17,252 @@
17
17
  "import": "./dist/design-system.css",
18
18
  "default": "./dist/design-system.css"
19
19
  },
20
- "./package.json": "./package.json"
20
+ "./package.json": "./package.json",
21
+ "./accordion": {
22
+ "types": "./dist/components/ui/accordion.d.ts",
23
+ "import": "./dist/index.es.js",
24
+ "default": "./dist/index.es.js"
25
+ },
26
+ "./alert-dialog": {
27
+ "types": "./dist/components/ui/alert-dialog.d.ts",
28
+ "import": "./dist/index.es.js",
29
+ "default": "./dist/index.es.js"
30
+ },
31
+ "./alert": {
32
+ "types": "./dist/components/ui/alert.d.ts",
33
+ "import": "./dist/index.es.js",
34
+ "default": "./dist/index.es.js"
35
+ },
36
+ "./aspect-ratio": {
37
+ "types": "./dist/components/ui/aspect-ratio.d.ts",
38
+ "import": "./dist/index.es.js",
39
+ "default": "./dist/index.es.js"
40
+ },
41
+ "./avatar": {
42
+ "types": "./dist/components/ui/avatar.d.ts",
43
+ "import": "./dist/index.es.js",
44
+ "default": "./dist/index.es.js"
45
+ },
46
+ "./badge": {
47
+ "types": "./dist/components/ui/badge.d.ts",
48
+ "import": "./dist/index.es.js",
49
+ "default": "./dist/index.es.js"
50
+ },
51
+ "./breadcrumb": {
52
+ "types": "./dist/components/ui/breadcrumb.d.ts",
53
+ "import": "./dist/index.es.js",
54
+ "default": "./dist/index.es.js"
55
+ },
56
+ "./button": {
57
+ "types": "./dist/components/ui/button.d.ts",
58
+ "import": "./dist/index.es.js",
59
+ "default": "./dist/index.es.js"
60
+ },
61
+ "./calendar": {
62
+ "types": "./dist/components/ui/calendar.d.ts",
63
+ "import": "./dist/index.es.js",
64
+ "default": "./dist/index.es.js"
65
+ },
66
+ "./card": {
67
+ "types": "./dist/components/ui/card.d.ts",
68
+ "import": "./dist/index.es.js",
69
+ "default": "./dist/index.es.js"
70
+ },
71
+ "./carousel": {
72
+ "types": "./dist/components/ui/carousel.d.ts",
73
+ "import": "./dist/index.es.js",
74
+ "default": "./dist/index.es.js"
75
+ },
76
+ "./chart": {
77
+ "types": "./dist/components/ui/chart.d.ts",
78
+ "import": "./dist/index.es.js",
79
+ "default": "./dist/index.es.js"
80
+ },
81
+ "./checkbox": {
82
+ "types": "./dist/components/ui/checkbox.d.ts",
83
+ "import": "./dist/index.es.js",
84
+ "default": "./dist/index.es.js"
85
+ },
86
+ "./collapsible": {
87
+ "types": "./dist/components/ui/collapsible.d.ts",
88
+ "import": "./dist/index.es.js",
89
+ "default": "./dist/index.es.js"
90
+ },
91
+ "./command": {
92
+ "types": "./dist/components/ui/command.d.ts",
93
+ "import": "./dist/index.es.js",
94
+ "default": "./dist/index.es.js"
95
+ },
96
+ "./context-menu": {
97
+ "types": "./dist/components/ui/context-menu.d.ts",
98
+ "import": "./dist/index.es.js",
99
+ "default": "./dist/index.es.js"
100
+ },
101
+ "./dialog": {
102
+ "types": "./dist/components/ui/dialog.d.ts",
103
+ "import": "./dist/index.es.js",
104
+ "default": "./dist/index.es.js"
105
+ },
106
+ "./drawer": {
107
+ "types": "./dist/components/ui/drawer.d.ts",
108
+ "import": "./dist/index.es.js",
109
+ "default": "./dist/index.es.js"
110
+ },
111
+ "./dropdown-menu": {
112
+ "types": "./dist/components/ui/dropdown-menu.d.ts",
113
+ "import": "./dist/index.es.js",
114
+ "default": "./dist/index.es.js"
115
+ },
116
+ "./form": {
117
+ "types": "./dist/components/ui/form.d.ts",
118
+ "import": "./dist/index.es.js",
119
+ "default": "./dist/index.es.js"
120
+ },
121
+ "./hover-card": {
122
+ "types": "./dist/components/ui/hover-card.d.ts",
123
+ "import": "./dist/index.es.js",
124
+ "default": "./dist/index.es.js"
125
+ },
126
+ "./input": {
127
+ "types": "./dist/components/ui/input.d.ts",
128
+ "import": "./dist/index.es.js",
129
+ "default": "./dist/index.es.js"
130
+ },
131
+ "./label": {
132
+ "types": "./dist/components/ui/label.d.ts",
133
+ "import": "./dist/index.es.js",
134
+ "default": "./dist/index.es.js"
135
+ },
136
+ "./menubar": {
137
+ "types": "./dist/components/ui/menubar.d.ts",
138
+ "import": "./dist/index.es.js",
139
+ "default": "./dist/index.es.js"
140
+ },
141
+ "./navigation-menu": {
142
+ "types": "./dist/components/ui/navigation-menu.d.ts",
143
+ "import": "./dist/index.es.js",
144
+ "default": "./dist/index.es.js"
145
+ },
146
+ "./pagination": {
147
+ "types": "./dist/components/ui/pagination.d.ts",
148
+ "import": "./dist/index.es.js",
149
+ "default": "./dist/index.es.js"
150
+ },
151
+ "./popover": {
152
+ "types": "./dist/components/ui/popover.d.ts",
153
+ "import": "./dist/index.es.js",
154
+ "default": "./dist/index.es.js"
155
+ },
156
+ "./progress": {
157
+ "types": "./dist/components/ui/progress.d.ts",
158
+ "import": "./dist/index.es.js",
159
+ "default": "./dist/index.es.js"
160
+ },
161
+ "./radio-group": {
162
+ "types": "./dist/components/ui/radio-group.d.ts",
163
+ "import": "./dist/index.es.js",
164
+ "default": "./dist/index.es.js"
165
+ },
166
+ "./resizable": {
167
+ "types": "./dist/components/ui/resizable.d.ts",
168
+ "import": "./dist/index.es.js",
169
+ "default": "./dist/index.es.js"
170
+ },
171
+ "./scroll-area": {
172
+ "types": "./dist/components/ui/scroll-area.d.ts",
173
+ "import": "./dist/index.es.js",
174
+ "default": "./dist/index.es.js"
175
+ },
176
+ "./search": {
177
+ "types": "./dist/components/ui/search.d.ts",
178
+ "import": "./dist/index.es.js",
179
+ "default": "./dist/index.es.js"
180
+ },
181
+ "./select": {
182
+ "types": "./dist/components/ui/select.d.ts",
183
+ "import": "./dist/index.es.js",
184
+ "default": "./dist/index.es.js"
185
+ },
186
+ "./separator": {
187
+ "types": "./dist/components/ui/separator.d.ts",
188
+ "import": "./dist/index.es.js",
189
+ "default": "./dist/index.es.js"
190
+ },
191
+ "./sheet": {
192
+ "types": "./dist/components/ui/sheet.d.ts",
193
+ "import": "./dist/index.es.js",
194
+ "default": "./dist/index.es.js"
195
+ },
196
+ "./skeleton": {
197
+ "types": "./dist/components/ui/skeleton.d.ts",
198
+ "import": "./dist/index.es.js",
199
+ "default": "./dist/index.es.js"
200
+ },
201
+ "./slider": {
202
+ "types": "./dist/components/ui/slider.d.ts",
203
+ "import": "./dist/index.es.js",
204
+ "default": "./dist/index.es.js"
205
+ },
206
+ "./sonner": {
207
+ "types": "./dist/components/ui/sonner.d.ts",
208
+ "import": "./dist/index.es.js",
209
+ "default": "./dist/index.es.js"
210
+ },
211
+ "./switch": {
212
+ "types": "./dist/components/ui/switch.d.ts",
213
+ "import": "./dist/index.es.js",
214
+ "default": "./dist/index.es.js"
215
+ },
216
+ "./table": {
217
+ "types": "./dist/components/ui/table.d.ts",
218
+ "import": "./dist/index.es.js",
219
+ "default": "./dist/index.es.js"
220
+ },
221
+ "./tabs": {
222
+ "types": "./dist/components/ui/tabs.d.ts",
223
+ "import": "./dist/index.es.js",
224
+ "default": "./dist/index.es.js"
225
+ },
226
+ "./textarea": {
227
+ "types": "./dist/components/ui/textarea.d.ts",
228
+ "import": "./dist/index.es.js",
229
+ "default": "./dist/index.es.js"
230
+ },
231
+ "./theme-provider": {
232
+ "types": "./dist/components/ui/theme-provider.d.ts",
233
+ "import": "./dist/index.es.js",
234
+ "default": "./dist/index.es.js"
235
+ },
236
+ "./theme-toggle": {
237
+ "types": "./dist/components/ui/theme-toggle.d.ts",
238
+ "import": "./dist/index.es.js",
239
+ "default": "./dist/index.es.js"
240
+ },
241
+ "./toast": {
242
+ "types": "./dist/components/ui/toast.d.ts",
243
+ "import": "./dist/index.es.js",
244
+ "default": "./dist/index.es.js"
245
+ },
246
+ "./toaster": {
247
+ "types": "./dist/components/ui/toaster.d.ts",
248
+ "import": "./dist/index.es.js",
249
+ "default": "./dist/index.es.js"
250
+ },
251
+ "./toggle-group": {
252
+ "types": "./dist/components/ui/toggle-group.d.ts",
253
+ "import": "./dist/index.es.js",
254
+ "default": "./dist/index.es.js"
255
+ },
256
+ "./toggle": {
257
+ "types": "./dist/components/ui/toggle.d.ts",
258
+ "import": "./dist/index.es.js",
259
+ "default": "./dist/index.es.js"
260
+ },
261
+ "./tooltip": {
262
+ "types": "./dist/components/ui/tooltip.d.ts",
263
+ "import": "./dist/index.es.js",
264
+ "default": "./dist/index.es.js"
265
+ }
21
266
  },
22
267
  "main": "dist/index.cjs.js",
23
268
  "module": "dist/index.es.js",
@@ -39,8 +284,8 @@
39
284
  "test": "vitest",
40
285
  "test:ci": "CI=true vitest --run --reporter=dot",
41
286
  "test:watch": "vitest --watch",
42
- "validate": "node ./scripts/validate.js",
43
- "validate:fix": "node ./scripts/validate.js --fix"
287
+ "validate": "tsx ./scripts/validate.ts",
288
+ "validate:fix": "tsx ./scripts/validate.ts --fix"
44
289
  },
45
290
  "lint-staged": {
46
291
  "*.(js|ts|mjs|cjs)?(x)": [
@@ -99,7 +344,6 @@
99
344
  "date-fns": "^4.1.0",
100
345
  "embla-carousel-react": "^8.6.0",
101
346
  "lucide-react": "^0.563.0",
102
- "next-themes": "^0.4.6",
103
347
  "react-day-picker": "^9.13.2",
104
348
  "react-hook-form": "^7.71.1",
105
349
  "react-icons": "^5.5.0",
@@ -131,6 +375,7 @@
131
375
  "husky": "^9.1.7",
132
376
  "jsdom": "^27.4.0",
133
377
  "lint-staged": "^16.2.7",
378
+ "next-themes": "^0.4.6",
134
379
  "postcss": "^8.5.6",
135
380
  "prettier": "^3.8.1",
136
381
  "prettier-plugin-organize-imports": "^4.3.0",
@@ -145,6 +390,7 @@
145
390
  "vitest": "^4.0.18"
146
391
  },
147
392
  "peerDependencies": {
393
+ "next-themes": "^0.4.0",
148
394
  "prop-types": "^15.8.0",
149
395
  "react": "^18 || ^19",
150
396
  "react-dom": "^18 || ^19",
@@ -0,0 +1,52 @@
1
+ import fs from 'fs';
2
+ import path from 'path';
3
+
4
+ const PACKAGE_JSON_PATH = path.join(process.cwd(), 'package.json');
5
+ const COMPONENTS_UI_PATH = path.join(process.cwd(), 'src/components/ui');
6
+
7
+ function syncExports() {
8
+ try {
9
+ const packageJson = JSON.parse(fs.readFileSync(PACKAGE_JSON_PATH, 'utf8'));
10
+ const components = fs
11
+ .readdirSync(COMPONENTS_UI_PATH)
12
+ .filter((file) => file.endsWith('.tsx') && !file.includes('.test.') && !file.includes('.stories.'));
13
+
14
+ // Base exports that should always be present
15
+ const newExports: Record<string, unknown> = {
16
+ '.': {
17
+ types: './dist/index.d.ts',
18
+ import: './dist/index.es.js',
19
+ require: './dist/index.cjs.js',
20
+ default: './dist/index.es.js',
21
+ },
22
+ './style.css': {
23
+ style: './dist/design-system.css',
24
+ import: './dist/design-system.css',
25
+ default: './dist/design-system.css',
26
+ },
27
+ './package.json': './package.json',
28
+ };
29
+
30
+ // Add component exports
31
+ // Note: We assume the build flattens or maintains structure based on Vite config
32
+ // For now, we'll map them to where they will be in dist
33
+ components.sort().forEach((file) => {
34
+ const name = path.basename(file, '.tsx');
35
+ newExports[`./${name}`] = {
36
+ types: `./dist/components/ui/${name}.d.ts`,
37
+ import: `./dist/index.es.js`, // Temporary: default to main bundle if not individual build
38
+ default: `./dist/index.es.js`,
39
+ };
40
+ });
41
+
42
+ packageJson.exports = newExports;
43
+
44
+ fs.writeFileSync(PACKAGE_JSON_PATH, JSON.stringify(packageJson, null, 2) + '\n');
45
+ console.log(`✅ package.json exports synchronized with ${components.length} components`);
46
+ } catch (error) {
47
+ console.error('❌ Error synchronizing exports:', error);
48
+ process.exit(1);
49
+ }
50
+ }
51
+
52
+ syncExports();
@@ -0,0 +1,73 @@
1
+ import fs from 'fs';
2
+ import path from 'path';
3
+ // We use a dynamic import or relative require because we are running with tsx
4
+ // and want to avoid complex tsconfig path issues for a simple script.
5
+ import { palette, theme } from '../src/theme/tokens';
6
+
7
+ const GLOBALS_CSS_PATH = path.join(process.cwd(), 'src/globals.css');
8
+
9
+ /** Strips hsl() wrapper and commas to match Tailwind/shadcn expectation of "H S L" */
10
+ function formatTokenValue(value: string) {
11
+ if (value.includes('hsl')) {
12
+ return value.replace(/hsl\((.*)\)/, '$1').replace(/,/g, '');
13
+ }
14
+ return value;
15
+ }
16
+
17
+ /** Converts camelCase to kebab-case */
18
+ function toKebabCase(str: string) {
19
+ return str.replace(/([A-Z])/g, '-$1').toLowerCase();
20
+ }
21
+
22
+ function generateCssVariables() {
23
+ let css = ' :root {\n';
24
+
25
+ // Light theme
26
+ for (const [key, value] of Object.entries(theme.light)) {
27
+ const cssVarName = `--${toKebabCase(key)}`;
28
+ css += ` ${cssVarName}: ${formatTokenValue(value as string)};\n`;
29
+ }
30
+
31
+ css += '\n /* Brand Tokens */\n';
32
+ for (const [category, tokens] of Object.entries(palette)) {
33
+ for (const [key, value] of Object.entries(tokens)) {
34
+ const cssVarName = `--${toKebabCase(category)}-${toKebabCase(key)}`;
35
+ css += ` ${cssVarName}: ${formatTokenValue(value as string)};\n`;
36
+ }
37
+ }
38
+
39
+ css += ' }\n\n .dark {\n';
40
+
41
+ // Dark theme
42
+ for (const [key, value] of Object.entries(theme.dark)) {
43
+ const cssVarName = `--${toKebabCase(key)}`;
44
+ css += ` ${cssVarName}: ${formatTokenValue(value as string)};\n`;
45
+ }
46
+
47
+ css += ' }';
48
+ return css;
49
+ }
50
+
51
+ function syncTokens() {
52
+ try {
53
+ const globalsContent = fs.readFileSync(GLOBALS_CSS_PATH, 'utf8');
54
+ const variables = generateCssVariables();
55
+
56
+ const tokenRegex = /\/\* @tokens-start \*\/[\s\S]*\/\* @tokens-end \*\//;
57
+
58
+ if (!tokenRegex.test(globalsContent)) {
59
+ console.error('❌ Error: Could not find @tokens markers in src/globals.css');
60
+ process.exit(1);
61
+ }
62
+
63
+ const updatedContent = globalsContent.replace(tokenRegex, `/* @tokens-start */\n${variables}\n /* @tokens-end */`);
64
+
65
+ fs.writeFileSync(GLOBALS_CSS_PATH, updatedContent);
66
+ console.log('✅ Tokens synchronized successfully');
67
+ } catch (error) {
68
+ console.error('❌ Error synchronizing tokens:', error);
69
+ process.exit(1);
70
+ }
71
+ }
72
+
73
+ syncTokens();
@@ -1,11 +1,17 @@
1
- #!/usr/bin/env node
2
-
3
- const { spawnSync } = require('child_process');
1
+ import { spawnSync } from 'child_process';
4
2
 
5
3
  const args = process.argv.slice(2);
6
4
  const fix = args.includes('--fix');
7
5
 
8
6
  const steps = [
7
+ {
8
+ name: 'Sync Tokens',
9
+ cmd: 'yarn tsx scripts/sync-tokens.ts',
10
+ },
11
+ {
12
+ name: 'Sync Exports',
13
+ cmd: 'yarn tsx scripts/sync-exports.ts',
14
+ },
9
15
  {
10
16
  name: fix ? 'Prettier fix' : 'Prettier check',
11
17
  cmd: fix ? 'yarn format' : 'yarn format:ci',
@@ -14,15 +20,15 @@ const steps = [
14
20
  name: fix ? 'Lint fix (eslint)' : 'Lint (eslint)',
15
21
  cmd: fix ? 'yarn lint:fix' : 'yarn lint',
16
22
  },
17
- { name: 'TypeScript type check', cmd: 'npx tsc --noEmit' },
23
+ { name: 'TypeScript type check', cmd: 'yarn tsc --noEmit' },
18
24
  { name: 'Test (vitest)', cmd: 'yarn test:ci' },
19
25
  { name: 'Build (vite)', cmd: 'yarn build' },
20
26
  ];
21
27
 
22
28
  const SEP = '------------------------------------------------------------';
23
- const green = (s) => `\x1b[32m${s}\x1b[0m`;
24
- const red = (s) => `\x1b[31m${s}\x1b[0m`;
25
- const yellow = (s) => `\x1b[33m${s}\x1b[0m`;
29
+ const green = (s: string) => `\x1b[32m${s}\x1b[0m`;
30
+ const red = (s: string) => `\x1b[31m${s}\x1b[0m`;
31
+ const yellow = (s: string) => `\x1b[33m${s}\x1b[0m`;
26
32
 
27
33
  console.log(SEP);
28
34
  console.log('\x1b[1mRunning validate steps (sequential)\x1b[0m');
@@ -36,7 +42,7 @@ for (const step of steps) {
36
42
 
37
43
  if (result.error) {
38
44
  console.error(red(`\nFailed to run: ${step.cmd}`));
39
- console.error(red(result.error));
45
+ console.error(red(result.error.message));
40
46
  process.exit(1);
41
47
  }
42
48
 
package/src/App.tsx CHANGED
@@ -1,4 +1,4 @@
1
- import { ThemeProvider } from 'next-themes';
1
+ import { Menu } from 'lucide-react';
2
2
  import * as React from 'react';
3
3
  import { Footer, Sidebar } from './components/docs';
4
4
  import { navItems } from './components/docs/Sidebar';
@@ -10,6 +10,7 @@ import {
10
10
  BreadcrumbPage,
11
11
  BreadcrumbSeparator,
12
12
  } from './components/ui/breadcrumb';
13
+ import { Button } from './components/ui/button';
13
14
  import { ScrollArea } from './components/ui/scroll-area';
14
15
  import {
15
16
  CommandEmpty,
@@ -20,7 +21,9 @@ import {
20
21
  Search,
21
22
  SearchTrigger,
22
23
  } from './components/ui/search';
24
+ import { Sheet, SheetContent, SheetDescription, SheetHeader, SheetTitle, SheetTrigger } from './components/ui/sheet';
23
25
  import { Toaster as SonnerToaster } from './components/ui/sonner';
26
+ import { ThemeProvider } from './components/ui/theme-provider';
24
27
  import { ThemeToggle } from './components/ui/theme-toggle';
25
28
  import { Toaster } from './components/ui/toaster';
26
29
  import { TooltipProvider } from './components/ui/tooltip';
@@ -77,9 +80,10 @@ import {
77
80
  TooltipDocs,
78
81
  } from './pages';
79
82
 
80
- function App() {
83
+ export default function App() {
81
84
  const [activeItem, setActiveItem] = React.useState('getting-started');
82
85
  const [searchOpen, setSearchOpen] = React.useState(false);
86
+ const [isSidebarOpen, setIsSidebarOpen] = React.useState(false);
83
87
 
84
88
  const renderContent = () => {
85
89
  switch (activeItem) {
@@ -205,31 +209,66 @@ function App() {
205
209
  };
206
210
 
207
211
  return (
208
- <ThemeProvider attribute="class" defaultTheme="system" enableSystem>
212
+ <ThemeProvider>
209
213
  <TooltipProvider>
210
- <div className="flex h-screen bg-background">
211
- {/* Sidebar */}
212
- <Sidebar activeItem={activeItem} onItemSelect={setActiveItem} />
214
+ <div className="flex h-screen bg-background overflow-hidden">
215
+ {/* Desktop Sidebar */}
216
+ <div className="hidden lg:flex h-full shrink-0">
217
+ <Sidebar activeItem={activeItem} onItemSelect={setActiveItem} />
218
+ </div>
213
219
 
214
220
  {/* Main Content */}
215
- <div className="flex-1 flex flex-col overflow-hidden">
221
+ <div className="flex-1 flex flex-col min-w-0 overflow-hidden">
216
222
  {/* Header */}
217
- <header className="h-14 border-b flex items-center justify-between px-6 shrink-0 bg-background/50 backdrop-blur-sm sticky top-0 z-10">
218
- <Breadcrumb>
219
- <BreadcrumbList>
220
- <BreadcrumbItem>
221
- <BreadcrumbLink onClick={() => setActiveItem('getting-started')} className="cursor-pointer">
222
- Components
223
- </BreadcrumbLink>
224
- </BreadcrumbItem>
225
- <BreadcrumbSeparator />
226
- <BreadcrumbItem>
227
- <BreadcrumbPage>
228
- {navItems.find((i) => i.id === activeItem)?.label || 'Introduction'}
229
- </BreadcrumbPage>
230
- </BreadcrumbItem>
231
- </BreadcrumbList>
232
- </Breadcrumb>
223
+ <header className="h-14 border-b flex items-center justify-between px-4 md:px-6 shrink-0 bg-background/50 backdrop-blur-sm sticky top-0 z-10 gap-4">
224
+ <div className="flex items-center gap-2 min-w-0">
225
+ {/* Mobile Menu Toggle */}
226
+ <Sheet open={isSidebarOpen} onOpenChange={setIsSidebarOpen}>
227
+ <SheetTrigger asChild>
228
+ <Button variant="ghost" size="icon" className="lg:hidden shrink-0">
229
+ <Menu className="h-5 w-5" />
230
+ <span className="sr-only">Toggle menu</span>
231
+ </Button>
232
+ </SheetTrigger>
233
+ <SheetContent side="left" className="p-0 w-72">
234
+ <SheetHeader className="sr-only">
235
+ <SheetTitle>Navigation Menu</SheetTitle>
236
+ <SheetDescription>
237
+ Explore the components and documentation for GV Tech Design System.
238
+ </SheetDescription>
239
+ </SheetHeader>
240
+ <Sidebar
241
+ activeItem={activeItem}
242
+ onItemSelect={(id) => {
243
+ setActiveItem(id);
244
+ setIsSidebarOpen(false);
245
+ }}
246
+ className="w-full border-none"
247
+ />
248
+ </SheetContent>
249
+ </Sheet>
250
+
251
+ <Breadcrumb className="hidden md:flex min-w-0">
252
+ <BreadcrumbList>
253
+ <BreadcrumbItem>
254
+ <BreadcrumbLink onClick={() => setActiveItem('getting-started')} className="cursor-pointer">
255
+ Components
256
+ </BreadcrumbLink>
257
+ </BreadcrumbItem>
258
+ <BreadcrumbSeparator />
259
+ <BreadcrumbItem>
260
+ <BreadcrumbPage>
261
+ {navItems.find((i) => i.id === activeItem)?.label || 'Introduction'}
262
+ </BreadcrumbPage>
263
+ </BreadcrumbItem>
264
+ </BreadcrumbList>
265
+ </Breadcrumb>
266
+
267
+ {/* Mobile Breadcrumb (simplified) */}
268
+ <div className="md:hidden font-medium truncate">
269
+ {navItems.find((i) => i.id === activeItem)?.label || 'Introduction'}
270
+ </div>
271
+ </div>
233
272
  <div className="flex items-center gap-2">
234
273
  <Search open={searchOpen} onOpenChange={setSearchOpen}>
235
274
  <CommandInput placeholder="Type a command or search..." />
@@ -250,7 +289,7 @@ function App() {
250
289
  </CommandGroup>
251
290
  </CommandList>
252
291
  </Search>
253
- <SearchTrigger onClick={() => setSearchOpen(true)} />
292
+ <SearchTrigger onClick={() => setSearchOpen(true)} variant="compact" className="md:w-40 lg:w-64" />
254
293
  <ThemeToggle variant="ternary" />
255
294
  </div>
256
295
  </header>
@@ -258,7 +297,7 @@ function App() {
258
297
  {/* Content Area */}
259
298
  <ScrollArea className="flex-1 [&>[data-radix-scroll-area-viewport]]:h-full">
260
299
  <div className="flex-1 flex flex-col min-h-full">
261
- <main className="flex-1 p-8 max-w-4xl">{renderContent()}</main>
300
+ <main className="flex-1 p-4 md:p-8 w-full max-w-4xl mx-auto">{renderContent()}</main>
262
301
  <Footer />
263
302
  </div>
264
303
  </ScrollArea>
@@ -270,5 +309,3 @@ function App() {
270
309
  </ThemeProvider>
271
310
  );
272
311
  }
273
-
274
- export default App;
@@ -21,7 +21,7 @@ export function ComponentShowcase({ title, description, code, children, classNam
21
21
  </CardHeader>
22
22
  <CardContent className="p-0">
23
23
  <Tabs defaultValue="preview" className="w-full">
24
- <div className="border-b px-6">
24
+ <div className="border-b px-4 md:px-6">
25
25
  <TabsList className="h-10 bg-transparent p-0">
26
26
  <TabsTrigger
27
27
  value="preview"
@@ -37,8 +37,8 @@ export function ComponentShowcase({ title, description, code, children, classNam
37
37
  </TabsTrigger>
38
38
  </TabsList>
39
39
  </div>
40
- <TabsContent value="preview" className="p-6 mt-0">
41
- <div className="flex flex-wrap gap-4 items-center">{children}</div>
40
+ <TabsContent value="preview" className="p-4 md:p-6 mt-0">
41
+ <div className="flex flex-wrap gap-4 items-center overflow-x-auto">{children}</div>
42
42
  </TabsContent>
43
43
  <TabsContent value="code" className="mt-0">
44
44
  <CodeBlock code={code} className="rounded-none border-0" />
@@ -59,8 +59,8 @@ export function ComponentSection({ title, description, children }: ComponentSect
59
59
  return (
60
60
  <div className="space-y-6">
61
61
  <div className="space-y-2">
62
- <h1 className="text-3xl font-bold tracking-tight">{title}</h1>
63
- {description && <p className="text-lg text-muted-foreground">{description}</p>}
62
+ <h1 className="text-2xl md:text-3xl font-bold tracking-tight">{title}</h1>
63
+ {description && <p className="text-base md:text-lg text-muted-foreground">{description}</p>}
64
64
  </div>
65
65
  <div className="space-y-6">{children}</div>
66
66
  </div>