refactor(web): redesign bot config page with card-based layout and dirty-aware save button

- Restructure bot edit page from flat form to card-based layout (Basic Info, Pipeline Binding, Adapter Config, Danger Zone)
- Move enable switch and save button to sticky header for quick access
- Move webhook URL display into adapter config card (contextually related)
- Remove redundant adapter icon card; show description as FormDescription
- Add dedicated Danger Zone card with red border for delete action
- Remove duplicate delete dialog from BotForm (single source in BotDetailContent)
- Implement form dirty tracking: save button is disabled until user modifies content
- Add i18n keys for new card titles/descriptions across all 4 locales
This commit is contained in:
Junyan Qin
2026-03-27 12:29:18 +08:00
parent e8dc6fde53
commit 127dc455c3
6 changed files with 379 additions and 311 deletions
+11
View File
@@ -294,6 +294,17 @@ const enUS = {
log: 'Log',
configuration: 'Configuration',
logs: 'Logs',
basicInfo: 'Basic Information',
basicInfoDescription: 'Set the bot name and description',
routingConnection: 'Routing & Connection',
routingConnectionDescription:
'Bind the pipeline that processes messages for this bot',
adapterConfigDescription: 'Configure the selected platform adapter',
dangerZone: 'Danger Zone',
dangerZoneDescription: 'Irreversible and destructive actions',
deleteBotAction: 'Delete this bot',
deleteBotHint:
'Once deleted, all associated configuration will be permanently removed.',
webhookUrl: 'Webhook Callback URL',
webhookUrlCopied: 'Webhook URL copied',
webhookUrlHint:
+11
View File
@@ -299,6 +299,17 @@
log: 'ログ',
configuration: '設定',
logs: 'ログ',
basicInfo: '基本情報',
basicInfoDescription: 'ボットの名前と説明を設定',
routingConnection: 'ルーティングと接続',
routingConnectionDescription:
'このボットのメッセージを処理するパイプラインを紐付け',
adapterConfigDescription: '選択したプラットフォームアダプターを設定',
dangerZone: '危険ゾーン',
dangerZoneDescription: '元に戻せない操作',
deleteBotAction: 'このボットを削除',
deleteBotHint:
'削除すると、関連する全ての設定が完全に削除され、復元できません。',
webhookUrl: 'Webhook コールバック URL',
webhookUrlCopied: 'Webhook URL をコピーしました',
webhookUrlHint:
+9
View File
@@ -282,6 +282,15 @@ const zhHans = {
log: '日志',
configuration: '配置',
logs: '日志',
basicInfo: '基础信息',
basicInfoDescription: '设置机器人名称和描述',
routingConnection: '路由与连接',
routingConnectionDescription: '绑定处理此机器人消息的流水线',
adapterConfigDescription: '配置所选平台适配器',
dangerZone: '危险区域',
dangerZoneDescription: '不可逆的操作',
deleteBotAction: '删除此机器人',
deleteBotHint: '删除后,所有关联配置将被永久移除,且无法恢复。',
webhookUrl: 'Webhook 回调地址',
webhookUrlCopied: 'Webhook 地址已复制',
webhookUrlHint:
+9
View File
@@ -281,6 +281,15 @@ const zhHant = {
log: '日誌',
configuration: '設定',
logs: '日誌',
basicInfo: '基礎資訊',
basicInfoDescription: '設定機器人名稱和描述',
routingConnection: '路由與連接',
routingConnectionDescription: '綁定處理此機器人訊息的流程線',
adapterConfigDescription: '設定所選平台適配器',
dangerZone: '危險區域',
dangerZoneDescription: '不可逆的操作',
deleteBotAction: '刪除此機器人',
deleteBotHint: '刪除後,所有關聯設定將被永久移除,且無法復原。',
webhookUrl: 'Webhook 回調位址',
webhookUrlCopied: 'Webhook 位址已複製',
webhookUrlHint: