dsh-coding-subscription-oauth 0.5.4 → 0.5.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -0
- package/INSTALL.md +4 -4
- package/README.de.md +4 -4
- package/README.es.md +4 -4
- package/README.fr.md +4 -4
- package/README.ja.md +4 -4
- package/README.ko.md +4 -4
- package/README.md +4 -4
- package/README.pt-BR.md +4 -4
- package/README.ru.md +4 -4
- package/README.zh-CN.md +4 -4
- package/docs/02-architecture.md +1 -1
- package/docs/02-architecture.zh-CN.md +1 -1
- package/lib/client.js +34 -1
- package/lib/client.js.map +4 -4
- package/package.json +1 -1
- package/src/client/GrokBuildSettings.tsx +24 -2
- package/src/client/components/AccountsTab.tsx +29 -29
- package/src/client/components/Badge.tsx +33 -0
- package/src/client/components/CapabilitiesTab.tsx +45 -32
- package/src/client/components/CopyButton.tsx +57 -0
- package/src/client/components/GatewayTab.tsx +86 -9
- package/src/client/components/NoticeBanner.tsx +46 -0
- package/src/client/components/ProgressBar.tsx +52 -0
- package/src/client/components/ProviderCard.tsx +244 -64
- package/src/client/components/SettingsTabs.tsx +16 -6
- package/src/client/components/ToggleSwitch.tsx +60 -0
- package/src/client/constants.ts +1 -1
- package/src/client/gatewaySnippets.ts +36 -0
- package/src/client/locales.ts +34 -0
- package/src/client/microStyles.ts +33 -0
- package/src/client/styles.ts +136 -10
package/src/client/styles.ts
CHANGED
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|
import type { CSSProperties } from "react";
|
|
4
4
|
import type { ProviderStatus } from "./types.ts";
|
|
5
5
|
|
|
6
|
+
export const TRANSITION = "all 0.15s ease";
|
|
7
|
+
|
|
6
8
|
export const pageStyle: CSSProperties = { display: "flex", flexDirection: "column", gap: 16, maxWidth: 780 };
|
|
7
9
|
export const titleStyle: CSSProperties = {
|
|
8
10
|
margin: 0,
|
|
@@ -25,6 +27,7 @@ export const cardStyle: CSSProperties = {
|
|
|
25
27
|
border: "1px solid var(--dsw-alias-border-l2)",
|
|
26
28
|
borderRadius: 12,
|
|
27
29
|
background: "var(--dsw-alias-bg-module-platform)",
|
|
30
|
+
transition: TRANSITION,
|
|
28
31
|
};
|
|
29
32
|
export const rowStyle: CSSProperties = {
|
|
30
33
|
display: "flex",
|
|
@@ -54,16 +57,25 @@ export const buttonStyle: CSSProperties = {
|
|
|
54
57
|
fontSize: 14,
|
|
55
58
|
fontWeight: 500,
|
|
56
59
|
cursor: "pointer",
|
|
60
|
+
transition: TRANSITION,
|
|
57
61
|
};
|
|
58
62
|
export const primaryButtonStyle: CSSProperties = {
|
|
59
63
|
...buttonStyle,
|
|
60
|
-
borderColor: "#315fc7",
|
|
61
|
-
background: "#315fc7",
|
|
64
|
+
borderColor: "var(--dsw-alias-brand-primary, #315fc7)",
|
|
65
|
+
background: "var(--dsw-alias-brand-primary, #315fc7)",
|
|
62
66
|
color: "#ffffff",
|
|
63
67
|
boxShadow: "0 1px 3px rgba(0, 0, 0, 0.28)",
|
|
64
68
|
fontWeight: 600,
|
|
65
69
|
};
|
|
70
|
+
export const compactButtonStyle: CSSProperties = {
|
|
71
|
+
...buttonStyle,
|
|
72
|
+
minHeight: 28,
|
|
73
|
+
padding: "4px 10px",
|
|
74
|
+
fontSize: 13,
|
|
75
|
+
borderRadius: 8,
|
|
76
|
+
};
|
|
66
77
|
export const errorStyle: CSSProperties = { ...bodyStyle, color: "var(--dsw-alias-state-error-primary)" };
|
|
78
|
+
export const successStyle: CSSProperties = { ...bodyStyle, color: "var(--dsw-alias-state-success-primary, #22a06b)" };
|
|
67
79
|
export const warningStyle: CSSProperties = {
|
|
68
80
|
...bodyStyle,
|
|
69
81
|
padding: "10px 12px",
|
|
@@ -78,6 +90,10 @@ export const tipStyle: CSSProperties = {
|
|
|
78
90
|
background: "var(--dsw-alias-bg-layer-1)",
|
|
79
91
|
color: "var(--dsw-alias-label-primary)",
|
|
80
92
|
};
|
|
93
|
+
export const noticeStyle: CSSProperties = {
|
|
94
|
+
...tipStyle,
|
|
95
|
+
animation: "dsh-coding-oauth-fade-in 0.2s ease",
|
|
96
|
+
};
|
|
81
97
|
export const codeStyle: CSSProperties = {
|
|
82
98
|
fontFamily: "ui-monospace, SFMono-Regular, Menlo, Consolas, monospace",
|
|
83
99
|
fontSize: 20,
|
|
@@ -86,6 +102,19 @@ export const codeStyle: CSSProperties = {
|
|
|
86
102
|
color: "var(--dsw-alias-label-primary)",
|
|
87
103
|
};
|
|
88
104
|
export const monoStyle: CSSProperties = { fontFamily: "ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" };
|
|
105
|
+
export const snippetStyle: CSSProperties = {
|
|
106
|
+
...monoStyle,
|
|
107
|
+
display: "block",
|
|
108
|
+
fontSize: 12,
|
|
109
|
+
lineHeight: "18px",
|
|
110
|
+
padding: "10px 12px",
|
|
111
|
+
borderRadius: 8,
|
|
112
|
+
border: "1px solid var(--dsw-alias-border-l2)",
|
|
113
|
+
background: "var(--dsw-alias-bg-layer-1)",
|
|
114
|
+
color: "var(--dsw-alias-label-primary)",
|
|
115
|
+
overflowWrap: "anywhere",
|
|
116
|
+
whiteSpace: "pre-wrap",
|
|
117
|
+
};
|
|
89
118
|
export const linkStyle: CSSProperties = { color: "var(--dsw-alias-brand-primary)", wordBreak: "break-all" };
|
|
90
119
|
export const listStyle: CSSProperties = {
|
|
91
120
|
display: "flex",
|
|
@@ -113,6 +142,7 @@ export const inputStyle: CSSProperties = {
|
|
|
113
142
|
color: "var(--dsw-alias-label-primary)",
|
|
114
143
|
font: "inherit",
|
|
115
144
|
fontSize: 13,
|
|
145
|
+
transition: TRANSITION,
|
|
116
146
|
};
|
|
117
147
|
export const nestedStyle: CSSProperties = {
|
|
118
148
|
display: "flex",
|
|
@@ -124,18 +154,31 @@ export const nestedStyle: CSSProperties = {
|
|
|
124
154
|
background: "var(--dsw-alias-bg-layer-1)",
|
|
125
155
|
};
|
|
126
156
|
export const hintStyle: CSSProperties = { ...bodyStyle, fontSize: 13 };
|
|
127
|
-
export const
|
|
128
|
-
display: "flex",
|
|
157
|
+
export const segmentedNavStyle: CSSProperties = {
|
|
158
|
+
display: "inline-flex",
|
|
129
159
|
flexWrap: "wrap",
|
|
130
|
-
gap:
|
|
160
|
+
gap: 2,
|
|
161
|
+
padding: 3,
|
|
162
|
+
borderRadius: 10,
|
|
163
|
+
border: "1px solid var(--dsw-alias-border-l2)",
|
|
164
|
+
background: "var(--dsw-alias-bg-layer-1)",
|
|
131
165
|
};
|
|
132
|
-
export const
|
|
166
|
+
export const segmentedTabStyle: CSSProperties = {
|
|
133
167
|
...buttonStyle,
|
|
134
|
-
|
|
168
|
+
border: "none",
|
|
169
|
+
borderRadius: 8,
|
|
170
|
+
boxShadow: "none",
|
|
171
|
+
background: "transparent",
|
|
172
|
+
minHeight: 32,
|
|
173
|
+
padding: "5px 12px",
|
|
174
|
+
fontSize: 13,
|
|
135
175
|
};
|
|
136
|
-
export const
|
|
137
|
-
...
|
|
138
|
-
|
|
176
|
+
export const segmentedTabActiveStyle: CSSProperties = {
|
|
177
|
+
...segmentedTabStyle,
|
|
178
|
+
background: "var(--dsw-alias-bg-module-platform)",
|
|
179
|
+
color: "var(--dsw-alias-label-primary)",
|
|
180
|
+
boxShadow: "0 1px 2px rgba(0, 0, 0, 0.12)",
|
|
181
|
+
fontWeight: 600,
|
|
139
182
|
};
|
|
140
183
|
export const panelStyle: CSSProperties = {
|
|
141
184
|
display: "flex",
|
|
@@ -161,7 +204,75 @@ export const skeletonStyle: CSSProperties = {
|
|
|
161
204
|
background:
|
|
162
205
|
"linear-gradient(90deg, var(--dsw-alias-bg-layer-1) 0%, var(--dsw-alias-bg-module-platform) 50%, var(--dsw-alias-bg-layer-1) 100%)",
|
|
163
206
|
backgroundSize: "200% 100%",
|
|
207
|
+
animation: "dsh-coding-oauth-skeleton-pulse 1.4s ease-in-out infinite",
|
|
164
208
|
};
|
|
209
|
+
export const stepRowStyle: CSSProperties = {
|
|
210
|
+
display: "flex",
|
|
211
|
+
alignItems: "flex-start",
|
|
212
|
+
gap: 10,
|
|
213
|
+
fontSize: 14,
|
|
214
|
+
color: "var(--dsw-alias-label-secondary)",
|
|
215
|
+
};
|
|
216
|
+
export const stepActiveStyle: CSSProperties = {
|
|
217
|
+
...stepRowStyle,
|
|
218
|
+
color: "var(--dsw-alias-label-primary)",
|
|
219
|
+
fontWeight: 500,
|
|
220
|
+
};
|
|
221
|
+
export const stepNumberStyle: CSSProperties = {
|
|
222
|
+
display: "inline-flex",
|
|
223
|
+
alignItems: "center",
|
|
224
|
+
justifyContent: "center",
|
|
225
|
+
width: 22,
|
|
226
|
+
height: 22,
|
|
227
|
+
borderRadius: "50%",
|
|
228
|
+
flex: "0 0 auto",
|
|
229
|
+
fontSize: 12,
|
|
230
|
+
fontWeight: 600,
|
|
231
|
+
background: "var(--dsw-alias-bg-layer-1)",
|
|
232
|
+
border: "1px solid var(--dsw-alias-border-l2)",
|
|
233
|
+
color: "var(--dsw-alias-label-secondary)",
|
|
234
|
+
};
|
|
235
|
+
export const stepNumberActiveStyle: CSSProperties = {
|
|
236
|
+
...stepNumberStyle,
|
|
237
|
+
background: "var(--dsw-alias-brand-primary, #315fc7)",
|
|
238
|
+
borderColor: "var(--dsw-alias-brand-primary, #315fc7)",
|
|
239
|
+
color: "#ffffff",
|
|
240
|
+
};
|
|
241
|
+
|
|
242
|
+
export type StatusTone = "success" | "error" | "warning" | "info" | "neutral";
|
|
243
|
+
|
|
244
|
+
export function statusToneColor(tone: StatusTone): string {
|
|
245
|
+
switch (tone) {
|
|
246
|
+
case "success":
|
|
247
|
+
return "var(--dsw-alias-state-success-primary, #22a06b)";
|
|
248
|
+
case "error":
|
|
249
|
+
return "var(--dsw-alias-state-error-primary, #d92d20)";
|
|
250
|
+
case "warning":
|
|
251
|
+
return "var(--dsw-alias-state-warning-primary, #e06c00)";
|
|
252
|
+
case "info":
|
|
253
|
+
return "var(--dsw-alias-brand-primary, #1677ff)";
|
|
254
|
+
default:
|
|
255
|
+
return "var(--dsw-alias-label-dimmed, #9aa0a6)";
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
export function badgeStyle(tone: StatusTone): CSSProperties {
|
|
260
|
+
const color = statusToneColor(tone);
|
|
261
|
+
return {
|
|
262
|
+
display: "inline-flex",
|
|
263
|
+
alignItems: "center",
|
|
264
|
+
gap: 6,
|
|
265
|
+
padding: "3px 10px",
|
|
266
|
+
borderRadius: 999,
|
|
267
|
+
fontSize: 12,
|
|
268
|
+
fontWeight: 600,
|
|
269
|
+
lineHeight: "18px",
|
|
270
|
+
color,
|
|
271
|
+
background: `color-mix(in srgb, ${color} 14%, transparent)`,
|
|
272
|
+
border: `1px solid color-mix(in srgb, ${color} 28%, transparent)`,
|
|
273
|
+
whiteSpace: "nowrap",
|
|
274
|
+
};
|
|
275
|
+
}
|
|
165
276
|
|
|
166
277
|
export function dotStyle(
|
|
167
278
|
status: ProviderStatus["status"] | "loading" | "available" | "unavailable",
|
|
@@ -178,3 +289,18 @@ export function dotStyle(
|
|
|
178
289
|
: "var(--dsw-alias-label-dimmed, #9aa0a6)";
|
|
179
290
|
return { width: 9, height: 9, borderRadius: "50%", flex: "0 0 auto", background: color };
|
|
180
291
|
}
|
|
292
|
+
|
|
293
|
+
export function providerStatusTone(status: ProviderStatus["status"], installed = true): StatusTone {
|
|
294
|
+
if (!installed) return "neutral";
|
|
295
|
+
if (status === "signed-in") return "success";
|
|
296
|
+
if (status === "error") return "error";
|
|
297
|
+
if (status === "signing-in") return "info";
|
|
298
|
+
return "neutral";
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
/** @deprecated Use segmentedTabStyle / segmentedTabActiveStyle */
|
|
302
|
+
export const tabNavStyle: CSSProperties = segmentedNavStyle;
|
|
303
|
+
/** @deprecated Use segmentedTabStyle */
|
|
304
|
+
export const tabButtonStyle: CSSProperties = segmentedTabStyle;
|
|
305
|
+
/** @deprecated Use segmentedTabActiveStyle */
|
|
306
|
+
export const tabButtonActiveStyle: CSSProperties = segmentedTabActiveStyle;
|