@translationstudio/translationstudio-strapi-extension 1.1.1 → 2.0.0

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.
@@ -1,36 +1,75 @@
1
- import { jsxs, jsx } from "react/jsx-runtime";
1
+ import { jsxs, jsx, Fragment } from "react/jsx-runtime";
2
2
  import { getFetchClient, Page } from "@strapi/strapi/admin";
3
3
  import { Routes, Route } from "react-router-dom";
4
- import { Main, Box, Alert, Flex, Typography, Textarea, Button } from "@strapi/design-system";
4
+ import { Main, Box, Alert, Grid, Typography, TextInput, Button, Switch } from "@strapi/design-system";
5
5
  import { useState, useEffect } from "react";
6
+ import { ArrowClockwise, Play } from "@strapi/icons";
6
7
  const TSlogoFarbig = "data:image/svg+xml,%3c?xml%20version='1.0'%20encoding='UTF-8'?%3e%3csvg%20id='Ebene_1'%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%201444.47%20635.72'%3e%3cdefs%3e%3cstyle%3e.cls-1{fill:%23e94642;}.cls-2{fill:%23231f20;}.cls-3{fill:%23a51d78;}%3c/style%3e%3c/defs%3e%3cpath%20class='cls-2'%20d='M1151.68,294.37c34.28,0,50.11,19.74,50.11,59.01v56.4c0,6.94-3.91,10.85-10.85,10.85h-2.6c-6.94,0-10.84-3.9-10.84-10.85v-54.45c0-27.12-10.41-39.91-33.41-39.91s-32.97,15.4-32.97,42.74v51.63c0,6.94-3.91,10.85-10.85,10.85h-2.6c-6.94,0-10.85-3.9-10.85-10.85v-102.39c0-6.94,3.91-10.85,10.85-10.85h2.6c6.94,0,10.85,3.91,10.85,10.85v12.34c5.64-14.39,19.73-25.36,40.56-25.36h0Z'/%3e%3cpath%20class='cls-2'%20d='M0,313.78v55.76c0,37.96,14.53,51.2,46.42,51.2h0c1.96,0,4.12-.03,6.29-.22,6.9-.65,9.8-4.45,9.11-11.07-.61-5.88-4.99-8.24-11.71-8.24-18.88,0-25.6-8.9-25.6-34.49v-52.94h25.81c6.94,0,10.85-3.47,10.85-9.54s-3.9-9.33-10.85-9.33H24.51v-15.83c0-7.59-4.34-11.28-11.93-9.55l-3.04,.65c-6.29,1.3-9.54,5.21-9.54,11.71v31.89Z'/%3e%3cpath%20class='cls-2'%20d='M139.49,295.02c7.38,0,11.06,4.77,10.2,11.71l-.22,1.74c-.65,6.94-4.77,9.54-11.93,9.54-20.39,.43-30.16,15.19-30.16,41.22v50.55c0,6.94-3.9,10.85-10.85,10.85h-2.6c-6.94,0-10.85-3.9-10.85-10.85v-102.39c0-6.94,3.9-10.85,10.85-10.85h2.6c6.94,0,10.85,3.69,10.85,10.41v10.41c3.91-11.07,13.89-22.34,32.1-22.34h0Z'/%3e%3cpath%20class='cls-2'%20d='M259.67,358.59c0-27.12-15.84-43.82-38.83-43.82s-38.4,16.49-38.4,43.82,15.62,44.04,38.83,44.04,38.4-16.7,38.4-44.04m-101.53,0c0-42.74,26.03-64.43,56.84-64.43,19.52,0,36.88,9.54,44.04,26.69v-13.45c0-6.94,3.9-10.85,10.85-10.85h2.6c6.94,0,10.85,3.9,10.85,10.85v102.18c0,6.94-3.9,10.85-10.85,10.85h-2.6c-6.94,0-10.85-3.9-10.85-10.85v-12.58c-6.94,16.7-24.51,26.47-43.82,26.47-30.81,0-57.06-21.91-57.06-64.87'/%3e%3cpath%20class='cls-2'%20d='M380.06,294.37c34.28,0,50.11,19.74,50.11,59.01v56.4c0,6.94-3.91,10.85-10.85,10.85h-2.6c-6.94,0-10.85-3.9-10.85-10.85v-54.45c0-27.12-10.41-39.91-33.41-39.91s-32.98,15.4-32.98,42.74v51.63c0,6.94-3.9,10.85-10.85,10.85h-2.6c-6.94,0-10.85-3.9-10.85-10.85v-102.39c0-6.94,3.91-10.85,10.85-10.85h2.6c6.94,0,10.85,3.91,10.85,10.85v12.34c5.64-14.39,19.73-25.36,40.57-25.36h0Z'/%3e%3cpath%20class='cls-2'%20d='M508.94,422.81c-20.8,0-42.78-8.33-53.19-21.48-4.44-5.61-2.26-11.49,4.99-13.67l2.17-.65c4.75-1.43,8.02-1.28,14.32,4.36,8.65,7.74,20.41,10.61,31.71,10.61,18.05,0,28.81-6.44,28.81-17.36,0-28.63-80.45-5.9-80.45-54.24,0-22.87,23.1-36.01,49.75-36.01,16.09,0,36.22,6.5,47,17.79,5.1,5.33,3.34,11.34-3.68,13.45l-2.17,.65c-5.86,1.76-8.85-.39-14.53-3.84-8.11-4.92-16.87-8.09-26.22-8.09-15.64,0-26.27,5.18-26.27,14.91,0,27.74,81.1,4.51,81.1,54.72,0,23.06-22.28,38.83-53.32,38.83h0Z'/%3e%3cpath%20class='cls-2'%20d='M585.05,409.79v-142.75c0-6.94,3.9-10.85,10.85-10.85h2.82c6.94,0,10.85,3.9,10.85,10.85v142.75c0,6.94-3.91,10.85-10.85,10.85h-2.82c-6.94,0-10.85-3.91-10.85-10.85'/%3e%3cpath%20class='cls-2'%20d='M737.56,358.59c0-27.12-15.84-43.82-38.84-43.82s-38.4,16.49-38.4,43.82,15.62,44.04,38.83,44.04,38.4-16.7,38.4-44.04m-101.53,0c0-42.74,26.03-64.43,56.84-64.43,19.52,0,36.88,9.54,44.04,26.69v-13.45c0-6.94,3.9-10.85,10.85-10.85h2.6c6.94,0,10.85,3.9,10.85,10.85v102.18c0,6.94-3.9,10.85-10.85,10.85h-2.6c-6.94,0-10.85-3.9-10.85-10.85v-12.58c-6.94,16.7-24.51,26.47-43.82,26.47-30.81,0-57.06-21.91-57.06-64.87'/%3e%3cpath%20class='cls-2'%20d='M800.25,315.42v55.76c0,37.96,14.53,51.2,46.42,51.2h0c1.95,0,4.12-.03,6.29-.22,6.89-.65,9.8-4.45,9.11-11.07-.61-5.88-4.99-8.24-11.71-8.24-18.87,0-25.6-8.9-25.6-34.49v-52.94h25.81c6.94,0,10.85-3.47,10.85-9.55s-3.91-9.33-10.85-9.33h-25.81v-15.83c0-7.59-4.34-11.28-11.93-9.54l-3.04,.65c-6.29,1.3-9.55,5.21-9.55,11.71v31.89Z'/%3e%3cpath%20class='cls-2'%20d='M883.72,409.79v-102.4c0-6.94,3.83-10.85,10.65-10.85h2.77c6.82,0,10.65,3.9,10.65,10.85v102.4c0,6.94-3.83,10.85-10.65,10.85h-2.77c-6.81,0-10.65-3.91-10.65-10.85m-2.05-142.96c0-8.24,6.08-13.02,14.32-13.02,7.59,0,14.32,4.77,14.32,13.02s-6.72,13.02-14.32,13.02c-8.24,0-14.32-4.77-14.32-13.02'/%3e%3cpath%20class='cls-2'%20d='M1036.06,358.59c0-27.12-15.62-43.82-38.62-43.82s-38.4,16.49-38.4,43.82,15.4,44.04,38.61,44.04,38.4-16.7,38.4-44.04m-101.31,0c0-44.69,31.02-64.43,62.69-64.43s62.91,19.74,62.91,64.43-31.02,64.87-62.7,64.87-62.91-19.74-62.91-64.87'/%3e%3cpath%20class='cls-2'%20d='M555.77,635.72c-20.98,0-43.14-8.4-53.65-21.66-4.48-5.66-2.27-11.59,5.03-13.78l2.19-.66c4.79-1.44,8.09-1.29,14.43,4.4,8.73,7.81,20.59,10.69,31.98,10.69,18.2,0,29.05-6.49,29.05-17.5,0-28.88-81.14-5.95-81.14-54.7,0-23.07,23.3-36.31,50.17-36.31,16.23,0,36.53,6.55,47.41,17.94,5.14,5.38,3.37,11.43-3.72,13.56l-2.19,.66c-5.91,1.77-8.92-.39-14.66-3.87-8.18-4.96-17.02-8.16-26.45-8.16-15.78,0-26.5,5.22-26.5,15.04,0,27.98,81.79,4.55,81.79,55.18,0,23.26-22.47,39.16-53.78,39.16h0Z'/%3e%3cpath%20class='cls-2'%20d='M639.98,526.42v56.23c0,38.29,14.66,51.63,46.82,51.63h0c1.97,0,4.16-.03,6.34-.22,6.96-.66,9.89-4.49,9.19-11.16-.61-5.93-5.03-8.31-11.81-8.31-19.03,0-25.82-8.97-25.82-34.79v-53.38h26.03c7,0,10.94-3.5,10.94-9.63s-3.94-9.41-10.94-9.41h-26.03v-15.97c0-7.66-4.38-11.38-12.03-9.63l-3.06,.66c-6.34,1.31-9.63,5.25-9.63,11.81v32.16Z'/%3e%3cpath%20class='cls-2'%20d='M826.59,508.39c7,0,10.94,3.94,10.94,10.94v103.27c0,7-3.94,10.94-10.94,10.94h-2.62c-7,0-10.94-3.94-10.94-10.94v-12.45c-5.69,14.51-19.9,25.57-40.91,25.57-34.57,0-50.54-19.91-50.54-59.51v-56.89c0-7,3.94-10.93,10.94-10.93h2.63c7,0,10.94,3.93,10.94,10.93v54.92c0,27.35,10.5,40.26,33.69,40.26s33.26-15.53,33.26-43.1v-52.07c0-7,3.94-10.93,10.94-10.93h2.62Z'/%3e%3cpath%20class='cls-2'%20d='M967.71,570.31c0-27.35-15.75-44.19-39.16-44.19s-38.72,16.63-38.72,44.19,15.75,44.41,39.16,44.41,38.72-16.85,38.72-44.41m-102.39,0c0-43.1,26.25-64.98,57.32-64.98,19.69,0,37.41,9.63,44.41,26.91v-54.26c0-7,3.94-10.94,10.94-10.94h2.62c7,0,10.94,3.94,10.94,10.94v143.74c0,7-3.94,10.94-10.94,10.94h-2.62c-7,0-10.94-3.94-10.94-10.94v-12.69c-7,16.85-24.72,26.69-44.19,26.69-31.07,0-57.54-22.09-57.54-65.41'/%3e%3cpath%20class='cls-2'%20d='M1023.66,623.38v-103.27c0-7,3.87-10.94,10.74-10.94h2.79c6.87,0,10.74,3.94,10.74,10.94v103.27c0,7-3.87,10.94-10.74,10.94h-2.79c-6.87,0-10.74-3.94-10.74-10.94m-2.07-144.18c0-8.31,6.13-13.13,14.44-13.13,7.66,0,14.44,4.81,14.44,13.13s-6.78,13.13-14.44,13.13c-8.31,0-14.44-4.81-14.44-13.13'/%3e%3cpath%20class='cls-2'%20d='M1177.29,570.31c0-27.35-15.75-44.19-38.94-44.19s-38.72,16.63-38.72,44.19,15.53,44.41,38.94,44.41,38.72-16.85,38.72-44.41m-102.17,0c0-45.07,31.29-64.98,63.23-64.98s63.45,19.91,63.45,64.98-31.29,65.41-63.23,65.41-63.45-19.91-63.45-65.41'/%3e%3cpath%20class='cls-3'%20d='M1366.99,177.21c7.75,6.65,16.32,15.32,24.3,26.23,19.82,27.08,29.56,59.09,28.94,95.13-.29,16.74-3.42,30.61-9.31,41.23-.55,1-1.14,1.99-1.74,2.94-1.17,1.86-2.46,3.67-3.82,5.37-3.28,4.11-7.15,7.78-11.48,10.91-.85,.61-1.73,1.21-2.61,1.79-1.77,1.14-3.63,2.22-5.54,3.2-2.85,1.46-5.89,2.76-9.03,3.84-2.08,.72-4.25,1.36-6.44,1.91-6.58,1.65-13.54,2.48-20.67,2.48-19.29,0-36.82-6.22-49.35-17.5-14.34-12.91-21.61-31.67-21.61-55.75,0-30.01,11.74-53.91,31.41-63.94,15.09-7.69,29.61-15.71,41.22-29.17,7.24-8.39,12.46-17.89,15.72-28.67m-14.08-37.87c-3.24,0-6.11,2.04-6.11,5.55h0c.97,42.1-22.01,55.46-47.74,68.58-26.46,13.49-44.63,43.79-44.63,85.51,0,66.7,47.26,97.47,95.17,97.47,8.98,0,17.93-1.05,26.54-3.2,2.87-.72,5.7-1.56,8.49-2.52,4.18-1.45,8.24-3.17,12.16-5.18,2.61-1.34,5.16-2.81,7.63-4.41,1.24-.8,2.45-1.63,3.65-2.49,5.98-4.32,11.44-9.45,16.21-15.43,1.91-2.39,3.71-4.92,5.39-7.58,.84-1.33,1.65-2.7,2.42-4.1,7.76-14,11.99-31.44,12.35-52.56,1.63-95.85-61.94-144.16-87.99-158.76-.99-.56-2.19-.88-3.54-.88h0Z'/%3e%3cpath%20class='cls-1'%20d='M1234.82,24.21c19.29,0,36.82,6.22,49.35,17.5,14.34,12.91,21.61,31.67,21.61,55.75,0,30.01-11.74,53.91-31.41,63.94-15.09,7.69-29.61,15.71-41.22,29.17-7.24,8.39-12.46,17.89-15.72,28.67-7.75-6.65-16.32-15.32-24.3-26.23-19.82-27.08-29.56-59.09-28.94-95.13,.29-16.74,3.42-30.61,9.31-41.23,.55-1,1.14-1.98,1.74-2.93,1.17-1.86,2.46-3.67,3.82-5.37,3.28-4.11,7.15-7.78,11.48-10.91,.85-.61,1.73-1.21,2.61-1.79,1.77-1.14,3.63-2.22,5.54-3.2,2.85-1.46,5.89-2.76,9.03-3.84,2.08-.72,4.25-1.36,6.44-1.91,6.58-1.65,13.54-2.48,20.67-2.48m0-24.21c-8.98,0-17.93,1.05-26.54,3.2-2.87,.72-5.7,1.56-8.49,2.52-4.18,1.45-8.24,3.17-12.16,5.18-2.61,1.34-5.16,2.81-7.63,4.41-1.24,.8-2.45,1.63-3.65,2.49-5.98,4.32-11.44,9.45-16.21,15.43-1.91,2.39-3.71,4.92-5.39,7.58-.84,1.33-1.65,2.7-2.42,4.1-7.76,14-11.99,31.44-12.35,52.56-1.63,95.85,61.94,144.16,87.99,158.76,.99,.56,2.19,.88,3.54,.88,3.24,0,6.11-2.04,6.11-5.55h0c-.97-42.1,22.01-55.46,47.74-68.58,26.46-13.49,44.63-43.79,44.63-85.51,0-66.7-47.26-97.47-95.17-97.47h0Z'/%3e%3c/svg%3e";
8
+ async function loadLicense(fnGet) {
9
+ try {
10
+ const response = await fnGet("/translationstudio/getLicense");
11
+ if (typeof response.data?.license === "string")
12
+ return response.data.license;
13
+ } catch (err) {
14
+ console.error(err);
15
+ }
16
+ return "";
17
+ }
18
+ async function loadDevUrl(fnGet) {
19
+ try {
20
+ const response = await fnGet("/translationstudio/devurl");
21
+ if (typeof response.data?.url === "string")
22
+ return response.data.url;
23
+ } catch (err) {
24
+ console.error(err);
25
+ }
26
+ return "";
27
+ }
28
+ async function updateDevlUrl(fnPost, url) {
29
+ try {
30
+ const response = await fnPost("/translationstudio/devurl", { url });
31
+ if (typeof response.data?.success === "boolean")
32
+ return response.data.success;
33
+ } catch (err) {
34
+ console.error(err);
35
+ }
36
+ return false;
37
+ }
38
+ const TextareaStyle = {
39
+ color: "grey",
40
+ width: "100%",
41
+ display: "block",
42
+ backgroundColor: "#f6f6f6",
43
+ cursor: "default"
44
+ };
45
+ const BUttonStyle = { backgroundColor: "#e94642", border: "none", paddingTop: "0.6em", paddingBottom: "0.6em" };
7
46
  const SettingsPage = () => {
8
47
  const [licenseValue, setLicenseValue] = useState("");
9
48
  const [isLoading, setIsLoading] = useState(true);
10
49
  const [tokenValue, setTokenValue] = useState("");
11
50
  const [isLoadingToken, setIsLoadingToken] = useState(false);
51
+ const [showDevOptions, setShowDevOptions] = useState(false);
12
52
  const [showAlert, setShowAlert] = useState(false);
13
53
  const [alertType, setAlertType] = useState("success");
14
54
  const [alertMessage, setAlertMessage] = useState("");
55
+ const [devUrl, setDevUrl] = useState("");
15
56
  const { get, post } = getFetchClient();
16
57
  useEffect(() => {
17
58
  const getLicense = async () => {
18
59
  setIsLoading(true);
19
- try {
20
- const response = await get("/translationstudio/getLicense");
21
- if (response.data.license) {
22
- setLicenseValue(response.data.license);
23
- } else {
24
- setLicenseValue("");
25
- }
26
- } catch (err) {
27
- console.error(err);
28
- } finally {
29
- setIsLoading(false);
60
+ const license = await loadLicense(get);
61
+ if (license)
62
+ setLicenseValue(license);
63
+ const dUrl = await loadDevUrl(get);
64
+ if (dUrl) {
65
+ console.log(dUrl);
66
+ setDevUrl(dUrl);
67
+ setShowDevOptions(true);
30
68
  }
69
+ setIsLoading(false);
31
70
  };
32
71
  getLicense();
33
- }, []);
72
+ }, [setLicenseValue, setDevUrl, setIsLoading, setShowDevOptions]);
34
73
  useEffect(() => {
35
74
  const fetchToken = async () => {
36
75
  setIsLoadingToken(true);
@@ -50,7 +89,14 @@ const SettingsPage = () => {
50
89
  fetchToken();
51
90
  }, []);
52
91
  const handleLicenseChange = (e) => {
53
- setLicenseValue(e.target.value);
92
+ setLicenseValue(e.target.value.trim());
93
+ };
94
+ const handleUpdateUrl = async function() {
95
+ setIsLoading(true);
96
+ updateDevlUrl(post, devUrl).then(() => {
97
+ if (devUrl === "")
98
+ setShowDevOptions(false);
99
+ }).finally(() => setIsLoading(false));
54
100
  };
55
101
  const handleSaveLicense = async () => {
56
102
  try {
@@ -86,6 +132,12 @@ const SettingsPage = () => {
86
132
  setIsLoadingToken(false);
87
133
  }
88
134
  };
135
+ const onChangeDevOptions = function(val) {
136
+ if (val)
137
+ setShowDevOptions(val);
138
+ else
139
+ updateDevlUrl(post, "").finally(() => setShowDevOptions(val));
140
+ };
89
141
  return /* @__PURE__ */ jsxs(Main, { children: [
90
142
  showAlert && /* @__PURE__ */ jsx(
91
143
  Box,
@@ -106,27 +158,27 @@ const SettingsPage = () => {
106
158
  Box,
107
159
  {
108
160
  padding: 10,
109
- paddingBottom: 0,
110
161
  style: {
111
- height: "90vh",
162
+ minHeight: "90vh",
112
163
  marginTop: "5vh",
113
164
  backgroundColor: "white",
114
165
  color: "grey"
115
166
  },
116
- children: /* @__PURE__ */ jsxs(Flex, { direction: "column", gap: 6, children: [
117
- /* @__PURE__ */ jsx(
167
+ children: /* @__PURE__ */ jsxs(Grid.Root, { children: [
168
+ /* @__PURE__ */ jsx(Grid.Item, { xs: 12, children: /* @__PURE__ */ jsx(Box, { style: { textAlign: "right", width: "100%" }, children: /* @__PURE__ */ jsx(
118
169
  "img",
119
170
  {
120
171
  src: TSlogoFarbig,
121
172
  alt: "Translation Studio Logo",
122
173
  style: {
123
- maxWidth: "300px",
124
- height: "auto"
174
+ width: "300px",
175
+ height: "auto",
176
+ display: "inline-block"
125
177
  }
126
178
  }
127
- ),
128
- /* @__PURE__ */ jsx(Typography, { variant: "beta", style: { textAlign: "left" }, children: "translationstudio License" }),
129
- /* @__PURE__ */ jsxs(Typography, { variant: "charlie", children: [
179
+ ) }) }),
180
+ /* @__PURE__ */ jsx(Grid.Item, { xs: 12, style: { paddingTop: "2em" }, children: /* @__PURE__ */ jsx(Typography, { variant: "beta", style: { width: "100%" }, children: "translationstudio License" }) }),
181
+ /* @__PURE__ */ jsx(Grid.Item, { xs: 12, style: { paddingBottom: "1em" }, children: /* @__PURE__ */ jsxs(Typography, { variant: "charlie", style: { width: "100%" }, children: [
130
182
  "You can create or revoke a license at",
131
183
  " ",
132
184
  /* @__PURE__ */ jsx(
@@ -135,14 +187,13 @@ const SettingsPage = () => {
135
187
  href: "https://account.translationstudio.tech/",
136
188
  target: "_blank",
137
189
  rel: "noopener noreferrer",
138
- style: { textDecoration: "none", color: "#e94642", textAlign: "left" },
190
+ style: { textDecoration: "none", color: "#e94642" },
139
191
  children: "account.translationstudio.tech"
140
192
  }
141
- ),
142
- " "
143
- ] }),
144
- /* @__PURE__ */ jsx(Flex, { gap: 2, children: /* @__PURE__ */ jsx(
145
- Textarea,
193
+ )
194
+ ] }) }),
195
+ /* @__PURE__ */ jsx(Grid.Item, { xs: 10, children: /* @__PURE__ */ jsx(Box, { style: { width: "100%" }, children: /* @__PURE__ */ jsx(
196
+ TextInput,
146
197
  {
147
198
  name: "jwt-token",
148
199
  label: "JWT Token",
@@ -151,20 +202,16 @@ const SettingsPage = () => {
151
202
  value: licenseValue,
152
203
  onChange: handleLicenseChange,
153
204
  disabled: isLoading,
154
- style: {
155
- color: "grey",
156
- width: "25vw",
157
- textAlign: "left",
158
- backgroundColor: "#f6f6f6",
159
- cursor: "text"
160
- }
205
+ style: TextareaStyle
161
206
  }
162
- ) }),
163
- /* @__PURE__ */ jsx(Box, { style: { minHeight: "40px" }, children: !isLoading && /* @__PURE__ */ jsx(Flex, { gap: 2, children: /* @__PURE__ */ jsx(
207
+ ) }) }),
208
+ /* @__PURE__ */ jsx(Grid.Item, { xs: 2, children: /* @__PURE__ */ jsx(
164
209
  Button,
165
210
  {
166
211
  onClick: handleSaveLicense,
167
- style: { backgroundColor: "#e94642", border: "none" },
212
+ disabled: isLoading,
213
+ style: BUttonStyle,
214
+ size: "L",
168
215
  startIcon: /* @__PURE__ */ jsx(
169
216
  "svg",
170
217
  {
@@ -184,10 +231,11 @@ const SettingsPage = () => {
184
231
  ),
185
232
  children: "Save license"
186
233
  }
187
- ) }) }),
188
- /* @__PURE__ */ jsx(Typography, { variant: "beta", children: "Authorize incoming translationstudio connection against this access key" }),
189
- /* @__PURE__ */ jsx(Flex, { gap: 2, children: /* @__PURE__ */ jsx(
190
- Textarea,
234
+ ) }),
235
+ /* @__PURE__ */ jsx(Grid.Item, { xs: 12, style: { paddingTop: "3em" }, children: /* @__PURE__ */ jsx(Typography, { variant: "beta", children: "Authorize translationstudio requests" }) }),
236
+ /* @__PURE__ */ jsx(Grid.Item, { xs: 12, style: { paddingBottom: "1em" }, children: /* @__PURE__ */ jsx(Typography, { variant: "charlie", style: { width: "100%" }, children: "When translationstudio connects with this plugin it will use the following access key to authorize itself." }) }),
237
+ /* @__PURE__ */ jsx(Grid.Item, { xs: 10, children: /* @__PURE__ */ jsx(Box, { style: { width: "100%" }, children: /* @__PURE__ */ jsx(
238
+ TextInput,
191
239
  {
192
240
  name: "access-token",
193
241
  label: "Access Key",
@@ -197,69 +245,86 @@ const SettingsPage = () => {
197
245
  onChange: () => {
198
246
  },
199
247
  disabled: true,
200
- style: {
201
- color: "grey",
202
- width: "25vw",
203
- textAlign: "left",
204
- backgroundColor: "#f6f6f6",
205
- cursor: "default"
206
- }
248
+ style: TextareaStyle
207
249
  }
208
- ) }),
209
- /* @__PURE__ */ jsx(Box, { style: { minHeight: "40px" }, children: /* @__PURE__ */ jsx(
250
+ ) }) }),
251
+ /* @__PURE__ */ jsx(Grid.Item, { xs: 2, children: /* @__PURE__ */ jsx(
210
252
  Button,
211
253
  {
212
254
  onClick: handleGenerateToken,
213
- style: { backgroundColor: "#e94642", border: "none" },
255
+ style: BUttonStyle,
214
256
  disabled: isLoadingToken,
215
257
  loading: isLoadingToken,
216
- startIcon: /* @__PURE__ */ jsx(
217
- "svg",
218
- {
219
- width: "20",
220
- height: "20",
221
- viewBox: "0 0 24 24",
222
- fill: "none",
223
- xmlns: "http://www.w3.org/2000/svg",
224
- children: /* @__PURE__ */ jsx(
225
- "path",
226
- {
227
- d: "M19,11H13V5a1,1,0,0,0-2,0v6H5a1,1,0,0,0,0,2h6v6a1,1,0,0,0,2,0V13h6a1,1,0,0,0,0-2Z",
228
- fill: "currentColor"
229
- }
230
- )
231
- }
232
- ),
233
- children: isLoadingToken ? "Generating..." : tokenValue ? "Generate new access key" : "Generate access key"
258
+ size: "L",
259
+ startIcon: /* @__PURE__ */ jsx(ArrowClockwise, {}),
260
+ children: isLoadingToken ? "Generating..." : tokenValue ? "New access key" : "Create access key"
261
+ }
262
+ ) }),
263
+ /* @__PURE__ */ jsx(Grid.Item, { xs: 12, style: { paddingTop: "5em" }, children: /* @__PURE__ */ jsx(Typography, { variant: "beta", children: "Customization" }) }),
264
+ /* @__PURE__ */ jsx(Grid.Item, { xs: 12, style: { paddingBottom: "1em" }, children: /* @__PURE__ */ jsx(Typography, { variant: "charlie", style: { width: "100%" }, children: "You will not need these settings, but you might want to customize your translationstudio instance." }) }),
265
+ /* @__PURE__ */ jsx(Grid.Item, { xs: 12, children: /* @__PURE__ */ jsx(
266
+ Switch,
267
+ {
268
+ checked: showDevOptions,
269
+ onCheckedChange: () => onChangeDevOptions(!showDevOptions),
270
+ onLabel: "Use custom translationstudio URL",
271
+ offLabel: "Custom translationstudio URL is currently disabled (default)",
272
+ visibleLabels: true
234
273
  }
235
274
  ) }),
236
- /* @__PURE__ */ jsx(Box, { children: /* @__PURE__ */ jsxs(Typography, { variant: "delta", children: [
237
- "If you do not have a",
275
+ showDevOptions && /* @__PURE__ */ jsxs(Fragment, { children: [
276
+ /* @__PURE__ */ jsx(Grid.Item, { xs: 12, style: { paddingTop: "2em" }, children: /* @__PURE__ */ jsx(Typography, { variant: "beta", children: "Use custom translationstudio URL." }) }),
277
+ /* @__PURE__ */ jsx(Grid.Item, { xs: 12, style: { paddingBottom: "1em" }, children: /* @__PURE__ */ jsx(Typography, { variant: "delta", children: "This is usually only necessary for development purposes." }) }),
278
+ /* @__PURE__ */ jsx(Grid.Item, { xs: 10, children: /* @__PURE__ */ jsx(Box, { style: { width: "100%" }, children: /* @__PURE__ */ jsx(
279
+ TextInput,
280
+ {
281
+ onChange: (e) => setDevUrl(e.target.value.trim()),
282
+ name: "devurl",
283
+ label: "Custom translationstudio url",
284
+ placeholder: "Paste your custom translationstudio url here",
285
+ "aria-label": "translationstudio custom url",
286
+ value: devUrl,
287
+ style: TextareaStyle
288
+ }
289
+ ) }) }),
290
+ /* @__PURE__ */ jsx(Grid.Item, { xs: 2, children: /* @__PURE__ */ jsx(
291
+ Button,
292
+ {
293
+ onClick: handleUpdateUrl,
294
+ style: BUttonStyle,
295
+ disabled: isLoadingToken,
296
+ loading: isLoadingToken,
297
+ startIcon: /* @__PURE__ */ jsx(Play, {}),
298
+ size: "L",
299
+ children: "Update URL"
300
+ }
301
+ ) })
302
+ ] }),
303
+ /* @__PURE__ */ jsx(Grid.Item, { xs: 12, style: { paddingTop: "4em" }, children: /* @__PURE__ */ jsxs(Typography, { variant: "sigma", style: { width: "100%", textAlign: "right" }, children: [
304
+ "If you do not have a translationstudio account, please create one at",
238
305
  " ",
239
306
  /* @__PURE__ */ jsx(
240
307
  "a",
241
308
  {
242
- href: "https://www.translationstudio.tech/",
309
+ href: "https://account.translationstudio.tech/",
243
310
  target: "_blank",
244
311
  rel: "noopener noreferrer",
245
312
  style: { textDecoration: "none", color: "#e94642" },
246
- children: "translationstudio"
313
+ children: "account.translationstudio.tech"
247
314
  }
248
315
  ),
249
- " ",
250
- "account, please create one at",
251
- " ",
316
+ ". You can find further information at ",
252
317
  /* @__PURE__ */ jsx(
253
318
  "a",
254
319
  {
255
- href: "https://account.translationstudio.tech/",
320
+ href: "https://www.translationstudio.tech/",
256
321
  target: "_blank",
257
322
  rel: "noopener noreferrer",
258
323
  style: { textDecoration: "none", color: "#e94642" },
259
- children: "account.translationstudio.tech"
324
+ children: "translationstudio.tech"
260
325
  }
261
326
  ),
262
- "."
327
+ " "
263
328
  ] }) })
264
329
  ] })
265
330
  }
@@ -307,7 +307,7 @@ const index = {
307
307
  defaultMessage: PLUGIN_ID
308
308
  },
309
309
  Component: async () => {
310
- const { App } = await Promise.resolve().then(() => require("../_chunks/App-rdXR_woe.js"));
310
+ const { App } = await Promise.resolve().then(() => require("../_chunks/App-C5dxwMbx.js"));
311
311
  return App;
312
312
  }
313
313
  });
@@ -306,7 +306,7 @@ const index = {
306
306
  defaultMessage: PLUGIN_ID
307
307
  },
308
308
  Component: async () => {
309
- const { App } = await import("../_chunks/App-jiozoQyG.mjs");
309
+ const { App } = await import("../_chunks/App-DxAbaDu8.mjs");
310
310
  return App;
311
311
  }
312
312
  });