コンテンツにスキップ

パッケージ境界

所有先 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横断検証だけで使います。

フォームの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に維持します。