koishi-plugin-rocom 1.0.12 → 1.0.13

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.
Files changed (42) hide show
  1. package/lib/client.d.ts +17 -1
  2. package/lib/client.js +121 -21
  3. package/lib/commands/merchant.js +340 -89
  4. package/lib/commands/query.js +22 -6
  5. package/lib/index.d.ts +4 -0
  6. package/lib/index.js +480 -122
  7. package/lib/render-templates/home/img/rocomuid/a_title.png +0 -0
  8. package/lib/render-templates/home/img/rocomuid/banner_bg.png +0 -0
  9. package/lib/render-templates/home/img/rocomuid/bg.jpg +0 -0
  10. package/lib/render-templates/home/img/rocomuid/img_head.png +0 -0
  11. package/lib/render-templates/home/img/rocomuid/jindu_bar.png +0 -0
  12. package/lib/render-templates/home/img/rocomuid/jindu_tc.png +0 -0
  13. package/lib/render-templates/home/img/rocomuid/level_icon.png +0 -0
  14. package/lib/render-templates/home/img/rocomuid/pet_bg.png +0 -0
  15. package/lib/render-templates/home/img/rocomuid/plant_bg.png +0 -0
  16. package/lib/render-templates/home/img/rocomuid/star_1.png +0 -0
  17. package/lib/render-templates/home/img/rocomuid/star_8.png +0 -0
  18. package/lib/render-templates/home/img/rocomuid/star_9.png +0 -0
  19. package/lib/render-templates/home/img/rocomuid/title_fg.png +0 -0
  20. package/lib/render-templates/home/img/rocomuid/top_bg.png +0 -0
  21. package/lib/render-templates/home/img/rocomuid/touxiang_mask.png +0 -0
  22. package/lib/render-templates/home/index.html +81 -97
  23. package/lib/render-templates/home/style.css +316 -375
  24. package/lib/render-templates/yuanxing-shangren/CHANGELOG.md +138 -0
  25. package/lib/render-templates/yuanxing-shangren/README.md +86 -0
  26. package/lib/render-templates/yuanxing-shangren/img/coin.png +0 -0
  27. package/lib/render-templates/yuanxing-shangren/img//345/272/225/351/203/250/344/277/241/346/201/257/346/241/206.png +0 -0
  28. package/lib/render-templates/yuanxing-shangren/img//346/240/207/351/242/230.png +0 -0
  29. package/lib/render-templates/yuanxing-shangren/img//347/203/255/351/224/200.png +0 -0
  30. package/lib/render-templates/yuanxing-shangren/img//347/274/226/345/217/267/350/203/214/346/231/257/346/241/206.png +0 -0
  31. package/lib/render-templates/yuanxing-shangren/index.html +198 -170
  32. package/lib/render-templates/yuanxing-shangren/index.html.backup +356 -0
  33. package/lib/render-templates/yuanxing-shangren/merchant.html +461 -0
  34. package/lib/render-templates/yuanxing-shangren/style.css +201 -256
  35. package/lib/render-templates/yuanxing-shangren/today.html +461 -0
  36. package/lib/render-templates/yuanxing-shangren/today.style.css +366 -0
  37. package/lib/render.js +11 -4
  38. package/lib/subscription-send.js +4 -5
  39. package/lib/ttf/rocom_skill_origin.ttf +0 -0
  40. package/lib/ttf//351/200/240/345/255/227/345/267/245/346/210/277/345/220/257/351/273/221/344/275/223.ttf +0 -0
  41. package/lib/types.d.ts +4 -0
  42. package/package.json +1 -1
@@ -1,371 +1,316 @@
1
- * {
1
+ /* Modern merchant page styles - aligned with WeGame-plugin design system */
2
+
3
+ * {
2
4
  margin: 0;
3
5
  padding: 0;
4
6
  box-sizing: border-box;
5
7
  }
6
8
 
7
9
  :root {
8
- --font-family: "Microsoft YaHei", "PingFang SC", sans-serif;
9
- --text-1: #3a2f24;
10
- --text-2: #5c4a37;
11
- --text-3: #75624d;
12
- --gold-1: #b5791f;
13
- --green-1: #2f9750;
14
- --orange-1: #b1772c;
15
- --base-rgb: 232, 225, 209;
16
- --panel-bg: rgb(var(--base-rgb));
17
- --line: rgba(118, 97, 74, 0.3);
10
+ /* Warm earthy palette */
11
+ --bg-cream: #F7F4EF;
12
+ --surface-warm: #FBF9F5;
13
+ --surface-white: #FFFFFF;
14
+ --border-hairline: #E7E1D7;
15
+ --ink: #1F2421;
16
+ --text-muted: #5C635D;
17
+ --terracotta: #C4612F;
18
+ --terracotta-hover: #A94E22;
19
+ --terracotta-tint: #F2E3D6;
20
+ --charcoal: #1F2421;
21
+
22
+ /* Typography */
23
+ --font-sans: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Noto Sans SC', 'PingFang SC', 'Microsoft YaHei', sans-serif;
24
+ --font-serif: 'Fraunces', 'DM Serif Display', 'Playfair Display', Georgia, serif;
18
25
  }
19
26
 
20
27
  html,
21
28
  body {
22
29
  width: 100%;
23
30
  height: auto;
24
- font-family: var(--font-family);
25
- color: var(--text-1);
26
- background: rgb(var(--base-rgb));
31
+ font-family: var(--font-sans);
32
+ color: var(--ink);
33
+ background: var(--bg-cream);
34
+ -webkit-font-smoothing: antialiased;
35
+ -moz-osx-font-smoothing: grayscale;
27
36
  }
28
37
 
29
38
  .merchant-page {
30
39
  position: relative;
31
- width: 100%;
32
- min-height: 0;
33
- height: auto;
34
- overflow: visible;
35
- background: rgb(var(--base-rgb));
40
+ width: min(1200px, 100%);
41
+ margin: 0 auto;
42
+ background: var(--bg-cream);
43
+ padding: 32px;
36
44
  }
37
45
 
38
- .background {
39
- position: absolute;
40
- inset: 0;
41
- background-size: cover;
42
- background-position: center top;
43
- background-repeat: no-repeat;
44
- opacity: 1;
45
- z-index: 0;
46
+ /* Hero section */
47
+ .hero {
48
+ position: relative;
49
+ padding: 48px 40px;
50
+ border-radius: 24px;
51
+ background: var(--surface-white);
52
+ border: 1px solid var(--border-hairline);
53
+ box-shadow: 0 2px 8px rgba(31, 36, 33, 0.04);
54
+ margin-bottom: 24px;
46
55
  }
47
56
 
48
- .content-container {
49
- position: relative;
50
- z-index: 1;
51
- width: 100%;
52
- margin: 0 auto;
53
- padding: 0 0 8px;
57
+ .hero-eyebrow {
58
+ display: inline-block;
59
+ padding: 6px 16px;
60
+ border-radius: 999px;
61
+ background: var(--terracotta-tint);
62
+ color: var(--terracotta);
63
+ font-size: 13px;
64
+ font-weight: 600;
65
+ letter-spacing: 0.02em;
66
+ margin-bottom: 16px;
54
67
  }
55
68
 
56
- .header {
57
- display: flex;
58
- align-items: stretch;
59
- justify-content: space-between;
60
- margin-bottom: 18px;
61
- padding: 18px 24px;
62
- border-radius: 0;
63
- border-top: 1px solid var(--line);
64
- border-bottom: 1px solid var(--line);
65
- background: var(--panel-bg);
69
+ .hero-title {
70
+ font-family: var(--font-serif);
71
+ font-size: 56px;
72
+ font-weight: 400;
73
+ line-height: 1.1;
74
+ letter-spacing: -0.02em;
75
+ margin-bottom: 12px;
76
+ color: var(--ink);
66
77
  }
67
78
 
68
- .title-section {
69
- display: flex;
70
- flex-direction: column;
71
- justify-content: center;
72
- gap: 8px;
79
+ .hero-title em {
80
+ font-style: italic;
81
+ color: var(--terracotta);
82
+ }
83
+
84
+ .hero-subtitle {
85
+ font-size: 18px;
86
+ font-weight: 300;
87
+ line-height: 1.6;
88
+ color: var(--text-muted);
89
+ max-width: 600px;
73
90
  }
74
91
 
75
- .title-main {
92
+ .hero-meta {
76
93
  display: flex;
77
94
  align-items: center;
78
- gap: 14px;
95
+ gap: 16px;
96
+ margin-top: 24px;
97
+ padding-top: 24px;
98
+ border-top: 1px solid var(--border-hairline);
79
99
  }
80
100
 
81
- .title-icon-img {
82
- width: 68px;
83
- height: 68px;
84
- object-fit: contain;
101
+ .meta-chip {
102
+ display: inline-flex;
103
+ align-items: center;
104
+ gap: 8px;
105
+ padding: 10px 18px;
106
+ border-radius: 999px;
107
+ background: var(--surface-warm);
108
+ border: 1px solid var(--border-hairline);
109
+ font-size: 15px;
110
+ font-weight: 500;
85
111
  }
86
112
 
87
- .title-text {
88
- font-size: 40px;
89
- font-weight: 800;
90
- letter-spacing: 3px;
91
- color: var(--text-1);
113
+ .meta-chip-label {
114
+ color: var(--text-muted);
115
+ font-weight: 400;
92
116
  }
93
117
 
94
- .subtitle {
95
- margin-top: 0;
96
- color: var(--text-2);
97
- font-size: 18px;
118
+ .meta-chip-value {
119
+ color: var(--ink);
120
+ font-weight: 600;
98
121
  }
99
122
 
100
- .header-right {
123
+ .meta-chip.accent .meta-chip-value {
124
+ color: var(--terracotta);
125
+ }
126
+
127
+ /* Products section */
128
+ .products-section {
101
129
  display: flex;
102
130
  flex-direction: column;
103
- align-items: flex-end;
104
- justify-content: center;
105
- gap: 10px;
106
- min-width: 320px;
107
- padding-left: 24px;
108
- border-left: 1px solid rgba(118, 97, 74, 0.3);
131
+ gap: 32px;
109
132
  }
110
133
 
111
- .header-balance {
112
- display: inline-flex;
113
- align-items: center;
114
- gap: 10px;
115
- border-radius: 999px;
116
- padding: 8px 16px;
117
- border: 1px solid rgba(191, 141, 67, 0.5);
118
- background: linear-gradient(135deg, rgba(245, 227, 184, 0.95), rgba(233, 215, 173, 0.95));
134
+ .category-group {
135
+ display: flex;
136
+ flex-direction: column;
137
+ gap: 16px;
119
138
  }
120
139
 
121
- .currency-icon,
122
- .price-icon {
123
- width: 22px;
124
- height: 22px;
125
- object-fit: contain;
126
- image-rendering: high-quality;
140
+ .category-header {
141
+ display: flex;
142
+ align-items: center;
143
+ gap: 12px;
127
144
  }
128
145
 
129
- .amount-value {
130
- color: var(--gold-1);
131
- font-size: 30px;
132
- font-weight: 800;
133
- letter-spacing: 0.5px;
146
+ .category-title {
147
+ font-family: var(--font-serif);
148
+ font-size: 28px;
149
+ font-weight: 600;
150
+ letter-spacing: -0.01em;
151
+ color: var(--ink);
134
152
  }
135
153
 
136
- .round-info {
137
- display: flex;
138
- align-items: center;
139
- gap: 10px;
140
- padding-top: 8px;
141
- border-top: 1px dashed rgba(118, 97, 74, 0.35);
154
+ .category-badge {
155
+ padding: 4px 12px;
156
+ border-radius: 999px;
157
+ font-size: 13px;
158
+ font-weight: 600;
142
159
  }
143
160
 
144
- .round-label {
145
- font-size: 20px;
146
- font-weight: 800;
161
+ .category-badge.normal {
162
+ background: rgba(46, 125, 50, 0.12);
163
+ color: #2E7D32;
147
164
  }
148
165
 
149
- .round-count {
150
- margin-left: 0;
151
- font-size: 17px;
152
- color: var(--text-3);
166
+ .category-badge.round {
167
+ background: rgba(25, 118, 210, 0.12);
168
+ color: #1976D2;
153
169
  }
154
170
 
155
- .countdown {
156
- color: #bf5f3f;
157
- font-weight: 700;
158
- font-size: 18px;
159
- letter-spacing: 0.5px;
160
- margin-left: 10px;
171
+ .category-badge.weekend {
172
+ background: rgba(211, 47, 47, 0.12);
173
+ color: #D32F2F;
161
174
  }
162
175
 
163
176
  .products-grid {
164
177
  display: grid;
165
- grid-template-columns: 1fr;
178
+ grid-template-columns: repeat(auto-fill, minmax(340px, 1fr));
166
179
  gap: 16px;
167
- padding: 0 12px;
168
180
  }
169
181
 
182
+ /* Product card */
170
183
  .product-card {
171
- display: grid;
172
- grid-template-columns: minmax(280px, 1fr) minmax(260px, auto);
173
- align-items: center;
174
- gap: 20px;
175
- border-radius: 18px;
176
- border: none;
177
- background: linear-gradient(90deg,
178
- rgba(214, 206, 190, 1) 0%,
179
- rgba(214, 206, 190, 0.96) 56%,
180
- rgba(214, 206, 190, 0.72) 80%,
181
- rgba(214, 206, 190, 0) 100%);
182
- min-height: 154px;
183
- padding: 22px;
184
- transition: transform 0.18s ease;
184
+ position: relative;
185
+ display: flex;
186
+ flex-direction: column;
187
+ padding: 24px;
188
+ border-radius: 16px;
189
+ background: var(--surface-white);
190
+ border: 1px solid var(--border-hairline);
191
+ transition: transform 0.2s ease, box-shadow 0.2s ease;
185
192
  }
186
193
 
187
194
  .product-card:hover {
188
195
  transform: translateY(-2px);
196
+ box-shadow: 0 4px 16px rgba(31, 36, 33, 0.08);
189
197
  }
190
198
 
191
- .product-main-left {
192
- display: flex;
193
- align-items: center;
194
- gap: 16px;
195
- min-width: 0;
196
- }
197
-
198
- .product-image-container {
199
- width: 156px;
200
- height: 156px;
201
- flex-shrink: 0;
202
- border-radius: 0;
203
- border: none;
204
- background: transparent;
199
+ .product-image-wrap {
200
+ width: 100%;
201
+ aspect-ratio: 1;
202
+ border-radius: 12px;
203
+ background: var(--surface-warm);
205
204
  display: flex;
206
205
  align-items: center;
207
206
  justify-content: center;
208
- padding: 0;
207
+ margin-bottom: 16px;
208
+ overflow: hidden;
209
209
  }
210
210
 
211
211
  .product-image {
212
- width: 100%;
213
- height: 100%;
212
+ width: 80%;
213
+ height: 80%;
214
214
  object-fit: contain;
215
- image-rendering: high-quality;
216
215
  }
217
216
 
218
217
  .product-name {
219
- min-width: 0;
220
- color: #3a2f24;
221
- font-size: 32px;
222
- font-weight: 700;
223
- line-height: 1.24;
224
- word-break: break-word;
225
- }
226
-
227
- .product-main-right {
228
- display: flex;
229
- flex-direction: column;
230
- align-items: flex-end;
231
- justify-content: center;
232
- gap: 12px;
233
- }
234
-
235
- .product-meta-row {
236
- display: flex;
237
- align-items: center;
238
- gap: 10px;
218
+ font-family: var(--font-serif);
219
+ font-size: 22px;
220
+ font-weight: 600;
221
+ line-height: 1.3;
222
+ color: var(--ink);
223
+ margin-bottom: 8px;
239
224
  }
240
225
 
241
- .product-stat {
226
+ .product-time {
242
227
  display: inline-flex;
243
228
  align-items: center;
244
- gap: 8px;
245
- font-size: 20px;
246
- padding: 8px 14px;
229
+ gap: 6px;
230
+ padding: 6px 12px;
247
231
  border-radius: 999px;
248
- border: 1px solid transparent;
249
- white-space: nowrap;
250
- }
251
-
252
- .product-stat .label {
253
- color: #6d5843;
254
- }
255
-
256
- .product-stat .value {
257
- font-weight: 700;
258
- }
259
-
260
- .product-stock {
261
- border-color: rgba(90, 160, 95, 0.35);
262
- background: rgba(203, 232, 200, 0.85);
232
+ background: var(--terracotta-tint);
233
+ color: var(--terracotta);
234
+ font-size: 13px;
235
+ font-weight: 500;
236
+ margin-top: 8px;
263
237
  }
264
238
 
265
- .product-stock .value {
266
- color: var(--green-1);
239
+ .product-time::before {
240
+ content: '⏱';
241
+ font-size: 14px;
267
242
  }
268
243
 
269
- .product-limit {
270
- border-color: rgba(219, 160, 82, 0.35);
271
- background: rgba(246, 225, 192, 0.92);
272
- }
273
-
274
- .product-limit .value {
275
- color: var(--orange-1);
276
- }
277
-
278
- .product-price {
279
- border-color: rgba(191, 141, 67, 0.45);
280
- background: rgba(247, 230, 197, 0.95);
244
+ /* Empty state */
245
+ .empty-state {
246
+ text-align: center;
247
+ padding: 64px 32px;
248
+ border-radius: 16px;
249
+ border: 1px dashed var(--border-hairline);
250
+ background: var(--surface-warm);
281
251
  }
282
252
 
283
- .product-price .value {
284
- color: var(--gold-1);
285
- font-size: 32px;
286
- line-height: 1;
253
+ .empty-state-icon {
254
+ font-size: 48px;
255
+ margin-bottom: 16px;
256
+ opacity: 0.4;
287
257
  }
288
258
 
289
- .product-empty {
290
- grid-column: 1 / -1;
291
- text-align: center;
292
- padding: 30px 18px;
293
- border-radius: 18px;
294
- border: 1px dashed rgba(120, 102, 81, 0.35);
295
- color: #5c4a37;
296
- font-size: 22px;
297
- background: rgb(var(--base-rgb));
259
+ .empty-state-text {
260
+ font-size: 18px;
261
+ font-weight: 400;
262
+ color: var(--text-muted);
298
263
  }
299
264
 
300
- @media (max-width: 760px) {
301
- .content-container {
302
- padding: 0 0 16px;
303
- }
304
-
305
- .header {
306
- flex-direction: column;
307
- align-items: flex-start;
308
- gap: 12px;
265
+ /* Responsive */
266
+ @media (max-width: 768px) {
267
+ .merchant-page {
309
268
  padding: 16px;
310
- border-radius: 0;
311
- }
312
-
313
- .header-right {
314
- width: 100%;
315
- min-width: 0;
316
- align-items: flex-start;
317
- padding-left: 0;
318
- padding-top: 12px;
319
- border-left: none;
320
- border-top: 1px solid rgba(118, 97, 74, 0.3);
321
269
  }
322
270
 
323
- .title-icon-img {
324
- width: 54px;
325
- height: 54px;
271
+ .hero {
272
+ padding: 32px 24px;
326
273
  }
327
274
 
328
- .title-text {
329
- font-size: 30px;
330
- letter-spacing: 1px;
275
+ .hero-title {
276
+ font-size: 36px;
331
277
  }
332
278
 
333
- .amount-value {
334
- font-size: 24px;
279
+ .hero-meta {
280
+ flex-wrap: wrap;
335
281
  }
336
282
 
337
283
  .products-grid {
338
- padding: 0 8px;
284
+ grid-template-columns: 1fr;
339
285
  }
340
286
 
341
287
  .product-card {
342
- grid-template-columns: 1fr;
343
- min-height: 0;
344
- padding: 16px;
288
+ padding: 20px;
289
+ }
290
+
291
+ .product-name {
292
+ font-size: 20px;
345
293
  }
294
+ }
346
295
 
347
- .product-main-right {
348
- align-items: flex-start;
349
- gap: 10px;
296
+ @media (max-width: 480px) {
297
+ .merchant-page {
298
+ padding: 12px;
350
299
  }
351
300
 
352
- .product-name {
353
- font-size: 24px;
301
+ .hero {
302
+ padding: 24px 20px;
354
303
  }
355
304
 
356
- .product-image-container {
357
- width: 136px;
358
- height: 136px;
305
+ .hero-title {
306
+ font-size: 32px;
359
307
  }
360
308
 
361
- .product-stat {
362
- font-size: 17px;
363
- padding: 6px 10px;
309
+ .hero-subtitle {
310
+ font-size: 16px;
364
311
  }
365
312
 
366
- .product-price .value {
367
- font-size: 26px;
313
+ .category-title {
314
+ font-size: 24px;
368
315
  }
369
- }
370
-
371
-
316
+ }