Tucker McKnight
some work on using the design-board page style
0
0
import { type ReposConfiguration } from "../../src/configTypes.ts"
export const NavHelper = (reposConfig: ReposConfiguration, slugify: Function, repoName: string, branchName: string) => {
const reposPath = reposConfig.baseUrl
const rootPath = `${reposPath}/${slugify(repoName)}/branches`
return {
rootPath: () => {
if (reposPath === "") {
return "/"
}
else {
return reposPath
}
},
repoHomePath: () => {
return `${rootPath}/${slugify(reposConfig.repos[repoName].defaultBranch)}`
},
repoCurrentBranchHome: () => rootPath,
repoCurrentBranchFiles: () => {
return `${rootPath}/files`
},
repoCurrentBranchCommits: () => `${rootPath}/commits`,
repoCurrentBranchBranches: () => `${rootPath}/branches`,
}
}
0
0
import { NavHelper } from './helpers/nav.ts'
import { type ReposConfiguration } from '../src/configTypes.ts'
export default (reposConfig: ReposConfiguration, slugify: Function) => {
return (data) => {
const nav = NavHelper(reposConfig, slugify, data.currentRepo.name, data.currentBranch.name)
return `
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>${data.currentRepo.name}</title>
<link rel="stylesheet" href="/css/design-board.css">
</head>
<body>
<div class="container">
<div class="row">
<div class="col">
<nav class="navbar navbar-expand">
<ul class="navbar-nav flex-wrap">
<li class="nav-item">
<a class="nav-link" href="${nav.rootPath()}">← All repositories</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">${data.currentRepo.name}</a>
</li>
</ul>
</nav>
</div>
</div>
<div class="row">
<div class="col">
<nav class="navbar navbar-expand justify-content-center">
<ul class="navbar-nav flex-wrap">
<li class="nav-item">
<a class="nav-link active" aria-current="page" href="${nav.repoCurrentBranchHome()}">Home</a>
</li>
<li class="nav-item">
<a class="nav-link" href="${nav.repoCurrentBranchFiles()}">Files</a>
</li>
<li class="nav-item">
<a class="nav-link" href="${nav.repoCurrentBranchCommits()}">Commits</a>
</li>
<li class="nav-item">
<a class="nav-link" href="${nav.repoCurrentBranchBranches()}">Branches</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Tags</a>
</li>
</ul>
</nav>
</div>
</div>
<div class="row">
<div class="col">
<div class="px-4 pt-3 bezel">
<div class="row">
<div class="col-12 col-xl-6">
<h1 class="display-2 text-white"><em>${data.currentRepo.name}</em></h1>
${data.currentRepo.description ? '<p class="text-white fs-5">' + data.currentRepo.description + '</p>' : ''}
</div>
<div class="col-12 col-xl-6 d-flex flex-column">
<div class="row py-3 flex-grow-1 align-items-center">
<div class="col-12">
<div class="row">
<div class="col-12 language-percentages">
<span style="width: 25%;" class="language-name text-light font-monospace">HTML</span>
<span style="width: 15%;" class="language-name text-light font-monospace">CSS</span>
<span style="width: 10%;" class="language-name text-light font-monospace">Rust</span>
<span style="width: 33%;" class="language-name text-light font-monospace">Typescript</span>
<span style="width: 17%;" class="language-name text-light font-monospace">Bash</span>
</div>
</div>
<div class="row">
<div class="col-12 language-percentages">
<div style="background: #DBE0AA; width: 25%;" class="language-percent"></div>
<div style="background: #91B7F5; width: 15%;" class="language-percent"></div>
<div style="background: #E0473B; width: 10%;" class="language-percent"></div>
<div style="background: #DBE0AA; width: 33%;" class="language-percent"></div>
<div style="background: #91B7F5; width: 17%;" class="language-percent"></div>
</div>
</div>
</div>
</div>
<div class="row flex-grow-1 align-items-center">
<div class="col-md col-fluid py-3">
<button class="w-100 btn btn-info btn-lg">Clone</button>
</div>
<div class="col-md col-fluid py-3">
<button class="w-100 btn btn-outline-info shadow-none btn-lg">Setup Instructions</button>
</div>
</div>
</div>
</div>
<div class="row mt-2">
<div class="col">
<p class="font-monospace text-white">Some text with a <a href="#">link</a> in it.</p>
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col">
<div class="p-2 my-3 bezel-gray">
<ul class="nav">
<li class="nav-item">
<a class="nav-link active" aria-current="page" href="#">Active</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Link</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Link</a>
</li>
<li class="nav-item">
<a class="nav-link disabled" aria-disabled="true">Disabled</a>
</li>
</ul>
</div>
</div>
</div>
<div class="row">
<div class="col">
<h1 class="blue">Body Heading</h1>
<p>Body paragraph.</p>
</div>
</div>
<div class="row my-2">
<div class="col">
<button type="button" class="btn btn-outline-secondary shadow-none">Secondary</button>
<button type="button" class="btn btn-lg shadow-none btn-outline-warning">Secondary</button>
</div>
</div>
<div class="row">
<div class="col">
<div class="input-group mb-3">
<span class="input-group-text">Search for files:</span>
<input type="text" class="form-control" placeholder="Username" aria-label="Username" aria-describedby="basic-addon1">
</div>
</div>
</div>
<div class="row">
<div class="col">
<div class="p-2 my-2 bezel-purple">
test
</div>
</div>
</div>
<div class="row m-3">
<div class="col-3">
<div class="card bezel-gray">
<div class="card-header">
Featured
</div>
<div class="card-body">
<h5 class="card-title">Special title treatment</h5>
<p class="card-text">With supporting text below as a natural lead-in to additional content.</p>
<a href="#" class="btn btn-primary">Go somewhere</a>
</div>
<div class="card-footer">
some text in here
</div>
</div>
</div>
<div class="col-3">
<div class="card bezel-gray" style="width: 18rem;">
<div class="card-body">
<h5 class="card-title">Card title</h5>
<p class="card-text">Some quick example text to build on the card title and make up the bulk of the card’s content.</p>
<a href="#" class="btn btn-primary">Go somewhere</a>
</div>
</div>
</div>
</div>
</div>
</body>
</html>
`
}
}
11
11
import repoJsTemplate from './js_templates/repo.ts'
22
22
eleventyConfig.addTemplateFormats("js")
41
41
const css = `${import.meta.dirname}/css`
[css]: `${reposPath}/css`,
368 369 370
const repoTemplate = fsImport.readFileSync(`${import.meta.dirname}/templates/repo.njk`).toString()
'repos/repo.njk',
topLayoutPartial + repoTemplate + bottomLayoutPartial,
368 369 370
// const repoTemplate = fsImport.readFileSync(`${import.meta.dirname}/templates/repo.njk`).toString()
// eleventyConfig.addTemplate(
// 'repos/repo.njk',
// topLayoutPartial + repoTemplate + bottomLayoutPartial,
// {
// pagination: {
// data: "branches",
// size: 1,
// alias: "branch",
// },
// permalink: (data) => {
// const repoName = data.branch.repoName
// const branchName = data.branch.branchName
// return `${reposPath}/${eleventyConfig.getFilter("slugify")(repoName)}/branches/${eleventyConfig.getFilter("slugify")(branchName)}/`
// },
// eleventyComputed: {
// nav: {
// repoName: (data) => data.branch.repoName,
// branchName: (data) => data.branch.branchName,
// path: "",
// },
// currentRepo: (data) => reposData.find(repo => {
// return repo.name === data.branch.repoName
// }),
// currentBranch: (data) => reposData.find(repo => {
// return repo.name === data.branch.repoName
// }).branches.find(branch => {
// return branch.name === data.branch.branchName
// }),
// },
// navTab: "landing",
// }
// )
// REPO.TS
'repos/repo.11ty.js',
repoJsTemplate(reposConfiguration, eleventyConfig.getFilter("slugify")),
398
navTab: "landing",
398
1
1
mkdir -p dist/css
15
15
"bootstrap": "^5.3.8",
"sass": "^1.94.0",
74
74
"node_modules/@parcel/watcher": {
"version": "2.5.1",
"resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.1.tgz",
"integrity": "sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==",
"dev": true,
"hasInstallScript": true,
"optional": true,
"dependencies": {
"detect-libc": "^1.0.3",
"is-glob": "^4.0.3",
"micromatch": "^4.0.5",
"node-addon-api": "^7.0.0"
},
"engines": {
"node": ">= 10.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/parcel"
},
"optionalDependencies": {
"@parcel/watcher-android-arm64": "2.5.1",
"@parcel/watcher-darwin-arm64": "2.5.1",
"@parcel/watcher-darwin-x64": "2.5.1",
"@parcel/watcher-freebsd-x64": "2.5.1",
"@parcel/watcher-linux-arm-glibc": "2.5.1",
"@parcel/watcher-linux-arm-musl": "2.5.1",
"@parcel/watcher-linux-arm64-glibc": "2.5.1",
"@parcel/watcher-linux-arm64-musl": "2.5.1",
"@parcel/watcher-linux-x64-glibc": "2.5.1",
"@parcel/watcher-linux-x64-musl": "2.5.1",
"@parcel/watcher-win32-arm64": "2.5.1",
"@parcel/watcher-win32-ia32": "2.5.1",
"@parcel/watcher-win32-x64": "2.5.1"
}
},
"node_modules/@parcel/watcher-android-arm64": {
"version": "2.5.1",
"resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.1.tgz",
"integrity": "sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==",
"cpu": [
"arm64"
],
"dev": true,
"optional": true,
"os": [
"android"
],
"engines": {
"node": ">= 10.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/parcel"
}
},
"node_modules/@parcel/watcher-darwin-arm64": {
"version": "2.5.1",
"resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.1.tgz",
"integrity": "sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==",
"cpu": [
"arm64"
],
"dev": true,
"optional": true,
"os": [
"darwin"
],
"engines": {
"node": ">= 10.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/parcel"
}
},
"node_modules/@parcel/watcher-darwin-x64": {
"version": "2.5.1",
"resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.1.tgz",
"integrity": "sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==",
"cpu": [
"x64"
],
"dev": true,
"optional": true,
"os": [
"darwin"
],
"engines": {
"node": ">= 10.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/parcel"
}
},
"node_modules/@parcel/watcher-freebsd-x64": {
"version": "2.5.1",
"resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.1.tgz",
"integrity": "sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ==",
"cpu": [
"x64"
],
"dev": true,
"optional": true,
"os": [
"freebsd"
],
"engines": {
"node": ">= 10.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/parcel"
}
},
"node_modules/@parcel/watcher-linux-arm-glibc": {
"version": "2.5.1",
"resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.1.tgz",
"integrity": "sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA==",
"cpu": [
"arm"
],
"dev": true,
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">= 10.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/parcel"
}
},
"node_modules/@parcel/watcher-linux-arm-musl": {
"version": "2.5.1",
"resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.1.tgz",
"integrity": "sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==",
"cpu": [
"arm"
],
"dev": true,
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">= 10.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/parcel"
}
},
"node_modules/@parcel/watcher-linux-arm64-glibc": {
"version": "2.5.1",
"resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.1.tgz",
"integrity": "sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==",
"cpu": [
"arm64"
],
"dev": true,
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">= 10.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/parcel"
}
},
"node_modules/@parcel/watcher-linux-arm64-musl": {
"version": "2.5.1",
"resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.1.tgz",
"integrity": "sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==",
"cpu": [
"arm64"
],
"dev": true,
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">= 10.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/parcel"
}
},
"node_modules/@parcel/watcher-linux-x64-glibc": {
"version": "2.5.1",
"resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.1.tgz",
"integrity": "sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==",
"cpu": [
"x64"
],
"dev": true,
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">= 10.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/parcel"
}
},
"node_modules/@parcel/watcher-linux-x64-musl": {
"version": "2.5.1",
"resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.1.tgz",
"integrity": "sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==",
"cpu": [
"x64"
],
"dev": true,
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">= 10.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/parcel"
}
},
"node_modules/@parcel/watcher-win32-arm64": {
"version": "2.5.1",
"resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.1.tgz",
"integrity": "sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==",
"cpu": [
"arm64"
],
"dev": true,
"optional": true,
"os": [
"win32"
],
"engines": {
"node": ">= 10.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/parcel"
}
},
"node_modules/@parcel/watcher-win32-ia32": {
"version": "2.5.1",
"resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.1.tgz",
"integrity": "sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ==",
"cpu": [
"ia32"
],
"dev": true,
"optional": true,
"os": [
"win32"
],
"engines": {
"node": ">= 10.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/parcel"
}
},
"node_modules/@parcel/watcher-win32-x64": {
"version": "2.5.1",
"resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.1.tgz",
"integrity": "sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==",
"cpu": [
"x64"
],
"dev": true,
"optional": true,
"os": [
"win32"
],
"engines": {
"node": ">= 10.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/parcel"
}
},
"node_modules/@popperjs/core": {
"version": "2.11.8",
"resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz",
"integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==",
"dev": true,
"peer": true,
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/popperjs"
}
},
204
204
"node_modules/bootstrap": {
"version": "5.3.8",
"resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.8.tgz",
"integrity": "sha512-HP1SZDqaLDPwsNiqRqi5NcP0SSXciX2s9E+RyqJIIqGo+vJeN5AJVM98CXmW/Wux0nQ5L7jeWUdplCEf0Ee+tg==",
"dev": true,
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/twbs"
},
{
"type": "opencollective",
"url": "https://opencollective.com/bootstrap"
}
],
"peerDependencies": {
"@popperjs/core": "^2.11.8"
}
},
213
213
"node_modules/braces": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
"integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
"dev": true,
"optional": true,
"dependencies": {
"fill-range": "^7.1.1"
},
"engines": {
"node": ">=8"
}
},
"node_modules/chokidar": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz",
"integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==",
"dev": true,
"dependencies": {
"readdirp": "^4.0.1"
},
"engines": {
"node": ">= 14.16.0"
},
"funding": {
"url": "https://paulmillr.com/funding/"
}
},
258
258
"node_modules/detect-libc": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz",
"integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==",
"dev": true,
"optional": true,
"bin": {
"detect-libc": "bin/detect-libc.js"
},
"engines": {
"node": ">=0.10"
}
},
315
315
"node_modules/fill-range": {
"version": "7.1.1",
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
"integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
"dev": true,
"optional": true,
"dependencies": {
"to-regex-range": "^5.0.1"
},
"engines": {
"node": ">=8"
}
},
356
356
"node_modules/immutable": {
"version": "5.1.4",
"resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.4.tgz",
"integrity": "sha512-p6u1bG3YSnINT5RQmx/yRZBpenIl30kVxkTLDyHLIMk0gict704Q9n+thfDI7lTRm9vXdDYutVzXhzcThxTnXA==",
"dev": true
},
"node_modules/is-extglob": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
"integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
"dev": true,
"optional": true,
"engines": {
"node": ">=0.10.0"
}
},
366
366
"node_modules/is-glob": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
"integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
"dev": true,
"optional": true,
"dependencies": {
"is-extglob": "^2.1.1"
},
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/is-number": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
"integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
"dev": true,
"optional": true,
"engines": {
"node": ">=0.12.0"
}
},
462
462
"node_modules/micromatch": {
"version": "4.0.8",
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
"integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
"dev": true,
"optional": true,
"dependencies": {
"braces": "^3.0.3",
"picomatch": "^2.3.1"
},
"engines": {
"node": ">=8.6"
}
},
488
488
"node_modules/node-addon-api": {
"version": "7.1.1",
"resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz",
"integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==",
"dev": true,
"optional": true
},
532
532
"node_modules/picomatch": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
"integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
"dev": true,
"optional": true,
"engines": {
"node": ">=8.6"
},
"funding": {
"url": "https://github.com/sponsors/jonschlinkert"
}
},
541
541
"node_modules/readdirp": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz",
"integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==",
"dev": true,
"engines": {
"node": ">= 14.18.0"
},
"funding": {
"type": "individual",
"url": "https://paulmillr.com/funding/"
}
},
560
560
"node_modules/sass": {
"version": "1.94.0",
"resolved": "https://registry.npmjs.org/sass/-/sass-1.94.0.tgz",
"integrity": "sha512-Dqh7SiYcaFtdv5Wvku6QgS5IGPm281L+ZtVD1U2FJa7Q0EFRlq8Z3sjYtz6gYObsYThUOz9ArwFqPZx+1azILQ==",
"dev": true,
"dependencies": {
"chokidar": "^4.0.0",
"immutable": "^5.0.2",
"source-map-js": ">=0.6.2 <2.0.0"
},
"bin": {
"sass": "sass.js"
},
"engines": {
"node": ">=14.0.0"
},
"optionalDependencies": {
"@parcel/watcher": "^2.4.1"
}
},
596
596
"node_modules/source-map-js": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
"integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
"dev": true,
"engines": {
"node": ">=0.10.0"
}
},
700
700
"node_modules/to-regex-range": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
"integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
"dev": true,
"optional": true,
"dependencies": {
"is-number": "^7.0.0"
},
"engines": {
"node": ">=8.0"
}
},
4 5
"build": "npm run schemas && npm run ts && npm run docs",
"docs": "npx typedoc src/configTypes.ts --readme none"
4 5
"build": "npm run schemas && npm run ts && npm run docs && npm run css",
"docs": "npx typedoc src/configTypes.ts --readme none",
"css": "npx sass scss/:dist/css/",
"css:watch": "npx sass --watch scss/:dist/css/"
15
15
"bootstrap": "^5.3.8",
"sass": "^1.94.0",
5 6 7 8
"_type": {
"const": "git",
"type": "string"
},
5 6 7 8
101
"_type",
101
0
0
@use 'sass:color';
$body-color: #262626;
$font-family-base: serif;
$border-radius: 0;
$border-radius-sm: 0;
$border-radius-lg: 0;
$enable-transitions: false;
$gray: #EFF2E4;
$blue: #7388FA;
$lightblue: #73B2FA;
$purple: #B673FA;
$magenta: #E273FA;
$teal: #80F8D4;
$body-bg: $gray;
$primary: $blue;
$info: $teal;
$warning: $magenta;
$body-tertiary-bg: color.adjust($gray, $lightness: -5%);
$border-color: $lightblue;
$border-width: 2px;
@import "../node_modules/bootstrap/scss/bootstrap";
.bezel {
background-color: $blue;
border-top: 6px solid color.adjust($blue, $lightness: 15%);
border-left: 6px solid color.adjust($blue, $lightness: 13%);
border-bottom: 6px solid color.adjust($blue, $lightness: -10%);
border-right: 6px solid color.adjust($blue, $lightness: -13%);
}
.bezel-purple {
background-color: $purple;
border-top: 6px solid color.adjust($purple, $lightness: 15%);
border-left: 6px solid color.adjust($purple, $lightness: 13%);
border-bottom: 6px solid color.adjust($purple, $lightness: -10%);
border-right: 6px solid color.adjust($purple, $lightness: -13%);
}
.bezel-gray {
background-color: $gray;
border-top: 6px solid color.adjust($gray, $lightness: 15%);
border-left: 6px solid color.adjust($gray, $lightness: 13%);
border-bottom: 6px solid color.adjust($gray, $lightness: -10%);
border-right: 6px solid color.adjust($gray, $lightness: -13%);
}
.bezel-inset {
background-color: $gray;
border-bottom: 6px solid color.adjust($gray, $lightness: 15%);
border-right: 6px solid color.adjust($gray, $lightness: 13%);
border-top: 6px solid color.adjust($gray, $lightness: -10%);
border-left: 6px solid color.adjust($gray, $lightness: -13%);
}
.bezel-inset-purple {
background-color: $purple;
border-bottom: 6px solid color.adjust($purple, $lightness: 15%);
border-right: 6px solid color.adjust($purple, $lightness: 13%);
border-top: 6px solid color.adjust($purple, $lightness: -10%);
border-left: 6px solid color.adjust($purple, $lightness: -13%);
}
.no-right {
border-right: none !important;
}
.no-left {
border-left: none !important;
}
a {
color: $teal;
}
.btn {
font-family: sans-serif;
box-shadow: rgba(0, 0, 0, .6) 4px 6px;
}
.btn:hover:not(.shadow-none) {
transform: translateX(2px) translateY(4px);
box-shadow: rgba(0, 0, 0, 1) 2px 2px;
}
.btn:active:not(.shadow-none) {
transform: translateX(3px) translateY(5px);
box-shadow: rgba(0, 0, 0, 1) 1px 1px;
}
h1.blue {
color: $blue;
}
nav a, nav span {
font-family: sans-serif;
}
.nav-item a {
color: $purple;
}
.navbar-nav .nav-link.active {
background-color: $purple;
color: white;
}
0
0
@use 'sass:color';
$body-color: #262626;
$font-family-base: serif;
$border-radius: 0;
$border-radius-sm: 0;
$border-radius-lg: 0;
$enable-transitions: false;
$gray: #EFF2E4;
$blue: #7388FA;
$lightblue: #73B2FA;
$purple: #B673FA;
$magenta: #E273FA;
$teal: #80F8D4;
$body-bg: $gray;
$primary: $blue;
$info: $teal;
$warning: $magenta;
$body-tertiary-bg: color.adjust($gray, $lightness: -5%);
$border-color: $lightblue;
$border-width: 2px;
@import "../node_modules/bootstrap/scss/bootstrap";
.bezel {
background-color: $blue;
border-top: 6px solid color.adjust($blue, $lightness: 15%);
border-left: 6px solid color.adjust($blue, $lightness: 13%);
border-bottom: 6px solid color.adjust($blue, $lightness: -10%);
border-right: 6px solid color.adjust($blue, $lightness: -13%);
}
.bezel-purple {
background-color: $purple;
border-top: 6px solid color.adjust($purple, $lightness: 15%);
border-left: 6px solid color.adjust($purple, $lightness: 13%);
border-bottom: 6px solid color.adjust($purple, $lightness: -10%);
border-right: 6px solid color.adjust($purple, $lightness: -13%);
}
.bezel-gray {
background-color: $gray;
border-top: 6px solid color.adjust($gray, $lightness: 15%);
border-left: 6px solid color.adjust($gray, $lightness: 13%);
border-bottom: 6px solid color.adjust($gray, $lightness: -10%);
border-right: 6px solid color.adjust($gray, $lightness: -13%);
}
.bezel-inset {
background-color: $gray;
border-bottom: 6px solid color.adjust($gray, $lightness: 15%);
border-right: 6px solid color.adjust($gray, $lightness: 13%);
border-top: 6px solid color.adjust($gray, $lightness: -10%);
border-left: 6px solid color.adjust($gray, $lightness: -13%);
}
.bezel-inset-purple {
background-color: $purple;
border-bottom: 6px solid color.adjust($purple, $lightness: 15%);
border-right: 6px solid color.adjust($purple, $lightness: 13%);
border-top: 6px solid color.adjust($purple, $lightness: -10%);
border-left: 6px solid color.adjust($purple, $lightness: -13%);
}
.no-right {
border-right: none !important;
}
.no-left {
border-left: none !important;
}
a {
color: $teal;
}
.btn {
font-family: sans-serif;
box-shadow: rgba(0, 0, 0, .6) 4px 6px;
}
.btn:hover:not(.shadow-none) {
transform: translateX(2px) translateY(4px);
box-shadow: rgba(0, 0, 0, 1) 2px 2px;
}
.btn:active:not(.shadow-none) {
transform: translateX(3px) translateY(5px);
box-shadow: rgba(0, 0, 0, 1) 1px 1px;
}
h1.blue {
color: $blue;
}
nav a, nav span {
font-family: sans-serif;
}
.nav-item a {
color: $lightblue;
}
.navbar-nav .nav-link.active {
background-color: $lightblue;
color: white;
}
.sample-bullet {
display: inline-block;
background-color: $magenta;
height: 1rem;
width: 1rem;
}
.language-percentages {
font-size: 0;
}
.language-percent {
display: inline-block;
margin: 0;
padding: 0;
height: 2rem;
}
.language-name {
display: inline-block;
font-size: 1rem;
}
10
* _type: "git",
10
44
_type: "git",
44
24 25
let cachedRepos = null
const repos: Array<Repository> = []
24 25
let cachedRepos: Array<Repository> | null = null
cachedRepos = []
51
repos.push({
51
cachedRepos.push({
description: reposConfig.repos[repoName].description,
61
return repos
61
return cachedRepos