Flowbite
Flowbite™ is a registered trademark of Bergside Inc. This website is not affiliated with, endorsed by, or sponsored by Bergside Inc. All rights to the trademark are owned by Bergside Inc.
Installation
Section titled “Installation”npm i @sjsf/flowbite3-theme
yarn add @sjsf/flowbite3-theme
pnpm add @sjsf/flowbite3-theme
bun add @sjsf/flowbite3-theme
flowbite-svelte ^1.6.0
is required.
Install Flowbite Svelte v3
Section titled “Install Flowbite Svelte v3”Quickstart - Flowbite Svelte
Configuration
Section titled “Configuration”Register the theme source path by adding the following line to the app.css
file:.
@source "../node_modules/@sjsf/flowbite3-theme/dist";
Extra widgets
Section titled “Extra widgets”You can connect extra widgets using the following include
imports:
// Used by default in the following fields: multiEnumFieldimport "@sjsf/flowbite3-theme/extra-widgets/checkboxes-include"import "@sjsf/flowbite3-theme/extra-widgets/date-picker-include"// Used by default in the following fields: fileField, filesFieldimport "@sjsf/flowbite3-theme/extra-widgets/file-include"import "@sjsf/flowbite3-theme/extra-widgets/multi-select-include"import "@sjsf/flowbite3-theme/extra-widgets/radio-buttons-include"import "@sjsf/flowbite3-theme/extra-widgets/radio-include"import "@sjsf/flowbite3-theme/extra-widgets/range-include"import "@sjsf/flowbite3-theme/extra-widgets/switch-include"// Used by default in the following fields: tagsFieldimport "@sjsf/flowbite3-theme/extra-widgets/tags-include"import "@sjsf/flowbite3-theme/extra-widgets/textarea-include"
UI options
Section titled “UI options”import type { HTMLAttributes, HTMLButtonAttributes, HTMLFormAttributes,} from "svelte/elements";import type { ButtonType, LayoutType } from "@sjsf/form/fields/exports";import type { ButtonGroupProps, ButtonProps as ButtonPropsUnion, ButtonToggleGroupProps, ButtonToggleProps, CheckboxProps, DatepickerProps, FileuploadProps, HelperProps, InputProps, LabelProps, MultiSelectProps, RadioProps, RangeProps, SelectProps, TagsProps, TextareaProps, ToggleProps,} from "flowbite-svelte3";
type ButtonProps = Extract< ButtonPropsUnion, { type?: HTMLButtonAttributes["type"] }>;
export interface UiOptions { flowbite3Button?: ButtonProps; flowbite3Buttons?: { [B in ButtonType]?: ButtonProps; }; /** * Overrides the attributes of the description. */ descriptionAttributes?: HTMLAttributes<HTMLDivElement>; /** * Overrides the attributes of the errors list. */ errorsList?: HTMLAttributes<HTMLUListElement>;
form?: HTMLFormAttributes;
flowbite3Help?: HelperProps;
flowbite3Label?: LabelProps; /** * 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>; }; flowbite3ButtonGroup?: ButtonGroupProps;
flowbite3SubmitButton?: ButtonProps; /** * Overrides the attributes of the field title */ titleAttributes?: HTMLAttributes<HTMLDivElement>;
flowbite3Checkbox?: CheckboxProps;
flowbite3Number?: InputProps<number | undefined>;
flowbite3Select?: SelectProps<number>;
flowbite3Text?: InputProps<string | undefined>;
flowbite3Checkboxes?: CheckboxProps;
flowbite3Datepicker?: DatepickerProps;
flowbite3File?: FileuploadProps;
flowbite3MultiSelect?: Omit<MultiSelectProps<number>, "value">;
flowbite3RadioButtons?: Omit<ButtonToggleGroupProps, 'children'>; flowbite3RadioButtonsItem?: Partial<ButtonToggleProps>;
flowbite3Radio?: RadioProps<number>;
flowbite3Range?: RangeProps;
flowbite3Switch?: ToggleProps;
flowbite3Tags?: Omit<TagsProps, "value">;
flowbite3Textarea?: TextareaProps;}
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" } } }, "datePicker": { "type": "object", "properties": { "default": { "type": "string" }, "error": { "type": "string" } } }, "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 } } }, "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" } } }, "switch": { "type": "object", "properties": { "default": { "type": "boolean" }, "error": { "type": "boolean" } } }, "tags": { "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 } } }, "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" } } }, "datePicker": { "default": { "ui:components": { "textWidget": "datePickerWidget" }, "ui:options": { "useLabel": false } }, "error": { "ui:components": { "textWidget": "datePickerWidget" }, "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 } } }, "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" } } }, "switch": { "default": { "ui:components": { "checkboxWidget": "switchWidget" } }, "error": { "ui:components": { "checkboxWidget": "switchWidget" } } }, "tags": { "default": { "ui:components": { "arrayField": "<function: anonymous>" } }, "error": { "ui:components": { "arrayField": "<function: anonymous>" } } }, "textarea": { "default": { "ui:components": { "textWidget": "textareaWidget" } }, "error": { "ui:components": { "textWidget": "textareaWidget" } } }}