@parhelia/localization 0.1.12802 → 0.1.12836
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/dist/LocalizeItemCommand.d.ts.map +1 -1
- package/dist/LocalizeItemCommand.js +4 -2
- package/dist/LocalizeItemDialog.d.ts.map +1 -1
- package/dist/LocalizeItemDialog.js +7 -4
- package/dist/LocalizeItemUtils.d.ts.map +1 -1
- package/dist/LocalizeItemUtils.js +39 -29
- package/dist/api/discovery.d.ts.map +1 -1
- package/dist/api/discovery.js +20 -3
- package/dist/hooks/useTranslationWizard.d.ts.map +1 -1
- package/dist/hooks/useTranslationWizard.js +3 -3
- package/dist/services/translationService.d.ts +2 -2
- package/dist/services/translationService.d.ts.map +1 -1
- package/dist/services/translationService.js +21 -5
- package/dist/settings/TranslationServicesPanel.d.ts.map +1 -1
- package/dist/settings/TranslationServicesPanel.js +24 -21
- package/dist/setup/LocalizationSetupStep.d.ts.map +1 -1
- package/dist/setup/LocalizationSetupStep.js +29 -18
- package/dist/sidebar/TranslationSidebar.d.ts.map +1 -1
- package/dist/sidebar/TranslationSidebar.js +17 -10
- package/dist/steps/ItemSelectionStep.d.ts.map +1 -1
- package/dist/steps/ItemSelectionStep.js +2 -1
- package/dist/steps/ItemSelectionTree.d.ts.map +1 -1
- package/dist/steps/ItemSelectionTree.js +2 -1
- package/dist/steps/PromptCustomizationStep.d.ts.map +1 -1
- package/dist/steps/PromptCustomizationStep.js +8 -10
- package/dist/steps/ServiceLanguageSelectionStep.d.ts.map +1 -1
- package/dist/steps/ServiceLanguageSelectionStep.js +6 -4
- package/dist/steps/WizardStepShell.d.ts.map +1 -1
- package/dist/steps/types.d.ts.map +1 -1
- package/dist/translation-center/TranslationBatches.d.ts.map +1 -1
- package/dist/translation-center/TranslationBatches.js +187 -115
- package/dist/translation-center/TranslationManagement.js +4 -4
- package/dist/translation-center/TranslationsTitlebar.d.ts.map +1 -1
- package/dist/translation-center/TranslationsTitlebar.js +2 -2
- package/package.json +1 -1
- package/dist/constants.d.ts +0 -15
- package/dist/constants.d.ts.map +0 -1
- package/dist/constants.js +0 -21
- package/dist/steps/MetadataInputStep.d.ts +0 -4
- package/dist/steps/MetadataInputStep.d.ts.map +0 -1
- package/dist/steps/MetadataInputStep.js +0 -48
- package/dist/steps/SubitemDiscoveryStep.d.ts +0 -3
- package/dist/steps/SubitemDiscoveryStep.d.ts.map +0 -1
- package/dist/steps/SubitemDiscoveryStep.js +0 -313
- package/dist/steps/index.d.ts +0 -6
- package/dist/steps/index.d.ts.map +0 -1
- package/dist/steps/index.js +0 -5
- package/dist/utils/createVersions.d.ts +0 -14
- package/dist/utils/createVersions.d.ts.map +0 -1
- package/dist/utils/createVersions.js +0 -26
|
@@ -15,12 +15,12 @@ export function LocalizationSetupStep() {
|
|
|
15
15
|
const [services, setServices] = useState([]);
|
|
16
16
|
const statusIcon = useCallback((state) => {
|
|
17
17
|
if (state === "success")
|
|
18
|
-
return _jsx(CheckCircleIcon, { className: "h-4 w-4 text-[
|
|
18
|
+
return (_jsx(CheckCircleIcon, { className: "h-4 w-4 text-[var(--color-feedback-green)]", strokeWidth: 1 }));
|
|
19
19
|
if (state === "error")
|
|
20
|
-
return _jsx(AlertCircleIcon, { className: "h-4 w-4 text-destructive", strokeWidth: 1 });
|
|
20
|
+
return (_jsx(AlertCircleIcon, { className: "h-4 w-4 text-destructive", strokeWidth: 1 }));
|
|
21
21
|
if (state === "partial")
|
|
22
|
-
return _jsx(AlertCircleIcon, { className: "h-4 w-4 text-[
|
|
23
|
-
return (_jsx(RefreshCwIcon, { className: "h-4 w-4 animate-spin text-[
|
|
22
|
+
return (_jsx(AlertCircleIcon, { className: "h-4 w-4 text-[var(--color-feedback-orange)]", strokeWidth: 1 }));
|
|
23
|
+
return (_jsx(RefreshCwIcon, { className: "h-4 w-4 animate-spin text-[var(--color-highlight-100)]", strokeWidth: 1 }));
|
|
24
24
|
}, []);
|
|
25
25
|
const checkLocalization = useCallback(async () => {
|
|
26
26
|
try {
|
|
@@ -42,14 +42,14 @@ export function LocalizationSetupStep() {
|
|
|
42
42
|
else {
|
|
43
43
|
const serviceStates = availableServices.map((svc) => ({
|
|
44
44
|
...svc,
|
|
45
|
-
creating: false
|
|
45
|
+
creating: false,
|
|
46
46
|
}));
|
|
47
47
|
setServices(serviceStates);
|
|
48
|
-
const configuredCount = serviceStates.filter(s => s.isConfigured).length;
|
|
48
|
+
const configuredCount = serviceStates.filter((s) => s.isConfigured).length;
|
|
49
49
|
const totalCount = serviceStates.length;
|
|
50
50
|
if (configuredCount === 0) {
|
|
51
51
|
setState("error");
|
|
52
|
-
setError(`Found ${totalCount} translation service${totalCount !== 1 ?
|
|
52
|
+
setError(`Found ${totalCount} translation service${totalCount !== 1 ? "s" : ""} in DI, but none have Sitecore Settings items configured.`);
|
|
53
53
|
}
|
|
54
54
|
else if (configuredCount < totalCount) {
|
|
55
55
|
setState("partial");
|
|
@@ -62,7 +62,8 @@ export function LocalizationSetupStep() {
|
|
|
62
62
|
}
|
|
63
63
|
else {
|
|
64
64
|
setState("error");
|
|
65
|
-
setError(result.details ||
|
|
65
|
+
setError(result.details ||
|
|
66
|
+
"Failed to check translation services. The translation API may not be available.");
|
|
66
67
|
}
|
|
67
68
|
}
|
|
68
69
|
catch (e) {
|
|
@@ -72,7 +73,7 @@ export function LocalizationSetupStep() {
|
|
|
72
73
|
}, []);
|
|
73
74
|
const createSettings = useCallback(async (serviceName, templateId) => {
|
|
74
75
|
try {
|
|
75
|
-
setServices(prev => prev.map(s => s.serviceName === serviceName ? { ...s, creating: true } : s));
|
|
76
|
+
setServices((prev) => prev.map((s) => s.serviceName === serviceName ? { ...s, creating: true } : s));
|
|
76
77
|
setError(null);
|
|
77
78
|
const language = editContext?.item?.language ??
|
|
78
79
|
editContext?.currentItemDescriptor?.language ??
|
|
@@ -80,13 +81,20 @@ export function LocalizationSetupStep() {
|
|
|
80
81
|
const result = await createProviderSettings(serviceName, templateId, language);
|
|
81
82
|
if (result.type === "success" && result.data) {
|
|
82
83
|
if (result.data.success && result.data.data) {
|
|
83
|
-
setServices(prev => prev.map(s => s.serviceName === serviceName
|
|
84
|
-
? {
|
|
84
|
+
setServices((prev) => prev.map((s) => s.serviceName === serviceName
|
|
85
|
+
? {
|
|
86
|
+
...s,
|
|
87
|
+
isConfigured: true,
|
|
88
|
+
creating: false,
|
|
89
|
+
settingsItemId: result.data?.data?.itemId,
|
|
90
|
+
}
|
|
85
91
|
: s));
|
|
86
92
|
setTimeout(() => checkLocalization(), 500);
|
|
87
93
|
}
|
|
88
94
|
else {
|
|
89
|
-
throw new Error(result.data.error ||
|
|
95
|
+
throw new Error(result.data.error ||
|
|
96
|
+
result.details ||
|
|
97
|
+
"Failed to create settings");
|
|
90
98
|
}
|
|
91
99
|
}
|
|
92
100
|
else {
|
|
@@ -95,22 +103,25 @@ export function LocalizationSetupStep() {
|
|
|
95
103
|
}
|
|
96
104
|
catch (e) {
|
|
97
105
|
setError(`Failed to create settings for ${serviceName}: ${e?.message || "Unknown error"}`);
|
|
98
|
-
setServices(prev => prev.map(s => s.serviceName === serviceName ? { ...s, creating: false } : s));
|
|
106
|
+
setServices((prev) => prev.map((s) => s.serviceName === serviceName ? { ...s, creating: false } : s));
|
|
99
107
|
}
|
|
100
108
|
}, [editContext, checkLocalization]);
|
|
101
109
|
React.useEffect(() => {
|
|
102
110
|
checkLocalization();
|
|
103
111
|
}, [checkLocalization]);
|
|
104
|
-
const configuredCount = services.filter(s => s.isConfigured).length;
|
|
112
|
+
const configuredCount = services.filter((s) => s.isConfigured).length;
|
|
105
113
|
const totalCount = services.length;
|
|
106
|
-
return (_jsx(Card, { icon: _jsx(LanguagesIcon, { strokeWidth: 1, className: "h-5 w-5" }), title: "Localization setup", description: "Verifies that translation services registered in DI have corresponding Sitecore Settings items.", children: _jsxs("div", { className: "space-y-3", children: [_jsxs("div", { className: "flex items-center justify-between", children: [_jsxs("div", { className: "flex items-center gap-2", children: [statusIcon(state), _jsx("span", { className: "text-sm text-
|
|
107
|
-
? `All ${totalCount} translation service${totalCount !== 1 ?
|
|
114
|
+
return (_jsx(Card, { icon: _jsx(LanguagesIcon, { strokeWidth: 1, className: "h-5 w-5" }), title: "Localization setup", description: "Verifies that translation services registered in DI have corresponding Sitecore Settings items.", children: _jsxs("div", { className: "space-y-3", children: [_jsxs("div", { className: "flex items-center justify-between", children: [_jsxs("div", { className: "flex items-center gap-2", children: [statusIcon(state), _jsx("span", { className: "text-sm text-neutral-grey-100", children: state === "success"
|
|
115
|
+
? `All ${totalCount} translation service${totalCount !== 1 ? "s" : ""} configured`
|
|
108
116
|
: state === "partial"
|
|
109
117
|
? `${configuredCount} of ${totalCount} services configured`
|
|
110
118
|
: state === "error" && totalCount > 0
|
|
111
|
-
? `${totalCount} service${totalCount !== 1 ?
|
|
119
|
+
? `${totalCount} service${totalCount !== 1 ? "s" : ""} found, none configured`
|
|
112
120
|
: state === "error"
|
|
113
121
|
? "No services found"
|
|
114
|
-
: "Checking..." })] }), _jsxs(Button, { size: "sm", variant: "outline", onClick: checkLocalization, children: [_jsx(RefreshCwIcon, { strokeWidth: 1, className: "h-4 w-4" }), "Recheck"] })] }), services.length > 0 && (_jsxs("div", { className: "space-y-2 rounded-lg border border-
|
|
122
|
+
: "Checking..." })] }), _jsxs(Button, { size: "sm", variant: "outline", onClick: checkLocalization, children: [_jsx(RefreshCwIcon, { strokeWidth: 1, className: "h-4 w-4" }), "Recheck"] })] }), services.length > 0 && (_jsxs("div", { className: "space-y-2 rounded-lg border border-border-default bg-neutral-grey-5 p-3", children: [_jsx("div", { className: "text-xs font-semibold text-neutral-grey-50 tracking-wide", children: "Translation Services" }), services.map((service) => (_jsxs("div", { className: "flex items-center justify-between rounded-md bg-background p-3 shadow-sm border border-border-default", children: [_jsxs("div", { className: "flex items-center gap-2", children: [service.isConfigured ? (_jsx(CheckCircleIcon, { className: "h-3.5 w-3.5 text-[var(--color-feedback-green)]", strokeWidth: 1.5 })) : (_jsx(AlertCircleIcon, { className: "h-3.5 w-3.5 text-[var(--color-feedback-orange)]", strokeWidth: 1.5 })), _jsxs("div", { children: [_jsx("div", { className: "text-sm font-medium text-neutral-grey-100", children: service.displayName || service.serviceName }), service.displayName &&
|
|
123
|
+
service.displayName !== service.serviceName && (_jsxs("div", { className: "text-xs text-neutral-grey-50", children: ["Service: ", service.serviceName] })), service.isConfigured &&
|
|
124
|
+
service.supportedLanguages &&
|
|
125
|
+
service.supportedLanguages.length > 0 && (_jsxs("div", { className: "text-xs text-neutral-grey-50", children: ["Languages: ", service.supportedLanguages.join(", ")] }))] })] }), !service.isConfigured && (_jsxs(Button, { size: "xs", onClick: () => createSettings(service.serviceName, service.templateId), disabled: service.creating, title: `Create using template: ${service.templateName}`, children: [service.creating ? (_jsx(RefreshCwIcon, { strokeWidth: 1, className: "h-3 w-3 animate-spin" })) : (_jsx(PlusIcon, { strokeWidth: 1.5, className: "h-3 w-3" })), "Create Settings"] }))] }, service.serviceName)))] })), error && (_jsx("div", { className: "rounded-md border border-feedback-orange/30 bg-feedback-orange/10 p-3 text-xs whitespace-pre-wrap text-neutral-grey-100", children: error }))] }) }));
|
|
115
126
|
}
|
|
116
127
|
export default LocalizationSetupStep;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TranslationSidebar.d.ts","sourceRoot":"","sources":["../../src/sidebar/TranslationSidebar.tsx"],"names":[],"mappings":"AAkBA,wBAAgB,kBAAkB,
|
|
1
|
+
{"version":3,"file":"TranslationSidebar.d.ts","sourceRoot":"","sources":["../../src/sidebar/TranslationSidebar.tsx"],"names":[],"mappings":"AAkBA,wBAAgB,kBAAkB,mDA8NjC"}
|
|
@@ -28,7 +28,7 @@ export function TranslationSidebar() {
|
|
|
28
28
|
});
|
|
29
29
|
};
|
|
30
30
|
const languageName = (language) => {
|
|
31
|
-
return (_jsxs("div", { className: "flex items-center gap-2 text-
|
|
31
|
+
return (_jsxs("div", { className: "flex items-center gap-2 text-neutral-grey-100", children: [_jsx("img", { src: language.icon, className: "h-5 rounded-sm", alt: language.languageCode }), _jsx("span", { className: "font-medium", children: language.name })] }, language.languageCode));
|
|
32
32
|
};
|
|
33
33
|
const loadTranslationStatus = async () => {
|
|
34
34
|
if (!item)
|
|
@@ -75,7 +75,11 @@ export function TranslationSidebar() {
|
|
|
75
75
|
const effectiveStatus = progress ? "In Progress" : status?.status;
|
|
76
76
|
return {
|
|
77
77
|
...x,
|
|
78
|
-
translationStatus: status
|
|
78
|
+
translationStatus: status
|
|
79
|
+
? { ...status, status: effectiveStatus }
|
|
80
|
+
: progress
|
|
81
|
+
? { status: "In Progress" }
|
|
82
|
+
: undefined,
|
|
79
83
|
translationProgress: progress,
|
|
80
84
|
};
|
|
81
85
|
});
|
|
@@ -88,7 +92,7 @@ export function TranslationSidebar() {
|
|
|
88
92
|
// Sort by name for languages that both have versions or both don't
|
|
89
93
|
return a.name.localeCompare(b.name);
|
|
90
94
|
});
|
|
91
|
-
return (_jsxs("div", { className: "flex h-full flex-col", "data-testid": "translation-sidebar", children: [_jsx("div", { className: "flex items-center justify-end border-b border-
|
|
95
|
+
return (_jsxs("div", { className: "flex h-full flex-col", "data-testid": "translation-sidebar", children: [_jsx("div", { className: "flex items-center justify-end border-b border-border-default p-1 px-2", children: item && (_jsx(Button, { size: "xs", "data-testid": "translation-sidebar-localize-button", onClick: () => {
|
|
92
96
|
editContext.executeCommand({
|
|
93
97
|
command: localizeItemCommand,
|
|
94
98
|
data: {
|
|
@@ -97,20 +101,23 @@ export function TranslationSidebar() {
|
|
|
97
101
|
});
|
|
98
102
|
}, children: "Translate" })) }), _jsx("div", { className: "relative flex-1", children: _jsx("div", { className: "absolute inset-0 overflow-y-auto", children: _jsx(SimpleTable, { "data-testid": "translation-sidebar-language-table", columns: [
|
|
99
103
|
{ header: "Language", body: languageName },
|
|
100
|
-
{
|
|
104
|
+
{
|
|
105
|
+
header: "Ver.",
|
|
106
|
+
body: (x) => (_jsx("span", { className: "text-neutral-grey-100", children: x.versions.toString() })),
|
|
107
|
+
},
|
|
101
108
|
{
|
|
102
109
|
header: "Src",
|
|
103
|
-
body: (x) => _jsx("span", { className: "text-
|
|
110
|
+
body: (x) => (_jsx("span", { className: "text-neutral-grey-50", children: x.translationStatus?.sourceLanguage })),
|
|
104
111
|
},
|
|
105
112
|
{
|
|
106
113
|
header: "Status",
|
|
107
|
-
body: (x) => (_jsxs("div", { className: "flex items-center gap-2", "data-testid": `translation-status-${x.languageCode}`, children: [isActiveTranslationStatus(x.translationStatus?.status) && (_jsxs("div", { className: "relative w-full", children: [_jsx(Progress, { className: "h-5", value: (x.translationProgress?.progress || 0) * 100, showValue: false, indicatorClassName: "bg-[
|
|
108
|
-
? "text-green
|
|
114
|
+
body: (x) => (_jsxs("div", { className: "flex items-center gap-2", "data-testid": `translation-status-${x.languageCode}`, children: [isActiveTranslationStatus(x.translationStatus?.status) && (_jsxs("div", { className: "relative w-full", children: [_jsx(Progress, { className: "h-5", value: (x.translationProgress?.progress || 0) * 100, showValue: false, indicatorClassName: "bg-[var(--color-highlight-100)]", "data-testid": `translation-progress-${x.languageCode}` }), _jsx("div", { className: "absolute inset-0 flex items-center justify-center text-white text-xs font-medium", children: x.translationProgress?.message })] })), !isActiveTranslationStatus(x.translationStatus?.status) && (_jsx("span", { title: x.translationStatus?.message, className: x.translationStatus?.status === "Completed"
|
|
115
|
+
? "text-feedback-green font-medium"
|
|
109
116
|
: x.translationStatus?.status === "Error"
|
|
110
|
-
? "text-red
|
|
111
|
-
: "text-
|
|
117
|
+
? "text-feedback-red font-medium"
|
|
118
|
+
: "text-neutral-grey-50", children: x.translationStatus?.status || "Not started" }))] })),
|
|
112
119
|
},
|
|
113
120
|
], items: languageData, onRowClick: (data) => selectLanguage(data.item), rowClassName: (item) => item.languageCode == editContext.currentItemDescriptor?.language
|
|
114
|
-
? "bg-[
|
|
121
|
+
? "bg-[var(--color-highlight-10)]"
|
|
115
122
|
: "" }) }) })] }));
|
|
116
123
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ItemSelectionStep.d.ts","sourceRoot":"","sources":["../../src/steps/ItemSelectionStep.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAI/C,wBAAgB,iBAAiB,CAAC,EAChC,QAAe,EACf,IAAI,EACJ,OAAO,EACP,eAAe,EACf,WAAW,GACZ,EAAE,oBAAoB,
|
|
1
|
+
{"version":3,"file":"ItemSelectionStep.d.ts","sourceRoot":"","sources":["../../src/steps/ItemSelectionStep.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAI/C,wBAAgB,iBAAiB,CAAC,EAChC,QAAe,EACf,IAAI,EACJ,OAAO,EACP,eAAe,EACf,WAAW,GACZ,EAAE,oBAAoB,2CAoCtB"}
|
|
@@ -4,7 +4,8 @@ import { ItemSelectionTree } from "./ItemSelectionTree";
|
|
|
4
4
|
import { WizardStepShell } from "./WizardStepShell";
|
|
5
5
|
export function ItemSelectionStep({ isActive = true, data, setData, onStepCompleted, editContext, }) {
|
|
6
6
|
const multiItemEnabled = editContext?.configuration?.localization?.multiItem !== false;
|
|
7
|
-
const [itemSelectionValid, setItemSelectionValid] = useState(!multiItemEnabled ||
|
|
7
|
+
const [itemSelectionValid, setItemSelectionValid] = useState(!multiItemEnabled ||
|
|
8
|
+
(data.selectionTreeItems?.length ?? data.items.length) > 0);
|
|
8
9
|
const onStepCompletedRef = useRef(onStepCompleted);
|
|
9
10
|
useEffect(() => {
|
|
10
11
|
onStepCompletedRef.current = onStepCompleted;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ItemSelectionTree.d.ts","sourceRoot":"","sources":["../../src/steps/ItemSelectionTree.tsx"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,eAAe,EAMrB,MAAM,gBAAgB,CAAC;AAExB,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAGrD,KAAK,sBAAsB,GAAG;IAC5B,IAAI,EAAE,qBAAqB,CAAC;IAC5B,OAAO,EAAE,CAAC,IAAI,EAAE,qBAAqB,KAAK,IAAI,CAAC;IAC/C,WAAW,EAAE,eAAe,CAAC;IAC7B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,sBAAsB,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IAClD,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAC1B,CAAC;AAkEF,wBAAgB,iBAAiB,CAAC,EAChC,IAAI,EACJ,OAAO,EACP,WAAW,EACX,QAAe,EACf,sBAAsB,EACtB,MAAY,GACb,EAAE,sBAAsB,
|
|
1
|
+
{"version":3,"file":"ItemSelectionTree.d.ts","sourceRoot":"","sources":["../../src/steps/ItemSelectionTree.tsx"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,eAAe,EAMrB,MAAM,gBAAgB,CAAC;AAExB,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAGrD,KAAK,sBAAsB,GAAG;IAC5B,IAAI,EAAE,qBAAqB,CAAC;IAC5B,OAAO,EAAE,CAAC,IAAI,EAAE,qBAAqB,KAAK,IAAI,CAAC;IAC/C,WAAW,EAAE,eAAe,CAAC;IAC7B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,sBAAsB,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IAClD,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAC1B,CAAC;AAkEF,wBAAgB,iBAAiB,CAAC,EAChC,IAAI,EACJ,OAAO,EACP,WAAW,EACX,QAAe,EACf,sBAAsB,EACtB,MAAY,GACb,EAAE,sBAAsB,2CA4VxB"}
|
|
@@ -116,7 +116,8 @@ export function ItemSelectionTree({ data, setData, editContext, isActive = true,
|
|
|
116
116
|
}, [items]);
|
|
117
117
|
const commitToWizard = useCallback((nextItems) => {
|
|
118
118
|
const cache = itemCacheRef.current;
|
|
119
|
-
const discovered = nextItems.map((entry) => cache.get(entry.descriptor.id) ??
|
|
119
|
+
const discovered = nextItems.map((entry) => cache.get(entry.descriptor.id) ??
|
|
120
|
+
fullItemFromDescriptor(entry.descriptor));
|
|
120
121
|
setData({
|
|
121
122
|
...data,
|
|
122
123
|
selectionTreeItems: nextItems,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PromptCustomizationStep.d.ts","sourceRoot":"","sources":["../../src/steps/PromptCustomizationStep.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAyB,MAAM,SAAS,CAAC;AAItE,wBAAgB,uBAAuB,CAAC,EACtC,QAAe,EACf,IAAI,EACJ,OAAO,EACP,eAAe,EACf,WAAW,GACZ,EAAE,oBAAoB,
|
|
1
|
+
{"version":3,"file":"PromptCustomizationStep.d.ts","sourceRoot":"","sources":["../../src/steps/PromptCustomizationStep.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAyB,MAAM,SAAS,CAAC;AAItE,wBAAgB,uBAAuB,CAAC,EACtC,QAAe,EACf,IAAI,EACJ,OAAO,EACP,eAAe,EACf,WAAW,GACZ,EAAE,oBAAoB,2CAoctB"}
|
|
@@ -46,7 +46,7 @@ export function PromptCustomizationStep({ isActive = true, data, setData, onStep
|
|
|
46
46
|
setIsSuggesting(true);
|
|
47
47
|
void (async () => {
|
|
48
48
|
try {
|
|
49
|
-
const includeSubitems = !!
|
|
49
|
+
const includeSubitems = !!data.selectionTreeItems?.some((s) => s.includeSubitems);
|
|
50
50
|
const name = await suggestBatchName({ itemIds, targetLanguages: langs, includeSubitems }, sessionId);
|
|
51
51
|
if (cancelled || userTouchedNameRef.current)
|
|
52
52
|
return;
|
|
@@ -86,7 +86,7 @@ export function PromptCustomizationStep({ isActive = true, data, setData, onStep
|
|
|
86
86
|
return data.serviceCustomData.get(data.translationProvider);
|
|
87
87
|
}, [data.serviceCustomData, data.translationProvider]);
|
|
88
88
|
const enableCustomPrompt = serviceData?.enableCustomPrompt === true;
|
|
89
|
-
const supportsPromptCustomization = data.translationProvider === "
|
|
89
|
+
const supportsPromptCustomization = data.translationProvider === "AI";
|
|
90
90
|
const defaultPrompt = useMemo(() => {
|
|
91
91
|
const prompt = selectedProvider?.defaultPrompt;
|
|
92
92
|
return prompt && prompt.trim() ? prompt : null;
|
|
@@ -133,7 +133,7 @@ export function PromptCustomizationStep({ isActive = true, data, setData, onStep
|
|
|
133
133
|
const newProvider = e.target.value;
|
|
134
134
|
const newServiceCustomData = new Map();
|
|
135
135
|
data.serviceCustomData?.forEach((value, key) => {
|
|
136
|
-
if (key !== "
|
|
136
|
+
if (key !== "AI" || newProvider === "AI") {
|
|
137
137
|
newServiceCustomData.set(key, value);
|
|
138
138
|
}
|
|
139
139
|
});
|
|
@@ -231,15 +231,15 @@ export function PromptCustomizationStep({ isActive = true, data, setData, onStep
|
|
|
231
231
|
supportsPromptCustomization,
|
|
232
232
|
updateParentData,
|
|
233
233
|
]);
|
|
234
|
-
return (_jsx(WizardStepShell, { fillHeight: true, testId: "prompt-customization-step", children: _jsxs("div", { className: "mx-auto flex min-h-0 w-full max-w-3xl flex-1 flex-col gap-6 overflow-y-auto", children: [_jsxs("div", { children: [_jsxs("div", { className: "flex items-baseline justify-between", children: [_jsx("label", { htmlFor: "translation-batch-name", className: "text-[11px] font-bold tracking-wider text-
|
|
234
|
+
return (_jsx(WizardStepShell, { fillHeight: true, testId: "prompt-customization-step", children: _jsxs("div", { className: "mx-auto flex min-h-0 w-full max-w-3xl flex-1 flex-col gap-6 overflow-y-auto", children: [_jsxs("div", { children: [_jsxs("div", { className: "flex items-baseline justify-between", children: [_jsx("label", { htmlFor: "translation-batch-name", className: "text-[11px] font-bold tracking-wider text-neutral-grey-50 ", children: "Name" }), isSuggesting && (_jsx("span", { className: "text-muted-foreground text-[10px]", children: "Suggesting\u2026" }))] }), _jsx("p", { className: "text-muted-foreground mt-1 text-xs", children: "A short label for this translation batch." }), _jsx(Input, { id: "translation-batch-name", type: "text", value: batchName, placeholder: isSuggesting ? "Generating a name…" : "Translation batch", onChange: (e) => {
|
|
235
235
|
userTouchedNameRef.current = true;
|
|
236
236
|
setBatchName(e.target.value);
|
|
237
|
-
}, className: "mt-2", "data-testid": "translation-batch-name-input" })] }), _jsxs("div", { children: [_jsx("label", { className: "text-[11px] font-bold tracking-wider text-
|
|
237
|
+
}, className: "mt-2", "data-testid": "translation-batch-name-input" })] }), _jsxs("div", { children: [_jsx("label", { className: "text-[11px] font-bold tracking-wider text-neutral-grey-50 ", children: "Translation provider" }), _jsx("p", { className: "text-muted-foreground mt-1 text-xs", children: "\"Create Versions\" will create new language versions without automatic translation." }), _jsx(Select, { value: data.translationProvider || "", onValueChange: (value) => handleProviderChange({
|
|
238
238
|
target: { value },
|
|
239
239
|
}), options: data.translationProviders.map((provider) => ({
|
|
240
240
|
value: provider.name,
|
|
241
241
|
label: provider.displayName || provider.name,
|
|
242
|
-
})), placeholder: "Select a provider\u2026", size: "sm", className: "mt-2 w-full", "data-testid": "translation-provider-select" })] }), supportsPromptCustomization && (_jsxs(_Fragment, { children: [_jsxs("label", { className: "-mb-2 flex cursor-pointer items-start gap-2.5", children: [_jsx("input", { type: "checkbox", checked: enableCustomPrompt, onChange: (e) => handleCustomPromptToggle(e.target.checked), className: "mt-0.5 h-3.5 w-3.5 rounded border-
|
|
242
|
+
})), placeholder: "Select a provider\u2026", size: "sm", className: "mt-2 w-full", "data-testid": "translation-provider-select" })] }), supportsPromptCustomization && (_jsxs(_Fragment, { children: [_jsxs("label", { className: "-mb-2 flex cursor-pointer items-start gap-2.5", children: [_jsx("input", { type: "checkbox", checked: enableCustomPrompt, onChange: (e) => handleCustomPromptToggle(e.target.checked), className: "mt-0.5 h-3.5 w-3.5 rounded border-border-default text-[var(--color-highlight-100)] accent-[var(--color-highlight-100)] focus:ring-[var(--color-highlight-100)]", "data-testid": "enable-custom-prompt-checkbox" }), _jsxs("div", { className: "min-w-0", children: [_jsx("span", { className: "block text-[13px] font-semibold text-neutral-grey-100", children: "Customize translation prompt" }), _jsx("span", { className: "text-muted-foreground mt-0.5 block text-xs", children: "Override or extend the provider's default instructions." })] })] }), enableCustomPrompt && (_jsxs(_Fragment, { children: [hasDefaultPrompt && (_jsxs(_Fragment, { children: [_jsxs("div", { children: [_jsx("span", { className: "text-[11px] font-bold tracking-wider text-neutral-grey-50 ", children: "Default prompt" }), _jsx("pre", { className: "mt-2 max-h-40 overflow-y-auto rounded-md bg-neutral-grey-5/70 p-3 font-mono text-xs leading-relaxed whitespace-pre-wrap text-neutral-grey-100", children: defaultPrompt })] }), _jsxs("div", { children: [_jsx("span", { className: "text-[11px] font-bold tracking-wider text-neutral-grey-50 ", children: "Customization type" }), _jsx("div", { className: "mt-2 grid gap-2 sm:grid-cols-2", children: [
|
|
243
243
|
{
|
|
244
244
|
value: "extend",
|
|
245
245
|
title: "Extend",
|
|
@@ -252,8 +252,6 @@ export function PromptCustomizationStep({ isActive = true, data, setData, onStep
|
|
|
252
252
|
},
|
|
253
253
|
].map((opt) => {
|
|
254
254
|
const selected = customizationType === opt.value;
|
|
255
|
-
return (_jsxs("label", { className: `group flex cursor-pointer items-start gap-2.5 rounded-lg p-2.5 transition-colors ${selected
|
|
256
|
-
|
|
257
|
-
: "hover:bg-gray-50"}`, children: [_jsx("input", { type: "radio", name: "customizationType", value: opt.value, checked: selected, onChange: () => setCustomizationType(opt.value), className: "mt-0.5 h-3.5 w-3.5 border-gray-300 text-[#9650fb] accent-[#9650fb] focus:ring-[#9650fb]", "data-testid": `customization-type-${opt.value}` }), _jsxs("div", { className: "min-w-0", children: [_jsx("div", { className: "text-xs font-semibold text-gray-900", children: opt.title }), _jsx("div", { className: "text-muted-foreground mt-0.5 text-[11px]", children: opt.hint })] })] }, opt.value));
|
|
258
|
-
}) })] })] })), _jsxs("div", { children: [_jsx("span", { className: "text-[11px] font-bold tracking-wider text-gray-500 uppercase", children: "Custom prompt" }), _jsx(Textarea, { value: customPrompt, onChange: (e) => setCustomPrompt(e.target.value), className: "mt-2 font-mono", rows: 6, placeholder: "Enter your custom prompt instructions here\u2026", "data-testid": "custom-prompt-textarea" })] }), hasDefaultPrompt && (_jsxs("div", { children: [_jsx("span", { className: "text-[11px] font-bold tracking-wider text-gray-500 uppercase", children: "Preview" }), _jsx("pre", { className: "mt-2 max-h-52 overflow-y-auto rounded-md bg-gray-50/70 p-3 font-mono text-xs leading-relaxed whitespace-pre-wrap text-gray-700", children: previewPrompt })] }))] }))] }))] }) }));
|
|
255
|
+
return (_jsxs("label", { className: `group flex cursor-pointer items-start gap-2.5 rounded-lg p-2.5 transition-colors ${selected ? "bg-primary/5" : "hover:bg-neutral-grey-5"}`, children: [_jsx("input", { type: "radio", name: "customizationType", value: opt.value, checked: selected, onChange: () => setCustomizationType(opt.value), className: "mt-0.5 h-3.5 w-3.5 border-border-default text-[var(--color-highlight-100)] accent-[var(--color-highlight-100)] focus:ring-[var(--color-highlight-100)]", "data-testid": `customization-type-${opt.value}` }), _jsxs("div", { className: "min-w-0", children: [_jsx("div", { className: "text-xs font-semibold text-neutral-grey-100", children: opt.title }), _jsx("div", { className: "text-muted-foreground mt-0.5 text-[11px]", children: opt.hint })] })] }, opt.value));
|
|
256
|
+
}) })] })] })), _jsxs("div", { children: [_jsx("span", { className: "text-[11px] font-bold tracking-wider text-neutral-grey-50 ", children: "Custom prompt" }), _jsx(Textarea, { value: customPrompt, onChange: (e) => setCustomPrompt(e.target.value), className: "mt-2 font-mono", rows: 6, placeholder: "Enter your custom prompt instructions here\u2026", "data-testid": "custom-prompt-textarea" })] }), hasDefaultPrompt && (_jsxs("div", { children: [_jsx("span", { className: "text-[11px] font-bold tracking-wider text-neutral-grey-50 ", children: "Preview" }), _jsx("pre", { className: "mt-2 max-h-52 overflow-y-auto rounded-md bg-neutral-grey-5/70 p-3 font-mono text-xs leading-relaxed whitespace-pre-wrap text-neutral-grey-100", children: previewPrompt })] }))] }))] }))] }) }));
|
|
259
257
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ServiceLanguageSelectionStep.d.ts","sourceRoot":"","sources":["../../src/steps/ServiceLanguageSelectionStep.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAyB,MAAM,SAAS,CAAC;AAGtE;;;;GAIG;AACH,wBAAgB,4BAA4B,CAAC,EAC3C,QAAe,EACf,IAAI,EACJ,OAAO,EACP,eAAe,EACf,WAAW,GACZ,EAAE,oBAAoB,
|
|
1
|
+
{"version":3,"file":"ServiceLanguageSelectionStep.d.ts","sourceRoot":"","sources":["../../src/steps/ServiceLanguageSelectionStep.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAyB,MAAM,SAAS,CAAC;AAGtE;;;;GAIG;AACH,wBAAgB,4BAA4B,CAAC,EAC3C,QAAe,EACf,IAAI,EACJ,OAAO,EACP,eAAe,EACf,WAAW,GACZ,EAAE,oBAAoB,2CA8OtB"}
|
|
@@ -117,15 +117,17 @@ export function ServiceLanguageSelectionStep({ isActive = true, data, setData, o
|
|
|
117
117
|
return allLanguages.some((lang) => languageSelection[lang.code]);
|
|
118
118
|
}, [allLanguages, languageSelection]);
|
|
119
119
|
const selectedCount = data.targetLanguages.length;
|
|
120
|
-
return (_jsx(WizardStepShell, { fillHeight: true, testId: "language-selection-step", children: _jsxs("div", { className: "mx-auto flex min-h-0 w-full max-w-3xl flex-1 flex-col overflow-hidden rounded-xl border border-
|
|
120
|
+
return (_jsx(WizardStepShell, { fillHeight: true, testId: "language-selection-step", children: _jsxs("div", { className: "mx-auto flex min-h-0 w-full max-w-3xl flex-1 flex-col overflow-hidden rounded-xl border border-border-default bg-white", children: [_jsxs("div", { className: "flex h-[37px] shrink-0 items-center justify-between gap-2 border-b border-border-default bg-neutral-grey-5/50 px-3", children: [_jsxs("div", { className: "flex items-baseline gap-2", children: [_jsx("span", { className: "text-xs font-semibold tracking-wider text-neutral-grey-50 ", children: "Target Languages" }), selectedCount > 0 && (_jsx("span", { className: "text-muted-foreground text-[11px] font-medium tabular-nums", children: selectedCount }))] }), allLanguages.length > 1 && (_jsxs("label", { className: "flex cursor-pointer items-center gap-1.5 text-[11px] font-medium text-neutral-grey-50 transition-colors hover:text-neutral-grey-100", children: [_jsx("input", { type: "checkbox", checked: areAllLanguagesSelected, ref: (input) => {
|
|
121
121
|
if (input) {
|
|
122
122
|
input.indeterminate =
|
|
123
123
|
areSomeLanguagesSelected && !areAllLanguagesSelected;
|
|
124
124
|
}
|
|
125
|
-
}, onChange: handleSelectAllLanguages, className: "h-3 w-3 rounded border-
|
|
125
|
+
}, onChange: handleSelectAllLanguages, className: "h-3 w-3 rounded border-border-default text-[var(--color-highlight-100)] accent-[var(--color-highlight-100)] focus:ring-[var(--color-highlight-100)]", "data-testid": "select-all-languages-checkbox" }), "Select all"] }))] }), _jsx("div", { className: "min-h-0 flex-1 overflow-y-auto p-2", children: allLanguages.length === 0 ? (_jsx("div", { className: "grid gap-2 p-1 sm:grid-cols-2", children: [...Array(6)].map((_, i) => (_jsxs("div", { className: "flex animate-pulse items-center gap-2 rounded-lg border border-border-default px-3 py-2", children: [_jsx("div", { className: "h-3.5 w-3.5 rounded bg-neutral-grey-10" }), _jsx("div", { className: "h-4 w-4 rounded-sm bg-neutral-grey-10" }), _jsx("div", { className: "h-3.5 w-24 rounded bg-neutral-grey-10" }), _jsx("div", { className: "ml-auto h-3 w-10 rounded bg-neutral-grey-5" })] }, i))) })) : (_jsx("div", { className: "grid gap-1.5 sm:grid-cols-2", children: allLanguages.map((lang) => {
|
|
126
126
|
const checked = !!languageSelection[lang.code];
|
|
127
|
-
return (_jsxs("label", { className: `group flex cursor-pointer items-center gap-2.5 rounded-lg border px-2
|
|
127
|
+
return (_jsxs("label", { className: `group flex cursor-pointer items-center gap-2.5 rounded-lg border px-2 py-1.5 transition-all ${checked
|
|
128
128
|
? "border-primary/30 bg-primary/5 ring-primary/10 ring-1"
|
|
129
|
-
: "border-
|
|
129
|
+
: "border-border-default hover:border-border-default hover:bg-neutral-grey-5"}`, children: [_jsx("input", { type: "checkbox", checked: checked, onChange: () => handleLanguageToggle(lang.code), className: "h-3.5 w-3.5 shrink-0 rounded border-border-default text-[var(--color-highlight-100)] accent-[var(--color-highlight-100)] focus:ring-[var(--color-highlight-100)]", "data-testid": `language-checkbox-${lang.code}` }), lang.icon ? (_jsx("img", { src: lang.icon, alt: "", "aria-hidden": "true", className: "h-4 w-5 shrink-0 rounded-sm object-cover" })) : (_jsx("span", { className: "inline-block h-4 w-5 shrink-0 rounded-sm bg-neutral-grey-5" })), _jsx("span", { className: `min-w-0 flex-1 truncate text-[13px] ${checked
|
|
130
|
+
? "font-medium text-neutral-grey-100"
|
|
131
|
+
: "text-neutral-grey-100"}`, children: lang.name }), _jsx("span", { className: "shrink-0 font-mono text-[10px] tracking-wider text-neutral-grey-50 ", children: lang.code })] }, lang.code));
|
|
130
132
|
}) })) })] }) }));
|
|
131
133
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WizardStepShell.d.ts","sourceRoot":"","sources":["../../src/steps/WizardStepShell.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAElC,KAAK,oBAAoB,GAAG;IAC1B,sEAAsE;IACtE,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,kFAAkF;IAClF,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,SAAS,CAAC;CACrB,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,EAC9B,IAAI,EACJ,UAAkB,EAClB,MAAM,EACN,QAAQ,GACT,EAAE,oBAAoB,
|
|
1
|
+
{"version":3,"file":"WizardStepShell.d.ts","sourceRoot":"","sources":["../../src/steps/WizardStepShell.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAElC,KAAK,oBAAoB,GAAG;IAC1B,sEAAsE;IACtE,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,kFAAkF;IAClF,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,SAAS,CAAC;CACrB,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,EAC9B,IAAI,EACJ,UAAkB,EAClB,MAAM,EACN,QAAQ,GACT,EAAE,oBAAoB,2CAiBtB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/steps/types.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/steps/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TranslationBatches.d.ts","sourceRoot":"","sources":["../../src/translation-center/TranslationBatches.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"TranslationBatches.d.ts","sourceRoot":"","sources":["../../src/translation-center/TranslationBatches.tsx"],"names":[],"mappings":"AAmPA,wBAAgB,kBAAkB,4CA8sCjC"}
|