@nextclaw/ui 0.15.2 → 0.15.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +20 -0
- package/dist/assets/{api-B7Qigvtm.js → api-iNBpppzj.js} +2 -2
- package/dist/assets/{appearance-settings-page-CuE0Iiqj.js → appearance-settings-page-DMffQFR3.js} +1 -1
- package/dist/assets/{book-open-Ba2f7YiG.js → book-open-C3mJGwiy.js} +1 -1
- package/dist/assets/{channels-list-page-CTsM6TcP.js → channels-list-page-CCtp0BRS.js} +1 -1
- package/dist/assets/chat-page-H5a0dWvO.js +1 -0
- package/dist/assets/{config-split-page-Fbb4PtTf.js → config-split-page-CrOJgB-Y.js} +1 -1
- package/dist/assets/{confirm-dialog-D2EG3nqE.js → confirm-dialog-Chv50USy.js} +2 -2
- package/dist/assets/{desktop-update-config-BGR3HUi1.js → desktop-update-config-KzTuXRf_.js} +1 -1
- package/dist/assets/{dist-7JTjycxE.js → dist-BunzmC4B.js} +1 -1
- package/dist/assets/{dist-wXLhk4hl.js → dist-ChmGwvtK.js} +1 -1
- package/dist/assets/doc-browser-DNRL4Zvd.js +1 -0
- package/dist/assets/doc-browser-Dg0pmkOg.js +1 -0
- package/dist/assets/{doc-browser-context-CYAGm5d5.js → doc-browser-context-BHY-0FSD.js} +1 -1
- package/dist/assets/{es2015-j1SRCIX5.js → es2015-DQZ5JWwK.js} +1 -1
- package/dist/assets/{external-link-DxuPaDoK.js → external-link-CU0kzzIP.js} +1 -1
- package/dist/assets/{form-actions-BztL7P_T.js → form-actions-BvCp_0lS.js} +1 -1
- package/dist/assets/{i18n-provider-B4oMxOFx.js → i18n-provider-Cu8XyZb_.js} +1 -1
- package/dist/assets/index-CzfBdvK1.css +1 -0
- package/dist/assets/index-DGqHne1Q.js +104 -0
- package/dist/assets/loader-circle-CDSFuzmk.js +1 -0
- package/dist/assets/mcp-marketplace-page-BeEQK0DL.js +9 -0
- package/dist/assets/mcp-marketplace-page-D6idOTLp.js +1 -0
- package/dist/assets/{model-config-page-DeKk9gvE.js → model-config-page-bNNo-XyG.js} +1 -1
- package/dist/assets/plus-D4DsdLN-.js +1 -0
- package/dist/assets/{provider-scoped-model-input-DsH2LF1q.js → provider-scoped-model-input-IlgQCsoT.js} +1 -1
- package/dist/assets/{providers-config-page-BFnGp68F.js → providers-config-page-wLo6CAJw.js} +1 -1
- package/dist/assets/{react-UirzUuST.js → react-BPIsQIlO.js} +1 -1
- package/dist/assets/{refresh-cw-eT8BF-8B.js → refresh-cw-CILd1vAP.js} +1 -1
- package/dist/assets/remote-uKEYp7AR.js +1 -0
- package/dist/assets/rotate-cw-wPFPg1kH.js +1 -0
- package/dist/assets/{runtime-config-page-BelAqiNG.js → runtime-config-page-DDn1sP4G.js} +1 -1
- package/dist/assets/{save-Cb2g0BOi.js → save-ByJqcPTP.js} +1 -1
- package/dist/assets/{search-BcHjwdsb.js → search-DVIV6pfD.js} +1 -1
- package/dist/assets/{search-config-page-zPm6--Ig.js → search-config-page-B-Cf4iiB.js} +1 -1
- package/dist/assets/{secrets-config-page-Cxyp-KuQ.js → secrets-config-page-DPKsY8Iw.js} +1 -1
- package/dist/assets/security-config-e9SSBlKr.js +1 -0
- package/dist/assets/{select-CdSEOwVM.js → select-BdgczSNw.js} +1 -1
- package/dist/assets/{setting-row-CTAtGexr.js → setting-row-BkTVUTKx.js} +1 -1
- package/dist/assets/{settings-2-2DWauOjY.js → settings-2-CH5shGg_.js} +1 -1
- package/dist/assets/{side-dock-DPvakJ0a.js → side-dock-BsBvcJ9i.js} +2 -2
- package/dist/assets/{skeleton-P5oM14E1.js → skeleton-DeX1FKw7.js} +1 -1
- package/dist/assets/switch-Cv8Ekb3x.js +1 -0
- package/dist/assets/{tag-chip-D-WsKoT1.js → tag-chip-RB9uKcoC.js} +1 -1
- package/dist/assets/{tooltip-CjkOaHW7.js → tooltip-oQlEN-l6.js} +1 -1
- package/dist/assets/{use-config--hx5oxQn.js → use-config-l3W7y8Qz.js} +1 -1
- package/dist/assets/{use-confirm-dialog-CD9a_SK1.js → use-confirm-dialog-BAxaVOJI.js} +1 -1
- package/dist/assets/x-BBMffEN0.js +1 -0
- package/dist/index.html +26 -26
- package/package.json +9 -9
- package/src/app/components/layout/sidebar-items.tsx +3 -3
- package/src/app/components/layout/sidebar-rail.styles.ts +2 -2
- package/src/app/components/layout/sidebar.tsx +1 -1
- package/src/app/styles/design-system.css +17 -4
- package/src/features/chat/components/layout/chat-sidebar-utility-menu.tsx +1 -1
- package/src/features/chat/features/conversation/components/session-queued-input-rows.tsx +1 -1
- package/src/features/chat/features/message/components/__tests__/chat-message-list.container.test.tsx +62 -1
- package/src/features/chat/features/message/components/chat-message-list.container.tsx +47 -1
- package/src/features/chat/features/message/utils/__tests__/chat-message-process-summary.utils.test.ts +11 -1
- package/src/features/chat/features/message/utils/__tests__/chat-message-texts.utils.test.ts +23 -0
- package/src/features/chat/features/message/utils/chat-message-process-summary.utils.ts +5 -0
- package/src/features/chat/features/message/utils/chat-message-texts.utils.ts +138 -0
- package/src/features/chat/features/session/components/chat-sidebar-project-groups.tsx +1 -1
- package/src/features/chat/features/session/components/session-header/chat-session-title-switcher.tsx +2 -2
- package/src/features/chat/features/welcome/components/chat-welcome-project-picker.tsx +1 -1
- package/src/features/chat/features/welcome/components/chat-welcome-session-type-picker.tsx +1 -1
- package/src/features/chat/features/workspace/components/__tests__/chat-session-workspace-file-preview.test.tsx +67 -0
- package/src/features/chat/features/workspace/components/chat-session-workspace-directory-browser.tsx +1 -1
- package/src/features/chat/features/workspace/components/chat-session-workspace-file-breadcrumb-browser.tsx +2 -2
- package/src/features/chat/features/workspace/components/chat-session-workspace-file-breadcrumbs.tsx +1 -1
- package/src/features/chat/features/workspace/components/chat-session-workspace-file-preview.tsx +174 -22
- package/src/features/chat/features/workspace/utils/chat-workspace-file-tab-persistence.utils.ts +4 -0
- package/src/features/chat/managers/chat-thread.manager.ts +2 -0
- package/src/features/chat/stores/chat-thread.store.ts +3 -0
- package/src/features/cron/components/cron-config.tsx +63 -80
- package/src/features/marketplace/components/detail-doc/__tests__/marketplace-detail-doc.test.tsx +44 -6
- package/src/features/marketplace/components/marketplace-detail-doc.tsx +8 -4
- package/src/features/marketplace/components/marketplace-page-parts.tsx +1 -1
- package/src/features/marketplace/hooks/use-marketplace-detail-doc-entry.ts +84 -0
- package/src/features/panel-apps/components/panel-apps-list.tsx +2 -2
- package/src/features/right-panel-resources/components/right-panel-resource-home-page.tsx +1 -1
- package/src/features/side-dock/components/side-dock.tsx +3 -3
- package/src/index.css +239 -13
- package/src/shared/components/actions/action-link.tsx +1 -1
- package/src/shared/components/doc-browser/doc-browser-panel-parts.tsx +1 -1
- package/src/shared/components/ui/actions/icon-action-button.tsx +1 -1
- package/src/shared/components/ui/button.tsx +1 -1
- package/src/shared/components/ui/dialog.tsx +1 -1
- package/src/shared/components/ui/input.tsx +1 -1
- package/src/shared/components/ui/select.tsx +1 -1
- package/src/shared/components/ui/switch.tsx +1 -1
- package/src/shared/components/ui/tabs.tsx +1 -1
- package/src/shared/components/ui/textarea.tsx +1 -1
- package/src/shared/lib/i18n/locales/en-US/chat.json +83 -0
- package/src/shared/lib/i18n/locales/zh-CN/chat.json +83 -0
- package/dist/assets/chat-page-C_5dcuE3.js +0 -1
- package/dist/assets/doc-browser-bHyXnxlj.js +0 -1
- package/dist/assets/doc-browser-gTrQ3jCF.js +0 -1
- package/dist/assets/index-CvrvblgX.css +0 -1
- package/dist/assets/index-Obd4JYU2.js +0 -104
- package/dist/assets/loader-circle-CdzgK4eH.js +0 -1
- package/dist/assets/mcp-marketplace-page-Bt7CuOoq.js +0 -9
- package/dist/assets/mcp-marketplace-page-Ck3t78_n.js +0 -1
- package/dist/assets/plus-Bx7wQbhG.js +0 -1
- package/dist/assets/remote-CDkHZtA8.js +0 -1
- package/dist/assets/rotate-cw-1JqxHTuw.js +0 -1
- package/dist/assets/security-config-B_gCq9fn.js +0 -1
- package/dist/assets/switch-BU_UEULb.js +0 -1
- package/dist/assets/x-DT5x45JU.js +0 -1
package/src/index.css
CHANGED
|
@@ -546,9 +546,9 @@
|
|
|
546
546
|
FOCUS STATES
|
|
547
547
|
======================================== */
|
|
548
548
|
.focus-ring {
|
|
549
|
-
@apply focus:outline-none focus-visible:ring-
|
|
550
|
-
--tw-ring-color: hsl(var(--
|
|
551
|
-
--tw-ring-offset-color:
|
|
549
|
+
@apply focus:outline-none focus-visible:ring-1 focus-visible:ring-offset-0;
|
|
550
|
+
--tw-ring-color: hsl(var(--border));
|
|
551
|
+
--tw-ring-offset-color: transparent;
|
|
552
552
|
}
|
|
553
553
|
}
|
|
554
554
|
|
|
@@ -972,101 +972,327 @@
|
|
|
972
972
|
|
|
973
973
|
.chat-codeblock .hljs-keyword,
|
|
974
974
|
.chat-file-code-syntax .hljs-keyword,
|
|
975
|
+
.chat-terminal-pane .hljs-keyword,
|
|
975
976
|
.chat-codeblock .hljs-built_in,
|
|
976
977
|
.chat-file-code-syntax .hljs-built_in,
|
|
978
|
+
.chat-terminal-pane .hljs-built_in,
|
|
977
979
|
.chat-codeblock .hljs-type,
|
|
978
980
|
.chat-file-code-syntax .hljs-type,
|
|
981
|
+
.chat-terminal-pane .hljs-type,
|
|
979
982
|
.chat-codeblock .hljs-literal,
|
|
980
983
|
.chat-file-code-syntax .hljs-literal,
|
|
984
|
+
.chat-terminal-pane .hljs-literal,
|
|
981
985
|
.chat-codeblock .hljs-selector-tag,
|
|
982
|
-
.chat-file-code-syntax .hljs-selector-tag
|
|
986
|
+
.chat-file-code-syntax .hljs-selector-tag,
|
|
987
|
+
.chat-terminal-pane .hljs-selector-tag {
|
|
983
988
|
color: var(--md-code-keyword);
|
|
984
989
|
}
|
|
985
990
|
|
|
986
991
|
.chat-codeblock .hljs-title,
|
|
987
992
|
.chat-file-code-syntax .hljs-title,
|
|
993
|
+
.chat-terminal-pane .hljs-title,
|
|
988
994
|
.chat-codeblock .hljs-title.function_,
|
|
989
995
|
.chat-file-code-syntax .hljs-title.function_,
|
|
996
|
+
.chat-terminal-pane .hljs-title.function_,
|
|
990
997
|
.chat-codeblock .hljs-title.class_,
|
|
991
998
|
.chat-file-code-syntax .hljs-title.class_,
|
|
999
|
+
.chat-terminal-pane .hljs-title.class_,
|
|
992
1000
|
.chat-codeblock .hljs-section,
|
|
993
1001
|
.chat-file-code-syntax .hljs-section,
|
|
1002
|
+
.chat-terminal-pane .hljs-section,
|
|
994
1003
|
.chat-codeblock .hljs-selector-id,
|
|
995
|
-
.chat-file-code-syntax .hljs-selector-id
|
|
1004
|
+
.chat-file-code-syntax .hljs-selector-id,
|
|
1005
|
+
.chat-terminal-pane .hljs-selector-id {
|
|
996
1006
|
color: var(--md-code-title);
|
|
997
1007
|
}
|
|
998
1008
|
|
|
999
1009
|
.chat-codeblock .hljs-string,
|
|
1000
1010
|
.chat-file-code-syntax .hljs-string,
|
|
1011
|
+
.chat-terminal-pane .hljs-string,
|
|
1001
1012
|
.chat-codeblock .hljs-regexp,
|
|
1002
1013
|
.chat-file-code-syntax .hljs-regexp,
|
|
1014
|
+
.chat-terminal-pane .hljs-regexp,
|
|
1003
1015
|
.chat-codeblock .hljs-symbol,
|
|
1004
1016
|
.chat-file-code-syntax .hljs-symbol,
|
|
1017
|
+
.chat-terminal-pane .hljs-symbol,
|
|
1005
1018
|
.chat-codeblock .hljs-bullet,
|
|
1006
|
-
.chat-file-code-syntax .hljs-bullet
|
|
1019
|
+
.chat-file-code-syntax .hljs-bullet,
|
|
1020
|
+
.chat-terminal-pane .hljs-bullet {
|
|
1007
1021
|
color: var(--md-code-string);
|
|
1008
1022
|
}
|
|
1009
1023
|
|
|
1010
1024
|
.chat-codeblock .hljs-number,
|
|
1011
1025
|
.chat-file-code-syntax .hljs-number,
|
|
1026
|
+
.chat-terminal-pane .hljs-number,
|
|
1012
1027
|
.chat-codeblock .hljs-variable,
|
|
1013
1028
|
.chat-file-code-syntax .hljs-variable,
|
|
1029
|
+
.chat-terminal-pane .hljs-variable,
|
|
1014
1030
|
.chat-codeblock .hljs-template-variable,
|
|
1015
1031
|
.chat-file-code-syntax .hljs-template-variable,
|
|
1032
|
+
.chat-terminal-pane .hljs-template-variable,
|
|
1016
1033
|
.chat-codeblock .hljs-params,
|
|
1017
|
-
.chat-file-code-syntax .hljs-params
|
|
1034
|
+
.chat-file-code-syntax .hljs-params,
|
|
1035
|
+
.chat-terminal-pane .hljs-params {
|
|
1018
1036
|
color: var(--md-code-number);
|
|
1019
1037
|
}
|
|
1020
1038
|
|
|
1021
1039
|
.chat-codeblock .hljs-comment,
|
|
1022
1040
|
.chat-file-code-syntax .hljs-comment,
|
|
1041
|
+
.chat-terminal-pane .hljs-comment,
|
|
1023
1042
|
.chat-codeblock .hljs-quote,
|
|
1024
|
-
.chat-file-code-syntax .hljs-quote
|
|
1043
|
+
.chat-file-code-syntax .hljs-quote,
|
|
1044
|
+
.chat-terminal-pane .hljs-quote {
|
|
1025
1045
|
color: var(--md-code-comment);
|
|
1026
1046
|
font-style: italic;
|
|
1027
1047
|
}
|
|
1028
1048
|
|
|
1029
1049
|
.chat-codeblock .hljs-attr,
|
|
1030
1050
|
.chat-file-code-syntax .hljs-attr,
|
|
1051
|
+
.chat-terminal-pane .hljs-attr,
|
|
1031
1052
|
.chat-codeblock .hljs-attribute,
|
|
1032
1053
|
.chat-file-code-syntax .hljs-attribute,
|
|
1054
|
+
.chat-terminal-pane .hljs-attribute,
|
|
1033
1055
|
.chat-codeblock .hljs-property,
|
|
1034
1056
|
.chat-file-code-syntax .hljs-property,
|
|
1057
|
+
.chat-terminal-pane .hljs-property,
|
|
1035
1058
|
.chat-codeblock .hljs-name,
|
|
1036
1059
|
.chat-file-code-syntax .hljs-name,
|
|
1060
|
+
.chat-terminal-pane .hljs-name,
|
|
1037
1061
|
.chat-codeblock .hljs-selector-class,
|
|
1038
|
-
.chat-file-code-syntax .hljs-selector-class
|
|
1062
|
+
.chat-file-code-syntax .hljs-selector-class,
|
|
1063
|
+
.chat-terminal-pane .hljs-selector-class {
|
|
1039
1064
|
color: var(--md-code-attr);
|
|
1040
1065
|
}
|
|
1041
1066
|
|
|
1042
1067
|
.chat-codeblock .hljs-meta,
|
|
1043
1068
|
.chat-file-code-syntax .hljs-meta,
|
|
1069
|
+
.chat-terminal-pane .hljs-meta,
|
|
1044
1070
|
.chat-codeblock .hljs-doctag,
|
|
1045
1071
|
.chat-file-code-syntax .hljs-doctag,
|
|
1072
|
+
.chat-terminal-pane .hljs-doctag,
|
|
1046
1073
|
.chat-codeblock .hljs-tag,
|
|
1047
|
-
.chat-file-code-syntax .hljs-tag
|
|
1074
|
+
.chat-file-code-syntax .hljs-tag,
|
|
1075
|
+
.chat-terminal-pane .hljs-tag {
|
|
1048
1076
|
color: var(--md-code-meta);
|
|
1049
1077
|
}
|
|
1050
1078
|
|
|
1051
1079
|
.chat-codeblock .hljs-subst,
|
|
1052
1080
|
.chat-file-code-syntax .hljs-subst,
|
|
1081
|
+
.chat-terminal-pane .hljs-subst,
|
|
1053
1082
|
.chat-codeblock .hljs-punctuation,
|
|
1054
1083
|
.chat-file-code-syntax .hljs-punctuation,
|
|
1084
|
+
.chat-terminal-pane .hljs-punctuation,
|
|
1055
1085
|
.chat-codeblock .hljs-operator,
|
|
1056
|
-
.chat-file-code-syntax .hljs-operator
|
|
1086
|
+
.chat-file-code-syntax .hljs-operator,
|
|
1087
|
+
.chat-terminal-pane .hljs-operator {
|
|
1057
1088
|
color: var(--md-code-muted);
|
|
1058
1089
|
}
|
|
1059
1090
|
|
|
1060
1091
|
.chat-codeblock .hljs-deletion,
|
|
1061
|
-
.chat-file-code-syntax .hljs-deletion
|
|
1092
|
+
.chat-file-code-syntax .hljs-deletion,
|
|
1093
|
+
.chat-terminal-pane .hljs-deletion {
|
|
1062
1094
|
color: var(--md-code-deletion);
|
|
1063
1095
|
}
|
|
1064
1096
|
|
|
1065
1097
|
.chat-codeblock .hljs-addition,
|
|
1066
|
-
.chat-file-code-syntax .hljs-addition
|
|
1098
|
+
.chat-file-code-syntax .hljs-addition,
|
|
1099
|
+
.chat-terminal-pane .hljs-addition {
|
|
1067
1100
|
color: var(--md-code-addition);
|
|
1068
1101
|
}
|
|
1069
1102
|
|
|
1103
|
+
/* Terminal tool surface: terminal style without decorative chrome */
|
|
1104
|
+
.chat-terminal-surface {
|
|
1105
|
+
--terminal-surface: #0b1220;
|
|
1106
|
+
--terminal-border: rgba(148, 163, 184, 0.28);
|
|
1107
|
+
--terminal-text: #e5e7eb;
|
|
1108
|
+
--terminal-muted: #94a3b8;
|
|
1109
|
+
--terminal-prompt: #34d399;
|
|
1110
|
+
--terminal-caret: rgba(52, 211, 153, 0.92);
|
|
1111
|
+
--terminal-error-border: rgba(251, 113, 133, 0.42);
|
|
1112
|
+
--terminal-error-bg: rgba(127, 29, 29, 0.16);
|
|
1113
|
+
--terminal-error-text: #fecdd3;
|
|
1114
|
+
--md-code-text: #e5e7eb;
|
|
1115
|
+
--md-code-muted: #94a3b8;
|
|
1116
|
+
--md-code-keyword: #c084fc;
|
|
1117
|
+
--md-code-title: #93c5fd;
|
|
1118
|
+
--md-code-string: #86efac;
|
|
1119
|
+
--md-code-number: #fbbf24;
|
|
1120
|
+
--md-code-comment: #94a3b8;
|
|
1121
|
+
--md-code-attr: #67e8f9;
|
|
1122
|
+
--md-code-meta: #f0abfc;
|
|
1123
|
+
--md-code-deletion: #fca5a5;
|
|
1124
|
+
--md-code-addition: #86efac;
|
|
1125
|
+
|
|
1126
|
+
overflow: hidden;
|
|
1127
|
+
border: 1px solid var(--terminal-border);
|
|
1128
|
+
border-radius: 0.55rem;
|
|
1129
|
+
background: var(--terminal-surface);
|
|
1130
|
+
}
|
|
1131
|
+
|
|
1132
|
+
.chat-terminal-surface-error {
|
|
1133
|
+
border-color: var(--terminal-error-border);
|
|
1134
|
+
background:
|
|
1135
|
+
linear-gradient(180deg, var(--terminal-error-bg), transparent 48%),
|
|
1136
|
+
var(--terminal-surface);
|
|
1137
|
+
}
|
|
1138
|
+
|
|
1139
|
+
.chat-terminal-body {
|
|
1140
|
+
max-height: 22rem;
|
|
1141
|
+
overflow: auto;
|
|
1142
|
+
padding: 0.7rem 0.75rem 0.78rem;
|
|
1143
|
+
scrollbar-width: thin;
|
|
1144
|
+
scrollbar-color: rgba(148, 163, 184, 0.45) transparent;
|
|
1145
|
+
}
|
|
1146
|
+
|
|
1147
|
+
.chat-terminal-line {
|
|
1148
|
+
display: grid;
|
|
1149
|
+
grid-template-columns: 1rem minmax(0, 1fr);
|
|
1150
|
+
column-gap: 0.55rem;
|
|
1151
|
+
align-items: start;
|
|
1152
|
+
}
|
|
1153
|
+
|
|
1154
|
+
.chat-terminal-gutter {
|
|
1155
|
+
width: 1rem;
|
|
1156
|
+
color: var(--terminal-prompt);
|
|
1157
|
+
font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
|
|
1158
|
+
font-size: 0.8rem;
|
|
1159
|
+
font-weight: 700;
|
|
1160
|
+
line-height: 1.58;
|
|
1161
|
+
text-align: right;
|
|
1162
|
+
user-select: none;
|
|
1163
|
+
}
|
|
1164
|
+
|
|
1165
|
+
.chat-terminal-line-content {
|
|
1166
|
+
min-width: 0;
|
|
1167
|
+
}
|
|
1168
|
+
|
|
1169
|
+
.chat-terminal-output-block {
|
|
1170
|
+
margin-top: 0.55rem;
|
|
1171
|
+
}
|
|
1172
|
+
|
|
1173
|
+
.chat-terminal-pre {
|
|
1174
|
+
margin: 0;
|
|
1175
|
+
background: transparent;
|
|
1176
|
+
}
|
|
1177
|
+
|
|
1178
|
+
.chat-terminal-pre code,
|
|
1179
|
+
.chat-terminal-code {
|
|
1180
|
+
display: block;
|
|
1181
|
+
white-space: pre-wrap;
|
|
1182
|
+
overflow-wrap: anywhere;
|
|
1183
|
+
word-break: break-word;
|
|
1184
|
+
font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
|
|
1185
|
+
font-size: 0.8rem;
|
|
1186
|
+
line-height: 1.58;
|
|
1187
|
+
color: var(--terminal-text);
|
|
1188
|
+
font-variant-ligatures: none;
|
|
1189
|
+
tab-size: 2;
|
|
1190
|
+
}
|
|
1191
|
+
|
|
1192
|
+
.chat-terminal-pre-error,
|
|
1193
|
+
.chat-terminal-code-error {
|
|
1194
|
+
color: var(--terminal-error-text);
|
|
1195
|
+
}
|
|
1196
|
+
|
|
1197
|
+
.chat-terminal-empty {
|
|
1198
|
+
color: var(--terminal-muted);
|
|
1199
|
+
font-size: 0.78rem;
|
|
1200
|
+
font-style: italic;
|
|
1201
|
+
}
|
|
1202
|
+
|
|
1203
|
+
.chat-terminal-caret {
|
|
1204
|
+
display: inline-block;
|
|
1205
|
+
width: 0.42rem;
|
|
1206
|
+
height: 0.95em;
|
|
1207
|
+
margin-left: 0.12rem;
|
|
1208
|
+
vertical-align: text-bottom;
|
|
1209
|
+
background: var(--terminal-caret);
|
|
1210
|
+
animation: chat-terminal-caret-blink 1s steps(1, end) infinite;
|
|
1211
|
+
}
|
|
1212
|
+
|
|
1213
|
+
.chat-terminal-skeleton {
|
|
1214
|
+
height: 0.78rem;
|
|
1215
|
+
width: 9rem;
|
|
1216
|
+
border-radius: 999px;
|
|
1217
|
+
background: rgba(148, 163, 184, 0.28);
|
|
1218
|
+
animation: chat-terminal-skeleton-pulse 1.2s ease-in-out infinite;
|
|
1219
|
+
}
|
|
1220
|
+
|
|
1221
|
+
.chat-terminal-surface .ansi-bold { font-weight: 700; }
|
|
1222
|
+
.chat-terminal-surface .ansi-dim { opacity: 0.72; }
|
|
1223
|
+
.chat-terminal-surface .ansi-italic { font-style: italic; }
|
|
1224
|
+
.chat-terminal-surface .ansi-underline { text-decoration: underline; }
|
|
1225
|
+
.chat-terminal-surface .ansi-inverse {
|
|
1226
|
+
color: var(--terminal-surface);
|
|
1227
|
+
background: var(--terminal-text);
|
|
1228
|
+
}
|
|
1229
|
+
|
|
1230
|
+
.chat-terminal-surface .ansi-fg-black { color: #0f172a; }
|
|
1231
|
+
.chat-terminal-surface .ansi-fg-red { color: #f87171; }
|
|
1232
|
+
.chat-terminal-surface .ansi-fg-green { color: #4ade80; }
|
|
1233
|
+
.chat-terminal-surface .ansi-fg-yellow { color: #fbbf24; }
|
|
1234
|
+
.chat-terminal-surface .ansi-fg-blue { color: #60a5fa; }
|
|
1235
|
+
.chat-terminal-surface .ansi-fg-magenta { color: #e879f9; }
|
|
1236
|
+
.chat-terminal-surface .ansi-fg-cyan { color: #22d3ee; }
|
|
1237
|
+
.chat-terminal-surface .ansi-fg-white { color: #e5e7eb; }
|
|
1238
|
+
.chat-terminal-surface .ansi-fg-bright-black { color: #94a3b8; }
|
|
1239
|
+
.chat-terminal-surface .ansi-fg-bright-red { color: #fca5a5; }
|
|
1240
|
+
.chat-terminal-surface .ansi-fg-bright-green { color: #86efac; }
|
|
1241
|
+
.chat-terminal-surface .ansi-fg-bright-yellow { color: #fde68a; }
|
|
1242
|
+
.chat-terminal-surface .ansi-fg-bright-blue { color: #93c5fd; }
|
|
1243
|
+
.chat-terminal-surface .ansi-fg-bright-magenta { color: #f0abfc; }
|
|
1244
|
+
.chat-terminal-surface .ansi-fg-bright-cyan { color: #67e8f9; }
|
|
1245
|
+
.chat-terminal-surface .ansi-fg-bright-white { color: #f8fafc; }
|
|
1246
|
+
|
|
1247
|
+
.chat-terminal-surface .ansi-bg-black { background: #0f172a; }
|
|
1248
|
+
.chat-terminal-surface .ansi-bg-red { background: rgba(248, 113, 113, 0.28); }
|
|
1249
|
+
.chat-terminal-surface .ansi-bg-green { background: rgba(74, 222, 128, 0.22); }
|
|
1250
|
+
.chat-terminal-surface .ansi-bg-yellow { background: rgba(251, 191, 36, 0.22); }
|
|
1251
|
+
.chat-terminal-surface .ansi-bg-blue { background: rgba(96, 165, 250, 0.22); }
|
|
1252
|
+
.chat-terminal-surface .ansi-bg-magenta { background: rgba(232, 121, 249, 0.22); }
|
|
1253
|
+
.chat-terminal-surface .ansi-bg-cyan { background: rgba(34, 211, 238, 0.2); }
|
|
1254
|
+
.chat-terminal-surface .ansi-bg-white { background: rgba(229, 231, 235, 0.18); }
|
|
1255
|
+
|
|
1256
|
+
@keyframes chat-terminal-caret-blink {
|
|
1257
|
+
0%, 49% { opacity: 1; }
|
|
1258
|
+
50%, 100% { opacity: 0; }
|
|
1259
|
+
}
|
|
1260
|
+
|
|
1261
|
+
@keyframes chat-terminal-skeleton-pulse {
|
|
1262
|
+
0%, 100% { opacity: 0.55; }
|
|
1263
|
+
50% { opacity: 1; }
|
|
1264
|
+
}
|
|
1265
|
+
|
|
1266
|
+
@media (prefers-reduced-motion: reduce) {
|
|
1267
|
+
.chat-terminal-caret,
|
|
1268
|
+
.chat-terminal-skeleton {
|
|
1269
|
+
animation: none;
|
|
1270
|
+
}
|
|
1271
|
+
}
|
|
1272
|
+
|
|
1273
|
+
:root[data-theme="work"] .chat-terminal-surface {
|
|
1274
|
+
--terminal-surface: #111827;
|
|
1275
|
+
--terminal-border: rgba(148, 163, 184, 0.24);
|
|
1276
|
+
}
|
|
1277
|
+
|
|
1278
|
+
:root[data-theme-appearance="dark"] .chat-terminal-surface {
|
|
1279
|
+
--terminal-surface: #070b14;
|
|
1280
|
+
--terminal-border: rgba(148, 163, 184, 0.22);
|
|
1281
|
+
}
|
|
1282
|
+
|
|
1283
|
+
/* Prevent browser default "详情/Details" fallback on chat process summaries. */
|
|
1284
|
+
.nextclaw-chat-message-user details > summary,
|
|
1285
|
+
.border-border.bg-card details > summary,
|
|
1286
|
+
.chat-markdown details > summary {
|
|
1287
|
+
list-style: none;
|
|
1288
|
+
}
|
|
1289
|
+
|
|
1290
|
+
.nextclaw-chat-message-user details > summary::-webkit-details-marker,
|
|
1291
|
+
.border-border.bg-card details > summary::-webkit-details-marker,
|
|
1292
|
+
.chat-markdown details > summary::-webkit-details-marker {
|
|
1293
|
+
display: none;
|
|
1294
|
+
}
|
|
1295
|
+
|
|
1070
1296
|
.chat-table-wrap {
|
|
1071
1297
|
margin: 0.15rem 0;
|
|
1072
1298
|
border: 1px solid var(--md-border);
|
|
@@ -37,7 +37,7 @@ export function ExternalActionLink({ label, className, onClick }: ExternalAction
|
|
|
37
37
|
<button
|
|
38
38
|
type="button"
|
|
39
39
|
className={cn(
|
|
40
|
-
'inline-flex h-7 shrink-0 items-center gap-1.5 rounded-md px-1.5 text-[13px] font-medium text-primary transition-colors hover:text-primary-hover focus-visible:outline-none focus-visible:ring-
|
|
40
|
+
'inline-flex h-7 shrink-0 items-center gap-1.5 rounded-md px-1.5 text-[13px] font-medium text-primary transition-colors hover:text-primary-hover focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-border',
|
|
41
41
|
className
|
|
42
42
|
)}
|
|
43
43
|
onClick={onClick}
|
|
@@ -54,7 +54,7 @@ export function DocBrowserAddressToolbar({
|
|
|
54
54
|
onChange={(e) => onUrlInputChange(e.target.value)}
|
|
55
55
|
aria-label={t('docBrowserAddressLabel')}
|
|
56
56
|
placeholder={placeholder}
|
|
57
|
-
className="h-8 w-full rounded-lg border border-border bg-background pl-8 pr-3 text-xs text-foreground transition-colors placeholder:text-muted-foreground/55 focus:border-
|
|
57
|
+
className="h-8 w-full rounded-lg border border-border/75 bg-background pl-8 pr-3 text-xs text-foreground transition-colors placeholder:text-muted-foreground/55 focus:border-border focus:outline-none focus:ring-0"
|
|
58
58
|
/>
|
|
59
59
|
</form>
|
|
60
60
|
<IconActionButton
|
|
@@ -59,7 +59,7 @@ const IconActionButton = React.forwardRef<HTMLButtonElement, IconActionButtonPro
|
|
|
59
59
|
disabled={disabled}
|
|
60
60
|
aria-label={label}
|
|
61
61
|
className={cn(
|
|
62
|
-
'inline-flex shrink-0 items-center justify-center transition-colors focus-visible:outline-none focus-visible:ring-
|
|
62
|
+
'inline-flex shrink-0 items-center justify-center transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-border disabled:cursor-not-allowed',
|
|
63
63
|
SIZE_CLASS[size],
|
|
64
64
|
TONE_CLASS[tone],
|
|
65
65
|
className
|
|
@@ -3,7 +3,7 @@ import { cva, type VariantProps } from 'class-variance-authority';
|
|
|
3
3
|
import { cn } from '@/shared/lib/utils';
|
|
4
4
|
|
|
5
5
|
const buttonVariants = cva(
|
|
6
|
-
'inline-flex items-center justify-center whitespace-nowrap rounded-full text-sm font-medium ring-offset-background transition-colors duration-fast focus-visible:outline-none focus-visible:ring-
|
|
6
|
+
'inline-flex items-center justify-center whitespace-nowrap rounded-full text-sm font-medium ring-offset-background transition-colors duration-fast focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-border disabled:pointer-events-none disabled:opacity-50',
|
|
7
7
|
{
|
|
8
8
|
variants: {
|
|
9
9
|
variant: {
|
|
@@ -42,7 +42,7 @@ const DialogContent = React.forwardRef<
|
|
|
42
42
|
{...props}
|
|
43
43
|
>
|
|
44
44
|
{children}
|
|
45
|
-
<DialogPrimitive.Close className="absolute right-4 top-4 rounded-lg p-1 opacity-70
|
|
45
|
+
<DialogPrimitive.Close className="absolute right-4 top-4 rounded-lg p-1 opacity-70 transition-all duration-fast hover:bg-accent hover:text-accent-foreground hover:opacity-100 focus:outline-none focus-visible:ring-1 focus-visible:ring-border disabled:pointer-events-none">
|
|
46
46
|
<X className="h-4 w-4 text-muted-foreground" />
|
|
47
47
|
<span className="sr-only">Close</span>
|
|
48
48
|
</DialogPrimitive.Close>
|
|
@@ -9,7 +9,7 @@ const Input = React.forwardRef<HTMLInputElement, InputProps>(
|
|
|
9
9
|
<input
|
|
10
10
|
type={type}
|
|
11
11
|
className={cn(
|
|
12
|
-
'flex h-9 w-full rounded-xl border border-border bg-card px-3.5 py-2 text-sm text-foreground file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground/55 placeholder:font-normal focus:outline-none focus:ring-
|
|
12
|
+
'flex h-9 w-full rounded-xl border border-border/75 bg-card px-3.5 py-2 text-sm text-foreground file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground/55 placeholder:font-normal transition-colors focus:outline-none focus:ring-0 focus:border-border disabled:cursor-not-allowed disabled:opacity-50',
|
|
13
13
|
className
|
|
14
14
|
)}
|
|
15
15
|
ref={ref}
|
|
@@ -25,7 +25,7 @@ const SelectTrigger = React.forwardRef<
|
|
|
25
25
|
<SelectPrimitive.Trigger
|
|
26
26
|
ref={ref}
|
|
27
27
|
className={cn(
|
|
28
|
-
"flex h-9 w-full items-center justify-between whitespace-nowrap rounded-xl border border-border bg-card px-3 py-2 text-sm text-foreground
|
|
28
|
+
"flex h-9 w-full items-center justify-between whitespace-nowrap rounded-xl border border-border/75 bg-card px-3 py-2 text-sm text-foreground ring-offset-background placeholder:text-muted-foreground transition-colors focus:outline-none focus:ring-0 focus:border-border disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1",
|
|
29
29
|
className
|
|
30
30
|
)}
|
|
31
31
|
{...props}
|
|
@@ -17,7 +17,7 @@ const Switch = React.forwardRef<HTMLButtonElement, SwitchProps>(
|
|
|
17
17
|
data-state={checked ? 'checked' : 'unchecked'}
|
|
18
18
|
ref={ref}
|
|
19
19
|
className={cn(
|
|
20
|
-
'switch-track peer inline-flex h-[22px] w-10 shrink-0 cursor-pointer items-center rounded-full border-2 transition-colors duration-fast focus-visible:outline-none focus-visible:ring-
|
|
20
|
+
'switch-track peer inline-flex h-[22px] w-10 shrink-0 cursor-pointer items-center rounded-full border-2 transition-colors duration-fast focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-border disabled:cursor-not-allowed disabled:opacity-50',
|
|
21
21
|
checked ? 'border-primary/70 bg-primary' : 'border-border/60 bg-muted hover:bg-accent',
|
|
22
22
|
className
|
|
23
23
|
)}
|
|
@@ -64,7 +64,7 @@ export function TabsTrigger({ value, children, className }: TabsTriggerProps) {
|
|
|
64
64
|
aria-pressed={isActive}
|
|
65
65
|
data-state={isActive ? 'active' : 'inactive'}
|
|
66
66
|
className={cn(
|
|
67
|
-
'inline-flex items-center justify-center whitespace-nowrap rounded-md px-3 py-1 text-[13px] font-medium
|
|
67
|
+
'inline-flex items-center justify-center whitespace-nowrap rounded-md px-3 py-1 text-[13px] font-medium transition-all duration-fast focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-border disabled:pointer-events-none disabled:opacity-50',
|
|
68
68
|
isActive
|
|
69
69
|
? 'bg-card text-foreground shadow-sm'
|
|
70
70
|
: 'text-muted-foreground hover:bg-accent hover:text-accent-foreground',
|
|
@@ -7,7 +7,7 @@ export const Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(
|
|
|
7
7
|
({ className, ...props }, ref) => (
|
|
8
8
|
<textarea
|
|
9
9
|
className={cn(
|
|
10
|
-
"flex min-h-28 w-full rounded-xl border border-border bg-card px-3.5 py-2.5 text-sm text-foreground placeholder:text-muted-foreground/55 placeholder:font-normal focus:outline-none focus:ring-
|
|
10
|
+
"flex min-h-28 w-full rounded-xl border border-border/75 bg-card px-3.5 py-2.5 text-sm text-foreground placeholder:text-muted-foreground/55 placeholder:font-normal transition-colors focus:outline-none focus:ring-0 focus:border-border disabled:cursor-not-allowed disabled:opacity-50",
|
|
11
11
|
className,
|
|
12
12
|
)}
|
|
13
13
|
ref={ref}
|
|
@@ -60,6 +60,9 @@
|
|
|
60
60
|
"chatWorkspaceDirectoryEmpty": "This directory is empty.",
|
|
61
61
|
"chatWorkspaceDirectoryLoadFailed": "Failed to load directory",
|
|
62
62
|
"chatWorkspacePreviewUnsupported": "This file is not supported in the sidebar preview yet.",
|
|
63
|
+
"chatWorkspacePreviewUnsupportedHint": "Formats like Word, Excel, and archives can’t be rendered in the sidebar. Download and open them with a local app.",
|
|
64
|
+
"chatWorkspacePreviewDownload": "Download file",
|
|
65
|
+
"chatWorkspacePreviewOpenExternally": "Open with system app",
|
|
63
66
|
"chatWorkspacePreviewEmpty": "No file content is available for preview.",
|
|
64
67
|
"chatWorkspaceDiffEmpty": "No diff content is available.",
|
|
65
68
|
"chatWorkspaceHtmlPreviewTitle": "Rendered HTML preview",
|
|
@@ -68,8 +71,86 @@
|
|
|
68
71
|
"chatWorkspaceCronJobEmpty": "This session has no cron jobs.",
|
|
69
72
|
"chatSessionUnread": "Session has unread updates",
|
|
70
73
|
"chatTyping": "Agent is thinking...",
|
|
74
|
+
"chatReasoningInProgressCharacterCount": "Thinking · {count} characters so far",
|
|
75
|
+
"chatReasoningCompletedCharacterCount": "Thought through {count} characters",
|
|
76
|
+
"chatToolTerminalRunning": "Running command",
|
|
77
|
+
"chatToolTerminalSuccess": "Ran command",
|
|
78
|
+
"chatToolTerminalError": "Command failed",
|
|
79
|
+
"chatToolTerminalCancelled": "Command cancelled",
|
|
80
|
+
"chatToolFileReadRunning": "Reading file",
|
|
81
|
+
"chatToolFileReadSuccess": "Read file",
|
|
82
|
+
"chatToolFileReadError": "File read failed",
|
|
83
|
+
"chatToolFileReadCancelled": "File read cancelled",
|
|
84
|
+
"chatToolFileEditRunning": "Editing file",
|
|
85
|
+
"chatToolFileEditSuccess": "Edited file",
|
|
86
|
+
"chatToolFileEditError": "File edit failed",
|
|
87
|
+
"chatToolFileEditCancelled": "File edit cancelled",
|
|
88
|
+
"chatToolSearchRunning": "Searching",
|
|
89
|
+
"chatToolSearchSuccess": "Searched",
|
|
90
|
+
"chatToolSearchError": "Search failed",
|
|
91
|
+
"chatToolSearchCancelled": "Search cancelled",
|
|
92
|
+
"chatToolDirectoryRunning": "Listing directory",
|
|
93
|
+
"chatToolDirectorySuccess": "Listed directory",
|
|
94
|
+
"chatToolDirectoryError": "Directory listing failed",
|
|
95
|
+
"chatToolDirectoryCancelled": "Directory listing cancelled",
|
|
96
|
+
"chatToolWebRunning": "Fetching page",
|
|
97
|
+
"chatToolWebSuccess": "Fetched page",
|
|
98
|
+
"chatToolWebError": "Page fetch failed",
|
|
99
|
+
"chatToolWebCancelled": "Page fetch cancelled",
|
|
100
|
+
"chatToolMessageRunning": "Sending message",
|
|
101
|
+
"chatToolMessageSuccess": "Sent message",
|
|
102
|
+
"chatToolMessageError": "Message failed",
|
|
103
|
+
"chatToolMessageCancelled": "Message cancelled",
|
|
104
|
+
"chatToolSessionRunning": "Reading sessions",
|
|
105
|
+
"chatToolSessionSuccess": "Read sessions",
|
|
106
|
+
"chatToolSessionError": "Session read failed",
|
|
107
|
+
"chatToolSessionCancelled": "Session read cancelled",
|
|
108
|
+
"chatToolAgentRunning": "Managing subtask",
|
|
109
|
+
"chatToolAgentSuccess": "Managed subtask",
|
|
110
|
+
"chatToolAgentError": "Subtask failed",
|
|
111
|
+
"chatToolAgentCancelled": "Subtask cancelled",
|
|
112
|
+
"chatToolMemoryRunning": "Accessing memory",
|
|
113
|
+
"chatToolMemorySuccess": "Accessed memory",
|
|
114
|
+
"chatToolMemoryError": "Memory access failed",
|
|
115
|
+
"chatToolMemoryCancelled": "Memory access cancelled",
|
|
116
|
+
"chatToolScheduleRunning": "Managing schedule",
|
|
117
|
+
"chatToolScheduleSuccess": "Managed schedule",
|
|
118
|
+
"chatToolScheduleError": "Schedule action failed",
|
|
119
|
+
"chatToolScheduleCancelled": "Schedule action cancelled",
|
|
120
|
+
"chatToolSystemRunning": "Managing service",
|
|
121
|
+
"chatToolSystemSuccess": "Managed service",
|
|
122
|
+
"chatToolSystemError": "Service action failed",
|
|
123
|
+
"chatToolSystemCancelled": "Service action cancelled",
|
|
124
|
+
"chatToolImageRunning": "Viewing image",
|
|
125
|
+
"chatToolImageSuccess": "Viewed image",
|
|
126
|
+
"chatToolImageError": "Image view failed",
|
|
127
|
+
"chatToolImageCancelled": "Image view cancelled",
|
|
128
|
+
"chatToolDisplayRunning": "Showing result",
|
|
129
|
+
"chatToolDisplaySuccess": "Showed result",
|
|
130
|
+
"chatToolDisplayError": "Display failed",
|
|
131
|
+
"chatToolDisplayCancelled": "Display cancelled",
|
|
71
132
|
"chatScrollToBottom": "Scroll to bottom",
|
|
72
133
|
"chatProcessSummaryProcessed": "Processed",
|
|
134
|
+
"chatToolActivityReadOne": "Read 1 file",
|
|
135
|
+
"chatToolActivityReadOther": "Read {count} files",
|
|
136
|
+
"chatToolActivityEditOne": "Edit 1 file",
|
|
137
|
+
"chatToolActivityEditOther": "Edit {count} files",
|
|
138
|
+
"chatToolActivityDirectoryOne": "View 1 directory",
|
|
139
|
+
"chatToolActivityDirectoryOther": "View {count} directories",
|
|
140
|
+
"chatToolActivitySearchOne": "Search 1 time",
|
|
141
|
+
"chatToolActivitySearchOther": "Search {count} times",
|
|
142
|
+
"chatToolActivityBashOne": "Run 1 command",
|
|
143
|
+
"chatToolActivityBashOther": "Run {count} commands",
|
|
144
|
+
"chatToolActivityWebOne": "Open 1 page",
|
|
145
|
+
"chatToolActivityWebOther": "Open {count} pages",
|
|
146
|
+
"chatToolActivityAgentOne": "Start 1 subtask",
|
|
147
|
+
"chatToolActivityAgentOther": "Start {count} subtasks",
|
|
148
|
+
"chatToolActivityPanelOne": "Show 1 result",
|
|
149
|
+
"chatToolActivityPanelOther": "Show {count} results",
|
|
150
|
+
"chatToolActivityOtherOne": "Use 1 tool",
|
|
151
|
+
"chatToolActivityOtherOther": "Use {count} tools",
|
|
152
|
+
"chatProcessSummaryFailed": "failed",
|
|
153
|
+
"chatProcessSummaryCancelled": "cancelled",
|
|
73
154
|
"chatRuntimeInitializing": "Chat is still initializing. You can keep typing and send once startup finishes.",
|
|
74
155
|
"chatRuntimeInitializationFailed": "Chat startup failed. Please retry in a moment or inspect the service logs.",
|
|
75
156
|
"chatInputPlaceholder": "Type a message, / for commands, apps or skills, @ for panel app references, Enter to send, Shift + Enter for newline",
|
|
@@ -182,6 +263,8 @@
|
|
|
182
263
|
"chatFileAttachment": "File attachment",
|
|
183
264
|
"chatAttachmentOpen": "Open",
|
|
184
265
|
"chatAttachmentAttached": "Attached",
|
|
266
|
+
"chatAttachmentExpand": "Expand image",
|
|
267
|
+
"chatAttachmentClosePreview": "Close preview",
|
|
185
268
|
"chatAttachmentCategoryArchive": "Archive",
|
|
186
269
|
"chatAttachmentCategoryAudio": "Audio",
|
|
187
270
|
"chatAttachmentCategoryCode": "Code file",
|