@sparqjs/captcha-runtime 0.2.2 → 0.2.3

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,5 +1,8 @@
1
1
  import type { CaptchaLayout, RuntimeState } from '../types';
2
+ type CaptchaIconName = 'refresh' | 'close';
3
+ export declare function captchaIconPathData(name: CaptchaIconName): readonly string[];
2
4
  export declare function captchaStatusText(state: RuntimeState): string;
3
5
  export declare const inlineLayout: CaptchaLayout;
4
6
  export declare const modalLayout: CaptchaLayout;
7
+ export {};
5
8
  //# sourceMappingURL=basic-layout.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"basic-layout.d.ts","sourceRoot":"","sources":["../../src/host/basic-layout.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAsC,YAAY,EAAE,MAAM,UAAU,CAAA;AAI/F,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,CAI7D;AA4HD,eAAO,MAAM,YAAY,eAA6C,CAAA;AACtE,eAAO,MAAM,WAAW,eAA2C,CAAA"}
1
+ {"version":3,"file":"basic-layout.d.ts","sourceRoot":"","sources":["../../src/host/basic-layout.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAsC,YAAY,EAAE,MAAM,UAAU,CAAA;AAI/F,KAAK,eAAe,GAAG,SAAS,GAAG,OAAO,CAAA;AAO1C,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,eAAe,GAAG,SAAS,MAAM,EAAE,CAE5E;AAkBD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,CAI7D;AA6HD,eAAO,MAAM,YAAY,eAA6C,CAAA;AACtE,eAAO,MAAM,WAAW,eAA2C,CAAA"}
@@ -1,4 +1,26 @@
1
1
  let layoutSequence = 0;
2
+ const captchaIconPaths = {
3
+ refresh: ['M20 11a8 8 0 1 0-2.34 5.66', 'M20 4v7h-7'],
4
+ close: ['M18 6 6 18', 'M6 6 18 18'],
5
+ };
6
+ export function captchaIconPathData(name) {
7
+ return captchaIconPaths[name];
8
+ }
9
+ function createCaptchaIcon(name) {
10
+ const namespace = 'http://www.w3.org/2000/svg';
11
+ const icon = document.createElementNS(namespace, 'svg');
12
+ icon.classList.add('sparq-captcha-modal__icon');
13
+ icon.setAttribute('viewBox', '0 0 24 24');
14
+ icon.setAttribute('aria-hidden', 'true');
15
+ icon.setAttribute('focusable', 'false');
16
+ icon.setAttribute('data-captcha-icon', name);
17
+ for (const data of captchaIconPathData(name)) {
18
+ const path = document.createElementNS(namespace, 'path');
19
+ path.setAttribute('d', data);
20
+ icon.append(path);
21
+ }
22
+ return icon;
23
+ }
2
24
  export function captchaStatusText(state) {
3
25
  if (state === 'verifying')
4
26
  return '正在验证…';
@@ -37,16 +59,16 @@ function createLayout(key, modal) {
37
59
  const refresh = document.createElement('button');
38
60
  refresh.type = 'button';
39
61
  refresh.className = 'sparq-captcha-modal__icon-button';
40
- refresh.textContent = '↻';
41
62
  refresh.setAttribute('aria-label', '刷新验证码');
42
63
  refresh.title = '刷新验证码';
64
+ refresh.append(createCaptchaIcon('refresh'));
43
65
  refresh.addEventListener('click', () => void context.refresh().catch(() => undefined));
44
66
  const close = document.createElement('button');
45
67
  close.type = 'button';
46
68
  close.className = 'sparq-captcha-modal__icon-button';
47
- close.textContent = '×';
48
69
  close.setAttribute('aria-label', '关闭验证码');
49
70
  close.title = '关闭验证码';
71
+ close.append(createCaptchaIcon('close'));
50
72
  close.addEventListener('click', context.cancel);
51
73
  headerActions.append(refresh, close);
52
74
  header.append(title, headerActions);
@@ -59,6 +81,7 @@ function createLayout(key, modal) {
59
81
  const actions = document.createElement('div');
60
82
  const submit = document.createElement('button');
61
83
  submit.type = 'button';
84
+ submit.className = 'sparq-captcha-submit';
62
85
  submit.textContent = '继续';
63
86
  submit.addEventListener('click', () => void context.submit());
64
87
  if (context.submission === 'layout')
@@ -1 +1 @@
1
- {"version":3,"file":"basic-layout.js","sourceRoot":"","sources":["../../src/host/basic-layout.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"basic-layout.js","sourceRoot":"","sources":["../../src/host/basic-layout.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"image-text-renderer.d.ts","sourceRoot":"","sources":["../../src/host/image-text-renderer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAA2D,MAAM,UAAU,CAAA;AAExG,eAAO,MAAM,iBAAiB,EAAE,eAuD/B,CAAA"}
1
+ {"version":3,"file":"image-text-renderer.d.ts","sourceRoot":"","sources":["../../src/host/image-text-renderer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAA2D,MAAM,UAAU,CAAA;AAExG,eAAO,MAAM,iBAAiB,EAAE,eA0D/B,CAAA"}
@@ -40,7 +40,10 @@ export const imageTextRenderer = {
40
40
  imageButton.disabled = true;
41
41
  imageButton.classList.add('is-refreshing');
42
42
  imageButton.setAttribute('aria-busy', 'true');
43
- void callbacks.refresh().catch(() => undefined).finally(() => {
43
+ void callbacks
44
+ .refresh()
45
+ .catch(() => undefined)
46
+ .finally(() => {
44
47
  refreshing = false;
45
48
  imageButton.disabled = false;
46
49
  imageButton.classList.remove('is-refreshing');
@@ -1 +1 @@
1
- {"version":3,"file":"image-text-renderer.js","sourceRoot":"","sources":["../../src/host/image-text-renderer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"image-text-renderer.js","sourceRoot":"","sources":["../../src/host/image-text-renderer.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sparqjs/captcha-runtime",
3
- "version": "0.2.2",
3
+ "version": "0.2.3",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
package/src/style.css CHANGED
@@ -1,5 +1,10 @@
1
1
  .sparq-captcha-runtime {
2
- color: #1f2937;
2
+ /*
3
+ * 宿主通过 --sparq-captcha-color-*、radius、shadow 和 focus 映射自身主题。
4
+ * control-height 与 image-width 控制各 Renderer 共用的尺寸节奏;inline-* 只调整内联容器结构。
5
+ * 每个使用点都保留独立运行时的默认值,使变量能够从 Shadow DOM 宿主继承而不被本层覆盖。
6
+ */
7
+ color: var(--sparq-captcha-color-text, #1f2937);
3
8
  font-family: system-ui, sans-serif;
4
9
  font-size: 14px;
5
10
  line-height: 1.5;
@@ -13,7 +18,7 @@
13
18
  place-items: center;
14
19
  overflow: auto;
15
20
  padding: 16px;
16
- background: rgb(17 24 39 / 46%);
21
+ background: var(--sparq-captcha-color-backdrop, rgb(17 24 39 / 46%));
17
22
  }
18
23
 
19
24
  .sparq-captcha-modal,
@@ -21,13 +26,21 @@
21
26
  width: min(100%, 360px);
22
27
  box-sizing: border-box;
23
28
  padding: 20px;
24
- border: 1px solid #d1d5db;
25
- border-radius: 6px;
26
- background: #ffffff;
29
+ border: 1px solid var(--sparq-captcha-color-border, #d1d5db);
30
+ border-radius: var(--sparq-captcha-radius, 6px);
31
+ background: var(--sparq-captcha-color-surface, #ffffff);
32
+ }
33
+
34
+ .sparq-captcha-inline {
35
+ width: var(--sparq-captcha-inline-width, min(100%, 360px));
36
+ padding: var(--sparq-captcha-inline-padding, 20px);
37
+ border-width: var(--sparq-captcha-inline-border-width, 1px);
38
+ background: var(--sparq-captcha-inline-background, var(--sparq-captcha-color-surface, #ffffff));
39
+ box-shadow: var(--sparq-captcha-inline-shadow, none);
27
40
  }
28
41
 
29
42
  .sparq-captcha-modal {
30
- box-shadow: 0 16px 36px rgb(17 24 39 / 20%);
43
+ box-shadow: var(--sparq-captcha-shadow, 0 16px 36px rgb(17 24 39 / 20%));
31
44
  }
32
45
 
33
46
  .sparq-captcha-modal__header {
@@ -41,13 +54,13 @@
41
54
  .sparq-captcha-modal__actions {
42
55
  display: flex;
43
56
  flex: 0 0 auto;
44
- gap: 8px;
57
+ gap: 4px;
45
58
  }
46
59
 
47
60
  .sparq-captcha-modal h2,
48
61
  .sparq-captcha-inline h2 {
49
62
  margin: 0;
50
- color: #111827;
63
+ color: var(--sparq-captcha-color-title, #111827);
51
64
  font-size: 18px;
52
65
  font-weight: 600;
53
66
  letter-spacing: 0;
@@ -60,18 +73,18 @@
60
73
  }
61
74
 
62
75
  .sparq-captcha-image-text {
63
- grid-template-columns: minmax(0, 1fr) auto;
76
+ grid-template-columns: minmax(0, 1fr) var(--sparq-captcha-image-width, 144px);
64
77
  align-items: center;
65
78
  gap: 10px;
66
79
  }
67
80
 
68
81
  .sparq-captcha-status {
69
82
  margin: 12px 0 0;
70
- color: #b42318;
83
+ color: var(--sparq-captcha-color-danger, #b42318);
71
84
  }
72
85
 
73
86
  .sparq-captcha-modal.is-passed .sparq-captcha-status {
74
- color: #157347;
87
+ color: var(--sparq-captcha-color-success, #157347);
75
88
  }
76
89
 
77
90
  .sparq-captcha-modal.is-verifying .sparq-captcha-challenge {
@@ -85,15 +98,23 @@
85
98
  .sparq-captcha-image-button {
86
99
  position: relative;
87
100
  display: block;
88
- width: 144px;
89
- height: 40px;
101
+ width: var(--sparq-captcha-image-width, 144px);
102
+ height: var(--sparq-captcha-control-height, 44px);
90
103
  box-sizing: border-box;
91
104
  padding: 0;
92
- border: 1px solid #d1d5db;
93
- border-radius: 4px;
105
+ border: 1px solid var(--sparq-captcha-color-border, #d1d5db);
106
+ border-radius: var(--sparq-captcha-radius, 6px);
94
107
  overflow: hidden;
95
- background: #ffffff;
108
+ background: var(--sparq-captcha-color-surface-soft, #f3f4f6);
96
109
  cursor: pointer;
110
+ transition:
111
+ border-color 180ms ease,
112
+ box-shadow 180ms ease,
113
+ opacity 180ms ease;
114
+ }
115
+
116
+ .sparq-captcha-image-button:hover:not(:disabled) {
117
+ border-color: var(--sparq-captcha-color-border-strong, #9ca3af);
97
118
  }
98
119
 
99
120
  .sparq-captcha-image-button.is-refreshing img {
@@ -108,8 +129,8 @@
108
129
  height: 18px;
109
130
  box-sizing: border-box;
110
131
  margin: -9px 0 0 -9px;
111
- border: 2px solid rgb(255 255 255 / 62%);
112
- border-top-color: #2563eb;
132
+ border: 2px solid var(--sparq-captcha-color-surface, #ffffff);
133
+ border-top-color: var(--sparq-captcha-color-primary, #2563eb);
113
134
  border-radius: 50%;
114
135
  animation: sparq-captcha-spin 720ms linear infinite;
115
136
  content: '';
@@ -133,23 +154,47 @@
133
154
  }
134
155
  }
135
156
 
136
- @media (prefers-reduced-motion: reduce) {
137
- .sparq-captcha-image-button.is-refreshing::after,
138
- .sparq-captcha-modal .sparq-captcha-modal__icon-button.is-refreshing {
139
- animation-duration: 0ms;
140
- }
141
- }
142
-
143
- .sparq-captcha-image-text input {
157
+ .sparq-captcha-image-text input,
158
+ .sparq-captcha-question-answer input {
144
159
  width: 100%;
145
160
  min-width: 0;
146
- min-height: 40px;
161
+ min-height: var(--sparq-captcha-control-height, 44px);
147
162
  box-sizing: border-box;
148
163
  padding: 8px 10px;
149
- border: 1px solid #9ca3af;
150
- border-radius: 4px;
151
- color: inherit;
164
+ border: 1px solid var(--sparq-captcha-color-border, #d1d5db);
165
+ border-radius: var(--sparq-captcha-radius, 6px);
166
+ outline: 0;
167
+ color: var(--sparq-captcha-color-text, #1f2937);
168
+ background: var(--sparq-captcha-color-surface, #ffffff);
152
169
  font: inherit;
170
+ transition:
171
+ border-color 180ms ease,
172
+ box-shadow 180ms ease,
173
+ background-color 180ms ease;
174
+ }
175
+
176
+ .sparq-captcha-image-text input:hover:not(:disabled),
177
+ .sparq-captcha-question-answer input:hover:not(:disabled) {
178
+ border-color: var(--sparq-captcha-color-border-strong, #9ca3af);
179
+ }
180
+
181
+ .sparq-captcha-image-text input:focus,
182
+ .sparq-captcha-question-answer input:focus {
183
+ border-color: var(--sparq-captcha-color-primary, #2563eb);
184
+ box-shadow: var(--sparq-captcha-focus, 0 0 0 3px rgb(37 99 235 / 22%));
185
+ }
186
+
187
+ .sparq-captcha-image-text input:disabled,
188
+ .sparq-captcha-question-answer input:disabled {
189
+ color: var(--sparq-captcha-color-muted, #6b7280);
190
+ background: var(--sparq-captcha-color-surface-soft, #f3f4f6);
191
+ cursor: not-allowed;
192
+ }
193
+
194
+ .sparq-captcha-image-text input::placeholder,
195
+ .sparq-captcha-question-answer input::placeholder {
196
+ color: var(--sparq-captcha-color-muted, #6b7280);
197
+ opacity: 1;
153
198
  }
154
199
 
155
200
  .sparq-captcha-modal > div:last-child,
@@ -162,37 +207,74 @@
162
207
 
163
208
  .sparq-captcha-modal button,
164
209
  .sparq-captcha-inline button {
165
- min-height: 36px;
166
- padding: 7px 12px;
167
- border: 1px solid #9ca3af;
168
- border-radius: 4px;
169
- background: #ffffff;
170
- color: #111827;
210
+ min-height: var(--sparq-captcha-control-height, 44px);
211
+ padding: 8px 14px;
212
+ border: 1px solid var(--sparq-captcha-color-border-strong, #9ca3af);
213
+ border-radius: var(--sparq-captcha-radius, 6px);
214
+ background: var(--sparq-captcha-color-surface, #ffffff);
215
+ color: var(--sparq-captcha-color-title, #111827);
171
216
  cursor: pointer;
172
217
  font: inherit;
218
+ transition:
219
+ border-color 180ms ease,
220
+ background-color 180ms ease,
221
+ color 180ms ease,
222
+ box-shadow 180ms ease;
223
+ }
224
+
225
+ .sparq-captcha-modal button:hover:not(:disabled),
226
+ .sparq-captcha-inline button:hover:not(:disabled) {
227
+ border-color: var(--sparq-captcha-color-primary, #2563eb);
228
+ background: var(--sparq-captcha-color-surface-soft, #f3f4f6);
229
+ }
230
+
231
+ .sparq-captcha-modal .sparq-captcha-submit,
232
+ .sparq-captcha-inline .sparq-captcha-submit {
233
+ border-color: var(--sparq-captcha-color-primary, #2563eb);
234
+ background: var(--sparq-captcha-color-primary, #2563eb);
235
+ color: var(--sparq-captcha-color-primary-contrast, #ffffff);
236
+ }
237
+
238
+ .sparq-captcha-modal .sparq-captcha-submit:hover:not(:disabled),
239
+ .sparq-captcha-inline .sparq-captcha-submit:hover:not(:disabled) {
240
+ background: color-mix(
241
+ in srgb,
242
+ var(--sparq-captcha-color-primary, #2563eb) 88%,
243
+ var(--sparq-captcha-color-title, #111827)
244
+ );
173
245
  }
174
246
 
175
247
  .sparq-captcha-modal .sparq-captcha-modal__icon-button {
176
248
  display: inline-grid;
177
- width: 44px;
178
- height: 44px;
179
- min-height: 44px;
249
+ width: var(--sparq-captcha-control-height, 44px);
250
+ height: var(--sparq-captcha-control-height, 44px);
251
+ min-height: var(--sparq-captcha-control-height, 44px);
180
252
  place-items: center;
181
253
  padding: 0;
182
254
  border-color: transparent;
183
255
  background: transparent;
184
- color: #4b5563;
185
- font-size: 24px;
256
+ color: var(--sparq-captcha-color-muted, #6b7280);
186
257
  line-height: 1;
187
258
  }
188
259
 
189
260
  .sparq-captcha-modal .sparq-captcha-modal__icon-button:hover:not(:disabled) {
190
- border-color: #d1d5db;
191
- background: #f3f4f6;
192
- color: #111827;
261
+ border-color: var(--sparq-captcha-color-border, #d1d5db);
262
+ background: var(--sparq-captcha-color-surface-soft, #f3f4f6);
263
+ color: var(--sparq-captcha-color-title, #111827);
193
264
  }
194
265
 
195
- .sparq-captcha-modal .sparq-captcha-modal__icon-button.is-refreshing {
266
+ .sparq-captcha-modal__icon {
267
+ display: block;
268
+ width: 18px;
269
+ height: 18px;
270
+ fill: none;
271
+ stroke: currentColor;
272
+ stroke-linecap: round;
273
+ stroke-linejoin: round;
274
+ stroke-width: 2;
275
+ }
276
+
277
+ .sparq-captcha-modal .sparq-captcha-modal__icon-button.is-refreshing .sparq-captcha-modal__icon {
196
278
  animation: sparq-captcha-spin 720ms linear infinite;
197
279
  }
198
280
 
@@ -211,13 +293,17 @@
211
293
  .sparq-captcha-modal :focus-visible,
212
294
  .sparq-captcha-inline :focus-visible,
213
295
  .sparq-captcha-image-button:focus-visible {
214
- outline: 3px solid #2563eb;
215
- outline-offset: 2px;
296
+ outline: 0;
297
+ border-color: var(--sparq-captcha-color-primary, #2563eb);
298
+ box-shadow: var(--sparq-captcha-focus, 0 0 0 3px rgb(37 99 235 / 22%));
216
299
  }
217
300
 
218
- @media (max-width: 360px) {
219
- .sparq-captcha-image-button {
220
- width: 128px;
221
- height: 40px;
301
+ @media (prefers-reduced-motion: reduce) {
302
+ .sparq-captcha-runtime *,
303
+ .sparq-captcha-runtime *::before,
304
+ .sparq-captcha-runtime *::after {
305
+ transition-duration: 0.01ms !important;
306
+ animation-duration: 0.01ms !important;
307
+ animation-iteration-count: 1 !important;
222
308
  }
223
309
  }