@lemoncat7/dsh-theme-xiaohei 0.4.6 → 0.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +15 -9
- package/THIRD_PARTY_NOTICES.md +13 -1
- package/docs/dsh-021-compatibility.md +23 -0
- package/docs/releases/0.5.0.md +24 -0
- package/docs/rift-interaction.md +35 -0
- package/docs/rift-preview.md +39 -0
- package/lib/client.companion.js +3 -4
- package/lib/client.decorations.js +224 -51
- package/lib/client.js +534 -2405
- package/lib/index.d.ts +1 -2
- package/lib/index.js +395 -11
- package/lib/rift/boot.d.ts +6 -0
- package/package.json +29 -19
- package/lib/appearance.d.ts +0 -12
- package/lib/appearance.js +0 -42
- package/lib/blink.d.ts +0 -4
- package/lib/blink.js +0 -110
- package/lib/bloub-heixiu/ambient.d.ts +0 -3
- package/lib/bloub-heixiu/ambient.js +0 -12
- package/lib/bloub-heixiu/character.d.ts +0 -33
- package/lib/bloub-heixiu/character.js +0 -124
- package/lib/bloub-heixiu/effects.d.ts +0 -4
- package/lib/bloub-heixiu/effects.js +0 -91
- package/lib/bloub-heixiu/flight.d.ts +0 -15
- package/lib/bloub-heixiu/flight.js +0 -66
- package/lib/bloub-heixiu/follow.d.ts +0 -13
- package/lib/bloub-heixiu/follow.js +0 -23
- package/lib/bloub-heixiu/layout.d.ts +0 -34
- package/lib/bloub-heixiu/layout.js +0 -26
- package/lib/bloub-heixiu/renderer.d.ts +0 -16
- package/lib/bloub-heixiu/renderer.js +0 -94
- package/lib/bloub-heixiu/runtime.d.ts +0 -6
- package/lib/bloub-heixiu/runtime.js +0 -440
- package/lib/bloub-heixiu/signals.d.ts +0 -17
- package/lib/bloub-heixiu/signals.js +0 -55
- package/lib/bloub-heixiu/styles.d.ts +0 -2
- package/lib/bloub-heixiu/styles.js +0 -98
- package/lib/boot-appearance.d.ts +0 -10
- package/lib/boot-appearance.js +0 -47
- package/lib/boot-loader.d.ts +0 -5
- package/lib/boot-loader.js +0 -158
- package/lib/chrome/accessibility.d.ts +0 -3
- package/lib/chrome/accessibility.js +0 -69
- package/lib/chrome/blink.d.ts +0 -3
- package/lib/chrome/blink.js +0 -15
- package/lib/chrome/composer-avatar.d.ts +0 -10
- package/lib/chrome/composer-avatar.js +0 -599
- package/lib/chrome/composer-send-heixiu.d.ts +0 -3
- package/lib/chrome/composer-send-heixiu.js +0 -143
- package/lib/chrome/composer.d.ts +0 -3
- package/lib/chrome/composer.js +0 -135
- package/lib/chrome/controls.d.ts +0 -8
- package/lib/chrome/controls.js +0 -348
- package/lib/chrome/conversation-messages.d.ts +0 -3
- package/lib/chrome/conversation-messages.js +0 -329
- package/lib/chrome/conversation-submissions.d.ts +0 -3
- package/lib/chrome/conversation-submissions.js +0 -68
- package/lib/chrome/conversation.d.ts +0 -3
- package/lib/chrome/conversation.js +0 -67
- package/lib/chrome/frames.d.ts +0 -6
- package/lib/chrome/frames.js +0 -134
- package/lib/chrome/gaze.d.ts +0 -3
- package/lib/chrome/gaze.js +0 -103
- package/lib/chrome/identity.d.ts +0 -6
- package/lib/chrome/identity.js +0 -47
- package/lib/chrome/overlays.d.ts +0 -3
- package/lib/chrome/overlays.js +0 -104
- package/lib/chrome/portal.d.ts +0 -6
- package/lib/chrome/portal.js +0 -169
- package/lib/chrome/reactions.d.ts +0 -3
- package/lib/chrome/reactions.js +0 -85
- package/lib/chrome/sidebar.d.ts +0 -3
- package/lib/chrome/sidebar.js +0 -313
- package/lib/chrome/tokens.d.ts +0 -3
- package/lib/chrome/tokens.js +0 -224
- package/lib/chrome/workspace.d.ts +0 -3
- package/lib/chrome/workspace.js +0 -94
- package/lib/chrome.d.ts +0 -10
- package/lib/chrome.js +0 -46
- package/lib/client-entry.d.ts +0 -3
- package/lib/client-entry.js +0 -3
- package/lib/client.d.ts +0 -10
- package/lib/client.pose-chin-dark.js +0 -4
- package/lib/client.pose-chin-light.js +0 -4
- package/lib/client.pose-doze-dark.js +0 -4
- package/lib/client.pose-doze-light.js +0 -4
- package/lib/client.pose-halfpeek-dark.js +0 -4
- package/lib/client.pose-halfpeek-light.js +0 -4
- package/lib/client.pose-peek-dark.js +0 -4
- package/lib/client.pose-peek-light.js +0 -4
- package/lib/client.pose-seated-dark.js +0 -4
- package/lib/client.pose-seated-light.js +0 -4
- package/lib/client.rig-chin-dark.js +0 -4
- package/lib/client.rig-chin-light.js +0 -4
- package/lib/client.rig-halfpeek-dark.js +0 -4
- package/lib/client.rig-halfpeek-light.js +0 -4
- package/lib/client.rig-peek-dark.js +0 -4
- package/lib/client.rig-peek-light.js +0 -4
- package/lib/client.rig-seated-dark.js +0 -4
- package/lib/client.rig-seated-light.js +0 -4
- package/lib/companion-entry.d.ts +0 -3
- package/lib/companion-entry.js +0 -3
- package/lib/composer-avatar.d.ts +0 -18
- package/lib/composer-avatar.js +0 -441
- package/lib/composer-draft-preview.d.ts +0 -4
- package/lib/composer-draft-preview.js +0 -8
- package/lib/composer-send-heixiu.d.ts +0 -8
- package/lib/composer-send-heixiu.js +0 -133
- package/lib/current-session.d.ts +0 -6
- package/lib/current-session.js +0 -5
- package/lib/decorations-entry.d.ts +0 -3
- package/lib/decorations-entry.js +0 -18
- package/lib/deferred-companion.d.ts +0 -5
- package/lib/deferred-companion.js +0 -9
- package/lib/deferred-decorations.d.ts +0 -3
- package/lib/deferred-decorations.js +0 -51
- package/lib/gaze.d.ts +0 -4
- package/lib/gaze.js +0 -230
- package/lib/generated-backgrounds.d.ts +0 -14
- package/lib/generated-backgrounds.js +0 -14
- package/lib/generated-character-motion.d.ts +0 -4
- package/lib/generated-character-motion.js +0 -2
- package/lib/generated-identity.d.ts +0 -6
- package/lib/generated-identity.js +0 -6
- package/lib/generated-keyart.d.ts +0 -34
- package/lib/generated-keyart.js +0 -34
- package/lib/generated-loading-assets.d.ts +0 -4
- package/lib/generated-loading-assets.js +0 -4
- package/lib/heixiu-interactions.d.ts +0 -10
- package/lib/heixiu-interactions.js +0 -161
- package/lib/host-contract.d.ts +0 -9
- package/lib/host-contract.js +0 -13
- package/lib/host-dom.d.ts +0 -11
- package/lib/host-dom.js +0 -72
- package/lib/loading-heixiu.d.ts +0 -8
- package/lib/loading-heixiu.js +0 -287
- package/lib/metallic-brand-mark.d.ts +0 -10
- package/lib/metallic-brand-mark.js +0 -296
- package/lib/plugin.d.ts +0 -6
- package/lib/plugin.js +0 -60
- package/lib/portal.d.ts +0 -40
- package/lib/portal.js +0 -225
- package/lib/reactions.d.ts +0 -20
- package/lib/reactions.js +0 -380
- package/lib/scene/avatar-model.d.ts +0 -6
- package/lib/scene/avatar-model.js +0 -646
- package/lib/scene/avatar-motion.d.ts +0 -3
- package/lib/scene/avatar-motion.js +0 -799
- package/lib/scene/character-assets.d.ts +0 -13
- package/lib/scene/character-assets.js +0 -26
- package/lib/scene/character-expression.d.ts +0 -4
- package/lib/scene/character-expression.js +0 -15
- package/lib/scene/character-eye-material.d.ts +0 -13
- package/lib/scene/character-eye-material.js +0 -88
- package/lib/scene/character-eye-renderer.d.ts +0 -5
- package/lib/scene/character-eye-renderer.js +0 -80
- package/lib/scene/character-eye-rig.d.ts +0 -20
- package/lib/scene/character-eye-rig.js +0 -35
- package/lib/scene/character-gaze.d.ts +0 -16
- package/lib/scene/character-gaze.js +0 -36
- package/lib/scene/character-idle.d.ts +0 -17
- package/lib/scene/character-idle.js +0 -65
- package/lib/scene/character-layout.d.ts +0 -24
- package/lib/scene/character-layout.js +0 -51
- package/lib/scene/character-motion-clock.d.ts +0 -18
- package/lib/scene/character-motion-clock.js +0 -70
- package/lib/scene/character-motion-types.d.ts +0 -12
- package/lib/scene/character-motion-types.js +0 -2
- package/lib/scene/character-motion.d.ts +0 -6
- package/lib/scene/character-motion.js +0 -187
- package/lib/scene/character-poses.d.ts +0 -26
- package/lib/scene/character-poses.js +0 -11
- package/lib/scene/character-rig-renderer.d.ts +0 -5
- package/lib/scene/character-rig-renderer.js +0 -95
- package/lib/scene/character-rig.d.ts +0 -22
- package/lib/scene/character-rig.js +0 -61
- package/lib/scene/heixiu-feedback.d.ts +0 -3
- package/lib/scene/heixiu-feedback.js +0 -64
- package/lib/scene/heixiu-interactions.d.ts +0 -3
- package/lib/scene/heixiu-interactions.js +0 -92
- package/lib/scene/ids.d.ts +0 -5
- package/lib/scene/ids.js +0 -5
- package/lib/scene/pointer-bridge.d.ts +0 -21
- package/lib/scene/pointer-bridge.js +0 -155
- package/lib/scene/runtime.d.ts +0 -12
- package/lib/scene/runtime.js +0 -74
- package/lib/scene/state-transitions.d.ts +0 -3
- package/lib/scene/state-transitions.js +0 -37
- package/lib/scene/styles.d.ts +0 -5
- package/lib/scene/styles.js +0 -69
- package/lib/scene/sylva-performance.d.ts +0 -11
- package/lib/scene/sylva-performance.js +0 -58
- package/lib/scene/wallpaper-character-styles.d.ts +0 -3
- package/lib/scene/wallpaper-character-styles.js +0 -49
- package/lib/scene/wallpaper-character.d.ts +0 -5
- package/lib/scene/wallpaper-character.js +0 -222
- package/lib/scene.d.ts +0 -8
- package/lib/scene.js +0 -8
- package/lib/sidebar-glass.d.ts +0 -16
- package/lib/sidebar-glass.js +0 -168
- package/lib/sidebar-heixiu-escape.d.ts +0 -44
- package/lib/sidebar-heixiu-escape.js +0 -340
- package/lib/sidebar-heixiu-roaming.d.ts +0 -27
- package/lib/sidebar-heixiu-roaming.js +0 -310
- package/lib/sidebar-reveal.d.ts +0 -8
- package/lib/sidebar-reveal.js +0 -59
- package/lib/state.d.ts +0 -21
- package/lib/state.js +0 -123
- package/lib/theme.d.ts +0 -19
- package/lib/theme.js +0 -188
- package/lib/vendor/bloub/decor.d.ts +0 -114
- package/lib/vendor/bloub/decor.js +0 -198
- package/lib/vendor/bloub/engine.d.ts +0 -213
- package/lib/vendor/bloub/engine.js +0 -452
- package/lib/vendor/bloub/expressions.d.ts +0 -35
- package/lib/vendor/bloub/expressions.js +0 -143
- package/lib/vendor/bloub/eyefit.d.ts +0 -75
- package/lib/vendor/bloub/eyefit.js +0 -393
- package/lib/vendor/bloub/face.d.ts +0 -63
- package/lib/vendor/bloub/face.js +0 -106
- package/lib/vendor/bloub/math.d.ts +0 -22
- package/lib/vendor/bloub/math.js +0 -36
- package/lib/vendor/bloub/profiles.d.ts +0 -8
- package/lib/vendor/bloub/profiles.js +0 -20
- package/lib/vendor/bloub/repere.d.ts +0 -30
- package/lib/vendor/bloub/repere.js +0 -32
- package/lib/vendor/bloub/shape.d.ts +0 -80
- package/lib/vendor/bloub/shape.js +0 -268
- package/lib/vendor/bloub/skins.d.ts +0 -36
- package/lib/vendor/bloub/skins.js +0 -74
- package/lib/vendor/bloub/states.d.ts +0 -87
- package/lib/vendor/bloub/states.js +0 -468
package/lib/chrome/gaze.js
DELETED
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
/** Visual geometry for Xiaohei's idle gaze. Behavior lives in ../gaze.ts. */
|
|
2
|
-
export const XIAOHEI_GAZE_CSS = `
|
|
3
|
-
.xiaohei-scene__mascot-blink {
|
|
4
|
-
z-index: 3;
|
|
5
|
-
}
|
|
6
|
-
|
|
7
|
-
.xiaohei-gaze {
|
|
8
|
-
--xiaohei-gaze-x: 0px;
|
|
9
|
-
--xiaohei-gaze-y: 0px;
|
|
10
|
-
position: absolute;
|
|
11
|
-
inset: 0;
|
|
12
|
-
z-index: 2;
|
|
13
|
-
display: block;
|
|
14
|
-
overflow: hidden;
|
|
15
|
-
opacity: 0;
|
|
16
|
-
pointer-events: none;
|
|
17
|
-
transition: opacity 80ms ease-out;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
html[data-xiaohei-state='idle'] .xiaohei-gaze {
|
|
21
|
-
opacity: 1;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
/* The complete blink frame owns eye occlusion; a second visibility clock can expose pupil-free frames. */
|
|
25
|
-
|
|
26
|
-
.xiaohei-gaze__base {
|
|
27
|
-
position: absolute;
|
|
28
|
-
inset: 0;
|
|
29
|
-
display: block;
|
|
30
|
-
width: 100%;
|
|
31
|
-
height: 100%;
|
|
32
|
-
max-width: none;
|
|
33
|
-
max-height: none;
|
|
34
|
-
object-fit: contain;
|
|
35
|
-
filter: brightness(1.32) contrast(1.02) saturate(1.04);
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
html[data-xiaohei-appearance='light'] .xiaohei-gaze__base {
|
|
39
|
-
filter: brightness(1.02) contrast(1.07) saturate(0.9);
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
.xiaohei-gaze__eye {
|
|
43
|
-
position: absolute;
|
|
44
|
-
display: block;
|
|
45
|
-
overflow: hidden;
|
|
46
|
-
border-radius: 50%;
|
|
47
|
-
pointer-events: none;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
.xiaohei-gaze__eye--left {
|
|
51
|
-
left: 22.65%;
|
|
52
|
-
top: 34.35%;
|
|
53
|
-
width: 9%;
|
|
54
|
-
height: 13.7%;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
.xiaohei-gaze__eye--right {
|
|
58
|
-
left: 38.25%;
|
|
59
|
-
top: 35.15%;
|
|
60
|
-
width: 13.3%;
|
|
61
|
-
height: 14.5%;
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
.xiaohei-gaze__pupil {
|
|
65
|
-
position: absolute;
|
|
66
|
-
display: block;
|
|
67
|
-
border-radius: 48% 52% 49% 51%;
|
|
68
|
-
background:
|
|
69
|
-
radial-gradient(circle at 39% 27%, #F3F7F3 0 12%, transparent 15%),
|
|
70
|
-
#020505;
|
|
71
|
-
transform: translate3d(
|
|
72
|
-
calc(-50% + var(--xiaohei-gaze-x)),
|
|
73
|
-
calc(-50% + var(--xiaohei-gaze-y)),
|
|
74
|
-
0
|
|
75
|
-
);
|
|
76
|
-
transform-origin: 50% 50%;
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
.xiaohei-gaze[data-moving='true'] .xiaohei-gaze__pupil {
|
|
80
|
-
will-change: transform;
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
.xiaohei-gaze__pupil--left {
|
|
84
|
-
left: 50%;
|
|
85
|
-
top: 49%;
|
|
86
|
-
width: 57.25%;
|
|
87
|
-
height: 67.5%;
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
.xiaohei-gaze__pupil--right {
|
|
91
|
-
left: 33.5%;
|
|
92
|
-
top: 48.7%;
|
|
93
|
-
width: 40.25%;
|
|
94
|
-
height: 65.2%;
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
@media (prefers-reduced-motion: reduce), (hover: none) and (pointer: coarse) {
|
|
98
|
-
.xiaohei-gaze {
|
|
99
|
-
display: none;
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
`;
|
|
103
|
-
//# sourceMappingURL=gaze.js.map
|
package/lib/chrome/identity.d.ts
DELETED
package/lib/chrome/identity.js
DELETED
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
import { XIAOHEI_IDENTITY_CHARM } from '../generated-identity.js';
|
|
2
|
-
/**
|
|
3
|
-
* Xiaohei ornaments shared by native DSH chrome and opt-in feature plugins.
|
|
4
|
-
* Frames own geometry and headings; this layer owns generated hanging art only.
|
|
5
|
-
*/
|
|
6
|
-
export const XIAOHEI_IDENTITY_CSS = `
|
|
7
|
-
:where([data-xiaohei-frame-ornament='spirit-knot'])::after {
|
|
8
|
-
content: '';
|
|
9
|
-
position: absolute;
|
|
10
|
-
z-index: 3;
|
|
11
|
-
width: 30px;
|
|
12
|
-
height: 48px;
|
|
13
|
-
border: 0;
|
|
14
|
-
border-radius: 0;
|
|
15
|
-
background-position: center;
|
|
16
|
-
background-size: contain;
|
|
17
|
-
background-repeat: no-repeat;
|
|
18
|
-
box-shadow: none;
|
|
19
|
-
filter: drop-shadow(0 3px 4px var(--xiaohei-shadow));
|
|
20
|
-
opacity: 0.92;
|
|
21
|
-
pointer-events: none;
|
|
22
|
-
transform: rotate(3deg);
|
|
23
|
-
transform-origin: 50% 8%;
|
|
24
|
-
transition: transform 320ms var(--xiaohei-motion-curve), filter var(--xiaohei-motion-base) ease;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
:where([data-xiaohei-frame-ornament='spirit-knot'])::after {
|
|
28
|
-
background-image: url("${XIAOHEI_IDENTITY_CHARM}");
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
:where([data-xiaohei-frame-ornament='spirit-knot'])::after {
|
|
32
|
-
top: -6px;
|
|
33
|
-
right: 16px;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
:where([data-xiaohei-frame-ornament='spirit-knot']):hover::after {
|
|
37
|
-
filter: drop-shadow(0 4px 6px var(--xiaohei-focus-shadow));
|
|
38
|
-
transform: rotate(-4deg) scale(1.03);
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
@media (forced-colors: active) {
|
|
42
|
-
:where([data-xiaohei-frame-ornament])::after {
|
|
43
|
-
display: none;
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
`;
|
|
47
|
-
//# sourceMappingURL=identity.js.map
|
package/lib/chrome/overlays.d.ts
DELETED
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
/** Dialog, menu, listbox, focus, and separator surfaces. */
|
|
2
|
-
export declare const XIAOHEI_OVERLAY_CSS = "\n#root [role='dialog'],\n#root [role='menu'],\n#root [role='listbox'] {\n isolation: isolate;\n border: 1px solid var(--xiaohei-edge) !important;\n color: var(--dsw-alias-label-primary);\n background-color: var(--xiaohei-overlay-fill) !important;\n -webkit-backdrop-filter: blur(var(--xiaohei-overlay-blur)) saturate(var(--xiaohei-overlay-saturation));\n backdrop-filter: blur(var(--xiaohei-overlay-blur)) saturate(var(--xiaohei-overlay-saturation));\n box-shadow:\n inset 0 0 0 1px var(--xiaohei-frame-inner),\n inset 0 1px rgb(255 255 255 / 7%),\n 0 22px 64px var(--xiaohei-shadow) !important;\n}\n\n#root [role='dialog'] {\n border-radius: calc(var(--xiaohei-radius-panel) + 2px) !important;\n background-image:\n linear-gradient(var(--xiaohei-frame-line-strong), var(--xiaohei-frame-line-strong)),\n linear-gradient(var(--xiaohei-frame-line), var(--xiaohei-frame-line)),\n linear-gradient(var(--xiaohei-frame-line), var(--xiaohei-frame-line)),\n linear-gradient(145deg, rgb(255 255 255 / 3%), transparent 34%) !important;\n background-position: 18px 0, 0 18px, 100% calc(100% - 18px), 0 0 !important;\n background-size: 48px 1px, 1px 34px, 1px 34px, auto !important;\n background-repeat: no-repeat !important;\n}\n\n#root [role='dialog'] > nav {\n border-right: 1px solid var(--xiaohei-edge);\n background: linear-gradient(180deg, var(--xiaohei-spirit-faint), transparent 46%);\n}\n\n#root [role='menu'],\n#root [role='listbox'] {\n border-radius: var(--xiaohei-radius-control) !important;\n}\n\n@media (max-width: 700px) {\n #root [role='dialog'],\n #root [role='menu'],\n #root [role='listbox'] {\n --xiaohei-overlay-blur: 12px;\n }\n}\n\n#root [role='menuitem'],\n#root [role='option'],\n#root [role='dialog'] button,\n#root [role='menu'] button,\n#root [role='listbox'] button {\n border: 1px solid transparent;\n border-radius: var(--xiaohei-radius-small);\n transition:\n color var(--xiaohei-motion-fast) ease,\n background-color var(--xiaohei-motion-fast) ease,\n border-color var(--xiaohei-motion-fast) ease,\n transform var(--xiaohei-motion-fast) var(--xiaohei-motion-curve);\n}\n\n#root [role='menuitem']:hover,\n#root [role='option']:hover,\n#root [role='dialog'] button:not(:disabled):hover,\n#root [role='menu'] button:not(:disabled):hover,\n#root [role='listbox'] button:not(:disabled):hover {\n color: var(--xiaohei-spirit-strong);\n border-color: var(--xiaohei-edge);\n background: var(--xiaohei-spirit-soft);\n}\n\n#root [role='menuitem']:active,\n#root [role='option']:active,\n#root [role='dialog'] button:not(:disabled):active,\n#root [role='menu'] button:not(:disabled):active,\n#root [role='listbox'] button:not(:disabled):active {\n transform: translateY(1px) scale(0.99);\n}\n\n#root [role='dialog'] button[aria-current='true'],\n#root [role='menu'] [aria-current='true'],\n#root [role='listbox'] [aria-selected='true'] {\n color: var(--xiaohei-spirit-strong);\n background: var(--xiaohei-spirit-soft);\n box-shadow: inset 3px 0 var(--xiaohei-spirit);\n}\n\n#root button:focus-visible,\n#root input:focus-visible,\n#root textarea:focus-visible,\n#root select:focus-visible,\n#root [tabindex]:focus-visible {\n outline: 2px solid var(--xiaohei-spirit-strong) !important;\n outline-offset: 2px !important;\n box-shadow: 0 0 0 5px var(--xiaohei-focus-shadow);\n}\n\n#root [role='separator'] {\n border-color: transparent !important;\n background: linear-gradient(90deg, transparent, var(--xiaohei-edge), transparent) !important;\n opacity: 0.82;\n}\n";
|
|
3
|
-
//# sourceMappingURL=overlays.d.ts.map
|
package/lib/chrome/overlays.js
DELETED
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
/** Dialog, menu, listbox, focus, and separator surfaces. */
|
|
2
|
-
export const XIAOHEI_OVERLAY_CSS = `
|
|
3
|
-
#root [role='dialog'],
|
|
4
|
-
#root [role='menu'],
|
|
5
|
-
#root [role='listbox'] {
|
|
6
|
-
isolation: isolate;
|
|
7
|
-
border: 1px solid var(--xiaohei-edge) !important;
|
|
8
|
-
color: var(--dsw-alias-label-primary);
|
|
9
|
-
background-color: var(--xiaohei-overlay-fill) !important;
|
|
10
|
-
-webkit-backdrop-filter: blur(var(--xiaohei-overlay-blur)) saturate(var(--xiaohei-overlay-saturation));
|
|
11
|
-
backdrop-filter: blur(var(--xiaohei-overlay-blur)) saturate(var(--xiaohei-overlay-saturation));
|
|
12
|
-
box-shadow:
|
|
13
|
-
inset 0 0 0 1px var(--xiaohei-frame-inner),
|
|
14
|
-
inset 0 1px rgb(255 255 255 / 7%),
|
|
15
|
-
0 22px 64px var(--xiaohei-shadow) !important;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
#root [role='dialog'] {
|
|
19
|
-
border-radius: calc(var(--xiaohei-radius-panel) + 2px) !important;
|
|
20
|
-
background-image:
|
|
21
|
-
linear-gradient(var(--xiaohei-frame-line-strong), var(--xiaohei-frame-line-strong)),
|
|
22
|
-
linear-gradient(var(--xiaohei-frame-line), var(--xiaohei-frame-line)),
|
|
23
|
-
linear-gradient(var(--xiaohei-frame-line), var(--xiaohei-frame-line)),
|
|
24
|
-
linear-gradient(145deg, rgb(255 255 255 / 3%), transparent 34%) !important;
|
|
25
|
-
background-position: 18px 0, 0 18px, 100% calc(100% - 18px), 0 0 !important;
|
|
26
|
-
background-size: 48px 1px, 1px 34px, 1px 34px, auto !important;
|
|
27
|
-
background-repeat: no-repeat !important;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
#root [role='dialog'] > nav {
|
|
31
|
-
border-right: 1px solid var(--xiaohei-edge);
|
|
32
|
-
background: linear-gradient(180deg, var(--xiaohei-spirit-faint), transparent 46%);
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
#root [role='menu'],
|
|
36
|
-
#root [role='listbox'] {
|
|
37
|
-
border-radius: var(--xiaohei-radius-control) !important;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
@media (max-width: 700px) {
|
|
41
|
-
#root [role='dialog'],
|
|
42
|
-
#root [role='menu'],
|
|
43
|
-
#root [role='listbox'] {
|
|
44
|
-
--xiaohei-overlay-blur: 12px;
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
#root [role='menuitem'],
|
|
49
|
-
#root [role='option'],
|
|
50
|
-
#root [role='dialog'] button,
|
|
51
|
-
#root [role='menu'] button,
|
|
52
|
-
#root [role='listbox'] button {
|
|
53
|
-
border: 1px solid transparent;
|
|
54
|
-
border-radius: var(--xiaohei-radius-small);
|
|
55
|
-
transition:
|
|
56
|
-
color var(--xiaohei-motion-fast) ease,
|
|
57
|
-
background-color var(--xiaohei-motion-fast) ease,
|
|
58
|
-
border-color var(--xiaohei-motion-fast) ease,
|
|
59
|
-
transform var(--xiaohei-motion-fast) var(--xiaohei-motion-curve);
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
#root [role='menuitem']:hover,
|
|
63
|
-
#root [role='option']:hover,
|
|
64
|
-
#root [role='dialog'] button:not(:disabled):hover,
|
|
65
|
-
#root [role='menu'] button:not(:disabled):hover,
|
|
66
|
-
#root [role='listbox'] button:not(:disabled):hover {
|
|
67
|
-
color: var(--xiaohei-spirit-strong);
|
|
68
|
-
border-color: var(--xiaohei-edge);
|
|
69
|
-
background: var(--xiaohei-spirit-soft);
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
#root [role='menuitem']:active,
|
|
73
|
-
#root [role='option']:active,
|
|
74
|
-
#root [role='dialog'] button:not(:disabled):active,
|
|
75
|
-
#root [role='menu'] button:not(:disabled):active,
|
|
76
|
-
#root [role='listbox'] button:not(:disabled):active {
|
|
77
|
-
transform: translateY(1px) scale(0.99);
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
#root [role='dialog'] button[aria-current='true'],
|
|
81
|
-
#root [role='menu'] [aria-current='true'],
|
|
82
|
-
#root [role='listbox'] [aria-selected='true'] {
|
|
83
|
-
color: var(--xiaohei-spirit-strong);
|
|
84
|
-
background: var(--xiaohei-spirit-soft);
|
|
85
|
-
box-shadow: inset 3px 0 var(--xiaohei-spirit);
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
#root button:focus-visible,
|
|
89
|
-
#root input:focus-visible,
|
|
90
|
-
#root textarea:focus-visible,
|
|
91
|
-
#root select:focus-visible,
|
|
92
|
-
#root [tabindex]:focus-visible {
|
|
93
|
-
outline: 2px solid var(--xiaohei-spirit-strong) !important;
|
|
94
|
-
outline-offset: 2px !important;
|
|
95
|
-
box-shadow: 0 0 0 5px var(--xiaohei-focus-shadow);
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
#root [role='separator'] {
|
|
99
|
-
border-color: transparent !important;
|
|
100
|
-
background: linear-gradient(90deg, transparent, var(--xiaohei-edge), transparent) !important;
|
|
101
|
-
opacity: 0.82;
|
|
102
|
-
}
|
|
103
|
-
`;
|
|
104
|
-
//# sourceMappingURL=overlays.js.map
|
package/lib/chrome/portal.d.ts
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Two compact voids and one travelling Heixiu. The portals are matte spatial
|
|
3
|
-
* gaps rather than rings; all keyframes stay on compositor-safe properties.
|
|
4
|
-
*/
|
|
5
|
-
export declare const XIAOHEI_PORTAL_CSS = "\n#dsh-theme-xiaohei\\/portal-layer {\n position: absolute;\n inset: 0;\n z-index: 2;\n overflow: hidden;\n contain: strict;\n pointer-events: none;\n user-select: none;\n}\n\n#dsh-theme-xiaohei\\/portal-layer > * {\n position: absolute;\n display: block;\n pointer-events: none;\n}\n\n.xiaohei-portal__void {\n width: clamp(2.8rem, 3.6vw, 4rem);\n aspect-ratio: 0.76;\n border-radius: 48% 52% 46% 54% / 52% 46% 54% 48%;\n opacity: 0;\n background:\n radial-gradient(ellipse at 46% 48%, #010304 0%, #020609 58%, #092027 72%, rgb(66 188 170 / 36%) 78%, transparent 82%);\n box-shadow:\n inset 0 0 0.7rem rgb(0 0 0 / 92%),\n 0 0 0.85rem rgb(78 214 191 / 18%);\n will-change: transform, opacity;\n}\n\n.xiaohei-portal__void::after {\n position: absolute;\n inset: 13% 18%;\n display: block;\n content: '';\n border-radius: inherit;\n background: #000102;\n box-shadow: inset 0.18rem 0 0.45rem rgb(16 56 64 / 42%);\n}\n\n.xiaohei-portal__void--entry {\n left: var(--portal-entry-x);\n top: var(--portal-entry-y);\n transform: translate3d(-50%, -50%, 0) rotate(var(--portal-entry-angle)) scale3d(0.04, 0.12, 1);\n}\n\n.xiaohei-portal__void--exit {\n left: var(--portal-exit-x);\n top: var(--portal-exit-y);\n transform: translate3d(-50%, -50%, 0) rotate(var(--portal-exit-angle)) scale3d(0.04, 0.12, 1);\n}\n\n.xiaohei-portal__traveler {\n left: var(--portal-entry-x);\n top: var(--portal-entry-y);\n z-index: 1;\n width: clamp(2.7rem, 3.4vw, 3.7rem);\n aspect-ratio: 1;\n opacity: 0;\n transform: translate3d(-5rem, -50%, 0) scale(0.9);\n filter:\n drop-shadow(0 0.25rem 0.45rem rgb(90 221 199 / 20%))\n drop-shadow(0 0.58rem 0.9rem rgb(1 9 10 / 22%));\n will-change: transform, opacity;\n}\n\n.xiaohei-portal__traveler > img {\n position: absolute;\n inset: 0;\n display: block;\n width: 100%;\n height: 100%;\n max-width: none;\n max-height: none;\n object-fit: contain;\n filter: brightness(1.1) contrast(1.05) saturate(0.82);\n}\n\n.xiaohei-portal__traveler-blink { opacity: 0; }\n\n#dsh-theme-xiaohei\\/portal-layer[data-running='true'] .xiaohei-portal__void--entry {\n animation: xiaohei-portal-entry 2.6s cubic-bezier(0.4, 0, 0.2, 1) both;\n}\n\n#dsh-theme-xiaohei\\/portal-layer[data-running='true'] .xiaohei-portal__void--exit {\n animation: xiaohei-portal-exit 2.6s cubic-bezier(0.4, 0, 0.2, 1) both;\n}\n\n#dsh-theme-xiaohei\\/portal-layer[data-running='true'] .xiaohei-portal__traveler {\n animation: xiaohei-portal-traveler 2.6s cubic-bezier(0.45, 0, 0.25, 1) both;\n}\n\n#dsh-theme-xiaohei\\/portal-layer[data-running='true'] .xiaohei-portal__traveler-open {\n animation: xiaohei-portal-eyes-open 2.6s step-end both;\n}\n\n#dsh-theme-xiaohei\\/portal-layer[data-running='true'] .xiaohei-portal__traveler-blink {\n animation: xiaohei-portal-eyes-blink 2.6s step-end both;\n}\n\n@keyframes xiaohei-portal-entry {\n 0% { transform: translate3d(-50%, -50%, 0) rotate(var(--portal-entry-angle)) scale3d(0.04, 0.12, 1); opacity: 0; }\n 10%, 55% { transform: translate3d(-50%, -50%, 0) rotate(var(--portal-entry-angle)) scale3d(1, 1, 1); opacity: 0.96; }\n 68%, 100% { transform: translate3d(-50%, -50%, 0) rotate(var(--portal-entry-angle)) scale3d(0.04, 0.12, 1); opacity: 0; }\n}\n\n@keyframes xiaohei-portal-exit {\n 0%, 40% { transform: translate3d(-50%, -50%, 0) rotate(var(--portal-exit-angle)) scale3d(0.04, 0.12, 1); opacity: 0; }\n 51%, 86% { transform: translate3d(-50%, -50%, 0) rotate(var(--portal-exit-angle)) scale3d(1, 1, 1); opacity: 0.96; }\n 100% { transform: translate3d(-50%, -50%, 0) rotate(var(--portal-exit-angle)) scale3d(0.04, 0.12, 1); opacity: 0; }\n}\n\n@keyframes xiaohei-portal-traveler {\n 0% { transform: translate3d(-5rem, -50%, 0) scale(0.88); opacity: 0; }\n 9% { transform: translate3d(-4rem, -50%, 0) scale(0.92); opacity: 0.82; }\n 29% { transform: translate3d(-1rem, -50%, 0) scale(0.92); opacity: 1; }\n 43% { transform: translate3d(0, -50%, 0) scale(0.12); opacity: 0; }\n 50% { transform: translate3d(var(--portal-travel-x), var(--portal-travel-y), 0) scale(0.12); opacity: 0; }\n 59% { transform: translate3d(var(--portal-travel-x), var(--portal-travel-y), 0) scale(0.16); opacity: 0; }\n 70% { transform: translate3d(calc(var(--portal-travel-x) + var(--portal-emerge-near)), var(--portal-travel-y), 0) scale(0.94); opacity: 1; }\n 90% { transform: translate3d(calc(var(--portal-travel-x) + var(--portal-emerge-far)), var(--portal-travel-y), 0) scale(0.92); opacity: 0.9; }\n 100% { transform: translate3d(calc(var(--portal-travel-x) + var(--portal-emerge-end)), var(--portal-travel-y), 0) scale(0.9); opacity: 0; }\n}\n\n@keyframes xiaohei-portal-eyes-open {\n 0%, 20.9% { opacity: 1; transform: translate3d(0, 0, 0); }\n 21%, 23.5% { opacity: 0; transform: translate3d(0, 0, 0); }\n 23.6%, 75.9% { opacity: 1; transform: translate3d(0, 0, 0); }\n 76%, 78.5% { opacity: 0; transform: translate3d(0, 0, 0); }\n 78.6%, 100% { opacity: 1; transform: translate3d(0, 0, 0); }\n}\n\n@keyframes xiaohei-portal-eyes-blink {\n 0%, 20.9% { opacity: 0; transform: translate3d(0, 0, 0); }\n 21%, 23.5% { opacity: 1; transform: translate3d(0, 0, 0); }\n 23.6%, 75.9% { opacity: 0; transform: translate3d(0, 0, 0); }\n 76%, 78.5% { opacity: 1; transform: translate3d(0, 0, 0); }\n 78.6%, 100% { opacity: 0; transform: translate3d(0, 0, 0); }\n}\n\nhtml[data-xiaohei-appearance='light'] .xiaohei-portal__void {\n box-shadow:\n inset 0 0 0.7rem rgb(0 0 0 / 94%),\n 0 0 0.75rem rgb(47 125 108 / 22%);\n}\n\nhtml[data-xiaohei-appearance='light'] .xiaohei-portal__traveler {\n filter:\n drop-shadow(0 0.25rem 0.4rem rgb(48 96 81 / 16%))\n drop-shadow(0 0.55rem 0.8rem rgb(43 61 54 / 12%));\n}\n\nhtml[data-xiaohei-appearance='light'] .xiaohei-portal__traveler > img {\n filter: brightness(1.01) contrast(1.06) saturate(0.76);\n}\n\n@media (max-width: 768px) {\n #dsh-theme-xiaohei\\/portal-layer { display: none; }\n}\n\n@media (prefers-reduced-motion: reduce), (forced-colors: active), print {\n #dsh-theme-xiaohei\\/portal-layer { display: none; }\n}\n";
|
|
6
|
-
//# sourceMappingURL=portal.d.ts.map
|
package/lib/chrome/portal.js
DELETED
|
@@ -1,169 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Two compact voids and one travelling Heixiu. The portals are matte spatial
|
|
3
|
-
* gaps rather than rings; all keyframes stay on compositor-safe properties.
|
|
4
|
-
*/
|
|
5
|
-
export const XIAOHEI_PORTAL_CSS = `
|
|
6
|
-
#dsh-theme-xiaohei\\/portal-layer {
|
|
7
|
-
position: absolute;
|
|
8
|
-
inset: 0;
|
|
9
|
-
z-index: 2;
|
|
10
|
-
overflow: hidden;
|
|
11
|
-
contain: strict;
|
|
12
|
-
pointer-events: none;
|
|
13
|
-
user-select: none;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
#dsh-theme-xiaohei\\/portal-layer > * {
|
|
17
|
-
position: absolute;
|
|
18
|
-
display: block;
|
|
19
|
-
pointer-events: none;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
.xiaohei-portal__void {
|
|
23
|
-
width: clamp(2.8rem, 3.6vw, 4rem);
|
|
24
|
-
aspect-ratio: 0.76;
|
|
25
|
-
border-radius: 48% 52% 46% 54% / 52% 46% 54% 48%;
|
|
26
|
-
opacity: 0;
|
|
27
|
-
background:
|
|
28
|
-
radial-gradient(ellipse at 46% 48%, #010304 0%, #020609 58%, #092027 72%, rgb(66 188 170 / 36%) 78%, transparent 82%);
|
|
29
|
-
box-shadow:
|
|
30
|
-
inset 0 0 0.7rem rgb(0 0 0 / 92%),
|
|
31
|
-
0 0 0.85rem rgb(78 214 191 / 18%);
|
|
32
|
-
will-change: transform, opacity;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
.xiaohei-portal__void::after {
|
|
36
|
-
position: absolute;
|
|
37
|
-
inset: 13% 18%;
|
|
38
|
-
display: block;
|
|
39
|
-
content: '';
|
|
40
|
-
border-radius: inherit;
|
|
41
|
-
background: #000102;
|
|
42
|
-
box-shadow: inset 0.18rem 0 0.45rem rgb(16 56 64 / 42%);
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
.xiaohei-portal__void--entry {
|
|
46
|
-
left: var(--portal-entry-x);
|
|
47
|
-
top: var(--portal-entry-y);
|
|
48
|
-
transform: translate3d(-50%, -50%, 0) rotate(var(--portal-entry-angle)) scale3d(0.04, 0.12, 1);
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
.xiaohei-portal__void--exit {
|
|
52
|
-
left: var(--portal-exit-x);
|
|
53
|
-
top: var(--portal-exit-y);
|
|
54
|
-
transform: translate3d(-50%, -50%, 0) rotate(var(--portal-exit-angle)) scale3d(0.04, 0.12, 1);
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
.xiaohei-portal__traveler {
|
|
58
|
-
left: var(--portal-entry-x);
|
|
59
|
-
top: var(--portal-entry-y);
|
|
60
|
-
z-index: 1;
|
|
61
|
-
width: clamp(2.7rem, 3.4vw, 3.7rem);
|
|
62
|
-
aspect-ratio: 1;
|
|
63
|
-
opacity: 0;
|
|
64
|
-
transform: translate3d(-5rem, -50%, 0) scale(0.9);
|
|
65
|
-
filter:
|
|
66
|
-
drop-shadow(0 0.25rem 0.45rem rgb(90 221 199 / 20%))
|
|
67
|
-
drop-shadow(0 0.58rem 0.9rem rgb(1 9 10 / 22%));
|
|
68
|
-
will-change: transform, opacity;
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
.xiaohei-portal__traveler > img {
|
|
72
|
-
position: absolute;
|
|
73
|
-
inset: 0;
|
|
74
|
-
display: block;
|
|
75
|
-
width: 100%;
|
|
76
|
-
height: 100%;
|
|
77
|
-
max-width: none;
|
|
78
|
-
max-height: none;
|
|
79
|
-
object-fit: contain;
|
|
80
|
-
filter: brightness(1.1) contrast(1.05) saturate(0.82);
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
.xiaohei-portal__traveler-blink { opacity: 0; }
|
|
84
|
-
|
|
85
|
-
#dsh-theme-xiaohei\\/portal-layer[data-running='true'] .xiaohei-portal__void--entry {
|
|
86
|
-
animation: xiaohei-portal-entry 2.6s cubic-bezier(0.4, 0, 0.2, 1) both;
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
#dsh-theme-xiaohei\\/portal-layer[data-running='true'] .xiaohei-portal__void--exit {
|
|
90
|
-
animation: xiaohei-portal-exit 2.6s cubic-bezier(0.4, 0, 0.2, 1) both;
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
#dsh-theme-xiaohei\\/portal-layer[data-running='true'] .xiaohei-portal__traveler {
|
|
94
|
-
animation: xiaohei-portal-traveler 2.6s cubic-bezier(0.45, 0, 0.25, 1) both;
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
#dsh-theme-xiaohei\\/portal-layer[data-running='true'] .xiaohei-portal__traveler-open {
|
|
98
|
-
animation: xiaohei-portal-eyes-open 2.6s step-end both;
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
#dsh-theme-xiaohei\\/portal-layer[data-running='true'] .xiaohei-portal__traveler-blink {
|
|
102
|
-
animation: xiaohei-portal-eyes-blink 2.6s step-end both;
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
@keyframes xiaohei-portal-entry {
|
|
106
|
-
0% { transform: translate3d(-50%, -50%, 0) rotate(var(--portal-entry-angle)) scale3d(0.04, 0.12, 1); opacity: 0; }
|
|
107
|
-
10%, 55% { transform: translate3d(-50%, -50%, 0) rotate(var(--portal-entry-angle)) scale3d(1, 1, 1); opacity: 0.96; }
|
|
108
|
-
68%, 100% { transform: translate3d(-50%, -50%, 0) rotate(var(--portal-entry-angle)) scale3d(0.04, 0.12, 1); opacity: 0; }
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
@keyframes xiaohei-portal-exit {
|
|
112
|
-
0%, 40% { transform: translate3d(-50%, -50%, 0) rotate(var(--portal-exit-angle)) scale3d(0.04, 0.12, 1); opacity: 0; }
|
|
113
|
-
51%, 86% { transform: translate3d(-50%, -50%, 0) rotate(var(--portal-exit-angle)) scale3d(1, 1, 1); opacity: 0.96; }
|
|
114
|
-
100% { transform: translate3d(-50%, -50%, 0) rotate(var(--portal-exit-angle)) scale3d(0.04, 0.12, 1); opacity: 0; }
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
@keyframes xiaohei-portal-traveler {
|
|
118
|
-
0% { transform: translate3d(-5rem, -50%, 0) scale(0.88); opacity: 0; }
|
|
119
|
-
9% { transform: translate3d(-4rem, -50%, 0) scale(0.92); opacity: 0.82; }
|
|
120
|
-
29% { transform: translate3d(-1rem, -50%, 0) scale(0.92); opacity: 1; }
|
|
121
|
-
43% { transform: translate3d(0, -50%, 0) scale(0.12); opacity: 0; }
|
|
122
|
-
50% { transform: translate3d(var(--portal-travel-x), var(--portal-travel-y), 0) scale(0.12); opacity: 0; }
|
|
123
|
-
59% { transform: translate3d(var(--portal-travel-x), var(--portal-travel-y), 0) scale(0.16); opacity: 0; }
|
|
124
|
-
70% { transform: translate3d(calc(var(--portal-travel-x) + var(--portal-emerge-near)), var(--portal-travel-y), 0) scale(0.94); opacity: 1; }
|
|
125
|
-
90% { transform: translate3d(calc(var(--portal-travel-x) + var(--portal-emerge-far)), var(--portal-travel-y), 0) scale(0.92); opacity: 0.9; }
|
|
126
|
-
100% { transform: translate3d(calc(var(--portal-travel-x) + var(--portal-emerge-end)), var(--portal-travel-y), 0) scale(0.9); opacity: 0; }
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
@keyframes xiaohei-portal-eyes-open {
|
|
130
|
-
0%, 20.9% { opacity: 1; transform: translate3d(0, 0, 0); }
|
|
131
|
-
21%, 23.5% { opacity: 0; transform: translate3d(0, 0, 0); }
|
|
132
|
-
23.6%, 75.9% { opacity: 1; transform: translate3d(0, 0, 0); }
|
|
133
|
-
76%, 78.5% { opacity: 0; transform: translate3d(0, 0, 0); }
|
|
134
|
-
78.6%, 100% { opacity: 1; transform: translate3d(0, 0, 0); }
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
@keyframes xiaohei-portal-eyes-blink {
|
|
138
|
-
0%, 20.9% { opacity: 0; transform: translate3d(0, 0, 0); }
|
|
139
|
-
21%, 23.5% { opacity: 1; transform: translate3d(0, 0, 0); }
|
|
140
|
-
23.6%, 75.9% { opacity: 0; transform: translate3d(0, 0, 0); }
|
|
141
|
-
76%, 78.5% { opacity: 1; transform: translate3d(0, 0, 0); }
|
|
142
|
-
78.6%, 100% { opacity: 0; transform: translate3d(0, 0, 0); }
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
html[data-xiaohei-appearance='light'] .xiaohei-portal__void {
|
|
146
|
-
box-shadow:
|
|
147
|
-
inset 0 0 0.7rem rgb(0 0 0 / 94%),
|
|
148
|
-
0 0 0.75rem rgb(47 125 108 / 22%);
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
html[data-xiaohei-appearance='light'] .xiaohei-portal__traveler {
|
|
152
|
-
filter:
|
|
153
|
-
drop-shadow(0 0.25rem 0.4rem rgb(48 96 81 / 16%))
|
|
154
|
-
drop-shadow(0 0.55rem 0.8rem rgb(43 61 54 / 12%));
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
html[data-xiaohei-appearance='light'] .xiaohei-portal__traveler > img {
|
|
158
|
-
filter: brightness(1.01) contrast(1.06) saturate(0.76);
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
@media (max-width: 768px) {
|
|
162
|
-
#dsh-theme-xiaohei\\/portal-layer { display: none; }
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
@media (prefers-reduced-motion: reduce), (forced-colors: active), print {
|
|
166
|
-
#dsh-theme-xiaohei\\/portal-layer { display: none; }
|
|
167
|
-
}
|
|
168
|
-
`;
|
|
169
|
-
//# sourceMappingURL=portal.js.map
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
/** Complete-frame reaction strips. Timing and triggers live in ../reactions.ts. */
|
|
2
|
-
export declare const XIAOHEI_REACTION_CSS = "\n.xiaohei-scene__idle-reaction {\n position: absolute;\n display: block;\n inset: 0 auto auto 0;\n width: 900%;\n height: 100%;\n max-width: none;\n max-height: none;\n object-fit: fill;\n z-index: 2;\n opacity: 0;\n pointer-events: none;\n transform: translate3d(0, 0, 0);\n filter: brightness(1.32) contrast(1.02) saturate(1.04);\n}\n\nhtml[data-xiaohei-appearance='light'] .xiaohei-scene__idle-reaction {\n filter: brightness(1.02) contrast(1.07) saturate(0.9);\n}\n\n.xiaohei-scene__mascot[data-xiaohei-reaction='ear-left'] .xiaohei-scene__idle-reaction,\n.xiaohei-scene__mascot[data-xiaohei-reaction='ear-right'] .xiaohei-scene__idle-reaction {\n opacity: 1;\n animation: xiaohei-idle-ear-reaction 560ms steps(8, end) both;\n}\n\n.xiaohei-scene__mascot[data-xiaohei-ear-loop='true'] .xiaohei-scene__idle-reaction {\n animation-iteration-count: infinite;\n}\n\n.xiaohei-scene__mascot[data-xiaohei-reaction='tail-slow'] .xiaohei-scene__idle-reaction,\n.xiaohei-scene__mascot[data-xiaohei-reaction='tail-complete'] .xiaohei-scene__idle-reaction {\n width: 1000%;\n opacity: 1;\n animation-name: xiaohei-idle-tail-reaction;\n animation-timing-function: steps(9, end);\n animation-fill-mode: both;\n animation-iteration-count: 1;\n}\n\n.xiaohei-scene__mascot[data-xiaohei-reaction='tail-slow'] .xiaohei-scene__idle-reaction {\n animation-duration: 1280ms;\n}\n\n.xiaohei-scene__mascot[data-xiaohei-reaction='tail-complete'] .xiaohei-scene__idle-reaction {\n animation-duration: 700ms;\n}\n\n/* Keep the live pupils while the pupil-free complete frame supplies motion. */\n.xiaohei-scene__mascot[data-xiaohei-reaction] .xiaohei-gaze {\n z-index: 3;\n opacity: 1;\n}\n\n.xiaohei-scene__mascot[data-xiaohei-reaction] .xiaohei-gaze__base {\n opacity: 0;\n}\n\n/* Blink remains the highest character frame and naturally covers the pupils. */\n.xiaohei-scene__mascot-blink {\n z-index: 4;\n}\n\nhtml:not([data-xiaohei-state='idle']) .xiaohei-scene__idle-reaction {\n opacity: 0;\n animation: none;\n}\n\n@keyframes xiaohei-idle-ear-reaction {\n from { transform: translate3d(0, 0, 0); }\n to { transform: translate3d(-88.888889%, 0, 0); }\n}\n\n@keyframes xiaohei-idle-tail-reaction {\n from { transform: translate3d(0, 0, 0); }\n to { transform: translate3d(-90%, 0, 0); }\n}\n\n@media (prefers-reduced-motion: reduce), (hover: none) and (pointer: coarse) {\n .xiaohei-scene__idle-reaction { display: none; }\n}\n";
|
|
3
|
-
//# sourceMappingURL=reactions.d.ts.map
|
package/lib/chrome/reactions.js
DELETED
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
/** Complete-frame reaction strips. Timing and triggers live in ../reactions.ts. */
|
|
2
|
-
export const XIAOHEI_REACTION_CSS = `
|
|
3
|
-
.xiaohei-scene__idle-reaction {
|
|
4
|
-
position: absolute;
|
|
5
|
-
display: block;
|
|
6
|
-
inset: 0 auto auto 0;
|
|
7
|
-
width: 900%;
|
|
8
|
-
height: 100%;
|
|
9
|
-
max-width: none;
|
|
10
|
-
max-height: none;
|
|
11
|
-
object-fit: fill;
|
|
12
|
-
z-index: 2;
|
|
13
|
-
opacity: 0;
|
|
14
|
-
pointer-events: none;
|
|
15
|
-
transform: translate3d(0, 0, 0);
|
|
16
|
-
filter: brightness(1.32) contrast(1.02) saturate(1.04);
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
html[data-xiaohei-appearance='light'] .xiaohei-scene__idle-reaction {
|
|
20
|
-
filter: brightness(1.02) contrast(1.07) saturate(0.9);
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
.xiaohei-scene__mascot[data-xiaohei-reaction='ear-left'] .xiaohei-scene__idle-reaction,
|
|
24
|
-
.xiaohei-scene__mascot[data-xiaohei-reaction='ear-right'] .xiaohei-scene__idle-reaction {
|
|
25
|
-
opacity: 1;
|
|
26
|
-
animation: xiaohei-idle-ear-reaction 560ms steps(8, end) both;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
.xiaohei-scene__mascot[data-xiaohei-ear-loop='true'] .xiaohei-scene__idle-reaction {
|
|
30
|
-
animation-iteration-count: infinite;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
.xiaohei-scene__mascot[data-xiaohei-reaction='tail-slow'] .xiaohei-scene__idle-reaction,
|
|
34
|
-
.xiaohei-scene__mascot[data-xiaohei-reaction='tail-complete'] .xiaohei-scene__idle-reaction {
|
|
35
|
-
width: 1000%;
|
|
36
|
-
opacity: 1;
|
|
37
|
-
animation-name: xiaohei-idle-tail-reaction;
|
|
38
|
-
animation-timing-function: steps(9, end);
|
|
39
|
-
animation-fill-mode: both;
|
|
40
|
-
animation-iteration-count: 1;
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
.xiaohei-scene__mascot[data-xiaohei-reaction='tail-slow'] .xiaohei-scene__idle-reaction {
|
|
44
|
-
animation-duration: 1280ms;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
.xiaohei-scene__mascot[data-xiaohei-reaction='tail-complete'] .xiaohei-scene__idle-reaction {
|
|
48
|
-
animation-duration: 700ms;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
/* Keep the live pupils while the pupil-free complete frame supplies motion. */
|
|
52
|
-
.xiaohei-scene__mascot[data-xiaohei-reaction] .xiaohei-gaze {
|
|
53
|
-
z-index: 3;
|
|
54
|
-
opacity: 1;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
.xiaohei-scene__mascot[data-xiaohei-reaction] .xiaohei-gaze__base {
|
|
58
|
-
opacity: 0;
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
/* Blink remains the highest character frame and naturally covers the pupils. */
|
|
62
|
-
.xiaohei-scene__mascot-blink {
|
|
63
|
-
z-index: 4;
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
html:not([data-xiaohei-state='idle']) .xiaohei-scene__idle-reaction {
|
|
67
|
-
opacity: 0;
|
|
68
|
-
animation: none;
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
@keyframes xiaohei-idle-ear-reaction {
|
|
72
|
-
from { transform: translate3d(0, 0, 0); }
|
|
73
|
-
to { transform: translate3d(-88.888889%, 0, 0); }
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
@keyframes xiaohei-idle-tail-reaction {
|
|
77
|
-
from { transform: translate3d(0, 0, 0); }
|
|
78
|
-
to { transform: translate3d(-90%, 0, 0); }
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
@media (prefers-reduced-motion: reduce), (hover: none) and (pointer: coarse) {
|
|
82
|
-
.xiaohei-scene__idle-reaction { display: none; }
|
|
83
|
-
}
|
|
84
|
-
`;
|
|
85
|
-
//# sourceMappingURL=reactions.js.map
|
package/lib/chrome/sidebar.d.ts
DELETED
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
/** One glass surface over DSH's native sidebar geometry and controls. */
|
|
2
|
-
export declare const XIAOHEI_SIDEBAR_CSS = "\n/* The layout column and SidebarRoot both consume the native sidebar fill.\n * The theme token makes those surfaces transparent; this stable slot\n * relationship removes the layout column's remaining straight divider. */\n#root :has(> [data-slot='sidebar']) {\n background: transparent !important;\n border-right-color: transparent !important;\n}\n\n#root [data-slot='sidebar'] {\n position: relative;\n}\n\n/* Target the native control by its accessible identity, not DOM order.\n * Do not resurrect controls explicitly hidden/disabled by the Host. */\n#root [data-slot='sidebar'] button:is([aria-label='Collapse sidebar'], [aria-label='\u6536\u8D77\u4FA7\u8FB9\u680F']):not([hidden]):not([disabled]):not([aria-hidden='true']) {\n display: inline-flex !important;\n visibility: visible !important;\n opacity: 1 !important;\n pointer-events: auto !important;\n}\n\n/* Reveal wide navigation only after its column has reached the target width.\n * Keep the toggle itself native. Opacity is applied to content, never the shell\n * (which also hosts fixed-position settings dialogs). */\n@media (prefers-reduced-motion: no-preference) {\n #root [data-xiaohei-sidebar-reveal] [data-xiaohei-sidebar-brand] {\n transition: opacity 100ms ease-out;\n }\n #root [data-xiaohei-sidebar-reveal='waiting'] [data-xiaohei-sidebar-brand] {\n opacity: 0 !important;\n visibility: hidden;\n transition: none;\n }\n}\n\n/* Hide the tree scrollbar's paint, retaining its gutter so rows do not grow\n * into the glass edge. Wheel, touch and keyboard remain native; dialogs and\n * other plugin panels keep their normal scrollbar affordance. */\n#root [data-slot='sidebar.workspaces'] [role='tree'] {\n scrollbar-color: transparent transparent !important;\n}\n\n#root [data-slot='sidebar.workspaces'] [role='tree']::-webkit-scrollbar,\n#root [data-slot='sidebar.workspaces'] [role='tree']::-webkit-scrollbar-thumb,\n#root [data-slot='sidebar.workspaces'] [role='tree']::-webkit-scrollbar-track {\n background: transparent !important;\n border-color: transparent !important;\n box-shadow: none !important;\n}\n\n/* The host shell remains paint- and filter-free because Settings is a fixed\n * descendant. The glass itself lives outside #root in the scene layer. */\n#root [data-slot='sidebar'] > div {\n --dsh-sidebar-inline-padding: 18px;\n position: relative;\n background: transparent !important;\n border-right: 0;\n box-shadow: none;\n}\n\n#dsh-theme-xiaohei\\/sidebar-glass {\n position: absolute;\n box-sizing: border-box;\n left: var(--xiaohei-sidebar-glass-left, 7px);\n top: var(--xiaohei-sidebar-glass-top, 8px);\n width: var(--xiaohei-sidebar-glass-width, 0px);\n height: var(--xiaohei-sidebar-glass-height, 0px);\n pointer-events: none;\n overflow: hidden;\n border: 1px solid var(--xiaohei-sidebar-glass-edge);\n border-radius: var(--xiaohei-sidebar-glass-radius);\n background: var(--xiaohei-sidebar-glass-fill);\n box-shadow:\n inset 0 1px var(--xiaohei-sidebar-glass-highlight),\n inset 1px 0 var(--xiaohei-sidebar-glass-refraction),\n 0 18px 50px -32px var(--xiaohei-sidebar-shadow);\n -webkit-backdrop-filter:\n blur(var(--xiaohei-sidebar-glass-blur))\n saturate(var(--xiaohei-sidebar-glass-saturation));\n backdrop-filter:\n blur(var(--xiaohei-sidebar-glass-blur))\n saturate(var(--xiaohei-sidebar-glass-saturation));\n}\n\n/* Width dragging changes the full-height glass raster every frame. Suspend\n * only the filters while geometry is moving; the translucent surface remains\n * visible and the settled glass returns after the resize gesture ends. */\nhtml[data-xiaohei-sidebar-resizing] #dsh-theme-xiaohei\\/sidebar-glass {\n -webkit-backdrop-filter: none;\n backdrop-filter: none;\n}\n\n/* One restrained inner rim completes the glass edge without tinting content. */\n#dsh-theme-xiaohei\\/sidebar-glass::after {\n content: '';\n position: absolute;\n pointer-events: none;\n inset: 1px;\n border-radius: calc(var(--xiaohei-sidebar-glass-radius) - 1px);\n box-shadow:\n inset 0 1px var(--xiaohei-sidebar-glass-refraction),\n inset 0 -20px 28px -32px var(--xiaohei-sidebar-shadow-soft);\n}\n\n/* The official brand slot owns geometry in both the wide sidebar and rail.\n * The bitmap remains visible as a no-WebGL fallback while the compact\n * MetallicPaint canvas adds a restrained liquid-metal pass above it. */\n.xiaohei-brand-mark {\n position: relative;\n display: inline-grid;\n flex: none;\n place-items: center;\n width: var(--xiaohei-brand-mark-size);\n height: var(--xiaohei-brand-mark-size);\n margin: -2px;\n overflow: visible;\n pointer-events: none;\n filter: drop-shadow(0 2px 3px rgb(8 13 15 / 18%));\n transform: translateY(-1px);\n}\n\n.xiaohei-brand-mark__fallback,\n.xiaohei-brand-mark__metal {\n position: absolute;\n inset: 0;\n display: block;\n width: 100%;\n height: 100%;\n object-fit: contain;\n}\n\n.xiaohei-brand-mark__fallback {\n opacity: .94;\n transition: opacity var(--xiaohei-motion-base) ease;\n}\n\n.xiaohei-brand-mark__metal {\n opacity: 0;\n transition:\n opacity var(--xiaohei-motion-base) ease,\n filter var(--xiaohei-motion-base) ease;\n}\n\n.xiaohei-brand-mark[data-metallic-ready='true'] .xiaohei-brand-mark__fallback {\n opacity: .28;\n}\n\n.xiaohei-brand-mark[data-metallic-ready='true'] .xiaohei-brand-mark__metal {\n opacity: .92;\n}\n\n.xiaohei-brand-name {\n white-space: nowrap;\n letter-spacing: .025em;\n font-size: 17px;\n font-weight: 600;\n}\n\n/* ui-conversation currently exposes the Hero mark but not its headline as a\n * slot. Anchor the visual copy to that official mark occupant so hashed Host\n * class names and unrelated headings remain untouched. */\n#root span:has(> .xiaohei-brand-mark[data-brand-context='hero']) + span {\n font-size: 0;\n}\n\n#root span:has(> .xiaohei-brand-mark[data-brand-context='hero']) + span::after {\n content: '\u4E07\u7269\u6709\u7075\uFF0C\u81EA\u5728\u540C\u884C';\n font-size: 26px;\n font-weight: 500;\n line-height: 32px;\n}\n\n#root [data-slot='sidebar'] button:hover .xiaohei-brand-mark__metal {\n filter: brightness(1.12) contrast(1.04);\n}\n\n/* Keep native rail/wide geometry and one consistent control material. */\n#root [data-slot='sidebar'] button:is([aria-label='Collapse sidebar'], [aria-label='\u6536\u8D77\u4FA7\u8FB9\u680F']),\n#root [data-slot='sidebar'] > div:has(button:is([aria-label='Collapse sidebar'], [aria-label='\u6536\u8D77\u4FA7\u8FB9\u680F'])) > button[aria-label='\u65B0\u5EFA\u4F1A\u8BDD'],\n#root [data-slot='sidebar'] > div:has(button:is([aria-label='Collapse sidebar'], [aria-label='\u6536\u8D77\u4FA7\u8FB9\u680F'])) > button[aria-label='New session'] {\n color: var(--xiaohei-sidebar-emphasis);\n transition:\n background-color var(--xiaohei-motion-fast) ease,\n border-color var(--xiaohei-motion-fast) ease,\n transform var(--xiaohei-motion-fast) var(--xiaohei-motion-curve);\n}\n\n#root [data-slot='sidebar'] button:is([aria-label='Collapse sidebar'], [aria-label='\u6536\u8D77\u4FA7\u8FB9\u680F']):hover {\n background: var(--xiaohei-sidebar-hover);\n}\n\n#root [data-slot='sidebar'] > div:has(button:is([aria-label='Collapse sidebar'], [aria-label='\u6536\u8D77\u4FA7\u8FB9\u680F'])) > button[aria-label='\u65B0\u5EFA\u4F1A\u8BDD'],\n#root [data-slot='sidebar'] > div:has(button:is([aria-label='Collapse sidebar'], [aria-label='\u6536\u8D77\u4FA7\u8FB9\u680F'])) > button[aria-label='New session'] {\n border: 1px solid var(--xiaohei-sidebar-control-edge);\n border-radius: var(--xiaohei-radius-control);\n background: var(--xiaohei-sidebar-control);\n box-shadow: inset 0 1px var(--xiaohei-sidebar-control-highlight);\n justify-content: flex-start;\n gap: 8px;\n padding-inline: 12px;\n text-align: start;\n}\n\n#root [data-slot='sidebar'] > div:has(button:is([aria-label='Collapse sidebar'], [aria-label='\u6536\u8D77\u4FA7\u8FB9\u680F'])) > button[aria-label='\u65B0\u5EFA\u4F1A\u8BDD']:hover,\n#root [data-slot='sidebar'] > div:has(button:is([aria-label='Collapse sidebar'], [aria-label='\u6536\u8D77\u4FA7\u8FB9\u680F'])) > button[aria-label='New session']:hover {\n border-color: var(--xiaohei-sidebar-control-edge-hover);\n background: var(--xiaohei-sidebar-hover);\n}\n\n/* rc.2 renders footer contributions in a horizontal flex row. Stack only\n * this slot and its immediate host so full-width actions cannot displace\n * siblings. Leave settings, plugin interiors, hidden states and order alone.\n * This is also idempotent with Desktop's column-layout compatibility patch. */\n#root [data-slot='sidebar'] :has(> [data-slot='sidebar.footer.action']),\n#root [data-slot='sidebar'] [data-slot='sidebar.footer.action'] {\n flex-direction: column;\n align-items: stretch;\n min-width: 0;\n max-width: 100%;\n gap: 4px;\n}\n\n#root [data-slot='sidebar'] [data-slot='sidebar.footer.action'] > * {\n box-sizing: border-box;\n flex: 0 0 auto;\n min-width: 0;\n max-width: 100%;\n}\n\n/* The footer uses a divider instead of another framed card. */\n#root [data-slot='sidebar'] > div:has(button:is([aria-label='Collapse sidebar'], [aria-label='\u6536\u8D77\u4FA7\u8FB9\u680F']))\n > :has(> div > [data-slot='sidebar.footer.action']) {\n box-sizing: border-box;\n gap: 2px;\n margin-top: 8px;\n padding-top: 8px;\n border-top: 1px solid var(--xiaohei-sidebar-control-edge);\n}\n\n#root [data-slot='sidebar.footer.action'] > button,\n#root [data-slot='sidebar.settings'] > button {\n color: var(--dsw-alias-label-secondary);\n border-radius: var(--xiaohei-radius-small) !important;\n transition:\n color var(--xiaohei-motion-fast) ease,\n background-color var(--xiaohei-motion-fast) ease,\n transform var(--xiaohei-motion-fast) var(--xiaohei-motion-curve);\n}\n\n#root [data-slot='sidebar.footer.action'] > button:hover,\n#root [data-slot='sidebar.settings'] > button:hover,\n#root [data-slot='sidebar.footer.action'] > button[aria-expanded='true'],\n#root [data-slot='sidebar.settings'] > button[aria-expanded='true'] {\n color: var(--xiaohei-sidebar-emphasis);\n background: var(--xiaohei-sidebar-hover);\n}\n\n#root [data-slot='sidebar.footer.action'] > button:active,\n#root [data-slot='sidebar.settings'] > button:active {\n transform: translateY(1px);\n}\n\n#root [data-slot='sidebar'] button:focus-visible {\n outline: 2px solid var(--xiaohei-sidebar-emphasis);\n outline-offset: 2px;\n}\n\n@media (prefers-reduced-motion: reduce) {\n #root [data-slot='sidebar'] button {\n transition-duration: 0ms !important;\n }\n\n\n .xiaohei-brand-mark__fallback,\n .xiaohei-brand-mark__metal {\n transition-duration: 0ms !important;\n }\n}\n\n@media (prefers-reduced-transparency: reduce) {\n #dsh-theme-xiaohei\\/sidebar-glass {\n background: var(--xiaohei-sidebar-glass-solid);\n -webkit-backdrop-filter: none;\n backdrop-filter: none;\n }\n\n}\n\n@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {\n #dsh-theme-xiaohei\\/sidebar-glass {\n background: var(--xiaohei-sidebar-glass-solid);\n }\n}\n\n@media (forced-colors: active) {\n #dsh-theme-xiaohei\\/sidebar-glass {\n border-color: CanvasText;\n background: Canvas;\n box-shadow: none;\n -webkit-backdrop-filter: none;\n backdrop-filter: none;\n }\n\n #root [data-slot='sidebar'] > div:has(button:is([aria-label='Collapse sidebar'], [aria-label='\u6536\u8D77\u4FA7\u8FB9\u680F'])) > button[aria-label='\u65B0\u5EFA\u4F1A\u8BDD'],\n #root [data-slot='sidebar'] > div:has(button:is([aria-label='Collapse sidebar'], [aria-label='\u6536\u8D77\u4FA7\u8FB9\u680F'])) > button[aria-label='New session'] {\n border-color: ButtonText;\n }\n\n}\n";
|
|
3
|
-
//# sourceMappingURL=sidebar.d.ts.map
|