Skip to content

Commit 7759d12

Browse files
refactor(site): remove scss pipeline and unify on unocss
1 parent 04c93fd commit 7759d12

14 files changed

Lines changed: 76 additions & 726 deletions

workers/gins-rime/site/astro.config.mjs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ export default defineConfig({
1414
social: [
1515
{ icon: 'github', label: 'GitHub', href: 'https://github.com/IchimaruGin728/Gins-Rime' },
1616
],
17-
customCss: ['./src/styles/gins.scss', './src/styles/glass.scss'],
1817
sidebar: [
1918
{
2019
label: '快速开始',

workers/gins-rime/site/package.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@
3131
},
3232
"devDependencies": {
3333
"@unocss/astro": "^66.6.8",
34-
"sass": "^1.99.0",
3534
"typescript": "^5.9.3",
3635
"unocss": "^66.6.8"
3736
}

workers/gins-rime/site/pnpm-lock.yaml

Lines changed: 3 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

workers/gins-rime/site/src/components/DictStatus.tsx

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -34,26 +34,26 @@ export default function DictStatus() {
3434

3535
if (!data) {
3636
return (
37-
<div class="grid gap-4 my-6" style="grid-template-columns:repeat(auto-fit,minmax(180px,1fr))">
37+
<div class="my-6 grid grid-cols-[repeat(auto-fit,minmax(180px,1fr))] gap-4">
3838
{Object.keys(DICT_LABELS).map(k => (
39-
<div key={k} class="dict-card skeleton" />
39+
<div key={k} class="surface-card h-[4.5rem] animate-pulse" />
4040
))}
4141
</div>
4242
)
4343
}
4444

4545
return (
46-
<div class="grid gap-4 my-6" style="grid-template-columns:repeat(auto-fit,minmax(180px,1fr)); align-items:stretch">
46+
<div class="my-6 grid grid-cols-[repeat(auto-fit,minmax(180px,1fr))] items-stretch gap-4">
4747
{Object.entries(DICT_LABELS).map(([key, label]) => {
4848
const info = data[key as keyof VersionData]
4949
return (
50-
<div key={key} class="dict-card flex flex-col gap-1 p-4 h-full min-h-[4.5rem] box-border">
51-
<span class="font-semibold text-[0.9rem] text-[var(--sl-color-text)]">{label}</span>
52-
<span class="text-[0.8rem] tabular-nums text-[var(--sl-color-text-accent)]">
50+
<div key={key} class="surface-card box-border flex h-full min-h-[4.5rem] flex-col gap-1">
51+
<span class="text-[0.9rem] font-semibold text-[var(--sl-color-white)]">{label}</span>
52+
<span class="tabular-nums surface-meta">
5353
{info?.date ?? '—'}
5454
</span>
5555
{info?.lines != null && (
56-
<span class="text-[0.75rem] text-[color-mix(in_srgb,var(--sl-color-text)_55%,transparent)]">
56+
<span class="text-xs text-[var(--sl-color-gray-3)]">
5757
{info.lines.toLocaleString()}
5858
</span>
5959
)}

workers/gins-rime/site/src/components/DownloadBtn.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,15 +19,15 @@ export default function DownloadBtn() {
1919

2020
return (
2121
<div class="flex flex-col gap-3 my-6">
22-
<a class="download-btn" href={href} download="gins-rime">
22+
<a class="primary-btn" href={href} download="gins-rime">
2323
下载 gins-rime CLI
2424
</a>
2525
{meta?.date && (
26-
<span class="text-[0.8rem] tabular-nums text-[color-mix(in_srgb,var(--sl-color-text)_55%,transparent)]">
26+
<span class="surface-meta-muted tabular-nums">
2727
{meta.date}{meta.sha ? ` · ${meta.sha}` : ''}
2828
</span>
2929
)}
30-
<pre class="text-[0.85rem] overflow-x-auto px-4 py-3 rounded-[var(--sl-border-radius-sm)] bg-white/5 border border-white/8 font-mono">
30+
<pre class="overflow-x-auto rounded-xl border border-[var(--sl-color-hairline)] bg-black/20 px-4 py-3 font-mono text-[0.85rem] text-[var(--sl-color-gray-2)]">
3131
{'curl -fsSL ' + href + ' -o gins-rime && chmod +x gins-rime'}
3232
</pre>
3333
</div>

workers/gins-rime/site/src/components/Head.astro

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,3 @@ import '@fontsource-variable/outfit'
88
<meta name="theme-color" content="#581c87" />
99
<meta property="og:image" content="/og.png" />
1010
</Default>
11-
12-
<script>
13-
import '../scripts/glass'
14-
</script>

workers/gins-rime/site/src/components/HomeDashboard.astro

Lines changed: 17 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -43,26 +43,32 @@ const upstream = [
4343
]
4444
---
4545

46-
<div class="home-dashboard">
47-
48-
<p class="panel-label">上游版本</p>
49-
<div class="panel-grid">
46+
<div class="my-8 space-y-8">
47+
<section class="space-y-3">
48+
<p class="section-label">
49+
上游版本
50+
</p>
51+
<div class="grid grid-cols-1 gap-3 sm:grid-cols-2 xl:grid-cols-5">
5052
{upstream.map(s => (
5153
<a
5254
href={s.href}
5355
target="_blank"
5456
rel="noopener noreferrer"
55-
class="hp-card"
57+
class="surface-card-hover"
5658
aria-label={`${s.name} — ${s.version}`}
5759
>
58-
<span class="hp-name">{s.name}</span>
59-
<span class="hp-sub">{s.label}</span>
60-
<span class="hp-ver">{s.version}</span>
60+
<span class="surface-title">{s.name}</span>
61+
<span class="surface-sub">{s.label}</span>
62+
<span class="mt-4 block surface-meta">{s.version}</span>
6163
</a>
6264
))}
63-
</div>
65+
</div>
66+
</section>
6467

65-
<p class="panel-label">词库 & 安装</p>
68+
<section class="space-y-3">
69+
<p class="section-label">
70+
词库 & 安装
71+
</p>
6672
<HomeStatusPanel
6773
dictVersions={{
6874
zhwiki: read('zhwiki.month'),
@@ -71,41 +77,5 @@ const upstream = [
7177
}}
7278
client:load
7379
/>
74-
80+
</section>
7581
</div>
76-
77-
<style>
78-
.home-dashboard {
79-
margin: 2rem 0;
80-
}
81-
82-
/* ── Section label ── */
83-
.panel-label {
84-
font-size: 0.7rem;
85-
font-weight: 600;
86-
letter-spacing: 0.07em;
87-
text-transform: uppercase;
88-
color: color-mix(in srgb, var(--sl-color-text) 40%, transparent);
89-
margin: 0 0 0.55rem;
90-
91-
&:not(:first-child) {
92-
margin-top: 1.5rem;
93-
}
94-
}
95-
96-
/* ── Shared 5-col grid ── */
97-
.panel-grid {
98-
display: grid;
99-
grid-template-columns: repeat(5, 1fr);
100-
gap: 0.6rem;
101-
}
102-
103-
@media (max-width: 780px) {
104-
.panel-grid { grid-template-columns: repeat(3, 1fr); }
105-
}
106-
@media (max-width: 480px) {
107-
.panel-grid { grid-template-columns: repeat(2, 1fr); }
108-
}
109-
110-
/* .hp-card 及排版类已移至 gins.scss 全局 */
111-
</style>

workers/gins-rime/site/src/components/HomeStatusPanel.tsx

Lines changed: 29 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,6 @@ const DICTS: { key: string; name: string; sub: string }[] = [
2121
const CLI_HREF = '/releases/latest/gins-rime'
2222
const INSTALL_CMD = `curl -fsSL ${CLI_HREF} -o gins-rime && chmod +x gins-rime`
2323

24-
const CARD_BASE = [
25-
'border-radius:var(--sl-border-radius-sm,8px)',
26-
'border:1px solid var(--sl-color-hairline)',
27-
'background:color-mix(in srgb,var(--sl-color-accent) 4%,transparent)',
28-
'contain:layout style',
29-
].join(';')
30-
3124
export default function HomeStatusPanel({ dictVersions }: Props) {
3225
const [status, setStatus] = useState<ApiStatus | null>(null)
3326

@@ -41,24 +34,25 @@ export default function HomeStatusPanel({ dictVersions }: Props) {
4134
const loading = status === null
4235

4336
return (
44-
<div class="flex flex-col gap-[0.6rem]">
45-
46-
{/* ── Dict cards — Grid for perfectly equal height ── */}
47-
<div class="grid grid-cols-1 md:grid-cols-3 gap-[0.6rem]">
37+
<div class="space-y-4">
38+
<div class="grid grid-cols-1 gap-3 md:grid-cols-2 xl:grid-cols-3">
4839
{DICTS.map(({ key, name, sub }) => {
4940
const info = status?.[key as keyof ApiStatus] as DictInfo | undefined
5041
const ver = dictVersions[key] !== '—' ? dictVersions[key] : (info?.date ?? '—')
5142
const hasLines = !loading && info?.lines != null
5243
return (
53-
<div key={key} class="flex flex-col p-[0.85rem_1rem] min-h-[5.5rem] rounded-[var(--sl-border-radius-sm,8px)] border border-[var(--sl-color-hairline)] bg-[color-mix(in_srgb,var(--sl-color-accent)_4%,transparent)]">
54-
<span class="font-semibold text-[0.875rem] text-[var(--sl-color-text)] truncate">{name}</span>
55-
<span class="text-[0.68rem] text-[color-mix(in_srgb,var(--sl-color-text)_42%,transparent)] truncate leading-relaxed">{sub}</span>
44+
<div
45+
key={key}
46+
class="surface-card"
47+
>
48+
<span class="surface-title">{name}</span>
49+
<span class="surface-sub">{sub}</span>
5650

57-
<div class="mt-auto flex flex-col gap-[0.15rem]">
58-
<span class="pt-[0.45rem] text-[0.78rem] font-mono tabular-nums text-[var(--sl-color-text-accent)] truncate">
51+
<div class="mt-4 flex flex-col gap-1">
52+
<span class="surface-meta">
5953
{loading ? '…' : ver}
6054
</span>
61-
<span class={`text-[0.62rem] tabular-nums text-[color-mix(in_srgb,var(--sl-color-text)_34%,transparent)]${hasLines ? '' : ' invisible'}`}>
55+
<span class={`surface-meta-muted${hasLines ? '' : ' invisible'}`}>
6256
{info?.lines != null ? `${info.lines.toLocaleString()} entries` : '0 entries'}
6357
</span>
6458
</div>
@@ -67,45 +61,27 @@ export default function HomeStatusPanel({ dictVersions }: Props) {
6761
})}
6862
</div>
6963

70-
{/* ── CLI — full-width bar, horizontal layout ── */}
71-
<div style={`display:grid;grid-template-columns:1fr auto;align-items:center;gap:0.75rem 1.25rem;padding:0.85rem 1rem;${CARD_BASE}`}>
72-
{/* Left: name + version */}
73-
<div style="display:flex;align-items:baseline;gap:0.5rem;flex-wrap:wrap;min-width:0">
74-
<span style="font-weight:600;font-size:0.875rem;color:var(--sl-color-text);white-space:nowrap">Gin's-Rime CLI</span>
75-
{status?.cli?.date && (
76-
<span style="font-size:0.7rem;font-family:var(--sl-font-mono);color:color-mix(in srgb,var(--sl-color-text) 42%,transparent);font-variant-numeric:tabular-nums;white-space:nowrap">
77-
{status.cli.date}{status.cli.sha ? ` · ${status.cli.sha}` : ''}
78-
</span>
79-
)}
64+
<div class="surface-card md:p-5">
65+
<div class="flex flex-col gap-3 md:flex-row md:items-center md:justify-between">
66+
<div class="min-w-0">
67+
<span class="block text-lg font-semibold text-[var(--sl-color-white)]">Gin's-Rime CLI</span>
68+
{status?.cli?.date && (
69+
<span class="mt-1 block surface-meta-muted">
70+
{status.cli.date}{status.cli.sha ? ` · ${status.cli.sha}` : ''}
71+
</span>
72+
)}
73+
</div>
74+
<a
75+
class="primary-btn"
76+
href={CLI_HREF}
77+
download="gins-rime"
78+
>
79+
下载
80+
</a>
8081
</div>
8182

82-
{/* Right: download button */}
83-
<a
84-
class="download-btn"
85-
href={CLI_HREF}
86-
download="gins-rime"
87-
style="font-size:0.78rem;padding:0.35rem 0.9rem;white-space:nowrap"
88-
>
89-
下载
90-
</a>
91-
92-
{/* Bottom: install command, spans both columns */}
93-
<pre style={[
94-
'grid-column:1/-1',
95-
'margin:0',
96-
'font-size:0.7rem',
97-
'font-family:var(--sl-font-mono)',
98-
'overflow-x:auto',
99-
'padding:0.45rem 0.7rem',
100-
'border-radius:var(--sl-border-radius-sm,8px)',
101-
'background:var(--sl-color-bg-sidebar)',
102-
'border:1px solid var(--sl-color-hairline)',
103-
'white-space:pre',
104-
'line-height:1.5',
105-
'color:color-mix(in srgb,var(--sl-color-text) 65%,transparent)',
106-
].join(';')}>{INSTALL_CMD}</pre>
83+
<pre class="mt-4 overflow-x-auto rounded-xl border border-[var(--sl-color-hairline)] bg-black/20 px-4 py-3 text-xs text-[var(--sl-color-gray-2)]">{INSTALL_CMD}</pre>
10784
</div>
108-
10985
</div>
11086
)
11187
}

workers/gins-rime/site/src/components/SiteHeader.astro

Lines changed: 4 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -6,66 +6,16 @@ import ThemeSelect from '@astrojs/starlight/components/ThemeSelect.astro'
66
---
77

88
<div class="header sl-flex">
9-
<div class="title-wrapper sl-flex">
9+
<div class="sl-flex min-w-0 items-center px-1 py-1">
1010
<SiteTitle {...Astro.props} />
1111
</div>
12-
<div class="sl-flex print:hidden">
12+
<div class="sl-flex min-w-0 flex-1 items-center justify-start print:hidden">
1313
<Search {...Astro.props} />
1414
</div>
15-
<div class="sl-hidden md:sl-flex print:hidden right-group">
16-
<div class="sl-flex social-icons">
15+
<div class="sl-hidden print:hidden md:sl-flex items-center gap-4">
16+
<div class="sl-flex items-center gap-4 after:h-8 after:border-r after:border-[var(--sl-color-hairline)] after:content-['']">
1717
<SocialIcons {...Astro.props} />
1818
</div>
1919
<ThemeSelect {...Astro.props} />
2020
</div>
2121
</div>
22-
23-
<style>
24-
.header {
25-
gap: var(--sl-nav-gap);
26-
justify-content: space-between;
27-
align-items: center;
28-
height: 100%;
29-
}
30-
.title-wrapper {
31-
overflow: clip;
32-
padding: 0.25rem;
33-
margin: -0.25rem;
34-
min-width: 0;
35-
}
36-
.right-group,
37-
.social-icons {
38-
gap: 1rem;
39-
align-items: center;
40-
}
41-
.social-icons::after {
42-
content: '';
43-
height: 2rem;
44-
border-inline-end: 1px solid var(--sl-color-gray-5);
45-
}
46-
@media (min-width: 50rem) {
47-
:global(:root[data-has-sidebar]) {
48-
--__sidebar-pad: calc(2 * var(--sl-nav-pad-x));
49-
}
50-
:global(:root:not([data-has-toc])) {
51-
--__toc-width: 0rem;
52-
}
53-
.header {
54-
--__sidebar-width: max(0rem, var(--sl-content-inline-start, 0rem) - var(--sl-nav-pad-x));
55-
--__main-column-fr: calc(
56-
(100% + var(--__sidebar-pad, 0rem) - var(--__toc-width, var(--sl-sidebar-width)) -
57-
(2 * var(--__toc-width, var(--sl-nav-pad-x))) - var(--sl-content-inline-start, 0rem) -
58-
var(--sl-content-width)) / 2
59-
);
60-
display: grid;
61-
grid-template-columns:
62-
minmax(
63-
calc(var(--__sidebar-width) + max(0rem, var(--__main-column-fr) - var(--sl-nav-gap))),
64-
auto
65-
)
66-
1fr
67-
auto;
68-
align-content: center;
69-
}
70-
}
71-
</style>

0 commit comments

Comments
 (0)