galaxy-design 0.2.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 (56) hide show
  1. package/README.md +320 -0
  2. package/dist/bin.js +11 -0
  3. package/dist/bin.js.map +1 -0
  4. package/dist/commands/add.js +252 -0
  5. package/dist/commands/add.js.map +1 -0
  6. package/dist/commands/init-old.js +159 -0
  7. package/dist/commands/init-old.js.map +1 -0
  8. package/dist/commands/init.js +266 -0
  9. package/dist/commands/init.js.map +1 -0
  10. package/dist/index.js +8 -0
  11. package/dist/index.js.map +1 -0
  12. package/dist/lib/cli.js +5 -0
  13. package/dist/lib/cli.js.map +1 -0
  14. package/dist/registries/blocks-angular.json +89 -0
  15. package/dist/registries/blocks-flutter.json +60 -0
  16. package/dist/registries/blocks-react-native.json +60 -0
  17. package/dist/registries/blocks-react.json +89 -0
  18. package/dist/registries/blocks-vue.json +89 -0
  19. package/dist/registries/registry-angular.json +557 -0
  20. package/dist/registries/registry-flutter.json +491 -0
  21. package/dist/registries/registry-flutter.json.old +258 -0
  22. package/dist/registries/registry-react-native.json +491 -0
  23. package/dist/registries/registry-react-native.json.old +379 -0
  24. package/dist/registries/registry-react.json +526 -0
  25. package/dist/registries/registry-vue.json +586 -0
  26. package/dist/registry.json +460 -0
  27. package/dist/schemas/components-schema.json +91 -0
  28. package/dist/templates/tailwind.config.template +45 -0
  29. package/dist/templates/utils.ts.template +11 -0
  30. package/dist/utils/component-copier.js +207 -0
  31. package/dist/utils/component-copier.js.map +1 -0
  32. package/dist/utils/components-config.js +58 -0
  33. package/dist/utils/components-config.js.map +1 -0
  34. package/dist/utils/config-schema.js +221 -0
  35. package/dist/utils/config-schema.js.map +1 -0
  36. package/dist/utils/config.js +88 -0
  37. package/dist/utils/config.js.map +1 -0
  38. package/dist/utils/detect.js +86 -0
  39. package/dist/utils/detect.js.map +1 -0
  40. package/dist/utils/files.js +52 -0
  41. package/dist/utils/files.js.map +1 -0
  42. package/dist/utils/framework-registry.js +133 -0
  43. package/dist/utils/framework-registry.js.map +1 -0
  44. package/dist/utils/github-fetcher.js +120 -0
  45. package/dist/utils/github-fetcher.js.map +1 -0
  46. package/dist/utils/index.js +12 -0
  47. package/dist/utils/index.js.map +1 -0
  48. package/dist/utils/package-manager.js +173 -0
  49. package/dist/utils/package-manager.js.map +1 -0
  50. package/dist/utils/platform-detector.js +176 -0
  51. package/dist/utils/platform-detector.js.map +1 -0
  52. package/dist/utils/registry-loader.js +143 -0
  53. package/dist/utils/registry-loader.js.map +1 -0
  54. package/dist/utils/registry.js +92 -0
  55. package/dist/utils/registry.js.map +1 -0
  56. package/package.json +77 -0
@@ -0,0 +1,460 @@
1
+ {
2
+ "components": {
3
+ "button": {
4
+ "name": "Button",
5
+ "selector": "gButton",
6
+ "type": "form",
7
+ "description": "Versatile button with 6 status variants and 5 sizes",
8
+ "files": ["button/button.component.ts"],
9
+ "dependencies": [],
10
+ "peerDependencies": ["lucide-angular"],
11
+ "exports": ["ButtonDirective"]
12
+ },
13
+ "input": {
14
+ "name": "Input",
15
+ "selector": "g-input",
16
+ "type": "form",
17
+ "description": "Text input with label, hints, and error messages",
18
+ "files": ["input/input.component.ts"],
19
+ "dependencies": [],
20
+ "peerDependencies": ["lucide-angular"],
21
+ "exports": ["InputComponent"]
22
+ },
23
+ "checkbox": {
24
+ "name": "Checkbox",
25
+ "selector": "g-checkbox",
26
+ "type": "form",
27
+ "description": "Checkbox with indeterminate state support",
28
+ "files": ["checkbox/checkbox.component.ts"],
29
+ "dependencies": [],
30
+ "peerDependencies": ["lucide-angular"],
31
+ "exports": ["CheckboxComponent"]
32
+ },
33
+ "select": {
34
+ "name": "Select",
35
+ "selector": "g-select",
36
+ "type": "form",
37
+ "description": "Custom dropdown with search functionality",
38
+ "files": ["select/select.component.ts"],
39
+ "dependencies": [],
40
+ "peerDependencies": ["lucide-angular"],
41
+ "exports": ["SelectComponent", "OptionComponent"]
42
+ },
43
+ "calendar": {
44
+ "name": "Calendar",
45
+ "selector": "g-calendar",
46
+ "type": "form",
47
+ "description": "Full-featured date picker",
48
+ "files": ["calendar/calendar.component.ts"],
49
+ "dependencies": [],
50
+ "peerDependencies": [],
51
+ "exports": ["CalendarComponent"]
52
+ },
53
+ "radio": {
54
+ "name": "Radio",
55
+ "selector": "g-radio",
56
+ "type": "form",
57
+ "description": "Radio button group with single/multiple selection",
58
+ "files": ["radio/radio.component.ts"],
59
+ "dependencies": [],
60
+ "peerDependencies": [],
61
+ "exports": ["RadioComponent"]
62
+ },
63
+ "switch": {
64
+ "name": "Switch",
65
+ "selector": "g-switch",
66
+ "type": "form",
67
+ "description": "Toggle switch with smooth animation",
68
+ "files": ["switch/switch.component.ts"],
69
+ "dependencies": [],
70
+ "peerDependencies": [],
71
+ "exports": ["SwitchComponent"]
72
+ },
73
+ "slider": {
74
+ "name": "Slider",
75
+ "selector": "g-slider",
76
+ "type": "form",
77
+ "description": "Range slider with min/max and step support",
78
+ "files": ["slider/slider.component.ts"],
79
+ "dependencies": [],
80
+ "peerDependencies": [],
81
+ "exports": ["SliderComponent"]
82
+ },
83
+ "rate": {
84
+ "name": "Rate",
85
+ "selector": "g-rate",
86
+ "type": "form",
87
+ "description": "Star rating with half star support",
88
+ "files": ["rate/rate.component.ts"],
89
+ "dependencies": [],
90
+ "peerDependencies": ["lucide-angular"],
91
+ "exports": ["RateComponent"]
92
+ },
93
+ "button-group": {
94
+ "name": "Button Group",
95
+ "selector": "g-button-group",
96
+ "type": "form",
97
+ "description": "Button group with single/multiple selection",
98
+ "files": ["button-group/button-group.component.ts"],
99
+ "dependencies": [],
100
+ "peerDependencies": [],
101
+ "exports": ["ButtonGroupComponent", "ButtonGroupItemComponent"]
102
+ },
103
+ "autocomplete": {
104
+ "name": "Autocomplete",
105
+ "selector": "g-autocomplete",
106
+ "type": "form",
107
+ "description": "Autocomplete input with search and suggestions",
108
+ "files": ["autocomplete/autocomplete.component.ts"],
109
+ "dependencies": [],
110
+ "peerDependencies": ["lucide-angular"],
111
+ "exports": ["AutocompleteComponent"]
112
+ },
113
+ "calendar-range": {
114
+ "name": "Calendar Range",
115
+ "selector": "g-calendar-range",
116
+ "type": "form",
117
+ "description": "Date range picker with start and end dates",
118
+ "files": ["calendar-range/calendar-range.component.ts"],
119
+ "dependencies": [],
120
+ "peerDependencies": [],
121
+ "exports": ["CalendarRangeComponent"]
122
+ },
123
+ "card": {
124
+ "name": "Card",
125
+ "selector": "g-card",
126
+ "type": "layout",
127
+ "description": "Container with header, body, and footer sections",
128
+ "files": ["card/card.component.ts"],
129
+ "dependencies": [],
130
+ "peerDependencies": [],
131
+ "exports": ["CardComponent", "CardHeaderComponent", "CardBodyComponent", "CardFooterComponent"]
132
+ },
133
+ "accordion": {
134
+ "name": "Accordion",
135
+ "selector": "g-accordion",
136
+ "type": "layout",
137
+ "description": "Collapsible sections with expand/collapse",
138
+ "files": ["accordion/accordion.component.ts"],
139
+ "dependencies": [],
140
+ "peerDependencies": ["lucide-angular"],
141
+ "exports": ["AccordionComponent", "AccordionItemComponent"]
142
+ },
143
+ "grid": {
144
+ "name": "Grid",
145
+ "selector": "g-grid",
146
+ "type": "layout",
147
+ "description": "12-column responsive grid system",
148
+ "files": ["grid/grid.component.ts"],
149
+ "dependencies": [],
150
+ "peerDependencies": [],
151
+ "exports": ["GridComponent", "GridItemComponent"]
152
+ },
153
+ "divider": {
154
+ "name": "Divider",
155
+ "selector": "g-divider",
156
+ "type": "layout",
157
+ "description": "Horizontal or vertical separator",
158
+ "files": ["divider/divider.component.ts"],
159
+ "dependencies": [],
160
+ "peerDependencies": [],
161
+ "exports": ["DividerComponent"]
162
+ },
163
+ "splitter": {
164
+ "name": "Splitter",
165
+ "selector": "g-splitter",
166
+ "type": "layout",
167
+ "description": "Resizable split panes with drag handles",
168
+ "files": ["splitter/splitter.component.ts"],
169
+ "dependencies": [],
170
+ "peerDependencies": ["lucide-angular"],
171
+ "exports": ["SplitterComponent", "SplitterPanelComponent"]
172
+ },
173
+ "menu": {
174
+ "name": "Menu",
175
+ "selector": "g-menu",
176
+ "type": "navigation",
177
+ "description": "Sidebar navigation with icons and badges",
178
+ "files": ["menu/menu.component.ts"],
179
+ "dependencies": [],
180
+ "peerDependencies": ["lucide-angular"],
181
+ "exports": ["MenuComponent", "MenuItemComponent", "MenuGroupComponent"]
182
+ },
183
+ "breadcrumb": {
184
+ "name": "Breadcrumb",
185
+ "selector": "g-breadcrumb",
186
+ "type": "navigation",
187
+ "description": "Page location navigation trail",
188
+ "files": ["breadcrumb/breadcrumb.component.ts"],
189
+ "dependencies": [],
190
+ "peerDependencies": ["lucide-angular"],
191
+ "exports": ["BreadcrumbComponent", "BreadcrumbItemComponent"]
192
+ },
193
+ "tabs": {
194
+ "name": "Tabs",
195
+ "selector": "g-tabs",
196
+ "type": "navigation",
197
+ "description": "Tabbed content organization",
198
+ "files": ["tabs/tabs.component.ts"],
199
+ "dependencies": [],
200
+ "peerDependencies": ["lucide-angular"],
201
+ "exports": ["TabsComponent", "TabComponent", "TabPanelComponent"]
202
+ },
203
+ "dropdown": {
204
+ "name": "Dropdown",
205
+ "selector": "g-dropdown",
206
+ "type": "navigation",
207
+ "description": "Action menus and context menus",
208
+ "files": ["dropdown/dropdown.component.ts"],
209
+ "dependencies": [],
210
+ "peerDependencies": ["lucide-angular"],
211
+ "exports": ["DropdownComponent", "DropdownMenuComponent", "DropdownItemComponent"]
212
+ },
213
+ "sidebar": {
214
+ "name": "Sidebar",
215
+ "selector": "g-sidebar",
216
+ "type": "navigation",
217
+ "description": "Layout with collapsible sidebar",
218
+ "files": ["sidebar/sidebar.component.ts"],
219
+ "dependencies": [],
220
+ "peerDependencies": ["lucide-angular"],
221
+ "exports": ["SidebarComponent", "SidebarHeaderComponent", "SidebarContentComponent", "SidebarFooterComponent"]
222
+ },
223
+ "stepper": {
224
+ "name": "Stepper",
225
+ "selector": "g-stepper",
226
+ "type": "navigation",
227
+ "description": "Multi-step wizards and forms",
228
+ "files": ["stepper/stepper.component.ts"],
229
+ "dependencies": [],
230
+ "peerDependencies": ["lucide-angular"],
231
+ "exports": ["StepperComponent", "StepComponent"]
232
+ },
233
+ "table": {
234
+ "name": "Table",
235
+ "selector": "g-table",
236
+ "type": "data-display",
237
+ "description": "Data table with sorting, filtering, and selection",
238
+ "files": ["table/table.component.ts"],
239
+ "dependencies": [],
240
+ "peerDependencies": ["lucide-angular"],
241
+ "exports": ["TableComponent"]
242
+ },
243
+ "pagination": {
244
+ "name": "Pagination",
245
+ "selector": "g-pagination",
246
+ "type": "data-display",
247
+ "description": "Pagination controls for data navigation",
248
+ "files": ["pagination/pagination.component.ts"],
249
+ "dependencies": [],
250
+ "peerDependencies": ["lucide-angular"],
251
+ "exports": ["PaginationComponent"]
252
+ },
253
+ "table-paginated": {
254
+ "name": "Table Paginated",
255
+ "selector": "g-table-paginated",
256
+ "type": "data-display",
257
+ "description": "Data table with built-in pagination",
258
+ "files": ["table-paginated/table-paginated.component.ts"],
259
+ "dependencies": ["table", "pagination"],
260
+ "peerDependencies": ["lucide-angular"],
261
+ "exports": ["TablePaginatedComponent"]
262
+ },
263
+ "list": {
264
+ "name": "List",
265
+ "selector": "g-list",
266
+ "type": "data-display",
267
+ "description": "Versatile list component for displaying data",
268
+ "files": ["list/list.component.ts"],
269
+ "dependencies": [],
270
+ "peerDependencies": [],
271
+ "exports": ["ListComponent", "ListItemComponent"]
272
+ },
273
+ "tree": {
274
+ "name": "Tree",
275
+ "selector": "g-tree",
276
+ "type": "data-display",
277
+ "description": "Hierarchical tree structure with expand/collapse",
278
+ "files": ["tree/tree.component.ts"],
279
+ "dependencies": [],
280
+ "peerDependencies": ["lucide-angular"],
281
+ "exports": ["TreeComponent"]
282
+ },
283
+ "tag": {
284
+ "name": "Tag",
285
+ "selector": "g-tag",
286
+ "type": "data-display",
287
+ "description": "Tag component for labels and categorization",
288
+ "files": ["tag/tag.component.ts"],
289
+ "dependencies": [],
290
+ "peerDependencies": ["lucide-angular"],
291
+ "exports": ["TagComponent"]
292
+ },
293
+ "timeline": {
294
+ "name": "Timeline",
295
+ "selector": "g-timeline",
296
+ "type": "data-display",
297
+ "description": "Timeline component for displaying chronological events",
298
+ "files": ["timeline/timeline.component.ts"],
299
+ "dependencies": [],
300
+ "peerDependencies": ["lucide-angular"],
301
+ "exports": ["TimelineComponent"]
302
+ },
303
+ "popover": {
304
+ "name": "Popover",
305
+ "selector": "g-popover",
306
+ "type": "modal-overlay",
307
+ "description": "Popover component for contextual information",
308
+ "files": ["popover/popover.component.ts"],
309
+ "dependencies": [],
310
+ "peerDependencies": [],
311
+ "exports": ["PopoverComponent"]
312
+ },
313
+ "drawer": {
314
+ "name": "Drawer",
315
+ "selector": "g-drawer",
316
+ "type": "modal-overlay",
317
+ "description": "Drawer component with slide-in animation (shadcn style)",
318
+ "files": ["drawer/drawer.component.ts"],
319
+ "dependencies": [],
320
+ "peerDependencies": ["lucide-angular"],
321
+ "exports": ["DrawerComponent"]
322
+ },
323
+ "toast": {
324
+ "name": "Toast",
325
+ "selector": "g-toast",
326
+ "type": "modal-overlay",
327
+ "description": "Toast notification component with service (antd style)",
328
+ "files": ["toast/toast.component.ts"],
329
+ "dependencies": [],
330
+ "peerDependencies": ["lucide-angular"],
331
+ "exports": ["ToastComponent", "ToastService", "ToastItemComponent", "ToastContainerComponent"]
332
+ },
333
+ "tooltip": {
334
+ "name": "Tooltip",
335
+ "selector": "g-tooltip",
336
+ "type": "modal-overlay",
337
+ "description": "Tooltip component for hover information (shadcn style)",
338
+ "files": ["tooltip/tooltip.component.ts"],
339
+ "dependencies": [],
340
+ "peerDependencies": [],
341
+ "exports": ["TooltipComponent"]
342
+ },
343
+ "progress": {
344
+ "name": "Progress",
345
+ "selector": "g-progress",
346
+ "type": "modal-overlay",
347
+ "description": "Progress bar and circle component (antd style)",
348
+ "files": ["progress/progress.component.ts"],
349
+ "dependencies": [],
350
+ "peerDependencies": ["lucide-angular"],
351
+ "exports": ["ProgressComponent"]
352
+ },
353
+ "skeleton": {
354
+ "name": "Skeleton",
355
+ "selector": "g-skeleton",
356
+ "type": "modal-overlay",
357
+ "description": "Skeleton loading placeholder component (antd style)",
358
+ "files": ["skeleton/skeleton.component.ts"],
359
+ "dependencies": [],
360
+ "peerDependencies": [],
361
+ "exports": ["SkeletonComponent"]
362
+ },
363
+ "popconfirm": {
364
+ "name": "Popconfirm",
365
+ "selector": "g-popconfirm",
366
+ "type": "modal-overlay",
367
+ "description": "Popconfirm component for confirmation dialogs (antd style)",
368
+ "files": ["popconfirm/popconfirm.component.ts"],
369
+ "dependencies": [],
370
+ "peerDependencies": ["lucide-angular"],
371
+ "exports": ["PopconfirmComponent"]
372
+ },
373
+ "dialog": {
374
+ "name": "Dialog",
375
+ "selector": "g-dialog",
376
+ "type": "modal-overlay",
377
+ "description": "Modal dialog component",
378
+ "files": ["dialog/dialog.component.ts"],
379
+ "dependencies": [],
380
+ "peerDependencies": ["lucide-angular"],
381
+ "exports": ["DialogComponent"]
382
+ },
383
+ "spinner": {
384
+ "name": "Spinner",
385
+ "selector": "g-spinner",
386
+ "type": "modal-overlay",
387
+ "description": "Loading spinner component with multiple styles",
388
+ "files": ["spinner/spinner.component.ts"],
389
+ "dependencies": [],
390
+ "peerDependencies": ["lucide-angular"],
391
+ "exports": ["SpinnerComponent"]
392
+ },
393
+ "avatar": {
394
+ "name": "Avatar",
395
+ "selector": "g-avatar",
396
+ "type": "other",
397
+ "description": "Avatar component for user profile pictures",
398
+ "files": ["avatar/avatar.component.ts"],
399
+ "dependencies": [],
400
+ "peerDependencies": ["lucide-angular"],
401
+ "exports": ["AvatarComponent", "AvatarGroupComponent"]
402
+ },
403
+ "badge": {
404
+ "name": "Badge",
405
+ "selector": "g-badge",
406
+ "type": "other",
407
+ "description": "Badge component for counts and status indicators",
408
+ "files": ["badge/badge.component.ts"],
409
+ "dependencies": [],
410
+ "peerDependencies": [],
411
+ "exports": ["BadgeComponent", "BadgeRibbonComponent"]
412
+ },
413
+ "tour": {
414
+ "name": "Tour",
415
+ "selector": "g-tour",
416
+ "type": "other",
417
+ "description": "Tour component for user onboarding (antd style)",
418
+ "files": ["tour/tour.component.ts"],
419
+ "dependencies": [],
420
+ "peerDependencies": ["lucide-angular"],
421
+ "exports": ["TourComponent"]
422
+ },
423
+ "carousel": {
424
+ "name": "Carousel",
425
+ "selector": "g-carousel",
426
+ "type": "other",
427
+ "description": "Carousel component for image/content slides (antd style)",
428
+ "files": ["carousel/carousel.component.ts"],
429
+ "dependencies": [],
430
+ "peerDependencies": ["lucide-angular"],
431
+ "exports": ["CarouselComponent", "CarouselItemComponent"]
432
+ }
433
+ },
434
+ "groups": {
435
+ "form": {
436
+ "name": "Form Components",
437
+ "components": ["button", "input", "checkbox", "select", "calendar", "radio", "switch", "slider", "rate", "button-group", "autocomplete", "calendar-range"]
438
+ },
439
+ "layout": {
440
+ "name": "Layout Components",
441
+ "components": ["card", "accordion", "grid", "divider", "splitter"]
442
+ },
443
+ "navigation": {
444
+ "name": "Navigation Components",
445
+ "components": ["menu", "breadcrumb", "tabs", "dropdown", "sidebar", "stepper"]
446
+ },
447
+ "data-display": {
448
+ "name": "Data Display Components",
449
+ "components": ["table", "pagination", "table-paginated", "list", "tree", "tag", "timeline"]
450
+ },
451
+ "modal-overlay": {
452
+ "name": "Modal & Overlay Components",
453
+ "components": ["popover", "drawer", "toast", "tooltip", "progress", "skeleton", "popconfirm", "dialog", "spinner"]
454
+ },
455
+ "other": {
456
+ "name": "Other Components",
457
+ "components": ["avatar", "badge", "tour", "carousel"]
458
+ }
459
+ }
460
+ }
@@ -0,0 +1,91 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "title": "Galaxy UI Configuration",
4
+ "description": "Configuration file for Galaxy UI components",
5
+ "type": "object",
6
+ "required": ["framework", "typescript", "tailwind", "aliases"],
7
+ "properties": {
8
+ "$schema": {
9
+ "type": "string",
10
+ "description": "Path to the schema file"
11
+ },
12
+ "framework": {
13
+ "type": "string",
14
+ "enum": ["vue", "react", "angular"],
15
+ "description": "The framework used in the project"
16
+ },
17
+ "typescript": {
18
+ "type": "boolean",
19
+ "description": "Whether TypeScript is used",
20
+ "default": true
21
+ },
22
+ "tailwind": {
23
+ "type": "object",
24
+ "required": ["config", "css"],
25
+ "properties": {
26
+ "config": {
27
+ "type": "string",
28
+ "description": "Path to the Tailwind configuration file",
29
+ "default": "tailwind.config.js"
30
+ },
31
+ "css": {
32
+ "type": "string",
33
+ "description": "Path to the global CSS file",
34
+ "examples": [
35
+ "src/styles/globals.css",
36
+ "src/assets/styles/global.css",
37
+ "src/app/globals.css"
38
+ ]
39
+ },
40
+ "baseColor": {
41
+ "type": "string",
42
+ "description": "Base color for components",
43
+ "enum": ["slate", "gray", "zinc", "neutral", "stone"],
44
+ "default": "slate"
45
+ },
46
+ "cssVariables": {
47
+ "type": "boolean",
48
+ "description": "Use CSS variables for theming",
49
+ "default": true
50
+ },
51
+ "prefix": {
52
+ "type": "string",
53
+ "description": "Prefix for Tailwind utility classes",
54
+ "default": ""
55
+ }
56
+ }
57
+ },
58
+ "aliases": {
59
+ "type": "object",
60
+ "required": ["components", "utils"],
61
+ "properties": {
62
+ "components": {
63
+ "type": "string",
64
+ "description": "Import alias for components directory",
65
+ "examples": ["@/components", "~/components", "src/components"]
66
+ },
67
+ "utils": {
68
+ "type": "string",
69
+ "description": "Import alias for utils directory",
70
+ "examples": ["@/lib/utils", "@/utils", "~/lib/utils"]
71
+ },
72
+ "ui": {
73
+ "type": "string",
74
+ "description": "Import alias for UI components directory",
75
+ "examples": ["@/components/ui", "~/components/ui"]
76
+ },
77
+ "lib": {
78
+ "type": "string",
79
+ "description": "Import alias for lib directory",
80
+ "examples": ["@/lib", "~/lib"]
81
+ }
82
+ }
83
+ },
84
+ "iconLibrary": {
85
+ "type": "string",
86
+ "enum": ["lucide", "heroicons", "radix-icons"],
87
+ "description": "Icon library to use",
88
+ "default": "lucide"
89
+ }
90
+ }
91
+ }
@@ -0,0 +1,45 @@
1
+ /** @type {import('tailwindcss').Config} */
2
+ module.exports = {
3
+ content: [
4
+ "./src/**/*.{html,ts,tsx,jsx,vue}",
5
+ ],
6
+ theme: {
7
+ extend: {
8
+ colors: {
9
+ // Galaxy UI status colors
10
+ primary: {
11
+ DEFAULT: '#3b82f6',
12
+ dark: '#2563eb',
13
+ light: '#60a5fa',
14
+ },
15
+ success: {
16
+ DEFAULT: '#10b981',
17
+ dark: '#059669',
18
+ light: '#34d399',
19
+ },
20
+ info: {
21
+ DEFAULT: '#0ea5e9',
22
+ dark: '#0284c7',
23
+ light: '#38bdf8',
24
+ },
25
+ warning: {
26
+ DEFAULT: '#f59e0b',
27
+ dark: '#d97706',
28
+ light: '#fbbf24',
29
+ },
30
+ danger: {
31
+ DEFAULT: '#ef4444',
32
+ dark: '#dc2626',
33
+ light: '#f87171',
34
+ },
35
+ basic: {
36
+ DEFAULT: '#6b7280',
37
+ dark: '#4b5563',
38
+ light: '#9ca3af',
39
+ },
40
+ },
41
+ },
42
+ },
43
+ plugins: [],
44
+ darkMode: 'class',
45
+ }
@@ -0,0 +1,11 @@
1
+ import { clsx, type ClassValue } from 'clsx';
2
+ import { twMerge } from 'tailwind-merge';
3
+
4
+ /**
5
+ * Utility function to merge Tailwind CSS classes with proper precedence
6
+ * @param inputs - Class values to merge
7
+ * @returns Merged class string
8
+ */
9
+ export function cn(...inputs: ClassValue[]): string {
10
+ return twMerge(clsx(inputs));
11
+ }