shadcn
json-renderで使用する事前構築済みのshadcn/uiコンポーネント集です。`@json-render/shadcn`を利用する場合や、標準UIコンポーネントをカタログに追加する際、またRadix UI + Tailwind CSSコンポーネントでWebUIを構築する際に活用してください。
description の原文を見る
Pre-built shadcn/ui components for json-render. Use when working with @json-render/shadcn, adding standard UI components to a catalog, or building web UIs with Radix UI + Tailwind CSS components.
SKILL.md 本文
@json-render/shadcn
json-render 用のプリビルド shadcn/ui コンポーネント定義と実装。Radix UI + Tailwind CSS で構築された 36 個のコンポーネントを提供します。
2 つのエントリーポイント
| エントリーポイント | エクスポート | 用途 |
|---|---|---|
@json-render/shadcn/catalog | shadcnComponentDefinitions | カタログスキーマ (React 依存なし、サーバー側で安全) |
@json-render/shadcn | shadcnComponents | React 実装 |
使用パターン
標準定義から必要なコンポーネントを選択します。すべての定義を展開しないでください -- アプリが使用するものを明示的に選択してください:
import { defineCatalog } from "@json-render/core";
import { schema } from "@json-render/react/schema";
import { shadcnComponentDefinitions } from "@json-render/shadcn/catalog";
import { defineRegistry } from "@json-render/react";
import { shadcnComponents } from "@json-render/shadcn";
// カタログ: 定義を選択
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,
},
});
ステートアクション (
setState,pushState,removeState) は React スキーマに組み込まれており、ActionProviderによって自動的に処理されます。カタログで宣言する必要はありません。
カスタムコンポーネントで拡張
カスタムコンポーネントを標準的なものと一緒に追加します:
const catalog = defineCatalog(schema, {
components: {
// 標準
Card: shadcnComponentDefinitions.Card,
Stack: shadcnComponentDefinitions.Stack,
// カスタム
Metric: {
props: z.object({
label: z.string(),
value: z.string(),
trend: z.enum(["up", "down", "neutral"]).nullable(),
}),
description: "KPI metric display",
},
},
actions: {},
});
const { registry } = defineRegistry(catalog, {
components: {
Card: shadcnComponents.Card,
Stack: shadcnComponents.Stack,
Metric: ({ props }) => <div>{props.label}: {props.value}</div>,
},
});
利用可能なコンポーネント
レイアウト
- Card - オプションのタイトル、説明、maxWidth、centered を備えたコンテナ
- Stack - direction、gap、align、justify を備えた Flex コンテナ
- Grid - columns (数値) と gap を備えたグリッドレイアウト
- Separator - orientation を備えた視覚的なディバイダー
ナビゲーション
- Tabs - tabs 配列、defaultValue、value を備えたタブ付きナビゲーション
- Accordion - items 配列と type (single/multiple) を備えた折りたたみ可能なセクション
- Collapsible - title を備えた単一の折りたたみ可能なセクション
- 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 を備えたボタングループ
組み込みアクション (@json-render/react から)
これらは React スキーマに組み込まれており、ActionProvider によって自動的に処理されます。カタログで宣言する必要なく、プロンプトに表示されます。
- setState - ステートパスで値を設定 (
{ statePath, value }) - pushState - 配列に値をプッシュ (
{ statePath, value, clearStatePath? }) - removeState - インデックスで配列項目を削除 (
{ statePath, index }) - validateForm - すべてのフィールドを検証し、
{ valid, errors }をステートに書き込み ({ statePath? })
検証タイミング (validateOn)
すべてのフォームコンポーネントは、検証実行のタイミングを制御する validateOn をサポートしています:
"change"— 入力変更時に検証 (Select、Checkbox、Radio、Switch のデフォルト)"blur"— フィールドがフォーカスを失ったときに検証 (Input、Textarea のデフォルト)"submit"— フォーム送信時のみ検証
重要な注釈
/catalogエントリーポイントには React 依存がありません -- サーバー側のプロンプト生成に使用してください- コンポーネントは Tailwind CSS クラスを使用します -- アプリは Tailwind が設定されている必要があります
- コンポーネント実装はバンドルされた shadcn/ui プリミティブを使用します (アプリの
components/ui/ではなく) - すべてのフォーム入力は検証用の
checks(型とメッセージのペア) と、タイミング用の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
変更を段階的に実施します。複数のファイルに影響する機能や変更を実装する場合に使用してください。大量のコードを一度に書こうとしている場合や、タスクが一度では完結できないほど大きい場合に活用します。