Getting started
ReframeUI is a multi-framework design system built on the W3C DTCG token format. Install the package for your framework and you're ready to go.
Installation
Install the package for your framework via your package manager:
Terminalbash
# React
npm install @reframeui/react @reframeui/atoms
# Vue
npm install @reframeui/vue @reframeui/atoms
# Angular
npm install @reframeui/angular @reframeui/atomsTokens
Inject the ReframeUI CSS custom properties into your app's root:
layout.tsxtsx
import { cssVariables } from '@reframeui/atoms/tokens';
import { TokenStyleInjector } from '@reframeui/react';
export default function RootLayout({ children }) {
return (
<html>
<head>
<TokenStyleInjector css={cssVariables} />
</head>
<body>{children}</body>
</html>
);
}Components
React
App.tsxtsx
import { ReframeButton, ReframeBadge } from '@reframeui/react';
export function App() {
return (
<div>
<ReframeBadge variant="success">Active</ReframeBadge>
<ReframeButton variant="primary" size="md">
Click me
</ReframeButton>
</div>
);
}Vue
App.vuevue
<template>
<reframe-badge variant="success">Active</reframe-badge>
<reframe-button variant="primary" size="md">Click me</reframe-button>
</template>
<script setup>
import '@reframeui/atoms';
</script>Angular
app.module.tsts
import { NgModule } from '@angular/core';
import { ReframeButtonModule, ReframeBadgeModule } from '@reframeui/angular';
@NgModule({
imports: [ReframeButtonModule, ReframeBadgeModule],
})
export class AppModule {}Theming
Override any token by injecting a CSS block after the base cssVariables:
theme.csscss
:root {
/* Electric orange primary */
--reframe-action-primary: oklch(0.70 0.20 50 / 1);
--reframe-action-primary-hover: oklch(0.62 0.22 50 / 1);
/* Larger radius */
--reframe-radius-md: 14px;
}Figma Plugin
The Figma plugin is available in the Figma Community. Install it, connect your repository, and tokens will sync automatically on every commit.