hexo-theme-stellar 1.37.0 → 1.38.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 (67) hide show
  1. package/CHANGELOG.md +41 -0
  2. package/_config.yml +13 -8
  3. package/languages/en.yml +37 -0
  4. package/languages/zh-CN.yml +37 -0
  5. package/languages/zh-TW.yml +37 -0
  6. package/layout/_partial/comments/layout.ejs +2 -1
  7. package/layout/_partial/main/navbar/article_banner.ejs +11 -5
  8. package/layout/_partial/main/post_list/post_card.ejs +1 -1
  9. package/layout/_partial/scripts/defines.ejs +2 -1
  10. package/layout/_partial/scripts/utils.ejs +58 -15
  11. package/layout/_partial/sidebar/grad-def.ejs +26 -0
  12. package/layout/_partial/sidebar/index_leftbar.ejs +25 -10
  13. package/layout/_partial/sidebar/logo.ejs +21 -0
  14. package/layout/_partial/sidebar/menu.ejs +11 -5
  15. package/layout/_partial/widgets/toc.ejs +12 -8
  16. package/layout/_plugins/scrollreveal.ejs +17 -2
  17. package/layout/index.ejs +27 -1
  18. package/layout/notebooks.ejs +3 -1
  19. package/layout/notes.ejs +3 -1
  20. package/package.json +1 -1
  21. package/scripts/tags/index.js +1 -0
  22. package/scripts/tags/lib/mbti.js +169 -0
  23. package/source/css/_common/canonical.styl +9 -10
  24. package/source/css/_common/highlight.styl +0 -2
  25. package/source/css/_common/html.styl +2 -1
  26. package/source/css/_common/svg.styl +9 -1
  27. package/source/css/_components/list.styl +36 -16
  28. package/source/css/_components/md.styl +0 -1
  29. package/source/css/_components/pages/article-story.styl +1 -3
  30. package/source/css/_components/partial/article-banner.styl +17 -11
  31. package/source/css/_components/partial/article-footer.styl +0 -1
  32. package/source/css/_components/partial/navbar.styl +3 -3
  33. package/source/css/_components/sidebar/logo.styl +26 -0
  34. package/source/css/_components/sidebar/menu.styl +53 -30
  35. package/source/css/_components/sidebar/nav-area.styl +1 -1
  36. package/source/css/_components/sidebar/search.styl +46 -7
  37. package/source/css/_components/sidebar/sidebar.styl +5 -1
  38. package/source/css/_components/tag-plugins/banner.styl +2 -1
  39. package/source/css/_components/tag-plugins/chat.styl +3 -1
  40. package/source/css/_components/tag-plugins/folding.styl +1 -2
  41. package/source/css/_components/tag-plugins/friends.styl +1 -0
  42. package/source/css/_components/tag-plugins/friends_posts.styl +2 -1
  43. package/source/css/_components/tag-plugins/gallery.styl +1 -2
  44. package/source/css/_components/tag-plugins/grid.styl +1 -2
  45. package/source/css/_components/tag-plugins/image.styl +0 -2
  46. package/source/css/_components/tag-plugins/link.styl +0 -1
  47. package/source/css/_components/tag-plugins/mbti.styl +80 -0
  48. package/source/css/_components/tag-plugins/note.styl +1 -2
  49. package/source/css/_components/tag-plugins/okr.styl +1 -2
  50. package/source/css/_components/tag-plugins/sites.styl +0 -1
  51. package/source/css/_components/tag-plugins/timeline.styl +1 -6
  52. package/source/css/_components/widgets/components.styl +14 -7
  53. package/source/css/_components/widgets/ghuser.styl +2 -1
  54. package/source/css/_components/widgets/list.styl +20 -8
  55. package/source/css/_components/widgets/markdown.styl +4 -1
  56. package/source/css/_components/widgets/related.styl +6 -4
  57. package/source/css/_components/widgets/toc.styl +2 -2
  58. package/source/css/_components/widgets/widgets.styl +6 -9
  59. package/source/css/_custom.styl +2 -1
  60. package/source/css/_defines/const.styl +1 -1
  61. package/source/css/_defines/func.styl +13 -1
  62. package/source/css/_defines/theme_base.styl +22 -1
  63. package/source/css/_plugins/comments/artalk.styl +2 -2
  64. package/source/css/_plugins/comments/twikoo.styl +0 -2
  65. package/source/css/_plugins/tianli_gpt.styl +3 -0
  66. package/source/js/main.js +39 -17
  67. package/source/js/services/memos.js +12 -3
@@ -10,6 +10,8 @@
10
10
  display: flex
11
11
  flex-direction: row
12
12
  align-items: center
13
+ padding: 0 16px
14
+ gap: 16px
13
15
  transition: 0.38s ease-out
14
16
  z-index: 1
15
17
  border-radius: $border-card-s
@@ -31,12 +33,24 @@
31
33
  background: var(--bg-a20)
32
34
  z-index 0
33
35
  trans1 all
36
+ &:after
37
+ position: absolute
38
+ content: ''
39
+ height: 2px
40
+ bottom: 0
41
+ left: 1rem
42
+ right: 1rem
43
+ border-radius: $border-bar
44
+ background: convert(hexo-config('style.gradient.searchbar'))
45
+ background-size: 200%
46
+ animation: search-glow 20s linear infinite
47
+ opacity: 0
48
+ pointer-events: none
49
+ z-index 1
50
+ trans1 opacity, 0.3s
34
51
  &:hover,&:has(input:focus),&:has(input:not(:placeholder-shown))
35
- &:before
36
- background: var(--bg-a100)
37
- height: 100%
38
- left: 0
39
- right: 0
52
+ &:after
53
+ opacity: 1
40
54
  .search-input
41
55
  width: 100%
42
56
  box-sizing: border-box
@@ -54,10 +68,13 @@
54
68
  border-radius: $border-bar
55
69
  display: flex
56
70
  align-items: center
57
- height: 40px
71
+ justify-content: center
72
+ flex-shrink: 0
73
+ width: 1.5rem
74
+ height: 1.5rem
58
75
  svg
59
76
  height: 1rem
60
- width: calc((var(--side-content-width) + var(--gap-padding) * 2 - 3 * 8px) * 0.25)
77
+ width: 1rem
61
78
  color: var(--text-p2)
62
79
  fill: currentColor
63
80
  path[p-id="1562"]
@@ -89,6 +106,8 @@
89
106
  scrollbar-width: none
90
107
  scrollbar(0, 0)
91
108
  border-radius: $border-bar
109
+ mask: linear-gradient(white, 90%, transparent)
110
+ -webkit-mask: linear-gradient(white, 90%, transparent)
92
111
  &:empty
93
112
  display: none
94
113
  .search-result-list
@@ -134,3 +153,23 @@
134
153
  .search-no-result
135
154
  display: block
136
155
  margin-bottom: 8px
156
+
157
+ .leftbar-container > .search-wrapper
158
+ width: auto
159
+ margin: 1rem var(--gap-margin) 0
160
+ padding-bottom: 0
161
+
162
+ .leftbar-container > .search-wrapper[searching='true']
163
+ flex-grow: 1
164
+ min-height: 0
165
+ display: flex
166
+ flex-direction: column
167
+ #search-result
168
+ flex-grow: 1
169
+ max-height: none
170
+
171
+ @keyframes search-glow
172
+ from
173
+ background-position: 0%
174
+ to
175
+ background-position: 1000%
@@ -55,6 +55,10 @@
55
55
  text-align: justify
56
56
  border-radius: $border-card-l
57
57
  overflow: hidden
58
+ // 搜索条激活(有输入内容)时隐藏导航区与组件区,给搜索结果腾出空间
59
+ > .search-wrapper[searching='true']
60
+ & ~ .widgets
61
+ display: none
58
62
  >.widgets
59
63
  border-radius: $border-bar
60
64
  mask: linear-gradient(white, 90%, transparent)
@@ -94,4 +98,4 @@
94
98
  --inset: 0
95
99
  --saturate: 300%
96
100
  .leftbar-container:after
97
- background: var(--bg-a20)
101
+ background: var(--bg-a20)
@@ -87,6 +87,7 @@
87
87
  right: 0
88
88
  img.avatar
89
89
  border-radius: 50%
90
+ corner-shape: round
90
91
  width: 48px
91
92
  height: 48px
92
93
  .bottom
@@ -129,4 +130,4 @@
129
130
 
130
131
  @media screen and (max-width: $device-mobile-max)
131
132
  .banner.top
132
- border-radius: 0
133
+ border-radius: 0
@@ -187,6 +187,7 @@ chat_dark()
187
187
  width: 32px
188
188
  height: 32px
189
189
  border-radius: 50%
190
+ corner-shape: round
190
191
  .user-main
191
192
  padding: 0 .5em
192
193
  display: flex
@@ -441,6 +442,7 @@ chat_dark()
441
442
  width: 1rem
442
443
  padding: .2em
443
444
  border-radius: 50%
445
+ corner-shape: round
444
446
  background: var(--chat-block)
445
447
  >path
446
448
  fill: var(--text-p1)
@@ -542,6 +544,7 @@ chat_dark()
542
544
  >.voice-circle
543
545
  border: 2px solid var(--text-p1)
544
546
  border-radius: 50%
547
+ corner-shape: round
545
548
  position: absolute
546
549
  &.first
547
550
  width: 5px
@@ -652,4 +655,3 @@ chat_dark()
652
655
  background-color: transparent;
653
656
  }
654
657
  }
655
-
@@ -3,7 +3,6 @@ details.folding
3
3
  padding: 1rem
4
4
  margin: 1rem 0
5
5
  border-radius: $border-card
6
- corner-shape: superellipse(1.2)
7
6
  background: var(--theme-block)
8
7
  border: 1px solid var(--theme-border)
9
8
  summary
@@ -80,4 +79,4 @@ details.folding[child=iframe]
80
79
  >div.body
81
80
  padding: 0
82
81
  background: none
83
- overflow: hidden
82
+ overflow: hidden
@@ -26,6 +26,7 @@
26
26
  position: relative
27
27
  .lazy-box
28
28
  border-radius: 64px
29
+ corner-shape: round
29
30
  margin: 0 0 0.5rem
30
31
  img
31
32
  object-fit: cover
@@ -60,6 +60,7 @@
60
60
  max-width: 100%
61
61
  .lazy-box
62
62
  border-radius: 64px
63
+ corner-shape: round
63
64
  floatable-trans()
64
65
  img
65
66
  object-fit: cover
@@ -158,4 +159,4 @@
158
159
  transform: scale(1.2) rotate(8deg)
159
160
  box-shadow: $boxshadow-card-float
160
161
  .post-link:hover
161
- color: var(--accent)
162
+ color: var(--accent)
@@ -50,7 +50,6 @@
50
50
  .tag-plugin.gallery.grid-box
51
51
  display: grid
52
52
  .grid-cell
53
- corner-shape: superellipse(1.2)
54
53
  &[size='xs']
55
54
  grid-template-columns: repeat(auto-fill, minmax(80px, 1fr))
56
55
  grid-gap: 2px
@@ -116,4 +115,4 @@
116
115
  background-color: var(--block)
117
116
  .image-meta
118
117
  border-radius: 8px
119
- margin-bottom: 8px
118
+ margin-bottom: 8px
@@ -17,9 +17,8 @@
17
17
  &[bg]>.cell
18
18
  padding: 1rem
19
19
  border-radius: $border-card
20
- corner-shape: superellipse(1.2)
21
20
  &[bg='box']>.cell
22
21
  background: var(--block)
23
22
  &[bg='card']>.cell
24
23
  background: var(--card)
25
- hoverable-card()
24
+ hoverable-card()
@@ -5,7 +5,6 @@
5
5
  .image-bg
6
6
  text-align: center
7
7
  border-radius: $border-image
8
- corner-shape: superellipse(1.2)
9
8
  position: relative
10
9
  overflow: hidden
11
10
  display: flex
@@ -24,7 +23,6 @@
24
23
  display: block
25
24
  object-fit: cover
26
25
  border-radius: $border-image
27
- corner-shape: superellipse(1.2)
28
26
  .image-download
29
27
  z-index: 2
30
28
  position: absolute
@@ -13,7 +13,6 @@
13
13
  width: 300px
14
14
  max-width: 100%
15
15
  border-radius: $border-card-s
16
- corner-shape: superellipse(1.2)
17
16
  hoverable-card()
18
17
 
19
18
  .md-text .link-card.plain
@@ -0,0 +1,80 @@
1
+ .md-text .tag-plugin.mbti
2
+ display: block
3
+ border: 1px solid var(--theme-border)
4
+ background: var(--card)
5
+ color: inherit
6
+ text-decoration: none
7
+ .mbti-image
8
+ display: block
9
+ width: 100%
10
+ margin: 0 0 1.5rem 0
11
+ .mbti-title-link
12
+ color: inherit
13
+ font-weight: 600
14
+ .mbti-title
15
+ display: flex
16
+ align-items: center
17
+ justify-content: center
18
+ color: var(--text-p1)
19
+ font-weight: 600
20
+ margin-bottom: 1rem
21
+ .mbti-body
22
+ border-top: 1px dashed var(--block-border)
23
+ padding-top: 0.75rem
24
+ margin-top: 0.75rem
25
+
26
+ .mbti-trait + .mbti-trait
27
+ margin-top: 0.75rem
28
+
29
+ .mbti-labels
30
+ display: flex
31
+ justify-content: space-between
32
+ align-items: baseline
33
+ font-size: $fs-13
34
+ margin-bottom: 4px
35
+ .mbti-label.active
36
+ color: var(--text-p1)
37
+ font-weight: 600
38
+ .mbti-label:not(.active)
39
+ color: var(--text-p3)
40
+ .mbti-label .pct
41
+ color: var(--text-p3)
42
+ font-size: $fs-12
43
+
44
+ .mbti-progress
45
+ height: 4px
46
+ border-radius: 2px
47
+ position: relative
48
+ background: var(--theme-a30)
49
+ .fill
50
+ position: absolute
51
+ background: var(--theme)
52
+ border-radius: 2px
53
+ top: 0
54
+ left: 0
55
+ bottom: 0
56
+ .mbti-dot
57
+ position: absolute
58
+ top: -4px
59
+ width: 8px
60
+ height: 12px
61
+ margin-left: -4px
62
+ border-radius: 8px
63
+ background: #fff
64
+ box-shadow: $boxshadow-button
65
+ &:after
66
+ content: ''
67
+ position: absolute
68
+ top: 2px
69
+ bottom: 2px
70
+ left: 2px
71
+ width: 4px
72
+ border-radius: 4px
73
+ background: var(--theme)
74
+
75
+ .mbti-trait.reversed .fill
76
+ left: auto
77
+ right: 0
78
+
79
+ .md-text .tag-plugin.note.mbti
80
+ padding: 2rem
@@ -2,7 +2,6 @@
2
2
  position: relative
3
3
  padding: 0.25rem 1rem
4
4
  border-radius: $border-card
5
- corner-shape: superellipse(1.2)
6
5
  background: var(--theme-block)
7
6
  overflow: hidden
8
7
  if hexo-config('tag_plugins.note.border') == true
@@ -66,4 +65,4 @@
66
65
  --gap-p: 1rem
67
66
 
68
67
  .l_body[type=story] .tag-plugin.note .title p:not([class])
69
- text-indent: 0
68
+ text-indent: 0
@@ -1,7 +1,6 @@
1
1
  .md-text .tag-plugin.okr
2
2
  position: relative
3
3
  border-radius: $border-card
4
- corner-shape: superellipse(1.2)
5
4
  background: var(--theme-block)
6
5
  if hexo-config('tag_plugins.okr.border') == true
7
6
  border: 1px solid var(--theme-border)
@@ -111,4 +110,4 @@
111
110
  .okr-left .title
112
111
  padding: 0 0.25rem
113
112
  .label
114
- txt-ellipsis()
113
+ txt-ellipsis()
@@ -12,7 +12,6 @@
12
12
  position: relative
13
13
  .lazy-box
14
14
  border-radius: $border-card-s
15
- corner-shape: superellipse(1.2)
16
15
  box-shadow: 0 1px 2px 0px rgba(0, 0, 0, 0.2)
17
16
  overflow hidden
18
17
  >img
@@ -3,7 +3,6 @@
3
3
  padding-left: 16px
4
4
  p>img
5
5
  border-radius: $border-image-s
6
- corner-shape: superellipse(1.2)
7
6
  &:before
8
7
  content: ''
9
8
  position: absolute
@@ -24,7 +23,6 @@
24
23
  margin-left: 0
25
24
  p>img
26
25
  border-radius: $border-image-s
27
- corner-shape: superellipse(1.2)
28
26
 
29
27
  .tag-plugin.timeline .timenode
30
28
  position: relative
@@ -93,7 +91,6 @@
93
91
  .tag-plugin.timeline .body
94
92
  background: var(--card)
95
93
  border-radius: 16px
96
- corner-shape: superellipse(1.2)
97
94
  border-top-left-radius: 2px
98
95
  padding: 0.5rem 1rem
99
96
  margin-top: 4px
@@ -150,7 +147,6 @@
150
147
  .lazy-box
151
148
  margin: .5rem 0
152
149
  border-radius: $border-image
153
- corner-shape: superellipse(1.2)
154
150
  >img
155
151
  margin: 0 auto
156
152
 
@@ -159,7 +155,6 @@
159
155
 
160
156
  aside .tag-plugin.timeline[data-api] .body .lazy-box
161
157
  border-radius: $border-image-s
162
- corner-shape: superellipse(1.2)
163
158
 
164
159
  .tag-plugin.timeline[data-api] .body .footer
165
160
  margin: 0 0 -0.5rem
@@ -242,4 +237,4 @@ aside .tag-plugin.timeline[data-api] .body .lazy-box
242
237
  .tag-plugin.image
243
238
  display: flex
244
239
  .image-bg+.image-bg
245
- margin-left: 4px
240
+ margin-left: 4px
@@ -2,13 +2,16 @@
2
2
  display: grid
3
3
  grid-gap: 8px
4
4
 
5
+ .linklist .link:hover
6
+ background: var(--bg-a50)
7
+ svg
8
+ filter: unset
9
+
5
10
  .linklist .link
6
11
  border-radius: $border-bar
7
- corner-shape: superellipse(1.2)
8
12
  color: var(--text-p2)
9
13
  min-height: 32px
10
14
  padding: 0 4px
11
- trans1 background
12
15
  display: flex
13
16
  justify-content: center
14
17
  align-items: center
@@ -18,6 +21,15 @@
18
21
  svg,img
19
22
  filter: unset
20
23
 
24
+ .l_left .linklist .link
25
+ &:hover, &.active
26
+ sidebar-light()
27
+ --item-grad: url(#leftbar-active-icon-grad)
28
+ > svg [fill="currentColor"]
29
+ fill: var(--item-grad)
30
+ > svg [stroke="currentColor"]
31
+ stroke: var(--item-grad)
32
+
21
33
  .linklist .link span
22
34
  padding: 0 4px
23
35
  txt-ellipsis()
@@ -43,8 +55,3 @@
43
55
  transform: scale(1.2)
44
56
  span
45
57
  padding: 0 8px
46
-
47
- .linklist .link:hover
48
- background: var(--bg-a100)
49
- svg
50
- filter: unset
@@ -25,6 +25,7 @@
25
25
  .avatar
26
26
  display: block
27
27
  border-radius: 100%
28
+ corner-shape: round
28
29
  margin: 1rem auto 1.25rem auto
29
30
  max-width: 128px
30
31
  overflow: hidden
@@ -92,4 +93,4 @@
92
93
  font-weight: 500
93
94
 
94
95
  .widget-wrapper.user-card .widget-header+.widget-body
95
- margin-top: 4px
96
+ margin-top: 4px
@@ -4,25 +4,37 @@
4
4
  padding: 6px 16px
5
5
  display: block
6
6
  border-radius: $border-bar
7
- corner-shape: superellipse(1.2)
8
7
  color: var(--text-p1)
9
- trans1 background
10
- &.active,&:hover
11
- background: var(--bg-a100)
8
+ &:hover
9
+ background: var(--bg-a50)
10
+ &.active
11
+ background: var(--bg-a50)
12
12
  a+a
13
13
  margin-top: 2px
14
14
  a
15
15
  display: flex
16
16
  justify-content: space-between
17
17
  align-items: center
18
+ gap: 16px
18
19
  .title
19
20
  txt-ellipsis()
20
21
  svg
21
22
  flex-shrink: 0
22
- height: 1em
23
- width: auto
24
- transform: scale(1.2)
23
+ width: 1.5rem
24
+ height: 1.5rem
25
+ &.active-icon
26
+ width: 1rem
27
+ height: 1rem
28
+
29
+ .l_left .widget-wrapper.post-list .widget-body a
30
+ &:hover, &.active
31
+ sidebar-light()
32
+ --item-grad: url(#leftbar-active-icon-grad)
33
+ > svg [fill="currentColor"]
34
+ fill: var(--item-grad)
35
+ > svg [stroke="currentColor"]
36
+ stroke: var(--item-grad)
25
37
 
26
38
  .widget-wrapper.post-list
27
39
  .widget-body+.widget-header
28
- margin-top: 28px
40
+ margin-top: 28px
@@ -13,8 +13,11 @@
13
13
  .link:hover
14
14
  background: var(--bg-a100)
15
15
 
16
+ .l_left .widget-wrapper.markdown .linklist .link:hover
17
+ sidebar-light()
18
+
16
19
  .l_right .widget-wrapper.markdown .linklist
17
20
  .link
18
21
  background: var(--block)
19
22
  .link:hover
20
- background: var(--theme-a20)
23
+ background: var(--theme-a20)
@@ -30,9 +30,11 @@
30
30
  overflow: hidden
31
31
  -webkit-line-clamp: 2
32
32
 
33
- .item
34
- trans1 background
35
- .item.active
36
- background: var(--bg-a50)
37
33
  .item:hover
38
34
  background: var(--bg-a50)
35
+ .item.active
36
+ background: var(--bg-a50)
37
+
38
+ .l_left .widget-wrapper.post-card .widget-body .item
39
+ &:hover, &.active
40
+ sidebar-light()
@@ -134,10 +134,10 @@
134
134
  trans1 all
135
135
  overflow hidden
136
136
  .l_right .widgets .widget-wrapper.toc .widget-header .cap-action:hover
137
- background: var(--block-border)
137
+ sidebar-light(var(--bg-a50))
138
138
  .l_right .widgets .widget-wrapper.toc.collapse
139
139
  .widget-header .cap-action
140
- background: var(--block-border)
140
+ sidebar-light(var(--bg-a50))
141
141
  .widget-body
142
142
  grid-template-rows: 0fr
143
143
 
@@ -11,6 +11,7 @@
11
11
  z-index: 1
12
12
  line-height: 1.2
13
13
  margin: 0 var(--gap-margin)
14
+ padding-bottom: 32px
14
15
  .widget-wrapper
15
16
  .widget-header
16
17
  padding-left: var(--gap-padding)
@@ -26,14 +27,14 @@
26
27
  display: block
27
28
  >span
28
29
  text-align: left
29
- opacity 0.6
30
+ opacity 0.3
30
31
  &:empty
31
32
  display: none
32
33
  .cap-action
33
34
  line-height: 0
34
35
  color: inherit
35
- opacity 0.6
36
- trans2: opacity background
36
+ opacity 0.3
37
+ trans1 opacity
37
38
  border-radius: 4px
38
39
  padding: 6px
39
40
  margin-right: -6px
@@ -44,7 +45,7 @@
44
45
  fill: var(--text-p2)
45
46
  &:hover
46
47
  color: var(--accent)
47
- background: var(--bg-a100)
48
+ sidebar-light(var(--bg-a50))
48
49
  opacity 1
49
50
  svg
50
51
  fill: var(--accent)
@@ -59,7 +60,7 @@
59
60
 
60
61
  .widget-wrapper
61
62
  display: block
62
- padding-bottom: 32px
63
+ margin-top: 32px
63
64
 
64
65
  .l_right .widgets
65
66
  &:empty
@@ -77,7 +78,3 @@
77
78
  @media screen and (min-width: $device-laptop)
78
79
  .widget-wrapper.markdown .widget-body
79
80
  background: var(--block)
80
-
81
- .leftbar-container
82
- .header+.widgets
83
- margin-top: 1rem
@@ -61,6 +61,7 @@ $border-image-l = convert(hexo-config('style.border-radius.image-l'))
61
61
  $border-image = convert(hexo-config('style.border-radius.image'))
62
62
  $border-image-s = convert(hexo-config('style.border-radius.image-s'))
63
63
  $border-button = 8px
64
+ $corner-shape = convert(hexo-config('style.corner-shape') || 'superellipse(1.2)')
64
65
 
65
66
  // 可以动态变化的属性
66
67
  :root
@@ -102,4 +103,4 @@ $boxshadow-float = 0 4px 8px 0px rgba(0, 0, 0, 0.1)
102
103
  $boxshadow-card-float = 0 12px 16px -4px rgba(0, 0, 0, 0.2)
103
104
  $boxshadow-button = 0 0 2px 0px rgba(0, 0, 0, 0.04), 0 0 8px 0px rgba(0, 0, 0, 0.04)
104
105
  $boxshadow-block = 0 1px 4px 0px rgba(0, 0, 0, 0.02), 0 2px 8px 0px rgba(0, 0, 0, 0.02)
105
- $boxshadow-toast = 0 4px 8px 0px rgba(0, 0, 0, 0.1), 0 12px 16px -4px rgba(0, 0, 0, 0.2)
106
+ $boxshadow-toast = 0 4px 8px 0px rgba(0, 0, 0, 0.1), 0 12px 16px -4px rgba(0, 0, 0, 0.2)
@@ -50,5 +50,5 @@ $c-cyan = #1BCDFC
50
50
  $c-blue = #2196f3
51
51
  $c-purple = #9c27b0
52
52
 
53
- $leftbar-bottom-margin = 96px
53
+ $leftbar-bottom-margin = 32px
54
54
  $rightbar-bottom-margin = 96px
@@ -133,6 +133,18 @@ hoverable-card()
133
133
  @media (prefers-color-scheme: dark)
134
134
  ondark()
135
135
 
136
+ // 侧栏高亮项的顶部光照效果(无过渡动画):
137
+ // 在 hover/active 背景上叠加顶部白色光照渐变与高光边,深浅色模式分别调优透明度
138
+ sidebar-light($bg = unquote('var(--bg-a50)'), $light = 0.38, $edge = 0.45, $dark-light = 0.05, $dark-edge = 0.1)
139
+ background: linear-gradient(180deg, rgba(white, $light), rgba(white, 0) 50%), $bg
140
+ box-shadow: inset 0 1px 0 rgba(white, $edge)
141
+ :root[data-theme="dark"] &
142
+ background: linear-gradient(180deg, rgba(white, $dark-light), rgba(white, 0) 20%), $bg
143
+ box-shadow: inset 0 1px 0 rgba(white, $dark-edge)
144
+ @media (prefers-color-scheme: dark)
145
+ background: linear-gradient(180deg, rgba(white, $dark-light), rgba(white, 0) 20%), $bg
146
+ box-shadow: inset 0 1px 0 rgba(white, $dark-edge)
147
+
136
148
  newblur()
137
149
  box-shadow: 0 0 2px rgba(black, .04), 0 2px 8px rgba(black, .04), 0 4px 16px rgba(black, .04)
138
150
  trans1: all
@@ -178,4 +190,4 @@ newblur()
178
190
  :root[data-theme="dark"] &
179
191
  box-shadow: inset 0 0 2px 1px rgba(white, 0.2)
180
192
  @media (prefers-color-scheme: dark)
181
- box-shadow: inset 0 0 2px 1px rgba(white, 0.2)
193
+ box-shadow: inset 0 0 2px 1px rgba(white, 0.2)