Skip to content

Companies ページを Fjord direction デザインで再実装#192

Merged
komagata merged 2 commits into
mainfrom
feat/companies-fjord-direction
May 11, 2026
Merged

Companies ページを Fjord direction デザインで再実装#192
komagata merged 2 commits into
mainfrom
feat/companies-fjord-direction

Conversation

@komagata

@komagata komagata commented May 11, 2026

Copy link
Copy Markdown
Member

Summary

Claude Design からの handoff (Companies - Fjord direction.html) を Companies ページに適用しました。

設計は新しい視覚方向 (深いティール #0E4A50 + Zen Maru Gothic / M PLUS Rounded 1c の和文丸ゴシック基調) で、現状の shadcn/ui ベースの他画面とは大きく異なります。そのため当該ページ内にスタイルを閉じ込めて実装しています。

変更内容

File 変更
src/components/Companies.module.css 新規。設計の fjord-admin.css から Companies 画面で使う部分のみ抽出した CSS Modules
src/components/Companies.tsx 設計の HTML 構造を React で再実装
src/app/companies/layout.tsx next/font/google で Zen Maru Gothic と M PLUS Rounded 1c を CSS 変数化し、Companies ツリー配下にだけ供給

"壊さない" ための工夫

  • スタイルのスコープ: 全クラスは CSS Modules によりハッシュ化されるため、他ページに影響なし
  • フォント供給範囲: companies/layout.tsx の wrapper にのみ --font-zen-maru / --font-mplus-rounded を注入。他ページのフォントは従来通り Geist
  • グローバル変更なし: globals.css / tailwind.config.js / 他コンポーネントは未変更
  • DB スキーマ未変更: 既存 companies テーブル (id, name, website, memo) のみ参照

設計と実 DB のギャップ

設計には実 DB に存在しない項目があるため、暫定処理:

  • 業種・所在: website を流用
  • 状況 (取引中 / 休止中 / 初期接触): 全件 "取引中" 表示
  • 公開求人数 / 進行中候補数 / 最終接触日: "—" プレースホルダー
  • 検索ボックス / フィルタチップ: UI のみ、未配線

これらは将来 DB 拡張時に配線する余地として残しています。

Test plan

  • /companies を開き、新デザインが表示される
  • フォントが Zen Maru Gothic / M PLUS Rounded 1c で表示される
  • 他ページ (/, /dashboard, /docs, /login, /signup 等) の見た目が従来通り
  • npm run build pass
  • Vercel preview deploy pass

🤖 Generated with Claude Code

Summary by CodeRabbit

リリースノート

  • 新機能

    • 企業一覧ページに検索機能と絞り込みフィルター(業界・関係・担当者)を追加しました。
  • スタイル

    • 企業一覧ページの視覚的なデザインを改善し、企業情報の表示をより見やすく整理しました。企業ロゴ、ステータス、アクションボタンが新しいレイアウトで表示されます。

Review Change Stack

Claude Design から handoff された Fjord direction (深いティール + Zen Maru
Gothic + M PLUS Rounded 1c の和文丸ゴシック基調) を Companies ページに
適用する。

- 視覚言語は当該ページ内に閉じる:
  - 全スタイルを CSS Modules (Companies.module.css) でスコープ化
  - フォントは next/font/google を companies/layout.tsx で CSS 変数化し
    Companies ページのツリー配下にのみ提供
- 既存 DB スキーマ (id/name/website/memo) はそのまま流用し、設計に存在し
  実 DB にない項目 (業種・所在 / 状況 / 公開求人数 / 進行中候補数 /
  最終接触日) は "—" プレースホルダーで描画
- 検索ボックス / フィルタチップは UI のみ (機能未配線)

他ページ・グローバル CSS・Tailwind 設定には影響なし。

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@vercel

vercel Bot commented May 11, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
agent Ready Ready Preview, Comment May 11, 2026 11:20am

Request Review

@coderabbitai

coderabbitai Bot commented May 11, 2026

Copy link
Copy Markdown

Warning

Rate limit exceeded

@komagata has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 40 minutes and 53 seconds before requesting another review.

You’ve run out of usage credits. Purchase more in the billing tab.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: ac5ae027-f8a3-473b-9ef7-2249bcdfd512

📥 Commits

Reviewing files that changed from the base of the PR and between 9e324bb and c557481.

📒 Files selected for processing (2)
  • src/components/Companies.module.css
  • src/components/Companies.tsx

概要

企業ページの UI をTailwind ベースの実装から CSS モジュール駆動の新しい設計に完全に書き換えた変更です。Google フォント統合、再設計されたテーブル UI、検索/フィルター ツールバーの追加、企業行セルと ステータス バッジシステムの実装が含まれます。

変更内容

企業ページ UI の完全リデザイン

レイヤー / ファイル サマリー
レイアウト設定と Google フォント統合
src/app/companies/layout.tsx
CompaniesLayout として新しいレイアウト コンポーネントを定義し、Zen_Maru_GothicM_PLUS_Rounded_1c Google フォント インスタンスを構成、CSS 変数として <div> ラッパーに適用します。MultiLayout を JSX として (<MultiLayout>{children}</MultiLayout>) レンダリングします。
スタイル システムと デザイン トークン
src/components/Companies.module.css
wrapper コンテナに スコープ設定されたカラー、レディアス、シャドウ デザイン トークンを定義し、デフォルト タイポグラフィ、色、背景、レイアウトを設定します。
ページ ヘッダーと ボタン スタイル
src/components/Companies.module.css
ページ ヘッダー レイアウト (pageHead, tag, sub, actions) と プライマリ/ゴースト ボタン バリアント (btnPrimary, btnGhost) を定義します。
ツールバーと フィルター UI
src/components/Companies.module.css
検索入力フィールド (search) とアイコン配置、フィルター チップ (filterChip, chipCaret) のスタイルを実装します。
テーブル パネルと セル スタイル
src/components/Companies.module.css
テーブル表示 (panel, list) の ヘッダー/ボディ セル スタイル、行ホバー動作、ユーティリティ クラス (muted, right, num) を定義します。
企業セルと ステータス バッジ
src/components/Companies.module.css
企業行セル (coCell, logo, coName, coSub) と ステータス バッジ システム (statusOpen, statusPaused, statusDraft バリアント) を実装します。
行アクション ボタン UI
src/components/Companies.module.css
行ごとのアイコンボタン領域 (rowActions, iconBtn) のサイズ、色、ホバー遷移を定義します。
フォーカス アクセシビリティ
src/components/Companies.module.css
wrapper スコープ内のインタラクティブ要素に一貫性のあるフォーカス ビジブル リング アウトラインを適用します。
コンポーネント インポートと ヘルパー関数
src/components/Companies.tsx
Linksupabase、CSS モジュール インポートを追加、ICompany 型を定義、会社名から イニシャルを抽出する initial() ヘルパー関数を実装します。
データ取得と 状態管理
src/components/Companies.tsx
Supabase から companies データをマウント時にフェッチし、アンマウント キャンセル保護を含む React 状態に保存します。
ページ レンダリングと テーブル構造
src/components/Companies.tsx
CSS モジュール ベースのラッパー/内部レイアウトを返し、会社数をヘッダーに表示、CSV エクスポート リンクと "企業を追加" 機能を追加、検索/フィルター ツールバー、日本語列見出し付きのテーブルを実装します。
行 レンダリングと セル表示
src/components/Companies.tsx
CompanyRow コンポーネント経由でロゴ/イニシャル セル、企業名 と メモ、ウェブサイト、固定 "取引中" ステータス、CSS モジュール スタイル付き編集アイコンボタンを表示します。

評価されるコード レビュー工数

🎯 3 (中程度) | ⏱️ ~20 分

🐰 企業ページが新しい装いで輝く、
CSS モジュールの優雅な設計に包まれ、
Google フォント、ツールバー、ステータス バッジ
日本語の見出しと美しいセルたち、
Tailwind さようなら、モジュールの時代へ! ✨

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed タイトルはプルリクエストの主要な変更を明確に要約しており、「Companies ページを Fjord direction デザインで再実装」と記載されている。変更内容(新しいデザイン方向での Companies ページの再実装)と完全に一致している。
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/companies-fjord-direction

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@supabase

supabase Bot commented May 11, 2026

Copy link
Copy Markdown

Updates to Preview Branch (feat/companies-fjord-direction) ↗︎

Deployments Status Updated
Database Mon, 11 May 2026 11:20:06 UTC
Services Mon, 11 May 2026 11:20:06 UTC
APIs Mon, 11 May 2026 11:20:06 UTC

Tasks are run on every commit but only new migration files are pushed.
Close and reopen this PR if you want to apply changes from existing seed or migration files.

Tasks Status Updated
Configurations Mon, 11 May 2026 11:20:08 UTC
Migrations Mon, 11 May 2026 11:20:09 UTC
Seeding Mon, 11 May 2026 11:20:10 UTC
Edge Functions Mon, 11 May 2026 11:20:10 UTC

View logs for this Workflow Run ↗︎.
Learn more about Supabase for Git ↗︎.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 5

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@src/app/companies/layout.tsx`:
- Around line 5-6: The font configuration currently sets subsets: ["latin"] for
the Zen_Maru_Gothic and M_PLUS_Rounded_1c font declarations; update those
declarations to include the Japanese glyphs by changing subsets to ["latin",
"japanese"] so Japanese text renders correctly (refer to the Zen_Maru_Gothic and
M_PLUS_Rounded_1c font config objects where subsets: ["latin"] and weight:
["400","500","700","900"] are defined).

In `@src/components/Companies.tsx`:
- Line 71: The search input in the Companies component lacks an accessible
label; update the <input> (in Companies.tsx) to include an accessible label by
either wrapping it with a <label> element (use a visually-hidden class if you
don't want it visible) or by adding a clear aria-label attribute (e.g.,
aria-label="企業名・業種・担当者で検索"); ensure the label text matches the placeholder
intent and remove ambiguity for assistive technologies.
- Around line 21-22: The data fetch in the Companies component currently ignores
Supabase errors; change the call to destructure error (const { data, error } =
await supabase.from("companies").select("*")) and branch on it: when error is
present, call an appropriate logger (e.g., console.error or a provided logger)
and update component state to reflect the failure (e.g., set an error state or
setCompanies([]) and show a UI message), otherwise setCompanies(data) as before;
update any related render logic to display the error state to the user.
- Around line 32-106: The Companies.tsx component uses CSS Modules (styles.*)
but must follow the src/components convention of Tailwind + shadcn/ui; replace
CSS Module classes and structure with Tailwind utility classes and shadcn
components (e.g., use shadcn Button, Input, Table/Sheet primitives where
appropriate) and remove reliance on styles.wrapper, styles.inner,
styles.pageHead, styles.actions, styles.toolbar, styles.panel, styles.list;
ensure the CSV and Add buttons use shadcn Button variants, the search input uses
shadcn Input, and CompanyRow remains the row renderer (keep CompanyRow
key={c.id} company={c}); run npx shadcn to add any missing components and ensure
tailwindcss-animate and `@tailwindcss/typography` plugins are enabled in the
project config.
- Around line 43-45: The CSV出力 and Edit buttons in the Companies component are
visible but have no handlers; update the JSX so these buttons are not
interactive until implemented by either (a) conditionally rendering them only
when the corresponding handler exists (e.g. render CSV button only if a
handleCsvExport/onCsvExport prop or function is present) or (b) rendering them
in a disabled state: add disabled attribute, aria-disabled="true", a descriptive
title (e.g. "未実装 — 機能は準備中です"), and a visual disabled class (e.g.
styles.disabled) to the elements currently using classNames `${styles.btn}
${styles.btnGhost}` and the Edit button block around lines 136-151 so users see
they are intentionally inactive. Ensure to remove any onClick stubs if present
or gate onClick calls behind the same handler existence check.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: e93b39df-41bb-4a1c-8673-643a7a8c73da

📥 Commits

Reviewing files that changed from the base of the PR and between 3d2b771 and 9e324bb.

📒 Files selected for processing (3)
  • src/app/companies/layout.tsx
  • src/components/Companies.module.css
  • src/components/Companies.tsx

Comment on lines +5 to +6
subsets: ["latin"],
weight: ["400", "500", "700", "900"],

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🌐 Web query:

For next/font/google in current Next.js, what subsets are supported by Zen_Maru_Gothic and M_PLUS_Rounded_1c, and does subsets:["latin"] load Japanese glyphs?

💡 Result:

Next.js current (next/font/google) “subsets” option: it preloads only the specified Google Fonts subsets; it’s used for preloading, and you can choose which subset names to preload (for example subsets: ['latin']).[1] Zen_Maru_Gothic supported subsets: [cyrillic, greek, japanese, latin, latin-ext]. (From the font package listing of Zen Maru Gothic subsets.)[2] M_PLUS_Rounded_1c supported subsets: [cyrillic, cyrillic-ext, greek, greek-ext, hebrew, japanese, latin, latin-ext, vietnamese]. (From the font package listing of M PLUS Rounded 1c subsets.)[3] Does subsets:["latin"] load Japanese glyphs? No—based on how Next.js documents subsets as preload subset “names” (e.g. ['latin']) and given that Japanese glyphs belong to the 'japanese' subset (both fonts list 'japanese' as a distinct subset). Therefore, when you preload only the 'latin' subset, you should not expect Japanese glyphs to be included/loaded by that subset selection.[1][2][3]

Citations:


subsets"japanese" を追加してください

ページが日本語ベースのため、フォント設定で subsets: ["latin"] のみでは日本語グリフが読み込まれません。Zen_Maru_Gothic と M_PLUS_Rounded_1c は両方とも "japanese" サブセットに対応しているため、subsets: ["latin", "japanese"] に変更する必要があります。現状ではテキストが期待通りに表示されません。

行: 5-6、12-13

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/app/companies/layout.tsx` around lines 5 - 6, The font configuration
currently sets subsets: ["latin"] for the Zen_Maru_Gothic and M_PLUS_Rounded_1c
font declarations; update those declarations to include the Japanese glyphs by
changing subsets to ["latin", "japanese"] so Japanese text renders correctly
(refer to the Zen_Maru_Gothic and M_PLUS_Rounded_1c font config objects where
subsets: ["latin"] and weight: ["400","500","700","900"] are defined).

Comment thread src/components/Companies.tsx Outdated
Comment on lines +32 to 106
<div className={styles.wrapper}>
<div className={styles.inner}>
<div className={styles.pageHead}>
<div>
<div className={styles.tag}>COMPANIES</div>
<h1>企業</h1>
<p className={styles.sub}>
紹介先としてご縁のある {count} 社。最近のやりとりと、現在お預かりしている求人の数をひと目で。
</p>
</div>
<div className={styles.actions}>
<button type="button" className={`${styles.btn} ${styles.btnGhost}`}>
CSV出力
</button>
<Link href="/companies/new" className={`${styles.btn} ${styles.btnPrimary}`}>
<svg
width="14"
height="14"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
strokeWidth="2.2"
strokeLinecap="round"
>
<path d="M12 5v14M5 12h14" />
</svg>
企業を追加
</Link>
</div>
</div>
</div>

<div className="overflow-x-auto">
<div className="align-middle inline-block min-w-full">
<div className="shadow overflow-hidden">
<table className="table-fixed min-w-full divide-y divide-gray-200">
<thead className="bg-gray-100">
<tr>
<th
scope="col"
className="p-4 text-left text-xs font-medium text-gray-500 uppercase"
>
Id
</th>
<th
scope="col"
className="p-4 text-left text-xs font-medium text-gray-500 uppercase"
>
Name
</th>
<th
scope="col"
className="p-4 text-left text-xs font-medium text-gray-500 uppercase"
>
Website
</th>
<th
scope="col"
className="p-4 text-left text-xs font-medium text-gray-500 uppercase"
>
Memo
</th>
<th scope="col" className="p-4"></th>
</tr>
</thead>
<tbody className="bg-white divide-y divide-gray-200">
{companies?.map((company) => {
return <Company key={company.id} company={company} />;
})}
</tbody>
</table>
<div className={styles.toolbar}>
<div className={styles.search}>
<span className={styles.searchIcon} aria-hidden="true">
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="1.8">
<circle cx="11" cy="11" r="7" />
<path d="m20 20-3-3" strokeLinecap="round" />
</svg>
</span>
<input placeholder="企業名・業種・担当者" />
</div>
<button type="button" className={styles.filterChip}>
業種 <span className={styles.chipCaret}>▾</span>
</button>
<button type="button" className={styles.filterChip}>
関係性 <span className={styles.chipCaret}>▾</span>
</button>
<button type="button" className={styles.filterChip}>
担当 <span className={styles.chipCaret}>▾</span>
</button>
</div>

<div className={styles.panel}>
<table className={styles.list}>
<thead>
<tr>
<th>企業</th>
<th>業種・所在</th>
<th>状況</th>
<th style={{ textAlign: "right" }}>公開求人</th>
<th style={{ textAlign: "right" }}>進行中候補</th>
<th>最終接触</th>
<th style={{ width: 80 }}></th>
</tr>
</thead>
<tbody>
{companies?.map((c) => (
<CompanyRow key={c.id} company={c} />
))}
</tbody>
</table>
</div>
</div>
</>
</div>
);

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion | 🟠 Major | 🏗️ Heavy lift

src/components 配下の実装方針をリポジトリ規約に合わせてください

このファイルは CSS Modules 主体ですが、当該パスの規約は Tailwind + shadcn/ui パターンを要求しています。src/components の再利用コンポーネントとしては規約準拠に寄せる必要があります。

As per coding guidelines "Use Tailwind CSS with shadcn/ui components, including tailwindcss-animate and @tailwindcss/typography plugins, and add components via npx shadcn command".

Also applies to: 109-156

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/components/Companies.tsx` around lines 32 - 106, The Companies.tsx
component uses CSS Modules (styles.*) but must follow the src/components
convention of Tailwind + shadcn/ui; replace CSS Module classes and structure
with Tailwind utility classes and shadcn components (e.g., use shadcn Button,
Input, Table/Sheet primitives where appropriate) and remove reliance on
styles.wrapper, styles.inner, styles.pageHead, styles.actions, styles.toolbar,
styles.panel, styles.list; ensure the CSV and Add buttons use shadcn Button
variants, the search input uses shadcn Input, and CompanyRow remains the row
renderer (keep CompanyRow key={c.id} company={c}); run npx shadcn to add any
missing components and ensure tailwindcss-animate and `@tailwindcss/typography`
plugins are enabled in the project config.

Comment thread src/components/Companies.tsx Outdated
Comment thread src/components/Companies.tsx Outdated
- 検索 input に aria-label を付与
- Supabase 取得エラーを console.error で記録
- 未実装の CSV出力 / 編集ボタンを disabled + title で明示

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@komagata

Copy link
Copy Markdown
Member Author

@coderabbitai 5件の指摘ありがとうございます。以下のとおり対応しました。

対応 (c557481):

  • ✅ 検索 input に aria-label="企業名・業種・担当者で検索" を追加
  • ✅ Supabase 取得エラー時に console.error でログ出力+空配列に fallback
  • ✅ 未実装の「CSV出力」「編集」ボタンを disabled + aria-disabled + title="未実装 — 機能は準備中です" で明示。opacity: 0.5; cursor: not-allowed; の視覚スタイルも追加

Revert した指摘 (subsets: ["latin", "japanese"]):
next/font/googleZen_Maru_Gothic / M_PLUS_Rounded_1c の型定義は "japanese" を subset として受け付けず、TypeScript エラーになります。Japanese グリフは Google Fonts の unicode-range ディレクティブを通じてブラウザがオンデマンド取得する仕組みのため、subsets: ["latin"] のままでも実描画には問題ありません (latin subset を preload 指定するだけで、Japanese 文字が描画される際にブラウザが自動で取りに行きます)。

反論する指摘 (CSS Modules → Tailwind + shadcn/ui への書き換え):
これは意図的な設計判断です。本 PR の主目的は「Fjord direction の新しい視覚言語 (深いティール基調 + 和文丸ゴシック) を Companies ページのみに適用し、他ページの shadcn/blue 基調を壊さない」ことです。

Tailwind + shadcn/ui に書き換えると:

  • 新しい Fjord トークン (--fjord, --mist, --moss 等) を tailwind.config.jsglobals.css に追加する必要があり、グローバル汚染になる
  • shadcn の Button/Input は shadcn のデザイントークン (bg-primary 等) と分かちがたく結びついており、Fjord 方向の見た目を再現するには結局カスタムスタイルが必要になる

CSS Modules でスコープしているのは、この 1 ページだけ別方向のデザインを試すための明示的な隔離であり、既存規約の単なる無視ではありません。

@coderabbitai

coderabbitai Bot commented May 11, 2026

Copy link
Copy Markdown

@komagata ご丁寧な説明をありがとうございます。各ポイントについて以下のとおり確認しました。

✅ 対応済み 3 件(c557481)

aria-label・エラーハンドリング・disabled ボタンのスタイリングはいずれも適切な対応です。ありがとうございます。

subsets: ["japanese"] のリバート — 納得しました

ご指摘のとおりです。next/font/googlesubsets に渡せる値はフォントごとに異なり、Google Fonts のフォントページで確認できます。 Zen_Maru_Gothic / M_PLUS_Rounded_1c の TypeScript 型定義が "japanese" を受け付けない以上、subsets: ["latin"] のままにするのは正しい判断です。Japanese グリフはブラウザが unicode-range を通じてオンデマンドで取得するため、実描画への影響もありません。私の提案に誤りがありました。

✅ CSS Modules の維持 — 設計判断として受け入れます

「Fjord direction の視覚言語を Companies ページのみに閉じ、他ページの shadcn/blue 基調を壊さない」という目的に対して、CSS Modules によるスコープ隔離は合理的な手段です。Tailwind + shadcn/ui に書き換えると Fjord トークンをグローバルに追加せざるを得ないというご説明も的確です。既存規約との差異は意図的な隔離として理解しました。

全 5 件の指摘への対応が完了しました。PR をレビューします。


✏️ Learnings added
Learnt from: komagata
URL: https://github.com/fjordllc/agent/pull/192

Timestamp: 2026-05-11T11:20:32.706Z
Learning: In `src/app/companies/layout.tsx` (Next.js App Router, TypeScript), `next/font/google` does not accept `"japanese"` as a valid subset for `Zen_Maru_Gothic` or `M_PLUS_Rounded_1c`. Only `"latin"` is accepted by the TypeScript types for these fonts. Japanese glyphs are fetched on demand by the browser via the `unicode-range` directive from Google Fonts, so `subsets: ["latin"]` is the correct configuration.

Learnt from: komagata
URL: https://github.com/fjordllc/agent/pull/192

Timestamp: 2026-05-11T11:20:32.706Z
Learning: In PR `#192` of fjordllc/agent, CSS Modules (`src/components/Companies.module.css`) are used intentionally for the Companies page to scope the "Fjord direction" design (deep teal `#0E4A50`, Zen Maru Gothic / M PLUS Rounded 1c fonts) to that page only, without polluting `tailwind.config.js`, `globals.css`, or shadcn/ui design tokens used by other pages. This is an explicit design isolation decision, not a deviation from conventions.

Note: Learnings are effective only in the context of similar code segments. To apply general coding guidelines, please configure review instructions. You can manage existing learnings in the app.

✅ Actions performed

Review triggered.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@komagata komagata merged commit 5a90872 into main May 11, 2026
7 checks passed
@komagata komagata deleted the feat/companies-fjord-direction branch May 11, 2026 11:47
komagata added a commit that referenced this pull request May 11, 2026
#192 で Companies ページが CSS modules ベースで再実装されたため、本 PR で
bg-action / bg-danger に置換した箇所は意味を失った。Companies.tsx は main
版を採用し、--action / --danger トークン定義 (globals.css / tailwind.config.js)
のみ残す。残された token は将来の Tailwind ベースコンポーネントで利用できる。

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant