perf(web): streamline table actions and destructive dialogs (#5645)

* perf(data-table): autosize action columns

- exclude actions columns from shared table width calculations so action cells size to their content.
- remove fixed size and w-* width overrides from feature action columns to preserve content-based layout.

* perf(data-table): streamline row action controls

- expose common edit and status actions directly while moving secondary actions into overflow menus.
- add shared row action menu helpers so static and table rows use consistent action controls.
- let action columns size to their content instead of relying on fixed widths.

* fix(web): localize destructive dialog copy

- route delete, reset, and batch update confirmation text through i18n.
- add locale entries for affected channel, model, system settings, and user dialogs.

* perf(web): unify destructive dialog actions

- align delete and cleanup confirmation buttons with the shared destructive variant.
- replace custom destructive color overrides with semantic button variants.
- clean up lint errors in touched dialog files before committing.

* fix(web): add user action success translations

- add localized success messages for user delete, status, and role changes.
- keep user management toast copy available across all frontend locales.

* fix(data-table): prevent mobile badge clipping

- expose badge cell slots so mobile card styles can target nested badge wrappers.
- reset badge margins in card rows to keep provider icons fully visible on small screens.
This commit is contained in:
QuentinHsu
2026-06-25 13:13:41 +08:00
committed by GitHub
parent b191f47375
commit 9ba251ce5f
61 changed files with 1340 additions and 1131 deletions
+24
View File
@@ -24,6 +24,8 @@
"{\"original-model\": \"replacement-model\"}": "{\" original - model \":\" replacement - model \"}",
"{{category}} Models": "{{category}} モデル",
"{{completed}}/{{total}} completed": "{{completed}}/{{total}} 完了",
"{{count}} announcements will be removed from the list.": "{{count}} 件のお知らせがリストから削除されます。",
"{{count}} API shortcuts will be removed from the list.": "{{count}} 件の API ショートカットがリストから削除されます。",
"{{count}} channel(s) deleted": "{{count}} 個のチャネルを削除しました",
"{{count}} channel(s) disabled": "{{count}} 個のチャネルを無効にしました",
"{{count}} channel(s) enabled": "{{count}} 個のチャネルを有効にしました",
@@ -32,6 +34,7 @@
"{{count}} days ago": "{{count}} 日前",
"{{count}} days remaining": "残り {{count}} 日",
"{{count}} disabled channel(s) deleted": "{{count}} 個の無効チャネルを削除しました",
"{{count}} FAQ entries will be removed from the list.": "{{count}} 件の FAQ 項目がリストから削除されます。",
"{{count}} hours ago": "{{count}} 時間前",
"{{count}} incidents": "{{count}} 件のインシデント",
"{{count}} incidents in the last 24 hours": "過去 24 時間に {{count}} 件のインシデント",
@@ -44,6 +47,7 @@
"{{count}} override": "{{count}} 個のオーバーライド",
"{{count}} selected targets available for bulk copy.": "一括コピーに使用できる対象が {{count}} 個選択されています。",
"{{count}} tiers": "{{count}} 段階",
"{{count}} Uptime Kuma groups will be removed from the list.": "{{count}} 件の Uptime Kuma グループがリストから削除されます。",
"{{count}} vendors": "{{count}} ベンダー",
"{{count}} weeks ago": "{{count}} 週間前",
"{{field}} updated to {{value}}": "{{field}} を {{value}} に更新しました",
@@ -414,7 +418,10 @@
"Are you sure you want to delete": "削除してもよろしいですか",
"Are you sure you want to delete {{count}} model(s)? This action cannot be undone.": "{{count}} 個のモデルを削除してもよろしいですか?この操作は元に戻せません。",
"Are you sure you want to delete all auto-disabled keys? This action cannot be undone.": "すべての自動無効化されたキーを削除してもよろしいですか?この操作は元に戻せません。",
"Are you sure you want to delete channel \"{{name}}\"? This action cannot be undone.": "チャネル \"{{name}}\" を削除してもよろしいですか?この操作は元に戻せません。",
"Are you sure you want to delete deployment \"{{name}}\"? This action cannot be undone.": "デプロイ \"{{name}}\" を削除してもよろしいですか?この操作は元に戻せません。",
"Are you sure you want to delete group \"{{name}}\"? This action cannot be undone.": "グループ \"{{name}}\" を削除してもよろしいですか?この操作は元に戻せません。",
"Are you sure you want to delete model \"{{name}}\"? This action cannot be undone.": "モデル \"{{name}}\" を削除してもよろしいですか?この操作は元に戻せません。",
"Are you sure you want to delete this key? This action cannot be undone.": "このキーを削除してもよろしいですか?この操作は元に戻せません。",
"Are you sure you want to disable all enabled keys?": "すべての有効なキーを無効にすることをよろしいですか?",
"Are you sure you want to enable all keys?": "すべてのキーを有効にすることをよろしいですか?",
@@ -1237,6 +1244,7 @@
"Delete selected channels": "選択したチャネルを削除",
"Delete selected models": "選択したモデルを削除",
"Deleted": "削除済み",
"Deleted \"{{name}}\"": "\"{{name}}\" を削除しました",
"Deleted ({{id}})": "削除済み ({{id}})",
"Deleted {{count}} failed models": "失敗したモデルを {{count}} 個削除しました",
"Deleted a custom OAuth provider": "カスタム OAuth プロバイダーを削除しました",
@@ -1443,6 +1451,7 @@
"Edit chat preset": "チャットプリセットを編集",
"Edit discount tier": "割引ティアを編集",
"Edit FAQ": "FAQ を編集",
"Edit group": "グループを編集",
"Edit group rate limit": "グループレート制限を編集",
"Edit JSON object directly. Suitable for simple parameter overrides.": "JSONオブジェクトを直接編集します。シンプルなパラメータオーバーライドに適しています。",
"Edit JSON text directly. Format will be validated on save.": "JSONテキストを直接編集します。保存時にフォーマットが検証されます。",
@@ -1718,6 +1727,7 @@
"Failed to delete channel": "チャネルの削除に失敗しました",
"Failed to delete disabled channels": "無効化されたチャネルの削除に失敗しました",
"Failed to delete failed models": "失敗したモデルの削除に失敗しました",
"Failed to delete group": "グループの削除に失敗しました",
"Failed to delete invalid redemption codes": "無効な引き換えコードの削除に失敗しました",
"Failed to delete model": "モデルの削除に失敗しました",
"Failed to delete provider": "プロバイダーの削除に失敗しました",
@@ -3595,6 +3605,7 @@
"Resend ({{seconds}}s)": "再送信 ({{seconds}}秒)",
"Reset": "リセット",
"Reset 2FA": "2FAをリセット",
"Reset 2FA for {{username}}? The user must set up 2FA again to continue using it.": "{{username}} の 2FA をリセットしますか?引き続き使用するには、2FA を再設定する必要があります。",
"Reset all model prices?": "すべてのモデル価格をリセットしますか?",
"Reset all model ratios?": "すべてのモデル比率をリセットしますか?",
"Reset all settings to default values": "すべての設定をデフォルト値にリセット",
@@ -3610,6 +3621,7 @@
"Reset failed": "リセット失敗",
"Reset model ratios": "モデル倍率をリセットしました",
"Reset Passkey": "Passkeyリセット",
"Reset Passkey for {{username}}? The user will need to register a new Passkey before using passwordless login.": "{{username}} の Passkey をリセットしますか?パスワードレスログインを使用するには、新しい Passkey の登録が必要です。",
"Reset password": "パスワードをリセット",
"Reset Period": "リセット期間",
"Reset prices": "価格をリセット",
@@ -4259,6 +4271,8 @@
"This action cannot be undone.": "この操作は元に戻せません。",
"This action cannot be undone. This will permanently delete your account and remove all your data from our servers.": "この操作は元に戻せません。これにより、あなたのアカウントは完全に削除され、すべてのデータがサーバーから削除されます。",
"This action will permanently remove 2FA protection from your account.": "この操作により、アカウントから2FA保護が完全に削除されます。",
"This announcement will be removed from the list.": "このお知らせはリストから削除されます。",
"This API shortcut will be removed from the list.": "この API ショートカットはリストから削除されます。",
"This channel has no configured models.": "このチャンネルには構成されたモデルがありません。",
"This channel is not an Ollama channel.": "このチャネルはOllamaチャネルではありません。",
"This channel type does not support fetching models": "このチャネルタイプはモデルの取得をサポートしていません",
@@ -4269,6 +4283,7 @@
"This device does not support Passkey": "このデバイスはPasskeyをサポートしていません",
"This device does not support Passkey verification.": "このデバイスはPasskey認証をサポートしていません。",
"This expression is too complex for the visual editor. Please switch to expression mode to edit.": "この式はビジュアルエディタでは扱いにくいです。式モードに切り替えて編集してください。",
"This FAQ entry will be removed from the list.": "この FAQ 項目はリストから削除されます。",
"This feature is experimental. Configuration format and behavior may change.": "この機能は実験的です。設定フォーマットや動作は変更される可能性があります。",
"This feature requires server-side WeChat configuration": "この機能にはサーバー側のWeChat設定が必要です",
"This identifier is sent to the payment backend when creating an order. Use alipay for Alipay, wxpay for WeChat Pay, stripe for Stripe. Custom values must be supported by your payment provider.": "注文作成時に、この識別子が決済バックエンドへ送信されます。Alipay は alipay、WeChat Pay は wxpay、Stripe は stripe を使ってください。カスタム値は決済サービス側で対応している必要があります。",
@@ -4288,6 +4303,7 @@
"This site currently has {{count}} models enabled": "このサイトでは現在 {{count}} 個のモデルが有効です",
"This tier catches any request that did not match earlier tiers.": "この段階は、前の段階に一致しなかったすべてのリクエストを受け取ります。",
"this token group": "このトークングループ",
"This Uptime Kuma group will be removed from the list.": "この Uptime Kuma グループはリストから削除されます。",
"this user group": "このユーザーグループ",
"This user has no bindings": "このユーザーには連携がありません",
"This week": "今週",
@@ -4297,11 +4313,14 @@
"This will delete all channel affinity cache entries still in memory.": "メモリ内のすべてのチャネルアフィニティキャッシュエントリが削除されます。",
"This will delete temporary cache files that have not been used for more than 10 minutes": "10分以上使用されていない一時キャッシュファイルが削除されます",
"This will extend the deployment by the specified hours.": "これにより、デプロイメントを指定された時間分延長します。",
"This will permanently delete all manually and automatically disabled channels. This action cannot be undone.": "手動および自動で無効化されたすべてのチャネルを完全に削除します。この操作は元に戻せません。",
"This will permanently delete API key": "これによりAPIキーが完全に削除されます",
"This will permanently delete redemption code": "これにより引き換えコードが完全に削除されます",
"This will permanently delete user": "これによりユーザーが完全に削除されます",
"This will permanently remove all log entries created before {{date}}.": "{{date}} より前に作成されたすべてのログエントリが完全に削除されます。",
"This will permanently remove log entries before the selected timestamp.": "選択したタイムスタンプより前のログエントリが完全に削除されます。",
"This will update the priority to {{value}} for all {{count}} channel(s) with tag \"{{tag}}\". Continue?": "タグ \"{{tag}}\" の {{count}} 件すべてのチャネルの優先度を {{value}} に更新します。続行しますか?",
"This will update the weight to {{value}} for all {{count}} channel(s) with tag \"{{tag}}\". Continue?": "タグ \"{{tag}}\" の {{count}} 件すべてのチャネルの重みを {{value}} に更新します。続行しますか?",
"This year": "今年",
"Three steps to get started": "3ステップで始める",
"Throughput": "スループット",
@@ -4638,6 +4657,10 @@
"User Consumption Trend": "ユーザー消費トレンド",
"User created successfully": "ユーザーの作成に成功しました",
"User dashboard and quota controls.": "ユーザーダッシュボードとクォータ制御。",
"User deleted successfully": "ユーザーを削除しました",
"User demoted to regular user successfully": "ユーザーを通常ユーザーに降格しました",
"User disabled successfully": "ユーザーを無効化しました",
"User enabled successfully": "ユーザーを有効化しました",
"User Exclusive Ratio": "専用倍率",
"User group": "ユーザーグループ",
"User Group": "ユーザーグループ",
@@ -4653,6 +4676,7 @@
"User Information": "ユーザー情報",
"User Menu": "ユーザーメニュー",
"User personal functions": "ユーザー個人機能",
"User promoted to admin successfully": "ユーザーを管理者に昇格しました",
"User selectable": "ユーザー選択可",
"User Subscription Management": "ユーザーサブスクリプション管理",
"User updated successfully": "ユーザーの更新に成功しました",