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,84 +1,16 @@
1
- .l_left
2
- margin: var(--gap-page)
3
- max-height: calc(100vh - var(--gap-page) * 2)
4
- border-radius: $border-card-l
5
- .header
6
- margin: var(--gap-base) var(--gap-base) 0
1
+ .site-region--leftbar .site-region__surface
2
+ overflow: visible
7
3
 
8
- .l_right
9
- margin: var(--gap-page) 0
10
- border-radius: $border-card-l
11
- @media screen and (min-width: $device-2k)
12
- .l_left
13
- margin-left: auto
14
- margin-right: calc(2 * var(--gap-page))
15
- .l_right
16
- margin-left: var(--gap-page)
17
- margin-right: auto
18
-
19
- // 纯色卡片风格(style.leftbar.ui-style: card):
20
- // 实色 var(--card) 背景 + 中间档阴影,隐藏图片背景与磨砂叠加层
21
- .l_left.leftbar-card
22
- background: var(--card)
23
- box-shadow: $boxshadow-float
24
- // 卡片风格交互变量:列表项 hover/active 用 var(--block-border),搜索条底部条默认用 var(--text-meta)
25
- --leftbar-item-bg: var(--block-border)
26
- --leftbar-item-shadow: none
27
- --leftbar-search-line: var(--text-meta)
28
- // 卡片风格组件背景:白色半透明填充(--bg-a20/a50/a60/a75)统一改为 var(--block),
29
- // --bg-a100(不透明白)改为 var(--block-border) 保留 hover 反馈,与右栏观感一致
30
- --bg-a20: var(--block)
31
- --bg-a50: var(--block)
32
- --bg-a60: var(--block)
33
- --bg-a75: var(--block)
34
- --bg-a100: var(--block-border)
35
- .sidebg
36
- display: none
37
- .leftbar-container
38
- &:before
39
- &:after
40
- display: none
41
-
42
- .l_left
43
- .sidebg
44
- pointer-events: none
45
- position: absolute
46
- --inset: 0
47
- top: var(--inset)
48
- bottom: var(--inset)
49
- left: var(--inset)
50
- right: var(--inset)
51
- border-radius: $border-card-l
52
- --saturate: 400%
53
- --blur-px: convert(hexo-config('style.leftbar.blur-px'))
54
- --background-opacity: 1
55
- if $leftbar-background-image
56
- background-position: center
57
- background-size: cover
58
- if hexo-config('style.leftbar.blur-px')
59
- --inset: 32px
60
- if hexo-config('style.leftbar.background-opacity')
61
- --background-opacity: hexo-config('style.leftbar.background-opacity')
62
- background-image: convert(hexo-config('style.leftbar.background-image'))
63
- filter: saturate(var(--saturate)) blur(var(--blur-px)) opacity(var(--background-opacity))
64
- :root[data-theme="dark"] &
65
- --background-opacity: hexo-config('style.leftbar.background-opacity') * 0.75
66
- :root:not([data-theme]) &
67
- @media screen and (prefers-color-scheme: dark)
68
- --background-opacity: hexo-config('style.leftbar.background-opacity') * 0.75
69
- else if $leftbar-background-color-light || $leftbar-background-color-dark
70
- background-color: convert($leftbar-background-color-light)
71
- :root:not([data-theme]) &
72
- @media screen and (prefers-color-scheme: dark)
73
- background-color: convert($leftbar-background-color-dark)
74
-
75
- .leftbar-container
76
- height: calc(100vh - var(--gap-page) * 2)
4
+ .site-region--leftbar
5
+ .site-region__viewport
6
+ height: 100%
7
+ max-height: inherit
77
8
  display: flex
78
9
  flex-direction: column
79
10
  word-break: break-all
80
11
  text-align: justify
81
- border-radius: $border-card-l
12
+ border-radius: inherit
13
+ background: transparent
82
14
  overflow: hidden
83
15
  // 搜索条激活(有输入内容)时隐藏导航区与组件区,给搜索结果腾出空间
84
16
  > .search-wrapper[searching='true']
@@ -90,38 +22,72 @@
90
22
  -webkit-mask: linear-gradient(white, 90%, transparent)
91
23
  >*
92
24
  z-index 1
93
- &:before,&:after
94
- position: absolute
95
- pointer-events: none
96
- content: ''
97
- top: 0
98
- bottom: 0
99
- left: 0
100
- right: 0
101
- border-radius: $border-card-l
102
- &:before
103
- if $leftbar-background-image
104
- @media screen and (min-width: $device-mobile-max)
105
- background: rgba(white, 0.05)
106
- box-shadow: inset 0 0 32px 1px rgba(white, 0.5)
107
- backdrop-filter: saturate(300%)
108
- -webkit-backdrop-filter: saturate(300%)
109
- mask: linear-gradient(black, rgba(black, 0.5), 70%, transparent, 90%, transparent)
110
- -webkit-mask: linear-gradient(black, rgba(black, 0.5), 70%, transparent, 90%, transparent)
111
- :root[data-theme="dark"] &
112
- background: rgba(white, 0.05)
113
- box-shadow: inset 0 0 32px 1px rgba(white, 0.1)
114
- :root:not([data-theme]) &
115
- @media screen and (prefers-color-scheme: dark)
116
- background: rgba(white, 0.05)
117
- box-shadow: inset 0 0 32px 1px rgba(white, 0.1)
118
25
 
119
- @media screen and (max-width: $device-mobile-max)
120
- .l_left
121
- overflow: hidden
122
- background: var(--bg-a100)
123
- .sidebg
124
- --inset: 0
125
- --saturate: 300%
126
- .leftbar-container:after
127
- background: var(--bg-a20)
26
+ // Leftbar 的公开 widgets 数组在内部投影为固定顶部、滚动主体与统一 Footer。
27
+ .site-region--leftbar
28
+ .site-region__viewport
29
+ padding: var(--gap-base)
30
+ gap: var(--gap-base)
31
+ .site-region__zone
32
+ position: relative
33
+ z-index: 1
34
+ min-width: 0
35
+ .site-region__zone--top
36
+ flex: 0 0 auto
37
+ .site-region__project-toolbar
38
+ min-height: 40px
39
+ display: flex
40
+ align-items: center
41
+ justify-content: space-between
42
+ gap: 8px
43
+ .site-region__project-home,
44
+ .site-region__project-search
45
+ min-width: 0
46
+ display: flex
47
+ align-items: center
48
+ .site-region__project-search
49
+ margin-inline-start: auto
50
+ .ui-collection__item
51
+ width: 32px
52
+ min-width: 32px
53
+ height: 32px
54
+ min-height: 32px
55
+ padding: 4px
56
+ justify-content: center
57
+ .site-region__zone--body
58
+ flex: 1 1 auto
59
+ min-height: 0
60
+ overflow-x: hidden
61
+ overflow-y: auto
62
+ overscroll-behavior: contain
63
+ scrollbar(0, 0)
64
+ mask: linear-gradient(white, 90%, transparent)
65
+ -webkit-mask: linear-gradient(white, 90%, transparent)
66
+ > .widgets
67
+ padding-bottom: 64px
68
+ .site-region__footer
69
+ position: relative
70
+ z-index: 2
71
+ flex: 0 0 auto
72
+ display: flex
73
+ flex-direction: column
74
+ gap: 8px
75
+ min-width: 0
76
+ .site-region__footer-actions
77
+ flex: 0 0 auto
78
+ min-width: 0
79
+ .widget-stack
80
+ padding: 0
81
+ .site-region__system
82
+ flex: 0 0 auto
83
+ min-height: 32px
84
+ display: flex
85
+ align-items: center
86
+ gap: 8px
87
+ .site-region__settings
88
+ flex: 1 1 auto
89
+ min-width: 0
90
+ .widget-instance--settings
91
+ width: 100%
92
+ .widget-stack
93
+ margin: 0
@@ -35,34 +35,21 @@
35
35
  margin: 1rem
36
36
  .tag-plugin.navbar
37
37
  margin: 0
38
- border-radius: 6px
39
- padding: 2px
40
- background: rgba(black, 0.2)
41
- overflow: hidden
42
- &:after
43
- content: none
38
+ justify-content: flex-end
44
39
  .link
45
40
  margin: 0
46
- border-radius: 4px
41
+ border-color: unquote('color-mix(in srgb, var(--text-banner-theme, white) 50%, transparent)')
42
+ border-radius: 100px
47
43
  color: var(--text-banner-theme, var(--text-banner))
48
- opacity: .8
49
- padding: 2px 6px
50
- background: none
51
- line-height: 1.5
52
- font-size: $fs-15
44
+ background: unquote('color-mix(in srgb, var(--text-banner-theme, var(--background)) 20%, transparent)')
45
+ // banner 自身负责裁剪和背景变化;这里不用 backdrop-filter,避免破坏外层圆角裁剪。
53
46
  text-shadow: 0 0 1px rgba(0,0,0,0.12)
54
- &+.link
55
- margin-left: 2px
56
- &:after
57
- content: none
58
47
  &:hover
59
48
  color: var(--text-banner-theme, var(--text-banner))
60
- opacity: 1
61
- background: rgba(white, 0.25)
49
+ background: unquote('color-mix(in srgb, var(--text-banner-theme, var(--background)) 50%, transparent)')
62
50
  &.active
63
51
  color: var(--text-banner-theme, var(--text-banner))
64
- opacity: 1
65
- background: rgba(white, 0.25)
52
+ background: unquote('color-mix(in srgb, var(--text-banner-theme, var(--background)) 50%, transparent)')
66
53
 
67
54
  .back
68
55
  background: none
@@ -135,6 +122,15 @@
135
122
  text-shadow: 0 0 1px rgba(0,0,0,0.12)
136
123
 
137
124
  .tag-plugin.banner
125
+ background-color: var(--block)
126
+ &.no-bg
127
+ background-image: none
128
+ .content
129
+ --text-banner: var(--text-p1)
130
+ --text-banner-theme: var(--text-p2)
131
+ color: var(--text-banner)
132
+ .title
133
+ text-shadow: none
138
134
  // 内容区用绝对定位铺满整卡:避免 flex 百分比高度(height: 100%)在不同浏览器解析不一致,
139
135
  // 导致 .top/.bottom 无法贴顶/贴底(navbar 掉到中间)
140
136
  .content
@@ -161,14 +157,6 @@
161
157
  -webkit-transition: all .2s ease-out, transform 1.5s ease-out
162
158
  -o-transition: all .2s ease-out, transform 1.5s ease-out
163
159
 
164
- .tag-plugin.banner .navbar a.active
165
- // 不使用 blur-effect()(backdrop-filter):banner 是 overflow:hidden + 圆角/连续曲率的裁剪容器,
166
- // backdrop-filter 在部分浏览器(Safari / 旧版 Chromium)会破坏父级圆角裁剪,
167
- // hover 放大背景图时四角变直角;改用与 hover 一致的半透明白底
168
- background: rgba(white, 0.25)
169
- &:hover
170
- background-color: var(--card)
171
-
172
160
  @media screen and (max-width: $device-mobile-max)
173
161
  .banner.top
174
162
  border-radius: 0
@@ -5,6 +5,11 @@
5
5
  line-height: 1.2
6
6
  --gap-p: 'calc(%s / 2)' % var(--gap-p-compact)
7
7
  input
8
+ flex-shrink: 0
9
+ margin-right: 8px
10
+ if hexo-config('tags.checkbox.interactive') != true
11
+ pointer-events: none
12
+ input[type=checkbox]
8
13
  -webkit-appearance: none
9
14
  -moz-appearance: none
10
15
  -ms-appearance: none
@@ -17,10 +22,6 @@
17
22
  display: inline-block
18
23
  outline: none
19
24
  border-radius: 2px
20
- flex-shrink: 0
21
- margin-right: 8px
22
- if hexo-config('tag_plugins.checkbox.interactive') != true
23
- pointer-events: none
24
25
  /* Checkbox */
25
26
  input[type=checkbox]
26
27
  &:before, &:after
@@ -130,26 +131,10 @@
130
131
  top: 5px
131
132
  width: 10px
132
133
  height: 2px
133
- /* Radio */
134
- input[type=radio]
135
- border-radius: 50%
136
- transform: translateY(-1px)
137
- &:before
138
- content: ""
139
- display: block
140
- width: 8px
141
- height: 8px
142
- border-radius: 50%
143
- margin: 2px
144
- transform: scale(0)
145
- &:checked:before
146
- transform: scale(1)
147
134
  /* Colors */
148
- input
135
+ input[type=checkbox]
149
136
  border: 2px solid var(--theme)
150
- &[type=checkbox]:checked
151
- background: var(--theme)
152
- &[type=radio]:checked:before
137
+ &:checked
153
138
  background: var(--theme)
154
139
 
155
140
 
@@ -29,15 +29,13 @@
29
29
  span+input.copy-area
30
30
  text-indent: 0
31
31
  button.copy-btn
32
- margin: 2px 2px 2px 0
32
+ margin: 0
33
33
  border-radius: 'calc(%s - 2px)' % $border-bar
34
34
  display: inline-block
35
- background: var(--block)
36
35
  trans1 all
37
36
  line-height: 0
38
- font-size: 1rem
39
- padding: 0 .75rem
37
+ font-size: 1.25rem
38
+ padding: 0 .5rem
40
39
  color: var(--text-p2)
41
40
  &:hover
42
41
  color: var(--theme)
43
- background: var(--theme-a20)
@@ -86,10 +86,10 @@
86
86
  &:nth-child(3n+1)
87
87
  grid-column: auto / span 2
88
88
  grid-row: auto / span 2
89
- &[ratio='square']
89
+ &[aspect_ratio='square']
90
90
  .grid-cell
91
91
  aspect-ratio: 1
92
- &[ratio='portrait']
92
+ &[aspect_ratio='portrait']
93
93
  .grid-cell
94
94
  aspect-ratio: 2 / 3
95
95
  .grid-cell
@@ -1,6 +1,9 @@
1
1
  .tag-plugin.grid
2
2
  display: grid
3
3
  grid-gap: 16px
4
+ >.cell > .tag-plugin:only-child
5
+ margin-top: 0
6
+ margin-bottom: 0
4
7
  &[bg]>.cell>
5
8
  p
6
9
  line-height: 1.5
@@ -31,7 +31,8 @@
31
31
  font-size: 1.125rem
32
32
  padding: 6px
33
33
  line-height: 0
34
- border-radius: 40px
34
+ border-radius: 50%
35
+ corner-shape: round
35
36
  trans3: color opacity background
36
37
  color: var(--text-p1)
37
38
  &:hover
@@ -5,7 +5,6 @@
5
5
  text-align: left
6
6
 
7
7
  .md-text .link-card
8
- background: var(--card)
9
8
  display: inline-flex
10
9
  justify-content: space-between
11
10
  align-items: center
@@ -1,5 +1,20 @@
1
1
  .md-text .tag-plugin.mark
2
- padding: 1px 2px
3
- border-radius: 2px
4
- background: var(--theme-mark)
5
- color: var(--text)
2
+ background: none
3
+ color: var(--text-p0)
4
+ font-weight: 500
5
+ text-decoration-line: underline
6
+ text-decoration-color: var(--theme-mark)
7
+ text-decoration-thickness: 8px
8
+ text-underline-offset: -4px
9
+ text-decoration-skip-ink: none
10
+ .mark-tip
11
+ display: inline-flex
12
+ align-items: center
13
+ padding: 0 .5em
14
+ border: 1px solid var(--theme-border)
15
+ border-radius: 100px
16
+ background: var(--theme-block)
17
+ color: var(--text-p0)
18
+ font-size: .75em
19
+ font-weight: 500
20
+ vertical-align: .08em
@@ -4,12 +4,12 @@
4
4
  font-weight: 500
5
5
  color: var(--text)
6
6
 
7
- .l_body[text-indent] article.content .ds-mdrender
7
+ body[data-text-indent] article.content .ds-mdrender
8
8
  p:not([class])
9
9
  text-indent: 0
10
10
 
11
11
 
12
- .l_body[type=story] .md-text.content
12
+ body[data-article-style='story'] .md-text.content
13
13
  .ds-mdrender
14
14
  ol,ul
15
15
  margin-left: .5rem
@@ -1,21 +1,27 @@
1
1
  .tag-plugin.navbar
2
2
  display: inline-flex
3
+ flex-wrap: wrap
4
+ gap: .5rem
5
+ max-width: 100%
6
+ margin-top: .5rem
3
7
  a
8
+ display: inline-flex
9
+ align-items: center
4
10
  box-sizing: border-box
5
- padding: .25rem 0
6
- color: inherit
7
- position: relative
8
- &+a
9
- margin-left: 1rem
10
- &:after
11
- content: ''
12
- position: absolute
13
- border-radius: 2px
14
- width: 100%
15
- height: 2px
16
- left: 0
17
- bottom: 0
18
- trans1 all
19
- &.active,&:hover
20
- &:after
21
- background: var(--theme)
11
+ padding: .5rem 1.25rem
12
+ border: 1px solid var(--block-border)
13
+ border-radius: 100px
14
+ color: var(--text-p2)
15
+ background: var(--block)
16
+ font-weight: 500
17
+ line-height: 1
18
+ text-decoration: none
19
+ trans2 background border-color
20
+ &:hover
21
+ border-color: var(--text-p4)
22
+ color: var(--text-p1)
23
+ background: var(--block-border)
24
+ &.active
25
+ border-color: var(--theme)
26
+ color: var(--theme)
27
+ background: var(--theme-block)
@@ -4,7 +4,7 @@
4
4
  border-radius: $border-card
5
5
  background: var(--theme-block)
6
6
  overflow: hidden
7
- if hexo-config('tag_plugins.note.border') == true
7
+ if hexo-config('tags.note.border') == true
8
8
  border: 1px solid var(--theme-border)
9
9
  color: var(--text-p1)
10
10
  >.title
@@ -64,5 +64,5 @@
64
64
  .md-text .tag-plugin .tag-plugin.note
65
65
  --gap-p: 1rem
66
66
 
67
- .l_body[type=story] .tag-plugin.note .title p:not([class])
67
+ body[data-article-style='story'] .tag-plugin.note .title p:not([class])
68
68
  text-indent: 0
@@ -2,8 +2,7 @@
2
2
  position: relative
3
3
  border-radius: $border-card
4
4
  background: var(--theme-block)
5
- if hexo-config('tag_plugins.okr.border') == true
6
- border: 1px solid var(--theme-border)
5
+ border: 1px solid var(--theme-border)
7
6
  overflow: hidden
8
7
  color: var(--text-p1)
9
8
  line-height: 1.5
@@ -45,6 +45,11 @@
45
45
  padding-top: 1px
46
46
  span.empty
47
47
  padding: 0 8px
48
+ .quot-icon.colorful[color]
49
+ display: inline-flex
50
+ flex-shrink: 0
51
+ img,svg
52
+ color: var(--theme)
48
53
 
49
54
  .md-text .tag-plugin.quot.p
50
55
  .content
@@ -35,5 +35,6 @@
35
35
  font-weight: 500
36
36
  font-size: $fs-12
37
37
 
38
- .tag-plugin.ds-rating.rated
39
- pointer-events: none
38
+ .tag-plugin.ds-rating.rated,
39
+ .tag-plugin.ds-rating.is-disabled
40
+ pointer-events: none
@@ -17,7 +17,7 @@
17
17
  padding-left: 0
18
18
  &:before
19
19
  display: none
20
- .l_body[type=story] .md-text.content
20
+ body[data-article-style='story'] .md-text.content
21
21
  .tag-plugin.timeline
22
22
  ol,ul
23
23
  margin-left: 0
@@ -1,4 +1,4 @@
1
- // 气泡注解标签(#602):{% tip text:注解 %}词句{% endtip %}
1
+ // 气泡注解标签(#602):{% tip 词句 pop:注解 %}
2
2
  .tag-plugin.tip
3
3
  position: relative
4
4
  display: inline-block
@@ -47,5 +47,6 @@
47
47
 
48
48
 
49
49
  // 已经投过票了
50
- .tag-plugin.ds-vote.voted
51
- pointer-events: none
50
+ .tag-plugin.ds-vote.voted,
51
+ .tag-plugin.ds-vote.is-disabled
52
+ pointer-events: none
@@ -10,7 +10,8 @@
10
10
  margin-top: 0.5rem
11
11
  span
12
12
  color: var(--text-p2)
13
- svg
13
+ .ui-icon
14
+ --ui-icon-size: 1em
14
15
  margin-right: 4px
15
16
  .flex-row
16
17
  display: flex
@@ -7,10 +7,9 @@
7
7
  align-items: center
8
8
  color: var(--text-p2)
9
9
  trans1 all
10
- svg
10
+ .ui-icon
11
+ --ui-icon-size: 1em
11
12
  margin-right: 4px
12
- width 1em
13
- height: 1em
14
13
  &:hover
15
14
  color: var(--text)
16
15
 
@@ -59,10 +58,9 @@
59
58
  align-items: center
60
59
  justify-content: center
61
60
  trans1: background
62
- svg
61
+ .ui-icon
62
+ --ui-icon-size: 1.5em
63
63
  margin-right: 6px
64
- height: 1.5em
65
- width: auto
66
64
  &:hover
67
65
  background: var(--accent)
68
66
 
@@ -0,0 +1,49 @@
1
+ .settings-widget
2
+ min-width: 0
3
+ width: 100%
4
+ height: 32px
5
+ min-height: 32px
6
+ padding: 0
7
+ display: flex
8
+ align-items: center
9
+ gap: 10px
10
+ border-radius: 16px
11
+
12
+ .settings-widget__avatar
13
+ flex: 0 0 32px
14
+ width: 32px
15
+ height: 32px
16
+ display: grid
17
+ place-items: center
18
+ border-radius: 50%
19
+ overflow: hidden
20
+ color: var(--text-p2)
21
+ background: transparent
22
+ > img
23
+ width: 100%
24
+ height: 100%
25
+ object-fit: cover
26
+
27
+ .settings-widget__name
28
+ min-width: 0
29
+ font-size: $fs-14
30
+ font-weight: 500
31
+ txt-ellipsis()
32
+
33
+ .site-region--leftbar,
34
+ .site-region--topbar
35
+ .settings-widget__avatar > img
36
+ width: 24px
37
+ height: 24px
38
+ border-radius: 50%
39
+ corner-shape: round
40
+
41
+ .site-region--topbar,
42
+ html[data-leftbar-state='collapsed'] .site-shell:not([data-drawer='leftbar']) .site-region--leftbar
43
+ .settings-widget__name
44
+ display: none
45
+
46
+ .site-region--topbar .settings-widget,
47
+ html[data-leftbar-state='collapsed'] .site-shell:not([data-drawer='leftbar']) .site-region--leftbar .settings-widget
48
+ width: 32px
49
+ justify-content: center
@@ -39,11 +39,11 @@
39
39
  .tag-plugin.timeline[data-api] .body .footer
40
40
  background: none
41
41
 
42
- .l_left .widget-wrapper.timeline
42
+ .site-region--leftbar .widget-wrapper.timeline
43
43
  .tag-plugin.timeline
44
44
  padding-left: 0
45
45
  &:before
46
46
  content: none
47
- .l_left .widget-wrapper.timeline .body
47
+ .site-region--leftbar .widget-wrapper.timeline .body
48
48
  box-shadow: none
49
49
  background: var(--bg-a50)