@lemoncat7/dsh-theme-xiaohei 0.4.5 → 0.5.0

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.
Files changed (230) hide show
  1. package/README.md +25 -92
  2. package/THIRD_PARTY_NOTICES.md +13 -1
  3. package/docs/dsh-021-compatibility.md +23 -0
  4. package/docs/releases/0.4.6.md +17 -0
  5. package/docs/releases/0.5.0.md +24 -0
  6. package/docs/releases/README.md +14 -0
  7. package/docs/rift-interaction.md +35 -0
  8. package/docs/rift-preview.md +39 -0
  9. package/lib/client.companion.js +99 -0
  10. package/lib/client.decorations.js +224 -51
  11. package/lib/client.js +532 -2501
  12. package/lib/index.d.ts +1 -2
  13. package/lib/index.js +393 -11
  14. package/lib/rift/boot.d.ts +6 -0
  15. package/package.json +30 -19
  16. package/lib/appearance.d.ts +0 -12
  17. package/lib/appearance.js +0 -42
  18. package/lib/blink.d.ts +0 -4
  19. package/lib/blink.js +0 -110
  20. package/lib/bloub-heixiu/ambient.d.ts +0 -3
  21. package/lib/bloub-heixiu/ambient.js +0 -12
  22. package/lib/bloub-heixiu/character.d.ts +0 -33
  23. package/lib/bloub-heixiu/character.js +0 -124
  24. package/lib/bloub-heixiu/effects.d.ts +0 -4
  25. package/lib/bloub-heixiu/effects.js +0 -91
  26. package/lib/bloub-heixiu/flight.d.ts +0 -15
  27. package/lib/bloub-heixiu/flight.js +0 -66
  28. package/lib/bloub-heixiu/follow.d.ts +0 -13
  29. package/lib/bloub-heixiu/follow.js +0 -23
  30. package/lib/bloub-heixiu/layout.d.ts +0 -18
  31. package/lib/bloub-heixiu/layout.js +0 -12
  32. package/lib/bloub-heixiu/renderer.d.ts +0 -16
  33. package/lib/bloub-heixiu/renderer.js +0 -94
  34. package/lib/bloub-heixiu/runtime.d.ts +0 -6
  35. package/lib/bloub-heixiu/runtime.js +0 -409
  36. package/lib/bloub-heixiu/signals.d.ts +0 -17
  37. package/lib/bloub-heixiu/signals.js +0 -55
  38. package/lib/bloub-heixiu/styles.d.ts +0 -2
  39. package/lib/bloub-heixiu/styles.js +0 -98
  40. package/lib/boot-appearance.d.ts +0 -10
  41. package/lib/boot-appearance.js +0 -47
  42. package/lib/boot-loader.d.ts +0 -5
  43. package/lib/boot-loader.js +0 -158
  44. package/lib/chrome/accessibility.d.ts +0 -3
  45. package/lib/chrome/accessibility.js +0 -69
  46. package/lib/chrome/blink.d.ts +0 -3
  47. package/lib/chrome/blink.js +0 -15
  48. package/lib/chrome/composer-avatar.d.ts +0 -10
  49. package/lib/chrome/composer-avatar.js +0 -599
  50. package/lib/chrome/composer-send-heixiu.d.ts +0 -3
  51. package/lib/chrome/composer-send-heixiu.js +0 -143
  52. package/lib/chrome/composer.d.ts +0 -3
  53. package/lib/chrome/composer.js +0 -135
  54. package/lib/chrome/controls.d.ts +0 -8
  55. package/lib/chrome/controls.js +0 -348
  56. package/lib/chrome/conversation-messages.d.ts +0 -3
  57. package/lib/chrome/conversation-messages.js +0 -329
  58. package/lib/chrome/conversation-submissions.d.ts +0 -3
  59. package/lib/chrome/conversation-submissions.js +0 -68
  60. package/lib/chrome/conversation.d.ts +0 -3
  61. package/lib/chrome/conversation.js +0 -67
  62. package/lib/chrome/frames.d.ts +0 -6
  63. package/lib/chrome/frames.js +0 -134
  64. package/lib/chrome/gaze.d.ts +0 -3
  65. package/lib/chrome/gaze.js +0 -103
  66. package/lib/chrome/identity.d.ts +0 -6
  67. package/lib/chrome/identity.js +0 -47
  68. package/lib/chrome/overlays.d.ts +0 -3
  69. package/lib/chrome/overlays.js +0 -104
  70. package/lib/chrome/portal.d.ts +0 -6
  71. package/lib/chrome/portal.js +0 -169
  72. package/lib/chrome/reactions.d.ts +0 -3
  73. package/lib/chrome/reactions.js +0 -85
  74. package/lib/chrome/sidebar.d.ts +0 -3
  75. package/lib/chrome/sidebar.js +0 -313
  76. package/lib/chrome/tokens.d.ts +0 -3
  77. package/lib/chrome/tokens.js +0 -224
  78. package/lib/chrome/workspace.d.ts +0 -3
  79. package/lib/chrome/workspace.js +0 -94
  80. package/lib/chrome.d.ts +0 -10
  81. package/lib/chrome.js +0 -46
  82. package/lib/client-entry.d.ts +0 -3
  83. package/lib/client-entry.js +0 -3
  84. package/lib/client.d.ts +0 -10
  85. package/lib/client.pose-chin-dark.js +0 -4
  86. package/lib/client.pose-chin-light.js +0 -4
  87. package/lib/client.pose-doze-dark.js +0 -4
  88. package/lib/client.pose-doze-light.js +0 -4
  89. package/lib/client.pose-halfpeek-dark.js +0 -4
  90. package/lib/client.pose-halfpeek-light.js +0 -4
  91. package/lib/client.pose-peek-dark.js +0 -4
  92. package/lib/client.pose-peek-light.js +0 -4
  93. package/lib/client.pose-seated-dark.js +0 -4
  94. package/lib/client.pose-seated-light.js +0 -4
  95. package/lib/client.rig-chin-dark.js +0 -4
  96. package/lib/client.rig-chin-light.js +0 -4
  97. package/lib/client.rig-halfpeek-dark.js +0 -4
  98. package/lib/client.rig-halfpeek-light.js +0 -4
  99. package/lib/client.rig-peek-dark.js +0 -4
  100. package/lib/client.rig-peek-light.js +0 -4
  101. package/lib/client.rig-seated-dark.js +0 -4
  102. package/lib/client.rig-seated-light.js +0 -4
  103. package/lib/composer-avatar.d.ts +0 -18
  104. package/lib/composer-avatar.js +0 -441
  105. package/lib/composer-draft-preview.d.ts +0 -4
  106. package/lib/composer-draft-preview.js +0 -8
  107. package/lib/composer-send-heixiu.d.ts +0 -8
  108. package/lib/composer-send-heixiu.js +0 -133
  109. package/lib/current-session.d.ts +0 -6
  110. package/lib/current-session.js +0 -5
  111. package/lib/decorations-entry.d.ts +0 -3
  112. package/lib/decorations-entry.js +0 -18
  113. package/lib/deferred-decorations.d.ts +0 -3
  114. package/lib/deferred-decorations.js +0 -51
  115. package/lib/gaze.d.ts +0 -4
  116. package/lib/gaze.js +0 -230
  117. package/lib/generated-backgrounds.d.ts +0 -14
  118. package/lib/generated-backgrounds.js +0 -14
  119. package/lib/generated-character-motion.d.ts +0 -4
  120. package/lib/generated-character-motion.js +0 -2
  121. package/lib/generated-identity.d.ts +0 -6
  122. package/lib/generated-identity.js +0 -6
  123. package/lib/generated-keyart.d.ts +0 -34
  124. package/lib/generated-keyart.js +0 -34
  125. package/lib/generated-loading-assets.d.ts +0 -4
  126. package/lib/generated-loading-assets.js +0 -4
  127. package/lib/heixiu-interactions.d.ts +0 -10
  128. package/lib/heixiu-interactions.js +0 -161
  129. package/lib/host-contract.d.ts +0 -9
  130. package/lib/host-contract.js +0 -13
  131. package/lib/host-dom.d.ts +0 -11
  132. package/lib/host-dom.js +0 -68
  133. package/lib/loading-heixiu.d.ts +0 -8
  134. package/lib/loading-heixiu.js +0 -287
  135. package/lib/metallic-brand-mark.d.ts +0 -10
  136. package/lib/metallic-brand-mark.js +0 -296
  137. package/lib/plugin.d.ts +0 -6
  138. package/lib/plugin.js +0 -60
  139. package/lib/portal.d.ts +0 -40
  140. package/lib/portal.js +0 -225
  141. package/lib/reactions.d.ts +0 -20
  142. package/lib/reactions.js +0 -380
  143. package/lib/scene/avatar-model.d.ts +0 -6
  144. package/lib/scene/avatar-model.js +0 -646
  145. package/lib/scene/avatar-motion.d.ts +0 -3
  146. package/lib/scene/avatar-motion.js +0 -799
  147. package/lib/scene/character-assets.d.ts +0 -13
  148. package/lib/scene/character-assets.js +0 -26
  149. package/lib/scene/character-expression.d.ts +0 -4
  150. package/lib/scene/character-expression.js +0 -15
  151. package/lib/scene/character-eye-material.d.ts +0 -13
  152. package/lib/scene/character-eye-material.js +0 -88
  153. package/lib/scene/character-eye-renderer.d.ts +0 -5
  154. package/lib/scene/character-eye-renderer.js +0 -80
  155. package/lib/scene/character-eye-rig.d.ts +0 -20
  156. package/lib/scene/character-eye-rig.js +0 -35
  157. package/lib/scene/character-gaze.d.ts +0 -16
  158. package/lib/scene/character-gaze.js +0 -36
  159. package/lib/scene/character-idle.d.ts +0 -17
  160. package/lib/scene/character-idle.js +0 -65
  161. package/lib/scene/character-layout.d.ts +0 -24
  162. package/lib/scene/character-layout.js +0 -51
  163. package/lib/scene/character-motion-clock.d.ts +0 -18
  164. package/lib/scene/character-motion-clock.js +0 -70
  165. package/lib/scene/character-motion-types.d.ts +0 -12
  166. package/lib/scene/character-motion-types.js +0 -2
  167. package/lib/scene/character-motion.d.ts +0 -6
  168. package/lib/scene/character-motion.js +0 -187
  169. package/lib/scene/character-poses.d.ts +0 -26
  170. package/lib/scene/character-poses.js +0 -11
  171. package/lib/scene/character-rig-renderer.d.ts +0 -5
  172. package/lib/scene/character-rig-renderer.js +0 -95
  173. package/lib/scene/character-rig.d.ts +0 -22
  174. package/lib/scene/character-rig.js +0 -61
  175. package/lib/scene/heixiu-feedback.d.ts +0 -3
  176. package/lib/scene/heixiu-feedback.js +0 -64
  177. package/lib/scene/heixiu-interactions.d.ts +0 -3
  178. package/lib/scene/heixiu-interactions.js +0 -92
  179. package/lib/scene/ids.d.ts +0 -5
  180. package/lib/scene/ids.js +0 -5
  181. package/lib/scene/pointer-bridge.d.ts +0 -21
  182. package/lib/scene/pointer-bridge.js +0 -155
  183. package/lib/scene/runtime.d.ts +0 -12
  184. package/lib/scene/runtime.js +0 -74
  185. package/lib/scene/state-transitions.d.ts +0 -3
  186. package/lib/scene/state-transitions.js +0 -37
  187. package/lib/scene/styles.d.ts +0 -5
  188. package/lib/scene/styles.js +0 -69
  189. package/lib/scene/sylva-performance.d.ts +0 -11
  190. package/lib/scene/sylva-performance.js +0 -58
  191. package/lib/scene/wallpaper-character-styles.d.ts +0 -3
  192. package/lib/scene/wallpaper-character-styles.js +0 -49
  193. package/lib/scene/wallpaper-character.d.ts +0 -5
  194. package/lib/scene/wallpaper-character.js +0 -222
  195. package/lib/scene.d.ts +0 -8
  196. package/lib/scene.js +0 -8
  197. package/lib/sidebar-glass.d.ts +0 -16
  198. package/lib/sidebar-glass.js +0 -168
  199. package/lib/sidebar-heixiu-escape.d.ts +0 -44
  200. package/lib/sidebar-heixiu-escape.js +0 -340
  201. package/lib/sidebar-heixiu-roaming.d.ts +0 -27
  202. package/lib/sidebar-heixiu-roaming.js +0 -310
  203. package/lib/sidebar-reveal.d.ts +0 -8
  204. package/lib/sidebar-reveal.js +0 -59
  205. package/lib/state.d.ts +0 -21
  206. package/lib/state.js +0 -123
  207. package/lib/theme.d.ts +0 -19
  208. package/lib/theme.js +0 -188
  209. package/lib/vendor/bloub/decor.d.ts +0 -114
  210. package/lib/vendor/bloub/decor.js +0 -198
  211. package/lib/vendor/bloub/engine.d.ts +0 -213
  212. package/lib/vendor/bloub/engine.js +0 -452
  213. package/lib/vendor/bloub/expressions.d.ts +0 -35
  214. package/lib/vendor/bloub/expressions.js +0 -143
  215. package/lib/vendor/bloub/eyefit.d.ts +0 -75
  216. package/lib/vendor/bloub/eyefit.js +0 -393
  217. package/lib/vendor/bloub/face.d.ts +0 -63
  218. package/lib/vendor/bloub/face.js +0 -106
  219. package/lib/vendor/bloub/math.d.ts +0 -22
  220. package/lib/vendor/bloub/math.js +0 -36
  221. package/lib/vendor/bloub/profiles.d.ts +0 -8
  222. package/lib/vendor/bloub/profiles.js +0 -20
  223. package/lib/vendor/bloub/repere.d.ts +0 -30
  224. package/lib/vendor/bloub/repere.js +0 -32
  225. package/lib/vendor/bloub/shape.d.ts +0 -80
  226. package/lib/vendor/bloub/shape.js +0 -268
  227. package/lib/vendor/bloub/skins.d.ts +0 -36
  228. package/lib/vendor/bloub/skins.js +0 -74
  229. package/lib/vendor/bloub/states.d.ts +0 -87
  230. package/lib/vendor/bloub/states.js +0 -468
@@ -1,329 +0,0 @@
1
- import { XIAOHEI_AVATAR_2D_FRONT } from '../generated-keyart.js';
2
- // AssistantMarkdown > body > ProcessReasoning > ReasoningRow. Require the
3
- // reasoning wrapper to be the only body child: mixed replies/images/interrupted
4
- // messages keep their bubble. No hashed classes or nested :has selectors.
5
- const thinkingOnlyRow = `#root [data-chat-flow-kind='assistant-step']:has(> [data-slot='conversation.chat.node'] > div:first-child > div:only-child > div:only-child > [data-variant='think']:only-child)`;
6
- /** Native conversation messages restyled without changing their DOM contract. */
7
- export const XIAOHEI_CONVERSATION_MESSAGES_CSS = `
8
- /* Keep DSH's native max width; only tune vertical reading rhythm. */
9
- #root [data-chat-flow] {
10
- gap: 18px;
11
- }
12
-
13
- #root [data-chat-flow-kind='assistant-step'] {
14
- color: var(--xiaohei-conversation-text);
15
- }
16
-
17
- ${thinkingOnlyRow} {
18
- padding-inline: 0 !important;
19
- }
20
-
21
- ${thinkingOnlyRow}::before {
22
- content: none !important;
23
- display: none !important;
24
- }
25
-
26
- ${thinkingOnlyRow} > [data-slot='conversation.chat.node'] > div:first-child {
27
- inline-size: 100% !important;
28
- padding: 0 !important;
29
- border: 0 !important;
30
- border-radius: 0 !important;
31
- background: transparent !important;
32
- box-shadow: none !important;
33
- }
34
-
35
- /* Message portraits are deliberately static and only identify the speaker. */
36
- #root [data-chat-flow-kind='assistant-step'],
37
- #root div[data-submission-echo],
38
- #root [data-chat-flow-kind='user'] {
39
- position: relative;
40
- overflow: visible;
41
- }
42
-
43
- #root [data-chat-flow-kind='assistant-step']::before,
44
- #root div[data-submission-echo]::after,
45
- #root [data-chat-flow-kind='user']::after {
46
- position: absolute;
47
- inset-block-start: 2px;
48
- z-index: 2;
49
- display: grid;
50
- place-items: center;
51
- box-sizing: border-box;
52
- inline-size: 40px;
53
- block-size: 44px;
54
- border: 1px solid rgb(235 240 242 / 13%);
55
- border-radius: 13px 13px 15px 15px;
56
- color: rgb(225 231 232 / 78%);
57
- background-color: rgb(18 23 25 / 76%);
58
- background-repeat: no-repeat;
59
- box-shadow:
60
- inset 0 1px 0 rgb(255 255 255 / 9%),
61
- 0 6px 16px rgb(0 0 0 / 16%);
62
- pointer-events: none;
63
- }
64
-
65
- #root [data-chat-flow-kind='assistant-step']::before {
66
- content: '';
67
- inset-inline-start: -50px;
68
- background-image:
69
- url("${XIAOHEI_AVATAR_2D_FRONT}"),
70
- linear-gradient(145deg, rgb(255 255 255 / 7%), transparent 56%);
71
- background-position: center -1px, center;
72
- background-size: 76px auto, auto;
73
- }
74
-
75
- #root div[data-submission-echo]::after,
76
- #root [data-chat-flow-kind='user']::after {
77
- content: '我';
78
- inset-inline-end: -50px;
79
- block-size: 40px;
80
- border-radius: 13px;
81
- font-family: ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
82
- font-size: 13px;
83
- font-weight: 650;
84
- letter-spacing: .02em;
85
- background-image:
86
- linear-gradient(145deg, rgb(255 255 255 / 8%), transparent 58%),
87
- linear-gradient(160deg, rgb(34 40 43 / 84%), rgb(20 25 27 / 76%));
88
- }
89
-
90
- /* The slot outlet itself uses display:contents, so the box must live on its
91
- native AssistantMarkdown child. This keeps the semantic row untouched. */
92
- #root [data-chat-flow-kind='assistant-step']
93
- > [data-slot='conversation.chat.node']
94
- > div:first-child {
95
- box-sizing: border-box;
96
- inline-size: fit-content;
97
- max-inline-size: 100%;
98
- padding: 16px 28px !important;
99
- border: 1px solid var(--xiaohei-conversation-edge) !important;
100
- border-radius: 9px 18px 18px 18px;
101
- background: var(--xiaohei-conversation-assistant) !important;
102
- box-shadow:
103
- inset 0 1px 0 var(--xiaohei-conversation-highlight),
104
- inset 1px 0 0 color-mix(in srgb, var(--xiaohei-conversation-highlight) 42%, transparent),
105
- 0 7px 22px var(--xiaohei-conversation-shadow) !important;
106
- -webkit-backdrop-filter: none;
107
- backdrop-filter: none;
108
- overflow-wrap: anywhere;
109
- }
110
-
111
- #root [data-chat-flow-kind='assistant-step']
112
- > [data-slot='conversation.chat.node']
113
- > div:first-child > div {
114
- color: var(--xiaohei-conversation-text) !important;
115
- background: transparent !important;
116
- border: 0 !important;
117
- box-shadow: none !important;
118
- }
119
-
120
- #root [data-chat-flow-kind='assistant-step'] :is(p, li, h1, h2, h3, h4, h5, h6) {
121
- color: var(--xiaohei-conversation-text);
122
- }
123
-
124
- /* User and steering prose use a slightly denser companion bubble; image-only rows stay untouched. */
125
- #root [data-chat-flow-kind='user'] > [data-slot='conversation.chat.node']
126
- > div:first-child > div:first-child > div:last-child:not([data-slot]):not(:has(img)),
127
- #root [data-chat-flow-kind='user'] [data-time-hover-root]
128
- > div:first-child > div:last-child:not(:has(img)),
129
- #root :is(div[data-submission-echo], [data-pending-steering])
130
- > div:first-child > div:first-child:not([data-message-attachments]),
131
- #root :is(div[data-submission-echo], [data-pending-steering])
132
- > div:first-child > [data-message-attachments] + div {
133
- box-sizing: border-box;
134
- padding: 14px 28px !important;
135
- color: var(--xiaohei-conversation-text) !important;
136
- border: 1px solid var(--xiaohei-conversation-edge);
137
- border-radius: 18px 9px 18px 18px;
138
- background: var(--xiaohei-conversation-user) !important;
139
- box-shadow:
140
- inset 0 1px 0 var(--xiaohei-conversation-highlight),
141
- inset -1px 0 0 color-mix(in srgb, var(--xiaohei-conversation-highlight) 42%, transparent),
142
- 0 7px 22px var(--xiaohei-conversation-shadow) !important;
143
- -webkit-backdrop-filter: none;
144
- backdrop-filter: none;
145
- overflow-wrap: anywhere;
146
- }
147
-
148
- /* Context, recall, compaction and tool rows use the same ink-and-silver family,
149
- but at a lower contrast than actual conversation bubbles. */
150
- #root [data-chat-flow-kind='context'],
151
- #root [data-chat-flow-kind='manual-compaction'],
152
- #root [data-chat-flow-kind='command'] > div,
153
- #root [data-context-injection-body],
154
- #root [data-context-source],
155
- #root [data-context-summary],
156
- #root [data-turn-tail] [role='status'] {
157
- color: var(--xiaohei-conversation-meta);
158
- }
159
-
160
- #root :is(
161
- [data-chat-flow-kind='context'],
162
- [data-chat-flow-kind='manual-compaction'],
163
- [data-chat-flow-kind='tool-call'],
164
- [data-chat-flow-kind='command']
165
- ) > [data-slot='conversation.chat.node'] > div:first-child {
166
- box-sizing: border-box;
167
- inline-size: fit-content;
168
- max-inline-size: 100%;
169
- padding: 6px 14px;
170
- border: 1px solid var(--xiaohei-conversation-meta-edge);
171
- border-radius: 11px;
172
- background: var(--xiaohei-conversation-meta-surface) !important;
173
- box-shadow:
174
- inset 0 1px 0 color-mix(in srgb, var(--xiaohei-conversation-highlight) 52%, transparent),
175
- 0 4px 14px color-mix(in srgb, var(--xiaohei-conversation-shadow) 58%, transparent);
176
- -webkit-backdrop-filter: none;
177
- backdrop-filter: none;
178
- overflow: hidden;
179
- }
180
-
181
- #root [data-chat-flow-kind='turn-tail'] .dsh-knowledge-writeback-status {
182
- box-sizing: border-box;
183
- padding: 6px 14px;
184
- border: 1px solid var(--xiaohei-conversation-meta-edge);
185
- border-radius: 9px;
186
- background: var(--xiaohei-conversation-meta-surface) !important;
187
- box-shadow: inset 0 1px 0 color-mix(in srgb, var(--xiaohei-conversation-highlight) 48%, transparent);
188
- -webkit-backdrop-filter: none;
189
- backdrop-filter: none;
190
- }
191
-
192
- #root [data-chat-flow-kind='context'],
193
- #root [data-chat-flow-kind='manual-compaction'] {
194
- font-size: 13px;
195
- }
196
-
197
- #root [data-chat-flow-kind='command'] > div {
198
- opacity: 0.82;
199
- transition: opacity var(--xiaohei-motion-fast) ease;
200
- }
201
-
202
- #root [data-chat-flow-kind='command']:hover > div,
203
- #root [data-chat-flow-kind='command']:focus-within > div {
204
- opacity: 1;
205
- }
206
-
207
- #root [data-context-injection-body] {
208
- border: 1px solid rgb(132 138 143 / 8%);
209
- background: rgb(132 138 143 / 5%) !important;
210
- }
211
-
212
- /* Copy, branch, retry and plugin-provided message actions stay quiet at rest. */
213
- #root [data-time-hover-root] button,
214
- #root [data-turn-tail] button {
215
- opacity: 0.38;
216
- transition:
217
- color var(--xiaohei-motion-fast) ease,
218
- background-color var(--xiaohei-motion-fast) ease,
219
- opacity var(--xiaohei-motion-fast) ease;
220
- }
221
-
222
- #root [data-time-hover-root]:hover button,
223
- #root [data-time-hover-root]:focus-within button,
224
- #root [data-turn-tail]:hover button,
225
- #root [data-turn-tail]:focus-within button {
226
- opacity: 0.82;
227
- }
228
-
229
- html[data-xiaohei-appearance='light'] #root [data-chat-flow-kind='assistant-step']
230
- > [data-slot='conversation.chat.node']
231
- > div:first-child,
232
- html[data-xiaohei-appearance='light'] #root [data-chat-flow-kind='assistant-step'] :is(p, li, h1, h2, h3, h4, h5, h6) {
233
- color: #343B3A !important;
234
- }
235
-
236
- html[data-xiaohei-appearance='light'] #root [data-chat-flow-kind='assistant-step']::before,
237
- html[data-xiaohei-appearance='light'] #root div[data-submission-echo]::after,
238
- html[data-xiaohei-appearance='light'] #root [data-chat-flow-kind='user']::after {
239
- border-color: rgb(42 48 52 / 11%);
240
- color: rgb(48 54 58 / 72%);
241
- background-color: rgb(239 242 243 / 78%);
242
- box-shadow:
243
- inset 0 1px 0 rgb(255 255 255 / 76%),
244
- 0 6px 16px rgb(34 40 43 / 9%);
245
- }
246
-
247
- html[data-xiaohei-appearance='light'] #root div[data-submission-echo]::after,
248
- html[data-xiaohei-appearance='light'] #root [data-chat-flow-kind='user']::after {
249
- background-image:
250
- linear-gradient(145deg, rgb(255 255 255 / 74%), transparent 58%),
251
- linear-gradient(160deg, rgb(242 244 245 / 86%), rgb(222 226 228 / 76%));
252
- }
253
-
254
- @media (width <= 760px) {
255
- #root [data-chat-flow-kind='assistant-step'] {
256
- box-sizing: border-box;
257
- padding-inline-start: 38px;
258
- }
259
-
260
- #root div[data-submission-echo],
261
- #root [data-chat-flow-kind='user'] {
262
- box-sizing: border-box;
263
- padding-inline-end: 38px;
264
- }
265
-
266
- #root [data-chat-flow-kind='assistant-step']::before,
267
- #root div[data-submission-echo]::after,
268
- #root [data-chat-flow-kind='user']::after {
269
- inline-size: 32px;
270
- block-size: 36px;
271
- border-radius: 11px 11px 13px 13px;
272
- }
273
-
274
- #root [data-chat-flow-kind='assistant-step']::before {
275
- inset-inline-start: 0;
276
- background-size: 62px auto, auto;
277
- }
278
-
279
- #root div[data-submission-echo]::after,
280
- #root [data-chat-flow-kind='user']::after {
281
- inset-inline-end: 0;
282
- block-size: 32px;
283
- border-radius: 11px;
284
- font-size: 11px;
285
- }
286
-
287
- #root [data-chat-flow-kind='assistant-step']
288
- > [data-slot='conversation.chat.node']
289
- > div:first-child {
290
- padding: 12px 20px !important;
291
- border-radius: 8px 16px 16px 16px;
292
- }
293
-
294
- #root [data-chat-flow-kind='user'] > [data-slot='conversation.chat.node']
295
- > div:first-child > div:first-child > div:last-child:not([data-slot]):not(:has(img)),
296
- #root [data-chat-flow-kind='user'] [data-time-hover-root]
297
- > div:first-child > div:last-child:not(:has(img)),
298
- #root :is(div[data-submission-echo], [data-pending-steering])
299
- > div:first-child > div:first-child:not([data-message-attachments]),
300
- #root :is(div[data-submission-echo], [data-pending-steering])
301
- > div:first-child > [data-message-attachments] + div {
302
- padding-inline: 20px !important;
303
- }
304
-
305
- #root :is(
306
- [data-chat-flow-kind='context'],
307
- [data-chat-flow-kind='manual-compaction'],
308
- [data-chat-flow-kind='tool-call'],
309
- [data-chat-flow-kind='command']
310
- ) > [data-slot='conversation.chat.node'] > div:first-child {
311
- border-radius: 10px;
312
- }
313
- }
314
-
315
- @media (prefers-contrast: more), (forced-colors: active) {
316
- #root [data-chat-flow-kind='assistant-step']::before,
317
- #root div[data-submission-echo]::after,
318
- #root [data-chat-flow-kind='user']::after {
319
- display: none;
320
- }
321
-
322
- #root [data-time-hover-root] button,
323
- #root [data-turn-tail] button,
324
- #root [data-chat-flow-kind='command'] > div {
325
- opacity: 1;
326
- }
327
- }
328
- `;
329
- //# sourceMappingURL=conversation-messages.js.map
@@ -1,3 +0,0 @@
1
- /** Local draft and native submission presentation; Host owns their lifetime. */
2
- export declare const XIAOHEI_CONVERSATION_SUBMISSIONS_CSS = "\n#root [data-xiaohei-draft-preview] {\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n box-sizing: border-box;\n inline-size: calc(100% - 2 * (var(--dsh-composer-side-clearance, 24px) + 16px));\n max-inline-size: var(--dsh-chat-content-width, 748px);\n margin-inline: auto;\n min-inline-size: 0;\n padding: 4px 0 8px;\n gap: 4px;\n color: var(--xiaohei-conversation-text);\n}\n#root .xiaohei-draft-label {\n font-size: 12px;\n padding-inline: 10px;\n}\n#root .xiaohei-draft-bubble {\n max-inline-size: min(calc(var(--dsh-chat-content-width, 748px) * .702), 82%);\n min-inline-size: 0;\n max-block-size: min(160px, 22dvh);\n overflow: auto;\n white-space: pre-wrap;\n overflow-wrap: anywhere;\n padding: 10px 14px;\n border: 1px dashed var(--xiaohei-conversation-edge);\n border-radius: 18px 9px 18px 18px;\n background: var(--xiaohei-conversation-user);\n font-size: 14px;\n line-height: 1.6;\n}\n#root .xiaohei-draft-bubble:focus-visible {\n outline: 2px solid currentColor;\n outline-offset: 2px;\n}\n@media (width <= 760px) {\n #root [data-xiaohei-draft-preview] {\n padding-inline-end: 38px;\n }\n}\n\n#root :is(div[data-submission-echo], [data-pending-steering]) {\n min-inline-size: 0;\n color: var(--xiaohei-conversation-text);\n}\n\n/* Do not dim the whole row: text and attachments must remain readable while\n * the Host keeps edit/remove/steer disabled until its queue acknowledgement. */\n#root li[data-submission-echo] {\n opacity: 1;\n color: var(--xiaohei-conversation-text);\n background: var(--xiaohei-conversation-user);\n border-color: var(--xiaohei-conversation-edge);\n}\n\n#root [data-submission-echo] [role='status'] {\n color: var(--xiaohei-conversation-text);\n flex-shrink: 0;\n white-space: nowrap;\n}\n\n#root li[data-submission-echo] button:disabled {\n cursor: not-allowed;\n}\n";
3
- //# sourceMappingURL=conversation-submissions.d.ts.map
@@ -1,68 +0,0 @@
1
- /** Local draft and native submission presentation; Host owns their lifetime. */
2
- export const XIAOHEI_CONVERSATION_SUBMISSIONS_CSS = `
3
- #root [data-xiaohei-draft-preview] {
4
- display: flex;
5
- flex-direction: column;
6
- align-items: flex-end;
7
- box-sizing: border-box;
8
- inline-size: calc(100% - 2 * (var(--dsh-composer-side-clearance, 24px) + 16px));
9
- max-inline-size: var(--dsh-chat-content-width, 748px);
10
- margin-inline: auto;
11
- min-inline-size: 0;
12
- padding: 4px 0 8px;
13
- gap: 4px;
14
- color: var(--xiaohei-conversation-text);
15
- }
16
- #root .xiaohei-draft-label {
17
- font-size: 12px;
18
- padding-inline: 10px;
19
- }
20
- #root .xiaohei-draft-bubble {
21
- max-inline-size: min(calc(var(--dsh-chat-content-width, 748px) * .702), 82%);
22
- min-inline-size: 0;
23
- max-block-size: min(160px, 22dvh);
24
- overflow: auto;
25
- white-space: pre-wrap;
26
- overflow-wrap: anywhere;
27
- padding: 10px 14px;
28
- border: 1px dashed var(--xiaohei-conversation-edge);
29
- border-radius: 18px 9px 18px 18px;
30
- background: var(--xiaohei-conversation-user);
31
- font-size: 14px;
32
- line-height: 1.6;
33
- }
34
- #root .xiaohei-draft-bubble:focus-visible {
35
- outline: 2px solid currentColor;
36
- outline-offset: 2px;
37
- }
38
- @media (width <= 760px) {
39
- #root [data-xiaohei-draft-preview] {
40
- padding-inline-end: 38px;
41
- }
42
- }
43
-
44
- #root :is(div[data-submission-echo], [data-pending-steering]) {
45
- min-inline-size: 0;
46
- color: var(--xiaohei-conversation-text);
47
- }
48
-
49
- /* Do not dim the whole row: text and attachments must remain readable while
50
- * the Host keeps edit/remove/steer disabled until its queue acknowledgement. */
51
- #root li[data-submission-echo] {
52
- opacity: 1;
53
- color: var(--xiaohei-conversation-text);
54
- background: var(--xiaohei-conversation-user);
55
- border-color: var(--xiaohei-conversation-edge);
56
- }
57
-
58
- #root [data-submission-echo] [role='status'] {
59
- color: var(--xiaohei-conversation-text);
60
- flex-shrink: 0;
61
- white-space: nowrap;
62
- }
63
-
64
- #root li[data-submission-echo] button:disabled {
65
- cursor: not-allowed;
66
- }
67
- `;
68
- //# sourceMappingURL=conversation-submissions.js.map
@@ -1,3 +0,0 @@
1
- /** Conversation-level controls and quiet Xiaohei identity details. */
2
- export declare const XIAOHEI_CONVERSATION_CSS = "\n/* Identify the resident conversation root through the host's stable scroll\n contract, without coupling the theme to generated CSS-module class names. */\n#root :has(> [data-conversation-scroll]) {\n background: transparent;\n}\n\n#root [data-slot='conversation.composer'] button[aria-label='\u9009\u62E9\u5DE5\u4F5C\u533A'],\n#root [data-slot='conversation.composer'] button[aria-label='Select workspace'] {\n min-height: 32px;\n padding-inline: 10px;\n border: 1px solid transparent;\n border-radius: var(--xiaohei-radius-control);\n color: var(--dsw-alias-label-primary);\n background: var(--xiaohei-surface-muted);\n box-shadow: inset 0 1px rgb(255 255 255 / 5%);\n transition:\n color var(--xiaohei-motion-fast) ease,\n background-color var(--xiaohei-motion-base) ease,\n border-color var(--xiaohei-motion-base) ease,\n box-shadow var(--xiaohei-motion-base) ease;\n}\n\n#root [data-slot='conversation.composer'] button[aria-label='\u9009\u62E9\u5DE5\u4F5C\u533A']:hover,\n#root [data-slot='conversation.composer'] button[aria-label='Select workspace']:hover,\n#root [data-slot='conversation.composer'] button[aria-label='\u9009\u62E9\u5DE5\u4F5C\u533A'][aria-expanded='true'],\n#root [data-slot='conversation.composer'] button[aria-label='Select workspace'][aria-expanded='true'] {\n color: var(--xiaohei-spirit-strong);\n border-color: var(--xiaohei-edge);\n background: var(--xiaohei-spirit-soft);\n box-shadow: inset 3px 0 var(--xiaohei-spirit);\n}\n\n#root [data-slot='conversation.session.header'] button,\n#root [data-slot='conversation.input.plan'] button,\n#root [data-slot='conversation.input.model'] button,\n#root [data-slot='conversation.hero.agentPreset'] 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}\n\n#root [data-slot='conversation.session.header'] button:hover,\n#root [data-slot='conversation.input.plan'] button:hover,\n#root [data-slot='conversation.input.model'] button:hover,\n#root [data-slot='conversation.hero.agentPreset'] button:hover {\n color: var(--xiaohei-spirit-strong);\n border-color: var(--xiaohei-edge);\n background: var(--xiaohei-spirit-soft);\n}\n\n#root [data-slot='conversation.session'] [role='status'],\n#root [data-slot='conversation.composer'] [role='status'] {\n color: var(--dsw-alias-label-secondary);\n}\n\nhtml[data-xiaohei-appearance='light'] #root [data-slot='conversation.composer'] button[aria-label='\u9009\u62E9\u5DE5\u4F5C\u533A'],\nhtml[data-xiaohei-appearance='light'] #root [data-slot='conversation.composer'] button[aria-label='Select workspace'] {\n background: rgb(246 249 247 / 70%);\n box-shadow: inset 0 1px rgb(255 255 255 / 74%);\n}\n";
3
- //# sourceMappingURL=conversation.d.ts.map
@@ -1,67 +0,0 @@
1
- /** Conversation-level controls and quiet Xiaohei identity details. */
2
- export const XIAOHEI_CONVERSATION_CSS = `
3
- /* Identify the resident conversation root through the host's stable scroll
4
- contract, without coupling the theme to generated CSS-module class names. */
5
- #root :has(> [data-conversation-scroll]) {
6
- background: transparent;
7
- }
8
-
9
- #root [data-slot='conversation.composer'] button[aria-label='选择工作区'],
10
- #root [data-slot='conversation.composer'] button[aria-label='Select workspace'] {
11
- min-height: 32px;
12
- padding-inline: 10px;
13
- border: 1px solid transparent;
14
- border-radius: var(--xiaohei-radius-control);
15
- color: var(--dsw-alias-label-primary);
16
- background: var(--xiaohei-surface-muted);
17
- box-shadow: inset 0 1px rgb(255 255 255 / 5%);
18
- transition:
19
- color var(--xiaohei-motion-fast) ease,
20
- background-color var(--xiaohei-motion-base) ease,
21
- border-color var(--xiaohei-motion-base) ease,
22
- box-shadow var(--xiaohei-motion-base) ease;
23
- }
24
-
25
- #root [data-slot='conversation.composer'] button[aria-label='选择工作区']:hover,
26
- #root [data-slot='conversation.composer'] button[aria-label='Select workspace']:hover,
27
- #root [data-slot='conversation.composer'] button[aria-label='选择工作区'][aria-expanded='true'],
28
- #root [data-slot='conversation.composer'] button[aria-label='Select workspace'][aria-expanded='true'] {
29
- color: var(--xiaohei-spirit-strong);
30
- border-color: var(--xiaohei-edge);
31
- background: var(--xiaohei-spirit-soft);
32
- box-shadow: inset 3px 0 var(--xiaohei-spirit);
33
- }
34
-
35
- #root [data-slot='conversation.session.header'] button,
36
- #root [data-slot='conversation.input.plan'] button,
37
- #root [data-slot='conversation.input.model'] button,
38
- #root [data-slot='conversation.hero.agentPreset'] button {
39
- border: 1px solid transparent;
40
- border-radius: var(--xiaohei-radius-small);
41
- transition:
42
- color var(--xiaohei-motion-fast) ease,
43
- background-color var(--xiaohei-motion-fast) ease,
44
- border-color var(--xiaohei-motion-fast) ease;
45
- }
46
-
47
- #root [data-slot='conversation.session.header'] button:hover,
48
- #root [data-slot='conversation.input.plan'] button:hover,
49
- #root [data-slot='conversation.input.model'] button:hover,
50
- #root [data-slot='conversation.hero.agentPreset'] button:hover {
51
- color: var(--xiaohei-spirit-strong);
52
- border-color: var(--xiaohei-edge);
53
- background: var(--xiaohei-spirit-soft);
54
- }
55
-
56
- #root [data-slot='conversation.session'] [role='status'],
57
- #root [data-slot='conversation.composer'] [role='status'] {
58
- color: var(--dsw-alias-label-secondary);
59
- }
60
-
61
- html[data-xiaohei-appearance='light'] #root [data-slot='conversation.composer'] button[aria-label='选择工作区'],
62
- html[data-xiaohei-appearance='light'] #root [data-slot='conversation.composer'] button[aria-label='Select workspace'] {
63
- background: rgb(246 249 247 / 70%);
64
- box-shadow: inset 0 1px rgb(255 255 255 / 74%);
65
- }
66
- `;
67
- //# sourceMappingURL=conversation.js.map
@@ -1,6 +0,0 @@
1
- /**
2
- * Public frame contract for first-party chrome and future Xiaohei-aware tools.
3
- * Feature plugins opt in with data attributes; this layer never guesses their DOM.
4
- */
5
- export declare const XIAOHEI_FRAME_SYSTEM_CSS = "\n:where([data-xiaohei-surface='plugin-workspace']) {\n isolation: isolate;\n background-color: var(--xiaohei-plugin-workspace-fill) !important;\n -webkit-backdrop-filter:\n blur(var(--xiaohei-plugin-surface-blur))\n saturate(var(--xiaohei-plugin-surface-saturation));\n backdrop-filter:\n blur(var(--xiaohei-plugin-surface-blur))\n saturate(var(--xiaohei-plugin-surface-saturation));\n}\n\n:where([data-xiaohei-workspace-close]) {\n -webkit-appearance: none;\n appearance: none;\n display: grid;\n place-items: center;\n box-sizing: border-box;\n flex: none;\n width: 30px;\n height: 30px;\n margin: 0;\n padding: 0;\n border: 1px solid transparent;\n border-radius: var(--xiaohei-radius-small);\n color: var(--dsw-alias-label-secondary);\n background: transparent;\n font: inherit;\n line-height: 1;\n text-align: center;\n -webkit-tap-highlight-color: transparent;\n cursor: pointer;\n transition:\n color var(--xiaohei-motion-fast) ease,\n background 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:where([data-xiaohei-workspace-close]) > svg {\n display: block;\n flex: none;\n pointer-events: none;\n}\n\n:where([data-xiaohei-workspace-close]):hover {\n border-color: var(--xiaohei-workspace-control-edge);\n color: var(--dsw-alias-label-primary);\n background: var(--xiaohei-plugin-control-fill);\n}\n\n:where([data-xiaohei-workspace-close]):active {\n transform: scale(.96);\n}\n\n:where([data-xiaohei-workspace-close]):focus-visible {\n outline: 2px solid var(--xiaohei-spirit);\n outline-offset: 2px;\n}\n\n:where([data-xiaohei-frame='module'], [data-xiaohei-frame='compact']) {\n position: relative;\n box-sizing: border-box;\n border: 1px solid var(--xiaohei-frame-line);\n color: var(--dsw-alias-label-primary);\n background:\n linear-gradient(var(--xiaohei-frame-line-strong), var(--xiaohei-frame-line-strong)) 12px 0 / 28px 1px no-repeat,\n linear-gradient(var(--xiaohei-frame-line), var(--xiaohei-frame-line)) 0 12px / 1px 22px no-repeat,\n linear-gradient(var(--xiaohei-frame-line), var(--xiaohei-frame-line)) 100% calc(100% - 12px) / 1px 22px no-repeat,\n var(--xiaohei-frame-fill);\n box-shadow:\n inset 0 0 0 1px var(--xiaohei-frame-inner),\n 0 12px 30px var(--xiaohei-shadow);\n}\n\n:where([data-xiaohei-frame='module']) {\n border-radius: var(--xiaohei-radius-panel);\n}\n\n:where([data-xiaohei-frame='compact']) {\n border-radius: var(--xiaohei-radius-control);\n}\n\n:where([data-xiaohei-frame-header]) {\n min-height: 38px;\n border-bottom: 1px solid var(--xiaohei-frame-line);\n}\n\n:where([data-xiaohei-frame-actions]) {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n:where([data-xiaohei-module-kind]) {\n --xiaohei-module-accent: var(--xiaohei-spirit);\n}\n\n@media (forced-colors: active) {\n :where([data-xiaohei-frame], [data-xiaohei-surface='plugin-workspace']) {\n border-color: currentColor;\n background: Canvas;\n -webkit-backdrop-filter: none;\n backdrop-filter: none;\n box-shadow: none;\n }\n\n}\n\n@media (max-width: 700px) {\n :where([data-xiaohei-surface='plugin-workspace']) {\n --xiaohei-plugin-surface-blur: 22px;\n }\n}\n\n@media (prefers-reduced-transparency: reduce) {\n :where([data-xiaohei-surface='plugin-workspace']) {\n background-color: var(--xiaohei-surface-raised) !important;\n -webkit-backdrop-filter: none;\n backdrop-filter: none;\n }\n}\n\n@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {\n :where([data-xiaohei-surface='plugin-workspace']) {\n background-color: var(--xiaohei-surface-raised) !important;\n }\n}\n";
6
- //# sourceMappingURL=frames.d.ts.map
@@ -1,134 +0,0 @@
1
- /**
2
- * Public frame contract for first-party chrome and future Xiaohei-aware tools.
3
- * Feature plugins opt in with data attributes; this layer never guesses their DOM.
4
- */
5
- export const XIAOHEI_FRAME_SYSTEM_CSS = `
6
- :where([data-xiaohei-surface='plugin-workspace']) {
7
- isolation: isolate;
8
- background-color: var(--xiaohei-plugin-workspace-fill) !important;
9
- -webkit-backdrop-filter:
10
- blur(var(--xiaohei-plugin-surface-blur))
11
- saturate(var(--xiaohei-plugin-surface-saturation));
12
- backdrop-filter:
13
- blur(var(--xiaohei-plugin-surface-blur))
14
- saturate(var(--xiaohei-plugin-surface-saturation));
15
- }
16
-
17
- :where([data-xiaohei-workspace-close]) {
18
- -webkit-appearance: none;
19
- appearance: none;
20
- display: grid;
21
- place-items: center;
22
- box-sizing: border-box;
23
- flex: none;
24
- width: 30px;
25
- height: 30px;
26
- margin: 0;
27
- padding: 0;
28
- border: 1px solid transparent;
29
- border-radius: var(--xiaohei-radius-small);
30
- color: var(--dsw-alias-label-secondary);
31
- background: transparent;
32
- font: inherit;
33
- line-height: 1;
34
- text-align: center;
35
- -webkit-tap-highlight-color: transparent;
36
- cursor: pointer;
37
- transition:
38
- color var(--xiaohei-motion-fast) ease,
39
- background var(--xiaohei-motion-fast) ease,
40
- border-color var(--xiaohei-motion-fast) ease,
41
- transform var(--xiaohei-motion-fast) var(--xiaohei-motion-curve);
42
- }
43
-
44
- :where([data-xiaohei-workspace-close]) > svg {
45
- display: block;
46
- flex: none;
47
- pointer-events: none;
48
- }
49
-
50
- :where([data-xiaohei-workspace-close]):hover {
51
- border-color: var(--xiaohei-workspace-control-edge);
52
- color: var(--dsw-alias-label-primary);
53
- background: var(--xiaohei-plugin-control-fill);
54
- }
55
-
56
- :where([data-xiaohei-workspace-close]):active {
57
- transform: scale(.96);
58
- }
59
-
60
- :where([data-xiaohei-workspace-close]):focus-visible {
61
- outline: 2px solid var(--xiaohei-spirit);
62
- outline-offset: 2px;
63
- }
64
-
65
- :where([data-xiaohei-frame='module'], [data-xiaohei-frame='compact']) {
66
- position: relative;
67
- box-sizing: border-box;
68
- border: 1px solid var(--xiaohei-frame-line);
69
- color: var(--dsw-alias-label-primary);
70
- background:
71
- linear-gradient(var(--xiaohei-frame-line-strong), var(--xiaohei-frame-line-strong)) 12px 0 / 28px 1px no-repeat,
72
- linear-gradient(var(--xiaohei-frame-line), var(--xiaohei-frame-line)) 0 12px / 1px 22px no-repeat,
73
- linear-gradient(var(--xiaohei-frame-line), var(--xiaohei-frame-line)) 100% calc(100% - 12px) / 1px 22px no-repeat,
74
- var(--xiaohei-frame-fill);
75
- box-shadow:
76
- inset 0 0 0 1px var(--xiaohei-frame-inner),
77
- 0 12px 30px var(--xiaohei-shadow);
78
- }
79
-
80
- :where([data-xiaohei-frame='module']) {
81
- border-radius: var(--xiaohei-radius-panel);
82
- }
83
-
84
- :where([data-xiaohei-frame='compact']) {
85
- border-radius: var(--xiaohei-radius-control);
86
- }
87
-
88
- :where([data-xiaohei-frame-header]) {
89
- min-height: 38px;
90
- border-bottom: 1px solid var(--xiaohei-frame-line);
91
- }
92
-
93
- :where([data-xiaohei-frame-actions]) {
94
- display: flex;
95
- align-items: center;
96
- gap: 4px;
97
- }
98
-
99
- :where([data-xiaohei-module-kind]) {
100
- --xiaohei-module-accent: var(--xiaohei-spirit);
101
- }
102
-
103
- @media (forced-colors: active) {
104
- :where([data-xiaohei-frame], [data-xiaohei-surface='plugin-workspace']) {
105
- border-color: currentColor;
106
- background: Canvas;
107
- -webkit-backdrop-filter: none;
108
- backdrop-filter: none;
109
- box-shadow: none;
110
- }
111
-
112
- }
113
-
114
- @media (max-width: 700px) {
115
- :where([data-xiaohei-surface='plugin-workspace']) {
116
- --xiaohei-plugin-surface-blur: 22px;
117
- }
118
- }
119
-
120
- @media (prefers-reduced-transparency: reduce) {
121
- :where([data-xiaohei-surface='plugin-workspace']) {
122
- background-color: var(--xiaohei-surface-raised) !important;
123
- -webkit-backdrop-filter: none;
124
- backdrop-filter: none;
125
- }
126
- }
127
-
128
- @supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
129
- :where([data-xiaohei-surface='plugin-workspace']) {
130
- background-color: var(--xiaohei-surface-raised) !important;
131
- }
132
- }
133
- `;
134
- //# sourceMappingURL=frames.js.map
@@ -1,3 +0,0 @@
1
- /** Visual geometry for Xiaohei's idle gaze. Behavior lives in ../gaze.ts. */
2
- export declare const XIAOHEI_GAZE_CSS = "\n.xiaohei-scene__mascot-blink {\n z-index: 3;\n}\n\n.xiaohei-gaze {\n --xiaohei-gaze-x: 0px;\n --xiaohei-gaze-y: 0px;\n position: absolute;\n inset: 0;\n z-index: 2;\n display: block;\n overflow: hidden;\n opacity: 0;\n pointer-events: none;\n transition: opacity 80ms ease-out;\n}\n\nhtml[data-xiaohei-state='idle'] .xiaohei-gaze {\n opacity: 1;\n}\n\n/* The complete blink frame owns eye occlusion; a second visibility clock can expose pupil-free frames. */\n\n.xiaohei-gaze__base {\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.32) contrast(1.02) saturate(1.04);\n}\n\nhtml[data-xiaohei-appearance='light'] .xiaohei-gaze__base {\n filter: brightness(1.02) contrast(1.07) saturate(0.9);\n}\n\n.xiaohei-gaze__eye {\n position: absolute;\n display: block;\n overflow: hidden;\n border-radius: 50%;\n pointer-events: none;\n}\n\n.xiaohei-gaze__eye--left {\n left: 22.65%;\n top: 34.35%;\n width: 9%;\n height: 13.7%;\n}\n\n.xiaohei-gaze__eye--right {\n left: 38.25%;\n top: 35.15%;\n width: 13.3%;\n height: 14.5%;\n}\n\n.xiaohei-gaze__pupil {\n position: absolute;\n display: block;\n border-radius: 48% 52% 49% 51%;\n background:\n radial-gradient(circle at 39% 27%, #F3F7F3 0 12%, transparent 15%),\n #020505;\n transform: translate3d(\n calc(-50% + var(--xiaohei-gaze-x)),\n calc(-50% + var(--xiaohei-gaze-y)),\n 0\n );\n transform-origin: 50% 50%;\n}\n\n.xiaohei-gaze[data-moving='true'] .xiaohei-gaze__pupil {\n will-change: transform;\n}\n\n.xiaohei-gaze__pupil--left {\n left: 50%;\n top: 49%;\n width: 57.25%;\n height: 67.5%;\n}\n\n.xiaohei-gaze__pupil--right {\n left: 33.5%;\n top: 48.7%;\n width: 40.25%;\n height: 65.2%;\n}\n\n@media (prefers-reduced-motion: reduce), (hover: none) and (pointer: coarse) {\n .xiaohei-gaze {\n display: none;\n }\n}\n";
3
- //# sourceMappingURL=gaze.d.ts.map