Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions docs/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
node_modules/
.vitepress/cache/
.vitepress/dist/
141 changes: 141 additions & 0 deletions docs/.vitepress/config.mts
Original file line number Diff line number Diff line change
@@ -0,0 +1,141 @@
import { defineConfig } from 'vitepress'

const description =
'Documentation for Soar, a fast, modern, bloat-free package manager for Linux. Install static binaries, AppImages, and portable packages across any distro.'

export default defineConfig({
lang: 'en-US',
title: 'Soar',
titleTemplate: ':title · Soar',
description,
cleanUrls: true,
lastUpdated: true,
appearance: 'dark',
sitemap: { hostname: 'https://soar.qaidvoid.dev' },

head: [
['link', { rel: 'icon', href: '/favicon.svg', type: 'image/svg+xml' }],
['meta', { name: 'theme-color', content: '#0d1117' }],
['meta', { property: 'og:type', content: 'website' }],
['meta', { property: 'og:title', content: 'Soar Documentation' }],
['meta', { property: 'og:description', content: description }],
['meta', { property: 'og:url', content: 'https://soar.qaidvoid.dev' }],
[
'link',
{ rel: 'preconnect', href: 'https://fonts.googleapis.com' },
],
[
'link',
{ rel: 'preconnect', href: 'https://fonts.gstatic.com', crossorigin: '' },
],
[
'link',
{
rel: 'stylesheet',
href: 'https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;600&display=swap',
},
],
],

themeConfig: {
logo: '/favicon.svg',
siteTitle: 'Soar',

nav: [
{ text: 'Quick Start', link: '/quick-start' },
{ text: 'CLI Reference', link: '/cli-reference' },
{
text: 'Guide',
items: [
{ text: 'Installation', link: '/installation' },
{ text: 'Configuration', link: '/configuration' },
{ text: 'Profiles', link: '/profiles' },
{ text: 'Package Management', link: '/package-management' },
],
},
{ text: 'Releases', link: '/releases' },
],

sidebar: [
{
text: 'Getting Started',
collapsed: false,
items: [
{ text: 'Quick Start', link: '/quick-start' },
{ text: 'Installation', link: '/installation' },
{ text: 'Configuration', link: '/configuration' },
{ text: 'Profiles', link: '/profiles' },
{ text: 'CLI Reference', link: '/cli-reference' },
],
},
{
text: 'Package Management',
collapsed: false,
items: [
{ text: 'Overview', link: '/package-management' },
{ text: 'Declarative Packages', link: '/declarative' },
{ text: 'Install Packages', link: '/install' },
{ text: 'Remove Packages', link: '/remove' },
{ text: 'Update Packages', link: '/update' },
{ text: 'Search Packages', link: '/search' },
{ text: 'List Packages', link: '/list' },
{ text: 'Use Package', link: '/use' },
{ text: 'Run Package', link: '/run' },
{ text: 'Inspect Packages', link: '/inspection' },
],
},
{
text: 'Repositories & Files',
collapsed: false,
items: [
{ text: 'Repository Management', link: '/repo' },
{ text: 'Download Files', link: '/download' },
],
},
{
text: 'Operations',
collapsed: false,
items: [
{ text: 'Health', link: '/health' },
{ text: 'Maintenance', link: '/maintenance' },
],
},
{
text: 'Release Notes',
collapsed: false,
items: [
{ text: 'Overview', link: '/releases' },
{ text: 'Soar 0.12', link: '/releases/v0.12' },
{ text: 'Soar 0.11', link: '/releases/v0.11' },
{ text: 'Soar 0.10', link: '/releases/v0.10' },
],
},
],

socialLinks: [
{ icon: 'github', link: 'https://github.com/pkgforge/soar' },
{ icon: 'discord', link: 'https://discord.gg/djJUs48Zbu' },
],

editLink: {
pattern: 'https://github.com/pkgforge/soar/edit/main/docs/:path',
text: 'Edit this page on GitHub',
},

search: {
provider: 'local',
},

outline: { level: [2, 3], label: 'On this page' },

footer: {
message: 'Released under the MIT License.',
copyright: 'Copyright © 2024-present pkgforge',
},

docFooter: {
prev: 'Previous',
next: 'Next',
},
},
})
38 changes: 38 additions & 0 deletions docs/.vitepress/theme/components/InstallCommand.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
<script setup lang="ts">
import { ref } from 'vue'

const command = 'curl -fsSL https://soar.qaidvoid.dev/install.sh | sh'
const copied = ref(false)

async function copy() {
try {
await navigator.clipboard.writeText(command)
copied.value = true
setTimeout(() => (copied.value = false), 2000)
} catch {
/* clipboard unavailable */
}
}
</script>

<template>
<div class="install-command">
<div class="install-command-inner">
<span class="install-prompt">$</span>
<code class="install-text">{{ command }}</code>
<button
class="install-copy"
:class="{ copied }"
type="button"
:aria-label="copied ? 'Copied' : 'Copy install command'"
@click="copy"
>
{{ copied ? 'Copied' : 'Copy' }}
</button>
</div>
<p class="install-hint">
Then add <code>~/.local/share/soar/bin</code> to your <code>PATH</code> and run
<code>soar install neovim</code>.
</p>
</div>
</template>
82 changes: 82 additions & 0 deletions docs/.vitepress/theme/components/NotFound.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
<script setup lang="ts">
import { withBase } from 'vitepress'
</script>

<template>
<div class="nf">
<p class="nf-code">404</p>
<h1 class="nf-title">Page not found</h1>
<p class="nf-msg">
This page does not exist. It may have moved or been removed.
</p>
<div class="nf-actions">
<a class="nf-home" :href="withBase('/')">Back to home</a>
<p class="nf-links">
Try
<a :href="withBase('/quick-start')">Quick Start</a> ·
<a :href="withBase('/cli-reference')">CLI Reference</a> ·
<a :href="withBase('/installation')">Installation</a>
</p>
</div>
</div>
</template>

<style scoped>
.nf {
min-height: 70vh;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
text-align: center;
padding: 64px 24px;
}

.nf-code {
margin: 0;
font-family: var(--vp-font-family-mono);
font-size: clamp(4rem, 18vw, 8rem);
font-weight: 700;
line-height: 1;
letter-spacing: -0.04em;
background: linear-gradient(120deg, #58a6ff 20%, #3fb9a2 60%, #d29922 100%);
-webkit-background-clip: text;
background-clip: text;
-webkit-text-fill-color: transparent;
}

.nf-title {
margin: 16px 0 8px;
font-size: 1.5rem;
border: none;
}

.nf-msg {
margin: 0 0 28px;
color: var(--vp-c-text-2);
}

.nf-home {
display: inline-block;
padding: 9px 22px;
border-radius: 20px;
font-weight: 600;
color: #06101f;
background: var(--vp-c-brand-3);
transition: background 0.2s;
}

.nf-home:hover {
background: var(--vp-c-brand-2);
}

.nf-links {
margin-top: 20px;
font-size: 0.9rem;
color: var(--vp-c-text-3);
}

.nf-links a {
font-weight: 500;
}
</style>
65 changes: 65 additions & 0 deletions docs/.vitepress/theme/components/QuickNav.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
<script setup lang="ts">
interface NavLink {
text: string
link: string
}

interface NavGroup {
title: string
links: NavLink[]
}

const groups: NavGroup[] = [
{
title: 'Getting Started',
links: [
{ text: 'Quick Start Guide', link: '/quick-start' },
{ text: 'Installation', link: '/installation' },
{ text: 'Configuration', link: '/configuration' },
],
},
{
title: 'Package Management',
links: [
{ text: 'Install Packages', link: '/install' },
{ text: 'Search & Discover', link: '/search' },
{ text: 'Update Packages', link: '/update' },
{ text: 'Remove Packages', link: '/remove' },
],
},
{
title: 'Advanced',
links: [
{ text: 'Profiles', link: '/profiles' },
{ text: 'Declarative Packages', link: '/declarative' },
{ text: 'CLI Reference', link: '/cli-reference' },
],
},
{
title: 'Operations',
links: [
{ text: 'Health & Diagnostics', link: '/health' },
{ text: 'System Maintenance', link: '/maintenance' },
{ text: 'Release Notes', link: '/releases' },
],
},
]
</script>

<template>
<section class="quick-nav">
<div class="quick-nav-container">
<h2 class="quick-nav-heading">Explore the docs</h2>
<div class="quick-nav-grid">
<div v-for="group in groups" :key="group.title" class="quick-nav-card">
<h3>{{ group.title }}</h3>
<ul>
<li v-for="item in group.links" :key="item.link">
<a :href="item.link">{{ item.text }}</a>
</li>
</ul>
</div>
</div>
</div>
</section>
</template>
Loading
Loading