Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions .codacy.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
---
# Codacy configuration
# https://docs.codacy.com/repositories-configure/codacy-configuration-file/
#
# 本プロジェクトのフロントエンドは ESLint + Prettier を採用しており、Biome は
# 導入していない。Codacy がデフォルトで有効化している Biome 解析は二重解析と
# なるだけでなく、`noReactSpecificProps` のようなルールが React プロジェクトの
# `className` 属性を誤検知し、Quality Gate を恒常的に fail させる原因となる。
#
# Codacy の設定ファイルではツール自体の enable/disable は切り替えられない
# (Code patterns UI 経由のみ) ため、Biome に対してすべてのファイルを
# exclude_paths で除外することで実質的に無効化する。
engines:
biome:
exclude_paths:
- '**'
4 changes: 2 additions & 2 deletions frontend/src/pages/Channels.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -162,7 +162,7 @@ export default function Channels() {
</div>
<button
onClick={() => handleDelete(ch.id)}
className="p-2 text-red-600 hover:bg-red-50 rounded-md shrink-0"
className="p-2 text-red-600 hover:bg-red-50 rounded-md shrink-0 focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-red-500 focus-visible:ring-offset-1 transition-colors"
title={`${ch.displayName} を削除`}
aria-label={`${ch.displayName} を削除`}
>
Expand All @@ -183,7 +183,7 @@ export default function Channels() {
<button
type="button"
onClick={() => handleCopy(ch.channelId, ch.id)}
className="px-2 py-1.5 text-slate-700 hover:bg-slate-100 rounded-md flex items-center gap-1 text-xs border border-slate-300 shrink-0"
className="px-2 py-1.5 text-slate-700 hover:bg-slate-100 rounded-md flex items-center gap-1 text-xs border border-slate-300 shrink-0 focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-slate-900 focus-visible:ring-offset-1 transition-colors"
aria-label={`Webhook URL をコピー: ${webhookUrl}`}
>
{isCopied ? (
Expand Down
2 changes: 1 addition & 1 deletion frontend/src/pages/Contact.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -134,7 +134,7 @@ export default function Contact() {
setBody('');
setUrl('');
}}
className="underline text-slate-700"
className="underline text-slate-700 focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-slate-900 focus-visible:ring-offset-2 rounded-sm transition-colors"
>
続けて問い合わせる
</button>
Expand Down
4 changes: 2 additions & 2 deletions frontend/src/pages/FaqArticle.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -161,7 +161,7 @@ function FaqArticleContent({ faq }: { faq: FaqArticleType }) {
aria-pressed={false}
aria-label="役に立った"
onClick={() => setFeedback('up')}
className="inline-flex items-center gap-2 px-4 py-2 border border-slate-300 text-sm text-slate-700 rounded-md hover:bg-slate-50"
className="inline-flex items-center gap-2 px-4 py-2 border border-slate-300 text-sm text-slate-700 rounded-md hover:bg-slate-50 focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-slate-900 focus-visible:ring-offset-2 transition-colors"
>
<ThumbsUp size={ICON_SIZE.sm} />
役に立った
Expand All @@ -171,7 +171,7 @@ function FaqArticleContent({ faq }: { faq: FaqArticleType }) {
aria-pressed={false}
aria-label="役に立たなかった"
onClick={() => setFeedback('down')}
className="inline-flex items-center gap-2 px-4 py-2 border border-slate-300 text-sm text-slate-700 rounded-md hover:bg-slate-50"
className="inline-flex items-center gap-2 px-4 py-2 border border-slate-300 text-sm text-slate-700 rounded-md hover:bg-slate-50 focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-slate-900 focus-visible:ring-offset-2 transition-colors"
>
<ThumbsDown size={ICON_SIZE.sm} />
役に立たなかった
Expand Down
6 changes: 3 additions & 3 deletions frontend/src/pages/FormEdit.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -303,7 +303,7 @@ export default function FormEdit() {
{!isNew && (
<button
onClick={handleDelete}
className="p-2 text-red-600 hover:bg-red-50 rounded-md"
className="p-2 text-red-600 hover:bg-red-50 rounded-md focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-red-500 focus-visible:ring-offset-1 transition-colors"
title="フォームを削除"
aria-label="フォームを削除"
>
Expand Down Expand Up @@ -398,7 +398,7 @@ export default function FormEdit() {
tabIndex={tab === 'visual' ? 0 : -1}
onClick={() => switchTab('visual')}
onKeyDown={handleTabKeyDown}
className={`px-3 py-1 text-xs rounded ${
className={`px-3 py-1 text-xs rounded focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-slate-900 focus-visible:ring-offset-1 transition-colors ${
tab === 'visual'
? 'bg-white text-slate-900 shadow-sm'
: 'text-slate-600'
Expand All @@ -417,7 +417,7 @@ export default function FormEdit() {
tabIndex={tab === 'json' ? 0 : -1}
onClick={() => switchTab('json')}
onKeyDown={handleTabKeyDown}
className={`px-3 py-1 text-xs rounded ${
className={`px-3 py-1 text-xs rounded focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-slate-900 focus-visible:ring-offset-1 transition-colors ${
tab === 'json'
? 'bg-white text-slate-900 shadow-sm'
: 'text-slate-600'
Expand Down
2 changes: 1 addition & 1 deletion frontend/src/pages/Submissions.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,7 @@ export default function Submissions() {
<button
onClick={handleDownload}
disabled={!exportFormId || downloading}
className="inline-flex items-center gap-2 px-4 py-2 bg-slate-900 text-white text-sm rounded-md disabled:opacity-50"
className="inline-flex items-center gap-2 px-4 py-2 bg-slate-900 text-white text-sm rounded-md disabled:opacity-50 focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-slate-900 focus-visible:ring-offset-2 transition-colors"
>
<Download size={ICON_SIZE.sm} />
{downloading ? 'ダウンロード中…' : 'CSVダウンロード'}
Expand Down
2 changes: 1 addition & 1 deletion frontend/src/pages/admin/AdminContactDetail.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -133,7 +133,7 @@ export default function AdminContactDetail() {
key={s}
onClick={() => changeStatus(s)}
disabled={updating || detail.status === s}
className={`px-3 py-1.5 rounded-md text-sm border ${
className={`px-3 py-1.5 rounded-md text-sm border focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-slate-900 focus-visible:ring-offset-2 transition-colors ${
detail.status === s
? 'bg-slate-900 text-white border-slate-900'
: 'bg-white text-slate-700 border-slate-300 hover:bg-slate-50'
Expand Down
Loading