mirror of
https://github.com/infinition/Bjorn.git
synced 2026-02-05 03:31:02 +00:00
Wiki update
This commit is contained in:
251
.github/workflows/reusable-wiki-sync.yml
vendored
251
.github/workflows/reusable-wiki-sync.yml
vendored
@@ -1,251 +0,0 @@
|
||||
name: Central Wiki Sync Logic
|
||||
|
||||
on:
|
||||
workflow_call:
|
||||
inputs:
|
||||
source_repo:
|
||||
required: false
|
||||
type: string
|
||||
default: "infinition/AcidWiki"
|
||||
|
||||
permissions:
|
||||
contents: write
|
||||
pages: write
|
||||
id-token: write
|
||||
|
||||
jobs:
|
||||
core-sync:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout Caller Repository
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Ensure Wiki Directory Exists
|
||||
run: mkdir -p wiki/docs wiki/themes wiki/assets .well-known
|
||||
|
||||
# 1. Onboarding Automatique
|
||||
- name: Create Default Config if Missing
|
||||
run: |
|
||||
if [ ! -f "acidwiki.json" ]; then
|
||||
echo "⚠️ acidwiki.json not found. Creating default configuration..."
|
||||
cat <<EOF > acidwiki.json
|
||||
{
|
||||
"debug": false,
|
||||
"social": {
|
||||
"discord": null,
|
||||
"reddit": null
|
||||
},
|
||||
"buymeacoffee": "https://buymeacoffee.com/infinition"
|
||||
}
|
||||
EOF
|
||||
else
|
||||
echo "✅ acidwiki.json found. Keeping existing configuration."
|
||||
fi
|
||||
|
||||
- name: Sync Core Files from Source
|
||||
env:
|
||||
SOURCE_REPO: ${{ inputs.source_repo }}
|
||||
run: |
|
||||
# A. CLONE DU MASTER
|
||||
echo "⬇️ Cloning engine from $SOURCE_REPO..."
|
||||
git clone --depth 1 --branch main https://github.com/$SOURCE_REPO.git temp_source
|
||||
|
||||
# B. PROTECTION DES ASSETS LOCAUX
|
||||
|
||||
# 1. Protection du Logo
|
||||
if [ -f "wiki/assets/logo.png" ]; then
|
||||
echo "🛡️ Custom logo detected. Protecting local version..."
|
||||
rm -f temp_source/wiki/assets/logo.png
|
||||
fi
|
||||
|
||||
# 2. Protection des Thèmes
|
||||
if [ -d "wiki/themes" ]; then
|
||||
for local_theme in wiki/themes/*.css; do
|
||||
if [ -f "$local_theme" ]; then
|
||||
theme_name=$(basename "$local_theme")
|
||||
if [ -f "temp_source/wiki/themes/$theme_name" ]; then
|
||||
echo "🛡️ Custom theme detected ($theme_name). Keeping local version."
|
||||
rm "temp_source/wiki/themes/$theme_name"
|
||||
fi
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
# 3. Protection Security (Racine & .well-known)
|
||||
if [ -f "security.txt" ]; then
|
||||
echo "🛡️ Custom security.txt detected (root). Keeping local version."
|
||||
rm -f temp_source/security.txt
|
||||
fi
|
||||
if [ -f ".well-known/security.txt" ]; then
|
||||
echo "🛡️ Custom .well-known/security.txt detected. Keeping local version."
|
||||
rm -f temp_source/.well-known/security.txt
|
||||
fi
|
||||
|
||||
# C. COPIE DES FICHIERS (CHEMINS CORRIGÉS)
|
||||
|
||||
# Moteur & Système (Tout est à la racine de la source)
|
||||
cp -fv temp_source/index.html .
|
||||
cp -fv temp_source/manifest.json .
|
||||
cp -fv temp_source/sw.js .
|
||||
cp -fv temp_source/robots.txt . || true
|
||||
cp -fv temp_source/.nojekyll . || true
|
||||
|
||||
# Fichiers Security (S'ils n'ont pas été supprimés par la protection)
|
||||
if [ -f "temp_source/security.txt" ]; then cp -fv temp_source/security.txt .; fi
|
||||
|
||||
# Copie récursive de .well-known s'il existe dans la source
|
||||
if [ -d "temp_source/.well-known" ]; then
|
||||
# On copie le contenu sans écraser ce qui est protégé
|
||||
cp -rn temp_source/.well-known/* .well-known/ || true
|
||||
fi
|
||||
|
||||
# Config Template
|
||||
cp -rv temp_source/wiki/config.js wiki/
|
||||
|
||||
# Thèmes (Safe Copy - vérifie s'il reste des fichiers)
|
||||
if [ -d "temp_source/wiki/themes" ] && [ "$(ls -A temp_source/wiki/themes)" ]; then
|
||||
echo "📦 Copying new themes..."
|
||||
cp -r temp_source/wiki/themes/* wiki/themes/
|
||||
else
|
||||
echo "✅ No new themes to copy."
|
||||
fi
|
||||
|
||||
# Assets (Safe Copy - vérifie s'il reste des fichiers)
|
||||
if [ -d "temp_source/wiki/assets" ] && [ "$(ls -A temp_source/wiki/assets)" ]; then
|
||||
echo "📦 Copying new assets..."
|
||||
cp -r temp_source/wiki/assets/* wiki/assets/
|
||||
else
|
||||
echo "✅ No new assets to copy."
|
||||
fi
|
||||
|
||||
# Nettoyage
|
||||
rm -rf temp_source
|
||||
|
||||
- name: Dynamic Config Injection
|
||||
env:
|
||||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
REPO_FULL: ${{ github.repository }}
|
||||
run: |
|
||||
CONFIG_FILE="wiki/config.js"
|
||||
JSON_FILE="acidwiki.json"
|
||||
MANIFEST_FILE="manifest.json"
|
||||
|
||||
# --- 1. DÉTECTION ---
|
||||
REPO_NAME=$(echo "$REPO_FULL" | awk -F '/' '{print $2}')
|
||||
YEAR=$(date +'%Y')
|
||||
|
||||
TAG_REL=$(gh api repos/$REPO_FULL/releases/latest --jq .tag_name 2>/dev/null || echo "")
|
||||
TAG_LIST=$(gh api repos/$REPO_FULL/tags --jq '.[0].name' 2>/dev/null || echo "")
|
||||
|
||||
LATEST_TAG=""
|
||||
if [[ -n "$TAG_REL" && "$TAG_REL" != *\{* ]]; then
|
||||
LATEST_TAG="$TAG_REL"
|
||||
elif [[ -n "$TAG_LIST" && "$TAG_LIST" != *\{* ]]; then
|
||||
LATEST_TAG="$TAG_LIST"
|
||||
fi
|
||||
|
||||
echo "Repo: $REPO_NAME | Version finale: '$LATEST_TAG'"
|
||||
|
||||
# --- 2. LECTURE JSON ---
|
||||
DISCORD=""
|
||||
REDDIT=""
|
||||
COFFEE="https://buymeacoffee.com/infinition"
|
||||
DEBUG_MODE="false"
|
||||
|
||||
if [ -f "$JSON_FILE" ]; then
|
||||
echo "Loading acidwiki.json..."
|
||||
DISCORD=$(jq -r '.social.discord // empty' $JSON_FILE)
|
||||
REDDIT=$(jq -r '.social.reddit // empty' $JSON_FILE)
|
||||
JSON_COFFEE=$(jq -r '.buymeacoffee // empty' $JSON_FILE)
|
||||
if [ -n "$JSON_COFFEE" ]; then COFFEE=$JSON_COFFEE; fi
|
||||
DEBUG_VAL=$(jq -r '.debug' $JSON_FILE)
|
||||
if [ "$DEBUG_VAL" == "true" ]; then DEBUG_MODE="true"; fi
|
||||
fi
|
||||
|
||||
# --- 3. INJECTION CONFIG JS ---
|
||||
|
||||
# Identité
|
||||
sed -i "s|projectName: \".*\"|projectName: \"${REPO_NAME^^}\"|g" $CONFIG_FILE
|
||||
sed -i "s|projectSubtitle: \".*\"|projectSubtitle: \"${REPO_NAME^^} WIKI\"|g" $CONFIG_FILE
|
||||
sed -i "s|description: \".*\"|description: \"Official Documentation and Wiki for ${REPO_NAME}\"|g" $CONFIG_FILE
|
||||
sed -i "s|repo: \".*\"|repo: \"$REPO_FULL\"|g" $CONFIG_FILE
|
||||
|
||||
# Footer & Logo
|
||||
sed -i "s|footerText: \".*\"|footerText: \"© $YEAR ${REPO_NAME^^} WIKI - All rights reserved\"|g" $CONFIG_FILE
|
||||
sed -i "s|logoPath: \".*\"|logoPath: \"wiki/assets/logo.png\"|g" $CONFIG_FILE
|
||||
sed -i "s|manifestPath: \".*\"|manifestPath: \"manifest.json\"|g" $CONFIG_FILE
|
||||
sed -i "s|debug: false|debug: $DEBUG_MODE|g" $CONFIG_FILE
|
||||
|
||||
# Github & Social
|
||||
sed -i "s|github: \".*\"|github: \"https://github.com/$REPO_FULL\"|g" $CONFIG_FILE
|
||||
sed -i "s|githubLabel: \".*\"|githubLabel: \"${REPO_NAME^^}\"|g" $CONFIG_FILE
|
||||
sed -i "s|buyMeACoffee: \".*\"|buyMeACoffee: \"$COFFEE\"|g" $CONFIG_FILE
|
||||
|
||||
if [ -n "$DISCORD" ]; then sed -i "s|discord: .*|discord: \"$DISCORD\",|g" $CONFIG_FILE
|
||||
else sed -i "s|discord: .*|discord: null,|g" $CONFIG_FILE; fi
|
||||
|
||||
if [ -n "$REDDIT" ]; then sed -i "s|reddit: .*|reddit: \"$REDDIT\",|g" $CONFIG_FILE
|
||||
else sed -i "s|reddit: .*|reddit: null,|g" $CONFIG_FILE; fi
|
||||
|
||||
# Menus & Versioning
|
||||
sed -i "s|top: \[.*|top: [],|g" $CONFIG_FILE
|
||||
sed -i "s|bottom: \[.*|bottom: []|g" $CONFIG_FILE
|
||||
sed -i "s|type: \"github\"|type: \"local\"|g" $CONFIG_FILE
|
||||
|
||||
if [ -n "$LATEST_TAG" ]; then
|
||||
sed -i "s|manualVersion: \".*\"|manualVersion: \"$LATEST_TAG\"|g" $CONFIG_FILE
|
||||
else
|
||||
sed -i "s|manualVersion: \".*\"|manualVersion: \"\"|g" $CONFIG_FILE
|
||||
fi
|
||||
sed -i "s|manualDate: \".*\"|manualDate: \"$(date +'%Y-%m-%d')\"|g" $CONFIG_FILE
|
||||
|
||||
# --- 4. INJECTION MANIFEST PWA ---
|
||||
echo "Injecting Manifest Data..."
|
||||
if [ -f "$MANIFEST_FILE" ]; then
|
||||
jq --arg name "${REPO_NAME^^} WIKI" \
|
||||
--arg short "$REPO_NAME" \
|
||||
--arg desc "Official Documentation and Wiki for $REPO_NAME" \
|
||||
--arg icon "wiki/assets/logo.png" \
|
||||
'.name = $name | .short_name = $short | .description = $desc | .icons[].src = $icon | .shortcuts[].icons[].src = $icon' \
|
||||
$MANIFEST_FILE > manifest.tmp && mv manifest.tmp $MANIFEST_FILE
|
||||
fi
|
||||
|
||||
# --- 5. INJECTION SECURITY.TXT (DYNAMIQUE) ---
|
||||
# Calcule la date d'expiration (+1 an)
|
||||
EXP_DATE=$(date -d "+1 year" -u +"%Y-%m-%dT%H:%M:%S.000Z")
|
||||
|
||||
update_security_file() {
|
||||
local file=$1
|
||||
if [ -f "$file" ]; then
|
||||
echo "Updating $file..."
|
||||
# Remplace l'ancien repo (source) par le nouveau (ex: infinition/AcidWiki -> infinition/Bjorn)
|
||||
sed -i "s|infinition/AcidWiki|$REPO_FULL|g" "$file"
|
||||
# Met à jour la date d'expiration
|
||||
sed -i "s|Expires: .*|Expires: $EXP_DATE|g" "$file"
|
||||
fi
|
||||
}
|
||||
|
||||
update_security_file "security.txt"
|
||||
update_security_file ".well-known/security.txt"
|
||||
|
||||
- name: Commit and Push Changes
|
||||
run: |
|
||||
git config --local user.email "action@github.com"
|
||||
git config --local user.name "GitHub Action"
|
||||
|
||||
# Ajout de tous les fichiers (Système, Contenu, Sécurité)
|
||||
git add index.html wiki/ acidwiki.json manifest.json sw.js robots.txt .nojekyll security.txt .well-known/
|
||||
|
||||
git diff --quiet && git diff --staged --quiet || (git commit -m "chore: update wiki config [skip ci]" && git push)
|
||||
|
||||
- name: Auto-Configure GitHub Pages
|
||||
env:
|
||||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
REPO: ${{ github.repository }}
|
||||
run: |
|
||||
gh api "repos/$REPO/pages" -X POST -F "source[branch]=main" -F "source[path]=/" --silent || true
|
||||
OWNER="${REPO%%/*}"
|
||||
REPO_NAME="${REPO#*/}"
|
||||
gh api "repos/$REPO" -X PATCH -F "homepage=https://$OWNER.github.io/$REPO_NAME/" --silent || true
|
||||
28
.github/workflows/wiki-sync.yml
vendored
28
.github/workflows/wiki-sync.yml
vendored
@@ -1,28 +0,0 @@
|
||||
name: Wiki Sync
|
||||
|
||||
on:
|
||||
# 1. Déclenchement manuel quand tu pushes sur ce repo
|
||||
push:
|
||||
branches: [ main ]
|
||||
paths:
|
||||
- 'wiki/**'
|
||||
- 'acidwiki.json'
|
||||
- '.github/workflows/wiki-sync.yml'
|
||||
|
||||
# 2. Bouton manuel dans l'interface Actions
|
||||
workflow_dispatch:
|
||||
|
||||
# 3. AUTOMATIQUE : Tous les jours à 4h00 du matin (UTC)
|
||||
schedule:
|
||||
- cron: '0 4 * * *'
|
||||
|
||||
permissions:
|
||||
contents: write
|
||||
pages: write
|
||||
id-token: write
|
||||
|
||||
jobs:
|
||||
deploy-wiki:
|
||||
# Appelle le script stocké sur AcidWiki
|
||||
# "@main" signifie qu'il prendra TOUJOURS la dernière version du workflow maître
|
||||
uses: infinition/AcidWiki/.github/workflows/reusable-wiki-sync.yml@main
|
||||
33
.gitignore
vendored
Normal file
33
.gitignore
vendored
Normal file
@@ -0,0 +1,33 @@
|
||||
# OS files
|
||||
.DS_Store
|
||||
Thumbs.db
|
||||
desktop.ini
|
||||
|
||||
# IDE files
|
||||
.vscode/
|
||||
.idea/
|
||||
*.swp
|
||||
*.swo
|
||||
|
||||
# Node.js
|
||||
node_modules/
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
.npm/
|
||||
|
||||
# Project specific
|
||||
.gemini/
|
||||
.env
|
||||
.env.local
|
||||
.env.*.local
|
||||
dist/
|
||||
build/
|
||||
|
||||
# Wiki Content (Keep empty for template)
|
||||
wiki/docs/*
|
||||
!wiki/docs/.gitkeep
|
||||
|
||||
# Wiki Content (Keep empty for template)
|
||||
wiki/docs/*
|
||||
!wiki/docs/.gitkeep
|
||||
4
.well-known/security.txt
Normal file
4
.well-known/security.txt
Normal file
@@ -0,0 +1,4 @@
|
||||
Contact: https://github.com/infinition/Bjorn/issues
|
||||
Expires: 2027-01-24T15:36:48.000Z
|
||||
Preferred-Languages: en, fr
|
||||
Policy: https://github.com/infinition/Bjorn/blob/wiki/SECURITY.md
|
||||
21
LICENSE
Normal file
21
LICENSE
Normal file
@@ -0,0 +1,21 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2026 Infinition
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
8
acidwiki.json
Normal file
8
acidwiki.json
Normal file
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"social": {
|
||||
"discord": "https://discord.gg/B3ZH9taVfT",
|
||||
"reddit": "https://www.reddit.com/r/Bjorn_CyberViking/",
|
||||
"github": "https://github.com/infinition/Bjorn",
|
||||
"buyMeACoffee": "https://buymeacoffee.com/infinition"
|
||||
}
|
||||
}
|
||||
2961
index.html
Normal file
2961
index.html
Normal file
File diff suppressed because it is too large
Load Diff
35
manifest.json
Normal file
35
manifest.json
Normal file
@@ -0,0 +1,35 @@
|
||||
{
|
||||
"name": "Bjorn WIKI",
|
||||
"short_name": "Bjorn",
|
||||
"description": "Official Documentation and Wiki for Bjorn",
|
||||
"start_url": "./index.html",
|
||||
"display": "standalone",
|
||||
"background_color": "#0B0C0E",
|
||||
"theme_color": "#22c55e",
|
||||
"orientation": "any",
|
||||
"icons": [
|
||||
{
|
||||
"src": "wiki/assets/logo.png",
|
||||
"sizes": "192x192",
|
||||
"type": "image/png",
|
||||
"purpose": "any maskable"
|
||||
},
|
||||
{
|
||||
"src": "wiki/assets/logo.png",
|
||||
"sizes": "512x512",
|
||||
"type": "image/png"
|
||||
}
|
||||
],
|
||||
"shortcuts": [
|
||||
{
|
||||
"name": "Search Wiki",
|
||||
"url": "./index.html?search=true",
|
||||
"icons": [
|
||||
{
|
||||
"src": "wiki/assets/logo.png",
|
||||
"sizes": "192x192"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
5
robots.txt
Normal file
5
robots.txt
Normal file
@@ -0,0 +1,5 @@
|
||||
User-agent: *
|
||||
Allow: /
|
||||
|
||||
# Sitemaps (Optionnel, à mettre à jour avec votre URL réelle)
|
||||
Sitemap: https://infinition.github.io/Bjorn/sitemap.xml
|
||||
4
security.txt
Normal file
4
security.txt
Normal file
@@ -0,0 +1,4 @@
|
||||
Contact: https://github.com/infinition/Bjorn/issues
|
||||
Expires: 2027-01-24T15:36:48.000Z
|
||||
Preferred-Languages: en, fr
|
||||
Policy: https://github.com/infinition/Bjorn/blob/wiki/SECURITY.md
|
||||
69
sw.js
Normal file
69
sw.js
Normal file
@@ -0,0 +1,69 @@
|
||||
const CACHE_NAME = 'bjorn-wiki-v2';
|
||||
const STATIC_ASSETS = [
|
||||
'./',
|
||||
'./index.html',
|
||||
'./config.js',
|
||||
'./manifest.json',
|
||||
'./assets/bjorn.png',
|
||||
'https://cdn.tailwindcss.com',
|
||||
'https://unpkg.com/lucide@latest',
|
||||
'https://cdn.jsdelivr.net/npm/marked/marked.min.js',
|
||||
'https://cdnjs.cloudflare.com/ajax/libs/dompurify/3.0.6/purify.min.js',
|
||||
'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/styles/atom-one-dark.min.css',
|
||||
'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/highlight.min.js',
|
||||
'https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;700&family=Inter:wght@400;500;600&display=swap'
|
||||
];
|
||||
|
||||
// Install Event - Cache Static Assets
|
||||
self.addEventListener('install', (event) => {
|
||||
event.waitUntil(
|
||||
caches.open(CACHE_NAME).then((cache) => {
|
||||
console.log('[SW] Caching static assets');
|
||||
return cache.addAll(STATIC_ASSETS);
|
||||
})
|
||||
);
|
||||
self.skipWaiting();
|
||||
});
|
||||
|
||||
// Activate Event - Clean up old caches
|
||||
self.addEventListener('activate', (event) => {
|
||||
event.waitUntil(
|
||||
caches.keys().then((cacheNames) => {
|
||||
return Promise.all(
|
||||
cacheNames.map((cacheName) => {
|
||||
if (cacheName !== CACHE_NAME) {
|
||||
console.log('[SW] Deleting old cache:', cacheName);
|
||||
return caches.delete(cacheName);
|
||||
}
|
||||
})
|
||||
);
|
||||
})
|
||||
);
|
||||
self.clients.claim();
|
||||
});
|
||||
|
||||
// Fetch Event - Stale-While-Revalidate Strategy
|
||||
self.addEventListener('fetch', (event) => {
|
||||
// Skip non-GET requests
|
||||
if (event.request.method !== 'GET') return;
|
||||
|
||||
// Strategy: Stale-While-Revalidate for most assets
|
||||
event.respondWith(
|
||||
caches.open(CACHE_NAME).then((cache) => {
|
||||
return cache.match(event.request).then((response) => {
|
||||
const fetchPromise = fetch(event.request).then((networkResponse) => {
|
||||
// Cache the new response
|
||||
if (networkResponse.ok) {
|
||||
cache.put(event.request, networkResponse.clone());
|
||||
}
|
||||
return networkResponse;
|
||||
}).catch(() => {
|
||||
// If network fails, we already returned the cached response if it exists
|
||||
});
|
||||
|
||||
return response || fetchPromise;
|
||||
});
|
||||
})
|
||||
);
|
||||
});
|
||||
|
||||
BIN
wiki/assets/logo.png
Normal file
BIN
wiki/assets/logo.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 43 KiB |
110
wiki/config.js
Normal file
110
wiki/config.js
Normal file
@@ -0,0 +1,110 @@
|
||||
/**
|
||||
* AcidWiki Configuration (Master Template)
|
||||
* Ce fichier est écrasé dynamiquement par le workflow GitHub Actions.
|
||||
* Ne modifiez pas les valeurs ici pour un projet spécifique, utilisez acidwiki.json.
|
||||
*/
|
||||
const CONFIG = {
|
||||
// Project Information (Sera remplacé par le nom du Repo)
|
||||
projectName: "ACIDWIKI",
|
||||
projectSubtitle: "ACIDWIKI WIKI",
|
||||
description: "Official Documentation and Wiki for AcidWiki",
|
||||
|
||||
// Versioning Settings
|
||||
versioning: {
|
||||
type: "local",
|
||||
manualVersion: "",
|
||||
manualDate: "2026-01-24"
|
||||
},
|
||||
|
||||
// GitHub Repository
|
||||
repo: "infinition/AcidWiki",
|
||||
branch: "main",
|
||||
|
||||
// Theme Settings
|
||||
themes: [
|
||||
{ id: "dark", name: "Dark Mode", file: "wiki/themes/dark.css", isDark: true },
|
||||
{ id: "dim", name: "Dim Mode", file: "wiki/themes/light.css", isDark: true },
|
||||
{ id: "electric-blue", name: "Electric Blue", file: "wiki/themes/electric-blue.css", isDark: true },
|
||||
{ id: "cyberpunk", name: "Cyberpunk", file: "wiki/themes/cyberpunk.css", isDark: true },
|
||||
{ id: "forest", name: "Forest", file: "wiki/themes/forest.css", isDark: true },
|
||||
{ id: "monochrome", name: "Monochrome", file: "wiki/themes/monochrome.css", isDark: true },
|
||||
{ id: "retro-hackers", name: "Retro Hackers", file: "wiki/themes/retro-hackers.css", isDark: true },
|
||||
{ id: "retro-hackers-w", name: "Retro Hackers White", file: "wiki/themes/retro-hackers-w.css", isDark: false },
|
||||
{ id: "retro-acid-burn", name: "Retro Acid Burn", file: "wiki/themes/retro-acid-burn.css", isDark: true },
|
||||
{ id: "paper", name: "Paper", file: "wiki/themes/paper.css", isDark: false },
|
||||
{ id: "solarized-light", name: "Solarized Light", file: "wiki/themes/solarized-light.css", isDark: false },
|
||||
{ id: "nord-light", name: "Nord Light", file: "wiki/themes/nord-light.css", isDark: false },
|
||||
{ id: "paper-sepia", name: "Sepia Paper", file: "wiki/themes/paper-sepia.css", isDark: false },
|
||||
{ id: "paper-cool", name: "Cool Paper", file: "wiki/themes/paper-cool.css", isDark: false },
|
||||
{ id: "retro-irc", name: "Retro IRC", file: "wiki/themes/retro-irc.css", isDark: false },
|
||||
{ id: "nature", name: "Nature", file: "wiki/themes/nature.css", isDark: false },
|
||||
{ id: "glassmorphism", name: "Glassmorphism", file: "wiki/themes/glassmorphism.css", isDark: true }
|
||||
],
|
||||
defaultTheme: "dark",
|
||||
|
||||
// Feature Toggles
|
||||
features: {
|
||||
showChangelog: true,
|
||||
showSearch: true,
|
||||
showSocialBadges: true,
|
||||
showThemeToggle: true,
|
||||
pageTransitions: true,
|
||||
autoCollapseSidebar: false,
|
||||
stickyBreadcrumbs: true,
|
||||
showRootReadme: true,
|
||||
debug: true
|
||||
},
|
||||
|
||||
// Custom Navigation Links (Vides par défaut)
|
||||
links: {
|
||||
top: [],
|
||||
bottom: []
|
||||
},
|
||||
|
||||
// Footer
|
||||
footerText: "© 2026 ACIDWIKI WIKI - All rights reserved",
|
||||
|
||||
// UI Strings
|
||||
ui: {
|
||||
joinUsTitle: ":: JOIN US ::",
|
||||
onThisPageTitle: "On this page",
|
||||
changelogTitle: "Changelog",
|
||||
rootReadmeTitle: "Project Home",
|
||||
searchPlaceholder: "Search (Ctrl+K)...",
|
||||
lastUpdatedText: "Updated",
|
||||
readingTimePrefix: "~",
|
||||
readingTimeSuffix: "min read",
|
||||
noResultsText: "No results found.",
|
||||
noSectionsText: "No sections",
|
||||
fetchingReleasesText: "Fetching GitHub releases...",
|
||||
checkingVersionText: "checking...",
|
||||
initializingText: "Initializing...",
|
||||
themeChangedText: "Theme changed to: ",
|
||||
menuText: "Menu",
|
||||
onThisPageMobile: "On this page"
|
||||
},
|
||||
|
||||
// Logo Settings
|
||||
logoPath: "wiki/assets/logo.png",
|
||||
logoPlaceholder: "https://placehold.co/40x40/111214/22c55e?text=A",
|
||||
|
||||
// PWA & SEO Settings
|
||||
themeColor: "#0B0C0E",
|
||||
accentColor: "#22c55e",
|
||||
manifestPath: "manifest.json",
|
||||
|
||||
// Social Links
|
||||
social: {
|
||||
discord: null,
|
||||
reddit: null,
|
||||
github: "https://github.com/infinition/AcidWiki", // Virgule respectée par le script
|
||||
buyMeACoffee: "https://buymeacoffee.com/infinition"
|
||||
},
|
||||
|
||||
// Badge Labels
|
||||
badges: {
|
||||
discordLabel: "COMMUNITY",
|
||||
redditLabel: "REDDIT",
|
||||
githubLabel: "ACIDWIKI"
|
||||
}
|
||||
};
|
||||
35
wiki/themes/cyberpunk.css
Normal file
35
wiki/themes/cyberpunk.css
Normal file
@@ -0,0 +1,35 @@
|
||||
:root {
|
||||
--bg-body: #0D0221;
|
||||
--bg-sidebar: #190033;
|
||||
--border-color: #FF007F;
|
||||
--text-main: #E0E0E0;
|
||||
--text-heading: #00FFFF;
|
||||
--accent-green: #FF007F;
|
||||
--accent-dim: rgba(255, 0, 127, 0.1);
|
||||
--code-bg: #1A0033;
|
||||
}
|
||||
|
||||
/* Override scrollbar and other elements to use neon pink */
|
||||
::-webkit-scrollbar-thumb {
|
||||
background: linear-gradient(180deg, #FF007F, var(--border-color)) !important;
|
||||
}
|
||||
|
||||
.text-hack-green {
|
||||
color: #FF007F !important;
|
||||
}
|
||||
|
||||
.bg-hack-greenDim {
|
||||
background-color: rgba(255, 0, 127, 0.1) !important;
|
||||
}
|
||||
|
||||
.border-hack-green {
|
||||
border-color: #FF007F !important;
|
||||
}
|
||||
|
||||
.markdown-body a {
|
||||
color: #00FFFF !important;
|
||||
}
|
||||
|
||||
.markdown-body a:hover {
|
||||
border-bottom-color: #00FFFF !important;
|
||||
}
|
||||
15
wiki/themes/dark.css
Normal file
15
wiki/themes/dark.css
Normal file
@@ -0,0 +1,15 @@
|
||||
:root {
|
||||
--bg-body: #0B0C0E;
|
||||
--bg-sidebar: #111214;
|
||||
--border-color: #2A2E35;
|
||||
--text-main: #A0AAB8;
|
||||
--text-heading: #E2E8F0;
|
||||
--accent-green: #22c55e;
|
||||
--accent-dim: rgba(34, 197, 94, 0.1);
|
||||
--code-bg: #1e1e1e;
|
||||
}
|
||||
|
||||
/* Compatibility with tailwind colors if needed */
|
||||
.dark {
|
||||
--accent-green: #22c55e;
|
||||
}
|
||||
28
wiki/themes/electric-blue.css
Normal file
28
wiki/themes/electric-blue.css
Normal file
@@ -0,0 +1,28 @@
|
||||
:root {
|
||||
--bg-body: #050A15;
|
||||
--bg-sidebar: #0A1225;
|
||||
--border-color: #1E2D4A;
|
||||
--text-main: #94A3B8;
|
||||
--text-heading: #F8FAFC;
|
||||
--accent-green: #38BDF8;
|
||||
/* Electric Blue */
|
||||
--accent-dim: rgba(56, 189, 248, 0.1);
|
||||
--code-bg: #0F172A;
|
||||
}
|
||||
|
||||
/* Override scrollbar and other elements to use blue */
|
||||
::-webkit-scrollbar-thumb {
|
||||
background: linear-gradient(180deg, #38BDF8, var(--border-color)) !important;
|
||||
}
|
||||
|
||||
.text-hack-green {
|
||||
color: #38BDF8 !important;
|
||||
}
|
||||
|
||||
.bg-hack-greenDim {
|
||||
background-color: rgba(56, 189, 248, 0.1) !important;
|
||||
}
|
||||
|
||||
.border-hack-green {
|
||||
border-color: #38BDF8 !important;
|
||||
}
|
||||
27
wiki/themes/forest.css
Normal file
27
wiki/themes/forest.css
Normal file
@@ -0,0 +1,27 @@
|
||||
:root {
|
||||
--bg-body: #1B261B;
|
||||
--bg-sidebar: #243024;
|
||||
--border-color: #3E523E;
|
||||
--text-main: #D1D5D1;
|
||||
--text-heading: #A7C957;
|
||||
--accent-green: #6A994E;
|
||||
--accent-dim: rgba(106, 153, 78, 0.1);
|
||||
--code-bg: #2D3A2D;
|
||||
}
|
||||
|
||||
/* Override scrollbar and other elements */
|
||||
::-webkit-scrollbar-thumb {
|
||||
background: linear-gradient(180deg, #6A994E, var(--border-color)) !important;
|
||||
}
|
||||
|
||||
.text-hack-green {
|
||||
color: #6A994E !important;
|
||||
}
|
||||
|
||||
.bg-hack-greenDim {
|
||||
background-color: rgba(106, 153, 78, 0.1) !important;
|
||||
}
|
||||
|
||||
.border-hack-green {
|
||||
border-color: #6A994E !important;
|
||||
}
|
||||
55
wiki/themes/glassmorphism.css
Normal file
55
wiki/themes/glassmorphism.css
Normal file
@@ -0,0 +1,55 @@
|
||||
:root {
|
||||
--bg-body: #0f172a;
|
||||
--bg-sidebar: rgba(30, 41, 59, 0.7);
|
||||
--border-color: rgba(255, 255, 255, 0.1);
|
||||
--text-main: #e2e8f0;
|
||||
--text-heading: #f8fafc;
|
||||
--accent-green: #38bdf8;
|
||||
--accent-dim: rgba(56, 189, 248, 0.1);
|
||||
--code-bg: rgba(15, 23, 42, 0.8);
|
||||
}
|
||||
|
||||
/* Glassmorphism theme specific overrides */
|
||||
body {
|
||||
background: radial-gradient(circle at top left, #1e293b, #0f172a);
|
||||
background-attachment: fixed;
|
||||
}
|
||||
|
||||
#sidebar,
|
||||
#mobile-toc-sidebar {
|
||||
background: rgba(30, 41, 59, 0.6) !important;
|
||||
backdrop-filter: blur(12px);
|
||||
-webkit-backdrop-filter: blur(12px);
|
||||
border-right: 1px solid rgba(255, 255, 255, 0.1);
|
||||
}
|
||||
|
||||
#markdown-viewer {
|
||||
background: rgba(30, 41, 59, 0.4);
|
||||
backdrop-filter: blur(8px);
|
||||
-webkit-backdrop-filter: blur(8px);
|
||||
border: 1px solid rgba(255, 255, 255, 0.05);
|
||||
border-radius: 16px;
|
||||
padding: 2rem;
|
||||
box-shadow: 0 8px 32px 0 rgba(0, 0, 0, 0.37);
|
||||
}
|
||||
|
||||
.nav-link.active {
|
||||
background: rgba(56, 189, 248, 0.2) !important;
|
||||
border-left: 4px solid #38bdf8 !important;
|
||||
color: #38bdf8 !important;
|
||||
box-shadow: 0 0 15px rgba(56, 189, 248, 0.3);
|
||||
}
|
||||
|
||||
.markdown-body a {
|
||||
color: #38bdf8;
|
||||
text-shadow: 0 0 8px rgba(56, 189, 248, 0.5);
|
||||
}
|
||||
|
||||
::-webkit-scrollbar-thumb {
|
||||
background: rgba(255, 255, 255, 0.1) !important;
|
||||
border-radius: 10px;
|
||||
}
|
||||
|
||||
::-webkit-scrollbar-thumb:hover {
|
||||
background: rgba(255, 255, 255, 0.2) !important;
|
||||
}
|
||||
32
wiki/themes/light.css
Normal file
32
wiki/themes/light.css
Normal file
@@ -0,0 +1,32 @@
|
||||
:root {
|
||||
--bg-body: #1E293B;
|
||||
/* Slate 800 */
|
||||
--bg-sidebar: #0F172A;
|
||||
/* Slate 900 */
|
||||
--border-color: #334155;
|
||||
/* Slate 700 */
|
||||
--text-main: #94A3B8;
|
||||
/* Slate 400 */
|
||||
--text-heading: #F1F5F9;
|
||||
/* Slate 100 */
|
||||
--accent-green: #10B981;
|
||||
/* Emerald 500 */
|
||||
--accent-dim: rgba(16, 185, 129, 0.1);
|
||||
--code-bg: #020617;
|
||||
/* Slate 950 */
|
||||
}
|
||||
|
||||
/* Compatibility with tailwind colors if needed */
|
||||
.dark {
|
||||
--accent-green: #10B981;
|
||||
}
|
||||
|
||||
/* Specific overrides for Dim mode to ensure readability */
|
||||
.markdown-body blockquote {
|
||||
background: rgba(16, 185, 129, 0.05) !important;
|
||||
border-left-color: #10B981 !important;
|
||||
}
|
||||
|
||||
.text-hack-green {
|
||||
color: #10B981 !important;
|
||||
}
|
||||
27
wiki/themes/monochrome.css
Normal file
27
wiki/themes/monochrome.css
Normal file
@@ -0,0 +1,27 @@
|
||||
:root {
|
||||
--bg-body: #121212;
|
||||
--bg-sidebar: #1E1E1E;
|
||||
--border-color: #333333;
|
||||
--text-main: #BBBBBB;
|
||||
--text-heading: #FFFFFF;
|
||||
--accent-green: #FFFFFF;
|
||||
--accent-dim: rgba(255, 255, 255, 0.1);
|
||||
--code-bg: #000000;
|
||||
}
|
||||
|
||||
/* Override scrollbar and other elements */
|
||||
::-webkit-scrollbar-thumb {
|
||||
background: linear-gradient(180deg, #FFFFFF, var(--border-color)) !important;
|
||||
}
|
||||
|
||||
.text-hack-green {
|
||||
color: #FFFFFF !important;
|
||||
}
|
||||
|
||||
.bg-hack-greenDim {
|
||||
background-color: rgba(255, 255, 255, 0.1) !important;
|
||||
}
|
||||
|
||||
.border-hack-green {
|
||||
border-color: #FFFFFF !important;
|
||||
}
|
||||
52
wiki/themes/nature.css
Normal file
52
wiki/themes/nature.css
Normal file
@@ -0,0 +1,52 @@
|
||||
:root {
|
||||
--bg-body: #f7f3e9;
|
||||
--bg-sidebar: #e8e1d1;
|
||||
--border-color: #d1c7b1;
|
||||
--text-main: #3e442b;
|
||||
--text-heading: #2d3319;
|
||||
--accent-green: #606c38;
|
||||
--accent-dim: rgba(96, 108, 56, 0.1);
|
||||
--code-bg: #fefae0;
|
||||
}
|
||||
|
||||
/* Nature theme specific overrides */
|
||||
body {
|
||||
background-color: var(--bg-body);
|
||||
color: var(--text-main);
|
||||
}
|
||||
|
||||
.markdown-body h1,
|
||||
.markdown-body h2,
|
||||
.markdown-body h3 {
|
||||
color: #283618;
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.markdown-body a {
|
||||
color: #bc6c25;
|
||||
}
|
||||
|
||||
.markdown-body a:hover {
|
||||
border-bottom-color: #dda15e;
|
||||
}
|
||||
|
||||
#sidebar,
|
||||
#mobile-toc-sidebar {
|
||||
background-color: #e8e1d1 !important;
|
||||
border-right: 1px solid #d1c7b1;
|
||||
}
|
||||
|
||||
.nav-link.active {
|
||||
background-color: rgba(96, 108, 56, 0.15) !important;
|
||||
border-left-color: #606c38 !important;
|
||||
color: #283618 !important;
|
||||
}
|
||||
|
||||
::-webkit-scrollbar-thumb {
|
||||
background: #dda15e !important;
|
||||
}
|
||||
|
||||
.markdown-body blockquote {
|
||||
background: #fefae0;
|
||||
border-left-color: #606c38;
|
||||
}
|
||||
25
wiki/themes/nord-light.css
Normal file
25
wiki/themes/nord-light.css
Normal file
@@ -0,0 +1,25 @@
|
||||
:root {
|
||||
--bg-body: #eceff4;
|
||||
--bg-sidebar: #e5e9f0;
|
||||
--border-color: #d8dee9;
|
||||
--text-main: #4c566a;
|
||||
--text-heading: #2e3440;
|
||||
--accent-green: #88c0d0;
|
||||
--accent-dim: rgba(136, 192, 208, 0.1);
|
||||
--code-bg: #d8dee9;
|
||||
}
|
||||
|
||||
/* Nord Light specific overrides */
|
||||
.markdown-body a {
|
||||
color: #5e81ac;
|
||||
}
|
||||
|
||||
.nav-link.active {
|
||||
background-color: rgba(136, 192, 208, 0.1) !important;
|
||||
border-left-color: #88c0d0 !important;
|
||||
color: #5e81ac !important;
|
||||
}
|
||||
|
||||
::-webkit-scrollbar-thumb {
|
||||
background: #d8dee9 !important;
|
||||
}
|
||||
25
wiki/themes/paper-cool.css
Normal file
25
wiki/themes/paper-cool.css
Normal file
@@ -0,0 +1,25 @@
|
||||
:root {
|
||||
--bg-body: #e8f1f2;
|
||||
--bg-sidebar: #d1e3e5;
|
||||
--border-color: #b8d0d2;
|
||||
--text-main: #2d4a4d;
|
||||
--text-heading: #1a3033;
|
||||
--accent-green: #0081a7;
|
||||
--accent-dim: rgba(0, 129, 167, 0.1);
|
||||
--code-bg: #d9e8ea;
|
||||
}
|
||||
|
||||
/* Cool Paper specific overrides */
|
||||
.markdown-body a {
|
||||
color: #0081a7;
|
||||
}
|
||||
|
||||
.nav-link.active {
|
||||
background-color: rgba(0, 129, 167, 0.1) !important;
|
||||
border-left-color: #0081a7 !important;
|
||||
color: #2d4a4d !important;
|
||||
}
|
||||
|
||||
::-webkit-scrollbar-thumb {
|
||||
background: #b8d0d2 !important;
|
||||
}
|
||||
25
wiki/themes/paper-sepia.css
Normal file
25
wiki/themes/paper-sepia.css
Normal file
@@ -0,0 +1,25 @@
|
||||
:root {
|
||||
--bg-body: #e3d5b8;
|
||||
--bg-sidebar: #d4c3a1;
|
||||
--border-color: #c4b28f;
|
||||
--text-main: #4a3a2a;
|
||||
--text-heading: #2d241a;
|
||||
--accent-green: #8b5e34;
|
||||
--accent-dim: rgba(139, 94, 52, 0.1);
|
||||
--code-bg: #dcd0b0;
|
||||
}
|
||||
|
||||
/* Sepia Paper specific overrides */
|
||||
.markdown-body a {
|
||||
color: #8b5e34;
|
||||
}
|
||||
|
||||
.nav-link.active {
|
||||
background-color: rgba(139, 94, 52, 0.1) !important;
|
||||
border-left-color: #8b5e34 !important;
|
||||
color: #4a3a2a !important;
|
||||
}
|
||||
|
||||
::-webkit-scrollbar-thumb {
|
||||
background: #c4b28f !important;
|
||||
}
|
||||
54
wiki/themes/paper.css
Normal file
54
wiki/themes/paper.css
Normal file
@@ -0,0 +1,54 @@
|
||||
:root {
|
||||
--bg-body: #fdfcf0;
|
||||
--bg-sidebar: #f4f1ea;
|
||||
--border-color: #e6e2d3;
|
||||
--text-main: #444444;
|
||||
--text-heading: #222222;
|
||||
--accent-green: #d4a373;
|
||||
--accent-dim: rgba(212, 163, 115, 0.1);
|
||||
--code-bg: #f8f5ed;
|
||||
}
|
||||
|
||||
/* Light theme specific overrides */
|
||||
body {
|
||||
background-color: var(--bg-body);
|
||||
color: var(--text-main);
|
||||
}
|
||||
|
||||
.markdown-body h1,
|
||||
.markdown-body h2,
|
||||
.markdown-body h3 {
|
||||
color: var(--text-heading);
|
||||
}
|
||||
|
||||
.markdown-body a {
|
||||
color: #bc6c25;
|
||||
}
|
||||
|
||||
.markdown-body a:hover {
|
||||
border-bottom-color: #bc6c25;
|
||||
}
|
||||
|
||||
#sidebar,
|
||||
#mobile-toc-sidebar {
|
||||
background-color: var(--bg-sidebar) !important;
|
||||
border-color: var(--border-color);
|
||||
}
|
||||
|
||||
.nav-link:hover {
|
||||
background-color: rgba(0, 0, 0, 0.05);
|
||||
}
|
||||
|
||||
.nav-link.active {
|
||||
background-color: var(--accent-dim) !important;
|
||||
border-left-color: var(--accent-green) !important;
|
||||
color: #bc6c25 !important;
|
||||
}
|
||||
|
||||
::-webkit-scrollbar-thumb {
|
||||
background: var(--border-color) !important;
|
||||
}
|
||||
|
||||
::-webkit-scrollbar-thumb:hover {
|
||||
background: var(--accent-green) !important;
|
||||
}
|
||||
106
wiki/themes/retro-acid-burn.css
Normal file
106
wiki/themes/retro-acid-burn.css
Normal file
@@ -0,0 +1,106 @@
|
||||
@import url('https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;700&display=swap');
|
||||
|
||||
:root {
|
||||
--bg-body: #000000;
|
||||
--bg-sidebar: #050505;
|
||||
--border-color: #00ff41;
|
||||
--text-main: #00ff41;
|
||||
--text-heading: #d4ff00;
|
||||
--accent-green: #00ff41;
|
||||
--accent-dim: rgba(0, 255, 65, 0.1);
|
||||
--code-bg: #0a0a0a;
|
||||
|
||||
/* Acid Burn Specific */
|
||||
--acid-yellow: #d4ff00;
|
||||
--acid-green: #00ff41;
|
||||
}
|
||||
|
||||
/* --- PHOSPHOR GLOW --- */
|
||||
body {
|
||||
font-family: 'JetBrains Mono', monospace !important;
|
||||
background-color: #000 !important;
|
||||
color: var(--text-main) !important;
|
||||
text-shadow: 0 0 5px rgba(0, 255, 65, 0.5);
|
||||
}
|
||||
|
||||
/* --- SCANLINES (Static but intense) --- */
|
||||
body::after {
|
||||
content: " ";
|
||||
display: block;
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
bottom: 0;
|
||||
right: 0;
|
||||
background: linear-gradient(rgba(18, 16, 16, 0) 50%, rgba(0, 0, 0, 0.25) 50%);
|
||||
z-index: 9999;
|
||||
background-size: 100% 4px;
|
||||
pointer-events: none;
|
||||
opacity: 0.3;
|
||||
}
|
||||
|
||||
/* --- TYPOGRAPHY --- */
|
||||
h1,
|
||||
h2,
|
||||
h3,
|
||||
h4,
|
||||
h5,
|
||||
h6 {
|
||||
color: var(--acid-yellow) !important;
|
||||
text-shadow: 0 0 10px var(--acid-yellow);
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 2px;
|
||||
}
|
||||
|
||||
.markdown-body h1 {
|
||||
border-bottom-color: var(--acid-yellow) !important;
|
||||
}
|
||||
|
||||
.markdown-body strong {
|
||||
color: #fff !important;
|
||||
text-shadow: 0 0 8px #fff;
|
||||
}
|
||||
|
||||
.markdown-body a {
|
||||
color: var(--acid-yellow) !important;
|
||||
text-decoration: underline;
|
||||
text-underline-offset: 4px;
|
||||
}
|
||||
|
||||
.markdown-body a:hover {
|
||||
color: #fff !important;
|
||||
text-shadow: 0 0 10px var(--acid-yellow);
|
||||
}
|
||||
|
||||
/* --- UI OVERRIDES --- */
|
||||
#sidebar,
|
||||
#mobile-toc-sidebar {
|
||||
background-color: #050505 !important;
|
||||
border-right: 2px solid var(--accent-green);
|
||||
}
|
||||
|
||||
.nav-link.active {
|
||||
background-color: rgba(0, 255, 65, 0.2) !important;
|
||||
border-left: 4px solid var(--accent-green) !important;
|
||||
color: #fff !important;
|
||||
}
|
||||
|
||||
.nav-link:hover {
|
||||
color: #fff !important;
|
||||
background-color: rgba(0, 255, 65, 0.1);
|
||||
}
|
||||
|
||||
::-webkit-scrollbar-thumb {
|
||||
background: var(--accent-green) !important;
|
||||
box-shadow: 0 0 10px var(--accent-green);
|
||||
}
|
||||
|
||||
/* --- CODE BLOCKS --- */
|
||||
.markdown-body pre {
|
||||
border: 1px solid var(--accent-green) !important;
|
||||
box-shadow: 0 0 15px rgba(0, 255, 65, 0.2);
|
||||
}
|
||||
|
||||
.markdown-body code {
|
||||
color: var(--acid-yellow) !important;
|
||||
}
|
||||
130
wiki/themes/retro-hackers-w.css
Normal file
130
wiki/themes/retro-hackers-w.css
Normal file
@@ -0,0 +1,130 @@
|
||||
@import url('https://fonts.googleapis.com/css2?family=Cinzel:wght@400;700&family=JetBrains+Mono:wght@400;700&display=swap');
|
||||
|
||||
:root {
|
||||
--bg-body: #050505;
|
||||
--bg-sidebar: rgba(5, 5, 5, 0.8);
|
||||
--border-color: #13aff0;
|
||||
--text-main: #80ff80;
|
||||
--text-heading: #13aff0;
|
||||
--accent-green: #0f0;
|
||||
--accent-dim: rgba(0, 255, 0, 0.1);
|
||||
--code-bg: #000;
|
||||
|
||||
/* Hacker Specific */
|
||||
--neon-blue: #13aff0;
|
||||
--neon-orange: #FF6B00;
|
||||
--neon-purple: #bd00ff;
|
||||
}
|
||||
|
||||
/* --- THE 3D GRID --- */
|
||||
body::before {
|
||||
content: "";
|
||||
position: fixed;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
transform: translate(-50%, -50%) perspective(600px) rotateX(60deg);
|
||||
width: 300vw;
|
||||
height: 300vh;
|
||||
background-image:
|
||||
linear-gradient(rgba(0, 243, 255, 0.3) 1px, transparent 1px),
|
||||
linear-gradient(90deg, rgba(0, 243, 255, 0.3) 1px, transparent 1px);
|
||||
background-size: 60px 60px;
|
||||
animation: grid-scroll 11s linear infinite;
|
||||
z-index: -1;
|
||||
pointer-events: none;
|
||||
-webkit-mask-image: linear-gradient(to top, rgba(0, 0, 0, 1) 0%, rgba(0, 0, 0, 0) 80%);
|
||||
mask-image: linear-gradient(to top, rgba(0, 0, 0, 1) 0%, rgba(0, 0, 0, 0) 80%);
|
||||
}
|
||||
|
||||
@keyframes grid-scroll {
|
||||
0% {
|
||||
background-position: 0 0;
|
||||
}
|
||||
|
||||
100% {
|
||||
background-position: 0 60px;
|
||||
}
|
||||
}
|
||||
|
||||
/* --- SCANLINES --- */
|
||||
body::after {
|
||||
content: " ";
|
||||
display: block;
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
bottom: 0;
|
||||
right: 0;
|
||||
background:
|
||||
linear-gradient(rgba(18, 16, 16, 0) 50%, rgba(0, 0, 0, 0.1) 50%),
|
||||
linear-gradient(90deg, rgba(255, 0, 0, 0.02), rgba(0, 255, 0, 0.01), rgba(0, 0, 255, 0.02));
|
||||
z-index: 9999;
|
||||
background-size: 100% 3px, 3px 100%;
|
||||
pointer-events: none;
|
||||
opacity: 0.4;
|
||||
}
|
||||
|
||||
/* --- TYPOGRAPHY --- */
|
||||
body {
|
||||
font-family: 'JetBrains Mono', monospace !important;
|
||||
}
|
||||
|
||||
h1,
|
||||
h2,
|
||||
h3,
|
||||
h4,
|
||||
h5,
|
||||
h6 {
|
||||
font-family: 'Cinzel', serif !important;
|
||||
text-transform: uppercase;
|
||||
text-shadow: 0 0 10px var(--neon-blue);
|
||||
}
|
||||
|
||||
.markdown-body h1 {
|
||||
color: var(--neon-blue) !important;
|
||||
border-bottom-color: var(--neon-blue) !important;
|
||||
}
|
||||
|
||||
.markdown-body h2 {
|
||||
color: var(--neon-orange) !important;
|
||||
text-shadow: 0 0 10px var(--neon-orange);
|
||||
}
|
||||
|
||||
.markdown-body h3 {
|
||||
color: var(--neon-purple) !important;
|
||||
text-shadow: 0 0 10px var(--neon-purple);
|
||||
}
|
||||
|
||||
.markdown-body strong {
|
||||
color: #fff !important;
|
||||
text-shadow: 0 0 8px rgba(255, 255, 255, 0.8);
|
||||
}
|
||||
|
||||
.markdown-body a {
|
||||
color: var(--neon-purple) !important;
|
||||
border-bottom: 1px dashed var(--neon-purple);
|
||||
}
|
||||
|
||||
.markdown-body a:hover {
|
||||
color: #fff !important;
|
||||
text-shadow: 0 0 5px var(--neon-purple);
|
||||
border-bottom-style: solid;
|
||||
}
|
||||
|
||||
/* --- UI OVERRIDES --- */
|
||||
#sidebar,
|
||||
#mobile-toc-sidebar {
|
||||
background-color: var(--bg-sidebar) !important;
|
||||
backdrop-filter: blur(10px);
|
||||
}
|
||||
|
||||
.nav-link.active {
|
||||
background-color: rgba(19, 175, 240, 0.2) !important;
|
||||
border-left-color: var(--neon-blue) !important;
|
||||
color: var(--neon-blue) !important;
|
||||
}
|
||||
|
||||
::-webkit-scrollbar-thumb {
|
||||
background: linear-gradient(180deg, var(--neon-blue), #000) !important;
|
||||
border: 1px solid var(--neon-blue);
|
||||
}
|
||||
149
wiki/themes/retro-hackers.css
Normal file
149
wiki/themes/retro-hackers.css
Normal file
@@ -0,0 +1,149 @@
|
||||
@import url('https://fonts.googleapis.com/css2?family=Cinzel:wght@400;700&family=JetBrains+Mono:wght@400;700&display=swap');
|
||||
|
||||
:root {
|
||||
--bg-body: #050505;
|
||||
--bg-sidebar: rgba(5, 5, 5, 0.8);
|
||||
--border-color: #13aff0;
|
||||
--text-main: #80ff80;
|
||||
--text-heading: #13aff0;
|
||||
--accent-green: #0f0;
|
||||
--accent-dim: rgba(0, 255, 0, 0.1);
|
||||
--code-bg: #000;
|
||||
|
||||
/* Hacker Specific */
|
||||
--neon-blue: #13aff0;
|
||||
--neon-orange: #FF6B00;
|
||||
--neon-purple: #bd00ff;
|
||||
}
|
||||
|
||||
/* --- THE 3D GRID --- */
|
||||
body::before {
|
||||
content: "";
|
||||
position: fixed;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
transform: translate(-50%, -50%) perspective(600px) rotateX(60deg);
|
||||
width: 300vw;
|
||||
height: 300vh;
|
||||
background-image:
|
||||
linear-gradient(rgba(0, 243, 255, 0.5) 1px, transparent 1px),
|
||||
linear-gradient(90deg, rgba(0, 243, 255, 0.5) 1px, transparent 1px);
|
||||
background-size: 60px 60px;
|
||||
animation: grid-scroll 11s linear infinite;
|
||||
z-index: -1;
|
||||
pointer-events: none;
|
||||
-webkit-mask-image: linear-gradient(to top, rgba(0, 0, 0, 1) 0%, rgba(0, 0, 0, 0) 80%);
|
||||
mask-image: linear-gradient(to top, rgba(0, 0, 0, 1) 0%, rgba(0, 0, 0, 0) 80%);
|
||||
}
|
||||
|
||||
@keyframes grid-scroll {
|
||||
0% {
|
||||
background-position: 0 0;
|
||||
}
|
||||
|
||||
100% {
|
||||
background-position: 0 60px;
|
||||
}
|
||||
}
|
||||
|
||||
/* --- TRANSPARENCY OVERRIDES --- */
|
||||
#scroll-container,
|
||||
main,
|
||||
.bg-hack-bg,
|
||||
.bg-hack-sidebar,
|
||||
#markdown-viewer {
|
||||
background-color: transparent !important;
|
||||
}
|
||||
|
||||
/* Sidebar needs some background for readability but should be semi-transparent */
|
||||
#sidebar,
|
||||
#mobile-toc-sidebar {
|
||||
background-color: rgba(5, 5, 5, 0.85) !important;
|
||||
backdrop-filter: blur(8px);
|
||||
border-right: 1px solid var(--neon-blue);
|
||||
}
|
||||
|
||||
/* Content area readability - using a very subtle overlay if needed, but keeping it transparent as requested */
|
||||
#markdown-viewer {
|
||||
padding: 2rem;
|
||||
border-radius: 12px;
|
||||
border: 1px solid rgba(19, 175, 240, 0.1);
|
||||
}
|
||||
|
||||
/* --- SCANLINES --- */
|
||||
body::after {
|
||||
content: " ";
|
||||
display: block;
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
bottom: 0;
|
||||
right: 0;
|
||||
background:
|
||||
linear-gradient(rgba(18, 16, 16, 0) 50%, rgba(0, 0, 0, 0.15) 50%),
|
||||
linear-gradient(90deg, rgba(255, 0, 0, 0.03), rgba(0, 255, 0, 0.01), rgba(0, 0, 255, 0.03));
|
||||
z-index: 9999;
|
||||
background-size: 100% 3px, 3px 100%;
|
||||
pointer-events: none;
|
||||
opacity: 0.6;
|
||||
}
|
||||
|
||||
/* --- TYPOGRAPHY --- */
|
||||
body {
|
||||
font-family: 'JetBrains Mono', monospace !important;
|
||||
background-color: #050505 !important;
|
||||
}
|
||||
|
||||
h1,
|
||||
h2,
|
||||
h3,
|
||||
h4,
|
||||
h5,
|
||||
h6 {
|
||||
font-family: 'Cinzel', serif !important;
|
||||
text-transform: uppercase;
|
||||
text-shadow: 0 0 10px var(--neon-blue);
|
||||
}
|
||||
|
||||
.markdown-body h1 {
|
||||
color: var(--neon-blue) !important;
|
||||
border-bottom-color: var(--neon-blue) !important;
|
||||
}
|
||||
|
||||
.markdown-body h2 {
|
||||
color: var(--neon-orange) !important;
|
||||
text-shadow: 0 0 10px var(--neon-orange);
|
||||
}
|
||||
|
||||
.markdown-body h3 {
|
||||
color: var(--neon-purple) !important;
|
||||
text-shadow: 0 0 10px var(--neon-purple);
|
||||
}
|
||||
|
||||
.markdown-body strong {
|
||||
color: #fff !important;
|
||||
text-shadow: 0 0 8px rgba(255, 255, 255, 0.8);
|
||||
}
|
||||
|
||||
.markdown-body a {
|
||||
color: var(--neon-purple) !important;
|
||||
border-bottom: 1px dashed var(--neon-purple);
|
||||
}
|
||||
|
||||
.markdown-body a:hover {
|
||||
color: #fff !important;
|
||||
text-shadow: 0 0 5px var(--neon-purple);
|
||||
border-bottom-style: solid;
|
||||
}
|
||||
|
||||
/* --- UI OVERRIDES --- */
|
||||
.nav-link.active {
|
||||
background-color: rgba(19, 175, 240, 0.2) !important;
|
||||
border-left-color: var(--neon-blue) !important;
|
||||
color: var(--neon-blue) !important;
|
||||
}
|
||||
|
||||
::-webkit-scrollbar-thumb {
|
||||
background: linear-gradient(180deg, var(--neon-blue), #000) !important;
|
||||
border: 1px solid var(--neon-blue);
|
||||
}
|
||||
70
wiki/themes/retro-irc.css
Normal file
70
wiki/themes/retro-irc.css
Normal file
@@ -0,0 +1,70 @@
|
||||
:root {
|
||||
--bg-body: #ffffff;
|
||||
--bg-sidebar: #f0f0f0;
|
||||
--border-color: #c0c0c0;
|
||||
--text-main: #000000;
|
||||
--text-heading: #000080;
|
||||
--accent-green: #008000;
|
||||
--accent-dim: rgba(0, 128, 0, 0.1);
|
||||
--code-bg: #ffffff;
|
||||
}
|
||||
|
||||
/* Retro IRC specific overrides */
|
||||
body {
|
||||
font-family: "Fixedsys", "Courier New", monospace !important;
|
||||
background-color: var(--bg-body);
|
||||
color: var(--text-main);
|
||||
}
|
||||
|
||||
.markdown-body h1,
|
||||
.markdown-body h2,
|
||||
.markdown-body h3 {
|
||||
color: #000080;
|
||||
font-weight: bold;
|
||||
border-bottom: 2px solid #000080;
|
||||
}
|
||||
|
||||
.markdown-body a {
|
||||
color: #0000ff;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.markdown-body a:hover {
|
||||
color: #ff0000;
|
||||
}
|
||||
|
||||
#sidebar,
|
||||
#mobile-toc-sidebar {
|
||||
background-color: #c0c0c0 !important;
|
||||
border-right: 2px solid #808080;
|
||||
}
|
||||
|
||||
.nav-link {
|
||||
color: #000 !important;
|
||||
border: 1px solid transparent;
|
||||
}
|
||||
|
||||
.nav-link:hover {
|
||||
background-color: #000080 !important;
|
||||
color: #fff !important;
|
||||
}
|
||||
|
||||
.nav-link.active {
|
||||
background-color: #000080 !important;
|
||||
color: #fff !important;
|
||||
border-left: 4px solid #ff0000 !important;
|
||||
}
|
||||
|
||||
::-webkit-scrollbar-thumb {
|
||||
background: #808080 !important;
|
||||
border: 1px solid #ffffff;
|
||||
}
|
||||
|
||||
.markdown-body pre {
|
||||
border: 1px solid #808080 !important;
|
||||
background-color: #f0f0f0 !important;
|
||||
}
|
||||
|
||||
.markdown-body code {
|
||||
color: #800000 !important;
|
||||
}
|
||||
30
wiki/themes/solarized-light.css
Normal file
30
wiki/themes/solarized-light.css
Normal file
@@ -0,0 +1,30 @@
|
||||
:root {
|
||||
--bg-body: #fdf6e3;
|
||||
--bg-sidebar: #eee8d5;
|
||||
--border-color: #d5c4a1;
|
||||
--text-main: #657b83;
|
||||
--text-heading: #073642;
|
||||
--accent-green: #859900;
|
||||
--accent-dim: rgba(133, 153, 0, 0.1);
|
||||
--code-bg: #eee8d5;
|
||||
}
|
||||
|
||||
/* Solarized Light specific overrides */
|
||||
.markdown-body a {
|
||||
color: #268bd2;
|
||||
}
|
||||
|
||||
.markdown-body blockquote {
|
||||
background: #eee8d5;
|
||||
border-left-color: #859900;
|
||||
}
|
||||
|
||||
.nav-link.active {
|
||||
background-color: rgba(133, 153, 0, 0.1) !important;
|
||||
border-left-color: #859900 !important;
|
||||
color: #859900 !important;
|
||||
}
|
||||
|
||||
::-webkit-scrollbar-thumb {
|
||||
background: #93a1a1 !important;
|
||||
}
|
||||
Reference in New Issue
Block a user