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
package/_data/widgets.yml CHANGED
@@ -34,7 +34,7 @@ toc:
34
34
  collapse: false # true / false / auto
35
35
  # 编辑本文按钮
36
36
  edit_this_page: # 从开头开始匹配替换
37
- '_posts/': # https://github.com/xaoxuu/xaoxuu.com/blob/main/source/_posts/
37
+ '_posts/':
38
38
  'wiki/stellar/': https://github.com/xaoxuu/hexo-theme-stellar-docs/blob/main/
39
39
 
40
40
  # GitHub 用户信息
Binary file
package/languages/en.yml CHANGED
@@ -6,6 +6,8 @@ btn:
6
6
  notebook: Notebook
7
7
  recent_publish: Recent
8
8
  all_wiki: All Products
9
+ all_topic: All Topics
10
+ all_notebook: All Notebooks
9
11
  category: Category
10
12
  categories: Categories
11
13
  tag: Tag
@@ -21,6 +23,16 @@ btn:
21
23
  comments: Join Discussion
22
24
  expand_posts: Show %s more posts
23
25
  collapse_posts: Collapse
26
+ search: Search
27
+
28
+ menu:
29
+ blog: Blog
30
+ categories: Categories
31
+ tags: Tags
32
+ topic: Topic
33
+ archives: Archives
34
+ friends: Friends
35
+ about: About
24
36
 
25
37
  meta:
26
38
  recent_update: Recent Update
@@ -69,13 +81,51 @@ page:
69
81
 
70
82
  search:
71
83
  search: Search
72
- search_in: Search in %s
84
+ scope_all: All
85
+ scope_blog: Blog
73
86
  no_results: No Results!
87
+ close: Close search
88
+
89
+ settings:
90
+ label: Settings
91
+ title: Settings
92
+ profile:
93
+ title: Profile
94
+ avatar: Avatar
95
+ nickname: Nickname
96
+ email: Email
97
+ url: URL
98
+ save: Save
99
+ logout: Log out
100
+ provider_managed: '%s manages comment identity outside the theme. Profile editing and logout are unavailable here.'
101
+ provider_unknown: The current comment provider
102
+ cache:
103
+ title: Cache
104
+ search: Search cache
105
+ dynamic: Data cache
106
+ all: All caches
107
+ clear: 'Clear %s'
108
+ about:
109
+ title: About
110
+ empty: No information configured.
111
+ open_link: 'Open link for %s'
112
+ result:
113
+ success: Done.
114
+ partial: Partially completed. Some browser storage could not be changed.
115
+ failure: Failed. Browser storage is unavailable.
116
+ validation:
117
+ name: Enter a nickname of up to 80 characters.
118
+ email: Enter a valid email address or leave it blank.
119
+ url: Enter an HTTP(S) URL or leave it blank.
74
120
 
75
121
  message:
76
122
  copied: Copied!
123
+ copy_denied: Clipboard permission was denied
124
+ copy_unsupported: Clipboard requires a supported browser and HTTPS
77
125
  fetching_latest_release: '%s is fetching the latest release…'
78
- theme_switched:
126
+ loading: Loading
127
+ loading_failed: Failed to load. Please try again later.
128
+ color_scheme_switched:
79
129
  light: Switched to Light Mode
80
130
  dark: Switched to Dark Mode
81
131
  auto: Switched to Auto Mode
@@ -89,6 +139,13 @@ symbol:
89
139
  page: "Page %s"
90
140
 
91
141
  tag_plugins:
142
+ okr:
143
+ status:
144
+ in_track: On Track
145
+ at_risk: At Risk
146
+ off_track: Delayed
147
+ finished: Completed
148
+ unfinished: Incomplete
92
149
  mbti:
93
150
  title: 'My MBTI Type: %s (%s)'
94
151
  types:
@@ -6,6 +6,8 @@ btn:
6
6
  notebook: 笔记本
7
7
  recent_publish: 近期发布
8
8
  all_wiki: 所有项目
9
+ all_topic: 所有专栏
10
+ all_notebook: 所有笔记本
9
11
  category: 分类
10
12
  categories: 分类
11
13
  tag: 标签
@@ -21,6 +23,16 @@ btn:
21
23
  comments: 参与讨论
22
24
  expand_posts: 展开其余 %s 篇
23
25
  collapse_posts: 收起
26
+ search: 搜索
27
+
28
+ menu:
29
+ blog: 博客
30
+ categories: 分类
31
+ tags: 标签
32
+ topic: 专栏
33
+ archives: 归档
34
+ friends: 友链
35
+ about: 关于
24
36
 
25
37
  meta:
26
38
  recent_update: 最近更新
@@ -69,13 +81,51 @@ page:
69
81
 
70
82
  search:
71
83
  search: 站内搜索
72
- search_in: 在 %s 中搜索
84
+ scope_all: 全站
85
+ scope_blog: 博客
73
86
  no_results: 没有找到内容!
87
+ close: 关闭搜索
88
+
89
+ settings:
90
+ label: 设置
91
+ title: 设置
92
+ profile:
93
+ title: 个人资料
94
+ avatar: 头像
95
+ nickname: 昵称
96
+ email: Email
97
+ url: URL
98
+ save: 保存
99
+ logout: 退出登录
100
+ provider_managed: '%s 的评论身份不由主题管理,无法在此编辑或退出。'
101
+ provider_unknown: 当前评论服务
102
+ cache:
103
+ title: 缓存
104
+ search: 搜索缓存
105
+ dynamic: 数据缓存
106
+ all: 全部缓存
107
+ clear: '清除「%s」'
108
+ about:
109
+ title: 关于
110
+ empty: 暂未配置相关信息。
111
+ open_link: '打开「%s」链接'
112
+ result:
113
+ success: 操作成功。
114
+ partial: 操作部分完成,部分浏览器存储无法修改。
115
+ failure: 操作失败,浏览器存储不可用。
116
+ validation:
117
+ name: 请输入不超过 80 个字符的昵称。
118
+ email: 请输入有效的 Email,或留空。
119
+ url: 请输入 HTTP(S) URL,或留空。
74
120
 
75
121
  message:
76
122
  copied: 复制成功
123
+ copy_denied: 未获得剪贴板权限
124
+ copy_unsupported: 当前浏览器不支持剪贴板或页面不是 HTTPS
77
125
  fetching_latest_release: '%s 正在获取最新版本…'
78
- theme_switched:
126
+ loading: 正在加载
127
+ loading_failed: 加载失败,请稍后重试。
128
+ color_scheme_switched:
79
129
  light: 切换到浅色模式
80
130
  dark: 切换到深色模式
81
131
  auto: 切换到跟随系统配色
@@ -89,6 +139,13 @@ symbol:
89
139
  page: "第 %s 页"
90
140
 
91
141
  tag_plugins:
142
+ okr:
143
+ status:
144
+ in_track: 正常
145
+ at_risk: 风险
146
+ off_track: 延期
147
+ finished: 已完成
148
+ unfinished: 未完成
92
149
  mbti:
93
150
  title: 我的 MBTI 人格:%s(%s)
94
151
  types:
@@ -6,6 +6,8 @@ btn:
6
6
  notebook: 筆記本
7
7
  recent_publish: 近期發布
8
8
  all_wiki: 所有文檔
9
+ all_topic: 所有專欄
10
+ all_notebook: 所有筆記本
9
11
  category: 分類
10
12
  categories: 分類
11
13
  tag: 標籤
@@ -21,6 +23,16 @@ btn:
21
23
  comments: 參與討論
22
24
  expand_posts: 展開其餘 %s 篇
23
25
  collapse_posts: 收起
26
+ search: 搜尋
27
+
28
+ menu:
29
+ blog: 網誌
30
+ categories: 分類
31
+ tags: 標籤
32
+ topic: 專欄
33
+ archives: 封存
34
+ friends: 友鏈
35
+ about: 關於
24
36
 
25
37
  meta:
26
38
  recent_update: 最近更新
@@ -69,13 +81,51 @@ page:
69
81
 
70
82
  search:
71
83
  search: 站內搜尋
72
- search_in: 在 %s 中搜尋
84
+ scope_all: 全站
85
+ scope_blog: 部落格
73
86
  no_results: 沒有找到內容!
87
+ close: 關閉搜尋
88
+
89
+ settings:
90
+ label: 設定
91
+ title: 設定
92
+ profile:
93
+ title: 個人資料
94
+ avatar: 頭像
95
+ nickname: 暱稱
96
+ email: Email
97
+ url: URL
98
+ save: 儲存
99
+ logout: 登出
100
+ provider_managed: '%s 的留言身分不由主題管理,無法在此編輯或登出。'
101
+ provider_unknown: 目前留言服務
102
+ cache:
103
+ title: 快取
104
+ search: 搜尋快取
105
+ dynamic: 資料快取
106
+ all: 全部快取
107
+ clear: '清除「%s」'
108
+ about:
109
+ title: 關於
110
+ empty: 尚未設定相關資訊。
111
+ open_link: '開啟「%s」連結'
112
+ result:
113
+ success: 操作成功。
114
+ partial: 操作部分完成,部分瀏覽器儲存空間無法修改。
115
+ failure: 操作失敗,瀏覽器儲存空間無法使用。
116
+ validation:
117
+ name: 請輸入不超過 80 個字元的暱稱。
118
+ email: 請輸入有效的 Email,或留空。
119
+ url: 請輸入 HTTP(S) URL,或留空。
74
120
 
75
121
  message:
76
122
  copied: 複製成功
123
+ copy_denied: 未取得剪貼簿權限
124
+ copy_unsupported: 目前瀏覽器不支援剪貼簿或頁面不是 HTTPS
77
125
  fetching_latest_release: '%s 正在取得最新版本…'
78
- theme_switched:
126
+ loading: 正在載入
127
+ loading_failed: 載入失敗,請稍後再試。
128
+ color_scheme_switched:
79
129
  light: 切換到淺色模式
80
130
  dark: 切換到深色模式
81
131
  auto: 切換到跟隨系統配色
@@ -89,6 +139,13 @@ symbol:
89
139
  page: "第 %s 頁"
90
140
 
91
141
  tag_plugins:
142
+ okr:
143
+ status:
144
+ in_track: 正常
145
+ at_risk: 風險
146
+ off_track: 延期
147
+ finished: 已完成
148
+ unfinished: 未完成
92
149
  mbti:
93
150
  title: 我的 MBTI 人格:%s(%s)
94
151
  types:
package/layout/404.ejs CHANGED
@@ -1,10 +1,13 @@
1
1
  <%
2
- page.comment_title = '';
3
- page.header = false;
4
2
  page.robots = 'none';
3
+ var errorProfile = stellar_config('profiles.error') || {}
4
+ var errorComments = comments_model(page, errorProfile.comments)
5
5
  %>
6
6
  <article class='md-text error-page'>
7
- <h1><img id='error' src='<%- theme.style.error_page %>' alt='404'></h1>
7
+ <% var errorImage = errorProfile.image %>
8
+ <% if (errorImage) { %>
9
+ <h1><img id='error' src='<%- errorImage %>' alt='404'></h1>
10
+ <% } %>
8
11
  <p class='what'>
9
12
  <strong>
10
13
  <%- __('page.error.what') %>
@@ -16,4 +19,4 @@ page.robots = 'none';
16
19
  <br><br>
17
20
  <a class='button' id='back' href="<%- config.root %>"><%- __('page.error.action') %></a>
18
21
  </article>
19
- <%- partial('_partial/comments/layout') %>
22
+ <%- partial('_partial/comments/layout', {comments: errorComments}) %>
@@ -3,8 +3,9 @@ function layoutDiv() {
3
3
  var el = '';
4
4
  el += `<div class="artalk with-fancybox" id="artalk_container"`;
5
5
  let cfg = {};
6
- if (page.comment_id) {
7
- cfg['comment_id'] = page.comment_id;
6
+ const commentId = comments.id
7
+ if (commentId) {
8
+ cfg['comment_id'] = commentId;
8
9
  }
9
10
  for (let key of Object.keys(cfg)) {
10
11
  if (cfg[key]) {
@@ -1,10 +1,10 @@
1
1
  <%
2
2
  function layoutDiv() {
3
3
  var el = '';
4
- const cmt = page.cmt;
4
+ const cmt = comments;
5
5
  if (cmt && cmt.service && (cmt.service.length > 0)) {
6
6
  const name = cmt.service;
7
- const body = cmt[name];
7
+ const body = cmt.options;
8
8
  el += '<div id="' + name + '"';
9
9
  for (let key of Object.keys(body)) {
10
10
  if (body[key] !== null) {
@@ -1,13 +1,10 @@
1
1
  <%
2
2
  function layoutDiv() {
3
3
  var el = '';
4
- const cmt = page.cmt;
4
+ const cmt = comments;
5
5
  if (cmt?.service?.length > 0) {
6
6
  const name = cmt.service;
7
- var body = cmt[name];
8
- if (theme.style.prefers_theme != 'auto' && body['data-theme'] == 'preferred_color_scheme') {
9
- body['data-theme'] = theme.style.prefers_theme
10
- }
7
+ var body = Object.assign({}, cmt.options);
11
8
  el += '<div id="' + name + '"';
12
9
  for (let key of Object.keys(body)) {
13
10
  if (body[key] !== null) {
@@ -1,48 +1,19 @@
1
1
  <%
2
- var cmt = {
3
- service: page.comments_service || theme.comments.service
4
- };
5
- if (cmt.service) {
6
- cmt[cmt.service] = Object.assign({}, theme.comments[cmt.service]);
2
+ if (typeof comments === 'undefined') {
3
+ throw new Error('Stellar v2: comments/layout 必须接收显式 comments 模型')
7
4
  }
8
- var loadComment = false;
9
- if (cmt.service && cmt.service.length > 0) {
10
- if (page.comments == undefined || page.comments != false) {
11
- loadComment = true;
12
- }
13
- }
14
- // 合并项目评论
15
- const proj = theme.wiki.tree[page.wiki]
16
- if (loadComment && (proj != null)) {
17
- if (proj.comments === false) {
18
- loadComment = false;
19
- page.comments = false;
20
- } else {
21
- if (proj.comment_title != undefined && page.comment_title == undefined) {
22
- if (['utterances', 'beaudar', 'giscus'].includes(theme.comments.service)) {
23
- page.comment_title = proj.comment_title;
24
- }
25
- }
26
- if (proj.comments && proj.comments.service) {
27
- cmt = proj.comments;
28
- let s = proj.comments.service;
29
- cmt[s] = Object.assign({}, theme.comments[s], proj.comments[s]);
30
- }
31
- }
32
- }
33
- if (cmt.service && page[cmt.service]) {
34
- Object.assign(cmt[cmt.service], page[cmt.service]);
35
- }
36
- page.cmt = cmt;
37
- page.cmt_rendered = loadComment;
5
+ var commentModel = comments
38
6
  %>
39
- <% if (loadComment) { %>
7
+ <% if (commentModel.enabled) { %>
40
8
  <div class="related-wrap md-text<%- scrollreveal(' ') %>" id="comments">
41
- <section class='header cmt-title cap theme'>
42
- <%- markdown(page.comment_title || theme.comments.comment_title) %>
9
+ <% var resolvedCommentTitle = commentModel.title == null ? __('btn.comments') : commentModel.title %>
10
+ <% if (resolvedCommentTitle !== '') { %>
11
+ <section class="header cmt-title cap theme">
12
+ <%- markdown(resolvedCommentTitle) %>
43
13
  </section>
44
- <section class='body cmt-body <%- cmt.service %>'>
45
- <%- partial(cmt.service + '/layout') %>
14
+ <% } %>
15
+ <section class="body cmt-body <%- commentModel.service %>">
16
+ <%- partial(commentModel.service + '/layout', {comments: commentModel}) %>
46
17
  </section>
47
18
  </div>
48
19
  <% } %>
@@ -3,8 +3,9 @@ function layoutDiv() {
3
3
  var el = '';
4
4
  el += '<div id="twikoo_container" class="with-fancybox"';
5
5
  let cfg = {};
6
- if (page.comment_id) {
7
- cfg['comment_id'] = page.comment_id;
6
+ const commentId = comments.id
7
+ if (commentId) {
8
+ cfg['comment_id'] = commentId;
8
9
  }
9
10
  for (let key of Object.keys(cfg)) {
10
11
  if (cfg[key]) {
@@ -1,10 +1,10 @@
1
1
  <%
2
2
  function layoutDiv() {
3
3
  var el = '';
4
- const cmt = page.cmt;
4
+ const cmt = comments;
5
5
  if (cmt && cmt.service && (cmt.service.length > 0)) {
6
6
  const name = cmt.service;
7
- const body = cmt[name];
7
+ const body = cmt.options;
8
8
  el += '<div id="' + name + '"';
9
9
  for (let key of Object.keys(body)) {
10
10
  if (body[key] !== null) {
@@ -3,8 +3,9 @@ function layoutDiv() {
3
3
  var el = '';
4
4
  el += '<div id="waline_container" class="waline_thread with-fancybox"';
5
5
  let cfg = {};
6
- if (page.comment_id) {
7
- cfg['comment_id'] = page.comment_id;
6
+ const commentId = comments.id
7
+ if (commentId) {
8
+ cfg['comment_id'] = commentId;
8
9
  }
9
10
  for (let key of Object.keys(cfg)) {
10
11
  if (cfg[key]) {
@@ -4,14 +4,20 @@ var entryTitle = entry.title == null ? '' : String(entry.title)
4
4
  var entryPrefix = entry.prefix == null ? '' : String(entry.prefix)
5
5
  var entryDescription = entry.description == null ? '' : String(entry.description)
6
6
  var entryMeta = entry.meta == null ? '' : String(entry.meta)
7
+ var entryType = entry.type === 'button' ? 'button' : 'link'
8
+ var entryIconOnly = entry.iconOnly === true
7
9
  var entryClassName = typeof entry.className === 'string' ? entry.className.trim() : ''
8
- var entryClasses = 'ui-collection__item card-hover card-hover--spotlight'
10
+ var entryModifiers = []
11
+ if (entryIconOnly) {
12
+ entryModifiers.push('is-icon-only')
13
+ }
9
14
  if (entry.active) {
10
- entryClasses += ' is-active'
15
+ entryModifiers.push('is-active')
11
16
  }
12
17
  if (entryClassName.length > 0) {
13
- entryClasses += ' ' + entryClassName
18
+ entryModifiers.push(entryClassName)
14
19
  }
20
+ var entryClasses = ui_classes('', 'collectionItem', entryModifiers.join(' '))
15
21
  var entryStyle = ''
16
22
  if (entry.theme) {
17
23
  entryStyle += '--item-theme:' + String(entry.theme) + ';'
@@ -19,17 +25,29 @@ if (entry.theme) {
19
25
  if (entry.depth > 0) {
20
26
  entryStyle += '--ui-item-depth:' + parseInt(entry.depth, 10) + ';'
21
27
  }
22
- var entryGradientId = entry.gradientId ? String(entry.gradientId).replace(/[^a-zA-Z0-9_-]/g, '-') : ''
23
- var entryGradientRef = entry.gradientRef ? String(entry.gradientRef).replace(/[^a-zA-Z0-9_-]/g, '-') : ''
24
- if (entryGradientId.length > 0 || entryGradientRef.length > 0) {
25
- entryStyle += '--item-grad:url(#' + (entryGradientId || entryGradientRef) + ');'
28
+ var showTitle = entry.showTitle !== false && !entryIconOnly
29
+ var hasContent = !entryIconOnly && (showTitle || entryPrefix.length > 0 || entryDescription.length > 0 || entryMeta.length > 0)
30
+ var safeAttrs = ''
31
+ var attrs = entry.attrs && typeof entry.attrs === 'object' && !Array.isArray(entry.attrs) ? entry.attrs : {}
32
+ Object.keys(attrs).forEach(function(name) {
33
+ if (!/^(?:aria|data)-[a-z0-9_-]+$/i.test(name) && name !== 'title') return
34
+ var value = attrs[name]
35
+ if (value == null || value === false) return
36
+ safeAttrs += ` ${name}="${escape_html(value === true ? name : String(value))}"`
37
+ })
38
+ var tagName = entryType === 'button' ? 'button' : 'a'
39
+ var primaryAttrs = entryType === 'button'
40
+ ? ' type="button"'
41
+ : ` href="${escape_html(entry.href)}"`
42
+ if (!Object.prototype.hasOwnProperty.call(attrs, 'title')) {
43
+ primaryAttrs += ` title="${escape_html(entryTitle)}"`
26
44
  }
27
- var showTitle = entry.showTitle !== false
28
- var hasContent = showTitle || entryPrefix.length > 0 || entryDescription.length > 0 || entryMeta.length > 0
45
+ if (entry.active) primaryAttrs += ' aria-current="page"'
46
+ if (entryStyle.length > 0) primaryAttrs += ` style="${escape_html(entryStyle)}"`
29
47
  %>
30
- <a class="<%= entryClasses %>" href="<%= entry.href %>" title="<%= entryTitle %>"<% if (entry.active) { %> aria-current="page"<% } %><% if (entryStyle.length > 0) { %> style="<%= entryStyle %>"<% } %>>
48
+ <%- `<${tagName} class="${escape_html(entryClasses)}"${primaryAttrs}${safeAttrs}>` %>
31
49
  <%- typeof entry.before === 'string' ? entry.before : '' %>
32
- <% if (entry.icon) { %><span class="ui-collection__leading"><%- icon(entry.icon, 'no-lazy', true) %></span><% } %>
50
+ <% if (entry.icon) { %><span class="ui-icon"><%- icon(entry.icon, 'no-lazy', true) %></span><% } %>
33
51
  <% if (hasContent) { %>
34
52
  <span class="ui-collection__content">
35
53
  <% if (entryPrefix.length > 0) { %><span class="ui-collection__prefix"><%= entryPrefix %></span><% } %>
@@ -40,5 +58,4 @@ var hasContent = showTitle || entryPrefix.length > 0 || entryDescription.length
40
58
  <% } %>
41
59
  <%- typeof entry.after === 'string' ? entry.after : '' %>
42
60
  <% if (entry.active && entry.indicator !== false) { %><span class="ui-collection__indicator"></span><% } %>
43
- <% if (entryGradientId.length > 0) { %><%- partial('_partial/sidebar/grad-def', {id: entryGradientId}) %><% } %>
44
- </a>
61
+ <%- `</${tagName}>` %>
@@ -1,10 +1,10 @@
1
1
  <%
2
2
  var collectionOptions = typeof options === 'object' && options ? options : {}
3
3
  var collectionItems = Array.isArray(collectionOptions.items) ? collectionOptions.items.filter(function(entry) {
4
- return entry && entry.href != null
4
+ return entry && (entry.href != null || entry.type === 'button')
5
5
  }) : []
6
6
  if (collectionItems.length > 0) {
7
- var collectionLayout = collectionOptions.layout === 'grid' ? 'grid' : 'list'
7
+ var collectionLayout = ['grid', 'inline'].includes(collectionOptions.layout) ? collectionOptions.layout : 'list'
8
8
  var collectionVariant = ['nav', 'summary', 'icon'].includes(collectionOptions.variant) ? collectionOptions.variant : 'nav'
9
9
  var collectionDensity = collectionOptions.density === 'compact' ? 'compact' : 'auto'
10
10
  var collectionColumns = parseInt(collectionOptions.columns, 10)
@@ -1,7 +1,10 @@
1
1
  <%
2
2
  function layoutCover() {
3
- if (page.wiki) {
4
- return partial('wiki_cover')
3
+ var wikiViewModel = typeof viewModel !== 'undefined' && viewModel?.collection?.profile === 'wiki'
4
+ ? viewModel
5
+ : null
6
+ if (wikiViewModel) {
7
+ return partial('wiki_cover', {viewModel: wikiViewModel})
5
8
  }
6
9
  return ''
7
10
  }