shadcn-svelte
`@json-render/shadcn-svelte` を使ったSvelteアプリ向けに、事前構築済みのshadcn-svelteコンポーネントを提供します。SvelteカタログへのUIコンポーネント追加や、shadcn-svelte + Tailwind CSSを組み合わせたSvelte製WebUIの構築時に活用できます。
description の原文を見る
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.
SKILL.md 本文
@json-render/shadcn-svelte
json-render 用の事前構築された shadcn-svelte コンポーネント定義と実装。Svelte 5 + Tailwind CSS で構築された 36 個のコンポーネントを提供します。
2 つのエントリーポイント
| エントリーポイント | エクスポート | 用途 |
|---|---|---|
@json-render/shadcn-svelte/catalog | shadcnComponentDefinitions | カタログスキーマ (Svelte依存なし、サーバー用に安全) |
@json-render/shadcn-svelte | shadcnComponents, shadcnComponentDefinitions | Svelte実装 + カタログスキーマ |
使用パターン
標準定義から必要なコンポーネントを選んでください。すべての定義をスプレッド演算子で展開しないでください -- アプリが使用するものを明示的に選択してください:
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";
// カタログ: 定義を選択
const catalog = defineCatalog(schema, {
components: {
Card: shadcnComponentDefinitions.Card,
Stack: shadcnComponentDefinitions.Stack,
Heading: shadcnComponentDefinitions.Heading,
Button: shadcnComponentDefinitions.Button,
Input: shadcnComponentDefinitions.Input,
},
actions: {},
});
// レジストリ: マッチングする実装を選択
const { registry } = defineRegistry(catalog, {
components: {
Card: shadcnComponents.Card,
Stack: shadcnComponents.Stack,
Heading: shadcnComponents.Heading,
Button: shadcnComponents.Button,
Input: shadcnComponents.Input,
},
});
次に、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>
利用可能なコンポーネント
レイアウト
- Card - オプショナルなタイトル、説明、maxWidth、中央寄せを備えたコンテナ
- Stack - direction、gap、align、justify を持つ Flex コンテナ
- Grid - columns (数値) と gap を持つグリッドレイアウト
- Separator - orientation を持つビジュアル区切り線
ナビゲーション
- Tabs - tabs 配列、defaultValue、value を持つタブ付きナビゲーション
- Accordion - items 配列と type (single/multiple) を持つ折りたたみ可能なセクション
- Collapsible - タイトルを持つ単一の折りたたみ可能セクション
- Pagination - totalPages と page を持つページナビゲーション
オーバーレイ
- Dialog - title、description、openPath を持つモーダルダイアログ
- Drawer - title、description、openPath を持つボトムドロワー
- Tooltip - content と text を持つホバーツールチップ
- Popover - trigger と content を持つクリック発動ポップオーバー
- DropdownMenu - label と items 配列を持つドロップダウン
コンテンツ
- Heading - level (h1-h4) を持つ見出しテキスト
- Text - variant (body, caption, muted, lead, code) を持つ段落
- Image - alt、width、height を持つ画像
- Avatar - src、name、size を持つユーザーアバター
- Badge - text と variant (default, secondary, destructive, outline) を持つステータスバッジ
- Alert - title、message、type (success, warning, info, error) を持つアラートバナー
- Carousel - items 配列を持つスクロール可能なカルーセル
- Table - columns (string[]) と rows (string[][]) を持つデータテーブル
フィードバック
- Progress - value、max、label を持つプログレスバー
- Skeleton - width、height、rounded を持つ読み込み中プレースホルダー
- Spinner - size と label を持つ読み込みスピナー
入力
- Button - label、variant (primary, secondary, danger)、disabled を持つボタン
- Link - label と href を持つアンカーリンク
- Input - label、name、type、placeholder、value、checks を持つテキスト入力
- Textarea - label、name、placeholder、rows、value、checks を持つ複数行入力
- Select - label、name、options (string[])、value、checks を持つドロップダウン選択
- Checkbox - label、name、checked、checks、validateOn を持つチェックボックス
- Radio - label、name、options (string[])、value、checks、validateOn を持つラジオグループ
- Switch - label、name、checked、checks、validateOn を持つトグルスイッチ
- Slider - label、min、max、step、value を持つ範囲スライダー
- Toggle - label、pressed、variant を持つトグルボタン
- ToggleGroup - items、type、value を持つトグルグループ
- ButtonGroup - buttons 配列と selected を持つボタングループ
バリデーションタイミング (validateOn)
すべてのフォームコンポーネントは validateOn をサポートしており、バリデーションが実行される時期を制御できます:
"change"-- 入力が変更されるたびにバリデーション実行 (Select、Checkbox、Radio、Switch のデフォルト)"blur"-- フィールドがフォーカスを失うときにバリデーション実行 (Input、Textarea のデフォルト)"submit"-- フォーム送信時にのみバリデーション実行
重要な注意事項
/catalogエントリーポイントは Svelte 依存がありません -- サーバーサイドプロンプト生成に使用してください- コンポーネントは Tailwind CSS クラスを使用します -- アプリに Tailwind が設定されていることが必須です
- コンポーネント実装は bundled shadcn-svelte プリミティブを使用します (アプリの
$lib/components/ui/ではありません) - すべてのフォーム入力は検証用の
checks(type + message ペア) と タイミング用のvalidateOnをサポートします - イベント: 入力は
change/submit/focus/blurを発出; ボタンはpressを発出; 選択はchange/selectを発出
ライセンス: Apache-2.0(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- vercel-labs
- ライセンス
- Apache-2.0
- 最終更新
- 不明
Source: https://github.com/vercel-labs/json-render / ライセンス: Apache-2.0
関連スキル
doubt-driven-development
重要な判断はすべて、本番環境への展開前に新しい視点から対抗的レビューを実施します。速度より正確性が重要な場合、不慣れなコードを扱う場合、本番環境・セキュリティに関わるロジック・取り消し不可の操作など影響度が高い場合、または後でバグを修正するよりも今検証する方が効率的な場合に活用してください。
apprun-skills
TypeScriptを使用したAppRunアプリケーションのMVU設計に関する総合的なガイダンスが得られます。コンポーネントパターン、イベントハンドリング、状態管理(非同期ジェネレータを含む)、パラメータと保護機能を備えたルーティング・ナビゲーション、vistestを使用したテストに対応しています。AppRunコンポーネントの設計・レビュー、ルートの配線、状態フローの管理、AppRunテストの作成時に活用してください。
desloppify
コードベースのヘルスチェックと技術負債の追跡ツールです。コード品質、技術負債、デッドコード、大規模ファイル、ゴッドクラス、重複関数、コードスメル、命名規則の問題、インポートサイクル、結合度の問題についてユーザーが質問した場合に使用してください。また、ヘルススコアの確認、次の改善項目の提案、クリーンアップ計画の作成をリクエストされた際にも対応します。29言語に対応しています。
debugging-and-error-recovery
テストが失敗したり、ビルドが壊れたり、動作が期待と異なったり、予期しないエラーが発生したりした場合に、体系的な根本原因デバッグをガイドします。推測ではなく、根本原因を見つけて修正するための体系的なアプローチが必要な場合に使用してください。
test-driven-development
テスト駆動開発により実装を進めます。ロジックの実装、バグの修正、動作の変更など、あらゆる場面で活用できます。コードが正常に動作することを証明する必要がある場合、バグ報告を受けた場合、既存機能を修正する予定がある場合に使用してください。
incremental-implementation
変更を段階的に実施します。複数のファイルに影響する機能や変更を実装する場合に使用してください。大量のコードを一度に書こうとしている場合や、タスクが一度では完結できないほど大きい場合に活用します。