@gv-tech/design-system 2.3.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 (245) hide show
  1. package/.release-please-manifest.json +1 -1
  2. package/CHANGELOG.md +8 -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/context-menu.cjs.js +2 -0
  69. package/dist/context-menu.cjs.js.map +1 -0
  70. package/dist/context-menu.es.js +121 -0
  71. package/dist/context-menu.es.js.map +1 -0
  72. package/dist/design-system.css +1 -1
  73. package/dist/dialog.cjs.js +2 -0
  74. package/dist/dialog.cjs.js.map +1 -0
  75. package/dist/dialog.es.js +65 -0
  76. package/dist/dialog.es.js.map +1 -0
  77. package/dist/drawer.cjs.js +2 -0
  78. package/dist/drawer.cjs.js.map +1 -0
  79. package/dist/drawer.es.js +54 -0
  80. package/dist/drawer.es.js.map +1 -0
  81. package/dist/dropdown-menu.cjs.js +2 -0
  82. package/dist/dropdown-menu.cjs.js.map +1 -0
  83. package/dist/dropdown-menu.es.js +123 -0
  84. package/dist/dropdown-menu.es.js.map +1 -0
  85. package/dist/form.cjs.js +2 -0
  86. package/dist/form.cjs.js.map +1 -0
  87. package/dist/form.es.js +83 -0
  88. package/dist/form.es.js.map +1 -0
  89. package/dist/hover-card.cjs.js +2 -0
  90. package/dist/hover-card.cjs.js.map +1 -0
  91. package/dist/hover-card.es.js +23 -0
  92. package/dist/hover-card.es.js.map +1 -0
  93. package/dist/index.cjs.js +1 -7
  94. package/dist/index.cjs.js.map +1 -1
  95. package/dist/index.es.js +285 -2451
  96. package/dist/index.es.js.map +1 -1
  97. package/dist/input.cjs.js +2 -0
  98. package/dist/input.cjs.js.map +1 -0
  99. package/dist/input.es.js +22 -0
  100. package/dist/input.es.js.map +1 -0
  101. package/dist/label.cjs.js +2 -0
  102. package/dist/label.cjs.js.map +1 -0
  103. package/dist/label.es.js +9 -0
  104. package/dist/label.es.js.map +1 -0
  105. package/dist/menubar.cjs.js +2 -0
  106. package/dist/menubar.cjs.js.map +1 -0
  107. package/dist/menubar.es.js +161 -0
  108. package/dist/menubar.es.js.map +1 -0
  109. package/dist/navigation-menu.cjs.js +2 -0
  110. package/dist/navigation-menu.cjs.js.map +1 -0
  111. package/dist/navigation-menu.es.js +96 -0
  112. package/dist/navigation-menu.es.js.map +1 -0
  113. package/dist/pages/GettingStarted.d.ts.map +1 -1
  114. package/dist/pagination.cjs.js +2 -0
  115. package/dist/pagination.cjs.js.map +1 -0
  116. package/dist/pagination.es.js +60 -0
  117. package/dist/pagination.es.js.map +1 -0
  118. package/dist/popover.cjs.js +2 -0
  119. package/dist/popover.cjs.js.map +1 -0
  120. package/dist/popover.es.js +24 -0
  121. package/dist/popover.es.js.map +1 -0
  122. package/dist/progress.cjs.js +2 -0
  123. package/dist/progress.cjs.js.map +1 -0
  124. package/dist/progress.es.js +24 -0
  125. package/dist/progress.es.js.map +1 -0
  126. package/dist/radio-group.cjs.js +2 -0
  127. package/dist/radio-group.cjs.js.map +1 -0
  128. package/dist/radio-group.es.js +23 -0
  129. package/dist/radio-group.es.js.map +1 -0
  130. package/dist/registry/command.json +1 -1
  131. package/dist/registry/search.json +1 -1
  132. package/dist/registry/search.test.json +1 -1
  133. package/dist/resizable.cjs.js +2 -0
  134. package/dist/resizable.cjs.js.map +1 -0
  135. package/dist/resizable.es.js +34 -0
  136. package/dist/resizable.es.js.map +1 -0
  137. package/dist/scroll-area.cjs.js +2 -0
  138. package/dist/scroll-area.cjs.js.map +1 -0
  139. package/dist/scroll-area.es.js +30 -0
  140. package/dist/scroll-area.es.js.map +1 -0
  141. package/dist/search.cjs.js +2 -0
  142. package/dist/search.cjs.js.map +1 -0
  143. package/dist/search.es.js +60 -0
  144. package/dist/search.es.js.map +1 -0
  145. package/dist/select.cjs.js +2 -0
  146. package/dist/select.cjs.js.map +1 -0
  147. package/dist/select.es.js +100 -0
  148. package/dist/select.es.js.map +1 -0
  149. package/dist/separator.cjs.js +2 -0
  150. package/dist/separator.cjs.js.map +1 -0
  151. package/dist/separator.es.js +18 -0
  152. package/dist/separator.es.js.map +1 -0
  153. package/dist/sheet.cjs.js +2 -0
  154. package/dist/sheet.cjs.js.map +1 -0
  155. package/dist/sheet.es.js +64 -0
  156. package/dist/sheet.es.js.map +1 -0
  157. package/dist/skeleton.cjs.js +2 -0
  158. package/dist/skeleton.cjs.js.map +1 -0
  159. package/dist/skeleton.es.js +9 -0
  160. package/dist/skeleton.es.js.map +1 -0
  161. package/dist/slider.cjs.js +2 -0
  162. package/dist/slider.cjs.js.map +1 -0
  163. package/dist/slider.es.js +20 -0
  164. package/dist/slider.es.js.map +1 -0
  165. package/dist/sonner.cjs.js +2 -0
  166. package/dist/sonner.cjs.js.map +1 -0
  167. package/dist/sonner.es.js +25 -0
  168. package/dist/sonner.es.js.map +1 -0
  169. package/dist/switch.cjs.js +2 -0
  170. package/dist/switch.cjs.js.map +1 -0
  171. package/dist/switch.es.js +27 -0
  172. package/dist/switch.es.js.map +1 -0
  173. package/dist/table.cjs.js +2 -0
  174. package/dist/table.cjs.js.map +1 -0
  175. package/dist/table.es.js +70 -0
  176. package/dist/table.es.js.map +1 -0
  177. package/dist/tabs.cjs.js +2 -0
  178. package/dist/tabs.cjs.js.map +1 -0
  179. package/dist/tabs.es.js +46 -0
  180. package/dist/tabs.es.js.map +1 -0
  181. package/dist/textarea.cjs.js +2 -0
  182. package/dist/textarea.cjs.js.map +1 -0
  183. package/dist/textarea.es.js +21 -0
  184. package/dist/textarea.es.js.map +1 -0
  185. package/dist/theme/tokens.d.ts +46 -0
  186. package/dist/theme/tokens.d.ts.map +1 -1
  187. package/dist/theme-provider.cjs.js +2 -0
  188. package/dist/theme-provider.cjs.js.map +1 -0
  189. package/dist/theme-provider.es.js +9 -0
  190. package/dist/theme-provider.es.js.map +1 -0
  191. package/dist/theme-toggle-CCUkxY6o.mjs +181 -0
  192. package/dist/theme-toggle-CCUkxY6o.mjs.map +1 -0
  193. package/dist/theme-toggle-Dc_nm_32.js +2 -0
  194. package/dist/theme-toggle-Dc_nm_32.js.map +1 -0
  195. package/dist/theme-toggle.cjs.js +2 -0
  196. package/dist/theme-toggle.cjs.js.map +1 -0
  197. package/dist/theme-toggle.es.js +9 -0
  198. package/dist/theme-toggle.es.js.map +1 -0
  199. package/dist/toast.cjs.js +2 -0
  200. package/dist/toast.cjs.js.map +1 -0
  201. package/dist/toast.es.js +70 -0
  202. package/dist/toast.es.js.map +1 -0
  203. package/dist/toaster-BjPc-lId.js +2 -0
  204. package/dist/toaster-BjPc-lId.js.map +1 -0
  205. package/dist/toaster-Bk6a4gIz.mjs +120 -0
  206. package/dist/toaster-Bk6a4gIz.mjs.map +1 -0
  207. package/dist/toaster.cjs.js +2 -0
  208. package/dist/toaster.cjs.js.map +1 -0
  209. package/dist/toaster.es.js +7 -0
  210. package/dist/toaster.es.js.map +1 -0
  211. package/dist/toggle-group.cjs.js +2 -0
  212. package/dist/toggle-group.cjs.js.map +1 -0
  213. package/dist/toggle-group.es.js +33 -0
  214. package/dist/toggle-group.es.js.map +1 -0
  215. package/dist/toggle.cjs.js +2 -0
  216. package/dist/toggle.cjs.js.map +1 -0
  217. package/dist/toggle.es.js +29 -0
  218. package/dist/toggle.es.js.map +1 -0
  219. package/dist/tooltip.cjs.js +2 -0
  220. package/dist/tooltip.cjs.js.map +1 -0
  221. package/dist/tooltip.es.js +23 -0
  222. package/dist/tooltip.es.js.map +1 -0
  223. package/dist/utils-C9QGdMaH.mjs +8 -0
  224. package/dist/utils-C9QGdMaH.mjs.map +1 -0
  225. package/dist/utils-CUFNKXRW.js +2 -0
  226. package/dist/utils-CUFNKXRW.js.map +1 -0
  227. package/dist/{vendor-Bcg_ARLM.mjs → vendor-CCQzmGyD.mjs} +150 -150
  228. package/dist/{vendor-Bcg_ARLM.mjs.map → vendor-CCQzmGyD.mjs.map} +1 -1
  229. package/dist/{vendor-BrqPND3G.js → vendor-CIyDEr7H.js} +2 -2
  230. package/dist/{vendor-BrqPND3G.js.map → vendor-CIyDEr7H.js.map} +1 -1
  231. package/package.json +249 -4
  232. package/scripts/sync-exports.ts +52 -0
  233. package/scripts/sync-tokens.ts +73 -0
  234. package/scripts/{validate.js → validate.ts} +14 -8
  235. package/src/App.tsx +62 -25
  236. package/src/components/docs/ComponentShowcase.tsx +5 -5
  237. package/src/components/docs/Sidebar.tsx +3 -2
  238. package/src/components/ui/command.tsx +3 -1
  239. package/src/components/ui/search.test.tsx +2 -0
  240. package/src/components/ui/search.tsx +3 -3
  241. package/src/globals.css +22 -0
  242. package/src/pages/ColorTokensDocs.tsx +4 -4
  243. package/src/pages/GettingStarted.tsx +6 -4
  244. package/src/theme/tokens.ts +60 -38
  245. package/vite.config.ts +25 -3
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gv-tech/design-system",
3
- "version": "2.3.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)": [
@@ -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,3 +1,4 @@
1
+ import { Menu } from 'lucide-react';
1
2
  import * as React from 'react';
2
3
  import { Footer, Sidebar } from './components/docs';
3
4
  import { navItems } from './components/docs/Sidebar';
@@ -9,6 +10,7 @@ import {
9
10
  BreadcrumbPage,
10
11
  BreadcrumbSeparator,
11
12
  } from './components/ui/breadcrumb';
13
+ import { Button } from './components/ui/button';
12
14
  import { ScrollArea } from './components/ui/scroll-area';
13
15
  import {
14
16
  CommandEmpty,
@@ -19,6 +21,7 @@ import {
19
21
  Search,
20
22
  SearchTrigger,
21
23
  } from './components/ui/search';
24
+ import { Sheet, SheetContent, SheetDescription, SheetHeader, SheetTitle, SheetTrigger } from './components/ui/sheet';
22
25
  import { Toaster as SonnerToaster } from './components/ui/sonner';
23
26
  import { ThemeProvider } from './components/ui/theme-provider';
24
27
  import { ThemeToggle } from './components/ui/theme-toggle';
@@ -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) {
@@ -207,29 +211,64 @@ function App() {
207
211
  return (
208
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>
@@ -25,6 +25,7 @@ export interface NavItem {
25
25
  interface SidebarProps {
26
26
  activeItem: string;
27
27
  onItemSelect: (id: string) => void;
28
+ className?: string;
28
29
  }
29
30
 
30
31
  const categoryConfig: Record<ComponentCategory, { label: string; icon: React.ReactNode }> = {
@@ -106,7 +107,7 @@ export const navItems: NavItem[] = [
106
107
  { id: 'theme-toggle', label: 'Theme Toggle', category: 'advanced' },
107
108
  ];
108
109
 
109
- export function Sidebar({ activeItem, onItemSelect }: SidebarProps) {
110
+ export function Sidebar({ activeItem, onItemSelect, className }: SidebarProps) {
110
111
  const categories = Object.keys(categoryConfig) as ComponentCategory[];
111
112
  const [expandedCategories, setExpandedCategories] = React.useState<string[]>(['getting-started', 'forms']);
112
113
 
@@ -119,7 +120,7 @@ export function Sidebar({ activeItem, onItemSelect }: SidebarProps) {
119
120
  }, [activeItem, expandedCategories]);
120
121
 
121
122
  return (
122
- <div className="w-64 border-r bg-muted/50 flex flex-col h-full">
123
+ <div className={cn('w-64 border-r bg-muted/50 flex flex-col h-full', className)}>
123
124
  <div className="p-4 border-b">
124
125
  <h2 className="font-semibold text-lg">GV Design System</h2>
125
126
  <p className="text-xs text-muted-foreground">v{version}</p>
@@ -5,7 +5,7 @@ import { Command as CommandPrimitive } from 'cmdk';
5
5
  import { Search } from 'lucide-react';
6
6
  import * as React from 'react';
7
7
 
8
- import { Dialog, DialogContent } from '@/components/ui/dialog';
8
+ import { Dialog, DialogContent, DialogDescription, DialogTitle } from '@/components/ui/dialog';
9
9
  import { cn } from '@/lib/utils';
10
10
 
11
11
  const Command = React.forwardRef<
@@ -27,6 +27,8 @@ const CommandDialog = ({ children, ...props }: DialogProps) => {
27
27
  return (
28
28
  <Dialog {...props}>
29
29
  <DialogContent className="overflow-hidden p-0">
30
+ <DialogTitle className="sr-only">Search</DialogTitle>
31
+ <DialogDescription className="sr-only">Search for documentation and components.</DialogDescription>
30
32
  <Command className="[&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-group]]:px-2 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5">
31
33
  {children}
32
34
  </Command>