@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
@@ -9,6 +9,8 @@ vi.mock('@/components/ui/dialog', () => ({
9
9
  DialogContent: ({ children }: { children: React.ReactNode }) => <div>{children}</div>,
10
10
  DialogPortal: ({ children }: { children: React.ReactNode }) => <div>{children}</div>,
11
11
  DialogOverlay: () => null,
12
+ DialogTitle: ({ children }: { children: React.ReactNode }) => <h2>{children}</h2>,
13
+ DialogDescription: ({ children }: { children: React.ReactNode }) => <p>{children}</p>,
12
14
  }));
13
15
 
14
16
  describe('Search', () => {
@@ -70,8 +70,8 @@ export const SearchTrigger = React.forwardRef<HTMLButtonElement, SearchTriggerPr
70
70
  className={cn(
71
71
  'relative h-9 text-sm text-muted-foreground transition-all transition-colors',
72
72
  variant === 'default'
73
- ? 'w-full justify-start sm:pr-12 md:w-40 lg:w-64'
74
- : 'w-9 justify-center px-0 sm:w-24 sm:justify-start sm:px-3 sm:pr-12',
73
+ ? 'w-full justify-start pr-12'
74
+ : 'w-9 justify-center px-0 md:w-40 md:justify-start md:px-3 md:pr-12 lg:w-64',
75
75
  className,
76
76
  )}
77
77
  ref={ref}
@@ -79,7 +79,7 @@ export const SearchTrigger = React.forwardRef<HTMLButtonElement, SearchTriggerPr
79
79
  >
80
80
  <span className="inline-flex items-center gap-2">
81
81
  <SearchIcon className="h-4 w-4 shrink-0" />
82
- {variant === 'default' && <span className="truncate">{placeholder}</span>}
82
+ <span className={cn('truncate', variant === 'compact' && 'hidden md:inline')}>{placeholder}</span>
83
83
  </span>
84
84
  <kbd className="pointer-events-none absolute right-1.5 top-1.5 hidden h-6 select-none items-center gap-1 rounded border bg-muted px-1.5 font-mono text-[10px] font-medium opacity-100 sm:flex">
85
85
  <span className="text-xs">⌘</span>K
package/src/globals.css CHANGED
@@ -33,6 +33,7 @@
33
33
  }
34
34
 
35
35
  @layer base {
36
+ /* @tokens-start */
36
37
  :root {
37
38
  --background: 0 0% 96%;
38
39
  --foreground: 222 47% 11%;
@@ -59,6 +60,25 @@
59
60
  --brand-blue: 225 73% 57%;
60
61
  --brand-green: 151 66% 27%;
61
62
  --brand-floral-white: 40 100% 97%;
63
+ --neutral-white: 0 0% 100%;
64
+ --neutral-black: 0 0% 0%;
65
+ --neutral-gray50: 0 0% 96%;
66
+ --neutral-gray100: 0 0% 92%;
67
+ --neutral-gray200: 0 0% 89%;
68
+ --neutral-gray300: 0 0% 88%;
69
+ --neutral-gray400: 0 0% 70%;
70
+ --neutral-gray500: 215 16% 47%;
71
+ --neutral-gray600: 222 47% 11%;
72
+ --neutral-gray700: 0 0% 18%;
73
+ --neutral-gray800: 0 0% 15%;
74
+ --neutral-gray900: 0 0% 14%;
75
+ --neutral-gray950: 0 0% 11%;
76
+ --neutral-gray975: 0 0% 9%;
77
+ --neutral-gray990: 0 0% 6%;
78
+ --semantic-success: 93 28% 54%;
79
+ --semantic-success-dark: 96 44% 61%;
80
+ --semantic-destructive: 0 84.2% 60.2%;
81
+ --semantic-destructive-dark: 0 62.8% 30.6%;
62
82
  }
63
83
 
64
84
  .dark {
@@ -81,7 +101,9 @@
81
101
  --border: 0 0% 18%;
82
102
  --input: 0 0% 18%;
83
103
  --ring: 0 0% 90%;
104
+ --radius: 0.5rem;
84
105
  }
106
+ /* @tokens-end */
85
107
  }
86
108
 
87
109
  @layer base {
@@ -7,8 +7,8 @@ export function ColorTokensDocs() {
7
7
  return (
8
8
  <div className="space-y-12">
9
9
  <div className="space-y-4">
10
- <h1 className="text-4xl font-extrabold tracking-tight">Color Tokens</h1>
11
- <p className="text-xl text-muted-foreground max-w-2xl">
10
+ <h1 className="text-3xl md:text-4xl font-extrabold tracking-tight">Color Tokens</h1>
11
+ <p className="text-lg md:text-xl text-muted-foreground max-w-2xl">
12
12
  The Garcia Ventures design system is built on a robust token architecture that ensures consistency,
13
13
  accessibility, and easy maintenance across all digital products.
14
14
  </p>
@@ -167,8 +167,8 @@ const MyComponent = () => {
167
167
 
168
168
  <section className="space-y-6">
169
169
  <h2 className="text-3xl font-bold tracking-tight">Semantic Tokens Reference</h2>
170
- <div className="rounded-xl border shadow-sm overflow-hidden">
171
- <Table>
170
+ <div className="rounded-xl border shadow-sm overflow-x-auto">
171
+ <Table className="min-w-[600px] md:min-w-full">
172
172
  <TableHeader>
173
173
  <TableRow className="bg-muted/50 hover:bg-muted/50">
174
174
  <TableHead className="w-[200px]">Token</TableHead>
@@ -6,8 +6,10 @@ export function GettingStartedPage() {
6
6
  return (
7
7
  <div className="space-y-8">
8
8
  <div className="space-y-2">
9
- <h1 className="text-4xl font-bold tracking-tight">GV Tech Design System</h1>
10
- <p className="text-xl text-muted-foreground">
9
+ <h1 className="text-3xl md:text-4xl font-bold tracking-tight text-center md:text-left">
10
+ GV Tech Design System
11
+ </h1>
12
+ <p className="text-lg md:text-xl text-muted-foreground text-center md:text-left">
11
13
  A comprehensive React component library built with shadcn/ui and Tailwind CSS.
12
14
  </p>
13
15
  </div>
@@ -100,8 +102,8 @@ export function InstallationPage() {
100
102
  return (
101
103
  <div className="space-y-8">
102
104
  <div className="space-y-2">
103
- <h1 className="text-3xl font-bold tracking-tight">Installation</h1>
104
- <p className="text-lg text-muted-foreground">
105
+ <h1 className="text-2xl md:text-3xl font-bold tracking-tight">Installation</h1>
106
+ <p className="text-base md:text-lg text-muted-foreground">
105
107
  Get started with the GV Tech Design System in your React project.
106
108
  </p>
107
109
  </div>
@@ -9,51 +9,73 @@ export const palette = {
9
9
  green: 'hsl(151 66% 27%)', // #177245 (Stability)
10
10
  floralWhite: 'hsl(40 100% 97%)', // Light Neutral / Floral White
11
11
  },
12
- // Additional primitives can be added here
12
+ neutral: {
13
+ white: 'hsl(0 0% 100%)',
14
+ black: 'hsl(0 0% 0%)', // Pure Black
15
+ gray50: 'hsl(0 0% 96%)', // White Smoke
16
+ gray100: 'hsl(0 0% 92%)', // Gainsboro
17
+ gray200: 'hsl(0 0% 89%)', // Light Gray
18
+ gray300: 'hsl(0 0% 88%)', // French Gray
19
+ gray400: 'hsl(0 0% 70%)', // Silver
20
+ gray500: 'hsl(215 16% 47%)', // Steel Blue
21
+ gray600: 'hsl(222 47% 11%)', // Oxford Blue
22
+ gray700: 'hsl(0 0% 18%)', // Raisin Black
23
+ gray800: 'hsl(0 0% 15%)', // Jet
24
+ gray900: 'hsl(0 0% 14%)', // Eerie Black
25
+ gray950: 'hsl(0 0% 11%)', // Night (alt)
26
+ gray975: 'hsl(0 0% 9%)', // Night
27
+ gray990: 'hsl(0 0% 6%)', // Black (almost)
28
+ },
29
+ semantic: {
30
+ success: 'hsl(93 28% 54%)', // Asparagus / Pistachio
31
+ successDark: 'hsl(96 44% 61%)',
32
+ destructive: 'hsl(0 84.2% 60.2%)', // Vivid Red
33
+ destructiveDark: 'hsl(0 62.8% 30.6%)', // Blood Red
34
+ },
13
35
  } as const;
14
36
 
15
37
  export const theme = {
16
38
  light: {
17
- background: 'hsl(0 0% 96%)', // White Smoke
18
- foreground: 'hsl(222 47% 11%)', // Oxford Blue
19
- card: 'hsl(0 0% 100%)', // White
20
- cardForeground: 'hsl(222 47% 11%)', // Oxford Blue
21
- popover: 'hsl(0 0% 100%)', // White
22
- popoverForeground: 'hsl(222 47% 11%)', // Oxford Blue
23
- primary: palette.brand.blue, // Royal Blue (Intellect)
24
- primaryForeground: 'hsl(0 0% 100%)', // White
25
- secondary: 'hsl(93 28% 54%)', // Asparagus / Pistachio
26
- secondaryForeground: 'hsl(0 0% 100%)', // White
27
- muted: 'hsl(0 0% 92%)', // Gainsboro
28
- mutedForeground: 'hsl(215 16% 47%)', // Steel Blue
29
- accent: 'hsl(0 0% 88%)', // French Gray
30
- accentForeground: 'hsl(222 47% 11%)', // Oxford Blue
31
- destructive: 'hsl(0 84.2% 60.2%)', // Vivid Red
32
- destructiveForeground: 'hsl(0 0% 100%)', // White
33
- border: 'hsl(0 0% 89%)', // Light Gray
34
- input: 'hsl(0 0% 89%)', // Light Gray
35
- ring: 'hsl(222 47% 11%)', // Oxford Blue
39
+ background: palette.neutral.gray50,
40
+ foreground: palette.neutral.gray600,
41
+ card: palette.neutral.white,
42
+ cardForeground: palette.neutral.gray600,
43
+ popover: palette.neutral.white,
44
+ popoverForeground: palette.neutral.gray600,
45
+ primary: palette.brand.blue,
46
+ primaryForeground: palette.neutral.white,
47
+ secondary: palette.semantic.success,
48
+ secondaryForeground: palette.neutral.white,
49
+ muted: palette.neutral.gray100,
50
+ mutedForeground: palette.neutral.gray500,
51
+ accent: palette.neutral.gray300,
52
+ accentForeground: palette.neutral.gray600,
53
+ destructive: palette.semantic.destructive,
54
+ destructiveForeground: palette.neutral.white,
55
+ border: palette.neutral.gray200,
56
+ input: palette.neutral.gray200,
57
+ ring: palette.neutral.gray600,
36
58
  radius: '0.5rem',
37
59
  },
38
60
  dark: {
39
- background: 'hsl(0 0% 9%)', // Night
40
- foreground: 'hsl(0 0% 100%)', // White
41
- card: 'hsl(0 0% 14%)', // Eerie Black
42
- cardForeground: 'hsl(0 0% 100%)', // White
43
- popover: 'hsl(0 0% 11%)', // Night (alt)
44
- popoverForeground: 'hsl(0 0% 100%)', // White
45
- primary: 'hsl(227 96% 71%)', // Baby Blue
46
- primaryForeground: 'hsl(0 0% 9%)', // Night
47
- secondary: 'hsl(96 44% 61%)', // Celadon
48
- secondaryForeground: 'hsl(0 0% 9%)', // Night
49
- muted: 'hsl(0 0% 6%)', // Black
50
- mutedForeground: 'hsl(0 0% 70%)', // Silver
51
- accent: 'hsl(0 0% 15%)', // Jet
52
- accentForeground: 'hsl(0 0% 100%)', // White
53
- destructive: 'hsl(0 62.8% 30.6%)', // Blood Red
54
- destructiveForeground: 'hsl(0 0% 100%)', // White
55
- border: 'hsl(0 0% 18%)', // Raisin Black
56
- input: 'hsl(0 0% 18%)', // Raisin Black
61
+ background: palette.neutral.gray975,
62
+ foreground: palette.neutral.white,
63
+ card: palette.neutral.gray900,
64
+ cardForeground: palette.neutral.white,
65
+ popover: palette.neutral.gray950,
66
+ popoverForeground: palette.neutral.white,
67
+ primary: 'hsl(227 96% 71%)', // Keeping as specific HSL to match original
68
+ primaryForeground: palette.neutral.gray975,
69
+ secondary: palette.semantic.successDark,
70
+ secondaryForeground: palette.neutral.gray975,
71
+ muted: palette.neutral.gray990,
72
+ mutedForeground: palette.neutral.gray400,
73
+ accent: palette.neutral.gray800,
74
+ accentForeground: palette.neutral.white,
75
+ destructive: palette.semantic.destructiveDark,
76
+ destructiveForeground: palette.neutral.white,
77
+ border: palette.neutral.gray700,
78
+ input: palette.neutral.gray700,
57
79
  ring: 'hsl(0 0% 90%)', // Platinum
58
80
  radius: '0.5rem',
59
81
  },
package/vite.config.ts CHANGED
@@ -1,9 +1,29 @@
1
1
  import react from '@vitejs/plugin-react-swc';
2
+ import fs from 'fs';
2
3
  import { resolve } from 'path';
3
4
  import { defineConfig } from 'vite';
4
5
 
5
6
  const isLibrary = process.env.VITE_LIB === 'true';
6
7
 
8
+ // Get all UI components for multi-entry build
9
+ const getEntries = () => {
10
+ const entries: Record<string, string> = {
11
+ index: resolve(__dirname, 'src/index.ts'),
12
+ };
13
+
14
+ if (isLibrary) {
15
+ const uiPath = resolve(__dirname, 'src/components/ui');
16
+ const files = fs.readdirSync(uiPath);
17
+ files.forEach((file) => {
18
+ if (file.endsWith('.tsx') && !file.includes('.test.') && !file.includes('.stories.')) {
19
+ const name = file.replace('.tsx', '');
20
+ entries[name] = resolve(uiPath, file);
21
+ }
22
+ });
23
+ }
24
+ return entries;
25
+ };
26
+
7
27
  export default defineConfig({
8
28
  plugins: [react()],
9
29
  resolve: {
@@ -19,10 +39,12 @@ export default defineConfig({
19
39
  emptyOutDir: !isLibrary,
20
40
  lib: isLibrary
21
41
  ? {
22
- entry: resolve(__dirname, 'src/index.ts'),
42
+ entry: getEntries(),
23
43
  name: 'GvtechDesign',
24
- // Matches the names in package.json
25
- fileName: (format) => `index.${format === 'es' ? 'es' : 'cjs'}.js`,
44
+ fileName: (format, entryName) =>
45
+ entryName === 'index'
46
+ ? `index.${format === 'es' ? 'es' : 'cjs'}.js`
47
+ : `${entryName}.${format === 'es' ? 'es' : 'cjs'}.js`,
26
48
  formats: ['es', 'cjs'],
27
49
  }
28
50
  : undefined,