Skip to content

tuanphung2308/react-jsonschema-form-shadcn-boilerplate

Repository files navigation

React JSONSchema Form with Vite, Tailwind, and Shadcn

A complete setup guide for using React JSONSchema Form with Vite, Tailwind CSS, and Shadcn theme.

Official V6

We are getting official support for v6 here. This is for v5.

Project Setup

Create Vite Project

npm create vite@latest myapp -- --template react-ts

Core Dependencies

Install RJSF core packages:

npm install @rjsf/core @rjsf/utils @rjsf/validator-ajv8 @rjsf/shadcn --save

Tailwind CSS Setup

  1. Install Tailwind:
npm install -D tailwindcss@3
npx tailwindcss init
  1. Configure Tailwind (tailwind.config.ts):
/** @type {import('tailwindcss').Config} */
export default {
  content: [
    "./src/**/*.{html,js}",
    "node_modules/@rjsf/shadcn/src/**/*.{js,ts,jsx,tsx,mdx}"
  ],
  theme: {
    extend: {},
  },
  plugins: [],  
}
  1. Add Tailwind directives to your CSS:
@tailwind base;
@tailwind components;
@tailwind utilities;

TypeScript Configuration

Path Aliases Setup

  1. Update tsconfig.json:
{
  "files": [],
  "references": [
    { "path": "./tsconfig.app.json" },
    { "path": "./tsconfig.node.json" }
  ],
  "compilerOptions": {
    "baseUrl": ".",
    "paths": {
      "@/*": ["./src/*"]
    }
  }
}
  1. Update tsconfig.app.json:
{
  "compilerOptions": {
    "baseUrl": ".",
    "paths": {
      "@/*": ["./src/*"]
    }
  }
}

Vite Configuration

  1. Install required dependency:
npm install -D @types/node
  1. Update vite.config.ts:
import path from "path"
import react from "@vitejs/plugin-react"
import { defineConfig } from "vite"
 
export default defineConfig({
  plugins: [react()],
  resolve: {
    alias: {
      "@": path.resolve(__dirname, "./src"),
    },
  },
})

Usage

Basic implementation example:

import { withTheme } from '@rjsf/core';
import { Theme as shadcnTheme } from '@rjsf/shadcn';
import { RJSFSchema } from '@rjsf/utils';
import validator from '@rjsf/validator-ajv8';

const Form = withTheme(shadcnTheme);
const schema: RJSFSchema = {}; // Your schema

export default function App() {
    return <Form schema={schema} validator={validator} />;
}

## RTL Support

### Installation
```bash
npm install @radix-ui/react-direction --save

Implementation

  1. Wrap your layout with DirectionProvider:
import { DirectionProvider as RadixDirectionProvider } from '@radix-ui/react-direction;

function Layout({ children, direction }) {
    return (
        <RadixDirectionProvider dir={direction}>
            {children}
        </RadixDirectionProvider>
    );
}
  1. Set HTML direction attribute:
<html dir="rtl">
  1. You can refer to direction-context.tsx, direction-provider.tsx and rtl-toggle.tsx for implementation.

Tailwind v4

Add the following line to your equivalent global.css

@source "../node_modules/@rjsf/shadcn";

About

Example setup for rjsf/shadcn for rjsf v5

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages