@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.
- package/.release-please-manifest.json +1 -1
- package/CHANGELOG.md +8 -0
- package/dist/App.d.ts +1 -2
- package/dist/App.d.ts.map +1 -1
- package/dist/accordion.cjs.js +2 -0
- package/dist/accordion.cjs.js.map +1 -0
- package/dist/accordion.es.js +38 -0
- package/dist/accordion.es.js.map +1 -0
- package/dist/alert-dialog.cjs.js +2 -0
- package/dist/alert-dialog.cjs.js.map +1 -0
- package/dist/alert-dialog.es.js +64 -0
- package/dist/alert-dialog.es.js.map +1 -0
- package/dist/alert.cjs.js +2 -0
- package/dist/alert.cjs.js.map +1 -0
- package/dist/alert.es.js +32 -0
- package/dist/alert.es.js.map +1 -0
- package/dist/aspect-ratio.cjs.js +2 -0
- package/dist/aspect-ratio.cjs.js.map +1 -0
- package/dist/aspect-ratio.es.js +6 -0
- package/dist/aspect-ratio.es.js.map +1 -0
- package/dist/avatar.cjs.js +2 -0
- package/dist/avatar.cjs.js.map +1 -0
- package/dist/avatar.es.js +29 -0
- package/dist/avatar.es.js.map +1 -0
- package/dist/badge.cjs.js +2 -0
- package/dist/badge.cjs.js.map +1 -0
- package/dist/badge.es.js +26 -0
- package/dist/badge.es.js.map +1 -0
- package/dist/breadcrumb.cjs.js +2 -0
- package/dist/breadcrumb.cjs.js.map +1 -0
- package/dist/breadcrumb.es.js +68 -0
- package/dist/breadcrumb.es.js.map +1 -0
- package/dist/button.cjs.js +2 -0
- package/dist/button.cjs.js.map +1 -0
- package/dist/button.es.js +39 -0
- package/dist/button.es.js.map +1 -0
- package/dist/calendar.cjs.js +2 -0
- package/dist/calendar.cjs.js.map +1 -0
- package/dist/calendar.es.js +132 -0
- package/dist/calendar.es.js.map +1 -0
- package/dist/card.cjs.js +2 -0
- package/dist/card.cjs.js.map +1 -0
- package/dist/card.es.js +34 -0
- package/dist/card.es.js.map +1 -0
- package/dist/carousel.cjs.js +2 -0
- package/dist/carousel.cjs.js.map +1 -0
- package/dist/carousel.es.js +158 -0
- package/dist/carousel.es.js.map +1 -0
- package/dist/chart.cjs.js +8 -0
- package/dist/chart.cjs.js.map +1 -0
- package/dist/chart.es.js +187 -0
- package/dist/chart.es.js.map +1 -0
- package/dist/checkbox.cjs.js +2 -0
- package/dist/checkbox.cjs.js.map +1 -0
- package/dist/checkbox.es.js +20 -0
- package/dist/checkbox.es.js.map +1 -0
- package/dist/collapsible.cjs.js +2 -0
- package/dist/collapsible.cjs.js.map +1 -0
- package/dist/collapsible.es.js +8 -0
- package/dist/collapsible.es.js.map +1 -0
- package/dist/command.cjs.js +2 -0
- package/dist/command.cjs.js.map +1 -0
- package/dist/command.es.js +86 -0
- package/dist/command.es.js.map +1 -0
- package/dist/components/docs/Sidebar.d.ts +2 -1
- package/dist/components/docs/Sidebar.d.ts.map +1 -1
- package/dist/components/ui/command.d.ts.map +1 -1
- package/dist/context-menu.cjs.js +2 -0
- package/dist/context-menu.cjs.js.map +1 -0
- package/dist/context-menu.es.js +121 -0
- package/dist/context-menu.es.js.map +1 -0
- package/dist/design-system.css +1 -1
- package/dist/dialog.cjs.js +2 -0
- package/dist/dialog.cjs.js.map +1 -0
- package/dist/dialog.es.js +65 -0
- package/dist/dialog.es.js.map +1 -0
- package/dist/drawer.cjs.js +2 -0
- package/dist/drawer.cjs.js.map +1 -0
- package/dist/drawer.es.js +54 -0
- package/dist/drawer.es.js.map +1 -0
- package/dist/dropdown-menu.cjs.js +2 -0
- package/dist/dropdown-menu.cjs.js.map +1 -0
- package/dist/dropdown-menu.es.js +123 -0
- package/dist/dropdown-menu.es.js.map +1 -0
- package/dist/form.cjs.js +2 -0
- package/dist/form.cjs.js.map +1 -0
- package/dist/form.es.js +83 -0
- package/dist/form.es.js.map +1 -0
- package/dist/hover-card.cjs.js +2 -0
- package/dist/hover-card.cjs.js.map +1 -0
- package/dist/hover-card.es.js +23 -0
- package/dist/hover-card.es.js.map +1 -0
- package/dist/index.cjs.js +1 -7
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.es.js +285 -2451
- package/dist/index.es.js.map +1 -1
- package/dist/input.cjs.js +2 -0
- package/dist/input.cjs.js.map +1 -0
- package/dist/input.es.js +22 -0
- package/dist/input.es.js.map +1 -0
- package/dist/label.cjs.js +2 -0
- package/dist/label.cjs.js.map +1 -0
- package/dist/label.es.js +9 -0
- package/dist/label.es.js.map +1 -0
- package/dist/menubar.cjs.js +2 -0
- package/dist/menubar.cjs.js.map +1 -0
- package/dist/menubar.es.js +161 -0
- package/dist/menubar.es.js.map +1 -0
- package/dist/navigation-menu.cjs.js +2 -0
- package/dist/navigation-menu.cjs.js.map +1 -0
- package/dist/navigation-menu.es.js +96 -0
- package/dist/navigation-menu.es.js.map +1 -0
- package/dist/pages/GettingStarted.d.ts.map +1 -1
- package/dist/pagination.cjs.js +2 -0
- package/dist/pagination.cjs.js.map +1 -0
- package/dist/pagination.es.js +60 -0
- package/dist/pagination.es.js.map +1 -0
- package/dist/popover.cjs.js +2 -0
- package/dist/popover.cjs.js.map +1 -0
- package/dist/popover.es.js +24 -0
- package/dist/popover.es.js.map +1 -0
- package/dist/progress.cjs.js +2 -0
- package/dist/progress.cjs.js.map +1 -0
- package/dist/progress.es.js +24 -0
- package/dist/progress.es.js.map +1 -0
- package/dist/radio-group.cjs.js +2 -0
- package/dist/radio-group.cjs.js.map +1 -0
- package/dist/radio-group.es.js +23 -0
- package/dist/radio-group.es.js.map +1 -0
- package/dist/registry/command.json +1 -1
- package/dist/registry/search.json +1 -1
- package/dist/registry/search.test.json +1 -1
- package/dist/resizable.cjs.js +2 -0
- package/dist/resizable.cjs.js.map +1 -0
- package/dist/resizable.es.js +34 -0
- package/dist/resizable.es.js.map +1 -0
- package/dist/scroll-area.cjs.js +2 -0
- package/dist/scroll-area.cjs.js.map +1 -0
- package/dist/scroll-area.es.js +30 -0
- package/dist/scroll-area.es.js.map +1 -0
- package/dist/search.cjs.js +2 -0
- package/dist/search.cjs.js.map +1 -0
- package/dist/search.es.js +60 -0
- package/dist/search.es.js.map +1 -0
- package/dist/select.cjs.js +2 -0
- package/dist/select.cjs.js.map +1 -0
- package/dist/select.es.js +100 -0
- package/dist/select.es.js.map +1 -0
- package/dist/separator.cjs.js +2 -0
- package/dist/separator.cjs.js.map +1 -0
- package/dist/separator.es.js +18 -0
- package/dist/separator.es.js.map +1 -0
- package/dist/sheet.cjs.js +2 -0
- package/dist/sheet.cjs.js.map +1 -0
- package/dist/sheet.es.js +64 -0
- package/dist/sheet.es.js.map +1 -0
- package/dist/skeleton.cjs.js +2 -0
- package/dist/skeleton.cjs.js.map +1 -0
- package/dist/skeleton.es.js +9 -0
- package/dist/skeleton.es.js.map +1 -0
- package/dist/slider.cjs.js +2 -0
- package/dist/slider.cjs.js.map +1 -0
- package/dist/slider.es.js +20 -0
- package/dist/slider.es.js.map +1 -0
- package/dist/sonner.cjs.js +2 -0
- package/dist/sonner.cjs.js.map +1 -0
- package/dist/sonner.es.js +25 -0
- package/dist/sonner.es.js.map +1 -0
- package/dist/switch.cjs.js +2 -0
- package/dist/switch.cjs.js.map +1 -0
- package/dist/switch.es.js +27 -0
- package/dist/switch.es.js.map +1 -0
- package/dist/table.cjs.js +2 -0
- package/dist/table.cjs.js.map +1 -0
- package/dist/table.es.js +70 -0
- package/dist/table.es.js.map +1 -0
- package/dist/tabs.cjs.js +2 -0
- package/dist/tabs.cjs.js.map +1 -0
- package/dist/tabs.es.js +46 -0
- package/dist/tabs.es.js.map +1 -0
- package/dist/textarea.cjs.js +2 -0
- package/dist/textarea.cjs.js.map +1 -0
- package/dist/textarea.es.js +21 -0
- package/dist/textarea.es.js.map +1 -0
- package/dist/theme/tokens.d.ts +46 -0
- package/dist/theme/tokens.d.ts.map +1 -1
- package/dist/theme-provider.cjs.js +2 -0
- package/dist/theme-provider.cjs.js.map +1 -0
- package/dist/theme-provider.es.js +9 -0
- package/dist/theme-provider.es.js.map +1 -0
- package/dist/theme-toggle-CCUkxY6o.mjs +181 -0
- package/dist/theme-toggle-CCUkxY6o.mjs.map +1 -0
- package/dist/theme-toggle-Dc_nm_32.js +2 -0
- package/dist/theme-toggle-Dc_nm_32.js.map +1 -0
- package/dist/theme-toggle.cjs.js +2 -0
- package/dist/theme-toggle.cjs.js.map +1 -0
- package/dist/theme-toggle.es.js +9 -0
- package/dist/theme-toggle.es.js.map +1 -0
- package/dist/toast.cjs.js +2 -0
- package/dist/toast.cjs.js.map +1 -0
- package/dist/toast.es.js +70 -0
- package/dist/toast.es.js.map +1 -0
- package/dist/toaster-BjPc-lId.js +2 -0
- package/dist/toaster-BjPc-lId.js.map +1 -0
- package/dist/toaster-Bk6a4gIz.mjs +120 -0
- package/dist/toaster-Bk6a4gIz.mjs.map +1 -0
- package/dist/toaster.cjs.js +2 -0
- package/dist/toaster.cjs.js.map +1 -0
- package/dist/toaster.es.js +7 -0
- package/dist/toaster.es.js.map +1 -0
- package/dist/toggle-group.cjs.js +2 -0
- package/dist/toggle-group.cjs.js.map +1 -0
- package/dist/toggle-group.es.js +33 -0
- package/dist/toggle-group.es.js.map +1 -0
- package/dist/toggle.cjs.js +2 -0
- package/dist/toggle.cjs.js.map +1 -0
- package/dist/toggle.es.js +29 -0
- package/dist/toggle.es.js.map +1 -0
- package/dist/tooltip.cjs.js +2 -0
- package/dist/tooltip.cjs.js.map +1 -0
- package/dist/tooltip.es.js +23 -0
- package/dist/tooltip.es.js.map +1 -0
- package/dist/utils-C9QGdMaH.mjs +8 -0
- package/dist/utils-C9QGdMaH.mjs.map +1 -0
- package/dist/utils-CUFNKXRW.js +2 -0
- package/dist/utils-CUFNKXRW.js.map +1 -0
- package/dist/{vendor-Bcg_ARLM.mjs → vendor-CCQzmGyD.mjs} +150 -150
- package/dist/{vendor-Bcg_ARLM.mjs.map → vendor-CCQzmGyD.mjs.map} +1 -1
- package/dist/{vendor-BrqPND3G.js → vendor-CIyDEr7H.js} +2 -2
- package/dist/{vendor-BrqPND3G.js.map → vendor-CIyDEr7H.js.map} +1 -1
- package/package.json +249 -4
- package/scripts/sync-exports.ts +52 -0
- package/scripts/sync-tokens.ts +73 -0
- package/scripts/{validate.js → validate.ts} +14 -8
- package/src/App.tsx +62 -25
- package/src/components/docs/ComponentShowcase.tsx +5 -5
- package/src/components/docs/Sidebar.tsx +3 -2
- package/src/components/ui/command.tsx +3 -1
- package/src/components/ui/search.test.tsx +2 -0
- package/src/components/ui/search.tsx +3 -3
- package/src/globals.css +22 -0
- package/src/pages/ColorTokensDocs.tsx +4 -4
- package/src/pages/GettingStarted.tsx +6 -4
- package/src/theme/tokens.ts +60 -38
- 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
|
+
"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": "
|
|
43
|
-
"validate: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
|
-
|
|
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: '
|
|
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
|
-
<
|
|
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
|
-
<
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
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=
|
|
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>
|