Install and configure Laravel with Inertia
Start by creating a new Laravel project with Inertia and React using the laravel installer laravel new my-app:
laravel new my-app
laravel new my-app --typescript --breeze --stack=react --git --no-interaction
Run the @uplusion23/forge-ui init command to setup your project:
@uplusion23/forge-ui
bunx --bun @uplusion23/forge-ui init
You will be asked a few questions to configure components.json:
components.json
Would you like to use TypeScript (recommended)? no / yes Which style would you like to use? › Default Which color would you like to use as base color? › Slate Where is your global CSS file? › resources/css/app.css Do you want to use CSS variables for colors? › no / yes Where is your tailwind.config.js located? › tailwind.config.js Configure the import alias for components: › @/Components Configure the import alias for utils: › @/lib/utils Are you using React Server Components? › no / yes
The @uplusion23/forge-ui CLI will automatically overwrite your tailwind.config.js. Update it to look like this:
tailwind.config.js
import forms from "@tailwindcss/forms" import defaultTheme from "tailwindcss/defaultTheme" /** @type {import('tailwindcss').Config} */ export default { darkMode: "class", content: [ "./vendor/laravel/framework/src/Illuminate/Pagination/resources/views/*.blade.php", "./storage/framework/views/*.php", "./resources/views/**/*.blade.php", "./resources/js/**/*.tsx", ], theme: { container: { center: true, padding: "2rem", screens: { "2xl": "1400px", }, }, extend: { colors: { border: "hsl(var(--border))", input: "hsl(var(--input))", ring: "hsl(var(--ring))", background: "hsl(var(--background))", foreground: "hsl(var(--foreground))", primary: { DEFAULT: "hsl(var(--primary))", foreground: "hsl(var(--primary-foreground))", }, secondary: { DEFAULT: "hsl(var(--secondary))", foreground: "hsl(var(--secondary-foreground))", }, destructive: { DEFAULT: "hsl(var(--destructive))", foreground: "hsl(var(--destructive-foreground))", }, muted: { DEFAULT: "hsl(var(--muted))", foreground: "hsl(var(--muted-foreground))", }, accent: { DEFAULT: "hsl(var(--accent))", foreground: "hsl(var(--accent-foreground))", }, popover: { DEFAULT: "hsl(var(--popover))", foreground: "hsl(var(--popover-foreground))", }, card: { DEFAULT: "hsl(var(--card))", foreground: "hsl(var(--card-foreground))", }, }, borderRadius: { lg: `var(--radius)`, md: `calc(var(--radius) - 2px)`, sm: "calc(var(--radius) - 4px)", }, fontFamily: { sans: ["Figtree", ...defaultTheme.fontFamily.sans], }, keyframes: { "accordion-down": { from: { height: 0 }, to: { height: "var(--radix-accordion-content-height)" }, }, "accordion-up": { from: { height: "var(--radix-accordion-content-height)" }, to: { height: 0 }, }, }, animation: { "accordion-down": "accordion-down 0.2s ease-out", "accordion-up": "accordion-up 0.2s ease-out", }, }, }, plugins: [forms, require("tailwindcss-animate")], }
You can now start adding components to your project.
bunx --bun @uplusion23/forge-ui add button
The command above will add the Button component to your project. You can then import it like this:
Button
import { Button } from "@/Components/ui/button" export default function Home() { return ( <div> <Button>Click me</Button> </div> ) }