@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,599 +0,0 @@
1
- import { XIAOHEI_SPIRIT_DOORWAY_RING } from '../generated-keyart.js';
2
- /**
3
- * Layered break-frame portrait.
4
- *
5
- * The character is rendered from authored raster poses. Only the body layer is
6
- * clipped by the doorway. Hair, ears and action hands are repeated through
7
- * dedicated masks above the front rim. Keeping one renderer and one state
8
- * machine avoids the pose jumps caused by handing off between DOM and WebGL.
9
- */
10
- export const XIAOHEI_COMPOSER_AVATAR_CSS = `
11
- .xiaohei-composer-avatar {
12
- --xiaohei-composer-avatar-x: 0px;
13
- --xiaohei-composer-avatar-y: 0px;
14
- --xiaohei-composer-avatar-scale: 1;
15
- --xiaohei-avatar-look-x: 0px;
16
- --xiaohei-avatar-look-y: 0px;
17
- --xiaohei-avatar-look-rotation: 0deg;
18
- --xiaohei-avatar-stage-x: 0px;
19
- --xiaohei-avatar-stage-y: 0px;
20
- --xiaohei-avatar-stage-scale: 1;
21
- --xiaohei-avatar-ring-scale-x: 1;
22
- --xiaohei-avatar-ring-scale-y: 1;
23
- position: fixed;
24
- inset: 0 auto auto 0;
25
- z-index: 4;
26
- display: block;
27
- box-sizing: border-box;
28
- inline-size: 172px;
29
- block-size: 184px;
30
- opacity: 0;
31
- cursor: pointer;
32
- pointer-events: auto;
33
- touch-action: manipulation;
34
- contain: layout style;
35
- transform:
36
- translate3d(
37
- var(--xiaohei-composer-avatar-x),
38
- var(--xiaohei-composer-avatar-y),
39
- 0
40
- )
41
- scale(var(--xiaohei-composer-avatar-scale));
42
- transform-origin: 50% 100%;
43
- transition:
44
- opacity 180ms ease,
45
- transform 440ms cubic-bezier(.2, .82, .2, 1);
46
- will-change: transform;
47
- }
48
-
49
- .xiaohei-composer-avatar[data-xiaohei-avatar-ready='true'] {
50
- opacity: 1;
51
- }
52
-
53
- .xiaohei-composer-avatar__effects-back,
54
- .xiaohei-composer-avatar__ring-back,
55
- .xiaohei-composer-avatar__circle,
56
- .xiaohei-composer-avatar__overflow,
57
- .xiaohei-composer-avatar__ring-front,
58
- .xiaohei-composer-avatar__breakout-right,
59
- .xiaohei-composer-avatar__effects-front {
60
- position: absolute;
61
- display: block;
62
- box-sizing: border-box;
63
- pointer-events: none;
64
- }
65
-
66
- .xiaohei-composer-avatar__effects-back {
67
- z-index: 0;
68
- inset: auto 3px -4px;
69
- inline-size: 166px;
70
- block-size: 166px;
71
- border-radius: 50%;
72
- opacity: .46;
73
- background:
74
- radial-gradient(ellipse at 50% 87%, rgb(17 23 22 / 24%), transparent 47%),
75
- conic-gradient(
76
- from 205deg,
77
- transparent 0 18%,
78
- rgb(133 164 126 / 12%) 24% 31%,
79
- transparent 37% 79%,
80
- rgb(184 204 169 / 10%) 85% 90%,
81
- transparent 95%
82
- );
83
- filter: blur(5px);
84
- transform: scale(.97);
85
- transition:
86
- opacity 300ms ease,
87
- transform 500ms cubic-bezier(.2, .82, .2, 1);
88
- }
89
-
90
- .xiaohei-composer-avatar__ring-back,
91
- .xiaohei-composer-avatar__ring-front {
92
- inset-inline-start: 14px;
93
- inset-block-end: 3px;
94
- inline-size: 144px;
95
- block-size: 144px;
96
- border-radius: 50%;
97
- border: 0;
98
- background: url("${XIAOHEI_SPIRIT_DOORWAY_RING}") center / contain no-repeat;
99
- transform:
100
- scaleX(var(--xiaohei-avatar-ring-scale-x))
101
- scaleY(var(--xiaohei-avatar-ring-scale-y));
102
- transition:
103
- filter 220ms ease,
104
- transform 260ms cubic-bezier(.16, 1, .3, 1);
105
- }
106
-
107
- .xiaohei-composer-avatar__ring-back {
108
- z-index: 1;
109
- opacity: .94;
110
- filter:
111
- saturate(.82)
112
- contrast(1.02)
113
- drop-shadow(0 7px 9px rgb(9 13 12 / 19%));
114
- }
115
-
116
- .xiaohei-composer-avatar__circle,
117
- .xiaohei-composer-avatar__overflow,
118
- .xiaohei-composer-avatar__breakout-right {
119
- inset-inline-start: 20px;
120
- inset-block-end: 9px;
121
- inline-size: 132px;
122
- block-size: 132px;
123
- border-radius: 50%;
124
- }
125
-
126
- .xiaohei-composer-avatar__circle {
127
- z-index: 2;
128
- overflow: hidden;
129
- background: transparent;
130
- }
131
-
132
- .xiaohei-composer-avatar__overflow {
133
- z-index: 3;
134
- overflow: visible;
135
- }
136
-
137
- .xiaohei-composer-avatar__ring-front {
138
- z-index: 4;
139
- clip-path: inset(67% -8px -8px -8px);
140
- filter:
141
- saturate(.9)
142
- contrast(1.05)
143
- drop-shadow(0 2px 2px rgb(6 10 9 / 22%));
144
- }
145
-
146
- .xiaohei-composer-avatar__ring-front::after {
147
- content: '';
148
- position: absolute;
149
- inset: auto 18px 3px;
150
- block-size: 15px;
151
- border-radius: 50%;
152
- opacity: .34;
153
- background: radial-gradient(ellipse, rgb(173 194 157 / 26%), transparent 69%);
154
- filter: blur(4px);
155
- }
156
-
157
- .xiaohei-composer-avatar__breakout-right {
158
- z-index: 6;
159
- overflow: visible;
160
- }
161
-
162
- .xiaohei-composer-avatar__effects-front {
163
- z-index: 7;
164
- inset: auto 6px -1px;
165
- inline-size: 160px;
166
- block-size: 160px;
167
- border-radius: 50%;
168
- opacity: 0;
169
- border: 1px solid rgb(173 194 157 / 42%);
170
- border-inline-start-color: transparent;
171
- border-block-start-color: transparent;
172
- transform: scale(.78);
173
- }
174
-
175
- .xiaohei-composer-avatar__image {
176
- --xiaohei-portrait-size: 244px;
177
- --xiaohei-portrait-bottom: -76px;
178
- --xiaohei-portrait-x: 0px;
179
- position: absolute;
180
- inset-inline-start: 50%;
181
- inset-block-end: var(--xiaohei-portrait-bottom);
182
- z-index: 1;
183
- display: block;
184
- inline-size: auto;
185
- block-size: var(--xiaohei-portrait-size);
186
- max-inline-size: none;
187
- opacity: 0;
188
- transform:
189
- translate3d(
190
- calc(
191
- -50%
192
- + var(--xiaohei-avatar-look-x)
193
- + var(--xiaohei-portrait-x)
194
- + var(--xiaohei-avatar-stage-x)
195
- ),
196
- calc(var(--xiaohei-avatar-look-y) + var(--xiaohei-avatar-stage-y)),
197
- 0
198
- )
199
- rotate(var(--xiaohei-avatar-look-rotation))
200
- scale(var(--xiaohei-avatar-stage-scale));
201
- transform-origin: 50% 58%;
202
- transition:
203
- opacity 150ms cubic-bezier(.22, .72, .24, 1),
204
- transform 260ms cubic-bezier(.16, 1, .3, 1);
205
- user-select: none;
206
- -webkit-user-drag: none;
207
- pointer-events: none;
208
- will-change: opacity, transform;
209
- }
210
-
211
- .xiaohei-composer-avatar__image--inside-brace,
212
- .xiaohei-composer-avatar__image--overflow-brace,
213
- .xiaohei-composer-avatar__image--breakout-right-brace {
214
- --xiaohei-portrait-size: 202px;
215
- --xiaohei-portrait-bottom: -43px;
216
- --xiaohei-portrait-x: -3px;
217
- }
218
-
219
- .xiaohei-composer-avatar__image--inside-reach,
220
- .xiaohei-composer-avatar__image--overflow-reach,
221
- .xiaohei-composer-avatar__image--breakout-right-reach {
222
- --xiaohei-portrait-size: 202px;
223
- --xiaohei-portrait-bottom: -43px;
224
- --xiaohei-portrait-x: -2px;
225
- }
226
-
227
- .xiaohei-composer-avatar__image--inside-working,
228
- .xiaohei-composer-avatar__image--overflow-working,
229
- .xiaohei-composer-avatar__image--inside-complete,
230
- .xiaohei-composer-avatar__image--overflow-complete {
231
- --xiaohei-portrait-size: 216px;
232
- --xiaohei-portrait-bottom: -54px;
233
- }
234
-
235
- .xiaohei-composer-avatar__image--inside-error,
236
- .xiaohei-composer-avatar__image--overflow-error {
237
- --xiaohei-portrait-size: 260px;
238
- --xiaohei-portrait-bottom: -84px;
239
- }
240
-
241
- .xiaohei-composer-avatar__overflow > .xiaohei-composer-avatar__image {
242
- z-index: 1;
243
- }
244
-
245
- .xiaohei-composer-avatar__image--overflow-idle,
246
- .xiaohei-composer-avatar__image--overflow-thinking,
247
- .xiaohei-composer-avatar__image--overflow-working,
248
- .xiaohei-composer-avatar__image--overflow-complete,
249
- .xiaohei-composer-avatar__image--overflow-error {
250
- clip-path: polygon(8% 0, 92% 0, 92% 47%, 77% 56%, 23% 56%, 8% 47%);
251
- }
252
-
253
- /* Blink is an eye patch, not a full portrait swap. The idle artwork remains
254
- perfectly still underneath, so WebP compression differences cannot flash
255
- the character's hair, clothes or silhouette. */
256
- .xiaohei-composer-avatar__image--inside-blink {
257
- display: none;
258
- }
259
-
260
- .xiaohei-composer-avatar__image--overflow-blink {
261
- clip-path: none;
262
- -webkit-mask-image: radial-gradient(
263
- ellipse 28% 13% at 50% 40%,
264
- #000 52%,
265
- rgb(0 0 0 / 84%) 70%,
266
- transparent 100%
267
- );
268
- mask-image: radial-gradient(
269
- ellipse 28% 13% at 50% 40%,
270
- #000 52%,
271
- rgb(0 0 0 / 84%) 70%,
272
- transparent 100%
273
- );
274
- transition: opacity 52ms ease-out;
275
- }
276
-
277
- .xiaohei-composer-avatar__image--overflow-brace {
278
- clip-path: polygon(3% 0, 72% 0, 72% 52%, 60% 61%, 10% 61%, 3% 52%);
279
- }
280
-
281
- .xiaohei-composer-avatar__image--overflow-reach {
282
- clip-path: polygon(0 0, 66% 0, 66% 54%, 58% 62%, 7% 62%, 0 54%);
283
- }
284
-
285
- .xiaohei-composer-avatar__breakout-right > .xiaohei-composer-avatar__image {
286
- -webkit-mask-repeat: no-repeat;
287
- mask-repeat: no-repeat;
288
- }
289
-
290
- .xiaohei-composer-avatar__image--breakout-right-brace {
291
- -webkit-mask-image: radial-gradient(ellipse 20% 23% at 79% 60%, #000 0 69%, transparent 82%);
292
- mask-image: radial-gradient(ellipse 20% 23% at 79% 60%, #000 0 69%, transparent 82%);
293
- }
294
-
295
- .xiaohei-composer-avatar__image--breakout-right-reach {
296
- -webkit-mask-image: radial-gradient(ellipse 25% 30% at 81% 58%, #000 0 70%, transparent 83%);
297
- mask-image: radial-gradient(ellipse 25% 30% at 81% 58%, #000 0 70%, transparent 83%);
298
- }
299
-
300
- .xiaohei-composer-avatar[data-xiaohei-portrait='idle'] :is(
301
- .xiaohei-composer-avatar__image--inside-idle,
302
- .xiaohei-composer-avatar__image--overflow-idle
303
- ),
304
- .xiaohei-composer-avatar[data-xiaohei-portrait='thinking'] :is(
305
- .xiaohei-composer-avatar__image--inside-thinking,
306
- .xiaohei-composer-avatar__image--overflow-thinking
307
- ),
308
- .xiaohei-composer-avatar[data-xiaohei-portrait='working'] :is(
309
- .xiaohei-composer-avatar__image--inside-working,
310
- .xiaohei-composer-avatar__image--overflow-working
311
- ),
312
- .xiaohei-composer-avatar[data-xiaohei-portrait='complete'] :is(
313
- .xiaohei-composer-avatar__image--inside-complete,
314
- .xiaohei-composer-avatar__image--overflow-complete
315
- ),
316
- .xiaohei-composer-avatar[data-xiaohei-portrait='error'] :is(
317
- .xiaohei-composer-avatar__image--inside-error,
318
- .xiaohei-composer-avatar__image--overflow-error
319
- ),
320
- .xiaohei-composer-avatar[data-xiaohei-portrait='brace'] :is(
321
- .xiaohei-composer-avatar__image--inside-brace,
322
- .xiaohei-composer-avatar__image--overflow-brace,
323
- .xiaohei-composer-avatar__image--breakout-right-brace
324
- ),
325
- .xiaohei-composer-avatar[data-xiaohei-portrait='reach'] :is(
326
- .xiaohei-composer-avatar__image--inside-reach,
327
- .xiaohei-composer-avatar__image--overflow-reach,
328
- .xiaohei-composer-avatar__image--breakout-right-reach
329
- ) {
330
- opacity: 1;
331
- }
332
-
333
- .xiaohei-composer-avatar[data-xiaohei-portrait='idle'][data-xiaohei-avatar-blink='true']
334
- .xiaohei-composer-avatar__image--overflow-blink {
335
- opacity: 1;
336
- }
337
-
338
- .xiaohei-composer-avatar:hover,
339
- .xiaohei-composer-avatar[data-xiaohei-avatar-aware] {
340
- --xiaohei-avatar-stage-y: -2px;
341
- --xiaohei-avatar-stage-scale: 1.018;
342
- }
343
-
344
- .xiaohei-composer-avatar[data-xiaohei-avatar-near] {
345
- --xiaohei-avatar-stage-y: -4px;
346
- --xiaohei-avatar-stage-scale: 1.028;
347
- }
348
-
349
- .xiaohei-composer-avatar:hover .xiaohei-composer-avatar__effects-back,
350
- .xiaohei-composer-avatar[data-xiaohei-avatar-aware] .xiaohei-composer-avatar__effects-back {
351
- opacity: .72;
352
- transform: scale(1.025) rotate(-1deg);
353
- }
354
-
355
- .xiaohei-composer-avatar:hover .xiaohei-composer-avatar__ring-back {
356
- filter:
357
- saturate(.9)
358
- contrast(1.04)
359
- drop-shadow(0 8px 11px rgb(9 13 12 / 23%));
360
- }
361
-
362
- .xiaohei-composer-avatar[data-xiaohei-avatar-reaction] {
363
- --xiaohei-avatar-look-x: 0px;
364
- --xiaohei-avatar-look-y: 0px;
365
- --xiaohei-avatar-look-rotation: 0deg;
366
- --xiaohei-avatar-stage-x: 0px;
367
- --xiaohei-avatar-stage-y: 0px;
368
- --xiaohei-avatar-stage-scale: 1;
369
- }
370
-
371
- .xiaohei-composer-avatar[data-xiaohei-avatar-reaction='touch'] .xiaohei-composer-avatar__image {
372
- animation: xiaohei-avatar-touch-motion 1340ms cubic-bezier(.22, .72, .24, 1) both;
373
- }
374
-
375
- .xiaohei-composer-avatar[data-xiaohei-avatar-reaction='touch'] :is(
376
- .xiaohei-composer-avatar__ring-back,
377
- .xiaohei-composer-avatar__ring-front
378
- ) {
379
- animation: xiaohei-avatar-touch-ring 1340ms cubic-bezier(.22, .72, .24, 1) both;
380
- }
381
-
382
- .xiaohei-composer-avatar[data-xiaohei-avatar-reaction='touch'] .xiaohei-composer-avatar__effects-back {
383
- animation: xiaohei-avatar-touch-shadow 1340ms cubic-bezier(.22, .72, .24, 1) both;
384
- }
385
-
386
- .xiaohei-composer-avatar[data-xiaohei-avatar-reaction='touch'] .xiaohei-composer-avatar__effects-front,
387
- .xiaohei-composer-avatar[data-xiaohei-portrait='complete'] .xiaohei-composer-avatar__effects-front {
388
- animation: xiaohei-avatar-ring-response 1340ms ease-out 1;
389
- }
390
-
391
- .xiaohei-composer-avatar:not([data-xiaohei-avatar-reaction]) :is(
392
- .xiaohei-composer-avatar__circle,
393
- .xiaohei-composer-avatar__overflow
394
- ) > .xiaohei-composer-avatar__image {
395
- animation: xiaohei-avatar-breathe 4.8s ease-in-out infinite;
396
- }
397
-
398
- .xiaohei-composer-avatar[data-xiaohei-avatar-idle='glance-left']:not([data-xiaohei-avatar-aware]) {
399
- --xiaohei-avatar-look-x: -2px;
400
- --xiaohei-avatar-look-rotation: -1deg;
401
- }
402
-
403
- .xiaohei-composer-avatar[data-xiaohei-avatar-idle='glance-right']:not([data-xiaohei-avatar-aware]) {
404
- --xiaohei-avatar-look-x: 2px;
405
- --xiaohei-avatar-look-rotation: 1deg;
406
- }
407
-
408
- .xiaohei-composer-avatar[data-xiaohei-avatar-idle='glance-left']:not([data-xiaohei-avatar-aware]) .xiaohei-composer-avatar__image {
409
- animation: xiaohei-avatar-glance-left 1760ms cubic-bezier(.22, .72, .24, 1) both;
410
- }
411
-
412
- .xiaohei-composer-avatar[data-xiaohei-avatar-idle='glance-right']:not([data-xiaohei-avatar-aware]) .xiaohei-composer-avatar__image {
413
- animation: xiaohei-avatar-glance-right 1760ms cubic-bezier(.22, .72, .24, 1) both;
414
- }
415
-
416
- .xiaohei-composer-avatar[data-xiaohei-avatar-idle='nod']:not([data-xiaohei-avatar-aware]) .xiaohei-composer-avatar__image {
417
- animation: xiaohei-avatar-nod 1520ms cubic-bezier(.22, .72, .24, 1) both;
418
- }
419
-
420
- .xiaohei-composer-avatar[data-xiaohei-avatar-idle='perk']:not([data-xiaohei-avatar-aware]) {
421
- --xiaohei-avatar-stage-y: -4px;
422
- --xiaohei-avatar-stage-scale: 1.02;
423
- }
424
-
425
- .xiaohei-composer-avatar[data-xiaohei-avatar-idle='perk']:not([data-xiaohei-avatar-aware]) .xiaohei-composer-avatar__image {
426
- animation: xiaohei-avatar-perk 1640ms cubic-bezier(.16, 1, .3, 1) both;
427
- }
428
-
429
- .xiaohei-composer-avatar[data-xiaohei-avatar-idle='peek']:not([data-xiaohei-avatar-aware]) {
430
- --xiaohei-avatar-stage-x: 2px;
431
- --xiaohei-avatar-stage-y: -5px;
432
- --xiaohei-avatar-stage-scale: 1.024;
433
- --xiaohei-avatar-look-rotation: 1.1deg;
434
- }
435
-
436
- .xiaohei-composer-avatar[data-xiaohei-avatar-idle='peek']:not([data-xiaohei-avatar-aware]) .xiaohei-composer-avatar__image {
437
- animation: xiaohei-avatar-peek 1860ms cubic-bezier(.22, .72, .24, 1) both;
438
- }
439
-
440
- .xiaohei-composer-avatar[data-xiaohei-avatar-idle='ponder']:not([data-xiaohei-avatar-aware]) .xiaohei-composer-avatar__image {
441
- animation: xiaohei-avatar-ponder 2260ms cubic-bezier(.22, .72, .24, 1) both;
442
- }
443
-
444
- .xiaohei-composer-avatar[data-xiaohei-portrait='idle'][data-xiaohei-avatar-idle='double-blink']
445
- .xiaohei-composer-avatar__image--overflow-blink {
446
- animation: xiaohei-avatar-double-blink-closed 760ms linear both;
447
- }
448
-
449
- .xiaohei-composer-avatar[data-xiaohei-portrait='working'] .xiaohei-composer-avatar__effects-back {
450
- opacity: .68;
451
- animation: xiaohei-avatar-focus 2.6s ease-in-out infinite;
452
- }
453
-
454
- .xiaohei-composer-avatar[data-xiaohei-portrait='complete'] :is(
455
- .xiaohei-composer-avatar__image,
456
- .xiaohei-composer-avatar__ring-back,
457
- .xiaohei-composer-avatar__ring-front
458
- ) {
459
- animation: xiaohei-avatar-complete 880ms cubic-bezier(.16, 1, .3, 1) 1;
460
- }
461
-
462
- .xiaohei-composer-avatar[data-xiaohei-portrait='error'] :is(
463
- .xiaohei-composer-avatar__image
464
- ) {
465
- animation: xiaohei-avatar-error 420ms ease-out 1;
466
- }
467
-
468
- html[data-xiaohei-appearance='light'] .xiaohei-composer-avatar__ring-back {
469
- filter:
470
- saturate(.78)
471
- brightness(.97)
472
- contrast(1.02)
473
- drop-shadow(0 7px 9px rgb(42 47 44 / 14%));
474
- }
475
-
476
- html[data-xiaohei-appearance='light'] .xiaohei-composer-avatar__ring-front {
477
- filter:
478
- saturate(.84)
479
- brightness(.98)
480
- contrast(1.04)
481
- drop-shadow(0 2px 2px rgb(42 47 44 / 16%));
482
- }
483
-
484
- @keyframes xiaohei-avatar-breathe {
485
- 0%, 100% { translate: 0 0; }
486
- 48% { translate: 0 -1.5px; }
487
- }
488
-
489
- @keyframes xiaohei-avatar-touch-motion {
490
- 0%, 100% { translate: 0 0; scale: 1; rotate: 0deg; }
491
- 10% { translate: 0 3px; scale: .982; rotate: 0deg; }
492
- 27% { translate: -1px -5px; scale: 1.018; rotate: -0.4deg; }
493
- 43% { translate: 0 -10px; scale: 1.058; rotate: 0.35deg; }
494
- 58% { translate: 1px -7px; scale: 1.04; rotate: 0deg; }
495
- 75% { translate: -1px -4px; scale: 1.016; rotate: -0.25deg; }
496
- 89% { translate: 0 1px; scale: .994; rotate: 0deg; }
497
- }
498
-
499
- @keyframes xiaohei-avatar-touch-ring {
500
- 0%, 100% { translate: 0 0; scale: 1 1; }
501
- 10% { translate: 0 1px; scale: .96 1.018; }
502
- 43% { translate: 0 -1px; scale: 1.065 1.035; }
503
- 72% { translate: 0 0; scale: 1.018 1.01; }
504
- 89% { translate: 0 1px; scale: .994 1.004; }
505
- }
506
-
507
- @keyframes xiaohei-avatar-touch-shadow {
508
- 0%, 100% { opacity: .46; transform: scale(.97); }
509
- 10% { opacity: .38; transform: scale(.93); }
510
- 43% { opacity: .76; transform: scale(1.07); }
511
- 72% { opacity: .58; transform: scale(1.015); }
512
- }
513
-
514
- @keyframes xiaohei-avatar-glance-left {
515
- 0%, 100% { translate: 0 0; rotate: 0deg; }
516
- 22%, 68% { translate: -1.5px 0; rotate: -1.15deg; }
517
- 80% { translate: -1px .5px; rotate: -.65deg; }
518
- }
519
-
520
- @keyframes xiaohei-avatar-glance-right {
521
- 0%, 100% { translate: 0 0; rotate: 0deg; }
522
- 22%, 68% { translate: 1.5px 0; rotate: 1.15deg; }
523
- 80% { translate: 1px .5px; rotate: .65deg; }
524
- }
525
-
526
- @keyframes xiaohei-avatar-nod {
527
- 0%, 100% { translate: 0 0; rotate: 0deg; }
528
- 24% { translate: 0 1px; rotate: 0deg; }
529
- 43% { translate: 0 3px; rotate: .35deg; }
530
- 61% { translate: 0 -1px; rotate: -.25deg; }
531
- 78% { translate: 0 .4px; rotate: 0deg; }
532
- }
533
-
534
- @keyframes xiaohei-avatar-perk {
535
- 0%, 100% { translate: 0 0; scale: 1; }
536
- 24% { translate: 0 1px; scale: .992; }
537
- 43%, 68% { translate: 0 -3px; scale: 1.018; }
538
- 82% { translate: 0 -1px; scale: 1.006; }
539
- }
540
-
541
- @keyframes xiaohei-avatar-peek {
542
- 0%, 100% { translate: 0 0; rotate: 0deg; }
543
- 22% { translate: 1px -1px; rotate: .4deg; }
544
- 42%, 70% { translate: 3px -3px; rotate: 1.15deg; }
545
- 84% { translate: 1px -1px; rotate: .45deg; }
546
- }
547
-
548
- @keyframes xiaohei-avatar-ponder {
549
- 0%, 100% { translate: 0 0; rotate: 0deg; }
550
- 18% { translate: 0 1px; rotate: 0deg; }
551
- 36%, 72% { translate: -1px -1px; rotate: -1deg; }
552
- 84% { translate: -.5px 0; rotate: -.45deg; }
553
- }
554
-
555
- @keyframes xiaohei-avatar-double-blink-closed {
556
- 0%, 12%, 29%, 45%, 100% { opacity: 0; }
557
- 18%, 23%, 35%, 40% { opacity: 1; }
558
- }
559
-
560
- @keyframes xiaohei-avatar-ring-response {
561
- 0%, 24% { opacity: 0; transform: scale(.78); }
562
- 42% { opacity: .52; transform: scale(.96) rotate(1deg); }
563
- 72%, 100% { opacity: 0; transform: scale(1.14) rotate(8deg); }
564
- }
565
-
566
- @keyframes xiaohei-avatar-focus {
567
- 0%, 100% { opacity: .52; transform: scale(.98); }
568
- 50% { opacity: .72; transform: scale(1.025); }
569
- }
570
-
571
- @keyframes xiaohei-avatar-complete {
572
- 0%, 100% { translate: 0 0; scale: 1; }
573
- 35% { translate: 0 -4px; scale: 1.025; }
574
- 64% { translate: 0 -1px; scale: 1.01; }
575
- }
576
-
577
- @keyframes xiaohei-avatar-error {
578
- 0%, 100% { translate: 0 0; }
579
- 34% { translate: -2px 1px; }
580
- 68% { translate: 2px 1px; }
581
- }
582
-
583
- @media (prefers-reduced-motion: reduce) {
584
- .xiaohei-composer-avatar,
585
- .xiaohei-composer-avatar *,
586
- .xiaohei-composer-avatar *::before,
587
- .xiaohei-composer-avatar *::after {
588
- animation: none !important;
589
- transition-duration: .01ms !important;
590
- }
591
- }
592
-
593
- @media (forced-colors: active) {
594
- .xiaohei-composer-avatar {
595
- display: none;
596
- }
597
- }
598
- `;
599
- //# sourceMappingURL=composer-avatar.js.map
@@ -1,3 +0,0 @@
1
- /** Heixiu is the Host send button, not a neighbouring ornament. */
2
- export declare const XIAOHEI_COMPOSER_SEND_HEIXIU_CSS = "\n/* Official InputBar contract: row -> trailing controls -> last primary action. */\n#root [data-composer-card='true'] > :last-child > :last-child > button:last-child {\n position: relative;\n isolation: isolate;\n width: 38px;\n height: 38px;\n min-width: 38px;\n min-height: 38px;\n border: 1px solid var(--xiaohei-composer-control-edge) !important;\n border-radius: 50% !important;\n color: var(--xiaohei-composer-primary-icon) !important;\n background: var(--xiaohei-composer-disabled) !important;\n box-shadow: inset 0 1px 0 var(--xiaohei-composer-highlight) !important;\n}\n\n#root [data-composer-card='true'] > :last-child > :last-child > button:last-child[data-xiaohei-send-heixiu='true'] {\n overflow: visible;\n padding: 0;\n border-color: transparent !important;\n background: transparent !important;\n box-shadow: none !important;\n}\n\n/* Preserve the native glyph in the DOM; only the visual presentation changes. */\n#root [data-composer-card='true'] > :last-child > :last-child\n > button[data-xiaohei-send-heixiu='true'] > svg {\n opacity: 0;\n}\n\n.xiaohei-composer-send-heixiu {\n position: absolute;\n z-index: 1;\n inset: 0;\n overflow: visible;\n pointer-events: none;\n opacity: 1;\n transform: translateY(-1px) scale(1) translateZ(0);\n transform-origin: 50% 58%;\n transition:\n opacity 160ms ease,\n transform 180ms var(--xiaohei-motion-curve);\n}\n\n.xiaohei-composer-send-heixiu img {\n position: absolute;\n top: 50%;\n left: 50%;\n display: block;\n width: 60px;\n height: 60px;\n max-width: none;\n user-select: none;\n pointer-events: none;\n object-fit: contain;\n filter:\n drop-shadow(0 0 1px var(--xiaohei-composer-heixiu-edge))\n drop-shadow(0 3px 4px var(--xiaohei-composer-heixiu-shadow));\n transform: translate(-50%, -45%) translateZ(0);\n}\n\n.xiaohei-composer-send-heixiu__open {\n opacity: 1;\n}\n\n.xiaohei-composer-send-heixiu__blink {\n opacity: 0;\n}\n\n.xiaohei-composer-send-heixiu[data-xiaohei-blink='closed']\n .xiaohei-composer-send-heixiu__open {\n opacity: 0;\n}\n\n.xiaohei-composer-send-heixiu[data-xiaohei-blink='closed']\n .xiaohei-composer-send-heixiu__blink {\n opacity: 1;\n}\n\n#root [data-composer-card='true'] > :last-child > :last-child\n > button[data-xiaohei-send-heixiu='true']:not(:disabled):hover {\n border-color: transparent !important;\n background: transparent !important;\n box-shadow: none !important;\n transform: none;\n}\n\n#root [data-composer-card='true'] > :last-child > :last-child\n > button[data-xiaohei-send-heixiu='true']:not(:disabled):hover\n .xiaohei-composer-send-heixiu {\n transform: translateY(-2px) scale(1.055) translateZ(0);\n}\n\n#root [data-composer-card='true'] > :last-child > :last-child\n > button[data-xiaohei-send-heixiu='true']:not(:disabled):active {\n transform: none;\n}\n\n#root [data-composer-card='true'] > :last-child > :last-child\n > button[data-xiaohei-send-heixiu='true']:not(:disabled):active\n .xiaohei-composer-send-heixiu {\n transform: translateY(0) scale(.93) translateZ(0);\n}\n\n#root [data-composer-card='true'] > :last-child > :last-child\n > button[data-xiaohei-send-heixiu='true']:disabled {\n border-color: transparent !important;\n background: transparent !important;\n box-shadow: none !important;\n transform: none;\n}\n\n#root [data-composer-card='true'] > :last-child > :last-child\n > button[data-xiaohei-send-heixiu='true']:disabled\n .xiaohei-composer-send-heixiu {\n opacity: .42;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .xiaohei-composer-send-heixiu {\n transition-duration: 0.01ms !important;\n }\n}\n\n@media (forced-colors: active) {\n #root [data-composer-card='true'] > :last-child > :last-child\n > button[data-xiaohei-send-heixiu='true'] {\n border: 1px solid ButtonText !important;\n background: ButtonFace !important;\n }\n\n #root [data-composer-card='true'] > :last-child > :last-child\n > button[data-xiaohei-send-heixiu='true'] > svg {\n opacity: 1;\n }\n\n .xiaohei-composer-send-heixiu {\n display: none;\n }\n}\n";
3
- //# sourceMappingURL=composer-send-heixiu.d.ts.map