hexo-theme-shokax 0.2.6 → 0.2.8

Sign up to get free protection for your applications and to get access to all the features.
package/CONTRIBUTING.md CHANGED
@@ -14,14 +14,10 @@
14
14
  1. 您同意我们在未来进行授权许可更改时包含您所贡献的代码
15
15
  2. 您有对于 shokaX 所使用的相关技术和 github PR 及 actions 的基础了解
16
16
 
17
- 对于代码修改的说明:
18
- 1. `page js` 仅需要修改ts文件,`hexo script` 请修改js文件
19
-
20
17
  有关提交的说明:
21
18
  1. 您在提交时的`commit message`应描述其改动
22
19
  2. 如果您提交的代码中包括图片资源,建议使用`webp`或`avif`格式
23
- 3. 由于 Copilot 所生成的代码可能存在版权问题,如果您使用了 Copilot,请在 PR 正文中说明
24
- 4. 条件允许的情况下代码应当附有注释以便维护
20
+ 3. 条件允许的情况下代码应当附有注释以便维护
25
21
 
26
22
  有关审查(Review)的说明:
27
23
  1. 您在 PR 时应打开允许维护者修改 PR,以便我们进行修改
package/LICENSE-shoka ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2020 霜月琉璃
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/_config.yml CHANGED
@@ -74,6 +74,13 @@ loader:
74
74
  start: true # 进入页面时显示加载动画
75
75
  switch: false # 切换页面时显示加载动画
76
76
 
77
+ # 使用polyfill.io自动处理浏览器兼容问题
78
+ polyfill:
79
+ enable: true
80
+ features:
81
+ - default
82
+ - fetch
83
+
77
84
  # 显示的动画(烟花)
78
85
  fireworks:
79
86
  enable: true
@@ -173,7 +180,7 @@ waline:
173
180
  - mail
174
181
  wordLimit: 0 # 字数限制,0为不限制
175
182
  pageSize: 10 # 每页评论条数
176
- pageview: true # 是否开启浏览量统计
183
+ pageview: false # 是否开启浏览量统计,可独立开启
177
184
 
178
185
  # https://github.com/gitalk/gitalk/blob/master/readme-cn.md
179
186
  gitalk:
@@ -13,7 +13,7 @@ mixin CommentRender()
13
13
  })
14
14
  }, 1000)
15
15
  else if wl
16
- div(class="warp" id="wcomments")
16
+ div(class="wrap" id="wcomments")
17
17
  - var locale = JSON.stringify(theme.waline.locale)
18
18
  - var emoji = JSON.stringify(theme.waline.emoji)
19
19
  - var meta = JSON.stringify(theme.waline.meta)
@@ -38,7 +38,7 @@ mixin CommentRender()
38
38
  });
39
39
  }, 1000)
40
40
  else if gt
41
- div(class="warp" id="gtcomments")
41
+ div(class="wrap" id="gtcomments")
42
42
  script(type="text/javascript" data-pjax).
43
43
  const gproxy = theme.gitalk.proxy || undefined
44
44
  const gitalk = new Gitalk({
@@ -53,7 +53,7 @@ mixin CommentRender()
53
53
  });
54
54
  gitalk.render("gtcomments")
55
55
  else if gs
56
- div(class="warp giscus" id="gscomments")
56
+ div(class="wrap giscus" id="gscomments")
57
57
  script( src="https://giscus.app/client.js"
58
58
  data-repo="#{theme.giscus.repo}"
59
59
  data-repo-id="#{theme.giscus.repoId}"
@@ -10,6 +10,7 @@ mixin field(item)
10
10
 
11
11
  mixin WRender(item)
12
12
  - var tk = theme?.twikoo?.enable
13
+ - var waline = theme.waline.enable
13
14
  if theme.widgets.random_posts
14
15
  div(class="rpost pjax")
15
16
  h2
@@ -22,10 +23,10 @@ mixin WRender(item)
22
23
  div(class="rpost pjax")
23
24
  h2 最新评论
24
25
  ul(class="leancloud-recent-comment" id="new-comment")
25
- if tk
26
+ if tk || waline
26
27
  li(v-for="com in coms" class="item")
27
28
  a(v-bind:href="com.href" data-pjax-state="data-pjax-state")
28
- span(class="breadcrumb") {{com.nick}}@{{com.time}}
29
+ span(class="breadcrumb") {{com.nick}} @ {{com.time}}
29
30
  span {{com.text}}
30
31
  br
31
32
 
@@ -108,7 +108,9 @@ html(lang=page.language?page.language:config.language, style=theme.grayMode ? 'f
108
108
  ]
109
109
  };
110
110
 
111
- script(src="https://polyfill.alicdn.com/polyfill.min.js")
111
+ if theme.polyfill.enable
112
+ script(src=`https://polyfill.io/v3/polyfill.min.js?features=${theme.polyfill.features}`)
113
+
112
114
  if theme.advVendors.enable
113
115
  each i in _list_vendor_js()
114
116
  != _adv_vendor_js(i)
@@ -1,9 +1,10 @@
1
1
  div(class="meta")
2
2
  if date(post.date) != date(post.updated) || time(post.date) != time(post.updated)
3
- span(class="icon")
4
- i(class="ic i-eye")
5
- span 此文章已被阅读次数:
6
- span(id="twikoo_visitors" class="waline-pageview-count" data-path=post.path) 正在加载...
3
+ if theme.twikoo.enable || theme.waline.pageview
4
+ span(class="icon")
5
+ i(class="ic i-eye")
6
+ span 此文章已被阅读次数:
7
+ span(id="twikoo_visitors" class="waline-pageview-count" data-path=post.path) 正在加载...
7
8
  span(class="item")
8
9
  span(class="icon")
9
10
  i(class="ic i-calendar-check")
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hexo-theme-shokax",
3
- "version": "0.2.6",
3
+ "version": "0.2.8",
4
4
  "description": "a hexo theme based on shoka",
5
5
  "main": "index.js",
6
6
  "repository": "https://github.com/theme-shoka-x/hexo-theme-shokaX",
@@ -8,12 +8,10 @@
8
8
  "license": "GPL-3.0-or-later",
9
9
  "scripts": {
10
10
  "test": "tsc",
11
- "build": "pnpm install && tsc",
12
- "docs:dev": "vuepress dev docs",
13
- "docs:build": "vuepress build docs"
11
+ "build": "pnpm install && tsc"
14
12
  },
15
13
  "devDependencies": {
16
- "@algolia/client-search": "^4",
14
+
17
15
  "@types/fancybox": "^3.5.3",
18
16
  "@types/hexo": "^3.8.8",
19
17
  "@types/jquery": "^3.5.16",
@@ -22,9 +20,7 @@
22
20
  "@types/node": "^20.1.0",
23
21
  "@typescript-eslint/eslint-plugin": "^5.59.0",
24
22
  "@typescript-eslint/parser": "^5.59.0",
25
- "@vuepress/client": "2.0.0-beta.61",
26
- "@vuepress/plugin-docsearch": "2.0.0-beta.61",
27
- "algoliasearch": "^4.17.0",
23
+
28
24
  "eslint": "^8.39.0",
29
25
  "eslint-config-standard": "^17.0.0",
30
26
  "eslint-plugin-import": "^2.27.5",
@@ -37,12 +33,9 @@
37
33
  "theme-shokax-anime": "^0.0.4",
38
34
  "theme-shokax-pjax": "^0.0.2",
39
35
  "typescript": "^5.0.4",
40
- "vue": "^3.2.47",
41
- "vuepress": "2.0.0-beta.61",
42
- "vuepress-plugin-sitemap2": "2.0.0-beta.208"
36
+ "vue": "^3.3.4"
43
37
  },
44
38
  "dependencies": {
45
- "js-yaml": "^4.1.0",
46
- "sass": "^1.62.0"
39
+ "js-yaml": "^4.1.0"
47
40
  }
48
41
  }
@@ -34,7 +34,6 @@ hexo.extend.generator.register('script', function (locals) {
34
34
  },
35
35
  loader: theme.loader,
36
36
  search: null,
37
- valine: theme.valine,
38
37
  outime: {
39
38
  enable: theme.outime.enable,
40
39
  days: theme.outime.days
@@ -41,12 +41,33 @@ hexo.extend.helper.register('_new_comments', function (mode) {
41
41
  else if (mode === 'waline') {
42
42
  return `
43
43
  <script type="module" data-pjax>
44
+ let items = []
44
45
  import { RecentComments } from 'https://unpkg.com/@waline/client@v2/dist/waline.mjs'
45
46
  RecentComments({
46
- el: '#new-comment',
47
47
  serverURL: '${hexo.theme.config.waline.serverURL.replace(/\/+$/, '')}',
48
48
  count: 10,
49
- });
49
+ }).then(({ comments }) => {
50
+ comments.forEach(function (item) {
51
+ let cText = (item.orig.length > 50) ? item.orig.substring(0,50)+'...' : item.orig
52
+ item.url = item.url !== '/' ? '/' + item.url : item.url;
53
+ const siteLink = item.url + "#" + item.objectId
54
+ items.push({
55
+ href: siteLink,
56
+ nick: item.nick,
57
+ time: item.insertedAt.split('T').shift(),
58
+ text: cText
59
+ })
60
+ })
61
+ Vue.createApp({
62
+ data() {
63
+ return {
64
+ coms: items
65
+ }
66
+ }
67
+ }).mount('#new-comment')
68
+ }).catch(function (err) {
69
+ console.error(err)
70
+ })
50
71
  </script>
51
72
  `;
52
73
  }
@@ -156,8 +156,6 @@ const sidebarTOC = function () {
156
156
  return sections.indexOf(entry.target);
157
157
  };
158
158
  const createIntersectionObserver = function () {
159
- if (!window.IntersectionObserver)
160
- return;
161
159
  const observer = new IntersectionObserver(function (entries, observe) {
162
160
  const index = findIndex(entries) + (diffY < 0 ? 1 : 0);
163
161
  if (activeLock === null) {
@@ -325,8 +325,6 @@ const postBeauty = function () {
325
325
  });
326
326
  const angleDown = document.querySelectorAll('.show-btn .i-angle-down');
327
327
  if (angleDown.length) {
328
- if (!window.IntersectionObserver)
329
- return;
330
328
  const io = new IntersectionObserver((entries) => {
331
329
  entries.forEach(entry => {
332
330
  if (entry.isIntersecting) {
@@ -408,20 +406,15 @@ const loadComments = function () {
408
406
  else {
409
407
  goToComment.display('');
410
408
  }
411
- if (!window.IntersectionObserver) {
409
+ const io = new IntersectionObserver(function (entries, observer) {
410
+ const entry = entries[0];
412
411
  vendorCss('valine');
413
- }
414
- else {
415
- const io = new IntersectionObserver(function (entries, observer) {
416
- const entry = entries[0];
417
- vendorCss('valine');
418
- if (entry.isIntersecting || entry.intersectionRatio > 0) {
419
- transition($dom('#comments'), 'bounceUpIn');
420
- observer.disconnect();
421
- }
422
- });
423
- io.observe(element);
424
- }
412
+ if (entry.isIntersecting || entry.intersectionRatio > 0) {
413
+ transition($dom('#comments'), 'bounceUpIn');
414
+ observer.disconnect();
415
+ }
416
+ });
417
+ io.observe(element);
425
418
  };
426
419
  const algoliaSearch = function (pjax) {
427
420
  if (CONFIG.search === null) {
@@ -563,8 +556,6 @@ const domInit = function () {
563
556
  });
564
557
  }
565
558
  const createIntersectionObserver = function () {
566
- if (!window.IntersectionObserver)
567
- return;
568
559
  new IntersectionObserver(([entry]) => {
569
560
  if (entry.isIntersecting) {
570
561
  document.querySelectorAll('.parallax>use').forEach(i => {
@@ -1,548 +0,0 @@
1
- .v {
2
- &.wrap {
3
- animation: none;
4
- opacity: 0;
5
- }
6
-
7
- .lozaded {
8
- animation: none;
9
- }
10
-
11
- input,
12
- textarea {
13
- border: none;
14
- outline: none;
15
- background: transparent;
16
- font-size: $font-size-smallest;
17
- transition: all .25s ease;
18
- }
19
-
20
- a {
21
- color: var(--color-aqua);
22
-
23
- &:hover {
24
- color: var(--primary-color);
25
- }
26
- }
27
-
28
- .text-center {
29
- text-align: center;
30
- }
31
-
32
- .text-right {
33
- text-align: right;
34
- }
35
-
36
- .float-right {
37
- float: right !important;
38
- }
39
-
40
- .pd5 {
41
- padding: 5px;
42
- }
43
-
44
- .pd10 {
45
- padding: 10px;
46
- }
47
-
48
- .vemoji, .emoji, .tk-owo-emotion {
49
- max-height: 1.5rem;
50
- display: inline;
51
- vertical-align: middle;
52
- }
53
-
54
- .submitting {
55
- margin: 1em 0;
56
- }
57
-
58
- .form {
59
- shadow-box();
60
- margin-bottom: .625rem;
61
- position: relative;
62
- padding: .625rem;
63
-
64
- >.inner {
65
- .auth-section {
66
- display: flex;
67
- padding: .3em .6em;
68
- }
69
-
70
- +mobile-small() {
71
- flex-wrap: wrap;
72
- }
73
-
74
- .input {
75
- flex: 1 1 27%;
76
- width: 27%;
77
-
78
- +mobile-small() {
79
- flex: 1 1 100%;
80
- padding-right: 0;
81
- width: 100%;
82
- }
83
-
84
- input {
85
- padding: .625rem .3125rem;
86
- width: 100%;
87
- border-bottom: .0625rem dashed var(--grey-4);
88
-
89
- &:focus {
90
- border-bottom-color: var(--primary-color);
91
- }
92
- }
93
- }
94
-
95
- .textarea {
96
- padding: .3em .6em;
97
- }
98
-
99
- .veditor {
100
- width: 100%;
101
- min-height: 8.75em;
102
- font-size: $font-size-small;
103
- line-height: 1.75;
104
- resize: vertical;
105
- }
106
-
107
- .btn-group {
108
- padding: .625rem 0;
109
- display: flex;
110
-
111
- .i-markdown {
112
- font-size: $font-size-smallest;
113
- }
114
-
115
- .left {
116
- width: 30%;
117
- }
118
-
119
- .right {
120
- width: 70%;
121
- text-align: right;
122
- }
123
- }
124
-
125
- .vextra-area {
126
- margin: .4em 0 .4em .5em;
127
- }
128
-
129
-
130
- .preview-box {
131
- padding: .4375rem 1.25rem;
132
- font-size: $font-size-smaller;
133
- shadow-box();
134
- }
135
-
136
- .trigger-section {
137
- display: none;
138
- }
139
- }
140
-
141
- .smile-body {
142
-
143
- img {
144
- display: inline-block;
145
- width: auto;
146
- height: 3rem;
147
- cursor: pointer;
148
- padding: .5rem;
149
- border-radius: .25rem;
150
- transition: box-shadow .2s ease-out, background .2s ease-out;
151
- }
152
-
153
- li.active img, img:hover {
154
- background: var(--grey-2);
155
- box-shadow: 1px 1px 2px var(--grey-1), -1px -1px 2px var(--grey-4), inset 8px 8px 16px var(--grey-1), inset -8px -8px 16px var(--grey-3);
156
- }
157
-
158
- .smile-icons {
159
- border-radius: .5rem;
160
- margin: .3rem 0;
161
- min-height: 10rem;
162
- max-height: 10rem;
163
- overflow: auto;
164
- background: var(--grey-2);
165
- padding: .5rem;
166
- }
167
-
168
- .smile-bar {
169
- li {
170
- display: inline-block;
171
- margin-right: .25rem;
172
- }
173
-
174
- img {
175
- width: 2.8rem;
176
- height: 2.8rem;
177
- background: var(--grey-2);
178
- object-fit: contain;
179
- }
180
- }
181
- }
182
-
183
- .btn {
184
- cursor: pointer;
185
- display: inline-block;
186
- margin: .5rem;
187
- overflow: hidden;
188
- vertical-align: middle;
189
-
190
- &.actived .ic {
191
- color: var(--primary-color);
192
- }
193
-
194
- .ic {
195
- color: var(--grey-6);
196
- transition: all .25s ease;
197
-
198
- &:hover {
199
- color: var(--color-blue);
200
- }
201
- }
202
- }
203
-
204
- .cancel-reply {
205
- position: absolute;
206
- right: 0;
207
- top: 0;
208
- z-index: 1;
209
- }
210
-
211
- .vsubmit {
212
- font-size: $font-size-small;
213
- }
214
- }
215
-
216
- .msg {
217
- position: absolute;
218
- background: var(--grey-1-a5);
219
- width: 100%;
220
- height: 100%;
221
- left: 0;
222
- top: 0;
223
-
224
- .alert {
225
- padding: 3em 0 0 0;
226
-
227
- .text {
228
- color: var(--grey-8);
229
- padding: 15px;
230
- }
231
- }
232
-
233
- +mobile() {
234
- .alert {
235
- padding: 8em 0;
236
-
237
- .text {
238
- padding: 10px;
239
- }
240
- }
241
- }
242
- }
243
-
244
- .info {
245
- padding: .3125rem;
246
- font-weight: 600;
247
- font-size: $font-size-larger;
248
-
249
- .col {
250
- display: inline-block;
251
- padding: 0 20px;
252
- position: relative;
253
- background: transparent;
254
- z-index: 2;
255
-
256
- .count {
257
- font-size: 1.375rem;
258
- font-weight: inherit;
259
- }
260
- }
261
- }
262
-
263
-
264
-
265
- .next {
266
- .more {
267
- cursor: pointer;
268
- margin: 1em 0;
269
- }
270
- }
271
-
272
- .list {
273
- width: 100%;
274
- }
275
- .item {
276
- word-break: break-all;
277
- padding-top: 1.25em;
278
-
279
- .avatar {
280
- width: 3.125em;
281
- height: 3.125em;
282
- float: left;
283
- border-radius: 50%;
284
- margin-right: .7525em;
285
- border: .0625rem solid var(--grey-3);
286
- padding: .125em
287
- }
288
-
289
- &:hover .avatar {
290
- animation: .8s ease-out 0s 1 normal both running shake;
291
- }
292
-
293
- .main {
294
- overflow: hidden;
295
- padding-bottom: .5em;
296
- border-bottom: .0625rem dashed var(--grey-3);
297
- }
298
-
299
- .head, .meta {
300
- color: var(--grey-5);
301
- line-height: 1.8;
302
- }
303
-
304
- .name {
305
- margin-right: .875rem;
306
- }
307
-
308
- .tag, .system, .time {
309
- display: inline-block;
310
- font-size: $font-size-smallest;
311
- }
312
-
313
- +mobile-small() {
314
- .system span {
315
- display: none;
316
- }
317
- }
318
- .tag {
319
- border-radius: .125rem;
320
- color: var(--grey-1);
321
- padding: 0 .3125rem;
322
- margin-right: .5rem;
323
- background-color: var(--color-grey);
324
-
325
- $tagcolor = hexo-config('valine.tagColor');
326
-
327
- for type in $tagcolor {
328
- &.{slice(type, 0, 1)} {
329
- background-color: unquote(slice(type, 1));
330
- }
331
- }
332
- }
333
-
334
- .at {
335
- color: var(--primary-color);
336
-
337
- &:hover {
338
- color: var(--color-aqua);
339
- }
340
- }
341
-
342
- .meta {
343
- line-height: 1;
344
- .at {
345
- float: right;
346
- }
347
- }
348
-
349
- .content {
350
- margin-bottom: .75em;
351
- padding: .625em;
352
-
353
- > .inner {
354
- font-size: $font-size-small;
355
- word-wrap: break-word;
356
- word-break: break-all;
357
- line-height: 2;
358
- position: relative;
359
-
360
- &.expand {
361
- cursor: pointer;
362
- max-height: 8em;
363
-
364
- overflow: hidden;
365
-
366
- &::before {
367
- display: block;
368
- content: "";
369
- position: absolute;
370
- width: 100%;
371
- left: 0;
372
- top: 0;
373
- bottom: 3.15em;
374
- background: linear-gradient(180deg, var(--grey-1-a0), var(--grey-1));
375
- z-index: 999;
376
- }
377
-
378
- &::after {
379
- display: block;
380
- content: attr(data-expand);
381
- text-align: center;
382
- position: absolute;
383
- width: 100%;
384
- height: 3.15em;
385
- line-height: 3.15em;
386
- left: 0;
387
- bottom: 0;
388
- z-index: 999;
389
- background: var(--grey-1);
390
- }
391
- }
392
- }
393
-
394
- .form {
395
- margin-top: 1rem;
396
- }
397
- }
398
-
399
- &:last-child .main {
400
- border-bottom: none
401
- }
402
-
403
- .children {
404
- padding-left: 1em;
405
- border-left: .0625rem dashed var(--grey-3);
406
-
407
- .avatar {
408
- width: 2.225em;
409
- height: 2.225em
410
- }
411
- }
412
- }
413
-
414
- .empty {
415
- padding: 20px;
416
- text-align: center;
417
- }
418
-
419
-
420
- /************ Loading ************/
421
- .spinner {
422
- margin: 10px auto;
423
- width: 50px;
424
- height: 30px;
425
- text-align: center;
426
- font-size: 10px;
427
- }
428
-
429
- .spinner>div {
430
- background-color: var(--primary-color);
431
- height: 100%;
432
- width: 6px;
433
- margin-right: 3px;
434
- display: inline-block;
435
- animation: sk-stretchdelay 1.2s infinite ease-in-out;
436
- }
437
-
438
- .spinner .r2 {
439
- animation-delay: -1.1s;
440
- }
441
-
442
- .spinner .r3 {
443
- animation-delay: -1s;
444
- }
445
-
446
- .spinner .r4 {
447
- animation-delay: -0.9s;
448
- }
449
-
450
- .spinner .r5 {
451
- animation-delay: -0.8s;
452
- }
453
-
454
- @keyframes sk-stretchdelay {
455
-
456
- 0%,
457
- 40%,
458
- 100% {
459
- transform: scaleY(0.4);
460
- }
461
-
462
- 20% {
463
- transform: scaleY(1);
464
- }
465
- }
466
- }
467
-
468
- .hljs-comment,
469
- .hljs-quote {
470
- color: var(--grey-5);
471
- font-style: italic;
472
- }
473
-
474
- .hljs-keyword,
475
- .hljs-selector-tag,
476
- .hljs-subst,
477
- .hljs-meta {
478
- color: var(--grey-7);
479
- font-weight: bold;
480
- }
481
-
482
- .hljs-number,
483
- .hljs-literal,
484
- .hljs-variable,
485
- .hljs-template-variable,
486
- .hljs-tag .hljs-attr {
487
- color: var(--color-green);
488
- }
489
-
490
- .hljs-string,
491
- .hljs-doctag {
492
- color: var(--color-red);
493
- }
494
-
495
- .hljs-title,
496
- .hljs-section,
497
- .hljs-selector-id {
498
- color: var(--color-pink);
499
- font-weight: bold;
500
- }
501
-
502
- .hljs-subst {
503
- font-weight: normal;
504
- }
505
-
506
- .hljs-type,
507
- .hljs-class .hljs-title {
508
- color: var(--color-grey);
509
- font-weight: bold;
510
- }
511
-
512
- .hljs-tag,
513
- .hljs-name,
514
- .hljs-attribute {
515
- color: var(--color-orange);
516
- font-weight: normal;
517
- }
518
-
519
- .hljs-regexp,
520
- .hljs-link {
521
- color: var(--color-green);
522
- }
523
-
524
- .hljs-symbol,
525
- .hljs-bullet {
526
- color: var(--color-purple);
527
- }
528
-
529
- .hljs-built_in,
530
- .hljs-builtin-name {
531
- color: var(--color-aqua);
532
- }
533
-
534
- .hljs-deletion {
535
- background: #fdd;
536
- }
537
-
538
- .hljs-addition {
539
- background: #dfd;
540
- }
541
-
542
- .hljs-emphasis {
543
- font-style: italic;
544
- }
545
-
546
- .hljs-strong {
547
- font-weight: bold;
548
- }