Skip to content
Playground Form Builder

shadcn-svelte-extras

Terminal window
npm i @sjsf/shadcn4-theme @sjsf-lab/shadcn-extras-theme

Required peer dependencies: @sjsf/form@^3.0.0 @sjsf/shadcn4-theme@^3.0.0 bits-ui@^2.14.0 clsx@^2.1.0 svelte@^5.30.0 tailwind-merge@^3.3.0

Optional peer dependencies: @lucide/svelte@^0.544.0 @zxcvbn-ts/core@^3.0.0 @zxcvbn-ts/language-common@^3.0.0 @zxcvbn-ts/language-en@^3.0.0 country-flag-icons@^1.5.0 runed@^0.31.0 svelte-tel-input@^3.6.0 svelte-toolbelt@^0.9.0 tailwind-variants@^3.1.0 yeezy-dates@^1.0.0

Installation - shadcn-svelte

Register the theme source path by adding the following line to the app.css file:.

@source "../node_modules/@sjsf-lab/shadcn-extras-theme/dist";

Since shadcn-svelte and shadcn-svelte-extras is not a component library you should provide your components via setThemeContext.

import { setThemeContext } from '@sjsf/shadcn4-theme';
import * as components from '@sjsf/shadcn4-theme/new-york';
import * as extraComponents from '@sjsf-lab/shadcn-extras-theme/ui';
setThemeContext({ components: { ...components, ...extraComponents } })

You can connect extra widgets using the following include imports:

import "@sjsf-lab/shadcn-extras-theme/extra-widgets/file-drop-zone-include"
import "@sjsf-lab/shadcn-extras-theme/extra-widgets/ip-v4-address-input-include"
import "@sjsf-lab/shadcn-extras-theme/extra-widgets/nlp-date-input-include"
import "@sjsf-lab/shadcn-extras-theme/extra-widgets/password-include"
import "@sjsf-lab/shadcn-extras-theme/extra-widgets/phone-input-include"
import "@sjsf-lab/shadcn-extras-theme/extra-widgets/star-rating-include"
import "@sjsf-lab/shadcn-extras-theme/extra-widgets/tags-input-include"