dsh-play-store-shots-wan 1.0.0 → 1.0.2

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/icon.svg ADDED
@@ -0,0 +1,7 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 96 96" width="96" height="96">
2
+ <rect width="96" height="96" rx="22" fill="#7E57FF"/>
3
+ <rect x="27" y="18" width="42" height="60" rx="8" fill="#FFFFFF" opacity="0.95"/>
4
+ <rect x="33" y="26" width="30" height="16" rx="4" fill="#7E57FF" opacity="0.35"/>
5
+ <rect x="33" y="46" width="30" height="8" rx="3" fill="#7E57FF" opacity="0.25"/>
6
+ <rect x="33" y="58" width="18" height="6" rx="3" fill="#7E57FF" opacity="0.25"/>
7
+ </svg>
package/lib/client.cjs CHANGED
@@ -17,7 +17,8 @@ if (typeof window !== "undefined") window.__ModuleLoader__.load({
17
17
  key: "apiKey",
18
18
  label: t("apiKey"),
19
19
  hint: t("apiKeyHint"),
20
- type: "password"
20
+ type: "password",
21
+ placeholder: "sk-…"
21
22
  },
22
23
  {
23
24
  key: "baseUrl",
@@ -90,6 +91,7 @@ if (typeof window !== "undefined") window.__ModuleLoader__.load({
90
91
  type: spec.type ?? "text",
91
92
  value: valueOf(spec.key),
92
93
  disabled: !editable,
94
+ placeholder: spec.placeholder,
93
95
  autoComplete: "off",
94
96
  spellCheck: false,
95
97
  onChange: (event) => setDraft((current) => ({
@@ -187,25 +189,61 @@ if (typeof window !== "undefined") window.__ModuleLoader__.load({
187
189
  readOnly: "Configuration is read-only"
188
190
  };
189
191
  // src/client/styles.ts
192
+ /**
193
+ * Card styles. The package cannot import the shell's CSS modules, so it injects
194
+ * one style tag and styles through the theme's `--dsw-alias-*` tokens: no
195
+ * literal colours, so light and dark both stay readable.
196
+ */
190
197
  const CSS = `
191
- .pss-card { display: flex; flex-direction: column; gap: 14px; padding: 16px 18px; border: 1px solid var(--dsh-border, #e5e7eb); border-radius: 12px; background: var(--dsh-surface, #fff); }
198
+ .pss-card {
199
+ display: flex;
200
+ flex-direction: column;
201
+ gap: 14px;
202
+ padding: 16px 18px;
203
+ border: 1px solid var(--dsw-alias-border-l2);
204
+ border-radius: 12px;
205
+ background: var(--dsw-alias-bg-layer-3);
206
+ color: var(--dsw-alias-label-primary);
207
+ }
192
208
  .pss-head { display: flex; flex-direction: column; gap: 4px; }
193
- .pss-title { font-size: 14px; font-weight: 600; margin: 0; }
194
- .pss-sub, .pss-hint, .pss-usage { margin: 0; font-size: 12px; line-height: 1.5; opacity: .65; }
195
- .pss-usage { opacity: .55; }
209
+ .pss-title { margin: 0; font-size: 14px; font-weight: 600; line-height: 1.4; color: var(--dsw-alias-label-primary); }
210
+ .pss-sub, .pss-hint, .pss-usage { margin: 0; font-size: 12px; line-height: 1.5; color: var(--dsw-alias-label-tertiary); }
196
211
  .pss-grid { display: grid; gap: 12px; }
197
212
  .pss-field { display: flex; flex-direction: column; gap: 6px; }
198
- .pss-label { font-size: 12px; font-weight: 500; }
199
- .pss-input { height: 32px; padding: 0 10px; font-size: 13px; color: inherit; background: transparent; border: 1px solid var(--dsh-border, #d4d4d8); border-radius: 8px; outline: none; }
200
- .pss-input:focus { border-color: var(--dsh-accent, #6366f1); }
201
- .pss-input:disabled { opacity: .55; }
213
+ .pss-label { font-size: 12px; font-weight: 500; color: var(--dsw-alias-label-secondary); }
214
+ .pss-input {
215
+ height: 32px;
216
+ padding: 0 10px;
217
+ font: inherit;
218
+ font-size: 13px;
219
+ color: var(--dsw-alias-label-primary);
220
+ background: var(--dsw-alias-bg-layer-1);
221
+ border: 1px solid var(--dsw-alias-border-l2);
222
+ border-radius: 8px;
223
+ outline: none;
224
+ }
225
+ .pss-input::placeholder { color: var(--dsw-alias-label-tertiary); }
226
+ .pss-input:focus { border-color: var(--dsw-alias-brand-primary); }
227
+ .pss-input:disabled { color: var(--dsw-alias-label-tertiary); }
202
228
  .pss-actions { display: flex; align-items: center; gap: 8px; }
203
- .pss-button { height: 30px; padding: 0 12px; font-size: 12px; border-radius: 8px; border: 1px solid var(--dsh-border, #d4d4d8); background: transparent; color: inherit; cursor: pointer; }
204
- .pss-button:hover:not(:disabled) { background: rgba(127,127,127,.12); }
205
- .pss-button:disabled { opacity: .5; cursor: default; }
206
- .pss-primary { background: var(--dsh-accent, #6366f1); border-color: transparent; color: #fff; }
207
- .pss-status { font-size: 12px; opacity: .7; }
208
- .pss-error { color: #dc2626; }
229
+ .pss-button {
230
+ height: 30px;
231
+ padding: 0 12px;
232
+ font: inherit;
233
+ font-size: 12px;
234
+ color: var(--dsw-alias-label-primary);
235
+ background: transparent;
236
+ border: 1px solid var(--dsw-alias-border-l2);
237
+ border-radius: 8px;
238
+ cursor: pointer;
239
+ }
240
+ .pss-button:hover:not(:disabled) { border-color: var(--dsw-alias-label-dimmed); }
241
+ .pss-button:disabled { color: var(--dsw-alias-label-tertiary); cursor: default; }
242
+ .pss-primary { color: var(--dsw-alias-brand-primary-invert); background: var(--dsw-alias-brand-primary); border-color: transparent; }
243
+ .pss-primary:hover:not(:disabled) { border-color: transparent; opacity: .9; }
244
+ .pss-primary:disabled { color: var(--dsw-alias-label-tertiary); background: var(--dsw-alias-bg-layer-2); }
245
+ .pss-status { font-size: 12px; color: var(--dsw-alias-label-tertiary); }
246
+ .pss-error { color: var(--dsw-alias-state-warn-label); }
209
247
  `;
210
248
  let installed = false;
211
249
  function injectStyles() {
@@ -219,7 +257,8 @@ if (typeof window !== "undefined") window.__ModuleLoader__.load({
219
257
  // src/client/index.ts
220
258
  /** Profile entry id; doubles as the settings namespace the card binds to. */
221
259
  const ENTRY_ID = "play-store-shots";
222
- const SLOT = "plugins.item";
260
+ const BUNDLE_SLOT = "plugins.bundle.config";
261
+ const BUNDLE_ID = "dsh-play-store-shots-wan";
223
262
  const inject = [
224
263
  "slots",
225
264
  "locale",
@@ -233,11 +272,9 @@ if (typeof window !== "undefined") window.__ModuleLoader__.load({
233
272
  }), "play-store-shots: dictionary");
234
273
  injectStyles();
235
274
  const form = ctx.configForms.get(ENTRY_ID);
236
- ctx.effect(() => ctx.configForms.whileServed([ENTRY_ID], () => ctx.slots.inject(SLOT, () => ctx.slots.register({
237
- name: SLOT,
238
- id: ENTRY_ID,
239
- order: 60,
240
- label: () => t("title"),
275
+ ctx.effect(() => ctx.configForms.whileServed([ENTRY_ID], () => ctx.slots.inject(BUNDLE_SLOT, () => ctx.slots.register({
276
+ name: BUNDLE_SLOT,
277
+ key: BUNDLE_ID,
241
278
  locale: NS,
242
279
  inject: () => ({
243
280
  form,
package/locale/en.json ADDED
@@ -0,0 +1,6 @@
1
+ {
2
+ "meta": {
3
+ "title": "Google Play screenshots",
4
+ "description": "Type /playstoreshots with an app name and three images to generate four 1080×1920 store screenshots and one 1024×500 feature graphic."
5
+ }
6
+ }
package/locale/zh.json ADDED
@@ -0,0 +1,6 @@
1
+ {
2
+ "meta": {
3
+ "title": "Google Play 商店图",
4
+ "description": "输入 /playstoreshots 应用名称并附上 3 张图,生成 4 张 1080×1920 商店竖图与 1 张 1024×500 横幅。"
5
+ }
6
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dsh-play-store-shots-wan",
3
- "version": "1.0.0",
3
+ "version": "1.0.2",
4
4
  "description": "Google Play store screenshot generator for DeepSeek Harness — /playstoreshots turns an app logo plus two reference sheets into four 1080x1920 screenshots and one 1024x500 feature graphic via Bailian wan2.7-image-pro.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -10,10 +10,14 @@
10
10
  "default": "./lib/index.mjs"
11
11
  },
12
12
  "./client": "./lib/client.cjs",
13
- "./package.json": "./package.json"
13
+ "./package.json": "./package.json",
14
+ "./locale/*.json": "./locale/*.json",
15
+ "./icon": "./icon.svg"
14
16
  },
15
17
  "files": [
16
18
  "lib",
19
+ "locale",
20
+ "icon.svg",
17
21
  "cordis.patch.yml",
18
22
  "README.md",
19
23
  "LICENSE"