パッケージ境界
パッケージ境界とStorybook
Section titled “パッケージ境界とStorybook”| 所有先 | API・責務 |
|---|---|
| react-ui | Button/Dialog/Select、基本Field、TableのHTML部品、テーマ、controlledな検索Select、基本hooks |
| react-tools | スキーマを解釈するFieldFactory、RHFフォーム、TanStack/DnDテーブル、CRUD検索アダプター、CSV/Excelダイアログ、日付・期間入力、業務レイアウト |
react-tools → react-ui / data-engine / data-access の向きで依存します。 react-uiはschema/CRUD/RHF/Queryの型を含めて依存しません。react-toolsの既存UI・theme入口は 互換の再exportです。テーマの実装とContext、テーマCSSの正本はreact-uiだけです。 両方を使うアプリではreact-tools/stylesだけで必要なUIスタイルも読み込めます。
SearchableSelectInput の表示・候補選択はreact-ui、dataAccessConfigの検索・作成はtoolsが担当します。
明示的なonSearch/onCreateOptionは既存どおりdataAccessConfigより優先します。
FieldFactoryのschema→props変換はtoolsに残し、基本Fieldのlabel/description/control接続はUIが所有します。
合成は両パッケージとも render です。旧asChildからは、たとえば
<DialogTrigger render={<Button />}>開く</DialogTrigger> に変更します。
triggerはrender要素またはrender関数を受け取り、DataTableのrenderLinkはrefとpropsを
転送できる単一ReactElementを返します。型だけの再exportは実行時に残さない構成です。
private側の互換APIは独立したprivateリポジトリで管理します。
共通サンプルは examples/schema-tools.tsx が正本で、
Storybook storiesも同じ関数を利用します。
日本語の複数行フォーム、dark、テーブルを確認できます。
Storybookの追加addonはdocs/a11y/Vitestのみです。onboardingやChromaticは導入しません。
bun run test:storybook は実Chromium上でstoryの操作とaxe検査を実行し、違反はエラーにします。
missing-altの一時storyが必ず失敗することも検証し、設定だけで検査済みとは扱いません。
bun run verify はこれに加えて型、境界、配布tarball、Vite消費側を検証します。
Publicモノレポのルートで bun install --frozen-lockfile --ignore-scripts と bun run verify を実行します。単一lockfileを使い、開発はworkspace、配布は通常npm依存です。tarballは独立consumer検証とPrivate横断検証だけで使います。
UIから独立した処理
Section titled “UIから独立した処理”フォームのcastValuesBySchemaはdata-engine/schema/cast、WorkflowEngineはdata-engine/workflowが正本です。 ReactNode・アイコン・色などの表示型はreact-toolsが拡張し、実行時コンストラクターは共有します。 数値変換は既定legacyで従来のparseInt/parseFloat挙動を維持します。新規用途はstrictの明示を推奨します。 変換だけではJSON Schemaの妥当性を保証しないためAJV検証を別途行ってください。
初回公開前の変更としてWorkflowPolicyEngineの固定購買規則・staticメソッドは廃止し、 3つの判定関数を渡すインスタンスAPIへ変更しました。規則未指定では構築できません。 業務規則やサーバー認可は利用アプリが実装します。privateの旧ポリシーはprivate app-coreに維持します。