Universal Platform Support
Build with Vue 3, React, Angular, React Native, or Flutter. Same beautiful components across web and mobile.
Beautiful, accessible components for Vue, React, Angular, React Native, and Flutter - from web to mobile

# Initialize your project
npx @galaxy-stack/nebula-cli@latest init
# Add components
npx @galaxy-stack/nebula-cli@latest add button input dialog# Initialize your project
pnpm dlx @galaxy-stack/nebula-cli@latest init
# Add components
pnpm dlx @galaxy-stack/nebula-cli@latest add button input dialog# Initialize your project
yarn dlx @galaxy-stack/nebula-cli@latest init
# Add components
yarn dlx @galaxy-stack/nebula-cli@latest add button input dialog# Initialize your project
bunx @galaxy-stack/nebula-cli@latest init
# Add components
bunx @galaxy-stack/nebula-cli@latest add button input dialognextjs and nuxtjs are supported as CLI targets layered on top of the React and Vue source registries. They are not separate package families.
<script setup lang="ts">
import { Button } from '@/components/ui/button'
</script>
<template>
<Button variant="default">Click me</Button>
</template>import { Button } from "@/components/ui/button"
export default function App() {
return <Button variant="default">Click me</Button>
}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 {}import { Button } from '@/components/ui/button'
export default function App() {
return (
<Button variant="default">
<ButtonText>Click me</ButtonText>
</Button>
)
}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'),
);
}
}Choose your favorite framework - web or mobile. We support Vue 3, React, Angular, React Native, and Flutter with the same beautiful components.
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.
Unlike npm packages, you copy the component code directly into your project. Modify it as you need. No version conflicts. No black-box dependencies.
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.
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.
Galaxy UI stands on the shoulders of giants:
Created by Bùi Trọng Hiếu (kevinbui)
MIT © 2025 Bùi Trọng Hiếu (kevinbui)