dsh-coding-subscription-oauth 0.5.4 → 0.5.6

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.
@@ -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 tabNavStyle: CSSProperties = {
128
- display: "flex",
157
+ export const segmentedNavStyle: CSSProperties = {
158
+ display: "inline-flex",
129
159
  flexWrap: "wrap",
130
- gap: 8,
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 tabButtonStyle: CSSProperties = {
166
+ export const segmentedTabStyle: CSSProperties = {
133
167
  ...buttonStyle,
134
- borderRadius: 10,
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 tabButtonActiveStyle: CSSProperties = {
137
- ...primaryButtonStyle,
138
- borderRadius: 10,
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;