⚙}
+ trigger={
+
+ }
title="設定・システムの状態"
buttonClassName="icon-button"
>
diff --git a/web/src/components/ConnectionPanel.tsx b/web/src/components/ConnectionPanel.tsx
index 1d093d1..28492fd 100644
--- a/web/src/components/ConnectionPanel.tsx
+++ b/web/src/components/ConnectionPanel.tsx
@@ -10,7 +10,7 @@ import { Dialog } from '../ui/Dialog'
import { Popover } from '../ui/Popover'
/**
- * ヘッダー右上のキューブ接続。未接続なら「Connect」、接続中はデバイス名とバッテリーを出し、
+ * ヘッダー右上のキューブ接続。未接続なら「接続」、接続中はデバイス名とバッテリーを出し、
* 押すと詳細(状態リセット・切断など)を開く。
*/
export function CubeConnectionControl() {
@@ -43,7 +43,7 @@ export function CubeConnectionControl() {
disabled={!isWebBluetoothAvailable()}
title={isWebBluetoothAvailable() ? 'キューブに接続' : 'Web Bluetoothが使えません(http://localhost から開いてください)'}
>
- Connect
+ 接続
)
diff --git a/web/src/components/PracticeRunner.tsx b/web/src/components/PracticeRunner.tsx
index 5fb5b36..94cb5a1 100644
--- a/web/src/components/PracticeRunner.tsx
+++ b/web/src/components/PracticeRunner.tsx
@@ -58,7 +58,7 @@ export function PracticeRunner({
{overlay?.(state)}
>
)}
- {status === 'disconnected' && 右上の「Connect」でキューブを接続すると練習できます
}
+ {status === 'disconnected' && 右上の「接続」でキューブを接続すると練習できます
}
{error && {error}
}
>
}
diff --git a/web/src/index.css b/web/src/index.css
index f6923e2..b40e900 100644
--- a/web/src/index.css
+++ b/web/src/index.css
@@ -1459,26 +1459,28 @@ a.kind-badge:hover {
display: inline-flex;
align-items: center;
gap: 5px;
- padding: 2px 8px;
- border: 1px solid color-mix(in srgb, var(--error) 55%, transparent);
- border-radius: 4px;
- color: var(--error);
- font-size: 0.75rem;
- font-weight: 700;
- letter-spacing: 0.08em;
+ padding: 4px 10px;
+ border: 1px solid color-mix(in srgb, var(--ink) 12%, transparent);
+ border-radius: 8px;
+ color: var(--mute);
+ font-size: 0.85rem;
line-height: 1.4;
text-decoration: none;
white-space: nowrap;
}
.live-link:hover {
- background: color-mix(in srgb, var(--error) 10%, transparent);
+ color: var(--ink);
+ background: color-mix(in srgb, var(--ink) 6%, transparent);
}
.live-link.active {
+ color: var(--ink);
+ border-color: color-mix(in srgb, var(--ink) 30%, transparent);
+}
+
+.live-link.active .live-dot {
background: var(--error);
- border-color: var(--error);
- color: #fff;
}
.live-dot {
@@ -1521,7 +1523,7 @@ a.kind-badge:hover {
}
.system-icon {
- font-size: 1rem;
+ display: block;
color: var(--mute);
}
diff --git a/web/src/pages/AlgDrillPage.tsx b/web/src/pages/AlgDrillPage.tsx
index df876c7..2a19d73 100644
--- a/web/src/pages/AlgDrillPage.tsx
+++ b/web/src/pages/AlgDrillPage.tsx
@@ -316,7 +316,7 @@ function DrillView({ c, alg, onBack, onSaved }: { c: CaseInfo; alg: string; onBa
)}
- {status === 'disconnected' && 右上の「Connect」でキューブを接続すると練習できます
}
+ {status === 'disconnected' && 右上の「接続」でキューブを接続すると練習できます
}
{settingUp && setup && setupState ? (
@@ -330,7 +330,7 @@ function DrillView({ c, alg, onBack, onSaved }: { c: CaseInfo; alg: string; onBa
? `${state.moveCount}手`
: last != null
? last <= targetMs
- ? `目標(${target}秒)以内!`
+ ? `目標(${target}秒)以内`
: `目標まで ${((last - targetMs) / 1000).toFixed(2)}秒`
: '手順を回すと計測します'}
diff --git a/web/src/pages/LivePage.tsx b/web/src/pages/LivePage.tsx
index 310c26e..4abda8e 100644
--- a/web/src/pages/LivePage.tsx
+++ b/web/src/pages/LivePage.tsx
@@ -12,7 +12,7 @@ import { useLiveFeed } from '../live/hooks'
/**
* 中継:キューブをつないだブラウザ(メイン)のタイマー画面を映す。見るだけで、記録も操作もしない。
- * この端末のキューブ(右上の Connect)とは別のストアに映すので、ここでキューブをつないでも混ざらない。
+ * この端末のキューブ(右上の「接続」)とは別のストアに映すので、ここでキューブをつないでも混ざらない。
*/
export function LivePage() {
const { kpuzzle } = useCubeStore()
diff --git a/web/src/pages/TimerPage.tsx b/web/src/pages/TimerPage.tsx
index 657e676..6bc72af 100644
--- a/web/src/pages/TimerPage.tsx
+++ b/web/src/pages/TimerPage.tsx
@@ -67,7 +67,7 @@ export function TimerPage() {
>
)}
{status === 'disconnected' && (
- 右上の「Connect」でキューブを接続すると、回転を記録して保存できます
+ 右上の「接続」でキューブを接続すると、回転を記録して保存できます
)}
{saveError && {saveError}
}
>