Building Beautiful and Accessible UIs with Ease
Installation
To get started with Archi-ui in your React project, install it via npm:
Installing through NPM
Archi-UI UI is distributed as an NPM package.
Using npm
npm install archi-ui lucide-reactPeer dpendencies
Please note that react and react-dom are peer dependencies, meaning you should ensure they are installed before installing Archi-UI.
"peerDependencies": {
    "react": "^19.1.0",
    "react-dom": "^19.1.0"
  },Set Up Tailwind CSS 
Archi-UI uses Tailwind CSS for styling. Make sure you have it configured in your project. If not, install and configure it, Follow the Tailwind CSS  installation instructions to get started:
Usage
Include the Stylesheet
First, import the main Archi-ui stylesheet into your application’s entry point (e.g., src/main.tsx, src/App.tsx, src/index.tsx or app/layout.jsx):
// src/main.tsx or src/App.tsx
import React from 'react';
import ReactDOM from 'react-dom/client';
import App from './App';
import 'archi-ui/dist/index.css'; // Import the main stylesheet generated by Archi-ui
 
ReactDOM.createRoot(document.getElementById('root')!).render(
  <React.StrictMode>
    <App />
  </React.StrictMode>,
);Configure styles
Add the following to your styles/globals.css file. You can learn more about using CSS variables for theming in the theming section.
@import "tailwindcss";
 
:root {
  --background: 0 0% 100%;
  --foreground: 0 0% 0%;
 
  --skeleton: 0, 0%, 0%, 0.11;
  --ghost: 0 0% 80%;
 
  --natural: 0 0% 20%;
  --tooltip: 0 0% 38%;
 
  --selected: 210, 79%, 46%, 0.078;
  --selectedHover: 210, 79%, 46%, 0.122;
 
  --chipDelete: 0, 0%, 0%, 0.259;
  --chipDeleteHover: 0, 0%, 0%, 0.4;
 
  --divider: 0, 0%, 0%, 0.122;
 
  --disabled: 0, 0%, 0%, 0.122;
  --disabled-foreground: 0, 0%, 0%, 0.259;
  
  --default: 0 0% 88%;
  --default-foreground: 0, 0%, 0%, 0.871;
 
  --icon-foreground: 0, 0%, 0%, 0.541;
 
  --input: 0, 0%, 0%, 0.059;
  --input-hover: 0, 0%, 0%, 0.09;
  --input-border: 0 0% 0%;
 
  --border: 0 0% 74%;
 
  --primary: 210 79% 46%;
  --primary-foreground: 0 0% 100%;
 
  --secondary: 291 64% 42%;
  --secondary-foreground: 0 0% 100%;
 
  --info: 201 98% 41%;
  --info-foreground: 0 0% 100%;
 
  --warning: 27 98% 47%;
  --warning-foreground: 0 0% 100%;
 
  --success: 123 46% 34%;
  --success-foreground: 0 0% 100%;
 
  --error: 0 64% 51%;
  --error-foreground: 0 0% 100%;
 
  --ring: 215 20% 65%;
 
  --accent: 0, 0%, 0%, 0.039;
 
  --muted: 0, 0%, 0%, 0.078;
  --mutedHover: 0, 0%, 0%, 0.122;
  --muted-foreground: 0 0% 100%;
 
  --popover: 0 0% 100%;
 
  --surface: 0, 0%, 100%;
 
  --preview: 0 0% 100%;
}
 
.dark {
  --background: 0 0% 12%;
  --foreground: 0 0% 100%;
  
  --skeleton: 0, 0%, 100%, 0.129;
  --ghost: 0 0% 60%;
 
  --natural: 0 0% 100%;
  --tooltip: 0 0% 38%;
 
  --selected: 207, 90%, 77%, 0.161;
  --selectedHover: 207, 90%, 77%, 0.239;
 
  --chipDelete: 0, 0%, 100%, 0.259;
  --chipDeleteHover: 0, 0%, 100%, 0.4;
 
  --divider: 0, 0%, 100%, 0.122;
 
  --disabled: 0, 0%, 100%, 0.122;
  --disabled-foreground: 0, 0%, 100%, 0.302;
 
  --default: 0 0% 26%;
  --default-foreground: 0, 0%, 0%, 0.871;
 
  --icon-foreground: 0 0% 100%;
 
  --input: 0, 0%, 100%, 0.09;
  --input-hover: 0, 0%, 100%, 0.129;
  --input-border: 0 0% 100%;
 
  --border: 0 0% 38%;
 
  --primary: 207 90% 77%;
  --primary-foreground: 0, 0%, 0%, 0.871;
 
  --secondary: 291 47% 71%;
  --secondary-foreground: 0, 0%, 0%, 0.871;
 
  --info: 199 92% 56%;
  --info-foreground: 0, 0%, 0%, 0.871;
 
  --warning: 36 100% 57%;
  --warning-foreground: 0, 0%, 0%, 0.871;
 
  --success: 123 38% 57%;
  --success-foreground: 0, 0%, 0%, 0.871;
 
  --error: 4 90% 58%;
  --error-foreground: 0, 0%, 0%, 0.871;
 
  --ring: 217 33% 17%;
 
  --accent: 0, 0%, 100%, 0.078;
 
  --muted: 0, 0%, 100%, 0.161;
  --mutedHover: 0, 0%, 100%, 0.239;
  --muted-foreground: 0 0% 12%;
 
  --popover: 210 5% 20%;
 
  --surface: 200 7% 17%;
 
  --preview: 231, 13%, 10%;
}
 
@theme inline {
  --color-background: hsl(var(--background));
  --color-foreground: hsl(var(--foreground));
  --color-border: hsl(var(--border));
  --color-divider: hsl(var(--divider));
  --color-natural: hsl(var(--natural));
  --color-ghost: hsl(var(--ghost));
  --color-selected: hsl(var(--selected));
  --color-selectedHover: hsl(var(--selectedHover));
  --color-skeleton: hsl(var(--skeleton));
  --color-tooltip: hsl(var(--tooltip));
  --color-ring: hsl(var(--ring));
  --color-chipDelete: hsl(var(--chipDelete));
  --color-chipDeleteHover: hsl(var(--chipDeleteHover));
 
  --color-primary: hsl(var(--primary));
  --color-primary-foreground: hsl(var(--primary-foreground));
 
  --color-secondary: hsl(var(--secondary));
  --color-secondary-foreground: hsl(var(--secondary-foreground));
 
  --color-info: hsl(var(--info));
  --color-info-foreground: hsl(var(--info-foreground));
 
  --color-warning: hsl(var(--warning));
  --color-warning-foreground: hsl(var(--warning-foreground));
 
  --color-success: hsl(var(--success));
  --color-success-foreground: hsl(var(--success-foreground));
 
  --color-error: hsl(var(--error));
  --color-error-foreground: hsl(var(--error-foreground));
 
  --color-input: hsl(var(--input));
  --color-input-hover: hsl(var(--input-hover));
  --color-input-border: hsl(var(--input-border));
 
  --color-disabled: hsl(var(--disabled));
  --color-disabled-foreground: hsl(var(--disabled-foreground));
 
  --color-default: hsl(var(--default));
  --color-default-foreground: hsl(var(--default-foreground));
 
  --color-muted: hsl(var(--muted));
  --color-muted-foreground: hsl(var(--muted-foreground));
  --color-muted-hover: hsl(var(--muted-hover));
 
  --color-accent: hsl(var(--accent));
  --color-accent-foreground: hsl(var(--accent-foreground));
 
  --color-popover: hsl(var(--popover));
  --color-popover-foreground: hsl(var(--popover-foreground));
 
  --color-surface: hsl(var(--surface));
  --color-surface-foreground: hsl(var(--surface-foreground));
 
  --color-icon-foreground: hsl(var(--icon-foreground));
 
  --color-preview: hsl(var(--preview));
 
  --font-sans: hsl(var(--font-geist-sans));
  --font-mono: hsl(var(--font-geist-mono));
}
 
@keyframes waves {
  0% {
    transform: translateX(-100%);
  }
  100% {
    transform: translateX(100%);
  }
}
 
@utility wave {
  position: relative;
 
  &::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    bottom: 0;
    right: 0;
    animation: waves 2s linear 0.5s infinite;
    background: linear-gradient(90deg, transparent, rgba(225, 225, 255, 0.4), transparent);
    pointer-events: none;
  }
}
 
@keyframes indeterminate-1 {
  0% {
    left: -35%;
    right: 100%;
  }
  60% {
    left: 100%;
    right: -90%;
  }
  100% {
    left: 100%;
    right: -90%;
  }
}
 
@keyframes indeterminate-2 {
  0% {
    left: -200%;
    right: 100%;
  }
  60% {
    left: 107%;
    right: -8%;
  }
  100% {
    left: 1007%;
    right: -8%;
  }
}
 
.animate-indeterminate {
  position: relative;
  overflow: hidden;
}
 
.animate-indeterminate-bar-1 {
  position: absolute;
  left: 0;
  right: 0;
  top: 0;
  bottom: 0;
  transition: all 0.5s ease-in-out;
  animation: indeterminate-1 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite;
}
 
.animate-indeterminate-bar-2 {
  position: absolute;
  left: 0;
  right: 0;
  top: 0;
  bottom: 0;
  transition: all 0.5s ease-in-out;
  animation: indeterminate-2 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) 1.15s infinite;
}
 
@keyframes query {
  0%, 100% {
    transform: translateX(-100%);
  }
  50% {
    transform: translateX(100%);
  }
}
 
.animate-query {
  position: relative;
  overflow: hidden;
}
 
.animate-query-bar {
  position: absolute;
  left: 0;
  right: 0;
  top: 0;
  bottom: 0;
  transition: all 2s ease-in-out;
  animation: query 2s infinite linear;
}
 
@keyframes dash {
	0% {
		stroke-dasharray: 1, 200;
		stroke-dashoffset: 0;
	}
	50% {
		stroke-dasharray: 100, 200;
		stroke-dashoffset: -15;
	}
	100% {
		stroke-dasharray: 100, 200;
		stroke-dashoffset: -125;
	}
}
 
.animate-dash {
	animation: dash 1.8s ease-in-out infinite;
}
 
@keyframes bar {
  0% {
    opacity: 100%;
  }
  100% {
    transform: scaleY(0.70);
    opacity: 50%;
  }
}
 
.animate-bar {
  animation: bar 1s infinite;
}Use Components
Now you can import and use Archi-ui components in your React application:
import { Button } from 'archi-ui';
 
export default function Example() {
  return <Button variant="filled">Click Me</Button>;
}start your build process
Run your build process with npm run dev.
npm run dev