hexo-theme-stellar 1.33.0 → 1.34.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 (83) hide show
  1. package/CLAUDE.md +217 -0
  2. package/README.md +2 -0
  3. package/_config.yml +35 -26
  4. package/docs/audits/2026-08-08-stellar-analysis.md +267 -0
  5. package/docs/release-process.md +59 -0
  6. package/layout/_partial/comments/artalk/script.ejs +56 -41
  7. package/layout/_partial/comments/beaudar/script.ejs +35 -20
  8. package/layout/_partial/comments/giscus/script.ejs +34 -19
  9. package/layout/_partial/comments/twikoo/script.ejs +29 -14
  10. package/layout/_partial/comments/utterances/script.ejs +35 -20
  11. package/layout/_partial/comments/waline/script.ejs +40 -28
  12. package/layout/_partial/cover/wiki_cover.ejs +1 -1
  13. package/layout/_partial/head.ejs +53 -4
  14. package/layout/_partial/scripts/defines.ejs +21 -3
  15. package/layout/_partial/scripts/lazyload.ejs +2 -2
  16. package/layout/_partial/scripts/services.ejs +101 -41
  17. package/layout/_partial/scripts/utils.ejs +144 -5
  18. package/layout/_partial/sidebar/index_leftbar.ejs +3 -0
  19. package/layout/_partial/sidebar/search.ejs +3 -0
  20. package/layout/_partial/widgets/ghuser.ejs +18 -4
  21. package/layout/_partial/widgets/linklist.ejs +1 -1
  22. package/layout/_partial/widgets/timeline.ejs +36 -33
  23. package/layout/_plugins/copycode.ejs +9 -5
  24. package/layout/_plugins/mathjax.ejs +47 -18
  25. package/layout/_plugins/mermaid.ejs +28 -24
  26. package/layout/_plugins/pjax.ejs +8 -0
  27. package/layout/_plugins/scrollreveal.ejs +14 -13
  28. package/layout/_plugins/swiper.ejs +2 -2
  29. package/layout/index.ejs +4 -2
  30. package/layout/index_topic.ejs +4 -2
  31. package/layout/index_wiki.ejs +6 -4
  32. package/layout/layout.ejs +3 -2
  33. package/package.json +2 -1
  34. package/scripts/commands/new-note.js +49 -0
  35. package/scripts/filters/lib/img_onerror.js +0 -2
  36. package/scripts/helpers/json_ld.js +11 -8
  37. package/scripts/helpers/pretty_url.js +5 -0
  38. package/scripts/tags/lib/chat.js +16 -9
  39. package/scripts/tags/lib/frame.js +2 -1
  40. package/scripts/tags/lib/image.js +6 -5
  41. package/scripts/tags/lib/link.js +6 -4
  42. package/scripts/tags/lib/timeline.js +101 -79
  43. package/source/css/_common/canonical.styl +11 -6
  44. package/source/css/_common/highlight.styl +4 -1
  45. package/source/css/_common/html.styl +4 -0
  46. package/source/css/_common/loading.styl +5 -1
  47. package/source/css/_components/md.styl +3 -0
  48. package/source/css/_components/pages/article-story.styl +2 -0
  49. package/source/css/_components/partial/article-footer.styl +1 -0
  50. package/source/css/_components/partial/navbar.styl +4 -2
  51. package/source/css/_components/sidebar/menu.styl +1 -0
  52. package/source/css/_components/sidebar/search.styl +4 -0
  53. package/source/css/_components/sidebar/sidebar.styl +12 -5
  54. package/source/css/_components/tag-plugins/chat.styl +6 -8
  55. package/source/css/_components/tag-plugins/folding.styl +1 -0
  56. package/source/css/_components/tag-plugins/gallery.styl +2 -0
  57. package/source/css/_components/tag-plugins/grid.styl +1 -0
  58. package/source/css/_components/tag-plugins/image.styl +3 -0
  59. package/source/css/_components/tag-plugins/link.styl +1 -0
  60. package/source/css/_components/tag-plugins/navbar.styl +15 -13
  61. package/source/css/_components/tag-plugins/note.styl +1 -0
  62. package/source/css/_components/tag-plugins/okr.styl +1 -0
  63. package/source/css/_components/tag-plugins/sites.styl +2 -0
  64. package/source/css/_components/tag-plugins/timeline.styl +9 -0
  65. package/source/css/_components/tag-plugins/vote.styl +2 -0
  66. package/source/css/_components/widgets/components.styl +1 -0
  67. package/source/css/_components/widgets/ghuser.styl +19 -3
  68. package/source/css/_components/widgets/list.styl +1 -0
  69. package/source/css/_components/widgets/toc.styl +3 -0
  70. package/source/css/_components/widgets/widgets.styl +4 -0
  71. package/source/css/_custom.styl +6 -3
  72. package/source/css/_defines/func.styl +24 -8
  73. package/source/css/_defines/theme_base.styl +1 -1
  74. package/source/css/_plugins/comments/artalk.styl +6 -2
  75. package/source/css/_plugins/comments/twikoo.styl +2 -0
  76. package/source/css/_plugins/index.styl +2 -0
  77. package/source/css/_plugins/pjax.styl +61 -0
  78. package/source/js/main.js +80 -26
  79. package/source/js/plugins/copycode.js +34 -27
  80. package/source/js/plugins/pjax.js +646 -0
  81. package/source/js/search/local-search.js +5 -2
  82. package/source/js/services/memos.js +42 -4
  83. package/source/js/services/rss.js +200 -0
@@ -1,79 +1,101 @@
1
- /**
2
- * timeline.js v2.1 | https://github.com/xaoxuu/hexo-theme-stellar/
3
- *
4
- * {% timeline %}
5
- *
6
- * <!-- node header1 -->
7
- * what happened 1
8
- *
9
- * <!-- node header2 -->
10
- * what happened 2
11
- *
12
- * {% endtimeline %}
13
- */
14
-
15
- 'use strict'
16
-
17
- function layoutNodeTitle(ctx, content) {
18
- var el = ''
19
- el += '<div class="header">'
20
- if (content && content.length > 0) {
21
- el += `<span>${content}</span>`
22
- }
23
- el += '</div>'
24
- return el
25
- }
26
-
27
- function layoutNodeContent(ctx, content) {
28
- var el = ''
29
- el += '<div class="body fs14">'
30
- if (content && content.length > 0) {
31
- el += ctx.render.renderSync({text: content, engine: 'markdown'}).split('\n').join('')
32
- }
33
- el += '</div>'
34
- return el
35
- }
36
-
37
- module.exports = ctx => function(args, content = '') {
38
- args = ctx.args.map(args, ['api', 'user', 'type', 'limit', 'hide', 'avatar'])
39
- args['data-api'] = args.api
40
- var el = ''
41
- if (!args.type) {
42
- args.type = 'timeline'
43
- }
44
- if (args.api && args.api.length > 0) {
45
- el += `<div class="tag-plugin timeline data-service ds-${args.type}"`
46
- el += ' ' + ctx.args.joinTags(args, ['data-api', 'user', 'limit', 'hide', 'avatar']).join(' ')
47
- el += '>'
48
- } else {
49
- el += '<div class="tag-plugin timeline">'
50
- }
51
-
52
- var arr = content.split(/<!--\s*node (.*?)\s*-->/g).filter(item => item.trim().length > 0)
53
- if (arr.length > 0) {
54
- var nodes = []
55
- arr.forEach((item, i) => {
56
- if (i % 2 == 0) {
57
- nodes.push({
58
- header: item
59
- })
60
- } else if (nodes.length > 0) {
61
- var node = nodes[nodes.length-1]
62
- if (node.body == undefined) {
63
- node.body = item
64
- } else {
65
- node.body += '\n' + item
66
- }
67
- }
68
- })
69
- nodes.forEach((node, i) => {
70
- el += '<div class="timenode" index="' + (i) + '">'
71
- el += layoutNodeTitle(ctx, node.header)
72
- el += layoutNodeContent(ctx, node.body)
73
- el += '</div>'
74
- })
75
- }
76
-
77
- el += '</div>'
78
- return el
79
- }
1
+ /**
2
+ * timeline.js v2.1 | https://github.com/xaoxuu/hexo-theme-stellar/
3
+ *
4
+ * {% timeline %}
5
+ *
6
+ * <!-- node header1 -->
7
+ * what happened 1
8
+ *
9
+ * <!-- node header2 -->
10
+ * what happened 2
11
+ *
12
+ * {% endtimeline %}
13
+ */
14
+
15
+ 'use strict'
16
+
17
+ function layoutNodeTitle(ctx, content) {
18
+ var el = ''
19
+ el += '<div class="header">'
20
+ if (content && content.length > 0) {
21
+ el += `<span>${content}</span>`
22
+ }
23
+ el += '</div>'
24
+ return el
25
+ }
26
+
27
+ function layoutNodeContent(ctx, content) {
28
+ var el = ''
29
+ el += '<div class="body fs14">'
30
+ if (content && content.length > 0) {
31
+ el += ctx.render.renderSync({text: content, engine: 'markdown'}).split('\n').join('')
32
+ }
33
+ el += '</div>'
34
+ return el
35
+ }
36
+
37
+ module.exports = ctx => function(rawArgs, content = '') {
38
+ let args = {}
39
+ for (const item of rawArgs) {
40
+ if (typeof item !== 'string') continue
41
+ const idx = item.indexOf(':')
42
+ if (idx === -1) continue
43
+
44
+ const key = item.slice(0, idx)
45
+ const value = item.slice(idx + 1)
46
+ args[key] = value
47
+ }
48
+
49
+ const type = args.type || 'timeline'
50
+
51
+ let classBuffer = ''
52
+ let attrBuffer = ''
53
+ if (args.api) {
54
+ args['data-api'] = args.api
55
+ delete args.api
56
+
57
+ const attrKeys = Object.keys(args).filter(
58
+ key =>
59
+ key !== 'type' &&
60
+ args[key] !== undefined &&
61
+ args[key] !== null &&
62
+ args[key] !== ''
63
+ )
64
+
65
+ classBuffer += ` data-service ds-${type}`
66
+
67
+ if (attrKeys.length) {
68
+ attrBuffer += ' ' + ctx.args.joinTags(args, attrKeys).join(' ')
69
+ }
70
+ }
71
+
72
+ let el = `<div class="tag-plugin timeline${classBuffer}"${attrBuffer}>`
73
+
74
+ var arr = content.split(/<!--\s*node (.*?)\s*-->/g).filter(item => item.trim().length > 0)
75
+ if (arr.length > 0) {
76
+ var nodes = []
77
+ arr.forEach((item, i) => {
78
+ if (i % 2 == 0) {
79
+ nodes.push({
80
+ header: item
81
+ })
82
+ } else if (nodes.length > 0) {
83
+ var node = nodes[nodes.length-1]
84
+ if (node.body == undefined) {
85
+ node.body = item
86
+ } else {
87
+ node.body += '\n' + item
88
+ }
89
+ }
90
+ })
91
+ nodes.forEach((node, i) => {
92
+ el += '<div class="timenode" index="' + (i) + '">'
93
+ el += layoutNodeTitle(ctx, node.header)
94
+ el += layoutNodeContent(ctx, node.body)
95
+ el += '</div>'
96
+ })
97
+ }
98
+
99
+ el += '</div>'
100
+ return el
101
+ }
@@ -1,23 +1,28 @@
1
1
  .canonical-tip
2
2
  position: fixed
3
+ display: flex
3
4
  text-align: center
4
5
  bottom: 4rem
5
6
  left: 50%
6
7
  transform: translateX(-50%)
7
8
  max-width: 90%
8
- background-color: var(--card)
9
- color: var(--text-p1)
10
- font-size: 1rem
9
+ color: var(--text)
11
10
  font-family: #fff8e1
12
11
  z-index: 9999999
13
12
  box-shadow: 0 2px 8px rgba(black, .1), 0 4px 16px rgba(black, .1), 0 8px 32px rgba(black, .1)
14
- border-radius: 6px
15
13
  .headline
16
14
  font-size: $fsh2
17
- a
15
+ a, button
16
+ border-radius: 6px
17
+ background: var(--bg-a100)
18
18
  display: block
19
19
  color: inherit
20
- padding: 1rem 2rem
20
+ padding: 1rem
21
+ font-size: 1rem
22
+ button
23
+ padding: 0
24
+ width: 3rem
25
+ margin-left: 1px
21
26
 
22
27
  .canonical-tip.unofficial
23
28
  background-color: hsl(5, 100%, 60%)
@@ -14,9 +14,9 @@ p>code:not([class]),li>code:not([class])
14
14
  --theme: var(--text-p3)
15
15
  margin: var(--gap-p) 0
16
16
  border-radius: $border-card
17
+ corner-shape: superellipse(1.2)
17
18
  overflow: hidden
18
19
  background: var(--block)
19
- line-height: 1.5
20
20
  font-family: $ff-codeblock
21
21
  box-sizing: border-box
22
22
  @media screen and (min-width: $device-mobile)
@@ -80,6 +80,7 @@ p>code:not([class]),li>code:not([class])
80
80
  .gist-file
81
81
  border: 1px solid var(--block-border)
82
82
  border-radius: $border-card
83
+ corner-shape: superellipse(1.2)
83
84
  overflow: hidden
84
85
  .gist-data
85
86
  --bgColor-default: var(--block)
@@ -182,6 +183,8 @@ table:not([class])
182
183
  content: "TS"
183
184
  &.matlab .code:before
184
185
  content: "MATLAB"
186
+ &.nginx .code:before
187
+ content: "Nginx"
185
188
 
186
189
 
187
190
 
@@ -1,6 +1,10 @@
1
1
  *
2
2
  outline: none
3
3
  html
4
+ height: 100%
5
+ width: 100%
6
+ scrollbar(8px,8px)
7
+ overflow-y: scroll
4
8
  font-family: $ff-body
5
9
  font-size: $fs-root
6
10
  -webkit-text-size-adjust: 100%
@@ -31,4 +31,8 @@ svg.loading
31
31
  font-size: 14px
32
32
  &.error
33
33
  &:after
34
- content: hexo-config('style.loading.error')
34
+ content: hexo-config('style.loading.error')
35
+
36
+ .article-footer
37
+ .loading-wrap
38
+ background: none
@@ -44,6 +44,8 @@
44
44
  margin-top: var(--gap-p)
45
45
  margin-bottom: var(--gap-p)
46
46
  iframe
47
+ margin-left: auto
48
+ margin-right: auto
47
49
  display: block
48
50
 
49
51
  // titles
@@ -80,6 +82,7 @@
80
82
  .md-text.content
81
83
  p>img, .tag-plugin.image .image-bg
82
84
  border-radius: $border-image
85
+ corner-shape: superellipse(1.2)
83
86
 
84
87
  // 链接样式
85
88
  li:not([class]) a:not([class])
@@ -91,8 +91,10 @@
91
91
 
92
92
  p>img, .tag-plugin.image .image-bg
93
93
  border-radius: $border-image-l
94
+ corner-shape: superellipse(1.2)
94
95
  >img
95
96
  border-radius: $border-image-l
97
+ corner-shape: superellipse(1.2)
96
98
 
97
99
 
98
100
  .l_body[type=story] .md-text.content>blockquote, .md-text.content .tag-plugin.blockquote
@@ -3,6 +3,7 @@
3
3
  padding: 1rem
4
4
  background: var(--block)
5
5
  border-radius: $border-card-l
6
+ corner-shape: superellipse(1.2)
6
7
  border: 1px solid var(--block-border)
7
8
  font-size: $fs-15
8
9
  line-height: 1.6
@@ -35,14 +35,16 @@
35
35
  z-index: 1
36
36
  trans1 all
37
37
  &:hover
38
- background: var(--bg-a100)
38
+ background: var(--bg-a50)
39
39
  &.active, &:hover
40
40
  color: var(--text)
41
41
  &.active
42
42
  background: var(--bg-a60)
43
+ :root[data-theme="dark"] &
44
+ background: rgba(white, 0.25)
43
45
  @media (prefers-color-scheme: dark)
44
46
  background: rgba(white, 0.25)
45
- box-shadow: $boxshadow-button
47
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0.04), 0 0 2px rgba(0, 0, 0, 0.04), 0 0 4px rgba(0, 0, 0, 0.08)
46
48
  cursor default
47
49
  pointer-events: none
48
50
  backdrop-filter: saturate(300%)
@@ -16,6 +16,7 @@
16
16
  width: 100%
17
17
  min-height: 40px
18
18
  border-radius: $border-bar
19
+ corner-shape: superellipse(1.2)
19
20
  font-size: $fs-15
20
21
  font-weight: 500
21
22
  color: var(--text-p3)
@@ -25,6 +25,8 @@
25
25
  right: 1rem
26
26
  border-radius: $border-bar
27
27
  background: var(--bg-a100)
28
+ :root[data-theme="dark"] &
29
+ background: var(--bg-a20)
28
30
  @media screen and (prefers-color-scheme: dark)
29
31
  background: var(--bg-a20)
30
32
  z-index 0
@@ -44,6 +46,8 @@
44
46
  color: var(--text)
45
47
  &::placeholder
46
48
  color: var(--text-p3)
49
+ :root[data-theme="dark"] &
50
+ color: var(--text-p2)
47
51
  @media screen and (prefers-color-scheme: dark)
48
52
  color: var(--text-p2)
49
53
  .search-button
@@ -38,11 +38,15 @@
38
38
  --background-opacity: hexo-config('style.leftbar.background-opacity')
39
39
  background-image: convert(hexo-config('style.leftbar.background-image'))
40
40
  filter: saturate(var(--saturate)) blur(var(--blur-px)) opacity(var(--background-opacity))
41
+ :root[data-theme="dark"] &
42
+ --background-opacity: hexo-config('style.leftbar.background-opacity') * 0.75
41
43
  @media screen and (prefers-color-scheme: dark)
42
44
  --background-opacity: hexo-config('style.leftbar.background-opacity') * 0.75
43
- else if $leftbar-background-color
44
- background-color: convert($leftbar-background-color)
45
-
45
+ else if $leftbar-background-color-light || $leftbar-background-color-dark
46
+ background-color: convert($leftbar-background-color-light)
47
+ @media screen and (prefers-color-scheme: dark)
48
+ background-color: convert($leftbar-background-color-dark)
49
+
46
50
  .leftbar-container
47
51
  height: 'calc(%s - %s * 2 - %s)' % (100vh var(--gap-margin) $leftbar-bottom-margin)
48
52
  display: flex
@@ -69,12 +73,15 @@
69
73
  &:before
70
74
  if $leftbar-background-image
71
75
  @media screen and (min-width: $device-mobile-max)
72
- background: rgba(white, 0.5)
76
+ background: rgba(white, 0.05)
73
77
  box-shadow: inset 0 0 32px 1px rgba(white, 0.5)
74
78
  backdrop-filter: saturate(300%)
75
79
  -webkit-backdrop-filter: saturate(300%)
76
80
  mask: linear-gradient(black, rgba(black, 0.5), 70%, transparent, 90%, transparent)
77
81
  -webkit-mask: linear-gradient(black, rgba(black, 0.5), 70%, transparent, 90%, transparent)
82
+ :root[data-theme="dark"] &
83
+ background: rgba(white, 0.05)
84
+ box-shadow: inset 0 0 32px 1px rgba(white, 0.1)
78
85
  @media screen and (prefers-color-scheme: dark)
79
86
  background: rgba(white, 0.05)
80
87
  box-shadow: inset 0 0 32px 1px rgba(white, 0.1)
@@ -87,4 +94,4 @@
87
94
  --inset: 0
88
95
  --saturate: 300%
89
96
  .leftbar-container:after
90
- background: var(--bg-a20)
97
+ background: var(--bg-a20)
@@ -39,8 +39,6 @@ chat_dark()
39
39
  font-size: $fs-12
40
40
  .cap
41
41
  color: var(--text-p3)
42
- *
43
- word-break: break-all
44
42
  box-sizing: border-box
45
43
  -webkit-box-sizing: border-box
46
44
  -moz-box-sizing: border-box
@@ -62,7 +60,7 @@ chat_dark()
62
60
  position: relative
63
61
  box-shadow: unset
64
62
  >.device-image
65
- background-image: url(https://gcore.jsdelivr.net/gh/cdn-x/placeholder@1.0.4/frame/iphone11.svg)
63
+ background-image: url(https://gcore.jsdelivr.net/gh/cdn-x/placeholder@1.0.14/frame/iphone11.svg)
66
64
  width: 100%
67
65
  height: 100%
68
66
  position: absolute
@@ -274,7 +272,7 @@ chat_dark()
274
272
  &.emoji,
275
273
  &.link,
276
274
  &.video,
277
- &.file
275
+ &.chat-file
278
276
  background: unset !important
279
277
  padding: 0 !important
280
278
  &.link
@@ -394,7 +392,7 @@ chat_dark()
394
392
  video
395
393
  width: 100%
396
394
  border-radius: 6px
397
- &.file
395
+ &.chat-file
398
396
  background: transparent !important
399
397
  display: flex
400
398
  padding: unset !important
@@ -458,7 +456,7 @@ chat_dark()
458
456
  flex-basis: 100%
459
457
  justify-content: flex-end
460
458
  .talk
461
- &.file
459
+ &.chat-file
462
460
  flex-direction: row-reverse
463
461
  &.voice
464
462
  .voice-btns
@@ -524,11 +522,11 @@ chat_dark()
524
522
  display: none
525
523
  &.link>.link-card,
526
524
  &.video>video,
527
- &.file>.content,
525
+ &.chat-file>.content,
528
526
  &.image>img,
529
527
  &.emoji>img
530
528
  border-radius: 4px
531
- &.file .download-btn
529
+ &.chat-file .download-btn
532
530
  display: none
533
531
  &.voice
534
532
  padding: 8px .5em
@@ -3,6 +3,7 @@ details.folding
3
3
  padding: 1rem
4
4
  margin: 1rem 0
5
5
  border-radius: $border-card
6
+ corner-shape: superellipse(1.2)
6
7
  background: var(--theme-block)
7
8
  border: 1px solid var(--theme-border)
8
9
  summary
@@ -49,6 +49,8 @@
49
49
  // 网格布局
50
50
  .tag-plugin.gallery.grid-box
51
51
  display: grid
52
+ .grid-cell
53
+ corner-shape: superellipse(1.2)
52
54
  &[size='xs']
53
55
  grid-template-columns: repeat(auto-fill, minmax(80px, 1fr))
54
56
  grid-gap: 2px
@@ -17,6 +17,7 @@
17
17
  &[bg]>.cell
18
18
  padding: 1rem
19
19
  border-radius: $border-card
20
+ corner-shape: superellipse(1.2)
20
21
  &[bg='box']>.cell
21
22
  background: var(--block)
22
23
  &[bg='card']>.cell
@@ -5,6 +5,7 @@
5
5
  .image-bg
6
6
  text-align: center
7
7
  border-radius: $border-image
8
+ corner-shape: superellipse(1.2)
8
9
  position: relative
9
10
  overflow: hidden
10
11
  display: flex
@@ -23,7 +24,9 @@
23
24
  display: block
24
25
  object-fit: cover
25
26
  border-radius: $border-image
27
+ corner-shape: superellipse(1.2)
26
28
  .image-download
29
+ z-index: 2
27
30
  position: absolute
28
31
  bottom: 8px
29
32
  right: 8px
@@ -13,6 +13,7 @@
13
13
  width: 300px
14
14
  max-width: 100%
15
15
  border-radius: $border-card-s
16
+ corner-shape: superellipse(1.2)
16
17
  hoverable-card()
17
18
 
18
19
  .md-text .link-card.plain
@@ -1,19 +1,21 @@
1
1
  .tag-plugin.navbar
2
2
  display: inline-flex
3
- background: var(--card)
4
- border-radius: $border-button
5
- z-index inherit
6
- box-shadow: 0 0 8px hsla(black, 0.04)
7
3
  a
8
4
  box-sizing: border-box
9
- padding: .25rem 1rem
10
- margin: 2px
5
+ padding: .25rem 0
11
6
  color: inherit
12
- border-radius: 'calc(%s - 1px)' % $border-button
13
- trans1 all
7
+ position: relative
14
8
  &+a
15
- margin-left: 0
16
- &.active
17
- background: var(--block)
18
- &:hover
19
- background: var(--block)
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)
@@ -2,6 +2,7 @@
2
2
  position: relative
3
3
  padding: 0.25rem 1rem
4
4
  border-radius: $border-card
5
+ corner-shape: superellipse(1.2)
5
6
  background: var(--theme-block)
6
7
  overflow: hidden
7
8
  if hexo-config('tag_plugins.note.border') == true
@@ -1,6 +1,7 @@
1
1
  .md-text .tag-plugin.okr
2
2
  position: relative
3
3
  border-radius: $border-card
4
+ corner-shape: superellipse(1.2)
4
5
  background: var(--theme-block)
5
6
  if hexo-config('tag_plugins.okr.border') == true
6
7
  border: 1px solid var(--theme-border)
@@ -12,6 +12,7 @@
12
12
  position: relative
13
13
  .lazy-box
14
14
  border-radius: $border-card-s
15
+ corner-shape: superellipse(1.2)
15
16
  box-shadow: 0 1px 2px 0px rgba(0, 0, 0, 0.2)
16
17
  overflow hidden
17
18
  >img
@@ -28,6 +29,7 @@
28
29
  margin-right: 8px
29
30
  margin-top: 2px
30
31
  border-radius: @width
32
+ corner-shape: superellipse(1)
31
33
  >img
32
34
  width: 28px
33
35
  height: @width
@@ -1,6 +1,9 @@
1
1
  .tag-plugin.timeline
2
2
  position: relative
3
3
  padding-left: 16px
4
+ p>img
5
+ border-radius: $border-image-s
6
+ corner-shape: superellipse(1.2)
4
7
  &:before
5
8
  content: ''
6
9
  position: absolute
@@ -19,6 +22,9 @@
19
22
  .tag-plugin.timeline
20
23
  ol,ul
21
24
  margin-left: 0
25
+ p>img
26
+ border-radius: $border-image-s
27
+ corner-shape: superellipse(1.2)
22
28
 
23
29
  .tag-plugin.timeline .timenode
24
30
  position: relative
@@ -87,6 +93,7 @@
87
93
  .tag-plugin.timeline .body
88
94
  background: var(--card)
89
95
  border-radius: 16px
96
+ corner-shape: superellipse(1.2)
90
97
  border-top-left-radius: 2px
91
98
  padding: 0.5rem 1rem
92
99
  margin-top: 4px
@@ -143,6 +150,7 @@
143
150
  .lazy-box
144
151
  margin: .5rem 0
145
152
  border-radius: $border-image
153
+ corner-shape: superellipse(1.2)
146
154
  >img
147
155
  margin: 0 auto
148
156
 
@@ -151,6 +159,7 @@
151
159
 
152
160
  aside .tag-plugin.timeline[data-api] .body .lazy-box
153
161
  border-radius: $border-image-s
162
+ corner-shape: superellipse(1.2)
154
163
 
155
164
  .tag-plugin.timeline[data-api] .body .footer
156
165
  margin: 0 0 -0.5rem
@@ -33,6 +33,8 @@
33
33
  trans1 all
34
34
  color: var(--theme)
35
35
  background: var(--theme-a10)
36
+ :root[data-theme="dark"] &
37
+ background: var(--theme-a20)
36
38
  @media (prefers-color-scheme: dark)
37
39
  background: var(--theme-a20)
38
40
  &.vote-up
@@ -4,6 +4,7 @@
4
4
 
5
5
  .linklist .link
6
6
  border-radius: $border-bar
7
+ corner-shape: superellipse(1.2)
7
8
  color: var(--text-p2)
8
9
  min-height: 32px
9
10
  padding: 0 4px