@nonamelego/dsh-catppuccin 0.6.6-beta.1 → 0.6.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.en.md +7 -2
- package/README.md +8 -1
- package/lib/client.js +258 -18
- package/lib/client.js.map +1 -1
- package/lib/index.js +11 -2
- package/lib/index.js.map +1 -1
- package/package.json +1 -1
package/README.en.md
CHANGED
|
@@ -262,7 +262,12 @@ The **Glass** section lives on the **Settings → Catppuccin** page:
|
|
|
262
262
|
collapses back to pure white / pure black.
|
|
263
263
|
- **Ground glows**: adds two screen-pinned soft glows on top of the ground (the `0.6.3` look),
|
|
264
264
|
**off by default** — they do not follow the panes, so each pane transmits a different slice
|
|
265
|
-
of them and the top-left corner brightens visibly when on.
|
|
265
|
+
of them and the top-left corner brightens visibly when on. Once on, a **glow strength** knob
|
|
266
|
+
(0–200%, `100%` = that look and the default; the ceiling is a conservative
|
|
267
|
+
contrast budget on Latte, see `docs/issue-32-glow-tuning.md`) and a **glow spread**
|
|
268
|
+
knob (100–250%, `100%` = the shipped radii; it only enlarges, so the light stops
|
|
269
|
+
piling up in one corner) scale the two glows only — the wash is never touched, and at either end of the
|
|
270
|
+
brightness knob the ambience collapses and the glows fade out with it.
|
|
266
271
|
- **In-place previews**: a **ground sample strip** in the glass section (drag brightness or
|
|
267
272
|
toggle the glows and it changes on the spot — it is painted by the page ground's own rule);
|
|
268
273
|
a **code sample** under the highlight picker (reads `--shiki-token-*`, so switching to
|
|
@@ -330,7 +335,7 @@ matches are exactly these:
|
|
|
330
335
|
| Composer card | `[data-composer-card]` (the material is painted on its `::before`, see issue #19) |
|
|
331
336
|
| Menus | `[data-menu-material='translucent']` (the host MenuSurface's own material hook — the recipe overrides the `--dsw-menu-surface-fill` / `--dsw-menu-backdrop-filter` its material plane reads) plus the hand-rolled-menu fallback `[role='menu']:not([data-menu-material]):not([data-menu-material] *)` |
|
|
332
337
|
| Popovers | `[class*='popover']` / `[class*='dropdown']` (still substrings) |
|
|
333
|
-
| Modal dialogs | `[role='dialog'][aria-modal='true']` |
|
|
338
|
+
| Modal dialogs | `[role='presentation'] > [role='dialog'][aria-modal='true']` (**seat guard**: only a panel seated under `[role='presentation']`; a body-level full-screen layer is not one — see issue #34) |
|
|
334
339
|
| Host right sidebar (open state only) | `[data-sidebar-right-panel][data-sidebar-right-open]` |
|
|
335
340
|
|
|
336
341
|
**A new class name in a third-party plugin can still be misread.** When you hit one, work through three
|
package/README.md
CHANGED
|
@@ -229,8 +229,15 @@ dsh plugin --profile dsh-tui add https://github.com/NoNameLeGo/dsh-catppuccin-th
|
|
|
229
229
|
不透明度。
|
|
230
230
|
- **背景亮度**:深色模式 0–50 压暗、浅色模式 50–100 提亮(50 为原样),
|
|
231
231
|
直接调和进地面底色;拉到两端时氛围层淡出,回到纯白 / 纯黑。
|
|
232
|
+
- **卡片间距**(4–24 px,**仅云母**):悬浮卡与窗口边缘的留白,另附**紧凑 / 标准 / 宽松**三档
|
|
233
|
+
(8 / 12 / 20 px,默认标准)。只改外边距,正文列宽不变——间距是从侧栏列里扣的,所以**侧栏卡自身会变窄**;
|
|
234
|
+
折叠侧栏时窄轨最多向右探出 16px(再大会压住正文)。兼容模式与这个旋钮无关,设置里也会一并隐藏。
|
|
232
235
|
- **地面光斑**:在地面渐变上叠两枚**固定于屏幕**的柔光斑(`0.6.3` 的观感),**默认关**——
|
|
233
236
|
光斑不跟面板走,每块玻璃透出的是它的不同部位,打开后左上角会明显偏亮。
|
|
237
|
+
打开后还有 **光斑强度**(0–200%,`100%` 就是上述观感,默认值;上限是**保守值**,按 Latte 上文字的
|
|
238
|
+
对比度预算定,见 `docs/issue-32-glow-tuning.md`)和 **光斑范围**(100–250%,`100%` = 出厂的两枚半径;
|
|
239
|
+
只放大,用来把光摊平、别堆在角落里)——
|
|
240
|
+
强度只放大两枚光斑,**不动**洗底渐变;背景亮度拉到两端时氛围归零,光斑随之淡出。
|
|
234
241
|
- **就地预览**:玻璃区里有一条**地面样本条**(拖亮度或切光斑,它当场变化——取的就是页面地面那套色);
|
|
235
242
|
代码高亮下方有**代码样本**(直接读 `--shiki-token-*`,切「柔和注释」即刻变色);
|
|
236
243
|
模式选择旁的 **看一眼主界面** 会关掉设置页,让你直接看真实布局。
|
|
@@ -289,7 +296,7 @@ dsh plugin --profile dsh-tui add https://github.com/NoNameLeGo/dsh-catppuccin-th
|
|
|
289
296
|
| 输入框卡片 | `[data-composer-card]`(材质画在它的 `::before` 上,见 issue #19) |
|
|
290
297
|
| 菜单 | `[data-menu-material='translucent']`(宿主 MenuSurface 的材质钩子;配方覆写它自带材质面读的 `--dsw-menu-surface-fill` / `--dsw-menu-backdrop-filter`)+ 手写菜单兜底 `[role='menu']:not([data-menu-material]):not([data-menu-material] *)` |
|
|
291
298
|
| 弹出层 | `[class*='popover']` / `[class*='dropdown']`(仍是子串) |
|
|
292
|
-
| 模态框 | `[role='dialog'][aria-modal='true']` |
|
|
299
|
+
| 模态框 | `[role='presentation'] > [role='dialog'][aria-modal='true']`(**座位守卫**:只命中挂在 `[role='presentation']` 下面的面板;body 直挂的全屏浮层不算,见 issue #34) |
|
|
293
300
|
| 宿主右侧栏(仅展开态) | `[data-sidebar-right-panel][data-sidebar-right-open]` |
|
|
294
301
|
|
|
295
302
|
**第三方插件里新出现的类名仍可能被误命中**。遇到时走三步:**① 只读取证**(一段粘进控制台的探针脚本,
|
package/lib/client.js
CHANGED
|
@@ -534,7 +534,7 @@ window.__ModuleLoader__.load({
|
|
|
534
534
|
* (item II — lazy CSS), so editing the stylesheet means editing
|
|
535
535
|
* glass.module.css and rebuilding.
|
|
536
536
|
*/
|
|
537
|
-
const GLASS_CSS_TEXT = "[data-dsh-glass] body{--dsh-glass-card:color-mix(in srgb, var(--dsw-alias-bg-layer-1) calc(52% * var(--dsh-glass-frost,1)), transparent);--dsh-glass-card-raised:color-mix(in srgb, var(--dsw-alias-bg-layer-1) calc(64% * var(--dsh-glass-frost,1)), transparent);--dsh-glass-card-hover:color-mix(in srgb, var(--dsw-alias-bg-layer-1) calc(76% * var(--dsh-glass-frost,1)), transparent);--dsh-glass-rim:color-mix(in srgb, var(--dsw-alias-label-primary) 18%, transparent);--dsh-glass-rim-soft:color-mix(in srgb, var(--dsw-alias-label-primary) 12%, transparent);--dsh-glass-rim-strong:color-mix(in srgb, var(--dsw-alias-label-primary) 30%, transparent);--dsh-glass-edge:inset 0 1px 0 #ffffff6b;--dsh-glass-drop:0 10px 32px color-mix(in srgb, var(--dsw-alias-bg-mask-2) 38%, transparent);--dsh-glass-input-shadow:0 1px 2px color-mix(in srgb, var(--dsw-alias-bg-mask-2) 65%, transparent), 0 8px 24px color-mix(in srgb, var(--dsw-alias-bg-mask-2) 80%, transparent);--dsh-glass-ground:color-mix(in srgb, color-mix(in srgb, var(--dsw-alias-bg-base), #fff calc(var(--dsh-glass-brightness-white,0) * 100%)), #000 calc(var(--dsh-glass-brightness-black,0) * 100%));--dsh-glass-ambience:calc(1 - var(--dsh-glass-brightness-white,0) - var(--dsh-glass-brightness-black,0));--dsh-glass-wash-tint:#fff;--dsh-glass-wash-mix:22%}[data-dsh-glass] body[data-ds-dark-theme]{--dsh-glass-rim:color-mix(in srgb, var(--dsw-alias-label-primary) 24%, transparent);--dsh-glass-rim-soft:color-mix(in srgb, var(--dsw-alias-label-primary) 16%, transparent);--dsh-glass-rim-strong:color-mix(in srgb, var(--dsw-alias-label-primary) 30%, transparent);--dsh-glass-edge:inset 0 1px 0 #ffffff14;--dsh-glass-drop:0 10px 32px #02060e73;--dsh-glass-input-shadow:0 1px 2px color-mix(in srgb, var(--dsw-alias-bg-mask-2) 65%, transparent), 0 8px 24px color-mix(in srgb, var(--dsw-alias-bg-mask-2) 80%, transparent);--dsh-glass-wash-tint:var(--dsw-alias-bg-layer-1);--dsh-glass-wash-mix:68%}[data-dsh-glass] body,[data-dsh-glass] [data-dsh-glass-ground-sample]{background: radial-gradient(58% 46% at 18% 6%, color-mix(in srgb, var(--dsw-alias-brand-primary-new-colorprimary-new-color) calc(12% * var(--dsh-glass-ambience) * var(--dsh-glass-glow,0)), transparent), transparent 68%), radial-gradient(48% 42% at 86% 14%, color-mix(in srgb, var(--dsw-alias-state-success-tertiary) calc(10% * var(--dsh-glass-ambience) * var(--dsh-glass-glow,0)), transparent), transparent 62%), linear-gradient(165deg, color-mix(in srgb, var(--dsh-glass-ground), var(--dsh-glass-wash-tint) calc(var(--dsh-glass-wash-mix) * var(--dsh-glass-ambience))) 0%, var(--dsh-glass-ground) 55%, color-mix(in srgb, var(--dsh-glass-ground), #000 calc(5% * var(--dsh-glass-ambience))) 100%)}[data-dsh-glass] [data-dsh-glass-frame],[data-dsh-glass] [data-phase],[data-dsh-glass] [data-dsh-glass-details],[data-dsh-glass-float] [data-dsh-glass-frame]>[class*=centerCol]{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-phase] [data-dsh-glass-inputbar]>[class*=dock],[data-dsh-glass] [data-phase] [data-dsh-glass-inputbar]>[data-composer-dock]{position:relative}[data-dsh-glass] [data-phase] [data-dsh-glass-inputbar]>[class*=dock]:before,[data-dsh-glass] [data-phase] [data-dsh-glass-inputbar]>[data-composer-dock]:before{content:\"\";left:calc(-1 * var(--dsh-composer-side-clearance,16px));right:calc(-1 * var(--dsh-composer-side-clearance,16px));z-index:-1;pointer-events:none;background:color-mix(in srgb, color-mix(in srgb, var(--dsh-glass-ground), #000 calc(5% * var(--dsh-glass-ambience))) calc(70% + 10% * var(--dsh-glass-frost,1)), transparent);height:calc(100% + 12px);backdrop-filter:blur(var(--dsh-glass-blur,14px));position:absolute;bottom:-4px;-webkit-mask-image:linear-gradient(#0000 0,#000 18px);mask-image:linear-gradient(#0000 0,#000 18px)}[data-dsh-glass] [data-dsh-glass-fade]{z-index:7;pointer-events:none;backdrop-filter:blur(5px);background:#ffffff2e;height:13px;position:fixed;left:0;right:0}[data-dsh-glass] body[data-ds-dark-theme] [data-dsh-glass-fade]{background:#00000024}[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-windows-titlebar] [data-dsh-glass-fade=top]{display:none}[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] [data-menu-material=translucent],[data-dsh-glass-float] [role=menu]:not([data-menu-material]):not([data-menu-material] *),[data-dsh-glass-float] [role=dialog],[data-dsh-glass-float] [role=alert],[data-dsh-glass-float] [data-trigger-menu],[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] [class*=block]{--dsl-code-block-border-radius:14px;--dsl-diff-radius:14px;--dsl-read-radius:14px;--dsl-terminal-radius:14px;--dsl-web-radius:14px;--dsl-search-radius:14px;border-radius:14px}[data-dsh-glass-float] [data-dsh-glass-add]{background:var(--dsh-glass-card-raised);border:1px solid var(--dsh-glass-rim);box-shadow:var(--dsh-glass-edge);backdrop-filter:blur(var(--dsh-glass-blur,14px))}[data-dsh-glass-float] [data-dsh-glass-add]:hover:not(:disabled){background:var(--dsh-glass-card-hover)}[data-dsh-glass-float] [data-dsh-glass-surface]{background:var(--dsh-glass-card-raised);border:1px solid var(--dsh-glass-rim-soft);box-shadow:var(--dsh-glass-edge);backdrop-filter:blur(var(--dsh-glass-blur,14px))}[data-dsh-glass-float] [data-dsh-glass-surface]:hover:not(:disabled){background:var(--dsh-glass-card-hover)}[data-dsh-glass-float] [data-conversation-scroll] [class*=bubble]{border:1px solid var(--dsh-glass-rim-soft);background:color-mix(in srgb, var(--dsw-alias-bg-layer-1) calc(46% * var(--dsh-glass-frost,1)), transparent);border-radius:14px}[data-dsh-glass-float] [class*=card]{border-radius:14px}[data-dsh-glass-float] [data-reader-reasoning-card]:not([data-overflow=false][data-expanded=false]),[data-dsh-glass-compat] [data-reader-reasoning-card]:not([data-overflow=false][data-expanded=false]){background:color-mix(in srgb, var(--dsw-alias-bg-module-platform) calc(52% * var(--dsh-glass-frost,1)), transparent);border-color:var(--dsh-glass-rim-soft);border-radius:14px}html[data-dsh-glass-float] [data-changed-files],html[data-dsh-glass-float] [data-presented-file]{--changes-fill:var(--dsh-glass-card);--deliverable-fill:var(--dsh-glass-card);border-color:var(--dsh-glass-rim-soft);border-radius:14px}html[data-dsh-glass-float] [data-presented-file],html[data-dsh-glass-float] [data-changed-files]{background:var(--dsh-glass-card)}html[data-dsh-glass-float] [data-changed-files]>:first-child,html[data-dsh-glass-float] [data-changed-files] ul>li>:first-child,html[data-dsh-glass-float] [data-changed-files] ul{background:0 0}html[data-dsh-glass-float] [data-changed-files] ul{border-top:.5px solid var(--dsh-glass-rim-soft)}html[data-dsh-glass-float] [data-changed-files]>:first-child>:first-child,html[data-dsh-glass-float] [data-presented-file]>:first-child{background:var(--dsh-glass-card-raised)}html[data-dsh-glass-float] [data-turn-trigger]{background:var(--dsh-glass-card);border-color:var(--dsh-glass-rim-soft);border-radius:14px}html[data-dsh-glass-float] [data-turn-trigger]:hover{background:var(--dsh-glass-card-hover)}[data-dsh-glass] [data-dsh-glass-settings]{--dsh-glass-settings-raised:calc(38% + 38% * var(--dsh-glass-frost,1));--dsh-glass-settings-soft:calc(30% + 30% * var(--dsh-glass-frost,1));--dsw-alias-bg-module-platform:color-mix(in srgb, var(--dsw-static-neutral-bluish-800) var(--dsh-glass-settings-raised), transparent);--dsw-alias-bg-layer-3:color-mix(in srgb, var(--dsw-static-neutral-bluish-800) var(--dsh-glass-settings-soft), transparent);--dsw-alias-bg-layer-2:color-mix(in srgb, var(--dsw-static-neutral-bluish-850) var(--dsh-glass-settings-raised), transparent);--dsw-alias-bg-layer-1:color-mix(in srgb, var(--dsw-static-neutral-bluish-850) var(--dsh-glass-settings-soft), transparent);--dsw-specific-sidebar-nav-item-active:color-mix(in srgb, var(--dsw-static-neutral-bluish-750) var(--dsh-glass-settings-raised), transparent);--dsw-specific-sidebar-nav-item-hover:color-mix(in srgb, var(--dsw-static-neutral-bluish-850) var(--dsh-glass-settings-soft), transparent)}[data-dsh-glass] body:not([data-ds-dark-theme]) [data-dsh-glass-settings]{--dsw-alias-bg-module-platform:color-mix(in srgb, var(--dsw-static-neutral-bluish-60) var(--dsh-glass-settings-raised), transparent);--dsw-alias-bg-layer-3:color-mix(in srgb, var(--dsw-static-neutral-bluish-00) var(--dsh-glass-settings-soft), transparent);--dsw-alias-bg-layer-2:color-mix(in srgb, var(--dsw-static-neutral-bluish-00) var(--dsh-glass-settings-raised), transparent);--dsw-alias-bg-layer-1:color-mix(in srgb, var(--dsw-static-neutral-bluish-00) var(--dsh-glass-settings-soft), transparent);--dsw-specific-sidebar-nav-item-active:color-mix(in srgb, var(--dsw-static-neutral-bluish-100) var(--dsh-glass-settings-raised), transparent);--dsw-specific-sidebar-nav-item-hover:color-mix(in srgb, var(--dsw-static-neutral-bluish-75) var(--dsh-glass-settings-soft), transparent)}[data-dsh-glass-float] [data-phase] header:not([class*=headerBlank]){width:100%;max-width:min(calc(var(--dsh-chat-user-width,clamp(680px, calc(var(--dsh-conversation-column-width,1500px) * .64), 920px)) + 32px), calc(100% - 32px));border:1px solid var(--dsh-glass-rim);background:var(--dsh-glass-card);box-shadow:var(--dsh-glass-edge), var(--dsh-glass-drop);backdrop-filter:blur(var(--dsh-glass-blur,14px));border-radius:20px;margin:12px auto 0;padding:10px 16px 8px}[data-dsh-glass-float] [data-phase] header:not([class*=headerBlank]):after{display:none}[data-dsh-glass-float] [data-dsh-glass-frame][data-sidebar-collapsed] [data-phase] header:not([class*=headerBlank]){width:auto;max-width:none;margin-left:28px;margin-right:16px}[data-dsh-glass-float] [class*=sidebarCol]{--dsw-specific-sidebar-fill:transparent;z-index:9;border:1px solid var(--dsh-glass-rim-soft);box-shadow:var(--dsh-glass-drop);border-radius:20px;margin:12px;padding:10px 12px 14px;position:relative;overflow:hidden}[data-dsh-glass-float] [class*=sidebarCol]:before{content:\"\";border-radius:inherit;background:var(--dsh-glass-card);box-shadow:var(--dsh-glass-edge);z-index:-1;pointer-events:none;transition:border-radius .15s var(--ds-ease-in-out);position:absolute;inset:0}[data-dsh-glass-float] body{--dsw-specific-sidebar-fill:color-mix(in srgb, var(--dsw-alias-bg-layer-1) calc(52% * var(--dsh-glass-frost,1)), color-mix(in srgb, var(--dsh-glass-ground), var(--dsh-glass-wash-tint) calc(var(--dsh-glass-wash-mix) * var(--dsh-glass-ambience))))!important}[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]{width:calc(100% - 32px);max-width:min(calc(var(--dsh-chat-user-width,clamp(680px, calc(var(--dsh-conversation-column-width,1500px) * .64), 920px)) + 32px), calc(100% - 32px));border:1px solid var(--dsh-glass-rim);background:var(--dsh-glass-card);height:calc(100% - 20px);box-shadow:var(--dsh-glass-edge), var(--dsh-glass-drop);border-radius:20px;margin:8px auto 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;isolation:isolate;border:1px solid var(--dsh-glass-rim-strong);box-shadow:var(--dsh-glass-input-shadow);background:0 0;position:relative}[data-dsh-glass-float] [data-composer-card]:before{content:\"\";z-index:-1;border-radius:inherit;background:var(--dsh-glass-card);box-shadow:var(--dsh-glass-edge);backdrop-filter:blur(var(--dsh-glass-blur,14px));pointer-events:none;position:absolute;inset:0}[data-dsh-glass-float] [data-dsh-glass-inputbar]:not([class*=hero]):not(:has([data-dsh-glass-stats])){padding-bottom:12px}[data-dsh-glass-float] [role=treeitem][aria-selected=true]{background:var(--dsw-alias-interactive-bg-hover)}[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)}[data-dsh-glass-float] [data-menu-material=translucent]:not(:focus-visible){--dsw-menu-surface-fill:var(--dsh-glass-card-raised);--dsw-menu-backdrop-filter:blur(var(--dsh-glass-blur,14px))}[data-dsh-glass-float] body[data-ds-dark-theme] [data-menu-material=translucent]:not(:focus-visible){outline:1px solid var(--dsh-glass-rim-soft);outline-offset:-1px}[data-dsh-glass-float] [role=menu]:not([data-menu-material]):not([data-menu-material] *){background:var(--dsh-glass-card-raised);border:1px solid var(--dsh-glass-rim-soft);backdrop-filter:blur(var(--dsh-glass-blur,14px))}[data-dsh-glass-float] [data-menu-material=translucent]:has([role=group]>[role=menuitemradio]){--dsw-menu-surface-fill:color-mix(in srgb, var(--dsw-alias-bg-layer-2) 70%, transparent)}[data-dsh-glass-float] [data-menu-group]:has(>[role=menuitemradio])>[data-menu-group-heading]{background:var(--dsh-glass-card-raised);backdrop-filter:blur(var(--dsh-glass-blur,14px));border-radius:999px;align-items:center;width:fit-content;margin:3px 0 5px 6px;padding:3px 10px;display:inline-flex}[data-dsh-glass-float] [role=dialog][aria-modal=true]{isolation:isolate;backdrop-filter:none;border:1px solid var(--dsh-glass-rim);box-shadow:var(--dsh-glass-edge), var(--dsh-glass-drop);background:0 0;border-radius:20px;position:relative}[data-dsh-glass-float] [role=dialog][aria-modal=true]:before{content:\"\";z-index:-1;border-radius:inherit;background:var(--dsh-glass-card-raised);backdrop-filter:blur(var(--dsh-glass-blur,14px));pointer-events:none;position:absolute;inset:0}[data-dsh-glass] [data-conversation-scroll]{text-shadow:0 0 1px #ffffff80}[data-dsh-glass] body[data-ds-dark-theme] [data-conversation-scroll]{text-shadow:0 0 1px #0006}[data-dsh-glass-float] [data-dsh-glass-inputbar] [data-slot]{color:var(--dsw-alias-label-secondary)}[data-dsh-glass]{--dsh-glass-entry-scale:1}[data-dsh-glass-compat]{--dsh-glass-entry-scale:0}[data-dsh-glass] [data-testid^=view-]{animation:dsh-glass-in calc(.26s * var(--dsh-glass-entry-scale,1)) var(--ds-ease-in-out)}[data-dsh-glass] [data-tool]{animation:dsh-glass-rise calc(.3s * var(--dsh-glass-entry-scale,1)) var(--ds-ease-in-out) both}[data-dsh-glass] [role=dialog]{animation:dsh-glass-dialog-in calc(.24s * var(--dsh-glass-entry-scale,1)) var(--ds-ease-in-out)}@keyframes dsh-glass-in{0%{opacity:0}}@keyframes dsh-glass-rise{0%{opacity:0;transform:translateY(6px)}}@keyframes dsh-glass-dialog-in{0%{opacity:0}}[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]:not([data-menu-material]):not([data-menu-material] *),[data-dsh-glass-compat] [class*=popover],[data-dsh-glass-compat] [class*=dropdown]{backdrop-filter:blur(12px)}[data-dsh-glass-compat] [data-menu-material=translucent]:not(:focus-visible){--dsw-menu-surface-fill:var(--dsh-glass-card-raised);--dsw-menu-backdrop-filter:blur(12px)}[data-dsh-glass-compat] [data-sidebar-right-panel][data-sidebar-right-open],[data-dsh-glass-compat] [data-sidebar-right-panel][data-sidebar-right-open] [class*=panel]{backdrop-filter:blur(12px)}[data-dsh-glass-compat] [role=menu]:not([data-menu-material]):not([data-menu-material] *),[data-dsh-glass-compat] [class*=popover],[data-dsh-glass-compat] [class*=dropdown]{background:var(--dsh-glass-card-raised)}[data-dsh-glass-compat] [data-composer-card]{isolation:isolate;backdrop-filter:none;background:0 0;position:relative}[data-dsh-glass-compat] [data-composer-card]:before{content:\"\";z-index:-1;border-radius:inherit;background:var(--dsh-glass-card-raised);backdrop-filter:blur(12px);pointer-events:none;position:absolute;inset:0}[data-dsh-glass-compat] [role=menu]:not([data-menu-material]):not([data-menu-material] *):not(:focus-visible),[data-dsh-glass-compat] [data-composer-card]:not(:focus-visible),[data-dsh-glass-compat] [class*=popover]:not(:focus-visible),[data-dsh-glass-compat] [class*=dropdown]:not(:focus-visible){outline:1px solid var(--dsh-glass-rim);outline-offset:-1px}[data-dsh-glass-compat] [role=dialog][aria-modal=true]{isolation:isolate;backdrop-filter:none;border:1px solid var(--dsh-glass-rim);box-shadow:var(--dsh-glass-edge), var(--dsh-glass-drop);background:0 0;position:relative}[data-dsh-glass-compat] [role=dialog][aria-modal=true]:before{content:\"\";z-index:-1;border-radius:inherit;background:var(--dsh-glass-card-raised);backdrop-filter:blur(var(--dsh-glass-blur,12px));pointer-events:none;position:absolute;inset:0}[data-dsh-glass-settings] [role=menu]:not([data-menu-material]):not([data-menu-material] *),[data-dsh-glass-settings] .dsm-select-menu{background:color-mix(in srgb, var(--dsh-glass-ground) 92%, transparent);backdrop-filter:blur(12px);box-shadow:var(--dsh-glass-drop)}[data-dsh-glass-settings] .dsm-panel-head{isolation:isolate;outline:1px solid var(--dsh-glass-rim-soft);outline-offset:-1px;background:0 0;border-radius:14px;padding:6px 12px 4px}[data-dsh-glass-settings] .dsm-panel-head:before{content:\"\";z-index:-1;border-radius:inherit;background:color-mix(in srgb, var(--dsh-glass-ground) 78%, transparent);backdrop-filter:blur(12px);pointer-events:none;position:absolute;inset:0}@media (prefers-reduced-motion:reduce){[data-dsh-glass] [data-testid^=view-],[data-dsh-glass] [data-tool],[data-dsh-glass] [role=dialog]{animation:none}}";
|
|
537
|
+
const GLASS_CSS_TEXT = "[data-dsh-glass] body{--dsh-glass-card:color-mix(in srgb, var(--dsw-alias-bg-layer-1) calc(52% * var(--dsh-glass-frost,1)), transparent);--dsh-glass-card-raised:color-mix(in srgb, var(--dsw-alias-bg-layer-1) calc(64% * var(--dsh-glass-frost,1)), transparent);--dsh-glass-card-hover:color-mix(in srgb, var(--dsw-alias-bg-layer-1) calc(76% * var(--dsh-glass-frost,1)), transparent);--dsh-glass-rim:color-mix(in srgb, var(--dsw-alias-label-primary) 18%, transparent);--dsh-glass-rim-soft:color-mix(in srgb, var(--dsw-alias-label-primary) 12%, transparent);--dsh-glass-rim-strong:color-mix(in srgb, var(--dsw-alias-label-primary) 30%, transparent);--dsh-glass-edge:inset 0 1px 0 #ffffff6b;--dsh-glass-drop:0 10px 32px color-mix(in srgb, var(--dsw-alias-bg-mask-2) 38%, transparent);--dsh-glass-input-shadow:0 1px 2px color-mix(in srgb, var(--dsw-alias-bg-mask-2) 65%, transparent), 0 8px 24px color-mix(in srgb, var(--dsw-alias-bg-mask-2) 80%, transparent);--dsh-glass-ground:color-mix(in srgb, color-mix(in srgb, var(--dsw-alias-bg-base), #fff calc(var(--dsh-glass-brightness-white,0) * 100%)), #000 calc(var(--dsh-glass-brightness-black,0) * 100%));--dsh-glass-ambience:calc(1 - var(--dsh-glass-brightness-white,0) - var(--dsh-glass-brightness-black,0));--dsh-glass-wash-tint:#fff;--dsh-glass-wash-mix:22%}[data-dsh-glass] body[data-ds-dark-theme]{--dsh-glass-rim:color-mix(in srgb, var(--dsw-alias-label-primary) 24%, transparent);--dsh-glass-rim-soft:color-mix(in srgb, var(--dsw-alias-label-primary) 16%, transparent);--dsh-glass-rim-strong:color-mix(in srgb, var(--dsw-alias-label-primary) 30%, transparent);--dsh-glass-edge:inset 0 1px 0 #ffffff14;--dsh-glass-drop:0 10px 32px #02060e73;--dsh-glass-input-shadow:0 1px 2px color-mix(in srgb, var(--dsw-alias-bg-mask-2) 65%, transparent), 0 8px 24px color-mix(in srgb, var(--dsw-alias-bg-mask-2) 80%, transparent);--dsh-glass-wash-tint:var(--dsw-alias-bg-layer-1);--dsh-glass-wash-mix:68%}[data-dsh-glass] body,[data-dsh-glass] [data-dsh-glass-ground-sample]{background: radial-gradient(calc(58% * var(--dsh-glass-glow-size,1)) calc(46% * var(--dsh-glass-glow-size,1)) at 18% 6%, color-mix(in srgb, var(--dsw-alias-brand-primary-new-colorprimary-new-color) calc(12% * var(--dsh-glass-ambience) * var(--dsh-glass-glow,0) * var(--dsh-glass-glow-strength,1)), transparent), transparent 68%), radial-gradient(calc(48% * var(--dsh-glass-glow-size,1)) calc(42% * var(--dsh-glass-glow-size,1)) at 86% 14%, color-mix(in srgb, var(--dsw-alias-state-success-tertiary) calc(10% * var(--dsh-glass-ambience) * var(--dsh-glass-glow,0) * var(--dsh-glass-glow-strength,1)), transparent), transparent 62%), linear-gradient(165deg, color-mix(in srgb, var(--dsh-glass-ground), var(--dsh-glass-wash-tint) calc(var(--dsh-glass-wash-mix) * var(--dsh-glass-ambience))) 0%, var(--dsh-glass-ground) 55%, color-mix(in srgb, var(--dsh-glass-ground), #000 calc(5% * var(--dsh-glass-ambience))) 100%)}[data-dsh-glass] [data-dsh-glass-frame],[data-dsh-glass] [data-phase],[data-dsh-glass] [data-dsh-glass-details],[data-dsh-glass-float] [data-dsh-glass-frame]>[class*=centerCol]{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-phase] [data-dsh-glass-inputbar]>[class*=dock],[data-dsh-glass] [data-phase] [data-dsh-glass-inputbar]>[data-composer-dock]{position:relative}[data-dsh-glass] [data-phase] [data-dsh-glass-inputbar]>[class*=dock]:before,[data-dsh-glass] [data-phase] [data-dsh-glass-inputbar]>[data-composer-dock]:before{content:\"\";left:calc(-1 * var(--dsh-composer-side-clearance,16px));right:calc(-1 * var(--dsh-composer-side-clearance,16px));z-index:-1;pointer-events:none;background:color-mix(in srgb, color-mix(in srgb, var(--dsh-glass-ground), #000 calc(5% * var(--dsh-glass-ambience))) calc(70% + 10% * var(--dsh-glass-frost,1)), transparent);height:calc(100% + 12px);backdrop-filter:blur(var(--dsh-glass-blur,14px));position:absolute;bottom:-4px;-webkit-mask-image:linear-gradient(#0000 0,#000 18px);mask-image:linear-gradient(#0000 0,#000 18px)}[data-dsh-glass] [data-dsh-glass-fade]{z-index:7;pointer-events:none;backdrop-filter:blur(5px);background:#ffffff2e;height:13px;position:fixed;left:0;right:0}[data-dsh-glass] body[data-ds-dark-theme] [data-dsh-glass-fade]{background:#00000024}[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-windows-titlebar] [data-dsh-glass-fade=top]{display:none}[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] [data-menu-material=translucent],[data-dsh-glass-float] [role=menu]:not([data-menu-material]):not([data-menu-material] *),[data-dsh-glass-float] [role=dialog],[data-dsh-glass-float] [role=alert],[data-dsh-glass-float] [data-trigger-menu],[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] [class*=block]{--dsl-code-block-border-radius:14px;--dsl-diff-radius:14px;--dsl-read-radius:14px;--dsl-terminal-radius:14px;--dsl-web-radius:14px;--dsl-search-radius:14px;border-radius:14px}[data-dsh-glass-float] [data-dsh-glass-add]{background:var(--dsh-glass-card-raised);border:1px solid var(--dsh-glass-rim);box-shadow:var(--dsh-glass-edge);backdrop-filter:blur(var(--dsh-glass-blur,14px))}[data-dsh-glass-float] [data-dsh-glass-add]:hover:not(:disabled){background:var(--dsh-glass-card-hover)}[data-dsh-glass-float] [data-dsh-glass-surface]{background:var(--dsh-glass-card-raised);border:1px solid var(--dsh-glass-rim-soft);box-shadow:var(--dsh-glass-edge);backdrop-filter:blur(var(--dsh-glass-blur,14px))}[data-dsh-glass-float] [data-dsh-glass-surface]:hover:not(:disabled){background:var(--dsh-glass-card-hover)}[data-dsh-glass-float] [data-conversation-scroll] [class*=bubble]{border:1px solid var(--dsh-glass-rim-soft);background:color-mix(in srgb, var(--dsw-alias-bg-layer-1) calc(46% * var(--dsh-glass-frost,1)), transparent);border-radius:14px}[data-dsh-glass-float] [class*=card]{border-radius:14px}[data-dsh-glass-float] [data-reader-reasoning-card]:not([data-overflow=false][data-expanded=false]),[data-dsh-glass-compat] [data-reader-reasoning-card]:not([data-overflow=false][data-expanded=false]){background:color-mix(in srgb, var(--dsw-alias-bg-module-platform) calc(52% * var(--dsh-glass-frost,1)), transparent);border-color:var(--dsh-glass-rim-soft);border-radius:14px}html[data-dsh-glass-float] [data-changed-files],html[data-dsh-glass-float] [data-presented-file]{--changes-fill:var(--dsh-glass-card);--deliverable-fill:var(--dsh-glass-card);border-color:var(--dsh-glass-rim-soft);border-radius:14px}html[data-dsh-glass-float] [data-presented-file],html[data-dsh-glass-float] [data-changed-files]{background:var(--dsh-glass-card)}html[data-dsh-glass-float] [data-changed-files]>:first-child,html[data-dsh-glass-float] [data-changed-files] ul>li>:first-child,html[data-dsh-glass-float] [data-changed-files] ul{background:0 0}html[data-dsh-glass-float] [data-changed-files] ul{border-top:.5px solid var(--dsh-glass-rim-soft)}html[data-dsh-glass-float] [data-changed-files]>:first-child>:first-child,html[data-dsh-glass-float] [data-presented-file]>:first-child{background:var(--dsh-glass-card-raised)}html[data-dsh-glass-float] [data-turn-trigger]{background:var(--dsh-glass-card);border-color:var(--dsh-glass-rim-soft);border-radius:14px}html[data-dsh-glass-float] [data-turn-trigger]:hover{background:var(--dsh-glass-card-hover)}[data-dsh-glass] [data-dsh-glass-settings]{--dsh-glass-settings-raised:calc(38% + 38% * var(--dsh-glass-frost,1));--dsh-glass-settings-soft:calc(30% + 30% * var(--dsh-glass-frost,1));--dsw-alias-bg-module-platform:color-mix(in srgb, var(--dsw-static-neutral-bluish-800) var(--dsh-glass-settings-raised), transparent);--dsw-alias-bg-layer-3:color-mix(in srgb, var(--dsw-static-neutral-bluish-800) var(--dsh-glass-settings-soft), transparent);--dsw-alias-bg-layer-2:color-mix(in srgb, var(--dsw-static-neutral-bluish-850) var(--dsh-glass-settings-raised), transparent);--dsw-alias-bg-layer-1:color-mix(in srgb, var(--dsw-static-neutral-bluish-850) var(--dsh-glass-settings-soft), transparent);--dsw-specific-sidebar-nav-item-active:color-mix(in srgb, var(--dsw-static-neutral-bluish-750) var(--dsh-glass-settings-raised), transparent);--dsw-specific-sidebar-nav-item-hover:color-mix(in srgb, var(--dsw-static-neutral-bluish-850) var(--dsh-glass-settings-soft), transparent)}[data-dsh-glass] body:not([data-ds-dark-theme]) [data-dsh-glass-settings]{--dsw-alias-bg-module-platform:color-mix(in srgb, var(--dsw-static-neutral-bluish-60) var(--dsh-glass-settings-raised), transparent);--dsw-alias-bg-layer-3:color-mix(in srgb, var(--dsw-static-neutral-bluish-00) var(--dsh-glass-settings-soft), transparent);--dsw-alias-bg-layer-2:color-mix(in srgb, var(--dsw-static-neutral-bluish-00) var(--dsh-glass-settings-raised), transparent);--dsw-alias-bg-layer-1:color-mix(in srgb, var(--dsw-static-neutral-bluish-00) var(--dsh-glass-settings-soft), transparent);--dsw-specific-sidebar-nav-item-active:color-mix(in srgb, var(--dsw-static-neutral-bluish-100) var(--dsh-glass-settings-raised), transparent);--dsw-specific-sidebar-nav-item-hover:color-mix(in srgb, var(--dsw-static-neutral-bluish-75) var(--dsh-glass-settings-soft), transparent)}[data-dsh-glass-float] [data-phase] header:not([class*=headerBlank]){width:100%;margin:var(--dsh-glass-gap,12px) auto 0;max-width:min(calc(var(--dsh-chat-user-width,clamp(680px, calc(var(--dsh-conversation-column-width,1500px) * .64), 920px)) + 32px), calc(100% - 32px));border:1px solid var(--dsh-glass-rim);background:var(--dsh-glass-card);box-shadow:var(--dsh-glass-edge), var(--dsh-glass-drop);backdrop-filter:blur(var(--dsh-glass-blur,14px));border-radius:20px;padding:10px 16px 8px}[data-dsh-glass-float] [data-phase] header:not([class*=headerBlank]):after{display:none}[data-dsh-glass-float] [data-dsh-glass-frame][data-sidebar-collapsed] [data-phase] header:not([class*=headerBlank]){width:auto;margin-left:calc(var(--dsh-glass-gap,12px) + 16px);max-width:none;margin-right:16px}[data-dsh-glass-float] [class*=sidebarCol]{--dsw-specific-sidebar-fill:transparent;z-index:9;margin:var(--dsh-glass-gap,12px);border:1px solid var(--dsh-glass-rim-soft);box-shadow:var(--dsh-glass-drop);border-radius:20px;padding:10px 12px 14px;position:relative;overflow:hidden}[data-dsh-glass-float] [class*=sidebarCol]:before{content:\"\";border-radius:inherit;background:var(--dsh-glass-card);box-shadow:var(--dsh-glass-edge);z-index:-1;pointer-events:none;transition:border-radius .15s var(--ds-ease-in-out);position:absolute;inset:0}[data-dsh-glass-float] body{--dsw-specific-sidebar-fill:color-mix(in srgb, var(--dsw-alias-bg-layer-1) calc(52% * var(--dsh-glass-frost,1)), color-mix(in srgb, var(--dsh-glass-ground), var(--dsh-glass-wash-tint) calc(var(--dsh-glass-wash-mix) * var(--dsh-glass-ambience))))!important}[data-dsh-glass-float] [data-dsh-glass-frame][data-sidebar-collapsed] [class*=sidebarCol]{margin:var(--dsh-glass-gap,12px) calc(-1 * min(var(--dsh-glass-gap,12px), 16px)) var(--dsh-glass-gap,12px) var(--dsh-glass-gap,12px);transition:margin .15s var(--ds-ease-in-out), border-radius .15s var(--ds-ease-in-out);border-radius:16px;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]{margin:8px auto var(--dsh-glass-gap,12px);width:calc(100% - 32px);max-width:min(calc(var(--dsh-chat-user-width,clamp(680px, calc(var(--dsh-conversation-column-width,1500px) * .64), 920px)) + 32px), calc(100% - 32px));height:calc(100% - 8px - var(--dsh-glass-gap,12px));border:1px solid var(--dsh-glass-rim);background:var(--dsh-glass-card);box-shadow:var(--dsh-glass-edge), var(--dsh-glass-drop);border-radius:20px;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;isolation:isolate;border:1px solid var(--dsh-glass-rim-strong);box-shadow:var(--dsh-glass-input-shadow);background:0 0;position:relative}[data-dsh-glass-float] [data-composer-card]:before{content:\"\";z-index:-1;border-radius:inherit;background:var(--dsh-glass-card);box-shadow:var(--dsh-glass-edge);backdrop-filter:blur(var(--dsh-glass-blur,14px));pointer-events:none;position:absolute;inset:0}[data-dsh-glass-float] [data-dsh-glass-inputbar]:not([class*=hero]):not(:has([data-dsh-glass-stats])){padding-bottom:var(--dsh-glass-gap,12px)}[data-dsh-glass-float] [role=treeitem][aria-selected=true]{background:var(--dsw-alias-interactive-bg-hover)}[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)}[data-dsh-glass-float] [data-menu-material=translucent]:not(:focus-visible){--dsw-menu-surface-fill:var(--dsh-glass-card-raised);--dsw-menu-backdrop-filter:blur(var(--dsh-glass-blur,14px))}[data-dsh-glass-float] body[data-ds-dark-theme] [data-menu-material=translucent]:not(:focus-visible){outline:1px solid var(--dsh-glass-rim-soft);outline-offset:-1px}[data-dsh-glass-float] [role=menu]:not([data-menu-material]):not([data-menu-material] *){background:var(--dsh-glass-card-raised);border:1px solid var(--dsh-glass-rim-soft);backdrop-filter:blur(var(--dsh-glass-blur,14px))}[data-dsh-glass-float] [data-menu-material=translucent]:has([role=group]>[role=menuitemradio]){--dsw-menu-surface-fill:color-mix(in srgb, var(--dsw-alias-bg-layer-2) 70%, transparent)}[data-dsh-glass-float] [data-menu-group]:has(>[role=menuitemradio])>[data-menu-group-heading]{background:var(--dsh-glass-card-raised);backdrop-filter:blur(var(--dsh-glass-blur,14px));border-radius:999px;align-items:center;width:fit-content;margin:3px 0 5px 6px;padding:3px 10px;display:inline-flex}[data-dsh-glass-float] [role=presentation]>[role=dialog][aria-modal=true]{isolation:isolate;backdrop-filter:none;border:1px solid var(--dsh-glass-rim);box-shadow:var(--dsh-glass-edge), var(--dsh-glass-drop);background:0 0;border-radius:20px;position:relative}[data-dsh-glass-float] [role=presentation]>[role=dialog][aria-modal=true]:before{content:\"\";z-index:-1;border-radius:inherit;background:var(--dsh-glass-card-raised);backdrop-filter:blur(var(--dsh-glass-blur,14px));pointer-events:none;position:absolute;inset:0}[data-dsh-glass] [data-conversation-scroll]{text-shadow:0 0 1px #ffffff80}[data-dsh-glass] body[data-ds-dark-theme] [data-conversation-scroll]{text-shadow:0 0 1px #0006}[data-dsh-glass-float] [data-dsh-glass-inputbar] [data-slot]{color:var(--dsw-alias-label-secondary)}[data-dsh-glass]{--dsh-glass-entry-scale:1}[data-dsh-glass-compat]{--dsh-glass-entry-scale:0}[data-dsh-glass] [data-testid^=view-]{animation:dsh-glass-in calc(.26s * var(--dsh-glass-entry-scale,1)) var(--ds-ease-in-out)}[data-dsh-glass] [data-tool]{animation:dsh-glass-rise calc(.3s * var(--dsh-glass-entry-scale,1)) var(--ds-ease-in-out) both}[data-dsh-glass] [role=dialog]{animation:dsh-glass-dialog-in calc(.24s * var(--dsh-glass-entry-scale,1)) var(--ds-ease-in-out)}@keyframes dsh-glass-in{0%{opacity:0}}@keyframes dsh-glass-rise{0%{opacity:0;transform:translateY(6px)}}@keyframes dsh-glass-dialog-in{0%{opacity:0}}[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]:not([data-menu-material]):not([data-menu-material] *),[data-dsh-glass-compat] [class*=popover],[data-dsh-glass-compat] [class*=dropdown]{backdrop-filter:blur(12px)}[data-dsh-glass-compat] [data-menu-material=translucent]:not(:focus-visible){--dsw-menu-surface-fill:var(--dsh-glass-card-raised);--dsw-menu-backdrop-filter:blur(12px)}[data-dsh-glass-compat] [data-sidebar-right-panel][data-sidebar-right-open],[data-dsh-glass-compat] [data-sidebar-right-panel][data-sidebar-right-open] [class*=panel]{backdrop-filter:blur(12px)}[data-dsh-glass-compat] [role=menu]:not([data-menu-material]):not([data-menu-material] *),[data-dsh-glass-compat] [class*=popover],[data-dsh-glass-compat] [class*=dropdown]{background:var(--dsh-glass-card-raised)}[data-dsh-glass-compat] [data-composer-card]{isolation:isolate;backdrop-filter:none;background:0 0;position:relative}[data-dsh-glass-compat] [data-composer-card]:before{content:\"\";z-index:-1;border-radius:inherit;background:var(--dsh-glass-card-raised);backdrop-filter:blur(12px);pointer-events:none;position:absolute;inset:0}[data-dsh-glass-compat] [role=menu]:not([data-menu-material]):not([data-menu-material] *):not(:focus-visible),[data-dsh-glass-compat] [data-composer-card]:not(:focus-visible),[data-dsh-glass-compat] [class*=popover]:not(:focus-visible),[data-dsh-glass-compat] [class*=dropdown]:not(:focus-visible){outline:1px solid var(--dsh-glass-rim);outline-offset:-1px}[data-dsh-glass-compat] [role=presentation]>[role=dialog][aria-modal=true]{isolation:isolate;backdrop-filter:none;border:1px solid var(--dsh-glass-rim);box-shadow:var(--dsh-glass-edge), var(--dsh-glass-drop);background:0 0;position:relative}[data-dsh-glass-compat] [role=presentation]>[role=dialog][aria-modal=true]:before{content:\"\";z-index:-1;border-radius:inherit;background:var(--dsh-glass-card-raised);backdrop-filter:blur(var(--dsh-glass-blur,12px));pointer-events:none;position:absolute;inset:0}[data-dsh-glass-settings] [role=menu]:not([data-menu-material]):not([data-menu-material] *),[data-dsh-glass-settings] .dsm-select-menu{background:color-mix(in srgb, var(--dsh-glass-ground) 92%, transparent);backdrop-filter:blur(12px);box-shadow:var(--dsh-glass-drop)}[data-dsh-glass-settings] .dsm-panel-head{isolation:isolate;outline:1px solid var(--dsh-glass-rim-soft);outline-offset:-1px;background:0 0;border-radius:14px;padding:6px 12px 4px}[data-dsh-glass-settings] .dsm-panel-head:before{content:\"\";z-index:-1;border-radius:inherit;background:color-mix(in srgb, var(--dsh-glass-ground) 78%, transparent);backdrop-filter:blur(12px);pointer-events:none;position:absolute;inset:0}@media (prefers-reduced-motion:reduce){[data-dsh-glass] [data-testid^=view-],[data-dsh-glass] [data-tool],[data-dsh-glass] [role=dialog]{animation:none}}";
|
|
538
538
|
/** Legacy settings namespace (DSH <= 0.1.6-alpha.2): the Host registers it
|
|
539
539
|
* through `settings.installSection`, the Client binds it through
|
|
540
540
|
* `ctx.settingsScope` (see `src/settings-catppuccin.ts`). */
|
|
@@ -585,6 +585,9 @@ window.__ModuleLoader__.load({
|
|
|
585
585
|
blur: 5,
|
|
586
586
|
frost: 20,
|
|
587
587
|
brightness: 50,
|
|
588
|
+
gap: 12,
|
|
589
|
+
glowStrength: 100,
|
|
590
|
+
glowSize: 100,
|
|
588
591
|
glow: false
|
|
589
592
|
};
|
|
590
593
|
/** Shipped update-check channel: chase the stable `latest` tag. */
|
|
@@ -653,6 +656,9 @@ window.__ModuleLoader__.load({
|
|
|
653
656
|
state.glass.blur = clampFinite(glass.blur, 0, 40, DEFAULT_GLASS.blur);
|
|
654
657
|
state.glass.frost = clampFinite(glass.frost, 0, 100, DEFAULT_GLASS.frost);
|
|
655
658
|
state.glass.brightness = clampFinite(glass.brightness, 0, 100, DEFAULT_GLASS.brightness);
|
|
659
|
+
state.glass.gap = clampFinite(glass.gap, 4, 24, DEFAULT_GLASS.gap);
|
|
660
|
+
state.glass.glowStrength = clampFinite(glass.glowStrength, 0, 200, DEFAULT_GLASS.glowStrength);
|
|
661
|
+
state.glass.glowSize = clampFinite(glass.glowSize, 100, 250, DEFAULT_GLASS.glowSize);
|
|
656
662
|
state.glass.glow = glass.glow === true;
|
|
657
663
|
state.autoCheck = raw.autoCheck !== false;
|
|
658
664
|
state.updateChannel = raw.updateChannel === "beta" ? "beta" : "latest";
|
|
@@ -665,7 +671,7 @@ window.__ModuleLoader__.load({
|
|
|
665
671
|
* "no durable state yet" apart from "an explicit default choice". */
|
|
666
672
|
function isDefaultState(state) {
|
|
667
673
|
const expected = defaultState();
|
|
668
|
-
return state.flavor === expected.flavor && state.glass.enabled === expected.glass.enabled && state.glass.mode === expected.glass.mode && state.glass.blur === expected.glass.blur && state.glass.frost === expected.glass.frost && state.glass.brightness === expected.glass.brightness && state.glass.glow === expected.glass.glow && state.autoCheck === expected.autoCheck && state.updateChannel === expected.updateChannel && Object.keys(state.overrides).length === 0 && state.shikiStyle === expected.shikiStyle;
|
|
674
|
+
return state.flavor === expected.flavor && state.glass.enabled === expected.glass.enabled && state.glass.mode === expected.glass.mode && state.glass.blur === expected.glass.blur && state.glass.frost === expected.glass.frost && state.glass.brightness === expected.glass.brightness && state.glass.gap === expected.glass.gap && state.glass.glowStrength === expected.glass.glowStrength && state.glass.glowSize === expected.glass.glowSize && state.glass.glow === expected.glass.glow && state.autoCheck === expected.autoCheck && state.updateChannel === expected.updateChannel && Object.keys(state.overrides).length === 0 && state.shikiStyle === expected.shikiStyle;
|
|
669
675
|
}
|
|
670
676
|
/** Drop the synthetic `version` field: full state → settings-document section. */
|
|
671
677
|
function settingsSectionFromState(state) {
|
|
@@ -693,7 +699,7 @@ window.__ModuleLoader__.load({
|
|
|
693
699
|
/** Whether two settings sections are field-for-field equal (used to skip
|
|
694
700
|
* redundant mirror writes and to recognize the Host echoing our own write). */
|
|
695
701
|
function settingsSectionsEqual(a, b) {
|
|
696
|
-
return a.flavor === b.flavor && a.glass.enabled === b.glass.enabled && a.glass.mode === b.glass.mode && a.glass.blur === b.glass.blur && a.glass.frost === b.glass.frost && a.glass.brightness === b.glass.brightness && a.glass.glow === b.glass.glow && a.autoCheck === b.autoCheck && a.updateChannel === b.updateChannel && a.shikiStyle === b.shikiStyle && sameOverrides(a.overrides, b.overrides);
|
|
702
|
+
return a.flavor === b.flavor && a.glass.enabled === b.glass.enabled && a.glass.mode === b.glass.mode && a.glass.blur === b.glass.blur && a.glass.frost === b.glass.frost && a.glass.brightness === b.glass.brightness && a.glass.gap === b.glass.gap && a.glass.glowStrength === b.glass.glowStrength && a.glass.glowSize === b.glass.glowSize && a.glass.glow === b.glass.glow && a.autoCheck === b.autoCheck && a.updateChannel === b.updateChannel && a.shikiStyle === b.shikiStyle && sameOverrides(a.overrides, b.overrides);
|
|
697
703
|
}
|
|
698
704
|
/**
|
|
699
705
|
* Replay the local changes a window made BEFORE the durable channel became
|
|
@@ -753,6 +759,9 @@ window.__ModuleLoader__.load({
|
|
|
753
759
|
carryGlass("blur");
|
|
754
760
|
carryGlass("frost");
|
|
755
761
|
carryGlass("brightness");
|
|
762
|
+
carryGlass("gap");
|
|
763
|
+
carryGlass("glowStrength");
|
|
764
|
+
carryGlass("glowSize");
|
|
756
765
|
carryGlass("glow");
|
|
757
766
|
carry("autoCheck");
|
|
758
767
|
carry("updateChannel");
|
|
@@ -785,7 +794,10 @@ window.__ModuleLoader__.load({
|
|
|
785
794
|
"--dsh-glass-frost",
|
|
786
795
|
"--dsh-glass-brightness-black",
|
|
787
796
|
"--dsh-glass-brightness-white",
|
|
788
|
-
"--dsh-glass-glow"
|
|
797
|
+
"--dsh-glass-glow",
|
|
798
|
+
"--dsh-glass-gap",
|
|
799
|
+
"--dsh-glass-glow-strength",
|
|
800
|
+
"--dsh-glass-glow-size"
|
|
789
801
|
];
|
|
790
802
|
/** localStorage key carrying the layer enable flag. */
|
|
791
803
|
const GLASS_ENABLED_KEY = "dsh.catppuccin.glass.enabled";
|
|
@@ -812,13 +824,31 @@ window.__ModuleLoader__.load({
|
|
|
812
824
|
blur: DEFAULT_GLASS.blur,
|
|
813
825
|
frost: DEFAULT_GLASS.frost,
|
|
814
826
|
brightness: DEFAULT_GLASS.brightness,
|
|
827
|
+
gap: DEFAULT_GLASS.gap,
|
|
828
|
+
glowStrength: DEFAULT_GLASS.glowStrength,
|
|
829
|
+
glowSize: DEFAULT_GLASS.glowSize,
|
|
815
830
|
glow: DEFAULT_GLASS.glow
|
|
816
831
|
};
|
|
817
832
|
/** Numeric knob keys and their localStorage names. */
|
|
818
833
|
const NUMERIC_KEYS = {
|
|
819
834
|
blur: "dsh.catppuccin.glass.blur",
|
|
820
835
|
frost: "dsh.catppuccin.glass.frost",
|
|
821
|
-
brightness: "dsh.catppuccin.glass.brightness"
|
|
836
|
+
brightness: "dsh.catppuccin.glass.brightness",
|
|
837
|
+
gap: "dsh.catppuccin.glass.gap",
|
|
838
|
+
glowStrength: "dsh.catppuccin.glass.glow-strength",
|
|
839
|
+
glowSize: "dsh.catppuccin.glass.glow-size"
|
|
840
|
+
};
|
|
841
|
+
/** Per-knob [min, max]. One table instead of the old `key === 'blur' ? 40 : 100`
|
|
842
|
+
* test: the gap knob is the first one that is NOT zero-based (4-24, issue
|
|
843
|
+
* #31), and a shared "0 to max" clamp would have silently turned its floor
|
|
844
|
+
* into 0 and its ceiling into 100. */
|
|
845
|
+
const NUMERIC_BOUNDS = {
|
|
846
|
+
blur: [0, 40],
|
|
847
|
+
frost: [0, 100],
|
|
848
|
+
brightness: [0, 100],
|
|
849
|
+
gap: [4, 24],
|
|
850
|
+
glowStrength: [0, 200],
|
|
851
|
+
glowSize: [100, 250]
|
|
822
852
|
};
|
|
823
853
|
/** The localStorage names of the numeric knobs — the reverse of
|
|
824
854
|
* `NUMERIC_KEYS`. Used by the cross-tab `storage` handler: the event's `key`
|
|
@@ -830,10 +860,13 @@ window.__ModuleLoader__.load({
|
|
|
830
860
|
const MODE_KEY = "dsh.catppuccin.glass.mode";
|
|
831
861
|
/** localStorage key of the ground-glow switch (issue #26). */
|
|
832
862
|
const GLOW_KEY = "dsh.catppuccin.glass.glow";
|
|
833
|
-
/** Clamp a numeric knob into its
|
|
863
|
+
/** Clamp a numeric knob into its `NUMERIC_BOUNDS` range. Two knobs are NOT
|
|
864
|
+
* 0-100 and would silently snap back if folded into that arm: `gap` (issue
|
|
865
|
+
* #31, 4-24px) and `glowStrength` (issue #32, 0-`GLOW_STRENGTH_MAX`% — a
|
|
866
|
+
* contrast budget, not a taste number). */
|
|
834
867
|
function clampSetting(key, value) {
|
|
835
|
-
const max = key
|
|
836
|
-
return Number.isFinite(value) ? Math.min(max, Math.max(
|
|
868
|
+
const [min, max] = NUMERIC_BOUNDS[key];
|
|
869
|
+
return Number.isFinite(value) ? Math.min(max, Math.max(min, value)) : SETTINGS_DEFAULTS[key];
|
|
837
870
|
}
|
|
838
871
|
/** Read one numeric knob from localStorage (absent/parse failure means the default). */
|
|
839
872
|
function readSetting(key) {
|
|
@@ -982,6 +1015,9 @@ window.__ModuleLoader__.load({
|
|
|
982
1015
|
blur: this.settings.blur,
|
|
983
1016
|
frost: this.settings.frost,
|
|
984
1017
|
brightness: this.settings.brightness,
|
|
1018
|
+
gap: this.settings.gap,
|
|
1019
|
+
glowStrength: this.settings.glowStrength,
|
|
1020
|
+
glowSize: this.settings.glowSize,
|
|
985
1021
|
glow: this.settings.glow
|
|
986
1022
|
};
|
|
987
1023
|
}
|
|
@@ -995,6 +1031,9 @@ window.__ModuleLoader__.load({
|
|
|
995
1031
|
blur: clampSetting("blur", remote.blur),
|
|
996
1032
|
frost: clampSetting("frost", remote.frost),
|
|
997
1033
|
brightness: clampSetting("brightness", remote.brightness),
|
|
1034
|
+
gap: clampSetting("gap", remote.gap),
|
|
1035
|
+
glowStrength: clampSetting("glowStrength", remote.glowStrength),
|
|
1036
|
+
glowSize: clampSetting("glowSize", remote.glowSize),
|
|
998
1037
|
glow: remote.glow === true
|
|
999
1038
|
};
|
|
1000
1039
|
writeEnabled(this.enabled);
|
|
@@ -1002,6 +1041,9 @@ window.__ModuleLoader__.load({
|
|
|
1002
1041
|
writeSetting("blur", this.settings.blur);
|
|
1003
1042
|
writeSetting("frost", this.settings.frost);
|
|
1004
1043
|
writeSetting("brightness", this.settings.brightness);
|
|
1044
|
+
writeSetting("gap", this.settings.gap);
|
|
1045
|
+
writeSetting("glowStrength", this.settings.glowStrength);
|
|
1046
|
+
writeSetting("glowSize", this.settings.glowSize);
|
|
1005
1047
|
writeGlow(this.settings.glow);
|
|
1006
1048
|
this.sync();
|
|
1007
1049
|
}
|
|
@@ -1047,6 +1089,22 @@ window.__ModuleLoader__.load({
|
|
|
1047
1089
|
if (this.enabled) this.applySettings();
|
|
1048
1090
|
this.publish();
|
|
1049
1091
|
}
|
|
1092
|
+
/**
|
|
1093
|
+
* Set the floating-card inset (px, 4-24) — issue #31.
|
|
1094
|
+
*
|
|
1095
|
+
* Layout-only: it writes `--dsh-glass-gap`, which the mica rules read for the
|
|
1096
|
+
* sidebar sheet's margin, the header/trajectory margins and the composer
|
|
1097
|
+
* bar's bottom pad. No repaint of any material, so a drag is cheap; the
|
|
1098
|
+
* presets call it with a constant.
|
|
1099
|
+
*/
|
|
1100
|
+
setGap(value) {
|
|
1101
|
+
const next = clampSetting("gap", value);
|
|
1102
|
+
if (next === this.settings.gap) return;
|
|
1103
|
+
this.settings.gap = next;
|
|
1104
|
+
writeSetting("gap", next);
|
|
1105
|
+
if (this.enabled) this.applySettings();
|
|
1106
|
+
this.publish();
|
|
1107
|
+
}
|
|
1050
1108
|
/** Toggle the two static ground glows (issue #26; wash-only is the default). */
|
|
1051
1109
|
setGlow(value) {
|
|
1052
1110
|
if (value === this.settings.glow) return;
|
|
@@ -1055,6 +1113,29 @@ window.__ModuleLoader__.load({
|
|
|
1055
1113
|
if (this.enabled) this.applySettings();
|
|
1056
1114
|
this.publish();
|
|
1057
1115
|
}
|
|
1116
|
+
/** Set the ground-glow strength, percent of the shipped look (issue #32).
|
|
1117
|
+
* Only scales the two radial layers — the wash is deliberately untouchable
|
|
1118
|
+
* (it is the issue #26 default) and the switch stays the on/off. */
|
|
1119
|
+
setGlowStrength(value) {
|
|
1120
|
+
const next = clampSetting("glowStrength", value);
|
|
1121
|
+
if (next === this.settings.glowStrength) return;
|
|
1122
|
+
this.settings.glowStrength = next;
|
|
1123
|
+
writeSetting("glowStrength", next);
|
|
1124
|
+
if (this.enabled) this.applySettings();
|
|
1125
|
+
this.publish();
|
|
1126
|
+
}
|
|
1127
|
+
/** Set the ground-glow SPREAD, percent of the shipped radii (issue #32
|
|
1128
|
+
* follow-up). Geometry only: the peak alpha stays put, the falloff flattens
|
|
1129
|
+
* — and positions stay hardcoded (no "where" axis, see
|
|
1130
|
+
* `docs/issue-32-glow-tuning.md` §2). */
|
|
1131
|
+
setGlowSize(value) {
|
|
1132
|
+
const next = clampSetting("glowSize", value);
|
|
1133
|
+
if (next === this.settings.glowSize) return;
|
|
1134
|
+
this.settings.glowSize = next;
|
|
1135
|
+
writeSetting("glowSize", next);
|
|
1136
|
+
if (this.enabled) this.applySettings();
|
|
1137
|
+
this.publish();
|
|
1138
|
+
}
|
|
1058
1139
|
/** Restore every knob to the shipped defaults (persisted immediately). */
|
|
1059
1140
|
resetDefaults() {
|
|
1060
1141
|
this.settings = { ...SETTINGS_DEFAULTS };
|
|
@@ -1062,6 +1143,9 @@ window.__ModuleLoader__.load({
|
|
|
1062
1143
|
writeSetting("blur", this.settings.blur);
|
|
1063
1144
|
writeSetting("frost", this.settings.frost);
|
|
1064
1145
|
writeSetting("brightness", this.settings.brightness);
|
|
1146
|
+
writeSetting("gap", this.settings.gap);
|
|
1147
|
+
writeSetting("glowStrength", this.settings.glowStrength);
|
|
1148
|
+
writeSetting("glowSize", this.settings.glowSize);
|
|
1065
1149
|
writeGlow(this.settings.glow);
|
|
1066
1150
|
if (this.enabled) this.applySettings();
|
|
1067
1151
|
this.publish();
|
|
@@ -1073,6 +1157,9 @@ window.__ModuleLoader__.load({
|
|
|
1073
1157
|
blur: readSetting("blur"),
|
|
1074
1158
|
frost: readSetting("frost"),
|
|
1075
1159
|
brightness: readSetting("brightness"),
|
|
1160
|
+
gap: readSetting("gap"),
|
|
1161
|
+
glowStrength: readSetting("glowStrength"),
|
|
1162
|
+
glowSize: readSetting("glowSize"),
|
|
1076
1163
|
glow: readGlow()
|
|
1077
1164
|
};
|
|
1078
1165
|
}
|
|
@@ -1101,7 +1188,10 @@ window.__ModuleLoader__.load({
|
|
|
1101
1188
|
"--dsh-glass-frost": String(Math.min(this.settings.frost / 50, 1.4)),
|
|
1102
1189
|
"--dsh-glass-brightness-black": String(dark ? Math.max(0, (50 - this.settings.brightness) / 50) : 0),
|
|
1103
1190
|
"--dsh-glass-brightness-white": String(dark ? 0 : Math.max(0, (this.settings.brightness - 50) / 50)),
|
|
1104
|
-
"--dsh-glass-glow": this.settings.glow ? "1" : "0"
|
|
1191
|
+
"--dsh-glass-glow": this.settings.glow ? "1" : "0",
|
|
1192
|
+
"--dsh-glass-gap": `${this.settings.gap}px`,
|
|
1193
|
+
"--dsh-glass-glow-strength": String(this.settings.glowStrength / 100),
|
|
1194
|
+
"--dsh-glass-glow-size": String(this.settings.glowSize / 100)
|
|
1105
1195
|
};
|
|
1106
1196
|
for (const [property, value] of Object.entries(knobs)) style.setProperty(property, value);
|
|
1107
1197
|
const compat = this.settings.mode === "compat";
|
|
@@ -1316,17 +1406,42 @@ window.__ModuleLoader__.load({
|
|
|
1316
1406
|
}
|
|
1317
1407
|
];
|
|
1318
1408
|
/**
|
|
1409
|
+
* Floating-card inset presets (issue #31) — a SEPARATE axis from the material
|
|
1410
|
+
* presets above, and deliberately not folded into them: `activePreset` matches
|
|
1411
|
+
* on the blur/frost/brightness triple, so a gap-only change would otherwise
|
|
1412
|
+
* flip the material row to "custom" for no reason. The three tiers sit inside
|
|
1413
|
+
* the knob's 4-24 range; the slider stays for anything in between.
|
|
1414
|
+
*/
|
|
1415
|
+
const GAP_PRESETS = [
|
|
1416
|
+
{
|
|
1417
|
+
id: "compact",
|
|
1418
|
+
key: "glass.gapCompact",
|
|
1419
|
+
gap: 8
|
|
1420
|
+
},
|
|
1421
|
+
{
|
|
1422
|
+
id: "standard",
|
|
1423
|
+
key: "glass.gapStandard",
|
|
1424
|
+
gap: SETTINGS_DEFAULTS.gap
|
|
1425
|
+
},
|
|
1426
|
+
{
|
|
1427
|
+
id: "loose",
|
|
1428
|
+
key: "glass.gapLoose",
|
|
1429
|
+
gap: 20
|
|
1430
|
+
}
|
|
1431
|
+
];
|
|
1432
|
+
/**
|
|
1319
1433
|
* Render the glass row: title, the master switch, and — while enabled — the
|
|
1320
1434
|
* mode picker and every knob.
|
|
1321
1435
|
* @param props - composed slot props.
|
|
1322
1436
|
* @returns the settings row.
|
|
1323
1437
|
*/
|
|
1324
|
-
function GlassRow({ t, getState, subscribe, setEnabled, setMode, setBlur, setFrost, setBrightness, setGlow, resetDefaults, onPreviewMain }) {
|
|
1325
|
-
const { enabled, mode, blur, frost, brightness, glow, dark } = (0, react.useSyncExternalStore)(subscribe, getState);
|
|
1438
|
+
function GlassRow({ t, getState, subscribe, setEnabled, setMode, setBlur, setFrost, setBrightness, setGap, setGlow, setGlowStrength, setGlowSize, resetDefaults, onPreviewMain }) {
|
|
1439
|
+
const { enabled, mode, blur, frost, brightness, gap, glow, glowStrength, glowSize, dark } = (0, react.useSyncExternalStore)(subscribe, getState);
|
|
1326
1440
|
const bgMin = dark ? 0 : 50;
|
|
1327
1441
|
const bgMax = dark ? 50 : 100;
|
|
1328
1442
|
const bgDisplay = Math.min(bgMax, Math.max(bgMin, brightness));
|
|
1329
1443
|
const activePreset = GLASS_PRESETS.find((p) => p.blur === blur && p.frost === frost && p.brightness === brightness)?.id ?? "";
|
|
1444
|
+
const activeGapPreset = GAP_PRESETS.find((p) => p.gap === gap)?.id ?? "";
|
|
1330
1445
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
1331
1446
|
className: settings_row_module_css_default.row,
|
|
1332
1447
|
"data-catppuccin-row": "glass",
|
|
@@ -1444,6 +1559,41 @@ window.__ModuleLoader__.load({
|
|
|
1444
1559
|
className: GlassRow_module_css_default.rowHint,
|
|
1445
1560
|
children: t(dark ? "glass.brightnessHintDark" : "glass.brightnessHintLight")
|
|
1446
1561
|
}),
|
|
1562
|
+
mode === "mica" && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [
|
|
1563
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
1564
|
+
className: GlassRow_module_css_default.row,
|
|
1565
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
1566
|
+
className: GlassRow_module_css_default.rowLabel,
|
|
1567
|
+
children: t("glass.gap")
|
|
1568
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
1569
|
+
className: GlassRow_module_css_default.presetGroup,
|
|
1570
|
+
role: "group",
|
|
1571
|
+
"aria-label": t("glass.gap"),
|
|
1572
|
+
children: GAP_PRESETS.map((preset) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Button, {
|
|
1573
|
+
size: "sm",
|
|
1574
|
+
variant: activeGapPreset === preset.id ? "primary" : "outline",
|
|
1575
|
+
"aria-pressed": activeGapPreset === preset.id,
|
|
1576
|
+
onClick: () => {
|
|
1577
|
+
setGap(preset.gap);
|
|
1578
|
+
},
|
|
1579
|
+
children: t(preset.key)
|
|
1580
|
+
}, preset.id))
|
|
1581
|
+
})]
|
|
1582
|
+
}),
|
|
1583
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(Knob, {
|
|
1584
|
+
label: t("glass.gap"),
|
|
1585
|
+
value: gap,
|
|
1586
|
+
min: 4,
|
|
1587
|
+
max: 24,
|
|
1588
|
+
step: 1,
|
|
1589
|
+
unit: "px",
|
|
1590
|
+
onChange: setGap
|
|
1591
|
+
}),
|
|
1592
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
1593
|
+
className: GlassRow_module_css_default.rowHint,
|
|
1594
|
+
children: t("glass.gapHint")
|
|
1595
|
+
})
|
|
1596
|
+
] }),
|
|
1447
1597
|
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
1448
1598
|
className: GlassRow_module_css_default.row,
|
|
1449
1599
|
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
@@ -1461,6 +1611,23 @@ window.__ModuleLoader__.load({
|
|
|
1461
1611
|
className: GlassRow_module_css_default.rowHint,
|
|
1462
1612
|
children: t("glass.glowHint")
|
|
1463
1613
|
}),
|
|
1614
|
+
glow && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(Knob, {
|
|
1615
|
+
label: t("glass.glowStrength"),
|
|
1616
|
+
value: glowStrength,
|
|
1617
|
+
min: 0,
|
|
1618
|
+
max: 200,
|
|
1619
|
+
step: 5,
|
|
1620
|
+
unit: "%",
|
|
1621
|
+
onChange: setGlowStrength
|
|
1622
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Knob, {
|
|
1623
|
+
label: t("glass.glowSize"),
|
|
1624
|
+
value: glowSize,
|
|
1625
|
+
min: 100,
|
|
1626
|
+
max: 250,
|
|
1627
|
+
step: 5,
|
|
1628
|
+
unit: "%",
|
|
1629
|
+
onChange: setGlowSize
|
|
1630
|
+
})] }),
|
|
1464
1631
|
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
1465
1632
|
className: GlassRow_module_css_default.sampleRow,
|
|
1466
1633
|
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
@@ -2081,8 +2248,15 @@ window.__ModuleLoader__.load({
|
|
|
2081
2248
|
"glass.brightness": "背景亮度",
|
|
2082
2249
|
"glass.brightnessHintDark": "深色模式:0 压暗至纯黑,50 原样",
|
|
2083
2250
|
"glass.brightnessHintLight": "浅色模式:50 原样,100 提亮至纯白",
|
|
2251
|
+
"glass.gap": "卡片间距",
|
|
2252
|
+
"glass.gapHint": "云母模式下悬浮卡片与窗口边缘的留白。调大后侧栏卡片自身会变窄,正文列宽不变;兼容模式不受影响。",
|
|
2253
|
+
"glass.gapCompact": "紧凑",
|
|
2254
|
+
"glass.gapStandard": "标准",
|
|
2255
|
+
"glass.gapLoose": "宽松",
|
|
2084
2256
|
"glass.glow": "地面光斑",
|
|
2085
|
-
"glass.glowHint": "在渐变地面上叠加两枚柔光斑(0.6.3
|
|
2257
|
+
"glass.glowHint": "在渐变地面上叠加两枚柔光斑(0.6.3 的观感)。光斑固定在屏幕上,各块玻璃面板会透出它的不同部位,所以默认关闭;打开后左上角会明显偏亮,强度可调,100% 即上述观感。背景亮度拉满时氛围归零,光斑会一并淡出",
|
|
2258
|
+
"glass.glowStrength": "地面光斑强度",
|
|
2259
|
+
"glass.glowSize": "地面光斑范围",
|
|
2086
2260
|
"glass.previewGround": "地面样本",
|
|
2087
2261
|
"glass.previewGroundHint": "这一段就是页面地面的真实取色:拖动「背景亮度」或切换「地面光斑」,它当场变化。",
|
|
2088
2262
|
"glass.reset": "还原默认值",
|
|
@@ -2169,8 +2343,15 @@ window.__ModuleLoader__.load({
|
|
|
2169
2343
|
"glass.brightness": "Backdrop brightness",
|
|
2170
2344
|
"glass.brightnessHintDark": "Dark mode: 0 fades to pure black, 50 unchanged",
|
|
2171
2345
|
"glass.brightnessHintLight": "Light mode: 50 unchanged, 100 brightens to pure white",
|
|
2346
|
+
"glass.gap": "Card spacing",
|
|
2347
|
+
"glass.gapHint": "Whitespace between the floating cards and the window edge (Mica only). A larger gap narrows the sidebar sheet itself; the reading column does not move. Compatibility mode is unaffected.",
|
|
2348
|
+
"glass.gapCompact": "Compact",
|
|
2349
|
+
"glass.gapStandard": "Standard",
|
|
2350
|
+
"glass.gapLoose": "Loose",
|
|
2172
2351
|
"glass.glow": "Ground glows",
|
|
2173
|
-
"glass.glowHint": "Adds the two soft radial glows back on top of the gradient ground (the 0.6.3 look). They are pinned to the screen while the glass panes sit elsewhere, so each pane transmits a different slice of them — off by default; turning it on visibly brightens the top-left corner",
|
|
2352
|
+
"glass.glowHint": "Adds the two soft radial glows back on top of the gradient ground (the 0.6.3 look). They are pinned to the screen while the glass panes sit elsewhere, so each pane transmits a different slice of them — off by default; turning it on visibly brightens the top-left corner, and the strength knob below scales it (100% is that look). At maximum backdrop brightness the ambience collapses and the glows fade out with it",
|
|
2353
|
+
"glass.glowStrength": "Ground glow strength",
|
|
2354
|
+
"glass.glowSize": "Ground glow spread",
|
|
2174
2355
|
"glass.previewGround": "Ground sample",
|
|
2175
2356
|
"glass.previewGroundHint": "This strip is the page ground itself: drag the brightness knob or toggle the glows and it changes on the spot.",
|
|
2176
2357
|
"glass.reset": "Reset to defaults",
|
|
@@ -2257,8 +2438,15 @@ window.__ModuleLoader__.load({
|
|
|
2257
2438
|
"glass.brightness": "背景の輝度",
|
|
2258
2439
|
"glass.brightnessHintDark": "ダーク: 0 で純黒、50 でそのまま",
|
|
2259
2440
|
"glass.brightnessHintLight": "ライト: 50 でそのまま、100 で純白",
|
|
2441
|
+
"glass.gap": "カード間隔",
|
|
2442
|
+
"glass.gapHint": "Mica モードで浮遊カードとウィンドウ端のあいだに取る余白。広げるとサイドバーのカード自体が細くなり、本文の列幅は変わりません。互換モードには影響しません。",
|
|
2443
|
+
"glass.gapCompact": "コンパクト",
|
|
2444
|
+
"glass.gapStandard": "標準",
|
|
2445
|
+
"glass.gapLoose": "ゆったり",
|
|
2260
2446
|
"glass.glow": "地面の光だまり",
|
|
2261
|
-
"glass.glowHint": "グラデーションの地面に 2 つの柔らかな光だまりを重ねます(0.6.3
|
|
2447
|
+
"glass.glowHint": "グラデーションの地面に 2 つの柔らかな光だまりを重ねます(0.6.3 の見た目)。光だまりは画面に固定され、各ガラス面はその別々の部分を透かすため、既定ではオフ。オンにすると左上が明るくなります。下の強さで拡大でき、100% がその見た目です。背景の明るさを最大にすると雰囲気が 0 になり、光だまりも消えます",
|
|
2448
|
+
"glass.glowStrength": "地面の光だまりの強さ",
|
|
2449
|
+
"glass.glowSize": "地面の光だまりの広がり",
|
|
2262
2450
|
"glass.previewGround": "地面サンプル",
|
|
2263
2451
|
"glass.previewGroundHint": "この帯はページの地面そのものです。背景の輝度を動かすか光だまりを切り替えると、その場で変わります。",
|
|
2264
2452
|
"glass.reset": "デフォルトに戻す",
|
|
@@ -2345,8 +2533,15 @@ window.__ModuleLoader__.load({
|
|
|
2345
2533
|
"glass.brightness": "배경 밝기",
|
|
2346
2534
|
"glass.brightnessHintDark": "다크 모드: 0이면 순수 검정, 50이면 그대로",
|
|
2347
2535
|
"glass.brightnessHintLight": "라이트 모드: 50이면 그대로, 100이면 순수 흰색",
|
|
2536
|
+
"glass.gap": "카드 간격",
|
|
2537
|
+
"glass.gapHint": "Mica 모드에서 떠 있는 카드와 창 가장자리 사이의 여백입니다. 넓히면 사이드바 카드 자체가 좁아지고 본문 열 너비는 그대로입니다. 호환 모드에는 영향이 없습니다.",
|
|
2538
|
+
"glass.gapCompact": "좁게",
|
|
2539
|
+
"glass.gapStandard": "표준",
|
|
2540
|
+
"glass.gapLoose": "넓게",
|
|
2348
2541
|
"glass.glow": "지면 광점",
|
|
2349
|
-
"glass.glowHint": "그라데이션 지면 위에 부드러운 광점 두 개를 다시 올립니다(0.6.3 모양). 광점은 화면에 고정되어 각 유리 패널이 서로 다른 부분을 비추므로 기본값은 꺼짐이며, 켜면 왼쪽 위가
|
|
2542
|
+
"glass.glowHint": "그라데이션 지면 위에 부드러운 광점 두 개를 다시 올립니다(0.6.3 모양). 광점은 화면에 고정되어 각 유리 패널이 서로 다른 부분을 비추므로 기본값은 꺼짐이며, 켜면 왼쪽 위가 밝아집니다. 아래 강도로 키울 수 있고 100%가 그 모양입니다. 배경 밝기를 최대로 올리면 분위기가 0이 되어 광점도 사라집니다",
|
|
2543
|
+
"glass.glowStrength": "지면 광점 강도",
|
|
2544
|
+
"glass.glowSize": "지면 광점 범위",
|
|
2350
2545
|
"glass.previewGround": "바닥 샘플",
|
|
2351
2546
|
"glass.previewGroundHint": "이 띠는 페이지 바닥 그대로입니다. 배경 밝기를 움직이거나 빛무리를 켜면 바로 바뀝니다.",
|
|
2352
2547
|
"glass.reset": "기본값으로 되돌리기",
|
|
@@ -2433,8 +2628,15 @@ window.__ModuleLoader__.load({
|
|
|
2433
2628
|
"glass.brightness": "Brillo del fondo",
|
|
2434
2629
|
"glass.brightnessHintDark": "Modo oscuro: 0 atenúa a negro puro, 50 sin cambios",
|
|
2435
2630
|
"glass.brightnessHintLight": "Modo claro: 50 sin cambios, 100 aclara hasta blanco puro",
|
|
2631
|
+
"glass.gap": "Espaciado de tarjetas",
|
|
2632
|
+
"glass.gapHint": "Espacio entre las tarjetas flotantes y el borde de la ventana (solo Mica). Al ampliarlo, la tarjeta de la barra lateral se estrecha; la columna de lectura no se mueve. El modo Compatibilidad no se ve afectado.",
|
|
2633
|
+
"glass.gapCompact": "Compacto",
|
|
2634
|
+
"glass.gapStandard": "Estándar",
|
|
2635
|
+
"glass.gapLoose": "Amplio",
|
|
2436
2636
|
"glass.glow": "Destellos del fondo",
|
|
2437
|
-
"glass.glowHint": "Vuelve a añadir los dos destellos radiales suaves sobre el fondo degradado (el aspecto de 0.6.3). Están fijados a la pantalla y cada panel de vidrio deja pasar una parte distinta, por eso está desactivado por defecto; al activarlo se aclara la esquina superior izquierda",
|
|
2637
|
+
"glass.glowHint": "Vuelve a añadir los dos destellos radiales suaves sobre el fondo degradado (el aspecto de 0.6.3). Están fijados a la pantalla y cada panel de vidrio deja pasar una parte distinta, por eso está desactivado por defecto; al activarlo se aclara la esquina superior izquierda y el control de intensidad de abajo lo amplía (100 % es ese aspecto). Con el brillo del fondo al máximo la ambientación se anula y los destellos desaparecen con ella",
|
|
2638
|
+
"glass.glowStrength": "Intensidad de los destellos",
|
|
2639
|
+
"glass.glowSize": "Extensión de los destellos",
|
|
2438
2640
|
"glass.previewGround": "Muestra del fondo",
|
|
2439
2641
|
"glass.previewGroundHint": "Esta banda es el fondo real de la página: mueve el brillo o activa los destellos y cambia al instante.",
|
|
2440
2642
|
"glass.reset": "Restablecer valores",
|
|
@@ -2521,8 +2723,15 @@ window.__ModuleLoader__.load({
|
|
|
2521
2723
|
"glass.brightness": "Luminosité du fond",
|
|
2522
2724
|
"glass.brightnessHintDark": "Mode sombre : 0 atténue vers le noir pur, 50 inchangé",
|
|
2523
2725
|
"glass.brightnessHintLight": "Mode clair : 50 inchangé, 100 éclaircit vers le blanc pur",
|
|
2726
|
+
"glass.gap": "Espacement des cartes",
|
|
2727
|
+
"glass.gapHint": "Espace entre les cartes flottantes et le bord de la fenêtre (Mica uniquement). En l'augmentant, la carte de la barre latérale se rétrécit ; la colonne de lecture ne bouge pas. Le mode Compatibilité n'est pas concerné.",
|
|
2728
|
+
"glass.gapCompact": "Compact",
|
|
2729
|
+
"glass.gapStandard": "Standard",
|
|
2730
|
+
"glass.gapLoose": "Large",
|
|
2524
2731
|
"glass.glow": "Halos du fond",
|
|
2525
|
-
"glass.glowHint": "Rajoute les deux halos radiaux doux sur le fond dégradé (l'aspect 0.6.3). Ils sont fixés à l'écran et chaque panneau de verre en laisse passer une partie différente, d'où la valeur par défaut désactivée ; l'activer éclaircit le coin supérieur gauche",
|
|
2732
|
+
"glass.glowHint": "Rajoute les deux halos radiaux doux sur le fond dégradé (l'aspect 0.6.3). Ils sont fixés à l'écran et chaque panneau de verre en laisse passer une partie différente, d'où la valeur par défaut désactivée ; l'activer éclaircit le coin supérieur gauche, et le curseur d'intensité ci-dessous l'amplifie (100 % correspond à cet aspect). Au maximum de luminosité du fond, l'ambiance s'annule et les halos disparaissent avec elle",
|
|
2733
|
+
"glass.glowStrength": "Intensité des halos",
|
|
2734
|
+
"glass.glowSize": "Étendue des halos",
|
|
2526
2735
|
"glass.previewGround": "Échantillon du fond",
|
|
2527
2736
|
"glass.previewGroundHint": "Cette bande est le fond réel de la page : bougez la luminosité ou activez les halos et elle change aussitôt.",
|
|
2528
2737
|
"glass.reset": "Restaurer les valeurs",
|
|
@@ -2609,8 +2818,15 @@ window.__ModuleLoader__.load({
|
|
|
2609
2818
|
"glass.brightness": "Hintergrundhelligkeit",
|
|
2610
2819
|
"glass.brightnessHintDark": "Dunkelmodus: 0 verdunkelt zu reinem Schwarz, 50 unverändert",
|
|
2611
2820
|
"glass.brightnessHintLight": "Hellmodus: 50 unverändert, 100 hellt zu reinem Weiß auf",
|
|
2821
|
+
"glass.gap": "Kartenabstand",
|
|
2822
|
+
"glass.gapHint": "Abstand zwischen den schwebenden Karten und dem Fensterrand (nur Mica). Ein größerer Abstand verschmälert die Seitenleisten-Karte selbst; die Lesespalte bleibt gleich. Der Kompatibilitätsmodus ist nicht betroffen.",
|
|
2823
|
+
"glass.gapCompact": "Kompakt",
|
|
2824
|
+
"glass.gapStandard": "Standard",
|
|
2825
|
+
"glass.gapLoose": "Weit",
|
|
2612
2826
|
"glass.glow": "Hintergrund-Lichtflecken",
|
|
2613
|
-
"glass.glowHint": "Legt die beiden weichen Lichtflecken wieder über den Verlaufs-Hintergrund (das Aussehen von 0.6.3). Sie sind am Bildschirm fixiert und jede Glasscheibe lässt einen anderen Ausschnitt durch, deshalb standardmäßig aus; eingeschaltet hellt sich die linke obere Ecke auf",
|
|
2827
|
+
"glass.glowHint": "Legt die beiden weichen Lichtflecken wieder über den Verlaufs-Hintergrund (das Aussehen von 0.6.3). Sie sind am Bildschirm fixiert und jede Glasscheibe lässt einen anderen Ausschnitt durch, deshalb standardmäßig aus; eingeschaltet hellt sich die linke obere Ecke auf, und der Regler für die Stärke darunter verstärkt sie (100 % entspricht diesem Aussehen). Bei maximaler Hintergrundhelligkeit fällt die Ambience auf 0 und die Lichtflecken verschwinden mit",
|
|
2828
|
+
"glass.glowStrength": "Stärke der Lichtflecken",
|
|
2829
|
+
"glass.glowSize": "Ausdehnung der Lichtflecken",
|
|
2614
2830
|
"glass.previewGround": "Bodenprobe",
|
|
2615
2831
|
"glass.previewGroundHint": "Dieser Streifen ist der echte Seitenhintergrund: Helligkeit ziehen oder Lichtflecken einschalten – er ändert sich sofort.",
|
|
2616
2832
|
"glass.reset": "Standardwerte wiederherstellen",
|
|
@@ -3811,6 +4027,21 @@ window.__ModuleLoader__.load({
|
|
|
3811
4027
|
path: ["glass", "brightness"],
|
|
3812
4028
|
value: section.glass.brightness
|
|
3813
4029
|
},
|
|
4030
|
+
{
|
|
4031
|
+
op: "set",
|
|
4032
|
+
path: ["glass", "gap"],
|
|
4033
|
+
value: section.glass.gap
|
|
4034
|
+
},
|
|
4035
|
+
{
|
|
4036
|
+
op: "set",
|
|
4037
|
+
path: ["glass", "glowStrength"],
|
|
4038
|
+
value: section.glass.glowStrength
|
|
4039
|
+
},
|
|
4040
|
+
{
|
|
4041
|
+
op: "set",
|
|
4042
|
+
path: ["glass", "glowSize"],
|
|
4043
|
+
value: section.glass.glowSize
|
|
4044
|
+
},
|
|
3814
4045
|
{
|
|
3815
4046
|
op: "set",
|
|
3816
4047
|
path: ["glass", "glow"],
|
|
@@ -4609,9 +4840,18 @@ window.__ModuleLoader__.load({
|
|
|
4609
4840
|
setBrightness: (brightness) => {
|
|
4610
4841
|
glass.setBrightness(brightness);
|
|
4611
4842
|
},
|
|
4843
|
+
setGap: (gap) => {
|
|
4844
|
+
glass.setGap(gap);
|
|
4845
|
+
},
|
|
4612
4846
|
setGlow: (glow) => {
|
|
4613
4847
|
glass.setGlow(glow);
|
|
4614
4848
|
},
|
|
4849
|
+
setGlowStrength: (glowStrength) => {
|
|
4850
|
+
glass.setGlowStrength(glowStrength);
|
|
4851
|
+
},
|
|
4852
|
+
setGlowSize: (glowSize) => {
|
|
4853
|
+
glass.setGlowSize(glowSize);
|
|
4854
|
+
},
|
|
4615
4855
|
resetDefaults: () => {
|
|
4616
4856
|
glass.resetDefaults();
|
|
4617
4857
|
}
|