Labels and icons
Translation
Section titled “Translation”A required component of the form is translate, which is used in multiple places, including buttons and labels.
Translations are imported from @sjsf/form/translations/{locale}, currently supported locales:
enru
Text is good, but you can do better by adding icons!
<script lang="ts">
import Send from "@lucide/svelte/icons/send";
import { SimpleForm } from "@sjsf/form";
import { fromRecord } from "@sjsf/form/lib/resolver";
import * as defaults from "$lib/sjsf/defaults";
</script>
<SimpleForm
{...defaults}
schema={{
title: "With icons",
type: "null",
}}
icons={fromRecord({
submit,
})}
/>
{#snippet submit()}
Submit <Send size={12} />
{/snippet}
There are also ready-made sets of icons for the control buttons.
npm i @sjsf/flowbite-iconspnpm add @sjsf/flowbite-iconsyarn add @sjsf/flowbite-iconsbun add @sjsf/flowbite-iconsdeno add @sjsf/flowbite-iconsAdd icons content to the tailwindcss config:
import { FLOWBITE_ICONS_CONTENT } from "@sjsf/flowbite-icons/preset";
/** @type {import('tailwindcss').Config} */export default { content: ["./src/**/*.{html,js,svelte,ts}", FLOWBITE_ICONS_CONTENT],};Usage
<script lang="ts">
import { type Schema, SimpleForm, type UiSchemaRoot } from "@sjsf/form";
import type { FromSchema } from "json-schema-to-ts";
import * as defaults from "$lib/sjsf/defaults";
const schema = {
type: "object",
properties: {
array: {
type: "array",
items: {
type: "number",
},
},
},
additionalProperties: {
type: "string",
},
} as const satisfies Schema;
const uiSchema: UiSchemaRoot = {
array: {
"ui:options": {
copyable: true,
},
},
};
type Model = FromSchema<typeof schema>;
const initialValue: Model = {
array: [1, 2, 3],
foo: "bar",
baz: "quz",
};
</script>
<SimpleForm {...defaults} {schema} {uiSchema} {initialValue} />
npm i @sjsf/lucide-iconspnpm add @sjsf/lucide-iconsyarn add @sjsf/lucide-iconsbun add @sjsf/lucide-iconsdeno add @sjsf/lucide-iconsUsage
<script lang="ts">
import { type Schema, SimpleForm, type UiSchemaRoot } from "@sjsf/form";
import type { FromSchema } from "json-schema-to-ts";
import * as defaults from "$lib/sjsf/defaults";
const schema = {
type: "object",
properties: {
array: {
type: "array",
items: {
type: "number",
},
},
},
additionalProperties: {
type: "string",
},
} as const satisfies Schema;
const uiSchema: UiSchemaRoot = {
array: {
"ui:options": {
copyable: true,
},
},
};
type Model = FromSchema<typeof schema>;
const initialValue: Model = {
array: [1, 2, 3],
foo: "bar",
baz: "quz",
};
</script>
<SimpleForm {...defaults} {schema} {uiSchema} {initialValue} />
npm i @sjsf/moving-iconspnpm add @sjsf/moving-iconsyarn add @sjsf/moving-iconsbun add @sjsf/moving-iconsdeno add @sjsf/moving-iconsUsage
<script lang="ts">
import { type Schema, SimpleForm, type UiSchemaRoot } from "@sjsf/form";
import type { FromSchema } from "json-schema-to-ts";
import * as defaults from "$lib/sjsf/defaults";
const schema = {
type: "object",
properties: {
array: {
type: "array",
items: {
type: "number",
},
},
},
additionalProperties: {
type: "string",
},
} as const satisfies Schema;
const uiSchema: UiSchemaRoot = {
array: {
"ui:options": {
copyable: true,
},
},
};
type Model = FromSchema<typeof schema>;
const initialValue: Model = {
array: [1, 2, 3],
foo: "bar",
baz: "quz",
};
</script>
<SimpleForm {...defaults} {schema} {uiSchema} {initialValue} />
npm i @sjsf/radix-iconspnpm add @sjsf/radix-iconsyarn add @sjsf/radix-iconsbun add @sjsf/radix-iconsdeno add @sjsf/radix-iconsUsage
<script lang="ts">
import { type Schema, SimpleForm, type UiSchemaRoot } from "@sjsf/form";
import type { FromSchema } from "json-schema-to-ts";
import * as defaults from "$lib/sjsf/defaults";
const schema = {
type: "object",
properties: {
array: {
type: "array",
items: {
type: "number",
},
},
},
additionalProperties: {
type: "string",
},
} as const satisfies Schema;
const uiSchema: UiSchemaRoot = {
array: {
"ui:options": {
copyable: true,
},
},
};
type Model = FromSchema<typeof schema>;
const initialValue: Model = {
array: [1, 2, 3],
foo: "bar",
baz: "quz",
};
</script>
<SimpleForm {...defaults} {schema} {uiSchema} {initialValue} />