master
1---
2import { commentConfig, siteConfig } from '@/config';
3import '@/styles/waline.css?url';
4
5const walineConfig = commentConfig.waline!;
6const pathName = walineConfig.path ? walineConfig.path(Astro.url.pathname) : Astro.url.pathname;
7---
8
9<div id="waline-wrapper"></div>
10
11<script
12 type="module"
13 is:inline
14 define:vars={{
15 walineConfig,
16 pathName,
17 lang: siteConfig.lang,
18 }}
19>
20 import { init } from 'https://unpkg.com/@waline/client@v3/dist/waline.js';
21
22 function setup() {
23 const el = document.getElementById('waline-wrapper');
24 if (!el) return;
25 init({
26 el,
27 lang,
28 serverURL: walineConfig.serverURL,
29 path: pathName,
30 dark: false,
31 meta: walineConfig.meta || ['nick', 'mail', 'link'],
32 requiredMeta: walineConfig.requiredMeta || [],
33 login: walineConfig.login || 'enable',
34 wordLimit: walineConfig.wordLimit || 500,
35 pageSize: walineConfig.pageSize || 10,
36 reaction: walineConfig.reaction || false,
37 });
38 }
39
40 document.addEventListener('astro:page-load', setup);
41 setup();
42</script>
43
44<link rel="stylesheet" href="https://unpkg.com/@waline/client@v3/dist/waline.css" />
45<style is:inline>
46 :root {
47 /* 字体大小 */
48 --waline-font-size: 1rem;
49
50 /* 常规颜色 */
51 --waline-white: #fff;
52 --waline-light-grey: #999;
53 --waline-dark-grey: #666;
54
55 /* 主题色 */
56 --waline-theme-color: var(--color-primary);
57 --waline-active-color: var(--color-secondary);
58
59 /* 布局颜色 */
60 --waline-color: var(--color-base-content);
61 --waline-bg-color: var(--color-base-100);
62 --waline-bg-color-light: var(--color-base-200);
63 --waline-bg-color-hover: var(--color-base-200);
64 --waline-border-color: var(--color-base-200);
65 --waline-disable-bg-color: color-mix(in oklab, var(--color-base-200) 25%, transparent);
66 --waline-disable-color: color-mix(in oklab, var(--color-base-content) 75%, transparent);
67 --waline-code-bg-color: var(--color-base-100);
68
69 /* 特殊颜色 */
70 --waline-bq-color: #f0f0f0;
71
72 /* 头像 */
73 --waline-avatar-size: 3.25rem;
74 --waline-m-avatar-size: calc(var(--waline-avatar-size) * 9 / 13);
75
76 /* 徽章 */
77 --waline-badge-color: var(--color-accent);
78 --waline-badge-font-size: 0.775em;
79
80 /* 信息 */
81 --waline-info-bg-color: color-mix(in oklab, var(--color-base-content) 15%, transparent);
82 --waline-info-color: color-mix(in oklab, var(--color-base-content) 60%, transparent);
83 --waline-info-font-size: 0.625em;
84
85 /* 渲染选择 */
86 --waline-border: 1px solid var(--waline-border-color);
87 --waline-avatar-radius: 50%;
88 --waline-box-shadow: none;
89 }
90</style>