@xingwangzhe/stalux 1.2.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 (214) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +192 -0
  3. package/package.json +108 -0
  4. package/scripts/cli.mjs +103 -0
  5. package/src/assets/BiCcCircle.svg +1 -0
  6. package/src/assets/astro.svg +1 -0
  7. package/src/assets/background/README.md +3 -0
  8. package/src/assets/background/pattern-1.min.svg +1 -0
  9. package/src/assets/background/pattern-10.min.svg +1 -0
  10. package/src/assets/background/pattern-11.min.svg +1 -0
  11. package/src/assets/background/pattern-12.min.svg +1 -0
  12. package/src/assets/background/pattern-13.min.svg +1 -0
  13. package/src/assets/background/pattern-14.min.svg +1 -0
  14. package/src/assets/background/pattern-15.min.svg +1 -0
  15. package/src/assets/background/pattern-16.min.svg +1 -0
  16. package/src/assets/background/pattern-17.min.svg +1 -0
  17. package/src/assets/background/pattern-18.min.svg +1 -0
  18. package/src/assets/background/pattern-19.min.svg +1 -0
  19. package/src/assets/background/pattern-2.min.svg +1 -0
  20. package/src/assets/background/pattern-20.min.svg +1 -0
  21. package/src/assets/background/pattern-21.min.svg +1 -0
  22. package/src/assets/background/pattern-22.min.svg +1 -0
  23. package/src/assets/background/pattern-23.min.svg +1 -0
  24. package/src/assets/background/pattern-24.min.svg +1 -0
  25. package/src/assets/background/pattern-25.min.svg +1 -0
  26. package/src/assets/background/pattern-26.min.svg +1 -0
  27. package/src/assets/background/pattern-27.min.svg +1 -0
  28. package/src/assets/background/pattern-28.min.svg +1 -0
  29. package/src/assets/background/pattern-29.min.svg +1 -0
  30. package/src/assets/background/pattern-3.min.svg +1 -0
  31. package/src/assets/background/pattern-30.min.svg +1 -0
  32. package/src/assets/background/pattern-31.min.svg +1 -0
  33. package/src/assets/background/pattern-32.min.svg +1 -0
  34. package/src/assets/background/pattern-33.min.svg +1 -0
  35. package/src/assets/background/pattern-34.min.svg +1 -0
  36. package/src/assets/background/pattern-35.min.svg +1 -0
  37. package/src/assets/background/pattern-36.min.svg +1 -0
  38. package/src/assets/background/pattern-37.min.svg +1 -0
  39. package/src/assets/background/pattern-38.min.svg +1 -0
  40. package/src/assets/background/pattern-39.min.svg +1 -0
  41. package/src/assets/background/pattern-4.min.svg +1 -0
  42. package/src/assets/background/pattern-40.min.svg +1 -0
  43. package/src/assets/background/pattern-41.min.svg +1 -0
  44. package/src/assets/background/pattern-42.min.svg +1 -0
  45. package/src/assets/background/pattern-5.min.svg +1 -0
  46. package/src/assets/background/pattern-6.min.svg +1 -0
  47. package/src/assets/background/pattern-7.min.svg +1 -0
  48. package/src/assets/background/pattern-8.min.svg +1 -0
  49. package/src/assets/background/pattern-9.min.svg +1 -0
  50. package/src/assets/background.svg +1 -0
  51. package/src/assets/cc-icon.svg +4 -0
  52. package/src/assets/fonts/GoogleSansCode-Italic.woff2 +0 -0
  53. package/src/assets/fonts/GoogleSansCode.woff2 +0 -0
  54. package/src/assets/fonts/LXGWWenKai-Regular.ttf +0 -0
  55. package/src/assets/fonts/LXGWWenKai-Regular.woff2 +0 -0
  56. package/src/components/stalux/analytics/clarity.astro +25 -0
  57. package/src/components/stalux/analytics/google.astro +31 -0
  58. package/src/components/stalux/analytics/umami.astro +16 -0
  59. package/src/components/stalux/archives/archivesList.astro +116 -0
  60. package/src/components/stalux/archives/toArchive.astro +14 -0
  61. package/src/components/stalux/categories/categoriesCard.astro +49 -0
  62. package/src/components/stalux/categories/categoriesList.astro +17 -0
  63. package/src/components/stalux/common/author.astro +35 -0
  64. package/src/components/stalux/common/date.astro +59 -0
  65. package/src/components/stalux/common/search.astro +14 -0
  66. package/src/components/stalux/common/textType.astro +16 -0
  67. package/src/components/stalux/common/verCount.astro +10 -0
  68. package/src/components/stalux/footer/FooterBadges.astro +150 -0
  69. package/src/components/stalux/footer/FooterBeian.astro +91 -0
  70. package/src/components/stalux/footer/FooterCopyright.astro +40 -0
  71. package/src/components/stalux/footer/FooterStats.astro +108 -0
  72. package/src/components/stalux/footer/FooterThemeInfo.astro +67 -0
  73. package/src/components/stalux/layout/footer.astro +87 -0
  74. package/src/components/stalux/layout/head.astro +194 -0
  75. package/src/components/stalux/layout/listPage.astro +26 -0
  76. package/src/components/stalux/layout/navs.astro +174 -0
  77. package/src/components/stalux/links/linkCard.astro +50 -0
  78. package/src/components/stalux/links/linkList.astro +20 -0
  79. package/src/components/stalux/links/socialMedia.astro +102 -0
  80. package/src/components/stalux/posts/PhotoSwipeStyle.astro +3 -0
  81. package/src/components/stalux/posts/PostTaxonomy.astro +65 -0
  82. package/src/components/stalux/posts/WalineComment.astro +609 -0
  83. package/src/components/stalux/posts/postAuthor.astro +23 -0
  84. package/src/components/stalux/posts/postCC.astro +52 -0
  85. package/src/components/stalux/posts/postCard.astro +83 -0
  86. package/src/components/stalux/posts/postContent.astro +174 -0
  87. package/src/components/stalux/posts/postLeft.astro +41 -0
  88. package/src/components/stalux/posts/postList.astro +25 -0
  89. package/src/components/stalux/posts/postNavigation.astro +137 -0
  90. package/src/components/stalux/posts/postRight.astro +33 -0
  91. package/src/components/stalux/posts/postToc.astro +88 -0
  92. package/src/components/stalux/posts/randomPost.astro +134 -0
  93. package/src/components/stalux/tags/tagHeader.astro +50 -0
  94. package/src/components/stalux/tags/tagsCloud.astro +100 -0
  95. package/src/components/stalux/words/wordCard.astro +62 -0
  96. package/src/components/stalux/words/wordList.astro +70 -0
  97. package/src/config.ts +58 -0
  98. package/src/i18n/en.json +193 -0
  99. package/src/i18n/zh-CN.json +193 -0
  100. package/src/index.ts +215 -0
  101. package/src/internal/components-plugin.ts +54 -0
  102. package/src/internal/dev-toolbar.ts +33 -0
  103. package/src/internal/override.ts +99 -0
  104. package/src/internal/pagefind.ts +40 -0
  105. package/src/layouts/PostLayout.astro +90 -0
  106. package/src/layouts/Stalux.astro +91 -0
  107. package/src/pages/404.astro +103 -0
  108. package/src/pages/about.astro +59 -0
  109. package/src/pages/about.md.ts +15 -0
  110. package/src/pages/api/post.abbrlink.json.ts +20 -0
  111. package/src/pages/archives.astro +23 -0
  112. package/src/pages/archives.md.ts +24 -0
  113. package/src/pages/atom.xml.ts +29 -0
  114. package/src/pages/categories/[category].astro +35 -0
  115. package/src/pages/categories/[category].md.ts +34 -0
  116. package/src/pages/categories/index.astro +23 -0
  117. package/src/pages/categories/index.md.ts +27 -0
  118. package/src/pages/index.astro +30 -0
  119. package/src/pages/index.md.ts +18 -0
  120. package/src/pages/links.astro +23 -0
  121. package/src/pages/links.md.ts +18 -0
  122. package/src/pages/llms-full.txt.ts +25 -0
  123. package/src/pages/llms.txt.ts +26 -0
  124. package/src/pages/posts/[post].astro +69 -0
  125. package/src/pages/posts/[post].md.ts +109 -0
  126. package/src/pages/rss.xml.ts +29 -0
  127. package/src/pages/tags/[tag].astro +37 -0
  128. package/src/pages/tags/[tag].md.ts +34 -0
  129. package/src/pages/tags/index.astro +23 -0
  130. package/src/pages/tags/index.md.ts +27 -0
  131. package/src/pages/words.astro +24 -0
  132. package/src/pages/words.md.ts +14 -0
  133. package/src/plugins/feature-flags.ts +68 -0
  134. package/src/plugins/satteri-temml.ts +81 -0
  135. package/src/schemas/collections.ts +140 -0
  136. package/src/schemas/config.ts +226 -0
  137. package/src/scripts/background.ts +59 -0
  138. package/src/styles/base/init.css +286 -0
  139. package/src/styles/base/math.css +411 -0
  140. package/src/styles/components/archives/archivesList.module.css +378 -0
  141. package/src/styles/components/archives/toArchive.module.css +3 -0
  142. package/src/styles/components/categories/categoriesCard.module.css +87 -0
  143. package/src/styles/components/categories/categoriesList.module.css +27 -0
  144. package/src/styles/components/common/author.module.css +73 -0
  145. package/src/styles/components/common/date.module.css +15 -0
  146. package/src/styles/components/common/textType.module.css +10 -0
  147. package/src/styles/components/footer/footer.module.css +44 -0
  148. package/src/styles/components/layout/navs.module.css +250 -0
  149. package/src/styles/components/links/linkCard.module.css +99 -0
  150. package/src/styles/components/links/linkList.module.css +67 -0
  151. package/src/styles/components/links/socialLinks.module.css +22 -0
  152. package/src/styles/components/markdown.css +528 -0
  153. package/src/styles/components/posts/postAuthor.module.css +32 -0
  154. package/src/styles/components/posts/postCC.module.css +138 -0
  155. package/src/styles/components/posts/postCard.module.css +156 -0
  156. package/src/styles/components/posts/postCategories.module.css +50 -0
  157. package/src/styles/components/posts/postContent.module.css +230 -0
  158. package/src/styles/components/posts/postLayout.module.css +142 -0
  159. package/src/styles/components/posts/postLeft.module.css +38 -0
  160. package/src/styles/components/posts/postList.module.css +24 -0
  161. package/src/styles/components/posts/postNavigation.module.css +187 -0
  162. package/src/styles/components/posts/postRight.module.css +60 -0
  163. package/src/styles/components/posts/postSidebar.module.css +57 -0
  164. package/src/styles/components/posts/postTags.module.css +51 -0
  165. package/src/styles/components/posts/postTaxonomy.module.css +87 -0
  166. package/src/styles/components/posts/postToc.module.css +74 -0
  167. package/src/styles/components/posts/randomPost.module.css +131 -0
  168. package/src/styles/components/tags/tagHeader.module.css +44 -0
  169. package/src/styles/components/tags/tagsCloud.module.css +124 -0
  170. package/src/styles/components/words/wordCard.module.css +130 -0
  171. package/src/styles/components/words/wordList.module.css +39 -0
  172. package/src/styles/pages/archives.module.css +18 -0
  173. package/src/styles/pages/categories.module.css +13 -0
  174. package/src/styles/pages/home.module.css +51 -0
  175. package/src/styles/pages/listPage.module.css +13 -0
  176. package/src/styles/pages/tags.module.css +12 -0
  177. package/src/styles/pages/words.module.css +13 -0
  178. package/src/styles/shared/animations.css +87 -0
  179. package/src/styles/shared/stagger.css +20 -0
  180. package/src/utils/ai-discovery.ts +547 -0
  181. package/src/utils/badge-generator.ts +68 -0
  182. package/src/utils/cc.ts +46 -0
  183. package/src/utils/collections-stats.ts +48 -0
  184. package/src/utils/config-utils.ts +107 -0
  185. package/src/utils/count-words.ts +20 -0
  186. package/src/utils/dayjs.ts +106 -0
  187. package/src/utils/feed.ts +70 -0
  188. package/src/utils/i18n.ts +64 -0
  189. package/src/utils/lucide-icons.ts +52 -0
  190. package/src/utils/semantic-time.ts +11 -0
  191. package/src/utils/taxonomy.ts +44 -0
  192. package/src/utils/toc-scrollspy.ts +95 -0
  193. package/src/utils/waline.ts +27 -0
  194. package/src/utils/word-count-utils.ts +83 -0
  195. package/template/astro.config.mjs +51 -0
  196. package/template/package.json +27 -0
  197. package/template/public/robots.txt +3 -0
  198. package/template/src/content.config.ts +11 -0
  199. package/template/stalux/about/index.md +14 -0
  200. package/template/stalux/config/ai-discovery.yml +2 -0
  201. package/template/stalux/config/author.yml +4 -0
  202. package/template/stalux/config/comment.yml +5 -0
  203. package/template/stalux/config/footer.yml +13 -0
  204. package/template/stalux/config/head.yml +7 -0
  205. package/template/stalux/config/links.yml +4 -0
  206. package/template/stalux/config/media-links.yml +8 -0
  207. package/template/stalux/config/navs.yml +23 -0
  208. package/template/stalux/config/promote.yml +2 -0
  209. package/template/stalux/config/site.yml +7 -0
  210. package/template/stalux/config/typetexts.yml +5 -0
  211. package/template/stalux/posts/hello-stalux.md +47 -0
  212. package/template/stalux/words/_template.md +12 -0
  213. package/template/stalux/words/einstein-imagination.md +8 -0
  214. package/template/tsconfig.json +9 -0
@@ -0,0 +1,378 @@
1
+ .archivesContainer {
2
+ max-width: 1000px;
3
+ margin: 0 auto; /* 水平居中 */
4
+ padding: var(--space-xl) var(--space-md);
5
+ }
6
+
7
+ .timelineContainer {
8
+ position: relative;
9
+ --tl-line: var(--radius-sm);
10
+ --tl-pad: var(--space-xl);
11
+ padding-left: var(--tl-pad);
12
+ }
13
+
14
+ .timelineContainer::before {
15
+ content: "";
16
+ position: absolute;
17
+ left: 0;
18
+ top: 0;
19
+ width: var(--tl-line);
20
+ height: 100%;
21
+ background: linear-gradient(to bottom, var(--accent-80p), var(--accent-40p), var(--white-20p));
22
+ border-radius: var(--border-medium);
23
+ }
24
+
25
+ .yearSection {
26
+ margin-bottom: var(--space-2xl);
27
+ position: relative;
28
+ }
29
+
30
+ .yearHeader {
31
+ display: flex;
32
+ align-items: center;
33
+ margin-bottom: 1.5rem;
34
+ }
35
+
36
+ .yearTitle {
37
+ position: relative;
38
+ --dot: 16px;
39
+ font-size: 1.8rem;
40
+ margin: 0;
41
+ color: var(--accent-90p);
42
+ }
43
+
44
+ .yearTitle::before {
45
+ content: "";
46
+ position: absolute;
47
+ box-sizing: border-box;
48
+ width: var(--dot);
49
+ height: var(--dot);
50
+ border-radius: 50%;
51
+ background-color: var(--accent-80p);
52
+ border: 3px solid var(--white-30p);
53
+ left: calc(var(--tl-line) / 2 - var(--tl-pad) - var(--dot) / 2);
54
+ top: 50%;
55
+ transform: translateY(-50%);
56
+ z-index: 2;
57
+ }
58
+
59
+ .yearCount {
60
+ margin-left: 1rem;
61
+ font-size: 0.9rem;
62
+ padding: 0.3rem 0.8rem;
63
+ background-color: var(--accent-20p);
64
+ border-radius: 1rem;
65
+ color: var(--white-90p);
66
+ }
67
+
68
+ .monthSection {
69
+ margin-bottom: 2rem;
70
+ position: relative;
71
+ }
72
+
73
+ .noPosts {
74
+ text-align: center;
75
+ padding: 3rem 1rem;
76
+ color: var(--white-70p);
77
+ font-size: 1.2rem;
78
+ background-color: var(--black-10p);
79
+ border-radius: 0.5rem;
80
+ width: 100%;
81
+ }
82
+
83
+ @keyframes fadeInUp {
84
+ from {
85
+ opacity: 0;
86
+ transform: translateY(20px);
87
+ }
88
+ to {
89
+ opacity: 1;
90
+ transform: translateY(0);
91
+ }
92
+ }
93
+
94
+ @keyframes fadeInLeft {
95
+ from {
96
+ opacity: 0;
97
+ transform: translateX(-15px);
98
+ }
99
+ to {
100
+ opacity: 1;
101
+ transform: translateX(0);
102
+ }
103
+ }
104
+
105
+ /* yearSection 子元素通用入场动画 */
106
+ [data-year-header],
107
+ [data-month-section],
108
+ [data-post-item] {
109
+ animation: fadeInUp 0.53s ease both;
110
+ }
111
+
112
+ [data-year-header] {
113
+ animation-duration: 0.38s;
114
+ }
115
+
116
+ [data-post-item] {
117
+ animation-name: fadeInLeft;
118
+ animation-duration: 0.38s;
119
+ }
120
+
121
+ /* yearSection 内部阶梯延迟(yearHeader + monthSections 同为子元素) */
122
+ [data-year-header]:nth-child(1) {
123
+ animation-delay: 0s;
124
+ }
125
+
126
+ [data-month-section]:nth-child(2) {
127
+ animation-delay: 0.18s;
128
+ }
129
+ [data-month-section]:nth-child(3) {
130
+ animation-delay: 0.24s;
131
+ }
132
+ [data-month-section]:nth-child(4) {
133
+ animation-delay: 0.3s;
134
+ }
135
+ [data-month-section]:nth-child(5) {
136
+ animation-delay: 0.36s;
137
+ }
138
+ [data-month-section]:nth-child(6) {
139
+ animation-delay: 0.42s;
140
+ }
141
+ [data-month-section]:nth-child(7) {
142
+ animation-delay: 0.48s;
143
+ }
144
+ [data-month-section]:nth-child(8) {
145
+ animation-delay: 0.54s;
146
+ }
147
+ [data-month-section]:nth-child(9) {
148
+ animation-delay: 0.6s;
149
+ }
150
+ [data-month-section]:nth-child(10) {
151
+ animation-delay: 0.66s;
152
+ }
153
+ [data-month-section]:nth-child(11) {
154
+ animation-delay: 0.72s;
155
+ }
156
+ [data-month-section]:nth-child(12) {
157
+ animation-delay: 0.78s;
158
+ }
159
+
160
+ /* postItem 阶梯延迟 */
161
+ [data-post-item]:nth-child(1) {
162
+ animation-delay: 0s;
163
+ }
164
+ [data-post-item]:nth-child(2) {
165
+ animation-delay: 0.045s;
166
+ }
167
+ [data-post-item]:nth-child(3) {
168
+ animation-delay: 0.09s;
169
+ }
170
+ [data-post-item]:nth-child(4) {
171
+ animation-delay: 0.135s;
172
+ }
173
+ [data-post-item]:nth-child(5) {
174
+ animation-delay: 0.18s;
175
+ }
176
+ [data-post-item]:nth-child(6) {
177
+ animation-delay: 0.225s;
178
+ }
179
+ [data-post-item]:nth-child(7) {
180
+ animation-delay: 0.27s;
181
+ }
182
+ [data-post-item]:nth-child(8) {
183
+ animation-delay: 0.315s;
184
+ }
185
+ [data-post-item]:nth-child(9) {
186
+ animation-delay: 0.36s;
187
+ }
188
+ [data-post-item]:nth-child(10) {
189
+ animation-delay: 0.405s;
190
+ }
191
+ [data-post-item]:nth-child(n + 11) {
192
+ animation-delay: 0.45s;
193
+ }
194
+
195
+ /* 懒加载指示器样式 */
196
+ .lazyloadObserver {
197
+ display: flex;
198
+ flex-direction: column;
199
+ align-items: center;
200
+ padding: 2rem 0;
201
+ opacity: 0.8;
202
+ transition: opacity var(--transition-normal) ease;
203
+ }
204
+
205
+ .lazyloadObserver:hover {
206
+ opacity: 1;
207
+ }
208
+
209
+ .loadingSpinner {
210
+ display: flex;
211
+ justify-content: center;
212
+ margin-bottom: 0.5rem;
213
+ }
214
+
215
+ .loadingSpinner .dot {
216
+ display: inline-block;
217
+ width: 10px;
218
+ height: 10px;
219
+ margin: 0 3px;
220
+ border-radius: 50%;
221
+ background-color: var(--accent-80p);
222
+ animation: dotPulse 1.4s infinite ease-in-out both;
223
+ }
224
+
225
+ .loadingSpinner .dot:nth-child(1) {
226
+ animation-delay: -0.32s;
227
+ }
228
+
229
+ .loadingSpinner .dot:nth-child(2) {
230
+ animation-delay: -0.16s;
231
+ }
232
+
233
+ .loadingSpinner .dot:nth-child(3) {
234
+ animation-delay: 0s;
235
+ }
236
+
237
+ @keyframes dotPulse {
238
+ 0%,
239
+ 80%,
240
+ 100% {
241
+ transform: scale(0.3);
242
+ }
243
+ 40% {
244
+ transform: scale(1);
245
+ }
246
+ }
247
+
248
+ .loadingText {
249
+ font-size: 0.9rem;
250
+ color: var(--white-70p);
251
+ }
252
+
253
+ /* 文章列表和项目样式(静态 DOM)*/
254
+ .postList {
255
+ list-style: none;
256
+ padding: 0;
257
+ margin: 0;
258
+ }
259
+
260
+ .postItem {
261
+ --dot: 6px;
262
+ margin-bottom: 1rem;
263
+ position: relative;
264
+ padding: 0.35rem 0;
265
+ border-bottom: 1px dashed var(--black-3p);
266
+ display: flex;
267
+ gap: 0.75rem;
268
+ align-items: center;
269
+ }
270
+
271
+ .postItem::before {
272
+ content: "";
273
+ position: absolute;
274
+ box-sizing: border-box;
275
+ width: var(--dot);
276
+ height: var(--dot);
277
+ border-radius: 50%;
278
+ background-color: var(--white-60p);
279
+ left: calc(var(--tl-line) / 2 - var(--tl-pad) - var(--dot) / 2);
280
+ top: 50%;
281
+ transform: translateY(-50%);
282
+ z-index: 1;
283
+ }
284
+
285
+ .postDate {
286
+ color: var(--white-60p);
287
+ font-size: 0.85rem;
288
+ min-width: 90px;
289
+ }
290
+
291
+ .postLink {
292
+ text-decoration: none;
293
+ }
294
+
295
+ .monthTitle {
296
+ position: relative;
297
+ --dot: 10px;
298
+ font-size: 1rem;
299
+ margin: 0 0 0.25rem 0;
300
+ color: var(--stalux-muted);
301
+ }
302
+
303
+ .monthTitle::before {
304
+ content: "";
305
+ position: absolute;
306
+ box-sizing: border-box;
307
+ width: var(--dot);
308
+ height: var(--dot);
309
+ border-radius: 50%;
310
+ background-color: rgba(255, 255, 255, 0.6);
311
+ left: calc(var(--tl-line) / 2 - var(--tl-pad) - var(--dot) / 2);
312
+ top: 50%;
313
+ transform: translateY(-50%);
314
+ z-index: 1;
315
+ }
316
+
317
+ .monthBlock {
318
+ margin: 0.5rem 0;
319
+ }
320
+
321
+ @media (max-width: 768px) {
322
+ .archivesContainer {
323
+ padding: 1.5rem 0.5rem 2rem 1.5rem;
324
+ }
325
+
326
+ .pageHeader {
327
+ margin-bottom: 2rem;
328
+ }
329
+
330
+ .pageHeader .page-title {
331
+ font-size: 2rem;
332
+ }
333
+
334
+ .pageHeader .page-description {
335
+ font-size: 1rem;
336
+ }
337
+
338
+ .timelineContainer {
339
+ --tl-pad: 1.5rem;
340
+ }
341
+
342
+ .yearSection {
343
+ margin-bottom: 2rem;
344
+ }
345
+
346
+ .yearTitle {
347
+ --dot: 14px;
348
+ font-size: 1.6rem;
349
+ }
350
+
351
+ .monthTitle {
352
+ font-size: 1.2rem;
353
+ }
354
+ }
355
+
356
+ @media (max-width: 480px) {
357
+ .archivesContainer {
358
+ padding: 1.5rem 0.5rem 2rem 1.2rem;
359
+ }
360
+
361
+ .pageHeader .page-title {
362
+ font-size: 1.8rem;
363
+ }
364
+
365
+ .timelineContainer {
366
+ --tl-pad: 1.2rem;
367
+ --tl-line: 3px;
368
+ }
369
+
370
+ .yearTitle {
371
+ --dot: 12px;
372
+ font-size: 1.4rem;
373
+ }
374
+
375
+ .monthTitle {
376
+ font-size: 1.1rem;
377
+ }
378
+ }
@@ -0,0 +1,3 @@
1
+ #archs {
2
+ margin-top: 2em;
3
+ }
@@ -0,0 +1,87 @@
1
+ /* 分类卡片(扁平化展示) */
2
+ .categoryCard {
3
+ position: relative;
4
+ display: flex;
5
+ flex-direction: column;
6
+ padding: var(--space-lg);
7
+ background-color: var(--white-05p);
8
+ border-radius: 0.8rem;
9
+ border: var(--border-thin) solid var(--white-10p);
10
+ color: var(--white-full);
11
+ transition: all var(--transition-slow);
12
+ overflow: hidden;
13
+ height: fit-content;
14
+ }
15
+
16
+ .categoryCard::before {
17
+ content: "";
18
+ position: absolute;
19
+ top: 0;
20
+ left: 0;
21
+ width: 100%;
22
+ height: 100%;
23
+ background: linear-gradient(
24
+ 120deg,
25
+ rgba(255, 255, 255, 0),
26
+ rgba(255, 255, 255, 0.05),
27
+ rgba(255, 255, 255, 0)
28
+ );
29
+ transform: translateX(-100%);
30
+ transition: transform 0.6s;
31
+ z-index: 1;
32
+ }
33
+
34
+ .categoryCard:hover {
35
+ transform: translateY(-3px);
36
+ background-color: rgba(255, 255, 255, 0.08);
37
+ border-color: var(--accent-50p);
38
+ box-shadow: var(--shadow-lg);
39
+ }
40
+
41
+ .categoryCard:hover::before {
42
+ transform: translateX(100%);
43
+ }
44
+
45
+ .categoryCard:hover .categoryIcon {
46
+ transform: rotate(-15deg) translateY(-3px);
47
+ background: var(--accent-30p);
48
+ color: var(--white-90p);
49
+ box-shadow: 0 3px 8px var(--accent-30p);
50
+ opacity: 1;
51
+ }
52
+ .categoryContent {
53
+ flex: 1;
54
+ padding-right: 40px;
55
+ }
56
+
57
+ .categoryheader {
58
+ display: flex;
59
+ text-decoration: none;
60
+ color: var(--white-full);
61
+ position: relative;
62
+ align-items: center;
63
+ width: 100%;
64
+ height: 100%;
65
+ }
66
+
67
+ .categoryIcon {
68
+ position: absolute;
69
+ top: 10px;
70
+ right: 10px;
71
+ width: 28px;
72
+ height: 28px;
73
+ color: var(--white-50p);
74
+ transition: all var(--transition-slower) var(--easing-bounce);
75
+ z-index: 2;
76
+ transform-origin: center center;
77
+ background: var(--black-15p);
78
+ padding: 5px;
79
+ border-radius: var(--radius-md);
80
+ box-shadow: var(--shadow-sm);
81
+ opacity: 0.8;
82
+ }
83
+
84
+ .categoryIcon svg {
85
+ width: 100%;
86
+ height: 100%;
87
+ }
@@ -0,0 +1,27 @@
1
+ /* 分类列表 - 响应式网格布局 */
2
+
3
+ .categoriesList {
4
+ display: grid;
5
+ grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
6
+ gap: 20px;
7
+ margin: 30px auto;
8
+ padding: 0;
9
+ max-width: 1200px;
10
+ list-style: none;
11
+ }
12
+
13
+ .item {
14
+ animation: fadeInUp 0.5s ease both;
15
+ opacity: 0;
16
+ }
17
+
18
+ @keyframes fadeInUp {
19
+ from {
20
+ opacity: 0;
21
+ transform: translateY(20px);
22
+ }
23
+ to {
24
+ opacity: 1;
25
+ transform: translateY(0);
26
+ }
27
+ }
@@ -0,0 +1,73 @@
1
+ .author {
2
+ display: flex;
3
+ flex-direction: column;
4
+ justify-content: center;
5
+ border: 1px solid var(--color-border);
6
+ margin-top: 4em;
7
+ }
8
+
9
+ .authorFigure {
10
+ display: flex;
11
+ align-items: center;
12
+ justify-content: center;
13
+
14
+ img {
15
+ border-radius: 50%;
16
+ transition: transform 1s ease;
17
+ box-shadow: 0 0 10px var(--stalux-accent-color);
18
+ }
19
+
20
+ img:hover {
21
+ transform: rotate(360deg);
22
+ }
23
+
24
+ figcaption {
25
+ margin-left: 1em;
26
+ font-size: 2.5em;
27
+ font-weight: bold;
28
+ text-shadow: var(--stalux-text-shadow);
29
+ color: var(--white-full);
30
+ }
31
+ }
32
+
33
+ .figureColumn {
34
+ flex-direction: column;
35
+ }
36
+
37
+ .figureColumn figcaption {
38
+ margin-left: 0;
39
+ margin-top: 0.5em;
40
+ text-align: center;
41
+ }
42
+
43
+ /* 移动端响应式优化 */
44
+ @media (max-width: 768px) {
45
+ .author {
46
+ margin-top: 2em;
47
+ padding: 1em 0.5em;
48
+ border-width: 0.5px;
49
+ max-width: 95vw;
50
+ width: 100%;
51
+ box-sizing: border-box;
52
+ }
53
+ .authorFigure {
54
+ flex-direction: column !important;
55
+ gap: 0.5em;
56
+ }
57
+ .authorFigure img {
58
+ width: 64px !important;
59
+ height: 64px !important;
60
+ max-width: 20vw;
61
+ max-height: 20vw;
62
+ }
63
+ .authorFigure figcaption {
64
+ font-size: 1.5em;
65
+ margin-left: 0;
66
+ margin-top: 0.5em;
67
+ text-align: center;
68
+ word-break: break-all;
69
+ max-width: 90vw;
70
+ overflow-wrap: break-word;
71
+ white-space: normal;
72
+ }
73
+ }
@@ -0,0 +1,15 @@
1
+ #date-time {
2
+ display: flex;
3
+ flex-direction: column;
4
+ align-items: center;
5
+ margin-top: 2em;
6
+ text-shadow: var(--stalux-text-shadow);
7
+ color: var(--white-full);
8
+ #date {
9
+ font-size: 2em;
10
+ margin-bottom: 0.5em;
11
+ }
12
+ #time {
13
+ font-size: 3em;
14
+ }
15
+ }
@@ -0,0 +1,10 @@
1
+ .typeWriter {
2
+ font-size: 2.5em; /* 放大字体 */
3
+ margin-top: 1.5em;
4
+ text-shadow: var(--stalux-text-shadow);
5
+ text-align: center; /* 确保水平居中 */
6
+ display: flex;
7
+ justify-content: center; /* 额外确保居中,如果需要 */
8
+ width: 100%;
9
+ min-height: 2em;
10
+ }
@@ -0,0 +1,44 @@
1
+ .siteFooter {
2
+ width: 100%;
3
+ padding: 1.5rem 0;
4
+ text-align: center;
5
+ margin-top: auto;
6
+ font-size: 0.9rem;
7
+ color: var(--white-full);
8
+ background-color: rgba(0, 0, 0, 0.1);
9
+ backdrop-filter: blur(10px);
10
+ }
11
+
12
+ .footerContent {
13
+ display: flex;
14
+ flex-direction: column;
15
+ gap: 0.8rem;
16
+ max-width: 1200px;
17
+ margin: 0 auto;
18
+ padding: 0 1rem;
19
+ }
20
+
21
+ /* 响应式设计 */
22
+ @media (max-width: 768px) {
23
+ .siteFooter {
24
+ padding: 1.2rem 0;
25
+ font-size: 0.8rem;
26
+ }
27
+
28
+ .footerContent {
29
+ gap: 0.6rem;
30
+ padding: 0 0.8rem;
31
+ }
32
+ }
33
+
34
+ @media (max-width: 480px) {
35
+ .siteFooter {
36
+ padding: 1rem 0;
37
+ font-size: 0.8rem;
38
+ }
39
+
40
+ .footerContent {
41
+ gap: 0.6rem;
42
+ padding: 0 0.8rem;
43
+ }
44
+ }