@agent-native/core 0.76.10 → 0.76.11
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 +6 -0
- package/corpus/core/docs/content/locales/ar-SA/actions.md +7 -7
- package/corpus/core/docs/content/locales/ar-SA/template-plan.md +6 -4
- package/corpus/core/docs/content/locales/de-DE/actions.md +9 -9
- package/corpus/core/docs/content/locales/de-DE/template-plan.md +6 -4
- package/corpus/core/docs/content/locales/es-ES/actions.md +9 -9
- package/corpus/core/docs/content/locales/es-ES/template-plan.md +6 -4
- package/corpus/core/docs/content/locales/fr-FR/actions.md +9 -9
- package/corpus/core/docs/content/locales/fr-FR/template-plan.md +6 -4
- package/corpus/core/docs/content/locales/hi-IN/actions.md +9 -9
- package/corpus/core/docs/content/locales/hi-IN/template-plan.md +4 -4
- package/corpus/core/docs/content/locales/ja-JP/actions.md +9 -9
- package/corpus/core/docs/content/locales/ja-JP/template-plan.md +4 -4
- package/corpus/core/docs/content/locales/ko-KR/actions.md +9 -9
- package/corpus/core/docs/content/locales/ko-KR/template-plan.md +4 -4
- package/corpus/core/docs/content/locales/pt-BR/actions.md +9 -9
- package/corpus/core/docs/content/locales/pt-BR/template-plan.md +6 -4
- package/corpus/core/docs/content/locales/zh-CN/actions.md +9 -9
- package/corpus/core/docs/content/locales/zh-CN/template-plan.md +4 -4
- package/corpus/core/package.json +1 -1
- package/corpus/core/src/client/ErrorBoundary.tsx +151 -10
- package/corpus/templates/analytics/app/components/layout/CommandPalette.tsx +51 -31
- package/corpus/templates/analytics/app/components/layout/DashboardHeader.tsx +26 -16
- package/corpus/templates/analytics/app/components/layout/Header.tsx +1 -2
- package/corpus/templates/analytics/app/components/layout/HeaderActions.tsx +8 -1
- package/corpus/templates/analytics/app/components/layout/Layout.tsx +2 -5
- package/corpus/templates/analytics/app/components/layout/Sidebar.tsx +172 -107
- package/corpus/templates/analytics/app/i18n-data.ts +1076 -5
- package/corpus/templates/analytics/app/pages/Settings.tsx +2 -2
- package/corpus/templates/analytics/changelog/2026-06-24-analytics-navigation-command-palette-and-settings-now-honor-.md +6 -0
- package/corpus/templates/assets/app/components/layout/Header.tsx +0 -2
- package/corpus/templates/calendar/app/components/layout/AppLayout.tsx +0 -2
- package/corpus/templates/calendar/app/pages/CalendarView.tsx +0 -2
- package/corpus/templates/chat/app/components/layout/Header.tsx +1 -6
- package/corpus/templates/clips/app/components/layout/Header.tsx +1 -6
- package/corpus/templates/clips/app/hooks/use-library.ts +2 -0
- package/corpus/templates/clips/app/routes/_app.settings._index.tsx +3 -1
- package/corpus/templates/clips/changelog/2026-06-24-archive-and-spaces-navigation-is-more-resilient-when-sidebar.md +6 -0
- package/corpus/templates/content/app/components/layout/Header.tsx +0 -2
- package/corpus/templates/design/app/components/layout/Header.tsx +1 -6
- package/corpus/templates/forms/app/components/layout/Header.tsx +1 -6
- package/corpus/templates/macros/app/components/layout/Header.tsx +1 -6
- package/corpus/templates/mail/app/components/email/CodeBlockLangPicker.tsx +4 -2
- package/corpus/templates/mail/app/components/email/ComposeBubbleToolbar.tsx +18 -12
- package/corpus/templates/mail/app/components/email/ComposeEditor.tsx +9 -5
- package/corpus/templates/mail/app/components/email/ComposeModal.tsx +36 -19
- package/corpus/templates/mail/app/components/email/EmailList.tsx +59 -55
- package/corpus/templates/mail/app/components/email/EmailListItem.tsx +7 -3
- package/corpus/templates/mail/app/components/email/EmailThread.tsx +25 -16
- package/corpus/templates/mail/app/components/email/InlineReplyComposer.tsx +25 -19
- package/corpus/templates/mail/app/components/email/IntegrationsSidebar.tsx +32 -17
- package/corpus/templates/mail/app/components/email/RecipientInput.tsx +26 -10
- package/corpus/templates/mail/app/components/email/SendLaterButton.tsx +5 -3
- package/corpus/templates/mail/app/components/email/SnoozeModal.tsx +4 -2
- package/corpus/templates/mail/app/components/email/SnoozePopover.tsx +9 -5
- package/corpus/templates/mail/app/components/email/extensions/ComposeImageBlock.tsx +4 -2
- package/corpus/templates/mail/app/components/layout/AppLayout.tsx +168 -86
- package/corpus/templates/mail/app/components/layout/SearchBar.tsx +4 -2
- package/corpus/templates/mail/app/i18n/ar-SA.ts +212 -0
- package/corpus/templates/mail/app/i18n/de-DE.ts +212 -0
- package/corpus/templates/mail/app/i18n/en-US.ts +212 -0
- package/corpus/templates/mail/app/i18n/es-ES.ts +212 -0
- package/corpus/templates/mail/app/i18n/fr-FR.ts +212 -0
- package/corpus/templates/mail/app/i18n/hi-IN.ts +212 -0
- package/corpus/templates/mail/app/i18n/ja-JP.ts +212 -0
- package/corpus/templates/mail/app/i18n/ko-KR.ts +212 -0
- package/corpus/templates/mail/app/i18n/pt-BR.ts +212 -0
- package/corpus/templates/mail/app/i18n/zh-CN.ts +211 -0
- package/corpus/templates/mail/changelog/2026-06-24-interface-language-support-now-covers-more-mail-controls-and.md +6 -0
- package/corpus/templates/plan/app/components/layout/Header.tsx +1 -6
- package/corpus/templates/slides/app/components/layout/Header.tsx +1 -6
- package/corpus/templates/videos/app/components/layout/Header.tsx +1 -6
- package/dist/client/ErrorBoundary.d.ts.map +1 -1
- package/dist/client/ErrorBoundary.js +128 -7
- package/dist/client/ErrorBoundary.js.map +1 -1
- package/docs/content/locales/ar-SA/actions.md +7 -7
- package/docs/content/locales/ar-SA/template-plan.md +6 -4
- package/docs/content/locales/de-DE/actions.md +9 -9
- package/docs/content/locales/de-DE/template-plan.md +6 -4
- package/docs/content/locales/es-ES/actions.md +9 -9
- package/docs/content/locales/es-ES/template-plan.md +6 -4
- package/docs/content/locales/fr-FR/actions.md +9 -9
- package/docs/content/locales/fr-FR/template-plan.md +6 -4
- package/docs/content/locales/hi-IN/actions.md +9 -9
- package/docs/content/locales/hi-IN/template-plan.md +4 -4
- package/docs/content/locales/ja-JP/actions.md +9 -9
- package/docs/content/locales/ja-JP/template-plan.md +4 -4
- package/docs/content/locales/ko-KR/actions.md +9 -9
- package/docs/content/locales/ko-KR/template-plan.md +4 -4
- package/docs/content/locales/pt-BR/actions.md +9 -9
- package/docs/content/locales/pt-BR/template-plan.md +6 -4
- package/docs/content/locales/zh-CN/actions.md +9 -9
- package/docs/content/locales/zh-CN/template-plan.md +4 -4
- package/package.json +1 -1
|
@@ -27,6 +27,7 @@ import {
|
|
|
27
27
|
callAction,
|
|
28
28
|
useChangeVersions,
|
|
29
29
|
ChangelogDialog,
|
|
30
|
+
useT,
|
|
30
31
|
} from "@agent-native/core/client";
|
|
31
32
|
import { extensionPath } from "@agent-native/core/client/extensions";
|
|
32
33
|
import changelog from "../../../CHANGELOG.md?raw";
|
|
@@ -50,10 +51,14 @@ interface ExtensionSearchItem {
|
|
|
50
51
|
}
|
|
51
52
|
|
|
52
53
|
const defaultTools = [
|
|
53
|
-
{
|
|
54
|
+
{
|
|
55
|
+
id: "explorer",
|
|
56
|
+
nameKey: "commandPalette.toolExplorer",
|
|
57
|
+
href: "/dashboards/explorer",
|
|
58
|
+
},
|
|
54
59
|
{
|
|
55
60
|
id: "customer-health",
|
|
56
|
-
|
|
61
|
+
nameKey: "commandPalette.toolCustomerHealth",
|
|
57
62
|
href: "/dashboards/customer-health",
|
|
58
63
|
},
|
|
59
64
|
];
|
|
@@ -126,9 +131,9 @@ async function fetchExplorerDashboards(): Promise<ExplorerDashboard[]> {
|
|
|
126
131
|
}
|
|
127
132
|
}
|
|
128
133
|
|
|
129
|
-
async function fetchSqlDashboards(
|
|
130
|
-
|
|
131
|
-
> {
|
|
134
|
+
async function fetchSqlDashboards(
|
|
135
|
+
t: (key: string) => string,
|
|
136
|
+
): Promise<{ id: string; name: string; hiddenAt: string | null }[]> {
|
|
132
137
|
try {
|
|
133
138
|
const rows = await callAction(
|
|
134
139
|
"list-sql-dashboards",
|
|
@@ -142,7 +147,7 @@ async function fetchSqlDashboards(): Promise<
|
|
|
142
147
|
name:
|
|
143
148
|
typeof d.name === "string" && d.name.trim().length > 0
|
|
144
149
|
? d.name
|
|
145
|
-
: "
|
|
150
|
+
: t("commandPalette.untitledDashboard"),
|
|
146
151
|
hiddenAt: typeof d.hiddenAt === "string" ? d.hiddenAt : null,
|
|
147
152
|
}));
|
|
148
153
|
} catch {
|
|
@@ -183,6 +188,7 @@ function persistThemePreference(theme: "light" | "dark") {
|
|
|
183
188
|
}
|
|
184
189
|
|
|
185
190
|
export function CommandPalette() {
|
|
191
|
+
const t = useT();
|
|
186
192
|
const [open, setOpen] = useState(false);
|
|
187
193
|
const [changelogOpen, setChangelogOpen] = useState(false);
|
|
188
194
|
const [searchQuery, setSearchQuery] = useState("");
|
|
@@ -213,7 +219,7 @@ export function CommandPalette() {
|
|
|
213
219
|
const { data: sqlDashboards = [], isFetching: sqlDashboardsFetching } =
|
|
214
220
|
useQuery({
|
|
215
221
|
queryKey: ["sql-dashboards-palette", dashboardsSync],
|
|
216
|
-
queryFn: fetchSqlDashboards,
|
|
222
|
+
queryFn: () => fetchSqlDashboards(t),
|
|
217
223
|
staleTime: 30_000,
|
|
218
224
|
enabled: open,
|
|
219
225
|
placeholderData: (prev) => prev,
|
|
@@ -276,21 +282,24 @@ export function CommandPalette() {
|
|
|
276
282
|
}}
|
|
277
283
|
>
|
|
278
284
|
<CommandInput
|
|
279
|
-
placeholder="
|
|
285
|
+
placeholder={t("commandPalette.searchPlaceholder")}
|
|
280
286
|
value={searchQuery}
|
|
281
287
|
onValueChange={setSearchQuery}
|
|
282
288
|
/>
|
|
283
289
|
<CommandList>
|
|
284
290
|
{!asyncGroupsLoading && (
|
|
285
|
-
<CommandEmpty>
|
|
291
|
+
<CommandEmpty>{t("commandPalette.noResults")}</CommandEmpty>
|
|
286
292
|
)}
|
|
287
293
|
|
|
288
294
|
{explorerDashboardsFetching && explorerDashboards.length === 0 && (
|
|
289
|
-
<CommandLoadingGroup
|
|
295
|
+
<CommandLoadingGroup
|
|
296
|
+
heading={t("commandPalette.groupExplorerDashboards")}
|
|
297
|
+
rows={2}
|
|
298
|
+
/>
|
|
290
299
|
)}
|
|
291
300
|
|
|
292
301
|
{visibleExplorerDashboards.length > 0 && (
|
|
293
|
-
<CommandGroup heading="
|
|
302
|
+
<CommandGroup heading={t("commandPalette.groupExplorerDashboards")}>
|
|
294
303
|
{visibleExplorerDashboards.map((d) => (
|
|
295
304
|
<CommandItem
|
|
296
305
|
key={`ed-${d.id}`}
|
|
@@ -307,7 +316,7 @@ export function CommandPalette() {
|
|
|
307
316
|
<span className="truncate">{d.name}</span>
|
|
308
317
|
{d.hiddenAt ? (
|
|
309
318
|
<span className="ms-2 rounded border border-border px-1.5 py-0.5 text-[10px] font-medium text-muted-foreground">
|
|
310
|
-
|
|
319
|
+
{t("commandPalette.hidden")}
|
|
311
320
|
</span>
|
|
312
321
|
) : null}
|
|
313
322
|
</CommandItem>
|
|
@@ -316,11 +325,14 @@ export function CommandPalette() {
|
|
|
316
325
|
)}
|
|
317
326
|
|
|
318
327
|
{sqlDashboardsFetching && sqlDashboards.length === 0 && (
|
|
319
|
-
<CommandLoadingGroup
|
|
328
|
+
<CommandLoadingGroup
|
|
329
|
+
heading={t("commandPalette.groupSqlDashboards")}
|
|
330
|
+
rows={3}
|
|
331
|
+
/>
|
|
320
332
|
)}
|
|
321
333
|
|
|
322
334
|
{visibleSqlDashboards.length > 0 && (
|
|
323
|
-
<CommandGroup heading="
|
|
335
|
+
<CommandGroup heading={t("commandPalette.groupSqlDashboards")}>
|
|
324
336
|
{visibleSqlDashboards.map((d) => (
|
|
325
337
|
<CommandItem
|
|
326
338
|
key={`sql-${d.id}`}
|
|
@@ -335,7 +347,7 @@ export function CommandPalette() {
|
|
|
335
347
|
<span className="truncate">{d.name}</span>
|
|
336
348
|
{d.hiddenAt ? (
|
|
337
349
|
<span className="ms-2 rounded border border-border px-1.5 py-0.5 text-[10px] font-medium text-muted-foreground">
|
|
338
|
-
|
|
350
|
+
{t("commandPalette.hidden")}
|
|
339
351
|
</span>
|
|
340
352
|
) : null}
|
|
341
353
|
</CommandItem>
|
|
@@ -344,11 +356,14 @@ export function CommandPalette() {
|
|
|
344
356
|
)}
|
|
345
357
|
|
|
346
358
|
{extensionsFetching && extensions.length === 0 && (
|
|
347
|
-
<CommandLoadingGroup
|
|
359
|
+
<CommandLoadingGroup
|
|
360
|
+
heading={t("commandPalette.groupExtensions")}
|
|
361
|
+
rows={3}
|
|
362
|
+
/>
|
|
348
363
|
)}
|
|
349
364
|
|
|
350
365
|
{extensions.length > 0 && (
|
|
351
|
-
<CommandGroup heading="
|
|
366
|
+
<CommandGroup heading={t("commandPalette.groupExtensions")}>
|
|
352
367
|
{extensions.map((extension) => (
|
|
353
368
|
<CommandItem
|
|
354
369
|
key={`extension-${extension.id}`}
|
|
@@ -369,7 +384,7 @@ export function CommandPalette() {
|
|
|
369
384
|
</CommandGroup>
|
|
370
385
|
)}
|
|
371
386
|
|
|
372
|
-
<CommandGroup heading="
|
|
387
|
+
<CommandGroup heading={t("commandPalette.groupDashboards")}>
|
|
373
388
|
{dashboards.map((d) => (
|
|
374
389
|
<CommandItem
|
|
375
390
|
key={`dash-${d.id}`}
|
|
@@ -382,20 +397,20 @@ export function CommandPalette() {
|
|
|
382
397
|
))}
|
|
383
398
|
</CommandGroup>
|
|
384
399
|
|
|
385
|
-
<CommandGroup heading="
|
|
386
|
-
{defaultTools.map((
|
|
400
|
+
<CommandGroup heading={t("commandPalette.groupTools")}>
|
|
401
|
+
{defaultTools.map((tool) => (
|
|
387
402
|
<CommandItem
|
|
388
|
-
key={`tool-${
|
|
389
|
-
onSelect={() => go(
|
|
390
|
-
keywords={commandPaletteKeywords(t.
|
|
403
|
+
key={`tool-${tool.id}`}
|
|
404
|
+
onSelect={() => go(tool.href)}
|
|
405
|
+
keywords={commandPaletteKeywords(t(tool.nameKey), "tool")}
|
|
391
406
|
>
|
|
392
407
|
<IconTool className="me-2 h-4 w-4 text-muted-foreground" />
|
|
393
|
-
{t.
|
|
408
|
+
{t(tool.nameKey)}
|
|
394
409
|
</CommandItem>
|
|
395
410
|
))}
|
|
396
411
|
</CommandGroup>
|
|
397
412
|
|
|
398
|
-
<CommandGroup heading="
|
|
413
|
+
<CommandGroup heading={t("commandPalette.groupAppearance")}>
|
|
399
414
|
<CommandItem
|
|
400
415
|
onSelect={() => {
|
|
401
416
|
const nextTheme = isDark ? "light" : "dark";
|
|
@@ -409,18 +424,20 @@ export function CommandPalette() {
|
|
|
409
424
|
) : (
|
|
410
425
|
<IconMoon className="me-2 h-4 w-4 text-muted-foreground" />
|
|
411
426
|
)}
|
|
412
|
-
|
|
427
|
+
{isDark
|
|
428
|
+
? t("commandPalette.toggleLightMode")
|
|
429
|
+
: t("commandPalette.toggleDarkMode")}
|
|
413
430
|
</CommandItem>
|
|
414
431
|
</CommandGroup>
|
|
415
432
|
|
|
416
|
-
<CommandGroup heading="
|
|
433
|
+
<CommandGroup heading={t("commandPalette.groupHelp")}>
|
|
417
434
|
<CommandItem
|
|
418
435
|
onSelect={() => {
|
|
419
436
|
setOpen(false);
|
|
420
437
|
setChangelogOpen(true);
|
|
421
438
|
}}
|
|
422
439
|
keywords={commandPaletteKeywords(
|
|
423
|
-
"
|
|
440
|
+
t("commandPalette.whatsNew"),
|
|
424
441
|
"changelog",
|
|
425
442
|
"updates",
|
|
426
443
|
"release notes",
|
|
@@ -428,16 +445,19 @@ export function CommandPalette() {
|
|
|
428
445
|
)}
|
|
429
446
|
>
|
|
430
447
|
<IconHistory className="me-2 h-4 w-4 text-muted-foreground" />
|
|
431
|
-
|
|
448
|
+
{t("commandPalette.whatsNew")}
|
|
432
449
|
</CommandItem>
|
|
433
450
|
</CommandGroup>
|
|
434
451
|
|
|
435
452
|
{savedChartsFetching && savedCharts.length === 0 && (
|
|
436
|
-
<CommandLoadingGroup
|
|
453
|
+
<CommandLoadingGroup
|
|
454
|
+
heading={t("commandPalette.groupSavedCharts")}
|
|
455
|
+
rows={2}
|
|
456
|
+
/>
|
|
437
457
|
)}
|
|
438
458
|
|
|
439
459
|
{savedCharts.length > 0 && (
|
|
440
|
-
<CommandGroup heading="
|
|
460
|
+
<CommandGroup heading={t("commandPalette.groupSavedCharts")}>
|
|
441
461
|
{savedCharts.map((c) => (
|
|
442
462
|
<CommandItem
|
|
443
463
|
key={`chart-${c.id}`}
|
|
@@ -2,6 +2,7 @@ import { IconUser, IconCalendar } from "@tabler/icons-react";
|
|
|
2
2
|
import { useMemo } from "react";
|
|
3
3
|
import { useParams } from "react-router";
|
|
4
4
|
import { dashboards } from "@/pages/adhoc/registry";
|
|
5
|
+
import { useFormatters, useT } from "@agent-native/core/client";
|
|
5
6
|
|
|
6
7
|
interface DashboardHeaderProps {
|
|
7
8
|
title?: string;
|
|
@@ -15,12 +16,26 @@ export function DashboardHeader({
|
|
|
15
16
|
actions,
|
|
16
17
|
}: DashboardHeaderProps) {
|
|
17
18
|
const { id } = useParams<{ id: string }>();
|
|
19
|
+
const t = useT();
|
|
20
|
+
const { formatDate } = useFormatters();
|
|
18
21
|
|
|
19
22
|
const metadata = useMemo(() => {
|
|
20
23
|
return dashboards.find((d) => d.id === id);
|
|
21
24
|
}, [id]);
|
|
22
25
|
|
|
23
|
-
const displayTitle = title || metadata?.name || "
|
|
26
|
+
const displayTitle = title || metadata?.name || t("navigation.dashboard");
|
|
27
|
+
const dateFormat: Intl.DateTimeFormatOptions = {
|
|
28
|
+
year: "numeric",
|
|
29
|
+
month: "short",
|
|
30
|
+
day: "numeric",
|
|
31
|
+
};
|
|
32
|
+
function formatMetadataDate(value: string): string {
|
|
33
|
+
try {
|
|
34
|
+
return formatDate(value, dateFormat);
|
|
35
|
+
} catch {
|
|
36
|
+
return value;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
24
39
|
|
|
25
40
|
return (
|
|
26
41
|
<div className="mb-6 space-y-3">
|
|
@@ -51,13 +66,21 @@ export function DashboardHeader({
|
|
|
51
66
|
{metadata.lastUpdated && (
|
|
52
67
|
<div className="flex items-center gap-1.5">
|
|
53
68
|
<IconCalendar className="h-3.5 w-3.5" />
|
|
54
|
-
<span>
|
|
69
|
+
<span>
|
|
70
|
+
{t("dashboardHeader.updated", {
|
|
71
|
+
date: formatMetadataDate(metadata.lastUpdated),
|
|
72
|
+
})}
|
|
73
|
+
</span>
|
|
55
74
|
</div>
|
|
56
75
|
)}
|
|
57
76
|
{metadata.dateCreated && (
|
|
58
77
|
<div className="flex items-center gap-1.5">
|
|
59
78
|
<IconCalendar className="h-3.5 w-3.5" />
|
|
60
|
-
<span>
|
|
79
|
+
<span>
|
|
80
|
+
{t("dashboardHeader.created", {
|
|
81
|
+
date: formatMetadataDate(metadata.dateCreated),
|
|
82
|
+
})}
|
|
83
|
+
</span>
|
|
61
84
|
</div>
|
|
62
85
|
)}
|
|
63
86
|
</div>
|
|
@@ -65,16 +88,3 @@ export function DashboardHeader({
|
|
|
65
88
|
</div>
|
|
66
89
|
);
|
|
67
90
|
}
|
|
68
|
-
|
|
69
|
-
function formatDate(dateStr: string): string {
|
|
70
|
-
try {
|
|
71
|
-
const date = new Date(dateStr);
|
|
72
|
-
return date.toLocaleDateString("en-US", {
|
|
73
|
-
year: "numeric",
|
|
74
|
-
month: "short",
|
|
75
|
-
day: "numeric",
|
|
76
|
-
});
|
|
77
|
-
} catch {
|
|
78
|
-
return dateStr;
|
|
79
|
-
}
|
|
80
|
-
}
|
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
useHeaderTitle,
|
|
7
7
|
useHeaderActions,
|
|
8
8
|
} from "./HeaderActions";
|
|
9
|
-
import { AgentToggleButton
|
|
9
|
+
import { AgentToggleButton } from "@agent-native/core/client";
|
|
10
10
|
import { RunsTray } from "@agent-native/core/client/progress";
|
|
11
11
|
import { useT } from "@agent-native/core/client";
|
|
12
12
|
|
|
@@ -57,7 +57,6 @@ export function Header() {
|
|
|
57
57
|
</div>
|
|
58
58
|
<div className="flex items-center gap-2 shrink-0">
|
|
59
59
|
{actions}
|
|
60
|
-
<LanguagePicker variant="icon" />
|
|
61
60
|
<RunsTray pollMs={1500} />
|
|
62
61
|
<AgentToggleButton />
|
|
63
62
|
</div>
|
|
@@ -4,6 +4,7 @@ import {
|
|
|
4
4
|
type ReactNode,
|
|
5
5
|
type FC,
|
|
6
6
|
} from "react";
|
|
7
|
+
import { useT } from "@agent-native/core/client";
|
|
7
8
|
import { Skeleton } from "@/components/ui/skeleton";
|
|
8
9
|
|
|
9
10
|
/**
|
|
@@ -85,5 +86,11 @@ export function useSetHeaderActions(node: ReactNode) {
|
|
|
85
86
|
}
|
|
86
87
|
|
|
87
88
|
export function DashboardTitleSkeleton() {
|
|
88
|
-
|
|
89
|
+
const t = useT();
|
|
90
|
+
return (
|
|
91
|
+
<Skeleton
|
|
92
|
+
className="h-6 w-56"
|
|
93
|
+
aria-label={t("navigation.loadingDashboardTitle")}
|
|
94
|
+
/>
|
|
95
|
+
);
|
|
89
96
|
}
|
|
@@ -121,11 +121,8 @@ export function Layout({ children }: LayoutProps) {
|
|
|
121
121
|
questions={guidedQuestions}
|
|
122
122
|
onSubmit={handleGuidedSubmit}
|
|
123
123
|
onSkip={handleGuidedSkip}
|
|
124
|
-
title={guidedTitle ?? "
|
|
125
|
-
description={
|
|
126
|
-
guidedDescription ??
|
|
127
|
-
"A few choices help the agent pick the right source, metrics, cuts, and layout before it writes SQL."
|
|
128
|
-
}
|
|
124
|
+
title={guidedTitle ?? t("guidedQuestions.title")}
|
|
125
|
+
description={guidedDescription ?? t("guidedQuestions.description")}
|
|
129
126
|
skipLabel={guidedSkipLabel}
|
|
130
127
|
submitLabel={guidedSubmitLabel}
|
|
131
128
|
/>
|