reka-ui
An open-source UI component library for building high-quality, accessible design systems and web apps for Vue. Previously Radix Vue
Top Related Projects
This is the repo for Vue 2. For Vue 3, go to https://github.com/vuejs/core
The library for web and native user interfaces.
Deliver web apps with confidence 🚀
web development for the rest of us
⚛️ Fast 3kB React alternative with the same modern API. Components & Virtual DOM.
A rugged, minimal framework for composing JavaScript behavior in your markup.
Quick Overview
Reka UI is a Vue 3 component library designed to provide a set of customizable and reusable UI components for building modern web applications. It aims to offer a comprehensive set of tools for developers to create consistent and visually appealing user interfaces with ease.
Pros
- Built specifically for Vue 3, taking advantage of its latest features and performance improvements
- Offers a wide range of customizable components, reducing development time and effort
- Provides a consistent design language across components, enhancing overall UI coherence
- Actively maintained and regularly updated with new features and bug fixes
Cons
- Limited documentation and examples compared to more established UI libraries
- May have a steeper learning curve for developers new to Vue 3 or component libraries
- Smaller community support compared to more popular alternatives like Vuetify or Element Plus
- Potential for breaking changes as the library is still in active development
Code Examples
- Using a basic button component:
<template>
<RButton variant="primary" @click="handleClick">
Click me
</RButton>
</template>
<script setup>
import { RButton } from 'reka-ui';
const handleClick = () => {
console.log('Button clicked!');
};
</script>
- Creating a form with input and select components:
<template>
<RForm @submit="handleSubmit">
<RInput v-model="name" label="Name" required />
<RSelect v-model="country" :options="countries" label="Country" />
<RButton type="submit">Submit</RButton>
</RForm>
</template>
<script setup>
import { ref } from 'vue';
import { RForm, RInput, RSelect, RButton } from 'reka-ui';
const name = ref('');
const country = ref('');
const countries = ['USA', 'Canada', 'UK', 'Australia'];
const handleSubmit = () => {
console.log('Form submitted:', { name: name.value, country: country.value });
};
</script>
- Using a modal component:
<template>
<RButton @click="showModal = true">Open Modal</RButton>
<RModal v-model="showModal" title="Example Modal">
<p>This is the content of the modal.</p>
<template #footer>
<RButton @click="showModal = false">Close</RButton>
</template>
</RModal>
</template>
<script setup>
import { ref } from 'vue';
import { RButton, RModal } from 'reka-ui';
const showModal = ref(false);
</script>
Getting Started
To start using Reka UI in your Vue 3 project, follow these steps:
-
Install the package:
npm install reka-ui -
Import and use components in your Vue files:
<script setup> import { RButton, RInput } from 'reka-ui'; </script> <template> <RButton>Click me</RButton> <RInput v-model="inputValue" /> </template> -
(Optional) Import the CSS file in your main.js or App.vue:
import 'reka-ui/dist/style.css';
Now you're ready to use Reka UI components in your Vue 3 application!
Competitor Comparisons
This is the repo for Vue 2. For Vue 3, go to https://github.com/vuejs/core
Pros of Vue
- Mature and widely adopted framework with extensive ecosystem
- Comprehensive documentation and large community support
- Flexible and scalable for both small and large applications
Cons of Vue
- Steeper learning curve for complex features
- Potential performance overhead for simple applications
- More opinionated structure compared to lightweight alternatives
Code Comparison
Vue:
<template>
<div>{{ message }}</div>
</template>
<script>
export default {
data() {
return {
message: 'Hello Vue!'
}
}
}
</script>
Reka UI:
import { createComponent } from '@reka-ui/core'
export default createComponent({
render() {
return <div>{this.message}</div>
},
data: {
message: 'Hello Reka UI!'
}
})
The code comparison shows that both frameworks use a component-based approach, but Vue uses a template-based syntax while Reka UI uses a more JavaScript-centric approach. Vue's structure separates template, script, and style sections, whereas Reka UI combines them in a single JavaScript object.
While Vue is a more established and feature-rich framework, Reka UI aims to provide a lightweight alternative with a focus on simplicity and performance. The choice between the two depends on project requirements, team expertise, and desired application complexity.
The library for web and native user interfaces.
Pros of React
- Massive ecosystem with extensive libraries and tools
- Well-established community support and documentation
- Battle-tested in large-scale production environments
Cons of React
- Steeper learning curve for beginners
- Requires additional libraries for state management and routing
- Can be overkill for smaller projects
Code Comparison
React:
function Welcome(props) {
return <h1>Hello, {props.name}</h1>;
}
const element = <Welcome name="Sara" />;
Reka UI:
<template>
<h1>Hello, {{ name }}</h1>
</template>
<script>
export default {
props: ['name']
}
</script>
React uses JSX syntax and functional components, while Reka UI follows a more Vue-like template structure. React's approach may be more familiar to JavaScript developers, but Reka UI's template syntax can be more intuitive for those with HTML backgrounds.
React's extensive ecosystem and community support make it a robust choice for large-scale applications. However, Reka UI's simplicity and Vue-inspired syntax could be advantageous for smaller projects or developers transitioning from Vue.
Ultimately, the choice between React and Reka UI depends on project requirements, team expertise, and personal preferences.
Deliver web apps with confidence 🚀
Pros of Angular
- Mature, widely-adopted framework with extensive documentation and community support
- Comprehensive ecosystem with built-in tools for routing, forms, and HTTP requests
- Strong TypeScript integration for improved type checking and tooling
Cons of Angular
- Steeper learning curve due to its complexity and size
- Heavier bundle size compared to lighter alternatives
- More opinionated structure, which may limit flexibility for some projects
Code Comparison
Angular component:
@Component({
selector: 'app-root',
template: '<h1>{{ title }}</h1>'
})
export class AppComponent {
title = 'Hello Angular';
}
Reka UI component (hypothetical, as no actual code is available in the repository):
import { Component } from 'reka-ui';
export default Component({
render() {
return <h1>{this.title}</h1>;
},
data: {
title: 'Hello Reka UI'
}
});
Note: The code comparison is speculative for Reka UI, as there's no publicly available code in the repository to make an accurate comparison. The Angular example showcases its TypeScript usage and decorator-based component definition, while the hypothetical Reka UI example assumes a more Vue-like syntax with a render function and data object.
web development for the rest of us
Pros of Svelte
- Mature and widely adopted framework with a large community and ecosystem
- Excellent performance due to compile-time optimizations
- Comprehensive documentation and learning resources
Cons of Svelte
- Steeper learning curve for developers new to component-based frameworks
- Less flexibility for custom build configurations compared to Reka UI
Code Comparison
Svelte component:
<script>
export let name = 'World';
</script>
<h1>Hello {name}!</h1>
Reka UI component (hypothetical, as Reka UI doesn't have public code examples):
<template>
<h1>Hello {{ name }}!</h1>
</template>
<script>
export default {
props: {
name: { default: 'World' }
}
}
</script>
While both frameworks aim to simplify component creation, Svelte's syntax is more concise and requires less boilerplate. However, Reka UI's approach may be more familiar to developers coming from other component-based frameworks.
Svelte offers a more complete solution for building web applications, including state management and routing. Reka UI, being newer and less established, may provide more flexibility for customization but lacks the extensive ecosystem and community support that Svelte enjoys.
Ultimately, the choice between these frameworks depends on project requirements, team expertise, and desired level of community support.
⚛️ Fast 3kB React alternative with the same modern API. Components & Virtual DOM.
Pros of Preact
- Mature and widely adopted project with a large community and ecosystem
- Extremely lightweight (3KB gzipped) with fast performance
- API compatibility with React, allowing easy migration
Cons of Preact
- Less feature-rich compared to full React
- Smaller ecosystem of third-party components and tools
- May require additional configuration for some React-specific features
Code Comparison
Preact:
import { h, render } from 'preact';
const App = () => <h1>Hello World</h1>;
render(<App />, document.body);
Reka UI:
<template>
<h1>Hello World</h1>
</template>
<script>
export default {
name: 'App'
}
</script>
Summary
Preact is a lightweight alternative to React, offering similar functionality with a smaller footprint. It's well-established and has good performance characteristics. Reka UI, on the other hand, is a Vue-based UI library that focuses on providing pre-built components and utilities for rapid development. While Preact aims for React compatibility and minimal size, Reka UI leverages Vue's ecosystem and offers a more opinionated set of UI components. The choice between them depends on project requirements, team expertise, and whether React or Vue alignment is preferred.
A rugged, minimal framework for composing JavaScript behavior in your markup.
Pros of Alpine
- More mature and widely adopted project with a larger community
- Lightweight and simple to integrate into existing projects
- Extensive documentation and examples available
Cons of Alpine
- Limited to DOM manipulation and basic interactivity
- May require additional libraries for complex state management
- Less suitable for building large-scale applications
Code Comparison
Alpine:
<div x-data="{ open: false }">
<button @click="open = !open">Toggle</button>
<span x-show="open">Content</span>
</div>
Reka UI:
<template>
<button @click="toggle">Toggle</button>
<span v-if="isOpen">Content</span>
</template>
<script>
export default {
data() {
return { isOpen: false }
},
methods: {
toggle() {
this.isOpen = !this.isOpen
}
}
}
</script>
Summary
Alpine is a lightweight JavaScript framework for adding interactivity to web pages, while Reka UI is a Vue-based UI component library. Alpine excels in simplicity and ease of integration, making it ideal for enhancing static sites. Reka UI, on the other hand, provides a more structured approach with Vue components, suitable for building complex user interfaces in Vue.js applications.
Convert
designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
Reka UI
Craft accessible web apps with Vue.
Documentation | Getting Started | Examples | Why Reka UI?
Installation
pnpm add reka-ui
npm install reka-ui
yarn add reka-ui
Documentation
For full documentation, visit reka-ui.com.
Releases
For changelog, visit releases.
Contributing
We would love to have your contributions! All PRs are welcome! We need help building the core components, docs, tests, stories! Join our discord and we will get you up and running!
Dev Setup
Docs
- Clone the repo
- Run
pnpm i - Run
pnpm buildto run buildreka-uilocally - Run
pnpm docs:devto run vitepress - Open
http://localhost:5173
Package
- Clone the repo
- Run
pnpm i - Run
pnpm story:devto run histoire (storybook) - Open
http://localhost:6006 - Run
pnpm testto test changes
Credits
All credits go to these open-source works and resources
Top Related Projects
This is the repo for Vue 2. For Vue 3, go to https://github.com/vuejs/core
The library for web and native user interfaces.
Deliver web apps with confidence 🚀
web development for the rest of us
⚛️ Fast 3kB React alternative with the same modern API. Components & Virtual DOM.
A rugged, minimal framework for composing JavaScript behavior in your markup.
Convert
designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot
design by: