Skip to content

Commit 61ae589

Browse files
committed
docs: add VitePress documentation site
1 parent 20ce381 commit 61ae589

35 files changed

Lines changed: 6808 additions & 0 deletions

docs/.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
node_modules/
2+
.vitepress/cache/
3+
.vitepress/dist/

docs/.vitepress/config.mts

Lines changed: 141 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,141 @@
1+
import { defineConfig } from 'vitepress'
2+
3+
const description =
4+
'Documentation for Soar, a fast, modern, bloat-free package manager for Linux. Install static binaries, AppImages, and portable packages across any distro.'
5+
6+
export default defineConfig({
7+
lang: 'en-US',
8+
title: 'Soar',
9+
titleTemplate: ':title · Soar',
10+
description,
11+
cleanUrls: true,
12+
lastUpdated: true,
13+
appearance: 'dark',
14+
sitemap: { hostname: 'https://soar.qaidvoid.dev' },
15+
16+
head: [
17+
['link', { rel: 'icon', href: '/favicon.svg', type: 'image/svg+xml' }],
18+
['meta', { name: 'theme-color', content: '#0d1117' }],
19+
['meta', { property: 'og:type', content: 'website' }],
20+
['meta', { property: 'og:title', content: 'Soar Documentation' }],
21+
['meta', { property: 'og:description', content: description }],
22+
['meta', { property: 'og:url', content: 'https://soar.qaidvoid.dev' }],
23+
[
24+
'link',
25+
{ rel: 'preconnect', href: 'https://fonts.googleapis.com' },
26+
],
27+
[
28+
'link',
29+
{ rel: 'preconnect', href: 'https://fonts.gstatic.com', crossorigin: '' },
30+
],
31+
[
32+
'link',
33+
{
34+
rel: 'stylesheet',
35+
href: 'https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;600&display=swap',
36+
},
37+
],
38+
],
39+
40+
themeConfig: {
41+
logo: '/favicon.svg',
42+
siteTitle: 'Soar',
43+
44+
nav: [
45+
{ text: 'Quick Start', link: '/quick-start' },
46+
{ text: 'CLI Reference', link: '/cli-reference' },
47+
{
48+
text: 'Guide',
49+
items: [
50+
{ text: 'Installation', link: '/installation' },
51+
{ text: 'Configuration', link: '/configuration' },
52+
{ text: 'Profiles', link: '/profiles' },
53+
{ text: 'Package Management', link: '/package-management' },
54+
],
55+
},
56+
{ text: 'Releases', link: '/releases' },
57+
],
58+
59+
sidebar: [
60+
{
61+
text: 'Getting Started',
62+
collapsed: false,
63+
items: [
64+
{ text: 'Quick Start', link: '/quick-start' },
65+
{ text: 'Installation', link: '/installation' },
66+
{ text: 'Configuration', link: '/configuration' },
67+
{ text: 'Profiles', link: '/profiles' },
68+
{ text: 'CLI Reference', link: '/cli-reference' },
69+
],
70+
},
71+
{
72+
text: 'Package Management',
73+
collapsed: false,
74+
items: [
75+
{ text: 'Overview', link: '/package-management' },
76+
{ text: 'Declarative Packages', link: '/declarative' },
77+
{ text: 'Install Packages', link: '/install' },
78+
{ text: 'Remove Packages', link: '/remove' },
79+
{ text: 'Update Packages', link: '/update' },
80+
{ text: 'Search Packages', link: '/search' },
81+
{ text: 'List Packages', link: '/list' },
82+
{ text: 'Use Package', link: '/use' },
83+
{ text: 'Run Package', link: '/run' },
84+
{ text: 'Inspect Packages', link: '/inspection' },
85+
],
86+
},
87+
{
88+
text: 'Repositories & Files',
89+
collapsed: false,
90+
items: [
91+
{ text: 'Repository Management', link: '/repo' },
92+
{ text: 'Download Files', link: '/download' },
93+
],
94+
},
95+
{
96+
text: 'Operations',
97+
collapsed: false,
98+
items: [
99+
{ text: 'Health', link: '/health' },
100+
{ text: 'Maintenance', link: '/maintenance' },
101+
],
102+
},
103+
{
104+
text: 'Release Notes',
105+
collapsed: false,
106+
items: [
107+
{ text: 'Overview', link: '/releases' },
108+
{ text: 'Soar 0.12', link: '/releases/v0.12' },
109+
{ text: 'Soar 0.11', link: '/releases/v0.11' },
110+
{ text: 'Soar 0.10', link: '/releases/v0.10' },
111+
],
112+
},
113+
],
114+
115+
socialLinks: [
116+
{ icon: 'github', link: 'https://github.com/pkgforge/soar' },
117+
{ icon: 'discord', link: 'https://discord.gg/djJUs48Zbu' },
118+
],
119+
120+
editLink: {
121+
pattern: 'https://github.com/pkgforge/soar/edit/main/docs/:path',
122+
text: 'Edit this page on GitHub',
123+
},
124+
125+
search: {
126+
provider: 'local',
127+
},
128+
129+
outline: { level: [2, 3], label: 'On this page' },
130+
131+
footer: {
132+
message: 'Released under the MIT License.',
133+
copyright: 'Copyright © 2024-present pkgforge',
134+
},
135+
136+
docFooter: {
137+
prev: 'Previous',
138+
next: 'Next',
139+
},
140+
},
141+
})
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
<script setup lang="ts">
2+
import { ref } from 'vue'
3+
4+
const command = 'curl -fsSL https://soar.qaidvoid.dev/install.sh | sh'
5+
const copied = ref(false)
6+
7+
async function copy() {
8+
try {
9+
await navigator.clipboard.writeText(command)
10+
copied.value = true
11+
setTimeout(() => (copied.value = false), 2000)
12+
} catch {
13+
/* clipboard unavailable */
14+
}
15+
}
16+
</script>
17+
18+
<template>
19+
<div class="install-command">
20+
<div class="install-command-inner">
21+
<span class="install-prompt">$</span>
22+
<code class="install-text">{{ command }}</code>
23+
<button
24+
class="install-copy"
25+
:class="{ copied }"
26+
type="button"
27+
:aria-label="copied ? 'Copied' : 'Copy install command'"
28+
@click="copy"
29+
>
30+
{{ copied ? 'Copied' : 'Copy' }}
31+
</button>
32+
</div>
33+
<p class="install-hint">
34+
Then add <code>~/.local/share/soar/bin</code> to your <code>PATH</code> and run
35+
<code>soar install neovim</code>.
36+
</p>
37+
</div>
38+
</template>
Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
<script setup lang="ts">
2+
import { withBase } from 'vitepress'
3+
</script>
4+
5+
<template>
6+
<div class="nf">
7+
<p class="nf-code">404</p>
8+
<h1 class="nf-title">Page not found</h1>
9+
<p class="nf-msg">
10+
This page does not exist. It may have moved or been removed.
11+
</p>
12+
<div class="nf-actions">
13+
<a class="nf-home" :href="withBase('/')">Back to home</a>
14+
<p class="nf-links">
15+
Try
16+
<a :href="withBase('/quick-start')">Quick Start</a> ·
17+
<a :href="withBase('/cli-reference')">CLI Reference</a> ·
18+
<a :href="withBase('/installation')">Installation</a>
19+
</p>
20+
</div>
21+
</div>
22+
</template>
23+
24+
<style scoped>
25+
.nf {
26+
min-height: 70vh;
27+
display: flex;
28+
flex-direction: column;
29+
align-items: center;
30+
justify-content: center;
31+
text-align: center;
32+
padding: 64px 24px;
33+
}
34+
35+
.nf-code {
36+
margin: 0;
37+
font-family: var(--vp-font-family-mono);
38+
font-size: clamp(4rem, 18vw, 8rem);
39+
font-weight: 700;
40+
line-height: 1;
41+
letter-spacing: -0.04em;
42+
background: linear-gradient(120deg, #58a6ff 20%, #3fb9a2 60%, #d29922 100%);
43+
-webkit-background-clip: text;
44+
background-clip: text;
45+
-webkit-text-fill-color: transparent;
46+
}
47+
48+
.nf-title {
49+
margin: 16px 0 8px;
50+
font-size: 1.5rem;
51+
border: none;
52+
}
53+
54+
.nf-msg {
55+
margin: 0 0 28px;
56+
color: var(--vp-c-text-2);
57+
}
58+
59+
.nf-home {
60+
display: inline-block;
61+
padding: 9px 22px;
62+
border-radius: 20px;
63+
font-weight: 600;
64+
color: #06101f;
65+
background: var(--vp-c-brand-3);
66+
transition: background 0.2s;
67+
}
68+
69+
.nf-home:hover {
70+
background: var(--vp-c-brand-2);
71+
}
72+
73+
.nf-links {
74+
margin-top: 20px;
75+
font-size: 0.9rem;
76+
color: var(--vp-c-text-3);
77+
}
78+
79+
.nf-links a {
80+
font-weight: 500;
81+
}
82+
</style>
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
<script setup lang="ts">
2+
interface NavLink {
3+
text: string
4+
link: string
5+
}
6+
7+
interface NavGroup {
8+
title: string
9+
links: NavLink[]
10+
}
11+
12+
const groups: NavGroup[] = [
13+
{
14+
title: 'Getting Started',
15+
links: [
16+
{ text: 'Quick Start Guide', link: '/quick-start' },
17+
{ text: 'Installation', link: '/installation' },
18+
{ text: 'Configuration', link: '/configuration' },
19+
],
20+
},
21+
{
22+
title: 'Package Management',
23+
links: [
24+
{ text: 'Install Packages', link: '/install' },
25+
{ text: 'Search & Discover', link: '/search' },
26+
{ text: 'Update Packages', link: '/update' },
27+
{ text: 'Remove Packages', link: '/remove' },
28+
],
29+
},
30+
{
31+
title: 'Advanced',
32+
links: [
33+
{ text: 'Profiles', link: '/profiles' },
34+
{ text: 'Declarative Packages', link: '/declarative' },
35+
{ text: 'CLI Reference', link: '/cli-reference' },
36+
],
37+
},
38+
{
39+
title: 'Operations',
40+
links: [
41+
{ text: 'Health & Diagnostics', link: '/health' },
42+
{ text: 'System Maintenance', link: '/maintenance' },
43+
{ text: 'Release Notes', link: '/releases' },
44+
],
45+
},
46+
]
47+
</script>
48+
49+
<template>
50+
<section class="quick-nav">
51+
<div class="quick-nav-container">
52+
<h2 class="quick-nav-heading">Explore the docs</h2>
53+
<div class="quick-nav-grid">
54+
<div v-for="group in groups" :key="group.title" class="quick-nav-card">
55+
<h3>{{ group.title }}</h3>
56+
<ul>
57+
<li v-for="item in group.links" :key="item.link">
58+
<a :href="item.link">{{ item.text }}</a>
59+
</li>
60+
</ul>
61+
</div>
62+
</div>
63+
</div>
64+
</section>
65+
</template>

0 commit comments

Comments
 (0)