daisyUI
Installation
Section titled “Installation”npm i @sjsf/daisyui5-theme
yarn add @sjsf/daisyui5-theme
pnpm add @sjsf/daisyui5-theme
bun add @sjsf/daisyui5-theme
daisyUI ^5.0.0
is required.
Install daisyUI v5
Section titled “Install daisyUI v5”Install daisyUI as a Tailwind plugin
Configuration
Section titled “Configuration”Register the theme source path by adding the following line to the app.css
file:.
@source "../node_modules/@sjsf/daisyui5-theme/dist";
Extra widgets
Section titled “Extra widgets”You can connect extra widgets using the following include
imports:
import "@sjsf/daisyui5-theme/extra-widgets/cally-date-picker-include"// Used by default in the following fields: multiEnumFieldimport "@sjsf/daisyui5-theme/extra-widgets/checkboxes-include"// Used by default in the following fields: fileField, filesFieldimport "@sjsf/daisyui5-theme/extra-widgets/file-include"import "@sjsf/daisyui5-theme/extra-widgets/filter-radio-buttons-include"import "@sjsf/daisyui5-theme/extra-widgets/multi-select-include"import "@sjsf/daisyui5-theme/extra-widgets/pikaday-date-picker-include"import "@sjsf/daisyui5-theme/extra-widgets/radio-buttons-include"import "@sjsf/daisyui5-theme/extra-widgets/radio-include"import "@sjsf/daisyui5-theme/extra-widgets/range-include"import "@sjsf/daisyui5-theme/extra-widgets/rating-include"import "@sjsf/daisyui5-theme/extra-widgets/switch-include"import "@sjsf/daisyui5-theme/extra-widgets/textarea-include"
UI options
Section titled “UI options”import type { ClassValue, HTMLAttributes, HTMLButtonAttributes, HTMLFormAttributes, HTMLInputAttributes, HTMLLabelAttributes, HTMLSelectAttributes, HTMLTextareaAttributes,} from "svelte/elements";import type { ButtonType, LayoutType } from "@sjsf/form/fields/components";import type { CalendarDateProps } from "cally";import type { PikadayOptions } from "pikaday";
type MapEvents<T> = { [K in keyof T as K extends `on${infer E}` ? `on:${Lowercase<E>}` : K]: T[K];};
type CalendarProps = MapEvents<CalendarDateProps> & { class?: ClassValue | null; placeholder?: string;};
export interface UiOptions { /** * Overrides the attributes of any button component. */ button?: HTMLButtonAttributes; /** * Overrides the attributes of a button with a specific type. * This override takes precedence over the `button` override, but does not replace it. */ buttons?: { [B in ButtonType]?: HTMLButtonAttributes; }; /** * Overrides the attributes of the description. */ descriptionAttributes?: HTMLAttributes<HTMLDivElement>; /** * Overrides the attributes of the errors list. */ errorsList?: HTMLAttributes<HTMLUListElement>;
form?: HTMLFormAttributes; /** * Overrides the attributes of the help. */ helpAttributes?: HTMLAttributes<HTMLDivElement>; /** * Overrides the attributes of the field label. */ labelAttributes?: HTMLLabelAttributes; /** * Overrides the attributes of any layout component. */ layout?: HTMLAttributes<HTMLDivElement>; /** * Overrides the attributes of a layout with a specific type. * This override takes precedence over the `layout` override, but does not replace it. */ layouts?: { [L in LayoutType]?: HTMLAttributes<HTMLDivElement>; }; submitButton?: HTMLButtonAttributes; /** * Overrides the attributes of the field title */ titleAttributes?: HTMLAttributes<HTMLDivElement>;
checkbox?: HTMLInputAttributes;
number?: HTMLInputAttributes;
select?: HTMLSelectAttributes;
text?: HTMLInputAttributes;
checkboxes?: HTMLInputAttributes;
datePicker?: HTMLInputAttributes;
file?: HTMLInputAttributes;
multiSelect?: HTMLSelectAttributes;
radio?: HTMLInputAttributes;
range?: HTMLInputAttributes;
textarea?: HTMLTextareaAttributes;
daisyui5CallyCalendarDateFormatter?: (date: string) => string; daisyui5CallyCalendarTrigger?: HTMLButtonAttributes; daisyui5CallyCalendar?: CalendarProps;
daisyui5Filter?: HTMLAttributes<HTMLDivElement>; daisyui5FilterItem?: HTMLInputAttributes;
daisyui5PikadayCalendar?: HTMLInputAttributes; daisyui5PikadayCalendarOptions?: PikadayOptions;
daisyui5RadioButtons?: HTMLInputAttributes;
daisyui5Rating?: HTMLInputAttributes;
daisyui5Switch?: HTMLInputAttributes;}
Widgets demo
Section titled “Widgets demo”{ "type": "object", "properties": { "checkbox": { "type": "object", "properties": { "default": { "type": "boolean" }, "error": { "type": "boolean" } } }, "checkboxes": { "type": "object", "properties": { "default": { "type": "array", "items": { "type": "string", "enum": [ "foo", "bar", "fuzz", "qux" ] }, "uniqueItems": true }, "error": { "type": "array", "items": { "type": "string", "enum": [ "foo", "bar", "fuzz", "qux" ] }, "uniqueItems": true } } }, "file": { "type": "object", "properties": { "default": { "type": "string", "format": "data-url" }, "error": { "type": "string", "format": "data-url" } } }, "multiFile": { "type": "object", "properties": { "default": { "type": "array", "items": { "type": "string", "format": "data-url" } }, "error": { "type": "array", "items": { "type": "string", "format": "data-url" } } } }, "number": { "type": "object", "properties": { "default": { "type": "number" }, "error": { "type": "number" } } }, "select": { "type": "object", "properties": { "default": { "type": "string", "enum": [ "foo", "bar", "fuzz", "qux" ] }, "error": { "type": "string", "enum": [ "foo", "bar", "fuzz", "qux" ] } } }, "text": { "type": "object", "properties": { "default": { "type": "string" }, "error": { "type": "string" } } }, "callyDatePicker": { "type": "object", "properties": { "default": { "type": "string" }, "error": { "type": "string" } } }, "filterRadioButtons": { "type": "object", "properties": { "default": { "type": "string", "enum": [ "foo", "bar", "fuzz", "qux" ] }, "error": { "type": "string", "enum": [ "foo", "bar", "fuzz", "qux" ] } } }, "multiSelect": { "type": "object", "properties": { "default": { "type": "array", "items": { "type": "string", "enum": [ "foo", "bar", "fuzz", "qux" ] }, "uniqueItems": true }, "error": { "type": "array", "items": { "type": "string", "enum": [ "foo", "bar", "fuzz", "qux" ] }, "uniqueItems": true } } }, "pikadayDatePicker": { "type": "object", "properties": { "default": { "type": "string" }, "error": { "type": "string" } } }, "radioButtons": { "type": "object", "properties": { "default": { "type": "string", "enum": [ "foo", "bar", "fuzz", "qux" ] }, "error": { "type": "string", "enum": [ "foo", "bar", "fuzz", "qux" ] } } }, "radio": { "type": "object", "properties": { "default": { "type": "string", "enum": [ "foo", "bar", "fuzz", "qux" ] }, "error": { "type": "string", "enum": [ "foo", "bar", "fuzz", "qux" ] } } }, "range": { "type": "object", "properties": { "default": { "type": "number" }, "error": { "type": "number" } } }, "rating": { "type": "object", "properties": { "default": { "type": "number" }, "error": { "type": "number" } } }, "switch": { "type": "object", "properties": { "default": { "type": "boolean" }, "error": { "type": "boolean" } } }, "textarea": { "type": "object", "properties": { "default": { "type": "string" }, "error": { "type": "string" } } } }}
{ "checkboxes": { "default": { "ui:components": { "arrayField": "multiEnumField" } }, "error": { "ui:components": { "arrayField": "multiEnumField" } } }, "file": { "default": { "ui:components": { "stringField": "fileField" } }, "error": { "ui:components": { "stringField": "fileField" } } }, "multiFile": { "default": { "ui:components": { "arrayField": "<function: anonymous>" } }, "error": { "ui:components": { "arrayField": "<function: anonymous>" } } }, "select": { "default": { "ui:components": { "stringField": "enumField" } }, "error": { "ui:components": { "stringField": "enumField" } } }, "callyDatePicker": { "default": { "ui:components": { "textWidget": "datePickerWidget" }, "ui:options": { "useLabel": false } }, "error": { "ui:components": { "textWidget": "datePickerWidget" }, "ui:options": { "useLabel": false } } }, "filterRadioButtons": { "default": { "ui:components": { "stringField": "enumField", "selectWidget": "<function: Filter_radio_buttons>" }, "ui:options": { "useLabel": false } }, "error": { "ui:components": { "stringField": "enumField", "selectWidget": "<function: Filter_radio_buttons>" }, "ui:options": { "useLabel": false } } }, "multiSelect": { "default": { "ui:components": { "arrayField": "multiEnumField", "checkboxesWidget": "multiSelectWidget" }, "ui:options": { "useLabel": true } }, "error": { "ui:components": { "arrayField": "multiEnumField", "checkboxesWidget": "multiSelectWidget" }, "ui:options": { "useLabel": true } } }, "pikadayDatePicker": { "default": { "ui:components": { "textWidget": "<function: Pikaday_date_picker>" } }, "error": { "ui:components": { "textWidget": "<function: Pikaday_date_picker>" } } }, "radioButtons": { "default": { "ui:components": { "stringField": "enumField", "selectWidget": "radioButtonsWidget" }, "ui:options": { "useLabel": false } }, "error": { "ui:components": { "stringField": "enumField", "selectWidget": "radioButtonsWidget" }, "ui:options": { "useLabel": false } } }, "radio": { "default": { "ui:components": { "stringField": "enumField", "selectWidget": "radioWidget" }, "ui:options": { "useLabel": false } }, "error": { "ui:components": { "stringField": "enumField", "selectWidget": "radioWidget" }, "ui:options": { "useLabel": false } } }, "range": { "default": { "ui:components": { "numberWidget": "rangeWidget" } }, "error": { "ui:components": { "numberWidget": "rangeWidget" } } }, "rating": { "default": { "ui:components": { "numberWidget": "ratingWidget" }, "ui:options": { "useLabel": false } }, "error": { "ui:components": { "numberWidget": "ratingWidget" }, "ui:options": { "useLabel": false } } }, "switch": { "default": { "ui:components": { "checkboxWidget": "switchWidget" } }, "error": { "ui:components": { "checkboxWidget": "switchWidget" } } }, "textarea": { "default": { "ui:components": { "textWidget": "textareaWidget" } }, "error": { "ui:components": { "textWidget": "textareaWidget" } } }}