@sjsf-lab/shadcn-extras-theme
Version:
The shadcn-svelte-extras based theme for svelte-jsonschema-form
97 lines (96 loc) • 2.48 kB
JavaScript
import { s } from 'theme-testing/specs';
import '@sjsf/form/fields/extra/array-tags-include';
import './theme/extra-widgets/file-drop-zone-include.js';
import './theme/extra-widgets/ip-v4-address-input-include.js';
import './theme/extra-widgets/nlp-date-input-include.js';
import './theme/extra-widgets/password-include.js';
import './theme/extra-widgets/phone-input-include.js';
import './theme/extra-widgets/star-rating-include.js';
import './theme/extra-widgets/tags-input-include.js';
export const specs = {
fileDropZone: [
s.file,
{
'ui:components': {
stringField: 'fileField',
fileWidget: 'shadcnExtrasFileDropZoneWidget'
}
},
{}
],
fileDropZoneMultiple: [
s.filesArray,
{
'ui:components': {
arrayField: 'arrayFilesField',
fileWidget: 'shadcnExtrasFileDropZoneWidget'
}
},
{}
],
ipV4AddressInput: [
s.text,
{
'ui:components': {
textWidget: 'shadcnExtrasIPv4AddressInputWidget'
},
'ui:options': {
useLabel: false
}
},
{}
],
nlpDateInput: [
s.text,
{
'ui:components': {
textWidget: 'shadcnExtrasNLPDateInputWidget'
},
'ui:options': {
useLabel: false
}
},
{}
],
password: [
s.text,
{
'ui:components': {
textWidget: 'shadcnExtrasPasswordWidget'
}
},
{}
],
phoneInput: [
s.text,
{
'ui:components': {
textWidget: 'shadcnExtrasPhoneInputWidget'
}
},
{}
],
starRating: [
s.number,
{
'ui:components': {
numberWidget: 'shadcnExtrasStarRatingWidget'
},
'ui:options': {
useLabel: false
}
},
{}
],
tagsInput: [
s.uniqueArray,
{
'ui:components': {
arrayField: 'arrayTagsField',
tagsWidget: 'shadcnExtrasTagsInputWidget'
}
},
{}
]
};
export const extraWidgets = Object.keys(import.meta.glob('./theme/extra-widgets/*.svelte')).map((widget) => widget.substring(22, widget.length - 7));