hexo-theme-stellar 1.44.0 → 2.0.0-rc.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (377) hide show
  1. package/CHANGELOG.md +63 -5
  2. package/CONTRIBUTING.md +29 -120
  3. package/README.md +66 -73
  4. package/README_EN.md +66 -73
  5. package/_config.yml +890 -743
  6. package/_data/icons.yml +43 -171
  7. package/_data/widgets.yml +1 -1
  8. package/assets/icon-v2-x512.webp +0 -0
  9. package/languages/en.yml +59 -2
  10. package/languages/zh-CN.yml +59 -2
  11. package/languages/zh-TW.yml +59 -2
  12. package/layout/404.ejs +7 -4
  13. package/layout/_partial/comments/artalk/layout.ejs +3 -2
  14. package/layout/_partial/comments/beaudar/layout.ejs +2 -2
  15. package/layout/_partial/comments/giscus/layout.ejs +2 -5
  16. package/layout/_partial/comments/layout.ejs +11 -40
  17. package/layout/_partial/comments/twikoo/layout.ejs +3 -2
  18. package/layout/_partial/comments/utterances/layout.ejs +2 -2
  19. package/layout/_partial/comments/waline/layout.ejs +3 -2
  20. package/layout/_partial/components/collection-item.ejs +30 -13
  21. package/layout/_partial/components/collection.ejs +2 -2
  22. package/layout/_partial/cover/index.ejs +5 -2
  23. package/layout/_partial/cover/wiki_cover.ejs +39 -28
  24. package/layout/_partial/dropdown.ejs +26 -14
  25. package/layout/_partial/head.ejs +96 -69
  26. package/layout/_partial/main/article/contributors.ejs +12 -9
  27. package/layout/_partial/main/article/post_footer.ejs +47 -0
  28. package/layout/_partial/main/article/post_read_next.ejs +22 -0
  29. package/layout/_partial/main/article/post_related.ejs +14 -0
  30. package/layout/_partial/main/article/post_tags.ejs +12 -0
  31. package/layout/_partial/main/article/share.ejs +55 -0
  32. package/layout/_partial/main/footer.ejs +11 -10
  33. package/layout/_partial/main/{navbar/nav_tabs_blog.ejs → listing_nav/blog.ejs} +21 -18
  34. package/layout/_partial/main/listing_nav/wiki.ejs +56 -0
  35. package/layout/_partial/main/navbar/article_banner.ejs +39 -35
  36. package/layout/_partial/main/navbar/breadcrumb/blog.ejs +15 -28
  37. package/layout/_partial/main/navbar/breadcrumb/note.ejs +12 -5
  38. package/layout/_partial/main/navbar/breadcrumb/wiki.ejs +15 -11
  39. package/layout/_partial/main/navbar/dateinfo.ejs +28 -12
  40. package/layout/_partial/main/navbar/ghinfo.ejs +5 -3
  41. package/layout/_partial/main/notebook/note_card.ejs +12 -17
  42. package/layout/_partial/main/notebook/note_tags.ejs +3 -4
  43. package/layout/_partial/main/notebook/notebook_card.ejs +11 -4
  44. package/layout/_partial/main/pin_slider.ejs +48 -43
  45. package/layout/_partial/main/post_list/archive_item.ejs +8 -4
  46. package/layout/_partial/main/post_list/latest_post_card.ejs +10 -4
  47. package/layout/_partial/main/post_list/post_card.ejs +39 -90
  48. package/layout/_partial/main/post_list/topic_card.ejs +7 -5
  49. package/layout/_partial/main/post_list/wiki_card.ejs +16 -13
  50. package/layout/_partial/menubtn.ejs +3 -3
  51. package/layout/_partial/primitives/item.ejs +8 -0
  52. package/layout/_partial/primitives/navigation.ejs +17 -0
  53. package/layout/_partial/primitives/region.ejs +16 -0
  54. package/layout/_partial/primitives/section.ejs +8 -0
  55. package/layout/_partial/primitives/shell.ejs +35 -0
  56. package/layout/_partial/regions/widgets.ejs +84 -0
  57. package/layout/_partial/scripts/defines.ejs +46 -76
  58. package/layout/_partial/scripts/runtime.ejs +55 -0
  59. package/layout/_partial/scripts.ejs +18 -42
  60. package/layout/_partial/search/dialog.ejs +33 -0
  61. package/layout/_partial/search/shortcut.ejs +1 -0
  62. package/layout/_partial/sidebar/brand.ejs +127 -0
  63. package/layout/_partial/sidebar/menu.ejs +59 -14
  64. package/layout/_partial/sidebar/search.ejs +58 -41
  65. package/layout/_partial/widgets/actions.ejs +25 -0
  66. package/layout/_partial/widgets/author.ejs +9 -5
  67. package/layout/_partial/widgets/components/linklist.ejs +1 -2
  68. package/layout/_partial/widgets/ghissues.ejs +7 -10
  69. package/layout/_partial/widgets/ghrepo.ejs +23 -16
  70. package/layout/_partial/widgets/ghuser.ejs +3 -3
  71. package/layout/_partial/widgets/recent.ejs +25 -21
  72. package/layout/_partial/widgets/related.ejs +25 -34
  73. package/layout/_partial/widgets/settings.ejs +17 -0
  74. package/layout/_partial/widgets/tagtree.ejs +18 -10
  75. package/layout/_partial/widgets/toc.ejs +17 -9
  76. package/layout/_partial/widgets/tree.ejs +12 -13
  77. package/layout/archive.ejs +20 -13
  78. package/layout/categories.ejs +4 -3
  79. package/layout/collection-preview.ejs +8 -9
  80. package/layout/index.ejs +32 -43
  81. package/layout/index_topic.ejs +6 -13
  82. package/layout/index_wiki.ejs +17 -34
  83. package/layout/layout.ejs +195 -65
  84. package/layout/notebooks.ejs +3 -3
  85. package/layout/notes.ejs +4 -4
  86. package/layout/page.ejs +95 -50
  87. package/layout/settings.ejs +109 -0
  88. package/layout/tags.ejs +4 -3
  89. package/{THIRD-PARTY-NOTICES.md → legal/THIRD-PARTY-NOTICES.md} +8 -4
  90. package/package.json +28 -6
  91. package/scripts/commands/stellar.js +55 -0
  92. package/scripts/events/index.js +15 -9
  93. package/scripts/events/lib/authors.js +9 -7
  94. package/scripts/events/lib/config-hot-reload.js +65 -0
  95. package/scripts/events/lib/config-schema.js +20 -0
  96. package/scripts/events/lib/config.js +22 -63
  97. package/scripts/events/lib/content-config.js +5 -0
  98. package/scripts/events/lib/doc_tree.js +99 -9
  99. package/scripts/events/lib/links.js +6 -3
  100. package/scripts/events/lib/notebooks.js +200 -8
  101. package/scripts/events/lib/utils.js +4 -4
  102. package/scripts/events/lib/version-check.js +57 -3
  103. package/scripts/filters/index.js +2 -27
  104. package/scripts/filters/lib/img_lazyload.js +4 -126
  105. package/scripts/filters/lib/img_onerror.js +14 -17
  106. package/scripts/filters/lib/page-view-model.js +152 -0
  107. package/scripts/generators/404.js +13 -8
  108. package/scripts/generators/author.js +16 -11
  109. package/scripts/generators/notebooks.js +68 -39
  110. package/scripts/generators/search.js +62 -67
  111. package/scripts/generators/settings.js +43 -0
  112. package/scripts/generators/stellar-icons.js +13 -5
  113. package/scripts/generators/topic.js +24 -13
  114. package/scripts/generators/wiki.js +49 -21
  115. package/scripts/helpers/ai_label.js +6 -12
  116. package/scripts/helpers/brand.js +17 -0
  117. package/scripts/helpers/browser_runtime_manifest.js +12 -0
  118. package/scripts/helpers/caption.js +8 -0
  119. package/scripts/helpers/category_color.js +13 -13
  120. package/scripts/helpers/collection.js +18 -0
  121. package/scripts/helpers/comments_model.js +14 -0
  122. package/scripts/helpers/extension_assets.js +8 -0
  123. package/scripts/helpers/json_ld.js +16 -7
  124. package/scripts/helpers/mdrender.js +3 -9
  125. package/scripts/helpers/menu.js +9 -0
  126. package/scripts/helpers/post_view_model.js +23 -0
  127. package/scripts/helpers/regions.js +37 -0
  128. package/scripts/helpers/scrollreveal.js +7 -7
  129. package/scripts/helpers/search_domain.js +34 -0
  130. package/scripts/helpers/service_provider.js +9 -0
  131. package/scripts/helpers/settings.js +16 -0
  132. package/scripts/helpers/share_action.js +8 -0
  133. package/scripts/helpers/stellar_config.js +12 -0
  134. package/scripts/helpers/stellar_data.js +8 -0
  135. package/scripts/helpers/stellar_info.js +21 -16
  136. package/scripts/helpers/stellar_inject.js +9 -0
  137. package/scripts/helpers/ui_classes.js +12 -0
  138. package/scripts/lib/ai_label.js +14 -11
  139. package/scripts/lib/brand.js +41 -0
  140. package/scripts/lib/browser-runtime.js +115 -0
  141. package/scripts/lib/caption.js +21 -0
  142. package/scripts/lib/collection-pipeline/adapters/notebook.js +62 -0
  143. package/scripts/lib/collection-pipeline/adapters/post.js +20 -0
  144. package/scripts/lib/collection-pipeline/adapters/topic.js +82 -0
  145. package/scripts/lib/collection-pipeline/adapters/wiki.js +20 -0
  146. package/scripts/lib/collection-pipeline/index.js +169 -0
  147. package/scripts/lib/collection-pipeline/registry.js +27 -0
  148. package/scripts/lib/collection-pipeline/shared.js +164 -0
  149. package/scripts/lib/comments.js +60 -0
  150. package/scripts/lib/config-inject.js +20 -0
  151. package/scripts/lib/config-schema.js +1095 -0
  152. package/scripts/lib/content-config.js +157 -0
  153. package/scripts/lib/content-defaults.js +56 -0
  154. package/scripts/lib/content-membership.js +233 -0
  155. package/scripts/lib/contribution-contract.js +165 -0
  156. package/scripts/lib/contribution-registry.js +429 -0
  157. package/scripts/lib/doc_tree.js +46 -44
  158. package/scripts/lib/doctor.js +296 -0
  159. package/scripts/lib/front-matter.js +29 -0
  160. package/scripts/lib/hero-effect-registry.js +262 -0
  161. package/scripts/lib/html-images.js +128 -0
  162. package/scripts/lib/internal-constants.js +152 -0
  163. package/scripts/lib/layout-config.js +62 -0
  164. package/scripts/lib/mdrender_html.js +36 -23
  165. package/scripts/lib/menu.js +36 -0
  166. package/scripts/lib/model-schema.js +90 -0
  167. package/scripts/lib/models/index.js +1542 -0
  168. package/scripts/lib/new-note.js +172 -0
  169. package/scripts/lib/page-view-model-registry.js +103 -0
  170. package/scripts/lib/regions.js +132 -0
  171. package/scripts/lib/runtime-data.js +23 -0
  172. package/scripts/lib/safe-path.js +44 -0
  173. package/scripts/lib/search-domain.js +59 -0
  174. package/scripts/lib/seo.js +10 -10
  175. package/scripts/lib/service-provider.js +12 -0
  176. package/scripts/lib/settings.js +16 -0
  177. package/scripts/lib/share-services.js +96 -0
  178. package/scripts/lib/source-config.js +27 -0
  179. package/scripts/lib/theme-metadata.js +22 -0
  180. package/scripts/lib/ui-capabilities.js +32 -0
  181. package/scripts/lib/widget-registry.js +150 -0
  182. package/scripts/lib/wiki_readme.js +15 -11
  183. package/scripts/schema/config-rules.js +290 -0
  184. package/scripts/schema/config-schema.js +163 -0
  185. package/scripts/schema/content-config-rules.js +264 -0
  186. package/scripts/schema/content-config-schema.js +321 -0
  187. package/scripts/schema/model-schema.js +971 -0
  188. package/scripts/schema/schema-utils.js +48 -0
  189. package/scripts/tags/index.js +2 -3
  190. package/scripts/tags/lib/albums.js +6 -6
  191. package/scripts/tags/lib/banner.js +10 -4
  192. package/scripts/tags/lib/box.js +1 -1
  193. package/scripts/tags/lib/button.js +1 -1
  194. package/scripts/tags/lib/chat.js +9 -31
  195. package/scripts/tags/lib/checkbox.js +6 -1
  196. package/scripts/tags/lib/copy.js +4 -1
  197. package/scripts/tags/lib/dropdown.js +6 -4
  198. package/scripts/tags/lib/emoji.js +5 -10
  199. package/scripts/tags/lib/friends.js +4 -4
  200. package/scripts/tags/lib/gallery.js +7 -7
  201. package/scripts/tags/lib/ghcard.js +5 -3
  202. package/scripts/tags/lib/gist.js +16 -0
  203. package/scripts/tags/lib/grid.js +4 -2
  204. package/scripts/tags/lib/hashtag.js +1 -1
  205. package/scripts/tags/lib/icon.js +1 -1
  206. package/scripts/tags/lib/image.js +1 -1
  207. package/scripts/tags/lib/link.js +6 -3
  208. package/scripts/tags/lib/mark.js +8 -3
  209. package/scripts/tags/lib/md.js +1 -1
  210. package/scripts/tags/lib/note.js +1 -1
  211. package/scripts/tags/lib/okr.js +18 -1
  212. package/scripts/tags/lib/posters.js +6 -6
  213. package/scripts/tags/lib/quot.js +15 -5
  214. package/scripts/tags/lib/rating.js +7 -4
  215. package/scripts/tags/lib/sites.js +8 -6
  216. package/scripts/tags/lib/tip.js +6 -6
  217. package/scripts/tags/lib/toc.js +2 -2
  218. package/scripts/tags/lib/vote.js +8 -5
  219. package/source/css/_appearances/_mixins.styl +258 -0
  220. package/source/css/_appearances/card.styl +30 -0
  221. package/source/css/_appearances/flat.styl +44 -0
  222. package/source/css/_appearances/glass.styl +138 -0
  223. package/source/css/_appearances/minimal.styl +325 -0
  224. package/source/css/_common/base.styl +5 -9
  225. package/source/css/_common/blockquote.styl +0 -1
  226. package/source/css/_common/button.styl +1 -1
  227. package/source/css/_common/device.styl +24 -42
  228. package/source/css/_common/dropdown.styl +20 -14
  229. package/source/css/_common/highlight.styl +5 -12
  230. package/source/css/_common/icon.styl +38 -0
  231. package/source/css/_common/input.styl +33 -0
  232. package/source/css/_common/loading.styl +2 -2
  233. package/source/css/_common/svg.styl +0 -8
  234. package/source/css/_components/collection.styl +21 -64
  235. package/source/css/_components/layout.styl +524 -84
  236. package/source/css/_components/list.styl +36 -22
  237. package/source/css/_components/main.styl +16 -19
  238. package/source/css/_components/md.styl +8 -13
  239. package/source/css/_components/pages/article-indent.styl +1 -1
  240. package/source/css/_components/pages/article-story.styl +7 -6
  241. package/source/css/_components/pages/article-tech.styl +5 -5
  242. package/source/css/_components/pages/collection-preview.styl +1 -5
  243. package/source/css/_components/pages/settings.styl +184 -0
  244. package/source/css/_components/partial/article-banner.styl +2 -2
  245. package/source/css/_components/partial/article-footer.styl +0 -32
  246. package/source/css/_components/partial/article-share.styl +48 -0
  247. package/source/css/_components/partial/article-tags.styl +1 -1
  248. package/source/css/_components/partial/cover.styl +13 -13
  249. package/source/css/_components/partial/listing-nav.styl +68 -0
  250. package/source/css/_components/partial/paginator.styl +1 -1
  251. package/source/css/_components/pin-slider.styl +3 -3
  252. package/source/css/_components/sidebar/brand.styl +135 -0
  253. package/source/css/_components/sidebar/footer.styl +14 -31
  254. package/source/css/_components/sidebar/nav-area.styl +4 -0
  255. package/source/css/_components/sidebar/search.styl +176 -26
  256. package/source/css/_components/sidebar/sidebar.styl +76 -110
  257. package/source/css/_components/tag-plugins/banner.styl +16 -28
  258. package/source/css/_components/tag-plugins/checkbox.styl +7 -22
  259. package/source/css/_components/tag-plugins/copy.styl +3 -5
  260. package/source/css/_components/tag-plugins/gallery.styl +2 -2
  261. package/source/css/_components/tag-plugins/grid.styl +3 -0
  262. package/source/css/_components/tag-plugins/image.styl +2 -1
  263. package/source/css/_components/tag-plugins/link.styl +0 -1
  264. package/source/css/_components/tag-plugins/mark.styl +19 -4
  265. package/source/css/_components/tag-plugins/mdrender.styl +2 -2
  266. package/source/css/_components/tag-plugins/navbar.styl +23 -17
  267. package/source/css/_components/tag-plugins/note.styl +2 -2
  268. package/source/css/_components/tag-plugins/okr.styl +1 -2
  269. package/source/css/_components/tag-plugins/quot.styl +5 -0
  270. package/source/css/_components/tag-plugins/rating.styl +3 -2
  271. package/source/css/_components/tag-plugins/timeline.styl +1 -1
  272. package/source/css/_components/tag-plugins/tip.styl +1 -1
  273. package/source/css/_components/tag-plugins/vote.styl +3 -2
  274. package/source/css/_components/widgets/ghrepo.styl +2 -1
  275. package/source/css/_components/widgets/ghuser.styl +4 -6
  276. package/source/css/_components/widgets/settings.styl +49 -0
  277. package/source/css/_components/widgets/timeline.styl +2 -2
  278. package/source/css/_components/widgets/toc.styl +12 -33
  279. package/source/css/_components/widgets/widgets.styl +14 -19
  280. package/source/css/_components/wiki-card.styl +2 -2
  281. package/source/css/_custom.styl +26 -32
  282. package/source/css/_defines/func.styl +47 -37
  283. package/source/css/_defines/theme_base.styl +8 -10
  284. package/source/css/_plugins/card-hover.styl +1 -1
  285. package/source/css/_plugins/copycode.styl +16 -19
  286. package/source/css/_plugins/index.styl +3 -8
  287. package/source/css/_plugins/lazyload.styl +1 -1
  288. package/source/css/main.styl +12 -0
  289. package/source/js/main.js +302 -59
  290. package/source/js/plugins/adaptive-text.js +33 -16
  291. package/source/js/plugins/card-hover.js +2 -24
  292. package/source/js/plugins/copycode.js +10 -16
  293. package/source/js/plugins/voice.js +51 -48
  294. package/source/js/profile.js +316 -0
  295. package/source/js/runtime/asset-loader.js +61 -0
  296. package/source/js/runtime/extension-registry.js +149 -0
  297. package/source/js/runtime/extensions/card-hover.js +5 -0
  298. package/source/js/runtime/extensions/color-scheme-switch.js +101 -0
  299. package/source/js/runtime/extensions/comments.js +200 -0
  300. package/source/js/runtime/extensions/deferred-icons.js +53 -0
  301. package/source/js/{plugins → runtime/extensions}/dropdown.js +69 -30
  302. package/source/js/runtime/extensions/feature.js +200 -0
  303. package/source/js/runtime/extensions/hero-effect.js +179 -0
  304. package/source/js/runtime/extensions/reveal.js +80 -0
  305. package/source/js/runtime/extensions/search.js +23 -0
  306. package/source/js/{services.js → runtime/extensions/services.js} +67 -54
  307. package/source/js/runtime/extensions/settings.js +235 -0
  308. package/source/js/runtime/hero-effects/ferrofluid.js +385 -0
  309. package/source/js/{plugins → runtime/hero-effects}/galaxy.js +53 -177
  310. package/source/js/runtime/hero-effects/light-rays.js +293 -0
  311. package/source/js/runtime/index.js +75 -0
  312. package/source/js/runtime/legacy-request-adapter.js +47 -0
  313. package/source/js/runtime/request-cache.js +219 -0
  314. package/source/js/search/algolia-search.js +76 -51
  315. package/source/js/search/highlight.js +1 -1
  316. package/source/js/search/local-search.js +96 -57
  317. package/source/js/search/shortcut.js +31 -20
  318. package/source/js/services/friends_and_posts.js +6 -1
  319. package/source/js/services/rating.js +14 -6
  320. package/source/js/services/siteinfo.js +3 -7
  321. package/source/js/services/timeline.js +1 -1
  322. package/source/js/services/vote.js +7 -5
  323. package/source/js/services/weibo.js +1 -1
  324. package/source/js/utils.js +19 -444
  325. package/.claude/skills/stellar-theme-dev/SKILL.md +0 -51
  326. package/_data/chat_users.yml +0 -0
  327. package/layout/_partial/comments/artalk/script.ejs +0 -76
  328. package/layout/_partial/comments/beaudar/script.ejs +0 -33
  329. package/layout/_partial/comments/giscus/script.ejs +0 -31
  330. package/layout/_partial/comments/script.ejs +0 -3
  331. package/layout/_partial/comments/twikoo/script.ejs +0 -25
  332. package/layout/_partial/comments/utterances/script.ejs +0 -33
  333. package/layout/_partial/comments/waline/script.ejs +0 -43
  334. package/layout/_partial/main/article/article_footer.ejs +0 -164
  335. package/layout/_partial/main/article/article_tags.ejs +0 -16
  336. package/layout/_partial/main/article/read_next.ejs +0 -63
  337. package/layout/_partial/main/article/related_posts.ejs +0 -16
  338. package/layout/_partial/main/navbar/nav_tabs_wiki.ejs +0 -52
  339. package/layout/_partial/scripts/bootstrap.ejs +0 -37
  340. package/layout/_partial/scripts/lazyload.ejs +0 -89
  341. package/layout/_partial/sidebar/grad-def.ejs +0 -26
  342. package/layout/_partial/sidebar/index_leftbar.ejs +0 -191
  343. package/layout/_partial/sidebar/index_rightbar.ejs +0 -94
  344. package/layout/_partial/sidebar/logo.ejs +0 -99
  345. package/layout/_plugins/adaptive_text.ejs +0 -11
  346. package/layout/_plugins/card_hover.ejs +0 -32
  347. package/layout/_plugins/copycode.ejs +0 -17
  348. package/layout/_plugins/fancybox.ejs +0 -53
  349. package/layout/_plugins/heti.ejs +0 -21
  350. package/layout/_plugins/index.ejs +0 -50
  351. package/layout/_plugins/mathjax.ejs +0 -49
  352. package/layout/_plugins/mermaid.ejs +0 -33
  353. package/layout/_plugins/preload.ejs +0 -9
  354. package/layout/_plugins/scrollreveal.ejs +0 -102
  355. package/layout/_plugins/search/algolia_search.ejs +0 -12
  356. package/layout/_plugins/search/local_search.ejs +0 -9
  357. package/layout/_plugins/swiper.ejs +0 -27
  358. package/layout/_plugins/tianli_gpt.ejs +0 -14
  359. package/scripts/commands/new-note.js +0 -49
  360. package/scripts/events/lib/merge_posts.js +0 -48
  361. package/scripts/events/lib/topic_tree.js +0 -48
  362. package/scripts/helpers/related_posts.js +0 -51
  363. package/scripts/helpers/subtitle.js +0 -8
  364. package/scripts/lib/notebooks.js +0 -181
  365. package/scripts/lib/subtitle.js +0 -28
  366. package/scripts/tags/lib/about.js +0 -48
  367. package/source/css/_components/page-transition.styl +0 -22
  368. package/source/css/_components/partial/navbar.styl +0 -51
  369. package/source/css/_components/sidebar/logo.styl +0 -111
  370. package/source/css/_components/tag-plugins/about.styl +0 -56
  371. package/source/css/_components/widgets/tree.styl +0 -0
  372. package/source/css/_plugins/scrollreveal.styl +0 -6
  373. package/source/css/_plugins/tianli_gpt.styl +0 -213
  374. package/source/css/plugins/mermaid.styl +0 -137
  375. package/source/js/icons.js +0 -60
  376. package/source/js/services/fcircle.js +0 -35
  377. package/source/js/theme.js +0 -61
@@ -1,51 +0,0 @@
1
- .navbar
2
- z-index: 8
3
- top: var(--gap-page)
4
- position: sticky
5
- position: -webkit-sticky
6
-
7
- .navbar-blur
8
- margin: 0 1rem
9
- position: relative
10
- border-radius: $border-bar-container
11
- corner-shape: $corner-shape
12
- trans1: all
13
- // 未吸顶:卡片样式(var(--card) 底色 + 文章卡片同款阴影),与文章卡片一致
14
- background: var(--card)
15
- box-shadow: $boxshadow-card
16
- // 吸顶后恢复玻璃效果(bar-glass()),与之前行为一致
17
- &.pinned
18
- bar-glass()
19
- background: transparent
20
-
21
- .navbar-container
22
- max-width: 100%
23
- border-radius: $border-bar-container
24
- overflow: scroll visible
25
- scrollbar(0, 0)
26
-
27
- .navbar nav
28
- display: inline-flex
29
- font-size: $fs-14
30
- gap: $bar-item-gap
31
- padding: $bar-item-gap
32
- z-index: 1
33
- >p
34
- margin: 0
35
- a
36
- bar-item()
37
- &:hover
38
- background: var(--bg-a50)
39
- &.active, &:hover
40
- color: var(--text)
41
- &.active
42
- bar-item-active()
43
- cursor default
44
- pointer-events: none
45
- &.active:after
46
- content: ''
47
-
48
- @media screen and (max-width: $device-mobile-max)
49
- .navbar.top
50
- top: 8pt
51
-
@@ -1,111 +0,0 @@
1
- .logo-wrap
2
- display: flex
3
- align-items: center
4
- overflow: hidden
5
- min-height: 48px
6
- img.avatar
7
- object-fit: cover
8
- img.icon
9
- object-fit: contain
10
- .icon
11
- width: 48px
12
- height: 48px
13
- margin-right: 1rem
14
- border-radius: 4px
15
- flex-shrink: 0
16
- a
17
- color: inherit
18
- display: flex
19
- align-items: center
20
- a.avatar
21
- display: block
22
- position: relative
23
- width: 48px
24
- height: 48px
25
- flex-shrink: 0
26
- border-radius: 48px
27
- corner-shape: round // 保持正圆(连续曲率会使正圆变成类方形曲线)
28
- overflow: hidden
29
- margin-right: 1rem
30
- div.bg
31
- width: 100%
32
- height: 100%
33
- background: convert(hexo-config('style.gradient.avatar'))
34
- img.avatar
35
- margin: 2px
36
- width: "calc(100% - 2 * %s)" % @margin
37
- height: "calc(100% - 2 * %s)" % @margin
38
- border-radius: @width
39
- corner-shape: round
40
- if hexo-config('style.animated_avatar.animate')
41
- div.bg
42
- trans1: opacity
43
- position: absolute
44
- opacity: 0 !important
45
- z-index: -1
46
- @keyframes spin
47
- from
48
- transform:rotate(0deg)
49
- to
50
- transform:rotate(360deg)
51
- if hexo-config('style.animated_avatar.animate') == 'always'
52
- div.bg
53
- opacity: 1 !important
54
- animation: spin infinite 4s
55
- animation-timing-function: linear
56
- if hexo-config('style.animated_avatar.animate') == 'auto'
57
- &:hover
58
- div.bg
59
- opacity: 1 !important
60
- animation: spin infinite 4s
61
- animation-timing-function: linear
62
-
63
- a.title
64
- font-size: 1.5rem
65
- font-weight: 900
66
- color: inherit
67
- line-height: 1.2
68
- display: block
69
- position: relative
70
- .main
71
- color: var(--text)
72
- .sub
73
- color: var(--text-p1)
74
- trans2 opacity transform
75
- white-space: nowrap
76
- .hover
77
- position: absolute
78
- bottom: 0
79
- transform: translateY(8px)
80
- overflow: visible
81
- &:hover
82
- .normal
83
- opacity: 0
84
- transform: translateY(-8px)
85
- .hover
86
- transform: translateY(0)
87
- opacity: 1 !important
88
-
89
- .wiki-home-wrap
90
- margin: 1rem var(--gap-base) .5rem
91
-
92
- .wiki-home
93
- display: flex
94
- width: fit-content
95
- align-items: center
96
- padding: 6px 16px 6px 12px
97
- border-radius: 32px
98
- sidebar-light()
99
- color: var(--text-p2)
100
- font-size: $fs-13
101
- trans2 color background
102
- svg
103
- height: 1em
104
- width: auto
105
- margin-right: 0.25rem
106
- &:hover
107
- color: var(--text-p1)
108
- sidebar-light()
109
-
110
- .l_left .wiki-home-wrap + .header
111
- margin-top: 0.5rem
@@ -1,56 +0,0 @@
1
- .tag-plugin.about
2
- background: var(--block)
3
- border-radius: $border-card
4
- padding: 2rem
5
- position: relative
6
- .nav-back
7
- display: none
8
- position: absolute
9
- line-height: 1
10
- overflow: hidden
11
- left: 0.75rem
12
- top: 0.75rem
13
- align-items: center
14
- @media screen and (max-width: $device-mobile-max)
15
- display: flex
16
- svg
17
- width: 1rem
18
- height: 1rem
19
- .about-header
20
- display: flex
21
- justify-content: center
22
- flex-wrap: wrap
23
- margin: 1.5rem 0
24
- img
25
- object-fit: contain
26
- >img
27
- margin: auto 0
28
- >p
29
- font-size: $fs-12
30
- font-weight: 500
31
- color: var(--text-p3)
32
- padding-top: 0.75rem
33
- strong:first-child
34
- font-size: 3rem
35
- font-weight: 700
36
- color: var(--text-p1)
37
- margin-right: 0.75rem
38
- .avatar
39
- display: inline-flex
40
- margin: 0 1rem
41
- .about-body
42
- >p
43
- line-height: 1.5
44
- &:first-child
45
- margin-top: 2.5rem
46
- p+.tag-plugin.navbar .cap
47
- margin-top: 1rem
48
- .about-header+.about-body
49
- margin-top: 2rem
50
-
51
- @media screen and (max-width: $device-mobile)
52
- .tag-plugin.about
53
- padding: 2rem 1rem
54
- .about-header
55
- p
56
- width 100%
File without changes
@@ -1,6 +0,0 @@
1
- .slide-up
2
- visibility: hidden
3
-
4
- // ScrollReveal 加载/初始化失败时强制显示内容,避免空白页
5
- html.sr-fallback .slide-up
6
- visibility: visible !important
@@ -1,213 +0,0 @@
1
- :root
2
- --ai-font-color var(--text-p2)
3
- --ai-post-bg var(--block)
4
- --ai-content-bg var(--background)
5
- --ai-content-border 1px solid var(--block-border)
6
- --ai-border 1px solid var(--block-border)
7
- --ai-tag-bg var(--card)
8
- --ai-cursor var(--text-p1)
9
- --ai-btn-bg var(--card)
10
- --ai-title-color var(--text-p1)
11
- --ai-btn-color var(--text-p2)
12
- --ai-speech-content #fff
13
-
14
- #post-ai.post-ai
15
- background var(--ai-post-bg)
16
- border-radius $border-card
17
- padding 10px 12px 11px
18
- line-height 1.3
19
- border var(--ai-border)
20
- margin-top 10px
21
- margin-bottom 6px
22
- transition all 0.3s
23
- -webkit-transition all 0.3s
24
- -moz-transition all 0.3s
25
- -ms-transition all 0.3s
26
- -o-transition all 0.3s
27
-
28
- #post-ai .ai-title
29
- display flex
30
- color var(--ai-title-color)
31
- border-radius 8px
32
- align-items center
33
- padding 0 6px
34
- position relative
35
-
36
- #post-ai .ai-title i
37
- font-weight 800
38
-
39
- #post-ai .ai-title-text
40
- font-weight bold
41
- margin-left 8px
42
- font-size 17px
43
-
44
- #post-ai .ai-tag
45
- font-size 12px
46
- background-color var(--ai-tag-bg)
47
- color var(--ai-btn-color)
48
- border-radius 4px
49
- margin-left auto
50
- line-height 1
51
- padding 4px 5px
52
- border var(--ai-border)
53
-
54
- #post-ai .ai-explanation
55
- margin-top 10px
56
- padding 8px 12px
57
- background var(--ai-content-bg)
58
- border-radius $border-card
59
- border var(--ai-content-border)
60
- font-size 15.5px
61
- line-height 1.4
62
- color var(--ai-font-color)
63
-
64
- #post-ai .ai-cursor
65
- display inline-block
66
- border-radius 50%
67
- corner-shape round
68
- background var(--ai-cursor)
69
- width: 12px
70
- height: 12px
71
- opacity 0.95
72
- margin-left 3px
73
- transition all 0.3s
74
- -webkit-transition all 0.3s
75
- -moz-transition all 0.3s
76
- -ms-transition all 0.3s
77
- -o-transition all 0.3s
78
-
79
- #post-ai .ai-btn-box
80
- font-size 15.5px
81
- width 100%
82
- display flex
83
- flex-direction row
84
- flex-wrap wrap
85
-
86
- #post-ai .ai-btn-item
87
- padding 5px 10px
88
- margin 10px 16px 0px 5px
89
- width fit-content
90
- line-height 1
91
- background var(--ai-btn-bg)
92
- border var(--ai-border)
93
- color var(--ai-btn-color)
94
- border-radius 6px
95
- user-select none
96
- transition all 0.3s
97
- -webkit-transition all 0.3s
98
- -moz-transition all 0.3s
99
- -ms-transition all 0.3s
100
- -o-transition all 0.3s
101
- cursor pointer
102
-
103
- #post-ai .ai-btn-item:hover
104
- background var(--link)
105
-
106
- #post-ai .ai-recommend
107
- display flex
108
- flex-direction row
109
- flex-wrap wrap
110
-
111
- #post-ai .ai-recommend-item
112
- width 50%
113
- margin-top 2px
114
-
115
- #post-ai .ai-recommend-item a
116
- border-bottom 2px solid var(--link)
117
- padding 0 .2em
118
- color var(--link)
119
- font-weight 700
120
- text-decoration none
121
- transition all 0.3s
122
- -webkit-transition all 0.3s
123
- -moz-transition all 0.3s
124
- -ms-transition all 0.3s
125
- -o-transition all 0.3s
126
-
127
- #post-ai .ai-recommend-item a:hover
128
- background-color var(--link)
129
- border-bottom 2px solid var(--link)
130
- color #fff
131
- border-radius 5px
132
-
133
- @media screen and (max-width: 768px)
134
- #post-ai .ai-btn-box
135
- justify-content center
136
-
137
- #post-ai .ai-title>svg
138
- width 21px
139
- height 21px
140
-
141
- #post-ai .ai-title>svg path
142
- fill var(--ai-font-color)
143
-
144
- #post-ai .ai-Toggle
145
- font-size 12px
146
- border var(--ai-border)
147
- background var(--ai-btn-bg)
148
- color var(--ai-btn-color)
149
- padding 3px 4px
150
- border-radius 4px
151
- margin-left 6px
152
- cursor pointer
153
- -webkit-transition .3s
154
- -moz-transition .3s
155
- -o-transition .3s
156
- -ms-transition .3s
157
- transition .3s
158
- font-weight bolder
159
- pointer-events none
160
- opacity 0
161
-
162
- #post-ai .ai-Toggle:hover
163
- background var(--theme)
164
-
165
- #post-ai .ai-speech-box
166
- width 21px
167
- height 21px
168
- background var(--ai-font-color)
169
- margin-left 7px
170
- border-radius 50%
171
- corner-shape round
172
- display flex
173
- flex-direction row
174
- flex-wrap wrap
175
- align-content center
176
- justify-content center
177
- pointer-events none
178
- opacity 0
179
- -webkit-transition .3s
180
- -moz-transition .3s
181
- -o-transition .3s
182
- -ms-transition .3s
183
- transition .3s
184
- cursor pointer
185
-
186
- #post-ai .ai-speech-content
187
- width 8px
188
- background var(--ai-speech-content)
189
- height 8px
190
- border-radius 50%
191
- corner-shape round
192
- -webkit-transition .3s
193
- -moz-transition .3s
194
- -o-transition .3s
195
- -ms-transition .3s
196
- transition .3s
197
-
198
- #post-ai .ai-speech-box:hover .ai-speech-content
199
- background var(--theme)
200
-
201
- @keyframes ai_breathe
202
- 0%
203
- transform scale(0.9)
204
- -webkit-transform scale(0.9)
205
- -moz-transform scale(0.9)
206
- -ms-transform scale(0.9)
207
- -o-transform scale(0.9)
208
- 50%
209
- transform scale(1)
210
- -webkit-transform scale(1)
211
- -moz-transform scale(1)
212
- -ms-transform scale(1)
213
- -o-transform scale(1)
@@ -1,137 +0,0 @@
1
- @import '../_defines/const'
2
- @import '../_custom'
3
-
4
- pre.mermaid
5
- display: flex;
6
- align-items: center;
7
- justify-content: center;
8
- font-family: $ff-body
9
-
10
- .mermaid span,
11
- .mermaid text
12
- font-family: $ff-body
13
-
14
- .mermaid .edgeLabel
15
- padding: 4px
16
- background-color: var(--background) !important
17
- color: var(--text-p1) !important
18
-
19
- .mermaid .edgeLabel text,
20
- .mermaid .label text,
21
- .mermaid .nodeLabel,
22
- .mermaid .cluster-label text,
23
- .mermaid .cluster-label span
24
- fill: var(--text-p1) !important
25
- color: var(--text-p1) !important
26
-
27
- .mermaid rect.basic.label-container
28
- stroke: var(--block-border) !important
29
- fill: var(--block) !important
30
-
31
- .mermaid .node rect,
32
- .mermaid .node circle,
33
- .mermaid .node ellipse,
34
- .mermaid .node polygon,
35
- .mermaid .node path,
36
- .mermaid .cluster rect
37
- stroke: var(--block-border) !important
38
- fill: var(--block) !important
39
-
40
- _dark_mermaid()
41
- .mermaid
42
- fill: #ccc !important
43
-
44
-
45
- .mermaid .error-icon
46
- fill: #a44141 !important
47
-
48
-
49
- .mermaid .error-text
50
- fill: #ddd !important
51
- stroke: #ddd !important
52
-
53
-
54
- .mermaid .marker
55
- fill: lightgrey !important
56
- stroke: lightgrey !important
57
-
58
-
59
- .mermaid .marker.cross
60
- stroke: lightgrey !important
61
-
62
-
63
- .mermaid .label
64
- color: var(--text-p1) !important
65
-
66
-
67
- .mermaid .cluster-label text
68
- fill: var(--text-p1) !important
69
-
70
-
71
- .mermaid .cluster-label span
72
- color: var(--text-p1) !important
73
-
74
-
75
- .mermaid .label text,
76
- .mermaid span
77
- fill: var(--text-p1) !important
78
- color: var(--text-p1) !important
79
-
80
-
81
- .mermaid .node rect,
82
- .mermaid .node circle,
83
- .mermaid .node ellipse,
84
- .mermaid .node polygon,
85
- .mermaid .node path
86
- fill: var(--block) !important
87
- stroke: var(--block-border) !important
88
-
89
-
90
- .mermaid .arrowheadPath
91
- fill: lightgrey !important
92
-
93
-
94
- .mermaid .edgePath .path
95
- stroke: lightgrey !important
96
-
97
-
98
- .mermaid .flowchart-link
99
- stroke: lightgrey !important
100
-
101
-
102
- .mermaid .edgeLabel
103
- background-color: hsl(0, 0%, 34.4117647059%) !important
104
-
105
-
106
- .mermaid .edgeLabel rect
107
- background-color: hsl(0, 0%, 34.4117647059%) !important
108
- fill: hsl(0, 0%, 34.4117647059%) !important
109
-
110
-
111
- .mermaid .cluster rect
112
- fill: var(--block) !important
113
- stroke: var(--block-border) !important
114
-
115
-
116
- .mermaid .cluster text
117
- fill: var(--text-p1) !important
118
-
119
-
120
- .mermaid .cluster span
121
- color: var(--text-p1) !important
122
-
123
-
124
- .mermaid div.mermaidTooltip
125
- background: hsl(20, 1.5873015873%, 12.3529411765%) !important
126
- border: 1px solid rgba(255, 255, 255, 0.25) !important
127
-
128
-
129
- .mermaid .flowchartTitleText
130
- fill: #ccc
131
-
132
-
133
- :root[data-theme="dark"]
134
- _dark_mermaid()
135
- :root:not([data-theme])
136
- @media (prefers-color-scheme: dark)
137
- _dark_mermaid()
@@ -1,60 +0,0 @@
1
- /**
2
- * icons.js | 非首屏图标异步加载
3
- *
4
- * 服务端 icon() 对非首屏 SVG 图标输出 <svg class="icon" data-icon="ns:key"> 占位符,
5
- * 本脚本按命名空间拉取构建期生成的 js/icons/{ns}.json,成功后原位替换为完整内联 SVG,
6
- * 最终 DOM 与全量内联一致,现有 CSS 钩子(搜索三态、菜单渐变、chat 着色等)不受影响。
7
- * 首屏关键图标(搜索、菜单、leftbar/rightbar、arrow-left)由模板内联,不经过本脚本。
8
- */
9
- (function () {
10
- 'use strict';
11
-
12
- const nodes = Array.prototype.slice.call(document.querySelectorAll('svg.icon[data-icon]'));
13
- if (nodes.length === 0) {
14
- return;
15
- }
16
-
17
- const groups = {};
18
- nodes.forEach((node) => {
19
- const key = node.getAttribute('data-icon');
20
- const idx = key.indexOf(':');
21
- if (idx < 1) {
22
- return;
23
- }
24
- const ns = key.slice(0, idx);
25
- if (!groups[ns]) {
26
- groups[ns] = [];
27
- }
28
- groups[ns].push(node);
29
- });
30
-
31
- const script = document.currentScript;
32
- const version = (script && script.getAttribute('data-version')) || '';
33
- const root = (typeof ctx !== 'undefined' && ctx.root) || '/';
34
-
35
- Object.keys(groups).forEach((ns) => {
36
- const url = root + 'js/icons/' + ns + '.json' + (version ? '?v=' + version : '');
37
- fetch(url)
38
- .then((res) => {
39
- if (!res.ok) {
40
- throw new Error('HTTP ' + res.status);
41
- }
42
- return res.json();
43
- })
44
- .then((data) => {
45
- const set = data && data[ns];
46
- groups[ns].forEach((node) => {
47
- const key = node.getAttribute('data-icon');
48
- const svg = set && set[key];
49
- if (typeof svg === 'string' && svg.length > 0) {
50
- node.outerHTML = svg;
51
- } else {
52
- console.warn('[stellar] icon not found: ' + key);
53
- }
54
- });
55
- })
56
- .catch((err) => {
57
- console.warn('[stellar] icons load failed: ' + ns, err);
58
- });
59
- });
60
- })();
@@ -1,35 +0,0 @@
1
- (function () {
2
- const els = document.getElementsByClassName('ds-fcircle');
3
- for (var i = 0; i < els.length; i++) {
4
- const el = els[i];
5
- const api = el.dataset.api;
6
- if (api == null) {
7
- continue;
8
- }
9
- const default_avatar = def.avatar;
10
- // layout
11
- utils.request(el, api, async resp => {
12
- const data = await resp.json();
13
- const arr = data.article_data || [];
14
- const limit = el.getAttribute('limit');
15
- arr.forEach((item, i) => {
16
- if (limit && i >= limit) {
17
- return;
18
- }
19
- var cell = '<div class="timenode" index="' + i + '">';
20
- cell += '<div class="header">';
21
- cell += '<div class="user-info">';
22
- cell += '<img src="' + (item.avatar || default_avatar) + '" onerror="javascript:this.src=\'' + default_avatar + '\';">';
23
- cell += '<span>' + item.author + '</span>';
24
- cell += '</div>';
25
- cell += '<span>' + item.created + '</span>';
26
- cell += '</div>';
27
- cell += '<a class="body" href="' + item.link + '" target="_blank" rel="external nofollow noopener noreferrer">';
28
- cell += item.title;
29
- cell += '</a>';
30
- cell += '</div>';
31
- utils.dom(el).append(cell);
32
- });
33
- });
34
- }
35
- })();