AI Overviewブロックの送信ボタンをテーマCSSの上書きに強くする - #122
Conversation
一部テーマで送信ボタンが四角く巨大化し矢印が消える問題を修正。 ボタン等のスタイルは全て詳細度0の :where() で書かれていたため、 テーマのボタン向けルール(.wp-block-button__link や button 要素、 form button[type=submit] など)が width/height/min-height/padding/ border-radius を上書きし、円形40pxのボタンが巨大な四角形になっていた。 ボックス系・レイアウト系プロパティのみ .hamelp-ai-overview を前置きして 詳細度 0,2,0 にスコープ化し、テーマの典型的なボタンセレクタに勝つように した。min-height:0 と padding:0 でテーマ注入値を打ち消し、max-height:none でテーマの高さ上限も無効化。色・背景・transition・hover・focusの色などの 装飾系プロパティは従来どおり :where() のまま残し、テーマからのカスタマイズ 性を維持する。 対象: src/blocks/ai-overview/style.scss - .hamelp-ai-overview__button の position/box/flex/border-radius 等をスコープ化 - .hamelp-ai-overview__button-icon の幅高さ(20px)をスコープ化 - .hamelp-ai-overview__input-row の position/display をスコープ化 - .hamelp-ai-overview__input の padding/min-height/box-sizing/field-sizing/ resize/align-content をスコープ化
AI トリアージ: PR #122リスク: 🟢 低(CSS のみ、ロジック変更なし) サマリー
詳細レビューテスト要否
レビュワーが確認すべき箇所
設計上の懸念構造/装飾の分割方針は正確で一貫している。
|
Requested by NAGAHAMA Bissy Yuki · Slack thread
現状(バグ)
一部のテーマで、AI Overview ブロック(
hamelp/ai-overview)の丸い送信ボタン(↑)が、巨大な四角形として描画され、矢印が消える/中央からずれることがあった(テスト3テーマ中2テーマで再現、ニュートラルなテーマでは正常)。原因: ブロックのスタイルはすべて詳細度 0 の
:where(...)で書かれている。そのため、テーマ側のボタン向けルール(.wp-block-button__link、素のbutton、form button[type=submit]など、詳細度 0,0,1〜0,1,1)が、こちらのwidth/height/min-height/padding/border-radiusを上書きし、40px の円形ボタンがテーマのmin-height:56px; padding:14px 28px; border-radius:6px; width:auto等で四角く肥大化していた。変更後
ボックス系・レイアウト系(構造的)プロパティだけを
.hamelp-ai-overviewを前置きした子孫セレクタ(詳細度 0,2,0)にスコープ化し、テーマの典型的なボタンセレクタに確実に勝つようにした。!importantは不要(0,2,0 で上記の攻撃的テーマに勝てることを実測で確認)。min-height:0とpadding:0でテーマ注入のmin-height/paddingを明示的に打ち消しmax-height:noneでテーマの高さ上限をガードbox-sizing:border-box/line-height:1/flex:noneで寸法を固定.hamelp-ai-overview__button-icon)のwidth/height:20pxも同じ詳細度で固定し、テーマのbutton svg等で矢印がリサイズ・押し出されないようにした色・背景(グラデーション)・
transition・:hover・:focus-visibleの色などの装飾系プロパティは従来どおり:where()(詳細度 0)のまま残し、テーマからのカスタマイズ性を意図的に維持している。:focus-visibleのみ(:focus/:focus-withinは使わない)というキーボード限定の挙動、タッチデバイスでのヒント非表示(@media (hover:none) and (pointer:coarse))もそのまま維持。How(どのセレクタをスコープ化したか)
src/blocks/ai-overview/style.scss::where(.hamelp-ai-overview__button).hamelp-ai-overview .hamelp-ai-overview__buttonposition/right/bottom/display/flex/align-items/justify-content/box-sizing/width/height/min-height:0/max-height:none/padding:0/border-radius:50%/line-height:1:where(.hamelp-ai-overview__button-icon).hamelp-ai-overview .hamelp-ai-overview__button-iconwidth/height(20px):where(.hamelp-ai-overview__input-row).hamelp-ai-overview .hamelp-ai-overview__input-rowposition:relative/display:flex:where(.hamelp-ai-overview__input)(1ルール):where(...)(装飾)+.hamelp-ai-overview .hamelp-ai-overview__input(構造)box-sizing/padding/field-sizing/min-height/resize/align-content送信ボタンの
background/グラデーション・color・cursor・transition、:hover/:focus-visible/:disabled、textarea のflex/border/background/color/font-*/line-height/max-heightは:where()のまま。検証
コンパイル済みブロック CSS を読み込んだ後に攻撃的なテーマ CSS を注入するハーネスで、Chromium にて実測(desktop 640px / 360px、devicePixelRatio 2):
計測結果(ボタンの実描画ボックス):
いずれもアイコンは 20×20px でボタン中心にセンタリング(中心からのオフセット 0px)。矢印が消える/四角化する問題が解消され、テーマなしでも回帰なし。
npm run lint:js/npm run lint:css: passphp -l hamelp.php: No syntax errors🤖 Generated with Claude Code
https://claude.ai/code/session_01RCRKyC4sroy5Xk144DGJdS
Generated by Claude Code