Skip to content

Galaxy UIUniversal Component Library

Beautiful, accessible components for Vue, React, Angular, React Native, and Flutter - from web to mobile

Galaxy UI

Quick Start ​

bash
# Initialize your project
npx @galaxy-stack/nebula-cli@latest init

# Add components
npx @galaxy-stack/nebula-cli@latest add button input dialog
bash
# Initialize your project
pnpm dlx @galaxy-stack/nebula-cli@latest init

# Add components
pnpm dlx @galaxy-stack/nebula-cli@latest add button input dialog
bash
# Initialize your project
yarn dlx @galaxy-stack/nebula-cli@latest init

# Add components
yarn dlx @galaxy-stack/nebula-cli@latest add button input dialog
bash
# Initialize your project
bunx @galaxy-stack/nebula-cli@latest init

# Add components
bunx @galaxy-stack/nebula-cli@latest add button input dialog

Platform Support ​

nextjs and nuxtjs are supported as CLI targets layered on top of the React and Vue source registries. They are not separate package families.

Web Frameworks ​

vue
<script setup lang="ts">
import { Button } from '@/components/ui/button'
</script>

<template>
  <Button variant="default">Click me</Button>
</template>
tsx
import { Button } from "@/components/ui/button"

export default function App() {
  return <Button variant="default">Click me</Button>
}
typescript
import { Component } from '@angular/core';
import { ButtonComponent } from '@/components/ui/button';

@Component({
  selector: 'app-root',
  standalone: true,
  imports: [ButtonComponent],
  template: `<ui-button variant="default">Click me</ui-button>`
})
export class AppComponent {}

Mobile Platforms ​

tsx
import { Button } from '@/components/ui/button'

export default function App() {
  return (
    <Button variant="default">
      <ButtonText>Click me</ButtonText>
    </Button>
  )
}
dart
import 'package:flutter/material.dart';
import 'package:your_app/components/ui/button.dart';

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Button(
      variant: ButtonVariant.defaultVariant,
      onPressed: () {},
      child: Text('Click me'),
    );
  }
}

Why Galaxy UI? ​

🎯 Universal Platform Support ​

Choose your favorite framework - web or mobile. We support Vue 3, React, Angular, React Native, and Flutter with the same beautiful components.

📱 Web to Mobile ​

The CLI currently indexes 65 React, 61 Vue, 60 Angular, 50 React Native, and 49 Flutter installable component/block entries. The catalogs share a common core but are not yet identical; see the coverage matrix.

🔓 You Own The Code ​

Unlike npm packages, you copy the component code directly into your project. Modify it as you need. No version conflicts. No black-box dependencies.

♿ Accessibility First ​

Built on battle-tested Radix primitives for web (Radix UI, Radix Vue, Radix NG). WCAG 2.1 compliant with keyboard navigation, focus management, and screen reader support.

🎨 Fully Customizable ​

Every component uses Tailwind CSS with CSS variables (web), NativeWind v4 (React Native), or Material 3 theming (Flutter). Easy to customize colors, spacing, and styles to match your brand.

Inspired By The Best ​

Galaxy UI stands on the shoulders of giants:

Author ​

Created by Bùi Trọng Hiếu (kevinbui)

License ​

MIT © 2025 Bùi Trọng Hiếu (kevinbui)

Released under the MIT License.