@agent-native/core 0.76.11 → 0.76.12
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/corpus/README.md +1 -1
- package/corpus/core/CHANGELOG.md +7 -0
- package/corpus/core/package.json +1 -1
- package/corpus/core/src/client/FeedbackButton.tsx +162 -18
- package/corpus/core/src/client/blocks/library/AnnotatedCodeBlock.tsx +11 -2
- package/corpus/core/src/client/blocks/library/ApiEndpointBlock.tsx +46 -19
- package/corpus/core/src/client/blocks/library/MermaidBlock.tsx +7 -5
- package/corpus/core/src/client/blocks/library/block-copy.ts +367 -0
- package/corpus/core/src/client/blocks/library/diagram.tsx +8 -6
- package/corpus/core/src/client/blocks/library/wireframe.tsx +7 -2
- package/corpus/core/src/client/i18n.tsx +4 -0
- package/corpus/templates/mail/app/root.tsx +90 -6
- package/dist/client/FeedbackButton.d.ts.map +1 -1
- package/dist/client/FeedbackButton.js +142 -14
- package/dist/client/FeedbackButton.js.map +1 -1
- package/dist/client/blocks/library/AnnotatedCodeBlock.d.ts.map +1 -1
- package/dist/client/blocks/library/AnnotatedCodeBlock.js +6 -2
- package/dist/client/blocks/library/AnnotatedCodeBlock.js.map +1 -1
- package/dist/client/blocks/library/ApiEndpointBlock.d.ts.map +1 -1
- package/dist/client/blocks/library/ApiEndpointBlock.js +14 -6
- package/dist/client/blocks/library/ApiEndpointBlock.js.map +1 -1
- package/dist/client/blocks/library/MermaidBlock.d.ts.map +1 -1
- package/dist/client/blocks/library/MermaidBlock.js +6 -4
- package/dist/client/blocks/library/MermaidBlock.js.map +1 -1
- package/dist/client/blocks/library/block-copy.d.ts +33 -0
- package/dist/client/blocks/library/block-copy.d.ts.map +1 -0
- package/dist/client/blocks/library/block-copy.js +329 -0
- package/dist/client/blocks/library/block-copy.js.map +1 -0
- package/dist/client/blocks/library/diagram.d.ts.map +1 -1
- package/dist/client/blocks/library/diagram.js +7 -5
- package/dist/client/blocks/library/diagram.js.map +1 -1
- package/dist/client/blocks/library/wireframe.d.ts.map +1 -1
- package/dist/client/blocks/library/wireframe.js +4 -2
- package/dist/client/blocks/library/wireframe.js.map +1 -1
- package/dist/client/i18n.d.ts +1 -0
- package/dist/client/i18n.d.ts.map +1 -1
- package/dist/client/i18n.js +3 -0
- package/dist/client/i18n.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,367 @@
|
|
|
1
|
+
import { useOptionalLocale } from "../../i18n.js";
|
|
2
|
+
import {
|
|
3
|
+
DEFAULT_LOCALE,
|
|
4
|
+
type LocaleCode,
|
|
5
|
+
} from "../../../localization/shared.js";
|
|
6
|
+
|
|
7
|
+
const BLOCK_COPY: Record<
|
|
8
|
+
LocaleCode,
|
|
9
|
+
{
|
|
10
|
+
added: string;
|
|
11
|
+
modified: string;
|
|
12
|
+
removed: string;
|
|
13
|
+
renamed: string;
|
|
14
|
+
deprecated: string;
|
|
15
|
+
requiresAuthentication: string;
|
|
16
|
+
auth: string;
|
|
17
|
+
parameters: string;
|
|
18
|
+
name: string;
|
|
19
|
+
in: string;
|
|
20
|
+
type: string;
|
|
21
|
+
requiredColumn: string;
|
|
22
|
+
description: string;
|
|
23
|
+
required: string;
|
|
24
|
+
optional: string;
|
|
25
|
+
requestBody: string;
|
|
26
|
+
responses: string;
|
|
27
|
+
expandDiagram: string;
|
|
28
|
+
loadingDiagram: string;
|
|
29
|
+
couldNotRenderDiagram: string;
|
|
30
|
+
addDiagramDefinition: string;
|
|
31
|
+
switchToCleanDiagrams: string;
|
|
32
|
+
switchToHandDrawnDiagrams: string;
|
|
33
|
+
cleanDiagramsSwitch: string;
|
|
34
|
+
handDrawnDiagramsSwitch: string;
|
|
35
|
+
clean: string;
|
|
36
|
+
sketchy: string;
|
|
37
|
+
switchVisualStyle: string;
|
|
38
|
+
lineAnnotation: string;
|
|
39
|
+
hiddenLinesExpand: string;
|
|
40
|
+
}
|
|
41
|
+
> = {
|
|
42
|
+
"en-US": {
|
|
43
|
+
added: "Added",
|
|
44
|
+
modified: "Modified",
|
|
45
|
+
removed: "Removed",
|
|
46
|
+
renamed: "Renamed",
|
|
47
|
+
deprecated: "Deprecated",
|
|
48
|
+
requiresAuthentication: "Requires authentication",
|
|
49
|
+
auth: "Auth",
|
|
50
|
+
parameters: "Parameters",
|
|
51
|
+
name: "Name",
|
|
52
|
+
in: "In",
|
|
53
|
+
type: "Type",
|
|
54
|
+
requiredColumn: "Required",
|
|
55
|
+
description: "Description",
|
|
56
|
+
required: "required",
|
|
57
|
+
optional: "optional",
|
|
58
|
+
requestBody: "Request body",
|
|
59
|
+
responses: "Responses",
|
|
60
|
+
expandDiagram: "Expand diagram",
|
|
61
|
+
loadingDiagram: "Loading diagram...",
|
|
62
|
+
couldNotRenderDiagram: "Could not render diagram",
|
|
63
|
+
addDiagramDefinition: "Add a diagram definition to render it.",
|
|
64
|
+
switchToCleanDiagrams: "Switch to clean diagrams",
|
|
65
|
+
switchToHandDrawnDiagrams: "Switch to hand-drawn diagrams",
|
|
66
|
+
cleanDiagramsSwitch: "Clean diagrams - switch to hand-drawn",
|
|
67
|
+
handDrawnDiagramsSwitch: "Hand-drawn diagrams - switch to clean",
|
|
68
|
+
clean: "Clean",
|
|
69
|
+
sketchy: "Sketchy",
|
|
70
|
+
switchVisualStyle: "Switch to {{style}} visual style",
|
|
71
|
+
lineAnnotation: "Line {{line}} annotation",
|
|
72
|
+
hiddenLinesExpand: "{{count}} lines - click to expand",
|
|
73
|
+
},
|
|
74
|
+
"zh-CN": {
|
|
75
|
+
added: "已添加",
|
|
76
|
+
modified: "已修改",
|
|
77
|
+
removed: "已移除",
|
|
78
|
+
renamed: "已重命名",
|
|
79
|
+
deprecated: "已弃用",
|
|
80
|
+
requiresAuthentication: "需要身份验证",
|
|
81
|
+
auth: "身份验证",
|
|
82
|
+
parameters: "参数",
|
|
83
|
+
name: "名称",
|
|
84
|
+
in: "位置",
|
|
85
|
+
type: "类型",
|
|
86
|
+
requiredColumn: "必填",
|
|
87
|
+
description: "描述",
|
|
88
|
+
required: "必填",
|
|
89
|
+
optional: "可选",
|
|
90
|
+
requestBody: "请求体",
|
|
91
|
+
responses: "响应",
|
|
92
|
+
expandDiagram: "展开图表",
|
|
93
|
+
loadingDiagram: "正在加载图表...",
|
|
94
|
+
couldNotRenderDiagram: "无法渲染图表",
|
|
95
|
+
addDiagramDefinition: "添加图表定义以渲染。",
|
|
96
|
+
switchToCleanDiagrams: "切换到简洁图表",
|
|
97
|
+
switchToHandDrawnDiagrams: "切换到手绘图表",
|
|
98
|
+
cleanDiagramsSwitch: "简洁图表 - 切换到手绘",
|
|
99
|
+
handDrawnDiagramsSwitch: "手绘图表 - 切换到简洁",
|
|
100
|
+
clean: "简洁",
|
|
101
|
+
sketchy: "手绘",
|
|
102
|
+
switchVisualStyle: "切换到{{style}}视觉样式",
|
|
103
|
+
lineAnnotation: "第 {{line}} 行注释",
|
|
104
|
+
hiddenLinesExpand: "{{count}} 行 - 点击展开",
|
|
105
|
+
},
|
|
106
|
+
"es-ES": {
|
|
107
|
+
added: "Añadido",
|
|
108
|
+
modified: "Modificado",
|
|
109
|
+
removed: "Eliminado",
|
|
110
|
+
renamed: "Renombrado",
|
|
111
|
+
deprecated: "Obsoleto",
|
|
112
|
+
requiresAuthentication: "Requiere autenticación",
|
|
113
|
+
auth: "Autenticación",
|
|
114
|
+
parameters: "Parámetros",
|
|
115
|
+
name: "Nombre",
|
|
116
|
+
in: "En",
|
|
117
|
+
type: "Tipo",
|
|
118
|
+
requiredColumn: "Obligatorio",
|
|
119
|
+
description: "Descripción",
|
|
120
|
+
required: "obligatorio",
|
|
121
|
+
optional: "opcional",
|
|
122
|
+
requestBody: "Cuerpo de la solicitud",
|
|
123
|
+
responses: "Respuestas",
|
|
124
|
+
expandDiagram: "Ampliar diagrama",
|
|
125
|
+
loadingDiagram: "Cargando diagrama...",
|
|
126
|
+
couldNotRenderDiagram: "No se pudo renderizar el diagrama",
|
|
127
|
+
addDiagramDefinition: "Añade una definición para renderizarlo.",
|
|
128
|
+
switchToCleanDiagrams: "Cambiar a diagramas limpios",
|
|
129
|
+
switchToHandDrawnDiagrams: "Cambiar a diagramas dibujados",
|
|
130
|
+
cleanDiagramsSwitch: "Diagramas limpios - cambiar a dibujados",
|
|
131
|
+
handDrawnDiagramsSwitch: "Diagramas dibujados - cambiar a limpios",
|
|
132
|
+
clean: "Limpio",
|
|
133
|
+
sketchy: "Boceto",
|
|
134
|
+
switchVisualStyle: "Cambiar al estilo visual {{style}}",
|
|
135
|
+
lineAnnotation: "Anotación de la línea {{line}}",
|
|
136
|
+
hiddenLinesExpand: "{{count}} líneas - clic para expandir",
|
|
137
|
+
},
|
|
138
|
+
"fr-FR": {
|
|
139
|
+
added: "Ajouté",
|
|
140
|
+
modified: "Modifié",
|
|
141
|
+
removed: "Supprimé",
|
|
142
|
+
renamed: "Renommé",
|
|
143
|
+
deprecated: "Obsolète",
|
|
144
|
+
requiresAuthentication: "Authentification requise",
|
|
145
|
+
auth: "Auth",
|
|
146
|
+
parameters: "Paramètres",
|
|
147
|
+
name: "Nom",
|
|
148
|
+
in: "Dans",
|
|
149
|
+
type: "Type",
|
|
150
|
+
requiredColumn: "Requis",
|
|
151
|
+
description: "Description",
|
|
152
|
+
required: "requis",
|
|
153
|
+
optional: "facultatif",
|
|
154
|
+
requestBody: "Corps de requête",
|
|
155
|
+
responses: "Réponses",
|
|
156
|
+
expandDiagram: "Agrandir le diagramme",
|
|
157
|
+
loadingDiagram: "Chargement du diagramme...",
|
|
158
|
+
couldNotRenderDiagram: "Impossible de rendre le diagramme",
|
|
159
|
+
addDiagramDefinition: "Ajoutez une définition pour le rendre.",
|
|
160
|
+
switchToCleanDiagrams: "Passer aux diagrammes nets",
|
|
161
|
+
switchToHandDrawnDiagrams: "Passer aux diagrammes dessinés",
|
|
162
|
+
cleanDiagramsSwitch: "Diagrammes nets - passer au dessin",
|
|
163
|
+
handDrawnDiagramsSwitch: "Diagrammes dessinés - passer au net",
|
|
164
|
+
clean: "Net",
|
|
165
|
+
sketchy: "Croquis",
|
|
166
|
+
switchVisualStyle: "Passer au style visuel {{style}}",
|
|
167
|
+
lineAnnotation: "Annotation de la ligne {{line}}",
|
|
168
|
+
hiddenLinesExpand: "{{count}} lignes - cliquer pour développer",
|
|
169
|
+
},
|
|
170
|
+
"de-DE": {
|
|
171
|
+
added: "Hinzugefügt",
|
|
172
|
+
modified: "Geändert",
|
|
173
|
+
removed: "Entfernt",
|
|
174
|
+
renamed: "Umbenannt",
|
|
175
|
+
deprecated: "Veraltet",
|
|
176
|
+
requiresAuthentication: "Authentifizierung erforderlich",
|
|
177
|
+
auth: "Auth",
|
|
178
|
+
parameters: "Parameter",
|
|
179
|
+
name: "Name",
|
|
180
|
+
in: "In",
|
|
181
|
+
type: "Typ",
|
|
182
|
+
requiredColumn: "Erforderlich",
|
|
183
|
+
description: "Beschreibung",
|
|
184
|
+
required: "erforderlich",
|
|
185
|
+
optional: "optional",
|
|
186
|
+
requestBody: "Anfragetext",
|
|
187
|
+
responses: "Antworten",
|
|
188
|
+
expandDiagram: "Diagramm vergrößern",
|
|
189
|
+
loadingDiagram: "Diagramm wird geladen...",
|
|
190
|
+
couldNotRenderDiagram: "Diagramm konnte nicht gerendert werden",
|
|
191
|
+
addDiagramDefinition: "Füge eine Diagrammdefinition hinzu.",
|
|
192
|
+
switchToCleanDiagrams: "Zu klaren Diagrammen wechseln",
|
|
193
|
+
switchToHandDrawnDiagrams: "Zu handgezeichneten Diagrammen wechseln",
|
|
194
|
+
cleanDiagramsSwitch: "Klare Diagramme - zu handgezeichnet wechseln",
|
|
195
|
+
handDrawnDiagramsSwitch: "Handgezeichnet - zu klar wechseln",
|
|
196
|
+
clean: "Klar",
|
|
197
|
+
sketchy: "Skizze",
|
|
198
|
+
switchVisualStyle: "Zum visuellen Stil {{style}} wechseln",
|
|
199
|
+
lineAnnotation: "Annotation für Zeile {{line}}",
|
|
200
|
+
hiddenLinesExpand: "{{count}} Zeilen - zum Erweitern klicken",
|
|
201
|
+
},
|
|
202
|
+
"ja-JP": {
|
|
203
|
+
added: "追加",
|
|
204
|
+
modified: "変更",
|
|
205
|
+
removed: "削除",
|
|
206
|
+
renamed: "名前変更",
|
|
207
|
+
deprecated: "非推奨",
|
|
208
|
+
requiresAuthentication: "認証が必要です",
|
|
209
|
+
auth: "認証",
|
|
210
|
+
parameters: "パラメーター",
|
|
211
|
+
name: "名前",
|
|
212
|
+
in: "場所",
|
|
213
|
+
type: "型",
|
|
214
|
+
requiredColumn: "必須",
|
|
215
|
+
description: "説明",
|
|
216
|
+
required: "必須",
|
|
217
|
+
optional: "任意",
|
|
218
|
+
requestBody: "リクエスト本文",
|
|
219
|
+
responses: "レスポンス",
|
|
220
|
+
expandDiagram: "図を拡大",
|
|
221
|
+
loadingDiagram: "図を読み込み中...",
|
|
222
|
+
couldNotRenderDiagram: "図を表示できませんでした",
|
|
223
|
+
addDiagramDefinition: "表示する図の定義を追加してください。",
|
|
224
|
+
switchToCleanDiagrams: "クリーン表示に切り替え",
|
|
225
|
+
switchToHandDrawnDiagrams: "手描き表示に切り替え",
|
|
226
|
+
cleanDiagramsSwitch: "クリーン表示 - 手描きに切り替え",
|
|
227
|
+
handDrawnDiagramsSwitch: "手描き表示 - クリーンに切り替え",
|
|
228
|
+
clean: "クリーン",
|
|
229
|
+
sketchy: "手描き",
|
|
230
|
+
switchVisualStyle: "{{style}}表示に切り替え",
|
|
231
|
+
lineAnnotation: "{{line}} 行目の注釈",
|
|
232
|
+
hiddenLinesExpand: "{{count}} 行 - クリックして展開",
|
|
233
|
+
},
|
|
234
|
+
"ko-KR": {
|
|
235
|
+
added: "추가됨",
|
|
236
|
+
modified: "수정됨",
|
|
237
|
+
removed: "제거됨",
|
|
238
|
+
renamed: "이름 변경됨",
|
|
239
|
+
deprecated: "사용 중단됨",
|
|
240
|
+
requiresAuthentication: "인증 필요",
|
|
241
|
+
auth: "인증",
|
|
242
|
+
parameters: "매개변수",
|
|
243
|
+
name: "이름",
|
|
244
|
+
in: "위치",
|
|
245
|
+
type: "유형",
|
|
246
|
+
requiredColumn: "필수",
|
|
247
|
+
description: "설명",
|
|
248
|
+
required: "필수",
|
|
249
|
+
optional: "선택",
|
|
250
|
+
requestBody: "요청 본문",
|
|
251
|
+
responses: "응답",
|
|
252
|
+
expandDiagram: "다이어그램 확대",
|
|
253
|
+
loadingDiagram: "다이어그램 로드 중...",
|
|
254
|
+
couldNotRenderDiagram: "다이어그램을 렌더링할 수 없음",
|
|
255
|
+
addDiagramDefinition: "렌더링할 다이어그램 정의를 추가하세요.",
|
|
256
|
+
switchToCleanDiagrams: "깔끔한 다이어그램으로 전환",
|
|
257
|
+
switchToHandDrawnDiagrams: "손그림 다이어그램으로 전환",
|
|
258
|
+
cleanDiagramsSwitch: "깔끔한 다이어그램 - 손그림으로 전환",
|
|
259
|
+
handDrawnDiagramsSwitch: "손그림 다이어그램 - 깔끔하게 전환",
|
|
260
|
+
clean: "깔끔함",
|
|
261
|
+
sketchy: "손그림",
|
|
262
|
+
switchVisualStyle: "{{style}} 시각 스타일로 전환",
|
|
263
|
+
lineAnnotation: "{{line}}번 줄 주석",
|
|
264
|
+
hiddenLinesExpand: "{{count}}줄 - 클릭하여 펼치기",
|
|
265
|
+
},
|
|
266
|
+
"pt-BR": {
|
|
267
|
+
added: "Adicionado",
|
|
268
|
+
modified: "Modificado",
|
|
269
|
+
removed: "Removido",
|
|
270
|
+
renamed: "Renomeado",
|
|
271
|
+
deprecated: "Obsoleto",
|
|
272
|
+
requiresAuthentication: "Requer autenticação",
|
|
273
|
+
auth: "Autenticação",
|
|
274
|
+
parameters: "Parâmetros",
|
|
275
|
+
name: "Nome",
|
|
276
|
+
in: "Em",
|
|
277
|
+
type: "Tipo",
|
|
278
|
+
requiredColumn: "Obrigatório",
|
|
279
|
+
description: "Descrição",
|
|
280
|
+
required: "obrigatório",
|
|
281
|
+
optional: "opcional",
|
|
282
|
+
requestBody: "Corpo da requisição",
|
|
283
|
+
responses: "Respostas",
|
|
284
|
+
expandDiagram: "Expandir diagrama",
|
|
285
|
+
loadingDiagram: "Carregando diagrama...",
|
|
286
|
+
couldNotRenderDiagram: "Não foi possível renderizar o diagrama",
|
|
287
|
+
addDiagramDefinition: "Adicione uma definição para renderizar.",
|
|
288
|
+
switchToCleanDiagrams: "Alternar para diagramas limpos",
|
|
289
|
+
switchToHandDrawnDiagrams: "Alternar para diagramas desenhados",
|
|
290
|
+
cleanDiagramsSwitch: "Diagramas limpos - alternar para desenhados",
|
|
291
|
+
handDrawnDiagramsSwitch: "Diagramas desenhados - alternar para limpos",
|
|
292
|
+
clean: "Limpo",
|
|
293
|
+
sketchy: "Esboço",
|
|
294
|
+
switchVisualStyle: "Alternar para o estilo visual {{style}}",
|
|
295
|
+
lineAnnotation: "Anotação da linha {{line}}",
|
|
296
|
+
hiddenLinesExpand: "{{count}} linhas - clique para expandir",
|
|
297
|
+
},
|
|
298
|
+
"hi-IN": {
|
|
299
|
+
added: "जोड़ा गया",
|
|
300
|
+
modified: "बदला गया",
|
|
301
|
+
removed: "हटाया गया",
|
|
302
|
+
renamed: "नाम बदला गया",
|
|
303
|
+
deprecated: "अप्रचलित",
|
|
304
|
+
requiresAuthentication: "प्रमाणीकरण आवश्यक",
|
|
305
|
+
auth: "प्रमाणीकरण",
|
|
306
|
+
parameters: "पैरामीटर",
|
|
307
|
+
name: "नाम",
|
|
308
|
+
in: "स्थान",
|
|
309
|
+
type: "प्रकार",
|
|
310
|
+
requiredColumn: "आवश्यक",
|
|
311
|
+
description: "विवरण",
|
|
312
|
+
required: "आवश्यक",
|
|
313
|
+
optional: "वैकल्पिक",
|
|
314
|
+
requestBody: "अनुरोध बॉडी",
|
|
315
|
+
responses: "प्रतिक्रियाएँ",
|
|
316
|
+
expandDiagram: "डायग्राम बड़ा करें",
|
|
317
|
+
loadingDiagram: "डायग्राम लोड हो रहा है...",
|
|
318
|
+
couldNotRenderDiagram: "डायग्राम रेंडर नहीं हो सका",
|
|
319
|
+
addDiagramDefinition: "रेंडर करने के लिए डायग्राम परिभाषा जोड़ें।",
|
|
320
|
+
switchToCleanDiagrams: "साफ़ डायग्राम पर स्विच करें",
|
|
321
|
+
switchToHandDrawnDiagrams: "हाथ से बने डायग्राम पर स्विच करें",
|
|
322
|
+
cleanDiagramsSwitch: "साफ़ डायग्राम - हाथ से बने पर स्विच करें",
|
|
323
|
+
handDrawnDiagramsSwitch: "हाथ से बने डायग्राम - साफ़ पर स्विच करें",
|
|
324
|
+
clean: "साफ़",
|
|
325
|
+
sketchy: "स्केच",
|
|
326
|
+
switchVisualStyle: "{{style}} दृश्य शैली पर स्विच करें",
|
|
327
|
+
lineAnnotation: "लाइन {{line}} एनोटेशन",
|
|
328
|
+
hiddenLinesExpand: "{{count}} लाइनें - विस्तार के लिए क्लिक करें",
|
|
329
|
+
},
|
|
330
|
+
"ar-SA": {
|
|
331
|
+
added: "مضاف",
|
|
332
|
+
modified: "معدل",
|
|
333
|
+
removed: "محذوف",
|
|
334
|
+
renamed: "أعيدت تسميته",
|
|
335
|
+
deprecated: "مهمل",
|
|
336
|
+
requiresAuthentication: "يتطلب المصادقة",
|
|
337
|
+
auth: "المصادقة",
|
|
338
|
+
parameters: "المعاملات",
|
|
339
|
+
name: "الاسم",
|
|
340
|
+
in: "في",
|
|
341
|
+
type: "النوع",
|
|
342
|
+
requiredColumn: "مطلوب",
|
|
343
|
+
description: "الوصف",
|
|
344
|
+
required: "مطلوب",
|
|
345
|
+
optional: "اختياري",
|
|
346
|
+
requestBody: "نص الطلب",
|
|
347
|
+
responses: "الاستجابات",
|
|
348
|
+
expandDiagram: "توسيع الرسم",
|
|
349
|
+
loadingDiagram: "جار تحميل الرسم...",
|
|
350
|
+
couldNotRenderDiagram: "تعذر عرض الرسم",
|
|
351
|
+
addDiagramDefinition: "أضف تعريف رسم لعرضه.",
|
|
352
|
+
switchToCleanDiagrams: "التبديل إلى رسوم نظيفة",
|
|
353
|
+
switchToHandDrawnDiagrams: "التبديل إلى رسوم مرسومة يدويا",
|
|
354
|
+
cleanDiagramsSwitch: "رسوم نظيفة - التبديل إلى مرسومة يدويا",
|
|
355
|
+
handDrawnDiagramsSwitch: "رسوم مرسومة يدويا - التبديل إلى نظيفة",
|
|
356
|
+
clean: "نظيف",
|
|
357
|
+
sketchy: "مرسوم",
|
|
358
|
+
switchVisualStyle: "التبديل إلى نمط {{style}} المرئي",
|
|
359
|
+
lineAnnotation: "تعليق السطر {{line}}",
|
|
360
|
+
hiddenLinesExpand: "{{count}} أسطر - انقر للتوسيع",
|
|
361
|
+
},
|
|
362
|
+
};
|
|
363
|
+
|
|
364
|
+
export function useBlockCopy() {
|
|
365
|
+
const locale = useOptionalLocale()?.locale ?? DEFAULT_LOCALE;
|
|
366
|
+
return BLOCK_COPY[locale] ?? BLOCK_COPY[DEFAULT_LOCALE];
|
|
367
|
+
}
|
|
@@ -31,6 +31,7 @@ import {
|
|
|
31
31
|
sanitizeWireframeCss,
|
|
32
32
|
scopeDesignCss,
|
|
33
33
|
} from "./sanitize-html.js";
|
|
34
|
+
import { useBlockCopy } from "./block-copy.js";
|
|
34
35
|
import {
|
|
35
36
|
diagramMdx,
|
|
36
37
|
diagramSchema,
|
|
@@ -626,13 +627,14 @@ function ExpandableDiagramBody({
|
|
|
626
627
|
const [expanded, setExpanded] = useState(false);
|
|
627
628
|
const supportsStyleToggle = Boolean(data.html);
|
|
628
629
|
const style = useWireframeStyle();
|
|
630
|
+
const copy = useBlockCopy();
|
|
629
631
|
const sketchy = style === "sketchy";
|
|
630
632
|
const styleLabel = sketchy
|
|
631
|
-
?
|
|
632
|
-
:
|
|
633
|
+
? copy.switchToCleanDiagrams
|
|
634
|
+
: copy.switchToHandDrawnDiagrams;
|
|
633
635
|
const styleTooltip = sketchy
|
|
634
|
-
?
|
|
635
|
-
:
|
|
636
|
+
? copy.handDrawnDiagramsSwitch
|
|
637
|
+
: copy.cleanDiagramsSwitch;
|
|
636
638
|
return (
|
|
637
639
|
<div className="group/diagram relative">
|
|
638
640
|
<DiagramBody data={data} ctx={ctx} compact={compact} />
|
|
@@ -665,13 +667,13 @@ function ExpandableDiagramBody({
|
|
|
665
667
|
type="button"
|
|
666
668
|
data-plan-interactive
|
|
667
669
|
onClick={() => setExpanded(true)}
|
|
668
|
-
aria-label=
|
|
670
|
+
aria-label={copy.expandDiagram}
|
|
669
671
|
className="an-diagram-expand-trigger flex size-7 items-center justify-center rounded-md border border-border/60 bg-background/90 text-muted-foreground opacity-0 shadow-sm backdrop-blur transition-[color,opacity] hover:text-foreground focus-visible:opacity-100 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring group-hover/diagram:opacity-100"
|
|
670
672
|
>
|
|
671
673
|
<IconArrowsMaximize className="size-4" />
|
|
672
674
|
</button>
|
|
673
675
|
</TooltipTrigger>
|
|
674
|
-
<TooltipContent side="left">
|
|
676
|
+
<TooltipContent side="left">{copy.expandDiagram}</TooltipContent>
|
|
675
677
|
</Tooltip>
|
|
676
678
|
</div>
|
|
677
679
|
</TooltipProvider>
|
|
@@ -35,6 +35,7 @@ import {
|
|
|
35
35
|
sanitizeWireframeHtml,
|
|
36
36
|
scopeDesignCss,
|
|
37
37
|
} from "./sanitize-html.js";
|
|
38
|
+
import { useBlockCopy } from "./block-copy.js";
|
|
38
39
|
import { renderWireframeIconHtml } from "./wireframe-icons.js";
|
|
39
40
|
|
|
40
41
|
/**
|
|
@@ -291,9 +292,13 @@ function ArtboardFrame({
|
|
|
291
292
|
|
|
292
293
|
function WireframeStyleToggleButton() {
|
|
293
294
|
const style = useWireframeStyle();
|
|
295
|
+
const copy = useBlockCopy();
|
|
294
296
|
const nextStyle = style === "sketchy" ? "clean" : "sketchy";
|
|
295
|
-
const label = nextStyle === "clean" ?
|
|
296
|
-
const description =
|
|
297
|
+
const label = nextStyle === "clean" ? copy.clean : copy.sketchy;
|
|
298
|
+
const description = copy.switchVisualStyle.replace(
|
|
299
|
+
"{{style}}",
|
|
300
|
+
label.toLocaleLowerCase(),
|
|
301
|
+
);
|
|
297
302
|
|
|
298
303
|
return (
|
|
299
304
|
<button
|
|
@@ -464,6 +464,10 @@ export function useLocale(): LocaleContextValue {
|
|
|
464
464
|
return value;
|
|
465
465
|
}
|
|
466
466
|
|
|
467
|
+
export function useOptionalLocale(): LocaleContextValue | null {
|
|
468
|
+
return useContext(LocaleContext);
|
|
469
|
+
}
|
|
470
|
+
|
|
467
471
|
const CORE_FALLBACK_MESSAGES: Record<string, string> = {
|
|
468
472
|
"runsTray.runs": "Runs",
|
|
469
473
|
"runsTray.agentRuns": "Agent runs",
|
|
@@ -14,12 +14,17 @@ import { AppLayout } from "@/components/layout/AppLayout";
|
|
|
14
14
|
import { useDbSync } from "@agent-native/core/client";
|
|
15
15
|
import {
|
|
16
16
|
AppProviders,
|
|
17
|
+
DEFAULT_LOCALE,
|
|
18
|
+
LOCALE_HYDRATION_GLOBAL,
|
|
19
|
+
LOCALE_STORAGE_KEY,
|
|
17
20
|
RequireSession,
|
|
18
21
|
appPath,
|
|
19
22
|
appApiPath,
|
|
20
23
|
createAgentNativeQueryClient,
|
|
21
24
|
getLocaleInitScript,
|
|
22
25
|
getThemeInitScript,
|
|
26
|
+
normalizeLocaleCode,
|
|
27
|
+
type LocaleCode,
|
|
23
28
|
} from "@agent-native/core/client";
|
|
24
29
|
import { TAB_ID } from "@/lib/tab-id";
|
|
25
30
|
import { isMcpEmbedSurface } from "@/lib/mcp-embed";
|
|
@@ -66,6 +71,83 @@ function getHydrationStableLocaleInitScript() {
|
|
|
66
71
|
const THEME_INIT_SCRIPT = getHydrationStableThemeInitScript();
|
|
67
72
|
const LOCALE_INIT_SCRIPT = getHydrationStableLocaleInitScript();
|
|
68
73
|
|
|
74
|
+
const MAIL_ERROR_COPY: Record<
|
|
75
|
+
LocaleCode,
|
|
76
|
+
{ title: string; fallback: string; back: string; reload: string }
|
|
77
|
+
> = {
|
|
78
|
+
"en-US": {
|
|
79
|
+
title: "Mail could not load this view.",
|
|
80
|
+
fallback: "Something went wrong while loading Mail.",
|
|
81
|
+
back: "Back",
|
|
82
|
+
reload: "Reload",
|
|
83
|
+
},
|
|
84
|
+
"zh-CN": {
|
|
85
|
+
title: "Mail 无法加载此视图。",
|
|
86
|
+
fallback: "加载 Mail 时出现问题。",
|
|
87
|
+
back: "返回",
|
|
88
|
+
reload: "重新加载",
|
|
89
|
+
},
|
|
90
|
+
"es-ES": {
|
|
91
|
+
title: "Mail no pudo cargar esta vista.",
|
|
92
|
+
fallback: "Algo salió mal al cargar Mail.",
|
|
93
|
+
back: "Atrás",
|
|
94
|
+
reload: "Recargar",
|
|
95
|
+
},
|
|
96
|
+
"fr-FR": {
|
|
97
|
+
title: "Mail n'a pas pu charger cette vue.",
|
|
98
|
+
fallback: "Un problème est survenu lors du chargement de Mail.",
|
|
99
|
+
back: "Retour",
|
|
100
|
+
reload: "Recharger",
|
|
101
|
+
},
|
|
102
|
+
"de-DE": {
|
|
103
|
+
title: "Mail konnte diese Ansicht nicht laden.",
|
|
104
|
+
fallback: "Beim Laden von Mail ist ein Fehler aufgetreten.",
|
|
105
|
+
back: "Zurück",
|
|
106
|
+
reload: "Neu laden",
|
|
107
|
+
},
|
|
108
|
+
"ja-JP": {
|
|
109
|
+
title: "Mail はこのビューを読み込めませんでした。",
|
|
110
|
+
fallback: "Mail の読み込み中に問題が発生しました。",
|
|
111
|
+
back: "戻る",
|
|
112
|
+
reload: "再読み込み",
|
|
113
|
+
},
|
|
114
|
+
"ko-KR": {
|
|
115
|
+
title: "Mail에서 이 보기를 불러올 수 없습니다.",
|
|
116
|
+
fallback: "Mail을 불러오는 중 문제가 발생했습니다.",
|
|
117
|
+
back: "뒤로",
|
|
118
|
+
reload: "새로고침",
|
|
119
|
+
},
|
|
120
|
+
"pt-BR": {
|
|
121
|
+
title: "O Mail não conseguiu carregar esta visualização.",
|
|
122
|
+
fallback: "Algo deu errado ao carregar o Mail.",
|
|
123
|
+
back: "Voltar",
|
|
124
|
+
reload: "Recarregar",
|
|
125
|
+
},
|
|
126
|
+
"hi-IN": {
|
|
127
|
+
title: "Mail यह दृश्य लोड नहीं कर सका।",
|
|
128
|
+
fallback: "Mail लोड करते समय कुछ गलत हुआ।",
|
|
129
|
+
back: "वापस",
|
|
130
|
+
reload: "रीलोड",
|
|
131
|
+
},
|
|
132
|
+
"ar-SA": {
|
|
133
|
+
title: "تعذر على Mail تحميل هذا العرض.",
|
|
134
|
+
fallback: "حدث خطأ أثناء تحميل Mail.",
|
|
135
|
+
back: "رجوع",
|
|
136
|
+
reload: "إعادة التحميل",
|
|
137
|
+
},
|
|
138
|
+
};
|
|
139
|
+
|
|
140
|
+
function activeErrorLocale(): LocaleCode {
|
|
141
|
+
if (typeof window === "undefined") return DEFAULT_LOCALE;
|
|
142
|
+
const hydrated = (window as any)[LOCALE_HYDRATION_GLOBAL]?.locale;
|
|
143
|
+
const stored = window.localStorage?.getItem(LOCALE_STORAGE_KEY);
|
|
144
|
+
return (
|
|
145
|
+
normalizeLocaleCode(stored) ??
|
|
146
|
+
normalizeLocaleCode(hydrated) ??
|
|
147
|
+
DEFAULT_LOCALE
|
|
148
|
+
);
|
|
149
|
+
}
|
|
150
|
+
|
|
69
151
|
export function Layout({ children }: { children: React.ReactNode }) {
|
|
70
152
|
return (
|
|
71
153
|
<html lang="en" suppressHydrationWarning>
|
|
@@ -296,7 +378,7 @@ export default function Root() {
|
|
|
296
378
|
);
|
|
297
379
|
}
|
|
298
380
|
|
|
299
|
-
function routeErrorMessage(error: unknown): string {
|
|
381
|
+
function routeErrorMessage(error: unknown, fallback: string): string {
|
|
300
382
|
if (isRouteErrorResponse(error)) {
|
|
301
383
|
if (typeof error.data === "string" && error.data.trim()) {
|
|
302
384
|
return error.data;
|
|
@@ -313,17 +395,19 @@ function routeErrorMessage(error: unknown): string {
|
|
|
313
395
|
}
|
|
314
396
|
if (error instanceof Error && error.message.trim()) return error.message;
|
|
315
397
|
if (typeof error === "string" && error.trim()) return error;
|
|
316
|
-
return
|
|
398
|
+
return fallback;
|
|
317
399
|
}
|
|
318
400
|
|
|
319
401
|
export function ErrorBoundary() {
|
|
320
402
|
const error = useRouteError();
|
|
321
|
-
const
|
|
403
|
+
const copy =
|
|
404
|
+
MAIL_ERROR_COPY[activeErrorLocale()] ?? MAIL_ERROR_COPY[DEFAULT_LOCALE];
|
|
405
|
+
const message = routeErrorMessage(error, copy.fallback);
|
|
322
406
|
|
|
323
407
|
return (
|
|
324
408
|
<div className="flex min-h-screen items-center justify-center bg-background px-6 text-foreground">
|
|
325
409
|
<div className="w-full max-w-md text-center">
|
|
326
|
-
<p className="text-sm font-semibold">
|
|
410
|
+
<p className="text-sm font-semibold">{copy.title}</p>
|
|
327
411
|
<p className="mt-2 text-sm text-muted-foreground">{message}</p>
|
|
328
412
|
<div className="mt-5 flex justify-center gap-2">
|
|
329
413
|
<Button
|
|
@@ -331,10 +415,10 @@ export function ErrorBoundary() {
|
|
|
331
415
|
size="sm"
|
|
332
416
|
onClick={() => window.history.back()}
|
|
333
417
|
>
|
|
334
|
-
|
|
418
|
+
{copy.back}
|
|
335
419
|
</Button>
|
|
336
420
|
<Button size="sm" onClick={() => window.location.reload()}>
|
|
337
|
-
|
|
421
|
+
{copy.reload}
|
|
338
422
|
</Button>
|
|
339
423
|
</div>
|
|
340
424
|
</div>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FeedbackButton.d.ts","sourceRoot":"","sources":["../../src/client/FeedbackButton.tsx"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"FeedbackButton.d.ts","sourceRoot":"","sources":["../../src/client/FeedbackButton.tsx"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAyMf,MAAM,WAAW,mBAAmB;IAClC;;;;OAIG;IACH,OAAO,CAAC,EAAE,SAAS,GAAG,MAAM,GAAG,UAAU,CAAC;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mEAAmE;IACnE,IAAI,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;IAC3C,KAAK,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAC;IACnC,yCAAyC;IACzC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sEAAsE;IACtE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,4EAA4E;IAC5E,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,iFAAiF;IACjF,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC,uCAAuC;IACvC,OAAO,CAAC,EAAE,SAAS,CAAC;CACrB;AAeD,wBAAgB,cAAc,CAAC,EAC7B,OAAmB,EACnB,KAAK,EACL,GAA0B,EAC1B,SAAS,EACT,IAAI,EACJ,KAAa,EACb,WAAW,EACX,aAAa,EACb,cAAc,EACd,IAAI,EAAE,cAAc,EACpB,YAAY,EACZ,OAAO,EAAE,aAAa,GACvB,EAAE,mBAAmB,2CAwQrB"}
|