galaxy-design
v0.2.74
Published
CLI tool for adding Galaxy UI components to your Vue, React, Angular, Next.js, Nuxt.js, React Native, or Flutter project
Maintainers
Readme
Galaxy UI CLI
CLI for initializing Galaxy UI and copying framework-specific components into your project.
Features
- Supports
init,add, andmigrate tailwind - Detects React, Next.js, Vue, Nuxt.js, and Angular projects
- Stores project settings in
components.json - Scaffolds Tailwind in v4-first mode while preserving existing v3 projects
- Copies components into your source tree so they remain editable
- Fails clearly when remote component files cannot be fetched
Framework Mapping
nextjs and nuxtjs are CLI target frameworks, not separate published component packages.
nextjsreuses the React source registry and adds Next-specific transforms such as'use client'when requirednuxtjsreuses the Vue source registry and keeps Vue/Nuxt-specific file structure intact
That means the package/source-of-truth layer is still React for Next.js and Vue for Nuxt.js, while the CLI adapts the copied files for the target app.
Installation
npx galaxy-design@latest initOr install globally:
npm install -g galaxy-design
bun add -g galaxy-designQuick Start
1. Initialize
npx galaxy-design@latest initinit currently does the following:
- Detects the framework
- Creates
components.json - Installs core dependencies
- Creates
components/uiand thecn()utility - Detects Tailwind v3/v4 and scaffolds the matching mode
Tailwind behavior:
- Existing Tailwind v3 project: stays on v3
- Existing Tailwind v4 project: stays on v4
- No Tailwind detected: installs/scaffolds v4 by default
1.5 Migrate Tailwind v3 To v4
npx galaxy-design@latest migrate tailwind --dry-run
npx galaxy-design@latest migrate tailwind --yesmigrate tailwind currently focuses on the safe scaffold layer:
- Detects whether the current project still uses Tailwind v3
- Rewrites the global CSS entry from
@tailwind ...directives to@import "tailwindcss"; - Rewrites the PostCSS config to use
@tailwindcss/postcss - Updates
components.jsonTailwind version metadata when present - Reports utility classes that may need manual review in Tailwind v4
It does not try to auto-rewrite every potentially breaking utility class.
2. Add Components
# Add one component
npx galaxy-design@latest add button
# Add several components
npx galaxy-design@latest add button input card
# Interactive selection
npx galaxy-design@latest add
# Add everything in the current registry
npx galaxy-design@latest add --allAvailable Components
🎨 Form Components (9)
button- Versatile button with variants and sizesinput- Text input with label and validation statescheckbox- Checkbox with indeterminate stateradio-group- Radio button groupsselect- Dropdown select with searchslider- Range slider inputswitch- Toggle switchtextarea- Multi-line text inputlabel- Accessible form labels
📐 Layout Components (4)
separator- Horizontal/vertical divideraccordion- Collapsible content sectionscollapsible- Single collapsible paneltabs- Tabbed content organization
🧭 Navigation Components (4)
navigation-menu- Complex navigation with dropdownsmenubar- Desktop-style menu barcontext-menu- Right-click context menusdropdown-menu- Action dropdown menus
🔔 Overlay Components (5)
dialog- Modal dialogsalert-dialog- Confirmation dialogspopover- Floating content containerstooltip- Hover tooltipshover-card- Preview cards on hover
📊 Data Display Components (6)
avatar- User avatars with fallbacksprogress- Progress bars and indicatorstable- Data tables with sortingpagination- Page navigationempty- Empty state placeholdersskeleton- Loading skeletons
✍️ Typography & Utilities (2)
typography- Text styles and componentskbd- Keyboard shortcut display
📅 Date & Time Components (2)
calendar- Date picker calendarcalendar-range- Date range picker
⚡ Advanced Components (4)
command- Command palette (⌘K)sheet- Slide-out panelstoolbar- Action toolbarstags-input- Multi-value tag input
🎁 Bonus Components (5)
aspect-ratio- Aspect ratio containerbadge- Status badges and labelscard- Content cardsscroll-area- Custom scrollbarstoggle- Toggle buttonstoggle-group- Toggle button groups
Framework Examples
React
import { Button } from '@/components/ui/button';
import { Input } from '@/components/ui/input';
export function MyComponent() {
return (
<div>
<Button variant="default" size="lg">
Click me
</Button>
<Input placeholder="Enter text..." />
</div>
);
}Vue
<script setup lang="ts">
import { Button } from '@/components/ui/button';
import { Input } from '@/components/ui/input';
</script>
<template>
<div>
<Button variant="default" size="lg">Click me</Button>
<Input placeholder="Enter text..." />
</div>
</template>Angular
import { Component } from '@angular/core';
import { ButtonDirective } from '@/components/ui/button';
import { InputComponent } from '@/components/ui/input';
@Component({
selector: 'app-my-component',
standalone: true,
imports: [ButtonDirective, InputComponent],
template: `
<div>
<button hlmBtn variant="default" size="lg">Click me</button>
<hlm-input placeholder="Enter text..." />
</div>
`,
})
export class MyComponent {}Next.js
'use client';
import { Button } from '@/components/ui/button';
import { Input } from '@/components/ui/input';
export default function MyComponent() {
return (
<div>
<Button variant="default" size="lg">
Click me
</Button>
<Input placeholder="Enter text..." />
</div>
);
}add automatically preserves framework-specific transformations such as 'use client' for Next.js components when needed.
Next.js support is implemented as a React-source target inside the CLI, not as a separate @galaxy-ui/nextjs package.
Nuxt.js
<script setup lang="ts">
import { Button } from '@/components/ui/button';
import { Input } from '@/components/ui/input';
</script>
<template>
<div>
<Button variant="default" size="lg">Click me</Button>
<Input placeholder="Enter text..." />
</div>
</template>Nuxt users should make sure the @/ alias is available in nuxt.config.ts.
Nuxt.js support is implemented as a Vue-source target inside the CLI, not as a separate @galaxy-ui/nuxtjs package.
Configuration
Galaxy UI stores project settings in components.json:
{
"$schema": "https://galaxy-design.vercel.app/schema.json",
"framework": "react",
"typescript": true,
"tailwind": {
"version": 4,
"config": "",
"css": "src/index.css",
"baseColor": "slate",
"cssVariables": true,
"prefix": ""
},
"aliases": {
"components": "@/components",
"utils": "@/lib/utils",
"ui": "@/components/ui",
"lib": "@/lib"
},
"iconLibrary": "lucide"
}Configuration Options
| Option | Description | Default |
| -------------------- | ---------------------- | ------------------ |
| framework | Your framework | Auto-detected |
| typescript | Use TypeScript | true |
| tailwind.version | Tailwind major version | Auto-detected |
| tailwind.config | Tailwind config path | Framework-specific |
| tailwind.css | Global CSS file | Framework-specific |
| tailwind.baseColor | Base color scheme | slate |
| aliases.components | Components alias | @/components |
| aliases.utils | Utils alias | @/lib/utils |
| iconLibrary | Icon library to use | lucide |
CLI Commands
init
Initialize Galaxy UI in your project and scaffold components.json.
npx galaxy-design@latest init
# Skip prompts (use defaults)
npx galaxy-design@latest init --yesadd
Add registry components to your project.
# Interactive mode
npx galaxy-design@latest add
# Add specific components
npx galaxy-design@latest add button input
# Add all components
npx galaxy-design@latest add --allThere is currently no diff command and no --overwrite option on add.
Styling And Theming
Galaxy UI uses Tailwind CSS with CSS variables for theming. After running init, you can customize colors in your CSS file:
@layer base {
:root {
--background: 0 0% 100%;
--foreground: 222.2 84% 4.9%;
--primary: 221.2 83.2% 53.3%;
--primary-foreground: 210 40% 98%;
/* ... more variables */
}
.dark {
--background: 222.2 84% 4.9%;
--foreground: 210 40% 98%;
/* ... dark mode variables */
}
}Customization
Components are copied to your project, so you have full control:
- Modify components - Edit any component in
components/ui/ - Change styles - Update Tailwind classes or CSS variables
- Add features - Extend components with your own functionality
- No lock-in - Components are yours to modify
Documentation
- Docs Website: https://galaxy-design.vercel.app
- Repository: https://github.com/buikevin/galaxy-design
Notes
addcurrently fetches component source files from GitHub at runtime.- The CLI now fails explicitly if required files cannot be fetched.
components.jsonis the active configuration system. Legacygalaxy.config.*flow has been removed from source.
License
MIT License - see LICENSE for details
