@lemoncat7/dsh-theme-xiaohei 0.3.0-alpha.22
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/LICENSE +21 -0
- package/README.md +84 -0
- package/cordis.patch.yml +4 -0
- package/lib/appearance.d.ts +12 -0
- package/lib/appearance.d.ts.map +1 -0
- package/lib/appearance.js +26 -0
- package/lib/appearance.js.map +1 -0
- package/lib/blink.d.ts +4 -0
- package/lib/blink.d.ts.map +1 -0
- package/lib/blink.js +110 -0
- package/lib/blink.js.map +1 -0
- package/lib/boot-appearance.d.ts +10 -0
- package/lib/boot-appearance.d.ts.map +1 -0
- package/lib/boot-appearance.js +47 -0
- package/lib/boot-appearance.js.map +1 -0
- package/lib/boot-loader.d.ts +5 -0
- package/lib/boot-loader.d.ts.map +1 -0
- package/lib/boot-loader.js +158 -0
- package/lib/boot-loader.js.map +1 -0
- package/lib/chrome/accessibility.d.ts +3 -0
- package/lib/chrome/accessibility.d.ts.map +1 -0
- package/lib/chrome/accessibility.js +77 -0
- package/lib/chrome/accessibility.js.map +1 -0
- package/lib/chrome/blink.d.ts +3 -0
- package/lib/chrome/blink.d.ts.map +1 -0
- package/lib/chrome/blink.js +15 -0
- package/lib/chrome/blink.js.map +1 -0
- package/lib/chrome/composer.d.ts +3 -0
- package/lib/chrome/composer.d.ts.map +1 -0
- package/lib/chrome/composer.js +146 -0
- package/lib/chrome/composer.js.map +1 -0
- package/lib/chrome/conversation-messages.d.ts +3 -0
- package/lib/chrome/conversation-messages.d.ts.map +1 -0
- package/lib/chrome/conversation-messages.js +96 -0
- package/lib/chrome/conversation-messages.js.map +1 -0
- package/lib/chrome/conversation.d.ts +3 -0
- package/lib/chrome/conversation.d.ts.map +1 -0
- package/lib/chrome/conversation.js +61 -0
- package/lib/chrome/conversation.js.map +1 -0
- package/lib/chrome/frames.d.ts +6 -0
- package/lib/chrome/frames.d.ts.map +1 -0
- package/lib/chrome/frames.js +120 -0
- package/lib/chrome/frames.js.map +1 -0
- package/lib/chrome/gaze.d.ts +3 -0
- package/lib/chrome/gaze.d.ts.map +1 -0
- package/lib/chrome/gaze.js +103 -0
- package/lib/chrome/gaze.js.map +1 -0
- package/lib/chrome/identity.d.ts +6 -0
- package/lib/chrome/identity.d.ts.map +1 -0
- package/lib/chrome/identity.js +61 -0
- package/lib/chrome/identity.js.map +1 -0
- package/lib/chrome/overlays.d.ts +3 -0
- package/lib/chrome/overlays.d.ts.map +1 -0
- package/lib/chrome/overlays.js +104 -0
- package/lib/chrome/overlays.js.map +1 -0
- package/lib/chrome/portal.d.ts +6 -0
- package/lib/chrome/portal.d.ts.map +1 -0
- package/lib/chrome/portal.js +169 -0
- package/lib/chrome/portal.js.map +1 -0
- package/lib/chrome/reactions.d.ts +3 -0
- package/lib/chrome/reactions.d.ts.map +1 -0
- package/lib/chrome/reactions.js +85 -0
- package/lib/chrome/reactions.js.map +1 -0
- package/lib/chrome/sidebar.d.ts +3 -0
- package/lib/chrome/sidebar.d.ts.map +1 -0
- package/lib/chrome/sidebar.js +305 -0
- package/lib/chrome/sidebar.js.map +1 -0
- package/lib/chrome/tokens.d.ts +3 -0
- package/lib/chrome/tokens.d.ts.map +1 -0
- package/lib/chrome/tokens.js +171 -0
- package/lib/chrome/tokens.js.map +1 -0
- package/lib/chrome/workspace.d.ts +3 -0
- package/lib/chrome/workspace.d.ts.map +1 -0
- package/lib/chrome/workspace.js +313 -0
- package/lib/chrome/workspace.js.map +1 -0
- package/lib/chrome.d.ts +10 -0
- package/lib/chrome.d.ts.map +1 -0
- package/lib/chrome.js +40 -0
- package/lib/chrome.js.map +1 -0
- package/lib/client.d.ts +17 -0
- package/lib/client.d.ts.map +1 -0
- package/lib/client.js +5505 -0
- package/lib/client.js.map +7 -0
- package/lib/gaze.d.ts +4 -0
- package/lib/gaze.d.ts.map +1 -0
- package/lib/gaze.js +217 -0
- package/lib/gaze.js.map +1 -0
- package/lib/generated-identity.d.ts +5 -0
- package/lib/generated-identity.d.ts.map +1 -0
- package/lib/generated-identity.js +5 -0
- package/lib/generated-identity.js.map +1 -0
- package/lib/generated-keyart.d.ts +19 -0
- package/lib/generated-keyart.d.ts.map +1 -0
- package/lib/generated-keyart.js +19 -0
- package/lib/generated-keyart.js.map +1 -0
- package/lib/generated-loading-assets.d.ts +4 -0
- package/lib/generated-loading-assets.d.ts.map +1 -0
- package/lib/generated-loading-assets.js +4 -0
- package/lib/generated-loading-assets.js.map +1 -0
- package/lib/generated-sidebar-assets.d.ts +4 -0
- package/lib/generated-sidebar-assets.d.ts.map +1 -0
- package/lib/generated-sidebar-assets.js +4 -0
- package/lib/generated-sidebar-assets.js.map +1 -0
- package/lib/heixiu-interactions.d.ts +10 -0
- package/lib/heixiu-interactions.d.ts.map +1 -0
- package/lib/heixiu-interactions.js +161 -0
- package/lib/heixiu-interactions.js.map +1 -0
- package/lib/index.d.ts +8 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +11 -0
- package/lib/index.js.map +1 -0
- package/lib/loading-heixiu.d.ts +8 -0
- package/lib/loading-heixiu.d.ts.map +1 -0
- package/lib/loading-heixiu.js +287 -0
- package/lib/loading-heixiu.js.map +1 -0
- package/lib/plugin.d.ts +6 -0
- package/lib/plugin.d.ts.map +1 -0
- package/lib/plugin.js +38 -0
- package/lib/plugin.js.map +1 -0
- package/lib/portal.d.ts +40 -0
- package/lib/portal.d.ts.map +1 -0
- package/lib/portal.js +224 -0
- package/lib/portal.js.map +1 -0
- package/lib/reactions.d.ts +20 -0
- package/lib/reactions.d.ts.map +1 -0
- package/lib/reactions.js +380 -0
- package/lib/reactions.js.map +1 -0
- package/lib/scene/heixiu-feedback.d.ts +3 -0
- package/lib/scene/heixiu-feedback.d.ts.map +1 -0
- package/lib/scene/heixiu-feedback.js +81 -0
- package/lib/scene/heixiu-feedback.js.map +1 -0
- package/lib/scene/heixiu-interactions.d.ts +3 -0
- package/lib/scene/heixiu-interactions.d.ts.map +1 -0
- package/lib/scene/heixiu-interactions.js +92 -0
- package/lib/scene/heixiu-interactions.js.map +1 -0
- package/lib/scene/state-transitions.d.ts +3 -0
- package/lib/scene/state-transitions.d.ts.map +1 -0
- package/lib/scene/state-transitions.js +37 -0
- package/lib/scene/state-transitions.js.map +1 -0
- package/lib/scene.d.ts +14 -0
- package/lib/scene.d.ts.map +1 -0
- package/lib/scene.js +1024 -0
- package/lib/scene.js.map +1 -0
- package/lib/sidebar-glass.d.ts +16 -0
- package/lib/sidebar-glass.d.ts.map +1 -0
- package/lib/sidebar-glass.js +105 -0
- package/lib/sidebar-glass.js.map +1 -0
- package/lib/sidebar-heixiu-escape.d.ts +44 -0
- package/lib/sidebar-heixiu-escape.d.ts.map +1 -0
- package/lib/sidebar-heixiu-escape.js +340 -0
- package/lib/sidebar-heixiu-escape.js.map +1 -0
- package/lib/sidebar-heixiu-roaming.d.ts +27 -0
- package/lib/sidebar-heixiu-roaming.d.ts.map +1 -0
- package/lib/sidebar-heixiu-roaming.js +310 -0
- package/lib/sidebar-heixiu-roaming.js.map +1 -0
- package/lib/state.d.ts +9 -0
- package/lib/state.d.ts.map +1 -0
- package/lib/state.js +114 -0
- package/lib/state.js.map +1 -0
- package/lib/theme.d.ts +19 -0
- package/lib/theme.d.ts.map +1 -0
- package/lib/theme.js +188 -0
- package/lib/theme.js.map +1 -0
- package/package.json +74 -0
|
@@ -0,0 +1,313 @@
|
|
|
1
|
+
import { XIAOHEI_WORKSPACE_RIFT_COLOR } from '../generated-sidebar-assets.js';
|
|
2
|
+
/** Visual hierarchy for DSH's native workspace tree. No behaviour is replaced. */
|
|
3
|
+
export const XIAOHEI_WORKSPACE_CSS = `
|
|
4
|
+
/* Keep the official workspace root in charge of scrolling and sizing. */
|
|
5
|
+
#root [data-slot='sidebar.workspaces'] > div {
|
|
6
|
+
min-width: 0;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
/* The module frame is stitched from the header and the actual tree fragments.
|
|
10
|
+
* It therefore ends at the last rendered Space instead of following the
|
|
11
|
+
* official flex seat to the bottom of the sidebar. */
|
|
12
|
+
#root [data-slot='sidebar.workspaces'] > div > div:first-child {
|
|
13
|
+
min-height: 36px;
|
|
14
|
+
margin: 2px 2px 0;
|
|
15
|
+
color: var(--dsw-alias-label-secondary);
|
|
16
|
+
border-radius: calc(var(--xiaohei-radius-control) + 3px)
|
|
17
|
+
calc(var(--xiaohei-radius-control) + 3px) 0 0;
|
|
18
|
+
box-shadow:
|
|
19
|
+
inset 1px 0 var(--xiaohei-space-frame-edge),
|
|
20
|
+
inset -1px 0 var(--xiaohei-space-frame-edge),
|
|
21
|
+
inset 0 1px var(--xiaohei-space-frame-edge),
|
|
22
|
+
inset 0 2px var(--xiaohei-space-frame-highlight);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
#root [data-slot='sidebar.workspaces'] > div > div:first-child > span:first-child {
|
|
26
|
+
color: var(--xiaohei-workspace-label);
|
|
27
|
+
font-size: 0;
|
|
28
|
+
font-weight: 600;
|
|
29
|
+
letter-spacing: 0.01em;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/* Xiaohei's visual vocabulary calls an official Workspace a “Space”. The
|
|
33
|
+
* original node remains in place, preserving layout and accessibility data. */
|
|
34
|
+
#root [data-slot='sidebar.workspaces'] > div > div:first-child > span:first-child::after {
|
|
35
|
+
content: '空间';
|
|
36
|
+
font-size: 12px;
|
|
37
|
+
letter-spacing: 0.01em;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
#root [data-slot='sidebar.workspaces'] > div > div:first-child button {
|
|
41
|
+
color: var(--xiaohei-sidebar-icon);
|
|
42
|
+
border: 1px solid transparent;
|
|
43
|
+
border-radius: var(--xiaohei-radius-small);
|
|
44
|
+
transition:
|
|
45
|
+
color var(--xiaohei-motion-fast) ease,
|
|
46
|
+
border-color var(--xiaohei-motion-fast) ease,
|
|
47
|
+
background-color var(--xiaohei-motion-fast) ease;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
#root [data-slot='sidebar.workspaces'] > div > div:first-child button:hover,
|
|
51
|
+
#root [data-slot='sidebar.workspaces'] > div > div:first-child button[aria-expanded='true'] {
|
|
52
|
+
color: var(--xiaohei-sidebar-emphasis);
|
|
53
|
+
border-color: var(--xiaohei-workspace-control-edge);
|
|
54
|
+
background: var(--xiaohei-workspace-row-hover);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/* A workspace group stays flat. When open, a quiet ink path links the folder
|
|
58
|
+
* to its sessions without changing the official tree geometry. */
|
|
59
|
+
#root [data-slot='sidebar.workspaces'] [role='tree'] > :has([role='treeitem'][aria-expanded]) {
|
|
60
|
+
position: relative;
|
|
61
|
+
min-width: 0;
|
|
62
|
+
margin-block: 0;
|
|
63
|
+
margin-inline: 2px;
|
|
64
|
+
overflow: visible;
|
|
65
|
+
box-shadow:
|
|
66
|
+
inset 1px 0 var(--xiaohei-space-frame-edge),
|
|
67
|
+
inset -1px 0 var(--xiaohei-space-frame-edge);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
#root [data-slot='sidebar.workspaces'] [role='tree']
|
|
71
|
+
> :has(> [role='treeitem'][aria-expanded]):not(:first-child) {
|
|
72
|
+
padding-top: 2px;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
#root [data-slot='sidebar.workspaces'] [role='tree']
|
|
76
|
+
> :has(> [role='treeitem'][aria-expanded]):last-child {
|
|
77
|
+
padding-bottom: 3px;
|
|
78
|
+
border-radius: 0 0 calc(var(--xiaohei-radius-control) + 3px)
|
|
79
|
+
calc(var(--xiaohei-radius-control) + 3px);
|
|
80
|
+
box-shadow:
|
|
81
|
+
inset 1px 0 var(--xiaohei-space-frame-edge),
|
|
82
|
+
inset -1px 0 var(--xiaohei-space-frame-edge),
|
|
83
|
+
inset 0 -1px var(--xiaohei-space-frame-edge);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
#root [data-slot='sidebar.workspaces'] [role='tree'] > :has([role='treeitem'][aria-expanded='true'])::before {
|
|
87
|
+
content: '';
|
|
88
|
+
position: absolute;
|
|
89
|
+
z-index: 0;
|
|
90
|
+
left: 19px;
|
|
91
|
+
top: 31px;
|
|
92
|
+
bottom: 10px;
|
|
93
|
+
width: 1px;
|
|
94
|
+
pointer-events: none;
|
|
95
|
+
background: linear-gradient(
|
|
96
|
+
to bottom,
|
|
97
|
+
transparent,
|
|
98
|
+
var(--xiaohei-workspace-path) 12%,
|
|
99
|
+
var(--xiaohei-workspace-path-active) 72%,
|
|
100
|
+
transparent
|
|
101
|
+
);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
/* Folder and session rows share one rhythm. Native text, drag targets, action
|
|
105
|
+
* buttons, selection and accessible state remain untouched. */
|
|
106
|
+
#root [data-slot='sidebar.workspaces'] [role='treeitem'] {
|
|
107
|
+
position: relative;
|
|
108
|
+
z-index: 1;
|
|
109
|
+
box-sizing: border-box;
|
|
110
|
+
border: 1px solid transparent;
|
|
111
|
+
border-radius: var(--xiaohei-radius-control);
|
|
112
|
+
font-weight: 400;
|
|
113
|
+
transition:
|
|
114
|
+
color var(--xiaohei-motion-fast) ease,
|
|
115
|
+
border-color var(--xiaohei-motion-base) var(--xiaohei-motion-curve),
|
|
116
|
+
background-color var(--xiaohei-motion-base) var(--xiaohei-motion-curve),
|
|
117
|
+
transform var(--xiaohei-motion-base) var(--xiaohei-motion-curve);
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
/* The folder row owns both spatial overlays. They follow the host's native
|
|
121
|
+
* aria-expanded state and never participate in layout or hit testing. */
|
|
122
|
+
#root [data-slot='sidebar.workspaces'] [role='treeitem'][aria-expanded] {
|
|
123
|
+
overflow: visible;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
#root [data-slot='sidebar.workspaces'] [role='treeitem'][aria-expanded] > * {
|
|
127
|
+
position: relative;
|
|
128
|
+
z-index: 1;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
/* A narrow spirit mark identifies only the open Space. */
|
|
132
|
+
#root [data-slot='sidebar.workspaces'] [role='treeitem'][aria-expanded]::before {
|
|
133
|
+
content: '';
|
|
134
|
+
position: absolute;
|
|
135
|
+
z-index: 2;
|
|
136
|
+
left: -1px;
|
|
137
|
+
top: 9px;
|
|
138
|
+
bottom: 9px;
|
|
139
|
+
width: 3px;
|
|
140
|
+
border-radius: 999px;
|
|
141
|
+
pointer-events: none;
|
|
142
|
+
background: var(--xiaohei-workspace-active-line);
|
|
143
|
+
box-shadow:
|
|
144
|
+
0 0 6px var(--xiaohei-workspace-active-line-glow),
|
|
145
|
+
0 0 14px color-mix(
|
|
146
|
+
in srgb,
|
|
147
|
+
var(--xiaohei-workspace-active-line-glow) 30%,
|
|
148
|
+
transparent
|
|
149
|
+
);
|
|
150
|
+
opacity: 0;
|
|
151
|
+
transform: scaleY(.72);
|
|
152
|
+
transition:
|
|
153
|
+
opacity var(--xiaohei-motion-fast) ease,
|
|
154
|
+
transform var(--xiaohei-motion-base) var(--xiaohei-motion-curve);
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
/* The supplied vertical artwork owns the rift's ink, jade depth and feathered
|
|
158
|
+
* edge. It keeps its original narrow ratio instead of widening across the row. */
|
|
159
|
+
#root [data-slot='sidebar.workspaces'] [role='treeitem'][aria-expanded]::after {
|
|
160
|
+
content: '';
|
|
161
|
+
position: absolute;
|
|
162
|
+
z-index: 2;
|
|
163
|
+
right: 0;
|
|
164
|
+
top: 50%;
|
|
165
|
+
width: 20px;
|
|
166
|
+
height: 52px;
|
|
167
|
+
pointer-events: none;
|
|
168
|
+
background: center / contain no-repeat url("${XIAOHEI_WORKSPACE_RIFT_COLOR}");
|
|
169
|
+
filter:
|
|
170
|
+
saturate(.72)
|
|
171
|
+
contrast(1.04)
|
|
172
|
+
drop-shadow(0 0 2px var(--xiaohei-workspace-rift-glow));
|
|
173
|
+
opacity: 0;
|
|
174
|
+
transform: translateY(-50%) scaleX(.58) scaleY(.9);
|
|
175
|
+
transform-origin: right center;
|
|
176
|
+
transition:
|
|
177
|
+
opacity var(--xiaohei-motion-fast) ease,
|
|
178
|
+
transform var(--xiaohei-motion-base) var(--xiaohei-motion-curve);
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
#root [data-slot='sidebar.workspaces'] [role='treeitem']:hover {
|
|
182
|
+
color: var(--xiaohei-sidebar-emphasis);
|
|
183
|
+
background: var(--xiaohei-workspace-row-hover);
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
#root [data-slot='sidebar.workspaces']
|
|
187
|
+
[role='treeitem'][aria-expanded]:not([aria-expanded='true']):hover {
|
|
188
|
+
background: radial-gradient(
|
|
189
|
+
circle at 20% 50%,
|
|
190
|
+
var(--xiaohei-workspace-folder-open),
|
|
191
|
+
var(--xiaohei-workspace-row-hover) 55%,
|
|
192
|
+
transparent 85%
|
|
193
|
+
);
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
#root [data-slot='sidebar.workspaces']
|
|
197
|
+
[role='treeitem'][aria-expanded]:not([aria-expanded='true']):hover::after {
|
|
198
|
+
opacity: .26;
|
|
199
|
+
transform: translateY(-50%) scaleX(.72) scaleY(.94);
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
/* The expanded folder is lifted only enough to read as the path owner. */
|
|
203
|
+
#root [data-slot='sidebar.workspaces'] [role='tree']
|
|
204
|
+
> :has([role='treeitem'][aria-expanded])
|
|
205
|
+
> span:first-child
|
|
206
|
+
> [role='treeitem'][aria-expanded] {
|
|
207
|
+
width: calc(100% - 4px);
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
#root [data-slot='sidebar.workspaces'] [role='treeitem'][aria-expanded='true'] {
|
|
211
|
+
color: var(--xiaohei-sidebar-emphasis);
|
|
212
|
+
border-color: var(--xiaohei-workspace-folder-edge);
|
|
213
|
+
background: linear-gradient(
|
|
214
|
+
90deg,
|
|
215
|
+
var(--xiaohei-workspace-folder-open),
|
|
216
|
+
var(--xiaohei-workspace-row-active) 72%,
|
|
217
|
+
transparent 100%
|
|
218
|
+
);
|
|
219
|
+
box-shadow:
|
|
220
|
+
0 2px 6px var(--xiaohei-workspace-folder-shadow),
|
|
221
|
+
0 7px 18px var(--xiaohei-workspace-folder-shadow);
|
|
222
|
+
font-weight: 500;
|
|
223
|
+
transform: translateX(2px);
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
#root [data-slot='sidebar.workspaces'] [role='treeitem'][aria-expanded='true']::before {
|
|
227
|
+
opacity: 1;
|
|
228
|
+
transform: scaleY(1);
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
#root [data-slot='sidebar.workspaces'] [role='treeitem'][aria-expanded='true']::after {
|
|
232
|
+
filter:
|
|
233
|
+
saturate(1.18)
|
|
234
|
+
contrast(1.08)
|
|
235
|
+
drop-shadow(0 0 3px var(--xiaohei-workspace-rift-glow));
|
|
236
|
+
opacity: .98;
|
|
237
|
+
transform: translateY(-50%) scaleX(1) scaleY(1);
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
/* Session rows sit one step deeper on the ink path. This adjusts only their
|
|
241
|
+
* visual box and leaves the host tree and event handlers intact. */
|
|
242
|
+
#root [data-slot='sidebar.workspaces'] [role='tree']
|
|
243
|
+
> :has([role='treeitem'][aria-expanded])
|
|
244
|
+
> span:not(:first-child)
|
|
245
|
+
> [role='treeitem'] {
|
|
246
|
+
width: calc(100% - 16px);
|
|
247
|
+
margin-inline-start: 12px;
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
/* The selected session is the strongest navigation state. Most of the fill
|
|
251
|
+
* remains neutral; the narrow spirit line carries the theme accent. */
|
|
252
|
+
#root [data-slot='sidebar.workspaces'] [role='treeitem'][aria-selected='true'] {
|
|
253
|
+
color: var(--xiaohei-sidebar-emphasis);
|
|
254
|
+
border-color: var(--xiaohei-workspace-row-active-edge);
|
|
255
|
+
background: var(--xiaohei-workspace-row-active);
|
|
256
|
+
font-weight: 500;
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
#root [data-slot='sidebar.workspaces'] [role='treeitem'] button {
|
|
260
|
+
border-radius: 7px;
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
#root [data-slot='sidebar.workspaces'] [role='treeitem'] button:hover,
|
|
264
|
+
#root [data-slot='sidebar.workspaces'] [role='treeitem'] button[aria-expanded='true'] {
|
|
265
|
+
color: var(--xiaohei-sidebar-emphasis);
|
|
266
|
+
background: var(--xiaohei-workspace-action-hover);
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
@media (prefers-reduced-motion: reduce) {
|
|
270
|
+
#root [data-slot='sidebar.workspaces'] [role='treeitem'],
|
|
271
|
+
#root [data-slot='sidebar.workspaces'] [role='treeitem'][aria-expanded]::before,
|
|
272
|
+
#root [data-slot='sidebar.workspaces'] [role='treeitem'][aria-expanded]::after,
|
|
273
|
+
#root [data-slot='sidebar.workspaces'] > div > div:first-child button {
|
|
274
|
+
transition-duration: 0ms !important;
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
#root [data-slot='sidebar.workspaces'] [role='treeitem'][aria-expanded='true'] {
|
|
278
|
+
transform: none;
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
@media (forced-colors: active) {
|
|
283
|
+
#root [data-slot='sidebar.workspaces'] > div > div:first-child,
|
|
284
|
+
#root [data-slot='sidebar.workspaces'] [role='tree']
|
|
285
|
+
> :has(> [role='treeitem'][aria-expanded]) {
|
|
286
|
+
box-shadow: inset 0 0 0 1px CanvasText;
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
#root [data-slot='sidebar.workspaces'] [role='tree'] > :has([role='treeitem'][aria-expanded='true'])::before {
|
|
290
|
+
background: CanvasText;
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
#root [data-slot='sidebar.workspaces'] [role='treeitem'][aria-selected='true'] {
|
|
294
|
+
border-color: Highlight;
|
|
295
|
+
background: Canvas;
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
#root [data-slot='sidebar.workspaces'] [role='treeitem'][aria-expanded='true'] {
|
|
299
|
+
border-color: Highlight;
|
|
300
|
+
box-shadow: none;
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
#root [data-slot='sidebar.workspaces'] [role='treeitem'][aria-expanded]::before {
|
|
304
|
+
background: Highlight;
|
|
305
|
+
box-shadow: none;
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
#root [data-slot='sidebar.workspaces'] [role='treeitem'][aria-expanded]::after {
|
|
309
|
+
display: none;
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
`;
|
|
313
|
+
//# sourceMappingURL=workspace.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../src/chrome/workspace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAA;AAE7E,kFAAkF;AAClF,MAAM,CAAC,MAAM,qBAAqB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gDAqKW,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgJ3E,CAAA"}
|
package/lib/chrome.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/** Stable public style id used for lifecycle cleanup and regression checks. */
|
|
2
|
+
export declare const XIAOHEI_CHROME_STYLE_ID = "dsh-theme-xiaohei/chrome-style";
|
|
3
|
+
/**
|
|
4
|
+
* Public aggregate retained for the DSH client API and tests. Each source
|
|
5
|
+
* module owns one concern; this facade only controls composition order.
|
|
6
|
+
*/
|
|
7
|
+
export declare const XIAOHEI_CHROME_CSS: string;
|
|
8
|
+
/** Install the control skin and remove it with the plugin lifecycle. */
|
|
9
|
+
export declare function installXiaoheiChrome(doc?: Document | undefined): () => void;
|
|
10
|
+
//# sourceMappingURL=chrome.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chrome.d.ts","sourceRoot":"","sources":["../src/chrome.ts"],"names":[],"mappings":"AAWA,+EAA+E;AAC/E,eAAO,MAAM,uBAAuB,mCAAmC,CAAA;AAEvE;;;GAGG;AACH,eAAO,MAAM,kBAAkB,QAWnB,CAAA;AAEZ,wEAAwE;AACxE,wBAAgB,oBAAoB,CAClC,GAAG,GAAE,QAAQ,GAAG,SAAkE,GACjF,MAAM,IAAI,CAUZ"}
|
package/lib/chrome.js
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { XIAOHEI_CHROME_ACCESSIBILITY_CSS } from './chrome/accessibility.js';
|
|
2
|
+
import { XIAOHEI_COMPOSER_CSS } from './chrome/composer.js';
|
|
3
|
+
import { XIAOHEI_CONVERSATION_CSS } from './chrome/conversation.js';
|
|
4
|
+
import { XIAOHEI_CONVERSATION_MESSAGES_CSS } from './chrome/conversation-messages.js';
|
|
5
|
+
import { XIAOHEI_FRAME_SYSTEM_CSS } from './chrome/frames.js';
|
|
6
|
+
import { XIAOHEI_IDENTITY_CSS } from './chrome/identity.js';
|
|
7
|
+
import { XIAOHEI_OVERLAY_CSS } from './chrome/overlays.js';
|
|
8
|
+
import { XIAOHEI_SIDEBAR_CSS } from './chrome/sidebar.js';
|
|
9
|
+
import { XIAOHEI_CHROME_TOKENS_CSS } from './chrome/tokens.js';
|
|
10
|
+
import { XIAOHEI_WORKSPACE_CSS } from './chrome/workspace.js';
|
|
11
|
+
/** Stable public style id used for lifecycle cleanup and regression checks. */
|
|
12
|
+
export const XIAOHEI_CHROME_STYLE_ID = 'dsh-theme-xiaohei/chrome-style';
|
|
13
|
+
/**
|
|
14
|
+
* Public aggregate retained for the DSH client API and tests. Each source
|
|
15
|
+
* module owns one concern; this facade only controls composition order.
|
|
16
|
+
*/
|
|
17
|
+
export const XIAOHEI_CHROME_CSS = [
|
|
18
|
+
XIAOHEI_CHROME_TOKENS_CSS,
|
|
19
|
+
XIAOHEI_FRAME_SYSTEM_CSS,
|
|
20
|
+
XIAOHEI_IDENTITY_CSS,
|
|
21
|
+
XIAOHEI_SIDEBAR_CSS,
|
|
22
|
+
XIAOHEI_WORKSPACE_CSS,
|
|
23
|
+
XIAOHEI_CONVERSATION_CSS,
|
|
24
|
+
XIAOHEI_CONVERSATION_MESSAGES_CSS,
|
|
25
|
+
XIAOHEI_COMPOSER_CSS,
|
|
26
|
+
XIAOHEI_OVERLAY_CSS,
|
|
27
|
+
XIAOHEI_CHROME_ACCESSIBILITY_CSS,
|
|
28
|
+
].join('\n');
|
|
29
|
+
/** Install the control skin and remove it with the plugin lifecycle. */
|
|
30
|
+
export function installXiaoheiChrome(doc = typeof document === 'undefined' ? undefined : document) {
|
|
31
|
+
if (doc === undefined)
|
|
32
|
+
return () => { };
|
|
33
|
+
doc.getElementById(XIAOHEI_CHROME_STYLE_ID)?.remove();
|
|
34
|
+
const style = doc.createElement('style');
|
|
35
|
+
style.id = XIAOHEI_CHROME_STYLE_ID;
|
|
36
|
+
style.textContent = XIAOHEI_CHROME_CSS;
|
|
37
|
+
doc.head.append(style);
|
|
38
|
+
return () => style.remove();
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=chrome.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chrome.js","sourceRoot":"","sources":["../src/chrome.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gCAAgC,EAAE,MAAM,2BAA2B,CAAA;AAC5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AAC3D,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAA;AACnE,OAAO,EAAE,iCAAiC,EAAE,MAAM,mCAAmC,CAAA;AACrF,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAA;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AACzD,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAA;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAA;AAE7D,+EAA+E;AAC/E,MAAM,CAAC,MAAM,uBAAuB,GAAG,gCAAgC,CAAA;AAEvE;;;GAGG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,yBAAyB;IACzB,wBAAwB;IACxB,oBAAoB;IACpB,mBAAmB;IACnB,qBAAqB;IACrB,wBAAwB;IACxB,iCAAiC;IACjC,oBAAoB;IACpB,mBAAmB;IACnB,gCAAgC;CACjC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAEZ,wEAAwE;AACxE,MAAM,UAAU,oBAAoB,CAClC,MAA4B,OAAO,QAAQ,KAAK,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ;IAElF,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,GAAG,EAAE,GAAE,CAAC,CAAA;IAEtC,GAAG,CAAC,cAAc,CAAC,uBAAuB,CAAC,EAAE,MAAM,EAAE,CAAA;IACrD,MAAM,KAAK,GAAG,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;IACxC,KAAK,CAAC,EAAE,GAAG,uBAAuB,CAAA;IAClC,KAAK,CAAC,WAAW,GAAG,kBAAkB,CAAA;IACtC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IAEtB,OAAO,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,CAAA;AAC7B,CAAC"}
|
package/lib/client.d.ts
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export { apply, inject } from './plugin.js';
|
|
2
|
+
export { bindXiaoheiAppearance, XIAOHEI_APPEARANCE_ATTRIBUTE } from './appearance.js';
|
|
3
|
+
export { installXiaoheiBlink, XIAOHEI_BLINK_STYLE_ID } from './blink.js';
|
|
4
|
+
export { installXiaoheiChrome, XIAOHEI_CHROME_CSS, XIAOHEI_CHROME_STYLE_ID, } from './chrome.js';
|
|
5
|
+
export { XIAOHEI_PORTAL_CSS } from './chrome/portal.js';
|
|
6
|
+
export { XIAOHEI_BLINK_CSS } from './chrome/blink.js';
|
|
7
|
+
export { XIAOHEI_GAZE_CSS } from './chrome/gaze.js';
|
|
8
|
+
export { XIAOHEI_REACTION_CSS } from './chrome/reactions.js';
|
|
9
|
+
export { XIAOHEI_WORKSPACE_CSS } from './chrome/workspace.js';
|
|
10
|
+
export { installXiaoheiGaze, XIAOHEI_GAZE_STYLE_ID } from './gaze.js';
|
|
11
|
+
export { installXiaoheiHeixiuInteractions, XIAOHEI_HEIXIU_GREETING_EVENT, } from './heixiu-interactions.js';
|
|
12
|
+
export { installXiaoheiIdleReactions, resolveXiaoheiIdleTailDelay, XIAOHEI_REACTION_STYLE_ID, } from './reactions.js';
|
|
13
|
+
export { installXiaoheiPortalTransit, XIAOHEI_PORTAL_ACTIVITY_EVENT, XIAOHEI_PORTAL_LAYER_ID, XIAOHEI_PORTAL_STYLE_ID, } from './portal.js';
|
|
14
|
+
export { XIAOHEI_SCENE_CSS, XIAOHEI_SCENE_LAYER_ID, XIAOHEI_SCENE_PART_COUNT, XIAOHEI_SCENE_STYLE_ID, installXiaoheiScene, } from './scene.js';
|
|
15
|
+
export { bindXiaoheiSessionState, XIAOHEI_STATE_ATTRIBUTE } from './state.js';
|
|
16
|
+
export { XIAOHEI_DAWN_THEME, XIAOHEI_DAWN_THEME_ID, XIAOHEI_NIGHT_THEME, XIAOHEI_NIGHT_THEME_ID, XIAOHEI_THEME_TOKEN_OVERRIDES, } from './theme.js';
|
|
17
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,EAAE,qBAAqB,EAAE,4BAA4B,EAAE,MAAM,iBAAiB,CAAA;AACrF,OAAO,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAA;AACxE,OAAO,EACL,oBAAoB,EACpB,kBAAkB,EAClB,uBAAuB,GACxB,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAA;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAA;AAC7D,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAA;AACrE,OAAO,EACL,gCAAgC,EAChC,6BAA6B,GAC9B,MAAM,0BAA0B,CAAA;AACjC,OAAO,EACL,2BAA2B,EAC3B,2BAA2B,EAC3B,yBAAyB,GAC1B,MAAM,gBAAgB,CAAA;AACvB,OAAO,EACL,2BAA2B,EAC3B,6BAA6B,EAC7B,uBAAuB,EACvB,uBAAuB,GACxB,MAAM,aAAa,CAAA;AACpB,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,wBAAwB,EACxB,sBAAsB,EACtB,mBAAmB,GACpB,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAA;AAC7E,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,mBAAmB,EACnB,sBAAsB,EACtB,6BAA6B,GAC9B,MAAM,YAAY,CAAA"}
|