🚀 Big News: Socket Acquires Coana to Bring Reachability Analysis to Every Appsec Team.Learn more
Socket
Book a DemoInstallSign in
Socket

@rjsf/daisyui

Package Overview
Dependencies
Maintainers
2
Versions
10
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@rjsf/daisyui

Daisy UI components for react-jsonschema-form

6.0.0-beta.10
latest
Source
npm
Version published
Maintainers
2
Created
Source

@rjsf/daisyui

Build Status npm npm downloads Contributors License

A DaisyUI theme for react-jsonschema-form.

This package integrates DaisyUI, Tailwind CSS, and RJSF to provide a modern, customizable form experience.

Screenshots

DaisyUI Form Example 1 DaisyUI Form Example 2

Features

  • Complete DaisyUI styling for all RJSF form elements
  • Responsive design with mobile-friendly layouts
  • Connected card styling for nested elements and arrays
  • Consistent visual hierarchy for complex forms
  • Support for all RJSF field types including:
    • Text inputs with proper styling and validation states
    • Select dropdowns with customizable option rendering
    • Checkboxes and radio buttons with optimized layouts
    • Arrays with add/remove/reorder functionality
    • Objects with proper nesting and visual hierarchy
    • Date/time inputs with cross-browser compatibility
  • Support for custom themes via DaisyUI's theme system
  • Accessible form components following WAI-ARIA practices

Getting Started

Prerequisites

  • daisyui >= 5
  • @fluentui/react-icons >= 2
  • @fluentui/react-migration-v0-v9 >= 9
  • @rjsf/core >= 6
  • @rjsf/utils >= 6
  • @rjsf/validator-ajv8 >= 6

Installation

npm install @rjsf/daisyui @rjsf/core @rjsf/utils @rjsf/validator-ajv8 tailwindcss daisyui

Usage

import { Form } from '@rjsf/daisyui';
import validator from '@rjsf/validator-ajv8';

function App() {
  return (
    <Form schema={schema} uiSchema={uiSchema} validator={validator} onChange={console.log} onSubmit={console.log} />
  );
}

Theme Customization

The form components use DaisyUI's theme system. You can customize the theme by adding DaisyUI theme classes to your HTML:

<html data-theme="light">
  <!-- or any other DaisyUI theme -->
</html>

For dynamic theme switching, you can change the data-theme attribute in your application code.

Tailwind Configuration

Make sure your tailwind.config.js includes the DaisyUI plugin:

/** @type {import('tailwindcss').Config} */
module.exports = {
  content: ['./src/**/*.{js,jsx,ts,tsx}'],
  theme: {
    extend: {},
  },
  plugins: [require('daisyui')],
  daisyui: {
    themes: true,
  },
};

Customization

Grid Layout

The DaisyUI theme supports the standard RJSF layout grid system. You can use grid layouts by incorporating the LayoutGridField in your UI schema:

import { RJSFSchema, UiSchema } from '@rjsf/utils';
import Form from '@rjsf/daisyui';
import validator from '@rjsf/validator-ajv8';

const schema = {
  type: 'object',
  properties: {
    firstName: { type: 'string', title: 'First Name' },
    lastName: { type: 'string', title: 'Last Name' },
    email: { type: 'string', format: 'email', title: 'Email' },
    phone: { type: 'string', title: 'Phone' },
  },
};

// Use grid layout for the form
const uiSchema = {
  'ui:field': 'LayoutGridField',
  'ui:layoutGrid': {
    'ui:row': {
      children: [
        {
          'ui:row': {
            children: [
              {
                'ui:col': {
                  xs: 12,
                  sm: 6,
                  children: ['firstName'],
                },
              },
              {
                'ui:col': {
                  xs: 12,
                  sm: 6,
                  children: ['lastName'],
                },
              },
            ],
          },
        },
        {
          'ui:row': {
            children: [
              {
                'ui:col': {
                  xs: 12,
                  sm: 6,
                  children: ['email'],
                },
              },
              {
                'ui:col': {
                  xs: 12,
                  sm: 6,
                  children: ['phone'],
                },
              },
            ],
          },
        },
      ],
    },
  },
};

const MyForm = () => <Form schema={schema} uiSchema={uiSchema} validator={validator} />;

The DaisyUI theme uses a flexible grid system based on Tailwind CSS's flex utilities. This grid layout integrates with the standard RJSF layout system, providing a consistent experience across all themes.

Theme Configuration

DaisyUI itself provides a variety of themes. To use a specific theme, add the data-theme attribute to your root element:

<div data-theme='dark'>
  <Form schema={schema} validator={validator} />
</div>

You can also dynamically change themes in your application:

import { useState } from 'react';
import { Form } from '@rjsf/daisyui';
import validator from '@rjsf/validator-ajv8';

function App() {
  const [theme, setTheme] = useState('light');

  return (
    <div data-theme={theme}>
      <select value={theme} onChange={(e) => setTheme(e.target.value)}>
        <option value='light'>Light</option>
        <option value='dark'>Dark</option>
        <option value='cupcake'>Cupcake</option>
        <option value='cyberpunk'>Cyberpunk</option>
        <option value='synthwave'>Synthwave</option>
        {/* Add more themes as needed */}
      </select>

      <Form schema={schema} validator={validator} />
    </div>
  );
}

Development

To develop locally:

# Clone the repository
git clone https://github.com/rjsf-team/react-jsonschema-form.git
cd react-jsonschema-form

# Install dependencies
npm install

# Build packages
npm run build

# Run playground
npm run start:playground

To test the DaisyUI theme specifically, select it from the themes dropdown in the playground.

License

Apache-2.0

FAQs

Package last updated on 22 May 2025

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts