Skip to content

Commit

Permalink
Migrate from VuePress to VitePress
Browse files Browse the repository at this point in the history
Reason: VuePress v2 is in beta/RC state for years and VitePress seems
to be more actively developed.
  • Loading branch information
martinjaeger committed Oct 29, 2024
1 parent f7a57fb commit b98a12d
Show file tree
Hide file tree
Showing 73 changed files with 1,597 additions and 2,638 deletions.
20 changes: 11 additions & 9 deletions .github/workflows/vuepress.yaml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# Script based on following guide:
# https://kaizendorks.github.io/2020/04/16/vuepress-github-actions/

name: Deploy VuePress static site to GitHub pages
name: Deploy VitePress static site to GitHub pages

on: [push, pull_request]

Expand All @@ -10,30 +10,32 @@ jobs:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v2
- name: Checkout repository
uses: actions/checkout@v2

- name: Generate static vuepress files
- name: Generate static VitePress files
uses: actions/setup-node@v1
with:
node-version: '21.x'
- run: npm ci
- run: npm run build
run: |
npm install
npm run docs:build
- name: Init new repo in dist folder and commit generated files
run: |
cd docs/.vuepress/dist
cd .vitepress/dist
echo "libre.solar" > CNAME
git init
git add -A
git config --local user.email "[email protected]"
git config --local user.name "GitHub Action"
git commit -m 'deploy'
- name: Force push to destination branch
- name: Force push to gh-pages branch
if: github.ref == 'refs/heads/main'
uses: ad-m/github-push-action@v0.6.0
uses: ad-m/github-push-action@v0.8
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
branch: gh-pages
force: true
directory: ./docs/.vuepress/dist
directory: .vitepress/dist
5 changes: 0 additions & 5 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,8 +1,3 @@
node_modules

# vuepress build output
docs/.vuepress/dist

yarn-error.log

*.DS_Store
3 changes: 3 additions & 0 deletions .vitepress/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
cache
temp
dist
68 changes: 35 additions & 33 deletions docs/.vuepress/config.ts → .vitepress/config.mts
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
import { defaultTheme } from '@vuepress/theme-default'
import { viteBundler } from '@vuepress/bundler-vite'
import { defineConfig } from 'vitepress'

export default ({
lang: 'en',
title: 'The Libre Solar Project',
description: 'Building Blocks for DC Energy Systems',
// https://vitepress.dev/reference/site-config
export default defineConfig({
title: "The Libre Solar Project",
description: "Building Blocks for DC Energy Systems",
head: [
['link', { rel: "apple-touch-icon", sizes: "180x180", href: "/favicons/apple-touch-icon.png"}],
['link', { rel: "icon", type: "image/png", sizes: "32x32", href: "/favicons/favicon-32x32.png"}],
Expand All @@ -16,18 +15,20 @@ export default ({
['meta', { name: "msapplication-config", content: "/favicons/browserconfig.xml"}],
['meta', { name: "theme-color", content: "#ffffff"}],
],
theme: defaultTheme({
// set theme config here
logo: '/images/libresolar-logo-white-header.png',
colorMode: 'light',
colorModeSwitch: false,
navbar: [
themeConfig: {
// https://vitepress.dev/reference/default-theme-config
logo: {
light: '/images/libresolar-logo-website-light.png',
dark: '/images/libresolar-logo-website-dark.png'
},
siteTitle: false,
nav: [
{ text: 'Hardware', link: '/hardware/' },
{ text: 'Software', link: '/software/' },
{ text: 'Learn', link: 'https://learn.libre.solar' },
/*{
text: 'Learn',
children: [
items: [
{ text: 'System Layout', link: '/learn/system.md' },
{ text: 'Development', link: '/learn/development.md' },
{ text: 'Production', link: '/learn/production.md' },
Expand All @@ -36,11 +37,12 @@ export default ({
{ text: 'Forum', link: 'https://talk.libre.solar', target:'_self' },
{ text: 'About', link: '/about/' },
],

sidebar: {
'/hardware/': [
{
text: 'Charge Controllers',
children: [
items: [
{ text: 'Overview', link: '/hardware/cc-overview.md' },
{ text: 'MPPT 2420 HC', link: '/hardware/mppt-2420-hc.md' },
{ text: 'MPPT 1210 HUS', link: '/hardware/mppt-1210-hus.md' },
Expand All @@ -50,7 +52,7 @@ export default ({
},
{
text: 'Battery Management',
children: [
items: [
{ text: 'Overview', link: '/hardware/bms-overview.md' },
{ text: 'BMS C1', link: '/hardware/bms-c1.md' },
{ text: 'BMS 8S50 IC', link: '/hardware/bms-8s50-ic.md' },
Expand All @@ -59,14 +61,14 @@ export default ({
},
{
text: 'Other Devices',
children: [
items: [
{ text: 'RPi CAN gateway', link: '/hardware/rpi-can.md' },
{ text: 'UEXT modules', link: '/hardware/uext-modules.md' },
],
},
{
text: 'Interfaces',
children: [
items: [
{ text: 'LS.one', link: '/hardware/ls-one.md' },
{ text: 'LS.bus', link: '/hardware/ls-bus.md' },
],
Expand All @@ -75,46 +77,46 @@ export default ({
'/software/': [
{
text: 'Firmware',
children: [
items: [
{ text: 'Charge Controller', link: '/software/charge-controller.md' },
{ text: 'Battery Management', link: '/software/bms.md' },
],
},
/*{
text: 'Cloud Integration',
children: [
items: [
{ text: 'Grafana', link: '/software/grafana.md' },
{ text: 'EmonCMS', link: '/software/emoncms.md' },
],
},*/
{
text: 'Communication',
children: [
items: [
{ text: 'ThingSet Protocol', link: '/software/thingset.md' },
],
},
],
'/about/': [
{
text: 'Libre Solar',
children: [
items: [
{ text: 'Mission', link: '/about/mission.md' },
{ text: 'Support', link: '/about/support.md' },
{ text: 'Contact', link: '/about/contact.md' },
],
},
],
},
contributors: false,
docsRepo: 'LibreSolar/libresolar.github.io',
docsDir: 'docs',
docsBranch: 'main',
editLink: true,
lastUpdated: true,
sidebarDepth: 1,
}),
bundler: viteBundler({
viteOptions: {},
vuePluginOptions: {},
}),

socialLinks: [
{ icon: 'github', link: 'https://github.com/LibreSolar' }
],
editLink: {
pattern: 'https://github.com/LibreSolar/libresolar.github.io/edit/main/:path'
},

footer: {
message: 'The Libre Solar Project | <span style="padding: 5px;"><a href="https://libre.solar/about/contact.html">Contact / Impressum</a>'
}
}
})
17 changes: 17 additions & 0 deletions .vitepress/theme/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
// https://vitepress.dev/guide/custom-theme
import { h } from 'vue'
import type { Theme } from 'vitepress'
import DefaultTheme from 'vitepress/theme'
import './style.css'

export default {
extends: DefaultTheme,
Layout: () => {
return h(DefaultTheme.Layout, null, {
// https://vitepress.dev/guide/extending-default-theme#layout-slots
})
},
enhanceApp({ app, router, siteData }) {
// ...
}
} satisfies Theme
147 changes: 147 additions & 0 deletions .vitepress/theme/style.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,147 @@
/**
* Customize default theme styling by overriding CSS variables:
* https://github.com/vuejs/vitepress/blob/main/src/client/theme-default/styles/vars.css
*/

/**
* Colors
*
* Each colors have exact same color scale system with 3 levels of solid
* colors with different brightness, and 1 soft color.
*
* - `XXX-1`: The most solid color used mainly for colored text. It must
* satisfy the contrast ratio against when used on top of `XXX-soft`.
*
* - `XXX-2`: The color used mainly for hover state of the button.
*
* - `XXX-3`: The color for solid background, such as bg color of the button.
* It must satisfy the contrast ratio with pure white (#ffffff) text on
* top of it.
*
* - `XXX-soft`: The color used for subtle background such as custom container
* or badges. It must satisfy the contrast ratio when putting `XXX-1` colors
* on top of it.
*
* The soft color must be semi transparent alpha channel. This is crucial
* because it allows adding multiple "soft" colors on top of each other
* to create a accent, such as when having inline code block inside
* custom containers.
*
* - `default`: The color used purely for subtle indication without any
* special meanings attached to it such as bg color for menu hover state.
*
* - `brand`: Used for primary brand colors, such as link text, button with
* brand theme, etc.
*
* - `tip`: Used to indicate useful information. The default theme uses the
* brand color for this by default.
*
* - `warning`: Used to indicate warning to the users. Used in custom
* container, badges, etc.
*
* - `danger`: Used to show error, or dangerous message to the users. Used
* in custom container, badges, etc.
* -------------------------------------------------------------------------- */

:root {
--vp-c-default-1: var(--vp-c-gray-1);
--vp-c-default-2: var(--vp-c-gray-2);
--vp-c-default-3: var(--vp-c-gray-3);
--vp-c-default-soft: var(--vp-c-gray-soft);

--vp-c-brand-1: #005e85;
--vp-c-brand-2: #005e85;
--vp-c-brand-3: #005e85;
--vp-c-brand-soft: var(--vp-c-indigo-soft);

--vp-c-tip-1: var(--vp-c-brand-1);
--vp-c-tip-2: var(--vp-c-brand-2);
--vp-c-tip-3: var(--vp-c-brand-3);
--vp-c-tip-soft: var(--vp-c-brand-soft);

--vp-c-warning-1: var(--vp-c-yellow-1);
--vp-c-warning-2: var(--vp-c-yellow-2);
--vp-c-warning-3: var(--vp-c-yellow-3);
--vp-c-warning-soft: var(--vp-c-yellow-soft);

--vp-c-danger-1: var(--vp-c-red-1);
--vp-c-danger-2: var(--vp-c-red-2);
--vp-c-danger-3: var(--vp-c-red-3);
--vp-c-danger-soft: var(--vp-c-red-soft);
}

/**
* Component: Button
* -------------------------------------------------------------------------- */

:root {
--vp-button-brand-border: transparent;
--vp-button-brand-text: var(--vp-c-white);
--vp-button-brand-bg: var(--vp-c-brand-3);
--vp-button-brand-hover-border: transparent;
--vp-button-brand-hover-text: var(--vp-c-white);
--vp-button-brand-hover-bg: var(--vp-c-brand-2);
--vp-button-brand-active-border: transparent;
--vp-button-brand-active-text: var(--vp-c-white);
--vp-button-brand-active-bg: var(--vp-c-brand-1);
}

/**
* Component: Home
* -------------------------------------------------------------------------- */

:root {
--vp-home-hero-name-color: transparent;
--vp-home-hero-name-background: -webkit-linear-gradient(
120deg,
#005e85 30%,
#ddaf28
);

--vp-home-hero-image-background-image: linear-gradient(
-45deg,
#005e85 50%,
#ddaf28 50%
);
--vp-home-hero-image-filter: blur(44px);
}

@media (min-width: 640px) {
:root {
--vp-home-hero-image-filter: blur(56px);
}
}

@media (min-width: 960px) {
:root {
--vp-home-hero-image-filter: blur(68px);
}
}

/**
* Component: Custom Block
* -------------------------------------------------------------------------- */

:root {
--vp-custom-block-tip-border: transparent;
--vp-custom-block-tip-text: var(--vp-c-text-1);
--vp-custom-block-tip-bg: var(--vp-c-brand-soft);
--vp-custom-block-tip-code-bg: var(--vp-c-brand-soft);
}

/**
* Component: Algolia
* -------------------------------------------------------------------------- */

.DocSearch {
--docsearch-primary-color: var(--vp-c-brand-1) !important;
}

:root {
--vp-nav-logo-height: 32px;
}

/* disable prev/next buttons on all pages */
.pager {
display: none;
}
8 changes: 3 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,15 +1,13 @@
# Libre Solar website

This repository hosts the Libre Solar website (https://libre.solar) built with VuePress.
This repository hosts the Libre Solar website (https://libre.solar) built with [VitePress](https://vitepress.dev/).

You can contribute by cloning the repository to your private GitHub workspace and sending pull-requests with upates you made.

For local deployment run the following commands:
For development run the following commands:

npm install
npm run dev

install [VuePress](https://vuepress.vuejs.org/) and run `yarn docs:dev` in the root directory of this repository. Afterwards, you can see the result in your favourite web browser at `http://localhost:8080`.
npm run docs:dev

## Style Guide

Expand Down
File renamed without changes.
File renamed without changes
File renamed without changes
File renamed without changes
File renamed without changes.
File renamed without changes.
File renamed without changes.
2 changes: 0 additions & 2 deletions docs/.vuepress/.gitignore

This file was deleted.

Binary file removed docs/.vuepress/public/images/cc-by-sa.png
Binary file not shown.
Loading

0 comments on commit b98a12d

Please sign in to comment.