Shadcn Svelte

作者 vercel-labsfc2a696a50a3无许可证18K 个星标收录于 2026年10月8日更新于 2026年10月8日仓库昨天更新

Pre-built shadcn-svelte components for json-render Svelte apps. Use when working with @json-render/shadcn-svelte, adding standard UI components to a Svelte catalog, or building Svelte web UIs with shadcn-svelte + Tailwind CSS components.

精选仅含说明Software Development
AI 生成的概览

为 json-render Svelte 应用提供预构建的 shadcn-svelte 组件定义与实现。

功能
该技能介绍 @json-render/shadcn-svelte 包,它提供 36 个基于 Svelte 5 与 Tailwind CSS 构建的 shadcn-svelte 组件定义和实现。文档说明两个入口点:一个提供不依赖 Svelte 的目录 schema,另一个提供 Svelte 实现,并演示如何在 json-render 的 catalog 与 registry 中注册所选组件。它还按分组列出可用组件,并说明表单输入的校验时机选项。
适用场景
适用于使用 @json-render/shadcn-svelte、向 Svelte 目录添加标准 UI 组件,或用 shadcn-svelte 与 Tailwind CSS 构建 Svelte Web 界面时。其用途是把组件挑选并接入 json-render 渲染器,而非提供通用 Svelte 指导。
运行要求
需要一个配置了 Tailwind CSS 的 Svelte 5 项目,以及 @json-render/core、@json-render/svelte 和 @json-render/shadcn-svelte 包。不附带脚本,仅为说明文档。

@json-render/shadcn-svelte

Pre-built shadcn-svelte component definitions and implementations for json-render. Provides 36 components built on Svelte 5 + Tailwind CSS.

Two Entry Points

Entry PointExportsUse For
@json-render/shadcn-svelte/catalogshadcnComponentDefinitionsCatalog schemas (no Svelte dependency, safe for server)
@json-render/shadcn-svelteshadcnComponents, shadcnComponentDefinitionsSvelte implementations + catalog schemas

Usage Pattern

Pick the components you need from the standard definitions. Do not spread all definitions -- explicitly select what your app uses:

typescript
import { defineCatalog } from "@json-render/core";import { schema } from "@json-render/svelte/schema";import { shadcnComponentDefinitions } from "@json-render/shadcn-svelte/catalog";import { defineRegistry } from "@json-render/svelte";import { shadcnComponents } from "@json-render/shadcn-svelte";
// Catalog: pick definitionsconst catalog = defineCatalog(schema, {  components: {    Card: shadcnComponentDefinitions.Card,    Stack: shadcnComponentDefinitions.Stack,    Heading: shadcnComponentDefinitions.Heading,    Button: shadcnComponentDefinitions.Button,    Input: shadcnComponentDefinitions.Input,  },  actions: {},});
// Registry: pick matching implementationsconst { registry } = defineRegistry(catalog, {  components: {    Card: shadcnComponents.Card,    Stack: shadcnComponents.Stack,    Heading: shadcnComponents.Heading,    Button: shadcnComponents.Button,    Input: shadcnComponents.Input,  },});

Then render in your Svelte component:

svelte
<script lang="ts">  import { Renderer, JsonUIProvider } from "@json-render/svelte";
  export let spec;  export let registry;</script>
<JsonUIProvider initialState={spec?.state ?? {}}>  <Renderer {spec} {registry} /></JsonUIProvider>

Available Components

Layout

  • Card - Container with optional title, description, maxWidth, centered
  • Stack - Flex container with direction, gap, align, justify
  • Grid - Grid layout with columns (number) and gap
  • Separator - Visual divider with orientation

Navigation

  • Tabs - Tabbed navigation with tabs array, defaultValue, value
  • Accordion - Collapsible sections with items array and type (single/multiple)
  • Collapsible - Single collapsible section with title
  • Pagination - Page navigation with totalPages and page

Overlay

  • Dialog - Modal dialog with title, description, openPath
  • Drawer - Bottom drawer with title, description, openPath
  • Tooltip - Hover tooltip with content and text
  • Popover - Click-triggered popover with trigger and content
  • DropdownMenu - Dropdown with label and items array

Content

  • Heading - Heading text with level (h1-h4)
  • Text - Paragraph with variant (body, caption, muted, lead, code)
  • Image - Image with alt, width, height
  • Avatar - User avatar with src, name, size
  • Badge - Status badge with text and variant (default, secondary, destructive, outline)
  • Alert - Alert banner with title, message, type (success, warning, info, error)
  • Carousel - Scrollable carousel with items array
  • Table - Data table with columns (string[]) and rows (string[][])

Feedback

  • Progress - Progress bar with value, max, label
  • Skeleton - Loading placeholder with width, height, rounded
  • Spinner - Loading spinner with size and label

Input

  • Button - Button with label, variant (primary, secondary, danger), disabled
  • Link - Anchor link with label and href
  • Input - Text input with label, name, type, placeholder, value, checks
  • Textarea - Multi-line input with label, name, placeholder, rows, value, checks
  • Select - Dropdown select with label, name, options (string[]), value, checks
  • Checkbox - Checkbox with label, name, checked, checks, validateOn
  • Radio - Radio group with label, name, options (string[]), value, checks, validateOn
  • Switch - Toggle switch with label, name, checked, checks, validateOn
  • Slider - Range slider with label, min, max, step, value
  • Toggle - Toggle button with label, pressed, variant
  • ToggleGroup - Group of toggles with items, type, value
  • ButtonGroup - Button group with buttons array and selected

Validation Timing (validateOn)

All form components support validateOn to control when validation runs:

  • "change" -- validate on every input change (default for Select, Checkbox, Radio, Switch)
  • "blur" -- validate when field loses focus (default for Input, Textarea)
  • "submit" -- validate only on form submission

Important Notes

  • The /catalog entry point has no Svelte dependency -- use it for server-side prompt generation
  • Components use Tailwind CSS classes -- your app must have Tailwind configured
  • Component implementations use bundled shadcn-svelte primitives (not your app's $lib/components/ui/)
  • All form inputs support checks for validation (type + message pairs) and validateOn for timing
  • Events: inputs emit change/submit/focus/blur; buttons emit press; selects emit change/select

来源与署名

来源:vercel-labs/json-render位于skills/shadcn-svelte提交fc2a696

许可证: 无许可证

内容归原作者所有。SourceWeft 从公开仓库中收录这些内容。

举报或申请下架