@5even7/dlc-ui 0.2.18 → 0.2.20

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 (87) hide show
  1. package/CHANGELOG.md +158 -144
  2. package/EXTENDING.md +114 -0
  3. package/LICENSE +21 -21
  4. package/README.md +389 -338
  5. package/THIRD_PARTY_NOTICES.md +221 -0
  6. package/dist/avatar-creator/styles/humation.mjs +26 -0
  7. package/dist/avatar-creator/styles.mjs +76 -0
  8. package/dist/avatar-creator.cjs +7831 -0
  9. package/dist/avatar-creator.mjs +74 -0
  10. package/dist/capsule.cjs +185 -66
  11. package/dist/capsule.mjs +364 -1340
  12. package/dist/chunks/avatar-creator-DiAmhpRa.mjs +687 -0
  13. package/dist/chunks/color-DnmNceaf.mjs +350 -0
  14. package/dist/chunks/controls-B5_ctvvA.mjs +160 -0
  15. package/dist/chunks/copy-7J0XIj_0.mjs +13 -0
  16. package/dist/chunks/cosmic-fallback-v8G5_ibh.mjs +408 -0
  17. package/dist/chunks/emitter-CxLYMSbw.mjs +38 -0
  18. package/dist/chunks/emo-Dvahy5Qr.mjs +1140 -0
  19. package/dist/chunks/hash-BiO02UNb.mjs +38 -0
  20. package/dist/chunks/humation-B9OPUGL7.mjs +2987 -0
  21. package/dist/chunks/identicon-BUdMd-yf.mjs +3063 -0
  22. package/dist/chunks/index-BchW1tWE.mjs +478 -0
  23. package/dist/chunks/index-BtH8Lbra.mjs +296 -0
  24. package/dist/chunks/index-C02dvGLD.mjs +263 -0
  25. package/dist/chunks/index-CFybYBA1.mjs +278 -0
  26. package/dist/chunks/index-DgI872-7.mjs +241 -0
  27. package/dist/chunks/index-_sf_14Zu.mjs +455 -0
  28. package/dist/chunks/index-w5Pzdwhv.mjs +305 -0
  29. package/dist/chunks/motion-a8_f8_Ui.mjs +177 -0
  30. package/dist/chunks/number-BqWLX0iQ.mjs +231 -0
  31. package/dist/chunks/progress-KweS4Rx0.mjs +1836 -0
  32. package/dist/chunks/size-Bztk2ryJ.mjs +22 -0
  33. package/dist/chunks/wrapper-DXhy1E7Z.mjs +514 -0
  34. package/dist/color.cjs +186 -67
  35. package/dist/color.mjs +341 -1280
  36. package/dist/emo/miao/angry.mjs +4 -0
  37. package/dist/emo/miao/asleep.mjs +4 -0
  38. package/dist/emo/miao/badminton.mjs +4 -0
  39. package/dist/emo/miao/confident.mjs +4 -0
  40. package/dist/emo/miao/cry.mjs +4 -0
  41. package/dist/emo/miao/investigate.mjs +4 -0
  42. package/dist/emo/miao/laugh.mjs +4 -0
  43. package/dist/emo/miao/leisure.mjs +4 -0
  44. package/dist/emo/miao/mock.mjs +4 -0
  45. package/dist/emo/miao/music.mjs +4 -0
  46. package/dist/emo/miao/mute.mjs +4 -0
  47. package/dist/emo/miao/panic.mjs +4 -0
  48. package/dist/emo/miao/ponder.mjs +4 -0
  49. package/dist/emo/miao/question.mjs +4 -0
  50. package/dist/emo/miao/sad.mjs +4 -0
  51. package/dist/emo/miao/shocked.mjs +4 -0
  52. package/dist/emo/miao/shy.mjs +4 -0
  53. package/dist/emo/miao/sigh.mjs +4 -0
  54. package/dist/emo/miao/smile.mjs +4 -0
  55. package/dist/emo/miao/snigger.mjs +4 -0
  56. package/dist/emo/miao/static.mjs +4 -0
  57. package/dist/emo/miao/yawn.mjs +4 -0
  58. package/dist/emo/miao/yummy.mjs +4 -0
  59. package/dist/emo.cjs +27161 -25964
  60. package/dist/emo.mjs +8 -1421
  61. package/dist/index.cjs +32729 -24466
  62. package/dist/index.mjs +16 -4757
  63. package/dist/index.umd.js +33115 -24852
  64. package/dist/index.umd.min.js +3 -1
  65. package/dist/progress.cjs +195 -76
  66. package/dist/progress.mjs +7 -2448
  67. package/dist/vue2.cjs +33282 -25002
  68. package/dist/vue2.mjs +63 -5131
  69. package/dist/vue3.cjs +33282 -25002
  70. package/dist/vue3.mjs +53 -5122
  71. package/package.json +161 -136
  72. package/styles/avatar-creator.css +38 -0
  73. package/styles/base.css +32 -32
  74. package/styles/color.css +18 -18
  75. package/styles/emo.css +110 -89
  76. package/styles/progress.css +96 -96
  77. package/styles/theme.css +1 -0
  78. package/types/avatar-creator-styles.d.ts +10 -0
  79. package/types/avatar-creator.d.ts +143 -0
  80. package/types/capsule.d.ts +15 -15
  81. package/types/color.d.ts +15 -15
  82. package/types/emo-miao.d.ts +9 -0
  83. package/types/emo.d.ts +38 -37
  84. package/types/index.d.ts +593 -554
  85. package/types/progress.d.ts +16 -16
  86. package/types/vue2.d.ts +11 -10
  87. package/types/vue3.d.ts +169 -146
package/package.json CHANGED
@@ -1,136 +1,161 @@
1
- {
2
- "name": "@5even7/dlc-ui",
3
- "version": "0.2.18",
4
- "publishConfig": {
5
- "access": "public",
6
- "registry": "https://registry.npmjs.org"
7
- },
8
- "description": "DLC 星云胶囊、流体进度、动态背景与 Lottie 表情组件库,支持 H5 / Vue2 / Vue3。",
9
- "type": "module",
10
- "repository": {
11
- "type": "git",
12
- "url": "https://gitee.com/K_a1/cosmic-capsules.git"
13
- },
14
- "main": "./dist/index.cjs",
15
- "module": "./dist/index.mjs",
16
- "types": "./types/index.d.ts",
17
- "unpkg": "./dist/index.umd.min.js",
18
- "jsdelivr": "./dist/index.umd.min.js",
19
- "exports": {
20
- ".": {
21
- "types": "./types/index.d.ts",
22
- "import": "./dist/index.mjs",
23
- "require": "./dist/index.cjs",
24
- "default": "./dist/index.mjs"
25
- },
26
- "./capsule": {
27
- "types": "./types/capsule.d.ts",
28
- "import": "./dist/capsule.mjs",
29
- "require": "./dist/capsule.cjs",
30
- "default": "./dist/capsule.mjs"
31
- },
32
- "./progress": {
33
- "types": "./types/progress.d.ts",
34
- "import": "./dist/progress.mjs",
35
- "require": "./dist/progress.cjs",
36
- "default": "./dist/progress.mjs"
37
- },
38
- "./color": {
39
- "types": "./types/color.d.ts",
40
- "import": "./dist/color.mjs",
41
- "require": "./dist/color.cjs",
42
- "default": "./dist/color.mjs"
43
- },
44
- "./emo": {
45
- "types": "./types/emo.d.ts",
46
- "import": "./dist/emo.mjs",
47
- "require": "./dist/emo.cjs",
48
- "default": "./dist/emo.mjs"
49
- },
50
- "./vue3": {
51
- "types": "./types/vue3.d.ts",
52
- "import": "./dist/vue3.mjs",
53
- "require": "./dist/vue3.cjs",
54
- "default": "./dist/vue3.mjs"
55
- },
56
- "./vue2": {
57
- "types": "./types/vue2.d.ts",
58
- "import": "./dist/vue2.mjs",
59
- "require": "./dist/vue2.cjs",
60
- "default": "./dist/vue2.mjs"
61
- },
62
- "./style.css": "./styles/theme.css",
63
- "./capsule/style.css": "./styles/capsule.css",
64
- "./progress/style.css": "./styles/progress.css",
65
- "./color/style.css": "./styles/color.css",
66
- "./emo/style.css": "./styles/emo.css",
67
- "./package.json": "./package.json"
68
- },
69
- "files": [
70
- "dist",
71
- "styles",
72
- "types",
73
- "README.md",
74
- "LICENSE",
75
- "CHANGELOG.md",
76
- "THIRD_PARTY_NOTICES.md"
77
- ],
78
- "peerDependencies": {
79
- "vue": ">=2.7.0"
80
- },
81
- "peerDependenciesMeta": {
82
- "vue": {
83
- "optional": true
84
- }
85
- },
86
- "sideEffects": [
87
- "./styles/*.css"
88
- ],
89
- "scripts": {
90
- "build": "node scripts/generate-emo-assets.mjs && rollup -c && node scripts/copy-css.mjs",
91
- "test": "node --test",
92
- "serve": "node scripts/serve.mjs",
93
- "demo:h5": "node scripts/serve.mjs",
94
- "demo:vue3": "npm --prefix examples/vue3 run dev",
95
- "demo:vue2": "npm --prefix examples/vue2 run dev",
96
- "prepublishOnly": "npm run build && npm test"
97
- },
98
- "keywords": [
99
- "capsule",
100
- "progress",
101
- "webgl",
102
- "canvas",
103
- "nebula",
104
- "background",
105
- "color",
106
- "vue",
107
- "vue2",
108
- "vue3",
109
- "h5",
110
- "component",
111
- "lottie",
112
- "emotion",
113
- "emoji"
114
- ],
115
- "license": "MIT",
116
- "engines": {
117
- "node": ">=18"
118
- },
119
- "devDependencies": {
120
- "@babel/core": "^7.26.0",
121
- "@babel/preset-env": "^7.26.0",
122
- "@rollup/plugin-babel": "^6.0.4",
123
- "@rollup/plugin-commonjs": "^28.0.1",
124
- "@rollup/plugin-node-resolve": "^15.3.0",
125
- "@rollup/plugin-terser": "^0.4.4",
126
- "intersection-observer": "^0.12.2",
127
- "jsdom": "^24.1.0",
128
- "pepjs": "^0.5.3",
129
- "resize-observer-polyfill": "^1.5.1",
130
- "rollup": "^4.24.0",
131
- "vue": "^3.4.0"
132
- },
133
- "dependencies": {
134
- "lottie-web": "^5.13.0"
135
- }
136
- }
1
+ {
2
+ "name": "@5even7/dlc-ui",
3
+ "version": "0.2.20",
4
+ "publishConfig": {
5
+ "access": "public",
6
+ "registry": "https://registry.npmjs.org"
7
+ },
8
+ "description": "DLC 星云胶囊、流体进度、动态背景、Lottie 表情与本地头像创建器组件库,支持 H5 / Vue2 / Vue3。",
9
+ "type": "module",
10
+ "repository": {
11
+ "type": "git",
12
+ "url": "https://gitee.com/K_a1/cosmic-capsules.git"
13
+ },
14
+ "main": "./dist/index.cjs",
15
+ "module": "./dist/index.mjs",
16
+ "types": "./types/index.d.ts",
17
+ "unpkg": "./dist/index.umd.min.js",
18
+ "jsdelivr": "./dist/index.umd.min.js",
19
+ "exports": {
20
+ ".": {
21
+ "types": "./types/index.d.ts",
22
+ "import": "./dist/index.mjs",
23
+ "require": "./dist/index.cjs",
24
+ "default": "./dist/index.mjs"
25
+ },
26
+ "./capsule": {
27
+ "types": "./types/capsule.d.ts",
28
+ "import": "./dist/capsule.mjs",
29
+ "require": "./dist/capsule.cjs",
30
+ "default": "./dist/capsule.mjs"
31
+ },
32
+ "./progress": {
33
+ "types": "./types/progress.d.ts",
34
+ "import": "./dist/progress.mjs",
35
+ "require": "./dist/progress.cjs",
36
+ "default": "./dist/progress.mjs"
37
+ },
38
+ "./color": {
39
+ "types": "./types/color.d.ts",
40
+ "import": "./dist/color.mjs",
41
+ "require": "./dist/color.cjs",
42
+ "default": "./dist/color.mjs"
43
+ },
44
+ "./emo": {
45
+ "types": "./types/emo.d.ts",
46
+ "import": "./dist/emo.mjs",
47
+ "require": "./dist/emo.cjs",
48
+ "default": "./dist/emo.mjs"
49
+ },
50
+ "./avatar-creator": {
51
+ "types": "./types/avatar-creator.d.ts",
52
+ "import": "./dist/avatar-creator.mjs",
53
+ "require": "./dist/avatar-creator.cjs",
54
+ "default": "./dist/avatar-creator.mjs"
55
+ },
56
+ "./avatar-creator/styles": {
57
+ "types": "./types/avatar-creator-styles.d.ts",
58
+ "import": "./dist/avatar-creator/styles.mjs",
59
+ "default": "./dist/avatar-creator/styles.mjs"
60
+ },
61
+ "./avatar-creator/styles/humation": {
62
+ "import": "./dist/avatar-creator/styles/humation.mjs",
63
+ "default": "./dist/avatar-creator/styles/humation.mjs"
64
+ },
65
+ "./emo/miao/*": {
66
+ "types": "./types/emo-miao.d.ts",
67
+ "import": "./dist/emo/miao/*.mjs",
68
+ "default": "./dist/emo/miao/*.mjs"
69
+ },
70
+ "./vue3": {
71
+ "types": "./types/vue3.d.ts",
72
+ "import": "./dist/vue3.mjs",
73
+ "require": "./dist/vue3.cjs",
74
+ "default": "./dist/vue3.mjs"
75
+ },
76
+ "./vue2": {
77
+ "types": "./types/vue2.d.ts",
78
+ "import": "./dist/vue2.mjs",
79
+ "require": "./dist/vue2.cjs",
80
+ "default": "./dist/vue2.mjs"
81
+ },
82
+ "./style.css": "./styles/theme.css",
83
+ "./capsule/style.css": "./styles/capsule.css",
84
+ "./progress/style.css": "./styles/progress.css",
85
+ "./color/style.css": "./styles/color.css",
86
+ "./emo/style.css": "./styles/emo.css",
87
+ "./avatar-creator/style.css": "./styles/avatar-creator.css",
88
+ "./package.json": "./package.json"
89
+ },
90
+ "files": [
91
+ "dist",
92
+ "styles",
93
+ "types",
94
+ "README.md",
95
+ "EXTENDING.md",
96
+ "LICENSE",
97
+ "CHANGELOG.md",
98
+ "THIRD_PARTY_NOTICES.md"
99
+ ],
100
+ "peerDependencies": {
101
+ "vue": ">=2.7.0"
102
+ },
103
+ "peerDependenciesMeta": {
104
+ "vue": {
105
+ "optional": true
106
+ }
107
+ },
108
+ "sideEffects": [
109
+ "./styles/*.css"
110
+ ],
111
+ "scripts": {
112
+ "build": "node scripts/clean-dist.mjs && node scripts/generate-emo-assets.mjs && rollup -c && node scripts/copy-css.mjs",
113
+ "test": "node --test",
114
+ "serve": "node scripts/serve.mjs",
115
+ "demo:h5": "node scripts/serve.mjs",
116
+ "demo:vue3": "npm --prefix examples/vue3 run dev",
117
+ "demo:vue2": "npm --prefix examples/vue2 run dev",
118
+ "prepublishOnly": "npm run build && npm test"
119
+ },
120
+ "keywords": [
121
+ "capsule",
122
+ "progress",
123
+ "webgl",
124
+ "canvas",
125
+ "nebula",
126
+ "background",
127
+ "color",
128
+ "vue",
129
+ "vue2",
130
+ "vue3",
131
+ "h5",
132
+ "component",
133
+ "lottie",
134
+ "emotion",
135
+ "emoji",
136
+ "avatar",
137
+ "dicebear",
138
+ "humation"
139
+ ],
140
+ "license": "MIT",
141
+ "engines": {
142
+ "node": ">=18"
143
+ },
144
+ "devDependencies": {
145
+ "@babel/core": "^7.26.0",
146
+ "@babel/preset-env": "^7.26.0",
147
+ "@rollup/plugin-babel": "^6.0.4",
148
+ "@rollup/plugin-commonjs": "^28.0.1",
149
+ "@rollup/plugin-node-resolve": "^15.3.0",
150
+ "@rollup/plugin-terser": "^0.4.4",
151
+ "intersection-observer": "^0.12.2",
152
+ "jsdom": "^24.1.0",
153
+ "pepjs": "^0.5.3",
154
+ "resize-observer-polyfill": "^1.5.1",
155
+ "rollup": "^4.24.0",
156
+ "vue": "^3.4.0"
157
+ },
158
+ "dependencies": {
159
+ "lottie-web": "^5.13.0"
160
+ }
161
+ }
@@ -0,0 +1,38 @@
1
+ .dlc-avatar-creator {
2
+ display: inline-block;
3
+ line-height: 0;
4
+ vertical-align: middle;
5
+ }
6
+
7
+ .dlc-avatar-creator svg {
8
+ display: block;
9
+ width: 100%;
10
+ height: 100%;
11
+ max-width: 100%;
12
+ max-height: 100%;
13
+ }
14
+
15
+ /* 画风模块按需加载期间的占位:不白屏,加载完成后被 SVG 替换 */
16
+ .dlc-avatar-creator .dlc-avatar-poster {
17
+ display: block;
18
+ width: 100%;
19
+ height: 100%;
20
+ min-width: 48px;
21
+ min-height: 48px;
22
+ aspect-ratio: 1 / 1;
23
+ border-radius: 18%;
24
+ background: rgba(128, 128, 128, 0.16);
25
+ animation: dlc-avatar-poster-pulse 1.1s ease-in-out infinite;
26
+ }
27
+
28
+ @keyframes dlc-avatar-poster-pulse {
29
+ 0%, 100% { opacity: 0.45; }
30
+ 50% { opacity: 0.9; }
31
+ }
32
+
33
+ @media (prefers-reduced-motion: reduce) {
34
+ .dlc-avatar-creator .dlc-avatar-poster {
35
+ animation: none;
36
+ opacity: 0.55;
37
+ }
38
+ }
package/styles/base.css CHANGED
@@ -1,12 +1,12 @@
1
- /*
2
- * @5even7/dlc-ui — shared base styles.
3
- */
4
-
5
- .hj-capsule-root {
6
- --hj-radius: 999px;
7
- --hj-font: Inter, ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI",
8
- "PingFang SC", "Microsoft YaHei", sans-serif;
9
- --hj-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
1
+ /*
2
+ * @5even7/dlc-ui — shared base styles.
3
+ */
4
+
5
+ .hj-capsule-root {
6
+ --hj-radius: 999px;
7
+ --hj-font: Inter, ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI",
8
+ "PingFang SC", "Microsoft YaHei", sans-serif;
9
+ --hj-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
10
10
  --hj-bg: #faf8f2;
11
11
  --hj-ink: #20231f;
12
12
  --hj-muted: #77786f;
@@ -19,31 +19,31 @@
19
19
  --hj-copy-left: 30px;
20
20
  --hj-value-right: 30px;
21
21
  --hj-copy-max-width: 54%;
22
-
23
- position: relative;
24
- display: block;
25
- overflow: hidden;
26
- box-sizing: border-box;
27
- border-radius: var(--hj-radius);
28
- background: var(--hj-bg);
29
- isolation: isolate;
30
- }
31
-
32
- .hj-capsule-root *,
33
- .hj-capsule-root *::before,
34
- .hj-capsule-root *::after {
35
- box-sizing: border-box;
36
- }
37
-
22
+
23
+ position: relative;
24
+ display: block;
25
+ overflow: hidden;
26
+ box-sizing: border-box;
27
+ border-radius: var(--hj-radius);
28
+ background: var(--hj-bg);
29
+ isolation: isolate;
30
+ }
31
+
32
+ .hj-capsule-root *,
33
+ .hj-capsule-root *::before,
34
+ .hj-capsule-root *::after {
35
+ box-sizing: border-box;
36
+ }
37
+
38
38
  .hj-capsule-canvas,
39
39
  .hj-progress-canvas {
40
- position: absolute;
41
- inset: 0;
42
- z-index: 1;
43
- display: block;
44
- width: 100%;
45
- height: 100%;
46
- border-radius: inherit;
40
+ position: absolute;
41
+ inset: 0;
42
+ z-index: 1;
43
+ display: block;
44
+ width: 100%;
45
+ height: 100%;
46
+ border-radius: inherit;
47
47
  pointer-events: none;
48
48
  }
49
49
 
package/styles/color.css CHANGED
@@ -1,18 +1,18 @@
1
- /* dlc-color: nebula background layer (same renderer as CosmicCapsule). */
2
-
3
- .dlc-color-layer {
4
- position: absolute;
5
- inset: 0;
6
- z-index: var(--dlc-color-layer-z, -1);
7
- overflow: hidden;
8
- border-radius: inherit;
9
- pointer-events: none;
10
- background: var(--dlc-color-bg, transparent);
11
- opacity: var(--dlc-color-opacity, 1);
12
- }
13
-
14
- .dlc-color-canvas {
15
- display: block;
16
- width: 100%;
17
- height: 100%;
18
- }
1
+ /* dlc-color: nebula background layer (same renderer as CosmicCapsule). */
2
+
3
+ .dlc-color-layer {
4
+ position: absolute;
5
+ inset: 0;
6
+ z-index: var(--dlc-color-layer-z, -1);
7
+ overflow: hidden;
8
+ border-radius: inherit;
9
+ pointer-events: none;
10
+ background: var(--dlc-color-bg, transparent);
11
+ opacity: var(--dlc-color-opacity, 1);
12
+ }
13
+
14
+ .dlc-color-canvas {
15
+ display: block;
16
+ width: 100%;
17
+ height: 100%;
18
+ }
package/styles/emo.css CHANGED
@@ -1,89 +1,110 @@
1
- .dlc-emo-root {
2
- position: relative;
3
- display: inline-grid;
4
- place-items: center;
5
- box-sizing: border-box;
6
- overflow: hidden;
7
- flex: 0 0 auto;
8
- vertical-align: middle;
9
- background: var(--dlc-emo-background, transparent);
10
- opacity: var(--dlc-emo-opacity, 1);
11
- }
12
-
13
- .dlc-emo-stage,
14
- .dlc-emo-stage > svg,
15
- .dlc-emo-stage > canvas {
16
- display: block;
17
- width: 100% !important;
18
- height: 100% !important;
19
- }
20
-
21
- .dlc-emo-stage {
22
- position: absolute;
23
- inset: 0;
24
- }
25
-
26
- .dlc-emo-root[data-fit='cover'] .dlc-emo-stage,
27
- .dlc-emo-root[data-fit='fill'] .dlc-emo-stage {
28
- overflow: hidden;
29
- }
30
-
31
-
32
- /* Grok SVG renderer */
33
-
34
- .dlc-grok {
35
- display: block;
36
- width: 100% !important;
37
- height: 100% !important;
38
- will-change: transform;
39
- }
40
-
41
- .dlc-grok__body {
42
- fill: #2f86ed;
43
- }
44
-
45
- .dlc-grok__eye {
46
- fill: #fffdf7;
47
- }
48
-
49
- .dlc-grok.act-bounce { animation: dlc-grok-bounce 0.85s ease; }
50
- .dlc-grok.act-tilt { animation: dlc-grok-tilt 0.8s ease; }
51
- .dlc-grok.act-scan .dlc-grok__eyes { animation: dlc-grok-scan 0.8s ease; }
52
- .dlc-grok.act-turn { animation: dlc-grok-turn 0.9s ease; }
53
- .dlc-grok.act-pulse { animation: dlc-grok-pulse 0.9s ease; }
54
- .dlc-grok.act-glitch { animation: dlc-grok-glitch 0.55s steps(2); }
55
-
56
- @keyframes dlc-grok-bounce {
57
- 0%, 100% { transform: translateY(0); }
58
- 40% { transform: translateY(-34px) scale(0.96, 1.04); }
59
- 65% { transform: translateY(4px) scale(1.05, 0.94); }
60
- }
61
-
62
- @keyframes dlc-grok-tilt {
63
- 35% { transform: rotate(-19deg) translate(-8px, 5px); }
64
- 70% { transform: rotate(8deg); }
65
- }
66
-
67
- @keyframes dlc-grok-scan {
68
- 0%, 100% { transform: translate(0); }
69
- 30% { transform: translate(-24px, 2px); }
70
- 70% { transform: translate(24px, -2px); }
71
- }
72
-
73
- @keyframes dlc-grok-turn {
74
- 0%, 100% { transform: rotateY(0); }
75
- 48% { transform: rotateY(180deg) scale(0.82); }
76
- }
77
-
78
- @keyframes dlc-grok-pulse {
79
- 0%, 100% { transform: scale(1); }
80
- 35% { transform: scale(1.08, 0.92); }
81
- 65% { transform: scale(0.94, 1.08); }
82
- }
83
-
84
- @keyframes dlc-grok-glitch {
85
- 0%, 100% { transform: translate(0); }
86
- 25% { transform: translate(-9px, 3px); filter: drop-shadow(8px 0 #ff9500); }
87
- 50% { transform: translate(10px, -3px); filter: drop-shadow(-8px 0 #79e2d0); }
88
- 75% { transform: translate(-4px, 1px); }
89
- }
1
+ .dlc-emo-root {
2
+ position: relative;
3
+ display: inline-grid;
4
+ place-items: center;
5
+ box-sizing: border-box;
6
+ overflow: hidden;
7
+ flex: 0 0 auto;
8
+ vertical-align: middle;
9
+ background: var(--dlc-emo-background, transparent);
10
+ opacity: var(--dlc-emo-opacity, 1);
11
+ }
12
+
13
+ .dlc-emo-stage,
14
+ .dlc-emo-stage > svg,
15
+ .dlc-emo-stage > canvas {
16
+ display: block;
17
+ width: 100% !important;
18
+ height: 100% !important;
19
+ }
20
+
21
+ .dlc-emo-stage {
22
+ position: absolute;
23
+ inset: 0;
24
+ }
25
+
26
+ .dlc-emo-root[data-fit='cover'] .dlc-emo-stage,
27
+ .dlc-emo-root[data-fit='fill'] .dlc-emo-stage {
28
+ overflow: hidden;
29
+ }
30
+
31
+ /* Miao 按需加载占位:动画数据 / 播放器 chunk 到达前先显示,避免白屏 */
32
+ .dlc-emo-poster {
33
+ width: 100%;
34
+ height: 100%;
35
+ border-radius: 18%;
36
+ background: rgba(255, 255, 255, 0.07);
37
+ animation: dlc-emo-poster-pulse 1.1s ease-in-out infinite;
38
+ }
39
+
40
+ @keyframes dlc-emo-poster-pulse {
41
+ 0%, 100% { opacity: 0.35; }
42
+ 50% { opacity: 0.8; }
43
+ }
44
+
45
+ @media (prefers-reduced-motion: reduce) {
46
+ .dlc-emo-poster {
47
+ animation: none;
48
+ opacity: 0.4;
49
+ }
50
+ }
51
+
52
+
53
+ /* Grok SVG renderer */
54
+
55
+ .dlc-grok {
56
+ display: block;
57
+ width: 100% !important;
58
+ height: 100% !important;
59
+ will-change: transform;
60
+ }
61
+
62
+ .dlc-grok__body {
63
+ fill: #2f86ed;
64
+ }
65
+
66
+ .dlc-grok__eye {
67
+ fill: #fffdf7;
68
+ }
69
+
70
+ .dlc-grok.act-bounce { animation: dlc-grok-bounce 0.85s ease; }
71
+ .dlc-grok.act-tilt { animation: dlc-grok-tilt 0.8s ease; }
72
+ .dlc-grok.act-scan .dlc-grok__eyes { animation: dlc-grok-scan 0.8s ease; }
73
+ .dlc-grok.act-turn { animation: dlc-grok-turn 0.9s ease; }
74
+ .dlc-grok.act-pulse { animation: dlc-grok-pulse 0.9s ease; }
75
+ .dlc-grok.act-glitch { animation: dlc-grok-glitch 0.55s steps(2); }
76
+
77
+ @keyframes dlc-grok-bounce {
78
+ 0%, 100% { transform: translateY(0); }
79
+ 40% { transform: translateY(-34px) scale(0.96, 1.04); }
80
+ 65% { transform: translateY(4px) scale(1.05, 0.94); }
81
+ }
82
+
83
+ @keyframes dlc-grok-tilt {
84
+ 35% { transform: rotate(-19deg) translate(-8px, 5px); }
85
+ 70% { transform: rotate(8deg); }
86
+ }
87
+
88
+ @keyframes dlc-grok-scan {
89
+ 0%, 100% { transform: translate(0); }
90
+ 30% { transform: translate(-24px, 2px); }
91
+ 70% { transform: translate(24px, -2px); }
92
+ }
93
+
94
+ @keyframes dlc-grok-turn {
95
+ 0%, 100% { transform: rotateY(0); }
96
+ 48% { transform: rotateY(180deg) scale(0.82); }
97
+ }
98
+
99
+ @keyframes dlc-grok-pulse {
100
+ 0%, 100% { transform: scale(1); }
101
+ 35% { transform: scale(1.08, 0.92); }
102
+ 65% { transform: scale(0.94, 1.08); }
103
+ }
104
+
105
+ @keyframes dlc-grok-glitch {
106
+ 0%, 100% { transform: translate(0); }
107
+ 25% { transform: translate(-9px, 3px); filter: drop-shadow(8px 0 #ff9500); }
108
+ 50% { transform: translate(10px, -3px); filter: drop-shadow(-8px 0 #79e2d0); }
109
+ 75% { transform: translate(-4px, 1px); }
110
+ }