@nonamelego/dsh-catppuccin 0.2.2 → 0.2.4
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 +43 -8
- package/lib/client.js.map +1 -1
- package/package.json +2 -1
package/lib/client.js
CHANGED
|
@@ -135,7 +135,8 @@ window.__ModuleLoader__.load({
|
|
|
135
135
|
"glass.brightnessHintDark": "深色模式:0 压暗至纯黑,50 原样",
|
|
136
136
|
"glass.brightnessHintLight": "浅色模式:50 原样,100 提亮至纯白",
|
|
137
137
|
"glass.hue": "背景色调",
|
|
138
|
-
"glass.hueHint": "背景渐变与光晕的色相偏移(0–360°)"
|
|
138
|
+
"glass.hueHint": "背景渐变与光晕的色相偏移(0–360°)",
|
|
139
|
+
"glass.reset": "还原默认值"
|
|
139
140
|
};
|
|
140
141
|
/** English dictionary, checked complete against the zh key set. */
|
|
141
142
|
const en = {
|
|
@@ -161,7 +162,8 @@ window.__ModuleLoader__.load({
|
|
|
161
162
|
"glass.brightnessHintDark": "Dark mode: 0 fades to pure black, 50 unchanged",
|
|
162
163
|
"glass.brightnessHintLight": "Light mode: 50 unchanged, 100 brightens to pure white",
|
|
163
164
|
"glass.hue": "Backdrop hue",
|
|
164
|
-
"glass.hueHint": "Hue shift for the backdrop gradient and glow (0–360°)"
|
|
165
|
+
"glass.hueHint": "Hue shift for the backdrop gradient and glow (0–360°)",
|
|
166
|
+
"glass.reset": "Reset to defaults"
|
|
165
167
|
};
|
|
166
168
|
const CATPPUCCIN_FLAVORS = [
|
|
167
169
|
{
|
|
@@ -921,12 +923,19 @@ window.__ModuleLoader__.load({
|
|
|
921
923
|
const GLASS_COMPAT_ATTRIBUTE = "data-dsh-glass-compat";
|
|
922
924
|
/** localStorage key carrying the layer enable flag. */
|
|
923
925
|
const GLASS_ENABLED_KEY = "dsh.catppuccin.glass.enabled";
|
|
926
|
+
/**
|
|
927
|
+
* Shipped knob defaults — aligned with the reference project
|
|
928
|
+
* (DSH-Transparent-UI-Plugin / Aqua): mica mode, blur 2px, frost 20
|
|
929
|
+
* (the 0-100 slider maps to a 0-1.4 alpha multiplier via frost/50, so 20
|
|
930
|
+
* reads as a light frost), neutral backdrop brightness, and a 316° hue
|
|
931
|
+
* shift for the ambient.
|
|
932
|
+
*/
|
|
924
933
|
const SETTINGS_DEFAULTS = {
|
|
925
934
|
mode: "mica",
|
|
926
|
-
blur:
|
|
927
|
-
frost:
|
|
935
|
+
blur: 2,
|
|
936
|
+
frost: 20,
|
|
928
937
|
brightness: 50,
|
|
929
|
-
hue:
|
|
938
|
+
hue: 316
|
|
930
939
|
};
|
|
931
940
|
/** Numeric knob keys and their localStorage names. */
|
|
932
941
|
const NUMERIC_KEYS = {
|
|
@@ -1124,6 +1133,17 @@ window.__ModuleLoader__.load({
|
|
|
1124
1133
|
if (this.enabled) this.applySettings();
|
|
1125
1134
|
this.publish();
|
|
1126
1135
|
}
|
|
1136
|
+
/** Restore every knob to the shipped defaults (persisted immediately). */
|
|
1137
|
+
resetDefaults() {
|
|
1138
|
+
this.settings = { ...SETTINGS_DEFAULTS };
|
|
1139
|
+
writeMode(this.settings.mode);
|
|
1140
|
+
writeSetting("blur", this.settings.blur);
|
|
1141
|
+
writeSetting("frost", this.settings.frost);
|
|
1142
|
+
writeSetting("brightness", this.settings.brightness);
|
|
1143
|
+
writeSetting("hue", this.settings.hue);
|
|
1144
|
+
if (this.enabled) this.applySettings();
|
|
1145
|
+
this.publish();
|
|
1146
|
+
}
|
|
1127
1147
|
/** Re-read every knob from localStorage into memory. */
|
|
1128
1148
|
reloadSettings() {
|
|
1129
1149
|
this.settings = {
|
|
@@ -1187,7 +1207,7 @@ window.__ModuleLoader__.load({
|
|
|
1187
1207
|
};
|
|
1188
1208
|
//#endregion
|
|
1189
1209
|
//#region \0dsh-css:D:\Vibe-Coding\dsh-catppuccin\src\client\glass\GlassRow.module.css.mjs
|
|
1190
|
-
const css$1 = ".SYX6rq_group{border-bottom:1px solid var(--dsw-alias-border-l2);flex-direction:column;gap:8px;padding:16px 0;display:flex}.SYX6rq_title{color:var(--dsw-alias-label-primary);font-size:14px;line-height:22px}.SYX6rq_description{color:var(--dsw-alias-label-tertiary);font-size:12px;line-height:18px}.SYX6rq_controls{flex-direction:column;gap:10px;margin-top:6px;display:flex}.SYX6rq_row{align-items:center;gap:10px;display:flex}.SYX6rq_rowLabel{width:92px;color:var(--dsw-alias-label-secondary);flex:none;font-size:12px;line-height:18px}.SYX6rq_rowHint,.SYX6rq_knobHint{color:var(--dsw-alias-label-tertiary);margin-top:-4px;margin-left:102px;font-size:12px;line-height:18px}.SYX6rq_toggle,.SYX6rq_toggleOn{border:1px solid var(--dsw-alias-border-l2);height:28px;color:var(--dsw-alias-label-primary);cursor:pointer;background:0 0;border-radius:14px;align-items:center;gap:6px;padding:0 10px 0 6px;font-size:12px;line-height:18px;display:inline-flex}.SYX6rq_toggle:hover{background:var(--dsw-alias-interactive-bg-hover)}.SYX6rq_toggleOn{background:var(--dsw-alias-state-business-tertiary);color:var(--dsw-alias-state-business-primary);border-color:#0000}.SYX6rq_check{justify-content:center;align-items:center;width:16px;height:16px;font-size:12px;display:inline-flex}.SYX6rq_knob{align-items:center;gap:10px;display:flex}.SYX6rq_knobLabel{width:92px;color:var(--dsw-alias-label-secondary);flex:none;font-size:12px;line-height:18px}.SYX6rq_slider{min-width:0;accent-color:var(--dsw-alias-state-business-primary);flex:1}.SYX6rq_numberWrap{flex:none;align-items:center;gap:4px;display:inline-flex}.SYX6rq_number{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-2);width:56px;height:26px;color:var(--dsw-alias-label-primary);text-align:right;border-radius:8px;padding:0 6px;font-size:12px;line-height:18px}.SYX6rq_number::-webkit-outer-spin-button,.SYX6rq_number::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.SYX6rq_unit{width:18px;color:var(--dsw-alias-label-tertiary);flex:none;font-size:12px;line-height:18px}.SYX6rq_segmented{border:1px solid var(--dsw-alias-border-l2);border-radius:8px;display:inline-flex;overflow:hidden}.SYX6rq_seg,.SYX6rq_segActive{height:26px;color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border:none;padding:0 12px;font-size:12px;line-height:18px}.SYX6rq_seg+.SYX6rq_seg,.SYX6rq_segActive+.SYX6rq_seg,.SYX6rq_seg+.SYX6rq_segActive{border-left:1px solid var(--dsw-alias-border-l2)}.SYX6rq_segActive{background:var(--dsw-alias-state-business-tertiary);color:var(--dsw-alias-state-business-primary)}";
|
|
1210
|
+
const css$1 = ".SYX6rq_group{border-bottom:1px solid var(--dsw-alias-border-l2);flex-direction:column;gap:8px;padding:16px 0;display:flex}.SYX6rq_title{color:var(--dsw-alias-label-primary);font-size:14px;line-height:22px}.SYX6rq_description{color:var(--dsw-alias-label-tertiary);font-size:12px;line-height:18px}.SYX6rq_controls{flex-direction:column;gap:10px;margin-top:6px;display:flex}.SYX6rq_row{align-items:center;gap:10px;display:flex}.SYX6rq_rowLabel{width:92px;color:var(--dsw-alias-label-secondary);flex:none;font-size:12px;line-height:18px}.SYX6rq_rowHint,.SYX6rq_knobHint{color:var(--dsw-alias-label-tertiary);margin-top:-4px;margin-left:102px;font-size:12px;line-height:18px}.SYX6rq_toggle,.SYX6rq_toggleOn{border:1px solid var(--dsw-alias-border-l2);height:28px;color:var(--dsw-alias-label-primary);cursor:pointer;background:0 0;border-radius:14px;align-items:center;gap:6px;padding:0 10px 0 6px;font-size:12px;line-height:18px;display:inline-flex}.SYX6rq_toggle:hover{background:var(--dsw-alias-interactive-bg-hover)}.SYX6rq_toggleOn{background:var(--dsw-alias-state-business-tertiary);color:var(--dsw-alias-state-business-primary);border-color:#0000}.SYX6rq_check{justify-content:center;align-items:center;width:16px;height:16px;font-size:12px;display:inline-flex}.SYX6rq_knob{align-items:center;gap:10px;display:flex}.SYX6rq_knobLabel{width:92px;color:var(--dsw-alias-label-secondary);flex:none;font-size:12px;line-height:18px}.SYX6rq_slider{min-width:0;accent-color:var(--dsw-alias-state-business-primary);flex:1}.SYX6rq_numberWrap{flex:none;align-items:center;gap:4px;display:inline-flex}.SYX6rq_number{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-2);width:56px;height:26px;color:var(--dsw-alias-label-primary);text-align:right;border-radius:8px;padding:0 6px;font-size:12px;line-height:18px}.SYX6rq_number::-webkit-outer-spin-button,.SYX6rq_number::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.SYX6rq_unit{width:18px;color:var(--dsw-alias-label-tertiary);flex:none;font-size:12px;line-height:18px}.SYX6rq_segmented{border:1px solid var(--dsw-alias-border-l2);border-radius:8px;display:inline-flex;overflow:hidden}.SYX6rq_seg,.SYX6rq_segActive{height:26px;color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border:none;padding:0 12px;font-size:12px;line-height:18px}.SYX6rq_seg+.SYX6rq_seg,.SYX6rq_segActive+.SYX6rq_seg,.SYX6rq_seg+.SYX6rq_segActive{border-left:1px solid var(--dsw-alias-border-l2)}.SYX6rq_segActive{background:var(--dsw-alias-state-business-tertiary);color:var(--dsw-alias-state-business-primary)}.SYX6rq_resetButton{border:1px solid var(--dsw-alias-border-l2);height:26px;color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border-radius:8px;padding:0 12px;font-size:12px;line-height:18px}.SYX6rq_resetButton:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}";
|
|
1191
1211
|
const tagId$1 = "@nonamelego/dsh-catppuccin/GlassRow.module.css";
|
|
1192
1212
|
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$1) + "]") === null) {
|
|
1193
1213
|
const tag = document.createElement("style");
|
|
@@ -1206,6 +1226,7 @@ window.__ModuleLoader__.load({
|
|
|
1206
1226
|
"knobLabel": "SYX6rq_knobLabel",
|
|
1207
1227
|
"number": "SYX6rq_number",
|
|
1208
1228
|
"numberWrap": "SYX6rq_numberWrap",
|
|
1229
|
+
"resetButton": "SYX6rq_resetButton",
|
|
1209
1230
|
"row": "SYX6rq_row",
|
|
1210
1231
|
"rowHint": "SYX6rq_rowHint",
|
|
1211
1232
|
"rowLabel": "SYX6rq_rowLabel",
|
|
@@ -1293,7 +1314,7 @@ window.__ModuleLoader__.load({
|
|
|
1293
1314
|
* @param props - composed slot props.
|
|
1294
1315
|
* @returns the General section row.
|
|
1295
1316
|
*/
|
|
1296
|
-
function GlassRow({ t, getState, subscribe, setEnabled, setMode, setBlur, setFrost, setBrightness, setHue }) {
|
|
1317
|
+
function GlassRow({ t, getState, subscribe, setEnabled, setMode, setBlur, setFrost, setBrightness, setHue, resetDefaults }) {
|
|
1297
1318
|
const { enabled, mode, blur, frost, brightness, hue, dark } = (0, react.useSyncExternalStore)(subscribe, getState);
|
|
1298
1319
|
const bgMin = dark ? 0 : 50;
|
|
1299
1320
|
const bgMax = dark ? 50 : 100;
|
|
@@ -1394,6 +1415,17 @@ window.__ModuleLoader__.load({
|
|
|
1394
1415
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
1395
1416
|
className: GlassRow_module_css_default.knobHint,
|
|
1396
1417
|
children: t("glass.hueHint")
|
|
1418
|
+
}),
|
|
1419
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
1420
|
+
className: GlassRow_module_css_default.row,
|
|
1421
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
1422
|
+
type: "button",
|
|
1423
|
+
className: GlassRow_module_css_default.resetButton,
|
|
1424
|
+
onClick: () => {
|
|
1425
|
+
resetDefaults();
|
|
1426
|
+
},
|
|
1427
|
+
children: t("glass.reset")
|
|
1428
|
+
})
|
|
1397
1429
|
})
|
|
1398
1430
|
] })]
|
|
1399
1431
|
})
|
|
@@ -1402,7 +1434,7 @@ window.__ModuleLoader__.load({
|
|
|
1402
1434
|
}
|
|
1403
1435
|
//#endregion
|
|
1404
1436
|
//#region \0dsh-css:D:\Vibe-Coding\dsh-catppuccin\src\client\glass\glass.module.css.mjs
|
|
1405
|
-
const css = "[data-dsh-glass] body{--dsh-glass-card:linear-gradient(180deg, color-mix(in srgb, var(--dsw-alias-bg-layer-1) calc(52% * var(--dsh-glass-frost,1)), transparent), color-mix(in srgb, var(--dsw-alias-bg-layer-2) calc(40% * var(--dsh-glass-frost,1)), transparent));background:var(--dsw-alias-bg-base)}[data-dsh-glass] [data-dsh-glass-frame],[data-dsh-glass] [data-phase],[data-dsh-glass] [data-dsh-glass-details]{background:0 0}[data-dsh-glass-float] [data-phase=active] header{z-index:8;position:relative}[data-dsh-glass-float] [class*=banner]{position:static}[data-dsh-glass-float] [data-phase=active] [data-conversation-scroll]{margin-top:-95px;padding-top:107px}[data-dsh-glass] [data-phase] [class*=composerSeat][class*=composerSeat]{background:0 0}[data-dsh-glass] [data-dsh-glass-ambient]{z-index:0;pointer-events:none;filter:hue-rotate(var(--dsh-glass-hue,0deg));background:radial-gradient(760px 420px at 50% -8%, color-mix(in srgb, var(--dsw-alias-brand-primary-new-colorprimary-new-color) 18%, transparent), transparent 70%), linear-gradient(180deg, color-mix(in srgb, var(--dsw-alias-bg-layer-1) 62%, transparent) 0%, color-mix(in srgb, var(--dsw-alias-bg-layer-2) 46%, transparent) 100%), radial-gradient(900px 420px at 50% 108%, color-mix(in srgb, var(--dsw-alias-brand-primary-new-colorprimary-new-color) 10%, transparent), transparent 70%);position:fixed;inset:0;overflow:hidden}[data-dsh-glass] [data-dsh-glass-ambient]:after{content:\"\";background-image:linear-gradient(rgba(255, 255, 255, var(--dsh-glass-brightness-white,0)), rgba(255, 255, 255, var(--dsh-glass-brightness-white,0))), linear-gradient(rgba(0, 0, 0, var(--dsh-glass-brightness-black,0)), rgba(0, 0, 0, var(--dsh-glass-brightness-black,0)));position:absolute;inset:0}@media (prefers-reduced-motion:no-preference){[data-dsh-glass] [data-dsh-glass-ambient]{animation:bOHSKq_dsh-glass-breathe 9s var(--ds-ease-in-out) infinite alternate}}@keyframes bOHSKq_dsh-glass-breathe{0%{opacity:.88}to{opacity:1}}[data-dsh-glass] [data-dsh-glass-blob]{filter:blur(70px);opacity:.42;will-change:transform;border-radius:50%;position:absolute}[data-dsh-glass] [data-dsh-glass-blob=\"1\"]{background:color-mix(in srgb, var(--dsw-alias-brand-primary-new-colorprimary-new-color) 15%, transparent);width:44vw;height:44vw;animation:bOHSKq_dsh-glass-drift-a 30s var(--ds-ease-in-out) infinite alternate;top:-8vw;left:-10vw}[data-dsh-glass] [data-dsh-glass-blob=\"2\"]{background:color-mix(in srgb, var(--dsw-alias-state-success-tertiary) 45%, transparent);width:38vw;height:38vw;animation:bOHSKq_dsh-glass-drift-b 36s var(--ds-ease-in-out) infinite alternate;top:24vh;right:-12vw}[data-dsh-glass] [data-dsh-glass-blob=\"3\"]{background:color-mix(in srgb, var(--dsw-alias-state-warn-tertiary) 40%, transparent);width:30vw;height:30vw;animation:bOHSKq_dsh-glass-drift-c 42s var(--ds-ease-in-out) infinite alternate;bottom:-14vh;left:30vw}@keyframes bOHSKq_dsh-glass-drift-a{0%{transform:translate(0,0)scale(1)}to{transform:translate(6vw,4vh)scale(1.12)}}@keyframes bOHSKq_dsh-glass-drift-b{0%{transform:translate(0,0)scale(1.08)}to{transform:translate(-7vw,6vh)scale(.96)}}@keyframes bOHSKq_dsh-glass-drift-c{0%{transform:translate(0,0)scale(.96)}to{transform:translate(8vw,-5vh)scale(1.1)}}[data-dsh-glass] [data-dsh-glass-fade]{z-index:7;pointer-events:none;backdrop-filter:blur(5px);background:color-mix(in srgb, var(--dsw-alias-bg-layer-1) 50%, transparent);height:13px;position:fixed;left:0;right:0}[data-dsh-glass] [data-dsh-glass-fade=top]{top:0;-webkit-mask-image:linear-gradient(#000 0%,#0000 100%);mask-image:linear-gradient(#000 0%,#0000 100%)}[data-dsh-glass] [data-dsh-glass-fade=bottom]{bottom:0;-webkit-mask-image:linear-gradient(#0000 0%,#000 100%);mask-image:linear-gradient(#0000 0%,#000 100%)}[data-dsh-glass-float] [role=menu],[data-dsh-glass-float] [role=dialog],[data-dsh-glass-float] [role=alert],[data-dsh-glass-float] [data-dsh-glass-surface]{border-radius:14px}[data-dsh-glass-float] [role=menuitem],[data-dsh-glass-float] [role=tooltip],[data-dsh-glass-float] [class*=pill]{border-radius:8px}[data-dsh-glass-float] button[class*=button]{border-radius:10px}[data-dsh-glass-float] [class*=iconButton],[data-dsh-glass-float] [class*=searchButton]{border-radius:8px}[data-dsh-glass-float] [data-dsh-glass-add]{background:color-mix(in srgb, var(--dsw-alias-bg-layer-1) calc(55% * var(--dsh-glass-frost,1)), transparent);border:1px solid var(--dsw-alias-border-l2);box-shadow:inset 0 1px 0 color-mix(in srgb, var(--dsw-alias-label-primary) 10%, transparent);backdrop-filter:blur(var(--dsh-glass-blur,14px))}[data-dsh-glass-float] [data-dsh-glass-add]:hover:not(:disabled){background:color-mix(in srgb, var(--dsw-alias-bg-layer-1) calc(72% * var(--dsh-glass-frost,1)), transparent)}[data-dsh-glass-float] [data-dsh-glass-surface]{background:color-mix(in srgb, var(--dsw-alias-bg-layer-1) calc(62% * var(--dsh-glass-frost,1)), transparent);border:1px solid var(--dsw-alias-border-l2);box-shadow:inset 0 1px 0 color-mix(in srgb, var(--dsw-alias-label-primary) 10%, transparent);backdrop-filter:blur(var(--dsh-glass-blur,14px))}[data-dsh-glass-float] [data-dsh-glass-surface]:hover:not(:disabled){background:color-mix(in srgb, var(--dsw-alias-bg-layer-1) calc(78% * var(--dsh-glass-frost,1)), transparent)}[data-dsh-glass-float] [class*=bubble]{border:1px solid color-mix(in srgb, var(--dsw-alias-border-l2) 80%, transparent);background:color-mix(in srgb, var(--dsw-alias-bg-layer-1) calc(46% * var(--dsh-glass-frost,1)), transparent);backdrop-filter:blur(var(--dsh-glass-blur,14px));border-radius:14px}[data-dsh-glass-float] [class*=card]{border-radius:14px}[data-dsh-glass-float] header{border:1px solid var(--dsw-alias-border-l2);background:var(--dsh-glass-card);box-shadow:inset 0 1px 0 color-mix(in srgb, var(--dsw-alias-label-primary) 8%, transparent), 0 8px 28px color-mix(in srgb, var(--dsw-alias-bg-mask-2) 55%, transparent);backdrop-filter:blur(var(--dsh-glass-blur,14px));border-bottom-color:#0000;border-radius:20px;margin:12px 16px 0;padding:10px 16px 8px}[data-dsh-glass-float] header:after{display:none}[data-dsh-glass-float] [class*=sidebarCol]{--dsw-specific-sidebar-fill:transparent;z-index:9;border:1px solid var(--dsw-alias-border-l2);border-right-color:color-mix(in srgb, var(--dsw-alias-brand-primary-new-colorprimary-new-color) 22%, transparent);background:var(--dsh-glass-card);box-shadow:inset 0 1px 0 color-mix(in srgb, var(--dsw-alias-label-primary) 8%, transparent), 0 8px 28px color-mix(in srgb, var(--dsw-alias-bg-mask-2) 55%, transparent);border-radius:20px;margin:12px;padding:10px 12px 14px;position:relative;overflow:hidden}[data-dsh-glass-float] [data-dsh-glass-frame][data-sidebar-collapsed] [class*=sidebarCol]{transition:margin .15s var(--ds-ease-in-out), border-radius .15s var(--ds-ease-in-out);border-radius:16px;margin:12px -12px 12px 12px;padding:0}[data-dsh-glass-float] [data-dsh-glass-frame]:not([data-sidebar-collapsed]) [data-dsh-glass-sidebar-root]{width:100%!important}[data-dsh-glass-float] [data-dsh-glass-trajectory]{border:1px solid var(--dsw-alias-border-l2);background:var(--dsh-glass-card);width:calc(100% - 32px);height:calc(100% - 20px);box-shadow:inset 0 1px 0 color-mix(in srgb, var(--dsw-alias-label-primary) 8%, transparent), 0 8px 28px color-mix(in srgb, var(--dsw-alias-bg-mask-2) 55%, transparent);backdrop-filter:blur(var(--dsh-glass-blur,14px));border-radius:20px;margin:8px 16px 12px;overflow:hidden}[data-dsh-glass-float] [data-dsh-glass-trajectory] [role=toolbar],[data-dsh-glass-float] [data-dsh-glass-trajectory] section[aria-label=Trajectory\\ timeline]{background:0 0}[data-dsh-glass-float] [data-composer-card],[data-dsh-glass-float] [data-composer-card]:after{border-radius:24px}[data-dsh-glass-float] [data-composer-card]{z-index:8;background:var(--dsh-glass-card);border:1px solid var(--dsw-alias-border-l2);box-shadow:inset 0 1px 0 color-mix(in srgb, var(--dsw-alias-label-primary) 8%, transparent), 0 8px 32px color-mix(in srgb, var(--dsw-alias-bg-mask-2) 60%, transparent);backdrop-filter:blur(var(--dsh-glass-blur,14px));position:relative}[data-dsh-glass-float] [data-dsh-glass-inputbar]:not([class*=hero]){padding-bottom:12px}[data-dsh-glass][data-dsh-glass-float] [data-dsh-glass-inputbar] [data-slot]{border:1px solid var(--dsw-alias-border-l2);border-top-color:var(--dsw-alias-border-l1);background:linear-gradient(180deg, color-mix(in srgb, var(--dsw-alias-bg-layer-1) calc(30% * var(--dsh-glass-frost,1)), transparent), color-mix(in srgb, var(--dsw-alias-bg-layer-2) calc(18% * var(--dsh-glass-frost,1)), transparent));box-shadow:0 8px 32px color-mix(in srgb, var(--dsw-alias-bg-mask-2) 60%, transparent);backdrop-filter:blur(var(--dsh-glass-blur,14px));border-radius:0 0 24px 24px;margin:0 auto;width:var(--dsh-composer-card-max-width)!important;max-width:var(--dsh-composer-card-max-width)!important}[data-dsh-glass][data-dsh-glass-float] [data-dsh-glass-inputbar] [data-slot] [data-dsh-glass-stats]{min-width:0;box-shadow:none;backdrop-filter:none;background:0 0;border:none;border-radius:0;margin:0;width:auto!important;max-width:none!important;padding:4px 16px 0!important}[data-dsh-glass][data-dsh-glass-float] [data-dsh-glass-inputbar] [data-slot] [data-dsh-live-tps]{padding-right:16px}[data-dsh-glass-float] [data-dsh-glass-inputbar]:has([data-dsh-glass-stats]) [data-composer-card]{box-shadow:inset 0 1px 0 color-mix(in srgb, var(--dsw-alias-label-primary) 8%, transparent);border-bottom:none;border-radius:24px 24px 0 0}[data-dsh-glass-float] [role=treeitem][aria-selected=true]{box-shadow:inset 2px 0 0 var(--dsw-specific-sidebar-nav-item-active-accent), 0 0 16px color-mix(in srgb, var(--dsw-alias-brand-primary-new-colorprimary-new-color) 20%, transparent)}[data-dsh-glass-float] button[class*=button]:hover:not(:disabled),[data-dsh-glass-float] [role=menuitem]:hover:not(:disabled){box-shadow:0 0 12px color-mix(in srgb, var(--dsw-alias-brand-primary-new-colorprimary-new-color) 20%, transparent), inset 0 0 0 1px color-mix(in srgb, var(--dsw-alias-border-l3) 60%, transparent)}[data-dsh-glass-float] [role=menu]{background:color-mix(in srgb, var(--dsw-alias-bg-layer-1) calc(72% * var(--dsh-glass-frost,1)), transparent);backdrop-filter:blur(var(--dsh-glass-blur,14px))}[data-dsh-glass-float] [data-phase=hero]{animation:bOHSKq_dsh-glass-in .32s var(--ds-ease-in-out)}[data-dsh-glass-float] [data-phase=active]{animation:bOHSKq_dsh-glass-in .3s var(--ds-ease-in-out)}[data-dsh-glass-float] [data-testid^=view-]{animation:bOHSKq_dsh-glass-in .26s var(--ds-ease-in-out)}[data-dsh-glass-float] [data-tool]{animation:bOHSKq_dsh-glass-rise .3s var(--ds-ease-in-out) both}[data-dsh-glass-float] [role=dialog]{animation:bOHSKq_dsh-glass-dialog-in .24s var(--ds-ease-in-out)}@keyframes bOHSKq_dsh-glass-in{0%{opacity:0}}@keyframes bOHSKq_dsh-glass-rise{0%{opacity:0;transform:translateY(6px)}}@keyframes bOHSKq_dsh-glass-dialog-in{0%{opacity:0;transform:translateY(8px)scale(.985)}}[data-dsh-glass] :focus-visible{outline:2px solid color-mix(in srgb, var(--dsw-alias-brand-primary-new-colorprimary-new-color) 85%, transparent);outline-offset:1px}[data-dsh-glass] ::selection{background:color-mix(in srgb, var(--dsw-alias-brand-primary-new-colorprimary-new-color) 35%, transparent)}[data-dsh-glass-compat] [role=menu],[data-dsh-glass-compat] [role=tooltip],[data-dsh-glass-compat] [class*=card],[data-dsh-glass-compat] [class*=bubble],[data-dsh-glass-compat] [class*=panel],[data-dsh-glass-compat] [class*=popover],[data-dsh-glass-compat] [class*=dropdown]{backdrop-filter:blur(12px)}@media (prefers-reduced-motion:reduce){[data-dsh-glass-float] [data-phase=hero],[data-dsh-glass-float] [data-phase=active],[data-dsh-glass-float] [data-testid^=view-],[data-dsh-glass-float] [data-tool],[data-dsh-glass-float] [role=dialog],[data-dsh-glass] [data-dsh-glass-ambient],[data-dsh-glass] [data-dsh-glass-blob]{animation:none}}";
|
|
1437
|
+
const css = "[data-dsh-glass] body{--dsh-glass-card:linear-gradient(180deg, color-mix(in srgb, var(--dsw-alias-bg-layer-1) calc(52% * var(--dsh-glass-frost,1)), transparent), color-mix(in srgb, var(--dsw-alias-bg-layer-2) calc(40% * var(--dsh-glass-frost,1)), transparent));background:var(--dsw-alias-bg-base)}[data-dsh-glass] [data-dsh-glass-frame],[data-dsh-glass] [data-phase],[data-dsh-glass] [data-dsh-glass-details]{background:0 0}[data-dsh-glass-float] [data-phase=active] header{z-index:8;position:relative}[data-dsh-glass-float] [class*=banner]{position:static}[data-dsh-glass-float] [data-phase=active] [data-conversation-scroll]{margin-top:-95px;padding-top:107px}[data-dsh-glass] [data-phase] [class*=composerSeat][class*=composerSeat]{background:0 0}[data-dsh-glass] [data-dsh-glass-ambient]{z-index:0;pointer-events:none;filter:hue-rotate(var(--dsh-glass-hue,0deg));background:radial-gradient(760px 420px at 50% -8%, color-mix(in srgb, var(--dsw-alias-brand-primary-new-colorprimary-new-color) 18%, transparent), transparent 70%), linear-gradient(180deg, color-mix(in srgb, var(--dsw-alias-bg-layer-1) 62%, transparent) 0%, color-mix(in srgb, var(--dsw-alias-bg-layer-2) 46%, transparent) 100%), radial-gradient(900px 420px at 50% 108%, color-mix(in srgb, var(--dsw-alias-brand-primary-new-colorprimary-new-color) 10%, transparent), transparent 70%);position:fixed;inset:0;overflow:hidden}[data-dsh-glass] [data-dsh-glass-ambient]:after{content:\"\";background-image:linear-gradient(rgba(255, 255, 255, var(--dsh-glass-brightness-white,0)), rgba(255, 255, 255, var(--dsh-glass-brightness-white,0))), linear-gradient(rgba(0, 0, 0, var(--dsh-glass-brightness-black,0)), rgba(0, 0, 0, var(--dsh-glass-brightness-black,0)));position:absolute;inset:0}@media (prefers-reduced-motion:no-preference){[data-dsh-glass] [data-dsh-glass-ambient]{animation:bOHSKq_dsh-glass-breathe 9s var(--ds-ease-in-out) infinite alternate}}@keyframes bOHSKq_dsh-glass-breathe{0%{opacity:.88}to{opacity:1}}[data-dsh-glass] [data-dsh-glass-blob]{filter:blur(70px);opacity:.42;will-change:transform;border-radius:50%;position:absolute}[data-dsh-glass] [data-dsh-glass-blob=\"1\"]{background:color-mix(in srgb, var(--dsw-alias-brand-primary-new-colorprimary-new-color) 15%, transparent);width:44vw;height:44vw;animation:bOHSKq_dsh-glass-drift-a 30s var(--ds-ease-in-out) infinite alternate;top:-8vw;left:-10vw}[data-dsh-glass] [data-dsh-glass-blob=\"2\"]{background:color-mix(in srgb, var(--dsw-alias-state-success-tertiary) 45%, transparent);width:38vw;height:38vw;animation:bOHSKq_dsh-glass-drift-b 36s var(--ds-ease-in-out) infinite alternate;top:24vh;right:-12vw}[data-dsh-glass] [data-dsh-glass-blob=\"3\"]{background:color-mix(in srgb, var(--dsw-alias-state-warn-tertiary) 40%, transparent);width:30vw;height:30vw;animation:bOHSKq_dsh-glass-drift-c 42s var(--ds-ease-in-out) infinite alternate;bottom:-14vh;left:30vw}@keyframes bOHSKq_dsh-glass-drift-a{0%{transform:translate(0,0)scale(1)}to{transform:translate(6vw,4vh)scale(1.12)}}@keyframes bOHSKq_dsh-glass-drift-b{0%{transform:translate(0,0)scale(1.08)}to{transform:translate(-7vw,6vh)scale(.96)}}@keyframes bOHSKq_dsh-glass-drift-c{0%{transform:translate(0,0)scale(.96)}to{transform:translate(8vw,-5vh)scale(1.1)}}[data-dsh-glass] [data-dsh-glass-fade]{z-index:7;pointer-events:none;backdrop-filter:blur(5px);background:color-mix(in srgb, var(--dsw-alias-bg-layer-1) 50%, transparent);height:13px;position:fixed;left:0;right:0}[data-dsh-glass] [data-dsh-glass-fade=top]{top:0;-webkit-mask-image:linear-gradient(#000 0%,#0000 100%);mask-image:linear-gradient(#000 0%,#0000 100%)}[data-dsh-glass] [data-dsh-glass-fade=bottom]{bottom:0;-webkit-mask-image:linear-gradient(#0000 0%,#000 100%);mask-image:linear-gradient(#0000 0%,#000 100%)}[data-dsh-glass-float] [role=menu],[data-dsh-glass-float] [role=dialog],[data-dsh-glass-float] [role=alert],[data-dsh-glass-float] [data-dsh-glass-surface]{border-radius:14px}[data-dsh-glass-float] [role=menuitem],[data-dsh-glass-float] [role=tooltip],[data-dsh-glass-float] [class*=pill]{border-radius:8px}[data-dsh-glass-float] button[class*=button]{border-radius:10px}[data-dsh-glass-float] [class*=iconButton],[data-dsh-glass-float] [class*=searchButton]{border-radius:8px}[data-dsh-glass-float] [data-dsh-glass-add]{background:color-mix(in srgb, var(--dsw-alias-bg-layer-1) calc(55% * var(--dsh-glass-frost,1)), transparent);border:1px solid var(--dsw-alias-border-l2);box-shadow:inset 0 1px 0 color-mix(in srgb, var(--dsw-alias-label-primary) 10%, transparent);backdrop-filter:blur(var(--dsh-glass-blur,14px))}[data-dsh-glass-float] [data-dsh-glass-add]:hover:not(:disabled){background:color-mix(in srgb, var(--dsw-alias-bg-layer-1) calc(72% * var(--dsh-glass-frost,1)), transparent)}[data-dsh-glass-float] [data-dsh-glass-surface]{background:color-mix(in srgb, var(--dsw-alias-bg-layer-1) calc(62% * var(--dsh-glass-frost,1)), transparent);border:1px solid var(--dsw-alias-border-l2);box-shadow:inset 0 1px 0 color-mix(in srgb, var(--dsw-alias-label-primary) 10%, transparent);backdrop-filter:blur(var(--dsh-glass-blur,14px))}[data-dsh-glass-float] [data-dsh-glass-surface]:hover:not(:disabled){background:color-mix(in srgb, var(--dsw-alias-bg-layer-1) calc(78% * var(--dsh-glass-frost,1)), transparent)}[data-dsh-glass-float] [class*=bubble]{border:1px solid color-mix(in srgb, var(--dsw-alias-border-l2) 80%, transparent);background:color-mix(in srgb, var(--dsw-alias-bg-layer-1) calc(46% * var(--dsh-glass-frost,1)), transparent);backdrop-filter:blur(var(--dsh-glass-blur,14px));border-radius:14px}[data-dsh-glass-float] [class*=card]{border-radius:14px}[data-dsh-glass-float] header{border:1px solid var(--dsw-alias-border-l2);background:var(--dsh-glass-card);box-shadow:inset 0 1px 0 color-mix(in srgb, var(--dsw-alias-label-primary) 8%, transparent), 0 8px 28px color-mix(in srgb, var(--dsw-alias-bg-mask-2) 55%, transparent);backdrop-filter:blur(var(--dsh-glass-blur,14px));border-bottom-color:#0000;border-radius:20px;margin:12px 16px 0;padding:10px 16px 8px}[data-dsh-glass-float] header:after{display:none}[data-dsh-glass-float] [class*=sidebarCol]{--dsw-specific-sidebar-fill:transparent;z-index:9;border:1px solid var(--dsw-alias-border-l2);border-right-color:color-mix(in srgb, var(--dsw-alias-brand-primary-new-colorprimary-new-color) 22%, transparent);background:var(--dsh-glass-card);box-shadow:inset 0 1px 0 color-mix(in srgb, var(--dsw-alias-label-primary) 8%, transparent), 0 8px 28px color-mix(in srgb, var(--dsw-alias-bg-mask-2) 55%, transparent);border-radius:20px;margin:12px;padding:10px 12px 14px;position:relative;overflow:hidden}[data-dsh-glass-float] [data-dsh-glass-frame][data-sidebar-collapsed] [class*=sidebarCol]{transition:margin .15s var(--ds-ease-in-out), border-radius .15s var(--ds-ease-in-out);border-radius:16px;margin:12px -12px 12px 12px;padding:0}[data-dsh-glass-float] [data-dsh-glass-frame]:not([data-sidebar-collapsed]) [data-dsh-glass-sidebar-root]{width:100%!important}[data-dsh-glass-float] [data-dsh-glass-trajectory]{border:1px solid var(--dsw-alias-border-l2);background:var(--dsh-glass-card);width:calc(100% - 32px);height:calc(100% - 20px);box-shadow:inset 0 1px 0 color-mix(in srgb, var(--dsw-alias-label-primary) 8%, transparent), 0 8px 28px color-mix(in srgb, var(--dsw-alias-bg-mask-2) 55%, transparent);backdrop-filter:blur(var(--dsh-glass-blur,14px));border-radius:20px;margin:8px 16px 12px;overflow:hidden}[data-dsh-glass-float] [data-dsh-glass-trajectory] [role=toolbar],[data-dsh-glass-float] [data-dsh-glass-trajectory] section[aria-label=Trajectory\\ timeline]{background:0 0}[data-dsh-glass-float] [data-composer-card],[data-dsh-glass-float] [data-composer-card]:after{border-radius:24px}[data-dsh-glass-float] [data-composer-card]{z-index:8;background:var(--dsh-glass-card);border:1px solid var(--dsw-alias-border-l2);box-shadow:inset 0 1px 0 color-mix(in srgb, var(--dsw-alias-label-primary) 8%, transparent), 0 8px 32px color-mix(in srgb, var(--dsw-alias-bg-mask-2) 60%, transparent);backdrop-filter:blur(var(--dsh-glass-blur,14px));position:relative}[data-dsh-glass-float] [data-dsh-glass-inputbar]:not([class*=hero]){padding-bottom:12px}[data-dsh-glass][data-dsh-glass-float] [data-dsh-glass-inputbar] [data-slot]{border:1px solid var(--dsw-alias-border-l2);border-top-color:var(--dsw-alias-border-l1);background:linear-gradient(180deg, color-mix(in srgb, var(--dsw-alias-bg-layer-1) calc(30% * var(--dsh-glass-frost,1)), transparent), color-mix(in srgb, var(--dsw-alias-bg-layer-2) calc(18% * var(--dsh-glass-frost,1)), transparent));box-shadow:0 8px 32px color-mix(in srgb, var(--dsw-alias-bg-mask-2) 60%, transparent);backdrop-filter:blur(var(--dsh-glass-blur,14px));border-radius:0 0 24px 24px;margin:0 auto;width:var(--dsh-composer-card-max-width)!important;max-width:var(--dsh-composer-card-max-width)!important}[data-dsh-glass][data-dsh-glass-float] [data-dsh-glass-inputbar] [data-slot] [data-dsh-glass-stats]{min-width:0;box-shadow:none;backdrop-filter:none;background:0 0;border:none;border-radius:0;margin:0;width:auto!important;max-width:none!important;padding:4px 16px 0!important}[data-dsh-glass][data-dsh-glass-float] [data-dsh-glass-inputbar] [data-slot] [data-dsh-live-tps]{padding-right:16px}[data-dsh-glass-float] [data-dsh-glass-inputbar]:has([data-dsh-glass-stats]) [data-composer-card]{box-shadow:inset 0 1px 0 color-mix(in srgb, var(--dsw-alias-label-primary) 8%, transparent);border-bottom:none;border-radius:24px 24px 0 0}[data-dsh-glass-float] [role=treeitem][aria-selected=true]{box-shadow:inset 2px 0 0 var(--dsw-specific-sidebar-nav-item-active-accent), 0 0 16px color-mix(in srgb, var(--dsw-alias-brand-primary-new-colorprimary-new-color) 20%, transparent)}[data-dsh-glass-float] button[class*=button]:hover:not(:disabled),[data-dsh-glass-float] [role=menuitem]:hover:not(:disabled){box-shadow:0 0 12px color-mix(in srgb, var(--dsw-alias-brand-primary-new-colorprimary-new-color) 20%, transparent), inset 0 0 0 1px color-mix(in srgb, var(--dsw-alias-border-l3) 60%, transparent)}[data-dsh-glass-float] [role=menu]{background:color-mix(in srgb, var(--dsw-alias-bg-layer-1) calc(72% * var(--dsh-glass-frost,1)), transparent);backdrop-filter:blur(var(--dsh-glass-blur,14px))}[data-dsh-glass-float] [role=dialog][aria-modal=true]{background:color-mix(in srgb, var(--dsw-alias-bg-layer-1) calc(62% * var(--dsh-glass-frost,1)), transparent);border:1px solid color-mix(in srgb, var(--dsw-alias-label-primary) calc(14% * var(--dsh-glass-frost,1)), transparent);box-shadow:inset 0 1px 0 color-mix(in srgb, var(--dsw-alias-label-primary) 8%, transparent);backdrop-filter:blur(var(--dsh-glass-blur,14px))}[data-dsh-glass-float] [data-phase=hero]{animation:bOHSKq_dsh-glass-in .32s var(--ds-ease-in-out)}[data-dsh-glass-float] [data-phase=active]{animation:bOHSKq_dsh-glass-in .3s var(--ds-ease-in-out)}[data-dsh-glass-float] [data-testid^=view-]{animation:bOHSKq_dsh-glass-in .26s var(--ds-ease-in-out)}[data-dsh-glass-float] [data-tool]{animation:bOHSKq_dsh-glass-rise .3s var(--ds-ease-in-out) both}[data-dsh-glass-float] [role=dialog]{animation:bOHSKq_dsh-glass-dialog-in .24s var(--ds-ease-in-out)}@keyframes bOHSKq_dsh-glass-in{0%{opacity:0}}@keyframes bOHSKq_dsh-glass-rise{0%{opacity:0;transform:translateY(6px)}}@keyframes bOHSKq_dsh-glass-dialog-in{0%{opacity:0;transform:translateY(8px)scale(.985)}}[data-dsh-glass] :focus-visible{outline:2px solid color-mix(in srgb, var(--dsw-alias-brand-primary-new-colorprimary-new-color) 85%, transparent);outline-offset:1px}[data-dsh-glass] ::selection{background:color-mix(in srgb, var(--dsw-alias-brand-primary-new-colorprimary-new-color) 35%, transparent)}[data-dsh-glass-compat] [role=menu],[data-dsh-glass-compat] [role=tooltip],[data-dsh-glass-compat] [class*=card],[data-dsh-glass-compat] [class*=bubble],[data-dsh-glass-compat] [class*=panel],[data-dsh-glass-compat] [class*=popover],[data-dsh-glass-compat] [class*=dropdown]{backdrop-filter:blur(12px)}[data-dsh-glass-compat] [role=dialog][aria-modal=true]{background:color-mix(in srgb, var(--dsw-alias-bg-layer-1) calc(62% * var(--dsh-glass-frost,1)), transparent);border:1px solid color-mix(in srgb, var(--dsw-alias-label-primary) calc(14% * var(--dsh-glass-frost,1)), transparent);backdrop-filter:blur(var(--dsh-glass-blur,12px))}@media (prefers-reduced-motion:reduce){[data-dsh-glass-float] [data-phase=hero],[data-dsh-glass-float] [data-phase=active],[data-dsh-glass-float] [data-testid^=view-],[data-dsh-glass-float] [data-tool],[data-dsh-glass-float] [role=dialog],[data-dsh-glass] [data-dsh-glass-ambient],[data-dsh-glass] [data-dsh-glass-blob]{animation:none}}";
|
|
1406
1438
|
const tagId = "@nonamelego/dsh-catppuccin/glass.module.css";
|
|
1407
1439
|
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId) + "]") === null) {
|
|
1408
1440
|
const tag = document.createElement("style");
|
|
@@ -1556,6 +1588,9 @@ window.__ModuleLoader__.load({
|
|
|
1556
1588
|
},
|
|
1557
1589
|
setHue: (hue) => {
|
|
1558
1590
|
glass.setHue(hue);
|
|
1591
|
+
},
|
|
1592
|
+
resetDefaults: () => {
|
|
1593
|
+
glass.resetDefaults();
|
|
1559
1594
|
}
|
|
1560
1595
|
});
|
|
1561
1596
|
ctx.slots.inject("settings.general.item", () => ctx.slots.register({
|
package/lib/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","names":["useSyncExternalStore","css","useSyncExternalStore"],"sources":["../src/client/CatppuccinRow.tsx","../src/client/locales.ts","../src/client/palettes.ts","../src/client/glass/glass-seams.ts","../src/client/glass/glass-layer.ts","../src/client/glass/glass-row.tsx","../src/client/index.ts"],"sourcesContent":["/**\n * Catppuccin settings row — one General-section preference row listing the\n * four flavour themes plus a \"follow system\" (off) choice. Selecting a\n * flavour calls the injected `select`, which switches the official\n * ThemeRuntime and persists the choice. The row subscribes to `theme/change`\n * so the highlighted flavour tracks the live preference.\n */\nimport { useSyncExternalStore } from 'react'\nimport type { PropsLocale, PropsRuntime } from '@deepseek-ai/dsh-client-ui-slots'\nimport type { FlavorChoice } from './index.ts'\n\n/** One flavour button shown by the row. */\nexport interface CatppuccinFlavorButton {\n /** Theme id registered into ThemeRuntime. */\n id: string\n /** Display label. */\n label: string\n /** Accent colour for the swatch. */\n accent: string\n}\n\n/** Injected business face of the row (assembled in apply). */\nexport interface CatppuccinRowInjected {\n /** The four flavours, in display order. */\n themes: readonly CatppuccinFlavorButton[]\n /** Current choice (`off` when a Catppuccin theme is not active). */\n current: () => FlavorChoice\n /** Subscribe to theme preference changes. Returns the disposer. */\n subscribe: (listener: () => void) => () => void\n /** Switch the theme and persist the choice (`off` reverts to system). */\n select: (choice: FlavorChoice) => void | Promise<void>\n}\n\n/** Full component props: runtime share + locale seat + injected face. */\nexport type CatppuccinRowProps = PropsRuntime<'settings.general.item'> & PropsLocale<'catppuccin'> & CatppuccinRowInjected\n\n/**\n * Render the Catppuccin row: title, one swatch button per flavour, and a\n * follow-system button. The active flavour is highlighted; clicking a flavour\n * applies it immediately (live, no restart) and persists the choice.\n * @param props - composed slot props.\n * @returns the row element tree.\n */\nexport function CatppuccinRow({ t, themes, current, subscribe, select }: CatppuccinRowProps): React.JSX.Element {\n const choice = useSyncExternalStore(subscribe, current)\n return (\n <div style={{ borderBottom: '1px solid var(--dsw-alias-border-l2)', display: 'flex', flexDirection: 'column', gap: '10px', padding: '16px 0' }}>\n <div style={{ color: 'var(--dsw-alias-label-primary)', fontSize: 14, lineHeight: '22px' }}>\n {t('row.title')}\n </div>\n <div style={{ color: 'var(--dsw-alias-label-tertiary)', fontSize: 12, lineHeight: '18px' }}>\n {t('row.description')}\n </div>\n <div style={{ display: 'flex', flexWrap: 'wrap', gap: '8px' }}>\n {themes.map((flavor) => {\n const selected = choice === flavor.id\n return (\n <button\n key={flavor.id}\n type=\"button\"\n aria-pressed={selected}\n onClick={() => void select(flavor.id)}\n style={{\n display: 'inline-flex',\n alignItems: 'center',\n gap: 6,\n padding: '6px 12px',\n borderRadius: 8,\n border: `1px solid ${selected ? 'var(--dsw-alias-border-l3)' : 'var(--dsw-alias-border-l1)'}`,\n background: selected ? 'var(--dsw-alias-interactive-bg-active)' : 'transparent',\n color: 'var(--dsw-alias-label-primary)',\n cursor: 'pointer',\n font: 'inherit',\n }}\n >\n <span aria-hidden=\"true\" style={{ width: 12, height: 12, borderRadius: 3, background: flavor.accent, flex: 'none' }} />\n {flavor.label}\n </button>\n )\n })}\n <button\n key=\"off\"\n type=\"button\"\n aria-pressed={choice === 'off'}\n onClick={() => void select('off')}\n style={{\n display: 'inline-flex',\n alignItems: 'center',\n gap: 6,\n padding: '6px 12px',\n borderRadius: 8,\n border: `1px solid ${choice === 'off' ? 'var(--dsw-alias-border-l3)' : 'var(--dsw-alias-border-l1)'}`,\n background: choice === 'off' ? 'var(--dsw-alias-interactive-bg-active)' : 'transparent',\n color: 'var(--dsw-alias-label-primary)',\n cursor: 'pointer',\n font: 'inherit',\n }}\n >\n {t('row.off')}\n </button>\n </div>\n </div>\n )\n}\n","/**\n * Catppuccin settings-row copy. The zh dictionary is the key-set source of\n * truth; the en dictionary mirrors it (checked complete against the zh keys).\n */\n\n/** Simplified Chinese dictionary. */\nexport const zh = {\n 'row.title': 'Catppuccin 主题',\n 'row.description': 'Latte / Frappé / Macchiato / Mocha 四款配色,一键切换。',\n 'row.off': '跟随系统',\n 'flavor.latte': 'Latte',\n 'flavor.frappe': 'Frappé',\n 'flavor.macchiato': 'Macchiato',\n 'flavor.mocha': 'Mocha',\n 'glass.title': '玻璃质感',\n 'glass.description': '顶栏、侧边栏、输入框、统计行、轨迹视图的磨砂玻璃效果,一键开关。',\n 'glass.enable': '总开关',\n 'glass.on': '开启',\n 'glass.off': '关闭',\n 'glass.mode': '模式',\n 'glass.modeMica': '云母效果',\n 'glass.modeCompat': '兼容模式',\n 'glass.modeHint': '云母效果把界面改成悬浮磨砂卡片;兼容模式保持原版排版,只换玻璃材质',\n 'glass.blur': '玻璃模糊度',\n 'glass.frost': '磨砂度',\n 'glass.brightness': '背景亮度',\n 'glass.brightnessHintDark': '深色模式:0 压暗至纯黑,50 原样',\n 'glass.brightnessHintLight': '浅色模式:50 原样,100 提亮至纯白',\n 'glass.hue': '背景色调',\n 'glass.hueHint': '背景渐变与光晕的色相偏移(0–360°)',\n} as const\n\n/** English dictionary, checked complete against the zh key set. */\nexport const en: Record<keyof typeof zh, string> = {\n 'row.title': 'Catppuccin theme',\n 'row.description': 'Latte / Frappé / Macchiato / Mocha, one click away.',\n 'row.off': 'Follow system',\n 'flavor.latte': 'Latte',\n 'flavor.frappe': 'Frappé',\n 'flavor.macchiato': 'Macchiato',\n 'flavor.mocha': 'Mocha',\n 'glass.title': 'Glassmorphism',\n 'glass.description': 'Frosted glass for the top bar, sidebar, composer, stats line and trajectory view — one click on/off.',\n 'glass.enable': 'Master switch',\n 'glass.on': 'On',\n 'glass.off': 'Off',\n 'glass.mode': 'Mode',\n 'glass.modeMica': 'Mica',\n 'glass.modeCompat': 'Compatibility',\n 'glass.modeHint': 'Mica restyles the UI into floating frosted cards; Compatibility keeps the stock layout and only swaps the material to glass',\n 'glass.blur': 'Glass blur',\n 'glass.frost': 'Frost',\n 'glass.brightness': 'Backdrop brightness',\n 'glass.brightnessHintDark': 'Dark mode: 0 fades to pure black, 50 unchanged',\n 'glass.brightnessHintLight': 'Light mode: 50 unchanged, 100 brightens to pure white',\n 'glass.hue': 'Backdrop hue',\n 'glass.hueHint': 'Hue shift for the backdrop gradient and glow (0–360°)',\n}\n\n/** Key union of the Catppuccin dictionaries. */\nexport type CatppuccinKey = keyof typeof zh\n","/**\n * AUTO-GENERATED by scripts/generate-palettes.mjs — do not edit by hand.\n * Catppuccin token tables for the DeepSeek Harness web GUI.\n * Source palette: https://github.com/catppuccin/catppuccin (palette.json v1.8.0).\n * Each flavour carries a flat dictionary of every --dsw-static-*,\n * --dsw-alias-* and --dsw-specific-* token the official theme stylesheet\n * declares. Alias/specific entries keep their var() references so the static\n * overrides below flow through automatically; literal (non-var) entries are\n * remapped to Catppuccin colours.\n */\nexport type CatppuccinFlavorId = 'latte' | 'frappe' | 'macchiato' | 'mocha'\nexport interface CatppuccinFlavorInfo {\n /** Theme id registered into ThemeRuntime. */\n themeId: string\n /** Base color scheme this flavour builds on. */\n colorScheme: 'light' | 'dark'\n /** Display label. */\n label: string\n /** Accent colour for the settings row swatch. */\n accent: string\n /** Token dictionary (--dsw-* names). */\n tokens: Record<string, string>\n}\n\nexport const CATPPUCCIN_LATTE: CatppuccinFlavorInfo = {\n themeId: 'catppuccin-latte',\n colorScheme: 'light',\n label: 'Latte',\n accent: '#1e66f5',\n tokens: {\n \"--dsw-static-amber-100\": \"color-mix(in srgb, #fe640b 20%, #eff1f5)\",\n \"--dsw-static-amber-400\": \"#df8e1d\",\n \"--dsw-static-amber-500\": \"#fe640b\",\n \"--dsw-static-amber-600\": \"#fe640b\",\n \"--dsw-static-amber-900\": \"color-mix(in srgb, #fe640b 32%, #eff1f5)\",\n \"--dsw-static-blue-100\": \"color-mix(in srgb, #1e66f5 22%, #eff1f5)\",\n \"--dsw-static-blue-300\": \"color-mix(in srgb, #1e66f5 48%, #eff1f5)\",\n \"--dsw-static-blue-400\": \"color-mix(in srgb, #1e66f5 65%, #eff1f5)\",\n \"--dsw-static-blue-450\": \"color-mix(in srgb, #1e66f5 82%, #eff1f5)\",\n \"--dsw-static-blue-500\": \"#1e66f5\",\n \"--dsw-static-blue-50\": \"color-mix(in srgb, #1e66f5 8%, #eff1f5)\",\n \"--dsw-static-blue-50p\": \"color-mix(in srgb, #1e66f5 12%, #eff1f5)\",\n \"--dsw-static-blue-600\": \"color-mix(in srgb, #1e66f5 82%, #eff1f5)\",\n \"--dsw-static-blue-75\": \"color-mix(in srgb, #1e66f5 16%, #eff1f5)\",\n \"--dsw-static-blue-800\": \"color-mix(in srgb, #1e66f5 50%, #eff1f5)\",\n \"--dsw-static-blue-900\": \"color-mix(in srgb, #1e66f5 38%, #eff1f5)\",\n \"--dsw-static-blue-950\": \"color-mix(in srgb, #1e66f5 26%, #eff1f5)\",\n \"--dsw-static-deepseek-100\": \"color-mix(in srgb, #1e66f5 22%, #eff1f5)\",\n \"--dsw-static-deepseek-200\": \"color-mix(in srgb, #1e66f5 34%, #eff1f5)\",\n \"--dsw-static-deepseek-300\": \"color-mix(in srgb, #1e66f5 48%, #eff1f5)\",\n \"--dsw-static-deepseek-400\": \"color-mix(in srgb, #1e66f5 65%, #eff1f5)\",\n \"--dsw-static-deepseek-450\": \"color-mix(in srgb, #1e66f5 82%, #eff1f5)\",\n \"--dsw-static-deepseek-500\": \"#1e66f5\",\n \"--dsw-static-deepseek-50\": \"color-mix(in srgb, #1e66f5 8%, #eff1f5)\",\n \"--dsw-static-deepseek-600\": \"color-mix(in srgb, #1e66f5 82%, #eff1f5)\",\n \"--dsw-static-deepseek-700-delete\": \"color-mix(in srgb, #1e66f5 66%, #eff1f5)\",\n \"--dsw-static-deepseek-800\": \"color-mix(in srgb, #1e66f5 50%, #eff1f5)\",\n \"--dsw-static-deepseek-900\": \"color-mix(in srgb, #1e66f5 38%, #eff1f5)\",\n \"--dsw-static-green-100\": \"color-mix(in srgb, #40a02b 18%, #eff1f5)\",\n \"--dsw-static-green-400\": \"color-mix(in srgb, #40a02b 80%, #eff1f5)\",\n \"--dsw-static-green-500\": \"#40a02b\",\n \"--dsw-static-green-900\": \"color-mix(in srgb, #40a02b 30%, #eff1f5)\",\n \"--dsw-static-neutral-00\": \"#eff1f5\",\n \"--dsw-static-neutral-1000\": \"#4c4f69\",\n \"--dsw-static-neutral-100\": \"#bcc0cc\",\n \"--dsw-static-neutral-150\": \"#acb0be\",\n \"--dsw-static-neutral-200\": \"#9ca0b0\",\n \"--dsw-static-neutral-250\": \"#9ca0b0\",\n \"--dsw-static-neutral-300\": \"#8c8fa1\",\n \"--dsw-static-neutral-400\": \"#7c7f93\",\n \"--dsw-static-neutral-500\": \"#6c6f85\",\n \"--dsw-static-neutral-50\": \"#e6e9ef\",\n \"--dsw-static-neutral-550\": \"#6c6f85\",\n \"--dsw-static-neutral-600\": \"#5c5f77\",\n \"--dsw-static-neutral-700\": \"#5c5f77\",\n \"--dsw-static-neutral-800\": \"#4c4f69\",\n \"--dsw-static-neutral-850\": \"#4c4f69\",\n \"--dsw-static-neutral-900\": \"#4c4f69\",\n \"--dsw-static-neutral-bluish-00\": \"#eff1f5\",\n \"--dsw-static-neutral-bluish-1000\": \"#4c4f69\",\n \"--dsw-static-neutral-bluish-100\": \"#bcc0cc\",\n \"--dsw-static-neutral-bluish-150\": \"#acb0be\",\n \"--dsw-static-neutral-bluish-200\": \"#9ca0b0\",\n \"--dsw-static-neutral-bluish-300\": \"#8c8fa1\",\n \"--dsw-static-neutral-bluish-400\": \"#7c7f93\",\n \"--dsw-static-neutral-bluish-500\": \"#6c6f85\",\n \"--dsw-static-neutral-bluish-50\": \"#e6e9ef\",\n \"--dsw-static-neutral-bluish-600\": \"#5c5f77\",\n \"--dsw-static-neutral-bluish-60\": \"#e6e9ef\",\n \"--dsw-static-neutral-bluish-700\": \"#5c5f77\",\n \"--dsw-static-neutral-bluish-750\": \"#4c4f69\",\n \"--dsw-static-neutral-bluish-75\": \"#ccd0da\",\n \"--dsw-static-neutral-bluish-800\": \"#4c4f69\",\n \"--dsw-static-neutral-bluish-850\": \"#4c4f69\",\n \"--dsw-static-neutral-bluish-875\": \"#4c4f69\",\n \"--dsw-static-neutral-bluish-900\": \"#4c4f69\",\n \"--dsw-static-neutral-bluish-950\": \"#4c4f69\",\n \"--dsw-static-red-100\": \"color-mix(in srgb, #d20f39 20%, #eff1f5)\",\n \"--dsw-static-red-400\": \"color-mix(in srgb, #d20f39 70%, #eff1f5)\",\n \"--dsw-static-red-500\": \"#d20f39\",\n \"--dsw-static-red-50\": \"color-mix(in srgb, #d20f39 10%, #eff1f5)\",\n \"--dsw-static-red-600\": \"#d20f39\",\n \"--dsw-static-red-900\": \"color-mix(in srgb, #d20f39 34%, #eff1f5)\",\n \"--dsw-alias-bg-base\": \"var(--dsw-static-neutral-bluish-00)\",\n \"--dsw-alias-bg-layer-1\": \"var(--dsw-static-neutral-bluish-00)\",\n \"--dsw-alias-bg-layer-2\": \"var(--dsw-static-neutral-bluish-00)\",\n \"--dsw-alias-bg-layer-3\": \"var(--dsw-static-neutral-bluish-00)\",\n \"--dsw-alias-bg-mask-1\": \"rgba(0, 0, 0, 0.24)\",\n \"--dsw-alias-bg-mask-2\": \"rgba(0, 0, 0, 0.12)\",\n \"--dsw-alias-bg-mask-3\": \"rgba(0, 0, 0, 0.48)\",\n \"--dsw-alias-bg-mask-photo\": \"rgba(0, 0, 0, 0.88)\",\n \"--dsw-alias-bg-mask-drop\": \"rgba(255, 255, 255, 0.7)\",\n \"--dsw-alias-bg-module-platform\": \"var(--dsw-static-neutral-bluish-60)\",\n \"--dsw-alias-bg-multi-select\": \"var(--dsw-static-neutral-bluish-60)\",\n \"--dsw-alias-bg-overlay\": \"var(--dsw-static-neutral-bluish-150)\",\n \"--dsw-alias-bg-skeleton\": \"rgba(0, 0, 0, 0.04)\",\n \"--dsw-alias-border-inverted2\": \"rgba(0, 0, 0, 0)\",\n \"--dsw-alias-border-inverted\": \"rgba(0, 0, 0, 0)\",\n \"--dsw-alias-border-l1\": \"rgba(0, 0, 0, 0.04)\",\n \"--dsw-alias-border-l2-darkmode-thin\": \"rgba(0, 0, 0, 0.1)\",\n \"--dsw-alias-border-l2\": \"rgba(0, 0, 0, 0.1)\",\n \"--dsw-alias-border-l3\": \"rgba(0, 0, 0, 0.12)\",\n \"--dsw-alias-border-l4\": \"rgba(0, 0, 0, 0.16)\",\n \"--dsw-alias-brand-primary-invert\": \"var(--dsw-static-neutral-bluish-1000)\",\n \"--dsw-alias-brand-primary-new-colorprimary-new-color\": \"#1e66f5\",\n \"--dsw-alias-brand-primary\": \"var(--dsw-static-neutral-bluish-1000)\",\n \"--dsw-alias-brand-text\": \"var(--dsw-static-neutral-bluish-1000)\",\n \"--dsw-alias-button-contrast-fill\": \"var(--dsw-static-neutral-bluish-700)\",\n \"--dsw-alias-button-elevated-fill\": \"var(--dsw-static-neutral-bluish-00)\",\n \"--dsw-alias-button-floating-fill\": \"var(--dsw-static-neutral-bluish-00)\",\n \"--dsw-alias-button-floating-hover\": \"var(--dsw-static-neutral-bluish-75)\",\n \"--dsw-alias-button-ghost-active-border\": \"var(--dsw-static-neutral-bluish-500)\",\n \"--dsw-alias-button-ghost-active-fill\": \"var(--dsw-static-neutral-bluish-100)\",\n \"--dsw-alias-button-ghost-active-hover\": \"var(--dsw-static-neutral-bluish-150)\",\n \"--dsw-alias-button-info-fill\": \"var(--dsw-static-deepseek-500)\",\n \"--dsw-alias-button-info-hover\": \"var(--dsw-static-deepseek-400)\",\n \"--dsw-alias-button-primary-dimmed\": \"var(--dsw-static-neutral-bluish-100)\",\n \"--dsw-alias-button-primary-fill\": \"var(--dsw-alias-brand-primary)\",\n \"--dsw-alias-button-primary-hover\": \"var(--dsw-static-neutral-bluish-750)\",\n \"--dsw-alias-button-tool-bar-fill-invisible\": \"rgba(31, 31, 31, 0.36)\",\n \"--dsw-alias-button-tool-bar-fill\": \"rgba(84, 85, 87, 0.5)\",\n \"--dsw-alias-button-tool-bar-hover\": \"rgba(84, 85, 87, 0.6)\",\n \"--dsw-alias-interactive-bg-active\": \"rgba(38, 49, 72, 0.1)\",\n \"--dsw-alias-interactive-bg-hover-accent\": \"rgba(38, 49, 72, 0.14)\",\n \"--dsw-alias-interactive-bg-hover-danger\": \"rgba(236, 19, 19, 0.05)\",\n \"--dsw-alias-interactive-bg-hover-solid\": \"var(--dsw-static-neutral-bluish-75)\",\n \"--dsw-alias-interactive-bg-hover\": \"rgba(38, 49, 72, 0.06)\",\n \"--dsw-alias-label-caption\": \"var(--dsw-static-neutral-bluish-400)\",\n \"--dsw-alias-label-dimmed\": \"var(--dsw-static-neutral-bluish-200)\",\n \"--dsw-alias-label-primary-bluish\": \"var(--dsw-static-blue-900)\",\n \"--dsw-alias-label-primary-dimmed\": \"var(--dsw-static-neutral-bluish-950)\",\n \"--dsw-alias-label-primary-foreground\": \"var(--dsw-static-neutral-bluish-00)\",\n \"--dsw-alias-label-primary-inverted\": \"var(--dsw-static-neutral-bluish-00)\",\n \"--dsw-alias-label-primary\": \"var(--dsw-static-neutral-bluish-1000)\",\n \"--dsw-alias-label-secondary\": \"var(--dsw-static-neutral-bluish-700)\",\n \"--dsw-alias-label-tertiary\": \"var(--dsw-static-neutral-bluish-600)\",\n \"--dsw-alias-markdown-citation\": \"var(--dsw-static-neutral-bluish-100)\",\n \"--dsw-alias-markdown-code-block-banner\": \"var(--dsw-static-neutral-bluish-50)\",\n \"--dsw-alias-markdown-code-block\": \"var(--dsw-static-neutral-bluish-50)\",\n \"--dsw-alias-markdown-code-segment-selected\": \"var(--dsw-static-neutral-bluish-00)\",\n \"--dsw-alias-markdown-code-segment-unselected\": \"var(--dsw-static-neutral-bluish-75)\",\n \"--dsw-alias-markdown-inline-code\": \"var(--dsw-static-neutral-bluish-100)\",\n \"--dsw-alias-markdown-placeholder\": \"var(--dsw-static-neutral-bluish-60)\",\n \"--dsw-alias-markdown-tag\": \"var(--dsw-static-neutral-bluish-75)\",\n \"--dsw-alias-scrollbar-bg-l1\": \"var(--dsw-static-neutral-200)\",\n \"--dsw-alias-scrollbar-bg-l2\": \"var(--dsw-static-neutral-200)\",\n \"--dsw-alias-scrollbar-hover-l1\": \"var(--dsw-static-neutral-300)\",\n \"--dsw-alias-scrollbar-hover-l2\": \"var(--dsw-static-neutral-300)\",\n \"--dsw-alias-state-business-primary\": \"var(--dsw-static-deepseek-500)\",\n \"--dsw-alias-state-business-tertiary\": \"var(--dsw-static-deepseek-100)\",\n \"--dsw-alias-state-error-primary\": \"var(--dsw-static-red-600)\",\n \"--dsw-alias-state-error-secondary\": \"var(--dsw-static-red-400)\",\n \"--dsw-alias-state-success-primary\": \"var(--dsw-static-green-500)\",\n \"--dsw-alias-state-success-secondary\": \"var(--dsw-static-green-400)\",\n \"--dsw-alias-state-success-tertiary\": \"var(--dsw-static-green-100)\",\n \"--dsw-alias-state-warn-label\": \"var(--dsw-static-amber-600)\",\n \"--dsw-alias-state-warn-primary\": \"var(--dsw-static-amber-500)\",\n \"--dsw-alias-state-warn-secondary\": \"var(--dsw-static-amber-400)\",\n \"--dsw-alias-state-warn-tertiary\": \"var(--dsw-static-amber-100)\",\n \"--dsw-alias-toast-bg\": \"var(--dsw-static-neutral-bluish-800)\",\n \"--dsw-alias-tooltip-bg\": \"var(--dsw-static-neutral-bluish-850)\",\n \"--dsw-specific-bubble-highlight\": \"var(--dsw-static-deepseek-200)\",\n \"--dsw-specific-bubble\": \"var(--dsw-static-deepseek-50)\",\n \"--dsw-specific-input-major\": \"var(--dsw-static-neutral-bluish-00)\",\n \"--dsw-specific-login-input\": \"var(--dsw-static-neutral-bluish-50)\",\n \"--dsw-specific-menu\": \"var(--dsw-alias-bg-layer-3)\",\n \"--dsw-specific-selector\": \"var(--dsw-static-neutral-bluish-60)\",\n \"--dsw-specific-sidebar-fill\": \"var(--dsw-static-neutral-bluish-50)\",\n \"--dsw-specific-sidebar-nav-item-active-accent\": \"var(--dsw-static-deepseek-100)\",\n \"--dsw-specific-sidebar-nav-item-active\": \"var(--dsw-static-neutral-bluish-100)\",\n \"--dsw-specific-sidebar-nav-item-hover\": \"var(--dsw-static-neutral-bluish-75)\",\n \"--dsw-specific-tip\": \"var(--dsw-static-neutral-bluish-60)\",\n },\n}\n\nexport const CATPPUCCIN_FRAPPE: CatppuccinFlavorInfo = {\n themeId: 'catppuccin-frappe',\n colorScheme: 'dark',\n label: 'Frappé',\n accent: '#8caaee',\n tokens: {\n \"--dsw-static-amber-100\": \"color-mix(in srgb, #ef9f76 20%, #303446)\",\n \"--dsw-static-amber-400\": \"#e5c890\",\n \"--dsw-static-amber-500\": \"#ef9f76\",\n \"--dsw-static-amber-600\": \"#ef9f76\",\n \"--dsw-static-amber-900\": \"color-mix(in srgb, #ef9f76 32%, #303446)\",\n \"--dsw-static-blue-100\": \"color-mix(in srgb, #8caaee 24%, #303446)\",\n \"--dsw-static-blue-300\": \"color-mix(in srgb, #8caaee 50%, #303446)\",\n \"--dsw-static-blue-400\": \"color-mix(in srgb, #8caaee 66%, #303446)\",\n \"--dsw-static-blue-450\": \"color-mix(in srgb, #8caaee 84%, #303446)\",\n \"--dsw-static-blue-500\": \"#8caaee\",\n \"--dsw-static-blue-50\": \"color-mix(in srgb, #8caaee 10%, #303446)\",\n \"--dsw-static-blue-50p\": \"color-mix(in srgb, #8caaee 14%, #303446)\",\n \"--dsw-static-blue-600\": \"color-mix(in srgb, #8caaee 84%, #303446)\",\n \"--dsw-static-blue-75\": \"color-mix(in srgb, #8caaee 18%, #303446)\",\n \"--dsw-static-blue-800\": \"color-mix(in srgb, #8caaee 52%, #303446)\",\n \"--dsw-static-blue-900\": \"color-mix(in srgb, #8caaee 40%, #303446)\",\n \"--dsw-static-blue-950\": \"color-mix(in srgb, #8caaee 28%, #303446)\",\n \"--dsw-static-deepseek-100\": \"color-mix(in srgb, #8caaee 24%, #303446)\",\n \"--dsw-static-deepseek-200\": \"color-mix(in srgb, #8caaee 36%, #303446)\",\n \"--dsw-static-deepseek-300\": \"color-mix(in srgb, #8caaee 50%, #303446)\",\n \"--dsw-static-deepseek-400\": \"color-mix(in srgb, #8caaee 66%, #303446)\",\n \"--dsw-static-deepseek-450\": \"color-mix(in srgb, #8caaee 84%, #303446)\",\n \"--dsw-static-deepseek-500\": \"#8caaee\",\n \"--dsw-static-deepseek-50\": \"color-mix(in srgb, #8caaee 10%, #303446)\",\n \"--dsw-static-deepseek-600\": \"color-mix(in srgb, #8caaee 84%, #303446)\",\n \"--dsw-static-deepseek-700-delete\": \"color-mix(in srgb, #8caaee 68%, #303446)\",\n \"--dsw-static-deepseek-800\": \"color-mix(in srgb, #8caaee 52%, #303446)\",\n \"--dsw-static-deepseek-900\": \"color-mix(in srgb, #8caaee 40%, #303446)\",\n \"--dsw-static-green-100\": \"color-mix(in srgb, #a6d189 18%, #303446)\",\n \"--dsw-static-green-400\": \"color-mix(in srgb, #a6d189 80%, #303446)\",\n \"--dsw-static-green-500\": \"#a6d189\",\n \"--dsw-static-green-900\": \"color-mix(in srgb, #a6d189 30%, #303446)\",\n \"--dsw-static-neutral-00\": \"#c6d0f5\",\n \"--dsw-static-neutral-1000\": \"#232634\",\n \"--dsw-static-neutral-100\": \"#a5adce\",\n \"--dsw-static-neutral-150\": \"#a5adce\",\n \"--dsw-static-neutral-200\": \"#949cbb\",\n \"--dsw-static-neutral-250\": \"#949cbb\",\n \"--dsw-static-neutral-300\": \"#838ba7\",\n \"--dsw-static-neutral-400\": \"#737994\",\n \"--dsw-static-neutral-500\": \"#626880\",\n \"--dsw-static-neutral-50\": \"#c6d0f5\",\n \"--dsw-static-neutral-550\": \"#51576d\",\n \"--dsw-static-neutral-600\": \"#51576d\",\n \"--dsw-static-neutral-700\": \"#414559\",\n \"--dsw-static-neutral-800\": \"#414559\",\n \"--dsw-static-neutral-850\": \"#303446\",\n \"--dsw-static-neutral-900\": \"#292c3c\",\n \"--dsw-static-neutral-bluish-00\": \"#c6d0f5\",\n \"--dsw-static-neutral-bluish-1000\": \"#232634\",\n \"--dsw-static-neutral-bluish-100\": \"#a5adce\",\n \"--dsw-static-neutral-bluish-150\": \"#a5adce\",\n \"--dsw-static-neutral-bluish-200\": \"#949cbb\",\n \"--dsw-static-neutral-bluish-300\": \"#838ba7\",\n \"--dsw-static-neutral-bluish-400\": \"#737994\",\n \"--dsw-static-neutral-bluish-500\": \"#626880\",\n \"--dsw-static-neutral-bluish-50\": \"#c6d0f5\",\n \"--dsw-static-neutral-bluish-600\": \"#51576d\",\n \"--dsw-static-neutral-bluish-60\": \"#b5bfe2\",\n \"--dsw-static-neutral-bluish-700\": \"#414559\",\n \"--dsw-static-neutral-bluish-750\": \"#414559\",\n \"--dsw-static-neutral-bluish-75\": \"#b5bfe2\",\n \"--dsw-static-neutral-bluish-800\": \"#414559\",\n \"--dsw-static-neutral-bluish-850\": \"#303446\",\n \"--dsw-static-neutral-bluish-875\": \"#292c3c\",\n \"--dsw-static-neutral-bluish-900\": \"#292c3c\",\n \"--dsw-static-neutral-bluish-950\": \"#232634\",\n \"--dsw-static-red-100\": \"color-mix(in srgb, #e78284 20%, #303446)\",\n \"--dsw-static-red-400\": \"color-mix(in srgb, #e78284 70%, #303446)\",\n \"--dsw-static-red-500\": \"#e78284\",\n \"--dsw-static-red-50\": \"color-mix(in srgb, #e78284 10%, #303446)\",\n \"--dsw-static-red-600\": \"#e78284\",\n \"--dsw-static-red-900\": \"color-mix(in srgb, #e78284 34%, #303446)\",\n \"--dsw-alias-bg-base\": \"var(--dsw-static-neutral-bluish-950)\",\n \"--dsw-alias-bg-layer-1\": \"var(--dsw-static-neutral-bluish-875)\",\n \"--dsw-alias-bg-layer-2\": \"var(--dsw-static-neutral-bluish-850)\",\n \"--dsw-alias-bg-layer-3\": \"var(--dsw-static-neutral-bluish-800)\",\n \"--dsw-alias-bg-mask-1\": \"rgba(0, 0, 0, 0.5)\",\n \"--dsw-alias-bg-mask-2\": \"rgba(0, 0, 0, 0.2)\",\n \"--dsw-alias-bg-mask-3\": \"rgba(0, 0, 0, 0.48)\",\n \"--dsw-alias-bg-mask-photo\": \"rgba(0, 0, 0, 0.88)\",\n \"--dsw-alias-bg-mask-drop\": \"rgba(39, 39, 48, 0.7)\",\n \"--dsw-alias-bg-module-platform\": \"var(--dsw-static-neutral-bluish-800)\",\n \"--dsw-alias-bg-multi-select\": \"var(--dsw-static-neutral-850)\",\n \"--dsw-alias-bg-overlay\": \"var(--dsw-static-neutral-bluish-700)\",\n \"--dsw-alias-bg-skeleton\": \"rgba(255, 255, 255, 0.08)\",\n \"--dsw-alias-border-inverted2\": \"rgba(255, 255, 255, 0.08)\",\n \"--dsw-alias-border-inverted\": \"rgba(255, 255, 255, 0.06)\",\n \"--dsw-alias-border-l1\": \"rgba(255, 255, 255, 0.06)\",\n \"--dsw-alias-border-l2-darkmode-thin\": \"rgba(255, 255, 255, 0.06)\",\n \"--dsw-alias-border-l2\": \"rgba(255, 255, 255, 0.12)\",\n \"--dsw-alias-border-l3\": \"rgba(255, 255, 255, 0.16)\",\n \"--dsw-alias-border-l4\": \"rgba(255, 255, 255, 0.2)\",\n \"--dsw-alias-brand-primary-invert\": \"var(--dsw-static-neutral-bluish-50)\",\n \"--dsw-alias-brand-primary-new-colorprimary-new-color\": \"#8caaee\",\n \"--dsw-alias-brand-primary\": \"var(--dsw-static-neutral-bluish-50)\",\n \"--dsw-alias-brand-text\": \"var(--dsw-static-neutral-bluish-50)\",\n \"--dsw-alias-button-contrast-fill\": \"var(--dsw-static-neutral-bluish-50)\",\n \"--dsw-alias-button-elevated-fill\": \"var(--dsw-static-neutral-bluish-750)\",\n \"--dsw-alias-button-floating-fill\": \"var(--dsw-static-neutral-bluish-850)\",\n \"--dsw-alias-button-floating-hover\": \"var(--dsw-static-neutral-bluish-800)\",\n \"--dsw-alias-button-ghost-active-border\": \"var(--dsw-static-neutral-bluish-600)\",\n \"--dsw-alias-button-ghost-active-fill\": \"var(--dsw-static-neutral-bluish-750)\",\n \"--dsw-alias-button-ghost-active-hover\": \"var(--dsw-static-neutral-bluish-700)\",\n \"--dsw-alias-button-info-fill\": \"var(--dsw-static-deepseek-400)\",\n \"--dsw-alias-button-info-hover\": \"var(--dsw-static-deepseek-500)\",\n \"--dsw-alias-button-primary-dimmed\": \"var(--dsw-static-neutral-bluish-750)\",\n \"--dsw-alias-button-primary-fill\": \"var(--dsw-alias-brand-primary)\",\n \"--dsw-alias-button-primary-hover\": \"var(--dsw-static-neutral-bluish-100)\",\n \"--dsw-alias-button-tool-bar-fill-invisible\": \"rgba(31, 31, 31, 0.36)\",\n \"--dsw-alias-button-tool-bar-fill\": \"rgba(84, 85, 87, 0.5)\",\n \"--dsw-alias-button-tool-bar-hover\": \"rgba(84, 85, 87, 0.6)\",\n \"--dsw-alias-interactive-bg-active\": \"rgba(255, 255, 255, 0.14)\",\n \"--dsw-alias-interactive-bg-hover-accent\": \"rgba(255, 255, 255, 0.24)\",\n \"--dsw-alias-interactive-bg-hover-danger\": \"rgba(242, 90, 90, 0.15)\",\n \"--dsw-alias-interactive-bg-hover-solid\": \"var(--dsw-static-neutral-bluish-800)\",\n \"--dsw-alias-interactive-bg-hover\": \"rgba(255, 255, 255, 0.08)\",\n \"--dsw-alias-label-caption\": \"var(--dsw-static-neutral-bluish-600)\",\n \"--dsw-alias-label-dimmed\": \"var(--dsw-static-neutral-bluish-750)\",\n \"--dsw-alias-label-primary-bluish\": \"var(--dsw-static-neutral-bluish-50)\",\n \"--dsw-alias-label-primary-dimmed\": \"var(--dsw-static-neutral-bluish-100)\",\n \"--dsw-alias-label-primary-foreground\": \"var(--dsw-static-neutral-bluish-1000)\",\n \"--dsw-alias-label-primary-inverted\": \"var(--dsw-static-neutral-bluish-800)\",\n \"--dsw-alias-label-primary\": \"var(--dsw-static-neutral-bluish-50)\",\n \"--dsw-alias-label-secondary\": \"var(--dsw-static-neutral-bluish-300)\",\n \"--dsw-alias-label-tertiary\": \"var(--dsw-static-neutral-bluish-400)\",\n \"--dsw-alias-markdown-citation\": \"var(--dsw-static-neutral-bluish-800)\",\n \"--dsw-alias-markdown-code-block-banner\": \"var(--dsw-static-neutral-bluish-850)\",\n \"--dsw-alias-markdown-code-block\": \"var(--dsw-static-neutral-bluish-900)\",\n \"--dsw-alias-markdown-code-segment-selected\": \"var(--dsw-static-neutral-bluish-800)\",\n \"--dsw-alias-markdown-code-segment-unselected\": \"var(--dsw-static-neutral-bluish-900)\",\n \"--dsw-alias-markdown-inline-code\": \"var(--dsw-static-neutral-bluish-850)\",\n \"--dsw-alias-markdown-placeholder\": \"var(--dsw-static-neutral-bluish-850)\",\n \"--dsw-alias-markdown-tag\": \"var(--dsw-static-neutral-bluish-850)\",\n \"--dsw-alias-scrollbar-bg-l1\": \"var(--dsw-static-neutral-700)\",\n \"--dsw-alias-scrollbar-bg-l2\": \"var(--dsw-static-neutral-600)\",\n \"--dsw-alias-scrollbar-hover-l1\": \"var(--dsw-static-neutral-600)\",\n \"--dsw-alias-scrollbar-hover-l2\": \"var(--dsw-static-neutral-550)\",\n \"--dsw-alias-state-business-primary\": \"var(--dsw-static-deepseek-400)\",\n \"--dsw-alias-state-business-tertiary\": \"var(--dsw-static-deepseek-800)\",\n \"--dsw-alias-state-error-primary\": \"var(--dsw-static-red-400)\",\n \"--dsw-alias-state-error-secondary\": \"var(--dsw-static-red-400)\",\n \"--dsw-alias-state-success-primary\": \"var(--dsw-static-green-500)\",\n \"--dsw-alias-state-success-secondary\": \"var(--dsw-static-green-400)\",\n \"--dsw-alias-state-success-tertiary\": \"var(--dsw-static-green-900)\",\n \"--dsw-alias-state-warn-label\": \"var(--dsw-static-amber-600)\",\n \"--dsw-alias-state-warn-primary\": \"var(--dsw-static-amber-500)\",\n \"--dsw-alias-state-warn-secondary\": \"var(--dsw-static-amber-400)\",\n \"--dsw-alias-state-warn-tertiary\": \"var(--dsw-static-amber-900)\",\n \"--dsw-alias-toast-bg\": \"var(--dsw-static-neutral-bluish-750)\",\n \"--dsw-alias-tooltip-bg\": \"var(--dsw-static-neutral-bluish-750)\",\n \"--dsw-specific-bubble-highlight\": \"var(--dsw-static-neutral-bluish-750)\",\n \"--dsw-specific-bubble\": \"var(--dsw-static-neutral-bluish-850)\",\n \"--dsw-specific-input-major\": \"var(--dsw-static-neutral-bluish-850)\",\n \"--dsw-specific-login-input\": \"var(--dsw-static-neutral-bluish-900)\",\n \"--dsw-specific-menu\": \"var(--dsw-alias-bg-layer-3)\",\n \"--dsw-specific-selector\": \"var(--dsw-static-neutral-bluish-800)\",\n \"--dsw-specific-sidebar-fill\": \"var(--dsw-static-neutral-bluish-900)\",\n \"--dsw-specific-sidebar-nav-item-active-accent\": \"var(--dsw-static-neutral-bluish-800)\",\n \"--dsw-specific-sidebar-nav-item-active\": \"var(--dsw-static-neutral-bluish-750)\",\n \"--dsw-specific-sidebar-nav-item-hover\": \"var(--dsw-static-neutral-bluish-850)\",\n \"--dsw-specific-tip\": \"var(--dsw-static-neutral-bluish-800)\",\n },\n}\n\nexport const CATPPUCCIN_MACCHIATO: CatppuccinFlavorInfo = {\n themeId: 'catppuccin-macchiato',\n colorScheme: 'dark',\n label: 'Macchiato',\n accent: '#8aadf4',\n tokens: {\n \"--dsw-static-amber-100\": \"color-mix(in srgb, #f5a97f 20%, #24273a)\",\n \"--dsw-static-amber-400\": \"#eed49f\",\n \"--dsw-static-amber-500\": \"#f5a97f\",\n \"--dsw-static-amber-600\": \"#f5a97f\",\n \"--dsw-static-amber-900\": \"color-mix(in srgb, #f5a97f 32%, #24273a)\",\n \"--dsw-static-blue-100\": \"color-mix(in srgb, #8aadf4 24%, #24273a)\",\n \"--dsw-static-blue-300\": \"color-mix(in srgb, #8aadf4 50%, #24273a)\",\n \"--dsw-static-blue-400\": \"color-mix(in srgb, #8aadf4 66%, #24273a)\",\n \"--dsw-static-blue-450\": \"color-mix(in srgb, #8aadf4 84%, #24273a)\",\n \"--dsw-static-blue-500\": \"#8aadf4\",\n \"--dsw-static-blue-50\": \"color-mix(in srgb, #8aadf4 10%, #24273a)\",\n \"--dsw-static-blue-50p\": \"color-mix(in srgb, #8aadf4 14%, #24273a)\",\n \"--dsw-static-blue-600\": \"color-mix(in srgb, #8aadf4 84%, #24273a)\",\n \"--dsw-static-blue-75\": \"color-mix(in srgb, #8aadf4 18%, #24273a)\",\n \"--dsw-static-blue-800\": \"color-mix(in srgb, #8aadf4 52%, #24273a)\",\n \"--dsw-static-blue-900\": \"color-mix(in srgb, #8aadf4 40%, #24273a)\",\n \"--dsw-static-blue-950\": \"color-mix(in srgb, #8aadf4 28%, #24273a)\",\n \"--dsw-static-deepseek-100\": \"color-mix(in srgb, #8aadf4 24%, #24273a)\",\n \"--dsw-static-deepseek-200\": \"color-mix(in srgb, #8aadf4 36%, #24273a)\",\n \"--dsw-static-deepseek-300\": \"color-mix(in srgb, #8aadf4 50%, #24273a)\",\n \"--dsw-static-deepseek-400\": \"color-mix(in srgb, #8aadf4 66%, #24273a)\",\n \"--dsw-static-deepseek-450\": \"color-mix(in srgb, #8aadf4 84%, #24273a)\",\n \"--dsw-static-deepseek-500\": \"#8aadf4\",\n \"--dsw-static-deepseek-50\": \"color-mix(in srgb, #8aadf4 10%, #24273a)\",\n \"--dsw-static-deepseek-600\": \"color-mix(in srgb, #8aadf4 84%, #24273a)\",\n \"--dsw-static-deepseek-700-delete\": \"color-mix(in srgb, #8aadf4 68%, #24273a)\",\n \"--dsw-static-deepseek-800\": \"color-mix(in srgb, #8aadf4 52%, #24273a)\",\n \"--dsw-static-deepseek-900\": \"color-mix(in srgb, #8aadf4 40%, #24273a)\",\n \"--dsw-static-green-100\": \"color-mix(in srgb, #a6da95 18%, #24273a)\",\n \"--dsw-static-green-400\": \"color-mix(in srgb, #a6da95 80%, #24273a)\",\n \"--dsw-static-green-500\": \"#a6da95\",\n \"--dsw-static-green-900\": \"color-mix(in srgb, #a6da95 30%, #24273a)\",\n \"--dsw-static-neutral-00\": \"#cad3f5\",\n \"--dsw-static-neutral-1000\": \"#181926\",\n \"--dsw-static-neutral-100\": \"#a5adcb\",\n \"--dsw-static-neutral-150\": \"#a5adcb\",\n \"--dsw-static-neutral-200\": \"#939ab7\",\n \"--dsw-static-neutral-250\": \"#939ab7\",\n \"--dsw-static-neutral-300\": \"#8087a2\",\n \"--dsw-static-neutral-400\": \"#6e738d\",\n \"--dsw-static-neutral-500\": \"#5b6078\",\n \"--dsw-static-neutral-50\": \"#cad3f5\",\n \"--dsw-static-neutral-550\": \"#494d64\",\n \"--dsw-static-neutral-600\": \"#494d64\",\n \"--dsw-static-neutral-700\": \"#363a4f\",\n \"--dsw-static-neutral-800\": \"#363a4f\",\n \"--dsw-static-neutral-850\": \"#24273a\",\n \"--dsw-static-neutral-900\": \"#1e2030\",\n \"--dsw-static-neutral-bluish-00\": \"#cad3f5\",\n \"--dsw-static-neutral-bluish-1000\": \"#181926\",\n \"--dsw-static-neutral-bluish-100\": \"#a5adcb\",\n \"--dsw-static-neutral-bluish-150\": \"#a5adcb\",\n \"--dsw-static-neutral-bluish-200\": \"#939ab7\",\n \"--dsw-static-neutral-bluish-300\": \"#8087a2\",\n \"--dsw-static-neutral-bluish-400\": \"#6e738d\",\n \"--dsw-static-neutral-bluish-500\": \"#5b6078\",\n \"--dsw-static-neutral-bluish-50\": \"#cad3f5\",\n \"--dsw-static-neutral-bluish-600\": \"#494d64\",\n \"--dsw-static-neutral-bluish-60\": \"#b8c0e0\",\n \"--dsw-static-neutral-bluish-700\": \"#363a4f\",\n \"--dsw-static-neutral-bluish-750\": \"#363a4f\",\n \"--dsw-static-neutral-bluish-75\": \"#b8c0e0\",\n \"--dsw-static-neutral-bluish-800\": \"#363a4f\",\n \"--dsw-static-neutral-bluish-850\": \"#24273a\",\n \"--dsw-static-neutral-bluish-875\": \"#1e2030\",\n \"--dsw-static-neutral-bluish-900\": \"#1e2030\",\n \"--dsw-static-neutral-bluish-950\": \"#181926\",\n \"--dsw-static-red-100\": \"color-mix(in srgb, #ed8796 20%, #24273a)\",\n \"--dsw-static-red-400\": \"color-mix(in srgb, #ed8796 70%, #24273a)\",\n \"--dsw-static-red-500\": \"#ed8796\",\n \"--dsw-static-red-50\": \"color-mix(in srgb, #ed8796 10%, #24273a)\",\n \"--dsw-static-red-600\": \"#ed8796\",\n \"--dsw-static-red-900\": \"color-mix(in srgb, #ed8796 34%, #24273a)\",\n \"--dsw-alias-bg-base\": \"var(--dsw-static-neutral-bluish-950)\",\n \"--dsw-alias-bg-layer-1\": \"var(--dsw-static-neutral-bluish-875)\",\n \"--dsw-alias-bg-layer-2\": \"var(--dsw-static-neutral-bluish-850)\",\n \"--dsw-alias-bg-layer-3\": \"var(--dsw-static-neutral-bluish-800)\",\n \"--dsw-alias-bg-mask-1\": \"rgba(0, 0, 0, 0.5)\",\n \"--dsw-alias-bg-mask-2\": \"rgba(0, 0, 0, 0.2)\",\n \"--dsw-alias-bg-mask-3\": \"rgba(0, 0, 0, 0.48)\",\n \"--dsw-alias-bg-mask-photo\": \"rgba(0, 0, 0, 0.88)\",\n \"--dsw-alias-bg-mask-drop\": \"rgba(39, 39, 48, 0.7)\",\n \"--dsw-alias-bg-module-platform\": \"var(--dsw-static-neutral-bluish-800)\",\n \"--dsw-alias-bg-multi-select\": \"var(--dsw-static-neutral-850)\",\n \"--dsw-alias-bg-overlay\": \"var(--dsw-static-neutral-bluish-700)\",\n \"--dsw-alias-bg-skeleton\": \"rgba(255, 255, 255, 0.08)\",\n \"--dsw-alias-border-inverted2\": \"rgba(255, 255, 255, 0.08)\",\n \"--dsw-alias-border-inverted\": \"rgba(255, 255, 255, 0.06)\",\n \"--dsw-alias-border-l1\": \"rgba(255, 255, 255, 0.06)\",\n \"--dsw-alias-border-l2-darkmode-thin\": \"rgba(255, 255, 255, 0.06)\",\n \"--dsw-alias-border-l2\": \"rgba(255, 255, 255, 0.12)\",\n \"--dsw-alias-border-l3\": \"rgba(255, 255, 255, 0.16)\",\n \"--dsw-alias-border-l4\": \"rgba(255, 255, 255, 0.2)\",\n \"--dsw-alias-brand-primary-invert\": \"var(--dsw-static-neutral-bluish-50)\",\n \"--dsw-alias-brand-primary-new-colorprimary-new-color\": \"#8aadf4\",\n \"--dsw-alias-brand-primary\": \"var(--dsw-static-neutral-bluish-50)\",\n \"--dsw-alias-brand-text\": \"var(--dsw-static-neutral-bluish-50)\",\n \"--dsw-alias-button-contrast-fill\": \"var(--dsw-static-neutral-bluish-50)\",\n \"--dsw-alias-button-elevated-fill\": \"var(--dsw-static-neutral-bluish-750)\",\n \"--dsw-alias-button-floating-fill\": \"var(--dsw-static-neutral-bluish-850)\",\n \"--dsw-alias-button-floating-hover\": \"var(--dsw-static-neutral-bluish-800)\",\n \"--dsw-alias-button-ghost-active-border\": \"var(--dsw-static-neutral-bluish-600)\",\n \"--dsw-alias-button-ghost-active-fill\": \"var(--dsw-static-neutral-bluish-750)\",\n \"--dsw-alias-button-ghost-active-hover\": \"var(--dsw-static-neutral-bluish-700)\",\n \"--dsw-alias-button-info-fill\": \"var(--dsw-static-deepseek-400)\",\n \"--dsw-alias-button-info-hover\": \"var(--dsw-static-deepseek-500)\",\n \"--dsw-alias-button-primary-dimmed\": \"var(--dsw-static-neutral-bluish-750)\",\n \"--dsw-alias-button-primary-fill\": \"var(--dsw-alias-brand-primary)\",\n \"--dsw-alias-button-primary-hover\": \"var(--dsw-static-neutral-bluish-100)\",\n \"--dsw-alias-button-tool-bar-fill-invisible\": \"rgba(31, 31, 31, 0.36)\",\n \"--dsw-alias-button-tool-bar-fill\": \"rgba(84, 85, 87, 0.5)\",\n \"--dsw-alias-button-tool-bar-hover\": \"rgba(84, 85, 87, 0.6)\",\n \"--dsw-alias-interactive-bg-active\": \"rgba(255, 255, 255, 0.14)\",\n \"--dsw-alias-interactive-bg-hover-accent\": \"rgba(255, 255, 255, 0.24)\",\n \"--dsw-alias-interactive-bg-hover-danger\": \"rgba(242, 90, 90, 0.15)\",\n \"--dsw-alias-interactive-bg-hover-solid\": \"var(--dsw-static-neutral-bluish-800)\",\n \"--dsw-alias-interactive-bg-hover\": \"rgba(255, 255, 255, 0.08)\",\n \"--dsw-alias-label-caption\": \"var(--dsw-static-neutral-bluish-600)\",\n \"--dsw-alias-label-dimmed\": \"var(--dsw-static-neutral-bluish-750)\",\n \"--dsw-alias-label-primary-bluish\": \"var(--dsw-static-neutral-bluish-50)\",\n \"--dsw-alias-label-primary-dimmed\": \"var(--dsw-static-neutral-bluish-100)\",\n \"--dsw-alias-label-primary-foreground\": \"var(--dsw-static-neutral-bluish-1000)\",\n \"--dsw-alias-label-primary-inverted\": \"var(--dsw-static-neutral-bluish-800)\",\n \"--dsw-alias-label-primary\": \"var(--dsw-static-neutral-bluish-50)\",\n \"--dsw-alias-label-secondary\": \"var(--dsw-static-neutral-bluish-300)\",\n \"--dsw-alias-label-tertiary\": \"var(--dsw-static-neutral-bluish-400)\",\n \"--dsw-alias-markdown-citation\": \"var(--dsw-static-neutral-bluish-800)\",\n \"--dsw-alias-markdown-code-block-banner\": \"var(--dsw-static-neutral-bluish-850)\",\n \"--dsw-alias-markdown-code-block\": \"var(--dsw-static-neutral-bluish-900)\",\n \"--dsw-alias-markdown-code-segment-selected\": \"var(--dsw-static-neutral-bluish-800)\",\n \"--dsw-alias-markdown-code-segment-unselected\": \"var(--dsw-static-neutral-bluish-900)\",\n \"--dsw-alias-markdown-inline-code\": \"var(--dsw-static-neutral-bluish-850)\",\n \"--dsw-alias-markdown-placeholder\": \"var(--dsw-static-neutral-bluish-850)\",\n \"--dsw-alias-markdown-tag\": \"var(--dsw-static-neutral-bluish-850)\",\n \"--dsw-alias-scrollbar-bg-l1\": \"var(--dsw-static-neutral-700)\",\n \"--dsw-alias-scrollbar-bg-l2\": \"var(--dsw-static-neutral-600)\",\n \"--dsw-alias-scrollbar-hover-l1\": \"var(--dsw-static-neutral-600)\",\n \"--dsw-alias-scrollbar-hover-l2\": \"var(--dsw-static-neutral-550)\",\n \"--dsw-alias-state-business-primary\": \"var(--dsw-static-deepseek-400)\",\n \"--dsw-alias-state-business-tertiary\": \"var(--dsw-static-deepseek-800)\",\n \"--dsw-alias-state-error-primary\": \"var(--dsw-static-red-400)\",\n \"--dsw-alias-state-error-secondary\": \"var(--dsw-static-red-400)\",\n \"--dsw-alias-state-success-primary\": \"var(--dsw-static-green-500)\",\n \"--dsw-alias-state-success-secondary\": \"var(--dsw-static-green-400)\",\n \"--dsw-alias-state-success-tertiary\": \"var(--dsw-static-green-900)\",\n \"--dsw-alias-state-warn-label\": \"var(--dsw-static-amber-600)\",\n \"--dsw-alias-state-warn-primary\": \"var(--dsw-static-amber-500)\",\n \"--dsw-alias-state-warn-secondary\": \"var(--dsw-static-amber-400)\",\n \"--dsw-alias-state-warn-tertiary\": \"var(--dsw-static-amber-900)\",\n \"--dsw-alias-toast-bg\": \"var(--dsw-static-neutral-bluish-750)\",\n \"--dsw-alias-tooltip-bg\": \"var(--dsw-static-neutral-bluish-750)\",\n \"--dsw-specific-bubble-highlight\": \"var(--dsw-static-neutral-bluish-750)\",\n \"--dsw-specific-bubble\": \"var(--dsw-static-neutral-bluish-850)\",\n \"--dsw-specific-input-major\": \"var(--dsw-static-neutral-bluish-850)\",\n \"--dsw-specific-login-input\": \"var(--dsw-static-neutral-bluish-900)\",\n \"--dsw-specific-menu\": \"var(--dsw-alias-bg-layer-3)\",\n \"--dsw-specific-selector\": \"var(--dsw-static-neutral-bluish-800)\",\n \"--dsw-specific-sidebar-fill\": \"var(--dsw-static-neutral-bluish-900)\",\n \"--dsw-specific-sidebar-nav-item-active-accent\": \"var(--dsw-static-neutral-bluish-800)\",\n \"--dsw-specific-sidebar-nav-item-active\": \"var(--dsw-static-neutral-bluish-750)\",\n \"--dsw-specific-sidebar-nav-item-hover\": \"var(--dsw-static-neutral-bluish-850)\",\n \"--dsw-specific-tip\": \"var(--dsw-static-neutral-bluish-800)\",\n },\n}\n\nexport const CATPPUCCIN_MOCHA: CatppuccinFlavorInfo = {\n themeId: 'catppuccin-mocha',\n colorScheme: 'dark',\n label: 'Mocha',\n accent: '#89b4fa',\n tokens: {\n \"--dsw-static-amber-100\": \"color-mix(in srgb, #fab387 20%, #1e1e2e)\",\n \"--dsw-static-amber-400\": \"#f9e2af\",\n \"--dsw-static-amber-500\": \"#fab387\",\n \"--dsw-static-amber-600\": \"#fab387\",\n \"--dsw-static-amber-900\": \"color-mix(in srgb, #fab387 32%, #1e1e2e)\",\n \"--dsw-static-blue-100\": \"color-mix(in srgb, #89b4fa 24%, #1e1e2e)\",\n \"--dsw-static-blue-300\": \"color-mix(in srgb, #89b4fa 50%, #1e1e2e)\",\n \"--dsw-static-blue-400\": \"color-mix(in srgb, #89b4fa 66%, #1e1e2e)\",\n \"--dsw-static-blue-450\": \"color-mix(in srgb, #89b4fa 84%, #1e1e2e)\",\n \"--dsw-static-blue-500\": \"#89b4fa\",\n \"--dsw-static-blue-50\": \"color-mix(in srgb, #89b4fa 10%, #1e1e2e)\",\n \"--dsw-static-blue-50p\": \"color-mix(in srgb, #89b4fa 14%, #1e1e2e)\",\n \"--dsw-static-blue-600\": \"color-mix(in srgb, #89b4fa 84%, #1e1e2e)\",\n \"--dsw-static-blue-75\": \"color-mix(in srgb, #89b4fa 18%, #1e1e2e)\",\n \"--dsw-static-blue-800\": \"color-mix(in srgb, #89b4fa 52%, #1e1e2e)\",\n \"--dsw-static-blue-900\": \"color-mix(in srgb, #89b4fa 40%, #1e1e2e)\",\n \"--dsw-static-blue-950\": \"color-mix(in srgb, #89b4fa 28%, #1e1e2e)\",\n \"--dsw-static-deepseek-100\": \"color-mix(in srgb, #89b4fa 24%, #1e1e2e)\",\n \"--dsw-static-deepseek-200\": \"color-mix(in srgb, #89b4fa 36%, #1e1e2e)\",\n \"--dsw-static-deepseek-300\": \"color-mix(in srgb, #89b4fa 50%, #1e1e2e)\",\n \"--dsw-static-deepseek-400\": \"color-mix(in srgb, #89b4fa 66%, #1e1e2e)\",\n \"--dsw-static-deepseek-450\": \"color-mix(in srgb, #89b4fa 84%, #1e1e2e)\",\n \"--dsw-static-deepseek-500\": \"#89b4fa\",\n \"--dsw-static-deepseek-50\": \"color-mix(in srgb, #89b4fa 10%, #1e1e2e)\",\n \"--dsw-static-deepseek-600\": \"color-mix(in srgb, #89b4fa 84%, #1e1e2e)\",\n \"--dsw-static-deepseek-700-delete\": \"color-mix(in srgb, #89b4fa 68%, #1e1e2e)\",\n \"--dsw-static-deepseek-800\": \"color-mix(in srgb, #89b4fa 52%, #1e1e2e)\",\n \"--dsw-static-deepseek-900\": \"color-mix(in srgb, #89b4fa 40%, #1e1e2e)\",\n \"--dsw-static-green-100\": \"color-mix(in srgb, #a6e3a1 18%, #1e1e2e)\",\n \"--dsw-static-green-400\": \"color-mix(in srgb, #a6e3a1 80%, #1e1e2e)\",\n \"--dsw-static-green-500\": \"#a6e3a1\",\n \"--dsw-static-green-900\": \"color-mix(in srgb, #a6e3a1 30%, #1e1e2e)\",\n \"--dsw-static-neutral-00\": \"#cdd6f4\",\n \"--dsw-static-neutral-1000\": \"#11111b\",\n \"--dsw-static-neutral-100\": \"#a6adc8\",\n \"--dsw-static-neutral-150\": \"#a6adc8\",\n \"--dsw-static-neutral-200\": \"#9399b2\",\n \"--dsw-static-neutral-250\": \"#9399b2\",\n \"--dsw-static-neutral-300\": \"#7f849c\",\n \"--dsw-static-neutral-400\": \"#6c7086\",\n \"--dsw-static-neutral-500\": \"#585b70\",\n \"--dsw-static-neutral-50\": \"#cdd6f4\",\n \"--dsw-static-neutral-550\": \"#45475a\",\n \"--dsw-static-neutral-600\": \"#45475a\",\n \"--dsw-static-neutral-700\": \"#313244\",\n \"--dsw-static-neutral-800\": \"#313244\",\n \"--dsw-static-neutral-850\": \"#1e1e2e\",\n \"--dsw-static-neutral-900\": \"#181825\",\n \"--dsw-static-neutral-bluish-00\": \"#cdd6f4\",\n \"--dsw-static-neutral-bluish-1000\": \"#11111b\",\n \"--dsw-static-neutral-bluish-100\": \"#a6adc8\",\n \"--dsw-static-neutral-bluish-150\": \"#a6adc8\",\n \"--dsw-static-neutral-bluish-200\": \"#9399b2\",\n \"--dsw-static-neutral-bluish-300\": \"#7f849c\",\n \"--dsw-static-neutral-bluish-400\": \"#6c7086\",\n \"--dsw-static-neutral-bluish-500\": \"#585b70\",\n \"--dsw-static-neutral-bluish-50\": \"#cdd6f4\",\n \"--dsw-static-neutral-bluish-600\": \"#45475a\",\n \"--dsw-static-neutral-bluish-60\": \"#bac2de\",\n \"--dsw-static-neutral-bluish-700\": \"#313244\",\n \"--dsw-static-neutral-bluish-750\": \"#313244\",\n \"--dsw-static-neutral-bluish-75\": \"#bac2de\",\n \"--dsw-static-neutral-bluish-800\": \"#313244\",\n \"--dsw-static-neutral-bluish-850\": \"#1e1e2e\",\n \"--dsw-static-neutral-bluish-875\": \"#181825\",\n \"--dsw-static-neutral-bluish-900\": \"#181825\",\n \"--dsw-static-neutral-bluish-950\": \"#11111b\",\n \"--dsw-static-red-100\": \"color-mix(in srgb, #f38ba8 20%, #1e1e2e)\",\n \"--dsw-static-red-400\": \"color-mix(in srgb, #f38ba8 70%, #1e1e2e)\",\n \"--dsw-static-red-500\": \"#f38ba8\",\n \"--dsw-static-red-50\": \"color-mix(in srgb, #f38ba8 10%, #1e1e2e)\",\n \"--dsw-static-red-600\": \"#f38ba8\",\n \"--dsw-static-red-900\": \"color-mix(in srgb, #f38ba8 34%, #1e1e2e)\",\n \"--dsw-alias-bg-base\": \"var(--dsw-static-neutral-bluish-950)\",\n \"--dsw-alias-bg-layer-1\": \"var(--dsw-static-neutral-bluish-875)\",\n \"--dsw-alias-bg-layer-2\": \"var(--dsw-static-neutral-bluish-850)\",\n \"--dsw-alias-bg-layer-3\": \"var(--dsw-static-neutral-bluish-800)\",\n \"--dsw-alias-bg-mask-1\": \"rgba(0, 0, 0, 0.5)\",\n \"--dsw-alias-bg-mask-2\": \"rgba(0, 0, 0, 0.2)\",\n \"--dsw-alias-bg-mask-3\": \"rgba(0, 0, 0, 0.48)\",\n \"--dsw-alias-bg-mask-photo\": \"rgba(0, 0, 0, 0.88)\",\n \"--dsw-alias-bg-mask-drop\": \"rgba(39, 39, 48, 0.7)\",\n \"--dsw-alias-bg-module-platform\": \"var(--dsw-static-neutral-bluish-800)\",\n \"--dsw-alias-bg-multi-select\": \"var(--dsw-static-neutral-850)\",\n \"--dsw-alias-bg-overlay\": \"var(--dsw-static-neutral-bluish-700)\",\n \"--dsw-alias-bg-skeleton\": \"rgba(255, 255, 255, 0.08)\",\n \"--dsw-alias-border-inverted2\": \"rgba(255, 255, 255, 0.08)\",\n \"--dsw-alias-border-inverted\": \"rgba(255, 255, 255, 0.06)\",\n \"--dsw-alias-border-l1\": \"rgba(255, 255, 255, 0.06)\",\n \"--dsw-alias-border-l2-darkmode-thin\": \"rgba(255, 255, 255, 0.06)\",\n \"--dsw-alias-border-l2\": \"rgba(255, 255, 255, 0.12)\",\n \"--dsw-alias-border-l3\": \"rgba(255, 255, 255, 0.16)\",\n \"--dsw-alias-border-l4\": \"rgba(255, 255, 255, 0.2)\",\n \"--dsw-alias-brand-primary-invert\": \"var(--dsw-static-neutral-bluish-50)\",\n \"--dsw-alias-brand-primary-new-colorprimary-new-color\": \"#89b4fa\",\n \"--dsw-alias-brand-primary\": \"var(--dsw-static-neutral-bluish-50)\",\n \"--dsw-alias-brand-text\": \"var(--dsw-static-neutral-bluish-50)\",\n \"--dsw-alias-button-contrast-fill\": \"var(--dsw-static-neutral-bluish-50)\",\n \"--dsw-alias-button-elevated-fill\": \"var(--dsw-static-neutral-bluish-750)\",\n \"--dsw-alias-button-floating-fill\": \"var(--dsw-static-neutral-bluish-850)\",\n \"--dsw-alias-button-floating-hover\": \"var(--dsw-static-neutral-bluish-800)\",\n \"--dsw-alias-button-ghost-active-border\": \"var(--dsw-static-neutral-bluish-600)\",\n \"--dsw-alias-button-ghost-active-fill\": \"var(--dsw-static-neutral-bluish-750)\",\n \"--dsw-alias-button-ghost-active-hover\": \"var(--dsw-static-neutral-bluish-700)\",\n \"--dsw-alias-button-info-fill\": \"var(--dsw-static-deepseek-400)\",\n \"--dsw-alias-button-info-hover\": \"var(--dsw-static-deepseek-500)\",\n \"--dsw-alias-button-primary-dimmed\": \"var(--dsw-static-neutral-bluish-750)\",\n \"--dsw-alias-button-primary-fill\": \"var(--dsw-alias-brand-primary)\",\n \"--dsw-alias-button-primary-hover\": \"var(--dsw-static-neutral-bluish-100)\",\n \"--dsw-alias-button-tool-bar-fill-invisible\": \"rgba(31, 31, 31, 0.36)\",\n \"--dsw-alias-button-tool-bar-fill\": \"rgba(84, 85, 87, 0.5)\",\n \"--dsw-alias-button-tool-bar-hover\": \"rgba(84, 85, 87, 0.6)\",\n \"--dsw-alias-interactive-bg-active\": \"rgba(255, 255, 255, 0.14)\",\n \"--dsw-alias-interactive-bg-hover-accent\": \"rgba(255, 255, 255, 0.24)\",\n \"--dsw-alias-interactive-bg-hover-danger\": \"rgba(242, 90, 90, 0.15)\",\n \"--dsw-alias-interactive-bg-hover-solid\": \"var(--dsw-static-neutral-bluish-800)\",\n \"--dsw-alias-interactive-bg-hover\": \"rgba(255, 255, 255, 0.08)\",\n \"--dsw-alias-label-caption\": \"var(--dsw-static-neutral-bluish-600)\",\n \"--dsw-alias-label-dimmed\": \"var(--dsw-static-neutral-bluish-750)\",\n \"--dsw-alias-label-primary-bluish\": \"var(--dsw-static-neutral-bluish-50)\",\n \"--dsw-alias-label-primary-dimmed\": \"var(--dsw-static-neutral-bluish-100)\",\n \"--dsw-alias-label-primary-foreground\": \"var(--dsw-static-neutral-bluish-1000)\",\n \"--dsw-alias-label-primary-inverted\": \"var(--dsw-static-neutral-bluish-800)\",\n \"--dsw-alias-label-primary\": \"var(--dsw-static-neutral-bluish-50)\",\n \"--dsw-alias-label-secondary\": \"var(--dsw-static-neutral-bluish-300)\",\n \"--dsw-alias-label-tertiary\": \"var(--dsw-static-neutral-bluish-400)\",\n \"--dsw-alias-markdown-citation\": \"var(--dsw-static-neutral-bluish-800)\",\n \"--dsw-alias-markdown-code-block-banner\": \"var(--dsw-static-neutral-bluish-850)\",\n \"--dsw-alias-markdown-code-block\": \"var(--dsw-static-neutral-bluish-900)\",\n \"--dsw-alias-markdown-code-segment-selected\": \"var(--dsw-static-neutral-bluish-800)\",\n \"--dsw-alias-markdown-code-segment-unselected\": \"var(--dsw-static-neutral-bluish-900)\",\n \"--dsw-alias-markdown-inline-code\": \"var(--dsw-static-neutral-bluish-850)\",\n \"--dsw-alias-markdown-placeholder\": \"var(--dsw-static-neutral-bluish-850)\",\n \"--dsw-alias-markdown-tag\": \"var(--dsw-static-neutral-bluish-850)\",\n \"--dsw-alias-scrollbar-bg-l1\": \"var(--dsw-static-neutral-700)\",\n \"--dsw-alias-scrollbar-bg-l2\": \"var(--dsw-static-neutral-600)\",\n \"--dsw-alias-scrollbar-hover-l1\": \"var(--dsw-static-neutral-600)\",\n \"--dsw-alias-scrollbar-hover-l2\": \"var(--dsw-static-neutral-550)\",\n \"--dsw-alias-state-business-primary\": \"var(--dsw-static-deepseek-400)\",\n \"--dsw-alias-state-business-tertiary\": \"var(--dsw-static-deepseek-800)\",\n \"--dsw-alias-state-error-primary\": \"var(--dsw-static-red-400)\",\n \"--dsw-alias-state-error-secondary\": \"var(--dsw-static-red-400)\",\n \"--dsw-alias-state-success-primary\": \"var(--dsw-static-green-500)\",\n \"--dsw-alias-state-success-secondary\": \"var(--dsw-static-green-400)\",\n \"--dsw-alias-state-success-tertiary\": \"var(--dsw-static-green-900)\",\n \"--dsw-alias-state-warn-label\": \"var(--dsw-static-amber-600)\",\n \"--dsw-alias-state-warn-primary\": \"var(--dsw-static-amber-500)\",\n \"--dsw-alias-state-warn-secondary\": \"var(--dsw-static-amber-400)\",\n \"--dsw-alias-state-warn-tertiary\": \"var(--dsw-static-amber-900)\",\n \"--dsw-alias-toast-bg\": \"var(--dsw-static-neutral-bluish-750)\",\n \"--dsw-alias-tooltip-bg\": \"var(--dsw-static-neutral-bluish-750)\",\n \"--dsw-specific-bubble-highlight\": \"var(--dsw-static-neutral-bluish-750)\",\n \"--dsw-specific-bubble\": \"var(--dsw-static-neutral-bluish-850)\",\n \"--dsw-specific-input-major\": \"var(--dsw-static-neutral-bluish-850)\",\n \"--dsw-specific-login-input\": \"var(--dsw-static-neutral-bluish-900)\",\n \"--dsw-specific-menu\": \"var(--dsw-alias-bg-layer-3)\",\n \"--dsw-specific-selector\": \"var(--dsw-static-neutral-bluish-800)\",\n \"--dsw-specific-sidebar-fill\": \"var(--dsw-static-neutral-bluish-900)\",\n \"--dsw-specific-sidebar-nav-item-active-accent\": \"var(--dsw-static-neutral-bluish-800)\",\n \"--dsw-specific-sidebar-nav-item-active\": \"var(--dsw-static-neutral-bluish-750)\",\n \"--dsw-specific-sidebar-nav-item-hover\": \"var(--dsw-static-neutral-bluish-850)\",\n \"--dsw-specific-tip\": \"var(--dsw-static-neutral-bluish-800)\",\n },\n}\n\nexport const CATPPUCCIN_FLAVORS: readonly CatppuccinFlavorInfo[] = [\n CATPPUCCIN_LATTE,\n CATPPUCCIN_FRAPPE,\n CATPPUCCIN_MACCHIATO,\n CATPPUCCIN_MOCHA,\n]\n","/**\n * Runtime seam stamper for the Catppuccin glass layer.\n *\n * The glass stylesheet keys off stable data-* hooks (`data-dsh-glass-frame`,\n * `data-dsh-glass-trajectory`, `data-dsh-glass-stats`, …) that are NOT part\n * of the stock DSH markup, so this module stamps them onto the matching\n * elements at runtime — the stylesheet works with zero base edits. Each\n * selector uses only stable attributes already present in the stock UI\n * (`data-composer-card`, `data-conversation-composer-overlay`, `data-slot`,\n * ARIA roles) or lightningcss-preserved class-name substrings.\n *\n * Stamps are idempotent and inert without the `data-dsh-glass` root attribute\n * (the whole stylesheet is gated on it), so they are simply left in place when\n * the layer flips off — \"off\" still renders the exact stock UI.\n */\n\ninterface Seam {\n /** Attribute to stamp (bare name; value is always ''). */\n readonly attribute: string\n /** CSS selector for the element(s) to stamp. */\n readonly selector: string\n /** Stamp only the first (topmost) match, not every descendant match. */\n readonly first?: boolean\n}\n\nconst SEAMS: readonly Seam[] = [\n // The layout frame: the sidebar column's direct parent.\n { attribute: 'data-dsh-glass-frame', selector: ':has(> [class*=\"sidebarCol\"])' },\n // The sidebar content root (topmost `root` under the column — settings\n // internals also carry a `root` class but sit deeper, so first match wins).\n { attribute: 'data-dsh-glass-sidebar-root', selector: '[class*=\"sidebarCol\"] [class*=\"root\"]', first: true },\n // New-session button (a raised-surface seam).\n { attribute: 'data-dsh-glass-surface', selector: 'button[class*=\"newSession\"]' },\n // Trajectory view (the composer-overlay view).\n { attribute: 'data-dsh-glass-trajectory', selector: '[data-conversation-composer-overlay]' },\n // Details panel (topmost `root` under the details column).\n { attribute: 'data-dsh-glass-details', selector: '[class*=\"detailsCol\"] [class*=\"root\"]', first: true },\n // Composer bar root: the composer card's direct parent.\n { attribute: 'data-dsh-glass-inputbar', selector: ':has(> [data-composer-card])' },\n // Composer attach \"+\" button.\n { attribute: 'data-dsh-glass-add', selector: '[data-composer-card] [class*=\"add\"]' },\n // Session stats line under the composer (composer.dock slot).\n { attribute: 'data-dsh-glass-stats', selector: '[data-slot=\"conversation.composer.dock\"] [class*=\"root\"]' },\n]\n\nfunction stamp(seam: Seam): void {\n if (seam.first) {\n const el = document.querySelector(seam.selector)\n if (el !== null && !el.hasAttribute(seam.attribute)) el.setAttribute(seam.attribute, '')\n return\n }\n for (const el of document.querySelectorAll(seam.selector)) {\n if (!el.hasAttribute(seam.attribute)) el.setAttribute(seam.attribute, '')\n }\n}\n\nfunction stampAll(): void {\n for (const seam of SEAMS) stamp(seam)\n}\n\n/**\n * Stamp the seams once, then keep them stamped as React remounts nodes.\n * @returns a disposer that disconnects the observer.\n */\nexport function startGlassSeamStamper(): () => void {\n stampAll()\n const observer = new MutationObserver(() => { stampAll() })\n observer.observe(document.documentElement, { childList: true, subtree: true })\n return () => { observer.disconnect() }\n}\n","/**\n * Catppuccin glass layer — one toggleable glassmorphism skin over the whole\n * Web surface, riding on top of the Catppuccin themes. Everything the layer\n * owns is an effect: the CSS hooks ride a `data-dsh-glass` attribute on\n * <html> (the stylesheet only applies under it), the seam stamps ride a\n * MutationObserver, and the ambient backdrop is a DOM element — so switching\n * the flag off (or unloading the plugin) restores the stock UI exactly: no\n * residue, no reload.\n *\n * The enable flag and every knob persist in localStorage: client-only visual\n * preferences (like the selected-session key), written and read by this\n * plugin alone, so the layer needs no host configuration.\n */\nimport type { Context } from '@deepseek-ai/cordis'\n// Type-only: pulls the theme plugin's Context merge (ctx.theme + theme/change).\nimport type {} from '@deepseek-ai/dsh-client-ui-theme/client'\nimport { startGlassSeamStamper } from './glass-seams.ts'\n\n/** html attribute selecting the glass layer: CSS hooks and ambient effects. */\nexport const GLASS_ATTRIBUTE = 'data-dsh-glass'\n\n/** html attribute selecting the mica (floating-card) layout rules. */\nexport const GLASS_FLOAT_ATTRIBUTE = 'data-dsh-glass-float'\n\n/** html attribute selecting the compatibility (stock-layout) rules. */\nexport const GLASS_COMPAT_ATTRIBUTE = 'data-dsh-glass-compat'\n\n/** localStorage key carrying the layer enable flag. */\nexport const GLASS_ENABLED_KEY = 'dsh.catppuccin.glass.enabled'\n\n/** Default state when nothing is stored yet: off (the stock UI stays stock). */\nexport const DEFAULT_ENABLED = false\n\n/** Tunable glass knobs. */\nexport interface GlassSettings {\n /** Rendering mode: mica (frosted floating cards) or the stock layout with a generic glass material. */\n mode: 'mica' | 'compat'\n /** Glass backdrop blur radius, px. */\n blur: number\n /** Glass fill opacity, 0-100 (50 = the shipped look; drives the frost multiplier). */\n frost: number\n /** Backdrop brightness, 0-100 (0 = pure black, 50 = transparent, 100 = pure white; half-range per scheme). */\n brightness: number\n /** Ambient hue shift, degrees. */\n hue: number\n}\n\n/** The full state the settings row mirrors (settings + enable flag + scheme). */\nexport interface GlassRowState extends GlassSettings {\n /** Layer enable flag. */\n enabled: boolean\n /** Resolved palette is dark (the brightness knob darkens). */\n dark: boolean\n}\n\nconst SETTINGS_DEFAULTS: GlassSettings = {\n mode: 'mica',\n blur: 14,\n frost: 50,\n brightness: 50,\n hue: 0,\n}\n\n/** Numeric knob keys and their localStorage names. */\nconst NUMERIC_KEYS = {\n blur: 'dsh.catppuccin.glass.blur',\n frost: 'dsh.catppuccin.glass.frost',\n brightness: 'dsh.catppuccin.glass.brightness',\n hue: 'dsh.catppuccin.glass.hue',\n} as const\ntype NumericKey = keyof typeof NUMERIC_KEYS\n\nconst MODE_KEY = 'dsh.catppuccin.glass.mode'\n\n/** Clamp a numeric knob into its sane range. */\nfunction clampSetting(key: NumericKey, value: number): number {\n const max = key === 'blur' ? 40\n : key === 'frost' || key === 'brightness' ? 100\n : 360\n return Number.isFinite(value) ? Math.min(max, Math.max(0, value)) : SETTINGS_DEFAULTS[key]\n}\n\n/** Read one numeric knob from localStorage (absent/parse failure means the default). */\nfunction readSetting(key: NumericKey): number {\n try {\n const raw = localStorage.getItem(NUMERIC_KEYS[key])\n return raw === null ? SETTINGS_DEFAULTS[key] : clampSetting(key, Number(raw))\n } catch {\n return SETTINGS_DEFAULTS[key]\n }\n}\n\n/** Persist one numeric knob (storage failures keep the in-memory state). */\nfunction writeSetting(key: NumericKey, value: number): void {\n try {\n localStorage.setItem(NUMERIC_KEYS[key], String(value))\n } catch {\n /* in-memory state still applies for this tab */\n }\n}\n\n/** Read the rendering mode ('mica' or 'compat'). */\nfunction readMode(): 'mica' | 'compat' {\n try {\n return localStorage.getItem(MODE_KEY) === 'compat' ? 'compat' : 'mica'\n } catch {\n return 'mica'\n }\n}\n\n/** Persist the rendering mode. */\nfunction writeMode(value: 'mica' | 'compat'): void {\n try {\n localStorage.setItem(MODE_KEY, value)\n } catch {\n /* in-memory state still applies */\n }\n}\n\n/** Read the persisted enable flag (absent storage means the default). */\nfunction readEnabled(): boolean {\n try {\n const raw = localStorage.getItem(GLASS_ENABLED_KEY)\n return raw === null ? DEFAULT_ENABLED : raw === 'true'\n } catch {\n return DEFAULT_ENABLED\n }\n}\n\n/** Persist the enable flag (storage failures keep the in-memory state). */\nfunction writeEnabled(value: boolean): void {\n try {\n localStorage.setItem(GLASS_ENABLED_KEY, String(value))\n } catch {\n /* in-memory state still applies for this tab */\n }\n}\n\n/** Resolved scheme from the theme service (falls back to the body attribute). */\nfunction resolveDark(ctx: Context): boolean {\n try {\n return ctx.theme.getTheme().active.colorScheme === 'dark'\n } catch {\n return document.body.hasAttribute('data-ds-dark-theme')\n }\n}\n\n/**\n * The ambient backdrop markup injected while enabled (CSS-only, no WebGL):\n * the living backdrop plus the two page-edge fade bands that blur the chat\n * content melting into the viewport edges (ported from\n * DSH-Transparent-UI-Plugin). All three are fixed-position, click-through,\n * and removed together on disable.\n */\nconst AMBIENT_MARKUP = [\n '<div data-dsh-glass-ambient aria-hidden=\"true\">',\n ' <span data-dsh-glass-blob=\"1\"></span>',\n ' <span data-dsh-glass-blob=\"2\"></span>',\n ' <span data-dsh-glass-blob=\"3\"></span>',\n '</div>',\n '<span data-dsh-glass-fade=\"top\" aria-hidden=\"true\"></span>',\n '<span data-dsh-glass-fade=\"bottom\" aria-hidden=\"true\"></span>',\n].join('')\n\n/**\n * Owns the glass layer lifecycle: reads the durable enable flag and knobs,\n * and applies / retracts every layer on change. Cross-tab flips arrive through\n * the storage event; the seam observer and every subscription are released\n * when the plugin fiber is disposed.\n */\nexport class GlassLayer {\n private enabled = false\n private settings: GlassSettings = { ...SETTINGS_DEFAULTS }\n /** Cached snapshot for the settings row (stable reference between changes). */\n private snapshot: GlassRowState\n private readonly listeners = new Set<() => void>()\n private dark = false\n private seamDisposer: (() => void) | undefined\n private readonly ctx: Context\n\n /**\n * @param ctx - owning client context (listeners ride this fiber).\n */\n constructor(ctx: Context) {\n this.ctx = ctx\n this.enabled = readEnabled()\n this.reloadSettings()\n this.dark = resolveDark(ctx)\n this.snapshot = this.buildSnapshot()\n\n ctx.effect(() => {\n const onStorage = (event: StorageEvent): void => {\n if (event.key === null) { this.reloadSettings(); this.enabled = readEnabled(); this.sync() }\n else if (event.key === GLASS_ENABLED_KEY) {\n this.enabled = readEnabled()\n this.sync()\n } else if (event.key === MODE_KEY || event.key in NUMERIC_KEYS) {\n this.reloadSettings()\n if (this.enabled) this.applySettings()\n this.publish()\n }\n }\n window.addEventListener('storage', onStorage)\n // Follow the Appearance switch: the brightness knob's half-range and\n // the ambient direction flip with the resolved scheme. Runs even while\n // disabled so the settings row stays correct.\n const themeListener = ctx.on('theme/change', () => {\n this.dark = resolveDark(ctx)\n if (this.enabled) this.applySettings()\n this.publish()\n })\n return () => {\n window.removeEventListener('storage', onStorage)\n themeListener()\n this.unmount()\n }\n }, 'catppuccin: glass layer lifecycle')\n\n // Apply the restored state: mount the layer when the persisted flag is on\n // (the settings row reflects the same snapshot, so the two stay in sync).\n this.sync()\n }\n\n /** Current state snapshot (stable reference until the next change). */\n getSnapshot(): GlassRowState {\n return this.snapshot\n }\n\n /** Subscribe to snapshot changes. Returns the disposer. */\n subscribe(listener: () => void): () => void {\n this.listeners.add(listener)\n return () => { this.listeners.delete(listener) }\n }\n\n /** Flip the layer: persist, then apply or retract every owned effect. */\n setEnabled(value: boolean): void {\n if (value === this.enabled) return\n this.enabled = value\n writeEnabled(value)\n this.sync()\n }\n\n /** Set the rendering mode ('mica' or 'compat'). */\n setMode(value: 'mica' | 'compat'): void {\n if (value === this.settings.mode) return\n this.settings.mode = value\n writeMode(value)\n if (this.enabled) this.applySettings()\n this.publish()\n }\n\n /** Set the glass blur radius (px). */\n setBlur(value: number): void {\n const next = clampSetting('blur', value)\n if (next === this.settings.blur) return\n this.settings.blur = next\n writeSetting('blur', next)\n if (this.enabled) this.applySettings()\n this.publish()\n }\n\n /** Set the glass frost amount (0-100). */\n setFrost(value: number): void {\n const next = clampSetting('frost', value)\n if (next === this.settings.frost) return\n this.settings.frost = next\n writeSetting('frost', next)\n if (this.enabled) this.applySettings()\n this.publish()\n }\n\n /** Set the backdrop brightness (0-100: 0 = pure black, 50 = transparent, 100 = pure white). */\n setBrightness(value: number): void {\n const next = clampSetting('brightness', value)\n if (next === this.settings.brightness) return\n this.settings.brightness = next\n writeSetting('brightness', next)\n if (this.enabled) this.applySettings()\n this.publish()\n }\n\n /** Set the ambient hue shift (degrees). */\n setHue(value: number): void {\n const next = clampSetting('hue', value)\n if (next === this.settings.hue) return\n this.settings.hue = next\n writeSetting('hue', next)\n if (this.enabled) this.applySettings()\n this.publish()\n }\n\n /** Re-read every knob from localStorage into memory. */\n private reloadSettings(): void {\n this.settings = {\n mode: readMode(),\n blur: readSetting('blur'),\n frost: readSetting('frost'),\n brightness: readSetting('brightness'),\n hue: readSetting('hue'),\n }\n }\n\n private buildSnapshot(): GlassRowState {\n return { ...this.settings, enabled: this.enabled, dark: this.dark }\n }\n\n private publish(): void {\n this.snapshot = this.buildSnapshot()\n for (const listener of this.listeners) listener()\n }\n\n private sync(): void {\n if (this.enabled) this.mount()\n else this.unmount()\n this.publish()\n }\n\n /** Write the knob-driven CSS variables and mode attributes onto <html>. */\n private applySettings(): void {\n const style = document.documentElement.style\n style.setProperty('--dsh-glass-blur', `${this.settings.blur}px`)\n // Frost 0-100 → a 0-1.4 alpha multiplier (50 = 1x). Capped so max frost\n // stays translucent frosted glass instead of collapsing to a solid slab.\n style.setProperty('--dsh-glass-frost', String(Math.min(this.settings.frost / 50, 1.4)))\n style.setProperty('--dsh-glass-hue', `${this.settings.hue}deg`)\n // Backdrop brightness: dark mode darkens (0 = pure black, 50 = off),\n // light mode brightens (50 = off, 100 = pure white) — the knob's range\n // and the overlay direction both follow the resolved scheme.\n const dark = this.dark\n style.setProperty('--dsh-glass-brightness-black', String(dark ? Math.max(0, (50 - this.settings.brightness) / 50) : 0))\n style.setProperty('--dsh-glass-brightness-white', String(dark ? 0 : Math.max(0, (this.settings.brightness - 50) / 50)))\n\n // Rendering mode: the float rules key off data-dsh-glass-float; the\n // compat (generic glass) rules key off data-dsh-glass-compat.\n const compat = this.settings.mode === 'compat'\n document.documentElement.toggleAttribute(GLASS_FLOAT_ATTRIBUTE, !compat)\n document.documentElement.toggleAttribute(GLASS_COMPAT_ATTRIBUTE, compat)\n }\n\n private mount(): void {\n document.documentElement.setAttribute(GLASS_ATTRIBUTE, '')\n this.applySettings()\n this.ensureAmbient()\n if (this.seamDisposer === undefined) this.seamDisposer = startGlassSeamStamper()\n }\n\n private unmount(): void {\n document.documentElement.removeAttribute(GLASS_ATTRIBUTE)\n document.documentElement.removeAttribute(GLASS_FLOAT_ATTRIBUTE)\n document.documentElement.removeAttribute(GLASS_COMPAT_ATTRIBUTE)\n for (const node of document.querySelectorAll('[data-dsh-glass-ambient], [data-dsh-glass-fade]')) node.remove()\n this.seamDisposer?.()\n this.seamDisposer = undefined\n }\n\n /** Insert the ambient backdrop + edge fades (or reuse the existing ones). */\n private ensureAmbient(): void {\n if (document.querySelector('[data-dsh-glass-ambient]') !== null) return\n const holder = document.createElement('div')\n holder.innerHTML = AMBIENT_MARKUP\n for (const node of Array.from(holder.children)) {\n if (node instanceof HTMLElement) document.body.append(node)\n }\n }\n}\n","/**\n * Catppuccin glass settings row — registered into the General settings\n * section (`settings.general.item`, right under the Catppuccin flavour row).\n * Holds the master on/off switch plus every glass knob: mode (mica /\n * compatibility), blur, frost, backdrop brightness and ambient hue. Every\n * write goes straight through to the glass layer, so the skin moves live.\n */\nimport { useSyncExternalStore } from 'react'\nimport type { PropsLocale, PropsRuntime } from '@deepseek-ai/dsh-client-ui-slots'\nimport type { GlassRowState } from './glass-layer.ts'\nimport css from './GlassRow.module.css'\n\n/** Injected business face: the layer state seat plus every knob write. */\nexport interface GlassRowInjected {\n /** Current layer state snapshot. */\n getState: () => GlassRowState\n /** Subscribe to layer state changes. Returns the disposer. */\n subscribe: (listener: () => void) => () => void\n /** Switch the glass layer on or off. */\n setEnabled: (enabled: boolean) => void\n /** Set the rendering mode ('mica' floating cards or 'compat' stock layout). */\n setMode: (mode: 'mica' | 'compat') => void\n /** Set the glass blur radius, px. */\n setBlur: (value: number) => void\n /** Set the glass frost amount, 0-100. */\n setFrost: (value: number) => void\n /** Set the backdrop brightness, 0-100. */\n setBrightness: (value: number) => void\n /** Set the ambient hue shift, degrees. */\n setHue: (value: number) => void\n}\n\n/** Full component props: runtime share + locale seat + injected face. */\nexport type GlassRowProps = PropsRuntime<'settings.general.item'> & PropsLocale<'catppuccin'> & GlassRowInjected\n\n/** One slider + number box, wired to a single value. */\nfunction Knob(props: {\n label: string\n value: number\n min: number\n max: number\n step: number\n unit: string\n onChange: (value: number) => void\n}): React.JSX.Element {\n const { label, value, min, max, step, unit, onChange } = props\n const clamp = (n: number): number => Math.min(max, Math.max(min, Number.isFinite(n) ? n : min))\n return (\n <label className={css.knob}>\n <span className={css.knobLabel}>{label}</span>\n <input\n type=\"range\"\n className={css.slider}\n min={min}\n max={max}\n step={step}\n value={value}\n onChange={(e) => { onChange(clamp(Number(e.target.value))) }}\n />\n <span className={css.numberWrap}>\n <input\n type=\"number\"\n className={css.number}\n min={min}\n max={max}\n step={step}\n value={value}\n onChange={(e) => { onChange(clamp(Number(e.target.value))) }}\n />\n <span className={css.unit}>{unit}</span>\n </span>\n </label>\n )\n}\n\n/** A two-option segmented picker. */\nfunction Segmented<T extends string>(props: {\n label: string\n value: T\n options: readonly { id: T; label: string }[]\n onSelect: (value: T) => void\n}): React.JSX.Element {\n const { label, value, options, onSelect } = props\n return (\n <div className={css.segmented} role=\"group\" aria-label={label}>\n {options.map((option) => (\n <button\n key={option.id}\n type=\"button\"\n className={option.id === value ? css.segActive : css.seg}\n aria-pressed={option.id === value}\n onClick={() => { onSelect(option.id) }}\n >\n {option.label}\n </button>\n ))}\n </div>\n )\n}\n\n/**\n * Render the glass row: title, the master switch, and — while enabled — the\n * mode picker and every knob.\n * @param props - composed slot props.\n * @returns the General section row.\n */\nexport function GlassRow({ t, getState, subscribe, setEnabled, setMode, setBlur, setFrost, setBrightness, setHue }: GlassRowProps): React.JSX.Element {\n const state = useSyncExternalStore(subscribe, getState)\n const { enabled, mode, blur, frost, brightness, hue, dark } = state\n\n // The brightness knob only ever offers the half that makes sense for the\n // resolved scheme: dark mode darkens (0-50), light mode brightens (50-100).\n const bgMin = dark ? 0 : 50\n const bgMax = dark ? 50 : 100\n const bgDisplay = Math.min(bgMax, Math.max(bgMin, brightness))\n\n return (\n <div className={css.group}>\n <div className={css.title}>{t('glass.title')}</div>\n <div className={css.description}>{t('glass.description')}</div>\n <div className={css.controls}>\n <div className={css.row}>\n <span className={css.rowLabel}>{t('glass.enable')}</span>\n <button\n type=\"button\"\n className={enabled ? css.toggleOn : css.toggle}\n aria-pressed={enabled}\n onClick={() => { setEnabled(!enabled) }}\n >\n <span className={css.check}>{enabled ? '✓' : ''}</span>\n {enabled ? t('glass.on') : t('glass.off')}\n </button>\n </div>\n {enabled && (\n <>\n <div className={css.row}>\n <span className={css.rowLabel}>{t('glass.mode')}</span>\n <Segmented\n label={t('glass.mode')}\n value={mode}\n options={[\n { id: 'mica', label: t('glass.modeMica') },\n { id: 'compat', label: t('glass.modeCompat') },\n ]}\n onSelect={setMode}\n />\n </div>\n <div className={css.rowHint}>{t('glass.modeHint')}</div>\n <Knob label={t('glass.blur')} value={blur} min={0} max={40} step={0.5} unit=\"px\" onChange={setBlur} />\n <Knob label={t('glass.frost')} value={frost} min={0} max={100} step={1} unit=\"%\" onChange={setFrost} />\n <Knob label={t('glass.brightness')} value={bgDisplay} min={bgMin} max={bgMax} step={1} unit=\"%\" onChange={setBrightness} />\n <div className={css.knobHint}>\n {t(dark ? 'glass.brightnessHintDark' : 'glass.brightnessHintLight')}\n </div>\n <Knob label={t('glass.hue')} value={hue} min={0} max={360} step={1} unit=\"°\" onChange={setHue} />\n <div className={css.knobHint}>{t('glass.hueHint')}</div>\n </>\n )}\n </div>\n </div>\n )\n}\n","/**\n * Catppuccin themes for the DeepSeek Harness web GUI — browser half.\n *\n * Registers the four Catppuccin flavours (Latte light / Frappé, Macchiato,\n * Mocha dark) into the official ThemeRuntime, so they become selectable\n * themes whose --dsw-* token overrides fully remap the UI palette. The\n * official Appearance row persists only the built-in light/dark/system\n * preferences, so this plugin also owns a settings row (\"Catppuccin\") that\n * lists the four flavours; selecting one switches the theme and persists the\n * flavour in localStorage (the Host settings wire only serves an explicit\n * allowlist of namespaces — a plugin-owned namespace answers\n * `settings-not-exposed`, so a browser-local preference is the durable\n * store here). The choice is restored on boot.\n */\nimport type { ClientContext } from '@deepseek-ai/dsh-client-runtime/client'\nimport type { ThemeRuntime, ThemeTokens } from '@deepseek-ai/dsh-client-ui-theme/client'\n// Type-only: pulls the locale plugin's Context merge (ctx.locale).\nimport type {} from '@deepseek-ai/dsh-client-locale/client'\n// Type-only: pulls the settings-surface SlotMap merge (settings.general.item).\nimport type {} from '@deepseek-ai/dsh-client-ui-settings/client'\nimport { CatppuccinRow, type CatppuccinRowInjected } from './CatppuccinRow.tsx'\nimport { en, zh, type CatppuccinKey } from './locales.ts'\nimport { CATPPUCCIN_FLAVORS, type CatppuccinFlavorInfo } from './palettes.ts'\nimport { GlassLayer } from './glass/glass-layer.ts'\nimport { GlassRow, type GlassRowInjected } from './glass/glass-row.tsx'\n// Side-effect import: the glass stylesheet (auto-injected as a plugin-owned\n// <style> tag; every rule is gated on the data-dsh-glass attribute).\nimport './glass/glass.module.css'\n\n/** Locale namespace owned by this plugin. */\nexport const NS = 'catppuccin'\n\ndeclare module '@deepseek-ai/dsh-client-ui-slots' {\n interface LocaleNamespaceMap {\n /** The Catppuccin settings row's copy. */\n catppuccin: CatppuccinKey\n }\n}\n\n/** localStorage key carrying the persisted flavour choice. */\nexport const FLAVOR_STORAGE_KEY = 'dsh.catppuccin.flavor'\n\n/** Accepted flavour values — the four registered theme ids plus `off`. These\n * MUST stay in sync with the registered themes (guarded by\n * tests/palettes.spec.ts) because the persisted value is the theme id. */\nexport const CATPPUCCIN_FLAVOR_VALUES = [\n ...CATPPUCCIN_FLAVORS.map((f) => f.themeId),\n 'off',\n] as const\n\n/** `off` means: fall back to the official theme (default). */\nexport type FlavorChoice = (typeof CATPPUCCIN_FLAVOR_VALUES)[number]\n\n/** The flavour whose themeId this is, or `off`. */\nexport function flavorFromThemeId(themeId: string): FlavorChoice {\n return CATPPUCCIN_FLAVORS.some((f) => f.themeId === themeId) ? themeId as FlavorChoice : 'off'\n}\n\n/** The flavour registered for a theme id, or undefined when not a Catppuccin theme. */\nexport function flavorInfo(themeId: string): CatppuccinFlavorInfo | undefined {\n return CATPPUCCIN_FLAVORS.find((f) => f.themeId === themeId)\n}\n\n/** Read the persisted flavour (absent / unknown values mean the default `off`). */\nexport function readFlavor(): FlavorChoice {\n try {\n const raw = localStorage.getItem(FLAVOR_STORAGE_KEY)\n return raw !== null && (CATPPUCCIN_FLAVOR_VALUES as readonly string[]).includes(raw)\n ? raw as FlavorChoice\n : 'off'\n } catch {\n return 'off'\n }\n}\n\n/** Persist the flavour choice (storage failures keep the in-memory state). */\nexport function writeFlavor(choice: FlavorChoice): void {\n try {\n localStorage.setItem(FLAVOR_STORAGE_KEY, choice)\n } catch {\n /* in-memory state still applies for this tab */\n }\n}\n\n/** Required services: slots + locale (settings rows) and theme (register + switch). */\nexport const inject = ['slots', 'locale', 'theme']\n\n/**\n * Register the Catppuccin dictionaries, the four flavour themes, and the\n * settings row.\n * @param ctx - client root context.\n */\nexport function apply(ctx: ClientContext): void {\n ctx.effect(() => ctx.locale.register(NS, { zh, en }), 'catppuccin: dictionaries')\n\n const theme = ctx.get('theme') as ThemeRuntime\n\n // Register the four flavour themes. Each carries the full --dsw-* token\n // dictionary for its flavour; the presenter applies them as body inline\n // variables when the theme is active.\n ctx.effect(() => {\n const disposers = CATPPUCCIN_FLAVORS.map((flavor) =>\n theme.register({\n id: flavor.themeId,\n colorScheme: flavor.colorScheme,\n tokens: flavor.tokens as ThemeTokens,\n }),\n )\n return () => {\n for (const dispose of disposers) dispose()\n }\n }, 'catppuccin: flavour themes')\n\n // Persisted flavour choice. The official ThemeRuntime only persists the\n // built-in preferences, and the Host settings wire refuses plugin-owned\n // namespaces (`settings-not-exposed`), so the choice lives in localStorage.\n // Restoring it is a two-step race at boot: the flavour themes are registered\n // by this plugin (so an immediate setTheme may run before registration), and\n // the official Appearance scope adoption (`adopt()`) re-applies the stored\n // light/dark/system preference once its scope loads, overriding us. So the\n // saved flavour is re-asserted on every theme change within a short boot\n // window; after that a theme change is a user action and must win.\n ctx.effect(() => {\n const saved = readFlavor()\n if (saved === 'off') return () => {}\n let settled = false\n const started = Date.now()\n const applySaved = (): void => {\n if (settled) return\n if (Date.now() - started > 5000) {\n settled = true\n return\n }\n try {\n if (theme.getTheme().preference !== saved) theme.setTheme(saved)\n } catch {\n // Theme not registered yet — the registry-update theme/change retries.\n }\n }\n applySaved()\n const disposer = ctx.on('theme/change', applySaved)\n const timer = window.setTimeout(() => { settled = true }, 5000)\n const onStorage = (event: StorageEvent): void => {\n if (event.key !== FLAVOR_STORAGE_KEY) return\n const next = readFlavor()\n if (next !== 'off') {\n try {\n theme.setTheme(next)\n } catch {\n /* unknown persisted value — keep the current theme */\n }\n }\n }\n window.addEventListener('storage', onStorage)\n return () => {\n disposer()\n window.clearTimeout(timer)\n window.removeEventListener('storage', onStorage)\n }\n }, 'catppuccin: boot restore')\n\n const injected = (): CatppuccinRowInjected => ({\n themes: CATPPUCCIN_FLAVORS.map((flavor) => ({\n id: flavor.themeId,\n label: flavor.label,\n accent: flavor.accent,\n })),\n current: () => {\n const pref = theme.getTheme().preference\n return flavorFromThemeId(pref)\n },\n subscribe: (listener) => ctx.on('theme/change', listener),\n select: (choice: FlavorChoice) => {\n if (choice === 'off') {\n // Revert to the official default (system-following).\n theme.setTheme('system')\n writeFlavor('off')\n return\n }\n const flavor = flavorInfo(choice)\n if (!flavor) return\n theme.setTheme(flavor.themeId)\n writeFlavor(flavor.themeId)\n },\n })\n\n ctx.slots.inject('settings.general.item', () => ctx.slots.register({\n name: 'settings.general.item',\n id: 'catppuccin',\n order: 20,\n locale: NS,\n inject: injected,\n }, CatppuccinRow))\n\n // The glass layer: a toggleable glassmorphism skin on top of the Catppuccin\n // themes. It owns its lifecycle (enable flag + knobs persist in\n // localStorage; every effect is released with this fiber).\n const glass = new GlassLayer(ctx)\n\n const glassInjected = (): GlassRowInjected => ({\n getState: () => glass.getSnapshot(),\n subscribe: (listener) => glass.subscribe(listener),\n setEnabled: (enabled) => { glass.setEnabled(enabled) },\n setMode: (mode) => { glass.setMode(mode) },\n setBlur: (blur) => { glass.setBlur(blur) },\n setFrost: (frost) => { glass.setFrost(frost) },\n setBrightness: (brightness) => { glass.setBrightness(brightness) },\n setHue: (hue) => { glass.setHue(hue) },\n })\n\n ctx.slots.inject('settings.general.item', () => ctx.slots.register({\n name: 'settings.general.item',\n id: 'catppuccin-glass',\n order: 21,\n locale: NS,\n inject: glassInjected,\n }, GlassRow))\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"client.js","names":["useSyncExternalStore","css","useSyncExternalStore"],"sources":["../src/client/CatppuccinRow.tsx","../src/client/locales.ts","../src/client/palettes.ts","../src/client/glass/glass-seams.ts","../src/client/glass/glass-layer.ts","../src/client/glass/glass-row.tsx","../src/client/index.ts"],"sourcesContent":["/**\n * Catppuccin settings row — one General-section preference row listing the\n * four flavour themes plus a \"follow system\" (off) choice. Selecting a\n * flavour calls the injected `select`, which switches the official\n * ThemeRuntime and persists the choice. The row subscribes to `theme/change`\n * so the highlighted flavour tracks the live preference.\n */\nimport { useSyncExternalStore } from 'react'\nimport type { PropsLocale, PropsRuntime } from '@deepseek-ai/dsh-client-ui-slots'\nimport type { FlavorChoice } from './index.ts'\n\n/** One flavour button shown by the row. */\nexport interface CatppuccinFlavorButton {\n /** Theme id registered into ThemeRuntime. */\n id: string\n /** Display label. */\n label: string\n /** Accent colour for the swatch. */\n accent: string\n}\n\n/** Injected business face of the row (assembled in apply). */\nexport interface CatppuccinRowInjected {\n /** The four flavours, in display order. */\n themes: readonly CatppuccinFlavorButton[]\n /** Current choice (`off` when a Catppuccin theme is not active). */\n current: () => FlavorChoice\n /** Subscribe to theme preference changes. Returns the disposer. */\n subscribe: (listener: () => void) => () => void\n /** Switch the theme and persist the choice (`off` reverts to system). */\n select: (choice: FlavorChoice) => void | Promise<void>\n}\n\n/** Full component props: runtime share + locale seat + injected face. */\nexport type CatppuccinRowProps = PropsRuntime<'settings.general.item'> & PropsLocale<'catppuccin'> & CatppuccinRowInjected\n\n/**\n * Render the Catppuccin row: title, one swatch button per flavour, and a\n * follow-system button. The active flavour is highlighted; clicking a flavour\n * applies it immediately (live, no restart) and persists the choice.\n * @param props - composed slot props.\n * @returns the row element tree.\n */\nexport function CatppuccinRow({ t, themes, current, subscribe, select }: CatppuccinRowProps): React.JSX.Element {\n const choice = useSyncExternalStore(subscribe, current)\n return (\n <div style={{ borderBottom: '1px solid var(--dsw-alias-border-l2)', display: 'flex', flexDirection: 'column', gap: '10px', padding: '16px 0' }}>\n <div style={{ color: 'var(--dsw-alias-label-primary)', fontSize: 14, lineHeight: '22px' }}>\n {t('row.title')}\n </div>\n <div style={{ color: 'var(--dsw-alias-label-tertiary)', fontSize: 12, lineHeight: '18px' }}>\n {t('row.description')}\n </div>\n <div style={{ display: 'flex', flexWrap: 'wrap', gap: '8px' }}>\n {themes.map((flavor) => {\n const selected = choice === flavor.id\n return (\n <button\n key={flavor.id}\n type=\"button\"\n aria-pressed={selected}\n onClick={() => void select(flavor.id)}\n style={{\n display: 'inline-flex',\n alignItems: 'center',\n gap: 6,\n padding: '6px 12px',\n borderRadius: 8,\n border: `1px solid ${selected ? 'var(--dsw-alias-border-l3)' : 'var(--dsw-alias-border-l1)'}`,\n background: selected ? 'var(--dsw-alias-interactive-bg-active)' : 'transparent',\n color: 'var(--dsw-alias-label-primary)',\n cursor: 'pointer',\n font: 'inherit',\n }}\n >\n <span aria-hidden=\"true\" style={{ width: 12, height: 12, borderRadius: 3, background: flavor.accent, flex: 'none' }} />\n {flavor.label}\n </button>\n )\n })}\n <button\n key=\"off\"\n type=\"button\"\n aria-pressed={choice === 'off'}\n onClick={() => void select('off')}\n style={{\n display: 'inline-flex',\n alignItems: 'center',\n gap: 6,\n padding: '6px 12px',\n borderRadius: 8,\n border: `1px solid ${choice === 'off' ? 'var(--dsw-alias-border-l3)' : 'var(--dsw-alias-border-l1)'}`,\n background: choice === 'off' ? 'var(--dsw-alias-interactive-bg-active)' : 'transparent',\n color: 'var(--dsw-alias-label-primary)',\n cursor: 'pointer',\n font: 'inherit',\n }}\n >\n {t('row.off')}\n </button>\n </div>\n </div>\n )\n}\n","/**\n * Catppuccin settings-row copy. The zh dictionary is the key-set source of\n * truth; the en dictionary mirrors it (checked complete against the zh keys).\n */\n\n/** Simplified Chinese dictionary. */\nexport const zh = {\n 'row.title': 'Catppuccin 主题',\n 'row.description': 'Latte / Frappé / Macchiato / Mocha 四款配色,一键切换。',\n 'row.off': '跟随系统',\n 'flavor.latte': 'Latte',\n 'flavor.frappe': 'Frappé',\n 'flavor.macchiato': 'Macchiato',\n 'flavor.mocha': 'Mocha',\n 'glass.title': '玻璃质感',\n 'glass.description': '顶栏、侧边栏、输入框、统计行、轨迹视图的磨砂玻璃效果,一键开关。',\n 'glass.enable': '总开关',\n 'glass.on': '开启',\n 'glass.off': '关闭',\n 'glass.mode': '模式',\n 'glass.modeMica': '云母效果',\n 'glass.modeCompat': '兼容模式',\n 'glass.modeHint': '云母效果把界面改成悬浮磨砂卡片;兼容模式保持原版排版,只换玻璃材质',\n 'glass.blur': '玻璃模糊度',\n 'glass.frost': '磨砂度',\n 'glass.brightness': '背景亮度',\n 'glass.brightnessHintDark': '深色模式:0 压暗至纯黑,50 原样',\n 'glass.brightnessHintLight': '浅色模式:50 原样,100 提亮至纯白',\n 'glass.hue': '背景色调',\n 'glass.hueHint': '背景渐变与光晕的色相偏移(0–360°)',\n 'glass.reset': '还原默认值',\n} as const\n\n/** English dictionary, checked complete against the zh key set. */\nexport const en: Record<keyof typeof zh, string> = {\n 'row.title': 'Catppuccin theme',\n 'row.description': 'Latte / Frappé / Macchiato / Mocha, one click away.',\n 'row.off': 'Follow system',\n 'flavor.latte': 'Latte',\n 'flavor.frappe': 'Frappé',\n 'flavor.macchiato': 'Macchiato',\n 'flavor.mocha': 'Mocha',\n 'glass.title': 'Glassmorphism',\n 'glass.description': 'Frosted glass for the top bar, sidebar, composer, stats line and trajectory view — one click on/off.',\n 'glass.enable': 'Master switch',\n 'glass.on': 'On',\n 'glass.off': 'Off',\n 'glass.mode': 'Mode',\n 'glass.modeMica': 'Mica',\n 'glass.modeCompat': 'Compatibility',\n 'glass.modeHint': 'Mica restyles the UI into floating frosted cards; Compatibility keeps the stock layout and only swaps the material to glass',\n 'glass.blur': 'Glass blur',\n 'glass.frost': 'Frost',\n 'glass.brightness': 'Backdrop brightness',\n 'glass.brightnessHintDark': 'Dark mode: 0 fades to pure black, 50 unchanged',\n 'glass.brightnessHintLight': 'Light mode: 50 unchanged, 100 brightens to pure white',\n 'glass.hue': 'Backdrop hue',\n 'glass.hueHint': 'Hue shift for the backdrop gradient and glow (0–360°)',\n 'glass.reset': 'Reset to defaults',\n}\n\n/** Key union of the Catppuccin dictionaries. */\nexport type CatppuccinKey = keyof typeof zh\n","/**\n * AUTO-GENERATED by scripts/generate-palettes.mjs — do not edit by hand.\n * Catppuccin token tables for the DeepSeek Harness web GUI.\n * Source palette: https://github.com/catppuccin/catppuccin (palette.json v1.8.0).\n * Each flavour carries a flat dictionary of every --dsw-static-*,\n * --dsw-alias-* and --dsw-specific-* token the official theme stylesheet\n * declares. Alias/specific entries keep their var() references so the static\n * overrides below flow through automatically; literal (non-var) entries are\n * remapped to Catppuccin colours.\n */\nexport type CatppuccinFlavorId = 'latte' | 'frappe' | 'macchiato' | 'mocha'\nexport interface CatppuccinFlavorInfo {\n /** Theme id registered into ThemeRuntime. */\n themeId: string\n /** Base color scheme this flavour builds on. */\n colorScheme: 'light' | 'dark'\n /** Display label. */\n label: string\n /** Accent colour for the settings row swatch. */\n accent: string\n /** Token dictionary (--dsw-* names). */\n tokens: Record<string, string>\n}\n\nexport const CATPPUCCIN_LATTE: CatppuccinFlavorInfo = {\n themeId: 'catppuccin-latte',\n colorScheme: 'light',\n label: 'Latte',\n accent: '#1e66f5',\n tokens: {\n \"--dsw-static-amber-100\": \"color-mix(in srgb, #fe640b 20%, #eff1f5)\",\n \"--dsw-static-amber-400\": \"#df8e1d\",\n \"--dsw-static-amber-500\": \"#fe640b\",\n \"--dsw-static-amber-600\": \"#fe640b\",\n \"--dsw-static-amber-900\": \"color-mix(in srgb, #fe640b 32%, #eff1f5)\",\n \"--dsw-static-blue-100\": \"color-mix(in srgb, #1e66f5 22%, #eff1f5)\",\n \"--dsw-static-blue-300\": \"color-mix(in srgb, #1e66f5 48%, #eff1f5)\",\n \"--dsw-static-blue-400\": \"color-mix(in srgb, #1e66f5 65%, #eff1f5)\",\n \"--dsw-static-blue-450\": \"color-mix(in srgb, #1e66f5 82%, #eff1f5)\",\n \"--dsw-static-blue-500\": \"#1e66f5\",\n \"--dsw-static-blue-50\": \"color-mix(in srgb, #1e66f5 8%, #eff1f5)\",\n \"--dsw-static-blue-50p\": \"color-mix(in srgb, #1e66f5 12%, #eff1f5)\",\n \"--dsw-static-blue-600\": \"color-mix(in srgb, #1e66f5 82%, #eff1f5)\",\n \"--dsw-static-blue-75\": \"color-mix(in srgb, #1e66f5 16%, #eff1f5)\",\n \"--dsw-static-blue-800\": \"color-mix(in srgb, #1e66f5 50%, #eff1f5)\",\n \"--dsw-static-blue-900\": \"color-mix(in srgb, #1e66f5 38%, #eff1f5)\",\n \"--dsw-static-blue-950\": \"color-mix(in srgb, #1e66f5 26%, #eff1f5)\",\n \"--dsw-static-deepseek-100\": \"color-mix(in srgb, #1e66f5 22%, #eff1f5)\",\n \"--dsw-static-deepseek-200\": \"color-mix(in srgb, #1e66f5 34%, #eff1f5)\",\n \"--dsw-static-deepseek-300\": \"color-mix(in srgb, #1e66f5 48%, #eff1f5)\",\n \"--dsw-static-deepseek-400\": \"color-mix(in srgb, #1e66f5 65%, #eff1f5)\",\n \"--dsw-static-deepseek-450\": \"color-mix(in srgb, #1e66f5 82%, #eff1f5)\",\n \"--dsw-static-deepseek-500\": \"#1e66f5\",\n \"--dsw-static-deepseek-50\": \"color-mix(in srgb, #1e66f5 8%, #eff1f5)\",\n \"--dsw-static-deepseek-600\": \"color-mix(in srgb, #1e66f5 82%, #eff1f5)\",\n \"--dsw-static-deepseek-700-delete\": \"color-mix(in srgb, #1e66f5 66%, #eff1f5)\",\n \"--dsw-static-deepseek-800\": \"color-mix(in srgb, #1e66f5 50%, #eff1f5)\",\n \"--dsw-static-deepseek-900\": \"color-mix(in srgb, #1e66f5 38%, #eff1f5)\",\n \"--dsw-static-green-100\": \"color-mix(in srgb, #40a02b 18%, #eff1f5)\",\n \"--dsw-static-green-400\": \"color-mix(in srgb, #40a02b 80%, #eff1f5)\",\n \"--dsw-static-green-500\": \"#40a02b\",\n \"--dsw-static-green-900\": \"color-mix(in srgb, #40a02b 30%, #eff1f5)\",\n \"--dsw-static-neutral-00\": \"#eff1f5\",\n \"--dsw-static-neutral-1000\": \"#4c4f69\",\n \"--dsw-static-neutral-100\": \"#bcc0cc\",\n \"--dsw-static-neutral-150\": \"#acb0be\",\n \"--dsw-static-neutral-200\": \"#9ca0b0\",\n \"--dsw-static-neutral-250\": \"#9ca0b0\",\n \"--dsw-static-neutral-300\": \"#8c8fa1\",\n \"--dsw-static-neutral-400\": \"#7c7f93\",\n \"--dsw-static-neutral-500\": \"#6c6f85\",\n \"--dsw-static-neutral-50\": \"#e6e9ef\",\n \"--dsw-static-neutral-550\": \"#6c6f85\",\n \"--dsw-static-neutral-600\": \"#5c5f77\",\n \"--dsw-static-neutral-700\": \"#5c5f77\",\n \"--dsw-static-neutral-800\": \"#4c4f69\",\n \"--dsw-static-neutral-850\": \"#4c4f69\",\n \"--dsw-static-neutral-900\": \"#4c4f69\",\n \"--dsw-static-neutral-bluish-00\": \"#eff1f5\",\n \"--dsw-static-neutral-bluish-1000\": \"#4c4f69\",\n \"--dsw-static-neutral-bluish-100\": \"#bcc0cc\",\n \"--dsw-static-neutral-bluish-150\": \"#acb0be\",\n \"--dsw-static-neutral-bluish-200\": \"#9ca0b0\",\n \"--dsw-static-neutral-bluish-300\": \"#8c8fa1\",\n \"--dsw-static-neutral-bluish-400\": \"#7c7f93\",\n \"--dsw-static-neutral-bluish-500\": \"#6c6f85\",\n \"--dsw-static-neutral-bluish-50\": \"#e6e9ef\",\n \"--dsw-static-neutral-bluish-600\": \"#5c5f77\",\n \"--dsw-static-neutral-bluish-60\": \"#e6e9ef\",\n \"--dsw-static-neutral-bluish-700\": \"#5c5f77\",\n \"--dsw-static-neutral-bluish-750\": \"#4c4f69\",\n \"--dsw-static-neutral-bluish-75\": \"#ccd0da\",\n \"--dsw-static-neutral-bluish-800\": \"#4c4f69\",\n \"--dsw-static-neutral-bluish-850\": \"#4c4f69\",\n \"--dsw-static-neutral-bluish-875\": \"#4c4f69\",\n \"--dsw-static-neutral-bluish-900\": \"#4c4f69\",\n \"--dsw-static-neutral-bluish-950\": \"#4c4f69\",\n \"--dsw-static-red-100\": \"color-mix(in srgb, #d20f39 20%, #eff1f5)\",\n \"--dsw-static-red-400\": \"color-mix(in srgb, #d20f39 70%, #eff1f5)\",\n \"--dsw-static-red-500\": \"#d20f39\",\n \"--dsw-static-red-50\": \"color-mix(in srgb, #d20f39 10%, #eff1f5)\",\n \"--dsw-static-red-600\": \"#d20f39\",\n \"--dsw-static-red-900\": \"color-mix(in srgb, #d20f39 34%, #eff1f5)\",\n \"--dsw-alias-bg-base\": \"var(--dsw-static-neutral-bluish-00)\",\n \"--dsw-alias-bg-layer-1\": \"var(--dsw-static-neutral-bluish-00)\",\n \"--dsw-alias-bg-layer-2\": \"var(--dsw-static-neutral-bluish-00)\",\n \"--dsw-alias-bg-layer-3\": \"var(--dsw-static-neutral-bluish-00)\",\n \"--dsw-alias-bg-mask-1\": \"rgba(0, 0, 0, 0.24)\",\n \"--dsw-alias-bg-mask-2\": \"rgba(0, 0, 0, 0.12)\",\n \"--dsw-alias-bg-mask-3\": \"rgba(0, 0, 0, 0.48)\",\n \"--dsw-alias-bg-mask-photo\": \"rgba(0, 0, 0, 0.88)\",\n \"--dsw-alias-bg-mask-drop\": \"rgba(255, 255, 255, 0.7)\",\n \"--dsw-alias-bg-module-platform\": \"var(--dsw-static-neutral-bluish-60)\",\n \"--dsw-alias-bg-multi-select\": \"var(--dsw-static-neutral-bluish-60)\",\n \"--dsw-alias-bg-overlay\": \"var(--dsw-static-neutral-bluish-150)\",\n \"--dsw-alias-bg-skeleton\": \"rgba(0, 0, 0, 0.04)\",\n \"--dsw-alias-border-inverted2\": \"rgba(0, 0, 0, 0)\",\n \"--dsw-alias-border-inverted\": \"rgba(0, 0, 0, 0)\",\n \"--dsw-alias-border-l1\": \"rgba(0, 0, 0, 0.04)\",\n \"--dsw-alias-border-l2-darkmode-thin\": \"rgba(0, 0, 0, 0.1)\",\n \"--dsw-alias-border-l2\": \"rgba(0, 0, 0, 0.1)\",\n \"--dsw-alias-border-l3\": \"rgba(0, 0, 0, 0.12)\",\n \"--dsw-alias-border-l4\": \"rgba(0, 0, 0, 0.16)\",\n \"--dsw-alias-brand-primary-invert\": \"var(--dsw-static-neutral-bluish-1000)\",\n \"--dsw-alias-brand-primary-new-colorprimary-new-color\": \"#1e66f5\",\n \"--dsw-alias-brand-primary\": \"var(--dsw-static-neutral-bluish-1000)\",\n \"--dsw-alias-brand-text\": \"var(--dsw-static-neutral-bluish-1000)\",\n \"--dsw-alias-button-contrast-fill\": \"var(--dsw-static-neutral-bluish-700)\",\n \"--dsw-alias-button-elevated-fill\": \"var(--dsw-static-neutral-bluish-00)\",\n \"--dsw-alias-button-floating-fill\": \"var(--dsw-static-neutral-bluish-00)\",\n \"--dsw-alias-button-floating-hover\": \"var(--dsw-static-neutral-bluish-75)\",\n \"--dsw-alias-button-ghost-active-border\": \"var(--dsw-static-neutral-bluish-500)\",\n \"--dsw-alias-button-ghost-active-fill\": \"var(--dsw-static-neutral-bluish-100)\",\n \"--dsw-alias-button-ghost-active-hover\": \"var(--dsw-static-neutral-bluish-150)\",\n \"--dsw-alias-button-info-fill\": \"var(--dsw-static-deepseek-500)\",\n \"--dsw-alias-button-info-hover\": \"var(--dsw-static-deepseek-400)\",\n \"--dsw-alias-button-primary-dimmed\": \"var(--dsw-static-neutral-bluish-100)\",\n \"--dsw-alias-button-primary-fill\": \"var(--dsw-alias-brand-primary)\",\n \"--dsw-alias-button-primary-hover\": \"var(--dsw-static-neutral-bluish-750)\",\n \"--dsw-alias-button-tool-bar-fill-invisible\": \"rgba(31, 31, 31, 0.36)\",\n \"--dsw-alias-button-tool-bar-fill\": \"rgba(84, 85, 87, 0.5)\",\n \"--dsw-alias-button-tool-bar-hover\": \"rgba(84, 85, 87, 0.6)\",\n \"--dsw-alias-interactive-bg-active\": \"rgba(38, 49, 72, 0.1)\",\n \"--dsw-alias-interactive-bg-hover-accent\": \"rgba(38, 49, 72, 0.14)\",\n \"--dsw-alias-interactive-bg-hover-danger\": \"rgba(236, 19, 19, 0.05)\",\n \"--dsw-alias-interactive-bg-hover-solid\": \"var(--dsw-static-neutral-bluish-75)\",\n \"--dsw-alias-interactive-bg-hover\": \"rgba(38, 49, 72, 0.06)\",\n \"--dsw-alias-label-caption\": \"var(--dsw-static-neutral-bluish-400)\",\n \"--dsw-alias-label-dimmed\": \"var(--dsw-static-neutral-bluish-200)\",\n \"--dsw-alias-label-primary-bluish\": \"var(--dsw-static-blue-900)\",\n \"--dsw-alias-label-primary-dimmed\": \"var(--dsw-static-neutral-bluish-950)\",\n \"--dsw-alias-label-primary-foreground\": \"var(--dsw-static-neutral-bluish-00)\",\n \"--dsw-alias-label-primary-inverted\": \"var(--dsw-static-neutral-bluish-00)\",\n \"--dsw-alias-label-primary\": \"var(--dsw-static-neutral-bluish-1000)\",\n \"--dsw-alias-label-secondary\": \"var(--dsw-static-neutral-bluish-700)\",\n \"--dsw-alias-label-tertiary\": \"var(--dsw-static-neutral-bluish-600)\",\n \"--dsw-alias-markdown-citation\": \"var(--dsw-static-neutral-bluish-100)\",\n \"--dsw-alias-markdown-code-block-banner\": \"var(--dsw-static-neutral-bluish-50)\",\n \"--dsw-alias-markdown-code-block\": \"var(--dsw-static-neutral-bluish-50)\",\n \"--dsw-alias-markdown-code-segment-selected\": \"var(--dsw-static-neutral-bluish-00)\",\n \"--dsw-alias-markdown-code-segment-unselected\": \"var(--dsw-static-neutral-bluish-75)\",\n \"--dsw-alias-markdown-inline-code\": \"var(--dsw-static-neutral-bluish-100)\",\n \"--dsw-alias-markdown-placeholder\": \"var(--dsw-static-neutral-bluish-60)\",\n \"--dsw-alias-markdown-tag\": \"var(--dsw-static-neutral-bluish-75)\",\n \"--dsw-alias-scrollbar-bg-l1\": \"var(--dsw-static-neutral-200)\",\n \"--dsw-alias-scrollbar-bg-l2\": \"var(--dsw-static-neutral-200)\",\n \"--dsw-alias-scrollbar-hover-l1\": \"var(--dsw-static-neutral-300)\",\n \"--dsw-alias-scrollbar-hover-l2\": \"var(--dsw-static-neutral-300)\",\n \"--dsw-alias-state-business-primary\": \"var(--dsw-static-deepseek-500)\",\n \"--dsw-alias-state-business-tertiary\": \"var(--dsw-static-deepseek-100)\",\n \"--dsw-alias-state-error-primary\": \"var(--dsw-static-red-600)\",\n \"--dsw-alias-state-error-secondary\": \"var(--dsw-static-red-400)\",\n \"--dsw-alias-state-success-primary\": \"var(--dsw-static-green-500)\",\n \"--dsw-alias-state-success-secondary\": \"var(--dsw-static-green-400)\",\n \"--dsw-alias-state-success-tertiary\": \"var(--dsw-static-green-100)\",\n \"--dsw-alias-state-warn-label\": \"var(--dsw-static-amber-600)\",\n \"--dsw-alias-state-warn-primary\": \"var(--dsw-static-amber-500)\",\n \"--dsw-alias-state-warn-secondary\": \"var(--dsw-static-amber-400)\",\n \"--dsw-alias-state-warn-tertiary\": \"var(--dsw-static-amber-100)\",\n \"--dsw-alias-toast-bg\": \"var(--dsw-static-neutral-bluish-800)\",\n \"--dsw-alias-tooltip-bg\": \"var(--dsw-static-neutral-bluish-850)\",\n \"--dsw-specific-bubble-highlight\": \"var(--dsw-static-deepseek-200)\",\n \"--dsw-specific-bubble\": \"var(--dsw-static-deepseek-50)\",\n \"--dsw-specific-input-major\": \"var(--dsw-static-neutral-bluish-00)\",\n \"--dsw-specific-login-input\": \"var(--dsw-static-neutral-bluish-50)\",\n \"--dsw-specific-menu\": \"var(--dsw-alias-bg-layer-3)\",\n \"--dsw-specific-selector\": \"var(--dsw-static-neutral-bluish-60)\",\n \"--dsw-specific-sidebar-fill\": \"var(--dsw-static-neutral-bluish-50)\",\n \"--dsw-specific-sidebar-nav-item-active-accent\": \"var(--dsw-static-deepseek-100)\",\n \"--dsw-specific-sidebar-nav-item-active\": \"var(--dsw-static-neutral-bluish-100)\",\n \"--dsw-specific-sidebar-nav-item-hover\": \"var(--dsw-static-neutral-bluish-75)\",\n \"--dsw-specific-tip\": \"var(--dsw-static-neutral-bluish-60)\",\n },\n}\n\nexport const CATPPUCCIN_FRAPPE: CatppuccinFlavorInfo = {\n themeId: 'catppuccin-frappe',\n colorScheme: 'dark',\n label: 'Frappé',\n accent: '#8caaee',\n tokens: {\n \"--dsw-static-amber-100\": \"color-mix(in srgb, #ef9f76 20%, #303446)\",\n \"--dsw-static-amber-400\": \"#e5c890\",\n \"--dsw-static-amber-500\": \"#ef9f76\",\n \"--dsw-static-amber-600\": \"#ef9f76\",\n \"--dsw-static-amber-900\": \"color-mix(in srgb, #ef9f76 32%, #303446)\",\n \"--dsw-static-blue-100\": \"color-mix(in srgb, #8caaee 24%, #303446)\",\n \"--dsw-static-blue-300\": \"color-mix(in srgb, #8caaee 50%, #303446)\",\n \"--dsw-static-blue-400\": \"color-mix(in srgb, #8caaee 66%, #303446)\",\n \"--dsw-static-blue-450\": \"color-mix(in srgb, #8caaee 84%, #303446)\",\n \"--dsw-static-blue-500\": \"#8caaee\",\n \"--dsw-static-blue-50\": \"color-mix(in srgb, #8caaee 10%, #303446)\",\n \"--dsw-static-blue-50p\": \"color-mix(in srgb, #8caaee 14%, #303446)\",\n \"--dsw-static-blue-600\": \"color-mix(in srgb, #8caaee 84%, #303446)\",\n \"--dsw-static-blue-75\": \"color-mix(in srgb, #8caaee 18%, #303446)\",\n \"--dsw-static-blue-800\": \"color-mix(in srgb, #8caaee 52%, #303446)\",\n \"--dsw-static-blue-900\": \"color-mix(in srgb, #8caaee 40%, #303446)\",\n \"--dsw-static-blue-950\": \"color-mix(in srgb, #8caaee 28%, #303446)\",\n \"--dsw-static-deepseek-100\": \"color-mix(in srgb, #8caaee 24%, #303446)\",\n \"--dsw-static-deepseek-200\": \"color-mix(in srgb, #8caaee 36%, #303446)\",\n \"--dsw-static-deepseek-300\": \"color-mix(in srgb, #8caaee 50%, #303446)\",\n \"--dsw-static-deepseek-400\": \"color-mix(in srgb, #8caaee 66%, #303446)\",\n \"--dsw-static-deepseek-450\": \"color-mix(in srgb, #8caaee 84%, #303446)\",\n \"--dsw-static-deepseek-500\": \"#8caaee\",\n \"--dsw-static-deepseek-50\": \"color-mix(in srgb, #8caaee 10%, #303446)\",\n \"--dsw-static-deepseek-600\": \"color-mix(in srgb, #8caaee 84%, #303446)\",\n \"--dsw-static-deepseek-700-delete\": \"color-mix(in srgb, #8caaee 68%, #303446)\",\n \"--dsw-static-deepseek-800\": \"color-mix(in srgb, #8caaee 52%, #303446)\",\n \"--dsw-static-deepseek-900\": \"color-mix(in srgb, #8caaee 40%, #303446)\",\n \"--dsw-static-green-100\": \"color-mix(in srgb, #a6d189 18%, #303446)\",\n \"--dsw-static-green-400\": \"color-mix(in srgb, #a6d189 80%, #303446)\",\n \"--dsw-static-green-500\": \"#a6d189\",\n \"--dsw-static-green-900\": \"color-mix(in srgb, #a6d189 30%, #303446)\",\n \"--dsw-static-neutral-00\": \"#c6d0f5\",\n \"--dsw-static-neutral-1000\": \"#232634\",\n \"--dsw-static-neutral-100\": \"#a5adce\",\n \"--dsw-static-neutral-150\": \"#a5adce\",\n \"--dsw-static-neutral-200\": \"#949cbb\",\n \"--dsw-static-neutral-250\": \"#949cbb\",\n \"--dsw-static-neutral-300\": \"#838ba7\",\n \"--dsw-static-neutral-400\": \"#737994\",\n \"--dsw-static-neutral-500\": \"#626880\",\n \"--dsw-static-neutral-50\": \"#c6d0f5\",\n \"--dsw-static-neutral-550\": \"#51576d\",\n \"--dsw-static-neutral-600\": \"#51576d\",\n \"--dsw-static-neutral-700\": \"#414559\",\n \"--dsw-static-neutral-800\": \"#414559\",\n \"--dsw-static-neutral-850\": \"#303446\",\n \"--dsw-static-neutral-900\": \"#292c3c\",\n \"--dsw-static-neutral-bluish-00\": \"#c6d0f5\",\n \"--dsw-static-neutral-bluish-1000\": \"#232634\",\n \"--dsw-static-neutral-bluish-100\": \"#a5adce\",\n \"--dsw-static-neutral-bluish-150\": \"#a5adce\",\n \"--dsw-static-neutral-bluish-200\": \"#949cbb\",\n \"--dsw-static-neutral-bluish-300\": \"#838ba7\",\n \"--dsw-static-neutral-bluish-400\": \"#737994\",\n \"--dsw-static-neutral-bluish-500\": \"#626880\",\n \"--dsw-static-neutral-bluish-50\": \"#c6d0f5\",\n \"--dsw-static-neutral-bluish-600\": \"#51576d\",\n \"--dsw-static-neutral-bluish-60\": \"#b5bfe2\",\n \"--dsw-static-neutral-bluish-700\": \"#414559\",\n \"--dsw-static-neutral-bluish-750\": \"#414559\",\n \"--dsw-static-neutral-bluish-75\": \"#b5bfe2\",\n \"--dsw-static-neutral-bluish-800\": \"#414559\",\n \"--dsw-static-neutral-bluish-850\": \"#303446\",\n \"--dsw-static-neutral-bluish-875\": \"#292c3c\",\n \"--dsw-static-neutral-bluish-900\": \"#292c3c\",\n \"--dsw-static-neutral-bluish-950\": \"#232634\",\n \"--dsw-static-red-100\": \"color-mix(in srgb, #e78284 20%, #303446)\",\n \"--dsw-static-red-400\": \"color-mix(in srgb, #e78284 70%, #303446)\",\n \"--dsw-static-red-500\": \"#e78284\",\n \"--dsw-static-red-50\": \"color-mix(in srgb, #e78284 10%, #303446)\",\n \"--dsw-static-red-600\": \"#e78284\",\n \"--dsw-static-red-900\": \"color-mix(in srgb, #e78284 34%, #303446)\",\n \"--dsw-alias-bg-base\": \"var(--dsw-static-neutral-bluish-950)\",\n \"--dsw-alias-bg-layer-1\": \"var(--dsw-static-neutral-bluish-875)\",\n \"--dsw-alias-bg-layer-2\": \"var(--dsw-static-neutral-bluish-850)\",\n \"--dsw-alias-bg-layer-3\": \"var(--dsw-static-neutral-bluish-800)\",\n \"--dsw-alias-bg-mask-1\": \"rgba(0, 0, 0, 0.5)\",\n \"--dsw-alias-bg-mask-2\": \"rgba(0, 0, 0, 0.2)\",\n \"--dsw-alias-bg-mask-3\": \"rgba(0, 0, 0, 0.48)\",\n \"--dsw-alias-bg-mask-photo\": \"rgba(0, 0, 0, 0.88)\",\n \"--dsw-alias-bg-mask-drop\": \"rgba(39, 39, 48, 0.7)\",\n \"--dsw-alias-bg-module-platform\": \"var(--dsw-static-neutral-bluish-800)\",\n \"--dsw-alias-bg-multi-select\": \"var(--dsw-static-neutral-850)\",\n \"--dsw-alias-bg-overlay\": \"var(--dsw-static-neutral-bluish-700)\",\n \"--dsw-alias-bg-skeleton\": \"rgba(255, 255, 255, 0.08)\",\n \"--dsw-alias-border-inverted2\": \"rgba(255, 255, 255, 0.08)\",\n \"--dsw-alias-border-inverted\": \"rgba(255, 255, 255, 0.06)\",\n \"--dsw-alias-border-l1\": \"rgba(255, 255, 255, 0.06)\",\n \"--dsw-alias-border-l2-darkmode-thin\": \"rgba(255, 255, 255, 0.06)\",\n \"--dsw-alias-border-l2\": \"rgba(255, 255, 255, 0.12)\",\n \"--dsw-alias-border-l3\": \"rgba(255, 255, 255, 0.16)\",\n \"--dsw-alias-border-l4\": \"rgba(255, 255, 255, 0.2)\",\n \"--dsw-alias-brand-primary-invert\": \"var(--dsw-static-neutral-bluish-50)\",\n \"--dsw-alias-brand-primary-new-colorprimary-new-color\": \"#8caaee\",\n \"--dsw-alias-brand-primary\": \"var(--dsw-static-neutral-bluish-50)\",\n \"--dsw-alias-brand-text\": \"var(--dsw-static-neutral-bluish-50)\",\n \"--dsw-alias-button-contrast-fill\": \"var(--dsw-static-neutral-bluish-50)\",\n \"--dsw-alias-button-elevated-fill\": \"var(--dsw-static-neutral-bluish-750)\",\n \"--dsw-alias-button-floating-fill\": \"var(--dsw-static-neutral-bluish-850)\",\n \"--dsw-alias-button-floating-hover\": \"var(--dsw-static-neutral-bluish-800)\",\n \"--dsw-alias-button-ghost-active-border\": \"var(--dsw-static-neutral-bluish-600)\",\n \"--dsw-alias-button-ghost-active-fill\": \"var(--dsw-static-neutral-bluish-750)\",\n \"--dsw-alias-button-ghost-active-hover\": \"var(--dsw-static-neutral-bluish-700)\",\n \"--dsw-alias-button-info-fill\": \"var(--dsw-static-deepseek-400)\",\n \"--dsw-alias-button-info-hover\": \"var(--dsw-static-deepseek-500)\",\n \"--dsw-alias-button-primary-dimmed\": \"var(--dsw-static-neutral-bluish-750)\",\n \"--dsw-alias-button-primary-fill\": \"var(--dsw-alias-brand-primary)\",\n \"--dsw-alias-button-primary-hover\": \"var(--dsw-static-neutral-bluish-100)\",\n \"--dsw-alias-button-tool-bar-fill-invisible\": \"rgba(31, 31, 31, 0.36)\",\n \"--dsw-alias-button-tool-bar-fill\": \"rgba(84, 85, 87, 0.5)\",\n \"--dsw-alias-button-tool-bar-hover\": \"rgba(84, 85, 87, 0.6)\",\n \"--dsw-alias-interactive-bg-active\": \"rgba(255, 255, 255, 0.14)\",\n \"--dsw-alias-interactive-bg-hover-accent\": \"rgba(255, 255, 255, 0.24)\",\n \"--dsw-alias-interactive-bg-hover-danger\": \"rgba(242, 90, 90, 0.15)\",\n \"--dsw-alias-interactive-bg-hover-solid\": \"var(--dsw-static-neutral-bluish-800)\",\n \"--dsw-alias-interactive-bg-hover\": \"rgba(255, 255, 255, 0.08)\",\n \"--dsw-alias-label-caption\": \"var(--dsw-static-neutral-bluish-600)\",\n \"--dsw-alias-label-dimmed\": \"var(--dsw-static-neutral-bluish-750)\",\n \"--dsw-alias-label-primary-bluish\": \"var(--dsw-static-neutral-bluish-50)\",\n \"--dsw-alias-label-primary-dimmed\": \"var(--dsw-static-neutral-bluish-100)\",\n \"--dsw-alias-label-primary-foreground\": \"var(--dsw-static-neutral-bluish-1000)\",\n \"--dsw-alias-label-primary-inverted\": \"var(--dsw-static-neutral-bluish-800)\",\n \"--dsw-alias-label-primary\": \"var(--dsw-static-neutral-bluish-50)\",\n \"--dsw-alias-label-secondary\": \"var(--dsw-static-neutral-bluish-300)\",\n \"--dsw-alias-label-tertiary\": \"var(--dsw-static-neutral-bluish-400)\",\n \"--dsw-alias-markdown-citation\": \"var(--dsw-static-neutral-bluish-800)\",\n \"--dsw-alias-markdown-code-block-banner\": \"var(--dsw-static-neutral-bluish-850)\",\n \"--dsw-alias-markdown-code-block\": \"var(--dsw-static-neutral-bluish-900)\",\n \"--dsw-alias-markdown-code-segment-selected\": \"var(--dsw-static-neutral-bluish-800)\",\n \"--dsw-alias-markdown-code-segment-unselected\": \"var(--dsw-static-neutral-bluish-900)\",\n \"--dsw-alias-markdown-inline-code\": \"var(--dsw-static-neutral-bluish-850)\",\n \"--dsw-alias-markdown-placeholder\": \"var(--dsw-static-neutral-bluish-850)\",\n \"--dsw-alias-markdown-tag\": \"var(--dsw-static-neutral-bluish-850)\",\n \"--dsw-alias-scrollbar-bg-l1\": \"var(--dsw-static-neutral-700)\",\n \"--dsw-alias-scrollbar-bg-l2\": \"var(--dsw-static-neutral-600)\",\n \"--dsw-alias-scrollbar-hover-l1\": \"var(--dsw-static-neutral-600)\",\n \"--dsw-alias-scrollbar-hover-l2\": \"var(--dsw-static-neutral-550)\",\n \"--dsw-alias-state-business-primary\": \"var(--dsw-static-deepseek-400)\",\n \"--dsw-alias-state-business-tertiary\": \"var(--dsw-static-deepseek-800)\",\n \"--dsw-alias-state-error-primary\": \"var(--dsw-static-red-400)\",\n \"--dsw-alias-state-error-secondary\": \"var(--dsw-static-red-400)\",\n \"--dsw-alias-state-success-primary\": \"var(--dsw-static-green-500)\",\n \"--dsw-alias-state-success-secondary\": \"var(--dsw-static-green-400)\",\n \"--dsw-alias-state-success-tertiary\": \"var(--dsw-static-green-900)\",\n \"--dsw-alias-state-warn-label\": \"var(--dsw-static-amber-600)\",\n \"--dsw-alias-state-warn-primary\": \"var(--dsw-static-amber-500)\",\n \"--dsw-alias-state-warn-secondary\": \"var(--dsw-static-amber-400)\",\n \"--dsw-alias-state-warn-tertiary\": \"var(--dsw-static-amber-900)\",\n \"--dsw-alias-toast-bg\": \"var(--dsw-static-neutral-bluish-750)\",\n \"--dsw-alias-tooltip-bg\": \"var(--dsw-static-neutral-bluish-750)\",\n \"--dsw-specific-bubble-highlight\": \"var(--dsw-static-neutral-bluish-750)\",\n \"--dsw-specific-bubble\": \"var(--dsw-static-neutral-bluish-850)\",\n \"--dsw-specific-input-major\": \"var(--dsw-static-neutral-bluish-850)\",\n \"--dsw-specific-login-input\": \"var(--dsw-static-neutral-bluish-900)\",\n \"--dsw-specific-menu\": \"var(--dsw-alias-bg-layer-3)\",\n \"--dsw-specific-selector\": \"var(--dsw-static-neutral-bluish-800)\",\n \"--dsw-specific-sidebar-fill\": \"var(--dsw-static-neutral-bluish-900)\",\n \"--dsw-specific-sidebar-nav-item-active-accent\": \"var(--dsw-static-neutral-bluish-800)\",\n \"--dsw-specific-sidebar-nav-item-active\": \"var(--dsw-static-neutral-bluish-750)\",\n \"--dsw-specific-sidebar-nav-item-hover\": \"var(--dsw-static-neutral-bluish-850)\",\n \"--dsw-specific-tip\": \"var(--dsw-static-neutral-bluish-800)\",\n },\n}\n\nexport const CATPPUCCIN_MACCHIATO: CatppuccinFlavorInfo = {\n themeId: 'catppuccin-macchiato',\n colorScheme: 'dark',\n label: 'Macchiato',\n accent: '#8aadf4',\n tokens: {\n \"--dsw-static-amber-100\": \"color-mix(in srgb, #f5a97f 20%, #24273a)\",\n \"--dsw-static-amber-400\": \"#eed49f\",\n \"--dsw-static-amber-500\": \"#f5a97f\",\n \"--dsw-static-amber-600\": \"#f5a97f\",\n \"--dsw-static-amber-900\": \"color-mix(in srgb, #f5a97f 32%, #24273a)\",\n \"--dsw-static-blue-100\": \"color-mix(in srgb, #8aadf4 24%, #24273a)\",\n \"--dsw-static-blue-300\": \"color-mix(in srgb, #8aadf4 50%, #24273a)\",\n \"--dsw-static-blue-400\": \"color-mix(in srgb, #8aadf4 66%, #24273a)\",\n \"--dsw-static-blue-450\": \"color-mix(in srgb, #8aadf4 84%, #24273a)\",\n \"--dsw-static-blue-500\": \"#8aadf4\",\n \"--dsw-static-blue-50\": \"color-mix(in srgb, #8aadf4 10%, #24273a)\",\n \"--dsw-static-blue-50p\": \"color-mix(in srgb, #8aadf4 14%, #24273a)\",\n \"--dsw-static-blue-600\": \"color-mix(in srgb, #8aadf4 84%, #24273a)\",\n \"--dsw-static-blue-75\": \"color-mix(in srgb, #8aadf4 18%, #24273a)\",\n \"--dsw-static-blue-800\": \"color-mix(in srgb, #8aadf4 52%, #24273a)\",\n \"--dsw-static-blue-900\": \"color-mix(in srgb, #8aadf4 40%, #24273a)\",\n \"--dsw-static-blue-950\": \"color-mix(in srgb, #8aadf4 28%, #24273a)\",\n \"--dsw-static-deepseek-100\": \"color-mix(in srgb, #8aadf4 24%, #24273a)\",\n \"--dsw-static-deepseek-200\": \"color-mix(in srgb, #8aadf4 36%, #24273a)\",\n \"--dsw-static-deepseek-300\": \"color-mix(in srgb, #8aadf4 50%, #24273a)\",\n \"--dsw-static-deepseek-400\": \"color-mix(in srgb, #8aadf4 66%, #24273a)\",\n \"--dsw-static-deepseek-450\": \"color-mix(in srgb, #8aadf4 84%, #24273a)\",\n \"--dsw-static-deepseek-500\": \"#8aadf4\",\n \"--dsw-static-deepseek-50\": \"color-mix(in srgb, #8aadf4 10%, #24273a)\",\n \"--dsw-static-deepseek-600\": \"color-mix(in srgb, #8aadf4 84%, #24273a)\",\n \"--dsw-static-deepseek-700-delete\": \"color-mix(in srgb, #8aadf4 68%, #24273a)\",\n \"--dsw-static-deepseek-800\": \"color-mix(in srgb, #8aadf4 52%, #24273a)\",\n \"--dsw-static-deepseek-900\": \"color-mix(in srgb, #8aadf4 40%, #24273a)\",\n \"--dsw-static-green-100\": \"color-mix(in srgb, #a6da95 18%, #24273a)\",\n \"--dsw-static-green-400\": \"color-mix(in srgb, #a6da95 80%, #24273a)\",\n \"--dsw-static-green-500\": \"#a6da95\",\n \"--dsw-static-green-900\": \"color-mix(in srgb, #a6da95 30%, #24273a)\",\n \"--dsw-static-neutral-00\": \"#cad3f5\",\n \"--dsw-static-neutral-1000\": \"#181926\",\n \"--dsw-static-neutral-100\": \"#a5adcb\",\n \"--dsw-static-neutral-150\": \"#a5adcb\",\n \"--dsw-static-neutral-200\": \"#939ab7\",\n \"--dsw-static-neutral-250\": \"#939ab7\",\n \"--dsw-static-neutral-300\": \"#8087a2\",\n \"--dsw-static-neutral-400\": \"#6e738d\",\n \"--dsw-static-neutral-500\": \"#5b6078\",\n \"--dsw-static-neutral-50\": \"#cad3f5\",\n \"--dsw-static-neutral-550\": \"#494d64\",\n \"--dsw-static-neutral-600\": \"#494d64\",\n \"--dsw-static-neutral-700\": \"#363a4f\",\n \"--dsw-static-neutral-800\": \"#363a4f\",\n \"--dsw-static-neutral-850\": \"#24273a\",\n \"--dsw-static-neutral-900\": \"#1e2030\",\n \"--dsw-static-neutral-bluish-00\": \"#cad3f5\",\n \"--dsw-static-neutral-bluish-1000\": \"#181926\",\n \"--dsw-static-neutral-bluish-100\": \"#a5adcb\",\n \"--dsw-static-neutral-bluish-150\": \"#a5adcb\",\n \"--dsw-static-neutral-bluish-200\": \"#939ab7\",\n \"--dsw-static-neutral-bluish-300\": \"#8087a2\",\n \"--dsw-static-neutral-bluish-400\": \"#6e738d\",\n \"--dsw-static-neutral-bluish-500\": \"#5b6078\",\n \"--dsw-static-neutral-bluish-50\": \"#cad3f5\",\n \"--dsw-static-neutral-bluish-600\": \"#494d64\",\n \"--dsw-static-neutral-bluish-60\": \"#b8c0e0\",\n \"--dsw-static-neutral-bluish-700\": \"#363a4f\",\n \"--dsw-static-neutral-bluish-750\": \"#363a4f\",\n \"--dsw-static-neutral-bluish-75\": \"#b8c0e0\",\n \"--dsw-static-neutral-bluish-800\": \"#363a4f\",\n \"--dsw-static-neutral-bluish-850\": \"#24273a\",\n \"--dsw-static-neutral-bluish-875\": \"#1e2030\",\n \"--dsw-static-neutral-bluish-900\": \"#1e2030\",\n \"--dsw-static-neutral-bluish-950\": \"#181926\",\n \"--dsw-static-red-100\": \"color-mix(in srgb, #ed8796 20%, #24273a)\",\n \"--dsw-static-red-400\": \"color-mix(in srgb, #ed8796 70%, #24273a)\",\n \"--dsw-static-red-500\": \"#ed8796\",\n \"--dsw-static-red-50\": \"color-mix(in srgb, #ed8796 10%, #24273a)\",\n \"--dsw-static-red-600\": \"#ed8796\",\n \"--dsw-static-red-900\": \"color-mix(in srgb, #ed8796 34%, #24273a)\",\n \"--dsw-alias-bg-base\": \"var(--dsw-static-neutral-bluish-950)\",\n \"--dsw-alias-bg-layer-1\": \"var(--dsw-static-neutral-bluish-875)\",\n \"--dsw-alias-bg-layer-2\": \"var(--dsw-static-neutral-bluish-850)\",\n \"--dsw-alias-bg-layer-3\": \"var(--dsw-static-neutral-bluish-800)\",\n \"--dsw-alias-bg-mask-1\": \"rgba(0, 0, 0, 0.5)\",\n \"--dsw-alias-bg-mask-2\": \"rgba(0, 0, 0, 0.2)\",\n \"--dsw-alias-bg-mask-3\": \"rgba(0, 0, 0, 0.48)\",\n \"--dsw-alias-bg-mask-photo\": \"rgba(0, 0, 0, 0.88)\",\n \"--dsw-alias-bg-mask-drop\": \"rgba(39, 39, 48, 0.7)\",\n \"--dsw-alias-bg-module-platform\": \"var(--dsw-static-neutral-bluish-800)\",\n \"--dsw-alias-bg-multi-select\": \"var(--dsw-static-neutral-850)\",\n \"--dsw-alias-bg-overlay\": \"var(--dsw-static-neutral-bluish-700)\",\n \"--dsw-alias-bg-skeleton\": \"rgba(255, 255, 255, 0.08)\",\n \"--dsw-alias-border-inverted2\": \"rgba(255, 255, 255, 0.08)\",\n \"--dsw-alias-border-inverted\": \"rgba(255, 255, 255, 0.06)\",\n \"--dsw-alias-border-l1\": \"rgba(255, 255, 255, 0.06)\",\n \"--dsw-alias-border-l2-darkmode-thin\": \"rgba(255, 255, 255, 0.06)\",\n \"--dsw-alias-border-l2\": \"rgba(255, 255, 255, 0.12)\",\n \"--dsw-alias-border-l3\": \"rgba(255, 255, 255, 0.16)\",\n \"--dsw-alias-border-l4\": \"rgba(255, 255, 255, 0.2)\",\n \"--dsw-alias-brand-primary-invert\": \"var(--dsw-static-neutral-bluish-50)\",\n \"--dsw-alias-brand-primary-new-colorprimary-new-color\": \"#8aadf4\",\n \"--dsw-alias-brand-primary\": \"var(--dsw-static-neutral-bluish-50)\",\n \"--dsw-alias-brand-text\": \"var(--dsw-static-neutral-bluish-50)\",\n \"--dsw-alias-button-contrast-fill\": \"var(--dsw-static-neutral-bluish-50)\",\n \"--dsw-alias-button-elevated-fill\": \"var(--dsw-static-neutral-bluish-750)\",\n \"--dsw-alias-button-floating-fill\": \"var(--dsw-static-neutral-bluish-850)\",\n \"--dsw-alias-button-floating-hover\": \"var(--dsw-static-neutral-bluish-800)\",\n \"--dsw-alias-button-ghost-active-border\": \"var(--dsw-static-neutral-bluish-600)\",\n \"--dsw-alias-button-ghost-active-fill\": \"var(--dsw-static-neutral-bluish-750)\",\n \"--dsw-alias-button-ghost-active-hover\": \"var(--dsw-static-neutral-bluish-700)\",\n \"--dsw-alias-button-info-fill\": \"var(--dsw-static-deepseek-400)\",\n \"--dsw-alias-button-info-hover\": \"var(--dsw-static-deepseek-500)\",\n \"--dsw-alias-button-primary-dimmed\": \"var(--dsw-static-neutral-bluish-750)\",\n \"--dsw-alias-button-primary-fill\": \"var(--dsw-alias-brand-primary)\",\n \"--dsw-alias-button-primary-hover\": \"var(--dsw-static-neutral-bluish-100)\",\n \"--dsw-alias-button-tool-bar-fill-invisible\": \"rgba(31, 31, 31, 0.36)\",\n \"--dsw-alias-button-tool-bar-fill\": \"rgba(84, 85, 87, 0.5)\",\n \"--dsw-alias-button-tool-bar-hover\": \"rgba(84, 85, 87, 0.6)\",\n \"--dsw-alias-interactive-bg-active\": \"rgba(255, 255, 255, 0.14)\",\n \"--dsw-alias-interactive-bg-hover-accent\": \"rgba(255, 255, 255, 0.24)\",\n \"--dsw-alias-interactive-bg-hover-danger\": \"rgba(242, 90, 90, 0.15)\",\n \"--dsw-alias-interactive-bg-hover-solid\": \"var(--dsw-static-neutral-bluish-800)\",\n \"--dsw-alias-interactive-bg-hover\": \"rgba(255, 255, 255, 0.08)\",\n \"--dsw-alias-label-caption\": \"var(--dsw-static-neutral-bluish-600)\",\n \"--dsw-alias-label-dimmed\": \"var(--dsw-static-neutral-bluish-750)\",\n \"--dsw-alias-label-primary-bluish\": \"var(--dsw-static-neutral-bluish-50)\",\n \"--dsw-alias-label-primary-dimmed\": \"var(--dsw-static-neutral-bluish-100)\",\n \"--dsw-alias-label-primary-foreground\": \"var(--dsw-static-neutral-bluish-1000)\",\n \"--dsw-alias-label-primary-inverted\": \"var(--dsw-static-neutral-bluish-800)\",\n \"--dsw-alias-label-primary\": \"var(--dsw-static-neutral-bluish-50)\",\n \"--dsw-alias-label-secondary\": \"var(--dsw-static-neutral-bluish-300)\",\n \"--dsw-alias-label-tertiary\": \"var(--dsw-static-neutral-bluish-400)\",\n \"--dsw-alias-markdown-citation\": \"var(--dsw-static-neutral-bluish-800)\",\n \"--dsw-alias-markdown-code-block-banner\": \"var(--dsw-static-neutral-bluish-850)\",\n \"--dsw-alias-markdown-code-block\": \"var(--dsw-static-neutral-bluish-900)\",\n \"--dsw-alias-markdown-code-segment-selected\": \"var(--dsw-static-neutral-bluish-800)\",\n \"--dsw-alias-markdown-code-segment-unselected\": \"var(--dsw-static-neutral-bluish-900)\",\n \"--dsw-alias-markdown-inline-code\": \"var(--dsw-static-neutral-bluish-850)\",\n \"--dsw-alias-markdown-placeholder\": \"var(--dsw-static-neutral-bluish-850)\",\n \"--dsw-alias-markdown-tag\": \"var(--dsw-static-neutral-bluish-850)\",\n \"--dsw-alias-scrollbar-bg-l1\": \"var(--dsw-static-neutral-700)\",\n \"--dsw-alias-scrollbar-bg-l2\": \"var(--dsw-static-neutral-600)\",\n \"--dsw-alias-scrollbar-hover-l1\": \"var(--dsw-static-neutral-600)\",\n \"--dsw-alias-scrollbar-hover-l2\": \"var(--dsw-static-neutral-550)\",\n \"--dsw-alias-state-business-primary\": \"var(--dsw-static-deepseek-400)\",\n \"--dsw-alias-state-business-tertiary\": \"var(--dsw-static-deepseek-800)\",\n \"--dsw-alias-state-error-primary\": \"var(--dsw-static-red-400)\",\n \"--dsw-alias-state-error-secondary\": \"var(--dsw-static-red-400)\",\n \"--dsw-alias-state-success-primary\": \"var(--dsw-static-green-500)\",\n \"--dsw-alias-state-success-secondary\": \"var(--dsw-static-green-400)\",\n \"--dsw-alias-state-success-tertiary\": \"var(--dsw-static-green-900)\",\n \"--dsw-alias-state-warn-label\": \"var(--dsw-static-amber-600)\",\n \"--dsw-alias-state-warn-primary\": \"var(--dsw-static-amber-500)\",\n \"--dsw-alias-state-warn-secondary\": \"var(--dsw-static-amber-400)\",\n \"--dsw-alias-state-warn-tertiary\": \"var(--dsw-static-amber-900)\",\n \"--dsw-alias-toast-bg\": \"var(--dsw-static-neutral-bluish-750)\",\n \"--dsw-alias-tooltip-bg\": \"var(--dsw-static-neutral-bluish-750)\",\n \"--dsw-specific-bubble-highlight\": \"var(--dsw-static-neutral-bluish-750)\",\n \"--dsw-specific-bubble\": \"var(--dsw-static-neutral-bluish-850)\",\n \"--dsw-specific-input-major\": \"var(--dsw-static-neutral-bluish-850)\",\n \"--dsw-specific-login-input\": \"var(--dsw-static-neutral-bluish-900)\",\n \"--dsw-specific-menu\": \"var(--dsw-alias-bg-layer-3)\",\n \"--dsw-specific-selector\": \"var(--dsw-static-neutral-bluish-800)\",\n \"--dsw-specific-sidebar-fill\": \"var(--dsw-static-neutral-bluish-900)\",\n \"--dsw-specific-sidebar-nav-item-active-accent\": \"var(--dsw-static-neutral-bluish-800)\",\n \"--dsw-specific-sidebar-nav-item-active\": \"var(--dsw-static-neutral-bluish-750)\",\n \"--dsw-specific-sidebar-nav-item-hover\": \"var(--dsw-static-neutral-bluish-850)\",\n \"--dsw-specific-tip\": \"var(--dsw-static-neutral-bluish-800)\",\n },\n}\n\nexport const CATPPUCCIN_MOCHA: CatppuccinFlavorInfo = {\n themeId: 'catppuccin-mocha',\n colorScheme: 'dark',\n label: 'Mocha',\n accent: '#89b4fa',\n tokens: {\n \"--dsw-static-amber-100\": \"color-mix(in srgb, #fab387 20%, #1e1e2e)\",\n \"--dsw-static-amber-400\": \"#f9e2af\",\n \"--dsw-static-amber-500\": \"#fab387\",\n \"--dsw-static-amber-600\": \"#fab387\",\n \"--dsw-static-amber-900\": \"color-mix(in srgb, #fab387 32%, #1e1e2e)\",\n \"--dsw-static-blue-100\": \"color-mix(in srgb, #89b4fa 24%, #1e1e2e)\",\n \"--dsw-static-blue-300\": \"color-mix(in srgb, #89b4fa 50%, #1e1e2e)\",\n \"--dsw-static-blue-400\": \"color-mix(in srgb, #89b4fa 66%, #1e1e2e)\",\n \"--dsw-static-blue-450\": \"color-mix(in srgb, #89b4fa 84%, #1e1e2e)\",\n \"--dsw-static-blue-500\": \"#89b4fa\",\n \"--dsw-static-blue-50\": \"color-mix(in srgb, #89b4fa 10%, #1e1e2e)\",\n \"--dsw-static-blue-50p\": \"color-mix(in srgb, #89b4fa 14%, #1e1e2e)\",\n \"--dsw-static-blue-600\": \"color-mix(in srgb, #89b4fa 84%, #1e1e2e)\",\n \"--dsw-static-blue-75\": \"color-mix(in srgb, #89b4fa 18%, #1e1e2e)\",\n \"--dsw-static-blue-800\": \"color-mix(in srgb, #89b4fa 52%, #1e1e2e)\",\n \"--dsw-static-blue-900\": \"color-mix(in srgb, #89b4fa 40%, #1e1e2e)\",\n \"--dsw-static-blue-950\": \"color-mix(in srgb, #89b4fa 28%, #1e1e2e)\",\n \"--dsw-static-deepseek-100\": \"color-mix(in srgb, #89b4fa 24%, #1e1e2e)\",\n \"--dsw-static-deepseek-200\": \"color-mix(in srgb, #89b4fa 36%, #1e1e2e)\",\n \"--dsw-static-deepseek-300\": \"color-mix(in srgb, #89b4fa 50%, #1e1e2e)\",\n \"--dsw-static-deepseek-400\": \"color-mix(in srgb, #89b4fa 66%, #1e1e2e)\",\n \"--dsw-static-deepseek-450\": \"color-mix(in srgb, #89b4fa 84%, #1e1e2e)\",\n \"--dsw-static-deepseek-500\": \"#89b4fa\",\n \"--dsw-static-deepseek-50\": \"color-mix(in srgb, #89b4fa 10%, #1e1e2e)\",\n \"--dsw-static-deepseek-600\": \"color-mix(in srgb, #89b4fa 84%, #1e1e2e)\",\n \"--dsw-static-deepseek-700-delete\": \"color-mix(in srgb, #89b4fa 68%, #1e1e2e)\",\n \"--dsw-static-deepseek-800\": \"color-mix(in srgb, #89b4fa 52%, #1e1e2e)\",\n \"--dsw-static-deepseek-900\": \"color-mix(in srgb, #89b4fa 40%, #1e1e2e)\",\n \"--dsw-static-green-100\": \"color-mix(in srgb, #a6e3a1 18%, #1e1e2e)\",\n \"--dsw-static-green-400\": \"color-mix(in srgb, #a6e3a1 80%, #1e1e2e)\",\n \"--dsw-static-green-500\": \"#a6e3a1\",\n \"--dsw-static-green-900\": \"color-mix(in srgb, #a6e3a1 30%, #1e1e2e)\",\n \"--dsw-static-neutral-00\": \"#cdd6f4\",\n \"--dsw-static-neutral-1000\": \"#11111b\",\n \"--dsw-static-neutral-100\": \"#a6adc8\",\n \"--dsw-static-neutral-150\": \"#a6adc8\",\n \"--dsw-static-neutral-200\": \"#9399b2\",\n \"--dsw-static-neutral-250\": \"#9399b2\",\n \"--dsw-static-neutral-300\": \"#7f849c\",\n \"--dsw-static-neutral-400\": \"#6c7086\",\n \"--dsw-static-neutral-500\": \"#585b70\",\n \"--dsw-static-neutral-50\": \"#cdd6f4\",\n \"--dsw-static-neutral-550\": \"#45475a\",\n \"--dsw-static-neutral-600\": \"#45475a\",\n \"--dsw-static-neutral-700\": \"#313244\",\n \"--dsw-static-neutral-800\": \"#313244\",\n \"--dsw-static-neutral-850\": \"#1e1e2e\",\n \"--dsw-static-neutral-900\": \"#181825\",\n \"--dsw-static-neutral-bluish-00\": \"#cdd6f4\",\n \"--dsw-static-neutral-bluish-1000\": \"#11111b\",\n \"--dsw-static-neutral-bluish-100\": \"#a6adc8\",\n \"--dsw-static-neutral-bluish-150\": \"#a6adc8\",\n \"--dsw-static-neutral-bluish-200\": \"#9399b2\",\n \"--dsw-static-neutral-bluish-300\": \"#7f849c\",\n \"--dsw-static-neutral-bluish-400\": \"#6c7086\",\n \"--dsw-static-neutral-bluish-500\": \"#585b70\",\n \"--dsw-static-neutral-bluish-50\": \"#cdd6f4\",\n \"--dsw-static-neutral-bluish-600\": \"#45475a\",\n \"--dsw-static-neutral-bluish-60\": \"#bac2de\",\n \"--dsw-static-neutral-bluish-700\": \"#313244\",\n \"--dsw-static-neutral-bluish-750\": \"#313244\",\n \"--dsw-static-neutral-bluish-75\": \"#bac2de\",\n \"--dsw-static-neutral-bluish-800\": \"#313244\",\n \"--dsw-static-neutral-bluish-850\": \"#1e1e2e\",\n \"--dsw-static-neutral-bluish-875\": \"#181825\",\n \"--dsw-static-neutral-bluish-900\": \"#181825\",\n \"--dsw-static-neutral-bluish-950\": \"#11111b\",\n \"--dsw-static-red-100\": \"color-mix(in srgb, #f38ba8 20%, #1e1e2e)\",\n \"--dsw-static-red-400\": \"color-mix(in srgb, #f38ba8 70%, #1e1e2e)\",\n \"--dsw-static-red-500\": \"#f38ba8\",\n \"--dsw-static-red-50\": \"color-mix(in srgb, #f38ba8 10%, #1e1e2e)\",\n \"--dsw-static-red-600\": \"#f38ba8\",\n \"--dsw-static-red-900\": \"color-mix(in srgb, #f38ba8 34%, #1e1e2e)\",\n \"--dsw-alias-bg-base\": \"var(--dsw-static-neutral-bluish-950)\",\n \"--dsw-alias-bg-layer-1\": \"var(--dsw-static-neutral-bluish-875)\",\n \"--dsw-alias-bg-layer-2\": \"var(--dsw-static-neutral-bluish-850)\",\n \"--dsw-alias-bg-layer-3\": \"var(--dsw-static-neutral-bluish-800)\",\n \"--dsw-alias-bg-mask-1\": \"rgba(0, 0, 0, 0.5)\",\n \"--dsw-alias-bg-mask-2\": \"rgba(0, 0, 0, 0.2)\",\n \"--dsw-alias-bg-mask-3\": \"rgba(0, 0, 0, 0.48)\",\n \"--dsw-alias-bg-mask-photo\": \"rgba(0, 0, 0, 0.88)\",\n \"--dsw-alias-bg-mask-drop\": \"rgba(39, 39, 48, 0.7)\",\n \"--dsw-alias-bg-module-platform\": \"var(--dsw-static-neutral-bluish-800)\",\n \"--dsw-alias-bg-multi-select\": \"var(--dsw-static-neutral-850)\",\n \"--dsw-alias-bg-overlay\": \"var(--dsw-static-neutral-bluish-700)\",\n \"--dsw-alias-bg-skeleton\": \"rgba(255, 255, 255, 0.08)\",\n \"--dsw-alias-border-inverted2\": \"rgba(255, 255, 255, 0.08)\",\n \"--dsw-alias-border-inverted\": \"rgba(255, 255, 255, 0.06)\",\n \"--dsw-alias-border-l1\": \"rgba(255, 255, 255, 0.06)\",\n \"--dsw-alias-border-l2-darkmode-thin\": \"rgba(255, 255, 255, 0.06)\",\n \"--dsw-alias-border-l2\": \"rgba(255, 255, 255, 0.12)\",\n \"--dsw-alias-border-l3\": \"rgba(255, 255, 255, 0.16)\",\n \"--dsw-alias-border-l4\": \"rgba(255, 255, 255, 0.2)\",\n \"--dsw-alias-brand-primary-invert\": \"var(--dsw-static-neutral-bluish-50)\",\n \"--dsw-alias-brand-primary-new-colorprimary-new-color\": \"#89b4fa\",\n \"--dsw-alias-brand-primary\": \"var(--dsw-static-neutral-bluish-50)\",\n \"--dsw-alias-brand-text\": \"var(--dsw-static-neutral-bluish-50)\",\n \"--dsw-alias-button-contrast-fill\": \"var(--dsw-static-neutral-bluish-50)\",\n \"--dsw-alias-button-elevated-fill\": \"var(--dsw-static-neutral-bluish-750)\",\n \"--dsw-alias-button-floating-fill\": \"var(--dsw-static-neutral-bluish-850)\",\n \"--dsw-alias-button-floating-hover\": \"var(--dsw-static-neutral-bluish-800)\",\n \"--dsw-alias-button-ghost-active-border\": \"var(--dsw-static-neutral-bluish-600)\",\n \"--dsw-alias-button-ghost-active-fill\": \"var(--dsw-static-neutral-bluish-750)\",\n \"--dsw-alias-button-ghost-active-hover\": \"var(--dsw-static-neutral-bluish-700)\",\n \"--dsw-alias-button-info-fill\": \"var(--dsw-static-deepseek-400)\",\n \"--dsw-alias-button-info-hover\": \"var(--dsw-static-deepseek-500)\",\n \"--dsw-alias-button-primary-dimmed\": \"var(--dsw-static-neutral-bluish-750)\",\n \"--dsw-alias-button-primary-fill\": \"var(--dsw-alias-brand-primary)\",\n \"--dsw-alias-button-primary-hover\": \"var(--dsw-static-neutral-bluish-100)\",\n \"--dsw-alias-button-tool-bar-fill-invisible\": \"rgba(31, 31, 31, 0.36)\",\n \"--dsw-alias-button-tool-bar-fill\": \"rgba(84, 85, 87, 0.5)\",\n \"--dsw-alias-button-tool-bar-hover\": \"rgba(84, 85, 87, 0.6)\",\n \"--dsw-alias-interactive-bg-active\": \"rgba(255, 255, 255, 0.14)\",\n \"--dsw-alias-interactive-bg-hover-accent\": \"rgba(255, 255, 255, 0.24)\",\n \"--dsw-alias-interactive-bg-hover-danger\": \"rgba(242, 90, 90, 0.15)\",\n \"--dsw-alias-interactive-bg-hover-solid\": \"var(--dsw-static-neutral-bluish-800)\",\n \"--dsw-alias-interactive-bg-hover\": \"rgba(255, 255, 255, 0.08)\",\n \"--dsw-alias-label-caption\": \"var(--dsw-static-neutral-bluish-600)\",\n \"--dsw-alias-label-dimmed\": \"var(--dsw-static-neutral-bluish-750)\",\n \"--dsw-alias-label-primary-bluish\": \"var(--dsw-static-neutral-bluish-50)\",\n \"--dsw-alias-label-primary-dimmed\": \"var(--dsw-static-neutral-bluish-100)\",\n \"--dsw-alias-label-primary-foreground\": \"var(--dsw-static-neutral-bluish-1000)\",\n \"--dsw-alias-label-primary-inverted\": \"var(--dsw-static-neutral-bluish-800)\",\n \"--dsw-alias-label-primary\": \"var(--dsw-static-neutral-bluish-50)\",\n \"--dsw-alias-label-secondary\": \"var(--dsw-static-neutral-bluish-300)\",\n \"--dsw-alias-label-tertiary\": \"var(--dsw-static-neutral-bluish-400)\",\n \"--dsw-alias-markdown-citation\": \"var(--dsw-static-neutral-bluish-800)\",\n \"--dsw-alias-markdown-code-block-banner\": \"var(--dsw-static-neutral-bluish-850)\",\n \"--dsw-alias-markdown-code-block\": \"var(--dsw-static-neutral-bluish-900)\",\n \"--dsw-alias-markdown-code-segment-selected\": \"var(--dsw-static-neutral-bluish-800)\",\n \"--dsw-alias-markdown-code-segment-unselected\": \"var(--dsw-static-neutral-bluish-900)\",\n \"--dsw-alias-markdown-inline-code\": \"var(--dsw-static-neutral-bluish-850)\",\n \"--dsw-alias-markdown-placeholder\": \"var(--dsw-static-neutral-bluish-850)\",\n \"--dsw-alias-markdown-tag\": \"var(--dsw-static-neutral-bluish-850)\",\n \"--dsw-alias-scrollbar-bg-l1\": \"var(--dsw-static-neutral-700)\",\n \"--dsw-alias-scrollbar-bg-l2\": \"var(--dsw-static-neutral-600)\",\n \"--dsw-alias-scrollbar-hover-l1\": \"var(--dsw-static-neutral-600)\",\n \"--dsw-alias-scrollbar-hover-l2\": \"var(--dsw-static-neutral-550)\",\n \"--dsw-alias-state-business-primary\": \"var(--dsw-static-deepseek-400)\",\n \"--dsw-alias-state-business-tertiary\": \"var(--dsw-static-deepseek-800)\",\n \"--dsw-alias-state-error-primary\": \"var(--dsw-static-red-400)\",\n \"--dsw-alias-state-error-secondary\": \"var(--dsw-static-red-400)\",\n \"--dsw-alias-state-success-primary\": \"var(--dsw-static-green-500)\",\n \"--dsw-alias-state-success-secondary\": \"var(--dsw-static-green-400)\",\n \"--dsw-alias-state-success-tertiary\": \"var(--dsw-static-green-900)\",\n \"--dsw-alias-state-warn-label\": \"var(--dsw-static-amber-600)\",\n \"--dsw-alias-state-warn-primary\": \"var(--dsw-static-amber-500)\",\n \"--dsw-alias-state-warn-secondary\": \"var(--dsw-static-amber-400)\",\n \"--dsw-alias-state-warn-tertiary\": \"var(--dsw-static-amber-900)\",\n \"--dsw-alias-toast-bg\": \"var(--dsw-static-neutral-bluish-750)\",\n \"--dsw-alias-tooltip-bg\": \"var(--dsw-static-neutral-bluish-750)\",\n \"--dsw-specific-bubble-highlight\": \"var(--dsw-static-neutral-bluish-750)\",\n \"--dsw-specific-bubble\": \"var(--dsw-static-neutral-bluish-850)\",\n \"--dsw-specific-input-major\": \"var(--dsw-static-neutral-bluish-850)\",\n \"--dsw-specific-login-input\": \"var(--dsw-static-neutral-bluish-900)\",\n \"--dsw-specific-menu\": \"var(--dsw-alias-bg-layer-3)\",\n \"--dsw-specific-selector\": \"var(--dsw-static-neutral-bluish-800)\",\n \"--dsw-specific-sidebar-fill\": \"var(--dsw-static-neutral-bluish-900)\",\n \"--dsw-specific-sidebar-nav-item-active-accent\": \"var(--dsw-static-neutral-bluish-800)\",\n \"--dsw-specific-sidebar-nav-item-active\": \"var(--dsw-static-neutral-bluish-750)\",\n \"--dsw-specific-sidebar-nav-item-hover\": \"var(--dsw-static-neutral-bluish-850)\",\n \"--dsw-specific-tip\": \"var(--dsw-static-neutral-bluish-800)\",\n },\n}\n\nexport const CATPPUCCIN_FLAVORS: readonly CatppuccinFlavorInfo[] = [\n CATPPUCCIN_LATTE,\n CATPPUCCIN_FRAPPE,\n CATPPUCCIN_MACCHIATO,\n CATPPUCCIN_MOCHA,\n]\n","/**\n * Runtime seam stamper for the Catppuccin glass layer.\n *\n * The glass stylesheet keys off stable data-* hooks (`data-dsh-glass-frame`,\n * `data-dsh-glass-trajectory`, `data-dsh-glass-stats`, …) that are NOT part\n * of the stock DSH markup, so this module stamps them onto the matching\n * elements at runtime — the stylesheet works with zero base edits. Each\n * selector uses only stable attributes already present in the stock UI\n * (`data-composer-card`, `data-conversation-composer-overlay`, `data-slot`,\n * ARIA roles) or lightningcss-preserved class-name substrings.\n *\n * Stamps are idempotent and inert without the `data-dsh-glass` root attribute\n * (the whole stylesheet is gated on it), so they are simply left in place when\n * the layer flips off — \"off\" still renders the exact stock UI.\n */\n\ninterface Seam {\n /** Attribute to stamp (bare name; value is always ''). */\n readonly attribute: string\n /** CSS selector for the element(s) to stamp. */\n readonly selector: string\n /** Stamp only the first (topmost) match, not every descendant match. */\n readonly first?: boolean\n}\n\nconst SEAMS: readonly Seam[] = [\n // The layout frame: the sidebar column's direct parent.\n { attribute: 'data-dsh-glass-frame', selector: ':has(> [class*=\"sidebarCol\"])' },\n // The sidebar content root (topmost `root` under the column — settings\n // internals also carry a `root` class but sit deeper, so first match wins).\n { attribute: 'data-dsh-glass-sidebar-root', selector: '[class*=\"sidebarCol\"] [class*=\"root\"]', first: true },\n // New-session button (a raised-surface seam).\n { attribute: 'data-dsh-glass-surface', selector: 'button[class*=\"newSession\"]' },\n // Trajectory view (the composer-overlay view).\n { attribute: 'data-dsh-glass-trajectory', selector: '[data-conversation-composer-overlay]' },\n // Details panel (topmost `root` under the details column).\n { attribute: 'data-dsh-glass-details', selector: '[class*=\"detailsCol\"] [class*=\"root\"]', first: true },\n // Composer bar root: the composer card's direct parent.\n { attribute: 'data-dsh-glass-inputbar', selector: ':has(> [data-composer-card])' },\n // Composer attach \"+\" button.\n { attribute: 'data-dsh-glass-add', selector: '[data-composer-card] [class*=\"add\"]' },\n // Session stats line under the composer (composer.dock slot).\n { attribute: 'data-dsh-glass-stats', selector: '[data-slot=\"conversation.composer.dock\"] [class*=\"root\"]' },\n]\n\nfunction stamp(seam: Seam): void {\n if (seam.first) {\n const el = document.querySelector(seam.selector)\n if (el !== null && !el.hasAttribute(seam.attribute)) el.setAttribute(seam.attribute, '')\n return\n }\n for (const el of document.querySelectorAll(seam.selector)) {\n if (!el.hasAttribute(seam.attribute)) el.setAttribute(seam.attribute, '')\n }\n}\n\nfunction stampAll(): void {\n for (const seam of SEAMS) stamp(seam)\n}\n\n/**\n * Stamp the seams once, then keep them stamped as React remounts nodes.\n * @returns a disposer that disconnects the observer.\n */\nexport function startGlassSeamStamper(): () => void {\n stampAll()\n const observer = new MutationObserver(() => { stampAll() })\n observer.observe(document.documentElement, { childList: true, subtree: true })\n return () => { observer.disconnect() }\n}\n","/**\n * Catppuccin glass layer — one toggleable glassmorphism skin over the whole\n * Web surface, riding on top of the Catppuccin themes. Everything the layer\n * owns is an effect: the CSS hooks ride a `data-dsh-glass` attribute on\n * <html> (the stylesheet only applies under it), the seam stamps ride a\n * MutationObserver, and the ambient backdrop is a DOM element — so switching\n * the flag off (or unloading the plugin) restores the stock UI exactly: no\n * residue, no reload.\n *\n * The enable flag and every knob persist in localStorage: client-only visual\n * preferences (like the selected-session key), written and read by this\n * plugin alone, so the layer needs no host configuration.\n */\nimport type { Context } from '@deepseek-ai/cordis'\n// Type-only: pulls the theme plugin's Context merge (ctx.theme + theme/change).\nimport type {} from '@deepseek-ai/dsh-client-ui-theme/client'\nimport { startGlassSeamStamper } from './glass-seams.ts'\n\n/** html attribute selecting the glass layer: CSS hooks and ambient effects. */\nexport const GLASS_ATTRIBUTE = 'data-dsh-glass'\n\n/** html attribute selecting the mica (floating-card) layout rules. */\nexport const GLASS_FLOAT_ATTRIBUTE = 'data-dsh-glass-float'\n\n/** html attribute selecting the compatibility (stock-layout) rules. */\nexport const GLASS_COMPAT_ATTRIBUTE = 'data-dsh-glass-compat'\n\n/** localStorage key carrying the layer enable flag. */\nexport const GLASS_ENABLED_KEY = 'dsh.catppuccin.glass.enabled'\n\n/** Default state when nothing is stored yet: off (the stock UI stays stock). */\nexport const DEFAULT_ENABLED = false\n\n/** Tunable glass knobs. */\nexport interface GlassSettings {\n /** Rendering mode: mica (frosted floating cards) or the stock layout with a generic glass material. */\n mode: 'mica' | 'compat'\n /** Glass backdrop blur radius, px. */\n blur: number\n /** Glass fill opacity, 0-100 (50 = the shipped look; drives the frost multiplier). */\n frost: number\n /** Backdrop brightness, 0-100 (0 = pure black, 50 = transparent, 100 = pure white; half-range per scheme). */\n brightness: number\n /** Ambient hue shift, degrees. */\n hue: number\n}\n\n/** The full state the settings row mirrors (settings + enable flag + scheme). */\nexport interface GlassRowState extends GlassSettings {\n /** Layer enable flag. */\n enabled: boolean\n /** Resolved palette is dark (the brightness knob darkens). */\n dark: boolean\n}\n\n/**\n * Shipped knob defaults — aligned with the reference project\n * (DSH-Transparent-UI-Plugin / Aqua): mica mode, blur 2px, frost 20\n * (the 0-100 slider maps to a 0-1.4 alpha multiplier via frost/50, so 20\n * reads as a light frost), neutral backdrop brightness, and a 316° hue\n * shift for the ambient.\n */\nconst SETTINGS_DEFAULTS: GlassSettings = {\n mode: 'mica',\n blur: 2,\n frost: 20,\n brightness: 50,\n hue: 316,\n}\n\n/** Numeric knob keys and their localStorage names. */\nconst NUMERIC_KEYS = {\n blur: 'dsh.catppuccin.glass.blur',\n frost: 'dsh.catppuccin.glass.frost',\n brightness: 'dsh.catppuccin.glass.brightness',\n hue: 'dsh.catppuccin.glass.hue',\n} as const\ntype NumericKey = keyof typeof NUMERIC_KEYS\n\nconst MODE_KEY = 'dsh.catppuccin.glass.mode'\n\n/** Clamp a numeric knob into its sane range. */\nfunction clampSetting(key: NumericKey, value: number): number {\n const max = key === 'blur' ? 40\n : key === 'frost' || key === 'brightness' ? 100\n : 360\n return Number.isFinite(value) ? Math.min(max, Math.max(0, value)) : SETTINGS_DEFAULTS[key]\n}\n\n/** Read one numeric knob from localStorage (absent/parse failure means the default). */\nfunction readSetting(key: NumericKey): number {\n try {\n const raw = localStorage.getItem(NUMERIC_KEYS[key])\n return raw === null ? SETTINGS_DEFAULTS[key] : clampSetting(key, Number(raw))\n } catch {\n return SETTINGS_DEFAULTS[key]\n }\n}\n\n/** Persist one numeric knob (storage failures keep the in-memory state). */\nfunction writeSetting(key: NumericKey, value: number): void {\n try {\n localStorage.setItem(NUMERIC_KEYS[key], String(value))\n } catch {\n /* in-memory state still applies for this tab */\n }\n}\n\n/** Read the rendering mode ('mica' or 'compat'). */\nfunction readMode(): 'mica' | 'compat' {\n try {\n return localStorage.getItem(MODE_KEY) === 'compat' ? 'compat' : 'mica'\n } catch {\n return 'mica'\n }\n}\n\n/** Persist the rendering mode. */\nfunction writeMode(value: 'mica' | 'compat'): void {\n try {\n localStorage.setItem(MODE_KEY, value)\n } catch {\n /* in-memory state still applies */\n }\n}\n\n/** Read the persisted enable flag (absent storage means the default). */\nfunction readEnabled(): boolean {\n try {\n const raw = localStorage.getItem(GLASS_ENABLED_KEY)\n return raw === null ? DEFAULT_ENABLED : raw === 'true'\n } catch {\n return DEFAULT_ENABLED\n }\n}\n\n/** Persist the enable flag (storage failures keep the in-memory state). */\nfunction writeEnabled(value: boolean): void {\n try {\n localStorage.setItem(GLASS_ENABLED_KEY, String(value))\n } catch {\n /* in-memory state still applies for this tab */\n }\n}\n\n/** Resolved scheme from the theme service (falls back to the body attribute). */\nfunction resolveDark(ctx: Context): boolean {\n try {\n return ctx.theme.getTheme().active.colorScheme === 'dark'\n } catch {\n return document.body.hasAttribute('data-ds-dark-theme')\n }\n}\n\n/**\n * The ambient backdrop markup injected while enabled (CSS-only, no WebGL):\n * the living backdrop plus the two page-edge fade bands that blur the chat\n * content melting into the viewport edges (ported from\n * DSH-Transparent-UI-Plugin). All three are fixed-position, click-through,\n * and removed together on disable.\n */\nconst AMBIENT_MARKUP = [\n '<div data-dsh-glass-ambient aria-hidden=\"true\">',\n ' <span data-dsh-glass-blob=\"1\"></span>',\n ' <span data-dsh-glass-blob=\"2\"></span>',\n ' <span data-dsh-glass-blob=\"3\"></span>',\n '</div>',\n '<span data-dsh-glass-fade=\"top\" aria-hidden=\"true\"></span>',\n '<span data-dsh-glass-fade=\"bottom\" aria-hidden=\"true\"></span>',\n].join('')\n\n/**\n * Owns the glass layer lifecycle: reads the durable enable flag and knobs,\n * and applies / retracts every layer on change. Cross-tab flips arrive through\n * the storage event; the seam observer and every subscription are released\n * when the plugin fiber is disposed.\n */\nexport class GlassLayer {\n private enabled = false\n private settings: GlassSettings = { ...SETTINGS_DEFAULTS }\n /** Cached snapshot for the settings row (stable reference between changes). */\n private snapshot: GlassRowState\n private readonly listeners = new Set<() => void>()\n private dark = false\n private seamDisposer: (() => void) | undefined\n private readonly ctx: Context\n\n /**\n * @param ctx - owning client context (listeners ride this fiber).\n */\n constructor(ctx: Context) {\n this.ctx = ctx\n this.enabled = readEnabled()\n this.reloadSettings()\n this.dark = resolveDark(ctx)\n this.snapshot = this.buildSnapshot()\n\n ctx.effect(() => {\n const onStorage = (event: StorageEvent): void => {\n if (event.key === null) { this.reloadSettings(); this.enabled = readEnabled(); this.sync() }\n else if (event.key === GLASS_ENABLED_KEY) {\n this.enabled = readEnabled()\n this.sync()\n } else if (event.key === MODE_KEY || event.key in NUMERIC_KEYS) {\n this.reloadSettings()\n if (this.enabled) this.applySettings()\n this.publish()\n }\n }\n window.addEventListener('storage', onStorage)\n // Follow the Appearance switch: the brightness knob's half-range and\n // the ambient direction flip with the resolved scheme. Runs even while\n // disabled so the settings row stays correct.\n const themeListener = ctx.on('theme/change', () => {\n this.dark = resolveDark(ctx)\n if (this.enabled) this.applySettings()\n this.publish()\n })\n return () => {\n window.removeEventListener('storage', onStorage)\n themeListener()\n this.unmount()\n }\n }, 'catppuccin: glass layer lifecycle')\n\n // Apply the restored state: mount the layer when the persisted flag is on\n // (the settings row reflects the same snapshot, so the two stay in sync).\n this.sync()\n }\n\n /** Current state snapshot (stable reference until the next change). */\n getSnapshot(): GlassRowState {\n return this.snapshot\n }\n\n /** Subscribe to snapshot changes. Returns the disposer. */\n subscribe(listener: () => void): () => void {\n this.listeners.add(listener)\n return () => { this.listeners.delete(listener) }\n }\n\n /** Flip the layer: persist, then apply or retract every owned effect. */\n setEnabled(value: boolean): void {\n if (value === this.enabled) return\n this.enabled = value\n writeEnabled(value)\n this.sync()\n }\n\n /** Set the rendering mode ('mica' or 'compat'). */\n setMode(value: 'mica' | 'compat'): void {\n if (value === this.settings.mode) return\n this.settings.mode = value\n writeMode(value)\n if (this.enabled) this.applySettings()\n this.publish()\n }\n\n /** Set the glass blur radius (px). */\n setBlur(value: number): void {\n const next = clampSetting('blur', value)\n if (next === this.settings.blur) return\n this.settings.blur = next\n writeSetting('blur', next)\n if (this.enabled) this.applySettings()\n this.publish()\n }\n\n /** Set the glass frost amount (0-100). */\n setFrost(value: number): void {\n const next = clampSetting('frost', value)\n if (next === this.settings.frost) return\n this.settings.frost = next\n writeSetting('frost', next)\n if (this.enabled) this.applySettings()\n this.publish()\n }\n\n /** Set the backdrop brightness (0-100: 0 = pure black, 50 = transparent, 100 = pure white). */\n setBrightness(value: number): void {\n const next = clampSetting('brightness', value)\n if (next === this.settings.brightness) return\n this.settings.brightness = next\n writeSetting('brightness', next)\n if (this.enabled) this.applySettings()\n this.publish()\n }\n\n /** Set the ambient hue shift (degrees). */\n setHue(value: number): void {\n const next = clampSetting('hue', value)\n if (next === this.settings.hue) return\n this.settings.hue = next\n writeSetting('hue', next)\n if (this.enabled) this.applySettings()\n this.publish()\n }\n\n /** Restore every knob to the shipped defaults (persisted immediately). */\n resetDefaults(): void {\n this.settings = { ...SETTINGS_DEFAULTS }\n writeMode(this.settings.mode)\n writeSetting('blur', this.settings.blur)\n writeSetting('frost', this.settings.frost)\n writeSetting('brightness', this.settings.brightness)\n writeSetting('hue', this.settings.hue)\n if (this.enabled) this.applySettings()\n this.publish()\n }\n\n /** Re-read every knob from localStorage into memory. */\n private reloadSettings(): void {\n this.settings = {\n mode: readMode(),\n blur: readSetting('blur'),\n frost: readSetting('frost'),\n brightness: readSetting('brightness'),\n hue: readSetting('hue'),\n }\n }\n\n private buildSnapshot(): GlassRowState {\n return { ...this.settings, enabled: this.enabled, dark: this.dark }\n }\n\n private publish(): void {\n this.snapshot = this.buildSnapshot()\n for (const listener of this.listeners) listener()\n }\n\n private sync(): void {\n if (this.enabled) this.mount()\n else this.unmount()\n this.publish()\n }\n\n /** Write the knob-driven CSS variables and mode attributes onto <html>. */\n private applySettings(): void {\n const style = document.documentElement.style\n style.setProperty('--dsh-glass-blur', `${this.settings.blur}px`)\n // Frost 0-100 → a 0-1.4 alpha multiplier (50 = 1x). Capped so max frost\n // stays translucent frosted glass instead of collapsing to a solid slab.\n style.setProperty('--dsh-glass-frost', String(Math.min(this.settings.frost / 50, 1.4)))\n style.setProperty('--dsh-glass-hue', `${this.settings.hue}deg`)\n // Backdrop brightness: dark mode darkens (0 = pure black, 50 = off),\n // light mode brightens (50 = off, 100 = pure white) — the knob's range\n // and the overlay direction both follow the resolved scheme.\n const dark = this.dark\n style.setProperty('--dsh-glass-brightness-black', String(dark ? Math.max(0, (50 - this.settings.brightness) / 50) : 0))\n style.setProperty('--dsh-glass-brightness-white', String(dark ? 0 : Math.max(0, (this.settings.brightness - 50) / 50)))\n\n // Rendering mode: the float rules key off data-dsh-glass-float; the\n // compat (generic glass) rules key off data-dsh-glass-compat.\n const compat = this.settings.mode === 'compat'\n document.documentElement.toggleAttribute(GLASS_FLOAT_ATTRIBUTE, !compat)\n document.documentElement.toggleAttribute(GLASS_COMPAT_ATTRIBUTE, compat)\n }\n\n private mount(): void {\n document.documentElement.setAttribute(GLASS_ATTRIBUTE, '')\n this.applySettings()\n this.ensureAmbient()\n if (this.seamDisposer === undefined) this.seamDisposer = startGlassSeamStamper()\n }\n\n private unmount(): void {\n document.documentElement.removeAttribute(GLASS_ATTRIBUTE)\n document.documentElement.removeAttribute(GLASS_FLOAT_ATTRIBUTE)\n document.documentElement.removeAttribute(GLASS_COMPAT_ATTRIBUTE)\n for (const node of document.querySelectorAll('[data-dsh-glass-ambient], [data-dsh-glass-fade]')) node.remove()\n this.seamDisposer?.()\n this.seamDisposer = undefined\n }\n\n /** Insert the ambient backdrop + edge fades (or reuse the existing ones). */\n private ensureAmbient(): void {\n if (document.querySelector('[data-dsh-glass-ambient]') !== null) return\n const holder = document.createElement('div')\n holder.innerHTML = AMBIENT_MARKUP\n for (const node of Array.from(holder.children)) {\n if (node instanceof HTMLElement) document.body.append(node)\n }\n }\n}\n","/**\n * Catppuccin glass settings row — registered into the General settings\n * section (`settings.general.item`, right under the Catppuccin flavour row).\n * Holds the master on/off switch plus every glass knob: mode (mica /\n * compatibility), blur, frost, backdrop brightness and ambient hue. Every\n * write goes straight through to the glass layer, so the skin moves live.\n */\nimport { useSyncExternalStore } from 'react'\nimport type { PropsLocale, PropsRuntime } from '@deepseek-ai/dsh-client-ui-slots'\nimport type { GlassRowState } from './glass-layer.ts'\nimport css from './GlassRow.module.css'\n\n/** Injected business face: the layer state seat plus every knob write. */\nexport interface GlassRowInjected {\n /** Current layer state snapshot. */\n getState: () => GlassRowState\n /** Subscribe to layer state changes. Returns the disposer. */\n subscribe: (listener: () => void) => () => void\n /** Switch the glass layer on or off. */\n setEnabled: (enabled: boolean) => void\n /** Set the rendering mode ('mica' floating cards or 'compat' stock layout). */\n setMode: (mode: 'mica' | 'compat') => void\n /** Set the glass blur radius, px. */\n setBlur: (value: number) => void\n /** Set the glass frost amount, 0-100. */\n setFrost: (value: number) => void\n /** Set the backdrop brightness, 0-100. */\n setBrightness: (value: number) => void\n /** Set the ambient hue shift, degrees. */\n setHue: (value: number) => void\n /** Restore every knob to the shipped defaults. */\n resetDefaults: () => void\n}\n\n/** Full component props: runtime share + locale seat + injected face. */\nexport type GlassRowProps = PropsRuntime<'settings.general.item'> & PropsLocale<'catppuccin'> & GlassRowInjected\n\n/** One slider + number box, wired to a single value. */\nfunction Knob(props: {\n label: string\n value: number\n min: number\n max: number\n step: number\n unit: string\n onChange: (value: number) => void\n}): React.JSX.Element {\n const { label, value, min, max, step, unit, onChange } = props\n const clamp = (n: number): number => Math.min(max, Math.max(min, Number.isFinite(n) ? n : min))\n return (\n <label className={css.knob}>\n <span className={css.knobLabel}>{label}</span>\n <input\n type=\"range\"\n className={css.slider}\n min={min}\n max={max}\n step={step}\n value={value}\n onChange={(e) => { onChange(clamp(Number(e.target.value))) }}\n />\n <span className={css.numberWrap}>\n <input\n type=\"number\"\n className={css.number}\n min={min}\n max={max}\n step={step}\n value={value}\n onChange={(e) => { onChange(clamp(Number(e.target.value))) }}\n />\n <span className={css.unit}>{unit}</span>\n </span>\n </label>\n )\n}\n\n/** A two-option segmented picker. */\nfunction Segmented<T extends string>(props: {\n label: string\n value: T\n options: readonly { id: T; label: string }[]\n onSelect: (value: T) => void\n}): React.JSX.Element {\n const { label, value, options, onSelect } = props\n return (\n <div className={css.segmented} role=\"group\" aria-label={label}>\n {options.map((option) => (\n <button\n key={option.id}\n type=\"button\"\n className={option.id === value ? css.segActive : css.seg}\n aria-pressed={option.id === value}\n onClick={() => { onSelect(option.id) }}\n >\n {option.label}\n </button>\n ))}\n </div>\n )\n}\n\n/**\n * Render the glass row: title, the master switch, and — while enabled — the\n * mode picker and every knob.\n * @param props - composed slot props.\n * @returns the General section row.\n */\nexport function GlassRow({ t, getState, subscribe, setEnabled, setMode, setBlur, setFrost, setBrightness, setHue, resetDefaults }: GlassRowProps): React.JSX.Element {\n const state = useSyncExternalStore(subscribe, getState)\n const { enabled, mode, blur, frost, brightness, hue, dark } = state\n\n // The brightness knob only ever offers the half that makes sense for the\n // resolved scheme: dark mode darkens (0-50), light mode brightens (50-100).\n const bgMin = dark ? 0 : 50\n const bgMax = dark ? 50 : 100\n const bgDisplay = Math.min(bgMax, Math.max(bgMin, brightness))\n\n return (\n <div className={css.group}>\n <div className={css.title}>{t('glass.title')}</div>\n <div className={css.description}>{t('glass.description')}</div>\n <div className={css.controls}>\n <div className={css.row}>\n <span className={css.rowLabel}>{t('glass.enable')}</span>\n <button\n type=\"button\"\n className={enabled ? css.toggleOn : css.toggle}\n aria-pressed={enabled}\n onClick={() => { setEnabled(!enabled) }}\n >\n <span className={css.check}>{enabled ? '✓' : ''}</span>\n {enabled ? t('glass.on') : t('glass.off')}\n </button>\n </div>\n {enabled && (\n <>\n <div className={css.row}>\n <span className={css.rowLabel}>{t('glass.mode')}</span>\n <Segmented\n label={t('glass.mode')}\n value={mode}\n options={[\n { id: 'mica', label: t('glass.modeMica') },\n { id: 'compat', label: t('glass.modeCompat') },\n ]}\n onSelect={setMode}\n />\n </div>\n <div className={css.rowHint}>{t('glass.modeHint')}</div>\n <Knob label={t('glass.blur')} value={blur} min={0} max={40} step={0.5} unit=\"px\" onChange={setBlur} />\n <Knob label={t('glass.frost')} value={frost} min={0} max={100} step={1} unit=\"%\" onChange={setFrost} />\n <Knob label={t('glass.brightness')} value={bgDisplay} min={bgMin} max={bgMax} step={1} unit=\"%\" onChange={setBrightness} />\n <div className={css.knobHint}>\n {t(dark ? 'glass.brightnessHintDark' : 'glass.brightnessHintLight')}\n </div>\n <Knob label={t('glass.hue')} value={hue} min={0} max={360} step={1} unit=\"°\" onChange={setHue} />\n <div className={css.knobHint}>{t('glass.hueHint')}</div>\n <div className={css.row}>\n <button type=\"button\" className={css.resetButton} onClick={() => { resetDefaults() }}>\n {t('glass.reset')}\n </button>\n </div>\n </>\n )}\n </div>\n </div>\n )\n}\n","/**\n * Catppuccin themes for the DeepSeek Harness web GUI — browser half.\n *\n * Registers the four Catppuccin flavours (Latte light / Frappé, Macchiato,\n * Mocha dark) into the official ThemeRuntime, so they become selectable\n * themes whose --dsw-* token overrides fully remap the UI palette. The\n * official Appearance row persists only the built-in light/dark/system\n * preferences, so this plugin also owns a settings row (\"Catppuccin\") that\n * lists the four flavours; selecting one switches the theme and persists the\n * flavour in localStorage (the Host settings wire only serves an explicit\n * allowlist of namespaces — a plugin-owned namespace answers\n * `settings-not-exposed`, so a browser-local preference is the durable\n * store here). The choice is restored on boot.\n */\nimport type { ClientContext } from '@deepseek-ai/dsh-client-runtime/client'\nimport type { ThemeRuntime, ThemeTokens } from '@deepseek-ai/dsh-client-ui-theme/client'\n// Type-only: pulls the locale plugin's Context merge (ctx.locale).\nimport type {} from '@deepseek-ai/dsh-client-locale/client'\n// Type-only: pulls the settings-surface SlotMap merge (settings.general.item).\nimport type {} from '@deepseek-ai/dsh-client-ui-settings/client'\nimport { CatppuccinRow, type CatppuccinRowInjected } from './CatppuccinRow.tsx'\nimport { en, zh, type CatppuccinKey } from './locales.ts'\nimport { CATPPUCCIN_FLAVORS, type CatppuccinFlavorInfo } from './palettes.ts'\nimport { GlassLayer } from './glass/glass-layer.ts'\nimport { GlassRow, type GlassRowInjected } from './glass/glass-row.tsx'\n// Side-effect import: the glass stylesheet (auto-injected as a plugin-owned\n// <style> tag; every rule is gated on the data-dsh-glass attribute).\nimport './glass/glass.module.css'\n\n/** Locale namespace owned by this plugin. */\nexport const NS = 'catppuccin'\n\ndeclare module '@deepseek-ai/dsh-client-ui-slots' {\n interface LocaleNamespaceMap {\n /** The Catppuccin settings row's copy. */\n catppuccin: CatppuccinKey\n }\n}\n\n/** localStorage key carrying the persisted flavour choice. */\nexport const FLAVOR_STORAGE_KEY = 'dsh.catppuccin.flavor'\n\n/** Accepted flavour values — the four registered theme ids plus `off`. These\n * MUST stay in sync with the registered themes (guarded by\n * tests/palettes.spec.ts) because the persisted value is the theme id. */\nexport const CATPPUCCIN_FLAVOR_VALUES = [\n ...CATPPUCCIN_FLAVORS.map((f) => f.themeId),\n 'off',\n] as const\n\n/** `off` means: fall back to the official theme (default). */\nexport type FlavorChoice = (typeof CATPPUCCIN_FLAVOR_VALUES)[number]\n\n/** The flavour whose themeId this is, or `off`. */\nexport function flavorFromThemeId(themeId: string): FlavorChoice {\n return CATPPUCCIN_FLAVORS.some((f) => f.themeId === themeId) ? themeId as FlavorChoice : 'off'\n}\n\n/** The flavour registered for a theme id, or undefined when not a Catppuccin theme. */\nexport function flavorInfo(themeId: string): CatppuccinFlavorInfo | undefined {\n return CATPPUCCIN_FLAVORS.find((f) => f.themeId === themeId)\n}\n\n/** Read the persisted flavour (absent / unknown values mean the default `off`). */\nexport function readFlavor(): FlavorChoice {\n try {\n const raw = localStorage.getItem(FLAVOR_STORAGE_KEY)\n return raw !== null && (CATPPUCCIN_FLAVOR_VALUES as readonly string[]).includes(raw)\n ? raw as FlavorChoice\n : 'off'\n } catch {\n return 'off'\n }\n}\n\n/** Persist the flavour choice (storage failures keep the in-memory state). */\nexport function writeFlavor(choice: FlavorChoice): void {\n try {\n localStorage.setItem(FLAVOR_STORAGE_KEY, choice)\n } catch {\n /* in-memory state still applies for this tab */\n }\n}\n\n/** Required services: slots + locale (settings rows) and theme (register + switch). */\nexport const inject = ['slots', 'locale', 'theme']\n\n/**\n * Register the Catppuccin dictionaries, the four flavour themes, and the\n * settings row.\n * @param ctx - client root context.\n */\nexport function apply(ctx: ClientContext): void {\n ctx.effect(() => ctx.locale.register(NS, { zh, en }), 'catppuccin: dictionaries')\n\n const theme = ctx.get('theme') as ThemeRuntime\n\n // Register the four flavour themes. Each carries the full --dsw-* token\n // dictionary for its flavour; the presenter applies them as body inline\n // variables when the theme is active.\n ctx.effect(() => {\n const disposers = CATPPUCCIN_FLAVORS.map((flavor) =>\n theme.register({\n id: flavor.themeId,\n colorScheme: flavor.colorScheme,\n tokens: flavor.tokens as ThemeTokens,\n }),\n )\n return () => {\n for (const dispose of disposers) dispose()\n }\n }, 'catppuccin: flavour themes')\n\n // Persisted flavour choice. The official ThemeRuntime only persists the\n // built-in preferences, and the Host settings wire refuses plugin-owned\n // namespaces (`settings-not-exposed`), so the choice lives in localStorage.\n // Restoring it is a two-step race at boot: the flavour themes are registered\n // by this plugin (so an immediate setTheme may run before registration), and\n // the official Appearance scope adoption (`adopt()`) re-applies the stored\n // light/dark/system preference once its scope loads, overriding us. So the\n // saved flavour is re-asserted on every theme change within a short boot\n // window; after that a theme change is a user action and must win.\n ctx.effect(() => {\n const saved = readFlavor()\n if (saved === 'off') return () => {}\n let settled = false\n const started = Date.now()\n const applySaved = (): void => {\n if (settled) return\n if (Date.now() - started > 5000) {\n settled = true\n return\n }\n try {\n if (theme.getTheme().preference !== saved) theme.setTheme(saved)\n } catch {\n // Theme not registered yet — the registry-update theme/change retries.\n }\n }\n applySaved()\n const disposer = ctx.on('theme/change', applySaved)\n const timer = window.setTimeout(() => { settled = true }, 5000)\n const onStorage = (event: StorageEvent): void => {\n if (event.key !== FLAVOR_STORAGE_KEY) return\n const next = readFlavor()\n if (next !== 'off') {\n try {\n theme.setTheme(next)\n } catch {\n /* unknown persisted value — keep the current theme */\n }\n }\n }\n window.addEventListener('storage', onStorage)\n return () => {\n disposer()\n window.clearTimeout(timer)\n window.removeEventListener('storage', onStorage)\n }\n }, 'catppuccin: boot restore')\n\n const injected = (): CatppuccinRowInjected => ({\n themes: CATPPUCCIN_FLAVORS.map((flavor) => ({\n id: flavor.themeId,\n label: flavor.label,\n accent: flavor.accent,\n })),\n current: () => {\n const pref = theme.getTheme().preference\n return flavorFromThemeId(pref)\n },\n subscribe: (listener) => ctx.on('theme/change', listener),\n select: (choice: FlavorChoice) => {\n if (choice === 'off') {\n // Revert to the official default (system-following).\n theme.setTheme('system')\n writeFlavor('off')\n return\n }\n const flavor = flavorInfo(choice)\n if (!flavor) return\n theme.setTheme(flavor.themeId)\n writeFlavor(flavor.themeId)\n },\n })\n\n ctx.slots.inject('settings.general.item', () => ctx.slots.register({\n name: 'settings.general.item',\n id: 'catppuccin',\n order: 20,\n locale: NS,\n inject: injected,\n }, CatppuccinRow))\n\n // The glass layer: a toggleable glassmorphism skin on top of the Catppuccin\n // themes. It owns its lifecycle (enable flag + knobs persist in\n // localStorage; every effect is released with this fiber).\n const glass = new GlassLayer(ctx)\n\n const glassInjected = (): GlassRowInjected => ({\n getState: () => glass.getSnapshot(),\n subscribe: (listener) => glass.subscribe(listener),\n setEnabled: (enabled) => { glass.setEnabled(enabled) },\n setMode: (mode) => { glass.setMode(mode) },\n setBlur: (blur) => { glass.setBlur(blur) },\n setFrost: (frost) => { glass.setFrost(frost) },\n setBrightness: (brightness) => { glass.setBrightness(brightness) },\n setHue: (hue) => { glass.setHue(hue) },\n resetDefaults: () => { glass.resetDefaults() },\n })\n\n ctx.slots.inject('settings.general.item', () => ctx.slots.register({\n name: 'settings.general.item',\n id: 'catppuccin-glass',\n order: 21,\n locale: NS,\n inject: glassInjected,\n }, GlassRow))\n}\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nonamelego/dsh-catppuccin",
|
|
3
3
|
"description": "Catppuccin themes + a toggleable glassmorphism skin for the DeepSeek Harness web GUI — Latte, Frappé, Macchiato and Mocha registered into the official theme system (Appearance settings), fully remapping the --dsw-* token ladder, with adjustable frosted glass for the top bar, sidebar, composer, stats line and trajectory view.",
|
|
4
|
-
"version": "0.2.
|
|
4
|
+
"version": "0.2.4",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "lib/index.js",
|
|
7
7
|
"repository": {
|
|
@@ -79,3 +79,4 @@
|
|
|
79
79
|
"vitest": "^4.1.8"
|
|
80
80
|
}
|
|
81
81
|
}
|
|
82
|
+
|