hexo-theme-stellar 1.28.1 → 1.29.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/_config.yml +55 -6
  2. package/_data/icons.yml +3 -1
  3. package/_data/widgets.yml +6 -0
  4. package/languages/en.yml +7 -0
  5. package/languages/zh-CN.yml +7 -0
  6. package/languages/zh-TW.yml +7 -0
  7. package/layout/_partial/comments/artalk/script.ejs +9 -13
  8. package/layout/_partial/comments/beaudar/script.ejs +20 -23
  9. package/layout/_partial/comments/giscus/script.ejs +11 -11
  10. package/layout/_partial/comments/twikoo/script.ejs +12 -17
  11. package/layout/_partial/comments/utterances/script.ejs +20 -23
  12. package/layout/_partial/comments/waline/script.ejs +9 -16
  13. package/layout/_partial/head.ejs +1 -1
  14. package/layout/_partial/main/article/article_footer.ejs +6 -2
  15. package/layout/_partial/main/article/related_posts.ejs +1 -1
  16. package/layout/_partial/main/navbar/article_banner.ejs +2 -0
  17. package/layout/_partial/main/navbar/breadcrumb/note.ejs +8 -0
  18. package/layout/_partial/main/navbar/dateinfo.ejs +11 -0
  19. package/layout/_partial/main/notebook/note_card.ejs +36 -0
  20. package/layout/_partial/main/notebook/note_tags.ejs +9 -0
  21. package/layout/_partial/main/notebook/notebook_card.ejs +10 -0
  22. package/layout/_partial/main/notebook/paginator.ejs +9 -0
  23. package/layout/_partial/scripts/tagtree.ejs +29 -0
  24. package/layout/_partial/scripts/theme.ejs +62 -0
  25. package/layout/_partial/scripts.ejs +4 -1
  26. package/layout/_partial/sidebar/index_leftbar.ejs +10 -0
  27. package/layout/_partial/sidebar/index_rightbar.ejs +10 -0
  28. package/layout/_partial/sidebar/search.ejs +4 -0
  29. package/layout/_partial/widgets/recent.ejs +10 -0
  30. package/layout/_partial/widgets/tagtree.ejs +59 -0
  31. package/layout/_partial/widgets/toc.ejs +7 -5
  32. package/layout/_plugins/tianli_gpt.ejs +1 -1
  33. package/layout/layout.ejs +5 -1
  34. package/layout/notebooks.ejs +8 -0
  35. package/layout/notes.ejs +12 -0
  36. package/layout/page.ejs +11 -1
  37. package/package.json +1 -1
  38. package/scripts/events/index.js +1 -0
  39. package/scripts/events/lib/notebooks.js +153 -0
  40. package/scripts/generators/notebooks.js +71 -0
  41. package/scripts/tags/index.js +5 -0
  42. package/scripts/tags/lib/quot.js +1 -2
  43. package/scripts/tags/lib/read/paper.js +90 -0
  44. package/scripts/tags/lib/read/reel.js +43 -0
  45. package/scripts/tags/lib/video.js +11 -6
  46. package/source/css/_common/button.styl +3 -3
  47. package/source/css/_common/device.styl +3 -3
  48. package/source/css/_components/md.styl +21 -19
  49. package/source/css/_components/pages/notebook.styl +65 -0
  50. package/source/css/_components/partial/article-banner.styl +4 -4
  51. package/source/css/_components/tag-plugins/common.styl +2 -2
  52. package/source/css/_components/tag-plugins/index.styl +1 -0
  53. package/source/css/_components/tag-plugins/media.styl +1 -1
  54. package/source/css/_components/tag-plugins/quot.styl +0 -2
  55. package/source/css/_components/tag-plugins/read/paper.styl +98 -0
  56. package/source/css/_components/tag-plugins/read/reel.styl +103 -0
  57. package/source/css/_defines/func.styl +4 -6
  58. package/source/css/_defines/theme.styl +36 -38
  59. package/source/css/_plugins/comments/waline.styl +3 -3
  60. package/source/css/_plugins/mermaid.styl +2 -2
  61. package/source/js/main.js +14 -0
  62. package/source/js/search/local-search.js +2 -2
@@ -1,3 +1,4 @@
1
+ // Deprecated function. Keep for compatibility.
1
2
  theme($t)
2
3
  convert(hexo-config('style.prefers_theme')) == $t
3
4
 
@@ -40,47 +41,44 @@ _common_root()
40
41
  --theme-link: $color-link
41
42
 
42
43
  _light_root()
43
- :root
44
- --site-bg: hsl($color-background-h, $color-background-s, $color-background-l)
45
- --card: hsl($color-block-h, $color-block-s, 100)
46
- --block: hsl($color-block-h, $color-block-s, 95)
47
- --block-border: hsl($color-block-h, $color-block-s, 90)
48
- --block-hover: hsl($color-block-h, $color-block-s, 92)
49
- --theme-link-opa: rgba($color-link, 0.2)
50
- --leftbar-bg: hsl($color-block-h, $color-block-s, 90)
51
- --alpha20: rgba(white, 0.2)
52
- --alpha50: rgba(white, 0.5)
53
- --alpha60: rgba(white, 0.6)
54
- --alpha75: rgba(white, 0.75)
55
- --alpha100: white
56
- _dark_text()
57
-
44
+ --site-bg: hsl($color-background-h, $color-background-s, $color-background-l)
45
+ --card: hsl($color-block-h, $color-block-s, 100)
46
+ --block: hsl($color-block-h, $color-block-s, 95)
47
+ --block-border: hsl($color-block-h, $color-block-s, 90)
48
+ --block-hover: hsl($color-block-h, $color-block-s, 92)
49
+ --theme-link-opa: rgba($color-link, 0.2)
50
+ --leftbar-bg: hsl($color-block-h, $color-block-s, 90)
51
+ --alpha20: rgba(white, 0.2)
52
+ --alpha50: rgba(white, 0.5)
53
+ --alpha60: rgba(white, 0.6)
54
+ --alpha75: rgba(white, 0.75)
55
+ --alpha100: white
56
+ _dark_text()
57
+
58
58
  _dark_root()
59
- :root
60
- --site-bg: hsl($color-background-h, $color-background-s * 0.5, (100 - $color-background-l) * 2 + 8)
61
- --card: hsl($color-block-h, $color-block-s * 1.2, 24)
62
- --block: hsl($color-block-h, $color-block-s, 16)
63
- --block-border: hsl($color-block-h, $color-block-s, 24)
64
- --block-hover: hsl($color-block-h, $color-block-s, 20)
65
- --theme-link-opa: rgba($color-link, 0.4)
66
- --leftbar-bg: hsl($color-block-h, $color-block-s, 24)
67
- --alpha20: rgba(black, 0.2)
68
- --alpha50: rgba(black, 0.5)
69
- --alpha60: rgba(black, 0.6)
70
- --alpha75: rgba(black, 0.75)
71
- --alpha100: black
72
- _light_text()
73
- @media screen and (max-width: $device-mobile-max)
74
- --site-bg: black
59
+ --site-bg: hsl($color-background-h, $color-background-s * 0.5, (100 - $color-background-l) * 2 + 8)
60
+ --card: hsl($color-block-h, $color-block-s * 1.2, 24)
61
+ --block: hsl($color-block-h, $color-block-s, 16)
62
+ --block-border: hsl($color-block-h, $color-block-s, 24)
63
+ --block-hover: hsl($color-block-h, $color-block-s, 20)
64
+ --theme-link-opa: rgba($color-link, 0.4)
65
+ --leftbar-bg: hsl($color-block-h, $color-block-s, 24)
66
+ --alpha20: rgba(black, 0.2)
67
+ --alpha50: rgba(black, 0.5)
68
+ --alpha60: rgba(black, 0.6)
69
+ --alpha75: rgba(black, 0.75)
70
+ --alpha100: black
71
+ _light_text()
72
+ @media screen and (max-width: $device-mobile-max)
73
+ --site-bg: black
75
74
 
76
75
  _common_root()
77
- // 默认自动模式
78
- if theme(light)
76
+
77
+ :root[data-theme="light"]
79
78
  _light_root()
80
- else if theme(dark)
79
+ :root[data-theme="dark"]
81
80
  _dark_root()
82
- else
83
- @media (prefers-color-scheme: light)
84
- _light_root()
81
+ :root:not([data-theme])
82
+ _light_root()
85
83
  @media (prefers-color-scheme: dark)
86
- _dark_root()
84
+ _dark_root()
@@ -36,7 +36,7 @@
36
36
  --waline-border: 1px solid var(--waline-border-color);
37
37
  --waline-avatar-radius: 50%;
38
38
  --waline-box-shadow: none;
39
-
39
+
40
40
  .cmt-body.waline
41
41
  ondark()
42
42
  --waline-white: #000;
@@ -61,8 +61,8 @@
61
61
  font-size: 1.25em;
62
62
  color: #fff;
63
63
 
64
- if theme(dark)
64
+ :root[data-theme="dark"] &
65
65
  ondark()
66
- else if theme(auto)
66
+ :root:not([data-theme]) &
67
67
  @media (prefers-color-scheme: dark)
68
68
  ondark()
@@ -108,8 +108,8 @@ _dark_mermaid()
108
108
  fill: #ccc
109
109
 
110
110
 
111
- if theme(dark)
111
+ :root[data-theme="dark"]
112
112
  _dark_mermaid()
113
- else if theme(auto)
113
+ :root:not([data-theme])
114
114
  @media (prefers-color-scheme: dark)
115
115
  _dark_mermaid()
package/source/js/main.js CHANGED
@@ -58,6 +58,20 @@ const util = {
58
58
  scrollComment: () => {
59
59
  document.getElementById('comments').scrollIntoView({behavior: "smooth"});
60
60
  },
61
+
62
+ viewportLazyload: (target, func, enabled = true) => {
63
+ if (!enabled || !("IntersectionObserver" in window)) {
64
+ func();
65
+ return;
66
+ }
67
+ const observer = new IntersectionObserver((entries) => {
68
+ if (entries[0].intersectionRatio > 0) {
69
+ func();
70
+ observer.disconnect();
71
+ }
72
+ });
73
+ observer.observe(target);
74
+ }
61
75
  }
62
76
 
63
77
  const hud = {
@@ -64,7 +64,7 @@ var searchFunc = function(path, filter, wrapperId, searchId, contentId) {
64
64
  var dataTitleLowerCase = dataTitle.toLowerCase();
65
65
  var dataContent = data.content;
66
66
  var dataContentLowerCase = dataContent.toLowerCase();
67
- var dataUrl = data.path;
67
+ var dataUrl = data.path.startsWith('//') ? data.path.slice(1) : data.path; // 避免文章设置永久链接导致点击打开失败
68
68
  var indexTitle = -1;
69
69
  var indexContent = -1;
70
70
  var firstOccur = -1;
@@ -167,4 +167,4 @@ utils.jq(() => {
167
167
  }
168
168
  });
169
169
  observer.observe($resultArea, { childList: true });
170
- });
170
+ });