@kanyun-ai-infra/band-plugin-react 0.0.0-stage → 0.1.1

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.
@@ -0,0 +1,8 @@
1
+ // src/stopped-turn.ts
2
+ function stoppedTurnText(number, who) {
3
+ return `${who ? `${who} ` : ""}\u505C\u4E0B\u4E86\u56DE\u5408 #${number}`;
4
+ }
5
+
6
+ export {
7
+ stoppedTurnText
8
+ };
@@ -0,0 +1,26 @@
1
+ // src/errors.ts
2
+ function errorText(e) {
3
+ return e instanceof Error ? e.message : String(e);
4
+ }
5
+ var NETWORK_LOST_CODE = "NETWORK";
6
+ var NETWORK_LOST = "\u7F51\u7EDC\u65AD\u4E86";
7
+ function isNetworkLost(e) {
8
+ return typeof e === "object" && e !== null && e.code === NETWORK_LOST_CODE;
9
+ }
10
+ function failedBecause(e, next) {
11
+ return isNetworkLost(e) ? `${NETWORK_LOST}\uFF0C${next}` : errorText(e);
12
+ }
13
+ var FORBIDDEN_CODE = "FORBIDDEN";
14
+ function isForbidden(e) {
15
+ return typeof e === "object" && e !== null && e.code === FORBIDDEN_CODE;
16
+ }
17
+
18
+ export {
19
+ errorText,
20
+ NETWORK_LOST_CODE,
21
+ NETWORK_LOST,
22
+ isNetworkLost,
23
+ failedBecause,
24
+ FORBIDDEN_CODE,
25
+ isForbidden
26
+ };
@@ -0,0 +1,56 @@
1
+ // src/first-delivery.ts
2
+ var FIRST_DELIVERY_LABEL = "\u624B\u52A8\u4EA4\u7B2C\u4E00\u7248";
3
+ var FIRST_DELIVERY_SUBMIT = "\u63D0\u4EA4\u7B2C\u4E00\u7248";
4
+ function firstDeliveryNotStoreNote(typeLabel) {
5
+ return `\u300C${typeLabel}\u300D\u5B58\u653E\u5728\u76EE\u6807\u4ED3\u5E93\u91CC\uFF0C\u4E0D\u80FD\u5728\u8FD9\u91CC\u624B\u52A8\u4EA4\uFF0C\u8BF7\u91CD\u8BD5`;
6
+ }
7
+ function firstDeliveryEntry(failure, can) {
8
+ const fd = failure?.firstDelivery;
9
+ if (!fd) return { draw: false };
10
+ if (fd.state === "not_store")
11
+ return { draw: false, note: firstDeliveryNotStoreNote(fd.nonStoreType ?? "") };
12
+ if (!can.submitChange) return { draw: false };
13
+ if (fd.state === "blocked")
14
+ return { draw: true, disabled: true, title: fd.blocked ?? "\u4E0A\u6E38\u8FD8\u6CA1\u6279\u51C6\uFF0C\u4E0D\u80FD\u624B\u52A8\u4EA4\u7B2C\u4E00\u7248" };
15
+ return { draw: true, disabled: false, title: "\u81EA\u5DF1\u4EA4\u4E00\u4EFD\u8FD9\u4E2A\u9636\u6BB5\u7684\u4EA7\u7269\uFF0C\u4E0D\u518D\u7B49\u5B83\u8DD1\u5B8C" };
16
+ }
17
+ function firstDeliverySlots(fd) {
18
+ return fd.expected.flatMap(
19
+ (x) => x.keys && x.keys.length > 0 ? x.keys.map((key) => ({
20
+ id: `${x.type}\0${key}`,
21
+ type: x.type,
22
+ key,
23
+ label: `${x.label} \xB7 ${key}`
24
+ })) : [{ id: x.type, type: x.type, label: x.label }]
25
+ );
26
+ }
27
+ function firstDeliveryMissing(slots, filled) {
28
+ return slots.filter((s) => !filled.has(s.id));
29
+ }
30
+ function firstDeliveryMissingText(missing) {
31
+ return missing.length === 0 ? "" : `\u8FD8\u7F3A\uFF1A${missing.map((m) => m.label).join("\u3001")}`;
32
+ }
33
+ var FIRST_DELIVERY_PICK = "\u9009\u62E9\u6587\u4EF6";
34
+ var FIRST_DELIVERY_REMOVE = "\u79FB\u9664";
35
+ var FIRST_DELIVERY_REPLACED = "\u5DF2\u66FF\u6362";
36
+ var firstDeliveryFilesText = (n) => `${n} \u4E2A\u6587\u4EF6`;
37
+ function fileSizeText(bytes) {
38
+ if (bytes < 1024) return `${bytes} B`;
39
+ if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`;
40
+ return `${(bytes / 1024 / 1024).toFixed(1)} MB`;
41
+ }
42
+
43
+ export {
44
+ FIRST_DELIVERY_LABEL,
45
+ FIRST_DELIVERY_SUBMIT,
46
+ firstDeliveryNotStoreNote,
47
+ firstDeliveryEntry,
48
+ firstDeliverySlots,
49
+ firstDeliveryMissing,
50
+ firstDeliveryMissingText,
51
+ FIRST_DELIVERY_PICK,
52
+ FIRST_DELIVERY_REMOVE,
53
+ FIRST_DELIVERY_REPLACED,
54
+ firstDeliveryFilesText,
55
+ fileSizeText
56
+ };
@@ -0,0 +1,354 @@
1
+ // src/ui.tsx
2
+ import {
3
+ WORKSHOP_GENRES,
4
+ agentDisplayName
5
+ } from "@kanyun-ai-infra/band-contracts";
6
+
7
+ // ../tokens/assets/genres/classical-compact.svg
8
+ var classical_compact_default = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" role="img" aria-label="\u53E4\u5178 Classical"><style>.i,.a{fill:none;stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round}.i{stroke:%231c1e23}.a{stroke:%233462e6}.af{fill:%233462e6}.f{fill:%231c1e23}.bg{fill:%23fff}.t{fill:none;stroke:%231c1e23;stroke-opacity:.32;stroke-width:1}.l{fill:%231c1e23}@media (prefers-color-scheme:dark){.i,.t{stroke:%23e9ebef}.f,.l{fill:%23e9ebef}.a{stroke:%2382a4ff}.af{fill:%2382a4ff}.bg{fill:%2316191f}}</style><g transform="rotate(-28 24 25) translate(24 25) scale(1.12) translate(-24 -25)"><path class="i" d="M24 19.5C18.6 19.5 17.4 22.6 18.8 25.6C19.9 27.9 19.6 29 17.8 30.8C14.6 34 15.9 41.5 24 41.5C32.1 41.5 33.4 34 30.2 30.8C28.4 29 28.1 27.9 29.2 25.6C30.6 22.6 29.4 19.5 24 19.5Z"/><path class="i" d="M24 19.5V8.2"/><circle class="i" cx="24" cy="6.4" r="1.8"/><path class="i" d="M21.4 35.6H26.6"/><path class="i" d="M21.6 28.6v4.2M26.4 28.6v4.2"/></g><path class="a" d="M8.5 37.5L39.5 13.5"/><path class="a" d="M8.2 35.2l2.3 3.1"/></svg>%0A';
9
+
10
+ // ../tokens/assets/genres/classical.svg
11
+ var classical_default = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" role="img" aria-label="\u53E4\u5178 Classical"><style>.i,.a{fill:none;stroke-width:2.26;stroke-linecap:round;stroke-linejoin:round}.i{stroke:%231c1e23}.a{stroke:%233462e6}.af{fill:%233462e6}.f{fill:%231c1e23}.bg{fill:%23fff}.t{fill:none;stroke:%231c1e23;stroke-opacity:.32;stroke-width:1.29}.l{fill:%231c1e23}@media (prefers-color-scheme:dark){.i,.t{stroke:%23e9ebef}.f,.l{fill:%23e9ebef}.a{stroke:%2382a4ff}.af{fill:%2382a4ff}.bg{fill:%2316191f}}</style><g transform="translate(6.24 1.46) scale(0.774)"><g transform="rotate(-28 24 25) translate(24 25) scale(1.12) translate(-24 -25)"><path class="i" d="M24 19.5C18.6 19.5 17.4 22.6 18.8 25.6C19.9 27.9 19.6 29 17.8 30.8C14.6 34 15.9 41.5 24 41.5C32.1 41.5 33.4 34 30.2 30.8C28.4 29 28.1 27.9 29.2 25.6C30.6 22.6 29.4 19.5 24 19.5Z"/><path class="i" d="M24 19.5V8.2"/><circle class="i" cx="24" cy="6.4" r="1.8"/><path class="i" d="M21.4 35.6H26.6"/><path class="i" d="M21.6 28.6v4.2M26.4 28.6v4.2"/></g><path class="a" d="M8.5 37.5L39.5 13.5"/><path class="a" d="M8.2 35.2l2.3 3.1"/></g><path class="l" d="M5.63 44.57C6.81 44.57 7.6 43.79 7.74 42.84H6.84C6.72 43.43 6.24 43.77 5.64 43.77C4.83 43.77 4.24 43.15 4.24 42.01C4.24 40.87 4.83 40.24 5.65 40.24C6.24 40.24 6.72 40.58 6.84 41.17H7.74C7.58 40.07 6.73 39.44 5.63 39.44C4.33 39.44 3.35 40.39 3.35 42.01C3.35 43.61 4.32 44.57 5.63 44.57ZM8.97 44.5H12.07V43.75H9.87V39.5H8.97ZM12.93 44.5H13.91L14.32 43.26H16.19L16.61 44.5H17.6L15.81 39.5H14.68ZM14.56 42.54 14.77 41.91C14.91 41.46 15.06 40.9 15.24 40.2C15.42 40.89 15.58 41.45 15.73 41.91L15.94 42.54ZM20.43 44.58C21.62 44.58 22.32 43.98 22.32 43.1C22.32 42.23 21.59 41.84 20.85 41.66L20.38 41.54C19.98 41.44 19.53 41.27 19.53 40.86C19.53 40.48 19.88 40.2 20.44 40.2C20.98 40.2 21.34 40.45 21.38 40.87H22.25C22.23 40.04 21.52 39.44 20.45 39.44C19.41 39.44 18.63 40.03 18.63 40.91C18.63 41.61 19.12 42.04 19.96 42.25L20.52 42.4C21.06 42.54 21.42 42.7 21.42 43.09C21.42 43.52 21.01 43.81 20.42 43.81C19.86 43.81 19.41 43.56 19.37 43.03H18.49C18.53 44.02 19.27 44.58 20.43 44.58ZM25.31 44.58C26.5 44.58 27.2 43.98 27.2 43.1C27.2 42.23 26.47 41.84 25.73 41.66L25.26 41.54C24.86 41.44 24.41 41.27 24.41 40.86C24.41 40.48 24.75 40.2 25.32 40.2C25.86 40.2 26.22 40.45 26.26 40.87H27.13C27.11 40.04 26.4 39.44 25.33 39.44C24.28 39.44 23.51 40.03 23.51 40.91C23.51 41.61 24 42.04 24.83 42.25L25.4 42.4C25.94 42.54 26.3 42.7 26.3 43.09C26.3 43.52 25.89 43.81 25.3 43.81C24.74 43.81 24.29 43.56 24.25 43.03H23.37C23.41 44.02 24.14 44.58 25.31 44.58ZM29.33 39.5H28.43V44.5H29.33ZM32.87 44.57C34.05 44.57 34.84 43.79 34.98 42.84H34.08C33.96 43.43 33.48 43.77 32.88 43.77C32.07 43.77 31.48 43.15 31.48 42.01C31.48 40.87 32.07 40.24 32.88 40.24C33.48 40.24 33.96 40.58 34.08 41.17H34.98C34.82 40.07 33.97 39.44 32.87 39.44C31.57 39.44 30.59 40.39 30.59 42.01C30.59 43.61 31.56 44.57 32.87 44.57ZM35.88 44.5H36.86L37.27 43.26H39.13L39.56 44.5H40.54L38.76 39.5H37.62ZM37.5 42.54 37.72 41.91C37.85 41.46 38 40.9 38.18 40.2C38.37 40.89 38.52 41.45 38.67 41.91L38.89 42.54ZM41.62 44.5H44.72V43.75H42.52V39.5H41.62Z"/></svg>%0A';
12
+
13
+ // ../tokens/assets/genres/electronic-compact.svg
14
+ var electronic_compact_default = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" role="img" aria-label="\u7535\u5B50 Electronic"><style>.i,.a{fill:none;stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round}.i{stroke:%231c1e23}.a{stroke:%233462e6}.af{fill:%233462e6}.f{fill:%231c1e23}.bg{fill:%23fff}.t{fill:none;stroke:%231c1e23;stroke-opacity:.32;stroke-width:1}.l{fill:%231c1e23}@media (prefers-color-scheme:dark){.i,.t{stroke:%23e9ebef}.f,.l{fill:%23e9ebef}.a{stroke:%2382a4ff}.af{fill:%2382a4ff}.bg{fill:%2316191f}}</style><rect class="i" x="6" y="26" width="36" height="15" rx="2.5"/><path class="i" d="M12 26v15M18 26v15M24 26v15M30 26v15M36 26v15"/><path class="f" d="M10.4 26h3.2v8h-3.2zM16.4 26h3.2v8h-3.2zM28.4 26h3.2v8h-3.2zM34.4 26h3.2v8h-3.2z"/><path class="a" d="M6 15c3 0 3-7 6-7s3 14 6 14 3-14 6-14 3 14 6 14 3-7 6-7 3 7 6 7"/></svg>%0A';
15
+
16
+ // ../tokens/assets/genres/electronic.svg
17
+ var electronic_default = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" role="img" aria-label="\u7535\u5B50 Electronic"><style>.i,.a{fill:none;stroke-width:2.25;stroke-linecap:round;stroke-linejoin:round}.i{stroke:%231c1e23}.a{stroke:%233462e6}.af{fill:%233462e6}.f{fill:%231c1e23}.bg{fill:%23fff}.t{fill:none;stroke:%231c1e23;stroke-opacity:.32;stroke-width:1.29}.l{fill:%231c1e23}@media (prefers-color-scheme:dark){.i,.t{stroke:%23e9ebef}.f,.l{fill:%23e9ebef}.a{stroke:%2382a4ff}.af{fill:%2382a4ff}.bg{fill:%2316191f}}</style><g transform="translate(5.33 -2.72) scale(0.778)"><rect class="i" x="6" y="26" width="36" height="15" rx="2.5"/><path class="i" d="M12 26v15M18 26v15M24 26v15M30 26v15M36 26v15"/><path class="f" d="M10.4 26h3.2v8h-3.2zM16.4 26h3.2v8h-3.2zM28.4 26h3.2v8h-3.2zM34.4 26h3.2v8h-3.2z"/><path class="a" d="M6 15c3 0 3-7 6-7s3 14 6 14 3-14 6-14 3 14 6 14 3-7 6-7 3 7 6 7"/></g><path class="l" d="M3.45 44.5H6.33V43.83H4.24V42.6H6.17V41.94H4.24V40.74H6.32V40.08H3.45ZM7.49 44.5H10.24V43.83H8.28V40.08H7.49ZM11.29 44.5H14.18V43.83H12.09V42.6H14.01V41.94H12.09V40.74H14.17V40.08H11.29ZM17.23 44.56C18.27 44.56 18.97 43.87 19.09 43.03H18.29C18.19 43.55 17.76 43.85 17.24 43.85C16.52 43.85 16 43.31 16 42.29C16 41.29 16.51 40.73 17.24 40.73C17.77 40.73 18.19 41.03 18.29 41.55H19.09C18.95 40.58 18.2 40.02 17.23 40.02C16.07 40.02 15.2 40.86 15.2 42.29C15.2 43.72 16.06 44.56 17.23 44.56ZM19.99 40.74H21.35V44.5H22.15V40.74H23.51V40.08H19.99ZM24.57 44.5H25.36V42.88H26.18L27.05 44.5H27.94L26.98 42.74C27.5 42.53 27.78 42.09 27.78 41.49C27.78 40.65 27.24 40.08 26.22 40.08H24.57ZM25.36 42.22V40.74H26.1C26.7 40.74 26.97 41.02 26.97 41.49C26.97 41.96 26.7 42.22 26.1 42.22ZM30.79 44.56C31.95 44.56 32.82 43.72 32.82 42.29C32.82 40.86 31.95 40.02 30.79 40.02C29.63 40.02 28.76 40.86 28.76 42.29C28.76 43.72 29.63 44.56 30.79 44.56ZM30.79 43.85C30.07 43.85 29.55 43.3 29.55 42.29C29.55 41.28 30.07 40.73 30.79 40.73C31.51 40.73 32.02 41.28 32.02 42.29C32.02 43.3 31.51 43.85 30.79 43.85ZM33.94 44.5H34.74V42.3C34.74 42.06 34.72 41.59 34.69 41.04C34.98 41.62 35.15 41.93 35.38 42.31L36.76 44.5H37.66V40.08H36.86V42.4C36.86 42.67 36.87 43.12 36.9 43.54C36.71 43.1 36.52 42.77 36.36 42.51L34.83 40.08H33.94ZM39.71 40.08H38.92V44.5H39.71ZM42.85 44.56C43.9 44.56 44.6 43.87 44.72 43.03H43.92C43.82 43.55 43.39 43.85 42.86 43.85C42.14 43.85 41.62 43.31 41.62 42.29C41.62 41.29 42.14 40.73 42.86 40.73C43.39 40.73 43.82 41.03 43.92 41.55H44.71C44.58 40.58 43.82 40.02 42.85 40.02C41.7 40.02 40.83 40.86 40.83 42.29C40.83 43.72 41.69 44.56 42.85 44.56Z"/></svg>%0A';
18
+
19
+ // ../tokens/assets/genres/folk-compact.svg
20
+ var folk_compact_default = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" role="img" aria-label="\u6C11\u8C23 Folk"><style>.i,.a{fill:none;stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round}.i{stroke:%231c1e23}.a{stroke:%233462e6}.af{fill:%233462e6}.f{fill:%231c1e23}.bg{fill:%23fff}.t{fill:none;stroke:%231c1e23;stroke-opacity:.32;stroke-width:1}.l{fill:%231c1e23}@media (prefers-color-scheme:dark){.i,.t{stroke:%23e9ebef}.f,.l{fill:%23e9ebef}.a{stroke:%2382a4ff}.af{fill:%2382a4ff}.bg{fill:%2316191f}}</style><g transform="rotate(32 24 25)"><path class="i" d="M24 18.5C19.4 18.5 18.2 21.9 19.6 25C20.4 26.8 20.1 27.8 18.6 29.3C15.2 32.8 16.2 42 24 42C31.8 42 32.8 32.8 29.4 29.3C27.9 27.8 27.6 26.8 28.4 25C29.8 21.9 28.6 18.5 24 18.5Z"/><circle class="a" cx="24" cy="29.5" r="2.9"/><path class="i" d="M22.8 18.5V7M25.2 18.5V7"/><path class="i" d="M21.8 7l.3-4h3.8l.3 4Z"/><path class="i" d="M21 37h6"/></g></svg>%0A';
21
+
22
+ // ../tokens/assets/genres/folk.svg
23
+ var folk_default = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" role="img" aria-label="\u6C11\u8C23 Folk"><style>.i,.a{fill:none;stroke-width:1.93;stroke-linecap:round;stroke-linejoin:round}.i{stroke:%231c1e23}.a{stroke:%233462e6}.af{fill:%233462e6}.f{fill:%231c1e23}.bg{fill:%23fff}.t{fill:none;stroke:%231c1e23;stroke-opacity:.32;stroke-width:1.1}.l{fill:%231c1e23}@media (prefers-color-scheme:dark){.i,.t{stroke:%23e9ebef}.f,.l{fill:%23e9ebef}.a{stroke:%2382a4ff}.af{fill:%2382a4ff}.bg{fill:%2316191f}}</style><g transform="translate(-4.00 1.23) scale(0.909)"><g transform="rotate(32 24 25)"><path class="i" d="M24 18.5C19.4 18.5 18.2 21.9 19.6 25C20.4 26.8 20.1 27.8 18.6 29.3C15.2 32.8 16.2 42 24 42C31.8 42 32.8 32.8 29.4 29.3C27.9 27.8 27.6 26.8 28.4 25C29.8 21.9 28.6 18.5 24 18.5Z"/><circle class="a" cx="24" cy="29.5" r="2.9"/><path class="i" d="M22.8 18.5V7M25.2 18.5V7"/><path class="i" d="M21.8 7l.3-4h3.8l.3 4Z"/><path class="i" d="M21 37h6"/></g></g><path class="l" d="M26.5 43.5H27.38V41.53H29.43V40.79H27.38V39.32H29.65V38.57H26.5ZM32.99 43.57C34.28 43.57 35.25 42.63 35.25 41.04C35.25 39.45 34.28 38.51 32.99 38.51C31.7 38.51 30.73 39.45 30.73 41.04C30.73 42.63 31.7 43.57 32.99 43.57ZM32.99 42.78C32.19 42.78 31.62 42.16 31.62 41.04C31.62 39.91 32.19 39.3 32.99 39.3C33.8 39.3 34.36 39.91 34.36 41.04C34.36 42.16 33.8 42.78 32.99 42.78ZM36.5 43.5H39.56V42.76H37.38V38.57H36.5ZM40.73 43.5H41.62V42.02L42.29 41.29L43.78 43.5H44.82L42.9 40.71L44.79 38.57H43.69L42.4 40.05C42.08 40.42 41.83 40.73 41.6 41.09L41.62 40.03V38.57H40.73Z"/></svg>%0A';
24
+
25
+ // ../tokens/assets/genres/guoyue-compact.svg
26
+ var guoyue_compact_default = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" role="img" aria-label="\u56FD\u4E50 Guoyue"><style>.i,.a{fill:none;stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round}.i{stroke:%231c1e23}.a{stroke:%233462e6}.af{fill:%233462e6}.f{fill:%231c1e23}.bg{fill:%23fff}.t{fill:none;stroke:%231c1e23;stroke-opacity:.32;stroke-width:1}.l{fill:%231c1e23}@media (prefers-color-scheme:dark){.i,.t{stroke:%23e9ebef}.f,.l{fill:%23e9ebef}.a{stroke:%2382a4ff}.af{fill:%2382a4ff}.bg{fill:%2316191f}}</style><g transform="rotate(-22 24 25) translate(24 25) scale(1.1) translate(-24 -25)"><path class="i" d="M24 18.5C17.6 18.5 14.3 27.2 15.3 33.6C16.1 38.8 19.5 42 24 42C28.5 42 31.9 38.8 32.7 33.6C33.7 27.2 30.4 18.5 24 18.5Z"/><path class="i" d="M24 18.5V8.5"/><path class="i" d="M24 8.5l-2.4-5"/><path class="i" d="M21.2 6.3h-2.4M22.4 9h-2.4M26.4 6.6h2.2M26.4 9.4h2.2"/><path class="i" d="M22.2 12h3.6M22.2 14.6h3.6M22.2 17h3.6"/><path class="af" d="M19.8 35.4h8.4v2.2h-8.4z"/><path class="i" d="M22.6 18.5v16.9M25.4 18.5v16.9"/></g></svg>%0A';
27
+
28
+ // ../tokens/assets/genres/guoyue.svg
29
+ var guoyue_default = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" role="img" aria-label="\u56FD\u4E50 Guoyue"><style>.i,.a{fill:none;stroke-width:2.59;stroke-linecap:round;stroke-linejoin:round}.i{stroke:%231c1e23}.a{stroke:%233462e6}.af{fill:%233462e6}.f{fill:%231c1e23}.bg{fill:%23fff}.t{fill:none;stroke:%231c1e23;stroke-opacity:.32;stroke-width:1.48}.l{fill:%231c1e23}@media (prefers-color-scheme:dark){.i,.t{stroke:%23e9ebef}.f,.l{fill:%23e9ebef}.a{stroke:%2382a4ff}.af{fill:%2382a4ff}.bg{fill:%2316191f}}</style><g transform="translate(8.37 1.91) scale(0.676)"><g transform="rotate(-22 24 25) translate(24 25) scale(1.1) translate(-24 -25)"><path class="i" d="M24 18.5C17.6 18.5 14.3 27.2 15.3 33.6C16.1 38.8 19.5 42 24 42C28.5 42 31.9 38.8 32.7 33.6C33.7 27.2 30.4 18.5 24 18.5Z"/><path class="i" d="M24 18.5V8.5"/><path class="i" d="M24 8.5l-2.4-5"/><path class="i" d="M21.2 6.3h-2.4M22.4 9h-2.4M26.4 6.6h2.2M26.4 9.4h2.2"/><path class="i" d="M22.2 12h3.6M22.2 14.6h3.6M22.2 17h3.6"/><path class="af" d="M19.8 35.4h8.4v2.2h-8.4z"/><path class="i" d="M22.6 18.5v16.9M25.4 18.5v16.9"/></g></g><path class="l" d="M9.77 44.57C11.11 44.57 12.06 43.71 12.06 42.33V41.68H9.88V42.44H11.12C11.11 43.21 10.59 43.71 9.78 43.71C8.87 43.71 8.24 43.02 8.24 41.8C8.24 40.58 8.88 39.89 9.75 39.89C10.41 39.89 10.85 40.25 11.03 40.83H12.02C11.85 39.76 10.93 39.03 9.74 39.03C8.33 39.03 7.27 40.07 7.27 41.81C7.27 43.51 8.28 44.57 9.77 44.57ZM15.64 44.58C16.95 44.58 17.83 43.78 17.83 42.63V39.1H16.86V42.55C16.86 43.22 16.38 43.71 15.64 43.71C14.89 43.71 14.41 43.22 14.41 42.55V39.1H13.45V42.63C13.45 43.78 14.31 44.58 15.64 44.58ZM21.67 44.57C23.08 44.57 24.14 43.55 24.14 41.8C24.14 40.06 23.08 39.03 21.67 39.03C20.25 39.03 19.18 40.06 19.18 41.8C19.18 43.54 20.25 44.57 21.67 44.57ZM21.67 43.71C20.78 43.71 20.15 43.03 20.15 41.8C20.15 40.57 20.78 39.89 21.67 39.89C22.54 39.89 23.17 40.56 23.17 41.8C23.17 43.04 22.54 43.71 21.67 43.71ZM27.13 44.5H28.1V42.41L30.07 39.1H28.95L28 40.8C27.86 41.06 27.74 41.29 27.62 41.6C27.5 41.3 27.38 41.07 27.24 40.8L26.27 39.1H25.14L27.13 42.41ZM33.43 44.58C34.75 44.58 35.62 43.78 35.62 42.63V39.1H34.65V42.55C34.65 43.22 34.18 43.71 33.43 43.71C32.69 43.71 32.21 43.22 32.21 42.55V39.1H31.24V42.63C31.24 43.78 32.11 44.58 33.43 44.58ZM37.15 44.5H40.67V43.68H38.12V42.18H40.47V41.37H38.12V39.92H40.66V39.1H37.15Z"/></svg>%0A';
30
+
31
+ // ../tokens/assets/genres/hiphop-compact.svg
32
+ var hiphop_compact_default = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" role="img" aria-label="\u563B\u54C8 Hip-hop"><style>.i,.a{fill:none;stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round}.i{stroke:%231c1e23}.a{stroke:%233462e6}.af{fill:%233462e6}.f{fill:%231c1e23}.bg{fill:%23fff}.t{fill:none;stroke:%231c1e23;stroke-opacity:.32;stroke-width:1}.l{fill:%231c1e23}@media (prefers-color-scheme:dark){.i,.t{stroke:%23e9ebef}.f,.l{fill:%23e9ebef}.a{stroke:%2382a4ff}.af{fill:%2382a4ff}.bg{fill:%2316191f}}</style><rect class="i" x="5" y="7" width="38" height="34" rx="4"/><circle class="i" cx="21" cy="24" r="12"/><circle class="t" cx="21" cy="24" r="8.2"/><circle class="af" cx="21" cy="24" r="3.6"/><path class="i" d="M37 11.5v15l-6.2 5.8"/><circle class="i" cx="37" cy="11.5" r="1.8"/><path class="i" d="M29.4 30.8l2.6 2.4"/></svg>%0A';
33
+
34
+ // ../tokens/assets/genres/hiphop.svg
35
+ var hiphop_default = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" role="img" aria-label="\u563B\u54C8 Hip-hop"><style>.i,.a{fill:none;stroke-width:2.46;stroke-linecap:round;stroke-linejoin:round}.i{stroke:%231c1e23}.a{stroke:%233462e6}.af{fill:%233462e6}.f{fill:%231c1e23}.bg{fill:%23fff}.t{fill:none;stroke:%231c1e23;stroke-opacity:.32;stroke-width:1.41}.l{fill:%231c1e23}@media (prefers-color-scheme:dark){.i,.t{stroke:%23e9ebef}.f,.l{fill:%23e9ebef}.a{stroke:%2382a4ff}.af{fill:%2382a4ff}.bg{fill:%2316191f}}</style><g transform="translate(6.95 -1.97) scale(0.711)"><rect class="i" x="5" y="7" width="38" height="34" rx="4"/><circle class="i" cx="21" cy="24" r="12"/><circle class="t" cx="21" cy="24" r="8.2"/><circle class="af" cx="21" cy="24" r="3.6"/><path class="i" d="M37 11.5v15l-6.2 5.8"/><circle class="i" cx="37" cy="11.5" r="1.8"/><path class="i" d="M29.4 30.8l2.6 2.4"/></g><path class="l" d="M6.66 44.5H7.66V42.06H10.27V44.5H11.27V38.9H10.27V41.22H7.66V38.9H6.66ZM13.86 38.9H12.86V44.5H13.86ZM15.45 44.5H16.46V42.61H17.53C18.83 42.61 19.52 41.83 19.52 40.75C19.52 39.69 18.84 38.9 17.55 38.9H15.45ZM16.46 41.78V39.74H17.39C18.16 39.74 18.49 40.16 18.49 40.75C18.49 41.35 18.16 41.78 17.4 41.78ZM23.36 41.76H20.85V42.57H23.36ZM24.92 44.5H25.93V42.06H28.53V44.5H29.54V38.9H28.53V41.22H25.93V38.9H24.92ZM33.52 44.58C34.99 44.58 36.09 43.51 36.09 41.7C36.09 39.89 34.99 38.82 33.52 38.82C32.05 38.82 30.95 39.89 30.95 41.7C30.95 43.51 32.05 44.58 33.52 44.58ZM33.52 43.68C32.61 43.68 31.96 42.98 31.96 41.7C31.96 40.42 32.61 39.72 33.52 39.72C34.43 39.72 35.08 40.42 35.08 41.7C35.08 42.98 34.43 43.68 33.52 43.68ZM37.5 44.5H38.51V42.61H39.58C40.87 42.61 41.57 41.83 41.57 40.75C41.57 39.69 40.89 38.9 39.6 38.9H37.5ZM38.51 41.78V39.74H39.44C40.21 39.74 40.54 40.16 40.54 40.75C40.54 41.35 40.21 41.78 39.45 41.78Z"/></svg>%0A';
36
+
37
+ // ../tokens/assets/genres/jazz-compact.svg
38
+ var jazz_compact_default = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" role="img" aria-label="\u7235\u58EB Jazz"><style>.i,.a{fill:none;stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round}.i{stroke:%231c1e23}.a{stroke:%233462e6}.af{fill:%233462e6}.f{fill:%231c1e23}.bg{fill:%23fff}.t{fill:none;stroke:%231c1e23;stroke-opacity:.32;stroke-width:1}.l{fill:%231c1e23}@media (prefers-color-scheme:dark){.i,.t{stroke:%23e9ebef}.f,.l{fill:%23e9ebef}.a{stroke:%2382a4ff}.af{fill:%2382a4ff}.bg{fill:%2316191f}}</style><path class="i" d="M19.5 11v20c0 7 4.3 11 10 11s9.5-4 9.5-9.5V27"/><path class="i" d="M24.5 11v19.5c0 4 2 6.5 5 6.5s4.5-2 4.5-4.5V27"/><path class="i" d="M31.5 27h10"/><path class="i" d="M19.5 11c0-4.6-3.8-6.3-7.5-4.6M24.5 11c0-6.3-6-8.6-11-6.2"/><path class="i" d="M12 6.4l-1.6-2.8 2.6-1.3"/><circle class="af" cx="22" cy="16" r="1.7"/><circle class="af" cx="22" cy="21.5" r="1.7"/><circle class="af" cx="22" cy="27" r="1.7"/></svg>%0A';
39
+
40
+ // ../tokens/assets/genres/jazz.svg
41
+ var jazz_default = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" role="img" aria-label="\u7235\u58EB Jazz"><style>.i,.a{fill:none;stroke-width:1.81;stroke-linecap:round;stroke-linejoin:round}.i{stroke:%231c1e23}.a{stroke:%233462e6}.af{fill:%233462e6}.f{fill:%231c1e23}.bg{fill:%23fff}.t{fill:none;stroke:%231c1e23;stroke-opacity:.32;stroke-width:1.04}.l{fill:%231c1e23}@media (prefers-color-scheme:dark){.i,.t{stroke:%23e9ebef}.f,.l{fill:%23e9ebef}.a{stroke:%2382a4ff}.af{fill:%2382a4ff}.bg{fill:%2316191f}}</style><g transform="translate(-7.03 1.78) scale(0.965)"><path class="i" d="M19.5 11v20c0 7 4.3 11 10 11s9.5-4 9.5-9.5V27"/><path class="i" d="M24.5 11v19.5c0 4 2 6.5 5 6.5s4.5-2 4.5-4.5V27"/><path class="i" d="M31.5 27h10"/><path class="i" d="M19.5 11c0-4.6-3.8-6.3-7.5-4.6M24.5 11c0-6.3-6-8.6-11-6.2"/><path class="i" d="M12 6.4l-1.6-2.8 2.6-1.3"/><circle class="af" cx="22" cy="16" r="1.7"/><circle class="af" cx="22" cy="21.5" r="1.7"/><circle class="af" cx="22" cy="27" r="1.7"/></g><path class="l" d="M27.86 14.07C28.83 14.07 29.45 13.52 29.45 12.53V9.05H28.57V12.54C28.57 13.07 28.29 13.34 27.86 13.34C27.43 13.34 27.15 13.07 27.15 12.54V12.26H26.26V12.54C26.26 13.52 26.88 14.07 27.86 14.07ZM30.52 14H31.49L31.89 12.77H33.75L34.17 14H35.14L33.37 9.05H32.25ZM32.13 12.06 32.34 11.43C32.48 10.99 32.63 10.43 32.8 9.74C32.98 10.42 33.14 10.97 33.29 11.43L33.5 12.06ZM36.11 14H39.77V13.25H38.14C37.81 13.25 37.48 13.25 37.15 13.27C37.35 13.03 37.54 12.79 37.71 12.54L39.75 9.61V9.05H36.1V9.8H37.75C38.08 9.8 38.4 9.8 38.72 9.78C38.53 10.01 38.35 10.23 38.19 10.46L36.11 13.45ZM40.96 14H44.62V13.25H42.99C42.66 13.25 42.33 13.25 42 13.27C42.2 13.03 42.39 12.79 42.56 12.54L44.6 9.61V9.05H40.95V9.8H42.6C42.92 9.8 43.25 9.8 43.56 9.78C43.38 10.01 43.2 10.23 43.04 10.46L40.96 13.45Z"/></svg>%0A';
42
+
43
+ // ../tokens/assets/genres/pop-compact.svg
44
+ var pop_compact_default = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" role="img" aria-label="\u6D41\u884C Pop"><style>.i,.a{fill:none;stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round}.i{stroke:%231c1e23}.a{stroke:%233462e6}.af{fill:%233462e6}.f{fill:%231c1e23}.bg{fill:%23fff}.t{fill:none;stroke:%231c1e23;stroke-opacity:.32;stroke-width:1}.l{fill:%231c1e23}@media (prefers-color-scheme:dark){.i,.t{stroke:%23e9ebef}.f,.l{fill:%23e9ebef}.a{stroke:%2382a4ff}.af{fill:%2382a4ff}.bg{fill:%2316191f}}</style><circle class="i" cx="29.5" cy="17.5" r="8"/><clipPath id="pg"><circle cx="29.5" cy="17.5" r="6.6"/></clipPath><g clip-path="url(%23pg)"><path class="a" d="M20 14l17 12M20 9.5l17 12M23 6l17 12M17 18.5l17 12"/></g><path class="i" d="M23.6 23L12.6 38.7c-.9 1.3.6 2.8 1.9 1.9L30.2 29.4"/><path class="i" d="M39.5 6.5v4M37.5 8.5h4"/></svg>%0A';
45
+
46
+ // ../tokens/assets/genres/pop.svg
47
+ var pop_default = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" role="img" aria-label="\u6D41\u884C Pop"><style>.i,.a{fill:none;stroke-width:1.82;stroke-linecap:round;stroke-linejoin:round}.i{stroke:%231c1e23}.a{stroke:%233462e6}.af{fill:%233462e6}.f{fill:%231c1e23}.bg{fill:%23fff}.t{fill:none;stroke:%231c1e23;stroke-opacity:.32;stroke-width:1.04}.l{fill:%231c1e23}@media (prefers-color-scheme:dark){.i,.t{stroke:%23e9ebef}.f,.l{fill:%23e9ebef}.a{stroke:%2382a4ff}.af{fill:%2382a4ff}.bg{fill:%2316191f}}</style><g transform="translate(-7.79 -1.75) scale(0.959)"><circle class="i" cx="29.5" cy="17.5" r="8"/><clipPath id="pg"><circle cx="29.5" cy="17.5" r="6.6"/></clipPath><g clip-path="url(%23pg)"><path class="a" d="M20 14l17 12M20 9.5l17 12M23 6l17 12M17 18.5l17 12"/></g><path class="i" d="M23.6 23L12.6 38.7c-.9 1.3.6 2.8 1.9 1.9L30.2 29.4"/><path class="i" d="M39.5 6.5v4M37.5 8.5h4"/></g><path class="l" d="M25.21 43.5H26.46V41.13H27.81C29.43 41.13 30.3 40.15 30.3 38.81C30.3 37.47 29.44 36.49 27.83 36.49H25.21ZM26.46 40.09V37.54H27.63C28.59 37.54 29.01 38.06 29.01 38.81C29.01 39.56 28.59 40.09 27.64 40.09ZM35 43.59C36.84 43.59 38.22 42.26 38.22 40C38.22 37.73 36.84 36.39 35 36.39C33.16 36.39 31.78 37.73 31.78 40C31.78 42.26 33.16 43.59 35 43.59ZM35 42.47C33.86 42.47 33.04 41.59 33.04 40C33.04 38.39 33.86 37.52 35 37.52C36.14 37.52 36.95 38.39 36.95 40C36.95 41.6 36.14 42.47 35 42.47ZM39.99 43.5H41.25V41.13H42.59C44.21 41.13 45.08 40.15 45.08 38.81C45.08 37.47 44.22 36.49 42.61 36.49H39.99ZM41.25 40.09V37.54H42.42C43.38 37.54 43.8 38.06 43.8 38.81C43.8 39.56 43.38 40.09 42.43 40.09Z"/></svg>%0A';
48
+
49
+ // ../tokens/assets/genres/rock-compact.svg
50
+ var rock_compact_default = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" role="img" aria-label="\u6447\u6EDA Rock"><style>.i,.a{fill:none;stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round}.i{stroke:%231c1e23}.a{stroke:%233462e6}.af{fill:%233462e6}.f{fill:%231c1e23}.bg{fill:%23fff}.t{fill:none;stroke:%231c1e23;stroke-opacity:.32;stroke-width:1}.l{fill:%231c1e23}@media (prefers-color-scheme:dark){.i,.t{stroke:%23e9ebef}.f,.l{fill:%23e9ebef}.a{stroke:%2382a4ff}.af{fill:%2382a4ff}.bg{fill:%2316191f}}</style><g transform="rotate(38 24 24)"><path class="i" d="M22 30c-.4-3.2-2-5.6-4-4.9-1.7.6-1.1 3.2-1.6 4.9-3.3.2-5.2 3.1-4.4 6.6.8 3.6 4.4 6 9.7 5.6 1.2-.1 2-.1 3.2.1 5.6.6 9.4-1.6 10-5.3.4-2.6-1-4.6-3.5-4.9-.4-2.6.4-5.3-1.4-6.2-2-1-3.6 1.6-4 4.1Z"/><path class="i" d="M23 30V6.5M25.5 30V6.5"/><path class="i" d="M22 6.5l.6-3.5h3.6l.4 3.5Z"/><path class="af" d="M21.2 33.4h5.6v1.8h-5.6zM21.2 37h5.6v1.8h-5.6z"/></g></svg>%0A';
51
+
52
+ // ../tokens/assets/genres/rock.svg
53
+ var rock_default = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" role="img" aria-label="\u6447\u6EDA Rock"><style>.i,.a{fill:none;stroke-width:2.12;stroke-linecap:round;stroke-linejoin:round}.i{stroke:%231c1e23}.a{stroke:%233462e6}.af{fill:%233462e6}.f{fill:%231c1e23}.bg{fill:%23fff}.t{fill:none;stroke:%231c1e23;stroke-opacity:.32;stroke-width:1.21}.l{fill:%231c1e23}@media (prefers-color-scheme:dark){.i,.t{stroke:%23e9ebef}.f,.l{fill:%23e9ebef}.a{stroke:%2382a4ff}.af{fill:%2382a4ff}.bg{fill:%2316191f}}</style><g transform="translate(8.45 7.00) scale(0.824)"><g transform="rotate(38 24 24)"><path class="i" d="M22 30c-.4-3.2-2-5.6-4-4.9-1.7.6-1.1 3.2-1.6 4.9-3.3.2-5.2 3.1-4.4 6.6.8 3.6 4.4 6 9.7 5.6 1.2-.1 2-.1 3.2.1 5.6.6 9.4-1.6 10-5.3.4-2.6-1-4.6-3.5-4.9-.4-2.6.4-5.3-1.4-6.2-2-1-3.6 1.6-4 4.1Z"/><path class="i" d="M23 30V6.5M25.5 30V6.5"/><path class="i" d="M22 6.5l.6-3.5h3.6l.4 3.5Z"/><path class="af" d="M21.2 33.4h5.6v1.8h-5.6zM21.2 37h5.6v1.8h-5.6z"/></g></g><path class="l" d="M4.01 12.5H4.91V10.66H5.84L6.83 12.5H7.84L6.75 10.5C7.34 10.27 7.65 9.77 7.65 9.08C7.65 8.13 7.04 7.48 5.88 7.48H4.01ZM4.91 9.91V8.23H5.75C6.43 8.23 6.73 8.55 6.73 9.08C6.73 9.62 6.43 9.91 5.75 9.91ZM11.08 12.57C12.39 12.57 13.38 11.61 13.38 9.99C13.38 8.37 12.39 7.41 11.08 7.41C9.76 7.41 8.77 8.37 8.77 9.99C8.77 11.61 9.76 12.57 11.08 12.57ZM11.08 11.76C10.25 11.76 9.67 11.13 9.67 9.99C9.67 8.84 10.25 8.21 11.08 8.21C11.89 8.21 12.47 8.84 12.47 9.99C12.47 11.14 11.89 11.76 11.08 11.76ZM16.79 12.57C17.98 12.57 18.77 11.79 18.91 10.83H18C17.88 11.42 17.4 11.76 16.8 11.76C15.98 11.76 15.39 11.14 15.39 9.99C15.39 8.85 15.98 8.21 16.8 8.21C17.4 8.21 17.89 8.55 18 9.15H18.91C18.75 8.05 17.89 7.41 16.79 7.41C15.48 7.41 14.49 8.37 14.49 9.99C14.49 11.61 15.47 12.57 16.79 12.57ZM20.15 12.5H21.05V10.99L21.73 10.25L23.26 12.5H24.32L22.36 9.65L24.29 7.48H23.17L21.85 8.98C21.52 9.36 21.27 9.68 21.04 10.04L21.05 8.97V7.48H20.15Z"/></svg>%0A';
54
+
55
+ // ../tokens/assets/instruments/drum.svg
56
+ var drum_default = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" fill="currentColor" aria-hidden="true"><path d="M2.5 7.6c0-1 2.5-1.8 5.5-1.8s5.5.8 5.5 1.8v4.6c0 1.1-2.5 1.9-5.5 1.9s-5.5-.8-5.5-1.9Z"/><path d="M2.8 2 6.8 6.2M13.2 2 9.2 6.2" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round"/></svg>%0A';
57
+
58
+ // ../tokens/assets/instruments/guitar.svg
59
+ var guitar_default = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" fill="currentColor" aria-hidden="true"><g transform="rotate(40 8 8)"><path d="M8 7.2c-1.5 0-2.4.9-2.2 2.1-1.2.4-1.8 1.4-1.6 2.6.3 1.6 1.8 2.6 3.8 2.6s3.5-1 3.8-2.6c.2-1.2-.4-2.2-1.6-2.6.2-1.2-.7-2.1-2.2-2.1Z"/><rect x="7.3" y="2.4" width="1.4" height="6" rx=".4"/><path d="M6.8.8h2.4l-.3 2.2H7.1Z"/></g></svg>%0A';
60
+
61
+ // ../tokens/assets/instruments/keys.svg
62
+ var keys_default = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" fill="currentColor" aria-hidden="true"><path fill-rule="evenodd" d="M2.5 4h11A1.5 1.5 0 0 1 15 5.5v5a1.5 1.5 0 0 1-1.5 1.5h-11A1.5 1.5 0 0 1 1 10.5v-5A1.5 1.5 0 0 1 2.5 4Zm-.3 1.2v5.6h2.6V5.2Zm3 0v5.6h2.6V5.2Zm3 0v5.6h2.6V5.2Zm3 0v5.6h2.6V5.2Z"/><path d="M4.2 5.2h1.6v3.2H4.2zM7.2 5.2h1.6v3.2H7.2zM10.2 5.2h1.6v3.2h-1.6z"/></svg>%0A';
63
+
64
+ // ../tokens/assets/instruments/sax.svg
65
+ var sax_default = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" fill="currentColor" aria-hidden="true"><path d="M6.6 2.4v7.8c0 2.6 1.6 4.2 3.7 4.2 1.9 0 3.2-1.4 3.2-3.4V9.6" fill="none" stroke="currentColor" stroke-width="2.1" stroke-linecap="round" stroke-linejoin="round"/><path d="M11.2 8.6h4l-.6 1.7h-2.8Z"/><path d="M6.6 2.4c0-1-1.3-1.4-2.7-.8" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round"/></svg>%0A';
66
+
67
+ // ../tokens/assets/instruments/trumpet.svg
68
+ var trumpet_default = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" fill="currentColor" aria-hidden="true"><path d="M1.4 8.8h8.6" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"/><path d="M9.4 7.4 14.6 4.4v8.8l-5.2-3Z"/><path d="M3.8 9.2v2.2c0 .6.4 1 1 1h3.2c.6 0 1-.4 1-1V9.2" fill="none" stroke="currentColor" stroke-width="1.5"/><path d="M4.6 5.4v2.6M6.6 5.4v2.6M8.6 5.4v2.6" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"/></svg>%0A';
69
+
70
+ // ../tokens/assets/instruments/violin.svg
71
+ var violin_default = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" fill="currentColor" aria-hidden="true"><g transform="rotate(-28 8 8)"><path d="M8 5.2c-2.3 0-2.9 1.4-2.3 2.6.4.8.3 1.2-.4 1.9-1.3 1.3-.8 4.6 2.7 4.6s4-3.3 2.7-4.6c-.7-.7-.8-1.1-.4-1.9.6-1.2 0-2.6-2.3-2.6Z"/><rect x="7.3" y="1.8" width="1.4" height="4" rx=".5"/><circle cx="8" cy="1.7" r="1.1"/><path d="M12.2 3.6v8.8" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"/></g></svg>%0A';
72
+
73
+ // src/ui.tsx
74
+ import { jsx, jsxs } from "react/jsx-runtime";
75
+ function ErrorNote({ children, retry }) {
76
+ if (!children) return null;
77
+ const note = /* @__PURE__ */ jsx("div", { className: "band-plugin-react-error", children });
78
+ if (!retry) return note;
79
+ return /* @__PURE__ */ jsxs("div", { className: "band-plugin-react-retry", role: "alert", children: [
80
+ note,
81
+ /* @__PURE__ */ jsx("button", { type: "button", className: "btn sm", onClick: retry, children: "\u91CD\u8BD5" })
82
+ ] });
83
+ }
84
+ function InfoNote({ children }) {
85
+ if (!children) return null;
86
+ return /* @__PURE__ */ jsx("div", { className: "band-plugin-react-info", children });
87
+ }
88
+ function PaneHeader({ title, children }) {
89
+ return /* @__PURE__ */ jsxs("div", { className: "band-plugin-react-pane-head", children: [
90
+ /* @__PURE__ */ jsx("h2", { className: "band-plugin-react-pane-title", children: title }),
91
+ children
92
+ ] });
93
+ }
94
+ function avatarTone(id, order) {
95
+ const i = order?.indexOf(id) ?? -1;
96
+ if (i >= 0) return i % 5 + 1;
97
+ let h = 2166136261;
98
+ for (const c of id) {
99
+ h ^= c.codePointAt(0) ?? 0;
100
+ h = Math.imul(h, 16777619);
101
+ }
102
+ h ^= h >>> 16;
103
+ h = Math.imul(h, 2246822507);
104
+ h ^= h >>> 13;
105
+ return (h >>> 0) % 5 + 1;
106
+ }
107
+ function memberOrder(members) {
108
+ return members.filter((m) => m.actor.kind === "human").map((m) => m.actor.id);
109
+ }
110
+ function avatarInitial(name) {
111
+ const first = Array.from(name.trim())[0];
112
+ if (!first) return "?";
113
+ const up = first.toUpperCase();
114
+ return Array.from(up).length === 1 ? up : first;
115
+ }
116
+ function Avatar({
117
+ id,
118
+ name,
119
+ agent = false,
120
+ instrument,
121
+ size = "sm",
122
+ decorative = false,
123
+ order
124
+ }) {
125
+ const cls = `av${size === "md" ? "" : ` ${size}`}${agent ? " bot" : ""}`;
126
+ const a11y = decorative ? { "aria-hidden": true } : { role: "img", "aria-label": name };
127
+ return /* @__PURE__ */ jsx(
128
+ "span",
129
+ {
130
+ className: cls,
131
+ title: name,
132
+ style: agent ? void 0 : { background: `var(--av${avatarTone(id, order)})` },
133
+ ...a11y,
134
+ children: agent && instrument ? /* @__PURE__ */ jsx(
135
+ "span",
136
+ {
137
+ className: "band-plugin-react-instrument",
138
+ "aria-hidden": "true",
139
+ style: { ["--band-instrument"]: cssUrl(INSTRUMENT_SRC[instrument]) }
140
+ }
141
+ ) : agent ? /* @__PURE__ */ jsx("svg", { viewBox: "0 0 16 16", "aria-hidden": "true", children: /* @__PURE__ */ jsx("ellipse", { cx: "8", cy: "8.4", rx: "5.6", ry: "3.7", transform: "rotate(-20 8 8.4)" }) }) : avatarInitial(name)
142
+ }
143
+ );
144
+ }
145
+ function Glyph({ kind, bg = false }) {
146
+ return /* @__PURE__ */ jsx("span", { className: `glyph ${kind}${bg ? " bgwork" : ""}`.trim(), "aria-hidden": "true" });
147
+ }
148
+ function agentInstrument(id, members) {
149
+ const peers = members.filter((m) => m.actor.kind === "agent").map((m) => m.actor.id);
150
+ return instrumentOf(id, peers);
151
+ }
152
+ function AgentAvatar({
153
+ id,
154
+ members,
155
+ size = "xs",
156
+ decorative = false
157
+ }) {
158
+ const list = members ?? [];
159
+ const name = list.find((m) => m.actor.id === id)?.displayName ?? agentDisplayName(id);
160
+ const instrument = agentInstrument(id, list);
161
+ return /* @__PURE__ */ jsx(
162
+ Avatar,
163
+ {
164
+ id,
165
+ name,
166
+ agent: true,
167
+ size,
168
+ decorative,
169
+ ...instrument ? { instrument } : {}
170
+ }
171
+ );
172
+ }
173
+ var INSTRUMENTS = ["sax", "keys", "guitar", "drum", "trumpet", "violin"];
174
+ var INSTRUMENT_SRC = {
175
+ sax: sax_default,
176
+ keys: keys_default,
177
+ guitar: guitar_default,
178
+ drum: drum_default,
179
+ trumpet: trumpet_default,
180
+ violin: violin_default
181
+ };
182
+ function cssUrl(src) {
183
+ return `url("${src.replace(/"/g, "'")}")`;
184
+ }
185
+ function fnv1a(s) {
186
+ let h = 2166136261;
187
+ for (const c of s) {
188
+ h ^= c.codePointAt(0) ?? 0;
189
+ h = Math.imul(h, 16777619);
190
+ }
191
+ return h >>> 0;
192
+ }
193
+ function instrumentOf(name, peers) {
194
+ const isRondo = (n) => n.toLowerCase() === "rondo";
195
+ if (isRondo(name)) return void 0;
196
+ const all = [...new Set([...peers, name].filter((n) => !isRondo(n)))].sort();
197
+ const taken = /* @__PURE__ */ new Set();
198
+ for (const n of all) {
199
+ const start = fnv1a(n) % INSTRUMENTS.length;
200
+ let pick = INSTRUMENTS[start];
201
+ for (let k = 0; k < INSTRUMENTS.length; k++) {
202
+ const cand = INSTRUMENTS[(start + k) % INSTRUMENTS.length];
203
+ if (!taken.has(cand)) {
204
+ pick = cand;
205
+ break;
206
+ }
207
+ }
208
+ if (taken.size < INSTRUMENTS.length) taken.add(pick);
209
+ if (n === name) return pick;
210
+ }
211
+ return void 0;
212
+ }
213
+ var GENRE_FULL_SRC = {
214
+ classical: classical_default,
215
+ jazz: jazz_default,
216
+ pop: pop_default,
217
+ rock: rock_default,
218
+ electronic: electronic_default,
219
+ folk: folk_default,
220
+ hiphop: hiphop_default,
221
+ guoyue: guoyue_default
222
+ };
223
+ var GENRE_COMPACT_SRC = {
224
+ classical: classical_compact_default,
225
+ jazz: jazz_compact_default,
226
+ pop: pop_compact_default,
227
+ rock: rock_compact_default,
228
+ electronic: electronic_compact_default,
229
+ folk: folk_compact_default,
230
+ hiphop: hiphop_compact_default,
231
+ guoyue: guoyue_compact_default
232
+ };
233
+ function WorkshopIcon({
234
+ icon,
235
+ size = 20,
236
+ tile = false
237
+ }) {
238
+ return drawWorkshopIcon(GENRE_COMPACT_SRC, icon, size, tile);
239
+ }
240
+ function WorkshopEmblem({ icon, size = 48 }) {
241
+ return drawWorkshopIcon(size >= 48 ? GENRE_FULL_SRC : GENRE_COMPACT_SRC, icon, size, true);
242
+ }
243
+ function drawWorkshopIcon(srcs, icon, size, tile) {
244
+ const genre = icon?.startsWith("genre:") ? icon.slice("genre:".length) : void 0;
245
+ const known = genre && WORKSHOP_GENRES.includes(genre);
246
+ const src = known ? srcs[genre] : void 0;
247
+ const inner = src ? /* @__PURE__ */ jsx("img", { className: "band-plugin-react-wsicon", src, width: size, height: size, alt: "" }) : /* @__PURE__ */ jsx(BandMark, { className: "band-plugin-react-wsicon", size });
248
+ if (!tile) return inner;
249
+ return /* @__PURE__ */ jsx(
250
+ "span",
251
+ {
252
+ className: `band-plugin-react-wstile${size >= 28 ? " is-large" : ""}`,
253
+ style: { ["--band-wstile"]: `${size}px` },
254
+ "aria-hidden": "true",
255
+ children: inner
256
+ }
257
+ );
258
+ }
259
+ function BandMark({ size = 20, className }) {
260
+ return /* @__PURE__ */ jsxs(
261
+ "svg",
262
+ {
263
+ className,
264
+ viewBox: "0 0 24 24",
265
+ width: size,
266
+ height: size,
267
+ "aria-hidden": "true",
268
+ focusable: "false",
269
+ children: [
270
+ /* @__PURE__ */ jsxs("g", { fill: "none", stroke: "currentColor", strokeWidth: "1.75", children: [
271
+ /* @__PURE__ */ jsx("path", { d: "M7.67 18.81V6.95" }),
272
+ /* @__PURE__ */ jsx("path", { d: "M14.67 15.71V4.65" }),
273
+ /* @__PURE__ */ jsx("path", { d: "M21.67 12.61V2.35" })
274
+ ] }),
275
+ /* @__PURE__ */ jsx("path", { fill: "currentColor", d: "M6.8 5.69L22.55 0.51V3.61L6.8 8.79Z" }),
276
+ /* @__PURE__ */ jsx(
277
+ "ellipse",
278
+ {
279
+ fill: "currentColor",
280
+ cx: "5.4",
281
+ cy: "19.4",
282
+ rx: "3.25",
283
+ ry: "2.2",
284
+ transform: "rotate(-20 5.4 19.4)"
285
+ }
286
+ ),
287
+ /* @__PURE__ */ jsx(
288
+ "ellipse",
289
+ {
290
+ fill: "var(--accent)",
291
+ cx: "12.4",
292
+ cy: "16.3",
293
+ rx: "3.25",
294
+ ry: "2.2",
295
+ transform: "rotate(-20 12.4 16.3)"
296
+ }
297
+ ),
298
+ /* @__PURE__ */ jsx(
299
+ "ellipse",
300
+ {
301
+ fill: "currentColor",
302
+ cx: "19.4",
303
+ cy: "13.2",
304
+ rx: "3.25",
305
+ ry: "2.2",
306
+ transform: "rotate(-20 19.4 13.2)"
307
+ }
308
+ )
309
+ ]
310
+ }
311
+ );
312
+ }
313
+ function LogoLockup() {
314
+ return /* @__PURE__ */ jsxs("svg", { className: "logo lockup", viewBox: "0 0 111 28", role: "img", "aria-label": "Band", children: [
315
+ /* @__PURE__ */ jsx("g", { className: "staff", children: [5, 9.5, 14, 18.5, 23].map((y) => /* @__PURE__ */ jsx("line", { x1: "1", y1: y, x2: "39", y2: y }, y)) }),
316
+ /* @__PURE__ */ jsx("path", { className: "st", d: "M12.36 20.12V7.65" }),
317
+ /* @__PURE__ */ jsx("path", { className: "st", d: "M21.86 15.62V5.35" }),
318
+ /* @__PURE__ */ jsx("path", { className: "st", d: "M31.36 11.12V3.05" }),
319
+ /* @__PURE__ */ jsx("path", { d: "M11.54 6.4L32.19 1.4V4.3L11.54 9.3Z" }),
320
+ /* @__PURE__ */ jsx("ellipse", { cx: "10", cy: "20.75", rx: "3.3", ry: "2.15", transform: "rotate(-20 10 20.75)" }),
321
+ /* @__PURE__ */ jsx(
322
+ "ellipse",
323
+ {
324
+ className: "ag",
325
+ cx: "19.5",
326
+ cy: "16.25",
327
+ rx: "3.3",
328
+ ry: "2.15",
329
+ transform: "rotate(-20 19.5 16.25)"
330
+ }
331
+ ),
332
+ /* @__PURE__ */ jsx("ellipse", { cx: "29", cy: "11.75", rx: "3.3", ry: "2.15", transform: "rotate(-20 29 11.75)" }),
333
+ /* @__PURE__ */ jsx("text", { className: "wm", x: "46", y: "23", children: "Band" })
334
+ ] });
335
+ }
336
+
337
+ export {
338
+ ErrorNote,
339
+ InfoNote,
340
+ PaneHeader,
341
+ avatarTone,
342
+ memberOrder,
343
+ avatarInitial,
344
+ Avatar,
345
+ Glyph,
346
+ agentInstrument,
347
+ AgentAvatar,
348
+ INSTRUMENTS,
349
+ instrumentOf,
350
+ WorkshopIcon,
351
+ WorkshopEmblem,
352
+ BandMark,
353
+ LogoLockup
354
+ };
@@ -0,0 +1,46 @@
1
+ // src/scroll.ts
2
+ function scrollIntoPanel(el, {
3
+ block = "nearest",
4
+ behavior = "auto",
5
+ page = false
6
+ } = {}) {
7
+ const doc = el.ownerDocument;
8
+ const view = doc.defaultView;
9
+ const r = el.getBoundingClientRect();
10
+ if (r.width === 0 && r.height === 0) return;
11
+ let moved = 0;
12
+ for (const box of scrollersOf(el, page)) {
13
+ const rTop = r.top - moved;
14
+ const whole = box === (doc.scrollingElement ?? doc.documentElement);
15
+ const top = whole ? 0 : box.getBoundingClientRect().top + box.clientTop;
16
+ const height = whole ? view?.innerHeight ?? box.clientHeight : box.clientHeight;
17
+ let delta = 0;
18
+ if (block === "start") delta = rTop - top;
19
+ else if (rTop < top) delta = rTop - top;
20
+ else if (rTop + r.height > top + height)
21
+ delta = Math.min(rTop + r.height - (top + height), rTop - top);
22
+ const max = box.scrollHeight - box.clientHeight;
23
+ const to = Math.max(0, Math.min(box.scrollTop + delta, max));
24
+ if (Math.abs(to - box.scrollTop) >= 1) {
25
+ moved += to - box.scrollTop;
26
+ if (typeof box.scrollTo === "function") box.scrollTo({ top: to, behavior });
27
+ else box.scrollTop = to;
28
+ }
29
+ if (!page) return;
30
+ }
31
+ }
32
+ function scrollersOf(el, page) {
33
+ const doc = el.ownerDocument;
34
+ const out = [];
35
+ for (let p = el.parentElement; p && p !== doc.body && p !== doc.documentElement; p = p.parentElement) {
36
+ const y = getComputedStyle(p).overflowY;
37
+ if ((y === "auto" || y === "scroll") && p.scrollHeight > p.clientHeight) out.push(p);
38
+ }
39
+ const whole = doc.scrollingElement ?? doc.documentElement;
40
+ if (page && whole && whole.scrollHeight > whole.clientHeight) out.push(whole);
41
+ return out;
42
+ }
43
+
44
+ export {
45
+ scrollIntoPanel
46
+ };