@lemoncat7/dsh-theme-xiaohei 0.4.6 → 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 (232) hide show
  1. package/README.md +15 -9
  2. package/THIRD_PARTY_NOTICES.md +13 -1
  3. package/docs/dsh-021-compatibility.md +23 -0
  4. package/docs/releases/0.5.0.md +24 -0
  5. package/docs/rift-interaction.md +35 -0
  6. package/docs/rift-preview.md +39 -0
  7. package/lib/client.companion.js +3 -4
  8. package/lib/client.decorations.js +224 -51
  9. package/lib/client.js +532 -2405
  10. package/lib/index.d.ts +1 -2
  11. package/lib/index.js +393 -11
  12. package/lib/rift/boot.d.ts +6 -0
  13. package/package.json +29 -19
  14. package/lib/appearance.d.ts +0 -12
  15. package/lib/appearance.js +0 -42
  16. package/lib/blink.d.ts +0 -4
  17. package/lib/blink.js +0 -110
  18. package/lib/bloub-heixiu/ambient.d.ts +0 -3
  19. package/lib/bloub-heixiu/ambient.js +0 -12
  20. package/lib/bloub-heixiu/character.d.ts +0 -33
  21. package/lib/bloub-heixiu/character.js +0 -124
  22. package/lib/bloub-heixiu/effects.d.ts +0 -4
  23. package/lib/bloub-heixiu/effects.js +0 -91
  24. package/lib/bloub-heixiu/flight.d.ts +0 -15
  25. package/lib/bloub-heixiu/flight.js +0 -66
  26. package/lib/bloub-heixiu/follow.d.ts +0 -13
  27. package/lib/bloub-heixiu/follow.js +0 -23
  28. package/lib/bloub-heixiu/layout.d.ts +0 -34
  29. package/lib/bloub-heixiu/layout.js +0 -26
  30. package/lib/bloub-heixiu/renderer.d.ts +0 -16
  31. package/lib/bloub-heixiu/renderer.js +0 -94
  32. package/lib/bloub-heixiu/runtime.d.ts +0 -6
  33. package/lib/bloub-heixiu/runtime.js +0 -440
  34. package/lib/bloub-heixiu/signals.d.ts +0 -17
  35. package/lib/bloub-heixiu/signals.js +0 -55
  36. package/lib/bloub-heixiu/styles.d.ts +0 -2
  37. package/lib/bloub-heixiu/styles.js +0 -98
  38. package/lib/boot-appearance.d.ts +0 -10
  39. package/lib/boot-appearance.js +0 -47
  40. package/lib/boot-loader.d.ts +0 -5
  41. package/lib/boot-loader.js +0 -158
  42. package/lib/chrome/accessibility.d.ts +0 -3
  43. package/lib/chrome/accessibility.js +0 -69
  44. package/lib/chrome/blink.d.ts +0 -3
  45. package/lib/chrome/blink.js +0 -15
  46. package/lib/chrome/composer-avatar.d.ts +0 -10
  47. package/lib/chrome/composer-avatar.js +0 -599
  48. package/lib/chrome/composer-send-heixiu.d.ts +0 -3
  49. package/lib/chrome/composer-send-heixiu.js +0 -143
  50. package/lib/chrome/composer.d.ts +0 -3
  51. package/lib/chrome/composer.js +0 -135
  52. package/lib/chrome/controls.d.ts +0 -8
  53. package/lib/chrome/controls.js +0 -348
  54. package/lib/chrome/conversation-messages.d.ts +0 -3
  55. package/lib/chrome/conversation-messages.js +0 -329
  56. package/lib/chrome/conversation-submissions.d.ts +0 -3
  57. package/lib/chrome/conversation-submissions.js +0 -68
  58. package/lib/chrome/conversation.d.ts +0 -3
  59. package/lib/chrome/conversation.js +0 -67
  60. package/lib/chrome/frames.d.ts +0 -6
  61. package/lib/chrome/frames.js +0 -134
  62. package/lib/chrome/gaze.d.ts +0 -3
  63. package/lib/chrome/gaze.js +0 -103
  64. package/lib/chrome/identity.d.ts +0 -6
  65. package/lib/chrome/identity.js +0 -47
  66. package/lib/chrome/overlays.d.ts +0 -3
  67. package/lib/chrome/overlays.js +0 -104
  68. package/lib/chrome/portal.d.ts +0 -6
  69. package/lib/chrome/portal.js +0 -169
  70. package/lib/chrome/reactions.d.ts +0 -3
  71. package/lib/chrome/reactions.js +0 -85
  72. package/lib/chrome/sidebar.d.ts +0 -3
  73. package/lib/chrome/sidebar.js +0 -313
  74. package/lib/chrome/tokens.d.ts +0 -3
  75. package/lib/chrome/tokens.js +0 -224
  76. package/lib/chrome/workspace.d.ts +0 -3
  77. package/lib/chrome/workspace.js +0 -94
  78. package/lib/chrome.d.ts +0 -10
  79. package/lib/chrome.js +0 -46
  80. package/lib/client-entry.d.ts +0 -3
  81. package/lib/client-entry.js +0 -3
  82. package/lib/client.d.ts +0 -10
  83. package/lib/client.pose-chin-dark.js +0 -4
  84. package/lib/client.pose-chin-light.js +0 -4
  85. package/lib/client.pose-doze-dark.js +0 -4
  86. package/lib/client.pose-doze-light.js +0 -4
  87. package/lib/client.pose-halfpeek-dark.js +0 -4
  88. package/lib/client.pose-halfpeek-light.js +0 -4
  89. package/lib/client.pose-peek-dark.js +0 -4
  90. package/lib/client.pose-peek-light.js +0 -4
  91. package/lib/client.pose-seated-dark.js +0 -4
  92. package/lib/client.pose-seated-light.js +0 -4
  93. package/lib/client.rig-chin-dark.js +0 -4
  94. package/lib/client.rig-chin-light.js +0 -4
  95. package/lib/client.rig-halfpeek-dark.js +0 -4
  96. package/lib/client.rig-halfpeek-light.js +0 -4
  97. package/lib/client.rig-peek-dark.js +0 -4
  98. package/lib/client.rig-peek-light.js +0 -4
  99. package/lib/client.rig-seated-dark.js +0 -4
  100. package/lib/client.rig-seated-light.js +0 -4
  101. package/lib/companion-entry.d.ts +0 -3
  102. package/lib/companion-entry.js +0 -3
  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-companion.d.ts +0 -5
  114. package/lib/deferred-companion.js +0 -9
  115. package/lib/deferred-decorations.d.ts +0 -3
  116. package/lib/deferred-decorations.js +0 -51
  117. package/lib/gaze.d.ts +0 -4
  118. package/lib/gaze.js +0 -230
  119. package/lib/generated-backgrounds.d.ts +0 -14
  120. package/lib/generated-backgrounds.js +0 -14
  121. package/lib/generated-character-motion.d.ts +0 -4
  122. package/lib/generated-character-motion.js +0 -2
  123. package/lib/generated-identity.d.ts +0 -6
  124. package/lib/generated-identity.js +0 -6
  125. package/lib/generated-keyart.d.ts +0 -34
  126. package/lib/generated-keyart.js +0 -34
  127. package/lib/generated-loading-assets.d.ts +0 -4
  128. package/lib/generated-loading-assets.js +0 -4
  129. package/lib/heixiu-interactions.d.ts +0 -10
  130. package/lib/heixiu-interactions.js +0 -161
  131. package/lib/host-contract.d.ts +0 -9
  132. package/lib/host-contract.js +0 -13
  133. package/lib/host-dom.d.ts +0 -11
  134. package/lib/host-dom.js +0 -72
  135. package/lib/loading-heixiu.d.ts +0 -8
  136. package/lib/loading-heixiu.js +0 -287
  137. package/lib/metallic-brand-mark.d.ts +0 -10
  138. package/lib/metallic-brand-mark.js +0 -296
  139. package/lib/plugin.d.ts +0 -6
  140. package/lib/plugin.js +0 -60
  141. package/lib/portal.d.ts +0 -40
  142. package/lib/portal.js +0 -225
  143. package/lib/reactions.d.ts +0 -20
  144. package/lib/reactions.js +0 -380
  145. package/lib/scene/avatar-model.d.ts +0 -6
  146. package/lib/scene/avatar-model.js +0 -646
  147. package/lib/scene/avatar-motion.d.ts +0 -3
  148. package/lib/scene/avatar-motion.js +0 -799
  149. package/lib/scene/character-assets.d.ts +0 -13
  150. package/lib/scene/character-assets.js +0 -26
  151. package/lib/scene/character-expression.d.ts +0 -4
  152. package/lib/scene/character-expression.js +0 -15
  153. package/lib/scene/character-eye-material.d.ts +0 -13
  154. package/lib/scene/character-eye-material.js +0 -88
  155. package/lib/scene/character-eye-renderer.d.ts +0 -5
  156. package/lib/scene/character-eye-renderer.js +0 -80
  157. package/lib/scene/character-eye-rig.d.ts +0 -20
  158. package/lib/scene/character-eye-rig.js +0 -35
  159. package/lib/scene/character-gaze.d.ts +0 -16
  160. package/lib/scene/character-gaze.js +0 -36
  161. package/lib/scene/character-idle.d.ts +0 -17
  162. package/lib/scene/character-idle.js +0 -65
  163. package/lib/scene/character-layout.d.ts +0 -24
  164. package/lib/scene/character-layout.js +0 -51
  165. package/lib/scene/character-motion-clock.d.ts +0 -18
  166. package/lib/scene/character-motion-clock.js +0 -70
  167. package/lib/scene/character-motion-types.d.ts +0 -12
  168. package/lib/scene/character-motion-types.js +0 -2
  169. package/lib/scene/character-motion.d.ts +0 -6
  170. package/lib/scene/character-motion.js +0 -187
  171. package/lib/scene/character-poses.d.ts +0 -26
  172. package/lib/scene/character-poses.js +0 -11
  173. package/lib/scene/character-rig-renderer.d.ts +0 -5
  174. package/lib/scene/character-rig-renderer.js +0 -95
  175. package/lib/scene/character-rig.d.ts +0 -22
  176. package/lib/scene/character-rig.js +0 -61
  177. package/lib/scene/heixiu-feedback.d.ts +0 -3
  178. package/lib/scene/heixiu-feedback.js +0 -64
  179. package/lib/scene/heixiu-interactions.d.ts +0 -3
  180. package/lib/scene/heixiu-interactions.js +0 -92
  181. package/lib/scene/ids.d.ts +0 -5
  182. package/lib/scene/ids.js +0 -5
  183. package/lib/scene/pointer-bridge.d.ts +0 -21
  184. package/lib/scene/pointer-bridge.js +0 -155
  185. package/lib/scene/runtime.d.ts +0 -12
  186. package/lib/scene/runtime.js +0 -74
  187. package/lib/scene/state-transitions.d.ts +0 -3
  188. package/lib/scene/state-transitions.js +0 -37
  189. package/lib/scene/styles.d.ts +0 -5
  190. package/lib/scene/styles.js +0 -69
  191. package/lib/scene/sylva-performance.d.ts +0 -11
  192. package/lib/scene/sylva-performance.js +0 -58
  193. package/lib/scene/wallpaper-character-styles.d.ts +0 -3
  194. package/lib/scene/wallpaper-character-styles.js +0 -49
  195. package/lib/scene/wallpaper-character.d.ts +0 -5
  196. package/lib/scene/wallpaper-character.js +0 -222
  197. package/lib/scene.d.ts +0 -8
  198. package/lib/scene.js +0 -8
  199. package/lib/sidebar-glass.d.ts +0 -16
  200. package/lib/sidebar-glass.js +0 -168
  201. package/lib/sidebar-heixiu-escape.d.ts +0 -44
  202. package/lib/sidebar-heixiu-escape.js +0 -340
  203. package/lib/sidebar-heixiu-roaming.d.ts +0 -27
  204. package/lib/sidebar-heixiu-roaming.js +0 -310
  205. package/lib/sidebar-reveal.d.ts +0 -8
  206. package/lib/sidebar-reveal.js +0 -59
  207. package/lib/state.d.ts +0 -21
  208. package/lib/state.js +0 -123
  209. package/lib/theme.d.ts +0 -19
  210. package/lib/theme.js +0 -188
  211. package/lib/vendor/bloub/decor.d.ts +0 -114
  212. package/lib/vendor/bloub/decor.js +0 -198
  213. package/lib/vendor/bloub/engine.d.ts +0 -213
  214. package/lib/vendor/bloub/engine.js +0 -452
  215. package/lib/vendor/bloub/expressions.d.ts +0 -35
  216. package/lib/vendor/bloub/expressions.js +0 -143
  217. package/lib/vendor/bloub/eyefit.d.ts +0 -75
  218. package/lib/vendor/bloub/eyefit.js +0 -393
  219. package/lib/vendor/bloub/face.d.ts +0 -63
  220. package/lib/vendor/bloub/face.js +0 -106
  221. package/lib/vendor/bloub/math.d.ts +0 -22
  222. package/lib/vendor/bloub/math.js +0 -36
  223. package/lib/vendor/bloub/profiles.d.ts +0 -8
  224. package/lib/vendor/bloub/profiles.js +0 -20
  225. package/lib/vendor/bloub/repere.d.ts +0 -30
  226. package/lib/vendor/bloub/repere.js +0 -32
  227. package/lib/vendor/bloub/shape.d.ts +0 -80
  228. package/lib/vendor/bloub/shape.js +0 -268
  229. package/lib/vendor/bloub/skins.d.ts +0 -36
  230. package/lib/vendor/bloub/skins.js +0 -74
  231. package/lib/vendor/bloub/states.d.ts +0 -87
  232. package/lib/vendor/bloub/states.js +0 -468
@@ -1,59 +0,0 @@
1
- /** Synchronize native wide content with the visible column, without changing
2
- * Host layout/state or adding a competing animation timer. */
3
- export function createSidebarReveal(doc) {
4
- let shell;
5
- let observer;
6
- let phase = '', width = 0, waiting = false;
7
- const attribute = 'data-xiaohei-sidebar-reveal';
8
- const readPhase = () => {
9
- const state = shell?.closest('[data-sidebar-collapsed]')?.getAttribute('data-sidebar-collapsed');
10
- if (state === 'true')
11
- return 'rail';
12
- if (state === 'false')
13
- return 'wide';
14
- if (shell?.querySelector("button[aria-label='Collapse sidebar'], button[aria-label='收起侧边栏']"))
15
- return 'wide';
16
- return 'rail';
17
- };
18
- const apply = () => {
19
- if (!shell)
20
- return;
21
- // The Host freezes its shell at the requested width during grid motion.
22
- // Reading the inline target does not force a layout.
23
- const target = Number.parseFloat(shell.style.width);
24
- if (waiting && phase === 'wide' && (!Number.isFinite(target) || width >= target - 2))
25
- waiting = false;
26
- const value = waiting ? 'waiting' : 'ready';
27
- if (shell.getAttribute(attribute) !== value)
28
- shell.setAttribute(attribute, value);
29
- };
30
- const changed = () => {
31
- const next = readPhase();
32
- if (next === 'wide' && phase !== 'wide')
33
- waiting = true;
34
- if (next === 'rail')
35
- waiting = false;
36
- phase = next;
37
- apply();
38
- };
39
- return {
40
- setColumn(column) {
41
- const next = column?.querySelector?.("[data-slot='sidebar'] > div") ?? undefined;
42
- if (next === shell)
43
- return;
44
- observer?.disconnect();
45
- shell?.removeAttribute(attribute);
46
- shell = next;
47
- waiting = false;
48
- phase = readPhase();
49
- if (!shell)
50
- return;
51
- observer = new doc.defaultView.MutationObserver(changed);
52
- observer.observe(column, { subtree: true, childList: true, attributes: true, attributeFilter: ['data-sidebar-collapsed', 'aria-label', 'style'] });
53
- apply();
54
- },
55
- resize(nextWidth) { width = nextWidth; apply(); },
56
- dispose() { observer?.disconnect(); shell?.removeAttribute(attribute); shell = undefined; },
57
- };
58
- }
59
- //# sourceMappingURL=sidebar-reveal.js.map
package/lib/state.d.ts DELETED
@@ -1,21 +0,0 @@
1
- import type { ISessions, SessionSnapshot, SessionSummary } from '@deepseek-ai/dsh-api-session-controller/client';
2
- export declare const XIAOHEI_STATE_ATTRIBUTE = "data-xiaohei-state";
3
- export declare const XIAOHEI_COMPLETE_DURATION_MS = 1600;
4
- export type XiaoheiState = 'idle' | 'thinking' | 'streaming' | 'tool' | 'waiting' | 'complete' | 'error';
5
- /** Resolve one official DSH snapshot using the theme's visible-state priority. */
6
- export declare function resolveXiaoheiState(snapshot: SessionSnapshot | LegacySessionActivity | undefined, summary: SessionSummary | undefined): Exclude<XiaoheiState, 'complete'>;
7
- interface LegacySessionActivity {
8
- removed: boolean;
9
- openState: 'cold' | 'loading' | 'open' | 'error';
10
- openError: unknown | null;
11
- promptError: unknown | null;
12
- lastAgentError: unknown | null;
13
- pending: readonly unknown[];
14
- runningCalls: readonly unknown[];
15
- partial: unknown | null;
16
- running: boolean;
17
- }
18
- /** Mirror the selected Session's official detailed state onto the theme root. */
19
- export declare function bindXiaoheiSessionState(sessions: Pick<ISessions, 'list' | 'binding'>, doc?: Document | undefined, completeDurationMs?: number): () => void;
20
- export {};
21
- //# sourceMappingURL=state.d.ts.map
package/lib/state.js DELETED
@@ -1,123 +0,0 @@
1
- import { currentSession as selectedSession } from './current-session.js';
2
- export const XIAOHEI_STATE_ATTRIBUTE = 'data-xiaohei-state';
3
- export const XIAOHEI_COMPLETE_DURATION_MS = 1600;
4
- /** Resolve one official DSH snapshot using the theme's visible-state priority. */
5
- export function resolveXiaoheiState(snapshot, summary) {
6
- if (snapshot !== undefined) {
7
- if (snapshot.removed
8
- || snapshot.openState === 'error'
9
- || snapshot.openError !== null
10
- || snapshot.promptError !== null
11
- || snapshot.lastAgentError !== null)
12
- return 'error';
13
- const pending = 'pending' in snapshot
14
- ? snapshot.pending
15
- : snapshot.pendingSubmissions;
16
- const runningCalls = 'runningCalls' in snapshot ? snapshot.runningCalls : [];
17
- const partial = 'partial' in snapshot ? snapshot.partial : null;
18
- if (pending.length > 0 || legacyPendingInteraction(summary) !== undefined)
19
- return 'waiting';
20
- if (runningCalls.length > 0)
21
- return 'tool';
22
- if (snapshot.running && partial !== null)
23
- return 'streaming';
24
- if (snapshot.running)
25
- return 'thinking';
26
- return 'idle';
27
- }
28
- if (legacyPendingInteraction(summary) !== undefined)
29
- return 'waiting';
30
- return summary?.running === true ? 'thinking' : 'idle';
31
- }
32
- function legacyPendingInteraction(summary) {
33
- return summary?.pendingInteraction;
34
- }
35
- /** Mirror the selected Session's official detailed state onto the theme root. */
36
- export function bindXiaoheiSessionState(sessions, doc = typeof document === 'undefined' ? undefined : document, completeDurationMs = XIAOHEI_COMPLETE_DURATION_MS) {
37
- if (doc === undefined)
38
- return () => { };
39
- const root = doc.documentElement;
40
- const timerWindow = doc.defaultView ?? undefined;
41
- let currentId;
42
- let currentSession;
43
- let unsubscribeSession = () => { };
44
- let previousRunning;
45
- let completeTimer;
46
- let disposed = false;
47
- const clearComplete = () => {
48
- if (completeTimer === undefined)
49
- return;
50
- if (timerWindow !== undefined)
51
- timerWindow.clearTimeout(completeTimer);
52
- else
53
- clearTimeout(completeTimer);
54
- completeTimer = undefined;
55
- };
56
- const setState = (state) => {
57
- root.setAttribute(XIAOHEI_STATE_ATTRIBUTE, state);
58
- };
59
- const updateCurrent = () => {
60
- if (disposed || currentId === undefined)
61
- return;
62
- const listSnapshot = sessions.list.getSnapshot();
63
- const summary = listSnapshot.byId[currentId];
64
- const snapshot = currentSession?.getSnapshot();
65
- const resolved = resolveXiaoheiState(snapshot, summary);
66
- const running = snapshot?.running ?? summary?.running ?? false;
67
- const completed = previousRunning === true && running === false;
68
- previousRunning = running;
69
- if (resolved !== 'idle') {
70
- clearComplete();
71
- setState(resolved);
72
- return;
73
- }
74
- if (completed) {
75
- clearComplete();
76
- setState('complete');
77
- const finish = () => {
78
- completeTimer = undefined;
79
- if (!disposed)
80
- setState('idle');
81
- };
82
- completeTimer = timerWindow !== undefined
83
- ? timerWindow.setTimeout(finish, completeDurationMs)
84
- : setTimeout(finish, completeDurationMs);
85
- return;
86
- }
87
- if (completeTimer === undefined)
88
- setState('idle');
89
- };
90
- const updateList = () => {
91
- if (disposed)
92
- return;
93
- const listSnapshot = sessions.list.getSnapshot();
94
- const nextId = selectedSession(listSnapshot);
95
- const nextSession = nextId === undefined ? undefined : sessions.binding(nextId)?.session;
96
- const changed = nextId !== currentId || nextSession !== currentSession;
97
- if (changed) {
98
- unsubscribeSession();
99
- unsubscribeSession = () => { };
100
- clearComplete();
101
- currentId = nextId;
102
- currentSession = nextSession;
103
- previousRunning = undefined;
104
- if (currentSession !== undefined)
105
- unsubscribeSession = currentSession.subscribe(updateCurrent);
106
- }
107
- if (currentId === undefined) {
108
- setState('idle');
109
- return;
110
- }
111
- updateCurrent();
112
- };
113
- const unsubscribeList = sessions.list.subscribe(updateList);
114
- updateList();
115
- return () => {
116
- disposed = true;
117
- clearComplete();
118
- unsubscribeSession();
119
- unsubscribeList();
120
- root.removeAttribute(XIAOHEI_STATE_ATTRIBUTE);
121
- };
122
- }
123
- //# sourceMappingURL=state.js.map
package/lib/theme.d.ts DELETED
@@ -1,19 +0,0 @@
1
- import type { ThemeTokenOverrides, ThemeTokens } from '@deepseek-ai/dsh-client-ui-theme/client';
2
- /** Stable ids retained for consumers that inspect the two Xiaohei palettes. */
3
- export declare const XIAOHEI_DAWN_THEME_ID = "xiaohei-dawn";
4
- export declare const XIAOHEI_NIGHT_THEME_ID = "xiaohei-night";
5
- /** Inspectable light theme definition for Xiaohei Dawn. */
6
- export declare const XIAOHEI_DAWN_THEME: {
7
- id: string;
8
- colorScheme: "light";
9
- tokens: ThemeTokens;
10
- };
11
- /** Inspectable dark theme definition for Xiaohei Night. */
12
- export declare const XIAOHEI_NIGHT_THEME: {
13
- id: string;
14
- colorScheme: "dark";
15
- tokens: ThemeTokens;
16
- };
17
- /** DSH's native Light / Dark / System preference stays authoritative. */
18
- export declare const XIAOHEI_THEME_TOKEN_OVERRIDES: ThemeTokenOverrides;
19
- //# sourceMappingURL=theme.d.ts.map
package/lib/theme.js DELETED
@@ -1,188 +0,0 @@
1
- /** Stable ids retained for consumers that inspect the two Xiaohei palettes. */
2
- export const XIAOHEI_DAWN_THEME_ID = 'xiaohei-dawn';
3
- export const XIAOHEI_NIGHT_THEME_ID = 'xiaohei-night';
4
- const DAWN_TOKENS = {
5
- '--dsw-alias-bg-base': 'transparent',
6
- '--dsw-alias-bg-layer-1': 'rgb(232 237 243 / 82%)',
7
- '--dsw-alias-bg-layer-2': 'rgb(238 242 247 / 90%)',
8
- '--dsw-alias-bg-layer-3': 'rgb(244 247 250 / 96%)',
9
- '--dsw-alias-bg-overlay': '#E9EEF3',
10
- '--dsw-alias-bg-module-platform': 'rgb(232 238 244 / 88%)',
11
- '--dsw-alias-bg-multi-select': '#DDE5EC',
12
- '--dsw-alias-bg-skeleton': 'rgb(45 116 136 / 10%)',
13
- '--dsw-alias-border-inverted2': 'rgb(35 50 52 / 6%)',
14
- '--dsw-alias-border-inverted': 'rgb(35 50 52 / 9%)',
15
- '--dsw-alias-border-l1': 'rgb(35 50 52 / 9%)',
16
- '--dsw-alias-border-l2-darkmode-thin': 'rgb(35 50 52 / 12%)',
17
- '--dsw-alias-border-l2': 'rgb(35 50 52 / 15%)',
18
- '--dsw-alias-border-l3': 'rgb(35 50 52 / 22%)',
19
- '--dsw-alias-border-l4': 'rgb(35 50 52 / 31%)',
20
- '--dsw-alias-brand-primary': '#547D78',
21
- '--dsw-alias-brand-primary-invert': '#F6FAFA',
22
- '--dsw-alias-brand-primary-new-colorprimary-new-color': '#547D78',
23
- '--dsw-alias-brand-text': '#426A65',
24
- '--dsw-alias-button-contrast-fill': '#17272B',
25
- '--dsw-alias-button-primary-fill': '#547D78',
26
- '--dsw-alias-button-primary-hover': '#426A65',
27
- '--dsw-alias-button-primary-dimmed': '#A3BBB7',
28
- '--dsw-alias-button-elevated-fill': '#EDF2F6',
29
- '--dsw-alias-button-floating-fill': '#E1E8EF',
30
- '--dsw-alias-button-floating-hover': '#D7E0E8',
31
- '--dsw-alias-button-ghost-active-border': '#78A7B3',
32
- '--dsw-alias-button-ghost-active-fill': 'rgb(84 125 120 / 11%)',
33
- '--dsw-alias-button-ghost-active-hover': 'rgb(84 125 120 / 17%)',
34
- '--dsw-alias-button-info-fill': '#547D78',
35
- '--dsw-alias-button-info-hover': '#426A65',
36
- '--dsw-alias-interactive-bg-active': 'rgb(84 125 120 / 14%)',
37
- '--dsw-alias-interactive-bg-hover-accent': 'rgb(84 125 120 / 17%)',
38
- '--dsw-alias-interactive-bg-hover-solid': '#E1EAE8',
39
- '--dsw-alias-interactive-bg-hover': 'rgb(84 125 120 / 8%)',
40
- '--dsw-alias-label-primary': '#252C35',
41
- '--dsw-alias-label-primary-bluish': '#252C35',
42
- '--dsw-alias-label-primary-dimmed': '#3E4854',
43
- '--dsw-alias-label-primary-foreground': '#FFFFFF',
44
- '--dsw-alias-label-primary-inverted': '#F1F5F5',
45
- '--dsw-alias-label-secondary': '#535F6C',
46
- '--dsw-alias-label-tertiary': '#5F6B78',
47
- '--dsw-alias-label-caption': '#5F6B78',
48
- '--dsw-alias-label-dimmed': '#8994A0',
49
- '--dsw-alias-markdown-citation': '#E2EAE9',
50
- '--dsw-alias-markdown-code-block-banner': '#E5ECEB',
51
- '--dsw-alias-markdown-code-block': '#EEF4F3',
52
- '--dsw-alias-markdown-code-segment-selected': '#D9E3E1',
53
- '--dsw-alias-markdown-code-segment-unselected': '#E8EFEE',
54
- '--dsw-alias-markdown-inline-code': '#E3EBEA',
55
- '--dsw-alias-markdown-placeholder': '#E8EFEE',
56
- '--dsw-alias-markdown-tag': '#E2EAE9',
57
- '--dsw-alias-scrollbar-bg-l1': '#CBCDC9',
58
- '--dsw-alias-scrollbar-bg-l2': '#BABDBA',
59
- '--dsw-alias-scrollbar-hover-l1': '#A8ADAA',
60
- '--dsw-alias-scrollbar-hover-l2': '#959C98',
61
- '--dsw-alias-state-error-primary': '#B44952',
62
- '--dsw-alias-state-error-secondary': '#C65D65',
63
- '--dsw-alias-state-business-primary': '#2E747A',
64
- '--dsw-alias-state-business-tertiary': '#DCE9EC',
65
- '--dsw-alias-state-success-primary': '#2F7B52',
66
- '--dsw-alias-state-success-secondary': '#438D65',
67
- '--dsw-alias-state-success-tertiary': '#DCEBDF',
68
- '--dsw-alias-state-warn-label': '#8A5B1C',
69
- '--dsw-alias-state-warn-primary': '#9A6720',
70
- '--dsw-alias-state-warn-secondary': '#AD7A34',
71
- '--dsw-alias-state-warn-tertiary': '#F3E8D2',
72
- '--dsw-alias-toast-bg': '#E9EEF3',
73
- '--dsw-alias-tooltip-bg': '#25332F',
74
- '--dsw-specific-bubble': 'rgb(84 125 120 / 10%)',
75
- '--dsw-specific-bubble-highlight': '#DDE7E5',
76
- '--dsw-specific-input-major': 'rgb(240 244 248 / 94%)',
77
- '--dsw-specific-login-input': 'rgb(235 240 245 / 95%)',
78
- '--dsw-specific-menu': 'rgb(233 238 243 / 96%)',
79
- '--dsw-specific-selector': '#DDE5EC',
80
- '--dsw-specific-sidebar-fill': 'transparent',
81
- '--dsw-specific-sidebar-nav-item-active-accent': '#CCD9D6',
82
- '--dsw-specific-sidebar-nav-item-active': '#DFE6E3',
83
- '--dsw-specific-sidebar-nav-item-hover': '#E8ECE9',
84
- '--dsw-specific-tip': '#E3EBEA',
85
- };
86
- const NIGHT_TOKENS = {
87
- '--dsw-alias-bg-base': 'transparent',
88
- '--dsw-alias-bg-layer-1': 'rgb(20 27 29 / 74%)',
89
- '--dsw-alias-bg-layer-2': 'rgb(25 33 35 / 86%)',
90
- '--dsw-alias-bg-layer-3': 'rgb(31 40 42 / 94%)',
91
- '--dsw-alias-bg-overlay': '#232D2F',
92
- '--dsw-alias-bg-module-platform': 'rgb(23 30 32 / 82%)',
93
- '--dsw-alias-bg-multi-select': '#253033',
94
- '--dsw-alias-bg-skeleton': 'rgb(105 182 186 / 9%)',
95
- '--dsw-alias-border-inverted2': 'rgb(184 204 205 / 7%)',
96
- '--dsw-alias-border-inverted': 'rgb(184 204 205 / 10%)',
97
- '--dsw-alias-border-l1': 'rgb(184 204 205 / 8%)',
98
- '--dsw-alias-border-l2-darkmode-thin': 'rgb(184 204 205 / 11%)',
99
- '--dsw-alias-border-l2': 'rgb(184 204 205 / 15%)',
100
- '--dsw-alias-border-l3': 'rgb(184 204 205 / 23%)',
101
- '--dsw-alias-border-l4': 'rgb(184 204 205 / 32%)',
102
- '--dsw-alias-brand-primary': '#69B6BA',
103
- '--dsw-alias-brand-primary-invert': '#101719',
104
- '--dsw-alias-brand-primary-new-colorprimary-new-color': '#69B6BA',
105
- '--dsw-alias-brand-text': '#8ACED0',
106
- '--dsw-alias-button-contrast-fill': '#E7F3F0',
107
- '--dsw-alias-button-primary-fill': '#69B6BA',
108
- '--dsw-alias-button-primary-hover': '#8ACED0',
109
- '--dsw-alias-button-primary-dimmed': '#47797D',
110
- '--dsw-alias-button-elevated-fill': '#253033',
111
- '--dsw-alias-button-floating-fill': '#20292B',
112
- '--dsw-alias-button-floating-hover': '#2B3739',
113
- '--dsw-alias-button-ghost-active-border': '#47797D',
114
- '--dsw-alias-button-ghost-active-fill': 'rgb(105 182 186 / 14%)',
115
- '--dsw-alias-button-ghost-active-hover': 'rgb(105 182 186 / 20%)',
116
- '--dsw-alias-button-info-fill': '#69B6BA',
117
- '--dsw-alias-button-info-hover': '#8ACED0',
118
- '--dsw-alias-interactive-bg-active': 'rgb(105 182 186 / 16%)',
119
- '--dsw-alias-interactive-bg-hover-accent': 'rgb(105 182 186 / 21%)',
120
- '--dsw-alias-interactive-bg-hover-solid': '#283335',
121
- '--dsw-alias-interactive-bg-hover': 'rgb(105 182 186 / 9%)',
122
- '--dsw-alias-label-primary': '#E3EAEB',
123
- '--dsw-alias-label-primary-bluish': '#E3EAEB',
124
- '--dsw-alias-label-primary-dimmed': '#CAD5D7',
125
- '--dsw-alias-label-primary-foreground': '#101719',
126
- '--dsw-alias-label-primary-inverted': '#232D2F',
127
- '--dsw-alias-label-secondary': '#BBC9CC',
128
- '--dsw-alias-label-tertiary': '#95A7AB',
129
- '--dsw-alias-label-caption': '#899CA0',
130
- '--dsw-alias-label-dimmed': '#687A7E',
131
- '--dsw-alias-markdown-citation': '#263133',
132
- '--dsw-alias-markdown-code-block-banner': '#1A2224',
133
- '--dsw-alias-markdown-code-block': '#121819',
134
- '--dsw-alias-markdown-code-segment-selected': '#263133',
135
- '--dsw-alias-markdown-code-segment-unselected': '#182022',
136
- '--dsw-alias-markdown-inline-code': '#20292B',
137
- '--dsw-alias-markdown-placeholder': '#1A2224',
138
- '--dsw-alias-markdown-tag': '#20292B',
139
- '--dsw-alias-scrollbar-bg-l1': '#303A3A',
140
- '--dsw-alias-scrollbar-bg-l2': '#3C4747',
141
- '--dsw-alias-scrollbar-hover-l1': '#4B5857',
142
- '--dsw-alias-scrollbar-hover-l2': '#5A6867',
143
- '--dsw-alias-state-error-primary': '#FF7D86',
144
- '--dsw-alias-state-error-secondary': '#FF9AA1',
145
- '--dsw-alias-state-business-primary': '#69B6BA',
146
- '--dsw-alias-state-business-tertiary': '#283335',
147
- '--dsw-alias-state-success-primary': '#82D29A',
148
- '--dsw-alias-state-success-secondary': '#9BDEAC',
149
- '--dsw-alias-state-success-tertiary': '#173722',
150
- '--dsw-alias-state-warn-label': '#E9BD68',
151
- '--dsw-alias-state-warn-primary': '#E9BD68',
152
- '--dsw-alias-state-warn-secondary': '#F2CC82',
153
- '--dsw-alias-state-warn-tertiary': '#3A2D14',
154
- '--dsw-alias-toast-bg': '#232D2F',
155
- '--dsw-alias-tooltip-bg': '#232D2F',
156
- '--dsw-specific-bubble': 'rgb(29 38 40 / 90%)',
157
- '--dsw-specific-bubble-highlight': '#283335',
158
- '--dsw-specific-input-major': 'rgb(27 35 37 / 92%)',
159
- '--dsw-specific-login-input': 'rgb(22 29 31 / 92%)',
160
- '--dsw-specific-menu': '#20292B',
161
- '--dsw-specific-selector': '#273235',
162
- '--dsw-specific-sidebar-fill': 'transparent',
163
- '--dsw-specific-sidebar-nav-item-active-accent': '#315357',
164
- '--dsw-specific-sidebar-nav-item-active': '#273235',
165
- '--dsw-specific-sidebar-nav-item-hover': '#222C2E',
166
- '--dsw-specific-tip': '#20292B',
167
- };
168
- /** Inspectable light theme definition for Xiaohei Dawn. */
169
- export const XIAOHEI_DAWN_THEME = {
170
- id: XIAOHEI_DAWN_THEME_ID,
171
- colorScheme: 'light',
172
- tokens: DAWN_TOKENS,
173
- };
174
- /** Inspectable dark theme definition for Xiaohei Night. */
175
- export const XIAOHEI_NIGHT_THEME = {
176
- id: XIAOHEI_NIGHT_THEME_ID,
177
- colorScheme: 'dark',
178
- tokens: NIGHT_TOKENS,
179
- };
180
- /** DSH's native Light / Dark / System preference stays authoritative. */
181
- export const XIAOHEI_THEME_TOKEN_OVERRIDES = Object.fromEntries([...new Set([...Object.keys(DAWN_TOKENS), ...Object.keys(NIGHT_TOKENS)])].map(name => [
182
- name,
183
- {
184
- light: DAWN_TOKENS[name] ?? NIGHT_TOKENS[name],
185
- dark: NIGHT_TOKENS[name] ?? DAWN_TOKENS[name],
186
- },
187
- ]));
188
- //# sourceMappingURL=theme.js.map
@@ -1,114 +0,0 @@
1
- export interface DotRender {
2
- x: number;
3
- y: number;
4
- r: number;
5
- opacity: number;
6
- /** couleur explicite ; par defaut le rendu prend celle du corps */
7
- color?: string;
8
- /**
9
- * Brume de profondeur : 0 = fondu dans le fond, 1 = couleur du corps pleine.
10
- * Le melange se fait au rendu, qui seul connait la couleur choisie.
11
- */
12
- depth?: number;
13
- /**
14
- * Forme non circulaire, en unites de rayon de boule et centree sur l'origine
15
- * (le point du "!" penche est une goutte, pas un disque). Quand elle est
16
- * fournie, `r` n'est plus utilise pour le trace.
17
- */
18
- d?: string;
19
- /** rotation appliquee a `d`, en degres */
20
- rot?: number;
21
- }
22
- /**
23
- * Ce qu'un etat declare : la geometrie de l'arc reste en unites de rayon de
24
- * boule, c'est le moteur (seul a connaitre l'echelle du viewBox) qui la
25
- * rasterise. Sans ca les etats devraient connaitre le viewBox.
26
- */
27
- export interface ArcSpec {
28
- id: string;
29
- seed: ArcSeed;
30
- t: number;
31
- opacity: number;
32
- }
33
- export interface ArcRender {
34
- id: string;
35
- /** portion devant le corps */
36
- front: string;
37
- /** portion derriere le corps (dessinee avant, donc masquee par la silhouette) */
38
- back: string;
39
- width: number;
40
- opacity: number;
41
- /** degrade de teinte le long du trace */
42
- grad: {
43
- x1: number;
44
- y1: number;
45
- x2: number;
46
- y2: number;
47
- stops: string[];
48
- };
49
- }
50
- export interface ArcSeed {
51
- /** demi-grand axe, en unites de rayon de boule */
52
- a: number;
53
- /** aplatissement b/a : mesure <= 0.45, les plans d'orbite sont vus par la tranche */
54
- k: number;
55
- /** inclinaison du grand axe a l'ecran, radians */
56
- tilt: number;
57
- /** tours par seconde */
58
- speed: number;
59
- phase: number;
60
- /** fraction du tour reellement tracee */
61
- sweep: number;
62
- hue: number;
63
- hueSpan: number;
64
- width: number;
65
- cx: number;
66
- cy: number;
67
- }
68
- /**
69
- * Projette un cercle 3D incline en orthographique.
70
- *
71
- * Le cercle vit dans le plan engendre par u (dans l'ecran) et v (qui plonge
72
- * dans la profondeur). La composante z sert a couper l'arc en deux : la moitie
73
- * arriere est dessinee avant le corps, donc occultee par lui. C'est ce vrai tri
74
- * en profondeur qui fait lire les anneaux comme des orbites et pas comme un
75
- * dessin plat.
76
- */
77
- export declare function arcRender(seed: ArcSeed, t: number, scale: number, id: string, opacity?: number): ArcRender;
78
- /**
79
- * 6 anneaux, demi-grand axe 1.30-1.40 (donc nettement plus grands que la
80
- * boule), aplatissement toujours <= 0.45, epaisseur 0.055, ~3.3 tours/s.
81
- */
82
- export declare const RINGS: ArcSeed[];
83
- /**
84
- * Bouquet d'arcs emboites qui balaie le triangle juste avant les orbites.
85
- * Vus quasiment par la tranche (d'ou la forme en epingle a cheveux), rmax 1.37.
86
- */
87
- export declare const SWOOSH: ArcSeed[];
88
- /** x mesures : -0.557 / -0.013 / +0.532, y = 0. */
89
- export declare const DOT_X: readonly [-0.557, -0.013, 0.532];
90
- export declare const DOT_R = 0.165;
91
- export declare const DOT_PEAK = 1.25;
92
- /**
93
- * Les particules ne partent pas en ligne droite : elles spiralent vers le
94
- * centre (rayon x0.75 par frame, angle +100 deg/s) en grossissant, et passent
95
- * derriere le noyau ou elles sont avalees.
96
- */
97
- export declare function particles(t: number, scale: number): DotRender[];
98
- export declare const COMET_RIBBONS: ArcSeed[];
99
- /** Rayon du point de la comete, mesure a 0.129. */
100
- export declare const COMET_DOT = 0.129;
101
- /** Bleu releve au pixel. */
102
- export declare const NOTIF_BLUE = "#2496e8";
103
- /** La pastille est posee exactement sur la circonference, a -42deg. */
104
- export declare const NOTIF_ANGLE = -42;
105
- export declare const NOTIF_DIST = 1.003;
106
- /** Rayon au repos ; le pop culmine 14 % au-dessus. */
107
- export declare const NOTIF_R = 0.15;
108
- export declare const NOTIF_POP = 1.14;
109
- /**
110
- * L'encoche est un disque concentrique a la pastille, soustrait du corps.
111
- * La marge est constante (0.054 R) et suit l'echelle du corps.
112
- */
113
- export declare const NOTIF_MARGIN = 0.054;
114
- //# sourceMappingURL=decor.d.ts.map