@lemoncat7/dsh-theme-xiaohei 0.3.0-alpha.23 → 0.3.2

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 (222) hide show
  1. package/README.md +39 -17
  2. package/THIRD_PARTY_NOTICES.md +41 -0
  3. package/lib/appearance.js +26 -10
  4. package/lib/blink.js +3 -3
  5. package/lib/bloub-heixiu/ambient.d.ts +3 -0
  6. package/lib/bloub-heixiu/ambient.js +12 -0
  7. package/lib/bloub-heixiu/character.d.ts +33 -0
  8. package/lib/bloub-heixiu/character.js +124 -0
  9. package/lib/bloub-heixiu/effects.d.ts +4 -0
  10. package/lib/bloub-heixiu/effects.js +91 -0
  11. package/lib/bloub-heixiu/flight.d.ts +15 -0
  12. package/lib/bloub-heixiu/flight.js +66 -0
  13. package/lib/bloub-heixiu/follow.d.ts +13 -0
  14. package/lib/bloub-heixiu/follow.js +23 -0
  15. package/lib/bloub-heixiu/layout.d.ts +18 -0
  16. package/lib/bloub-heixiu/layout.js +12 -0
  17. package/lib/bloub-heixiu/renderer.d.ts +16 -0
  18. package/lib/bloub-heixiu/renderer.js +94 -0
  19. package/lib/bloub-heixiu/runtime.d.ts +6 -0
  20. package/lib/bloub-heixiu/runtime.js +395 -0
  21. package/lib/bloub-heixiu/signals.d.ts +17 -0
  22. package/lib/bloub-heixiu/signals.js +53 -0
  23. package/lib/bloub-heixiu/styles.d.ts +2 -0
  24. package/lib/bloub-heixiu/styles.js +98 -0
  25. package/lib/chrome/accessibility.d.ts +1 -1
  26. package/lib/chrome/accessibility.js +5 -13
  27. package/lib/chrome/composer-avatar.d.ts +10 -0
  28. package/lib/chrome/composer-avatar.js +599 -0
  29. package/lib/chrome/composer-send-heixiu.d.ts +3 -0
  30. package/lib/chrome/composer-send-heixiu.js +143 -0
  31. package/lib/chrome/composer.d.ts +2 -2
  32. package/lib/chrome/composer.js +84 -95
  33. package/lib/chrome/controls.d.ts +8 -0
  34. package/lib/chrome/controls.js +348 -0
  35. package/lib/chrome/conversation-messages.d.ts +1 -1
  36. package/lib/chrome/conversation-messages.js +207 -9
  37. package/lib/chrome/conversation.d.ts +1 -1
  38. package/lib/chrome/conversation.js +6 -0
  39. package/lib/chrome/identity.js +4 -18
  40. package/lib/chrome/portal.d.ts +1 -1
  41. package/lib/chrome/portal.js +1 -1
  42. package/lib/chrome/sidebar.d.ts +1 -1
  43. package/lib/chrome/sidebar.js +134 -153
  44. package/lib/chrome/tokens.d.ts +1 -1
  45. package/lib/chrome/tokens.js +121 -68
  46. package/lib/chrome/workspace.d.ts +2 -2
  47. package/lib/chrome/workspace.js +35 -254
  48. package/lib/chrome.js +4 -0
  49. package/lib/client.d.ts +5 -12
  50. package/lib/client.js +6262 -4455
  51. package/lib/composer-avatar.d.ts +18 -0
  52. package/lib/composer-avatar.js +441 -0
  53. package/lib/composer-send-heixiu.d.ts +8 -0
  54. package/lib/composer-send-heixiu.js +133 -0
  55. package/lib/gaze.js +3 -3
  56. package/lib/generated-backgrounds.d.ts +14 -0
  57. package/lib/generated-backgrounds.js +14 -0
  58. package/lib/generated-character-motion.d.ts +4 -0
  59. package/lib/generated-character-motion.js +2 -0
  60. package/lib/generated-identity.d.ts +1 -0
  61. package/lib/generated-identity.js +1 -0
  62. package/lib/generated-keyart.d.ts +18 -3
  63. package/lib/generated-keyart.js +18 -3
  64. package/lib/host-contract.d.ts +9 -0
  65. package/lib/host-contract.js +13 -0
  66. package/lib/host-dom.d.ts +11 -0
  67. package/lib/host-dom.js +60 -0
  68. package/lib/loading-heixiu.js +3 -3
  69. package/lib/metallic-brand-mark.d.ts +10 -0
  70. package/lib/metallic-brand-mark.js +323 -0
  71. package/lib/plugin.d.ts +1 -1
  72. package/lib/plugin.js +31 -16
  73. package/lib/portal.js +11 -10
  74. package/lib/reactions.js +3 -3
  75. package/lib/scene/avatar-model.d.ts +6 -0
  76. package/lib/scene/avatar-model.js +646 -0
  77. package/lib/scene/avatar-motion.d.ts +3 -0
  78. package/lib/scene/avatar-motion.js +799 -0
  79. package/lib/scene/character-idle.d.ts +17 -0
  80. package/lib/scene/character-idle.js +65 -0
  81. package/lib/scene/character-layout.d.ts +24 -0
  82. package/lib/scene/character-layout.js +51 -0
  83. package/lib/scene/character-motion-clock.d.ts +18 -0
  84. package/lib/scene/character-motion-clock.js +57 -0
  85. package/lib/scene/character-motion-types.d.ts +12 -0
  86. package/lib/scene/character-motion-types.js +2 -0
  87. package/lib/scene/character-motion.d.ts +6 -0
  88. package/lib/scene/character-motion.js +126 -0
  89. package/lib/scene/character-poses.d.ts +26 -0
  90. package/lib/scene/character-poses.js +11 -0
  91. package/lib/scene/character-rig-renderer.d.ts +4 -0
  92. package/lib/scene/character-rig-renderer.js +85 -0
  93. package/lib/scene/character-rig.d.ts +20 -0
  94. package/lib/scene/character-rig.js +53 -0
  95. package/lib/scene/heixiu-feedback.d.ts +1 -1
  96. package/lib/scene/heixiu-feedback.js +0 -17
  97. package/lib/scene/pointer-bridge.d.ts +21 -0
  98. package/lib/scene/pointer-bridge.js +155 -0
  99. package/lib/scene/runtime.d.ts +12 -0
  100. package/lib/scene/runtime.js +87 -0
  101. package/lib/scene/styles.d.ts +7 -0
  102. package/lib/scene/styles.js +75 -0
  103. package/lib/scene/sylva-performance.d.ts +11 -0
  104. package/lib/scene/sylva-performance.js +58 -0
  105. package/lib/scene/wallpaper-character-styles.d.ts +3 -0
  106. package/lib/scene/wallpaper-character-styles.js +53 -0
  107. package/lib/scene/wallpaper-character.d.ts +4 -0
  108. package/lib/scene/wallpaper-character.js +213 -0
  109. package/lib/scene.d.ts +7 -13
  110. package/lib/scene.js +7 -1023
  111. package/lib/sidebar-glass.js +99 -36
  112. package/lib/sidebar-heixiu-roaming.js +5 -5
  113. package/lib/sidebar-reveal.d.ts +8 -0
  114. package/lib/sidebar-reveal.js +51 -0
  115. package/lib/state.d.ts +14 -2
  116. package/lib/state.js +12 -4
  117. package/lib/theme.js +2 -2
  118. package/lib/vendor/bloub/decor.d.ts +114 -0
  119. package/lib/vendor/bloub/decor.js +198 -0
  120. package/lib/vendor/bloub/engine.d.ts +213 -0
  121. package/lib/vendor/bloub/engine.js +452 -0
  122. package/lib/vendor/bloub/expressions.d.ts +35 -0
  123. package/lib/vendor/bloub/expressions.js +143 -0
  124. package/lib/vendor/bloub/eyefit.d.ts +75 -0
  125. package/lib/vendor/bloub/eyefit.js +393 -0
  126. package/lib/vendor/bloub/face.d.ts +63 -0
  127. package/lib/vendor/bloub/face.js +106 -0
  128. package/lib/vendor/bloub/math.d.ts +22 -0
  129. package/lib/vendor/bloub/math.js +36 -0
  130. package/lib/vendor/bloub/profiles.d.ts +8 -0
  131. package/lib/vendor/bloub/profiles.js +20 -0
  132. package/lib/vendor/bloub/repere.d.ts +30 -0
  133. package/lib/vendor/bloub/repere.js +32 -0
  134. package/lib/vendor/bloub/shape.d.ts +80 -0
  135. package/lib/vendor/bloub/shape.js +268 -0
  136. package/lib/vendor/bloub/skins.d.ts +36 -0
  137. package/lib/vendor/bloub/skins.js +74 -0
  138. package/lib/vendor/bloub/states.d.ts +87 -0
  139. package/lib/vendor/bloub/states.js +468 -0
  140. package/package.json +23 -6
  141. package/lib/appearance.d.ts.map +0 -1
  142. package/lib/appearance.js.map +0 -1
  143. package/lib/blink.d.ts.map +0 -1
  144. package/lib/blink.js.map +0 -1
  145. package/lib/boot-appearance.d.ts.map +0 -1
  146. package/lib/boot-appearance.js.map +0 -1
  147. package/lib/boot-loader.d.ts.map +0 -1
  148. package/lib/boot-loader.js.map +0 -1
  149. package/lib/chrome/accessibility.d.ts.map +0 -1
  150. package/lib/chrome/accessibility.js.map +0 -1
  151. package/lib/chrome/blink.d.ts.map +0 -1
  152. package/lib/chrome/blink.js.map +0 -1
  153. package/lib/chrome/composer.d.ts.map +0 -1
  154. package/lib/chrome/composer.js.map +0 -1
  155. package/lib/chrome/conversation-messages.d.ts.map +0 -1
  156. package/lib/chrome/conversation-messages.js.map +0 -1
  157. package/lib/chrome/conversation.d.ts.map +0 -1
  158. package/lib/chrome/conversation.js.map +0 -1
  159. package/lib/chrome/frames.d.ts.map +0 -1
  160. package/lib/chrome/frames.js.map +0 -1
  161. package/lib/chrome/gaze.d.ts.map +0 -1
  162. package/lib/chrome/gaze.js.map +0 -1
  163. package/lib/chrome/identity.d.ts.map +0 -1
  164. package/lib/chrome/identity.js.map +0 -1
  165. package/lib/chrome/overlays.d.ts.map +0 -1
  166. package/lib/chrome/overlays.js.map +0 -1
  167. package/lib/chrome/portal.d.ts.map +0 -1
  168. package/lib/chrome/portal.js.map +0 -1
  169. package/lib/chrome/reactions.d.ts.map +0 -1
  170. package/lib/chrome/reactions.js.map +0 -1
  171. package/lib/chrome/sidebar.d.ts.map +0 -1
  172. package/lib/chrome/sidebar.js.map +0 -1
  173. package/lib/chrome/tokens.d.ts.map +0 -1
  174. package/lib/chrome/tokens.js.map +0 -1
  175. package/lib/chrome/workspace.d.ts.map +0 -1
  176. package/lib/chrome/workspace.js.map +0 -1
  177. package/lib/chrome.d.ts.map +0 -1
  178. package/lib/chrome.js.map +0 -1
  179. package/lib/client.d.ts.map +0 -1
  180. package/lib/client.js.map +0 -7
  181. package/lib/gaze.d.ts.map +0 -1
  182. package/lib/gaze.js.map +0 -1
  183. package/lib/generated-identity.d.ts.map +0 -1
  184. package/lib/generated-identity.js.map +0 -1
  185. package/lib/generated-keyart.d.ts.map +0 -1
  186. package/lib/generated-keyart.js.map +0 -1
  187. package/lib/generated-loading-assets.d.ts.map +0 -1
  188. package/lib/generated-loading-assets.js.map +0 -1
  189. package/lib/generated-sidebar-assets.d.ts +0 -4
  190. package/lib/generated-sidebar-assets.d.ts.map +0 -1
  191. package/lib/generated-sidebar-assets.js +0 -4
  192. package/lib/generated-sidebar-assets.js.map +0 -1
  193. package/lib/heixiu-interactions.d.ts.map +0 -1
  194. package/lib/heixiu-interactions.js.map +0 -1
  195. package/lib/index.d.ts.map +0 -1
  196. package/lib/index.js.map +0 -1
  197. package/lib/loading-heixiu.d.ts.map +0 -1
  198. package/lib/loading-heixiu.js.map +0 -1
  199. package/lib/plugin.d.ts.map +0 -1
  200. package/lib/plugin.js.map +0 -1
  201. package/lib/portal.d.ts.map +0 -1
  202. package/lib/portal.js.map +0 -1
  203. package/lib/reactions.d.ts.map +0 -1
  204. package/lib/reactions.js.map +0 -1
  205. package/lib/scene/heixiu-feedback.d.ts.map +0 -1
  206. package/lib/scene/heixiu-feedback.js.map +0 -1
  207. package/lib/scene/heixiu-interactions.d.ts.map +0 -1
  208. package/lib/scene/heixiu-interactions.js.map +0 -1
  209. package/lib/scene/state-transitions.d.ts.map +0 -1
  210. package/lib/scene/state-transitions.js.map +0 -1
  211. package/lib/scene.d.ts.map +0 -1
  212. package/lib/scene.js.map +0 -1
  213. package/lib/sidebar-glass.d.ts.map +0 -1
  214. package/lib/sidebar-glass.js.map +0 -1
  215. package/lib/sidebar-heixiu-escape.d.ts.map +0 -1
  216. package/lib/sidebar-heixiu-escape.js.map +0 -1
  217. package/lib/sidebar-heixiu-roaming.d.ts.map +0 -1
  218. package/lib/sidebar-heixiu-roaming.js.map +0 -1
  219. package/lib/state.d.ts.map +0 -1
  220. package/lib/state.js.map +0 -1
  221. package/lib/theme.d.ts.map +0 -1
  222. package/lib/theme.js.map +0 -1
@@ -15,41 +15,28 @@ html {
15
15
  --xiaohei-sidebar-emphasis: #E1E6E7;
16
16
  --xiaohei-sidebar-icon: rgb(220 227 229 / 70%);
17
17
  --xiaohei-sidebar-hover: rgb(231 238 240 / 6.5%);
18
- --xiaohei-sidebar-glass-fill: rgb(21 25 27 / 62%);
19
- --xiaohei-sidebar-glass-solid: #1B2325;
20
- --xiaohei-sidebar-glass-edge: rgb(238 247 249 / 18%);
21
- --xiaohei-sidebar-glass-outline: rgb(0 0 0 / 30%);
22
- --xiaohei-sidebar-glass-inner-edge: rgb(0 0 0 / 18%);
23
- --xiaohei-sidebar-glass-highlight: rgb(255 255 255 / 16%);
24
- --xiaohei-sidebar-glass-refraction: rgb(255 255 255 / 9%);
25
- --xiaohei-sidebar-glass-specular: rgb(255 255 255 / 13%);
26
- --xiaohei-sidebar-glass-saturation: 90%;
27
- --xiaohei-sidebar-glass-brightness: 92%;
28
- --xiaohei-sidebar-atmosphere-opacity: 0.36;
29
- --xiaohei-sidebar-atmosphere-solid-opacity: 0.22;
30
- --xiaohei-sidebar-control: rgb(231 238 240 / 4.5%);
18
+ --xiaohei-sidebar-glass-fill: rgb(18 22 25 / 48%);
19
+ --xiaohei-sidebar-glass-solid: #1B2023;
20
+ --xiaohei-sidebar-glass-edge: rgb(255 255 255 / 8%);
21
+ --xiaohei-sidebar-glass-highlight: rgb(255 255 255 / 13%);
22
+ --xiaohei-sidebar-glass-refraction: rgb(255 255 255 / 18%);
23
+ --xiaohei-sidebar-glass-saturation: 102%;
24
+ --xiaohei-sidebar-glass-blur: 18px;
25
+ --xiaohei-sidebar-glass-radius: 18px;
26
+ --xiaohei-sidebar-control: rgb(231 238 240 / 7%);
31
27
  --xiaohei-sidebar-control-edge: rgb(231 238 240 / 8%);
32
28
  --xiaohei-sidebar-control-edge-hover: rgb(231 238 240 / 13%);
33
29
  --xiaohei-sidebar-control-highlight: rgb(255 255 255 / 5%);
34
- --xiaohei-sidebar-brush-ink: rgb(231 238 240 / 8%);
35
- --xiaohei-sidebar-brush-ink-hover: rgb(231 238 240 / 13%);
36
- --xiaohei-sidebar-shadow: rgb(0 0 0 / 24%);
30
+ --xiaohei-sidebar-shadow: rgb(0 0 0 / 30%);
31
+ --xiaohei-sidebar-shadow-soft: rgb(0 0 0 / 16%);
37
32
  --xiaohei-workspace-label: rgb(220 227 229 / 78%);
38
- --xiaohei-space-frame-edge: rgb(231 238 240 / 8%);
39
- --xiaohei-space-frame-highlight: rgb(255 255 255 / 4%);
40
33
  --xiaohei-workspace-control-edge: rgb(231 238 240 / 8%);
41
- --xiaohei-workspace-path: rgb(200 211 213 / 8%);
42
- --xiaohei-workspace-path-active: rgb(105 182 186 / 20%);
43
- --xiaohei-workspace-folder-open: rgb(105 182 186 / 7%);
44
- --xiaohei-workspace-folder-edge: rgb(105 182 186 / 7%);
45
- --xiaohei-workspace-folder-shadow: rgb(0 0 0 / 2.4%);
46
- --xiaohei-workspace-row-hover: rgb(231 238 240 / 5.5%);
47
- --xiaohei-workspace-row-active: rgb(231 238 240 / 7.5%);
48
- --xiaohei-workspace-row-active-edge: rgb(231 238 240 / 5%);
49
- --xiaohei-workspace-action-hover: rgb(231 238 240 / 7%);
50
- --xiaohei-workspace-active-line: #69B6BA;
51
- --xiaohei-workspace-active-line-glow: rgb(105 182 186 / 20%);
52
- --xiaohei-workspace-rift-glow: rgb(105 182 186 / 12%);
34
+ --xiaohei-workspace-folder-open: rgb(231 238 240 / 3%);
35
+ --xiaohei-workspace-row-hover: rgb(231 238 240 / 4%);
36
+ --xiaohei-workspace-row-active: rgb(231 238 240 / 12%);
37
+ --xiaohei-workspace-row-active-hover: rgb(231 238 240 / 16%);
38
+ --xiaohei-workspace-row-active-edge: rgb(231 238 240 / 10%);
39
+ --xiaohei-workspace-action-hover: rgb(231 238 240 / 6%);
53
40
  --xiaohei-frame-line: rgb(138 206 208 / 21%);
54
41
  --xiaohei-frame-line-strong: rgb(151 216 218 / 40%);
55
42
  --xiaohei-frame-fill: rgb(15 21 23 / 54%);
@@ -61,13 +48,53 @@ html {
61
48
  --xiaohei-layer-panel: rgb(20 27 29 / 76%);
62
49
  --xiaohei-layer-panel-edge: rgb(124 189 192 / 12%);
63
50
  --xiaohei-layer-panel-shadow: rgb(0 5 8 / 26%);
64
- --xiaohei-conversation-text: #E0E6E4;
65
- --xiaohei-conversation-meta: rgb(195 205 204 / 58%);
66
- --xiaohei-conversation-user: rgb(117 158 154 / 13%);
67
- --xiaohei-conversation-user-edge: rgb(143 177 173 / 12%);
51
+ --xiaohei-conversation-text: #E5E7E8;
52
+ --xiaohei-conversation-meta: rgb(199 203 206 / 60%);
53
+ --xiaohei-conversation-assistant:
54
+ linear-gradient(
55
+ 115deg,
56
+ rgb(86 91 95 / 30%) 0%,
57
+ rgb(50 54 57 / 22%) 46%,
58
+ rgb(27 30 32 / 30%) 100%
59
+ ),
60
+ rgb(20 23 25 / 68%);
61
+ --xiaohei-conversation-user:
62
+ linear-gradient(
63
+ 118deg,
64
+ rgb(105 110 114 / 27%) 0%,
65
+ rgb(61 65 68 / 23%) 52%,
66
+ rgb(34 37 40 / 31%) 100%
67
+ ),
68
+ rgb(27 30 33 / 72%);
69
+ --xiaohei-conversation-meta-surface:
70
+ linear-gradient(112deg, rgb(91 96 100 / 17%), rgb(42 46 49 / 14%)),
71
+ rgb(20 23 25 / 58%);
72
+ --xiaohei-conversation-meta-edge: rgb(221 225 227 / 12%);
73
+ --xiaohei-conversation-edge: rgb(229 232 234 / 17%);
74
+ --xiaohei-conversation-highlight: rgb(255 255 255 / 12%);
75
+ --xiaohei-conversation-shadow: rgb(0 0 0 / 28%);
76
+ --xiaohei-conversation-blur: 18px;
68
77
  --xiaohei-layer-content: rgb(27 35 37 / 92%);
69
78
  --xiaohei-layer-content-edge: rgb(124 189 192 / 20%);
70
79
  --xiaohei-layer-content-highlight: rgb(239 255 255 / 4%);
80
+ --xiaohei-composer-fill: rgb(17 23 25 / 78%);
81
+ --xiaohei-composer-solid: #1B2325;
82
+ --xiaohei-composer-edge: rgb(232 240 242 / 13%);
83
+ --xiaohei-composer-edge-focus: rgb(232 240 242 / 26%);
84
+ --xiaohei-composer-highlight: rgb(255 255 255 / 7%);
85
+ --xiaohei-composer-highlight-strong: rgb(255 255 255 / 10%);
86
+ --xiaohei-composer-lower-edge: rgb(0 0 0 / 20%);
87
+ --xiaohei-composer-shadow: rgb(0 5 7 / 24%);
88
+ --xiaohei-composer-focus: rgb(232 240 242 / 7%);
89
+ --xiaohei-composer-tail: rgb(181 211 212 / 32%);
90
+ --xiaohei-composer-control-edge: rgb(231 238 240 / 10%);
91
+ --xiaohei-composer-control-hover: rgb(231 238 240 / 6%);
92
+ --xiaohei-composer-disabled: rgb(34 42 44 / 66%);
93
+ --xiaohei-composer-primary-icon: #EDF4F4;
94
+ --xiaohei-composer-heixiu-edge: rgb(235 243 244 / 34%);
95
+ --xiaohei-composer-heixiu-shadow: rgb(0 3 4 / 52%);
96
+ --xiaohei-composer-blur: 22px;
97
+ --xiaohei-composer-saturation: 106%;
71
98
  --xiaohei-shadow: rgb(0 5 7 / 30%);
72
99
  --xiaohei-focus-shadow: rgb(105 182 186 / 14%);
73
100
  --xiaohei-overlay-fill: rgb(22 29 31 / 88%);
@@ -102,41 +129,27 @@ html[data-xiaohei-appearance='light'] {
102
129
  --xiaohei-sidebar-emphasis: #3F454C;
103
130
  --xiaohei-sidebar-icon: rgb(48 54 61 / 68%);
104
131
  --xiaohei-sidebar-hover: rgb(48 54 61 / 6%);
105
- --xiaohei-sidebar-glass-fill: rgb(215 220 223 / 62%);
106
- --xiaohei-sidebar-glass-solid: #E8EDEF;
107
- --xiaohei-sidebar-glass-edge: rgb(255 255 255 / 88%);
108
- --xiaohei-sidebar-glass-outline: rgb(42 50 56 / 14%);
109
- --xiaohei-sidebar-glass-inner-edge: rgb(43 51 56 / 11%);
110
- --xiaohei-sidebar-glass-highlight: rgb(255 255 255 / 88%);
111
- --xiaohei-sidebar-glass-refraction: rgb(255 255 255 / 42%);
112
- --xiaohei-sidebar-glass-specular: rgb(255 255 255 / 72%);
113
- --xiaohei-sidebar-glass-saturation: 76%;
114
- --xiaohei-sidebar-glass-brightness: 104%;
115
- --xiaohei-sidebar-atmosphere-opacity: 0.28;
116
- --xiaohei-sidebar-atmosphere-solid-opacity: 0.16;
117
- --xiaohei-sidebar-control: rgb(255 255 255 / 26%);
132
+ --xiaohei-sidebar-glass-fill: rgb(247 245 242 / 58%);
133
+ --xiaohei-sidebar-glass-solid: #EDF1F3;
134
+ --xiaohei-sidebar-glass-edge: rgb(37 45 51 / 9%);
135
+ --xiaohei-sidebar-glass-highlight: rgb(255 255 255 / 64%);
136
+ --xiaohei-sidebar-glass-refraction: rgb(255 255 255 / 18%);
137
+ --xiaohei-sidebar-glass-saturation: 102%;
138
+ --xiaohei-sidebar-glass-blur: 18px;
139
+ --xiaohei-sidebar-control: rgb(255 255 255 / 30%);
118
140
  --xiaohei-sidebar-control-edge: rgb(46 51 58 / 8%);
119
141
  --xiaohei-sidebar-control-edge-hover: rgb(46 51 58 / 13%);
120
142
  --xiaohei-sidebar-control-highlight: rgb(255 255 255 / 48%);
121
- --xiaohei-sidebar-brush-ink: rgb(38 47 49 / 9%);
122
- --xiaohei-sidebar-brush-ink-hover: rgb(38 47 49 / 14%);
123
- --xiaohei-sidebar-shadow: rgb(23 30 34 / 14%);
143
+ --xiaohei-sidebar-shadow: rgb(28 37 43 / 12%);
144
+ --xiaohei-sidebar-shadow-soft: rgb(28 37 43 / 6%);
124
145
  --xiaohei-workspace-label: rgb(48 54 61 / 76%);
125
- --xiaohei-space-frame-edge: rgb(46 51 58 / 8%);
126
- --xiaohei-space-frame-highlight: rgb(255 255 255 / 32%);
127
146
  --xiaohei-workspace-control-edge: rgb(46 51 58 / 9%);
128
- --xiaohei-workspace-path: rgb(45 56 57 / 9%);
129
- --xiaohei-workspace-path-active: rgb(84 125 120 / 22%);
130
- --xiaohei-workspace-folder-open: rgb(84 125 120 / 6.5%);
131
- --xiaohei-workspace-folder-edge: rgb(61 99 84 / 5.5%);
132
- --xiaohei-workspace-folder-shadow: rgb(30 50 42 / 1.8%);
133
- --xiaohei-workspace-row-hover: rgb(48 54 61 / 5%);
134
- --xiaohei-workspace-row-active: rgb(48 54 61 / 7.5%);
135
- --xiaohei-workspace-row-active-edge: rgb(46 51 58 / 5%);
136
- --xiaohei-workspace-action-hover: rgb(48 54 61 / 7%);
137
- --xiaohei-workspace-active-line: #547D78;
138
- --xiaohei-workspace-active-line-glow: rgb(84 125 120 / 20%);
139
- --xiaohei-workspace-rift-glow: rgb(84 125 120 / 8%);
147
+ --xiaohei-workspace-folder-open: rgb(48 54 61 / 3%);
148
+ --xiaohei-workspace-row-hover: rgb(48 54 61 / 5.5%);
149
+ --xiaohei-workspace-row-active: rgb(48 54 61 / 10%);
150
+ --xiaohei-workspace-row-active-hover: rgb(48 54 61 / 14%);
151
+ --xiaohei-workspace-row-active-edge: rgb(46 51 58 / 8%);
152
+ --xiaohei-workspace-action-hover: rgb(255 255 255 / 10%);
140
153
  --xiaohei-frame-line: rgb(84 125 120 / 22%);
141
154
  --xiaohei-frame-line-strong: rgb(84 125 120 / 43%);
142
155
  --xiaohei-frame-fill: rgb(224 231 238 / 58%);
@@ -148,13 +161,53 @@ html[data-xiaohei-appearance='light'] {
148
161
  --xiaohei-layer-panel: rgb(226 232 239 / 78%);
149
162
  --xiaohei-layer-panel-edge: rgb(84 125 120 / 11%);
150
163
  --xiaohei-layer-panel-shadow: rgb(43 55 51 / 8%);
151
- --xiaohei-conversation-text: #303842;
152
- --xiaohei-conversation-meta: rgb(76 87 99 / 56%);
153
- --xiaohei-conversation-user: rgb(84 125 120 / 10%);
154
- --xiaohei-conversation-user-edge: rgb(84 125 120 / 10%);
164
+ --xiaohei-conversation-text: #30353A;
165
+ --xiaohei-conversation-meta: rgb(72 79 86 / 58%);
166
+ --xiaohei-conversation-assistant:
167
+ linear-gradient(
168
+ 115deg,
169
+ rgb(255 255 255 / 55%) 0%,
170
+ rgb(230 233 235 / 24%) 48%,
171
+ rgb(202 207 210 / 16%) 100%
172
+ ),
173
+ rgb(232 235 237 / 67%);
174
+ --xiaohei-conversation-user:
175
+ linear-gradient(
176
+ 118deg,
177
+ rgb(255 255 255 / 42%) 0%,
178
+ rgb(213 217 220 / 23%) 52%,
179
+ rgb(190 196 200 / 17%) 100%
180
+ ),
181
+ rgb(220 224 227 / 72%);
182
+ --xiaohei-conversation-meta-surface:
183
+ linear-gradient(112deg, rgb(255 255 255 / 34%), rgb(201 206 209 / 15%)),
184
+ rgb(224 227 229 / 58%);
185
+ --xiaohei-conversation-meta-edge: rgb(50 57 63 / 12%);
186
+ --xiaohei-conversation-edge: rgb(45 52 58 / 15%);
187
+ --xiaohei-conversation-highlight: rgb(255 255 255 / 58%);
188
+ --xiaohei-conversation-shadow: rgb(36 42 47 / 13%);
189
+ --xiaohei-conversation-blur: 18px;
155
190
  --xiaohei-layer-content: rgb(238 242 247 / 94%);
156
191
  --xiaohei-layer-content-edge: rgb(84 125 120 / 20%);
157
192
  --xiaohei-layer-content-highlight: rgb(255 255 255 / 62%);
193
+ --xiaohei-composer-fill: rgb(241 244 246 / 76%);
194
+ --xiaohei-composer-solid: #F0F3F5;
195
+ --xiaohei-composer-edge: rgb(45 53 59 / 12%);
196
+ --xiaohei-composer-edge-focus: rgb(45 53 59 / 24%);
197
+ --xiaohei-composer-highlight: rgb(255 255 255 / 72%);
198
+ --xiaohei-composer-highlight-strong: rgb(255 255 255 / 88%);
199
+ --xiaohei-composer-lower-edge: rgb(45 53 59 / 8%);
200
+ --xiaohei-composer-shadow: rgb(36 45 50 / 11%);
201
+ --xiaohei-composer-focus: rgb(45 53 59 / 6%);
202
+ --xiaohei-composer-tail: rgb(47 57 62 / 26%);
203
+ --xiaohei-composer-control-edge: rgb(46 53 59 / 10%);
204
+ --xiaohei-composer-control-hover: rgb(255 255 255 / 46%);
205
+ --xiaohei-composer-disabled: rgb(222 227 230 / 72%);
206
+ --xiaohei-composer-primary-icon: #F5F8F8;
207
+ --xiaohei-composer-heixiu-edge: rgb(255 255 255 / 24%);
208
+ --xiaohei-composer-heixiu-shadow: rgb(35 43 47 / 30%);
209
+ --xiaohei-composer-blur: 22px;
210
+ --xiaohei-composer-saturation: 104%;
158
211
  --xiaohei-shadow: rgb(43 55 51 / 11%);
159
212
  --xiaohei-focus-shadow: rgb(84 125 120 / 13%);
160
213
  --xiaohei-overlay-fill: rgb(232 237 243 / 90%);
@@ -1,3 +1,3 @@
1
- /** Visual hierarchy for DSH's native workspace tree. No behaviour is replaced. */
2
- export declare const XIAOHEI_WORKSPACE_CSS: string;
1
+ /** Native tree geometry and scroll ownership; one sidebar glass, flat rows. */
2
+ export declare const XIAOHEI_WORKSPACE_CSS = "\n#root [data-slot='sidebar.workspaces'] > div {\n min-width: 0;\n}\n\n/* The native header and independently scrolling tree own their geometry.\n * No stitched frame: scrollbar reservation must not split its right edge. */\n#root [data-slot='sidebar.workspaces'] > div > div:first-child {\n color: var(--xiaohei-workspace-label);\n background: transparent;\n box-shadow: none;\n}\n\n#root [data-slot='sidebar.workspaces'] > div > div:first-child > span:first-child {\n font-size: 0;\n font-weight: 600;\n}\n\n#root [data-slot='sidebar.workspaces'] > div > div:first-child > span:first-child::after {\n content: '\u7A7A\u95F4';\n font-size: 12px;\n letter-spacing: .01em;\n}\n\n#root [data-slot='sidebar.workspaces'] [role='treeitem'] {\n position: relative;\n box-sizing: border-box;\n border: 1px solid transparent;\n border-radius: var(--xiaohei-radius-control);\n background: transparent;\n box-shadow: none;\n font-weight: 400;\n transition:\n color var(--xiaohei-motion-fast) ease,\n border-color var(--xiaohei-motion-fast) ease,\n background-color var(--xiaohei-motion-fast) ease;\n}\n\n/* Expansion is a browsing state, not the current conversation selection. */\n#root [data-slot='sidebar.workspaces'] [role='treeitem'][aria-expanded='true'] {\n color: var(--xiaohei-sidebar-emphasis);\n background: var(--xiaohei-workspace-folder-open);\n font-weight: 500;\n}\n\n#root [data-slot='sidebar.workspaces'] [role='treeitem']:hover {\n color: var(--xiaohei-sidebar-emphasis);\n background: var(--xiaohei-workspace-row-hover);\n}\n\n#root [data-slot='sidebar.workspaces'] [role='treeitem'][aria-selected='true'] {\n color: var(--xiaohei-sidebar-emphasis);\n border-color: var(--xiaohei-workspace-row-active-edge);\n background: var(--xiaohei-workspace-row-active);\n font-weight: 600;\n}\n\n#root [data-slot='sidebar.workspaces'] [role='treeitem'][aria-selected='true']:hover {\n background: var(--xiaohei-workspace-row-active-hover);\n}\n\n/* Preserve native tooltip wrappers and indentation. Group pseudo-elements\n * belong to the host's drag/drop insertion markers, not theme decoration. */\n#root [data-slot='sidebar.workspaces'] [role='treeitem'] button,\n#root [data-slot='sidebar.workspaces'] > div > div:first-child button {\n color: var(--xiaohei-sidebar-icon);\n border-radius: var(--xiaohei-radius-small);\n}\n\n#root [data-slot='sidebar.workspaces'] [role='treeitem'] button:hover,\n#root [data-slot='sidebar.workspaces'] [role='treeitem'] button[aria-expanded='true'],\n#root [data-slot='sidebar.workspaces'] > div > div:first-child button:hover,\n#root [data-slot='sidebar.workspaces'] > div > div:first-child button[aria-expanded='true'] {\n color: var(--xiaohei-sidebar-emphasis);\n background: var(--xiaohei-workspace-action-hover);\n border-color: transparent;\n}\n\n@media (prefers-reduced-motion: reduce) {\n #root [data-slot='sidebar.workspaces'] [role='treeitem'] {\n transition: none;\n }\n}\n\n@media (forced-colors: active) {\n #root [data-slot='sidebar.workspaces'] [role='treeitem'][aria-selected='true'] {\n color: HighlightText;\n background: Highlight;\n border-color: Highlight;\n }\n}\n";
3
3
  //# sourceMappingURL=workspace.d.ts.map
@@ -1,312 +1,93 @@
1
- import { XIAOHEI_WORKSPACE_RIFT_COLOR } from '../generated-sidebar-assets.js';
2
- /** Visual hierarchy for DSH's native workspace tree. No behaviour is replaced. */
1
+ /** Native tree geometry and scroll ownership; one sidebar glass, flat rows. */
3
2
  export const XIAOHEI_WORKSPACE_CSS = `
4
- /* Keep the official workspace root in charge of scrolling and sizing. */
5
3
  #root [data-slot='sidebar.workspaces'] > div {
6
4
  min-width: 0;
7
5
  }
8
6
 
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. */
7
+ /* The native header and independently scrolling tree own their geometry.
8
+ * No stitched frame: scrollbar reservation must not split its right edge. */
12
9
  #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);
10
+ color: var(--xiaohei-workspace-label);
11
+ background: transparent;
12
+ box-shadow: none;
23
13
  }
24
14
 
25
15
  #root [data-slot='sidebar.workspaces'] > div > div:first-child > span:first-child {
26
- color: var(--xiaohei-workspace-label);
27
16
  font-size: 0;
28
17
  font-weight: 600;
29
- letter-spacing: 0.01em;
30
18
  }
31
19
 
32
- /* Xiaohei's visual vocabulary calls an official Workspace a “Space”. The
33
- * original node remains in place, preserving layout and accessibility data. */
34
20
  #root [data-slot='sidebar.workspaces'] > div > div:first-child > span:first-child::after {
35
21
  content: '空间';
36
22
  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;
23
+ letter-spacing: .01em;
73
24
  }
74
25
 
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
26
  #root [data-slot='sidebar.workspaces'] [role='treeitem'] {
107
27
  position: relative;
108
- z-index: 1;
109
28
  box-sizing: border-box;
110
29
  border: 1px solid transparent;
111
30
  border-radius: var(--xiaohei-radius-control);
31
+ background: transparent;
32
+ box-shadow: none;
112
33
  font-weight: 400;
113
34
  transition:
114
35
  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);
36
+ border-color var(--xiaohei-motion-fast) ease,
37
+ background-color var(--xiaohei-motion-fast) ease;
208
38
  }
209
39
 
40
+ /* Expansion is a browsing state, not the current conversation selection. */
210
41
  #root [data-slot='sidebar.workspaces'] [role='treeitem'][aria-expanded='true'] {
211
42
  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);
43
+ background: var(--xiaohei-workspace-folder-open);
222
44
  font-weight: 500;
223
- transform: translateX(2px);
224
45
  }
225
46
 
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;
47
+ #root [data-slot='sidebar.workspaces'] [role='treeitem']:hover {
48
+ color: var(--xiaohei-sidebar-emphasis);
49
+ background: var(--xiaohei-workspace-row-hover);
248
50
  }
249
51
 
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
52
  #root [data-slot='sidebar.workspaces'] [role='treeitem'][aria-selected='true'] {
253
53
  color: var(--xiaohei-sidebar-emphasis);
254
54
  border-color: var(--xiaohei-workspace-row-active-edge);
255
55
  background: var(--xiaohei-workspace-row-active);
256
- font-weight: 500;
56
+ font-weight: 600;
257
57
  }
258
58
 
259
- #root [data-slot='sidebar.workspaces'] [role='treeitem'] button {
260
- border-radius: 7px;
59
+ #root [data-slot='sidebar.workspaces'] [role='treeitem'][aria-selected='true']:hover {
60
+ background: var(--xiaohei-workspace-row-active-hover);
61
+ }
62
+
63
+ /* Preserve native tooltip wrappers and indentation. Group pseudo-elements
64
+ * belong to the host's drag/drop insertion markers, not theme decoration. */
65
+ #root [data-slot='sidebar.workspaces'] [role='treeitem'] button,
66
+ #root [data-slot='sidebar.workspaces'] > div > div:first-child button {
67
+ color: var(--xiaohei-sidebar-icon);
68
+ border-radius: var(--xiaohei-radius-small);
261
69
  }
262
70
 
263
71
  #root [data-slot='sidebar.workspaces'] [role='treeitem'] button:hover,
264
- #root [data-slot='sidebar.workspaces'] [role='treeitem'] button[aria-expanded='true'] {
72
+ #root [data-slot='sidebar.workspaces'] [role='treeitem'] button[aria-expanded='true'],
73
+ #root [data-slot='sidebar.workspaces'] > div > div:first-child button:hover,
74
+ #root [data-slot='sidebar.workspaces'] > div > div:first-child button[aria-expanded='true'] {
265
75
  color: var(--xiaohei-sidebar-emphasis);
266
76
  background: var(--xiaohei-workspace-action-hover);
77
+ border-color: transparent;
267
78
  }
268
79
 
269
80
  @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;
81
+ #root [data-slot='sidebar.workspaces'] [role='treeitem'] {
82
+ transition: none;
279
83
  }
280
84
  }
281
85
 
282
86
  @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
87
  #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 {
88
+ color: HighlightText;
304
89
  background: Highlight;
305
- box-shadow: none;
306
- }
307
-
308
- #root [data-slot='sidebar.workspaces'] [role='treeitem'][aria-expanded]::after {
309
- display: none;
90
+ border-color: Highlight;
310
91
  }
311
92
  }
312
93
  `;
package/lib/chrome.js CHANGED
@@ -1,5 +1,7 @@
1
1
  import { XIAOHEI_CHROME_ACCESSIBILITY_CSS } from './chrome/accessibility.js';
2
2
  import { XIAOHEI_COMPOSER_CSS } from './chrome/composer.js';
3
+ import { XIAOHEI_COMPOSER_SEND_HEIXIU_CSS } from './chrome/composer-send-heixiu.js';
4
+ import { XIAOHEI_CONTROL_PRIMITIVES_CSS } from './chrome/controls.js';
3
5
  import { XIAOHEI_CONVERSATION_CSS } from './chrome/conversation.js';
4
6
  import { XIAOHEI_CONVERSATION_MESSAGES_CSS } from './chrome/conversation-messages.js';
5
7
  import { XIAOHEI_FRAME_SYSTEM_CSS } from './chrome/frames.js';
@@ -16,6 +18,7 @@ export const XIAOHEI_CHROME_STYLE_ID = 'dsh-theme-xiaohei/chrome-style';
16
18
  */
17
19
  export const XIAOHEI_CHROME_CSS = [
18
20
  XIAOHEI_CHROME_TOKENS_CSS,
21
+ XIAOHEI_CONTROL_PRIMITIVES_CSS,
19
22
  XIAOHEI_FRAME_SYSTEM_CSS,
20
23
  XIAOHEI_IDENTITY_CSS,
21
24
  XIAOHEI_SIDEBAR_CSS,
@@ -23,6 +26,7 @@ export const XIAOHEI_CHROME_CSS = [
23
26
  XIAOHEI_CONVERSATION_CSS,
24
27
  XIAOHEI_CONVERSATION_MESSAGES_CSS,
25
28
  XIAOHEI_COMPOSER_CSS,
29
+ XIAOHEI_COMPOSER_SEND_HEIXIU_CSS,
26
30
  XIAOHEI_OVERLAY_CSS,
27
31
  XIAOHEI_CHROME_ACCESSIBILITY_CSS,
28
32
  ].join('\n');
package/lib/client.d.ts CHANGED
@@ -1,17 +1,10 @@
1
- export { apply, inject } from './plugin.js';
1
+ import type { Context as ClientContext } from '@deepseek-ai/cordis';
2
+ export { inject } from './plugin.js';
3
+ /** Renderer-free wallpaper and native DSH chrome, mounted through plugin lifecycle. */
4
+ export declare function apply(ctx: ClientContext): void;
2
5
  export { bindXiaoheiAppearance, XIAOHEI_APPEARANCE_ATTRIBUTE } from './appearance.js';
3
- export { installXiaoheiBlink, XIAOHEI_BLINK_STYLE_ID } from './blink.js';
4
6
  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
7
  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';
8
+ export { configureXiaoheiWorldRenderer, XIAOHEI_SCENE_CSS, XIAOHEI_SCENE_LAYER_ID, XIAOHEI_SCENE_PART_COUNT, XIAOHEI_SCENE_STYLE_ID, XIAOHEI_SCENE_WORLD_CLASS, installXiaoheiScene, } from './scene.js';
16
9
  export { XIAOHEI_DAWN_THEME, XIAOHEI_DAWN_THEME_ID, XIAOHEI_NIGHT_THEME, XIAOHEI_NIGHT_THEME_ID, XIAOHEI_THEME_TOKEN_OVERRIDES, } from './theme.js';
17
10
  //# sourceMappingURL=client.d.ts.map