dsh-theme-mineradio 2.2.5 → 2.2.7

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/lib/client.js CHANGED
@@ -84,10 +84,10 @@ if (typeof document !== "undefined" && document.querySelector("style[data-plugin
84
84
  const tag = document.createElement("style");
85
85
  tag.dataset.plugin = "dsh-theme-mineradio";
86
86
  tag.dataset.pluginCss = "dsh-theme-mineradio/src/client/MineradioAppearanceRow.module.css?v=4b8b809b";
87
- tag.textContent = ".MineradioAppearanceRow_group{display:flex;flex-direction:column;gap:14px;padding:8px 0 16px;border-bottom:1px solid var(--dsw-alias-border-l2);}.MineradioAppearanceRow_subGroup{display:flex;flex-direction:column;gap:8px;}.MineradioAppearanceRow_subTitle{font-size:13px;line-height:20px;font-weight:600;color:var(--dsw-alias-label-primary);}.MineradioAppearanceRow_controls{display:flex;flex-direction:column;gap:10px;}.MineradioAppearanceRow_row{display:flex;align-items:center;gap:10px;}.MineradioAppearanceRow_rowLabel{flex:none;width:92px;font-size:12px;line-height:18px;color:var(--dsw-alias-label-secondary);}.MineradioAppearanceRow_inlineLabel{flex:none;font-size:12px;line-height:18px;color:var(--dsw-alias-label-secondary);}.MineradioAppearanceRow_rowHint{margin-top:-4px;margin-left:102px;font-size:12px;line-height:18px;color:var(--dsw-alias-label-tertiary);}.MineradioAppearanceRow_groupHint{margin-top:-4px;font-size:12px;line-height:18px;color:var(--dsw-alias-label-tertiary);}.MineradioAppearanceRow_knobHint{margin-top:-4px;margin-left:102px;font-size:12px;line-height:18px;color:var(--dsw-alias-label-tertiary);}.MineradioAppearanceRow_toggle,.MineradioAppearanceRow_toggleOn{display:inline-flex;align-items:center;gap:6px;height:28px;padding:0 10px 0 6px;border:1px solid var(--dsw-alias-border-l2);border-radius:14px;background:transparent;font-size:12px;line-height:18px;color:var(--dsw-alias-label-primary);cursor:pointer;}.MineradioAppearanceRow_toggle:hover{background:var(--dsw-alias-interactive-bg-hover);}.MineradioAppearanceRow_toggleOn{border-color:transparent;background:var(--dsw-alias-state-business-tertiary);color:var(--dsw-alias-state-business-primary);}.MineradioAppearanceRow_check{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;}.MineradioAppearanceRow_knob{display:flex;align-items:center;gap:10px;}.MineradioAppearanceRow_knobLabel{flex:none;width:92px;font-size:12px;line-height:18px;color:var(--dsw-alias-label-secondary);}.MineradioAppearanceRow_slider{flex:1;min-width:0;accent-color:var(--dsw-alias-state-business-primary);}.MineradioAppearanceRow_numberWrap{flex:none;display:inline-flex;align-items:center;gap:4px;}.MineradioAppearanceRow_number{width:56px;height:26px;padding:0 6px;border:1px solid var(--dsw-alias-border-l2);border-radius:8px;background:var(--dsw-alias-bg-layer-2);font-size:12px;line-height:18px;color:var(--dsw-alias-label-primary);text-align:right;}.MineradioAppearanceRow_number::-webkit-outer-spin-button,.MineradioAppearanceRow_number::-webkit-inner-spin-button{-webkit-appearance:none;margin:0;}.MineradioAppearanceRow_unit{flex:none;width:18px;font-size:12px;line-height:18px;color:var(--dsw-alias-label-tertiary);}.MineradioAppearanceRow_segmented{display:inline-flex;border:1px solid var(--dsw-alias-border-l2);border-radius:8px;overflow:hidden;}.MineradioAppearanceRow_seg,.MineradioAppearanceRow_segActive{height:26px;padding:0 12px;border:none;background:transparent;font-size:12px;line-height:18px;color:var(--dsw-alias-label-secondary);cursor:pointer;}.MineradioAppearanceRow_seg + .MineradioAppearanceRow_seg,.MineradioAppearanceRow_segActive + .MineradioAppearanceRow_seg,.MineradioAppearanceRow_seg + .MineradioAppearanceRow_segActive{border-left:1px solid var(--dsw-alias-border-l2);}.MineradioAppearanceRow_segActive{background:var(--dsw-alias-state-business-tertiary);color:var(--dsw-alias-state-business-primary);}.MineradioAppearanceRow_hueStripRow{display:flex;align-items:center;gap:10px;}.MineradioAppearanceRow_hueStrip{position:relative;flex:1;min-width:0;height:16px;border-radius:8px;border:1px solid var(--dsw-alias-border-l2);background:linear-gradient( to right,hsl(0,85%,55%),hsl(60,85%,55%),hsl(120,85%,55%),hsl(180,85%,55%),hsl(240,85%,55%),hsl(300,85%,55%),hsl(360,85%,55%) );cursor:pointer;touch-action:none;}.MineradioAppearanceRow_hueStrip:focus-visible{outline:2px solid var(--dsw-alias-state-business-primary);outline-offset:2px;}.MineradioAppearanceRow_hueStripThumb{position:absolute;top:50%;width:18px;height:18px;border-radius:50%;border:2px solid #fff;box-shadow:0 0 0 1px var(--dsw-alias-border-l2),0 1px 3px rgba(0,0,0,0.35);transform:translate(-50%,-50%);pointer-events:none;}.MineradioAppearanceRow_hueStripValue{flex:none;width:40px;font-size:12px;line-height:18px;text-align:right;color:var(--dsw-alias-label-tertiary);}.MineradioAppearanceRow_wallpaperPick{display:flex;align-items:center;gap:10px;}.MineradioAppearanceRow_fileInput{display:none;}.MineradioAppearanceRow_pickButton{height:26px;padding:0 12px;border:1px solid var(--dsw-alias-border-l2);border-radius:8px;background:transparent;font-size:12px;line-height:18px;color:var(--dsw-alias-label-primary);cursor:pointer;}.MineradioAppearanceRow_pickButton:hover{background:var(--dsw-alias-interactive-bg-hover);}.MineradioAppearanceRow_deleteButton{height:26px;padding:0 12px;border:1px solid var(--dsw-alias-border-l2);border-radius:8px;background:transparent;font-size:12px;line-height:18px;color:var(--dsw-alias-label-error);cursor:pointer;}.MineradioAppearanceRow_deleteButton:hover{background:var(--dsw-alias-interactive-bg-hover);}";
87
+ tag.textContent = ".MineradioAppearanceRow_group{display:flex;flex-direction:column;gap:14px;padding:8px 0 16px;border-bottom:1px solid var(--dsw-alias-border-l2);}.MineradioAppearanceRow_subGroup{display:flex;flex-direction:column;gap:8px;}.MineradioAppearanceRow_subTitle{font-size:13px;line-height:20px;font-weight:600;color:var(--dsw-alias-label-primary);}.MineradioAppearanceRow_fold{display:flex;flex-direction:column;gap:8px;}.MineradioAppearanceRow_foldHead{display:flex;align-items:center;justify-content:space-between;width:100%;margin:0;padding:0;border:none;background:transparent;cursor:pointer;color:inherit;font:inherit;text-align:left;}.MineradioAppearanceRow_foldTitle{font-size:13px;line-height:20px;font-weight:600;color:var(--dsw-alias-label-primary);}.MineradioAppearanceRow_foldChevron{flex:none;width:14px;height:14px;color:var(--dsw-alias-label-tertiary);transform:rotate(-90deg);}.MineradioAppearanceRow_foldChevronOpen{transform:rotate(0deg);}.MineradioAppearanceRow_foldBody{display:flex;flex-direction:column;gap:12px;}.MineradioAppearanceRow_controls{display:flex;flex-direction:column;gap:10px;}.MineradioAppearanceRow_row{display:flex;align-items:center;gap:10px;}.MineradioAppearanceRow_rowLabel{flex:none;width:92px;font-size:12px;line-height:18px;color:var(--dsw-alias-label-secondary);}.MineradioAppearanceRow_inlineLabel{flex:none;font-size:12px;line-height:18px;color:var(--dsw-alias-label-secondary);}.MineradioAppearanceRow_rowHint{margin-top:-4px;margin-left:102px;font-size:12px;line-height:18px;color:var(--dsw-alias-label-tertiary);}.MineradioAppearanceRow_groupHint{margin-top:-4px;font-size:12px;line-height:18px;color:var(--dsw-alias-label-tertiary);}.MineradioAppearanceRow_knobHint{margin-top:-4px;margin-left:102px;font-size:12px;line-height:18px;color:var(--dsw-alias-label-tertiary);}.MineradioAppearanceRow_toggle,.MineradioAppearanceRow_toggleOn{display:inline-flex;align-items:center;gap:6px;height:28px;padding:0 10px 0 6px;border:1px solid var(--dsw-alias-border-l2);border-radius:14px;background:transparent;font-size:12px;line-height:18px;color:var(--dsw-alias-label-primary);cursor:pointer;}.MineradioAppearanceRow_toggle:hover{background:var(--dsw-alias-interactive-bg-hover);}.MineradioAppearanceRow_toggleOn{border-color:transparent;background:var(--dsw-alias-state-business-tertiary);color:var(--dsw-alias-state-business-primary);}.MineradioAppearanceRow_check{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;}.MineradioAppearanceRow_knob{display:flex;align-items:center;gap:10px;}.MineradioAppearanceRow_knobLabel{flex:none;width:92px;font-size:12px;line-height:18px;color:var(--dsw-alias-label-secondary);}.MineradioAppearanceRow_slider{flex:1;min-width:0;accent-color:var(--dsw-alias-state-business-primary);}.MineradioAppearanceRow_numberWrap{flex:none;display:inline-flex;align-items:center;gap:4px;}.MineradioAppearanceRow_number{width:56px;height:26px;padding:0 6px;border:1px solid var(--dsw-alias-border-l2);border-radius:8px;background:var(--dsw-alias-bg-layer-2);font-size:12px;line-height:18px;color:var(--dsw-alias-label-primary);text-align:right;}.MineradioAppearanceRow_number::-webkit-outer-spin-button,.MineradioAppearanceRow_number::-webkit-inner-spin-button{-webkit-appearance:none;margin:0;}.MineradioAppearanceRow_unit{flex:none;width:18px;font-size:12px;line-height:18px;color:var(--dsw-alias-label-tertiary);}.MineradioAppearanceRow_segmented{display:inline-flex;border:1px solid var(--dsw-alias-border-l2);border-radius:8px;overflow:hidden;}.MineradioAppearanceRow_seg,.MineradioAppearanceRow_segActive{height:26px;padding:0 12px;border:none;background:transparent;font-size:12px;line-height:18px;color:var(--dsw-alias-label-secondary);cursor:pointer;}.MineradioAppearanceRow_seg + .MineradioAppearanceRow_seg,.MineradioAppearanceRow_segActive + .MineradioAppearanceRow_seg,.MineradioAppearanceRow_seg + .MineradioAppearanceRow_segActive{border-left:1px solid var(--dsw-alias-border-l2);}.MineradioAppearanceRow_segActive{background:var(--dsw-alias-state-business-tertiary);color:var(--dsw-alias-state-business-primary);}.MineradioAppearanceRow_hueStripRow{display:flex;align-items:center;gap:10px;}.MineradioAppearanceRow_hueStrip{position:relative;flex:1;min-width:0;height:16px;border-radius:8px;border:1px solid var(--dsw-alias-border-l2);background:linear-gradient( to right,hsl(0,85%,55%),hsl(60,85%,55%),hsl(120,85%,55%),hsl(180,85%,55%),hsl(240,85%,55%),hsl(300,85%,55%),hsl(360,85%,55%) );cursor:pointer;touch-action:none;}.MineradioAppearanceRow_hueStrip:focus-visible{outline:2px solid var(--dsw-alias-state-business-primary);outline-offset:2px;}.MineradioAppearanceRow_hueStripThumb{position:absolute;top:50%;width:18px;height:18px;border-radius:50%;border:2px solid #fff;box-shadow:0 0 0 1px var(--dsw-alias-border-l2),0 1px 3px rgba(0,0,0,0.35);transform:translate(-50%,-50%);pointer-events:none;}.MineradioAppearanceRow_hueStripValue{flex:none;width:40px;font-size:12px;line-height:18px;text-align:right;color:var(--dsw-alias-label-tertiary);}.MineradioAppearanceRow_wallpaperPick{display:flex;align-items:center;gap:10px;}.MineradioAppearanceRow_fileInput{display:none;}.MineradioAppearanceRow_pickButton{height:26px;padding:0 12px;border:1px solid var(--dsw-alias-border-l2);border-radius:8px;background:transparent;font-size:12px;line-height:18px;color:var(--dsw-alias-label-primary);cursor:pointer;}.MineradioAppearanceRow_pickButton:hover{background:var(--dsw-alias-interactive-bg-hover);}.MineradioAppearanceRow_deleteButton{height:26px;padding:0 12px;border:1px solid var(--dsw-alias-border-l2);border-radius:8px;background:transparent;font-size:12px;line-height:18px;color:var(--dsw-alias-label-error);cursor:pointer;}.MineradioAppearanceRow_deleteButton:hover{background:var(--dsw-alias-interactive-bg-hover);}";
88
88
  document.head.appendChild(tag);
89
89
  }
90
- var MineradioAppearanceRow_default = { "group": "MineradioAppearanceRow_group", "subGroup": "MineradioAppearanceRow_subGroup", "subTitle": "MineradioAppearanceRow_subTitle", "controls": "MineradioAppearanceRow_controls", "row": "MineradioAppearanceRow_row", "rowLabel": "MineradioAppearanceRow_rowLabel", "inlineLabel": "MineradioAppearanceRow_inlineLabel", "rowHint": "MineradioAppearanceRow_rowHint", "groupHint": "MineradioAppearanceRow_groupHint", "knobHint": "MineradioAppearanceRow_knobHint", "toggle": "MineradioAppearanceRow_toggle", "toggleOn": "MineradioAppearanceRow_toggleOn", "check": "MineradioAppearanceRow_check", "knob": "MineradioAppearanceRow_knob", "knobLabel": "MineradioAppearanceRow_knobLabel", "slider": "MineradioAppearanceRow_slider", "numberWrap": "MineradioAppearanceRow_numberWrap", "number": "MineradioAppearanceRow_number", "unit": "MineradioAppearanceRow_unit", "segmented": "MineradioAppearanceRow_segmented", "seg": "MineradioAppearanceRow_seg", "segActive": "MineradioAppearanceRow_segActive", "hueStripRow": "MineradioAppearanceRow_hueStripRow", "hueStrip": "MineradioAppearanceRow_hueStrip", "hueStripThumb": "MineradioAppearanceRow_hueStripThumb", "hueStripValue": "MineradioAppearanceRow_hueStripValue", "wallpaperPick": "MineradioAppearanceRow_wallpaperPick", "fileInput": "MineradioAppearanceRow_fileInput", "pickButton": "MineradioAppearanceRow_pickButton", "deleteButton": "MineradioAppearanceRow_deleteButton" };
90
+ var MineradioAppearanceRow_default = { "group": "MineradioAppearanceRow_group", "subGroup": "MineradioAppearanceRow_subGroup", "subTitle": "MineradioAppearanceRow_subTitle", "fold": "MineradioAppearanceRow_fold", "foldHead": "MineradioAppearanceRow_foldHead", "foldTitle": "MineradioAppearanceRow_foldTitle", "foldChevron": "MineradioAppearanceRow_foldChevron", "foldChevronOpen": "MineradioAppearanceRow_foldChevronOpen", "foldBody": "MineradioAppearanceRow_foldBody", "controls": "MineradioAppearanceRow_controls", "row": "MineradioAppearanceRow_row", "rowLabel": "MineradioAppearanceRow_rowLabel", "inlineLabel": "MineradioAppearanceRow_inlineLabel", "rowHint": "MineradioAppearanceRow_rowHint", "groupHint": "MineradioAppearanceRow_groupHint", "knobHint": "MineradioAppearanceRow_knobHint", "toggle": "MineradioAppearanceRow_toggle", "toggleOn": "MineradioAppearanceRow_toggleOn", "check": "MineradioAppearanceRow_check", "knob": "MineradioAppearanceRow_knob", "knobLabel": "MineradioAppearanceRow_knobLabel", "slider": "MineradioAppearanceRow_slider", "numberWrap": "MineradioAppearanceRow_numberWrap", "number": "MineradioAppearanceRow_number", "unit": "MineradioAppearanceRow_unit", "segmented": "MineradioAppearanceRow_segmented", "seg": "MineradioAppearanceRow_seg", "segActive": "MineradioAppearanceRow_segActive", "hueStripRow": "MineradioAppearanceRow_hueStripRow", "hueStrip": "MineradioAppearanceRow_hueStrip", "hueStripThumb": "MineradioAppearanceRow_hueStripThumb", "hueStripValue": "MineradioAppearanceRow_hueStripValue", "wallpaperPick": "MineradioAppearanceRow_wallpaperPick", "fileInput": "MineradioAppearanceRow_fileInput", "pickButton": "MineradioAppearanceRow_pickButton", "deleteButton": "MineradioAppearanceRow_deleteButton" };
91
91
 
92
92
  // src/client/fluid-tones.ts
93
93
  function hsl(h, s, l) {
@@ -402,594 +402,6 @@ async function loadVideoHandle() {
402
402
  }
403
403
  }
404
404
 
405
- // src/client/MineradioAppearanceRow.tsx
406
- var import_jsx_runtime3 = require("react/jsx-runtime");
407
- function MineradioAppearanceRow(props) {
408
- const {
409
- t,
410
- setMode,
411
- setTextStyle,
412
- setBlur,
413
- setFrost,
414
- setFluidHue,
415
- setFluidDepth,
416
- setDispersionHue,
417
- setDispersionRefract,
418
- setBgBrightness,
419
- setBackground,
420
- setWallpaper,
421
- setAutoTint,
422
- setWhale,
423
- setCritters,
424
- setMesh,
425
- setStarDensity,
426
- setSpotlight,
427
- setPress,
428
- setAudioReact,
429
- setWallpaperBlur,
430
- setWallpaperFrost,
431
- setWallpaperMask,
432
- setWallpaperMaskBlur,
433
- setWallpaperMaskOpacity,
434
- setVideoBlur,
435
- setVideoBrightness,
436
- authorizeVideo,
437
- useStore
438
- } = props;
439
- const enabled = useStore((s) => s.enabled);
440
- const mode = useStore((s) => s.mode);
441
- const textStyle = useStore((s) => s.textStyle);
442
- const blur = useStore((s) => s.blur);
443
- const frost = useStore((s) => s.frost);
444
- const fluidHue = useStore((s) => s.fluidHue);
445
- const fluidDepth = useStore((s) => s.fluidDepth);
446
- const dispersionHue = useStore((s) => s.dispersionHue);
447
- const dispersionRefract = useStore((s) => s.dispersionRefract);
448
- const bgBrightness = useStore((s) => s.bgBrightness);
449
- const dark = useStore((s) => s.dark);
450
- const background = useStore((s) => s.background);
451
- const whale = useStore((s) => s.whale);
452
- const critters = useStore((s) => s.critters);
453
- const mesh = useStore((s) => s.mesh);
454
- const starDensity = useStore((s) => s.starDensity);
455
- const spotlight = useStore((s) => s.spotlight);
456
- const press = useStore((s) => s.press);
457
- const audioReact = useStore((s) => s.audioReact);
458
- const wallpaper = useStore((s) => s.wallpaper);
459
- const autoTint = useStore((s) => s.autoTint);
460
- const wallpaperBlur = useStore((s) => s.wallpaperBlur);
461
- const wallpaperFrost = useStore((s) => s.wallpaperFrost);
462
- const wallpaperMask = useStore((s) => s.wallpaperMask);
463
- const wallpaperMaskBlur = useStore((s) => s.wallpaperMaskBlur);
464
- const wallpaperMaskOpacity = useStore((s) => s.wallpaperMaskOpacity);
465
- const videoBlur = useStore((s) => s.videoBlur);
466
- const videoBrightness = useStore((s) => s.videoBrightness);
467
- const fileRef = (0, import_react2.useRef)(null);
468
- const videoRef = (0, import_react2.useRef)(null);
469
- const isVideoWallpaper = wallpaper.startsWith("data:video/") || wallpaper.startsWith("idb:") || wallpaper.startsWith("fsa:");
470
- const pickVideo = () => {
471
- if (window.showOpenFilePicker !== void 0) {
472
- void (async () => {
473
- try {
474
- const [handle] = await window.showOpenFilePicker({
475
- multiple: false,
476
- types: [{ description: "Video", accept: { "video/*": [".mp4", ".webm", ".ogg", ".mov", ".m4v", ".mkv"] } }]
477
- });
478
- if (handle === void 0) return;
479
- setBackground("wallpaper");
480
- if (await saveVideoHandle(handle)) {
481
- setWallpaper(`fsa:${handle.name}`);
482
- } else {
483
- const file = await handle.getFile();
484
- void saveVideoBlob(file).then((id) => {
485
- if (id !== "") setWallpaper(id);
486
- else void fileToDataUrl(file).then(setWallpaper);
487
- });
488
- }
489
- } catch {
490
- }
491
- })();
492
- } else {
493
- videoRef.current?.click();
494
- }
495
- };
496
- const onChooseVideo = () => {
497
- if (wallpaper.startsWith("fsa:")) {
498
- void (async () => {
499
- const handle = await loadVideoHandle();
500
- if (handle !== null) {
501
- try {
502
- const permission = await handle.queryPermission({ mode: "read" });
503
- if (permission === "granted") {
504
- authorizeVideo();
505
- return;
506
- }
507
- if (permission === "prompt") {
508
- const next = await handle.requestPermission({ mode: "read" });
509
- if (next === "granted") {
510
- authorizeVideo();
511
- return;
512
- }
513
- }
514
- } catch {
515
- }
516
- }
517
- pickVideo();
518
- })();
519
- } else {
520
- pickVideo();
521
- }
522
- };
523
- const bgMin = dark ? 0 : 50;
524
- const bgMax = dark ? 50 : 100;
525
- const bgDisplay = Math.min(bgMax, Math.max(bgMin, bgBrightness));
526
- if (!enabled) return null;
527
- return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: MineradioAppearanceRow_default.group, children: [
528
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: MineradioAppearanceRow_default.subGroup, children: [
529
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: MineradioAppearanceRow_default.subTitle, children: t("mineradio.mode") }),
530
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: MineradioAppearanceRow_default.controls, children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: MineradioAppearanceRow_default.row, children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
531
- Segmented,
532
- {
533
- label: t("mineradio.mode"),
534
- value: mode,
535
- options: [
536
- { id: "mica", label: t("mineradio.modeMica") },
537
- { id: "compat", label: t("mineradio.modeCompat") }
538
- ],
539
- onSelect: setMode
540
- }
541
- ) }) })
542
- ] }),
543
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: MineradioAppearanceRow_default.subGroup, children: [
544
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: MineradioAppearanceRow_default.subTitle, children: t("mineradio.textColor") }),
545
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: MineradioAppearanceRow_default.controls, children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: MineradioAppearanceRow_default.row, children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
546
- Segmented,
547
- {
548
- label: t("mineradio.textColor"),
549
- value: textStyle,
550
- options: [
551
- { id: "champagne", label: t("mineradio.textColorChampagne") },
552
- { id: "neutral", label: t("mineradio.textColorNeutral") },
553
- { id: "mint", label: t("mineradio.textColorMint") },
554
- { id: "rose", label: t("mineradio.textColorRose") }
555
- ],
556
- onSelect: setTextStyle
557
- }
558
- ) }) })
559
- ] }),
560
- mode === "mica" && /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: MineradioAppearanceRow_default.subGroup, children: [
561
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: MineradioAppearanceRow_default.subTitle, children: t("mineradio.materialGroup") }),
562
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: MineradioAppearanceRow_default.controls, children: [
563
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(Knob, { label: t("mineradio.blur"), value: blur, min: 0, max: 40, step: 0.5, unit: "px", onChange: setBlur }),
564
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(Knob, { label: t("mineradio.frost"), value: frost, min: 0, max: 100, step: 1, unit: "%", onChange: setFrost })
565
- ] })
566
- ] }),
567
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: MineradioAppearanceRow_default.subGroup, children: [
568
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: MineradioAppearanceRow_default.subTitle, children: t("mineradio.background") }),
569
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: MineradioAppearanceRow_default.controls, children: [
570
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: MineradioAppearanceRow_default.row, children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
571
- Segmented,
572
- {
573
- label: t("mineradio.background"),
574
- value: background,
575
- options: [
576
- { id: "fluid", label: t("mineradio.backgroundFluid") },
577
- { id: "wallpaper", label: t("mineradio.backgroundWallpaper") }
578
- ],
579
- onSelect: setBackground
580
- }
581
- ) }),
582
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(HueStrip, { label: t("mineradio.dispersionHue"), value: dispersionHue, onChange: setDispersionHue }),
583
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(Knob, { label: t("mineradio.dispersionRefract"), value: dispersionRefract, min: 0, max: 100, step: 1, unit: "%", onChange: setDispersionRefract }),
584
- background === "fluid" && /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(import_jsx_runtime3.Fragment, { children: [
585
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(HueStrip, { label: t("mineradio.fluidHue"), value: fluidHue, onChange: setFluidHue }),
586
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(Knob, { label: t("mineradio.fluidDepth"), value: fluidDepth, min: 0, max: 100, step: 1, unit: "%", onChange: setFluidDepth })
587
- ] }),
588
- background === "wallpaper" && /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(import_jsx_runtime3.Fragment, { children: [
589
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: MineradioAppearanceRow_default.row, children: [
590
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: MineradioAppearanceRow_default.rowLabel, children: t("mineradio.wallpaper") }),
591
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: MineradioAppearanceRow_default.wallpaperPick, children: [
592
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
593
- "input",
594
- {
595
- ref: fileRef,
596
- type: "file",
597
- accept: "image/*",
598
- className: MineradioAppearanceRow_default.fileInput,
599
- onChange: (e) => {
600
- const file = e.target.files?.[0];
601
- if (file !== void 0) {
602
- setBackground("wallpaper");
603
- void fileToDataUrl(file).then(setWallpaper);
604
- }
605
- e.target.value = "";
606
- }
607
- }
608
- ),
609
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
610
- "input",
611
- {
612
- ref: videoRef,
613
- type: "file",
614
- accept: "video/mp4,video/webm,video/ogg,video/quicktime",
615
- className: MineradioAppearanceRow_default.fileInput,
616
- onChange: (e) => {
617
- const file = e.target.files?.[0];
618
- if (file !== void 0) {
619
- setBackground("wallpaper");
620
- void saveVideoBlob(file).then((id) => {
621
- if (id !== "") {
622
- setWallpaper(id);
623
- } else {
624
- void fileToDataUrl(file).then(setWallpaper);
625
- }
626
- });
627
- }
628
- e.target.value = "";
629
- }
630
- }
631
- ),
632
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("button", { type: "button", className: MineradioAppearanceRow_default.pickButton, onClick: () => {
633
- fileRef.current?.click();
634
- }, children: t("mineradio.chooseImage") }),
635
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("button", { type: "button", className: MineradioAppearanceRow_default.pickButton, onClick: onChooseVideo, children: t("mineradio.chooseVideo") }),
636
- wallpaper !== "" && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("button", { type: "button", className: MineradioAppearanceRow_default.deleteButton, onClick: () => {
637
- setWallpaper("");
638
- }, children: t("mineradio.deleteWallpaper") })
639
- ] })
640
- ] }),
641
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: MineradioAppearanceRow_default.row, children: [
642
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: MineradioAppearanceRow_default.rowLabel, children: t("mineradio.autoTint") }),
643
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
644
- "button",
645
- {
646
- type: "button",
647
- className: autoTint ? MineradioAppearanceRow_default.toggleOn : MineradioAppearanceRow_default.toggle,
648
- "aria-pressed": autoTint,
649
- onClick: () => {
650
- setAutoTint(!autoTint);
651
- },
652
- children: [
653
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: MineradioAppearanceRow_default.check, children: autoTint && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_dsh_client_ui_primitives2.IconCheckOutline16, {}) }),
654
- autoTint ? t("mineradio.enable") : t("mineradio.disable")
655
- ]
656
- }
657
- )
658
- ] }),
659
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: MineradioAppearanceRow_default.row, children: [
660
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: MineradioAppearanceRow_default.rowLabel, children: t("mineradio.wallpaperMask") }),
661
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
662
- "button",
663
- {
664
- type: "button",
665
- className: wallpaperMask ? MineradioAppearanceRow_default.toggleOn : MineradioAppearanceRow_default.toggle,
666
- "aria-pressed": wallpaperMask,
667
- onClick: () => {
668
- setWallpaperMask(!wallpaperMask);
669
- },
670
- children: [
671
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: MineradioAppearanceRow_default.check, children: wallpaperMask && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_dsh_client_ui_primitives2.IconCheckOutline16, {}) }),
672
- wallpaperMask ? t("mineradio.enable") : t("mineradio.disable")
673
- ]
674
- }
675
- )
676
- ] }),
677
- wallpaperMask && /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(import_jsx_runtime3.Fragment, { children: [
678
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(Knob, { label: t("mineradio.wallpaperMaskBlur"), value: wallpaperMaskBlur, min: 0, max: 40, step: 0.5, unit: "px", onChange: setWallpaperMaskBlur }),
679
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(Knob, { label: t("mineradio.wallpaperMaskOpacity"), value: wallpaperMaskOpacity, min: 0, max: 100, step: 1, unit: "%", onChange: setWallpaperMaskOpacity })
680
- ] }),
681
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: MineradioAppearanceRow_default.knobHint, children: t("mineradio.wallpaperHint") }),
682
- !isVideoWallpaper && /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(import_jsx_runtime3.Fragment, { children: [
683
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(Knob, { label: t("mineradio.wallpaperBlur"), value: wallpaperBlur, min: 0, max: 40, step: 0.5, unit: "px", onChange: setWallpaperBlur }),
684
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(Knob, { label: t("mineradio.wallpaperFrost"), value: wallpaperFrost, min: 0, max: 100, step: 1, unit: "%", onChange: setWallpaperFrost })
685
- ] }),
686
- isVideoWallpaper && /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(import_jsx_runtime3.Fragment, { children: [
687
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(Knob, { label: t("mineradio.videoBlur"), value: videoBlur, min: 0, max: 40, step: 0.5, unit: "px", onChange: setVideoBlur }),
688
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(Knob, { label: t("mineradio.videoBrightness"), value: videoBrightness, min: 0, max: 100, step: 1, unit: "%", onChange: setVideoBrightness }),
689
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: MineradioAppearanceRow_default.knobHint, children: t("mineradio.videoHint") })
690
- ] })
691
- ] }),
692
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(Knob, { label: t("mineradio.bgBrightness"), value: bgDisplay, min: bgMin, max: bgMax, step: 1, unit: "%", onChange: setBgBrightness }),
693
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: MineradioAppearanceRow_default.knobHint, children: t(dark ? "mineradio.bgBrightnessHintDark" : "mineradio.bgBrightnessHintLight") })
694
- ] })
695
- ] }),
696
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: MineradioAppearanceRow_default.subGroup, children: [
697
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: MineradioAppearanceRow_default.subTitle, children: t("mineradio.decorAmbient") }),
698
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: MineradioAppearanceRow_default.controls, children: [
699
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: MineradioAppearanceRow_default.row, children: [
700
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: MineradioAppearanceRow_default.rowLabel, children: t("mineradio.whale") }),
701
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
702
- "button",
703
- {
704
- type: "button",
705
- className: whale ? MineradioAppearanceRow_default.toggleOn : MineradioAppearanceRow_default.toggle,
706
- "aria-pressed": whale,
707
- onClick: () => {
708
- setWhale(!whale);
709
- },
710
- children: [
711
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: MineradioAppearanceRow_default.check, children: whale && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_dsh_client_ui_primitives2.IconCheckOutline16, {}) }),
712
- whale ? t("mineradio.enable") : t("mineradio.disable")
713
- ]
714
- }
715
- )
716
- ] }),
717
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: MineradioAppearanceRow_default.row, children: [
718
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: MineradioAppearanceRow_default.rowLabel, children: t("mineradio.critters") }),
719
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
720
- "button",
721
- {
722
- type: "button",
723
- className: critters ? MineradioAppearanceRow_default.toggleOn : MineradioAppearanceRow_default.toggle,
724
- "aria-pressed": critters,
725
- onClick: () => {
726
- setCritters(!critters);
727
- },
728
- children: [
729
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: MineradioAppearanceRow_default.check, children: critters && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_dsh_client_ui_primitives2.IconCheckOutline16, {}) }),
730
- critters ? t("mineradio.enable") : t("mineradio.disable")
731
- ]
732
- }
733
- )
734
- ] }),
735
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: MineradioAppearanceRow_default.row, children: [
736
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: MineradioAppearanceRow_default.rowLabel, children: t("mineradio.mesh") }),
737
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
738
- "button",
739
- {
740
- type: "button",
741
- className: mesh ? MineradioAppearanceRow_default.toggleOn : MineradioAppearanceRow_default.toggle,
742
- "aria-pressed": mesh,
743
- onClick: () => {
744
- setMesh(!mesh);
745
- },
746
- children: [
747
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: MineradioAppearanceRow_default.check, children: mesh && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_dsh_client_ui_primitives2.IconCheckOutline16, {}) }),
748
- mesh ? t("mineradio.enable") : t("mineradio.disable")
749
- ]
750
- }
751
- )
752
- ] }),
753
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: MineradioAppearanceRow_default.row, children: [
754
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: MineradioAppearanceRow_default.rowLabel, children: t("mineradio.audioReact") }),
755
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
756
- "button",
757
- {
758
- type: "button",
759
- className: audioReact ? MineradioAppearanceRow_default.toggleOn : MineradioAppearanceRow_default.toggle,
760
- "aria-pressed": audioReact,
761
- onClick: () => {
762
- setAudioReact(!audioReact);
763
- },
764
- children: [
765
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: MineradioAppearanceRow_default.check, children: audioReact && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_dsh_client_ui_primitives2.IconCheckOutline16, {}) }),
766
- audioReact ? t("mineradio.enable") : t("mineradio.disable")
767
- ]
768
- }
769
- )
770
- ] }),
771
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(Knob, { label: t("mineradio.starDensity"), value: starDensity, min: 0, max: 100, step: 1, unit: "%", onChange: setStarDensity })
772
- ] })
773
- ] }),
774
- mode === "mica" && /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: MineradioAppearanceRow_default.subGroup, children: [
775
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: MineradioAppearanceRow_default.subTitle, children: t("mineradio.decorHover") }),
776
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: MineradioAppearanceRow_default.controls, children: [
777
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: MineradioAppearanceRow_default.row, children: [
778
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: MineradioAppearanceRow_default.rowLabel, children: t("mineradio.spotlight") }),
779
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
780
- "button",
781
- {
782
- type: "button",
783
- className: spotlight ? MineradioAppearanceRow_default.toggleOn : MineradioAppearanceRow_default.toggle,
784
- "aria-pressed": spotlight,
785
- onClick: () => {
786
- setSpotlight(!spotlight);
787
- },
788
- children: [
789
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: MineradioAppearanceRow_default.check, children: spotlight && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_dsh_client_ui_primitives2.IconCheckOutline16, {}) }),
790
- spotlight ? t("mineradio.enable") : t("mineradio.disable")
791
- ]
792
- }
793
- )
794
- ] }),
795
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: MineradioAppearanceRow_default.row, children: [
796
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: MineradioAppearanceRow_default.rowLabel, children: t("mineradio.press") }),
797
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
798
- "button",
799
- {
800
- type: "button",
801
- className: press ? MineradioAppearanceRow_default.toggleOn : MineradioAppearanceRow_default.toggle,
802
- "aria-pressed": press,
803
- onClick: () => {
804
- setPress(!press);
805
- },
806
- children: [
807
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: MineradioAppearanceRow_default.check, children: press && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_dsh_client_ui_primitives2.IconCheckOutline16, {}) }),
808
- press ? t("mineradio.enable") : t("mineradio.disable")
809
- ]
810
- }
811
- )
812
- ] })
813
- ] })
814
- ] })
815
- ] });
816
- }
817
-
818
- // src/client/settings-store.ts
819
- var import_client = require("@deepseek-ai/dsh-client-runtime/client");
820
- function createMineradioRowStore() {
821
- return (0, import_client.defineStore)({
822
- init: () => ({
823
- enabled: true,
824
- mode: "mica",
825
- textStyle: "champagne",
826
- blur: 24,
827
- frost: 14,
828
- fluidHue: 44,
829
- fluidDepth: 22,
830
- dispersionHue: 44,
831
- dispersionRefract: 60,
832
- bgBrightness: 50,
833
- dark: false,
834
- background: "fluid",
835
- wallpaper: "",
836
- autoTint: true,
837
- whale: true,
838
- critters: true,
839
- mesh: true,
840
- starDensity: 60,
841
- spotlight: true,
842
- press: true,
843
- audioReact: false,
844
- wallpaperBlur: 0,
845
- wallpaperFrost: 0,
846
- wallpaperMask: false,
847
- wallpaperMaskBlur: 24,
848
- wallpaperMaskOpacity: 62,
849
- videoBlur: 6,
850
- videoBrightness: 48,
851
- revision: -1
852
- }),
853
- actions: {
854
- sync: (d, next, revision) => {
855
- if (revision <= d.revision) return;
856
- d.enabled = next.enabled;
857
- d.mode = next.mode;
858
- d.textStyle = next.textStyle;
859
- d.blur = next.blur;
860
- d.frost = next.frost;
861
- d.fluidHue = next.fluidHue;
862
- d.fluidDepth = next.fluidDepth;
863
- d.dispersionHue = next.dispersionHue;
864
- d.dispersionRefract = next.dispersionRefract;
865
- d.bgBrightness = next.bgBrightness;
866
- d.dark = next.dark;
867
- d.background = next.background;
868
- d.wallpaper = next.wallpaper;
869
- d.autoTint = next.autoTint;
870
- d.whale = next.whale;
871
- d.critters = next.critters;
872
- d.mesh = next.mesh;
873
- d.starDensity = next.starDensity;
874
- d.spotlight = next.spotlight;
875
- d.press = next.press;
876
- d.audioReact = next.audioReact;
877
- d.wallpaperBlur = next.wallpaperBlur;
878
- d.wallpaperFrost = next.wallpaperFrost;
879
- d.wallpaperMask = next.wallpaperMask;
880
- d.wallpaperMaskBlur = next.wallpaperMaskBlur;
881
- d.wallpaperMaskOpacity = next.wallpaperMaskOpacity;
882
- d.videoBlur = next.videoBlur;
883
- d.videoBrightness = next.videoBrightness;
884
- d.revision = revision;
885
- }
886
- }
887
- });
888
- }
889
-
890
- // src/client/locales.ts
891
- var NS = "settings.mineradio";
892
- var zh = {
893
- "mineradio.title": "Mineradio \u4E3B\u9898",
894
- "mineradio.description": "\u5F71\u9662\u7EA7\u79C1\u4EBA\u89C6\u89C9\u7535\u53F0\u73BB\u7483\u4E3B\u9898\u2014\u2014\u9999\u69DF\u91D1\u8F89\u5149\uFF0C\u6D41\u4F53/\u58C1\u7EB8\u53CC\u80CC\u666F\uFF0C\u6A21\u7CCA\u5EA6\u3001\u78E8\u7802\u5EA6\u3001\u8272\u8C03\u4E0E\u8F89\u5149\u90FD\u53EF\u81EA\u7531\u8C03\u8282",
895
- "mineradio.enable": "\u5F00\u542F",
896
- "mineradio.disable": "\u5173\u95ED",
897
- "mineradio.mode": "\u6A21\u5F0F",
898
- "mineradio.modeMica": "\u4E91\u6BCD\u6548\u679C",
899
- "mineradio.modeCompat": "\u517C\u5BB9\u6A21\u5F0F",
900
- "mineradio.textColor": "\u6587\u5B57\u989C\u8272",
901
- "mineradio.textColorChampagne": "\u9999\u69DF\u91D1",
902
- "mineradio.textColorNeutral": "\u4E2D\u6027",
903
- "mineradio.textColorMint": "\u8584\u8377",
904
- "mineradio.textColorRose": "\u73AB\u7470",
905
- "mineradio.materialGroup": "\u73BB\u7483\u6750\u8D28",
906
- "mineradio.decorAmbient": "\u73AF\u5883\u88C5\u9970",
907
- "mineradio.decorHover": "\u60AC\u505C\u6548\u679C",
908
- "mineradio.whale": "\u7C92\u5B50\u91D1\u9CB8",
909
- "mineradio.critters": "\u661F\u5C18\u7C92\u5B50",
910
- "mineradio.mesh": "\u7F51\u72B6\u4EA4\u4E92",
911
- "mineradio.starDensity": "\u7C92\u5B50\u5BC6\u5EA6",
912
- "mineradio.spotlight": "\u9999\u69DF\u8F89\u5149",
913
- "mineradio.press": "\u60AC\u505C\u4E0B\u538B",
914
- "mineradio.audioReact": "\u97F3\u9891\u54CD\u5E94",
915
- "mineradio.blur": "\u73BB\u7483\u6A21\u7CCA\u5EA6",
916
- "mineradio.frost": "\u78E8\u7802\u5EA6",
917
- "mineradio.fluidHue": "\u8272\u8C03",
918
- "mineradio.fluidDepth": "\u989C\u8272\u6DF1\u6D45",
919
- "mineradio.dispersionHue": "\u8272\u6563\u989C\u8272",
920
- "mineradio.dispersionRefract": "\u6298\u5C04\u5F3A\u5EA6",
921
- "mineradio.bgBrightness": "\u80CC\u666F\u4EAE\u5EA6",
922
- "mineradio.bgBrightnessHintDark": "\u6DF1\u8272\u6A21\u5F0F\uFF1A0 \u538B\u6697\u81F3\u7EAF\u9ED1\uFF0C50 \u539F\u6837",
923
- "mineradio.bgBrightnessHintLight": "\u6D45\u8272\u6A21\u5F0F\uFF1A50 \u539F\u6837\uFF0C100 \u63D0\u4EAE\u81F3\u7EAF\u767D",
924
- "mineradio.background": "\u80CC\u666F",
925
- "mineradio.backgroundFluid": "\u6D41\u4F53",
926
- "mineradio.backgroundWallpaper": "\u58C1\u7EB8",
927
- "mineradio.wallpaper": "\u58C1\u7EB8",
928
- "mineradio.autoTint": "\u81EA\u52A8\u53D6\u8272",
929
- "mineradio.wallpaperHint": "\u6D45\u8272\u58C1\u7EB8\u7528\u6D45\u8272\u6A21\u5F0F\uFF0C\u6DF1\u8272\u58C1\u7EB8\u7528\u6DF1\u8272\u6A21\u5F0F\u26A0\uFE0F",
930
- "mineradio.chooseImage": "\u9009\u62E9\u56FE\u7247",
931
- "mineradio.chooseVideo": "\u9009\u62E9\u89C6\u9891",
932
- "mineradio.deleteWallpaper": "\u5220\u9664",
933
- "mineradio.wallpaperBlur": "\u58C1\u7EB8\u6A21\u7CCA\u5EA6",
934
- "mineradio.wallpaperFrost": "\u58C1\u7EB8\u78E8\u7802\u5EA6",
935
- "mineradio.wallpaperMask": "\u78E8\u7802\u906E\u7F69",
936
- "mineradio.wallpaperMaskBlur": "\u906E\u7F69\u6A21\u7CCA\u5EA6",
937
- "mineradio.wallpaperMaskOpacity": "\u906E\u7F69\u900F\u660E\u5EA6",
938
- "mineradio.videoBlur": "\u89C6\u9891\u6A21\u7CCA\u5EA6",
939
- "mineradio.videoBrightness": "\u89C6\u9891\u4EAE\u5EA6",
940
- "mineradio.videoHint": '\u26A0\uFE0F\u89C6\u9891\u4F1A\u81EA\u52A8\u538B\u6697\u4EE5\u4FDD\u8BC1\u6587\u5B57\u6E05\u6670\uFF0C\u53EF\u7528\u6A21\u7CCA\u5EA6\u548C\u4EAE\u5EA6\u8C03\u8282\uFF1B\u5237\u65B0\u540E\u672A\u81EA\u52A8\u64AD\u653E\u65F6\u70B9\u4E00\u4E0B"\u9009\u62E9\u89C6\u9891"\u5373\u53EF\u6062\u590D'
941
- };
942
- var en = {
943
- "mineradio.title": "Mineradio theme",
944
- "mineradio.description": "A cinematic private-visual-radio glass theme \u2014 champagne glow, fluid/wallpaper backdrop, blur, frost, hue, and glow all adjustable",
945
- "mineradio.enable": "On",
946
- "mineradio.disable": "Off",
947
- "mineradio.mode": "Mode",
948
- "mineradio.modeMica": "Mica",
949
- "mineradio.modeCompat": "Compatibility",
950
- "mineradio.textColor": "Text color",
951
- "mineradio.textColorChampagne": "Champagne",
952
- "mineradio.textColorNeutral": "Neutral",
953
- "mineradio.textColorMint": "Mint",
954
- "mineradio.textColorRose": "Rose",
955
- "mineradio.materialGroup": "Glass material",
956
- "mineradio.decorAmbient": "Ambient",
957
- "mineradio.decorHover": "Hover effects",
958
- "mineradio.whale": "Particle whale",
959
- "mineradio.critters": "Star particles",
960
- "mineradio.mesh": "Interactive mesh",
961
- "mineradio.starDensity": "Particle density",
962
- "mineradio.spotlight": "Champagne glow",
963
- "mineradio.press": "Hover tilt",
964
- "mineradio.audioReact": "Audio reactive",
965
- "mineradio.blur": "Glass blur",
966
- "mineradio.frost": "Frost",
967
- "mineradio.fluidHue": "Hue",
968
- "mineradio.fluidDepth": "Color depth",
969
- "mineradio.dispersionHue": "Dispersion color",
970
- "mineradio.dispersionRefract": "Refraction",
971
- "mineradio.bgBrightness": "Background brightness",
972
- "mineradio.bgBrightnessHintDark": "Dark mode: 0 fades to pure black, 50 is unchanged",
973
- "mineradio.bgBrightnessHintLight": "Light mode: 50 is unchanged, 100 brightens to pure white",
974
- "mineradio.background": "Backdrop",
975
- "mineradio.backgroundFluid": "Fluid",
976
- "mineradio.backgroundWallpaper": "Wallpaper",
977
- "mineradio.wallpaper": "Wallpaper",
978
- "mineradio.autoTint": "Auto color",
979
- "mineradio.wallpaperHint": "Use light mode for light wallpapers, dark mode for dark wallpapers \u26A0\uFE0F",
980
- "mineradio.chooseImage": "Choose image",
981
- "mineradio.chooseVideo": "Choose video",
982
- "mineradio.deleteWallpaper": "Delete",
983
- "mineradio.wallpaperBlur": "Wallpaper blur",
984
- "mineradio.wallpaperFrost": "Wallpaper frost",
985
- "mineradio.wallpaperMask": "Frost mask",
986
- "mineradio.wallpaperMaskBlur": "Mask blur",
987
- "mineradio.wallpaperMaskOpacity": "Mask opacity",
988
- "mineradio.videoBlur": "Video blur",
989
- "mineradio.videoBrightness": "Video brightness",
990
- "mineradio.videoHint": '\u26A0\uFE0F The video is dimmed automatically to keep text readable \u2014 adjust blur and brightness here; if it does not play after a reload, click "Choose video" once to restore access'
991
- };
992
-
993
405
  // src/client/critters.ts
994
406
  var FISH_PATH = "M22.9168 1.43018C22.6713 1.31018 22.5658 1.53918 22.4223 1.65519C22.3733 1.69269 22.3318 1.74169 22.2903 1.78669C21.9317 2.1697 21.5127 2.42121 20.9657 2.39121C20.1657 2.34621 19.4827 2.59771 18.8787 3.20973C18.7502 2.45521 18.3236 2.0047 17.6746 1.71569C17.3351 1.56568 16.9916 1.41518 16.7536 1.08867C16.5876 0.856163 16.5421 0.597155 16.4591 0.341647C16.4061 0.187643 16.3536 0.0301382 16.1761 0.00363739C15.9836 -0.0263635 15.9081 0.135141 15.8326 0.270145C15.5306 0.822162 15.4136 1.43018 15.4251 2.0462C15.4516 3.43174 16.0366 4.53527 17.1991 5.3203C17.3311 5.4103 17.3651 5.5003 17.3236 5.63181C17.2441 5.90231 17.1501 6.16482 17.0671 6.43533C17.0141 6.60784 16.9351 6.64584 16.7501 6.57033C16.1121 6.30383 15.5611 5.90931 15.074 5.4328C14.2475 4.63328 13.5 3.75075 12.568 3.05973C12.349 2.89822 12.13 2.74822 11.9034 2.60522C10.9524 1.68169 12.028 0.923165 12.277 0.833162C12.5375 0.739159 12.3675 0.41615 11.5259 0.42015C10.6844 0.42365 9.91439 0.705658 8.93286 1.08117C8.78935 1.13767 8.63835 1.17867 8.48384 1.21267C7.59332 1.04367 6.66829 1.00617 5.70226 1.11517C3.88321 1.31768 2.43016 2.1777 1.36213 3.64575C0.0790928 5.4103 -0.222916 7.41536 0.146595 9.50642C0.535106 11.7105 1.66014 13.535 3.38869 14.9616C5.18125 16.4406 7.24581 17.1657 9.60138 17.0266C11.0319 16.9441 12.6245 16.7526 14.421 15.2321C14.874 15.4576 15.3496 15.5476 16.1381 15.6151C16.7456 15.6716 17.3306 15.5851 17.7836 15.4911C18.4931 15.3411 18.4441 14.6841 18.1876 14.5636C16.1081 13.595 16.5646 13.9891 16.1496 13.67C17.2061 12.42 18.8202 10.1979 19.3182 7.17235C19.3672 6.83834 19.4297 6.36783 19.4222 6.09732C19.4182 5.93231 19.4562 5.86831 19.6447 5.84931C20.1657 5.78931 20.6712 5.64681 21.1357 5.3913C22.4833 4.65528 23.0268 3.44624 23.1548 1.9972C23.1738 1.77569 23.1508 1.54668 22.9168 1.43018ZM11.1749 14.4736C9.15936 12.889 8.18184 12.3675 7.77832 12.39C7.40081 12.4125 7.46881 12.8445 7.55182 13.126C7.63882 13.404 7.75182 13.5955 7.91033 13.8396C8.01983 14.0011 8.09533 14.2411 7.80083 14.4216C7.15181 14.8231 6.02327 14.2866 5.97027 14.2601C4.65673 13.4865 3.5587 12.4655 2.78467 11.069C2.03715 9.72493 1.60314 8.28289 1.53164 6.74384C1.51264 6.37233 1.62214 6.24082 1.99215 6.17332C2.47916 6.08332 2.98118 6.06432 3.46769 6.13582C5.52476 6.43633 7.27581 7.35586 8.74385 8.8129C9.58188 9.64243 10.2159 10.634 10.8689 11.6025C11.5634 12.631 12.3105 13.611 13.262 14.4146C13.598 14.6961 13.866 14.9101 14.1225 15.0681C13.349 15.1546 12.058 15.1731 11.1749 14.4746L11.1749 14.4736ZM12.141 8.25988C12.141 8.09488 12.273 7.96338 12.439 7.96338C12.4765 7.96338 12.5105 7.97088 12.541 7.98188C12.5825 7.99688 12.6205 8.01938 12.6505 8.05338C12.7035 8.10588 12.7335 8.18088 12.7335 8.25988C12.7335 8.42489 12.6015 8.55639 12.4355 8.55639C12.2695 8.55639 12.141 8.42489 12.141 8.25988ZM15.1415 9.79893C14.949 9.87793 14.7565 9.94544 14.5715 9.95294C14.2845 9.96794 13.9715 9.85143 13.8015 9.70893C13.5375 9.48742 13.3485 9.36342 13.2695 8.97691C13.2355 8.8119 13.2545 8.55639 13.2845 8.40989C13.3525 8.09438 13.277 7.89187 13.0545 7.70787C12.8735 7.55786 12.643 7.51636 12.39 7.51636C12.2955 7.51636 12.209 7.47486 12.1445 7.44136C12.039 7.38886 11.9519 7.25735 12.035 7.09585C12.0615 7.04335 12.19 6.91584 12.22 6.89334C12.5635 6.69784 12.9595 6.76184 13.326 6.90834C13.6655 7.04735 13.9225 7.30236 14.292 7.66287C14.6695 8.09838 14.7375 8.21838 14.9525 8.54539C15.1225 8.8009 15.277 9.06341 15.3831 9.36392C15.4471 9.55142 15.3641 9.70493 15.1415 9.79893Z";
995
407
  function svg(critter, viewBox, width, style, body) {
@@ -1467,6 +879,18 @@ function attachFluidShader(canvas, params) {
1467
879
  setAudioLow: (level) => {
1468
880
  audioLow = Math.max(0, Math.min(1, level));
1469
881
  },
882
+ setRunning: (on) => {
883
+ if (on) {
884
+ if (running) return;
885
+ running = true;
886
+ previous = 0;
887
+ raf = requestAnimationFrame(frame);
888
+ return;
889
+ }
890
+ if (!running) return;
891
+ running = false;
892
+ cancelAnimationFrame(raf);
893
+ },
1470
894
  dispose: () => {
1471
895
  cancelAnimationFrame(raf);
1472
896
  window.removeEventListener("mousemove", onMouseMove);
@@ -3162,26 +2586,26 @@ var MINERADIO_TOKEN_OVERRIDES = {
3162
2586
  "--dsw-alias-bg-mask-3": { light: "rgba(24, 22, 18, 0.30)", dark: "rgba(4, 5, 6, 0.50)" },
3163
2587
  "--dsw-alias-bg-mask-drop": { light: "rgba(247, 243, 234, 0.72)", dark: "rgba(8, 9, 11, 0.70)" },
3164
2588
  // Hairlines and strokes.
3165
- "--dsw-alias-border-l1": { light: "rgba(154, 111, 44, 0.12)", dark: "rgba(244, 210, 138, 0.09)" },
3166
- "--dsw-alias-border-l2": { light: "rgba(154, 111, 44, 0.18)", dark: "rgba(244, 210, 138, 0.16)" },
3167
- "--dsw-alias-border-l2-darkmode-thin": { light: "rgba(154, 111, 44, 0.12)", dark: "rgba(244, 210, 138, 0.10)" },
3168
- "--dsw-alias-border-l3": { light: "rgba(154, 111, 44, 0.26)", dark: "rgba(244, 210, 138, 0.26)" },
3169
- "--dsw-alias-border-l4": { light: "rgba(154, 111, 44, 0.36)", dark: "rgba(244, 210, 138, 0.36)" },
3170
- "--dsw-alias-border-inverted": { light: "rgba(154, 111, 44, 0.08)", dark: "rgba(244, 210, 138, 0.12)" },
3171
- "--dsw-alias-border-inverted2": { light: "rgba(154, 111, 44, 0.10)", dark: "rgba(244, 210, 138, 0.08)" },
2589
+ "--dsw-alias-border-l1": { light: "rgba(122, 86, 28, 0.20)", dark: "rgba(244, 210, 138, 0.09)" },
2590
+ "--dsw-alias-border-l2": { light: "rgba(122, 86, 28, 0.28)", dark: "rgba(244, 210, 138, 0.16)" },
2591
+ "--dsw-alias-border-l2-darkmode-thin": { light: "rgba(122, 86, 28, 0.20)", dark: "rgba(244, 210, 138, 0.10)" },
2592
+ "--dsw-alias-border-l3": { light: "rgba(122, 86, 28, 0.38)", dark: "rgba(244, 210, 138, 0.26)" },
2593
+ "--dsw-alias-border-l4": { light: "rgba(122, 86, 28, 0.50)", dark: "rgba(244, 210, 138, 0.36)" },
2594
+ "--dsw-alias-border-inverted": { light: "rgba(122, 86, 28, 0.16)", dark: "rgba(244, 210, 138, 0.12)" },
2595
+ "--dsw-alias-border-inverted2": { light: "rgba(122, 86, 28, 0.18)", dark: "rgba(244, 210, 138, 0.08)" },
3172
2596
  // Text ink.
3173
- "--dsw-alias-label-primary": { light: "#2A241A", dark: "#F2F0EA" },
3174
- "--dsw-alias-label-secondary": { light: "#5C5240", dark: "#CBC4B8" },
3175
- "--dsw-alias-label-tertiary": { light: "#7A6F5A", dark: "#98917F" },
3176
- "--dsw-alias-label-caption": { light: "#8F8572", dark: "#7A7468" },
3177
- "--dsw-alias-label-dimmed": { light: "#C8BFAB", dark: "#5A564C" },
2597
+ "--dsw-alias-label-primary": { light: "#1F1A14", dark: "#F2F0EA" },
2598
+ "--dsw-alias-label-secondary": { light: "#4A4030", dark: "#CBC4B8" },
2599
+ "--dsw-alias-label-tertiary": { light: "#675A45", dark: "#98917F" },
2600
+ "--dsw-alias-label-caption": { light: "#7A6C54", dark: "#7A7468" },
2601
+ "--dsw-alias-label-dimmed": { light: "#A89880", dark: "#5A564C" },
3178
2602
  "--dsw-alias-label-primary-bluish": { light: "#A97A2A", dark: "#E8CEA0" },
3179
2603
  "--dsw-alias-label-primary-dimmed": { light: "#4A3A1E", dark: "#EADFC6" },
3180
2604
  "--dsw-alias-label-primary-inverted": { light: "#FFFFFF", dark: "#15171C" },
3181
2605
  "--dsw-alias-label-primary-foreground": { light: "#FFFFFF", dark: "#15171C" },
3182
2606
  // Brand (wordmark ink stays scheme ink; accents go champagne gold).
3183
- "--dsw-alias-brand-primary": { light: "#2A241A", dark: "#F2F0EA" },
3184
- "--dsw-alias-brand-text": { light: "#2A241A", dark: "#F2F0EA" },
2607
+ "--dsw-alias-brand-primary": { light: "#1F1A14", dark: "#F2F0EA" },
2608
+ "--dsw-alias-brand-text": { light: "#1F1A14", dark: "#F2F0EA" },
3185
2609
  "--dsw-alias-brand-primary-invert": { light: "#FFFFFF", dark: INK },
3186
2610
  "--dsw-alias-brand-primary-new-colorprimary-new-color": { light: CHAMPAGNE_DEEP, dark: CHAMPAGNE },
3187
2611
  // States.
@@ -3198,7 +2622,7 @@ var MINERADIO_TOKEN_OVERRIDES = {
3198
2622
  "--dsw-alias-button-elevated-fill": { light: "#FFFFFF", dark: "color-mix(in srgb, rgb(21 23 28) calc(55% * var(--dsh-aqua-frost, 1)), transparent)" },
3199
2623
  "--dsw-alias-button-floating-fill": { light: "#FFFFFF", dark: "color-mix(in srgb, rgb(21 23 28) calc(55% * var(--dsh-aqua-frost, 1)), transparent)" },
3200
2624
  "--dsw-alias-button-floating-hover": { light: "#F2EAE0", dark: "color-mix(in srgb, rgb(28 31 37) calc(55% * var(--dsh-aqua-frost, 1)), transparent)" },
3201
- "--dsw-alias-button-contrast-fill": { light: "#2A241A", dark: "#F2F0EA" },
2625
+ "--dsw-alias-button-contrast-fill": { light: "#1F1A14", dark: "#F2F0EA" },
3202
2626
  "--dsw-alias-button-ghost-active-fill": { light: "rgba(244, 210, 138, 0.16)", dark: "color-mix(in srgb, rgb(28 31 37) calc(55% * var(--dsh-aqua-frost, 1)), transparent)" },
3203
2627
  "--dsw-alias-button-ghost-active-hover": { light: "rgba(244, 210, 138, 0.22)", dark: "color-mix(in srgb, rgb(21 23 28) calc(55% * var(--dsh-aqua-frost, 1)), transparent)" },
3204
2628
  "--dsw-alias-button-ghost-active-border": { light: CHAMPAGNE_DEEP, dark: "#BF9E5B" },
@@ -3281,7 +2705,7 @@ function hslHex(h, s, l) {
3281
2705
  function textInkPalette(style) {
3282
2706
  if (style === "champagne") {
3283
2707
  return {
3284
- light: { primary: "#2A241A", secondary: "#5C5240", tertiary: "#7A6F5A", caption: "#8F8572", dimmed: "#C8BFAB", bluish: "#A97A2A", primaryDimmed: "#4A3A1E" },
2708
+ light: { primary: "#1F1A14", secondary: "#4A4030", tertiary: "#675A45", caption: "#7A6C54", dimmed: "#A89880", bluish: "#8A6420", primaryDimmed: "#3A2E18" },
3285
2709
  dark: { primary: "#F2F0EA", secondary: "#CBC4B8", tertiary: "#98917F", caption: "#7A7468", dimmed: "#5A564C", bluish: "#E8CEA0", primaryDimmed: "#EADFC6" }
3286
2710
  };
3287
2711
  }
@@ -3289,13 +2713,13 @@ function textInkPalette(style) {
3289
2713
  const s = style === "mint" ? 0.18 : style === "rose" ? 0.15 : 0;
3290
2714
  return {
3291
2715
  light: {
3292
- primary: hslHex(h, s, 0.13),
3293
- secondary: hslHex(h, s, 0.32),
3294
- tertiary: hslHex(h, s, 0.46),
3295
- caption: hslHex(h, s, 0.53),
3296
- dimmed: hslHex(h, s, 0.75),
3297
- bluish: hslHex(h, Math.min(1, s + 0.12), 0.34),
3298
- primaryDimmed: hslHex(h, s, 0.22)
2716
+ primary: hslHex(h, s, 0.11),
2717
+ secondary: hslHex(h, s, 0.26),
2718
+ tertiary: hslHex(h, s, 0.38),
2719
+ caption: hslHex(h, s, 0.46),
2720
+ dimmed: hslHex(h, s, 0.62),
2721
+ bluish: hslHex(h, Math.min(1, s + 0.12), 0.28),
2722
+ primaryDimmed: hslHex(h, s, 0.18)
3299
2723
  },
3300
2724
  dark: {
3301
2725
  primary: hslHex(h, s, 0.95),
@@ -3346,6 +2770,90 @@ function writeEnabled(value) {
3346
2770
  } catch {
3347
2771
  }
3348
2772
  }
2773
+ var SCENE_BUNDLES = {
2774
+ studio: {
2775
+ textStyle: "champagne",
2776
+ blur: 22,
2777
+ frost: 50,
2778
+ fluidHue: 44,
2779
+ fluidDepth: 22,
2780
+ dispersionHue: 44,
2781
+ dispersionRefract: 60,
2782
+ starDensity: 60,
2783
+ spotlight: true,
2784
+ press: true,
2785
+ audioReact: false,
2786
+ background: "fluid",
2787
+ rainbow: false
2788
+ },
2789
+ deepsea: {
2790
+ textStyle: "mint",
2791
+ blur: 24,
2792
+ frost: 48,
2793
+ fluidHue: 166,
2794
+ fluidDepth: 28,
2795
+ dispersionHue: 166,
2796
+ dispersionRefract: 55,
2797
+ starDensity: 70,
2798
+ spotlight: true,
2799
+ press: true,
2800
+ audioReact: false,
2801
+ background: "fluid",
2802
+ rainbow: false
2803
+ },
2804
+ midnight: {
2805
+ textStyle: "rose",
2806
+ blur: 22,
2807
+ frost: 52,
2808
+ fluidHue: 352,
2809
+ fluidDepth: 26,
2810
+ dispersionHue: 352,
2811
+ dispersionRefract: 55,
2812
+ starDensity: 55,
2813
+ spotlight: true,
2814
+ press: true,
2815
+ audioReact: false,
2816
+ background: "fluid",
2817
+ rainbow: false
2818
+ },
2819
+ mist: {
2820
+ textStyle: "neutral",
2821
+ blur: 26,
2822
+ frost: 78,
2823
+ fluidHue: 44,
2824
+ fluidDepth: 18,
2825
+ dispersionHue: 44,
2826
+ dispersionRefract: 30,
2827
+ starDensity: 20,
2828
+ spotlight: false,
2829
+ press: false,
2830
+ audioReact: false,
2831
+ background: "fluid",
2832
+ rainbow: false
2833
+ },
2834
+ rainbow: {
2835
+ textStyle: "neutral",
2836
+ blur: 22,
2837
+ frost: 48,
2838
+ fluidHue: 44,
2839
+ fluidDepth: 24,
2840
+ dispersionHue: 44,
2841
+ dispersionRefract: 0,
2842
+ starDensity: 50,
2843
+ spotlight: true,
2844
+ press: true,
2845
+ audioReact: false,
2846
+ background: "fluid",
2847
+ rainbow: true
2848
+ }
2849
+ };
2850
+ function matchScenePreset(settings) {
2851
+ for (const id of Object.keys(SCENE_BUNDLES)) {
2852
+ const bundle = SCENE_BUNDLES[id];
2853
+ if (settings.textStyle === bundle.textStyle && settings.blur === bundle.blur && settings.frost === bundle.frost && settings.fluidHue === bundle.fluidHue && settings.fluidDepth === bundle.fluidDepth && settings.dispersionHue === bundle.dispersionHue && settings.dispersionRefract === bundle.dispersionRefract && settings.starDensity === bundle.starDensity && settings.spotlight === bundle.spotlight && settings.press === bundle.press && settings.audioReact === bundle.audioReact && settings.background === bundle.background && settings.rainbow === bundle.rainbow) return id;
2854
+ }
2855
+ return null;
2856
+ }
3349
2857
  var SETTINGS_DEFAULTS = {
3350
2858
  mode: "mica",
3351
2859
  textStyle: "champagne",
@@ -3372,7 +2880,9 @@ var SETTINGS_DEFAULTS = {
3372
2880
  wallpaperMaskBlur: 24,
3373
2881
  wallpaperMaskOpacity: 62,
3374
2882
  videoBlur: 6,
3375
- videoBrightness: 45
2883
+ videoBrightness: 45,
2884
+ perf: "balanced",
2885
+ rainbow: false
3376
2886
  };
3377
2887
  var NUMERIC_KEYS = {
3378
2888
  blur: "dsh.ui-mineradio.blur",
@@ -3402,6 +2912,35 @@ var MESH_KEY = "dsh.ui-mineradio.mesh";
3402
2912
  var SPOTLIGHT_KEY = "dsh.ui-mineradio.spotlight";
3403
2913
  var PRESS_KEY = "dsh.ui-mineradio.press";
3404
2914
  var AUDIO_REACT_KEY = "dsh.ui-mineradio.audioReact";
2915
+ var PERF_KEY = "dsh.ui-mineradio.perf";
2916
+ var RAINBOW_KEY = "dsh.ui-mineradio.rainbow";
2917
+ function readPerf() {
2918
+ try {
2919
+ const stored = localStorage.getItem(PERF_KEY);
2920
+ return stored === "performance" || stored === "vivid" ? stored : "balanced";
2921
+ } catch {
2922
+ return "balanced";
2923
+ }
2924
+ }
2925
+ function writePerf(value) {
2926
+ try {
2927
+ localStorage.setItem(PERF_KEY, value);
2928
+ } catch {
2929
+ }
2930
+ }
2931
+ function readRainbow() {
2932
+ try {
2933
+ return localStorage.getItem(RAINBOW_KEY) === "true";
2934
+ } catch {
2935
+ return false;
2936
+ }
2937
+ }
2938
+ function writeRainbow(value) {
2939
+ try {
2940
+ localStorage.setItem(RAINBOW_KEY, String(value));
2941
+ } catch {
2942
+ }
2943
+ }
3405
2944
  function clampSetting(key, value) {
3406
2945
  const max = key === "blur" || key === "wallpaperBlur" || key === "wallpaperMaskBlur" || key === "videoBlur" ? 40 : key === "frost" || key === "wallpaperFrost" || key === "wallpaperMaskOpacity" || key === "starDensity" || key === "bgBrightness" || key === "videoBrightness" || key === "dispersionRefract" ? 100 : 360;
3407
2946
  return Number.isFinite(value) ? Math.min(max, Math.max(0, value)) : SETTINGS_DEFAULTS[key];
@@ -3621,6 +3160,9 @@ var MineradioLayer = class {
3621
3160
  __publicField(this, "extractedHue");
3622
3161
  /** Wallpaper source the extracted hue was computed from (guards re-reads). */
3623
3162
  __publicField(this, "extractedWallpaper");
3163
+ /** Live rainbow hue, only while the rainbow scene is on. Not persisted. */
3164
+ __publicField(this, "rainbowHue", 0);
3165
+ __publicField(this, "rainbowRaf", 0);
3624
3166
  __publicField(this, "ctx");
3625
3167
  this.ctx = ctx;
3626
3168
  ctx.effect(() => {
@@ -3723,9 +3265,60 @@ var MineradioLayer = class {
3723
3265
  wallpaperMaskBlur: readSetting("wallpaperMaskBlur"),
3724
3266
  wallpaperMaskOpacity: readSetting("wallpaperMaskOpacity"),
3725
3267
  videoBlur: readSetting("videoBlur"),
3726
- videoBrightness: readSetting("videoBrightness")
3268
+ videoBrightness: readSetting("videoBrightness"),
3269
+ perf: readPerf(),
3270
+ rainbow: readRainbow()
3727
3271
  };
3728
3272
  }
3273
+ /** Set the performance gate (does not rewrite scene knobs). */
3274
+ setPerf(value) {
3275
+ if (value === this.settings.perf) return;
3276
+ this.settings.perf = value;
3277
+ writePerf(value);
3278
+ if (!this.enabled) return;
3279
+ this.applySettings();
3280
+ this.syncMotionLayers();
3281
+ }
3282
+ /** Apply one named scene. Wallpaper / video files stay as they are. */
3283
+ applyScene(preset) {
3284
+ const bundle = SCENE_BUNDLES[preset];
3285
+ this.settings.textStyle = bundle.textStyle;
3286
+ this.settings.blur = bundle.blur;
3287
+ this.settings.frost = bundle.frost;
3288
+ this.settings.fluidHue = bundle.fluidHue;
3289
+ this.settings.fluidDepth = bundle.fluidDepth;
3290
+ this.settings.dispersionHue = bundle.dispersionHue;
3291
+ this.settings.dispersionRefract = bundle.dispersionRefract;
3292
+ this.settings.starDensity = bundle.starDensity;
3293
+ this.settings.spotlight = bundle.spotlight;
3294
+ this.settings.press = bundle.press;
3295
+ this.settings.audioReact = bundle.audioReact;
3296
+ this.settings.background = bundle.background;
3297
+ this.settings.rainbow = bundle.rainbow;
3298
+ writeTextStyle(bundle.textStyle);
3299
+ writeSetting("blur", bundle.blur);
3300
+ writeSetting("frost", bundle.frost);
3301
+ writeSetting("fluidHue", bundle.fluidHue);
3302
+ writeSetting("fluidDepth", bundle.fluidDepth);
3303
+ writeSetting("dispersionHue", bundle.dispersionHue);
3304
+ writeSetting("dispersionRefract", bundle.dispersionRefract);
3305
+ writeSetting("starDensity", bundle.starDensity);
3306
+ writeSpotlight(bundle.spotlight);
3307
+ writePress(bundle.press);
3308
+ writeAudioReact(bundle.audioReact);
3309
+ writeBackground(bundle.background);
3310
+ writeRainbow(bundle.rainbow);
3311
+ if (!this.enabled) return;
3312
+ this.applySettings();
3313
+ this.applyTokens();
3314
+ this.applyFluidPalettes();
3315
+ this.dispersion?.setTint(this.dispersionTintHue());
3316
+ this.dispersion?.setRefraction(bundle.dispersionRefract);
3317
+ this.starRiverHandle?.setDensity(bundle.starDensity);
3318
+ this.syncAudioReact();
3319
+ this.syncMotionLayers();
3320
+ this.syncRainbowDrift();
3321
+ }
3729
3322
  /** Flip the layer: persist, then apply or retract every owned effect. */
3730
3323
  setEnabled(value) {
3731
3324
  if (value === this.enabled) return;
@@ -3978,11 +3571,11 @@ var MineradioLayer = class {
3978
3571
  const compat = this.settings.mode === "compat";
3979
3572
  document.documentElement.toggleAttribute("data-dsh-float", !compat);
3980
3573
  document.documentElement.toggleAttribute("data-dsh-compat", compat);
3981
- document.documentElement.toggleAttribute(SPOTLIGHT_ATTRIBUTE, !compat && this.settings.spotlight);
3982
- document.documentElement.toggleAttribute(PRESS_ATTRIBUTE, !compat && this.settings.press);
3574
+ document.documentElement.toggleAttribute(SPOTLIGHT_ATTRIBUTE, !compat && this.settings.spotlight && this.allowHoverFx());
3575
+ document.documentElement.toggleAttribute(PRESS_ATTRIBUTE, !compat && this.settings.press && this.allowHoverFx());
3983
3576
  const ambient = document.querySelector("[data-dsh-aqua-ambient]");
3984
3577
  if (ambient !== null) ambient.dataset.background = this.settings.background;
3985
- if (ambient !== null) ambient.dataset.critters = this.settings.critters ? "on" : "off";
3578
+ if (ambient !== null) ambient.dataset.critters = this.settings.critters && this.allowDecor() ? "on" : "off";
3986
3579
  const wallpaper = this.settings.wallpaper;
3987
3580
  const isVideo = wallpaper.startsWith("data:video/") || wallpaper.startsWith("idb:") || wallpaper.startsWith("fsa:");
3988
3581
  const wallpaperLayer = document.querySelector("[data-dsh-aqua-wallpaper-layer]");
@@ -4169,54 +3762,90 @@ var MineradioLayer = class {
4169
3762
  document.documentElement.setAttribute(MINERADIO_ATTRIBUTE, "");
4170
3763
  ensureAmbientScene();
4171
3764
  ensurePageFades();
4172
- this.syncStarRiver();
4173
- this.startCinemaDrift();
4174
- this.startGlassDispersion();
4175
- this.startSpecularParallax();
4176
3765
  this.applySettings();
4177
3766
  this.applyTokens();
4178
3767
  this.mountFluid();
4179
3768
  this.startSeamStamper();
4180
3769
  this.startSpotlightFeed();
3770
+ this.syncMotionLayers();
3771
+ this.syncRainbowDrift();
3772
+ }
3773
+ /** Performance / balanced keep the last fluid frame; vivid runs the loop. */
3774
+ allowFluidLoop() {
3775
+ return this.settings.perf === "vivid";
3776
+ }
3777
+ /** Balanced + vivid keep stars / drift / dispersion / specular. */
3778
+ allowMotionFx() {
3779
+ return this.settings.perf !== "performance";
3780
+ }
3781
+ /** Only vivid mounts the optional extras (whale / mesh / audio). */
3782
+ allowDecor() {
3783
+ return this.settings.perf === "vivid";
3784
+ }
3785
+ /** Hover glow / tilt stay off in the performance gate. */
3786
+ allowHoverFx() {
3787
+ return this.settings.perf !== "performance";
3788
+ }
3789
+ /** Mount or drop motion layers to match the performance gate. */
3790
+ syncMotionLayers() {
3791
+ this.syncStarRiver();
3792
+ this.syncCinemaDrift();
3793
+ this.syncGlassDispersion();
3794
+ this.syncSpecularParallax();
4181
3795
  this.syncWhale();
4182
3796
  this.syncMesh();
4183
3797
  this.syncAudioReact();
3798
+ this.mainFluid?.setRunning(this.allowFluidLoop());
4184
3799
  }
4185
- /** Mount the Mineradio star-river particle stage (always on with the layer:
4186
- * it is the skin's signature motion, like the player's backdrop). */
3800
+ /** Mount the Mineradio star-river particle stage when the gate allows it. */
4187
3801
  syncStarRiver() {
4188
- if (!this.enabled) return;
4189
- if (this.starRiverHandle !== void 0) return;
4190
- const ambient = document.querySelector("[data-dsh-aqua-ambient]");
4191
- if (ambient === null) return;
4192
- this.starRiverHandle = mountStarRiver(ambient, { dark: this.dark, density: this.settings.starDensity });
3802
+ if (this.enabled && this.allowMotionFx()) {
3803
+ if (this.starRiverHandle !== void 0) return;
3804
+ const ambient = document.querySelector("[data-dsh-aqua-ambient]");
3805
+ if (ambient === null) return;
3806
+ this.starRiverHandle = mountStarRiver(ambient, { dark: this.dark, density: this.settings.starDensity });
3807
+ return;
3808
+ }
3809
+ this.starRiverHandle?.dispose();
3810
+ this.starRiverHandle = void 0;
4193
3811
  }
4194
- /** Start the cinematic camera drift over the fluid + star-river layers
4195
- * (idempotent per mount; the subtle parallax "breathe" of the backdrop). */
4196
- startCinemaDrift() {
4197
- if (!this.enabled) return;
4198
- if (this.cinemaDrift !== void 0) return;
4199
- const ambient = document.querySelector("[data-dsh-aqua-ambient]");
4200
- if (ambient === null) return;
4201
- this.cinemaDrift = startCinemaDrift(ambient);
3812
+ /** Start or stop the cinematic camera drift. */
3813
+ syncCinemaDrift() {
3814
+ if (this.enabled && this.allowMotionFx()) {
3815
+ if (this.cinemaDrift !== void 0) return;
3816
+ const ambient = document.querySelector("[data-dsh-aqua-ambient]");
3817
+ if (ambient === null) return;
3818
+ this.cinemaDrift = startCinemaDrift(ambient);
3819
+ return;
3820
+ }
3821
+ this.cinemaDrift?.dispose();
3822
+ this.cinemaDrift = void 0;
4202
3823
  }
4203
- /** Start the glass chromatic-dispersion filter (idempotent per mount). */
4204
- startGlassDispersion() {
4205
- if (!this.enabled) return;
4206
- if (this.dispersion !== void 0) return;
4207
- this.dispersion = startGlassDispersion();
4208
- this.dispersion.setTint(this.dispersionTintHue());
4209
- this.dispersion.setRefraction(this.settings.dispersionRefract);
3824
+ /** Start or stop the glass chromatic-dispersion filter. */
3825
+ syncGlassDispersion() {
3826
+ if (this.enabled && this.allowMotionFx()) {
3827
+ if (this.dispersion !== void 0) return;
3828
+ this.dispersion = startGlassDispersion();
3829
+ this.dispersion.setTint(this.dispersionTintHue());
3830
+ this.dispersion.setRefraction(this.settings.dispersionRefract);
3831
+ return;
3832
+ }
3833
+ this.dispersion?.dispose();
3834
+ this.dispersion = void 0;
4210
3835
  }
4211
- /** Start the specular-highlight cursor parallax (idempotent per mount). */
4212
- startSpecularParallax() {
4213
- if (!this.enabled) return;
4214
- if (this.specularParallaxDisposer !== void 0) return;
4215
- this.specularParallaxDisposer = startSpecularParallax();
3836
+ /** Start or stop the specular-highlight cursor parallax. */
3837
+ syncSpecularParallax() {
3838
+ if (this.enabled && this.allowHoverFx()) {
3839
+ if (this.specularParallaxDisposer !== void 0) return;
3840
+ this.specularParallaxDisposer = startSpecularParallax();
3841
+ return;
3842
+ }
3843
+ this.specularParallaxDisposer?.();
3844
+ this.specularParallaxDisposer = void 0;
4216
3845
  }
4217
3846
  /** Mount or drop the particle whale to match enabled + the whale flag. */
4218
3847
  syncWhale() {
4219
- if (this.enabled && this.settings.whale) {
3848
+ if (this.enabled && this.settings.whale && this.allowDecor()) {
4220
3849
  if (this.whaleHandle !== void 0) return;
4221
3850
  const ambient = document.querySelector("[data-dsh-aqua-ambient]");
4222
3851
  if (ambient === null) return;
@@ -4228,7 +3857,7 @@ var MineradioLayer = class {
4228
3857
  }
4229
3858
  /** Mount or drop the interactive mesh to match enabled + the mesh flag. */
4230
3859
  syncMesh() {
4231
- if (this.enabled && this.settings.mesh) {
3860
+ if (this.enabled && this.settings.mesh && this.allowDecor()) {
4232
3861
  if (this.meshHandle !== void 0) return;
4233
3862
  const ambient = document.querySelector("[data-dsh-aqua-ambient]");
4234
3863
  if (ambient === null) return;
@@ -4244,7 +3873,7 @@ var MineradioLayer = class {
4244
3873
  syncAudioReact() {
4245
3874
  const root = document.documentElement;
4246
3875
  const reducedMotion = window.matchMedia("(prefers-reduced-motion: reduce)").matches;
4247
- const shouldRun = this.enabled && this.settings.audioReact && !reducedMotion;
3876
+ const shouldRun = this.enabled && this.settings.audioReact && this.allowDecor() && !reducedMotion;
4248
3877
  if (shouldRun) {
4249
3878
  if (this.audioHandle !== void 0) return;
4250
3879
  root.dataset.dshAquaAudioStatus = "starting";
@@ -4260,94 +3889,837 @@ var MineradioLayer = class {
4260
3889
  this.audioHandle?.dispose();
4261
3890
  this.audioHandle = void 0;
4262
3891
  }
4263
- });
3892
+ });
3893
+ } else {
3894
+ root.dataset.dshAquaAudioStatus = !this.enabled ? "theme-off" : !this.settings.audioReact ? "toggle-off" : "reduced-motion";
3895
+ this.audioHandle?.dispose();
3896
+ this.audioHandle = void 0;
3897
+ root.style.removeProperty("--dsh-aqua-audio-glow");
3898
+ delete root.dataset.dshAquaAudioEnv;
3899
+ }
3900
+ }
3901
+ unmount() {
3902
+ document.documentElement.removeAttribute(MINERADIO_ATTRIBUTE);
3903
+ document.documentElement.removeAttribute("data-dsh-float");
3904
+ document.documentElement.removeAttribute("data-dsh-compat");
3905
+ document.documentElement.removeAttribute("data-dsh-aqua-wallpaper");
3906
+ document.documentElement.removeAttribute("data-dsh-aqua-wallpaper-mask");
3907
+ document.documentElement.removeAttribute("data-dsh-aqua-media");
3908
+ document.documentElement.removeAttribute(SPOTLIGHT_ATTRIBUTE);
3909
+ document.documentElement.removeAttribute(PRESS_ATTRIBUTE);
3910
+ this.spotlightDisposer?.();
3911
+ this.spotlightDisposer = void 0;
3912
+ this.starRiverHandle?.dispose();
3913
+ this.starRiverHandle = void 0;
3914
+ this.cinemaDrift?.dispose();
3915
+ this.cinemaDrift = void 0;
3916
+ this.dispersion?.dispose();
3917
+ this.dispersion = void 0;
3918
+ this.specularParallaxDisposer?.();
3919
+ this.specularParallaxDisposer = void 0;
3920
+ this.whaleHandle?.dispose();
3921
+ this.whaleHandle = void 0;
3922
+ this.meshHandle?.dispose();
3923
+ this.meshHandle = void 0;
3924
+ this.audioHandle?.dispose();
3925
+ this.audioHandle = void 0;
3926
+ this.stopRainbowDrift();
3927
+ document.documentElement.style.removeProperty("--dsh-aqua-audio-glow");
3928
+ delete document.documentElement.dataset.dshAquaAudioEnv;
3929
+ delete document.documentElement.dataset.dshAquaAudioStatus;
3930
+ this.tokenDisposer?.();
3931
+ this.tokenDisposer = void 0;
3932
+ if (this.videoObjectUrl !== void 0) {
3933
+ URL.revokeObjectURL(this.videoObjectUrl);
3934
+ this.videoObjectUrl = void 0;
3935
+ this.videoBlobId = void 0;
3936
+ }
3937
+ this.teardownFluid();
3938
+ removeAmbientScene();
3939
+ removePageFades();
3940
+ this.seamDisposer?.();
3941
+ this.seamDisposer = void 0;
3942
+ }
3943
+ /** Attach the fluid shader and the interaction feeds. */
3944
+ mountFluid() {
3945
+ const mainCanvas = document.querySelector("[data-dsh-aqua-fluid-canvas]");
3946
+ try {
3947
+ if (mainCanvas !== null) this.mainFluid = attachFluidShader(mainCanvas, this.fluidParams());
3948
+ this.applyFluidPalettes();
3949
+ if (this.mainFluid !== void 0 && mainCanvas !== null) {
3950
+ this.interactionDisposer = attachFluidInteractions({
3951
+ main: this.mainFluid,
3952
+ mainCanvas
3953
+ });
3954
+ }
3955
+ } catch {
3956
+ this.mainFluid = void 0;
3957
+ }
3958
+ }
3959
+ teardownFluid() {
3960
+ this.interactionDisposer?.();
3961
+ this.interactionDisposer = void 0;
3962
+ this.mainFluid?.dispose();
3963
+ this.mainFluid = void 0;
3964
+ }
3965
+ fluidParams() {
3966
+ const hue = this.settings.rainbow ? this.rainbowHue : this.settings.fluidHue;
3967
+ const depth = this.settings.rainbow ? Math.max(this.settings.fluidDepth, 22) : this.settings.fluidDepth;
3968
+ const tones = fluidToneColors(this.dark, hue, depth);
3969
+ if (!this.settings.rainbow) return { ...SITE_FLUID_PARAMS, ...tones };
3970
+ const mid = fluidToneColors(this.dark, hue + 120, depth);
3971
+ const far = fluidToneColors(this.dark, hue + 240, depth);
3972
+ return { ...SITE_FLUID_PARAMS, color1: tones.color1, color2: mid.color2, color3: far.color3 };
3973
+ }
3974
+ /** Slow hue walk for the rainbow scene. Does not rewrite the stored knob. */
3975
+ syncRainbowDrift() {
3976
+ const reduced = window.matchMedia("(prefers-reduced-motion: reduce)").matches;
3977
+ const should = this.enabled && this.settings.rainbow && this.settings.background === "fluid" && !reduced;
3978
+ if (!should) {
3979
+ this.stopRainbowDrift();
3980
+ return;
3981
+ }
3982
+ if (this.rainbowRaf !== 0) return;
3983
+ this.rainbowHue = this.settings.fluidHue;
3984
+ let last = 0;
3985
+ const tick = (now) => {
3986
+ this.rainbowRaf = requestAnimationFrame(tick);
3987
+ if (now - last < 80) return;
3988
+ last = now;
3989
+ this.rainbowHue = (this.rainbowHue + 0.35) % 360;
3990
+ this.applyFluidPalettes();
3991
+ };
3992
+ this.rainbowRaf = requestAnimationFrame(tick);
3993
+ }
3994
+ stopRainbowDrift() {
3995
+ if (this.rainbowRaf === 0) return;
3996
+ cancelAnimationFrame(this.rainbowRaf);
3997
+ this.rainbowRaf = 0;
3998
+ }
3999
+ applyFluidPalettes() {
4000
+ this.mainFluid?.setParams(this.fluidParams());
4001
+ }
4002
+ /** Stamp the data-* seams the stylesheet keys off (self-contained mode). */
4003
+ startSeamStamper() {
4004
+ if (this.seamDisposer !== void 0) return;
4005
+ this.seamDisposer = startSeamStamper();
4006
+ }
4007
+ /** Attach the cursor-spotlight pointer feeds (idempotent per mount). */
4008
+ startSpotlightFeed() {
4009
+ if (this.spotlightDisposer !== void 0) return;
4010
+ this.spotlightDisposer = startSpotlight();
4011
+ }
4012
+ };
4013
+
4014
+ // src/client/MineradioAppearanceRow.tsx
4015
+ var import_jsx_runtime3 = require("react/jsx-runtime");
4016
+ function Fold({
4017
+ title,
4018
+ open,
4019
+ onToggle,
4020
+ children
4021
+ }) {
4022
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: MineradioAppearanceRow_default.fold, children: [
4023
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
4024
+ "button",
4025
+ {
4026
+ type: "button",
4027
+ className: MineradioAppearanceRow_default.foldHead,
4028
+ "aria-expanded": open,
4029
+ onClick: onToggle,
4030
+ children: [
4031
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: MineradioAppearanceRow_default.foldTitle, children: title }),
4032
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("svg", { className: open ? MineradioAppearanceRow_default.foldChevronOpen : MineradioAppearanceRow_default.foldChevron, width: "14", height: "14", viewBox: "0 0 14 14", fill: "none", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { d: "M2.15 8.5L2.58 8.08L5.30 5.35C5.56 5.09 5.78 4.87 5.99 4.70C6.20 4.53 6.44 4.38 6.75 4.33C6.92 4.31 7.08 4.31 7.25 4.33C7.56 4.38 7.80 4.53 8.01 4.70C8.22 4.87 8.44 5.09 8.70 5.35L11.42 8.08L11.85 8.50L11 9.35L10.58 8.92L7.85 6.20C7.57 5.92 7.40 5.75 7.26 5.64C7.13 5.53 7.08 5.52 7.06 5.52C7.02 5.51 6.98 5.51 6.94 5.52C6.92 5.52 6.87 5.53 6.74 5.64C6.60 5.75 6.43 5.92 6.15 6.20L3.42 8.92L3 9.35L2.15 8.50Z", fill: "currentColor" }) })
4033
+ ]
4034
+ }
4035
+ ),
4036
+ open ? /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: MineradioAppearanceRow_default.foldBody, children }) : null
4037
+ ] });
4038
+ }
4039
+ function MineradioAppearanceRow(props) {
4040
+ const {
4041
+ t,
4042
+ applyScene,
4043
+ setPerf,
4044
+ setMode,
4045
+ setTextStyle,
4046
+ setBlur,
4047
+ setFrost,
4048
+ setFluidHue,
4049
+ setFluidDepth,
4050
+ setDispersionHue,
4051
+ setDispersionRefract,
4052
+ setBgBrightness,
4053
+ setBackground,
4054
+ setWallpaper,
4055
+ setAutoTint,
4056
+ setWhale,
4057
+ setCritters,
4058
+ setMesh,
4059
+ setStarDensity,
4060
+ setSpotlight,
4061
+ setPress,
4062
+ setAudioReact,
4063
+ setWallpaperBlur,
4064
+ setWallpaperFrost,
4065
+ setWallpaperMask,
4066
+ setWallpaperMaskBlur,
4067
+ setWallpaperMaskOpacity,
4068
+ setVideoBlur,
4069
+ setVideoBrightness,
4070
+ authorizeVideo,
4071
+ useStore
4072
+ } = props;
4073
+ const enabled = useStore((s) => s.enabled);
4074
+ const mode = useStore((s) => s.mode);
4075
+ const textStyle = useStore((s) => s.textStyle);
4076
+ const blur = useStore((s) => s.blur);
4077
+ const frost = useStore((s) => s.frost);
4078
+ const fluidHue = useStore((s) => s.fluidHue);
4079
+ const fluidDepth = useStore((s) => s.fluidDepth);
4080
+ const dispersionHue = useStore((s) => s.dispersionHue);
4081
+ const dispersionRefract = useStore((s) => s.dispersionRefract);
4082
+ const bgBrightness = useStore((s) => s.bgBrightness);
4083
+ const dark = useStore((s) => s.dark);
4084
+ const background = useStore((s) => s.background);
4085
+ const whale = useStore((s) => s.whale);
4086
+ const critters = useStore((s) => s.critters);
4087
+ const mesh = useStore((s) => s.mesh);
4088
+ const starDensity = useStore((s) => s.starDensity);
4089
+ const spotlight = useStore((s) => s.spotlight);
4090
+ const press = useStore((s) => s.press);
4091
+ const audioReact = useStore((s) => s.audioReact);
4092
+ const wallpaper = useStore((s) => s.wallpaper);
4093
+ const autoTint = useStore((s) => s.autoTint);
4094
+ const wallpaperBlur = useStore((s) => s.wallpaperBlur);
4095
+ const wallpaperFrost = useStore((s) => s.wallpaperFrost);
4096
+ const wallpaperMask = useStore((s) => s.wallpaperMask);
4097
+ const wallpaperMaskBlur = useStore((s) => s.wallpaperMaskBlur);
4098
+ const wallpaperMaskOpacity = useStore((s) => s.wallpaperMaskOpacity);
4099
+ const videoBlur = useStore((s) => s.videoBlur);
4100
+ const videoBrightness = useStore((s) => s.videoBrightness);
4101
+ const perf = useStore((s) => s.perf);
4102
+ const rainbow = useStore((s) => s.rainbow);
4103
+ const fileRef = (0, import_react2.useRef)(null);
4104
+ const videoRef = (0, import_react2.useRef)(null);
4105
+ const [openLooks, setOpenLooks] = (0, import_react2.useState)(true);
4106
+ const [openMaterial, setOpenMaterial] = (0, import_react2.useState)(false);
4107
+ const [openBackdrop, setOpenBackdrop] = (0, import_react2.useState)(false);
4108
+ const [openMotion, setOpenMotion] = (0, import_react2.useState)(false);
4109
+ const isVideoWallpaper = wallpaper.startsWith("data:video/") || wallpaper.startsWith("idb:") || wallpaper.startsWith("fsa:");
4110
+ const pickVideo = () => {
4111
+ if (window.showOpenFilePicker !== void 0) {
4112
+ void (async () => {
4113
+ try {
4114
+ const [handle] = await window.showOpenFilePicker({
4115
+ multiple: false,
4116
+ types: [{ description: "Video", accept: { "video/*": [".mp4", ".webm", ".ogg", ".mov", ".m4v", ".mkv"] } }]
4117
+ });
4118
+ if (handle === void 0) return;
4119
+ setBackground("wallpaper");
4120
+ if (await saveVideoHandle(handle)) {
4121
+ setWallpaper(`fsa:${handle.name}`);
4122
+ } else {
4123
+ const file = await handle.getFile();
4124
+ void saveVideoBlob(file).then((id) => {
4125
+ if (id !== "") setWallpaper(id);
4126
+ else void fileToDataUrl(file).then(setWallpaper);
4127
+ });
4128
+ }
4129
+ } catch {
4130
+ }
4131
+ })();
4132
+ } else {
4133
+ videoRef.current?.click();
4134
+ }
4135
+ };
4136
+ const onChooseVideo = () => {
4137
+ if (wallpaper.startsWith("fsa:")) {
4138
+ void (async () => {
4139
+ const handle = await loadVideoHandle();
4140
+ if (handle !== null) {
4141
+ try {
4142
+ const permission = await handle.queryPermission({ mode: "read" });
4143
+ if (permission === "granted") {
4144
+ authorizeVideo();
4145
+ return;
4146
+ }
4147
+ if (permission === "prompt") {
4148
+ const next = await handle.requestPermission({ mode: "read" });
4149
+ if (next === "granted") {
4150
+ authorizeVideo();
4151
+ return;
4152
+ }
4153
+ }
4154
+ } catch {
4155
+ }
4156
+ }
4157
+ pickVideo();
4158
+ })();
4264
4159
  } else {
4265
- root.dataset.dshAquaAudioStatus = !this.enabled ? "theme-off" : !this.settings.audioReact ? "toggle-off" : "reduced-motion";
4266
- this.audioHandle?.dispose();
4267
- this.audioHandle = void 0;
4268
- root.style.removeProperty("--dsh-aqua-audio-glow");
4269
- delete root.dataset.dshAquaAudioEnv;
4270
- }
4271
- }
4272
- unmount() {
4273
- document.documentElement.removeAttribute(MINERADIO_ATTRIBUTE);
4274
- document.documentElement.removeAttribute("data-dsh-float");
4275
- document.documentElement.removeAttribute("data-dsh-compat");
4276
- document.documentElement.removeAttribute("data-dsh-aqua-wallpaper");
4277
- document.documentElement.removeAttribute("data-dsh-aqua-wallpaper-mask");
4278
- document.documentElement.removeAttribute("data-dsh-aqua-media");
4279
- document.documentElement.removeAttribute(SPOTLIGHT_ATTRIBUTE);
4280
- document.documentElement.removeAttribute(PRESS_ATTRIBUTE);
4281
- this.spotlightDisposer?.();
4282
- this.spotlightDisposer = void 0;
4283
- this.starRiverHandle?.dispose();
4284
- this.starRiverHandle = void 0;
4285
- this.cinemaDrift?.dispose();
4286
- this.cinemaDrift = void 0;
4287
- this.dispersion?.dispose();
4288
- this.dispersion = void 0;
4289
- this.specularParallaxDisposer?.();
4290
- this.specularParallaxDisposer = void 0;
4291
- this.whaleHandle?.dispose();
4292
- this.whaleHandle = void 0;
4293
- this.meshHandle?.dispose();
4294
- this.meshHandle = void 0;
4295
- this.audioHandle?.dispose();
4296
- this.audioHandle = void 0;
4297
- document.documentElement.style.removeProperty("--dsh-aqua-audio-glow");
4298
- delete document.documentElement.dataset.dshAquaAudioEnv;
4299
- delete document.documentElement.dataset.dshAquaAudioStatus;
4300
- this.tokenDisposer?.();
4301
- this.tokenDisposer = void 0;
4302
- if (this.videoObjectUrl !== void 0) {
4303
- URL.revokeObjectURL(this.videoObjectUrl);
4304
- this.videoObjectUrl = void 0;
4305
- this.videoBlobId = void 0;
4160
+ pickVideo();
4306
4161
  }
4307
- this.teardownFluid();
4308
- removeAmbientScene();
4309
- removePageFades();
4310
- this.seamDisposer?.();
4311
- this.seamDisposer = void 0;
4312
- }
4313
- /** Attach the fluid shader and the interaction feeds. */
4314
- mountFluid() {
4315
- const mainCanvas = document.querySelector("[data-dsh-aqua-fluid-canvas]");
4316
- try {
4317
- if (mainCanvas !== null) this.mainFluid = attachFluidShader(mainCanvas, this.fluidParams());
4318
- this.applyFluidPalettes();
4319
- if (this.mainFluid !== void 0 && mainCanvas !== null) {
4320
- this.interactionDisposer = attachFluidInteractions({
4321
- main: this.mainFluid,
4322
- mainCanvas
4323
- });
4162
+ };
4163
+ const bgMin = dark ? 0 : 50;
4164
+ const bgMax = dark ? 50 : 100;
4165
+ const bgDisplay = Math.min(bgMax, Math.max(bgMin, bgBrightness));
4166
+ if (!enabled) return null;
4167
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: MineradioAppearanceRow_default.group, children: [
4168
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(Fold, { title: t("mineradio.foldLooks"), open: openLooks, onToggle: () => {
4169
+ setOpenLooks((v) => !v);
4170
+ }, children: [
4171
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: MineradioAppearanceRow_default.subGroup, children: [
4172
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: MineradioAppearanceRow_default.subTitle, children: t("mineradio.scene") }),
4173
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: MineradioAppearanceRow_default.controls, children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: MineradioAppearanceRow_default.row, children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
4174
+ Segmented,
4175
+ {
4176
+ label: t("mineradio.scene"),
4177
+ value: matchScenePreset({
4178
+ textStyle,
4179
+ blur,
4180
+ frost,
4181
+ fluidHue,
4182
+ fluidDepth,
4183
+ dispersionHue,
4184
+ dispersionRefract,
4185
+ starDensity,
4186
+ spotlight,
4187
+ press,
4188
+ audioReact,
4189
+ background,
4190
+ rainbow
4191
+ }) ?? "",
4192
+ options: [
4193
+ { id: "studio", label: t("mineradio.sceneStudio") },
4194
+ { id: "deepsea", label: t("mineradio.sceneDeepsea") },
4195
+ { id: "midnight", label: t("mineradio.sceneMidnight") },
4196
+ { id: "mist", label: t("mineradio.sceneMist") },
4197
+ { id: "rainbow", label: t("mineradio.sceneRainbow") }
4198
+ ],
4199
+ onSelect: applyScene
4200
+ }
4201
+ ) }) })
4202
+ ] }),
4203
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: MineradioAppearanceRow_default.subGroup, children: [
4204
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: MineradioAppearanceRow_default.subTitle, children: t("mineradio.perf") }),
4205
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: MineradioAppearanceRow_default.controls, children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: MineradioAppearanceRow_default.row, children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
4206
+ Segmented,
4207
+ {
4208
+ label: t("mineradio.perf"),
4209
+ value: perf,
4210
+ options: [
4211
+ { id: "performance", label: t("mineradio.perfPerformance") },
4212
+ { id: "balanced", label: t("mineradio.perfBalanced") },
4213
+ { id: "vivid", label: t("mineradio.perfVivid") }
4214
+ ],
4215
+ onSelect: setPerf
4216
+ }
4217
+ ) }) })
4218
+ ] }),
4219
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: MineradioAppearanceRow_default.subGroup, children: [
4220
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: MineradioAppearanceRow_default.subTitle, children: t("mineradio.mode") }),
4221
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: MineradioAppearanceRow_default.controls, children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: MineradioAppearanceRow_default.row, children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
4222
+ Segmented,
4223
+ {
4224
+ label: t("mineradio.mode"),
4225
+ value: mode,
4226
+ options: [
4227
+ { id: "mica", label: t("mineradio.modeMica") },
4228
+ { id: "compat", label: t("mineradio.modeCompat") }
4229
+ ],
4230
+ onSelect: setMode
4231
+ }
4232
+ ) }) })
4233
+ ] }),
4234
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: MineradioAppearanceRow_default.subGroup, children: [
4235
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: MineradioAppearanceRow_default.subTitle, children: t("mineradio.textColor") }),
4236
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: MineradioAppearanceRow_default.controls, children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: MineradioAppearanceRow_default.row, children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
4237
+ Segmented,
4238
+ {
4239
+ label: t("mineradio.textColor"),
4240
+ value: textStyle,
4241
+ options: [
4242
+ { id: "champagne", label: t("mineradio.textColorChampagne") },
4243
+ { id: "neutral", label: t("mineradio.textColorNeutral") },
4244
+ { id: "mint", label: t("mineradio.textColorMint") },
4245
+ { id: "rose", label: t("mineradio.textColorRose") }
4246
+ ],
4247
+ onSelect: setTextStyle
4248
+ }
4249
+ ) }) })
4250
+ ] })
4251
+ ] }),
4252
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(Fold, { title: t("mineradio.foldMaterial"), open: openMaterial, onToggle: () => {
4253
+ setOpenMaterial((v) => !v);
4254
+ }, children: mode === "mica" && /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: MineradioAppearanceRow_default.subGroup, children: [
4255
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: MineradioAppearanceRow_default.subTitle, children: t("mineradio.materialGroup") }),
4256
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: MineradioAppearanceRow_default.controls, children: [
4257
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(Knob, { label: t("mineradio.blur"), value: blur, min: 0, max: 40, step: 0.5, unit: "px", onChange: setBlur }),
4258
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(Knob, { label: t("mineradio.frost"), value: frost, min: 0, max: 100, step: 1, unit: "%", onChange: setFrost })
4259
+ ] })
4260
+ ] }) }),
4261
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(Fold, { title: t("mineradio.foldBackdrop"), open: openBackdrop, onToggle: () => {
4262
+ setOpenBackdrop((v) => !v);
4263
+ }, children: /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: MineradioAppearanceRow_default.subGroup, children: [
4264
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: MineradioAppearanceRow_default.subTitle, children: t("mineradio.background") }),
4265
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: MineradioAppearanceRow_default.controls, children: [
4266
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: MineradioAppearanceRow_default.row, children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
4267
+ Segmented,
4268
+ {
4269
+ label: t("mineradio.background"),
4270
+ value: background,
4271
+ options: [
4272
+ { id: "fluid", label: t("mineradio.backgroundFluid") },
4273
+ { id: "wallpaper", label: t("mineradio.backgroundWallpaper") }
4274
+ ],
4275
+ onSelect: setBackground
4276
+ }
4277
+ ) }),
4278
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(HueStrip, { label: t("mineradio.dispersionHue"), value: dispersionHue, onChange: setDispersionHue }),
4279
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(Knob, { label: t("mineradio.dispersionRefract"), value: dispersionRefract, min: 0, max: 100, step: 1, unit: "%", onChange: setDispersionRefract }),
4280
+ background === "fluid" && /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(import_jsx_runtime3.Fragment, { children: [
4281
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(HueStrip, { label: t("mineradio.fluidHue"), value: fluidHue, onChange: setFluidHue }),
4282
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(Knob, { label: t("mineradio.fluidDepth"), value: fluidDepth, min: 0, max: 100, step: 1, unit: "%", onChange: setFluidDepth })
4283
+ ] }),
4284
+ background === "wallpaper" && /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(import_jsx_runtime3.Fragment, { children: [
4285
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: MineradioAppearanceRow_default.row, children: [
4286
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: MineradioAppearanceRow_default.rowLabel, children: t("mineradio.wallpaper") }),
4287
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: MineradioAppearanceRow_default.wallpaperPick, children: [
4288
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
4289
+ "input",
4290
+ {
4291
+ ref: fileRef,
4292
+ type: "file",
4293
+ accept: "image/*",
4294
+ className: MineradioAppearanceRow_default.fileInput,
4295
+ onChange: (e) => {
4296
+ const file = e.target.files?.[0];
4297
+ if (file !== void 0) {
4298
+ setBackground("wallpaper");
4299
+ void fileToDataUrl(file).then(setWallpaper);
4300
+ }
4301
+ e.target.value = "";
4302
+ }
4303
+ }
4304
+ ),
4305
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
4306
+ "input",
4307
+ {
4308
+ ref: videoRef,
4309
+ type: "file",
4310
+ accept: "video/mp4,video/webm,video/ogg,video/quicktime",
4311
+ className: MineradioAppearanceRow_default.fileInput,
4312
+ onChange: (e) => {
4313
+ const file = e.target.files?.[0];
4314
+ if (file !== void 0) {
4315
+ setBackground("wallpaper");
4316
+ void saveVideoBlob(file).then((id) => {
4317
+ if (id !== "") {
4318
+ setWallpaper(id);
4319
+ } else {
4320
+ void fileToDataUrl(file).then(setWallpaper);
4321
+ }
4322
+ });
4323
+ }
4324
+ e.target.value = "";
4325
+ }
4326
+ }
4327
+ ),
4328
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("button", { type: "button", className: MineradioAppearanceRow_default.pickButton, onClick: () => {
4329
+ fileRef.current?.click();
4330
+ }, children: t("mineradio.chooseImage") }),
4331
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("button", { type: "button", className: MineradioAppearanceRow_default.pickButton, onClick: onChooseVideo, children: t("mineradio.chooseVideo") }),
4332
+ wallpaper !== "" && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("button", { type: "button", className: MineradioAppearanceRow_default.deleteButton, onClick: () => {
4333
+ setWallpaper("");
4334
+ }, children: t("mineradio.deleteWallpaper") })
4335
+ ] })
4336
+ ] }),
4337
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: MineradioAppearanceRow_default.row, children: [
4338
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: MineradioAppearanceRow_default.rowLabel, children: t("mineradio.autoTint") }),
4339
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
4340
+ "button",
4341
+ {
4342
+ type: "button",
4343
+ className: autoTint ? MineradioAppearanceRow_default.toggleOn : MineradioAppearanceRow_default.toggle,
4344
+ "aria-pressed": autoTint,
4345
+ onClick: () => {
4346
+ setAutoTint(!autoTint);
4347
+ },
4348
+ children: [
4349
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: MineradioAppearanceRow_default.check, children: autoTint && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_dsh_client_ui_primitives2.IconCheckOutline16, {}) }),
4350
+ autoTint ? t("mineradio.enable") : t("mineradio.disable")
4351
+ ]
4352
+ }
4353
+ )
4354
+ ] }),
4355
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: MineradioAppearanceRow_default.row, children: [
4356
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: MineradioAppearanceRow_default.rowLabel, children: t("mineradio.wallpaperMask") }),
4357
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
4358
+ "button",
4359
+ {
4360
+ type: "button",
4361
+ className: wallpaperMask ? MineradioAppearanceRow_default.toggleOn : MineradioAppearanceRow_default.toggle,
4362
+ "aria-pressed": wallpaperMask,
4363
+ onClick: () => {
4364
+ setWallpaperMask(!wallpaperMask);
4365
+ },
4366
+ children: [
4367
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: MineradioAppearanceRow_default.check, children: wallpaperMask && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_dsh_client_ui_primitives2.IconCheckOutline16, {}) }),
4368
+ wallpaperMask ? t("mineradio.enable") : t("mineradio.disable")
4369
+ ]
4370
+ }
4371
+ )
4372
+ ] }),
4373
+ wallpaperMask && /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(import_jsx_runtime3.Fragment, { children: [
4374
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(Knob, { label: t("mineradio.wallpaperMaskBlur"), value: wallpaperMaskBlur, min: 0, max: 40, step: 0.5, unit: "px", onChange: setWallpaperMaskBlur }),
4375
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(Knob, { label: t("mineradio.wallpaperMaskOpacity"), value: wallpaperMaskOpacity, min: 0, max: 100, step: 1, unit: "%", onChange: setWallpaperMaskOpacity })
4376
+ ] }),
4377
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: MineradioAppearanceRow_default.knobHint, children: t("mineradio.wallpaperHint") }),
4378
+ !isVideoWallpaper && /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(import_jsx_runtime3.Fragment, { children: [
4379
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(Knob, { label: t("mineradio.wallpaperBlur"), value: wallpaperBlur, min: 0, max: 40, step: 0.5, unit: "px", onChange: setWallpaperBlur }),
4380
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(Knob, { label: t("mineradio.wallpaperFrost"), value: wallpaperFrost, min: 0, max: 100, step: 1, unit: "%", onChange: setWallpaperFrost })
4381
+ ] }),
4382
+ isVideoWallpaper && /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(import_jsx_runtime3.Fragment, { children: [
4383
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(Knob, { label: t("mineradio.videoBlur"), value: videoBlur, min: 0, max: 40, step: 0.5, unit: "px", onChange: setVideoBlur }),
4384
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(Knob, { label: t("mineradio.videoBrightness"), value: videoBrightness, min: 0, max: 100, step: 1, unit: "%", onChange: setVideoBrightness }),
4385
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: MineradioAppearanceRow_default.knobHint, children: t("mineradio.videoHint") })
4386
+ ] })
4387
+ ] }),
4388
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(Knob, { label: t("mineradio.bgBrightness"), value: bgDisplay, min: bgMin, max: bgMax, step: 1, unit: "%", onChange: setBgBrightness }),
4389
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: MineradioAppearanceRow_default.knobHint, children: t(dark ? "mineradio.bgBrightnessHintDark" : "mineradio.bgBrightnessHintLight") })
4390
+ ] })
4391
+ ] }) }),
4392
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(Fold, { title: t("mineradio.foldMotion"), open: openMotion, onToggle: () => {
4393
+ setOpenMotion((v) => !v);
4394
+ }, children: [
4395
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: MineradioAppearanceRow_default.subGroup, children: [
4396
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: MineradioAppearanceRow_default.subTitle, children: t("mineradio.decorAmbient") }),
4397
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: MineradioAppearanceRow_default.controls, children: [
4398
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: MineradioAppearanceRow_default.row, children: [
4399
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: MineradioAppearanceRow_default.rowLabel, children: t("mineradio.whale") }),
4400
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
4401
+ "button",
4402
+ {
4403
+ type: "button",
4404
+ className: whale ? MineradioAppearanceRow_default.toggleOn : MineradioAppearanceRow_default.toggle,
4405
+ "aria-pressed": whale,
4406
+ onClick: () => {
4407
+ setWhale(!whale);
4408
+ },
4409
+ children: [
4410
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: MineradioAppearanceRow_default.check, children: whale && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_dsh_client_ui_primitives2.IconCheckOutline16, {}) }),
4411
+ whale ? t("mineradio.enable") : t("mineradio.disable")
4412
+ ]
4413
+ }
4414
+ )
4415
+ ] }),
4416
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: MineradioAppearanceRow_default.row, children: [
4417
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: MineradioAppearanceRow_default.rowLabel, children: t("mineradio.critters") }),
4418
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
4419
+ "button",
4420
+ {
4421
+ type: "button",
4422
+ className: critters ? MineradioAppearanceRow_default.toggleOn : MineradioAppearanceRow_default.toggle,
4423
+ "aria-pressed": critters,
4424
+ onClick: () => {
4425
+ setCritters(!critters);
4426
+ },
4427
+ children: [
4428
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: MineradioAppearanceRow_default.check, children: critters && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_dsh_client_ui_primitives2.IconCheckOutline16, {}) }),
4429
+ critters ? t("mineradio.enable") : t("mineradio.disable")
4430
+ ]
4431
+ }
4432
+ )
4433
+ ] }),
4434
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: MineradioAppearanceRow_default.row, children: [
4435
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: MineradioAppearanceRow_default.rowLabel, children: t("mineradio.mesh") }),
4436
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
4437
+ "button",
4438
+ {
4439
+ type: "button",
4440
+ className: mesh ? MineradioAppearanceRow_default.toggleOn : MineradioAppearanceRow_default.toggle,
4441
+ "aria-pressed": mesh,
4442
+ onClick: () => {
4443
+ setMesh(!mesh);
4444
+ },
4445
+ children: [
4446
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: MineradioAppearanceRow_default.check, children: mesh && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_dsh_client_ui_primitives2.IconCheckOutline16, {}) }),
4447
+ mesh ? t("mineradio.enable") : t("mineradio.disable")
4448
+ ]
4449
+ }
4450
+ )
4451
+ ] }),
4452
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: MineradioAppearanceRow_default.row, children: [
4453
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: MineradioAppearanceRow_default.rowLabel, children: t("mineradio.audioReact") }),
4454
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
4455
+ "button",
4456
+ {
4457
+ type: "button",
4458
+ className: audioReact ? MineradioAppearanceRow_default.toggleOn : MineradioAppearanceRow_default.toggle,
4459
+ "aria-pressed": audioReact,
4460
+ onClick: () => {
4461
+ setAudioReact(!audioReact);
4462
+ },
4463
+ children: [
4464
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: MineradioAppearanceRow_default.check, children: audioReact && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_dsh_client_ui_primitives2.IconCheckOutline16, {}) }),
4465
+ audioReact ? t("mineradio.enable") : t("mineradio.disable")
4466
+ ]
4467
+ }
4468
+ )
4469
+ ] }),
4470
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(Knob, { label: t("mineradio.starDensity"), value: starDensity, min: 0, max: 100, step: 1, unit: "%", onChange: setStarDensity })
4471
+ ] })
4472
+ ] }),
4473
+ mode === "mica" && /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: MineradioAppearanceRow_default.subGroup, children: [
4474
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: MineradioAppearanceRow_default.subTitle, children: t("mineradio.decorHover") }),
4475
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: MineradioAppearanceRow_default.controls, children: [
4476
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: MineradioAppearanceRow_default.row, children: [
4477
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: MineradioAppearanceRow_default.rowLabel, children: t("mineradio.spotlight") }),
4478
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
4479
+ "button",
4480
+ {
4481
+ type: "button",
4482
+ className: spotlight ? MineradioAppearanceRow_default.toggleOn : MineradioAppearanceRow_default.toggle,
4483
+ "aria-pressed": spotlight,
4484
+ onClick: () => {
4485
+ setSpotlight(!spotlight);
4486
+ },
4487
+ children: [
4488
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: MineradioAppearanceRow_default.check, children: spotlight && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_dsh_client_ui_primitives2.IconCheckOutline16, {}) }),
4489
+ spotlight ? t("mineradio.enable") : t("mineradio.disable")
4490
+ ]
4491
+ }
4492
+ )
4493
+ ] }),
4494
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: MineradioAppearanceRow_default.row, children: [
4495
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: MineradioAppearanceRow_default.rowLabel, children: t("mineradio.press") }),
4496
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
4497
+ "button",
4498
+ {
4499
+ type: "button",
4500
+ className: press ? MineradioAppearanceRow_default.toggleOn : MineradioAppearanceRow_default.toggle,
4501
+ "aria-pressed": press,
4502
+ onClick: () => {
4503
+ setPress(!press);
4504
+ },
4505
+ children: [
4506
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: MineradioAppearanceRow_default.check, children: press && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_dsh_client_ui_primitives2.IconCheckOutline16, {}) }),
4507
+ press ? t("mineradio.enable") : t("mineradio.disable")
4508
+ ]
4509
+ }
4510
+ )
4511
+ ] })
4512
+ ] })
4513
+ ] })
4514
+ ] })
4515
+ ] });
4516
+ }
4517
+
4518
+ // src/client/settings-store.ts
4519
+ var import_client = require("@deepseek-ai/dsh-client-runtime/client");
4520
+ function createMineradioRowStore() {
4521
+ return (0, import_client.defineStore)({
4522
+ init: () => ({
4523
+ enabled: true,
4524
+ mode: "mica",
4525
+ textStyle: "champagne",
4526
+ blur: 24,
4527
+ frost: 14,
4528
+ fluidHue: 44,
4529
+ fluidDepth: 22,
4530
+ dispersionHue: 44,
4531
+ dispersionRefract: 60,
4532
+ bgBrightness: 50,
4533
+ dark: false,
4534
+ background: "fluid",
4535
+ wallpaper: "",
4536
+ autoTint: true,
4537
+ whale: true,
4538
+ critters: true,
4539
+ mesh: true,
4540
+ starDensity: 60,
4541
+ spotlight: true,
4542
+ press: true,
4543
+ audioReact: false,
4544
+ wallpaperBlur: 0,
4545
+ wallpaperFrost: 0,
4546
+ wallpaperMask: false,
4547
+ wallpaperMaskBlur: 24,
4548
+ wallpaperMaskOpacity: 62,
4549
+ videoBlur: 6,
4550
+ videoBrightness: 48,
4551
+ perf: "balanced",
4552
+ rainbow: false,
4553
+ revision: -1
4554
+ }),
4555
+ actions: {
4556
+ sync: (d, next, revision) => {
4557
+ if (revision <= d.revision) return;
4558
+ d.enabled = next.enabled;
4559
+ d.mode = next.mode;
4560
+ d.textStyle = next.textStyle;
4561
+ d.blur = next.blur;
4562
+ d.frost = next.frost;
4563
+ d.fluidHue = next.fluidHue;
4564
+ d.fluidDepth = next.fluidDepth;
4565
+ d.dispersionHue = next.dispersionHue;
4566
+ d.dispersionRefract = next.dispersionRefract;
4567
+ d.bgBrightness = next.bgBrightness;
4568
+ d.dark = next.dark;
4569
+ d.background = next.background;
4570
+ d.wallpaper = next.wallpaper;
4571
+ d.autoTint = next.autoTint;
4572
+ d.whale = next.whale;
4573
+ d.critters = next.critters;
4574
+ d.mesh = next.mesh;
4575
+ d.starDensity = next.starDensity;
4576
+ d.spotlight = next.spotlight;
4577
+ d.press = next.press;
4578
+ d.audioReact = next.audioReact;
4579
+ d.wallpaperBlur = next.wallpaperBlur;
4580
+ d.wallpaperFrost = next.wallpaperFrost;
4581
+ d.wallpaperMask = next.wallpaperMask;
4582
+ d.wallpaperMaskBlur = next.wallpaperMaskBlur;
4583
+ d.wallpaperMaskOpacity = next.wallpaperMaskOpacity;
4584
+ d.videoBlur = next.videoBlur;
4585
+ d.videoBrightness = next.videoBrightness;
4586
+ d.perf = next.perf;
4587
+ d.rainbow = next.rainbow;
4588
+ d.revision = revision;
4324
4589
  }
4325
- } catch {
4326
- this.mainFluid = void 0;
4327
4590
  }
4328
- }
4329
- teardownFluid() {
4330
- this.interactionDisposer?.();
4331
- this.interactionDisposer = void 0;
4332
- this.mainFluid?.dispose();
4333
- this.mainFluid = void 0;
4334
- }
4335
- fluidParams() {
4336
- return { ...SITE_FLUID_PARAMS, ...fluidToneColors(this.dark, this.settings.fluidHue, this.settings.fluidDepth) };
4337
- }
4338
- applyFluidPalettes() {
4339
- this.mainFluid?.setParams(this.fluidParams());
4340
- }
4341
- /** Stamp the data-* seams the stylesheet keys off (self-contained mode). */
4342
- startSeamStamper() {
4343
- if (this.seamDisposer !== void 0) return;
4344
- this.seamDisposer = startSeamStamper();
4345
- }
4346
- /** Attach the cursor-spotlight pointer feeds (idempotent per mount). */
4347
- startSpotlightFeed() {
4348
- if (this.spotlightDisposer !== void 0) return;
4349
- this.spotlightDisposer = startSpotlight();
4350
- }
4591
+ });
4592
+ }
4593
+
4594
+ // src/client/locales.ts
4595
+ var NS = "settings.mineradio";
4596
+ var zh = {
4597
+ "mineradio.title": "Mineradio \u4E3B\u9898",
4598
+ "mineradio.description": "\u5F71\u9662\u7EA7\u79C1\u4EBA\u89C6\u89C9\u7535\u53F0\u73BB\u7483\u4E3B\u9898\u2014\u2014\u9999\u69DF\u91D1\u8F89\u5149\uFF0C\u6D41\u4F53/\u58C1\u7EB8\u53CC\u80CC\u666F\uFF0C\u6A21\u7CCA\u5EA6\u3001\u78E8\u7802\u5EA6\u3001\u8272\u8C03\u4E0E\u8F89\u5149\u90FD\u53EF\u81EA\u7531\u8C03\u8282",
4599
+ "mineradio.enable": "\u5F00\u542F",
4600
+ "mineradio.disable": "\u5173\u95ED",
4601
+ "mineradio.mode": "\u6A21\u5F0F",
4602
+ "mineradio.modeMica": "\u4E91\u6BCD\u6548\u679C",
4603
+ "mineradio.modeCompat": "\u517C\u5BB9\u6A21\u5F0F",
4604
+ "mineradio.textColor": "\u6587\u5B57\u989C\u8272",
4605
+ "mineradio.textColorChampagne": "\u9999\u69DF\u91D1",
4606
+ "mineradio.textColorNeutral": "\u4E2D\u6027",
4607
+ "mineradio.textColorMint": "\u8584\u8377",
4608
+ "mineradio.textColorRose": "\u73AB\u7470",
4609
+ "mineradio.scene": "\u573A\u666F",
4610
+ "mineradio.sceneStudio": "\u6F14\u64AD\u5BA4",
4611
+ "mineradio.sceneDeepsea": "\u6DF1\u6D77",
4612
+ "mineradio.sceneMidnight": "\u5348\u591C",
4613
+ "mineradio.sceneMist": "\u96FE\u9762",
4614
+ "mineradio.sceneRainbow": "\u5F69\u8679",
4615
+ "mineradio.perf": "\u6027\u80FD",
4616
+ "mineradio.perfPerformance": "\u6027\u80FD",
4617
+ "mineradio.perfBalanced": "\u5747\u8861",
4618
+ "mineradio.perfVivid": "\u70AB",
4619
+ "mineradio.foldLooks": "\u5916\u89C2",
4620
+ "mineradio.foldMaterial": "\u6750\u8D28",
4621
+ "mineradio.foldBackdrop": "\u80CC\u666F",
4622
+ "mineradio.foldMotion": "\u52A8\u6548",
4623
+ "mineradio.materialGroup": "\u73BB\u7483\u6750\u8D28",
4624
+ "mineradio.decorAmbient": "\u73AF\u5883\u88C5\u9970",
4625
+ "mineradio.decorHover": "\u60AC\u505C\u6548\u679C",
4626
+ "mineradio.whale": "\u7C92\u5B50\u91D1\u9CB8",
4627
+ "mineradio.critters": "\u661F\u5C18\u7C92\u5B50",
4628
+ "mineradio.mesh": "\u7F51\u72B6\u4EA4\u4E92",
4629
+ "mineradio.starDensity": "\u7C92\u5B50\u5BC6\u5EA6",
4630
+ "mineradio.spotlight": "\u9999\u69DF\u8F89\u5149",
4631
+ "mineradio.press": "\u60AC\u505C\u4E0B\u538B",
4632
+ "mineradio.audioReact": "\u97F3\u9891\u54CD\u5E94",
4633
+ "mineradio.blur": "\u73BB\u7483\u6A21\u7CCA\u5EA6",
4634
+ "mineradio.frost": "\u78E8\u7802\u5EA6",
4635
+ "mineradio.fluidHue": "\u8272\u8C03",
4636
+ "mineradio.fluidDepth": "\u989C\u8272\u6DF1\u6D45",
4637
+ "mineradio.dispersionHue": "\u8272\u6563\u989C\u8272",
4638
+ "mineradio.dispersionRefract": "\u6298\u5C04\u5F3A\u5EA6",
4639
+ "mineradio.bgBrightness": "\u80CC\u666F\u4EAE\u5EA6",
4640
+ "mineradio.bgBrightnessHintDark": "\u6DF1\u8272\u6A21\u5F0F\uFF1A0 \u538B\u6697\u81F3\u7EAF\u9ED1\uFF0C50 \u539F\u6837",
4641
+ "mineradio.bgBrightnessHintLight": "\u6D45\u8272\u6A21\u5F0F\uFF1A50 \u539F\u6837\uFF0C100 \u63D0\u4EAE\u81F3\u7EAF\u767D",
4642
+ "mineradio.background": "\u80CC\u666F",
4643
+ "mineradio.backgroundFluid": "\u6D41\u4F53",
4644
+ "mineradio.backgroundWallpaper": "\u58C1\u7EB8",
4645
+ "mineradio.wallpaper": "\u58C1\u7EB8",
4646
+ "mineradio.autoTint": "\u81EA\u52A8\u53D6\u8272",
4647
+ "mineradio.wallpaperHint": "\u6D45\u8272\u58C1\u7EB8\u7528\u6D45\u8272\u6A21\u5F0F\uFF0C\u6DF1\u8272\u58C1\u7EB8\u7528\u6DF1\u8272\u6A21\u5F0F\u26A0\uFE0F",
4648
+ "mineradio.chooseImage": "\u9009\u62E9\u56FE\u7247",
4649
+ "mineradio.chooseVideo": "\u9009\u62E9\u89C6\u9891",
4650
+ "mineradio.deleteWallpaper": "\u5220\u9664",
4651
+ "mineradio.wallpaperBlur": "\u58C1\u7EB8\u6A21\u7CCA\u5EA6",
4652
+ "mineradio.wallpaperFrost": "\u58C1\u7EB8\u78E8\u7802\u5EA6",
4653
+ "mineradio.wallpaperMask": "\u78E8\u7802\u906E\u7F69",
4654
+ "mineradio.wallpaperMaskBlur": "\u906E\u7F69\u6A21\u7CCA\u5EA6",
4655
+ "mineradio.wallpaperMaskOpacity": "\u906E\u7F69\u900F\u660E\u5EA6",
4656
+ "mineradio.videoBlur": "\u89C6\u9891\u6A21\u7CCA\u5EA6",
4657
+ "mineradio.videoBrightness": "\u89C6\u9891\u4EAE\u5EA6",
4658
+ "mineradio.videoHint": '\u26A0\uFE0F\u89C6\u9891\u4F1A\u81EA\u52A8\u538B\u6697\u4EE5\u4FDD\u8BC1\u6587\u5B57\u6E05\u6670\uFF0C\u53EF\u7528\u6A21\u7CCA\u5EA6\u548C\u4EAE\u5EA6\u8C03\u8282\uFF1B\u5237\u65B0\u540E\u672A\u81EA\u52A8\u64AD\u653E\u65F6\u70B9\u4E00\u4E0B"\u9009\u62E9\u89C6\u9891"\u5373\u53EF\u6062\u590D'
4659
+ };
4660
+ var en = {
4661
+ "mineradio.title": "Mineradio theme",
4662
+ "mineradio.description": "A cinematic private-visual-radio glass theme \u2014 champagne glow, fluid/wallpaper backdrop, blur, frost, hue, and glow all adjustable",
4663
+ "mineradio.enable": "On",
4664
+ "mineradio.disable": "Off",
4665
+ "mineradio.mode": "Mode",
4666
+ "mineradio.modeMica": "Mica",
4667
+ "mineradio.modeCompat": "Compatibility",
4668
+ "mineradio.textColor": "Text color",
4669
+ "mineradio.textColorChampagne": "Champagne",
4670
+ "mineradio.textColorNeutral": "Neutral",
4671
+ "mineradio.textColorMint": "Mint",
4672
+ "mineradio.textColorRose": "Rose",
4673
+ "mineradio.scene": "Scene",
4674
+ "mineradio.sceneStudio": "Studio",
4675
+ "mineradio.sceneDeepsea": "Deep sea",
4676
+ "mineradio.sceneMidnight": "Midnight",
4677
+ "mineradio.sceneMist": "Mist",
4678
+ "mineradio.sceneRainbow": "Rainbow",
4679
+ "mineradio.perf": "Performance",
4680
+ "mineradio.perfPerformance": "Performance",
4681
+ "mineradio.perfBalanced": "Balanced",
4682
+ "mineradio.perfVivid": "Vivid",
4683
+ "mineradio.foldLooks": "Looks",
4684
+ "mineradio.foldMaterial": "Material",
4685
+ "mineradio.foldBackdrop": "Backdrop",
4686
+ "mineradio.foldMotion": "Motion",
4687
+ "mineradio.materialGroup": "Glass material",
4688
+ "mineradio.decorAmbient": "Ambient",
4689
+ "mineradio.decorHover": "Hover effects",
4690
+ "mineradio.whale": "Particle whale",
4691
+ "mineradio.critters": "Star particles",
4692
+ "mineradio.mesh": "Interactive mesh",
4693
+ "mineradio.starDensity": "Particle density",
4694
+ "mineradio.spotlight": "Champagne glow",
4695
+ "mineradio.press": "Hover tilt",
4696
+ "mineradio.audioReact": "Audio reactive",
4697
+ "mineradio.blur": "Glass blur",
4698
+ "mineradio.frost": "Frost",
4699
+ "mineradio.fluidHue": "Hue",
4700
+ "mineradio.fluidDepth": "Color depth",
4701
+ "mineradio.dispersionHue": "Dispersion color",
4702
+ "mineradio.dispersionRefract": "Refraction",
4703
+ "mineradio.bgBrightness": "Background brightness",
4704
+ "mineradio.bgBrightnessHintDark": "Dark mode: 0 fades to pure black, 50 is unchanged",
4705
+ "mineradio.bgBrightnessHintLight": "Light mode: 50 is unchanged, 100 brightens to pure white",
4706
+ "mineradio.background": "Backdrop",
4707
+ "mineradio.backgroundFluid": "Fluid",
4708
+ "mineradio.backgroundWallpaper": "Wallpaper",
4709
+ "mineradio.wallpaper": "Wallpaper",
4710
+ "mineradio.autoTint": "Auto color",
4711
+ "mineradio.wallpaperHint": "Use light mode for light wallpapers, dark mode for dark wallpapers \u26A0\uFE0F",
4712
+ "mineradio.chooseImage": "Choose image",
4713
+ "mineradio.chooseVideo": "Choose video",
4714
+ "mineradio.deleteWallpaper": "Delete",
4715
+ "mineradio.wallpaperBlur": "Wallpaper blur",
4716
+ "mineradio.wallpaperFrost": "Wallpaper frost",
4717
+ "mineradio.wallpaperMask": "Frost mask",
4718
+ "mineradio.wallpaperMaskBlur": "Mask blur",
4719
+ "mineradio.wallpaperMaskOpacity": "Mask opacity",
4720
+ "mineradio.videoBlur": "Video blur",
4721
+ "mineradio.videoBrightness": "Video brightness",
4722
+ "mineradio.videoHint": '\u26A0\uFE0F The video is dimmed automatically to keep text readable \u2014 adjust blur and brightness here; if it does not play after a reload, click "Choose video" once to restore access'
4351
4723
  };
4352
4724
 
4353
4725
  // dshcss:D:\HuaweiMoveData\Users\DELL\Desktop\codex\Mineradio-DSH-Theme\src\client\mineradio.module.css
@@ -4355,7 +4727,7 @@ if (typeof document !== "undefined" && document.querySelector("style[data-plugin
4355
4727
  const tag = document.createElement("style");
4356
4728
  tag.dataset.plugin = "dsh-theme-mineradio";
4357
4729
  tag.dataset.pluginCss = "dsh-theme-mineradio/src/client/mineradio.module.css?v=135b729b";
4358
- tag.textContent = `[data-dsh-aqua] body{background:var(--dsw-alias-bg-base);}[data-dsh-aqua]{--dsh-aqua-glass-card-light:linear-gradient(rgba(255 255 255 / var(--dsh-aqua-frost-white,0)),rgba(255 255 255 / var(--dsh-aqua-frost-white,0))),radial-gradient(circle at 16% 0%,rgb(255 255 255 / calc(0.22 * var(--dsh-aqua-frost,1))),transparent 34%),radial-gradient(circle at 88% 8%,rgb(154 111 44 / calc(0.10 * var(--dsh-aqua-frost,1))),transparent 36%),linear-gradient(145deg,rgb(244 210 138 / calc(0.10 * var(--dsh-aqua-frost,1))),rgb(250 246 238 / calc(0.58 * var(--dsh-aqua-frost,1))) 42%,rgb(244 240 232 / calc(0.64 * var(--dsh-aqua-frost,1))));--dsh-aqua-glass-card-dark:linear-gradient(rgba(255 255 255 / var(--dsh-aqua-frost-white,0)),rgba(255 255 255 / var(--dsh-aqua-frost-white,0))),radial-gradient(circle at 16% 0%,rgb(255 255 255 / calc(0.10 * var(--dsh-aqua-frost,1))),transparent 34%),radial-gradient(circle at 88% 8%,rgb(0 245 212 / calc(0.12 * var(--dsh-aqua-frost,1))),transparent 36%),linear-gradient(145deg,rgb(0 245 212 / calc(0.115 * var(--dsh-aqua-frost,1))),rgb(12 13 18 / calc(0.70 * var(--dsh-aqua-frost,1))) 42%,rgb(2 3 5 / calc(0.66 * var(--dsh-aqua-frost,1))));--dsh-aqua-glass-shadow-light:inset 0 0 0 1px rgb(255 255 255 / 0.20),inset 0 1px 0 rgb(255 255 255 / calc(0.55 + 0.30 * (1 - var(--dsh-aqua-spec-y,0)) / 2)),inset 0 -1px 0 rgb(255 255 255 / calc(0.05 + 0.34 * (1 + var(--dsh-aqua-spec-y,0)) / 2)),inset 1px 0 0 rgb(255 255 255 / calc(0.04 + 0.14 * (1 - var(--dsh-aqua-spec-x,0)) / 2)),inset -1px 0 0 rgb(255 255 255 / calc(0.04 + 0.14 * (1 + var(--dsh-aqua-spec-x,0)) / 2)),0 22px 64px rgb(38 26 8 / 0.16);--dsh-aqua-glass-shadow-dark:inset 0 0 0 1px rgb(255 255 255 / 0.13),inset 0 1px 0 rgb(255 255 255 / calc(0.22 + 0.20 * (1 - var(--dsh-aqua-spec-y,0)) / 2)),inset 0 -1px 0 rgb(255 255 255 / calc(0.03 + 0.20 * (1 + var(--dsh-aqua-spec-y,0)) / 2)),inset 1px 0 0 rgb(255 255 255 / calc(0.02 + 0.08 * (1 - var(--dsh-aqua-spec-x,0)) / 2)),inset -1px 0 0 rgb(255 255 255 / calc(0.02 + 0.08 * (1 + var(--dsh-aqua-spec-x,0)) / 2)),0 22px 64px rgb(0 0 0 / 0.30),0 0 34px rgb(0 245 212 / 0.052),inset 0 -24px 58px rgb(0 0 0 / 0.16);--dsh-aqua-bloom:hsla(var(--dsh-aqua-bloom-h,44),82%,66%,0.07);}[data-dsh-aqua] [data-dsh-frame]{background:transparent;}[data-dsh-aqua] [data-phase],[data-dsh-aqua] [data-dsh-details]{background:transparent;}[data-dsh-float] [data-phase='active'] header{position:relative;z-index:8;}[data-dsh-float] [class*='banner']{position:static;}[data-dsh-float] [class*='bannerWrap']{background-color:transparent;}[data-dsh-float] [data-phase='active'] [data-conversation-scroll]{margin-top:-95px;padding-top:107px;}[data-dsh-aqua] [data-phase] [class*='composerSeat'][class*='composerSeat']{background:none;}[data-dsh-aqua] [data-dsh-aqua-ambient]{position:fixed;inset:0;z-index:-1;pointer-events:none;overflow:hidden;background:radial-gradient(760px 420px at 50% -8%,rgba(244,210,138,0.12),transparent 70%),linear-gradient(180deg,rgba(214,196,160,0.11) 0%,rgba(214,196,160,0) 38%),radial-gradient(900px 420px at 50% 108%,rgba(122,215,194,0.12),transparent 70%);}[data-dsh-aqua] body[data-ds-dark-theme] [data-dsh-aqua-ambient]{background:radial-gradient(760px 420px at 50% -8%,rgba(0,245,212,0.07),transparent 70%),linear-gradient(180deg,rgba(36,66,255,0.08) 0%,rgba(36,66,255,0) 46%),radial-gradient(900px 420px at 50% 108%,rgba(244,210,138,0.04),transparent 70%);}[data-dsh-aqua] [data-dsh-aqua-ambient]::after{content:'';position:absolute;inset:0;background-image:linear-gradient(rgba(255,255,255,var(--dsh-aqua-brightness-white,0)),rgba(255,255,255,var(--dsh-aqua-brightness-white,0))),linear-gradient(rgba(0,0,0,var(--dsh-aqua-brightness-black,0)),rgba(0,0,0,var(--dsh-aqua-brightness-black,0)));}@media (prefers-reduced-motion:no-preference){[data-dsh-aqua] [data-dsh-aqua-ambient]{animation:dsh-aqua-breathe 9s var(--ds-ease-in-out) infinite alternate;}}@keyframes dsh-aqua-breathe{from{opacity:0.86;}to{opacity:1;}}[data-dsh-aqua] [data-dsh-aqua-fluid-canvas]{position:absolute;inset:0;width:100%;height:100%;}[data-dsh-aqua] [data-dsh-mineradio-stars]{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;}[data-dsh-aqua] [data-dsh-aqua-wallpaper]{position:fixed;inset:0;z-index:-1;overflow:hidden;}[data-dsh-aqua] [data-dsh-aqua-wallpaper-img]{width:100%;height:100%;object-fit:cover;}[data-dsh-aqua] [data-dsh-aqua-wallpaper-video]{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;border:0;pointer-events:none;filter:blur(var(--dsh-aqua-video-blur,0px));}[data-dsh-aqua] [data-dsh-aqua-wallpaper-img]{filter:blur(var(--dsh-aqua-wallpaper-blur,0px));}[data-dsh-aqua] [data-dsh-aqua-wallpaper]::after{content:'';position:absolute;inset:0;background:rgb(255 255 255 / var(--dsh-aqua-wallpaper-frost,0));pointer-events:none;}[data-dsh-aqua] body[data-ds-dark-theme] [data-dsh-aqua-wallpaper]::after{background:rgb(12 18 27 / var(--dsh-aqua-wallpaper-frost,0));}[data-dsh-aqua] [data-dsh-aqua-wallpaper][data-media='video']::after{display:block;background:rgb(255 255 255 / calc(var(--dsh-aqua-video-dim,0.36) * 1.3));}[data-dsh-aqua] body[data-ds-dark-theme] [data-dsh-aqua-wallpaper][data-media='video']::after{background:rgb(8 12 20 / var(--dsh-aqua-video-dim,0.36));}[data-dsh-aqua][data-dsh-aqua-wallpaper-mask] [data-dsh-aqua-wallpaper-img]{filter:blur(var(--dsh-aqua-wallpaper-mask-blur,24px));}[data-dsh-aqua][data-dsh-aqua-wallpaper-mask] [data-dsh-aqua-wallpaper-video]{filter:blur(var(--dsh-aqua-wallpaper-mask-blur,24px));}[data-dsh-aqua][data-dsh-aqua-wallpaper-mask] [data-dsh-aqua-wallpaper]::before{content:'';position:absolute;inset:0;z-index:1;background:rgb(255 255 255 / var(--dsh-aqua-wallpaper-mask-veil,0.62));pointer-events:none;}[data-dsh-aqua][data-dsh-aqua-wallpaper-mask] body[data-ds-dark-theme] [data-dsh-aqua-wallpaper]::before{background:rgb(8 12 18 / var(--dsh-aqua-wallpaper-mask-veil,0.62));}[data-dsh-aqua][data-dsh-aqua-wallpaper-mask] [data-dsh-aqua-ambient] [data-dsh-mineradio-stars]{display:none;}[data-dsh-aqua] [data-dsh-aqua-whale]{position:absolute;transform:translate(-50%,-50%);pointer-events:none;mix-blend-mode:screen;opacity:0.92;}[data-dsh-aqua] [data-dsh-aqua-whale][data-scheme='light']{mix-blend-mode:multiply;}[data-dsh-aqua] [data-dsh-aqua-whale] canvas{display:block;width:100%;height:100%;}[data-dsh-aqua] [data-dsh-aqua-ambient][data-background='wallpaper'] [data-dsh-aqua-fluid-canvas]{visibility:hidden;}[data-dsh-aqua] [data-dsh-aqua-wallpaper][data-background='fluid']{display:none;}[data-dsh-aqua] [data-dsh-aqua-mesh]{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;}[data-dsh-aqua] [data-dsh-aqua-ambient][data-critters='off'] [data-aqua-critter]{display:none;}[data-dsh-aqua] [data-aqua-critter]{position:absolute;color:#7ea4df;opacity:0.22;}[data-dsh-aqua] [data-aqua-critter='fish']{animation:dsh-aqua-fish-swim 12s var(--ds-ease-in-out) infinite;}[data-dsh-aqua] [data-aqua-critter='fish-left']{animation:dsh-aqua-fish-swim-left 16s var(--ds-ease-in-out) infinite;}[data-dsh-aqua] [data-aqua-critter='bubble']{color:#a9c6ef;opacity:0;animation:dsh-aqua-bubble-rise 9s ease-in infinite;}[data-dsh-aqua] [data-aqua-critter='plankton']{color:#7ea4df;animation:dsh-aqua-plankton 5s ease-in-out infinite;}@keyframes dsh-aqua-fish-swim{0%{transform:translate3d(0,0,0) rotate(-5deg);}30%{transform:translate3d(40px,-15px,0) rotate(4deg);}70%{transform:translate3d(52px,-18px,0) rotate(3deg);}100%{transform:translate3d(0,0,0) rotate(-5deg);}}@keyframes dsh-aqua-fish-swim-left{0%{transform:translate3d(0,0,0) scaleX(-1) rotate(-5deg);}30%{transform:translate3d(-34px,-12px,0) scaleX(-1) rotate(4deg);}70%{transform:translate3d(-44px,-15px,0) scaleX(-1) rotate(3deg);}100%{transform:translate3d(0,0,0) scaleX(-1) rotate(-5deg);}}@keyframes dsh-aqua-bubble-rise{0%{transform:translate3d(0,0,0);opacity:0;}10%{opacity:0.5;}100%{transform:translate3d(8px,-150px,0);opacity:0;}}@keyframes dsh-aqua-plankton{0%,100%{opacity:0.1;}50%{opacity:0.38;}}[data-dsh-float] [role='menu'],[data-dsh-float] [role='dialog'],[data-dsh-float] [role='alert'],[data-dsh-float] [data-dsh-surface]{border-radius:14px;}[data-dsh-float] [data-dsh-surface]{background:color-mix(in srgb,rgb(255 255 255) calc(62% * var(--dsh-aqua-surface-frost,1)),transparent);border:1px solid rgba(154,111,44,0.14);box-shadow:inset 0 1px 0 rgba(255,255,255,0.45);backdrop-filter:blur(var(--dsh-aqua-blur,22px)) saturate(1.22) brightness(1.04);}[data-dsh-float] [data-dsh-surface]:hover:not(:disabled){background:color-mix(in srgb,rgb(255 255 255) calc(74% * var(--dsh-aqua-surface-frost,1)),transparent);}[data-dsh-float] body[data-ds-dark-theme] [data-dsh-surface]{background:color-mix(in srgb,rgb(42 46 56) calc(62% * var(--dsh-aqua-surface-frost,1)),transparent);border-color:rgba(255,255,255,0.08);box-shadow:inset 0 1px 0 rgba(255,255,255,0.08);}[data-dsh-float] body[data-ds-dark-theme] [data-dsh-surface]:hover:not(:disabled){background:color-mix(in srgb,rgb(54 58 70) calc(70% * var(--dsh-aqua-surface-frost,1)),transparent);}[data-dsh-float] [role='menuitem'],[data-dsh-float] [role='tooltip'],[data-dsh-float] [class*='pill']{border-radius:8px;}[data-dsh-float] button[class*='button']{border-radius:10px;}[data-dsh-float] [class*='iconButton'],[data-dsh-float] [class*='searchButton']{border-radius:8px;}[data-dsh-float] [data-dsh-add]{background:color-mix(in srgb,rgb(255 255 255) calc(40% * var(--dsh-aqua-frost,1)),transparent);border:1px solid rgba(154,111,44,0.15);box-shadow:inset 0 1px 0 rgba(255,255,255,0.5);backdrop-filter:blur(var(--dsh-aqua-blur,22px)) saturate(1.22) brightness(1.04);}[data-dsh-float] [data-dsh-add]:hover:not(:disabled){background:color-mix(in srgb,rgb(255 255 255) calc(58% * var(--dsh-aqua-frost,1)),transparent);}[data-dsh-float] body[data-ds-dark-theme] [data-dsh-add]{background:color-mix(in srgb,rgb(42 46 56) calc(40% * var(--dsh-aqua-frost,1)),transparent);border-color:rgba(255,255,255,0.10);box-shadow:inset 0 1px 0 rgba(255,255,255,0.08);}[data-dsh-float] body[data-ds-dark-theme] [data-dsh-add]:hover:not(:disabled){background:color-mix(in srgb,rgb(54 58 70) calc(52% * var(--dsh-aqua-frost,1)),transparent);}[data-dsh-float] [class*='bubble']{border-radius:14px;border:1px solid rgba(154,111,44,0.12);background:color-mix(in srgb,rgb(255 255 255) calc(42% * var(--dsh-aqua-frost,1)),transparent);backdrop-filter:blur(var(--dsh-aqua-blur,22px)) saturate(1.22) brightness(1.04);}[data-dsh-float] body[data-ds-dark-theme] [class*='bubble']{border-color:rgba(255,255,255,0.06);background:color-mix(in srgb,rgb(0 0 0) calc(40% * var(--dsh-aqua-frost,1)),transparent);}html[data-dsh-float][data-dsh-aqua-wallpaper][data-dsh-aqua-media='video'] [class*='bubble']{background:color-mix(in srgb,rgb(255 255 255) 70%,transparent);border-color:rgba(154,111,44,0.18);}html[data-dsh-float][data-dsh-aqua-wallpaper][data-dsh-aqua-media='video'] body[data-ds-dark-theme] [class*='bubble']{background:color-mix(in srgb,rgb(0 0 0) 50%,transparent);border-color:rgba(255,255,255,0.085);}[data-dsh-aqua] [data-state='running'] [data-disclosure-row]::after,[data-dsh-aqua] [data-state='running'] [class*='_row']::after{background:linear-gradient(90deg,transparent 0%,rgba(244,210,138,0.10) 55%,transparent 100%) !important;}[data-dsh-float] [class*='card']{border-radius:14px;}[data-dsh-float] [data-composer-card],[data-dsh-float] [data-composer-card]::after{border-radius:24px;}[data-dsh-float] [data-composer-card]{position:relative;z-index:8;background:var(--dsh-aqua-glass-card-light);border:1px solid rgba(154,111,44,0.22);box-shadow:var(--dsh-aqua-glass-shadow-light);}[data-dsh-float] [data-composer-card]::before{content:'';position:absolute;inset:0;border-radius:inherit;backdrop-filter:blur(var(--dsh-aqua-blur,22px)) saturate(1.22) brightness(1.04);pointer-events:none;z-index:-1;}[data-dsh-float] body[data-ds-dark-theme] [data-composer-card]{background:var(--dsh-aqua-glass-card-dark);border:1px solid rgba(0,245,212,0.22);box-shadow:var(--dsh-aqua-glass-shadow-dark);}[data-dsh-aqua][data-dsh-float] [data-dsh-inputbar]:has([data-dsh-stats]){position:relative;z-index:8;width:calc(var(--dsh-chat-content-width) + 32px);max-width:none;margin:0 auto 12px;padding:0;border:1px solid rgba(154,111,44,0.22);border-radius:24px;background:var(--dsh-aqua-glass-card-light);box-shadow:var(--dsh-aqua-glass-shadow-light);}[data-dsh-aqua][data-dsh-float] [data-dsh-inputbar]:has([data-dsh-stats])::before{content:'';position:absolute;inset:0;border-radius:inherit;backdrop-filter:blur(var(--dsh-aqua-blur,22px)) saturate(1.22) brightness(1.04);pointer-events:none;z-index:-1;}[data-dsh-float] body[data-ds-dark-theme] [data-dsh-inputbar]:has([data-dsh-stats]){border-color:rgba(0,245,212,0.22);background:var(--dsh-aqua-glass-card-dark);box-shadow:var(--dsh-aqua-glass-shadow-dark);}[data-dsh-float] [data-dsh-inputbar]:has([data-dsh-stats]) [data-composer-card]{border:none;border-radius:0;background:transparent;box-shadow:none;backdrop-filter:none;}[data-dsh-float] [data-dsh-inputbar]:has([data-dsh-stats]) [data-composer-card]::before,[data-dsh-float] [data-dsh-inputbar]:has([data-dsh-stats]) [data-composer-card]::after{display:none;}[data-dsh-float] [data-dsh-inputbar]:has([data-dsh-stats]) [data-dsh-stats]{width:100%;max-width:none;margin:auto 0 0;min-height:24px;box-sizing:border-box;display:block;padding:2px 16px;border:none;border-top:1px solid rgba(154,111,44,0.15);border-radius:0;background:transparent;box-shadow:none;backdrop-filter:none;}[data-dsh-float] body[data-ds-dark-theme] [data-dsh-inputbar]:has([data-dsh-stats]) [data-dsh-stats]{border-top-color:rgba(255,255,255,0.095);}[data-dsh-float] [data-composer-card]::after{-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.mineradio_w3.mineradio_org/2000/svg'%3E%3Crect width='100%25' height='100%25' fill='none' rx='24' ry='24' stroke='black' stroke-width='2' stroke-dasharray='4 4'/%3E%3C/svg%3E");mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.mineradio_w3.mineradio_org/2000/svg'%3E%3Crect width='100%25' height='100%25' fill='none' rx='24' ry='24' stroke='black' stroke-width='2' stroke-dasharray='4 4'/%3E%3C/svg%3E");}[data-dsh-float] [class*='block']{border-radius:14px;--dsl-code-block-border-radius:14px;--dsl-diff-radius:14px;--dsl-read-radius:14px;--dsl-terminal-radius:14px;--dsl-web-radius:14px;--dsl-search-radius:14px;}[data-dsh-float] header{margin:12px 16px 0;padding:10px 16px 8px;border:1px solid rgba(154,111,44,0.22);border-bottom-color:transparent;border-radius:20px;background:var(--dsh-aqua-glass-card-light);box-shadow:var(--dsh-aqua-glass-shadow-light);backdrop-filter:blur(var(--dsh-aqua-blur,22px)) saturate(1.22) brightness(1.04);}[data-dsh-float] header::after{display:none;}[data-dsh-float] body[data-ds-dark-theme] header{border-color:rgba(0,245,212,0.22);border-bottom-color:transparent;background:var(--dsh-aqua-glass-card-dark);box-shadow:var(--dsh-aqua-glass-shadow-dark);}[data-dsh-float] [data-dsh-frame][data-sidebar-collapsed] header{margin-left:28px;}[data-dsh-float] [class*='sidebarCol']{position:relative;z-index:9;margin:12px;padding:10px 12px 14px;border:1px solid rgba(255,255,255,0.26);border-top-color:rgba(255,255,255,0.50);border-radius:20px;background:var(--dsh-aqua-glass-card-light);box-shadow:0 22px 64px rgb(38 26 8 / 0.16);overflow:hidden;}[data-dsh-float] [class*='sidebarCol']::before{content:'';position:absolute;inset:0;border-radius:inherit;backdrop-filter:blur(var(--dsh-aqua-blur,22px)) saturate(1.22) brightness(1.04);pointer-events:none;z-index:-1;}[data-dsh-float] body[data-ds-dark-theme] [class*='sidebarCol']{border-color:rgba(255,255,255,0.16);border-top-color:rgba(255,255,255,0.30);background:var(--dsh-aqua-glass-card-dark);box-shadow:0 22px 64px rgb(0 0 0 / 0.30),0 0 34px rgb(0 245 212 / 0.052),inset 0 -24px 58px rgb(0 0 0 / 0.16);}[data-dsh-float] [data-dsh-frame][data-sidebar-collapsed] [class*='sidebarCol']{margin:12px -12px 12px 12px;padding:0;border-radius:16px;transition:margin 150ms var(--ds-ease-in-out),border-radius 150ms var(--ds-ease-in-out),transform 0.1s ease-out;}[data-dsh-float] body[data-ds-dark-theme] [data-dsh-frame][data-sidebar-collapsed] [class*='sidebarCol']{background:linear-gradient(168deg,rgb(0 245 212 / 0.045),rgb(12 13 18 / 0.72) 46%,rgb(2 3 5 / 0.68));border-color:rgba(255,255,255,0.10);border-top-color:rgba(255,255,255,0.22);}[data-dsh-float] [data-dsh-frame]:not([data-sidebar-collapsed]) [data-dsh-sidebar-root]{width:100% !important;}[data-dsh-float] [data-dsh-trajectory]{margin:8px 16px 12px;width:calc(100% - 32px);height:calc(100% - 20px);border:1px solid rgba(154,111,44,0.22);border-radius:20px;background:var(--dsh-aqua-glass-card-light);box-shadow:var(--dsh-aqua-glass-shadow-light);backdrop-filter:blur(var(--dsh-aqua-blur,22px)) saturate(1.22) brightness(1.04);overflow:hidden;}[data-dsh-float] body[data-ds-dark-theme] [data-dsh-trajectory]{border-color:rgba(0,245,212,0.22);background:var(--dsh-aqua-glass-card-dark);box-shadow:var(--dsh-aqua-glass-shadow-dark);}[data-dsh-float] [data-dsh-trajectory] [role='toolbar'],[data-dsh-float] [data-dsh-trajectory] section[aria-label='Trajectory timeline']{background:transparent;}[data-dsh-float] [data-dsh-inputbar]:not([class*='hero']){padding-bottom:12px;}[data-dsh-float] [data-dsh-stats]{position:relative;z-index:8;width:calc(var(--dsh-chat-content-width) + 32px);max-width:none;margin:0 auto;padding:2px 16px;border:1px solid rgba(154,111,44,0.22);border-top:1px solid rgba(154,111,44,0.15);border-radius:0 0 24px 24px;background:var(--dsh-aqua-glass-card-light);box-shadow:var(--dsh-aqua-glass-shadow-light);backdrop-filter:blur(var(--dsh-aqua-blur,22px)) saturate(1.22) brightness(1.04);color:rgb(38 46 62 / 0.9);}[data-dsh-float] body[data-ds-dark-theme] [data-dsh-stats]{border-color:rgba(0,245,212,0.22);border-top-color:rgba(255,255,255,0.095);background:var(--dsh-aqua-glass-card-dark);box-shadow:var(--dsh-aqua-glass-shadow-dark);color:rgb(228 236 248 / 0.92);}[data-dsh-float] [data-composer-card] textarea::placeholder{color:rgb(55 64 84 / 0.5);}[data-dsh-float] body[data-ds-dark-theme] [data-composer-card] textarea::placeholder{color:rgb(205 216 234 / 0.52);}[data-dsh-aqua][data-dsh-aqua-spotlight] [data-dsh-aqua-spot]{position:relative;isolation:isolate;}[data-dsh-aqua][data-dsh-aqua-spotlight] [data-dsh-inputbar][data-dsh-aqua-spot]{isolation:auto;z-index:8;}[data-dsh-aqua] [data-dsh-aqua-glow]{display:none;}[data-dsh-aqua][data-dsh-aqua-spotlight] [data-dsh-aqua-glow]{display:block;position:absolute;inset:0;border-radius:inherit;pointer-events:none;opacity:0;transition:opacity 0.3s ease;z-index:-1;}[data-dsh-aqua][data-dsh-aqua-spotlight] [data-dsh-aqua-spot][data-spot-on] [data-dsh-aqua-glow]{opacity:1;}[data-dsh-aqua][data-dsh-aqua-spotlight] [data-dsh-inputbar][data-dsh-aqua-spot] [data-dsh-aqua-glow]{border-radius:24px;}[data-dsh-aqua][data-dsh-float] [class*='sidebarCol']:has([role='dialog']){backdrop-filter:none;}[data-dsh-float][data-dsh-aqua-press] [data-dsh-aqua-spot]{transition:transform 0.1s ease-out;}[data-dsh-aqua] body [role='dialog']{border:1px solid rgba(154,111,44,0.22);border-radius:20px;background:var(--dsh-aqua-glass-card-light);box-shadow:var(--dsh-aqua-glass-shadow-light);backdrop-filter:blur(var(--dsh-aqua-blur,22px)) saturate(1.22) brightness(1.04);}[data-dsh-aqua] body[data-ds-dark-theme] [role='dialog']{border-color:rgba(0,245,212,0.22);background:var(--dsh-aqua-glass-card-dark);box-shadow:var(--dsh-aqua-glass-shadow-dark);}[data-dsh-float] [role='treeitem'][aria-selected='true']{box-shadow:inset 2px 0 0 var(--dsw-specific-sidebar-nav-item-active-accent),0 0 16px rgba(244,210,138,0.16);}[data-dsh-float] button[class*='button']:hover:not(:disabled),[data-dsh-float] [role='menuitem']:hover:not(:disabled){box-shadow:0 0 12px rgba(244,210,138,0.18),inset 0 0 0 1px rgba(255,255,255,0.085);}[data-dsh-float] [role='menu'],[data-dsh-float] [role='tree'][class*='menu']{background:var(--dsh-aqua-glass-card-light);border:1px solid rgba(154,111,44,0.22);box-shadow:var(--dsh-aqua-glass-shadow-light);backdrop-filter:blur(var(--dsh-aqua-blur,22px)) saturate(1.22) brightness(1.04);}[data-dsh-float] body[data-ds-dark-theme] [role='menu'],[data-dsh-float] body[data-ds-dark-theme] [role='tree'][class*='menu']{background:var(--dsh-aqua-glass-card-dark);border-color:rgba(0,245,212,0.22);box-shadow:var(--dsh-aqua-glass-shadow-dark);}[data-dsh-float] [role='menu'] [class*='groupTitle']{background:transparent;color:var(--dsw-alias-label-secondary);}[data-dsh-float] [class*='_root']:has(> [class*='_body'] > button[class*='_header'][aria-expanded]),[data-dsh-float] [class*='_dock'] > [class*='_panel']:has(> [class*='_header']),[data-dsh-float] [class*='_dock'] > [class*='_bar']{background:var(--dsh-aqua-glass-card-light);border-color:rgba(154,111,44,0.22);box-shadow:var(--dsh-aqua-glass-shadow-light);backdrop-filter:blur(var(--dsh-aqua-blur,22px)) saturate(1.22) brightness(1.04);}[data-dsh-float] body[data-ds-dark-theme] [class*='_root']:has(> [class*='_body'] > button[class*='_header'][aria-expanded]),[data-dsh-float] body[data-ds-dark-theme] [class*='_dock'] > [class*='_panel']:has(> [class*='_header']),[data-dsh-float] body[data-ds-dark-theme] [class*='_dock'] > [class*='_bar']{background:var(--dsh-aqua-glass-card-dark);border-color:rgba(0,245,212,0.22);box-shadow:var(--dsh-aqua-glass-shadow-dark);}[data-dsh-aqua] [data-dsh-aqua-fade]{position:fixed;left:0;right:0;height:13px;z-index:7;pointer-events:none;backdrop-filter:blur(5px);background:rgba(255,255,255,0.2);}[data-dsh-aqua] body[data-ds-dark-theme] [data-dsh-aqua-fade]{background:rgba(0,0,0,0.15);}[data-dsh-aqua] [data-dsh-aqua-fade='top']{top:0;-webkit-mask-image:linear-gradient(180deg,black 0%,transparent 100%);mask-image:linear-gradient(180deg,black 0%,transparent 100%);}[data-dsh-aqua] [data-dsh-aqua-fade='bottom']{bottom:0;-webkit-mask-image:linear-gradient(0deg,black 0%,transparent 100%);mask-image:linear-gradient(0deg,black 0%,transparent 100%);}[data-dsh-aqua]:focus-visible{outline:2px solid rgba(154,111,44,0.75);outline-offset:1px;}[data-dsh-aqua]::selection{background:rgba(154,111,44,0.35);}[data-dsh-aqua] select option,[data-dsh-aqua] select optgroup{background-color:#FFFFFF;color:#2A241A;}[data-dsh-aqua] body[data-ds-dark-theme] select option,[data-dsh-aqua] body[data-ds-dark-theme] select optgroup{background-color:#16181D;color:#F2F0EA;}[data-dsh-aqua] [role='dialog'] select{background-color:transparent;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.mineradio_w3.mineradio_org/2000/svg' width='12' height='12' viewBox='0 0 12 12' fill='none'%3E%3Cpath d='M3 4.5L6 7.5L9 4.5' stroke='%237A7468' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E"),var(--dsh-aqua-glass-card-light);background-position:right 12px center,0 0;background-repeat:no-repeat,no-repeat;background-size:12px 12px,auto;border-color:rgba(154,111,44,0.22);box-shadow:var(--dsh-aqua-glass-shadow-light);backdrop-filter:blur(var(--dsh-aqua-blur,22px)) saturate(1.22) brightness(1.04);color:var(--dsw-alias-label-primary);}[data-dsh-aqua] body[data-ds-dark-theme] [role='dialog'] select{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.mineradio_w3.mineradio_org/2000/svg' width='12' height='12' viewBox='0 0 12 12' fill='none'%3E%3Cpath d='M3 4.5L6 7.5L9 4.5' stroke='%23CBC4B8' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E"),var(--dsh-aqua-glass-card-dark);border-color:rgba(0,245,212,0.22);box-shadow:var(--dsh-aqua-glass-shadow-dark);}[data-dsh-float] [role='dialog'] h2{font-family:'Space Grotesk Variable','Noto Serif SC','Songti SC','STSong','SimSun',serif;font-weight:600;letter-spacing:0.02em;}[data-dsh-float] [role='treeitem']{font-family:'Space Grotesk Variable','Noto Serif SC','Songti SC','STSong','SimSun',serif;font-weight:500;}[data-dsh-float] [data-phase='hero']{animation:dsh-aqua-hero-in 0.32s var(--ds-ease-in-out);}[data-dsh-float] [data-phase='active']{animation:dsh-aqua-active-in 0.3s var(--ds-ease-in-out);}[data-dsh-float] [data-testid^='view-']{animation:dsh-aqua-view-in 0.26s var(--ds-ease-in-out);}[data-dsh-float] [class*='userRow']{animation:dsh-aqua-rise 0.28s var(--ds-ease-in-out) both;}[data-dsh-float] [data-tool]{animation:dsh-aqua-rise 0.3s var(--ds-ease-in-out) both;}[data-dsh-float] [role='dialog']{animation:dsh-aqua-dialog-in 0.24s var(--ds-ease-in-out);}@keyframes dsh-aqua-hero-in{from{opacity:0;}}@keyframes dsh-aqua-active-in{from{opacity:0;}}@keyframes dsh-aqua-view-in{from{opacity:0;}}@keyframes dsh-aqua-rise{from{opacity:0;transform:translateY(6px);}}@keyframes dsh-aqua-dialog-in{from{opacity:0;transform:translateY(8px) scale(0.985);}}[data-dsh-float][data-dsh-dispersion] [data-composer-card]::before,[data-dsh-float][data-dsh-dispersion] header,[data-dsh-float][data-dsh-dispersion] [data-dsh-trajectory],[data-dsh-float][data-dsh-dispersion] [data-dsh-stats],[data-dsh-float][data-dsh-dispersion] [data-dsh-inputbar]:has([data-dsh-stats])::before{backdrop-filter:blur(var(--dsh-aqua-blur,22px)) url(#mineradio-glass-dispersion) saturate(1.22) brightness(1.04);}[data-dsh-float][data-dsh-dispersion] [class*='sidebarCol']::before{backdrop-filter:blur(var(--dsh-aqua-blur,22px)) url(#mineradio-glass-dispersion-tall) saturate(1.22) brightness(1.04);}[data-dsh-float][data-dsh-dispersion] [data-dsh-frame][data-sidebar-collapsed] [class*='sidebarCol']::before{backdrop-filter:blur(var(--dsh-aqua-blur,22px)) saturate(1.22) brightness(1.04);}[data-dsh-compat] [role='menu'],[data-dsh-compat] [role='tooltip'],[data-dsh-compat] [class*='card'],[data-dsh-compat] [class*='bubble'],[data-dsh-compat] [class*='panel'],[data-dsh-compat] [class*='popover'],[data-dsh-compat] [class*='dropdown']{backdrop-filter:blur(var(--dsh-aqua-blur,22px));}[data-dsh-aqua] [data-dsh-panel-host] [class*='panel' i]:not([class*='Body' i]):not([class*='Resize' i]):not([class*='Tab' i]){background:var(--dsh-aqua-glass-card-light);border-color:rgba(154,111,44,0.22);box-shadow:var(--dsh-aqua-glass-shadow-light);backdrop-filter:blur(var(--dsh-aqua-blur,22px)) saturate(1.22) brightness(1.04);}[data-dsh-aqua] body[data-ds-dark-theme] [data-dsh-panel-host] [class*='panel' i]:not([class*='Body' i]):not([class*='Resize' i]):not([class*='Tab' i]){background:var(--dsh-aqua-glass-card-dark);border-color:rgba(0,245,212,0.22);box-shadow:var(--dsh-aqua-glass-shadow-dark);}[data-dsh-aqua] [data-dsh-panel-host] [class*='tabBar']{background:transparent;}[data-dsh-aqua] [data-dsh-panel-host] [class*='_pane']:not([class*='panel']):not([class*='Content']):not([class*='Tab']){background:transparent;}[data-dsh-aqua] [data-dsh-panel-host] [class*='terminalWrap']{background:transparent;}[data-dsh-aqua] [data-dsh-panel-host] [class*='xterm-viewport'],[data-dsh-aqua] [data-dsh-panel-host] [class*='xterm-screen']{background-color:transparent !important;}@media (prefers-reduced-motion:reduce){[data-dsh-float] [data-phase='hero'],[data-dsh-float] [data-phase='active'],[data-dsh-float] [data-testid^='view-'],[data-dsh-float] [class*='userRow'],[data-dsh-float] [data-tool],[data-dsh-float] [role='dialog'],[data-dsh-aqua] [data-dsh-aqua-ambient],[data-dsh-aqua] [data-aqua-critter]{animation:none;}[data-dsh-aqua] [data-aqua-critter='bubble']{opacity:0;}}`;
4730
+ tag.textContent = `[data-dsh-aqua] body{background:var(--dsw-alias-bg-base);}[data-dsh-aqua]{--dsh-aqua-glass-card-light:linear-gradient(rgba(255 255 255 / var(--dsh-aqua-frost-white,0)),rgba(255 255 255 / var(--dsh-aqua-frost-white,0))),radial-gradient(circle at 16% 0%,rgb(255 255 255 / calc(0.38 * var(--dsh-aqua-frost,1))),transparent 34%),radial-gradient(circle at 88% 8%,rgb(154 111 44 / calc(0.16 * var(--dsh-aqua-frost,1))),transparent 36%),linear-gradient(145deg,rgb(244 210 138 / calc(0.16 * var(--dsh-aqua-frost,1))),rgb(255 252 246 / calc(0.78 * var(--dsh-aqua-frost,1))) 42%,rgb(250 246 238 / calc(0.82 * var(--dsh-aqua-frost,1))));--dsh-aqua-glass-card-dark:linear-gradient(rgba(255 255 255 / var(--dsh-aqua-frost-white,0)),rgba(255 255 255 / var(--dsh-aqua-frost-white,0))),radial-gradient(circle at 16% 0%,rgb(255 255 255 / calc(0.10 * var(--dsh-aqua-frost,1))),transparent 34%),radial-gradient(circle at 88% 8%,rgb(0 245 212 / calc(0.12 * var(--dsh-aqua-frost,1))),transparent 36%),linear-gradient(145deg,rgb(0 245 212 / calc(0.115 * var(--dsh-aqua-frost,1))),rgb(12 13 18 / calc(0.70 * var(--dsh-aqua-frost,1))) 42%,rgb(2 3 5 / calc(0.66 * var(--dsh-aqua-frost,1))));--dsh-aqua-glass-shadow-light:inset 0 0 0 1px rgb(255 255 255 / 0.42),inset 0 1px 0 rgb(255 255 255 / calc(0.70 + 0.22 * (1 - var(--dsh-aqua-spec-y,0)) / 2)),inset 0 -1px 0 rgb(154 111 44 / calc(0.10 + 0.16 * (1 + var(--dsh-aqua-spec-y,0)) / 2)),inset 1px 0 0 rgb(255 255 255 / calc(0.10 + 0.16 * (1 - var(--dsh-aqua-spec-x,0)) / 2)),inset -1px 0 0 rgb(154 111 44 / calc(0.06 + 0.10 * (1 + var(--dsh-aqua-spec-x,0)) / 2)),0 18px 44px rgb(38 26 8 / 0.12);--dsh-aqua-glass-shadow-dark:inset 0 0 0 1px rgb(255 255 255 / 0.13),inset 0 1px 0 rgb(255 255 255 / calc(0.22 + 0.20 * (1 - var(--dsh-aqua-spec-y,0)) / 2)),inset 0 -1px 0 rgb(255 255 255 / calc(0.03 + 0.20 * (1 + var(--dsh-aqua-spec-y,0)) / 2)),inset 1px 0 0 rgb(255 255 255 / calc(0.02 + 0.08 * (1 - var(--dsh-aqua-spec-x,0)) / 2)),inset -1px 0 0 rgb(255 255 255 / calc(0.02 + 0.08 * (1 + var(--dsh-aqua-spec-x,0)) / 2)),0 22px 64px rgb(0 0 0 / 0.30),0 0 34px rgb(0 245 212 / 0.052),inset 0 -24px 58px rgb(0 0 0 / 0.16);--dsh-aqua-bloom:hsla(var(--dsh-aqua-bloom-h,44),82%,66%,0.07);}[data-dsh-aqua] [data-dsh-frame]{background:transparent;}[data-dsh-aqua] [data-phase],[data-dsh-aqua] [data-dsh-details]{background:transparent;}[data-dsh-float] [data-phase='active'] header{position:relative;z-index:8;}[data-dsh-float] [class*='banner']{position:static;}[data-dsh-float] [class*='bannerWrap']{background-color:transparent;}[data-dsh-float] [data-phase='active'] [data-conversation-scroll]{margin-top:-95px;padding-top:107px;}[data-dsh-aqua] [data-phase] [class*='composerSeat'][class*='composerSeat']{background:none;}[data-dsh-aqua] [data-dsh-aqua-ambient]{position:fixed;inset:0;z-index:-1;pointer-events:none;overflow:hidden;background:radial-gradient(760px 420px at 50% -8%,rgba(244,210,138,0.12),transparent 70%),linear-gradient(180deg,rgba(214,196,160,0.11) 0%,rgba(214,196,160,0) 38%),radial-gradient(900px 420px at 50% 108%,rgba(122,215,194,0.12),transparent 70%);}[data-dsh-aqua] body[data-ds-dark-theme] [data-dsh-aqua-ambient]{background:radial-gradient(760px 420px at 50% -8%,rgba(0,245,212,0.07),transparent 70%),linear-gradient(180deg,rgba(36,66,255,0.08) 0%,rgba(36,66,255,0) 46%),radial-gradient(900px 420px at 50% 108%,rgba(244,210,138,0.04),transparent 70%);}[data-dsh-aqua] [data-dsh-aqua-ambient]::after{content:'';position:absolute;inset:0;background-image:linear-gradient(rgba(255,255,255,var(--dsh-aqua-brightness-white,0)),rgba(255,255,255,var(--dsh-aqua-brightness-white,0))),linear-gradient(rgba(0,0,0,var(--dsh-aqua-brightness-black,0)),rgba(0,0,0,var(--dsh-aqua-brightness-black,0)));}@media (prefers-reduced-motion:no-preference){[data-dsh-aqua] [data-dsh-aqua-ambient]{animation:dsh-aqua-breathe 9s var(--ds-ease-in-out) infinite alternate;}}@keyframes dsh-aqua-breathe{from{opacity:0.86;}to{opacity:1;}}[data-dsh-aqua] [data-dsh-aqua-fluid-canvas]{position:absolute;inset:0;width:100%;height:100%;}[data-dsh-aqua] [data-dsh-mineradio-stars]{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;}[data-dsh-aqua] [data-dsh-aqua-wallpaper]{position:fixed;inset:0;z-index:-1;overflow:hidden;}[data-dsh-aqua] [data-dsh-aqua-wallpaper-img]{width:100%;height:100%;object-fit:cover;}[data-dsh-aqua] [data-dsh-aqua-wallpaper-video]{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;border:0;pointer-events:none;filter:blur(var(--dsh-aqua-video-blur,0px));}[data-dsh-aqua] [data-dsh-aqua-wallpaper-img]{filter:blur(var(--dsh-aqua-wallpaper-blur,0px));}[data-dsh-aqua] [data-dsh-aqua-wallpaper]::after{content:'';position:absolute;inset:0;background:rgb(255 255 255 / var(--dsh-aqua-wallpaper-frost,0));pointer-events:none;}[data-dsh-aqua] body[data-ds-dark-theme] [data-dsh-aqua-wallpaper]::after{background:rgb(12 18 27 / var(--dsh-aqua-wallpaper-frost,0));}[data-dsh-aqua] [data-dsh-aqua-wallpaper][data-media='video']::after{display:block;background:rgb(255 255 255 / calc(var(--dsh-aqua-video-dim,0.36) * 1.3));}[data-dsh-aqua] body[data-ds-dark-theme] [data-dsh-aqua-wallpaper][data-media='video']::after{background:rgb(8 12 20 / var(--dsh-aqua-video-dim,0.36));}[data-dsh-aqua][data-dsh-aqua-wallpaper-mask] [data-dsh-aqua-wallpaper-img]{filter:blur(var(--dsh-aqua-wallpaper-mask-blur,24px));}[data-dsh-aqua][data-dsh-aqua-wallpaper-mask] [data-dsh-aqua-wallpaper-video]{filter:blur(var(--dsh-aqua-wallpaper-mask-blur,24px));}[data-dsh-aqua][data-dsh-aqua-wallpaper-mask] [data-dsh-aqua-wallpaper]::before{content:'';position:absolute;inset:0;z-index:1;background:rgb(255 255 255 / var(--dsh-aqua-wallpaper-mask-veil,0.62));pointer-events:none;}[data-dsh-aqua][data-dsh-aqua-wallpaper-mask] body[data-ds-dark-theme] [data-dsh-aqua-wallpaper]::before{background:rgb(8 12 18 / var(--dsh-aqua-wallpaper-mask-veil,0.62));}[data-dsh-aqua][data-dsh-aqua-wallpaper-mask] [data-dsh-aqua-ambient] [data-dsh-mineradio-stars]{display:none;}[data-dsh-aqua] [data-dsh-aqua-whale]{position:absolute;transform:translate(-50%,-50%);pointer-events:none;mix-blend-mode:screen;opacity:0.92;}[data-dsh-aqua] [data-dsh-aqua-whale][data-scheme='light']{mix-blend-mode:multiply;}[data-dsh-aqua] [data-dsh-aqua-whale] canvas{display:block;width:100%;height:100%;}[data-dsh-aqua] [data-dsh-aqua-ambient][data-background='wallpaper'] [data-dsh-aqua-fluid-canvas]{visibility:hidden;}[data-dsh-aqua] [data-dsh-aqua-wallpaper][data-background='fluid']{display:none;}[data-dsh-aqua] [data-dsh-aqua-mesh]{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;}[data-dsh-aqua] [data-dsh-aqua-ambient][data-critters='off'] [data-aqua-critter]{display:none;}[data-dsh-aqua] [data-aqua-critter]{position:absolute;color:#7ea4df;opacity:0.22;}[data-dsh-aqua] [data-aqua-critter='fish']{animation:dsh-aqua-fish-swim 12s var(--ds-ease-in-out) infinite;}[data-dsh-aqua] [data-aqua-critter='fish-left']{animation:dsh-aqua-fish-swim-left 16s var(--ds-ease-in-out) infinite;}[data-dsh-aqua] [data-aqua-critter='bubble']{color:#a9c6ef;opacity:0;animation:dsh-aqua-bubble-rise 9s ease-in infinite;}[data-dsh-aqua] [data-aqua-critter='plankton']{color:#7ea4df;animation:dsh-aqua-plankton 5s ease-in-out infinite;}@keyframes dsh-aqua-fish-swim{0%{transform:translate3d(0,0,0) rotate(-5deg);}30%{transform:translate3d(40px,-15px,0) rotate(4deg);}70%{transform:translate3d(52px,-18px,0) rotate(3deg);}100%{transform:translate3d(0,0,0) rotate(-5deg);}}@keyframes dsh-aqua-fish-swim-left{0%{transform:translate3d(0,0,0) scaleX(-1) rotate(-5deg);}30%{transform:translate3d(-34px,-12px,0) scaleX(-1) rotate(4deg);}70%{transform:translate3d(-44px,-15px,0) scaleX(-1) rotate(3deg);}100%{transform:translate3d(0,0,0) scaleX(-1) rotate(-5deg);}}@keyframes dsh-aqua-bubble-rise{0%{transform:translate3d(0,0,0);opacity:0;}10%{opacity:0.5;}100%{transform:translate3d(8px,-150px,0);opacity:0;}}@keyframes dsh-aqua-plankton{0%,100%{opacity:0.1;}50%{opacity:0.38;}}[data-dsh-float] [role='menu'],[data-dsh-float] [role='dialog'],[data-dsh-float] [role='alert'],[data-dsh-float] [data-dsh-surface]{border-radius:14px;}[data-dsh-float] [data-dsh-surface]{background:color-mix(in srgb,rgb(255 255 255) calc(62% * var(--dsh-aqua-surface-frost,1)),transparent);border:1px solid rgba(122,86,28,0.26);box-shadow:inset 0 1px 0 rgba(255,255,255,0.45);backdrop-filter:blur(var(--dsh-aqua-blur,22px)) saturate(1.22) brightness(1.04);}[data-dsh-float] [data-dsh-surface]:hover:not(:disabled){background:color-mix(in srgb,rgb(255 255 255) calc(74% * var(--dsh-aqua-surface-frost,1)),transparent);}[data-dsh-float] body[data-ds-dark-theme] [data-dsh-surface]{background:color-mix(in srgb,rgb(42 46 56) calc(62% * var(--dsh-aqua-surface-frost,1)),transparent);border-color:rgba(255,255,255,0.08);box-shadow:inset 0 1px 0 rgba(255,255,255,0.08);}[data-dsh-float] body[data-ds-dark-theme] [data-dsh-surface]:hover:not(:disabled){background:color-mix(in srgb,rgb(54 58 70) calc(70% * var(--dsh-aqua-surface-frost,1)),transparent);}[data-dsh-float] [role='menuitem'],[data-dsh-float] [role='tooltip'],[data-dsh-float] [class*='pill']{border-radius:8px;}[data-dsh-float] button[class*='button']{border-radius:10px;}[data-dsh-float] [class*='iconButton'],[data-dsh-float] [class*='searchButton']{border-radius:8px;}[data-dsh-float] [data-dsh-add]{background:color-mix(in srgb,rgb(255 255 255) calc(40% * var(--dsh-aqua-frost,1)),transparent);border:1px solid rgba(122,86,28,0.26);box-shadow:inset 0 1px 0 rgba(255,255,255,0.5);backdrop-filter:blur(var(--dsh-aqua-blur,22px)) saturate(1.22) brightness(1.04);}[data-dsh-float] [data-dsh-add]:hover:not(:disabled){background:color-mix(in srgb,rgb(255 255 255) calc(58% * var(--dsh-aqua-frost,1)),transparent);}[data-dsh-float] body[data-ds-dark-theme] [data-dsh-add]{background:color-mix(in srgb,rgb(42 46 56) calc(40% * var(--dsh-aqua-frost,1)),transparent);border-color:rgba(255,255,255,0.10);box-shadow:inset 0 1px 0 rgba(255,255,255,0.08);}[data-dsh-float] body[data-ds-dark-theme] [data-dsh-add]:hover:not(:disabled){background:color-mix(in srgb,rgb(54 58 70) calc(52% * var(--dsh-aqua-frost,1)),transparent);}[data-dsh-float] [class*='bubble']{border-radius:14px;border:1px solid rgba(122,86,28,0.22);background:color-mix(in srgb,rgb(255 255 255) calc(62% * var(--dsh-aqua-frost,1)),transparent);backdrop-filter:blur(var(--dsh-aqua-blur,22px)) saturate(1.22) brightness(1.04);}[data-dsh-float] body[data-ds-dark-theme] [class*='bubble']{border-color:rgba(255,255,255,0.06);background:color-mix(in srgb,rgb(0 0 0) calc(40% * var(--dsh-aqua-frost,1)),transparent);}html[data-dsh-float][data-dsh-aqua-wallpaper][data-dsh-aqua-media='video'] [class*='bubble']{background:color-mix(in srgb,rgb(255 255 255) 70%,transparent);border-color:rgba(122,86,28,0.28);}html[data-dsh-float][data-dsh-aqua-wallpaper][data-dsh-aqua-media='video'] body[data-ds-dark-theme] [class*='bubble']{background:color-mix(in srgb,rgb(0 0 0) 50%,transparent);border-color:rgba(255,255,255,0.085);}[data-dsh-aqua] [data-state='running'] [data-disclosure-row]::after,[data-dsh-aqua] [data-state='running'] [class*='_row']::after{background:linear-gradient(90deg,transparent 0%,rgba(244,210,138,0.10) 55%,transparent 100%) !important;}[data-dsh-float] [class*='card']{border-radius:14px;}[data-dsh-float] [data-composer-card],[data-dsh-float] [data-composer-card]::after{border-radius:24px;}[data-dsh-float] [data-composer-card]{position:relative;z-index:8;background:var(--dsh-aqua-glass-card-light);border:1px solid rgba(122,86,28,0.34);box-shadow:var(--dsh-aqua-glass-shadow-light);}[data-dsh-float] [data-composer-card]::before{content:'';position:absolute;inset:0;border-radius:inherit;backdrop-filter:blur(var(--dsh-aqua-blur,22px)) saturate(1.22) brightness(1.04);pointer-events:none;z-index:-1;}[data-dsh-float] body[data-ds-dark-theme] [data-composer-card]{background:var(--dsh-aqua-glass-card-dark);border:1px solid rgba(0,245,212,0.22);box-shadow:var(--dsh-aqua-glass-shadow-dark);}[data-dsh-aqua][data-dsh-float] [data-dsh-inputbar]:has([data-dsh-stats]){position:relative;z-index:8;width:calc(var(--dsh-chat-content-width) + 32px);max-width:none;margin:0 auto 12px;padding:0;border:1px solid rgba(122,86,28,0.34);border-radius:24px;background:var(--dsh-aqua-glass-card-light);box-shadow:var(--dsh-aqua-glass-shadow-light);}[data-dsh-aqua][data-dsh-float] [data-dsh-inputbar]:has([data-dsh-stats])::before{content:'';position:absolute;inset:0;border-radius:inherit;backdrop-filter:blur(var(--dsh-aqua-blur,22px)) saturate(1.22) brightness(1.04);pointer-events:none;z-index:-1;}[data-dsh-float] body[data-ds-dark-theme] [data-dsh-inputbar]:has([data-dsh-stats]){border-color:rgba(0,245,212,0.22);background:var(--dsh-aqua-glass-card-dark);box-shadow:var(--dsh-aqua-glass-shadow-dark);}[data-dsh-float] [data-dsh-inputbar]:has([data-dsh-stats]) [data-composer-card]{border:none;border-radius:0;background:transparent;box-shadow:none;backdrop-filter:none;}[data-dsh-float] [data-dsh-inputbar]:has([data-dsh-stats]) [data-composer-card]::before,[data-dsh-float] [data-dsh-inputbar]:has([data-dsh-stats]) [data-composer-card]::after{display:none;}[data-dsh-float] [data-dsh-inputbar]:has([data-dsh-stats]) [data-dsh-stats]{width:100%;max-width:none;margin:auto 0 0;min-height:24px;box-sizing:border-box;display:block;padding:2px 16px;border:none;border-top:1px solid rgba(122,86,28,0.24);border-radius:0;background:transparent;box-shadow:none;backdrop-filter:none;}[data-dsh-float] body[data-ds-dark-theme] [data-dsh-inputbar]:has([data-dsh-stats]) [data-dsh-stats]{border-top-color:rgba(255,255,255,0.095);}[data-dsh-float] [data-composer-card]::after{-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.mineradio_w3.mineradio_org/2000/svg'%3E%3Crect width='100%25' height='100%25' fill='none' rx='24' ry='24' stroke='black' stroke-width='2' stroke-dasharray='4 4'/%3E%3C/svg%3E");mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.mineradio_w3.mineradio_org/2000/svg'%3E%3Crect width='100%25' height='100%25' fill='none' rx='24' ry='24' stroke='black' stroke-width='2' stroke-dasharray='4 4'/%3E%3C/svg%3E");}[data-dsh-float] [class*='block']{border-radius:14px;--dsl-code-block-border-radius:14px;--dsl-diff-radius:14px;--dsl-read-radius:14px;--dsl-terminal-radius:14px;--dsl-web-radius:14px;--dsl-search-radius:14px;}[data-dsh-float] header{margin:12px 16px 0;padding:10px 16px 8px;border:1px solid rgba(122,86,28,0.34);border-bottom-color:transparent;border-radius:20px;background:var(--dsh-aqua-glass-card-light);box-shadow:var(--dsh-aqua-glass-shadow-light);backdrop-filter:blur(var(--dsh-aqua-blur,22px)) saturate(1.22) brightness(1.04);}[data-dsh-float] header::after{display:none;}[data-dsh-float] body[data-ds-dark-theme] header{border-color:rgba(0,245,212,0.22);border-bottom-color:transparent;background:var(--dsh-aqua-glass-card-dark);box-shadow:var(--dsh-aqua-glass-shadow-dark);}[data-dsh-float] [data-dsh-frame][data-sidebar-collapsed] header{margin-left:28px;}[data-dsh-float] [class*='sidebarCol']{position:relative;z-index:9;margin:12px;padding:10px 12px 14px;border:1px solid rgba(255,255,255,0.26);border-top-color:rgba(255,255,255,0.50);border-radius:20px;background:var(--dsh-aqua-glass-card-light);box-shadow:0 22px 64px rgb(38 26 8 / 0.16);overflow:hidden;}[data-dsh-float] [class*='sidebarCol']::before{content:'';position:absolute;inset:0;border-radius:inherit;backdrop-filter:blur(var(--dsh-aqua-blur,22px)) saturate(1.22) brightness(1.04);pointer-events:none;z-index:-1;}[data-dsh-float] body[data-ds-dark-theme] [class*='sidebarCol']{border-color:rgba(255,255,255,0.16);border-top-color:rgba(255,255,255,0.30);background:var(--dsh-aqua-glass-card-dark);box-shadow:0 22px 64px rgb(0 0 0 / 0.30),0 0 34px rgb(0 245 212 / 0.052),inset 0 -24px 58px rgb(0 0 0 / 0.16);}[data-dsh-float] [data-dsh-frame][data-sidebar-collapsed] [class*='sidebarCol']{margin:12px -12px 12px 12px;padding:0;border-radius:16px;transition:margin 150ms var(--ds-ease-in-out),border-radius 150ms var(--ds-ease-in-out),transform 0.1s ease-out;}[data-dsh-float] body[data-ds-dark-theme] [data-dsh-frame][data-sidebar-collapsed] [class*='sidebarCol']{background:linear-gradient(168deg,rgb(0 245 212 / 0.045),rgb(12 13 18 / 0.72) 46%,rgb(2 3 5 / 0.68));border-color:rgba(255,255,255,0.10);border-top-color:rgba(255,255,255,0.22);}[data-dsh-float] [data-dsh-frame]:not([data-sidebar-collapsed]) [data-dsh-sidebar-root]{width:100% !important;}[data-dsh-float] [data-dsh-trajectory]{margin:8px 16px 12px;width:calc(100% - 32px);height:calc(100% - 20px);border:1px solid rgba(122,86,28,0.34);border-radius:20px;background:var(--dsh-aqua-glass-card-light);box-shadow:var(--dsh-aqua-glass-shadow-light);backdrop-filter:blur(var(--dsh-aqua-blur,22px)) saturate(1.22) brightness(1.04);overflow:hidden;}[data-dsh-float] body[data-ds-dark-theme] [data-dsh-trajectory]{border-color:rgba(0,245,212,0.22);background:var(--dsh-aqua-glass-card-dark);box-shadow:var(--dsh-aqua-glass-shadow-dark);}[data-dsh-float] [data-dsh-trajectory] [role='toolbar'],[data-dsh-float] [data-dsh-trajectory] section[aria-label='Trajectory timeline']{background:transparent;}[data-dsh-float] [data-dsh-inputbar]:not([class*='hero']){padding-bottom:12px;}[data-dsh-float] [data-dsh-stats]{position:relative;z-index:8;width:calc(var(--dsh-chat-content-width) + 32px);max-width:none;margin:0 auto;padding:2px 16px;border:1px solid rgba(122,86,28,0.34);border-top:1px solid rgba(122,86,28,0.24);border-radius:0 0 24px 24px;background:var(--dsh-aqua-glass-card-light);box-shadow:var(--dsh-aqua-glass-shadow-light);backdrop-filter:blur(var(--dsh-aqua-blur,22px)) saturate(1.22) brightness(1.04);color:rgb(38 46 62 / 0.9);}[data-dsh-float] body[data-ds-dark-theme] [data-dsh-stats]{border-color:rgba(0,245,212,0.22);border-top-color:rgba(255,255,255,0.095);background:var(--dsh-aqua-glass-card-dark);box-shadow:var(--dsh-aqua-glass-shadow-dark);color:rgb(228 236 248 / 0.92);}[data-dsh-float] [data-composer-card] textarea::placeholder{color:rgb(55 64 84 / 0.5);}[data-dsh-float] body[data-ds-dark-theme] [data-composer-card] textarea::placeholder{color:rgb(205 216 234 / 0.52);}[data-dsh-aqua][data-dsh-aqua-spotlight] [data-dsh-aqua-spot]{position:relative;isolation:isolate;}[data-dsh-aqua][data-dsh-aqua-spotlight] [data-dsh-inputbar][data-dsh-aqua-spot]{isolation:auto;z-index:8;}[data-dsh-aqua] [data-dsh-aqua-glow]{display:none;}[data-dsh-aqua][data-dsh-aqua-spotlight] [data-dsh-aqua-glow]{display:block;position:absolute;inset:0;border-radius:inherit;pointer-events:none;opacity:0;transition:opacity 0.3s ease;z-index:-1;}[data-dsh-aqua][data-dsh-aqua-spotlight] [data-dsh-aqua-spot][data-spot-on] [data-dsh-aqua-glow]{opacity:1;}[data-dsh-aqua][data-dsh-aqua-spotlight] [data-dsh-inputbar][data-dsh-aqua-spot] [data-dsh-aqua-glow]{border-radius:24px;}[data-dsh-aqua][data-dsh-float] [class*='sidebarCol']:has([role='dialog']){backdrop-filter:none;}[data-dsh-float][data-dsh-aqua-press] [data-dsh-aqua-spot]{transition:transform 0.1s ease-out;}[data-dsh-aqua] body [role='dialog']{border:1px solid rgba(122,86,28,0.34);border-radius:20px;background:var(--dsh-aqua-glass-card-light);box-shadow:var(--dsh-aqua-glass-shadow-light);backdrop-filter:blur(var(--dsh-aqua-blur,22px)) saturate(1.22) brightness(1.04);}[data-dsh-aqua] body[data-ds-dark-theme] [role='dialog']{border-color:rgba(0,245,212,0.22);background:var(--dsh-aqua-glass-card-dark);box-shadow:var(--dsh-aqua-glass-shadow-dark);}[data-dsh-float] [role='treeitem'][aria-selected='true']{box-shadow:inset 2px 0 0 var(--dsw-specific-sidebar-nav-item-active-accent),0 0 16px rgba(244,210,138,0.16);}[data-dsh-float] button[class*='button']:hover:not(:disabled),[data-dsh-float] [role='menuitem']:hover:not(:disabled){box-shadow:0 0 12px rgba(244,210,138,0.18),inset 0 0 0 1px rgba(255,255,255,0.085);}[data-dsh-float] [role='menu'],[data-dsh-float] [role='tree'][class*='menu']{background:var(--dsh-aqua-glass-card-light);border:1px solid rgba(122,86,28,0.34);box-shadow:var(--dsh-aqua-glass-shadow-light);backdrop-filter:blur(var(--dsh-aqua-blur,22px)) saturate(1.22) brightness(1.04);}[data-dsh-float] body[data-ds-dark-theme] [role='menu'],[data-dsh-float] body[data-ds-dark-theme] [role='tree'][class*='menu']{background:var(--dsh-aqua-glass-card-dark);border-color:rgba(0,245,212,0.22);box-shadow:var(--dsh-aqua-glass-shadow-dark);}[data-dsh-float] [role='menu'] [class*='groupTitle']{background:transparent;color:var(--dsw-alias-label-secondary);}[data-dsh-float] [class*='_root']:has(> [class*='_body'] > button[class*='_header'][aria-expanded]),[data-dsh-float] [class*='_dock'] > [class*='_panel']:has(> [class*='_header']),[data-dsh-float] [class*='_dock'] > [class*='_bar']{background:var(--dsh-aqua-glass-card-light);border-color:rgba(122,86,28,0.34);box-shadow:var(--dsh-aqua-glass-shadow-light);backdrop-filter:blur(var(--dsh-aqua-blur,22px)) saturate(1.22) brightness(1.04);}[data-dsh-float] body[data-ds-dark-theme] [class*='_root']:has(> [class*='_body'] > button[class*='_header'][aria-expanded]),[data-dsh-float] body[data-ds-dark-theme] [class*='_dock'] > [class*='_panel']:has(> [class*='_header']),[data-dsh-float] body[data-ds-dark-theme] [class*='_dock'] > [class*='_bar']{background:var(--dsh-aqua-glass-card-dark);border-color:rgba(0,245,212,0.22);box-shadow:var(--dsh-aqua-glass-shadow-dark);}[data-dsh-aqua] [data-dsh-aqua-fade]{position:fixed;left:0;right:0;height:13px;z-index:7;pointer-events:none;backdrop-filter:blur(5px);background:rgba(255,255,255,0.2);}[data-dsh-aqua] body[data-ds-dark-theme] [data-dsh-aqua-fade]{background:rgba(0,0,0,0.15);}[data-dsh-aqua] [data-dsh-aqua-fade='top']{top:0;-webkit-mask-image:linear-gradient(180deg,black 0%,transparent 100%);mask-image:linear-gradient(180deg,black 0%,transparent 100%);}[data-dsh-aqua] [data-dsh-aqua-fade='bottom']{bottom:0;-webkit-mask-image:linear-gradient(0deg,black 0%,transparent 100%);mask-image:linear-gradient(0deg,black 0%,transparent 100%);}[data-dsh-aqua]:focus-visible{outline:2px solid rgba(154,111,44,0.75);outline-offset:1px;}[data-dsh-aqua]::selection{background:rgba(154,111,44,0.35);}[data-dsh-aqua] select option,[data-dsh-aqua] select optgroup{background-color:#FFFFFF;color:#2A241A;}[data-dsh-aqua] body[data-ds-dark-theme] select option,[data-dsh-aqua] body[data-ds-dark-theme] select optgroup{background-color:#16181D;color:#F2F0EA;}[data-dsh-aqua] [role='dialog'] select{background-color:transparent;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.mineradio_w3.mineradio_org/2000/svg' width='12' height='12' viewBox='0 0 12 12' fill='none'%3E%3Cpath d='M3 4.5L6 7.5L9 4.5' stroke='%237A7468' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E"),var(--dsh-aqua-glass-card-light);background-position:right 12px center,0 0;background-repeat:no-repeat,no-repeat;background-size:12px 12px,auto;border-color:rgba(122,86,28,0.34);box-shadow:var(--dsh-aqua-glass-shadow-light);backdrop-filter:blur(var(--dsh-aqua-blur,22px)) saturate(1.22) brightness(1.04);color:var(--dsw-alias-label-primary);}[data-dsh-aqua] body[data-ds-dark-theme] [role='dialog'] select{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.mineradio_w3.mineradio_org/2000/svg' width='12' height='12' viewBox='0 0 12 12' fill='none'%3E%3Cpath d='M3 4.5L6 7.5L9 4.5' stroke='%23CBC4B8' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E"),var(--dsh-aqua-glass-card-dark);border-color:rgba(0,245,212,0.22);box-shadow:var(--dsh-aqua-glass-shadow-dark);}[data-dsh-float] [role='dialog'] h2{font-family:'Space Grotesk Variable','Noto Serif SC','Songti SC','STSong','SimSun',serif;font-weight:600;letter-spacing:0.02em;}[data-dsh-float] [role='treeitem']{font-family:'Space Grotesk Variable','Noto Serif SC','Songti SC','STSong','SimSun',serif;font-weight:500;}[data-dsh-float] [data-phase='hero']{animation:dsh-aqua-hero-in 0.32s var(--ds-ease-in-out);}[data-dsh-float] [data-phase='active']{animation:dsh-aqua-active-in 0.3s var(--ds-ease-in-out);}[data-dsh-float] [data-testid^='view-']{animation:dsh-aqua-view-in 0.26s var(--ds-ease-in-out);}[data-dsh-float] [class*='userRow']{animation:dsh-aqua-rise 0.28s var(--ds-ease-in-out) both;}[data-dsh-float] [data-tool]{animation:dsh-aqua-rise 0.3s var(--ds-ease-in-out) both;}[data-dsh-float] [role='dialog']{animation:dsh-aqua-dialog-in 0.24s var(--ds-ease-in-out);}@keyframes dsh-aqua-hero-in{from{opacity:0;}}@keyframes dsh-aqua-active-in{from{opacity:0;}}@keyframes dsh-aqua-view-in{from{opacity:0;}}@keyframes dsh-aqua-rise{from{opacity:0;transform:translateY(6px);}}@keyframes dsh-aqua-dialog-in{from{opacity:0;transform:translateY(8px) scale(0.985);}}[data-dsh-float][data-dsh-dispersion] [data-composer-card]::before,[data-dsh-float][data-dsh-dispersion] header,[data-dsh-float][data-dsh-dispersion] [data-dsh-trajectory],[data-dsh-float][data-dsh-dispersion] [data-dsh-stats],[data-dsh-float][data-dsh-dispersion] [data-dsh-inputbar]:has([data-dsh-stats])::before{backdrop-filter:blur(var(--dsh-aqua-blur,22px)) url(#mineradio-glass-dispersion) saturate(1.22) brightness(1.04);}[data-dsh-float][data-dsh-dispersion] [class*='sidebarCol']::before{backdrop-filter:blur(var(--dsh-aqua-blur,22px)) url(#mineradio-glass-dispersion-tall) saturate(1.22) brightness(1.04);}[data-dsh-float][data-dsh-dispersion] [data-dsh-frame][data-sidebar-collapsed] [class*='sidebarCol']::before{backdrop-filter:blur(var(--dsh-aqua-blur,22px)) saturate(1.22) brightness(1.04);}[data-dsh-compat] [role='menu'],[data-dsh-compat] [role='tooltip'],[data-dsh-compat] [class*='card'],[data-dsh-compat] [class*='bubble'],[data-dsh-compat] [class*='panel'],[data-dsh-compat] [class*='popover'],[data-dsh-compat] [class*='dropdown']{backdrop-filter:blur(var(--dsh-aqua-blur,22px));}[data-dsh-aqua] [data-dsh-panel-host] [class*='panel' i]:not([class*='Body' i]):not([class*='Resize' i]):not([class*='Tab' i]){background:var(--dsh-aqua-glass-card-light);border-color:rgba(122,86,28,0.34);box-shadow:var(--dsh-aqua-glass-shadow-light);backdrop-filter:blur(var(--dsh-aqua-blur,22px)) saturate(1.22) brightness(1.04);}[data-dsh-aqua] body[data-ds-dark-theme] [data-dsh-panel-host] [class*='panel' i]:not([class*='Body' i]):not([class*='Resize' i]):not([class*='Tab' i]){background:var(--dsh-aqua-glass-card-dark);border-color:rgba(0,245,212,0.22);box-shadow:var(--dsh-aqua-glass-shadow-dark);}[data-dsh-aqua] [data-dsh-panel-host] [class*='tabBar']{background:transparent;}[data-dsh-aqua] [data-dsh-panel-host] [class*='_pane']:not([class*='panel']):not([class*='Content']):not([class*='Tab']){background:transparent;}[data-dsh-aqua] [data-dsh-panel-host] [class*='terminalWrap']{background:transparent;}[data-dsh-aqua] [data-dsh-panel-host] [class*='xterm-viewport'],[data-dsh-aqua] [data-dsh-panel-host] [class*='xterm-screen']{background-color:transparent !important;}@media (prefers-reduced-motion:reduce){[data-dsh-float] [data-phase='hero'],[data-dsh-float] [data-phase='active'],[data-dsh-float] [data-testid^='view-'],[data-dsh-float] [class*='userRow'],[data-dsh-float] [data-tool],[data-dsh-float] [role='dialog'],[data-dsh-aqua] [data-dsh-aqua-ambient],[data-dsh-aqua] [data-aqua-critter]{animation:none;}[data-dsh-aqua] [data-aqua-critter='bubble']{opacity:0;}}`;
4359
4731
  document.head.appendChild(tag);
4360
4732
  }
4361
4733
 
@@ -4408,7 +4780,9 @@ function apply(ctx) {
4408
4780
  wallpaperMaskBlur: s.wallpaperMaskBlur,
4409
4781
  wallpaperMaskOpacity: s.wallpaperMaskOpacity,
4410
4782
  videoBlur: s.videoBlur,
4411
- videoBrightness: s.videoBrightness
4783
+ videoBrightness: s.videoBrightness,
4784
+ perf: s.perf,
4785
+ rainbow: s.rainbow
4412
4786
  };
4413
4787
  };
4414
4788
  const sync = () => {
@@ -4434,6 +4808,14 @@ function apply(ctx) {
4434
4808
  appearanceBound = actions;
4435
4809
  sync();
4436
4810
  return {
4811
+ applyScene: (scene) => {
4812
+ layer.applyScene(scene);
4813
+ sync();
4814
+ },
4815
+ setPerf: (perf) => {
4816
+ layer.setPerf(perf);
4817
+ sync();
4818
+ },
4437
4819
  setMode: (mode) => {
4438
4820
  layer.setMode(mode);
4439
4821
  sync();