mirror of
https://github.com/alexandrev/xslt-lab.git
synced 2026-09-16 18:23:16 +00:00
+1
This commit is contained in:
@@ -0,0 +1,2 @@
|
||||
public/
|
||||
resources/_gen/
|
||||
@@ -0,0 +1,6 @@
|
||||
---
|
||||
title: "XSLT Lab"
|
||||
description: "A Hugo-powered landing page that sits alongside the Helm chart repo."
|
||||
---
|
||||
|
||||
Welcome! This site is generated with Hugo and lives in the `site/` directory so the existing Helm chart artifacts stay untouched. Build it locally or publish the generated `docs/` folder to GitHub Pages for a simple web presence.
|
||||
@@ -0,0 +1,8 @@
|
||||
---
|
||||
title: "About"
|
||||
description: "Why this repo exists and what you can do with it."
|
||||
---
|
||||
|
||||
The XSLT Lab repo hosts the Helm chart index and packaged chart so you can install the playground quickly. A minimal Hugo site now lives alongside the chart to collect documentation, changelogs, and useful links without interfering with the chart repository structure.
|
||||
|
||||
Use it to share how-tos, release notes, or background on how the playground is deployed. All content is Markdown, so you can edit it directly and rebuild the `docs/` output when you are ready to publish.
|
||||
@@ -0,0 +1,15 @@
|
||||
---
|
||||
title: "Welcome to the XSLT Lab site"
|
||||
description: "A short walkthrough of what this Hugo site gives you."
|
||||
date: 2025-02-28T00:00:00Z
|
||||
---
|
||||
|
||||
This repo now contains a Hugo site so you can publish notes, guides, and announcements next to the Helm chart.
|
||||
|
||||
What you get:
|
||||
|
||||
- A landing page that links to the chart index.
|
||||
- A posts section for updates and long-form guides.
|
||||
- A configurable menu and simple styling that lives entirely in this repo.
|
||||
|
||||
Run `hugo --source site --minify` to generate the static site into `docs/`, commit the output, and point GitHub Pages at the `docs` folder to go live.
|
||||
@@ -0,0 +1,31 @@
|
||||
baseURL = "https://alexandrev.github.io/xslt-lab/"
|
||||
languageCode = "en-us"
|
||||
title = "XSLT Lab"
|
||||
paginate = 10
|
||||
publishDir = "../docs"
|
||||
enableRobotsTXT = true
|
||||
|
||||
[params]
|
||||
subtitle = "Helm and XSLT playground with a lightweight docs site."
|
||||
lead = "Articles, release notes, and pointers to the Helm repo all live here. Build locally or publish from the docs folder without disturbing existing chart artifacts."
|
||||
|
||||
[menu]
|
||||
[[menu.main]]
|
||||
name = "Home"
|
||||
url = "/"
|
||||
weight = 1
|
||||
|
||||
[[menu.main]]
|
||||
name = "Posts"
|
||||
url = "/posts/"
|
||||
weight = 2
|
||||
|
||||
[[menu.main]]
|
||||
name = "About"
|
||||
url = "/about/"
|
||||
weight = 3
|
||||
|
||||
[[menu.main]]
|
||||
name = "Charts"
|
||||
url = "https://alexandrev.github.io/xslt-lab/charts/index.yaml"
|
||||
weight = 4
|
||||
@@ -0,0 +1,36 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>{{ block "title" . }}{{ with .Title }}{{ . }} | {{ end }}{{ .Site.Title }}{{ end }}</title>
|
||||
<meta name="description" content="{{ with .Description }}{{ . }}{{ else }}{{ .Site.Params.subtitle }}{{ end }}">
|
||||
<link rel="stylesheet" href="{{ "css/main.css" | relURL }}">
|
||||
</head>
|
||||
<body>
|
||||
<header class="site-header">
|
||||
<div class="container header-grid">
|
||||
<div>
|
||||
<a class="brand" href="{{ "/" | relURL }}">{{ .Site.Title }}</a>
|
||||
<p class="tagline">{{ .Site.Params.subtitle }}</p>
|
||||
</div>
|
||||
<nav>
|
||||
<ul class="nav">
|
||||
{{ range .Site.Menus.main }}
|
||||
<li><a href="{{ .URL }}">{{ .Name }}</a></li>
|
||||
{{ end }}
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
</header>
|
||||
<main class="container">
|
||||
{{ block "main" . }}{{ end }}
|
||||
</main>
|
||||
<footer class="site-footer">
|
||||
<div class="container footer-grid">
|
||||
<p>Built with Hugo · {{ now.Format "2006-01-02" }}</p>
|
||||
<p class="muted">Repo: <a href="https://github.com/alexandrev/xslt-lab">alexandrev/xslt-lab</a></p>
|
||||
</div>
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,19 @@
|
||||
{{ define "main" }}
|
||||
<section class="page-header">
|
||||
<p class="eyebrow">{{ .Section | title }}</p>
|
||||
<h1>{{ .Title }}</h1>
|
||||
{{ with .Description }}<p class="lead">{{ . }}</p>{{ end }}
|
||||
</section>
|
||||
|
||||
<ul class="post-list spaced">
|
||||
{{ range .Paginator.Pages }}
|
||||
<li>
|
||||
<a href="{{ .RelPermalink }}">{{ .Title }}</a>
|
||||
<span class="muted">{{ .Date.Format "02 Jan 2006" }}</span>
|
||||
{{ with .Params.description }}<p class="muted">{{ . }}</p>{{ end }}
|
||||
</li>
|
||||
{{ end }}
|
||||
</ul>
|
||||
|
||||
{{ template "_internal/pagination.html" . }}
|
||||
{{ end }}
|
||||
@@ -0,0 +1,12 @@
|
||||
{{ define "main" }}
|
||||
<article class="post">
|
||||
<p class="eyebrow">{{ .Section | title }}</p>
|
||||
<h1>{{ .Title }}</h1>
|
||||
<p class="muted">{{ .Date.Format "02 Jan 2006" }}</p>
|
||||
{{ with .Params.description }}<p class="lead">{{ . }}</p>{{ end }}
|
||||
<div class="content">
|
||||
{{ .Content }}
|
||||
</div>
|
||||
<p class="muted back-link"><a href="{{ .CurrentSection.RelPermalink }}">← Back to {{ .CurrentSection.Title }}</a></p>
|
||||
</article>
|
||||
{{ end }}
|
||||
@@ -0,0 +1,41 @@
|
||||
{{ define "main" }}
|
||||
<section class="hero">
|
||||
<p class="eyebrow">Static Site + Helm Repo</p>
|
||||
<h1>{{ .Title }}</h1>
|
||||
<p class="lead">{{ .Params.description | default .Site.Params.lead }}</p>
|
||||
<div class="cta-row">
|
||||
<a class="button" href="{{ "/posts/" | relURL }}">Read updates</a>
|
||||
<a class="button ghost" href="{{ "/charts/index.yaml" | relURL }}">Helm repo index</a>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="grid">
|
||||
<article class="card">
|
||||
<p class="eyebrow">How this fits</p>
|
||||
<h2>Side-by-side with your chart</h2>
|
||||
<p>The Hugo source lives in <code>site/</code> and publishes to <code>docs/</code>, keeping the existing chart index and packages intact.</p>
|
||||
<ul class="checks">
|
||||
<li>Markdown content</li>
|
||||
<li>No external theme dependency</li>
|
||||
<li>Ready for GitHub Pages</li>
|
||||
</ul>
|
||||
</article>
|
||||
<article class="card">
|
||||
<p class="eyebrow">Latest posts</p>
|
||||
<h2>Recent updates</h2>
|
||||
<ul class="post-list">
|
||||
{{ $posts := first 3 (where .Site.RegularPages "Section" "posts") }}
|
||||
{{ if gt (len $posts) 0 }}
|
||||
{{ range $posts }}
|
||||
<li>
|
||||
<a href="{{ .RelPermalink }}">{{ .Title }}</a>
|
||||
<span class="muted">{{ .Date.Format "02 Jan 2006" }}</span>
|
||||
</li>
|
||||
{{ end }}
|
||||
{{ else }}
|
||||
<li class="muted">No posts yet. Add more in <code>site/content/posts/</code>.</li>
|
||||
{{ end }}
|
||||
</ul>
|
||||
</article>
|
||||
</section>
|
||||
{{ end }}
|
||||
@@ -0,0 +1,227 @@
|
||||
:root {
|
||||
--bg: #0b1021;
|
||||
--panel: #0f172a;
|
||||
--accent: #32d5ff;
|
||||
--accent-2: #ff7e67;
|
||||
--text: #e6edf3;
|
||||
--muted: #9fb2c8;
|
||||
--border: #1f2a3d;
|
||||
--shadow: 0 20px 40px rgba(0, 0, 0, 0.35);
|
||||
font-family: "Inter", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
|
||||
}
|
||||
|
||||
* { box-sizing: border-box; }
|
||||
|
||||
body {
|
||||
margin: 0;
|
||||
background: radial-gradient(circle at 20% 20%, #11223f, #0b1021 45%), radial-gradient(circle at 80% 0%, #182743, #0b1021 40%), var(--bg);
|
||||
color: var(--text);
|
||||
line-height: 1.6;
|
||||
}
|
||||
|
||||
a { color: var(--accent); text-decoration: none; }
|
||||
a:hover { color: var(--accent-2); }
|
||||
|
||||
.container {
|
||||
width: min(1100px, 90%);
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.site-header {
|
||||
border-bottom: 1px solid var(--border);
|
||||
position: sticky;
|
||||
top: 0;
|
||||
backdrop-filter: blur(8px);
|
||||
background: rgba(11, 16, 33, 0.9);
|
||||
z-index: 10;
|
||||
}
|
||||
|
||||
.header-grid {
|
||||
display: grid;
|
||||
grid-template-columns: 1fr auto;
|
||||
align-items: center;
|
||||
padding: 18px 0;
|
||||
gap: 20px;
|
||||
}
|
||||
|
||||
.brand {
|
||||
font-weight: 800;
|
||||
letter-spacing: -0.02em;
|
||||
color: white;
|
||||
}
|
||||
|
||||
.tagline {
|
||||
margin: 4px 0 0;
|
||||
color: var(--muted);
|
||||
}
|
||||
|
||||
.nav {
|
||||
display: flex;
|
||||
gap: 14px;
|
||||
list-style: none;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.nav a {
|
||||
padding: 8px 12px;
|
||||
border-radius: 10px;
|
||||
border: 1px solid transparent;
|
||||
}
|
||||
|
||||
.nav a:hover {
|
||||
border-color: var(--border);
|
||||
background: rgba(255, 255, 255, 0.04);
|
||||
}
|
||||
|
||||
.hero {
|
||||
padding: 70px 0 50px;
|
||||
}
|
||||
|
||||
.eyebrow {
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.2em;
|
||||
font-size: 12px;
|
||||
color: var(--muted);
|
||||
margin: 0 0 10px;
|
||||
}
|
||||
|
||||
h1, h2, h3, h4 {
|
||||
margin: 10px 0;
|
||||
line-height: 1.2;
|
||||
}
|
||||
|
||||
.lead {
|
||||
font-size: 18px;
|
||||
color: #d7e4f4;
|
||||
max-width: 780px;
|
||||
}
|
||||
|
||||
.cta-row {
|
||||
display: flex;
|
||||
gap: 12px;
|
||||
margin-top: 24px;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
|
||||
.button {
|
||||
display: inline-block;
|
||||
padding: 12px 18px;
|
||||
border-radius: 12px;
|
||||
background: linear-gradient(120deg, var(--accent), var(--accent-2));
|
||||
color: #0b1021;
|
||||
font-weight: 700;
|
||||
box-shadow: var(--shadow);
|
||||
}
|
||||
|
||||
.button.ghost {
|
||||
background: transparent;
|
||||
color: var(--text);
|
||||
border: 1px solid var(--border);
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
.grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
|
||||
gap: 24px;
|
||||
padding: 10px 0 50px;
|
||||
}
|
||||
|
||||
.card {
|
||||
background: linear-gradient(145deg, rgba(255, 255, 255, 0.03), rgba(255, 255, 255, 0.01));
|
||||
border: 1px solid var(--border);
|
||||
border-radius: 16px;
|
||||
padding: 18px 18px 22px;
|
||||
box-shadow: var(--shadow);
|
||||
}
|
||||
|
||||
.checks {
|
||||
list-style: none;
|
||||
padding: 0;
|
||||
margin: 14px 0 0;
|
||||
}
|
||||
|
||||
.checks li::before {
|
||||
content: "✓";
|
||||
color: var(--accent);
|
||||
margin-right: 8px;
|
||||
}
|
||||
|
||||
.post-list {
|
||||
list-style: none;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.post-list li {
|
||||
margin-bottom: 12px;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
gap: 12px;
|
||||
}
|
||||
|
||||
.post-list.spaced li {
|
||||
padding: 14px 0;
|
||||
border-bottom: 1px solid var(--border);
|
||||
}
|
||||
|
||||
.muted {
|
||||
color: var(--muted);
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.page-header {
|
||||
padding: 40px 0 10px;
|
||||
}
|
||||
|
||||
.post {
|
||||
padding: 40px 0;
|
||||
}
|
||||
|
||||
.post .content {
|
||||
margin-top: 24px;
|
||||
}
|
||||
|
||||
.post .content p {
|
||||
margin: 14px 0;
|
||||
}
|
||||
|
||||
.post .content code {
|
||||
background: rgba(255, 255, 255, 0.04);
|
||||
padding: 2px 6px;
|
||||
border-radius: 6px;
|
||||
}
|
||||
|
||||
.back-link {
|
||||
margin-top: 32px;
|
||||
}
|
||||
|
||||
.site-footer {
|
||||
border-top: 1px solid var(--border);
|
||||
padding: 20px 0;
|
||||
margin-top: 40px;
|
||||
color: var(--muted);
|
||||
}
|
||||
|
||||
.footer-grid {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
gap: 10px;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
|
||||
code {
|
||||
font-family: "SFMono-Regular", Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
|
||||
font-size: 14px;
|
||||
background: rgba(255, 255, 255, 0.06);
|
||||
padding: 2px 5px;
|
||||
border-radius: 6px;
|
||||
}
|
||||
|
||||
@media (max-width: 720px) {
|
||||
.header-grid { grid-template-columns: 1fr; }
|
||||
.nav { flex-wrap: wrap; }
|
||||
.post-list li { flex-direction: column; align-items: flex-start; }
|
||||
}
|
||||
Reference in New Issue
Block a user